From 6311f1edc90f5a5327ca496f2fe03e833d98f130 Mon Sep 17 00:00:00 2001
From: Patrick ZAJDA <patrick@zajda.fr>
Date: Sat, 3 Aug 2019 16:44:50 +0200
Subject: [PATCH 001/242] Put http to https redirect before SEO in Nginx
 virtualhost. It makes better the compliance with HSTS, http to https redirect
 must be done before domain to www.domain.

---
 server/conf/nginx_vhost.conf.master | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/server/conf/nginx_vhost.conf.master b/server/conf/nginx_vhost.conf.master
index e78a107c77..b1db61fe1c 100644
--- a/server/conf/nginx_vhost.conf.master
+++ b/server/conf/nginx_vhost.conf.master
@@ -25,6 +25,13 @@ server {
 
         root   <tmpl_var name='web_document_root_www'>;
 		
+<tmpl_if name='ssl_enabled'>
+<tmpl_if name='rewrite_to_https' op='==' value='y'>
+        if ($scheme != "https") {
+            rewrite ^ https://$http_host$request_uri? permanent;
+        }
+</tmpl_if>
+</tmpl_if>
 <tmpl_if name='seo_redirect_enabled'>
         if ($http_host <tmpl_var name='seo_redirect_operator'> "<tmpl_var name='seo_redirect_origin_domain'>") {
             rewrite ^ $scheme://<tmpl_var name='seo_redirect_target_domain'>$request_uri? permanent;
@@ -40,13 +47,6 @@ server {
             rewrite ^<tmpl_var name='local_redirect_exclude'>(.*)$ <tmpl_var name='local_redirect_target'>$2 <tmpl_var name='local_redirect_type'>;
         }
 </tmpl_loop>
-<tmpl_if name='ssl_enabled'>
-<tmpl_if name='rewrite_to_https' op='==' value='y'>
-        if ($scheme != "https") {
-            rewrite ^ https://$http_host$request_uri? permanent;
-        }
-</tmpl_if>
-</tmpl_if>
 
 <tmpl_loop name="own_redirects">
 <tmpl_if name='use_rewrite'>
-- 
GitLab


From 8b2ecd98f9c43966475a736ee6105dde3f140593 Mon Sep 17 00:00:00 2001
From: Florian Schaal <info@schaal-24.de>
Date: Wed, 7 Aug 2019 12:42:49 +0200
Subject: [PATCH 002/242] fixed typo

---
 interface/web/dns/dns_dkim_edit.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/interface/web/dns/dns_dkim_edit.php b/interface/web/dns/dns_dkim_edit.php
index 35bac0d0c6..5c95b2033d 100644
--- a/interface/web/dns/dns_dkim_edit.php
+++ b/interface/web/dns/dns_dkim_edit.php
@@ -128,7 +128,7 @@ class page_action extends tform_actions {
 		// check for duplicate entry
 		$check=$app->db->queryOneRecord("SELECT * FROM dns_rr WHERE zone = ? AND type = ? AND data = ? AND name = ?", $this->dataRecord["zone"], $this->dataRecord["type"], $this->dataRecord["data"], $this->dataRecord['name']);
 		if ($check!='') $app->tform->errorMessage .= $app->tform->wordbook["record_exists_txt"];
-		if (empty($this->dataRecord['data'])) $app->tform->errorMessage /= $app->tform->wordbook["dkim_disabled_txt"];
+		if (empty($this->dataRecord['data'])) $app->tform->errorMessage .= $app->tform->wordbook["dkim_disabled_txt"];
 
 		// validate selector and public-key
 		if (empty($this->dataRecord['selector'])) $app->tform->errorMessage .= '<br/>'.$app->tform->wordbook["dkim_selector_empty_txt"].'<br/>';
-- 
GitLab


From c3e2fd1604eb485e08e4a6566b8b43e0048c3b19 Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Mon, 12 Aug 2019 14:13:22 +0200
Subject: [PATCH 003/242] - rspamd is not set even if it is installed

---
 install/lib/installer_base.lib.php | 2 ++
 install/lib/update.lib.php         | 3 +++
 2 files changed, 5 insertions(+)

diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php
index 6fd8024e86..b60300e2b1 100644
--- a/install/lib/installer_base.lib.php
+++ b/install/lib/installer_base.lib.php
@@ -326,6 +326,8 @@ class installer_base {
 		$tpl_ini_array['web']['php_ini_path_cgi'] = $conf['apache']['php_ini_path_cgi'];
 		$tpl_ini_array['mail']['pop3_imap_daemon'] = ($conf['dovecot']['installed'] == true)?'dovecot':'courier';
 		$tpl_ini_array['mail']['mail_filter_syntax'] = ($conf['dovecot']['installed'] == true)?'sieve':'maildrop';
+		$tpl_ini_array['mail']['content_filter'] = @($conf['rspamd']['installed']) ? 'rspamd' : 'amavis';
+		$tpl_ini_array['mail']['rspamd_available'] = @($conf['rspamd']['installed']) ? 'y' : 'n';
 		$tpl_ini_array['dns']['bind_user'] = $conf['bind']['bind_user'];
 		$tpl_ini_array['dns']['bind_group'] = $conf['bind']['bind_group'];
 		$tpl_ini_array['dns']['bind_zonefiles_dir'] = $conf['bind']['bind_zonefiles_dir'];
diff --git a/install/lib/update.lib.php b/install/lib/update.lib.php
index fd1a34b2ca..9deb8ca10e 100644
--- a/install/lib/update.lib.php
+++ b/install/lib/update.lib.php
@@ -335,6 +335,9 @@ function updateDbAndIni() {
 	$tpl_ini_array['web']['php_ini_path_cgi'] = $conf['apache']['php_ini_path_cgi'];
 	$tpl_ini_array['mail']['pop3_imap_daemon'] = ($conf['dovecot']['installed'] == true)?'dovecot':'courier';
 	$tpl_ini_array['mail']['mail_filter_syntax'] = ($conf['dovecot']['installed'] == true)?'sieve':'maildrop';
+	// do not switch to rspamd automatically!
+	// $tpl_ini_array['mail']['content_filter'] = @($conf['rspamd']['installed']) ? 'rspamd' : 'amavis';
+	$tpl_ini_array['mail']['rspamd_available'] = @($conf['rspamd']['installed']) ? 'y' : 'n';
 	$tpl_ini_array['dns']['bind_user'] = $conf['bind']['bind_user'];
 	$tpl_ini_array['dns']['bind_group'] = $conf['bind']['bind_group'];
 	$tpl_ini_array['dns']['bind_zonefiles_dir'] = $conf['bind']['bind_zonefiles_dir'];
-- 
GitLab


From befdfb2ae5e9d33c90a1584c3be0fd055bcd0687 Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Mon, 12 Aug 2019 15:01:31 +0200
Subject: [PATCH 004/242] - added missing rspamd lines in apps vhost template
 on install

---
 install/lib/installer_base.lib.php   | 11 ++++++++++-
 install/tpl/apache_apps.vhost.master | 18 ++++++++++++++++++
 install/tpl/nginx_apps.vhost.master  | 24 ++++++++++++++++++++++++
 3 files changed, 52 insertions(+), 1 deletion(-)

diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php
index b60300e2b1..c7f955d945 100644
--- a/install/lib/installer_base.lib.php
+++ b/install/lib/installer_base.lib.php
@@ -2226,7 +2226,10 @@ class installer_base {
 				$tpl->setVar('logging','yes');
 			}
 
-
+			if($conf['rspamd']['installed'] == true) {
+				$tpl->setVar('use_rspamd', 'yes');
+			}
+			
 			// comment out the listen directive if port is 80 or 443
 			if($conf['web']['apps_vhost_ip'] == 80 or $conf['web']['apps_vhost_ip'] == 443) {
 				$tpl->setVar('vhost_port_listen','#');
@@ -2294,6 +2297,12 @@ class installer_base {
 				$apps_vhost_ip = $conf['web']['apps_vhost_ip'].':';
 			}
 
+			if($conf['rspamd']['installed'] == true) {
+				$content = str_replace('{use_rspamd}', '', $content);
+			} else {
+				$content = str_replace('{use_rspamd}', '# ', $content);
+			}
+			
 			$socket_dir = escapeshellcmd($conf['nginx']['php_fpm_socket_dir']);
 			if(substr($socket_dir, -1) != '/') $socket_dir .= '/';
 			if(!is_dir($socket_dir)) exec('mkdir -p '.$socket_dir);
diff --git a/install/tpl/apache_apps.vhost.master b/install/tpl/apache_apps.vhost.master
index ee1b693097..9cccf8d38e 100644
--- a/install/tpl/apache_apps.vhost.master
+++ b/install/tpl/apache_apps.vhost.master
@@ -19,6 +19,12 @@
 	RequestHeader unset Proxy early
   </IfModule>
   
+  {tmpl_if name="enable_spdy" op="==" value="y"}
+  <IfModule spdy_module>
+	SpdyEnabled on
+  </IfModule>
+  {/tmpl_if}
+
   <IfModule mod_php5.c>
     DocumentRoot {tmpl_var name='apps_vhost_dir'}
     AddType application/x-httpd-php .php
@@ -68,6 +74,18 @@
     </Directory>
   </IfModule>
 
+{tmpl_if name="use_rspamd"}
+  <Location /rspamd>
+        Order allow,deny
+        Allow from all
+  </Location>
+  RewriteEngine On
+  RewriteRule ^/rspamd$ /rspamd/ [R,L]
+  RewriteRule ^/rspamd/(.*) http://127.0.0.1:11334/$1 [P]
+{/tmpl_if}
+
+
+
 </VirtualHost>
 
 
diff --git a/install/tpl/nginx_apps.vhost.master b/install/tpl/nginx_apps.vhost.master
index 3d00d11106..871dff8c57 100644
--- a/install/tpl/nginx_apps.vhost.master
+++ b/install/tpl/nginx_apps.vhost.master
@@ -208,4 +208,28 @@ server {
                alias /var/lib/mailman/archives/public;
                autoindex on;
         }
+
+        {use_rspamd}location /rspamd/ {
+                {use_rspamd}proxy_pass http://127.0.0.1:11334/;
+                {use_rspamd}rewrite ^//(.*) /$1;
+                {use_rspamd}proxy_set_header X-Forwarded-Proto $scheme;
+                {use_rspamd}proxy_set_header Host $host;
+                {use_rspamd}proxy_set_header X-Real-IP $remote_addr;
+                {use_rspamd}proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+                {use_rspamd}proxy_pass_header Authorization;
+                {use_rspamd}client_max_body_size 0;
+                {use_rspamd}client_body_buffer_size 1m;
+                {use_rspamd}proxy_intercept_errors on;
+                {use_rspamd}proxy_buffering on;
+                {use_rspamd}proxy_buffer_size 128k;
+                {use_rspamd}proxy_buffers 256 16k;
+                {use_rspamd}proxy_busy_buffers_size 256k;
+                {use_rspamd}proxy_temp_file_write_size 256k;
+                {use_rspamd}proxy_max_temp_file_size 0;
+                {use_rspamd}proxy_read_timeout 300;
+                {use_rspamd}
+                {use_rspamd}location ~* ^/rspamd/(.+\.(jpg|jpeg|gif|css|png|js|ico|html?|xml|txt))$ {
+                       {use_rspamd}alias /usr/share/rspamd/www/$1;
+                {use_rspamd}}
+        {use_rspamd}}
 }
-- 
GitLab


From 7eb3be87690f6bb9aa6e399375c7254359cf0f83 Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Thu, 15 Aug 2019 10:42:41 +0200
Subject: [PATCH 005/242] - re-wrote policy editing to separate rspamd and
 amavis settings

---
 install/patches/upd_0088.php                  |  47 +++++
 .../web/mail/form/spamfilter_policy.tform.php | 146 ++++++-------
 .../mail/lib/lang/en_spamfilter_policy.lng    |   8 +-
 interface/web/mail/spamfilter_policy_edit.php |  80 ++-----
 .../mail/templates/spamfilter_amavis_edit.htm | 198 ++++++++++++++++++
 .../mail/templates/spamfilter_other_edit.htm  |  67 ------
 .../mail/templates/spamfilter_policy_edit.htm |  36 +---
 .../templates/spamfilter_quarantine_edit.htm  |  35 ----
 .../mail/templates/spamfilter_rspamd_edit.htm |  36 ++++
 .../templates/spamfilter_taglevel_edit.htm    |  69 ------
 10 files changed, 372 insertions(+), 350 deletions(-)
 create mode 100644 install/patches/upd_0088.php
 create mode 100644 interface/web/mail/templates/spamfilter_amavis_edit.htm
 delete mode 100644 interface/web/mail/templates/spamfilter_other_edit.htm
 delete mode 100644 interface/web/mail/templates/spamfilter_quarantine_edit.htm
 create mode 100644 interface/web/mail/templates/spamfilter_rspamd_edit.htm
 delete mode 100644 interface/web/mail/templates/spamfilter_taglevel_edit.htm

diff --git a/install/patches/upd_0088.php b/install/patches/upd_0088.php
new file mode 100644
index 0000000000..47a10f6080
--- /dev/null
+++ b/install/patches/upd_0088.php
@@ -0,0 +1,47 @@
+<?php
+
+if(!defined('INSTALLER_RUN')) die('Patch update file access violation.');
+
+/*
+	Example installer patch update class. the classname must match
+	the php and the sql patch update filename. The php patches are
+	only executed when a corresponding sql patch exists.
+*/
+
+class upd_0088 extends installer_patch_update {
+
+	public function onAfterSQL() {
+		global $inst;
+		
+		// delete all the files that were deleted on previous updates
+		$delete = array(
+			'interface/web/mail/templates/spamfilter_taglevel_edit.htm',
+			'interface/web/mail/templates/spamfilter_quarantine_edit.htm',
+			'interface/web/mail/templates/spamfilter_other_edit.htm',
+		);
+		
+		$curpath = dirname(dirname(realpath(dirname(__FILE__))));
+		
+		$c = 0;
+		$del_all = false;
+		foreach($delete as $file) {
+			if(strpos($file, '..') !== false) continue; // security!
+			
+			if($del_all == false) {
+				$answer = $inst->simple_query('Delete obsolete file ' . $file . '?', array('y', 'n', 'a', 'all', 'none'), 'y');
+				if($answer == 'n') continue;
+				elseif($answer == 'a' || $answer == 'all') $del_all = true;
+				elseif($answer == 'none') break;
+			}
+			if(@is_file('/usr/local/ispconfig/' . $file) && !@is_file($curpath . '/' . $file)) {
+				// be sure this is not a file contained in installation!
+				@unlink('/usr/local/ispconfig/' . $file);
+				ilog('Deleted obsolete file /usr/local/ispconfig/' . $file);
+				$c++;
+			}
+		}
+		ilog($c . 'obsolete files deleted.');
+	}
+}
+
+?>
diff --git a/interface/web/mail/form/spamfilter_policy.tform.php b/interface/web/mail/form/spamfilter_policy.tform.php
index d6ecef9bbc..2205dbb651 100644
--- a/interface/web/mail/form/spamfilter_policy.tform.php
+++ b/interface/web/mail/form/spamfilter_policy.tform.php
@@ -87,6 +87,21 @@ $form["tabs"]['policy'] = array (
 			'default' => 'N',
 			'value'  => array('N' => 'No', 'Y' => 'Yes')
 		),
+		//#################################
+		// ENDE Datatable fields
+		//#################################
+	)
+);
+
+
+$form["tabs"]['amavis'] = array (
+	'title'  => "Amavis",
+	'width'  => 100,
+	'template'  => "templates/spamfilter_amavis_edit.htm",
+	'fields'  => array (
+		//#################################
+		// Begin Datatable fields
+		//#################################
 		'banned_files_lover' => array (
 			'datatype' => 'VARCHAR',
 			'formtype' => 'SELECT',
@@ -117,21 +132,6 @@ $form["tabs"]['policy'] = array (
 			'default' => 'N',
 			'value'  => array('N' => 'No', 'Y' => 'Yes')
 		),
-		//#################################
-		// ENDE Datatable fields
-		//#################################
-	)
-);
-
-
-$form["tabs"]['quarantine'] = array (
-	'title'  => "Quarantine",
-	'width'  => 100,
-	'template'  => "templates/spamfilter_quarantine_edit.htm",
-	'fields'  => array (
-		//#################################
-		// Begin Datatable fields
-		//#################################
 		'virus_quarantine_to' => array (
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
@@ -216,20 +216,6 @@ $form["tabs"]['quarantine'] = array (
 			'width'  => '30',
 			'maxlength' => '255'
 		),
-		//#################################
-		// ENDE Datatable fields
-		//#################################
-	)
-);
-
-$form["tabs"]['taglevel'] = array (
-	'title'  => "Tag-Level",
-	'width'  => 100,
-	'template'  => "templates/spamfilter_taglevel_edit.htm",
-	'fields'  => array (
-		//#################################
-		// Begin Datatable fields
-		//#################################
 		'spam_tag_level' => array (
 			'datatype' => 'DOUBLE',
 			'formtype' => 'TEXT',
@@ -304,57 +290,6 @@ $form["tabs"]['taglevel'] = array (
 			'width'  => '30',
 			'maxlength' => '255'
 		),
-		'rspamd_greylisting' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'CHECKBOX',
-			'default' => 'y',
-			'value'  => array(0 => 'n', 1 => 'y')
-		),
-		'rspamd_spam_greylisting_level' => array (
-			'datatype' => 'DOUBLE',
-			'formtype' => 'TEXT',
-			'default' => '0',
-			'value'  => '',
-			'width'  => '10',
-			'maxlength' => '255'
-		),
-		'rspamd_spam_tag_level' => array (
-			'datatype' => 'DOUBLE',
-			'formtype' => 'TEXT',
-			'default' => '0',
-			'value'  => '',
-			'width'  => '10',
-			'maxlength' => '255'
-		),
-		'rspamd_spam_tag_method' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'SELECT',
-			'default' => 'rewrite_subject',
-			'value'  => array('add_header' => $app->lng('add_header_txt'), 'rewrite_subject' => $app->lng('rewrite_subject_txt'))
-		),
-		'rspamd_spam_kill_level' => array (
-			'datatype' => 'DOUBLE',
-			'formtype' => 'TEXT',
-			'default' => '0',
-			'value'  => '',
-			'width'  => '10',
-			'maxlength' => '255'
-		),
-		//#################################
-		// ENDE Datatable fields
-		//#################################
-	)
-);
-
-
-$form["tabs"]['other'] = array (
-	'title'  => "Other",
-	'width'  => 100,
-	'template'  => "templates/spamfilter_other_edit.htm",
-	'fields'  => array (
-		//#################################
-		// Begin Datatable fields
-		//#################################
 		'addr_extension_virus' => array (
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
@@ -522,11 +457,58 @@ $form["tabs"]['other'] = array (
 			'width'  => '30',
 			'maxlength' => '255'
 		),
-
 		//#################################
 		// ENDE Datatable fields
 		//#################################
 	)
 );
 
-?>
+$form["tabs"]['rspamd'] = array (
+	'title'  => "Rspamd",
+	'width'  => 100,
+	'template'  => "templates/spamfilter_rspamd_edit.htm",
+	'fields'  => array (
+		//#################################
+		// Begin Datatable fields
+		//#################################
+		'rspamd_greylisting' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'CHECKBOX',
+			'default' => 'y',
+			'value'  => array(0 => 'n', 1 => 'y')
+		),
+		'rspamd_spam_greylisting_level' => array (
+			'datatype' => 'DOUBLE',
+			'formtype' => 'TEXT',
+			'default' => '0',
+			'value'  => '',
+			'width'  => '10',
+			'maxlength' => '255'
+		),
+		'rspamd_spam_tag_level' => array (
+			'datatype' => 'DOUBLE',
+			'formtype' => 'TEXT',
+			'default' => '0',
+			'value'  => '',
+			'width'  => '10',
+			'maxlength' => '255'
+		),
+		'rspamd_spam_tag_method' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'SELECT',
+			'default' => 'rewrite_subject',
+			'value'  => array('add_header' => $app->lng('add_header_txt'), 'rewrite_subject' => $app->lng('rewrite_subject_txt'))
+		),
+		'rspamd_spam_kill_level' => array (
+			'datatype' => 'DOUBLE',
+			'formtype' => 'TEXT',
+			'default' => '0',
+			'value'  => '',
+			'width'  => '10',
+			'maxlength' => '255'
+		),
+		//#################################
+		// ENDE Datatable fields
+		//#################################
+	)
+);
diff --git a/interface/web/mail/lib/lang/en_spamfilter_policy.lng b/interface/web/mail/lib/lang/en_spamfilter_policy.lng
index f9e8a8e303..af1aac5d7f 100644
--- a/interface/web/mail/lib/lang/en_spamfilter_policy.lng
+++ b/interface/web/mail/lib/lang/en_spamfilter_policy.lng
@@ -42,4 +42,10 @@ $wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method';
 $wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level';
 $wb['btn_save_txt'] = 'Save';
 $wb['btn_cancel_txt'] = 'Cancel';
-?>
\ No newline at end of file
+
+$wb['amavis_settings_txt'] = 'Settings';
+$wb['amavis_taglevel_txt'] = 'Tag-Level';
+$wb['amavis_quarantine_txt'] = 'Quarantine';
+$wb['amavis_other_txt'] = 'Other';
+$wb['add_header_txt'] = 'Add header';
+$wb['rewrite_subject_txt'] = 'Rewrite subject';
\ No newline at end of file
diff --git a/interface/web/mail/spamfilter_policy_edit.php b/interface/web/mail/spamfilter_policy_edit.php
index 55a42fe847..ffc0818ffa 100644
--- a/interface/web/mail/spamfilter_policy_edit.php
+++ b/interface/web/mail/spamfilter_policy_edit.php
@@ -49,48 +49,9 @@ $app->uses('tpl,tform,tform_actions');
 $app->load('tform_actions');
 
 class page_action extends tform_actions {
-
-	function onShow() {
-		global $app, $conf;
-		
-		// get the config
-		$app->uses('getconf');
-		$mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail');
-		
-		$content_filter = 'amavisd';
-		if($mail_config['content_filter'] == 'rspamd'){
-			$content_filter = 'rspamd';
-			unset($app->tform->formDef["tabs"]["policy"]['fields']['banned_files_lover']);
-			unset($app->tform->formDef["tabs"]["policy"]['fields']['bad_header_lover']);
-			unset($app->tform->formDef["tabs"]["policy"]['fields']['bypass_virus_checks']);
-			unset($app->tform->formDef["tabs"]["policy"]['fields']['bypass_banned_checks']);
-			unset($app->tform->formDef["tabs"]["policy"]['fields']['bypass_header_checks']);
-			
-			unset($app->tform->formDef["tabs"]["taglevel"]['fields']['spam_tag_level']);
-			unset($app->tform->formDef["tabs"]["taglevel"]['fields']['spam_tag2_level']);
-			unset($app->tform->formDef["tabs"]["taglevel"]['fields']['spam_kill_level']);
-			unset($app->tform->formDef["tabs"]["taglevel"]['fields']['spam_dsn_cutoff_level']);
-			unset($app->tform->formDef["tabs"]["taglevel"]['fields']['spam_quarantine_cutoff_level']);
-			unset($app->tform->formDef["tabs"]["taglevel"]['fields']['spam_modifies_subj']);
-			unset($app->tform->formDef["tabs"]["taglevel"]['fields']['spam_subject_tag']);
-			unset($app->tform->formDef["tabs"]["taglevel"]['fields']['spam_subject_tag2']);
-			
-			unset($app->tform->formDef["tabs"]["quarantine"]);
-			unset($app->tform->formDef["tabs"]["other"]);
-		} else {
-			unset($app->tform->formDef["tabs"]["taglevel"]['fields']['rspamd_greylisting']);
-			unset($app->tform->formDef["tabs"]["taglevel"]['fields']['rspamd_spam_greylisting_level']);
-			unset($app->tform->formDef["tabs"]["taglevel"]['fields']['rspamd_spam_tag_level']);
-			unset($app->tform->formDef["tabs"]["taglevel"]['fields']['rspamd_spam_tag_method']);
-			unset($app->tform->formDef["tabs"]["taglevel"]['fields']['rspamd_spam_kill_level']);
-		}
-		$app->tpl->setVar("content_filter", $content_filter);
-		
-		parent::onShow();
-	}
 	
 	function onShowNew() {
-		global $app, $conf;
+		global $app;
 
 		// we will check only users, not admins
 		if($_SESSION["s"]["user"]["typ"] == 'user') {
@@ -106,7 +67,7 @@ class page_action extends tform_actions {
 	}
 
 	function onSubmit() {
-		global $app, $conf;
+		global $app;
 
 		// Check the client limits, if user is not the admin
 		if($_SESSION["s"]["user"]["typ"] != 'admin') { // if user is not admin
@@ -128,35 +89,30 @@ class page_action extends tform_actions {
 	}
 	
 	function onAfterUpdate() {
-		global $app, $conf;
-		
-		$app->uses('getconf');
-		$mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail');
+		global $app;
 		
-		if($mail_config['content_filter'] == 'rspamd'){
-			$record_has_changed = false;
-			if(isset($this->dataRecord['rspamd_spam_greylisting_level']) && !isset($this->dataRecord['rspamd_greylisting'])) $this->dataRecord['rspamd_greylisting'] = 'n';
-			foreach($this->dataRecord as $key => $val) {
-				if(isset($this->oldDataRecord[$key]) && @$this->oldDataRecord[$key] != $val) {
-					// Record has changed
-					$record_has_changed = true;
-				}
+		$record_has_changed = false;
+		if(isset($this->dataRecord['rspamd_spam_greylisting_level']) && !isset($this->dataRecord['rspamd_greylisting'])) {
+			$this->dataRecord['rspamd_greylisting'] = 'n';
+		}
+		foreach($this->dataRecord as $key => $val) {
+			if(isset($this->oldDataRecord[$key]) && @$this->oldDataRecord[$key] != $val) {
+				// Record has changed
+				$record_has_changed = true;
 			}
-		
-			if($record_has_changed){
-				$spamfilter_users = $app->db->queryAllRecords("SELECT * FROM spamfilter_users WHERE policy_id = ?", intval($this->id));
+		}
+
+		if($record_has_changed){
+			$spamfilter_users = $app->db->queryAllRecords("SELECT * FROM spamfilter_users WHERE policy_id = ?", intval($this->id));
 
-				if(is_array($spamfilter_users) && !empty($spamfilter_users)){
-					foreach($spamfilter_users as $spamfilter_user){
-						$app->db->datalogUpdate('spamfilter_users', $spamfilter_user, 'id', $spamfilter_user["id"], true);
-					}
+			if(is_array($spamfilter_users) && !empty($spamfilter_users)){
+				foreach($spamfilter_users as $spamfilter_user){
+					$app->db->datalogUpdate('spamfilter_users', $spamfilter_user, 'id', $spamfilter_user["id"], true);
 				}
 			}
 		}
 	}
-
 }
 
 $app->tform_actions = new page_action;
 $app->tform_actions->onLoad();
-?>
\ No newline at end of file
diff --git a/interface/web/mail/templates/spamfilter_amavis_edit.htm b/interface/web/mail/templates/spamfilter_amavis_edit.htm
new file mode 100644
index 0000000000..41bf6b5410
--- /dev/null
+++ b/interface/web/mail/templates/spamfilter_amavis_edit.htm
@@ -0,0 +1,198 @@
+<div class='page-header'>
+	<h1><tmpl_var name="list_head_txt"></h1>
+</div>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
+	<!-- Settings -->
+  <div class="panel panel-default">
+    <div class="panel-heading" role="tab" id="headingSettings">
+      <h4 class="panel-title">
+        <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseSettings" aria-expanded="true" aria-controls="collapseSettings">
+          {tmpl_var name='amavis_settings_txt'}
+        </a>
+      </h4>
+    </div>
+    <div id="collapseSettings" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingWeb">
+      <div class="panel-body">
+			<div class="form-group">
+                <label for="banned_files_lover" class="col-sm-3 control-label">{tmpl_var name='banned_files_lover_txt'}</label>
+                <div class="col-sm-9"><select name="banned_files_lover" id="banned_files_lover" class="form-control">
+                    {tmpl_var name='banned_files_lover'}
+                </select></div>
+            </div>
+            <div class="form-group">
+                <label for="bad_header_lover" class="col-sm-3 control-label">{tmpl_var name='bad_header_lover_txt'}</label>
+                <div class="col-sm-9"><select name="bad_header_lover" id="bad_header_lover" class="form-control">
+                    {tmpl_var name='bad_header_lover'}
+                </select></div>
+            </div>
+            <div class="form-group">
+                <label for="bypass_virus_checks" class="col-sm-3 control-label">{tmpl_var name='bypass_virus_checks_txt'}</label>
+                <div class="col-sm-9"><select name="bypass_virus_checks" id="bypass_virus_checks" class="form-control">
+                    {tmpl_var name='bypass_virus_checks'}
+                </select></div>
+            </div>
+            <div class="form-group">
+                <label for="bypass_banned_checks" class="col-sm-3 control-label">{tmpl_var name='bypass_banned_checks_txt'}</label>
+                <div class="col-sm-9"><select name="bypass_banned_checks" id="bypass_banned_checks" class="form-control">
+                    {tmpl_var name='bypass_banned_checks'}
+                </select></div>
+            </div>
+            <div class="form-group">
+                <label for="bypass_header_checks" class="col-sm-3 control-label">{tmpl_var name='bypass_header_checks_txt'}</label>
+                <div class="col-sm-9"><select name="bypass_header_checks" id="bypass_header_checks" class="form-control">
+                    {tmpl_var name='bypass_header_checks'}
+                </select></div>
+            </div>
+	  </div>
+	</div>
+  </div>
+	
+<!-- Tag Level -->
+  <div class="panel panel-default">
+    <div class="panel-heading" role="tab" id="headingTaglevel">
+      <h4 class="panel-title">
+        <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseTaglevel" aria-expanded="true" aria-controls="collapseTaglevel">
+          {tmpl_var name='amavis_taglevel_txt'}
+        </a>
+      </h4>
+    </div>
+    <div id="collapseTaglevel" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingTaglevel">
+      <div class="panel-body">
+
+            <div class="form-group">
+                <label for="spam_tag_level" class="col-sm-3 control-label">{tmpl_var name='spam_tag_level_txt'}</label>
+                <div class="col-sm-9"><input type="text" name="spam_tag_level" id="spam_tag_level" value="{tmpl_var name='spam_tag_level'}" class="form-control" /></div></div>
+            <div class="form-group">
+                <label for="spam_tag2_level" class="col-sm-3 control-label">{tmpl_var name='spam_tag2_level_txt'}</label>
+                <div class="col-sm-9"><input type="text" name="spam_tag2_level" id="spam_tag2_level" value="{tmpl_var name='spam_tag2_level'}" class="form-control" /></div></div>
+            <div class="form-group">
+                <label for="spam_kill_level" class="col-sm-3 control-label">{tmpl_var name='spam_kill_level_txt'}</label>
+                <div class="col-sm-9"><input type="text" name="spam_kill_level" id="spam_kill_level" value="{tmpl_var name='spam_kill_level'}" class="form-control" /></div></div>
+            <div class="form-group">
+                <label for="spam_dsn_cutoff_level" class="col-sm-3 control-label">{tmpl_var name='spam_dsn_cutoff_level_txt'}</label>
+                <div class="col-sm-9"><input type="text" name="spam_dsn_cutoff_level" id="spam_dsn_cutoff_level" value="{tmpl_var name='spam_dsn_cutoff_level'}" class="form-control" /></div></div>
+            <div class="form-group">
+                <label for="spam_quarantine_cutoff_level" class="col-sm-3 control-label">{tmpl_var name='spam_quarantine_cutoff_level_txt'}</label>
+                <div class="col-sm-9"><input type="text" name="spam_quarantine_cutoff_level" id="spam_quarantine_cutoff_level" value="{tmpl_var name='spam_quarantine_cutoff_level'}" class="form-control" /></div></div>
+            <div class="form-group">
+                <label for="spam_modifies_subj" class="col-sm-3 control-label">{tmpl_var name='spam_modifies_subj_txt'}</label>
+                <div class="col-sm-9"><select name="spam_modifies_subj" id="spam_modifies_subj" class="form-control">
+                    {tmpl_var name='spam_modifies_subj'}
+                </select></div>
+            </div>
+            <div class="form-group">
+                <label for="spam_subject_tag" class="col-sm-3 control-label">{tmpl_var name='spam_subject_tag_txt'}</label>
+                <div class="col-sm-9"><input type="text" name="spam_subject_tag" id="spam_subject_tag" value="{tmpl_var name='spam_subject_tag'}" class="form-control" /></div></div>
+            <div class="form-group">
+                <label for="spam_subject_tag2" class="col-sm-3 control-label">{tmpl_var name='spam_subject_tag2_txt'}</label>
+                <div class="col-sm-9"><input type="text" name="spam_subject_tag2" id="spam_subject_tag2" value="{tmpl_var name='spam_subject_tag2'}" class="form-control" /></div></div>
+	  </div>
+	</div>
+  </div>
+
+<!-- Quarantine -->
+  <div class="panel panel-default">
+    <div class="panel-heading" role="tab" id="headingQuarantine">
+      <h4 class="panel-title">
+        <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseQuarantine" aria-expanded="true" aria-controls="collapseQuarantine">
+          {tmpl_var name='amavis_quarantine_txt'}
+        </a>
+      </h4>
+    </div>
+    <div id="collapseQuarantine" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingQuarantine">
+      <div class="panel-body">
+
+
+            <div class="form-group">
+                <label for="virus_quarantine_to" class="col-sm-3 control-label">{tmpl_var name='virus_quarantine_to_txt'}</label>
+                <div class="col-sm-9"><input type="text" name="virus_quarantine_to" id="virus_quarantine_to" value="{tmpl_var name='virus_quarantine_to'}" class="form-control" /></div></div>
+            <div class="form-group">
+                <label for="spam_quarantine_to" class="col-sm-3 control-label">{tmpl_var name='spam_quarantine_to_txt'}</label>
+                <div class="col-sm-9"><input type="text" name="spam_quarantine_to" id="spam_quarantine_to" value="{tmpl_var name='spam_quarantine_to'}" class="form-control" /></div></div>
+            <div class="form-group">
+                <label for="banned_quarantine_to" class="col-sm-3 control-label">{tmpl_var name='banned_quarantine_to_txt'}</label>
+                <div class="col-sm-9"><input type="text" name="banned_quarantine_to" id="banned_quarantine_to" value="{tmpl_var name='banned_quarantine_to'}" class="form-control" /></div></div>
+            <div class="form-group">
+                <label for="bad_header_quarantine_to" class="col-sm-3 control-label">{tmpl_var name='bad_header_quarantine_to_txt'}</label>
+                <div class="col-sm-9"><input type="text" name="bad_header_quarantine_to" id="bad_header_quarantine_to" value="{tmpl_var name='bad_header_quarantine_to'}" class="form-control" /></div></div>
+	  </div>
+	</div>
+  </div>
+
+<!-- Other -->
+  <div class="panel panel-default">
+    <div class="panel-heading" role="tab" id="headingOther">
+      <h4 class="panel-title">
+        <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseOther" aria-expanded="true" aria-controls="collapseOther">
+          {tmpl_var name='amavis_other_txt'}
+        </a>
+      </h4>
+    </div>
+    <div id="collapseOther" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingOther">
+      <div class="panel-body">
+
+            <div class="form-group">
+                <label for="addr_extension_virus" class="col-sm-3 control-label">{tmpl_var name='addr_extension_virus_txt'}</label>
+                <div class="col-sm-9"><input type="text" name="addr_extension_virus" id="addr_extension_virus" value="{tmpl_var name='addr_extension_virus'}" class="form-control" /></div></div>
+            <div class="form-group">
+                <label for="addr_extension_spam" class="col-sm-3 control-label">{tmpl_var name='addr_extension_spam_txt'}</label>
+                <div class="col-sm-9"><input type="text" name="addr_extension_spam" id="addr_extension_spam" value="{tmpl_var name='addr_extension_spam'}" class="form-control" /></div></div>
+            <div class="form-group">
+                <label for="addr_extension_banned" class="col-sm-3 control-label">{tmpl_var name='addr_extension_banned_txt'}</label>
+                <div class="col-sm-9"><input type="text" name="addr_extension_banned" id="addr_extension_banned" value="{tmpl_var name='addr_extension_banned'}" class="form-control" /></div></div>
+            <div class="form-group">
+                <label for="addr_extension_bad_header" class="col-sm-3 control-label">{tmpl_var name='addr_extension_bad_header_txt'}</label>
+                <div class="col-sm-9"><input type="text" name="addr_extension_bad_header" id="addr_extension_bad_header" value="{tmpl_var name='addr_extension_bad_header'}" class="form-control" /></div></div>
+            <div class="form-group">
+                <label for="warnvirusrecip" class="col-sm-3 control-label">{tmpl_var name='warnvirusrecip_txt'}</label>
+                <div class="col-sm-9"><select name="warnvirusrecip" id="warnvirusrecip" class="form-control">
+                    {tmpl_var name='warnvirusrecip'}
+                </select></div>
+            </div>
+            <div class="form-group">
+                <label for="warnbannedrecip" class="col-sm-3 control-label">{tmpl_var name='warnbannedrecip_txt'}</label>
+                <div class="col-sm-9"><select name="warnbannedrecip" id="warnbannedrecip" class="form-control">
+                    {tmpl_var name='warnbannedrecip'}
+                </select></div>
+            </div>
+            <div class="form-group">
+                <label for="warnbadhrecip" class="col-sm-3 control-label">{tmpl_var name='warnbadhrecip_txt'}</label>
+                <div class="col-sm-9"><select name="warnbadhrecip" id="warnbadhrecip" class="form-control">
+                    {tmpl_var name='warnbadhrecip'}
+                </select></div>
+            </div>
+            <div class="form-group">
+                <label for="newvirus_admin" class="col-sm-3 control-label">{tmpl_var name='newvirus_admin_txt'}</label>
+                <div class="col-sm-9"><input type="text" name="newvirus_admin" id="newvirus_admin" value="{tmpl_var name='newvirus_admin'}" class="form-control" /></div></div>
+            <div class="form-group">
+                <label for="virus_admin" class="col-sm-3 control-label">{tmpl_var name='virus_admin_txt'}</label>
+                <div class="col-sm-9"><input type="text" name="virus_admin" id="virus_admin" value="{tmpl_var name='virus_admin'}" class="form-control" /></div></div>
+            <div class="form-group">
+                <label for="banned_admin" class="col-sm-3 control-label">{tmpl_var name='banned_admin_txt'}</label>
+                <div class="col-sm-9"><input type="text" name="banned_admin" id="banned_admin" value="{tmpl_var name='banned_admin'}" class="form-control" /></div></div>
+            <div class="form-group">
+                <label for="bad_header_admin" class="col-sm-3 control-label">{tmpl_var name='bad_header_admin_txt'}</label>
+                <div class="col-sm-9"><input type="text" name="bad_header_admin" id="bad_header_admin" value="{tmpl_var name='bad_header_admin'}" class="form-control" /></div></div>
+            <div class="form-group">
+                <label for="spam_admin" class="col-sm-3 control-label">{tmpl_var name='spam_admin_txt'}</label>
+                <div class="col-sm-9"><input type="text" name="spam_admin" id="spam_admin" value="{tmpl_var name='spam_admin'}" class="form-control" /></div></div>
+			<div class="form-group">
+                <label for="message_size_limit" class="col-sm-3 control-label">{tmpl_var name='message_size_limit_txt'}</label>
+                <div class="col-sm-9"><div class="input-group"><input type="text" name="message_size_limit" id="message_size_limit" value="{tmpl_var name='message_size_limit'}" class="form-control" aria-describedby="message_size_limit-desc" /><span class="input-group-addon" id="message_size_limit-desc">Bytes</span></div></div>
+            </div>
+            <div class="form-group">
+                <label for="banned_rulenames" class="col-sm-3 control-label">{tmpl_var name='banned_rulenames_txt'}</label>
+                <div class="col-sm-9"><input type="text" name="banned_rulenames" id="banned_rulenames" value="{tmpl_var name='banned_rulenames'}" class="form-control" /></div></div>
+	  </div>
+	</div>
+  </div>
+
+				
+        <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+        <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="mail/spamfilter_policy_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="mail/spamfilter_policy_list.php">{tmpl_var name='btn_cancel_txt'}</button>
+        </div></div>
\ No newline at end of file
diff --git a/interface/web/mail/templates/spamfilter_other_edit.htm b/interface/web/mail/templates/spamfilter_other_edit.htm
deleted file mode 100644
index 83cd4a95c9..0000000000
--- a/interface/web/mail/templates/spamfilter_other_edit.htm
+++ /dev/null
@@ -1,67 +0,0 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
-            <div class="form-group">
-                <label for="addr_extension_virus" class="col-sm-3 control-label">{tmpl_var name='addr_extension_virus_txt'}</label>
-                <div class="col-sm-9"><input type="text" name="addr_extension_virus" id="addr_extension_virus" value="{tmpl_var name='addr_extension_virus'}" class="form-control" /></div></div>
-            <div class="form-group">
-                <label for="addr_extension_spam" class="col-sm-3 control-label">{tmpl_var name='addr_extension_spam_txt'}</label>
-                <div class="col-sm-9"><input type="text" name="addr_extension_spam" id="addr_extension_spam" value="{tmpl_var name='addr_extension_spam'}" class="form-control" /></div></div>
-            <div class="form-group">
-                <label for="addr_extension_banned" class="col-sm-3 control-label">{tmpl_var name='addr_extension_banned_txt'}</label>
-                <div class="col-sm-9"><input type="text" name="addr_extension_banned" id="addr_extension_banned" value="{tmpl_var name='addr_extension_banned'}" class="form-control" /></div></div>
-            <div class="form-group">
-                <label for="addr_extension_bad_header" class="col-sm-3 control-label">{tmpl_var name='addr_extension_bad_header_txt'}</label>
-                <div class="col-sm-9"><input type="text" name="addr_extension_bad_header" id="addr_extension_bad_header" value="{tmpl_var name='addr_extension_bad_header'}" class="form-control" /></div></div>
-            <div class="form-group">
-                <label for="warnvirusrecip" class="col-sm-3 control-label">{tmpl_var name='warnvirusrecip_txt'}</label>
-                <div class="col-sm-9"><select name="warnvirusrecip" id="warnvirusrecip" class="form-control">
-                    {tmpl_var name='warnvirusrecip'}
-                </select></div>
-            </div>
-            <div class="form-group">
-                <label for="warnbannedrecip" class="col-sm-3 control-label">{tmpl_var name='warnbannedrecip_txt'}</label>
-                <div class="col-sm-9"><select name="warnbannedrecip" id="warnbannedrecip" class="form-control">
-                    {tmpl_var name='warnbannedrecip'}
-                </select></div>
-            </div>
-            <div class="form-group">
-                <label for="warnbadhrecip" class="col-sm-3 control-label">{tmpl_var name='warnbadhrecip_txt'}</label>
-                <div class="col-sm-9"><select name="warnbadhrecip" id="warnbadhrecip" class="form-control">
-                    {tmpl_var name='warnbadhrecip'}
-                </select></div>
-            </div>
-            <div class="form-group">
-                <label for="newvirus_admin" class="col-sm-3 control-label">{tmpl_var name='newvirus_admin_txt'}</label>
-                <div class="col-sm-9"><input type="text" name="newvirus_admin" id="newvirus_admin" value="{tmpl_var name='newvirus_admin'}" class="form-control" /></div></div>
-            <div class="form-group">
-                <label for="virus_admin" class="col-sm-3 control-label">{tmpl_var name='virus_admin_txt'}</label>
-                <div class="col-sm-9"><input type="text" name="virus_admin" id="virus_admin" value="{tmpl_var name='virus_admin'}" class="form-control" /></div></div>
-            <div class="form-group">
-                <label for="banned_admin" class="col-sm-3 control-label">{tmpl_var name='banned_admin_txt'}</label>
-                <div class="col-sm-9"><input type="text" name="banned_admin" id="banned_admin" value="{tmpl_var name='banned_admin'}" class="form-control" /></div></div>
-            <div class="form-group">
-                <label for="bad_header_admin" class="col-sm-3 control-label">{tmpl_var name='bad_header_admin_txt'}</label>
-                <div class="col-sm-9"><input type="text" name="bad_header_admin" id="bad_header_admin" value="{tmpl_var name='bad_header_admin'}" class="form-control" /></div></div>
-            <div class="form-group">
-                <label for="spam_admin" class="col-sm-3 control-label">{tmpl_var name='spam_admin_txt'}</label>
-                <div class="col-sm-9"><input type="text" name="spam_admin" id="spam_admin" value="{tmpl_var name='spam_admin'}" class="form-control" /></div></div>
-			<div class="form-group">
-                <label for="message_size_limit" class="col-sm-3 control-label">{tmpl_var name='message_size_limit_txt'}</label>
-                <div class="col-sm-9"><div class="input-group"><input type="text" name="message_size_limit" id="message_size_limit" value="{tmpl_var name='message_size_limit'}" class="form-control" aria-describedby="message_size_limit-desc" /><span class="input-group-addon" id="message_size_limit-desc">Bytes</span></div></div>
-            </div>
-            <div class="form-group">
-                <label for="banned_rulenames" class="col-sm-3 control-label">{tmpl_var name='banned_rulenames_txt'}</label>
-                <div class="col-sm-9"><input type="text" name="banned_rulenames" id="banned_rulenames" value="{tmpl_var name='banned_rulenames'}" class="form-control" /></div></div>
-        
-
-        <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
-        <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="mail/spamfilter_policy_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="mail/spamfilter_policy_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
diff --git a/interface/web/mail/templates/spamfilter_policy_edit.htm b/interface/web/mail/templates/spamfilter_policy_edit.htm
index 0496d3a85a..506b4d5b89 100644
--- a/interface/web/mail/templates/spamfilter_policy_edit.htm
+++ b/interface/web/mail/templates/spamfilter_policy_edit.htm
@@ -3,8 +3,7 @@
 </div>
 <p><tmpl_var name="list_desc_txt"></p>
 
-
-        
+       
             <div class="form-group">
                 <label for="policy_name" class="col-sm-3 control-label">{tmpl_var name='policy_name_txt'}</label>
                 <div class="col-sm-9"><input type="text" name="policy_name" id="policy_name" value="{tmpl_var name='policy_name'}" class="form-control" /></div></div>
@@ -20,38 +19,7 @@
                     {tmpl_var name='spam_lover'}
                 </select></div>
             </div>
-			<tmpl_if name='content_filter' op='==' value='amavisd'>
-            <div class="form-group">
-                <label for="banned_files_lover" class="col-sm-3 control-label">{tmpl_var name='banned_files_lover_txt'}</label>
-                <div class="col-sm-9"><select name="banned_files_lover" id="banned_files_lover" class="form-control">
-                    {tmpl_var name='banned_files_lover'}
-                </select></div>
-            </div>
-            <div class="form-group">
-                <label for="bad_header_lover" class="col-sm-3 control-label">{tmpl_var name='bad_header_lover_txt'}</label>
-                <div class="col-sm-9"><select name="bad_header_lover" id="bad_header_lover" class="form-control">
-                    {tmpl_var name='bad_header_lover'}
-                </select></div>
-            </div>
-            <div class="form-group">
-                <label for="bypass_virus_checks" class="col-sm-3 control-label">{tmpl_var name='bypass_virus_checks_txt'}</label>
-                <div class="col-sm-9"><select name="bypass_virus_checks" id="bypass_virus_checks" class="form-control">
-                    {tmpl_var name='bypass_virus_checks'}
-                </select></div>
-            </div>
-            <div class="form-group">
-                <label for="bypass_banned_checks" class="col-sm-3 control-label">{tmpl_var name='bypass_banned_checks_txt'}</label>
-                <div class="col-sm-9"><select name="bypass_banned_checks" id="bypass_banned_checks" class="form-control">
-                    {tmpl_var name='bypass_banned_checks'}
-                </select></div>
-            </div>
-            <div class="form-group">
-                <label for="bypass_header_checks" class="col-sm-3 control-label">{tmpl_var name='bypass_header_checks_txt'}</label>
-                <div class="col-sm-9"><select name="bypass_header_checks" id="bypass_header_checks" class="form-control">
-                    {tmpl_var name='bypass_header_checks'}
-                </select></div>
-            </div>
-			</tmpl_if>
+
 
         <input type="hidden" name="id" value="{tmpl_var name='id'}">
 
diff --git a/interface/web/mail/templates/spamfilter_quarantine_edit.htm b/interface/web/mail/templates/spamfilter_quarantine_edit.htm
deleted file mode 100644
index 7f44b58020..0000000000
--- a/interface/web/mail/templates/spamfilter_quarantine_edit.htm
+++ /dev/null
@@ -1,35 +0,0 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
-            <div class="form-group">
-                <label for="virus_quarantine_to" class="col-sm-3 control-label">{tmpl_var name='virus_quarantine_to_txt'}</label>
-                <div class="col-sm-9"><input type="text" name="virus_quarantine_to" id="virus_quarantine_to" value="{tmpl_var name='virus_quarantine_to'}" class="form-control" /></div></div>
-            <div class="form-group">
-                <label for="spam_quarantine_to" class="col-sm-3 control-label">{tmpl_var name='spam_quarantine_to_txt'}</label>
-                <div class="col-sm-9"><input type="text" name="spam_quarantine_to" id="spam_quarantine_to" value="{tmpl_var name='spam_quarantine_to'}" class="form-control" /></div></div>
-            <div class="form-group">
-                <label for="banned_quarantine_to" class="col-sm-3 control-label">{tmpl_var name='banned_quarantine_to_txt'}</label>
-                <div class="col-sm-9"><input type="text" name="banned_quarantine_to" id="banned_quarantine_to" value="{tmpl_var name='banned_quarantine_to'}" class="form-control" /></div></div>
-            <div class="form-group">
-                <label for="bad_header_quarantine_to" class="col-sm-3 control-label">{tmpl_var name='bad_header_quarantine_to_txt'}</label>
-                <div class="col-sm-9"><input type="text" name="bad_header_quarantine_to" id="bad_header_quarantine_to" value="{tmpl_var name='bad_header_quarantine_to'}" class="form-control" /></div></div>
-            <!--
-                  <div class="form-group">
-                    <label for="clean_quarantine_to" class="col-sm-3 control-label">{tmpl_var name='clean_quarantine_to_txt'}</label>
-                    <div class="col-sm-9"><input type="text" name="clean_quarantine_to" id="clean_quarantine_to" value="{tmpl_var name='clean_quarantine_to'}" class="form-control" /></div></div>
-                  <div class="form-group">
-                    <label for="other_quarantine_to" class="col-sm-3 control-label">{tmpl_var name='other_quarantine_to_txt'}</label>
-                    <div class="col-sm-9"><input type="text" name="other_quarantine_to" id="other_quarantine_to" value="{tmpl_var name='other_quarantine_to'}" class="form-control" /></div></div>
-            -->
-        
-
-        <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
-        <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="mail/spamfilter_policy_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="mail/spamfilter_policy_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
diff --git a/interface/web/mail/templates/spamfilter_rspamd_edit.htm b/interface/web/mail/templates/spamfilter_rspamd_edit.htm
new file mode 100644
index 0000000000..73472a876c
--- /dev/null
+++ b/interface/web/mail/templates/spamfilter_rspamd_edit.htm
@@ -0,0 +1,36 @@
+<div class='page-header'>
+	<h1><tmpl_var name="list_head_txt"></h1>
+</div>
+<p><tmpl_var name="list_desc_txt"></p>
+
+			<div class="form-group">
+                <label class="col-sm-3 control-label">{tmpl_var name='rspamd_greylisting_txt'}</label>
+                <div class="col-sm-9">
+                    {tmpl_var name='rspamd_greylisting'}
+                </div>
+            </div>
+			<div class="form-group">
+                <label for="rspamd_spam_greylisting_level" class="col-sm-3 control-label">{tmpl_var name='rspamd_spam_greylisting_level_txt'}</label>
+                <div class="col-sm-9"><input type="text" name="rspamd_spam_greylisting_level" id="rspamd_spam_greylisting_level" value="{tmpl_var name='rspamd_spam_greylisting_level'}" class="form-control" /></div>
+			</div>
+			<div class="form-group">
+                <label for="rspamd_spam_tag_level" class="col-sm-3 control-label">{tmpl_var name='rspamd_spam_tag_level_txt'}</label>
+                <div class="col-sm-9"><input type="text" name="rspamd_spam_tag_level" id="rspamd_spam_tag_level" value="{tmpl_var name='rspamd_spam_tag_level'}" class="form-control" /></div>
+			</div>
+			<div class="form-group">
+                <label for="rspamd_spam_tag_method" class="col-sm-3 control-label">{tmpl_var name='rspamd_spam_tag_method_txt'}</label>
+                <div class="col-sm-9"><select name="rspamd_spam_tag_method" id="rspamd_spam_tag_method" class="form-control">
+                    {tmpl_var name='rspamd_spam_tag_method'}
+                </select></div>
+            </div>
+			<div class="form-group">
+                <label for="rspamd_spam_kill_level" class="col-sm-3 control-label">{tmpl_var name='rspamd_spam_kill_level_txt'}</label>
+                <div class="col-sm-9"><input type="text" name="rspamd_spam_kill_level" id="rspamd_spam_kill_level" value="{tmpl_var name='rspamd_spam_kill_level'}" class="form-control" /></div>
+			</div>
+
+        <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+        <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="mail/spamfilter_policy_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="mail/spamfilter_policy_list.php">{tmpl_var name='btn_cancel_txt'}</button>
+        </div></div>
\ No newline at end of file
diff --git a/interface/web/mail/templates/spamfilter_taglevel_edit.htm b/interface/web/mail/templates/spamfilter_taglevel_edit.htm
deleted file mode 100644
index 1b3c3b482c..0000000000
--- a/interface/web/mail/templates/spamfilter_taglevel_edit.htm
+++ /dev/null
@@ -1,69 +0,0 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        <tmpl_if name='content_filter' op='==' value='amavisd'>
-            <div class="form-group">
-                <label for="spam_tag_level" class="col-sm-3 control-label">{tmpl_var name='spam_tag_level_txt'}</label>
-                <div class="col-sm-9"><input type="text" name="spam_tag_level" id="spam_tag_level" value="{tmpl_var name='spam_tag_level'}" class="form-control" /></div></div>
-            <div class="form-group">
-                <label for="spam_tag2_level" class="col-sm-3 control-label">{tmpl_var name='spam_tag2_level_txt'}</label>
-                <div class="col-sm-9"><input type="text" name="spam_tag2_level" id="spam_tag2_level" value="{tmpl_var name='spam_tag2_level'}" class="form-control" /></div></div>
-            <div class="form-group">
-                <label for="spam_kill_level" class="col-sm-3 control-label">{tmpl_var name='spam_kill_level_txt'}</label>
-                <div class="col-sm-9"><input type="text" name="spam_kill_level" id="spam_kill_level" value="{tmpl_var name='spam_kill_level'}" class="form-control" /></div></div>
-            <div class="form-group">
-                <label for="spam_dsn_cutoff_level" class="col-sm-3 control-label">{tmpl_var name='spam_dsn_cutoff_level_txt'}</label>
-                <div class="col-sm-9"><input type="text" name="spam_dsn_cutoff_level" id="spam_dsn_cutoff_level" value="{tmpl_var name='spam_dsn_cutoff_level'}" class="form-control" /></div></div>
-            <div class="form-group">
-                <label for="spam_quarantine_cutoff_level" class="col-sm-3 control-label">{tmpl_var name='spam_quarantine_cutoff_level_txt'}</label>
-                <div class="col-sm-9"><input type="text" name="spam_quarantine_cutoff_level" id="spam_quarantine_cutoff_level" value="{tmpl_var name='spam_quarantine_cutoff_level'}" class="form-control" /></div></div>
-            <div class="form-group">
-                <label for="spam_modifies_subj" class="col-sm-3 control-label">{tmpl_var name='spam_modifies_subj_txt'}</label>
-                <div class="col-sm-9"><select name="spam_modifies_subj" id="spam_modifies_subj" class="form-control">
-                    {tmpl_var name='spam_modifies_subj'}
-                </select></div>
-            </div>
-            <div class="form-group">
-                <label for="spam_subject_tag" class="col-sm-3 control-label">{tmpl_var name='spam_subject_tag_txt'}</label>
-                <div class="col-sm-9"><input type="text" name="spam_subject_tag" id="spam_subject_tag" value="{tmpl_var name='spam_subject_tag'}" class="form-control" /></div></div>
-            <div class="form-group">
-                <label for="spam_subject_tag2" class="col-sm-3 control-label">{tmpl_var name='spam_subject_tag2_txt'}</label>
-                <div class="col-sm-9"><input type="text" name="spam_subject_tag2" id="spam_subject_tag2" value="{tmpl_var name='spam_subject_tag2'}" class="form-control" /></div></div>
-			</tmpl_if>
-			<tmpl_if name='content_filter' op='==' value='rspamd'>
-			<div class="form-group">
-                <label class="col-sm-3 control-label">{tmpl_var name='rspamd_greylisting_txt'}</label>
-                <div class="col-sm-9">
-                    {tmpl_var name='rspamd_greylisting'}
-                </div>
-            </div>
-			<div class="form-group">
-                <label for="rspamd_spam_greylisting_level" class="col-sm-3 control-label">{tmpl_var name='rspamd_spam_greylisting_level_txt'}</label>
-                <div class="col-sm-9"><input type="text" name="rspamd_spam_greylisting_level" id="rspamd_spam_greylisting_level" value="{tmpl_var name='rspamd_spam_greylisting_level'}" class="form-control" /></div>
-			</div>
-			<div class="form-group">
-                <label for="rspamd_spam_tag_level" class="col-sm-3 control-label">{tmpl_var name='rspamd_spam_tag_level_txt'}</label>
-                <div class="col-sm-9"><input type="text" name="rspamd_spam_tag_level" id="rspamd_spam_tag_level" value="{tmpl_var name='rspamd_spam_tag_level'}" class="form-control" /></div>
-			</div>
-			<div class="form-group">
-                <label for="rspamd_spam_tag_method" class="col-sm-3 control-label">{tmpl_var name='rspamd_spam_tag_method_txt'}</label>
-                <div class="col-sm-9"><select name="rspamd_spam_tag_method" id="rspamd_spam_tag_method" class="form-control">
-                    {tmpl_var name='rspamd_spam_tag_method'}
-                </select></div>
-            </div>
-			<div class="form-group">
-                <label for="rspamd_spam_kill_level" class="col-sm-3 control-label">{tmpl_var name='rspamd_spam_kill_level_txt'}</label>
-                <div class="col-sm-9"><input type="text" name="rspamd_spam_kill_level" id="rspamd_spam_kill_level" value="{tmpl_var name='rspamd_spam_kill_level'}" class="form-control" /></div>
-			</div>
-			</tmpl_if>
-        
-
-        <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
-        <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="mail/spamfilter_policy_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="mail/spamfilter_policy_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
-- 
GitLab


From 63b9660ffad9e2a9a9de32b9f0dce8fd10b44dd7 Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Fri, 16 Aug 2019 15:14:06 +0200
Subject: [PATCH 006/242] Fixes #5369 Internal ISPConfig cronjobs are not run
 in 3.1-dev version

---
 install/sql/incremental/upd_dev_collection.sql | 2 ++
 server/lib/classes/cron.inc.php                | 4 ++--
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql
index f86f6a93ac..91cbc81626 100644
--- a/install/sql/incremental/upd_dev_collection.sql
+++ b/install/sql/incremental/upd_dev_collection.sql
@@ -35,3 +35,5 @@ ALTER TABLE `ftp_user` CHANGE COLUMN `password` `password` VARCHAR(200) DEFAULT
 ALTER TABLE `shell_user` CHANGE COLUMN `password` `password` VARCHAR(200) DEFAULT NULL;
 ALTER TABLE `sys_user` CHANGE COLUMN `passwort` `passwort` VARCHAR(200) DEFAULT NULL;
 ALTER TABLE `webdav_user` CHANGE COLUMN `password` `password` VARCHAR(200) DEFAULT NULL;
+
+DELETE FROM sys_cron WHERE `next_run` IS NOT NULL AND `next_run` >= DATE_ADD(`last_run`, INTERVAL 30 DAY) AND `next_run` BETWEEN '2020-01-01' AND '2020-01-02';
diff --git a/server/lib/classes/cron.inc.php b/server/lib/classes/cron.inc.php
index c6c2ad02b2..67be475fe3 100644
--- a/server/lib/classes/cron.inc.php
+++ b/server/lib/classes/cron.inc.php
@@ -265,8 +265,8 @@ class cron {
 
 		reset($this->_aValidValues[$sField]);
 		foreach($this->_aValidValues[$sField] as $cur) {
-			if($bIncludeCurrent == true && $cur['value'] >= $iValue) return $cur['value'];
-			elseif($cur['value'] > $iValue) return $cur['value'];
+			if($bIncludeCurrent == true && $cur >= $iValue) return $cur;
+			elseif($cur > $iValue) return $cur;
 		}
 		return reset($this->_aValidValues[$sField]);
 	}
-- 
GitLab


From 2b3eb82dd3fdcedd90f7473ded8ba6a3ad2c7c94 Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Fri, 16 Aug 2019 15:15:10 +0200
Subject: [PATCH 007/242] Plugins module not loaded in cron debugger which
 prevents debugging of the Let's encrypt plugin.

---
 server/cron_debug.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/server/cron_debug.php b/server/cron_debug.php
index 2ab9289d26..c92410f3e5 100644
--- a/server/cron_debug.php
+++ b/server/cron_debug.php
@@ -39,7 +39,7 @@ ini_set('error_reporting', E_ALL & ~E_NOTICE);
 $conf['server_id'] = intval($conf['server_id']);
 
 // Load required base-classes
-$app->uses('modules,ini_parser,file,services,getconf,system,cron,functions');
+$app->uses('modules,plugins,ini_parser,file,services,getconf,system,cron,functions');
 $app->load('libdatetime,cronjob');
 
 // Path settings
-- 
GitLab


From 2df03bce442fcdf691681ea0a7fa390d8a06dae7 Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Sat, 17 Aug 2019 11:01:28 +0200
Subject: [PATCH 008/242] - don't treat cron jobs as running when last run is
 older than 24h

---
 server/lib/classes/cronjob.inc.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/server/lib/classes/cronjob.inc.php b/server/lib/classes/cronjob.inc.php
index 9fba5af3c5..1e452b6481 100644
--- a/server/lib/classes/cronjob.inc.php
+++ b/server/lib/classes/cronjob.inc.php
@@ -100,7 +100,7 @@ class cronjob {
 		// check the run time and values for this job
 
 		// get previous run data
-		$data = $app->db->queryOneRecord("SELECT `last_run`, `next_run`, `running` FROM `sys_cron` WHERE `name` = ?", get_class($this));
+		$data = $app->db->queryOneRecord("SELECT `last_run`, `next_run`, IF(`last_run` IS NOT NULL AND `last_run` < DATE_SUB(NOW(), INTERVAL 24 HOUR), 0, `running`) as `running` FROM `sys_cron` WHERE `name` = ?", get_class($this));
 		if($data) {
 			if($data['last_run']) $this->_last_run = $data['last_run'];
 			if($data['next_run']) $this->_next_run = $data['next_run'];
-- 
GitLab


From 3305f4ee9282f69666441122fdf9a53aa3189164 Mon Sep 17 00:00:00 2001
From: Webslice <webslice@bixels.nl>
Date: Wed, 21 Aug 2019 14:20:27 +0200
Subject: [PATCH 009/242] Force equal passwords in APS installer before form
 can be posted

---
 interface/web/sites/templates/aps_install_package.htm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/interface/web/sites/templates/aps_install_package.htm b/interface/web/sites/templates/aps_install_package.htm
index 2c4b48b9d3..255a8685d5 100644
--- a/interface/web/sites/templates/aps_install_package.htm
+++ b/interface/web/sites/templates/aps_install_package.htm
@@ -57,7 +57,7 @@
 		<input type="hidden" name="install" value="0" />
 		<div class="clear">
 			<div class="right">
-				<button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_install_txt'}" name="btn_install" onclick="document.pageForm.install.value=1; ISPConfig.submitForm('pageForm','sites/aps_install_package.php?id={tmpl_var name='pkg_id'}');">{tmpl_var name='btn_install_txt'}</button>
+				<button class="btn btn-default formbutton-success positive" type="button" value="{tmpl_var name='btn_install_txt'}" name="btn_install" onclick="document.pageForm.install.value=1; ISPConfig.submitForm('pageForm','sites/aps_install_package.php?id={tmpl_var name='pkg_id'}');">{tmpl_var name='btn_install_txt'}</button>
 				<button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="sites/aps_availablepackages_list.php">{tmpl_var name='btn_cancel_txt'}</button>
 			</div>
 		</div>
-- 
GitLab


From 0b1fac193e9cabc965b42645388ea45a5515cd9d Mon Sep 17 00:00:00 2001
From: Webslice <webslice@bixels.nl>
Date: Wed, 21 Aug 2019 14:26:31 +0200
Subject: [PATCH 010/242] Don't try to load non-existing config in aps remote,
 fixes #4974

---
 interface/lib/classes/remote.d/aps.inc.php | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/interface/lib/classes/remote.d/aps.inc.php b/interface/lib/classes/remote.d/aps.inc.php
index 50dda48255..78330fc8bb 100644
--- a/interface/lib/classes/remote.d/aps.inc.php
+++ b/interface/lib/classes/remote.d/aps.inc.php
@@ -43,8 +43,7 @@ class remoting_aps extends remoting {
 			throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.');
 			return false;
 		}
-		
-		require_once '../../../lib/config.inc.php';
+
 		$app->load('aps_crawler');
 		
 		$aps = new ApsCrawler($app, true); // true = Interface mode, false = Server mode
-- 
GitLab


From 2a3cadc8416c56f3c309df101249adffde3a0eaf Mon Sep 17 00:00:00 2001
From: Webslice <webslice@bixels.nl>
Date: Wed, 21 Aug 2019 14:29:11 +0200
Subject: [PATCH 011/242] Minor language change for APS installer

---
 interface/web/sites/lib/lang/en_aps.lng | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/interface/web/sites/lib/lang/en_aps.lng b/interface/web/sites/lib/lang/en_aps.lng
index b0300fe0cc..04f6fb798d 100644
--- a/interface/web/sites/lib/lang/en_aps.lng
+++ b/interface/web/sites/lib/lang/en_aps.lng
@@ -28,7 +28,7 @@ $wb['installation_txt'] = 'Installation';
 $wb['install_location_txt'] = 'Install location';
 $wb['btn_install_txt'] = 'Install';
 $wb['btn_cancel_txt'] = 'Cancel';
-$wb['acceptance_txt'] = 'Acceptance';
+$wb['acceptance_txt'] = 'I accept the license';
 $wb['acceptance_text_txt'] = 'Yes, i\'ve read the license and agree.';
 $wb['install_language_txt'] = 'Interface language';
 $wb['new_database_password_txt'] = 'New database password';
-- 
GitLab


From 0bbef70c613b99664bc637ddb519697d3ce116cd Mon Sep 17 00:00:00 2001
From: Webslice <webslice@bixels.nl>
Date: Wed, 21 Aug 2019 14:30:58 +0200
Subject: [PATCH 012/242] Load APS language file for APS instance list

---
 .../web/sites/list/aps_installedpackages.list.php  | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/interface/web/sites/list/aps_installedpackages.list.php b/interface/web/sites/list/aps_installedpackages.list.php
index d9a51d8bef..1f855082d5 100644
--- a/interface/web/sites/list/aps_installedpackages.list.php
+++ b/interface/web/sites/list/aps_installedpackages.list.php
@@ -28,6 +28,12 @@ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 
+// Load the APS language file
+$lngfile = 'lib/lang/'.$app->functions->check_language($_SESSION['s']['language']).'_aps.lng';
+require_once $lngfile;
+$app->tpl->setVar($wb);
+$app->load_language_file('web/sites/'.$lngfile);
+
 $liste['name'] = 'aps_instances'; // Name of the list
 $liste['table'] = 'aps_instances'; // Database table
 $liste['table_idx'] = 'id'; // Table index
@@ -85,9 +91,9 @@ $liste["item"][] = array('field'    => 'instance_status',
 	'prefix'   => '',
 	'suffix'   => '',
 	'width'    => '',
-	'value'    => array(INSTANCE_INSTALL => $app->lng('Installation_task'),
-		INSTANCE_ERROR => $app->lng('Installation_error'),
-		INSTANCE_SUCCESS => $app->lng('Installation_success'),
-		INSTANCE_REMOVE => $app->lng('Installation_remove')),
+	'value'    => array(INSTANCE_INSTALL => $app->lng('installation_task_txt'),
+		INSTANCE_ERROR => $app->lng('installation_error_txt'),
+		INSTANCE_SUCCESS => $app->lng('installation_success_txt'),
+		INSTANCE_REMOVE => $app->lng('installation_remove_txt')),
 	'table' => 'aps_instances');
 ?>
-- 
GitLab


From 1b273e48f9030743eaa046414079b055e894d209 Mon Sep 17 00:00:00 2001
From: Webslice <webslice@bixels.nl>
Date: Wed, 21 Aug 2019 14:33:28 +0200
Subject: [PATCH 013/242] Fix APS package list table

---
 interface/web/sites/templates/aps_packages_list.htm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/interface/web/sites/templates/aps_packages_list.htm b/interface/web/sites/templates/aps_packages_list.htm
index d3f3f8c3bb..501e7aeedd 100644
--- a/interface/web/sites/templates/aps_packages_list.htm
+++ b/interface/web/sites/templates/aps_packages_list.htm
@@ -6,7 +6,7 @@
 <table class="table">
                 <thead class="dark form-group-sm">
                     <tr>
-                        <th>{tmpl_var name='name_txt'}</th>
+                        <th colspan="2">{tmpl_var name='name_txt'}</th>
                         <th>{tmpl_var name='version_txt'}</th>
                         <th>{tmpl_var name='category_txt'}</th>
                             <tmpl_if name='is_admin'>
@@ -15,7 +15,7 @@
                         <th class="small-col text-right">&nbsp;</th>
                     </tr>
                     <tr>
-                        <td><input class="form-control" type="text" name="search_name" value="{tmpl_var name='search_name'}" /></td>
+                        <td colspan="2"><input class="form-control" type="text" name="search_name" value="{tmpl_var name='search_name'}" /></td>
                         <td><input class="form-control" type="text" name="search_version" value="{tmpl_var name='search_version'}" /></td>
                         <td><select class="form-control" name="search_category" onChange="ISPConfig.submitForm('pageForm','sites/aps_availablepackages_list.php');">{tmpl_var name='search_category'}</select></td>
                             <tmpl_if name='is_admin'>
@@ -27,7 +27,7 @@
                 <tbody>
                     <tmpl_loop name='records'>
                         <tr>
-                            <td><a href="#" data-load-content="sites/aps_packagedetails_show.php?id={tmpl_var name='id'}">{tmpl_var name='name'}</a></td>
+                            <td colspan="2"><a href="#" data-load-content="sites/aps_packagedetails_show.php?id={tmpl_var name='id'}">{tmpl_var name='name'}</a></td>
                             <td>{tmpl_var name='version'}-{tmpl_var name='release'}</td>
                             <td>{tmpl_var name='category'}</td>
                                 <tmpl_if name='is_admin'>
-- 
GitLab


From 66ccf358c1d3463eddb4879f5b33bf9f5d851b2b Mon Sep 17 00:00:00 2001
From: Webslice <webslice@bixels.nl>
Date: Wed, 21 Aug 2019 14:48:35 +0200
Subject: [PATCH 014/242] Add missing API doc for
 sites_aps_change_package_status

---
 remoting_client/API-docs/navigation.html      |  7 +++--
 .../sites_aps_change_package_status.html      | 29 +++++++++++++++++++
 2 files changed, 33 insertions(+), 3 deletions(-)
 create mode 100644 remoting_client/API-docs/sites_aps_change_package_status.html

diff --git a/remoting_client/API-docs/navigation.html b/remoting_client/API-docs/navigation.html
index a9d32f7598..5168122f28 100644
--- a/remoting_client/API-docs/navigation.html
+++ b/remoting_client/API-docs/navigation.html
@@ -2,11 +2,11 @@
 <html><head>
   <title>ISCPConfig 3 API Functions</title>
 
-  
-  
+
+
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 
-  
+
   <style type="text/css">
 <!--
 .command {
@@ -200,6 +200,7 @@
 <p><a href="server_get_php_versions.html" target="content">server_get_php_versions</a></p>
 <p><a href="server_get_serverid_by_ip.html" target="content">server_get_serverid_by_ip</a></p>
 <p><a href="sites_aps_available_packages_list.html" target="content">sites_aps_available_packages_list</a></p>
+<p><a href="sites_aps_change_package_status.html" target="content">sites_aps_change_package_status</a></p>
 <p><a href="sites_aps_get_package_details.html" target="content">sites_aps_get_package_details</a></p>
 <p><a href="sites_aps_get_package_file.html" target="content">sites_aps_get_package_file</a></p>
 <p><a href="sites_aps_get_package_settings.html" target="content">sites_aps_get_package_settings</a></p>
diff --git a/remoting_client/API-docs/sites_aps_change_package_status.html b/remoting_client/API-docs/sites_aps_change_package_status.html
new file mode 100644
index 0000000000..bc8ad380ed
--- /dev/null
+++ b/remoting_client/API-docs/sites_aps_change_package_status.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><title>ISPConfig 3 remote API documentation</title>
+
+
+
+
+
+  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+  <link rel="stylesheet" type="text/css" href="definitionen.css">
+  <style type="text/css">
+  </style></head>
+
+<body>
+<div style="padding:40px">
+<h1>sites_aps_change_package_status(<span class="var">$session_id</span>, <span class="var">$primary_id</span>, <span class="var">$params</span>);</h1>
+<br>
+<p class="headgrp">Description: </p>
+<p class="margin"> Changes the status for specified APS package. Supply the APS package ID in $primary_id.</p><br>
+<p class="headgrp">Input Variables: </p>
+<p class="margin"> <span class="var">$session_id</span>, <span class="var">$primary_id</span>, <span class="var">$params</span></p>
+<p class="headgrp">Parameters (in <span class="var">$params</span>): </p>
+<p class="margin"> package_status&nbsp;&nbsp;(<span class="paratype">int</span>) - can be 1 (= PACKAGE_LOCKED) or 2 (= PACKAGE_ENABLED)</p>
+<p class="headgrp">Output: </p>
+<p class="margin"> Returns true package status was changed.</p>
+<!--<b>Output:</b>
+<p style="margin-left:100px">Gives a record of </p> -->
+</div>
+
+</body></html>
-- 
GitLab


From c7e3e7d94f84a9f2da2f91f78d7fa518051d4c2f Mon Sep 17 00:00:00 2001
From: Herman van Rink <rink@initfour.nl>
Date: Fri, 23 Aug 2019 09:12:17 +0200
Subject: [PATCH 015/242] On the Mailbox Quota, link rows to the mailbox page

---
 interface/web/dashboard/dashlets/templates/mailquota.htm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/interface/web/dashboard/dashlets/templates/mailquota.htm b/interface/web/dashboard/dashlets/templates/mailquota.htm
index 5ad01d6865..3573ef1ab9 100644
--- a/interface/web/dashboard/dashlets/templates/mailquota.htm
+++ b/interface/web/dashboard/dashlets/templates/mailquota.htm
@@ -12,7 +12,7 @@
 		<tbody>
 		<tmpl_loop name='mailquota'>
 			<tr>
-				<td>{tmpl_var name='email'}</td>
+				<td><a href="#" data-load-content="mail/mail_user_edit.php?id={tmpl_var name='mailuser_id'}" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="{tmpl_var name='email'}">{tmpl_var name='email'}</a></td>
 				<td>{tmpl_var name='name'}</td>
 				<td>{tmpl_var name='used'}</td>
 				<td>{tmpl_var name='quota'}</td>
-- 
GitLab


From 72fbabda91187018134675c0d2876753b12c4da8 Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Fri, 23 Aug 2019 12:56:55 +0200
Subject: [PATCH 016/242] - added missing onComplete() to cron debug script
 (led to permanent running marker on jobs)

---
 server/cron_debug.php | 1 +
 1 file changed, 1 insertion(+)

diff --git a/server/cron_debug.php b/server/cron_debug.php
index c92410f3e5..6eda4fcdde 100644
--- a/server/cron_debug.php
+++ b/server/cron_debug.php
@@ -66,6 +66,7 @@ $cronjob->onPrepare();
 $cronjob->onBeforeRun();
 $cronjob->onRunJob();
 $cronjob->onAfterRun();
+$cronjob->onCompleted();
 
 die("finished.\n");
 
-- 
GitLab


From 8f35cdb04e263fbcad5d3c7de77d7e48acb26946 Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Mon, 26 Aug 2019 14:03:35 +0200
Subject: [PATCH 017/242] - prevent running update when mysql cannot be used
 from command line with credentials from mysql_clientdb.conf

---
 install/update.php | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/install/update.php b/install/update.php
index 42ddd625f5..11570aa666 100644
--- a/install/update.php
+++ b/install/update.php
@@ -293,6 +293,22 @@ if($conf['mysql']['master_slave_setup'] == 'y') {
 */
 checkDbHealth();
 
+
+/*
+ * Check command line mysql login
+ */
+if( !empty($conf["mysql"]["admin_password"]) ) {
+	$cmd = "mysql --default-character-set=".escapeshellarg($conf['mysql']['charset'])." --force -h ".escapeshellarg($conf['mysql']['host'])." -u ".escapeshellarg($conf['mysql']['admin_user'])." -p".escapeshellarg($conf['mysql']['admin_password'])." -P ".escapeshellarg($conf['mysql']['port'])." -D ".escapeshellarg($conf['mysql']['database'])." -e ". escapeshellarg('SHOW DATABASES');
+} else {
+	$cmd = "mysql --default-character-set=".escapeshellarg($conf['mysql']['charset'])." --force -h ".escapeshellarg($conf['mysql']['host'])." -u ".escapeshellarg($conf['mysql']['admin_user'])." -P ".escapeshellarg($conf['mysql']['port'])." -D ".escapeshellarg($conf['mysql']['database'])." -e ". escapeshellarg('SHOW DATABASES');
+}
+$retval = 0;
+$retout = array();
+exec($cmd, $retout, $retval);
+if($retval != 0) {
+	die("Unable to call mysql command line with credentials from mysql_clientdb.conf\n");
+}
+
 /*
  *  dump the new Database and reconfigure the server.ini
  */
-- 
GitLab


From 8ab148b3bae66b595c8b4d73d61cf66ab7d4e8bc Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Mon, 26 Aug 2019 21:59:35 +0200
Subject: [PATCH 018/242] - added debug log to exec_safe including returncode -
 moved jailkit functions from bash files to system library

---
 server/lib/classes/system.inc.php             | 85 ++++++++++++++++++-
 .../cron_jailkit_plugin.inc.php               | 34 ++------
 .../shelluser_jailkit_plugin.inc.php          | 17 ++--
 3 files changed, 97 insertions(+), 39 deletions(-)

diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php
index 288f9d73f8..4c76e9aaff 100644
--- a/server/lib/classes/system.inc.php
+++ b/server/lib/classes/system.inc.php
@@ -2070,6 +2070,8 @@ class system{
 	}
 	
 	public function exec_safe($cmd) {
+		global $app;
+		
 		$arg_count = func_num_args();
 		if($arg_count != substr_count($cmd, '?') + 1) {
 			trigger_error('Placeholder count not matching argument list.', E_USER_WARNING);
@@ -2096,7 +2098,11 @@ class system{
 		
 		$this->_last_exec_out = null;
 		$this->_last_exec_retcode = null;
-		return exec($cmd, $this->_last_exec_out, $this->_last_exec_retcode);
+		$ret = exec($cmd, $this->_last_exec_out, $this->_last_exec_retcode);
+		
+		$this->app->log("safe_exec cmd: " . $cmd . " - return code: " . $this->_last_exec_retcode, LOGLEVEL_DEBUG);
+		
+		return $ret;
 	}
 	
 	public function system_safe($cmd) {
@@ -2104,4 +2110,81 @@ class system{
 		return implode("\n", $this->_last_exec_out);
 	}
 	
+	public function create_jailkit_user($username, $home_dir, $user_home_dir, $shell = '/bin/bash', $p_user = null, $p_user_home_dir = null) {
+		// Check if USERHOMEDIR already exists
+		if(!is_dir($home_dir . '/.' . $user_home_dir)) {
+			$this->mkdirpath($home_dir . '/.' . $user_home_dir, 0755, $username);
+		}
+
+		// Reconfigure the chroot home directory for the user
+		$cmd = 'usermod --home=? ? 2>/dev/null';
+		$this->exec_safe($cmd, $home_dir . '/.' . $user_home_dir, $username);
+
+		// Add the chroot user
+		$cmd = 'jk_jailuser -n -s ? -j ? ?';
+		$this->exec_safe($cmd, $shell, $home_dir, $username);
+
+		//  We have to reconfigure the chroot home directory for the parent user
+		if($p_user !== null) {
+			$cmd = 'usermod --home=? ? 2>/dev/null';
+			$this->exec_safe($cmd, $home_dir . '/.' . $p_user_home_dir, $p_user);
+		}
+		
+		return true;
+	}
+	
+	public function create_jailkit_programs($home_dir, $programs = array()) {
+		if(empty($programs)) {
+			return true;
+		}
+		$program_args = '';
+		foreach($programs as $prog) {
+			$program_args .= ' ' . escapeshellarg($prog);
+		}
+		
+		$cmd = 'jk_cp -k ?' . $program_args;
+		$this->exec_safe($cmd, $home_dir);
+		
+		return true;
+	}
+	
+	public function create_jailkit_chroot($home_dir, $app_sections = array()) {
+		if(empty($app_sections)) {
+			return true;
+		}
+		
+		// Change ownership of the chroot directory to root
+		$app->system->chown($home_dir, 'root');
+		$app->system->chgrp($home_dir, 'root');
+
+		$app_args = '';
+		foreach($app_sections as $app_section) {
+			$app_args .= ' ' . escapeshellarg($app_section);
+		}
+		
+		// Initialize the chroot into the specified directory with the specified applications
+		$cmd = 'jk_init -f -k -c /etc/jailkit/jk_init.ini -j ?' . $app_args;
+		$this->exec_safe($cmd, $home_dir);
+
+		// Create the temp directory
+		if(!is_dir($home_dir . '/tmp')) {
+			$this->mkdirpath($home_dir . '/tmp', 0777);
+		} else {
+			$this->chmod($home_dir . '/tmp', 0777);
+		}
+
+		// Fix permissions of the root firectory
+		$this->chmod($home_dir . '/bin', 0755);  // was chmod g-w $CHROOT_HOMEDIR/bin
+
+		// mysql needs the socket in the chrooted environment
+		$this->mkdirpath($home_dir . '/var/run/mysqld');
+		
+		// ln /var/run/mysqld/mysqld.sock $CHROOT_HOMEDIR/var/run/mysqld/mysqld.sock
+		if(!file_exists("/var/run/mysqld/mysqld.sock")) {
+			$this->exec_safe('ln ? ?', '/var/run/mysqld/mysqld.sock', $home_dir . '/var/run/mysqld/mysqld.sock');
+		}
+		
+		return true;
+	}
+	
 }
diff --git a/server/plugins-available/cron_jailkit_plugin.inc.php b/server/plugins-available/cron_jailkit_plugin.inc.php
index f8f6640444..81d4b72e96 100644
--- a/server/plugins-available/cron_jailkit_plugin.inc.php
+++ b/server/plugins-available/cron_jailkit_plugin.inc.php
@@ -216,12 +216,9 @@ class cron_jailkit_plugin {
 		//check if the chroot environment is created yet if not create it with a list of program sections from the config
 		if (!is_dir($this->parent_domain['document_root'].'/etc/jailkit'))
 		{
-			$command = '/usr/local/ispconfig/server/scripts/create_jailkit_chroot.sh';
-			$command .= ' ?';
-			$command .= ' ?';
-			$app->system->exec_safe($command.' 2>/dev/null', $this->parent_domain['document_root'], $this->jailkit_config['jailkit_chroot_app_sections']);
+			$app->system->create_jailkit_chroot($this->parent_domain['document_root'], preg_split('/[\s,]+/', $this->jailkit_config['jailkit_chroot_app_sections']));
 
-			$this->app->log("Added jailkit chroot with command: ".$command, LOGLEVEL_DEBUG);
+			$this->app->log("Added jailkit chroot", LOGLEVEL_DEBUG);
 
 			$this->app->load('tpl');
 
@@ -259,19 +256,11 @@ class cron_jailkit_plugin {
 		global $app;
 
 		//copy over further programs and its libraries
-		$command = '/usr/local/ispconfig/server/scripts/create_jailkit_programs.sh';
-		$command .= ' ?';
-		$command .= ' ?';
-		$app->system->exec_safe($command.' 2>/dev/null', $this->parent_domain['document_root'], $this->jailkit_config['jailkit_chroot_app_programs']);
-
-		$this->app->log("Added programs to jailkit chroot with command: ".$command, LOGLEVEL_DEBUG);
-
-		$command = '/usr/local/ispconfig/server/scripts/create_jailkit_programs.sh';
-		$command .= ' ?';
-		$command .= ' ?';
-		$app->system->exec_safe($command.' 2>/dev/null', $this->parent_domain['document_root'], $this->jailkit_config['jailkit_chroot_cron_programs']);
-
-		$this->app->log("Added cron programs to jailkit chroot with command: ".$command, LOGLEVEL_DEBUG);
+		$app->system->create_jailkit_programs($this->parent_domain['document_root'], preg_split('/[\s,]+/', $this->jailkit_config['jailkit_chroot_app_programs']));
+		$this->app->log("Added app programs to jailkit chroot", LOGLEVEL_DEBUG);
+		
+		$app->system->create_jailkit_programs($this->parent_domain['document_root'], preg_split('/[\s,]+/', $this->jailkit_config['jailkit_chroot_cron_programs']));
+		$this->app->log("Added cron programs to jailkit chroot", LOGLEVEL_DEBUG);
 	}
 
 	function _add_jailkit_user()
@@ -288,14 +277,7 @@ class cron_jailkit_plugin {
 		// ALWAYS create the user. Even if the user was created before
 		// if we check if the user exists, then a update (no shell -> jailkit) will not work
 		// and the user has FULL ACCESS to the root of the server!
-		$command = '/usr/local/ispconfig/server/scripts/create_jailkit_user.sh';
-		$command .= ' ?';
-		$command .= ' ?';
-		$command .= ' ?';
-		$command .= ' /bin/bash';
-		$app->system->exec_safe($command.' 2>/dev/null', $this->parent_domain['system_user'], $this->parent_domain['document_root'], $jailkit_chroot_userhome);
-
-		$this->app->log("Added jailkit user to chroot with command: ".$command, LOGLEVEL_DEBUG);
+		$app->system->create_jailkit_user($this->parent_domain['system_user'], $this->parent_domain['document_root'], $jailkit_chroot_userhome);
 
 		$app->system->mkdir($this->parent_domain['document_root'].$jailkit_chroot_userhome, 0755, true);
 		$app->system->chown($this->parent_domain['document_root'].$jailkit_chroot_userhome, $this->parent_domain['system_user']);
diff --git a/server/plugins-available/shelluser_jailkit_plugin.inc.php b/server/plugins-available/shelluser_jailkit_plugin.inc.php
index 1f3a08face..eae2ea74fd 100755
--- a/server/plugins-available/shelluser_jailkit_plugin.inc.php
+++ b/server/plugins-available/shelluser_jailkit_plugin.inc.php
@@ -273,10 +273,8 @@ class shelluser_jailkit_plugin {
 		//check if the chroot environment is created yet if not create it with a list of program sections from the config
 		if (!is_dir($this->data['new']['dir'].'/etc/jailkit'))
 		{
-			$command = '/usr/local/ispconfig/server/scripts/create_jailkit_chroot.sh ? ?';
-			$app->system->exec_safe($command.' 2>/dev/null', $this->data['new']['dir'], $this->jailkit_config['jailkit_chroot_app_sections']);
-
-			$this->app->log("Added jailkit chroot with command: ".$command, LOGLEVEL_DEBUG);
+			$app->system->create_jailkit_chroot($this->data['new']['dir'], preg_split('/[\s,]+/', $this->jailkit_config['jailkit_chroot_app_sections']));
+			$this->app->log("Added jailkit chroot", LOGLEVEL_DEBUG);
 
 			$this->_add_jailkit_programs();
 
@@ -323,10 +321,8 @@ class shelluser_jailkit_plugin {
 				$jailkit_chroot_app_program = trim($jailkit_chroot_app_program);
 				if(is_file($jailkit_chroot_app_program) || is_dir($jailkit_chroot_app_program)){			
 					//copy over further programs and its libraries
-					$command = '/usr/local/ispconfig/server/scripts/create_jailkit_programs.sh ? ?';
-					$app->system->exec_safe($command.' 2>/dev/null', $this->data['new']['dir'], $jailkit_chroot_app_program);
-
-					$this->app->log("Added programs to jailkit chroot with command: ".$command, LOGLEVEL_DEBUG);
+					$app->system->create_jailkit_programs($this->data['new']['dir'], $jailkit_chroot_app_program);
+					$this->app->log("Added programs to jailkit chroot", LOGLEVEL_DEBUG);
 				}
 			}
 		}
@@ -357,8 +353,7 @@ class shelluser_jailkit_plugin {
 		// ALWAYS create the user. Even if the user was created before
 		// if we check if the user exists, then a update (no shell -> jailkit) will not work
 		// and the user has FULL ACCESS to the root of the server!
-		$command = '/usr/local/ispconfig/server/scripts/create_jailkit_user.sh ? ? ? ? ? ?';
-		$app->system->exec_safe($command.' 2>/dev/null', $this->data['new']['username'], $this->data['new']['dir'], $jailkit_chroot_userhome, $this->data['new']['shell'], $this->data['new']['puser'], $jailkit_chroot_puserhome);
+		$app->system->create_jailkit_user($this->data['new']['username'], $this->data['new']['dir'], $jailkit_chroot_userhome, $this->data['new']['shell'], $this->data['new']['puser'], $jailkit_chroot_puserhome);
 
 		$shell = '/usr/sbin/jk_chrootsh';
 		if($this->data['new']['active'] != 'y') $shell = '/bin/false';
@@ -366,8 +361,6 @@ class shelluser_jailkit_plugin {
 		$app->system->usermod($this->data['new']['username'], 0, 0, $this->data['new']['dir'].'/.'.$jailkit_chroot_userhome, $shell);
 		$app->system->usermod($this->data['new']['puser'], 0, 0, $this->data['new']['dir'].'/.'.$jailkit_chroot_puserhome, '/usr/sbin/jk_chrootsh');
 
-		$this->app->log("Added jailkit user to chroot with command: ".$command, LOGLEVEL_DEBUG);
-
 		if(!is_dir($this->data['new']['dir'].$jailkit_chroot_userhome)) {
 			if(is_dir($this->data['old']['dir'].$jailkit_chroot_userhome_old)) {
 				$app->system->rename($this->data['old']['dir'].$jailkit_chroot_userhome_old,$this->data['new']['dir'].$jailkit_chroot_userhome);
-- 
GitLab


From 90afc99533450e73162e984497f9e606dcde73b4 Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Mon, 26 Aug 2019 22:01:40 +0200
Subject: [PATCH 019/242] - missed changing app->system to this.

---
 server/lib/classes/system.inc.php | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php
index 4c76e9aaff..1698d73fe1 100644
--- a/server/lib/classes/system.inc.php
+++ b/server/lib/classes/system.inc.php
@@ -2154,8 +2154,8 @@ class system{
 		}
 		
 		// Change ownership of the chroot directory to root
-		$app->system->chown($home_dir, 'root');
-		$app->system->chgrp($home_dir, 'root');
+		$this->chown($home_dir, 'root');
+		$this->chgrp($home_dir, 'root');
 
 		$app_args = '';
 		foreach($app_sections as $app_section) {
-- 
GitLab


From 9387f0222c46ddcf64a7666f5dd3af4ad7a6d2d1 Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Mon, 26 Aug 2019 22:09:33 +0200
Subject: [PATCH 020/242] - typo in logging line

---
 server/lib/classes/system.inc.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php
index 1698d73fe1..5da642e8ad 100644
--- a/server/lib/classes/system.inc.php
+++ b/server/lib/classes/system.inc.php
@@ -2100,7 +2100,7 @@ class system{
 		$this->_last_exec_retcode = null;
 		$ret = exec($cmd, $this->_last_exec_out, $this->_last_exec_retcode);
 		
-		$this->app->log("safe_exec cmd: " . $cmd . " - return code: " . $this->_last_exec_retcode, LOGLEVEL_DEBUG);
+		$app->log("safe_exec cmd: " . $cmd . " - return code: " . $this->_last_exec_retcode, LOGLEVEL_DEBUG);
 		
 		return $ret;
 	}
-- 
GitLab


From 7bf3c540f444123d7236cc4632305419f2736e8c Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Mon, 26 Aug 2019 22:17:07 +0200
Subject: [PATCH 021/242] - moved splitting for programs and sections (jailkit)
 to lib - fixed warning in chmod

---
 server/lib/classes/system.inc.php                         | 8 ++++++--
 server/plugins-available/cron_jailkit_plugin.inc.php      | 6 +++---
 server/plugins-available/shelluser_jailkit_plugin.inc.php | 2 +-
 3 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php
index 5da642e8ad..c05d5ddf00 100644
--- a/server/lib/classes/system.inc.php
+++ b/server/lib/classes/system.inc.php
@@ -2136,6 +2136,8 @@ class system{
 	public function create_jailkit_programs($home_dir, $programs = array()) {
 		if(empty($programs)) {
 			return true;
+		} elseif(is_string($programs)) {
+			$programs = preg_split('/[\s,]+/', $programs);
 		}
 		$program_args = '';
 		foreach($programs as $prog) {
@@ -2151,6 +2153,8 @@ class system{
 	public function create_jailkit_chroot($home_dir, $app_sections = array()) {
 		if(empty($app_sections)) {
 			return true;
+		} elseif(is_string($app_sections)) {
+			$app_sections = preg_split('/[\s,]+/', $app_sections);
 		}
 		
 		// Change ownership of the chroot directory to root
@@ -2170,11 +2174,11 @@ class system{
 		if(!is_dir($home_dir . '/tmp')) {
 			$this->mkdirpath($home_dir . '/tmp', 0777);
 		} else {
-			$this->chmod($home_dir . '/tmp', 0777);
+			$this->chmod($home_dir . '/tmp', 0777, true);
 		}
 
 		// Fix permissions of the root firectory
-		$this->chmod($home_dir . '/bin', 0755);  // was chmod g-w $CHROOT_HOMEDIR/bin
+		$this->chmod($home_dir . '/bin', 0755, true);  // was chmod g-w $CHROOT_HOMEDIR/bin
 
 		// mysql needs the socket in the chrooted environment
 		$this->mkdirpath($home_dir . '/var/run/mysqld');
diff --git a/server/plugins-available/cron_jailkit_plugin.inc.php b/server/plugins-available/cron_jailkit_plugin.inc.php
index 81d4b72e96..0650ad87a3 100644
--- a/server/plugins-available/cron_jailkit_plugin.inc.php
+++ b/server/plugins-available/cron_jailkit_plugin.inc.php
@@ -216,7 +216,7 @@ class cron_jailkit_plugin {
 		//check if the chroot environment is created yet if not create it with a list of program sections from the config
 		if (!is_dir($this->parent_domain['document_root'].'/etc/jailkit'))
 		{
-			$app->system->create_jailkit_chroot($this->parent_domain['document_root'], preg_split('/[\s,]+/', $this->jailkit_config['jailkit_chroot_app_sections']));
+			$app->system->create_jailkit_chroot($this->parent_domain['document_root'], $this->jailkit_config['jailkit_chroot_app_sections']);
 
 			$this->app->log("Added jailkit chroot", LOGLEVEL_DEBUG);
 
@@ -256,10 +256,10 @@ class cron_jailkit_plugin {
 		global $app;
 
 		//copy over further programs and its libraries
-		$app->system->create_jailkit_programs($this->parent_domain['document_root'], preg_split('/[\s,]+/', $this->jailkit_config['jailkit_chroot_app_programs']));
+		$app->system->create_jailkit_programs($this->parent_domain['document_root'], $this->jailkit_config['jailkit_chroot_app_programs']);
 		$this->app->log("Added app programs to jailkit chroot", LOGLEVEL_DEBUG);
 		
-		$app->system->create_jailkit_programs($this->parent_domain['document_root'], preg_split('/[\s,]+/', $this->jailkit_config['jailkit_chroot_cron_programs']));
+		$app->system->create_jailkit_programs($this->parent_domain['document_root'], $this->jailkit_config['jailkit_chroot_cron_programs']);
 		$this->app->log("Added cron programs to jailkit chroot", LOGLEVEL_DEBUG);
 	}
 
diff --git a/server/plugins-available/shelluser_jailkit_plugin.inc.php b/server/plugins-available/shelluser_jailkit_plugin.inc.php
index eae2ea74fd..43d6365008 100755
--- a/server/plugins-available/shelluser_jailkit_plugin.inc.php
+++ b/server/plugins-available/shelluser_jailkit_plugin.inc.php
@@ -273,7 +273,7 @@ class shelluser_jailkit_plugin {
 		//check if the chroot environment is created yet if not create it with a list of program sections from the config
 		if (!is_dir($this->data['new']['dir'].'/etc/jailkit'))
 		{
-			$app->system->create_jailkit_chroot($this->data['new']['dir'], preg_split('/[\s,]+/', $this->jailkit_config['jailkit_chroot_app_sections']));
+			$app->system->create_jailkit_chroot($this->data['new']['dir'], $this->jailkit_config['jailkit_chroot_app_sections']);
 			$this->app->log("Added jailkit chroot", LOGLEVEL_DEBUG);
 
 			$this->_add_jailkit_programs();
-- 
GitLab


From a471ca233a99f4e6824ed0a16b65f069e3f148c2 Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Thu, 29 Aug 2019 13:42:23 +0200
Subject: [PATCH 022/242] #5373 No file when dns zone delete.

---
 server/plugins-available/bind_plugin.inc.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/server/plugins-available/bind_plugin.inc.php b/server/plugins-available/bind_plugin.inc.php
index 29d841ef8a..e8b72b5dbc 100644
--- a/server/plugins-available/bind_plugin.inc.php
+++ b/server/plugins-available/bind_plugin.inc.php
@@ -391,7 +391,7 @@ class bind_plugin {
 		$app->log("Deleting BIND domain file: ".$zone_file_name, LOGLEVEL_DEBUG);
 
  		//* DNSSEC-Implementation
- 		if($data['old']['dnssec_initialized'] == 'Y') {
+ 		if($data['old']['dnssec_initialized'] == 'Y' && file_exists('/usr/local/ispconfig/server/scripts/dnssec-delete.sh')) {
 			//delete keys
 			$app->system->exec_safe('/usr/local/ispconfig/server/scripts/dnssec-delete.sh ?', $data['old']['origin']);
 		}
-- 
GitLab


From b951b645a7ac868ef9b2b6d9e80843a8366ab4e9 Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Thu, 29 Aug 2019 13:45:43 +0200
Subject: [PATCH 023/242] Fixed wrong socket path in apps vhost when PHP 7.3 is
 used on the server.

---
 install/lib/installer_base.lib.php | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php
index c7f955d945..148c6708b8 100644
--- a/install/lib/installer_base.lib.php
+++ b/install/lib/installer_base.lib.php
@@ -2322,6 +2322,7 @@ class installer_base {
 				|| file_exists('/var/run/php/php7.1-fpm.sock')
 				|| file_exists('/var/run/php/php7.2-fpm.sock')
 				|| file_exists('/var/run/php/php7.3-fpm.sock')
+				|| file_exists('/var/run/php/php7.4-fpm.sock')
 			){
 				$use_tcp = '#';
 				$use_socket = '';
@@ -2340,6 +2341,8 @@ class installer_base {
 			if(file_exists('/var/run/php/php7.0-fpm.sock'))	$content = str_replace('/var/run/php5-fpm.sock', '/var/run/php/php7.0-fpm.sock', $content);
 			if(file_exists('/var/run/php/php7.1-fpm.sock'))	$content = str_replace('/var/run/php5-fpm.sock', '/var/run/php/php7.1-fpm.sock', $content);
 			if(file_exists('/var/run/php/php7.2-fpm.sock'))	$content = str_replace('/var/run/php5-fpm.sock', '/var/run/php/php7.2-fpm.sock', $content);
+			if(file_exists('/var/run/php/php7.3-fpm.sock'))	$content = str_replace('/var/run/php5-fpm.sock', '/var/run/php/php7.3-fpm.sock', $content);
+			if(file_exists('/var/run/php/php7.4-fpm.sock'))	$content = str_replace('/var/run/php5-fpm.sock', '/var/run/php/php7.4-fpm.sock', $content);
 
 			wf($vhost_conf_dir.'/apps.vhost', $content);
 
-- 
GitLab


From 3cabaa685abcff8d58c2296c7b52f85014bd5a37 Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Thu, 29 Aug 2019 14:11:21 +0200
Subject: [PATCH 024/242] Fixed #5343 Buster/Dovecot stats-writer

---
 install/dist/lib/debian60.lib.php         |  6 +++++
 install/dist/lib/fedora.lib.php           | 32 +++++++++++++++++++++++
 install/lib/installer_base.lib.php        | 32 +++++++++++++++++++++++
 install/tpl/debian6_dovecot2.conf.master  | 17 ++++++++++++
 install/tpl/debian_dovecot2.conf.master   | 15 +++++++++++
 install/tpl/fedora_dovecot2.conf.master   | 15 +++++++++++
 install/tpl/opensuse_dovecot2.conf.master | 15 +++++++++++
 7 files changed, 132 insertions(+)

diff --git a/install/dist/lib/debian60.lib.php b/install/dist/lib/debian60.lib.php
index 487d350512..cc234f132e 100644
--- a/install/dist/lib/debian60.lib.php
+++ b/install/dist/lib/debian60.lib.php
@@ -136,6 +136,12 @@ class installer extends installer_base {
 						caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
 					}
 				}
+				//remove #2.3+ comment
+				$content = file_get_contents($config_dir.'/'.$configfile);
+				$content = str_replace('#2.3+','',$content);
+				file_put_contents($config_dir.'/'.$configfile,$content);
+				unset($content);
+				
 			} else {
 				// remove settings which are not supported in Dovecot < 2.3
 				removeLine($config_dir.'/'.$configfile, 'ssl_min_protocol =');
diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php
index 5bb8fc0d25..3af8746908 100644
--- a/install/dist/lib/fedora.lib.php
+++ b/install/dist/lib/fedora.lib.php
@@ -449,6 +449,38 @@ class installer_dist extends installer_base {
 				file_put_contents($config_dir.'/'.$configfile,$content);
 				unset($content);
 			}
+			if(version_compare($dovecot_version,2.3) >= 0) {
+				// Remove deprecated setting(s)
+				removeLine($config_dir.'/'.$configfile, 'ssl_protocols =');
+				
+				// Check if we have a dhparams file and if not, create it
+				if(!file_exists('/etc/dovecot/dh.pem')) {
+					swriteln('Creating new DHParams file, this takes several minutes. Do not interrupt the script.');
+					if(file_exists('/var/lib/dovecot/ssl-parameters.dat')) {
+						// convert existing ssl parameters file
+						$command = 'dd if=/var/lib/dovecot/ssl-parameters.dat bs=1 skip=88 | openssl dhparam -inform der > /etc/dovecot/dh.pem';
+						caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
+					} else {
+						/*
+						   Create a new dhparams file. We use 2048 bit only as it simply takes too long
+						   on smaller systems to generate a 4096 bit dh file (> 30 minutes). If you need
+						   a 4096 bit file, create it manually before you install ISPConfig
+						*/
+						$command = 'openssl dhparam -out /etc/dovecot/dh.pem 2048';
+						caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
+					}
+				}
+				//remove #2.3+ comment
+				$content = file_get_contents($config_dir.'/'.$configfile);
+				$content = str_replace('#2.3+','',$content);
+				file_put_contents($config_dir.'/'.$configfile,$content);
+				unset($content);
+				
+			} else {
+				// remove settings which are not supported in Dovecot < 2.3
+				removeLine($config_dir.'/'.$configfile, 'ssl_min_protocol =');
+				removeLine($config_dir.'/'.$configfile, 'ssl_dh =');
+			}
 			replaceLine($config_dir.'/'.$configfile, 'postmaster_address = postmaster@example.com', 'postmaster_address = postmaster@'.$conf['hostname'], 1, 0);
 			replaceLine($config_dir.'/'.$configfile, 'postmaster_address = webmaster@localhost', 'postmaster_address = postmaster@'.$conf['hostname'], 1, 0);
 		} else {
diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php
index 148c6708b8..dd4fe9c306 100644
--- a/install/lib/installer_base.lib.php
+++ b/install/lib/installer_base.lib.php
@@ -1304,6 +1304,38 @@ class installer_base {
 				file_put_contents($config_dir.'/'.$configfile,$content);
 				unset($content);
 			}
+			if(version_compare($dovecot_version,2.3) >= 0) {
+				// Remove deprecated setting(s)
+				removeLine($config_dir.'/'.$configfile, 'ssl_protocols =');
+				
+				// Check if we have a dhparams file and if not, create it
+				if(!file_exists('/etc/dovecot/dh.pem')) {
+					swriteln('Creating new DHParams file, this takes several minutes. Do not interrupt the script.');
+					if(file_exists('/var/lib/dovecot/ssl-parameters.dat')) {
+						// convert existing ssl parameters file
+						$command = 'dd if=/var/lib/dovecot/ssl-parameters.dat bs=1 skip=88 | openssl dhparam -inform der > /etc/dovecot/dh.pem';
+						caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
+					} else {
+						/*
+						   Create a new dhparams file. We use 2048 bit only as it simply takes too long
+						   on smaller systems to generate a 4096 bit dh file (> 30 minutes). If you need
+						   a 4096 bit file, create it manually before you install ISPConfig
+						*/
+						$command = 'openssl dhparam -out /etc/dovecot/dh.pem 2048';
+						caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
+					}
+				}
+				//remove #2.3+ comment
+				$content = file_get_contents($config_dir.'/'.$configfile);
+				$content = str_replace('#2.3+','',$content);
+				file_put_contents($config_dir.'/'.$configfile,$content);
+				unset($content);
+				
+			} else {
+				// remove settings which are not supported in Dovecot < 2.3
+				removeLine($config_dir.'/'.$configfile, 'ssl_min_protocol =');
+				removeLine($config_dir.'/'.$configfile, 'ssl_dh =');
+			}
 		}
 
 		//* dovecot-lmtpd
diff --git a/install/tpl/debian6_dovecot2.conf.master b/install/tpl/debian6_dovecot2.conf.master
index f13bbd53df..74f680024b 100644
--- a/install/tpl/debian6_dovecot2.conf.master
+++ b/install/tpl/debian6_dovecot2.conf.master
@@ -68,3 +68,20 @@ protocol lmtp {
   postmaster_address = webmaster@localhost
   mail_plugins = quota sieve
 }
+
+mail_plugins = $mail_plugins quota
+
+#2.3+ service stats {
+#2.3+     unix_listener stats-reader {
+#2.3+         user = vmail
+#2.3+         group = vmail
+#2.3+         mode = 0660
+#2.3+     }
+#2.3+ 
+#2.3+     unix_listener stats-writer {
+#2.3+         user = vmail
+#2.3+         group = vmail
+#2.3+         mode = 0660
+#2.3+     }
+#2.3+ }
+
diff --git a/install/tpl/debian_dovecot2.conf.master b/install/tpl/debian_dovecot2.conf.master
index 8fdaf44eeb..cfe3bd0182 100644
--- a/install/tpl/debian_dovecot2.conf.master
+++ b/install/tpl/debian_dovecot2.conf.master
@@ -64,4 +64,19 @@ protocol lmtp {
   postmaster_address = webmaster@localhost
   mail_plugins = quota sieve
 }
+
 mail_plugins = $mail_plugins quota
+
+#2.3+ service stats {
+#2.3+     unix_listener stats-reader {
+#2.3+         user = vmail
+#2.3+         group = vmail
+#2.3+         mode = 0660
+#2.3+     }
+#2.3+ 
+#2.3+     unix_listener stats-writer {
+#2.3+         user = vmail
+#2.3+         group = vmail
+#2.3+         mode = 0660
+#2.3+     }
+#2.3+ }
diff --git a/install/tpl/fedora_dovecot2.conf.master b/install/tpl/fedora_dovecot2.conf.master
index c14af1d44d..1ba39a30d4 100644
--- a/install/tpl/fedora_dovecot2.conf.master
+++ b/install/tpl/fedora_dovecot2.conf.master
@@ -61,4 +61,19 @@ protocol lmtp {
   postmaster_address = webmaster@localhost
   mail_plugins = quota sieve
 }
+
 mail_plugins = $mail_plugins quota
+
+#2.3+ service stats {
+#2.3+     unix_listener stats-reader {
+#2.3+         user = vmail
+#2.3+         group = vmail
+#2.3+         mode = 0660
+#2.3+     }
+#2.3+ 
+#2.3+     unix_listener stats-writer {
+#2.3+         user = vmail
+#2.3+         group = vmail
+#2.3+         mode = 0660
+#2.3+     }
+#2.3+ }
diff --git a/install/tpl/opensuse_dovecot2.conf.master b/install/tpl/opensuse_dovecot2.conf.master
index f28c1095d2..f615cf3354 100644
--- a/install/tpl/opensuse_dovecot2.conf.master
+++ b/install/tpl/opensuse_dovecot2.conf.master
@@ -60,4 +60,19 @@ protocol lmtp {
   postmaster_address = webmaster@localhost
   mail_plugins = quota sieve
 }
+
 mail_plugins = $mail_plugins quota
+
+#2.3+ service stats {
+#2.3+     unix_listener stats-reader {
+#2.3+         user = vmail
+#2.3+         group = vmail
+#2.3+         mode = 0660
+#2.3+     }
+#2.3+ 
+#2.3+     unix_listener stats-writer {
+#2.3+         user = vmail
+#2.3+         group = vmail
+#2.3+         mode = 0660
+#2.3+     }
+#2.3+ }
-- 
GitLab


From ea111e9228a6be7acedfd5d0644825e5eb4aca54 Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Thu, 29 Aug 2019 14:14:26 +0200
Subject: [PATCH 025/242] Removed global quota line from dovecot.conf file
 again.

---
 install/tpl/debian6_dovecot2.conf.master | 2 --
 1 file changed, 2 deletions(-)

diff --git a/install/tpl/debian6_dovecot2.conf.master b/install/tpl/debian6_dovecot2.conf.master
index 74f680024b..777280f044 100644
--- a/install/tpl/debian6_dovecot2.conf.master
+++ b/install/tpl/debian6_dovecot2.conf.master
@@ -69,8 +69,6 @@ protocol lmtp {
   mail_plugins = quota sieve
 }
 
-mail_plugins = $mail_plugins quota
-
 #2.3+ service stats {
 #2.3+     unix_listener stats-reader {
 #2.3+         user = vmail
-- 
GitLab


From 20b7abe33d2b9d2cf549d5896c9763bc620e8a1b Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Fri, 30 Aug 2019 14:51:17 +0200
Subject: [PATCH 026/242] - enable greylisting setting for catchall mail
 addresses - change the way greylisting setting is evaluated (prio is now 1.
 mail user, 2. mail forward/alias, 3. catchall), fixes #5378

---
 install/tpl/mysql-virtual_policy_greylist.cf.master        | 3 ++-
 interface/web/mail/form/mail_domain_catchall.tform.php     | 6 ++++++
 interface/web/mail/lib/lang/de_mail_domain_catchall.lng    | 1 +
 interface/web/mail/lib/lang/en_mail_domain_catchall.lng    | 1 +
 interface/web/mail/templates/mail_domain_catchall_edit.htm | 6 ++++++
 5 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/install/tpl/mysql-virtual_policy_greylist.cf.master b/install/tpl/mysql-virtual_policy_greylist.cf.master
index fd6fded819..7967ee4a9c 100644
--- a/install/tpl/mysql-virtual_policy_greylist.cf.master
+++ b/install/tpl/mysql-virtual_policy_greylist.cf.master
@@ -1,5 +1,6 @@
 user = {mysql_server_ispconfig_user}
 password = {mysql_server_ispconfig_password}
 dbname = {mysql_server_database}
-query = SELECT 'greylisting' FROM (SELECT greylisting, source AS email FROM mail_forwarding WHERE server_id = {server_id} UNION SELECT greylisting, email FROM mail_user WHERE server_id = {server_id}) addresses WHERE addresses.email='%s' AND addresses.greylisting='y' UNION SELECT 'greylisting' FROM `mail_forwarding` f CROSS JOIN `mail_user` u ON u.email = f.destination WHERE f.type = 'catchall' AND u.greylisting = 'y' AND u.server_id = {server_id} AND f.source = '@%s'
+query = SELECT 'greylisting' FROM (SELECT `greylisting`, 1 as `prio` FROM `mail_user` WHERE `server_id` = {server_id} AND `email` = '%s' UNION SELECT `greylisting`, 2 as `prio` FROM `mail_forwarding` WHERE `server_id` = {server_id} AND `source` = '%s' UNION SELECT `greylisting`, 3 as `prio` FROM `mail_forwarding` WHERE `server_id` = {server_id} AND `source` = '@%s' ORDER BY `prio` ASC LIMIT 1) as rules WHERE rules.greylisting = 'y'
+
 hosts = {mysql_server_ip}
\ No newline at end of file
diff --git a/interface/web/mail/form/mail_domain_catchall.tform.php b/interface/web/mail/form/mail_domain_catchall.tform.php
index 8d0c0296bd..81ce24c7b5 100644
--- a/interface/web/mail/form/mail_domain_catchall.tform.php
+++ b/interface/web/mail/form/mail_domain_catchall.tform.php
@@ -131,6 +131,12 @@ $form["tabs"]['catchall'] = array (
 			'default' => 'y',
 			'value'  => array(0 => 'n', 1 => 'y')
 		),
+		'greylisting' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'CHECKBOX',
+			'default' => 'n',
+			'value'  => array(1 => 'y', 0 => 'n')
+		),
 		//#################################
 		// ENDE Datatable fields
 		//#################################
diff --git a/interface/web/mail/lib/lang/de_mail_domain_catchall.lng b/interface/web/mail/lib/lang/de_mail_domain_catchall.lng
index 9f37e56697..bef241e0ea 100644
--- a/interface/web/mail/lib/lang/de_mail_domain_catchall.lng
+++ b/interface/web/mail/lib/lang/de_mail_domain_catchall.lng
@@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Ungültiger Domainname oder ungültige Zeichen im D
 $wb['limit_mailcatchall_txt'] = 'Die maximale Anzahl an Catchall Einträgen für Ihr Konto wurde erreicht.';
 $wb['source_txt'] = 'Quelle';
 $wb['destination_error_isemail'] = 'Das Ziel ist keine gültige E-Mail Adresse.';
+$wb['greylisting_txt'] = 'Aktiviere Greylisting';
 ?>
diff --git a/interface/web/mail/lib/lang/en_mail_domain_catchall.lng b/interface/web/mail/lib/lang/en_mail_domain_catchall.lng
index 1f1726e540..a49722802e 100644
--- a/interface/web/mail/lib/lang/en_mail_domain_catchall.lng
+++ b/interface/web/mail/lib/lang/en_mail_domain_catchall.lng
@@ -9,4 +9,5 @@ $wb["limit_mailcatchall_txt"] = 'The max. number of email catchall accounts for
 $wb['domain_txt'] = 'Domain';
 $wb["source_txt"] = 'Source';
 $wb['destination_error_isemail'] = 'Destination is no valid email address.';
+$wb['greylisting_txt'] = 'Enable greylisting';
 ?>
diff --git a/interface/web/mail/templates/mail_domain_catchall_edit.htm b/interface/web/mail/templates/mail_domain_catchall_edit.htm
index 63c4405de2..5991f2aecc 100644
--- a/interface/web/mail/templates/mail_domain_catchall_edit.htm
+++ b/interface/web/mail/templates/mail_domain_catchall_edit.htm
@@ -14,6 +14,12 @@
             <div class="form-group">
                 <label for="destination" class="col-sm-3 control-label">{tmpl_var name='destination_txt'}</label>
                 <div class="col-sm-9"><input type="text" name="destination" id="destination" value="{tmpl_var name='destination'}" class="form-control" /></div></div>
+            <div class="form-group">
+                <label class="col-sm-3 control-label">{tmpl_var name='greylisting_txt'}</label>
+                <div class="col-sm-9">
+                    {tmpl_var name='greylisting'}
+                </div>
+            </div>
             <div class="form-group">
                 <label class="col-sm-3 control-label">{tmpl_var name='active_txt'}</label>
                 <div class="col-sm-9">
-- 
GitLab


From 4666bfeb7456c34c847525a0f44a419f10457ace Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Fri, 30 Aug 2019 15:11:59 +0200
Subject: [PATCH 027/242] - fix for previous commit

---
 install/tpl/mysql-virtual_policy_greylist.cf.master | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/install/tpl/mysql-virtual_policy_greylist.cf.master b/install/tpl/mysql-virtual_policy_greylist.cf.master
index 7967ee4a9c..00f504e082 100644
--- a/install/tpl/mysql-virtual_policy_greylist.cf.master
+++ b/install/tpl/mysql-virtual_policy_greylist.cf.master
@@ -1,6 +1,6 @@
 user = {mysql_server_ispconfig_user}
 password = {mysql_server_ispconfig_password}
 dbname = {mysql_server_database}
-query = SELECT 'greylisting' FROM (SELECT `greylisting`, 1 as `prio` FROM `mail_user` WHERE `server_id` = {server_id} AND `email` = '%s' UNION SELECT `greylisting`, 2 as `prio` FROM `mail_forwarding` WHERE `server_id` = {server_id} AND `source` = '%s' UNION SELECT `greylisting`, 3 as `prio` FROM `mail_forwarding` WHERE `server_id` = {server_id} AND `source` = '@%s' ORDER BY `prio` ASC LIMIT 1) as rules WHERE rules.greylisting = 'y'
+query = SELECT 'greylisting' FROM (SELECT `greylisting`, 1 as `prio` FROM `mail_user` WHERE `server_id` = {server_id} AND `email` = '%s' UNION SELECT `greylisting`, 2 as `prio` FROM `mail_forwarding` WHERE `server_id` = {server_id} AND `source` = '%s' UNION SELECT `greylisting`, 3 as `prio` FROM `mail_forwarding` WHERE `server_id` = {server_id} AND `source` = '@%d' ORDER BY `prio` ASC LIMIT 1) as rules WHERE rules.greylisting = 'y'
 
 hosts = {mysql_server_ip}
\ No newline at end of file
-- 
GitLab


From 24b60e9c77a440812e61b2a65200c6b8501a0f8c Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Mon, 2 Sep 2019 10:15:41 +0200
Subject: [PATCH 028/242] - fixed problem when running cron_debug.php - fixed
 php warning on awstats cron

---
 server/lib/classes/cron.d/150-awstats.inc.php | 4 +++-
 server/lib/classes/cronjob.inc.php            | 2 +-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/server/lib/classes/cron.d/150-awstats.inc.php b/server/lib/classes/cron.d/150-awstats.inc.php
index 0b1cbd5a44..4ba286ea1a 100644
--- a/server/lib/classes/cron.d/150-awstats.inc.php
+++ b/server/lib/classes/cron.d/150-awstats.inc.php
@@ -148,7 +148,9 @@ class cronjob_awstats extends cronjob {
 				}
 
 				$statsdirold = $statsdir."/".$awyear."-".$awmonth."/";
-				mkdir($statsdirold);
+				if(!is_dir($statsdirold)) {
+					mkdir($statsdirold);
+				}
 				$files = scandir($statsdir);
 				foreach ($files as $file) {
 					if (substr($file, 0, 1) != "." && !is_dir("$statsdir"."/"."$file") && substr($file, 0, 1) != "w" && substr($file, 0, 1) != "i") copy("$statsdir"."/"."$file", "$statsdirold"."$file");
diff --git a/server/lib/classes/cronjob.inc.php b/server/lib/classes/cronjob.inc.php
index 1e452b6481..1407add021 100644
--- a/server/lib/classes/cronjob.inc.php
+++ b/server/lib/classes/cronjob.inc.php
@@ -174,7 +174,7 @@ class cronjob {
 	}
 
 	// child classes may NOT override this!
-	private function onCompleted() {
+	protected function onCompleted() {
 		global $app, $conf;
 
 		if($conf['log_priority'] <= LOGLEVEL_DEBUG) print "Called onCompleted() for class " . get_class($this) . "\n";
-- 
GitLab


From 2e3887d07d0baeed95208df87ab5b53816ada8ff Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Mon, 2 Sep 2019 11:13:54 +0200
Subject: [PATCH 029/242] - changed the way cron_debug.php calls cron job
 classes

---
 server/cron_debug.php              | 7 +------
 server/lib/classes/cronjob.inc.php | 4 ++--
 2 files changed, 3 insertions(+), 8 deletions(-)

diff --git a/server/cron_debug.php b/server/cron_debug.php
index 6eda4fcdde..74065f02c4 100644
--- a/server/cron_debug.php
+++ b/server/cron_debug.php
@@ -61,12 +61,7 @@ if(preg_match('/^\d+\-(.*)$/', $name, $match)) $name = $match[1]; // strip numer
 include $path . '/' . $cronjob_file;
 $class_name = 'cronjob_' . $name;
 $cronjob = new $class_name();
-
-$cronjob->onPrepare();
-$cronjob->onBeforeRun();
-$cronjob->onRunJob();
-$cronjob->onAfterRun();
-$cronjob->onCompleted();
+$cronjob->run(true);
 
 die("finished.\n");
 
diff --git a/server/lib/classes/cronjob.inc.php b/server/lib/classes/cronjob.inc.php
index 1407add021..27bc7038cf 100644
--- a/server/lib/classes/cronjob.inc.php
+++ b/server/lib/classes/cronjob.inc.php
@@ -76,14 +76,14 @@ class cronjob {
 
 
 	/** run through cronjob sequence **/
-	public function run() {
+	public function run($debug_mode = false) {
 		global $conf;
 		
 		if($conf['log_priority'] <= LOGLEVEL_DEBUG) print "Called run() for class " . get_class($this) . "\n";
 		if($conf['log_priority'] <= LOGLEVEL_DEBUG) print "Job has schedule: " . $this->getSchedule() . "\n";
 		$this->onPrepare();
 		$run_it = $this->onBeforeRun();
-		if($run_it == true) {
+		if($run_it == true || $debug_mode === true) {
 			$this->onRunJob();
 			$this->onAfterRun();
 			$this->onCompleted();
-- 
GitLab


From 20fd2cce482389d5c80a78a9f247c10562177a48 Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Mon, 2 Sep 2019 14:15:54 +0200
Subject: [PATCH 030/242] Implemented #5375 Add WebDAV functions to remoting
 API

---
 interface/lib/classes/remote.d/sites.inc.php | 50 ++++++++++++++++++++
 interface/web/sites/lib/remote.conf.php      |  1 +
 2 files changed, 51 insertions(+)

diff --git a/interface/lib/classes/remote.d/sites.inc.php b/interface/lib/classes/remote.d/sites.inc.php
index a2f15d6f9d..59c2e371f3 100644
--- a/interface/lib/classes/remote.d/sites.inc.php
+++ b/interface/lib/classes/remote.d/sites.inc.php
@@ -1017,6 +1017,56 @@ class remoting_sites extends remoting {
 		return $app->quota_lib->get_databasequota_data($client_id, false);
 	}
 	
+	// ----------------------------------------------------------------------------------------------------------
+
+	//* Get record details
+	public function sites_webdav_user_get($session_id, $primary_id)
+	{
+		global $app;
+
+		if(!$this->checkPerm($session_id, 'sites_webdav_user_get')) {
+			throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.');
+			return false;
+		}
+		$app->uses('remoting_lib');
+		$app->remoting_lib->loadFormDef('../sites/form/webdav_user.tform.php');
+		return $app->remoting_lib->getDataRecord($primary_id);
+	}
+
+	//* Add a record
+	public function sites_webdav_user_add($session_id, $client_id, $params)
+	{
+		if(!$this->checkPerm($session_id, 'sites_webdav_user_add')) {
+			throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.');
+			return false;
+		}
+		return $this->insertQuery('../sites/form/webdav_user.tform.php', $client_id, $params);
+	}
+
+	//* Update a record
+	public function sites_webdav_user_update($session_id, $client_id, $primary_id, $params)
+	{
+		if(!$this->checkPerm($session_id, 'sites_webdav_user_update')) {
+			throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.');
+			return false;
+		}
+		$affected_rows = $this->updateQuery('../sites/form/webdav_user.tform.php', $client_id, $primary_id, $params);
+		return $affected_rows;
+	}
+
+	//* Delete a record
+	public function sites_webdav_user_delete($session_id, $primary_id)
+	{
+		global $app;
+		if(!$this->checkPerm($session_id, 'sites_webdav_user_delete')) {
+			throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.');
+			return false;
+		}
+
+		$affected_rows = $this->deleteQuery('../sites/form/webdav_user.tform.php', $primary_id);
+		return $affected_rows;
+	}
+	
 	
 }
 
diff --git a/interface/web/sites/lib/remote.conf.php b/interface/web/sites/lib/remote.conf.php
index a9ef3236b7..19a48e3ca5 100644
--- a/interface/web/sites/lib/remote.conf.php
+++ b/interface/web/sites/lib/remote.conf.php
@@ -9,4 +9,5 @@ $function_list['sites_web_domain_backup'] = 'Sites Backup functions';
 $function_list['sites_web_aliasdomain_get,sites_web_aliasdomain_add,sites_web_aliasdomain_update,sites_web_aliasdomain_delete'] = 'Sites Aliasdomain functions';
 $function_list['sites_web_subdomain_get,sites_web_subdomain_add,sites_web_subdomain_update,sites_web_subdomain_delete'] = 'Sites Subdomain functions';
 $function_list['sites_aps_update_package_list,sites_aps_available_packages_list,sites_aps_change_package_status,sites_aps_install_package,sites_aps_get_package_details,sites_aps_get_package_file,sites_aps_get_package_settings,sites_aps_instance_get,sites_aps_instance_delete'] = 'Sites APS functions';
+$function_list['sites_webdav_user_get,sites_webdav_user_add,sites_webdav_user_update,sites_webdav_user_delete'] = 'Sites WebDAV-User functions';
 ?>
-- 
GitLab


From 80e4c48f17672b3791d744ce38a17c43ea61f7a1 Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Mon, 2 Sep 2019 14:25:15 +0200
Subject: [PATCH 031/242] #5383 Updated Czech translation

---
 interface/lib/lang/cz.lng                     |  2 +-
 .../web/admin/lib/lang/cz_server_php.lng      |  2 +-
 .../web/admin/lib/lang/cz_server_php_list.lng |  2 +-
 .../web/admin/lib/lang/cz_system_config.lng   | 16 +++----
 .../web/client/lib/lang/cz_clients_list.lng   |  6 +--
 .../lib/lang/cz_dashlet_invoices.lng          |  2 +-
 .../dashboard/lib/lang/cz_dashlet_limits.lng  |  8 ++--
 interface/web/dns/lib/lang/cz_dns_caa.lng     | 32 +++++++-------
 interface/web/dns/lib/lang/cz_dns_dmarc.lng   |  4 +-
 interface/web/dns/lib/lang/cz_dns_ds.lng      |  4 +-
 interface/web/dns/lib/lang/cz_dns_import.lng  |  2 +-
 interface/web/dns/lib/lang/cz_dns_loc.lng     |  4 +-
 interface/web/dns/lib/lang/cz_dns_soa.lng     |  2 +-
 interface/web/dns/lib/lang/cz_dns_spf.lng     |  4 +-
 interface/web/dns/lib/lang/cz_dns_tlsa.lng    |  4 +-
 interface/web/dns/lib/lang/cz_dns_wizard.lng  |  2 +-
 .../web/mail/lib/lang/cz_mail_backup_list.lng | 12 ++---
 interface/web/monitor/lib/lang/cz.lng         |  2 +-
 .../lib/lang/cz_dataloghistory_list.lng       | 12 ++---
 .../lib/lang/cz_dataloghistory_undo.lng       |  4 +-
 .../lib/lang/cz_dataloghistory_view.lng       | 44 +++++++++----------
 .../sites/lib/lang/cz_aps_instances_list.lng  |  2 +-
 .../web/sites/lib/lang/cz_web_aliasdomain.lng |  2 +-
 .../web/sites/lib/lang/cz_web_backup_list.lng |  4 +-
 .../web/sites/lib/lang/cz_web_childdomain.lng |  2 +-
 .../sites/lib/lang/cz_web_vhost_domain.lng    | 10 ++---
 .../sites/lib/lang/cz_web_vhost_subdomain.lng |  2 +-
 27 files changed, 96 insertions(+), 96 deletions(-)

diff --git a/interface/lib/lang/cz.lng b/interface/lib/lang/cz.lng
index 6d95c1249f..fdf9053dae 100644
--- a/interface/lib/lang/cz.lng
+++ b/interface/lib/lang/cz.lng
@@ -33,7 +33,7 @@ $wb['top_menu_monitor'] = 'Monitor';
 $wb['top_menu_sites'] = 'Stránky';
 $wb['top_menu_dns'] = 'DNS';
 $wb['top_menu_tools'] = 'Nástroje';
-$wb['top_menu_help'] = 'Pomoc';
+$wb['top_menu_help'] = 'Podpora';
 $wb['toolsarea_head_txt'] = 'Nástroje';
 $wb['top_menu_billing'] = 'Fakturace';
 $wb['top_menu_domain'] = 'Doména';
diff --git a/interface/web/admin/lib/lang/cz_server_php.lng b/interface/web/admin/lib/lang/cz_server_php.lng
index 615431c355..e326870340 100644
--- a/interface/web/admin/lib/lang/cz_server_php.lng
+++ b/interface/web/admin/lib/lang/cz_server_php.lng
@@ -13,5 +13,5 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Cesta k php.ini adresáři';
 $wb['php_fpm_init_script_txt'] = 'Cesta k PHP-FPM init script';
 $wb['php_fpm_ini_dir_txt'] = 'Cesta k php.ini adresáři';
 $wb['php_fpm_pool_dir_txt'] = 'Cesta k PHP-FPM pool adresáři';
-$wb['active_txt'] = 'Active';
+$wb['active_txt'] = 'Aktivní';
 ?>
diff --git a/interface/web/admin/lib/lang/cz_server_php_list.lng b/interface/web/admin/lib/lang/cz_server_php_list.lng
index f79d482190..abe4f750ff 100644
--- a/interface/web/admin/lib/lang/cz_server_php_list.lng
+++ b/interface/web/admin/lib/lang/cz_server_php_list.lng
@@ -4,5 +4,5 @@ $wb['server_id_txt'] = 'Server';
 $wb['add_new_record_txt'] = 'Přidat verzi PHP';
 $wb['client_id_txt'] = 'Klient';
 $wb['name_txt'] = 'Verze PHP';
-$wb['active_txt'] = 'Active';
+$wb['active_txt'] = 'Aktivní';
 ?>
diff --git a/interface/web/admin/lib/lang/cz_system_config.lng b/interface/web/admin/lib/lang/cz_system_config.lng
index a0abf26410..3660e1b689 100644
--- a/interface/web/admin/lib/lang/cz_system_config.lng
+++ b/interface/web/admin/lib/lang/cz_system_config.lng
@@ -77,17 +77,17 @@ $wb['default_dnsserver_txt'] = 'Výchozí DNS server';
 $wb['default_slave_dnsserver_txt'] = 'Výchozí sekundární DNS server';
 $wb['default_dbserver_txt'] = 'Výchozí databázový server';
 $wb['company_name_txt'] = 'Název společnosti v panelu (listu) webového prohlížeče';
-$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites';
+$wb['reseller_can_use_options_txt'] = 'Distributor (prodejce) může použít kartu možností pro weby.';
 $wb['custom_login_text_txt'] = 'Vlastní text na přihlašovací stránce';
 $wb['custom_login_link_txt'] = 'Vlastní odkaz (URL) na přihlašovací stránce (vlastní text)';
 $wb['login_link_error_regex'] = 'Neplatný formát URL pro vlastní odkaz na přihlašovací stránce';
-$wb['ca_name_txt'] = 'Name';
-$wb['ca_issue_txt'] = 'Issue';
-$wb['ca_wildcard_txt'] = 'Use Wildcard';
-$wb['ca_critical_txt'] = 'Strict Check';
+$wb['ca_name_txt'] = 'Název vydavatele';
+$wb['ca_issue_txt'] = 'Doména vydavatele';
+$wb['ca_wildcard_txt'] = 'Použít Wildcard (*)';
+$wb['ca_critical_txt'] = 'Přísná kontrola';
 $wb['ca_iodef_txt'] = 'iodef';
-$wb['active_txt'] = 'Aktive';
-$wb['btn_save_txt'] = 'Save';
-$wb['btn_cancel_txt'] = 'Cancel';
+$wb['active_txt'] = 'Aktivní';
+$wb['btn_save_txt'] = 'Uložit';
+$wb['btn_cancel_txt'] = 'Zrušit';
 $wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
 ?>
diff --git a/interface/web/client/lib/lang/cz_clients_list.lng b/interface/web/client/lib/lang/cz_clients_list.lng
index 8cdabf2696..270da3674d 100644
--- a/interface/web/client/lib/lang/cz_clients_list.lng
+++ b/interface/web/client/lib/lang/cz_clients_list.lng
@@ -8,7 +8,7 @@ $wb['country_txt'] = 'Stát';
 $wb['add_new_record_txt'] = 'Vytvořit klienta';
 $wb['username_txt'] = 'Uživatelské jméno';
 $wb['customer_no_txt'] = 'Zákaznické číslo';
-$wb['locked_txt'] = 'Locked';
-$wb['yes_txt'] = 'Yes';
-$wb['no_txt'] = 'No';
+$wb['locked_txt'] = 'Zamčené';
+$wb['yes_txt'] = 'Ano';
+$wb['no_txt'] = 'Ne';
 ?>
diff --git a/interface/web/dashboard/lib/lang/cz_dashlet_invoices.lng b/interface/web/dashboard/lib/lang/cz_dashlet_invoices.lng
index 9666ed2b08..ab093825c6 100644
--- a/interface/web/dashboard/lib/lang/cz_dashlet_invoices.lng
+++ b/interface/web/dashboard/lib/lang/cz_dashlet_invoices.lng
@@ -3,7 +3,7 @@ $wb['invoices_txt'] = 'Invoices';
 $wb['invoice_no_txt'] = 'Invoice No.';
 $wb['amount_txt'] = 'Amount';
 $wb['date_txt'] = 'Datum';
-$wb['invoice_status_txt'] = 'Status';
+$wb['invoice_status_txt'] = 'Stav';
 $wb['no_invoices_txt'] = 'No Invoices available.';
 $wb['paid_txt'] = 'Paid';
 $wb['unpaid_txt'] = 'Unpaid';
diff --git a/interface/web/dashboard/lib/lang/cz_dashlet_limits.lng b/interface/web/dashboard/lib/lang/cz_dashlet_limits.lng
index d322823e6b..a7aecc4a53 100644
--- a/interface/web/dashboard/lib/lang/cz_dashlet_limits.lng
+++ b/interface/web/dashboard/lib/lang/cz_dashlet_limits.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['limits_txt'] = 'Limity účtu';
+$wb['limits_txt'] = 'Limity účtů';
 $wb['of_txt'] = 'z';
 $wb['unlimited_txt'] = 'neomezeno';
 $wb['limit_maildomain_txt'] = 'Počet e-mailových domén';
@@ -28,7 +28,7 @@ $wb['limit_client_txt'] = 'Počet klientů';
 $wb['limit_database_txt'] = 'Počet databází';
 $wb['limit_mailmailinglist_txt'] = 'Počet e-mailových konferencí';
 $wb['limit_domain_txt'] = 'Počet domén';
-$wb['limit_mailquota_txt'] = 'Assigned mailbox quota';
-$wb['limit_web_quota_txt'] = 'Assigned web quota';
-$wb['limit_database_quota_txt'] = 'Assigned database quota';
+$wb['limit_mailquota_txt'] = 'Přiřazená e-mailová kvóta';
+$wb['limit_web_quota_txt'] = 'Přiřazená webová kvóta';
+$wb['limit_database_quota_txt'] = 'Přiřazená databázová kvóta';
 ?>
diff --git a/interface/web/dns/lib/lang/cz_dns_caa.lng b/interface/web/dns/lib/lang/cz_dns_caa.lng
index 973a97ceb6..f4ba690c5a 100644
--- a/interface/web/dns/lib/lang/cz_dns_caa.lng
+++ b/interface/web/dns/lib/lang/cz_dns_caa.lng
@@ -1,19 +1,19 @@
 <?php
-$wb['ca_list_txt'] = 'Certifiction Authority';
-$wb['ca_domain_txt'] = 'Domain';
-$wb['ca_hostname_txt'] = 'Additional Hostnamen';
-$wb['ca_hostname_note_txt'] = '(Sepearated list with commas - empty for all hostnames)';
-$wb['ca_options_txt'] = 'Additional Options';
-$wb['ca_options_note_txt'] = 'requested by the CA (Sepearated list with commas)';
-$wb['ca_wildcard_txt'] = 'Use Wildcard SSL';
-$wb['ca_critical_txt'] = 'Strict check';
+$wb['ca_list_txt'] = 'Certifikační autorita';
+$wb['ca_domain_txt'] = 'Doména';
+$wb['ca_hostname_txt'] = 'Omezit na názvy hostitelů';
+$wb['ca_hostname_note_txt'] = '(Oddělený seznam s čárkami - prázdný pro všechna jména hostitelů)';
+$wb['ca_options_txt'] = 'Další možnosti názvu hostitele';
+$wb['ca_options_note_txt'] = 'requested by the CA (Oddělený seznam s čárkami)';
+$wb['ca_wildcard_txt'] = 'Použití Wildcard (*) SSL';
+$wb['ca_critical_txt'] = 'Přísná kontrola';
 $wb['ttl_txt'] = 'TTL';
-$wb['active_txt'] = 'Active';
-$wb['select_txt'] = 'Select Certifiction Authority';
-$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
-$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
-$wb['ca_error_txt'] = 'No Certifiction Authority selected';
-$wb['caa_exists_error'] = 'CAA Record already exists';
-$wb['ca_option_error'] = 'Invalid format for additional options; OPTION=VALUE';
-$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['active_txt'] = 'Aktivní';
+$wb['select_txt'] = 'Vyberte certifikační autoritu';
+$wb['no_zone_perm'] = 'Nemáte oprávnění přidat záznam do této zóny DNS.';
+$wb['limit_dns_record_txt'] = 'Byl dosažen max. počet DNS záznamů pro váš účet.';
+$wb['ca_error_txt'] = 'Nebyla vybrána žádná certifikační autorita';
+$wb['caa_exists_error'] = 'CAA záznam již existuje';
+$wb['ca_option_error'] = 'Neplatný formát pro další možnosti; OPTION=VALUE';
+$wb['ttl_range_error'] = 'Min. TTL čas je 60 sekund.';
 ?>
diff --git a/interface/web/dns/lib/lang/cz_dns_dmarc.lng b/interface/web/dns/lib/lang/cz_dns_dmarc.lng
index c5952552a6..c4c3bb4f24 100644
--- a/interface/web/dns/lib/lang/cz_dns_dmarc.lng
+++ b/interface/web/dns/lib/lang/cz_dns_dmarc.lng
@@ -44,7 +44,7 @@ $wb['dmarc_more_spf_txt'] = 'More than one active SPF Record';
 $wb['dmarc_invalid_email_txt'] = 'Neplatný e-mail';
 $wb['dmarc_empty_txt'] = 'DMARC Record empty - specify at least one option';
 $wb['record_exists_txt'] = 'DNS záznam již existuje';
-$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['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['ttl_range_error'] = 'Min. TTL doba je 60 sekund.';
 ?>
diff --git a/interface/web/dns/lib/lang/cz_dns_ds.lng b/interface/web/dns/lib/lang/cz_dns_ds.lng
index 3d25095d3b..f7dd779ef8 100644
--- a/interface/web/dns/lib/lang/cz_dns_ds.lng
+++ b/interface/web/dns/lib/lang/cz_dns_ds.lng
@@ -6,8 +6,8 @@ $wb['type_txt'] = 'Typ';
 $wb['data_txt'] = 'Data';
 $wb['ttl_txt'] = 'TTL';
 $wb['active_txt'] = 'Aktivní';
-$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['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';
diff --git a/interface/web/dns/lib/lang/cz_dns_import.lng b/interface/web/dns/lib/lang/cz_dns_import.lng
index 3b41baa1be..fc90d3cf3c 100644
--- a/interface/web/dns/lib/lang/cz_dns_import.lng
+++ b/interface/web/dns/lib/lang/cz_dns_import.lng
@@ -12,5 +12,5 @@ $wb['title'] = 'Importovat soubory zón';
 $wb['no_file_uploaded_error'] = 'Nelze odeslat DNS zonový soubor';
 $wb['zone_file_import_txt'] = 'Importovat DNS zonový soubor';
 $wb['error_no_server_id'] = 'No server provided.';
-$wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.';
+$wb['error_not_allowed_server_id'] = 'Vybraný server není pro tento účet povolen.';
 ?>
diff --git a/interface/web/dns/lib/lang/cz_dns_loc.lng b/interface/web/dns/lib/lang/cz_dns_loc.lng
index 90ddd3533b..4ed9018152 100644
--- a/interface/web/dns/lib/lang/cz_dns_loc.lng
+++ b/interface/web/dns/lib/lang/cz_dns_loc.lng
@@ -6,8 +6,8 @@ $wb['type_txt'] = 'Typ';
 $wb['data_txt'] = 'Data';
 $wb['ttl_txt'] = 'TTL';
 $wb['active_txt'] = 'Aktivní';
-$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['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';
diff --git a/interface/web/dns/lib/lang/cz_dns_soa.lng b/interface/web/dns/lib/lang/cz_dns_soa.lng
index 7dfbb0e91b..5e4a0c2bb3 100644
--- a/interface/web/dns/lib/lang/cz_dns_soa.lng
+++ b/interface/web/dns/lib/lang/cz_dns_soa.lng
@@ -38,7 +38,7 @@ $wb['xfer_error_regex'] = 'Také oznámí: Prosím, použijte IP adresu.';
 $wb['dnssec_info_txt'] = 'DNSSEC DS-Data for registry';
 $wb['dnssec_wanted_txt'] = 'Podepsat zónu (DNSSEC)';
 $wb['dnssec_wanted_info'] = 'Když deaktivujete DNSSEC klíče nebudou odstraněny, ale DNS záznamy (zóna) již nebudou propagovány v podepsaném formátu. Pokud používáte PowerDNS, budou klíče WILL vymazány!';
-$wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.';
+$wb['error_not_allowed_server_id'] = 'Vybraný server není pro tento účet povolen.';
 $wb['soa_cannot_be_changed_txt'] = 'Die Zone (SOA) kann nicht verändert werden. Bitte kontaktieren Sie ihren Administrator, um die Zone zu ändern.';
 $wb['configuration_error_txt'] = 'CONFIGURATION ERROR';
 ?>
diff --git a/interface/web/dns/lib/lang/cz_dns_spf.lng b/interface/web/dns/lib/lang/cz_dns_spf.lng
index 755e01f11e..3086454c34 100644
--- a/interface/web/dns/lib/lang/cz_dns_spf.lng
+++ b/interface/web/dns/lib/lang/cz_dns_spf.lng
@@ -19,7 +19,7 @@ $wb['spf_invalid_domain_txt'] = 'Neplatné doménové jméno';
 $wb['ttl_txt'] = 'TTL';
 $wb['active_txt'] = 'Aktivní';
 $wb['record_exists_txt'] = 'DNS záznam již existuje';
-$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['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['ttl_range_error'] = 'Min. TTL doba je 60 sekund.';
 ?>
diff --git a/interface/web/dns/lib/lang/cz_dns_tlsa.lng b/interface/web/dns/lib/lang/cz_dns_tlsa.lng
index b92da1d45b..3891ad37c7 100644
--- a/interface/web/dns/lib/lang/cz_dns_tlsa.lng
+++ b/interface/web/dns/lib/lang/cz_dns_tlsa.lng
@@ -6,8 +6,8 @@ $wb['type_txt'] = 'Typ';
 $wb['data_txt'] = 'TLSA-Data';
 $wb['ttl_txt'] = 'TTL';
 $wb['active_txt'] = 'Aktivní';
-$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['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'] = 'The hostname has the wrong format. Correct: _&lt;port&gt;._(tcp|udp).&lt;hostname&gt;';
 $wb['data_error_empty'] = 'TLSA-Data empty';
diff --git a/interface/web/dns/lib/lang/cz_dns_wizard.lng b/interface/web/dns/lib/lang/cz_dns_wizard.lng
index 548b90d702..a4a1ddf539 100644
--- a/interface/web/dns/lib/lang/cz_dns_wizard.lng
+++ b/interface/web/dns/lib/lang/cz_dns_wizard.lng
@@ -39,7 +39,7 @@ $wb['list_head_txt'] = 'Průvodce vytvořením DNS zóny';
 $wb['list_desc_txt'] = 'Vytvoření DNS zóny pomocí průvodce';
 $wb['dkim_txt'] = 'DKIM povolen';
 $wb['error_no_server_id'] = 'No server provided.';
-$wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.';
+$wb['error_not_allowed_server_id'] = 'Vybraný server není pro tento účet povolen.';
 $wb['dnssec_txt'] = 'Podepsat zónu (DNSSEC)';
 $wb['limit_dns_zone_txt'] = 'The max. number of DNS zones for your account is reached.';
 ?>
diff --git a/interface/web/mail/lib/lang/cz_mail_backup_list.lng b/interface/web/mail/lib/lang/cz_mail_backup_list.lng
index 91ea1ad49f..d4f941a4cd 100644
--- a/interface/web/mail/lib/lang/cz_mail_backup_list.lng
+++ b/interface/web/mail/lib/lang/cz_mail_backup_list.lng
@@ -1,16 +1,16 @@
 <?php
-$wb['list_head_txt'] = 'Stávající zálohy';
+$wb['list_head_txt'] = 'Dostupné zálohy';
 $wb['date_txt'] = 'Datum';
 $wb['backup_type_txt'] = 'Typ';
 $wb['filename_txt'] = 'Záloha souborů';
 $wb['restore_backup_txt'] = 'Obnovit';
-$wb['restore_info_txt'] = 'Restore of the backup has been started. This action takes several minutes to be completed.';
-$wb['restore_confirm_txt'] = 'Restoring may overwrite existing files in your mailbox. Do you really want to restore this backup?';
-$wb['download_pending_txt'] = 'There is already a pending backup download job.';
-$wb['restore_pending_txt'] = 'There is already a pending backup restore job.';
+$wb['restore_info_txt'] = 'Obnovení zálohy bylo zahájeno. Dokončení této akce může trvat několik minut.';
+$wb['restore_confirm_txt'] = 'Obnovení může přepsat existující soubory ve vaší poštovní schránce. Opravdu chcete tuto zálohu obnovit ?';
+$wb['download_pending_txt'] = 'Již existuje čekající úloha pro stažení zálohy.';
+$wb['restore_pending_txt'] = 'Již existuje čekající úloha pro obnovu zálohy.';
 $wb['delete_backup_txt'] = 'Smazat zálohu';
 $wb['delete_info_txt'] = 'Bylo zahájeno odstranění zálohy. Tato akce může trvat několik minut než bude dokončena.';
 $wb['delete_confirm_txt'] = 'Opravdu chcete smazat tuto zálohu ?';
-$wb['delete_pending_txt'] = 'There is already a pending backup delete job.';
+$wb['delete_pending_txt'] = 'Již existuje čekající úloha pro odstranění zálohy.';
 $wb['filesize_txt'] = 'Velikost souboru';
 ?>
diff --git a/interface/web/monitor/lib/lang/cz.lng b/interface/web/monitor/lib/lang/cz.lng
index 9e054aacf2..be2d9eadbb 100644
--- a/interface/web/monitor/lib/lang/cz.lng
+++ b/interface/web/monitor/lib/lang/cz.lng
@@ -161,5 +161,5 @@ $wb['monitor_database_client_txt'] = 'Klient';
 $wb['monitor_database_domain_txt'] = 'Doména';
 $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:';
 $wb['monitor_title_mongodb_txt'] = 'MongoDB Log';
-$wb['Show Data Log History'] = 'Show Data Log History';
+$wb['Show Data Log History'] = 'Zobrazit historii datového logu';
 ?>
diff --git a/interface/web/monitor/lib/lang/cz_dataloghistory_list.lng b/interface/web/monitor/lib/lang/cz_dataloghistory_list.lng
index 9f9afd6347..ce89af1a88 100644
--- a/interface/web/monitor/lib/lang/cz_dataloghistory_list.lng
+++ b/interface/web/monitor/lib/lang/cz_dataloghistory_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["list_head_txt"] = 'Datalog History';
-$wb["tstamp_txt"] = 'Date';
-$wb["server_id_txt"] = 'Server';
-$wb["dbtable_txt"] = 'DB Table';
-$wb["action_txt"] = 'Action';
-$wb["status_txt"] = 'Status';
+$wb['list_head_txt'] = 'Protokol historie datového logu';
+$wb['tstamp_txt'] = 'Datum';
+$wb['server_id_txt'] = 'Server';
+$wb['dbtable_txt'] = 'DB Tabulka';
+$wb['action_txt'] = 'Akce';
+$wb['status_txt'] = 'Stav';
 ?>
diff --git a/interface/web/monitor/lib/lang/cz_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/cz_dataloghistory_undo.lng
index 0e040a3e77..0d25364ec1 100644
--- a/interface/web/monitor/lib/lang/cz_dataloghistory_undo.lng
+++ b/interface/web/monitor/lib/lang/cz_dataloghistory_undo.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['list_head_txt'] = 'Data Log History Entry';
+$wb['list_head_txt'] = 'Záznam historie datového logu';
 $wb['success_txt'] = 'Undo successful';
 $wb['error_txt'] = 'Error during undo: Record does not exist anymore';
 $wb['error_undelete_txt'] = 'Error during undelete: Record with primary id already existing.';
-$wb['btn_cancel_txt'] = 'Back';
+$wb['btn_cancel_txt'] = 'Zpět';
 ?>
diff --git a/interface/web/monitor/lib/lang/cz_dataloghistory_view.lng b/interface/web/monitor/lib/lang/cz_dataloghistory_view.lng
index df9ddd286f..1f20cf12d4 100644
--- a/interface/web/monitor/lib/lang/cz_dataloghistory_view.lng
+++ b/interface/web/monitor/lib/lang/cz_dataloghistory_view.lng
@@ -1,26 +1,26 @@
 <?php
-$wb['i'] = 'Insert';
-$wb['u'] = 'Update';
-$wb['d'] = 'Delete';
-$wb['list_head_txt'] = 'Data Log History Entry';
+$wb['i'] = 'Vložit';
+$wb['u'] = 'Aktualizace';
+$wb['d'] = 'Odstranit';
+$wb['list_head_txt'] = 'Záznam historie datového logu';
 $wb['id_txt'] = 'ID';
-$wb['timestamp_txt'] = 'Timestamp';
-$wb['table_txt'] = 'Table';
-$wb['action_txt'] = 'Action';
-$wb['session_id_txt'] = 'Session ID';
-$wb['fields_txt'] = 'Fields';
-$wb['fields_inserted_txt'] = 'Inserted Fields';
-$wb['fields_updated_txt'] = 'Updated Fields';
-$wb['fields_deleted_txt'] = 'Deleted Fields';
-$wb['no_changes_txt'] = 'No changes (re-sync)';
+$wb['timestamp_txt'] = 'Časové razítko';
+$wb['table_txt'] = 'Tabulka';
+$wb['action_txt'] = 'Akce';
+$wb['session_id_txt'] = 'ID Relace';
+$wb['fields_txt'] = 'Pole';
+$wb['fields_inserted_txt'] = 'Vložená pole';
+$wb['fields_updated_txt'] = 'Aktualizovaná pole';
+$wb['fields_deleted_txt'] = 'Odstraněná pole';
+$wb['no_changes_txt'] = 'Žádné změny (re-sync)';
 $wb['is_diff_txt'] = 'The differences are highlighted';
-$wb['is_diff_inserts_txt'] = 'Insertions';
-$wb['is_diff_deletes_txt'] = 'Deletions';
-$wb['field_txt'] = 'Field';
-$wb['value_txt'] = 'Value';
-$wb['old_txt'] = 'Old';
-$wb['new_txt'] = 'New';
-$wb['btn_cancel_txt'] = 'Back';
-$wb['undo_txt'] = 'Undo action';
-$wb['undo_confirmation_txt'] = 'Do you really want to undo this action?';
+$wb['is_diff_inserts_txt'] = 'Vložení';
+$wb['is_diff_deletes_txt'] = 'Odstranění';
+$wb['field_txt'] = 'Pole';
+$wb['value_txt'] = 'Hodnota';
+$wb['old_txt'] = 'Starý';
+$wb['new_txt'] = 'Nový';
+$wb['btn_cancel_txt'] = 'Zpět';
+$wb['undo_txt'] = 'Vrátit akci';
+$wb['undo_confirmation_txt'] = 'Opravdu chcete tuto akci vrátit zpět ?';
 ?>
diff --git a/interface/web/sites/lib/lang/cz_aps_instances_list.lng b/interface/web/sites/lib/lang/cz_aps_instances_list.lng
index 8d712878d7..db4494af02 100644
--- a/interface/web/sites/lib/lang/cz_aps_instances_list.lng
+++ b/interface/web/sites/lib/lang/cz_aps_instances_list.lng
@@ -3,7 +3,7 @@ $wb['list_head_txt'] = 'Nainstalované balíčky';
 $wb['name_txt'] = 'Jméno';
 $wb['version_txt'] = 'Verze';
 $wb['customer_txt'] = 'Klient';
-$wb['status_txt'] = 'Status';
+$wb['status_txt'] = 'Stav';
 $wb['install_location_txt'] = 'Umístění instalace';
 $wb['pkg_delete_confirmation'] = 'Opravdu chcete smazat tuto instalaci ?';
 $wb['filter_txt'] = 'Hledat';
diff --git a/interface/web/sites/lib/lang/cz_web_aliasdomain.lng b/interface/web/sites/lib/lang/cz_web_aliasdomain.lng
index 57b920156d..0f8d3e5dec 100644
--- a/interface/web/sites/lib/lang/cz_web_aliasdomain.lng
+++ b/interface/web/sites/lib/lang/cz_web_aliasdomain.lng
@@ -95,7 +95,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be
 $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.';
 $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.';
 $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
-$wb['fastcgi_php_version_txt'] = 'PHP Version';
+$wb['fastcgi_php_version_txt'] = 'PHP Verze';
 $wb['pm_txt'] = 'PHP-FPM Process Manager';
 $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
 $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
diff --git a/interface/web/sites/lib/lang/cz_web_backup_list.lng b/interface/web/sites/lib/lang/cz_web_backup_list.lng
index 9674e6197a..d30e41d961 100644
--- a/interface/web/sites/lib/lang/cz_web_backup_list.lng
+++ b/interface/web/sites/lib/lang/cz_web_backup_list.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['list_head_txt'] = 'Stávající zálohy';
+$wb['list_head_txt'] = 'Dostupné zálohy';
 $wb['date_txt'] = 'Datum';
 $wb['backup_type_txt'] = 'Verze';
 $wb['filename_txt'] = 'Záloha souborů';
@@ -16,6 +16,6 @@ $wb['filesize_txt'] = 'Velikost souboru';
 $wb['delete_backup_txt'] = 'Smazat zálohu';
 $wb['delete_info_txt'] = 'Bylo zahájeno odstranění zálohy. Tato akce může trvat několik minut než bude dokončena.';
 $wb['delete_confirm_txt'] = 'Opravdu chcete smazat tuto zálohu ?';
-$wb['delete_pending_txt'] = 'There is already a pending backup delete job.';
+$wb['delete_pending_txt'] = 'Již existuje čekající úloha pro odstranění zálohy.';
 $wb['backup_type_mongodb'] = 'MongoDB Database';
 ?>
diff --git a/interface/web/sites/lib/lang/cz_web_childdomain.lng b/interface/web/sites/lib/lang/cz_web_childdomain.lng
index e39dfc12ee..5a5091c89a 100644
--- a/interface/web/sites/lib/lang/cz_web_childdomain.lng
+++ b/interface/web/sites/lib/lang/cz_web_childdomain.lng
@@ -100,7 +100,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be
 $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.';
 $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.';
 $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
-$wb['fastcgi_php_version_txt'] = 'PHP Version';
+$wb['fastcgi_php_version_txt'] = 'PHP Verze';
 $wb['pm_txt'] = 'PHP-FPM Process Manager';
 $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
 $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
diff --git a/interface/web/sites/lib/lang/cz_web_vhost_domain.lng b/interface/web/sites/lib/lang/cz_web_vhost_domain.lng
index 269b6b5862..deaa3269c4 100644
--- a/interface/web/sites/lib/lang/cz_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/cz_web_vhost_domain.lng
@@ -130,13 +130,13 @@ $wb['variables_txt'] = 'Proměnné';
 $wb['added_by_txt'] = 'Kdo vytvořil účet';
 $wb['added_date_txt'] = 'Datum vytvoření účtu';
 $wb['backup_excludes_txt'] = 'Vyloučené adresáře';
-$wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. Example: web/cache/*,web/backup)';
-$wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.';
-$wb['server_chosen_not_ok'] = 'The selected server is not allowed for this account.';
-$wb['subdomain_error_empty'] = 'The subdommain field is empty or contains invalid characters.';
+$wb['backup_excludes_note_txt'] = '(Oddělte více adresářů čárkami. Příklad: web/cache/*,web/backup)';
+$wb['backup_excludes_error_regex'] = 'Vyloučené adresáře obsahují neplatné znaky.';
+$wb['server_chosen_not_ok'] = 'Vybraný server není pro tento účet povolen.';
+$wb['subdomain_error_empty'] = 'Pole subdomény je prázdné nebo obsahuje neplatné znaky.';
 $wb['btn_save_txt'] = 'Uložit';
 $wb['btn_cancel_txt'] = 'Zrušit';
-$wb['enable_spdy_txt'] = 'Enable SPDY/HTTP2';
+$wb['enable_spdy_txt'] = 'Povolit SPDY / HTTP2';
 $wb['load_client_data_txt'] = 'Nahrát údaje z podrobností registrovaného klienta';
 $wb['load_my_data_txt'] = 'Load my contact details';
 $wb['reset_client_data_txt'] = 'Obnovit údaje (resetovat)';
diff --git a/interface/web/sites/lib/lang/cz_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/cz_web_vhost_subdomain.lng
index 2b6f3c77d2..268368c139 100644
--- a/interface/web/sites/lib/lang/cz_web_vhost_subdomain.lng
+++ b/interface/web/sites/lib/lang/cz_web_vhost_subdomain.lng
@@ -123,7 +123,7 @@ $wb['variables_txt'] = 'Proměnné';
 $wb['backup_excludes_txt'] = 'Vyloučené adresáře';
 $wb['backup_excludes_note_txt'] = '(Oddělte více adresářů čárkami. Vzor: web/cache/*,web/backup)';
 $wb['backup_excludes_error_regex'] = 'Vyloučené adresáře obsahují neplatné znaky.';
-$wb['subdomain_error_empty'] = 'The subdommain field is empty or contains invalid characters.';
+$wb['subdomain_error_empty'] = 'Pole subdomény je prázdné nebo obsahuje neplatné znaky.';
 $wb['http_port_txt'] = 'HTTP Port';
 $wb['https_port_txt'] = 'HTTPS Port';
 $wb['http_port_error_regex'] = 'HTTP Port invalid.';
-- 
GitLab


From 90f3c771c5b42c904d9b15f15f7dbcce34fe5430 Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Mon, 2 Sep 2019 14:53:34 +0200
Subject: [PATCH 032/242] - fixed rspamd handling of user settings files -
 removed separate rspamd greylisting setting for policy and respect mail
 user/alias/forward/catchall setting for greylisting, fixes #5379

---
 interface/web/admin/server_config_edit.php    |  14 +-
 .../web/mail/form/spamfilter_policy.tform.php |   6 -
 interface/web/mail/spamfilter_policy_edit.php |   3 -
 .../mail/templates/spamfilter_rspamd_edit.htm |   6 -
 server/conf/rspamd_users.inc.conf.master      |  56 +++--
 .../plugins-available/rspamd_plugin.inc.php   | 237 ++++++++++++------
 6 files changed, 208 insertions(+), 114 deletions(-)

diff --git a/interface/web/admin/server_config_edit.php b/interface/web/admin/server_config_edit.php
index 8a7cd770a3..f311f6b1a5 100644
--- a/interface/web/admin/server_config_edit.php
+++ b/interface/web/admin/server_config_edit.php
@@ -174,7 +174,7 @@ class page_action extends tform_actions {
 					}
 				}
 				
-				$mail_users = $app->db->queryAllRecords("SELECT * FROM mail_user WHERE server_id = ? AND (autoresponder = 'y' OR move_junk = 'y')", intval($this->id));
+				$mail_users = $app->db->queryAllRecords("SELECT * FROM mail_user WHERE server_id = ?", intval($this->id));
 				if(is_array($mail_users) && !empty($mail_users)){
 					foreach($mail_users as $mail_user){
 						if($mail_user['autoresponder'] == 'y'){
@@ -182,13 +182,21 @@ class page_action extends tform_actions {
 							$app->db->datalogUpdate('mail_user', $mail_user, 'mailuser_id', $mail_user["mailuser_id"], true);
 							$mail_user['autoresponder'] = 'y';
 							$app->db->datalogUpdate('mail_user', $mail_user, 'mailuser_id', $mail_user["mailuser_id"], true);
-						} else {
+						} elseif($mail_user['move_junk'] == 'y') {
 							$mail_user['move_junk'] = 'n';
 							$app->db->datalogUpdate('mail_user', $mail_user, 'mailuser_id', $mail_user["mailuser_id"], true);
 							$mail_user['move_junk'] = 'y';
 							$app->db->datalogUpdate('mail_user', $mail_user, 'mailuser_id', $mail_user["mailuser_id"], true);
+						} else {
+							$app->db->datalogUpdate('mail_user', $mail_user, 'mailuser_id', $mail_user["mailuser_id"], true);
 						}
-						
+					}
+				}
+				
+				$mail_forwards = $app->db->queryAllRecords("SELECT * FROM mail_forwarding WHERE server_id = ?", intval($this->id));
+				if(is_array($mail_forwards) && !empty($mail_forwards)){
+					foreach($mail_forwards as $mail_forward){
+						$app->db->datalogUpdate('mail_forwarding', $mail_forward, 'forwarding_id', $mail_forward["forwarding_id"], true);
 					}
 				}
 			}
diff --git a/interface/web/mail/form/spamfilter_policy.tform.php b/interface/web/mail/form/spamfilter_policy.tform.php
index 2205dbb651..57aa4f2bf5 100644
--- a/interface/web/mail/form/spamfilter_policy.tform.php
+++ b/interface/web/mail/form/spamfilter_policy.tform.php
@@ -471,12 +471,6 @@ $form["tabs"]['rspamd'] = array (
 		//#################################
 		// Begin Datatable fields
 		//#################################
-		'rspamd_greylisting' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'CHECKBOX',
-			'default' => 'y',
-			'value'  => array(0 => 'n', 1 => 'y')
-		),
 		'rspamd_spam_greylisting_level' => array (
 			'datatype' => 'DOUBLE',
 			'formtype' => 'TEXT',
diff --git a/interface/web/mail/spamfilter_policy_edit.php b/interface/web/mail/spamfilter_policy_edit.php
index ffc0818ffa..8226ae6048 100644
--- a/interface/web/mail/spamfilter_policy_edit.php
+++ b/interface/web/mail/spamfilter_policy_edit.php
@@ -92,9 +92,6 @@ class page_action extends tform_actions {
 		global $app;
 		
 		$record_has_changed = false;
-		if(isset($this->dataRecord['rspamd_spam_greylisting_level']) && !isset($this->dataRecord['rspamd_greylisting'])) {
-			$this->dataRecord['rspamd_greylisting'] = 'n';
-		}
 		foreach($this->dataRecord as $key => $val) {
 			if(isset($this->oldDataRecord[$key]) && @$this->oldDataRecord[$key] != $val) {
 				// Record has changed
diff --git a/interface/web/mail/templates/spamfilter_rspamd_edit.htm b/interface/web/mail/templates/spamfilter_rspamd_edit.htm
index 73472a876c..2f8ea0f451 100644
--- a/interface/web/mail/templates/spamfilter_rspamd_edit.htm
+++ b/interface/web/mail/templates/spamfilter_rspamd_edit.htm
@@ -3,12 +3,6 @@
 </div>
 <p><tmpl_var name="list_desc_txt"></p>
 
-			<div class="form-group">
-                <label class="col-sm-3 control-label">{tmpl_var name='rspamd_greylisting_txt'}</label>
-                <div class="col-sm-9">
-                    {tmpl_var name='rspamd_greylisting'}
-                </div>
-            </div>
 			<div class="form-group">
                 <label for="rspamd_spam_greylisting_level" class="col-sm-3 control-label">{tmpl_var name='rspamd_spam_greylisting_level_txt'}</label>
                 <div class="col-sm-9"><input type="text" name="rspamd_spam_greylisting_level" id="rspamd_spam_greylisting_level" value="{tmpl_var name='rspamd_spam_greylisting_level'}" class="form-control" /></div>
diff --git a/server/conf/rspamd_users.inc.conf.master b/server/conf/rspamd_users.inc.conf.master
index 43890e8135..96ba9f0838 100644
--- a/server/conf/rspamd_users.inc.conf.master
+++ b/server/conf/rspamd_users.inc.conf.master
@@ -1,39 +1,55 @@
-spamfilter_users-<tmpl_var name='record_id'> {
+<tmpl_var name='record_identifier'> {
 	priority = <tmpl_var name='priority'>;
-	<tmpl_if name='local' op='==' value='Y'>rcpt<tmpl_else>from</tmpl_if> = "<tmpl_var name='email'>";
-<tmpl_if name='spam_lover_virus_lover' op='==' value='spam_lover_AND_virus_lover'>
-	want_spam = yes;
+<tmpl_if name='from_email'>
+	from = "<tmpl_var name='from_email'>";
+</tmpl_if>
+<tmpl_if name='to_email'>
+	rcpt = "<tmpl_var name='to_email'>";
 </tmpl_if>
-<tmpl_if name='spam_lover_virus_lover' op='==' value='spam_lover_AND_NOTvirus_lover'>
+
+<tmpl_if name='spam_lover'>
+<tmpl_if name='virus_lover'>
+	want_spam = yes;
+<tmpl_else>
 	apply {
 		CLAM_VIRUS = 1999.0;
 		JUST_EICAR = 1999.0;
 		actions {
 			reject = null;
+	<tmpl_if name='greylisting'>
+		<tmpl_if name='greylisting' op='==' value='y'>
+			greylist = <tmpl_var name='greylisting_level'>;
+		<tmpl_else>
+			greylist = null;
+		</tmpl_if>
+	</tmpl_if>
 		}
 	}
-</tmpl_if>
-<tmpl_if name='spam_lover_virus_lover' op='==' value='NOTspam_lover_AND_virus_lover'>
+	</tmpl_if>
+<tmpl_else>
 	apply {
+	<tmpl_if name='virus_lover'>
 		CLAM_VIRUS = -999.0;
 		JUST_EICAR = -999.0;
-		actions {
-			<tmpl_if name='rspamd_greylisting' op='==' value='y'>greylist = <tmpl_var name='rspamd_spam_greylisting_level'>;</tmpl_if>
-			<tmpl_if name='rspamd_spam_tag_method' op='==' value='rewrite_subject'>"rewrite subject" =  <tmpl_var name='rspamd_spam_tag_level'>;</tmpl_if>
-			<tmpl_if name='rspamd_spam_tag_method' op='==' value='add_header'>"add header" =  <tmpl_var name='rspamd_spam_tag_level'>;</tmpl_if>
-			reject = <tmpl_var name='rspamd_spam_kill_level'>;
-		}
-	}
-</tmpl_if>
-<tmpl_if name='spam_lover_virus_lover' op='==' value='NOTspam_lover_AND_NOTvirus_lover'>
-	apply {
+	<tmpl_else>
 		CLAM_VIRUS = <tmpl_var name='rspamd_virus_kill_level'>;
 		JUST_EICAR = <tmpl_var name='rspamd_virus_kill_level'>;
+	</tmpl_if>
 		actions {
-			<tmpl_if name='rspamd_greylisting' op='==' value='y'>greylist = <tmpl_var name='rspamd_spam_greylisting_level'>;</tmpl_if>
-			<tmpl_if name='rspamd_spam_tag_method' op='==' value='rewrite_subject'>"rewrite subject" =  <tmpl_var name='rspamd_spam_tag_level'>;</tmpl_if>
-			<tmpl_if name='rspamd_spam_tag_method' op='==' value='add_header'>"add header" =  <tmpl_var name='rspamd_spam_tag_level'>;</tmpl_if>
+		<tmpl_if name='rspamd_spam_tag_method' op='==' value='rewrite_subject'>
+			"rewrite subject" =  <tmpl_var name='rspamd_spam_tag_level'>;
+		</tmpl_if>
+		<tmpl_if name='rspamd_spam_tag_method' op='==' value='add_header'>
+			"add header" =  <tmpl_var name='rspamd_spam_tag_level'>;
+		</tmpl_if>
 			reject = <tmpl_var name='rspamd_spam_kill_level'>;
+	<tmpl_if name='greylisting'>
+		<tmpl_if name='greylisting' op='==' value='y'>
+			greylist = <tmpl_var name='greylisting_level'>;
+		<tmpl_else>
+			greylist = null;
+		</tmpl_if>
+	</tmpl_if>
 		}
 	}
 </tmpl_if>
diff --git a/server/plugins-available/rspamd_plugin.inc.php b/server/plugins-available/rspamd_plugin.inc.php
index 7fd3ebf773..70885056d7 100644
--- a/server/plugins-available/rspamd_plugin.inc.php
+++ b/server/plugins-available/rspamd_plugin.inc.php
@@ -33,7 +33,7 @@ class rspamd_plugin {
 	var $plugin_name = 'rspamd_plugin';
 	var $class_name  = 'rspamd_plugin';
 	var $users_config_dir = '/etc/rspamd/local.d/users/';
-
+	
 	//* This function is called during ispconfig installation to determine
 	//  if a symlink shall be created for this plugin.
 	function onInstall() {
@@ -57,109 +57,195 @@ class rspamd_plugin {
 		Register for the events
 		*/
 
-		//* spamfilter_users
-		$app->plugins->registerEvent('spamfilter_users_insert', $this->plugin_name, 'spamfilter_users_insert');
-		$app->plugins->registerEvent('spamfilter_users_update', $this->plugin_name, 'spamfilter_users_update');
-		$app->plugins->registerEvent('spamfilter_users_delete', $this->plugin_name, 'spamfilter_users_delete');
-
 		//* spamfilter_wblist
 		$app->plugins->registerEvent('spamfilter_wblist_insert', $this->plugin_name, 'spamfilter_wblist_insert');
 		$app->plugins->registerEvent('spamfilter_wblist_update', $this->plugin_name, 'spamfilter_wblist_update');
 		$app->plugins->registerEvent('spamfilter_wblist_delete', $this->plugin_name, 'spamfilter_wblist_delete');
 		
+		//* global mail access filters
+		$app->plugins->registerEvent('mail_access_insert', $this->plugin_name, 'spamfilter_wblist_insert');
+		$app->plugins->registerEvent('mail_access_update', $this->plugin_name, 'spamfilter_wblist_update');
+		$app->plugins->registerEvent('mail_access_delete', $this->plugin_name, 'spamfilter_wblist_delete');
+		
 		//* server ip
 		$app->plugins->registerEvent('server_ip_insert', $this->plugin_name, 'server_ip');
 		$app->plugins->registerEvent('server_ip_update', $this->plugin_name, 'server_ip');
 		$app->plugins->registerEvent('server_ip_delete', $this->plugin_name, 'server_ip');
 		
-		//* global mail access filters
-		$app->plugins->registerEvent('mail_access_insert', $this->plugin_name, 'spamfilter_wblist_insert');
-		$app->plugins->registerEvent('mail_access_update', $this->plugin_name, 'spamfilter_wblist_update');
-		$app->plugins->registerEvent('mail_access_delete', $this->plugin_name, 'spamfilter_wblist_delete');
-	}
+		//* spamfilter_users
+		$app->plugins->registerEvent('spamfilter_users_insert', $this->plugin_name, 'user_settings_update');
+		$app->plugins->registerEvent('spamfilter_users_update', $this->plugin_name, 'user_settings_update');
+		$app->plugins->registerEvent('spamfilter_users_delete', $this->plugin_name, 'user_settings_update');
 
-	function spamfilter_users_insert($event_name, $data) {
-		$this->action = 'insert';
-		// just run the spamfilter_users_update function
-		$this->spamfilter_users_update($event_name, $data);
+		//* mail user / fwd / catchall changed (greylisting)
+		$app->plugins->registerEvent('mail_user_insert', $this->plugin_name, 'user_settings_update');
+		$app->plugins->registerEvent('mail_user_update', $this->plugin_name, 'user_settings_update');
+		$app->plugins->registerEvent('mail_user_delete', $this->plugin_name, 'user_settings_update');
+		$app->plugins->registerEvent('mail_forwarding_insert', $this->plugin_name, 'user_settings_update');
+		$app->plugins->registerEvent('mail_forwarding_update', $this->plugin_name, 'user_settings_update');
+		$app->plugins->registerEvent('mail_forwarding_delete', $this->plugin_name, 'user_settings_update');
 	}
 
-	function spamfilter_users_update($event_name, $data) {
+	function user_settings_update($event_name, $data) {
 		global $app, $conf;
+		
+		if(!is_dir('/etc/rspamd')) {
+			return;
+		}
+		
+		$use_data = 'new';
+		if(substr($event_name, -7) === 'delete') {
+			$mode = 'delete';
+			$use_data = 'old';
+		} elseif(substr($event_name, -7) === 'insert') {
+			$mode = 'insert';
+		} else {
+			$mode = 'update';
+		}
 
 		// get the config
 		$app->uses('getconf,system,functions');
 		$mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail');
-
-		if(is_dir('/etc/rspamd')) {
-			$policy = $app->db->queryOneRecord("SELECT * FROM spamfilter_policy WHERE id = ?", intval($data['new']['policy_id']));
-			
-			//* Create the config file
-			$user_file = $this->users_config_dir.'spamfilter_user_'.intval($data['new']['id']).'.conf';
 		
-			if(is_array($policy) && !empty($policy)){
-				if(!is_dir($this->users_config_dir)){
-					$app->system->mkdirpath($this->users_config_dir);
-				}
+		$type = false;
+		$identifier = false;
+		$entry_id = false;
+		if(substr($event_name, 0, 17) === 'spamfilter_users_') {
+			$identifier = 'email';
+			$type = 'spamfilter_user';
+			$entry_id = $data[$use_data]['id'];
+		} elseif(substr($event_name, 0, 16) === 'mail_forwarding_') {
+			$identifier = 'source';
+			$type = 'mail_forwarding';
+			$entry_id = $data[$use_data]['forwarding_id'];
+		} elseif(substr($event_name, 0, 10) === 'mail_user_') {
+			$identifier = 'email';
+			$type = 'mail_user';
+			$entry_id = $data[$use_data]['mailuser_id'];
+		} else {
+			// invalid event
+			$app->log('Invalid event name for rspamd_plugin: ' . $event_name, LOGLEVEL_WARN);
+			return;
+		}
 		
-				$app->load('tpl');
-
-				$tpl = new tpl();
-				$tpl->newTemplate('rspamd_users.inc.conf.master');
-				$tpl->setVar('record_id', intval($data['new']['id']));
-				$tpl->setVar('priority', intval($data['new']['priority']));
-				$tpl->setVar('email', $app->functions->idn_encode($data['new']['email']));
-				$tpl->setVar('local', $data['new']['local']);
-				
-				$tpl->setVar('rspamd_greylisting', $policy['rspamd_greylisting']);
-				$tpl->setVar('rspamd_spam_greylisting_level', floatval($policy['rspamd_spam_greylisting_level']));
-				
-				$tpl->setVar('rspamd_spam_tag_level', floatval($policy['rspamd_spam_tag_level']));
-				$tpl->setVar('rspamd_spam_tag_method', $policy['rspamd_spam_tag_method']);
-				
-				$tpl->setVar('rspamd_spam_kill_level', floatval($policy['rspamd_spam_kill_level']));
-				$tpl->setVar('rspamd_virus_kill_level', floatval($policy['rspamd_spam_kill_level']) + 1000);
+		$is_domain = false;
+		$email_address = $data[$use_data][$identifier];
+		$settings_name =  $email_address;
+		if(!$email_address) {
+			// problem reading identifier
+			$app->log('Empty email address in rspamd_plugin from identifier: ' . $use_data . '/' . $identifier, LOGLEVEL_WARN);
+			return;
+		} elseif(substr($email_address, 0, 1) === '@') {
+			$settings_name = substr($email_address, 1);
+			$is_domain = true;
+		} elseif(strpos($email_address, '@') === false) {
+			$email_address = '@' . $email_address;
+			$is_domain = true;
+		}
+		
+		if($settings_name == '') {
+			// missing settings file name
+			$app->log('Empty email address in rspamd_plugin from identifier: ' . $use_data . '/' . $identifier, LOGLEVEL_WARN);
+			return;
+		}
+		
+		$settings_file = $this->users_config_dir . str_replace('@', '_', $settings_name) . '.conf';
+		$app->log('Settings file for rspamd is ' . $settings_file, LOGLEVEL_WARN);
+		if($mode === 'delete') {
+			if(is_file($settings_file)) {
+				unlink($settings_file);
+			}
+		} else {
+			$settings_priority = 20;
+			if(isset($data[$use_data]['priority'])) {
+				$settings_priority = intval($data[$use_data]['priority']);
+			} elseif($is_domain === true) {
+				$settings_priority = 18;
+			}
+			
+			// get policy for entry
+			if($type === 'spamfilter_user') {
+				$policy = $app->db->queryOneRecord("SELECT * FROM spamfilter_policy WHERE id = ?", intval($data['new']['policy_id']));
 				
-				$spam_lover_virus_lover = '';
-				if($policy['spam_lover'] == 'Y' && $policy['virus_lover'] == 'Y') $spam_lover_virus_lover = 'spam_lover_AND_virus_lover';
-				if($policy['spam_lover'] == 'Y' && $policy['virus_lover'] != 'Y') $spam_lover_virus_lover = 'spam_lover_AND_NOTvirus_lover';
-				if($policy['spam_lover'] != 'Y' && $policy['virus_lover'] == 'Y') $spam_lover_virus_lover = 'NOTspam_lover_AND_virus_lover';
-				if($policy['spam_lover'] != 'Y' && $policy['virus_lover'] != 'Y') $spam_lover_virus_lover = 'NOTspam_lover_AND_NOTvirus_lover';
+				$check = $app->db->queryOneRecord('SELECT `greylisting` FROM `mail_user` WHERE `server_id` = ? AND `email` = ? UNION SELECT `greylisting` FROM `mail_forwarding` WHERE `server_id` = ? AND `source` = ? ORDER BY (`greylisting` = ?) DESC', $conf['server_id'], $email_address, $conf['server_id'], $email_address, 'y');
+				if($check) {
+					$greylisting = $check['greylisting'];
+				} else {
+					$greylisting = 'n';
+				}
+			} else {
+				$search_for_policy[] = $email_address;
+				$search_for_policy[] = substr($email_address, strpos($email_address, '@'));
 				
-				$tpl->setVar('spam_lover_virus_lover', $spam_lover_virus_lover);
+				$policy = $app->db->queryOneRecord("SELECT p.* FROM spamfilter_users as u INNER JOIN spamfilter_policy as p ON (p.id = u.policy_id) WHERE u.server_id =  AND u.email IN ? ORDER BY u.priority DESC", $conf['server_id'], $search_for_policy);
 				
-				//$groups_disabled = array();
-				//if($policy['virus_lover'] == 'Y') $groups_disabled[] = '';
-		
-				$app->system->file_put_contents($user_file, $tpl->grab());
-			} else {
-				if(is_file($user_file)) {
-					unlink($user_file);
+				$greylisting = $data[$use_data]['greylisting'];
+			}
+			
+			if(!is_dir($this->users_config_dir)){
+				$app->system->mkdirpath($this->users_config_dir);
+			}
+			
+			$app->load('tpl');
+			
+			$tpl = new tpl();
+			$tpl->newTemplate('rspamd_users.inc.conf.master');
+			
+			$tpl->setVar('record_identifier', 'ispc_' . $type . '_' . $entry_id);
+			$tpl->setVar('priority', $settings_priority);
+			
+			if($type === 'spamfilter_user') {
+				if($data[$use_data]['local'] === 'Y') {
+					$tpl->setVar('to_email', $app->functions->idn_encode($email_address));
+				} else {
+					$tpl->setVar('from_email', $app->functions->idn_encode($email_address));
 				}
+				$spamfilter = $data[$use_data];
+			} else {
+				$tpl->setVar('to_email', $app->functions->idn_encode($email_address));
+				
+				// need to get matching spamfilter user if any
+				$spamfilter = $app->db->queryOneRecord('SELECT * FROM spamfilter_users WHERE `email` = ?', $email_address);
 			}
 			
-			if($mail_config['content_filter'] == 'rspamd'){
-				if(is_file('/etc/init.d/rspamd')) $app->services->restartServiceDelayed('rspamd', 'reload');
+			if(!isset($policy['rspamd_spam_tag_level'])) {
+				$policy['rspamd_spam_tag_level'] = 6.0;
 			}
-		}
-	}
-
-	function spamfilter_users_delete($event_name, $data) {
-		global $app, $conf;
+			if(!isset($policy['rspamd_spam_tag_method'])) {
+				$policy['rspamd_spam_tag_method'] = 'add_header';
+			}
+			if(!isset($policy['rspamd_spam_kill_level'])) {
+				$policy['rspamd_spam_kill_level'] = 15.0;
+			}
+			if(!isset($policy['rspamd_virus_kill_level'])) {
+				$policy['rspamd_virus_kill_level'] = floatval($policy['rspamd_spam_kill_level']) + 1000;
+			}
+			
+			$tpl->setVar('rspamd_spam_tag_level', floatval($policy['rspamd_spam_tag_level']));
+			$tpl->setVar('rspamd_spam_tag_method', floatval($policy['rspamd_spam_tag_method']));
+			$tpl->setVar('rspamd_spam_kill_level', floatval($policy['rspamd_spam_kill_level']));
+			$tpl->setVar('rspamd_virus_kill_level', floatval($policy['rspamd_spam_kill_level']) + 1000);
+			
+			if(isset($policy['spam_lover']) && $policy['spam_lover'] == 'Y') {
+				$tpl->setVar('spam_lover', true);
+			}
+			if(isset($policy['virus_lover']) && $policy['virus_lover'] == 'Y') {
+				$tpl->setVar('virus_lover', true);
+			}
+			
+			$tpl->setVar('greylisting', $greylisting);
 
-		// get the config
-		$app->uses('getconf');
-		$mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail');
+			if(isset($policy['rspamd_spam_greylisting_level'])) {
+				$tpl->setVar('greylisting_level', floatval($policy['rspamd_spam_greylisting_level']));
+			} else {
+				$tpl->setVar('greylisting_level', 0.1);
+			}
 
-		if(is_dir('/etc/rspamd')) {
-			//* delete the config file
-			$user_file = $this->users_config_dir.'spamfilter_user_'.intval($data['old']['id']).'.conf';
-			if(is_file($user_file)) unlink($user_file);
-			
+			$app->system->file_put_contents($settings_file, $tpl->grab());
 		}
-		
-		if($mail_config['content_filter'] == 'rspamd') {
-			if(is_file('/etc/init.d/rspamd')) $app->services->restartServiceDelayed('rspamd', 'reload');
+
+		if($mail_config['content_filter'] == 'rspamd'){
+			$app->services->restartServiceDelayed('rspamd', 'reload');
 		}
 	}
 
@@ -234,7 +320,7 @@ class rspamd_plugin {
 				$tpl->setVar('list_scope', ($global_filter ? 'global' : 'spamfilter'));
 				$tpl->setVar('record_id', $record_id);
 				// we need to add 10 to priority to avoid mailbox/domain spamfilter settings overriding white/blacklists
-				$tpl->setVar('priority', intval($data['new']['priority']) + ($global_filter ? 20 : 10));
+				$tpl->setVar('priority', intval($data['new']['priority']) + ($global_filter ? 10 : 20));
 				$tpl->setVar('from', $filter_from);
 				$tpl->setVar('recipient', $filter_rcpt);
 				$tpl->setVar('hostname', $filter['hostname']);
@@ -315,5 +401,4 @@ class rspamd_plugin {
 			return false;
 		}
 	}
-	
 } // end class
-- 
GitLab


From fbbedfa302b51e1e475197be586a16d37c52a474 Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Mon, 2 Sep 2019 14:59:21 +0200
Subject: [PATCH 033/242] - added german text for rspamd policy change

---
 interface/web/mail/lib/lang/de_spamfilter_policy.lng | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/interface/web/mail/lib/lang/de_spamfilter_policy.lng b/interface/web/mail/lib/lang/de_spamfilter_policy.lng
index 04b8274478..1efbcb6afc 100644
--- a/interface/web/mail/lib/lang/de_spamfilter_policy.lng
+++ b/interface/web/mail/lib/lang/de_spamfilter_policy.lng
@@ -42,3 +42,10 @@ $wb['rspamd_spam_tag_method_txt'] = 'SPAM-Markierungsmethode';
 $wb['rspamd_spam_kill_level_txt'] = 'SPAM-Reject-Level';
 $wb['btn_save_txt'] = 'Speichern';
 $wb['btn_cancel_txt'] = 'Abbrechen';
+
+$wb['amavis_settings_txt'] = 'Einstellungen';
+$wb['amavis_taglevel_txt'] = 'Tag-Level';
+$wb['amavis_quarantine_txt'] = 'Quarantäne';
+$wb['amavis_other_txt'] = 'Sonstiges';
+$wb['add_header_txt'] = 'Header hinzufügen';
+$wb['rewrite_subject_txt'] = 'Betreff ändern';
\ No newline at end of file
-- 
GitLab


From e470fde84a904409aa7912bedcf424d6467d9e0f Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Mon, 2 Sep 2019 15:06:44 +0200
Subject: [PATCH 034/242] Remote API: monitor_jobqueue_count returning wrong
 count in multiserver setup, fixes #5382

---
 interface/lib/classes/remote.d/monitor.inc.php | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/interface/lib/classes/remote.d/monitor.inc.php b/interface/lib/classes/remote.d/monitor.inc.php
index d3689b94ca..3df681f9ba 100644
--- a/interface/lib/classes/remote.d/monitor.inc.php
+++ b/interface/lib/classes/remote.d/monitor.inc.php
@@ -39,7 +39,6 @@ class remoting_monitor extends remoting {
 
 		if(!$this->checkPerm($session_id, 'monitor_jobqueue_count')) {
 			throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.');
-			return false;
 		}
 		
 		$server_id = intval($server_id);
@@ -48,7 +47,7 @@ class remoting_monitor extends remoting {
 			$servers = $app->db->queryAllRecords("SELECT server_id, updated FROM server");
 			$sql = 'SELECT count(datalog_id) as jobqueue_count FROM sys_datalog WHERE ';
 			foreach($servers as $sv) {
-				$sql .= " (datalog_id > ".$sv['updated']." AND server_id = ".$sv['server_id'].") OR ";
+				$sql .= " (datalog_id > ".$sv['updated']." AND server_id IN (0,".$sv['server_id'].")) OR ";
 			}
 			$sql = substr($sql, 0, -4);
 			$tmp = $app->db->queryOneRecord($sql);
@@ -56,7 +55,7 @@ class remoting_monitor extends remoting {
 			
 		} else {
 			$server = $app->db->queryOneRecord("SELECT updated FROM server WHERE server_id = ?",$server_id);
-			$tmp = $app->db->queryOneRecord('SELECT count(datalog_id) as jobqueue_count FROM sys_datalog WHERE datalog_id > ?',$server['updated']);
+			$tmp = $app->db->queryOneRecord('SELECT count(datalog_id) as jobqueue_count FROM sys_datalog WHERE datalog_id > ? AND server_id IN ?',$server['updated'], array(0, $server_id));
 			return $tmp['jobqueue_count'];
 		}
 	}
-- 
GitLab


From 0fce8c16f197599d3ec33f54494b00d085f8e4ae Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Mon, 2 Sep 2019 15:25:21 +0200
Subject: [PATCH 035/242] Fixed #5351 Remote API function dns_templatezone_add
 issue Added test script for dns_templatezone_add remote API function

---
 interface/lib/classes/remote.d/aps.inc.php    |  3 ++
 interface/lib/classes/remote.d/dns.inc.php    |  4 +-
 .../examples/dns_templatezone_add.php         | 50 +++++++++++++++++++
 3 files changed, 56 insertions(+), 1 deletion(-)
 create mode 100644 remoting_client/examples/dns_templatezone_add.php

diff --git a/interface/lib/classes/remote.d/aps.inc.php b/interface/lib/classes/remote.d/aps.inc.php
index 50dda48255..4cca7fb8b6 100644
--- a/interface/lib/classes/remote.d/aps.inc.php
+++ b/interface/lib/classes/remote.d/aps.inc.php
@@ -238,6 +238,9 @@ class remoting_aps extends remoting {
 			throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.');
 			return false;
 		}
+		
+		$app->uses('remoting_lib');
+		$app->remoting_lib->loadUserProfile(0);
 	
 		$app->load('aps_guicontroller');
 		$gui = new ApsGUIController($app);
diff --git a/interface/lib/classes/remote.d/dns.inc.php b/interface/lib/classes/remote.d/dns.inc.php
index 7e0b230d7f..434af6a983 100644
--- a/interface/lib/classes/remote.d/dns.inc.php
+++ b/interface/lib/classes/remote.d/dns.inc.php
@@ -56,7 +56,9 @@ class remoting_dns extends remoting {
 		$tform_def_file = "../../web/dns/form/dns_soa.tform.php";
 		$app->uses('tform');
 		$app->tform->loadFormDef($tform_def_file);
-		$app->uses('tpl,validate_dns');
+		$app->uses('tpl,validate_dns,remoting_lib');
+		
+		$app->remoting_lib->loadUserProfile($client_id);
 
 		//* replace template placeholders
 		$tpl_content = $template_record['template'];
diff --git a/remoting_client/examples/dns_templatezone_add.php b/remoting_client/examples/dns_templatezone_add.php
new file mode 100644
index 0000000000..aedfc61f5d
--- /dev/null
+++ b/remoting_client/examples/dns_templatezone_add.php
@@ -0,0 +1,50 @@
+<?php
+
+require 'soap_config.php';
+
+// Disable SSL verification for this test script
+$context = stream_context_create([
+    'ssl' => [
+        // set some SSL/TLS specific options
+        'verify_peer' => false,
+        'verify_peer_name' => false,
+        'allow_self_signed' => true
+    ]
+]);
+
+$client = new SoapClient(null, array('location' => $soap_location,
+                'uri'      => $soap_uri,
+                'trace' => 1,
+                'exceptions' => 1,
+                'stream_context' => $context));
+
+
+try {
+        if($session_id = $client->login($username, $password)) {
+                echo 'Logged successfull. Session ID:'.$session_id.'<br />';
+        }
+
+        //* Set the function parameters.
+        $client_id = 1;
+        $template_id = 1;
+        $domain = 'test.tld';
+        $ip = '192.168.0.100';
+        $ns1 = 'ns1.testhoster.tld';
+        $ns2 = 'ns2.testhoster.tld';
+        $email = 'email.test.tld';
+
+        $id = $client->dns_templatezone_add($session_id, $client_id, $template_id, $domain, $ip, $ns1, $ns2, $email);
+
+        echo "ID: ".$id."<br>";
+
+        if($client->logout($session_id)) {
+                echo 'Logged out.<br />';
+        }
+
+
+} catch (SoapFault $e) {
+        echo $client->__getLastResponse();
+        die('SOAP Error: '.$e->getMessage());
+}
+
+?>
\ No newline at end of file
-- 
GitLab


From 724b7e4f7f0a8c9377b2ff250ae46c86b3a892d6 Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Mon, 2 Sep 2019 15:44:43 +0200
Subject: [PATCH 036/242] Fixed #5348 Virtual server config panel showing
 without active VServer

---
 interface/web/dashboard/dashlets/modules.php | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/interface/web/dashboard/dashlets/modules.php b/interface/web/dashboard/dashlets/modules.php
index 5c1f15149d..f5f96a82ac 100644
--- a/interface/web/dashboard/dashlets/modules.php
+++ b/interface/web/dashboard/dashlets/modules.php
@@ -40,6 +40,11 @@ class dashlet_modules {
 							$web_servers = $app->db->queryOneRecord("SELECT COUNT(*) as cnt FROM server WHERE web_server = 1 AND active = 1");
 							if($web_servers['cnt'] == 0) continue;
 						}
+						
+						if($mt == 'vm'){
+							$vserver_servers = $app->db->queryOneRecord("SELECT COUNT(*) as cnt FROM server WHERE vserver_server = 1 AND active = 1");
+							if($vserver_servers['cnt'] == 0) continue;
+						}
 					
 						$module_title = $app->lng($module['title']);
 						if(function_exists('mb_strlen')) {
-- 
GitLab


From efda2243d899e9a4c4f9e383d3e2df13efa29271 Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Mon, 2 Sep 2019 16:01:58 +0200
Subject: [PATCH 037/242] Fixed ISPConfig server log warning:  Unable to add a
 delayed restart for 'postfix'. Service not registered.

---
 server/mods-available/mail_module.inc.php | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/server/mods-available/mail_module.inc.php b/server/mods-available/mail_module.inc.php
index 14cbbb24e4..e13839d344 100644
--- a/server/mods-available/mail_module.inc.php
+++ b/server/mods-available/mail_module.inc.php
@@ -113,6 +113,7 @@ class mail_module {
 		$app->modules->registerTableHook('spamfilter_wblist', 'mail_module', 'process'); 
 
 		$app->services->registerService('rspamd', 'mail_module', 'restartRspamd');
+		$app->services->registerService('postfix', 'mail_module', 'restartPostfix');
 	}
 
 	/*
@@ -192,6 +193,22 @@ class mail_module {
 		}
 		return $retval;
 	}
+	
+	function restartPostfix($action = 'reload') {
+		global $app;
+
+		$app->uses('system');
+
+		$daemon = 'postfix';
+
+		$retval = array('output' => '', 'retval' => 0);
+		if($action == 'restart') {
+			exec($app->system->getinitcommand($daemon, 'restart').' 2>&1', $retval['output'], $retval['retval']);
+		} else {
+			exec($app->system->getinitcommand($daemon, 'reload').' 2>&1', $retval['output'], $retval['retval']);
+		}
+		return $retval;
+	}
 } // end class
 
 ?>
-- 
GitLab


From 65be9518b8f704479010e1cd65c8d5552f98ed4c Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Mon, 2 Sep 2019 16:10:43 +0200
Subject: [PATCH 038/242] Fixed PHP Warning:  Undefined property wb of class
 app in /usr/local/ispconfig/interface/lib/app.inc.php on line 81

---
 interface/lib/app.inc.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/interface/lib/app.inc.php b/interface/lib/app.inc.php
index 11bd024398..e341a57943 100755
--- a/interface/lib/app.inc.php
+++ b/interface/lib/app.inc.php
@@ -248,7 +248,7 @@ class app {
 			}
 			$this->_language_inc = 1;
 		}
-		if(isset($this->_wb[$text]) && $this->wb[$text] !== '') {
+		if(isset($this->_wb[$text]) && $this->_wb[$text] !== '') {
 			$text = $this->_wb[$text];
 		} else {
 			if($this->_conf['debug_language']) {
-- 
GitLab


From 7d72427c9d61e0b78d2869da75c8aa469a36c57a Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Mon, 2 Sep 2019 16:28:03 +0200
Subject: [PATCH 039/242] Fixed html glitch behind active checkbox in dmarc
 edit form.

---
 interface/web/dns/templates/dns_dmarc_edit.htm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/interface/web/dns/templates/dns_dmarc_edit.htm b/interface/web/dns/templates/dns_dmarc_edit.htm
index 630c18559b..4b7646a398 100644
--- a/interface/web/dns/templates/dns_dmarc_edit.htm
+++ b/interface/web/dns/templates/dns_dmarc_edit.htm
@@ -147,7 +147,7 @@
             <div class="form-group">
                 <label class="col-sm-2 control-label">{tmpl_var name='active_txt'}</label>
                 <div class="col-sm-3">
-					<input type="checkbox" value="1" id="active" name="active" {tmpl_var name='active'} />
+					{tmpl_var name='active'}
                 </div>
             </div>
 
-- 
GitLab


From 2eede67205b7b51988f1540c3b7c999b42ee02e6 Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Tue, 3 Sep 2019 10:32:05 +0200
Subject: [PATCH 040/242] - fixed invalid sql query on rspamd plugin

---
 server/plugins-available/rspamd_plugin.inc.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/server/plugins-available/rspamd_plugin.inc.php b/server/plugins-available/rspamd_plugin.inc.php
index 70885056d7..17a14ce42e 100644
--- a/server/plugins-available/rspamd_plugin.inc.php
+++ b/server/plugins-available/rspamd_plugin.inc.php
@@ -177,7 +177,7 @@ class rspamd_plugin {
 				$search_for_policy[] = $email_address;
 				$search_for_policy[] = substr($email_address, strpos($email_address, '@'));
 				
-				$policy = $app->db->queryOneRecord("SELECT p.* FROM spamfilter_users as u INNER JOIN spamfilter_policy as p ON (p.id = u.policy_id) WHERE u.server_id =  AND u.email IN ? ORDER BY u.priority DESC", $conf['server_id'], $search_for_policy);
+				$policy = $app->db->queryOneRecord("SELECT p.* FROM spamfilter_users as u INNER JOIN spamfilter_policy as p ON (p.id = u.policy_id) WHERE u.server_id = ? AND u.email IN ? ORDER BY u.priority DESC", $conf['server_id'], $search_for_policy);
 				
 				$greylisting = $data[$use_data]['greylisting'];
 			}
-- 
GitLab


From 44b6fa2337b35149a9b5cd80ff4790c311c5e471 Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Tue, 3 Sep 2019 10:39:35 +0200
Subject: [PATCH 041/242] - removed debug message from rspamd plugin

---
 server/plugins-available/rspamd_plugin.inc.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/server/plugins-available/rspamd_plugin.inc.php b/server/plugins-available/rspamd_plugin.inc.php
index 17a14ce42e..49eb87165e 100644
--- a/server/plugins-available/rspamd_plugin.inc.php
+++ b/server/plugins-available/rspamd_plugin.inc.php
@@ -150,7 +150,7 @@ class rspamd_plugin {
 		}
 		
 		$settings_file = $this->users_config_dir . str_replace('@', '_', $settings_name) . '.conf';
-		$app->log('Settings file for rspamd is ' . $settings_file, LOGLEVEL_WARN);
+		//$app->log('Settings file for rspamd is ' . $settings_file, LOGLEVEL_WARN);
 		if($mode === 'delete') {
 			if(is_file($settings_file)) {
 				unlink($settings_file);
-- 
GitLab


From b9f6e3fa6e33cd596f56044827b422e17f844477 Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Tue, 3 Sep 2019 15:54:08 +0200
Subject: [PATCH 042/242] - allow @ in webdav username

---
 interface/web/sites/form/webdav_user.tform.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/interface/web/sites/form/webdav_user.tform.php b/interface/web/sites/form/webdav_user.tform.php
index 8d5c0c561f..b7db858546 100644
--- a/interface/web/sites/form/webdav_user.tform.php
+++ b/interface/web/sites/form/webdav_user.tform.php
@@ -85,7 +85,7 @@ $form["tabs"]['webdav'] = array (
 			'validators' => array (  0 => array ( 'type' => 'UNIQUE',
 					'errmsg'=> 'username_error_unique'),
 				1 => array ( 'type' => 'REGEX',
-					'regex' => '/^[\w\.\-]{0,64}$/',
+					'regex' => '/^[\w\.\-@]{0,64}$/',
 					'errmsg'=> 'username_error_regex'),
 			),
 			'default' => '',
-- 
GitLab


From af562b205e3013b5c2ccd2622608f51133779f6d Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Wed, 4 Sep 2019 11:37:08 +0200
Subject: [PATCH 043/242] Moved sql dev collection to upd_0088.sql file.

---
 install/sql/incremental/upd_0088.sql          | 39 +++++++++++++++++++
 .../sql/incremental/upd_dev_collection.sql    | 39 -------------------
 2 files changed, 39 insertions(+), 39 deletions(-)
 create mode 100644 install/sql/incremental/upd_0088.sql

diff --git a/install/sql/incremental/upd_0088.sql b/install/sql/incremental/upd_0088.sql
new file mode 100644
index 0000000000..5c062603f9
--- /dev/null
+++ b/install/sql/incremental/upd_0088.sql
@@ -0,0 +1,39 @@
+-- rspamd
+ALTER TABLE `spamfilter_policy` ADD `rspamd_greylisting` ENUM('n','y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'n' AFTER `policyd_greylist`;
+ALTER TABLE `spamfilter_policy` ADD `rspamd_spam_greylisting_level` DECIMAL(5,2) NULL DEFAULT NULL AFTER `rspamd_greylisting`;
+ALTER TABLE `spamfilter_policy` ADD `rspamd_spam_tag_level` DECIMAL(5,2) NULL DEFAULT NULL AFTER `rspamd_spam_greylisting_level`;
+ALTER TABLE `spamfilter_policy` ADD `rspamd_spam_tag_method` ENUM('add_header','rewrite_subject') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'rewrite_subject' AFTER `rspamd_spam_tag_level`;
+ALTER TABLE `spamfilter_policy` ADD `rspamd_spam_kill_level` DECIMAL(5,2) NULL DEFAULT NULL AFTER `rspamd_spam_tag_method`;
+
+UPDATE `spamfilter_policy` SET `rspamd_greylisting` = 'y' WHERE id = 4;
+UPDATE `spamfilter_policy` SET `rspamd_greylisting` = 'y' WHERE id = 5;
+UPDATE `spamfilter_policy` SET `rspamd_greylisting` = 'y' WHERE id = 6;
+
+UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '4.00';
+UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '6.00' WHERE id = 1;
+UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '999.00' WHERE id = 2;
+UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '999.00' WHERE id = 3;
+UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '2.00' WHERE id = 6;
+UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '7.00' WHERE id = 7;
+
+UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '6.00';
+UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '8.00' WHERE id = 1;
+UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '999.00' WHERE id = 2;
+UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '999.00' WHERE id = 3;
+UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '4.00' WHERE id = 6;
+UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '10.00' WHERE id = 7;
+
+UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '10.00';
+UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '12.00' WHERE id = 1;
+UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '999.00' WHERE id = 2;
+UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '999.00' WHERE id = 3;
+UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '8.00' WHERE id = 6;
+UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '20.00' WHERE id = 7;
+-- end of rspamd
+ALTER TABLE `client` CHANGE COLUMN `password` `password` VARCHAR(200) DEFAULT NULL;
+ALTER TABLE `ftp_user` CHANGE COLUMN `password` `password` VARCHAR(200) DEFAULT NULL;
+ALTER TABLE `shell_user` CHANGE COLUMN `password` `password` VARCHAR(200) DEFAULT NULL;
+ALTER TABLE `sys_user` CHANGE COLUMN `passwort` `passwort` VARCHAR(200) DEFAULT NULL;
+ALTER TABLE `webdav_user` CHANGE COLUMN `password` `password` VARCHAR(200) DEFAULT NULL;
+
+DELETE FROM sys_cron WHERE `next_run` IS NOT NULL AND `next_run` >= DATE_ADD(`last_run`, INTERVAL 30 DAY) AND `next_run` BETWEEN '2020-01-01' AND '2020-01-02';
\ No newline at end of file
diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql
index 91cbc81626..e69de29bb2 100644
--- a/install/sql/incremental/upd_dev_collection.sql
+++ b/install/sql/incremental/upd_dev_collection.sql
@@ -1,39 +0,0 @@
--- rspamd
-ALTER TABLE `spamfilter_policy` ADD `rspamd_greylisting` ENUM('n','y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'n' AFTER `policyd_greylist`;
-ALTER TABLE `spamfilter_policy` ADD `rspamd_spam_greylisting_level` DECIMAL(5,2) NULL DEFAULT NULL AFTER `rspamd_greylisting`;
-ALTER TABLE `spamfilter_policy` ADD `rspamd_spam_tag_level` DECIMAL(5,2) NULL DEFAULT NULL AFTER `rspamd_spam_greylisting_level`;
-ALTER TABLE `spamfilter_policy` ADD `rspamd_spam_tag_method` ENUM('add_header','rewrite_subject') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'rewrite_subject' AFTER `rspamd_spam_tag_level`;
-ALTER TABLE `spamfilter_policy` ADD `rspamd_spam_kill_level` DECIMAL(5,2) NULL DEFAULT NULL AFTER `rspamd_spam_tag_method`;
-
-UPDATE `spamfilter_policy` SET `rspamd_greylisting` = 'y' WHERE id = 4;
-UPDATE `spamfilter_policy` SET `rspamd_greylisting` = 'y' WHERE id = 5;
-UPDATE `spamfilter_policy` SET `rspamd_greylisting` = 'y' WHERE id = 6;
-
-UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '4.00';
-UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '6.00' WHERE id = 1;
-UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '999.00' WHERE id = 2;
-UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '999.00' WHERE id = 3;
-UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '2.00' WHERE id = 6;
-UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '7.00' WHERE id = 7;
-
-UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '6.00';
-UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '8.00' WHERE id = 1;
-UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '999.00' WHERE id = 2;
-UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '999.00' WHERE id = 3;
-UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '4.00' WHERE id = 6;
-UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '10.00' WHERE id = 7;
-
-UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '10.00';
-UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '12.00' WHERE id = 1;
-UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '999.00' WHERE id = 2;
-UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '999.00' WHERE id = 3;
-UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '8.00' WHERE id = 6;
-UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '20.00' WHERE id = 7;
--- end of rspamd
-ALTER TABLE `client` CHANGE COLUMN `password` `password` VARCHAR(200) DEFAULT NULL;
-ALTER TABLE `ftp_user` CHANGE COLUMN `password` `password` VARCHAR(200) DEFAULT NULL;
-ALTER TABLE `shell_user` CHANGE COLUMN `password` `password` VARCHAR(200) DEFAULT NULL;
-ALTER TABLE `sys_user` CHANGE COLUMN `passwort` `passwort` VARCHAR(200) DEFAULT NULL;
-ALTER TABLE `webdav_user` CHANGE COLUMN `password` `password` VARCHAR(200) DEFAULT NULL;
-
-DELETE FROM sys_cron WHERE `next_run` IS NOT NULL AND `next_run` >= DATE_ADD(`last_run`, INTERVAL 30 DAY) AND `next_run` BETWEEN '2020-01-01' AND '2020-01-02';
-- 
GitLab


From 65d142ea6719c72b3e4612a06b245ad3b3495c33 Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Wed, 4 Sep 2019 11:41:56 +0200
Subject: [PATCH 044/242] Merged language files.

---
 interface/lib/lang/ar.lng                        |  2 +-
 interface/lib/lang/bg.lng                        |  2 +-
 interface/lib/lang/ca.lng                        |  2 +-
 interface/lib/lang/cz.lng                        |  2 +-
 interface/lib/lang/de.lng                        |  5 ++---
 interface/lib/lang/dk.lng                        |  2 +-
 interface/lib/lang/el.lng                        |  2 +-
 interface/lib/lang/es.lng                        |  2 +-
 interface/lib/lang/fi.lng                        |  2 +-
 interface/lib/lang/hr.lng                        |  2 +-
 interface/lib/lang/hu.lng                        |  2 +-
 interface/lib/lang/id.lng                        |  2 +-
 interface/lib/lang/it.lng                        |  2 +-
 interface/lib/lang/ja.lng                        |  2 +-
 interface/lib/lang/nl.lng                        |  2 +-
 interface/lib/lang/pl.lng                        |  2 +-
 interface/lib/lang/pt.lng                        |  2 +-
 interface/lib/lang/ro.lng                        |  2 +-
 interface/lib/lang/ru.lng                        |  2 +-
 interface/lib/lang/se.lng                        |  2 +-
 interface/lib/lang/sk.lng                        |  2 +-
 interface/lib/lang/tr.lng                        |  2 +-
 .../web/admin/lib/lang/ar_server_config.lng      |  4 ++++
 .../web/admin/lib/lang/ar_system_config.lng      |  2 +-
 interface/web/admin/lib/lang/ar_users.lng        |  2 +-
 .../web/admin/lib/lang/bg_server_config.lng      |  4 ++++
 .../web/admin/lib/lang/bg_system_config.lng      |  2 +-
 interface/web/admin/lib/lang/bg_users.lng        |  2 +-
 .../web/admin/lib/lang/br_server_config.lng      |  4 ++++
 .../web/admin/lib/lang/br_system_config.lng      |  2 +-
 interface/web/admin/lib/lang/ca_firewall.lng     |  4 ++--
 .../web/admin/lib/lang/ca_server_config.lng      |  6 +++++-
 .../web/admin/lib/lang/ca_system_config.lng      |  2 +-
 interface/web/admin/lib/lang/ca_users.lng        |  2 +-
 .../web/admin/lib/lang/cz_remote_action.lng      |  4 ++--
 .../web/admin/lib/lang/cz_server_config.lng      |  6 +++++-
 .../web/admin/lib/lang/de_server_config.lng      |  3 ++-
 interface/web/admin/lib/lang/dk_firewall.lng     |  4 ++--
 .../web/admin/lib/lang/dk_server_config.lng      |  6 +++++-
 .../web/admin/lib/lang/dk_system_config.lng      |  2 +-
 interface/web/admin/lib/lang/dk_users.lng        |  2 +-
 .../web/admin/lib/lang/el_server_config.lng      |  4 ++++
 .../web/admin/lib/lang/el_system_config.lng      |  2 +-
 interface/web/admin/lib/lang/el_users.lng        |  2 +-
 interface/web/admin/lib/lang/es_firewall.lng     |  4 ++--
 .../web/admin/lib/lang/es_server_config.lng      |  6 +++++-
 .../web/admin/lib/lang/es_system_config.lng      |  4 ++--
 .../web/admin/lib/lang/fi_server_config.lng      |  4 ++++
 .../web/admin/lib/lang/fi_system_config.lng      |  2 +-
 interface/web/admin/lib/lang/fi_users.lng        |  2 +-
 .../web/admin/lib/lang/fr_remote_action.lng      |  2 +-
 .../web/admin/lib/lang/fr_server_config.lng      |  4 ++++
 .../web/admin/lib/lang/fr_system_config.lng      |  2 +-
 .../web/admin/lib/lang/hr_server_config.lng      |  4 ++++
 .../web/admin/lib/lang/hr_system_config.lng      |  2 +-
 interface/web/admin/lib/lang/hr_users.lng        |  2 +-
 interface/web/admin/lib/lang/hr_users_list.lng   |  2 +-
 .../web/admin/lib/lang/hu_server_config.lng      |  4 ++++
 .../web/admin/lib/lang/hu_system_config.lng      |  2 +-
 interface/web/admin/lib/lang/hu_users.lng        |  2 +-
 .../web/admin/lib/lang/id_server_config.lng      |  4 ++++
 .../web/admin/lib/lang/id_system_config.lng      |  2 +-
 interface/web/admin/lib/lang/id_users.lng        |  2 +-
 .../web/admin/lib/lang/it_server_config.lng      |  4 ++++
 .../web/admin/lib/lang/it_system_config.lng      |  2 +-
 interface/web/admin/lib/lang/it_users.lng        |  2 +-
 .../web/admin/lib/lang/ja_server_config.lng      |  4 ++++
 .../web/admin/lib/lang/ja_system_config.lng      |  2 +-
 interface/web/admin/lib/lang/ja_users.lng        |  2 +-
 .../web/admin/lib/lang/nl_server_config.lng      |  4 ++++
 .../web/admin/lib/lang/nl_system_config.lng      |  2 +-
 interface/web/admin/lib/lang/nl_users.lng        |  2 +-
 .../web/admin/lib/lang/pl_server_config.lng      |  4 ++++
 .../web/admin/lib/lang/pl_system_config.lng      |  2 +-
 .../web/admin/lib/lang/pt_server_config.lng      |  4 ++++
 .../web/admin/lib/lang/pt_system_config.lng      |  2 +-
 interface/web/admin/lib/lang/pt_users.lng        |  2 +-
 .../web/admin/lib/lang/ro_server_config.lng      |  4 ++++
 .../web/admin/lib/lang/ro_system_config.lng      |  2 +-
 interface/web/admin/lib/lang/ro_users.lng        |  2 +-
 interface/web/admin/lib/lang/ru_firewall.lng     |  4 ++--
 .../web/admin/lib/lang/ru_server_config.lng      |  6 +++++-
 .../web/admin/lib/lang/ru_system_config.lng      |  4 ++--
 interface/web/admin/lib/lang/ru_users.lng        |  2 +-
 .../web/admin/lib/lang/se_server_config.lng      |  4 ++++
 .../web/admin/lib/lang/se_system_config.lng      |  2 +-
 .../web/admin/lib/lang/sk_server_config.lng      |  4 ++++
 .../web/admin/lib/lang/sk_system_config.lng      |  2 +-
 interface/web/admin/lib/lang/sk_users.lng        |  2 +-
 interface/web/admin/lib/lang/tr_firewall.lng     |  4 ++--
 .../web/admin/lib/lang/tr_remote_action.lng      |  4 ++--
 .../web/admin/lib/lang/tr_server_config.lng      |  6 +++++-
 .../web/admin/lib/lang/tr_system_config.lng      |  2 +-
 interface/web/admin/lib/lang/tr_users.lng        |  2 +-
 interface/web/client/lib/lang/ar_client.lng      |  2 +-
 interface/web/client/lib/lang/ar_reseller.lng    |  2 +-
 interface/web/client/lib/lang/bg_client.lng      |  2 +-
 interface/web/client/lib/lang/bg_reseller.lng    |  2 +-
 interface/web/client/lib/lang/br_client.lng      |  2 +-
 .../web/client/lib/lang/br_client_template.lng   |  2 +-
 interface/web/client/lib/lang/br_reseller.lng    |  2 +-
 interface/web/client/lib/lang/ca_client.lng      |  2 +-
 interface/web/client/lib/lang/ca_reseller.lng    |  2 +-
 interface/web/client/lib/lang/cz_client.lng      |  2 +-
 interface/web/client/lib/lang/cz_reseller.lng    |  2 +-
 interface/web/client/lib/lang/de_reseller.lng    |  2 +-
 interface/web/client/lib/lang/dk_client.lng      |  2 +-
 interface/web/client/lib/lang/dk_reseller.lng    |  2 +-
 interface/web/client/lib/lang/el_client.lng      |  2 +-
 interface/web/client/lib/lang/el_reseller.lng    |  2 +-
 interface/web/client/lib/lang/es_client.lng      |  4 ++--
 .../web/client/lib/lang/es_client_template.lng   |  4 ++--
 interface/web/client/lib/lang/es_reseller.lng    |  4 ++--
 interface/web/client/lib/lang/fi_client.lng      |  2 +-
 interface/web/client/lib/lang/fi_reseller.lng    |  2 +-
 interface/web/client/lib/lang/fr_client.lng      |  2 +-
 interface/web/client/lib/lang/fr_reseller.lng    |  2 +-
 interface/web/client/lib/lang/hr_client.lng      |  2 +-
 interface/web/client/lib/lang/hr_reseller.lng    |  2 +-
 interface/web/client/lib/lang/hu_client.lng      |  2 +-
 interface/web/client/lib/lang/hu_reseller.lng    |  2 +-
 interface/web/client/lib/lang/id_client.lng      |  2 +-
 interface/web/client/lib/lang/id_reseller.lng    |  2 +-
 interface/web/client/lib/lang/it_client.lng      |  2 +-
 interface/web/client/lib/lang/it_reseller.lng    |  2 +-
 interface/web/client/lib/lang/ja_client.lng      |  2 +-
 interface/web/client/lib/lang/ja_reseller.lng    |  2 +-
 interface/web/client/lib/lang/nl_client.lng      |  2 +-
 interface/web/client/lib/lang/nl_reseller.lng    |  2 +-
 interface/web/client/lib/lang/pl_reseller.lng    |  2 +-
 interface/web/client/lib/lang/pt_client.lng      |  2 +-
 interface/web/client/lib/lang/pt_reseller.lng    |  2 +-
 interface/web/client/lib/lang/ro_client.lng      |  2 +-
 interface/web/client/lib/lang/ro_reseller.lng    |  2 +-
 interface/web/client/lib/lang/ru_client.lng      |  4 ++--
 interface/web/client/lib/lang/ru_reseller.lng    |  4 ++--
 interface/web/client/lib/lang/se_client.lng      |  2 +-
 interface/web/client/lib/lang/se_reseller.lng    |  2 +-
 interface/web/client/lib/lang/sk_client.lng      |  2 +-
 interface/web/client/lib/lang/sk_reseller.lng    |  2 +-
 interface/web/client/lib/lang/tr_client.lng      |  2 +-
 interface/web/client/lib/lang/tr_reseller.lng    |  2 +-
 .../web/dashboard/lib/lang/es_dashlet_limits.lng |  2 +-
 interface/web/dns/lib/lang/br_dns_dmarc.lng      | 10 +++++-----
 interface/web/dns/lib/lang/br_dns_tlsa.lng       |  4 ++--
 interface/web/dns/lib/lang/ru_dns_hinfo.lng      |  2 +-
 .../web/help/lib/lang/br_support_message.lng     |  2 +-
 interface/web/login/lib/lang/ar_login_as.lng     |  6 +++---
 interface/web/login/lib/lang/bg_login_as.lng     |  6 +++---
 interface/web/login/lib/lang/br_login_as.lng     |  2 +-
 interface/web/login/lib/lang/ca_login_as.lng     |  6 +++---
 interface/web/login/lib/lang/dk_login_as.lng     |  6 +++---
 interface/web/login/lib/lang/el_login_as.lng     |  6 +++---
 interface/web/login/lib/lang/es_login_as.lng     |  6 +++---
 interface/web/login/lib/lang/fi_login_as.lng     |  6 +++---
 interface/web/login/lib/lang/hr_login_as.lng     |  6 +++---
 interface/web/login/lib/lang/hu_login_as.lng     |  6 +++---
 interface/web/login/lib/lang/id_login_as.lng     |  6 +++---
 interface/web/login/lib/lang/it_login_as.lng     |  6 +++---
 interface/web/login/lib/lang/ja_login_as.lng     |  6 +++---
 interface/web/login/lib/lang/nl_login_as.lng     |  4 ++--
 interface/web/login/lib/lang/pt_login_as.lng     |  6 +++---
 interface/web/login/lib/lang/ro_login_as.lng     |  6 +++---
 interface/web/login/lib/lang/ru_login_as.lng     |  6 +++---
 interface/web/login/lib/lang/se_login_as.lng     |  6 +++---
 interface/web/login/lib/lang/sk_login_as.lng     |  6 +++---
 interface/web/login/lib/lang/tr_login_as.lng     |  6 +++---
 interface/web/mail/lib/lang/ar.lng               |  2 ++
 .../mail/lib/lang/ar_mail_domain_catchall.lng    |  1 +
 interface/web/mail/lib/lang/ar_mail_get.lng      |  2 +-
 .../web/mail/lib/lang/ar_spamfilter_policy.lng   | 13 +++++++++++++
 interface/web/mail/lib/lang/bg.lng               |  2 ++
 .../mail/lib/lang/bg_mail_domain_catchall.lng    |  1 +
 interface/web/mail/lib/lang/bg_mail_get.lng      |  2 +-
 .../web/mail/lib/lang/bg_spamfilter_policy.lng   | 13 +++++++++++++
 interface/web/mail/lib/lang/br.lng               |  2 ++
 .../mail/lib/lang/br_mail_domain_catchall.lng    |  1 +
 interface/web/mail/lib/lang/br_mail_user.lng     |  4 ++--
 .../web/mail/lib/lang/br_spamfilter_policy.lng   | 13 +++++++++++++
 interface/web/mail/lib/lang/ca.lng               |  2 ++
 .../mail/lib/lang/ca_mail_domain_catchall.lng    |  1 +
 interface/web/mail/lib/lang/ca_mail_get.lng      |  2 +-
 .../web/mail/lib/lang/ca_spamfilter_policy.lng   | 13 +++++++++++++
 interface/web/mail/lib/lang/cz.lng               |  2 ++
 .../mail/lib/lang/cz_mail_domain_catchall.lng    |  1 +
 interface/web/mail/lib/lang/cz_mail_get.lng      |  2 +-
 .../web/mail/lib/lang/cz_mail_mailinglist.lng    |  2 +-
 .../web/mail/lib/lang/cz_spamfilter_policy.lng   | 13 +++++++++++++
 interface/web/mail/lib/lang/de.lng               |  2 ++
 .../web/mail/lib/lang/de_spamfilter_policy.lng   |  4 ++--
 interface/web/mail/lib/lang/dk.lng               |  2 ++
 .../mail/lib/lang/dk_mail_domain_catchall.lng    |  1 +
 interface/web/mail/lib/lang/dk_mail_get.lng      |  2 +-
 .../web/mail/lib/lang/dk_spamfilter_policy.lng   | 13 +++++++++++++
 interface/web/mail/lib/lang/el.lng               |  2 ++
 .../mail/lib/lang/el_mail_domain_catchall.lng    |  1 +
 interface/web/mail/lib/lang/el_mail_get.lng      |  2 +-
 .../web/mail/lib/lang/el_spamfilter_policy.lng   | 13 +++++++++++++
 interface/web/mail/lib/lang/es.lng               |  4 +++-
 .../mail/lib/lang/es_mail_domain_catchall.lng    |  5 +++--
 .../lib/lang/es_mail_domain_catchall_list.lng    |  4 ++--
 interface/web/mail/lib/lang/es_mail_get.lng      |  2 +-
 .../web/mail/lib/lang/es_spamfilter_policy.lng   | 13 +++++++++++++
 interface/web/mail/lib/lang/fi.lng               |  2 ++
 .../mail/lib/lang/fi_mail_domain_catchall.lng    |  1 +
 interface/web/mail/lib/lang/fi_mail_get.lng      |  2 +-
 .../web/mail/lib/lang/fi_spamfilter_policy.lng   | 13 +++++++++++++
 interface/web/mail/lib/lang/fr.lng               |  2 ++
 .../mail/lib/lang/fr_mail_domain_catchall.lng    |  1 +
 interface/web/mail/lib/lang/fr_mail_get.lng      |  2 +-
 .../web/mail/lib/lang/fr_spamfilter_policy.lng   | 13 +++++++++++++
 interface/web/mail/lib/lang/hr.lng               |  2 ++
 .../mail/lib/lang/hr_mail_domain_catchall.lng    |  1 +
 interface/web/mail/lib/lang/hr_mail_get.lng      |  2 +-
 .../web/mail/lib/lang/hr_spamfilter_policy.lng   | 13 +++++++++++++
 interface/web/mail/lib/lang/hu.lng               |  2 ++
 .../mail/lib/lang/hu_mail_domain_catchall.lng    |  1 +
 interface/web/mail/lib/lang/hu_mail_get.lng      |  2 +-
 .../web/mail/lib/lang/hu_spamfilter_policy.lng   | 13 +++++++++++++
 interface/web/mail/lib/lang/id.lng               |  2 ++
 .../mail/lib/lang/id_mail_domain_catchall.lng    |  1 +
 interface/web/mail/lib/lang/id_mail_get.lng      |  2 +-
 .../web/mail/lib/lang/id_spamfilter_policy.lng   | 13 +++++++++++++
 interface/web/mail/lib/lang/it.lng               |  2 ++
 .../mail/lib/lang/it_mail_domain_catchall.lng    |  1 +
 interface/web/mail/lib/lang/it_mail_get.lng      |  2 +-
 .../web/mail/lib/lang/it_spamfilter_policy.lng   | 13 +++++++++++++
 interface/web/mail/lib/lang/ja.lng               |  2 ++
 .../mail/lib/lang/ja_mail_domain_catchall.lng    |  1 +
 interface/web/mail/lib/lang/ja_mail_get.lng      |  2 +-
 .../web/mail/lib/lang/ja_spamfilter_policy.lng   | 13 +++++++++++++
 interface/web/mail/lib/lang/nl.lng               |  2 ++
 .../mail/lib/lang/nl_mail_domain_catchall.lng    |  1 +
 interface/web/mail/lib/lang/nl_mail_get.lng      |  2 +-
 interface/web/mail/lib/lang/nl_mail_user.lng     |  4 ++--
 .../web/mail/lib/lang/nl_spamfilter_policy.lng   | 13 +++++++++++++
 interface/web/mail/lib/lang/pl.lng               |  2 ++
 .../mail/lib/lang/pl_mail_domain_catchall.lng    |  1 +
 .../web/mail/lib/lang/pl_spamfilter_policy.lng   | 13 +++++++++++++
 interface/web/mail/lib/lang/pt.lng               |  2 ++
 .../mail/lib/lang/pt_mail_domain_catchall.lng    |  1 +
 interface/web/mail/lib/lang/pt_mail_get.lng      |  2 +-
 .../web/mail/lib/lang/pt_spamfilter_policy.lng   | 13 +++++++++++++
 interface/web/mail/lib/lang/ro.lng               |  2 ++
 .../mail/lib/lang/ro_mail_domain_catchall.lng    |  1 +
 interface/web/mail/lib/lang/ro_mail_get.lng      |  2 +-
 .../web/mail/lib/lang/ro_spamfilter_policy.lng   | 13 +++++++++++++
 interface/web/mail/lib/lang/ru.lng               |  2 ++
 .../mail/lib/lang/ru_mail_domain_catchall.lng    |  1 +
 interface/web/mail/lib/lang/ru_mail_get.lng      |  2 +-
 .../web/mail/lib/lang/ru_mail_user_filter.lng    |  2 +-
 .../web/mail/lib/lang/ru_spamfilter_policy.lng   | 13 +++++++++++++
 interface/web/mail/lib/lang/se.lng               |  2 ++
 .../mail/lib/lang/se_mail_domain_catchall.lng    |  1 +
 interface/web/mail/lib/lang/se_mail_get.lng      |  2 +-
 .../web/mail/lib/lang/se_spamfilter_policy.lng   | 13 +++++++++++++
 interface/web/mail/lib/lang/sk.lng               |  2 ++
 .../mail/lib/lang/sk_mail_domain_catchall.lng    |  1 +
 interface/web/mail/lib/lang/sk_mail_get.lng      |  2 +-
 .../web/mail/lib/lang/sk_spamfilter_policy.lng   | 13 +++++++++++++
 interface/web/mail/lib/lang/tr.lng               |  2 ++
 .../mail/lib/lang/tr_mail_domain_catchall.lng    |  1 +
 interface/web/mail/lib/lang/tr_mail_get.lng      |  2 +-
 .../web/mail/lib/lang/tr_spamfilter_policy.lng   | 13 +++++++++++++
 .../mailuser/lib/lang/ru_mail_user_filter.lng    |  2 +-
 .../monitor/lib/lang/ar_dataloghistory_list.lng  | 12 ++++++------
 .../monitor/lib/lang/bg_dataloghistory_list.lng  | 12 ++++++------
 .../monitor/lib/lang/br_dataloghistory_list.lng  | 12 ++++++------
 .../monitor/lib/lang/ca_dataloghistory_list.lng  | 12 ++++++------
 .../monitor/lib/lang/dk_dataloghistory_list.lng  | 12 ++++++------
 .../monitor/lib/lang/el_dataloghistory_list.lng  | 12 ++++++------
 interface/web/monitor/lib/lang/es.lng            |  2 +-
 .../monitor/lib/lang/es_dataloghistory_list.lng  | 12 ++++++------
 .../monitor/lib/lang/fi_dataloghistory_list.lng  | 12 ++++++------
 .../monitor/lib/lang/fr_dataloghistory_list.lng  | 12 ++++++------
 .../monitor/lib/lang/hr_dataloghistory_list.lng  | 12 ++++++------
 .../monitor/lib/lang/hu_dataloghistory_list.lng  | 12 ++++++------
 .../monitor/lib/lang/id_dataloghistory_list.lng  | 12 ++++++------
 .../monitor/lib/lang/it_dataloghistory_list.lng  | 12 ++++++------
 .../monitor/lib/lang/ja_dataloghistory_list.lng  | 12 ++++++------
 .../monitor/lib/lang/nl_dataloghistory_list.lng  | 12 ++++++------
 .../monitor/lib/lang/pl_dataloghistory_list.lng  | 12 ++++++------
 .../monitor/lib/lang/pt_dataloghistory_list.lng  | 12 ++++++------
 .../monitor/lib/lang/ro_dataloghistory_list.lng  | 12 ++++++------
 .../monitor/lib/lang/ru_dataloghistory_list.lng  | 12 ++++++------
 .../monitor/lib/lang/se_dataloghistory_list.lng  | 12 ++++++------
 .../monitor/lib/lang/sk_dataloghistory_list.lng  | 12 ++++++------
 .../monitor/lib/lang/tr_dataloghistory_list.lng  | 12 ++++++------
 interface/web/sites/lib/lang/ar.lng              |  2 +-
 interface/web/sites/lib/lang/ar_aps.lng          | 16 ++++++++--------
 .../web/sites/lib/lang/ar_web_childdomain.lng    |  2 +-
 .../web/sites/lib/lang/ar_web_subdomain.lng      |  2 +-
 interface/web/sites/lib/lang/bg.lng              |  2 +-
 interface/web/sites/lib/lang/bg_aps.lng          | 16 ++++++++--------
 .../web/sites/lib/lang/bg_web_childdomain.lng    |  2 +-
 .../web/sites/lib/lang/bg_web_subdomain.lng      |  2 +-
 interface/web/sites/lib/lang/br.lng              |  2 +-
 interface/web/sites/lib/lang/br_cron.lng         |  4 ++--
 interface/web/sites/lib/lang/br_database.lng     |  2 +-
 .../web/sites/lib/lang/br_database_user.lng      |  2 +-
 interface/web/sites/lib/lang/br_ftp_user.lng     |  4 ++--
 interface/web/sites/lib/lang/br_shell_user.lng   |  4 ++--
 .../web/sites/lib/lang/br_web_aliasdomain.lng    |  4 ++--
 .../web/sites/lib/lang/br_web_childdomain.lng    |  6 +++---
 interface/web/sites/lib/lang/br_web_domain.lng   |  6 +++---
 .../web/sites/lib/lang/br_web_subdomain.lng      |  2 +-
 .../web/sites/lib/lang/br_web_vhost_domain.lng   |  4 ++--
 .../sites/lib/lang/br_web_vhost_subdomain.lng    | 10 +++++-----
 interface/web/sites/lib/lang/br_webdav_user.lng  |  4 ++--
 interface/web/sites/lib/lang/ca.lng              |  2 +-
 interface/web/sites/lib/lang/ca_aps.lng          | 16 ++++++++--------
 .../web/sites/lib/lang/ca_web_childdomain.lng    |  2 +-
 .../web/sites/lib/lang/ca_web_subdomain.lng      |  2 +-
 interface/web/sites/lib/lang/cz.lng              |  2 +-
 interface/web/sites/lib/lang/cz_aps.lng          | 16 ++++++++--------
 .../web/sites/lib/lang/cz_web_childdomain.lng    |  2 +-
 .../web/sites/lib/lang/cz_web_subdomain.lng      |  2 +-
 .../web/sites/lib/lang/de_web_childdomain.lng    |  2 +-
 .../web/sites/lib/lang/de_web_subdomain.lng      |  2 +-
 interface/web/sites/lib/lang/dk.lng              |  2 +-
 interface/web/sites/lib/lang/dk_aps.lng          | 16 ++++++++--------
 .../web/sites/lib/lang/dk_web_childdomain.lng    |  2 +-
 .../web/sites/lib/lang/dk_web_subdomain.lng      |  2 +-
 interface/web/sites/lib/lang/el.lng              |  2 +-
 interface/web/sites/lib/lang/el_aps.lng          | 16 ++++++++--------
 .../web/sites/lib/lang/el_web_childdomain.lng    |  2 +-
 .../web/sites/lib/lang/el_web_subdomain.lng      |  2 +-
 interface/web/sites/lib/lang/es.lng              |  2 +-
 interface/web/sites/lib/lang/es_aps.lng          | 16 ++++++++--------
 .../web/sites/lib/lang/es_web_childdomain.lng    |  4 ++--
 .../web/sites/lib/lang/es_web_subdomain.lng      |  2 +-
 .../web/sites/lib/lang/es_web_vhost_domain.lng   |  2 +-
 interface/web/sites/lib/lang/fi.lng              |  2 +-
 interface/web/sites/lib/lang/fi_aps.lng          | 16 ++++++++--------
 .../web/sites/lib/lang/fi_web_childdomain.lng    |  2 +-
 .../web/sites/lib/lang/fi_web_subdomain.lng      |  2 +-
 interface/web/sites/lib/lang/fr.lng              |  2 +-
 interface/web/sites/lib/lang/fr_aps.lng          | 16 ++++++++--------
 .../web/sites/lib/lang/fr_web_childdomain.lng    |  2 +-
 .../web/sites/lib/lang/fr_web_subdomain.lng      |  2 +-
 interface/web/sites/lib/lang/hr.lng              |  2 +-
 interface/web/sites/lib/lang/hr_aps.lng          | 16 ++++++++--------
 .../web/sites/lib/lang/hr_web_childdomain.lng    |  2 +-
 .../web/sites/lib/lang/hr_web_subdomain.lng      |  2 +-
 interface/web/sites/lib/lang/hu.lng              |  2 +-
 interface/web/sites/lib/lang/hu_aps.lng          | 16 ++++++++--------
 .../web/sites/lib/lang/hu_web_childdomain.lng    |  2 +-
 .../web/sites/lib/lang/hu_web_subdomain.lng      |  2 +-
 interface/web/sites/lib/lang/id.lng              |  2 +-
 interface/web/sites/lib/lang/id_aps.lng          | 16 ++++++++--------
 .../web/sites/lib/lang/id_web_childdomain.lng    |  2 +-
 .../web/sites/lib/lang/id_web_subdomain.lng      |  2 +-
 interface/web/sites/lib/lang/it.lng              |  2 +-
 interface/web/sites/lib/lang/it_aps.lng          | 16 ++++++++--------
 .../web/sites/lib/lang/it_web_childdomain.lng    |  2 +-
 .../web/sites/lib/lang/it_web_subdomain.lng      |  2 +-
 interface/web/sites/lib/lang/ja.lng              |  2 +-
 interface/web/sites/lib/lang/ja_aps.lng          | 16 ++++++++--------
 .../web/sites/lib/lang/ja_web_childdomain.lng    |  2 +-
 .../web/sites/lib/lang/ja_web_subdomain.lng      |  2 +-
 interface/web/sites/lib/lang/nl.lng              |  2 +-
 interface/web/sites/lib/lang/nl_aps.lng          | 16 ++++++++--------
 .../web/sites/lib/lang/nl_web_childdomain.lng    |  2 +-
 .../web/sites/lib/lang/nl_web_subdomain.lng      |  2 +-
 interface/web/sites/lib/lang/pl_aps.lng          | 16 ++++++++--------
 interface/web/sites/lib/lang/pt.lng              |  2 +-
 interface/web/sites/lib/lang/pt_aps.lng          | 16 ++++++++--------
 .../web/sites/lib/lang/pt_web_childdomain.lng    |  2 +-
 .../web/sites/lib/lang/pt_web_subdomain.lng      |  2 +-
 interface/web/sites/lib/lang/ro.lng              |  2 +-
 interface/web/sites/lib/lang/ro_aps.lng          | 16 ++++++++--------
 .../web/sites/lib/lang/ro_web_childdomain.lng    |  2 +-
 .../web/sites/lib/lang/ro_web_subdomain.lng      |  2 +-
 interface/web/sites/lib/lang/ru.lng              |  2 +-
 interface/web/sites/lib/lang/ru_aps.lng          | 16 ++++++++--------
 interface/web/sites/lib/lang/ru_database.lng     |  2 +-
 .../web/sites/lib/lang/ru_database_user.lng      |  2 +-
 .../web/sites/lib/lang/ru_web_childdomain.lng    |  2 +-
 .../web/sites/lib/lang/ru_web_subdomain.lng      |  2 +-
 interface/web/sites/lib/lang/se.lng              |  2 +-
 interface/web/sites/lib/lang/se_aps.lng          | 16 ++++++++--------
 .../web/sites/lib/lang/se_web_childdomain.lng    |  2 +-
 .../web/sites/lib/lang/se_web_subdomain.lng      |  2 +-
 interface/web/sites/lib/lang/sk.lng              |  2 +-
 interface/web/sites/lib/lang/sk_aps.lng          | 16 ++++++++--------
 .../web/sites/lib/lang/sk_web_childdomain.lng    |  2 +-
 .../web/sites/lib/lang/sk_web_subdomain.lng      |  2 +-
 interface/web/sites/lib/lang/tr.lng              |  2 +-
 interface/web/sites/lib/lang/tr_aps.lng          | 16 ++++++++--------
 .../web/sites/lib/lang/tr_web_childdomain.lng    |  2 +-
 .../web/sites/lib/lang/tr_web_subdomain.lng      |  2 +-
 interface/web/vm/lib/lang/dk_openvz_template.lng |  2 +-
 interface/web/vm/lib/lang/es_openvz_template.lng |  2 +-
 interface/web/vm/lib/lang/tr_openvz_template.lng |  2 +-
 394 files changed, 1113 insertions(+), 651 deletions(-)

diff --git a/interface/lib/lang/ar.lng b/interface/lib/lang/ar.lng
index c8ee365e4b..25dd920831 100644
--- a/interface/lib/lang/ar.lng
+++ b/interface/lib/lang/ar.lng
@@ -145,7 +145,7 @@ $wb['strength_2'] = 'Fair';
 $wb['strength_3'] = 'Good';
 $wb['strength_4'] = 'Strong';
 $wb['strength_5'] = 'Very Strong';
-$wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \"{strength}\".';
+$wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \\"{strength}\\".';
 $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.';
 $wb['security_check1_txt'] = 'Check for security permission:';
 $wb['security_check2_txt'] = 'failed.';
diff --git a/interface/lib/lang/bg.lng b/interface/lib/lang/bg.lng
index eafc8334d4..ff1e39fe34 100644
--- a/interface/lib/lang/bg.lng
+++ b/interface/lib/lang/bg.lng
@@ -145,7 +145,7 @@ $wb['strength_2'] = 'Fair';
 $wb['strength_3'] = 'Good';
 $wb['strength_4'] = 'Strong';
 $wb['strength_5'] = 'Very Strong';
-$wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \"{strength}\".';
+$wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \\"{strength}\\".';
 $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.';
 $wb['security_check1_txt'] = 'Check for security permission:';
 $wb['security_check2_txt'] = 'failed.';
diff --git a/interface/lib/lang/ca.lng b/interface/lib/lang/ca.lng
index 03b9e65a0d..c39cd0db27 100644
--- a/interface/lib/lang/ca.lng
+++ b/interface/lib/lang/ca.lng
@@ -145,7 +145,7 @@ $wb['strength_2'] = 'Moyen';
 $wb['strength_3'] = 'Bon';
 $wb['strength_4'] = 'Fort';
 $wb['strength_5'] = 'Très fort';
-$wb['weak_password_txt'] = 'Le mot de passe choisi ne rencontre pas les minimas requis : {chars} caractères minimums et une force de \"{strength}\".';
+$wb['weak_password_txt'] = 'Le mot de passe choisi ne rencontre pas les minimas requis : {chars} caractères minimums et une force de \\"{strength}\\".';
 $wb['weak_password_length_txt'] = 'Le mot de passe choisi ne rencontre pas les minimas requis : {chars} caractères minimums.';
 $wb['security_check1_txt'] = 'Vérifier les permissions de sécurité:';
 $wb['security_check2_txt'] = 'Echec';
diff --git a/interface/lib/lang/cz.lng b/interface/lib/lang/cz.lng
index fdf9053dae..eeb0819292 100644
--- a/interface/lib/lang/cz.lng
+++ b/interface/lib/lang/cz.lng
@@ -145,7 +145,7 @@ $wb['strength_2'] = 'Podprůměrná';
 $wb['strength_3'] = 'Dobrá';
 $wb['strength_4'] = 'Silná';
 $wb['strength_5'] = 'Velmi silná';
-$wb['weak_password_txt'] = 'Zvolené heslo neodpovídá požadavkům zásad pro tvorbu hesel. Heslo musí být alespoň {chars} znaků dlouhé a mající sílu \"{strength}\".';
+$wb['weak_password_txt'] = 'Zvolené heslo neodpovídá požadavkům zásad pro tvorbu hesel. Heslo musí být alespoň {chars} znaků dlouhé a mající sílu \\"{strength}\\".';
 $wb['weak_password_length_txt'] = 'Zvolené heslo neodpovídá požadavkům zásad pro tvorbu hesel. Heslo musí být alespoň {chars} znaků dlouhé.';
 $wb['security_check1_txt'] = 'Check for security permission:';
 $wb['security_check2_txt'] = 'failed.';
diff --git a/interface/lib/lang/de.lng b/interface/lib/lang/de.lng
index bc217c30b0..61551ceeab 100644
--- a/interface/lib/lang/de.lng
+++ b/interface/lib/lang/de.lng
@@ -152,11 +152,10 @@ $wb['strength_2'] = 'Mittel';
 $wb['strength_3'] = 'Gut';
 $wb['strength_4'] = 'Stark';
 $wb['strength_5'] = 'Sehr stark';
-$wb['weak_password_txt'] = 'Das gewählte Passwort erfüllt die Sicherheitsanforderungen nicht. Es muss mindestens {chars} Zeichen lang sein und die Stärke \"{strength}\" besitzen.';
+$wb['weak_password_txt'] = 'Das gewählte Passwort erfüllt die Sicherheitsanforderungen nicht. Es muss mindestens {chars} Zeichen lang sein und die Stärke \\"{strength}\\" besitzen.';
 $wb['weak_password_length_txt'] = 'Das gewählte Passwort erfüllt die Sicherheitsanforderungen nicht. Es muss mindestens {chars} Zeichen lang sein.';
 $wb['security_check1_txt'] = 'Sicherheitsüberprüfung für:';
 $wb['security_check2_txt'] = 'fehlgeschlagen.';
 $wb['select_directive_snippet_txt'] = 'Direktiven Schnipsel';
 $wb['select_master_directive_snippet_txt'] = 'Master Direktiven Schnipsel';
-$wb['add_header_txt'] = 'Header (fügt "X-Spam: Yes" hinzu)';
-$wb['rewrite_subject_txt'] = 'Betreff (fügt "***SPAM***" am Anfang hinzu)';
+?>
diff --git a/interface/lib/lang/dk.lng b/interface/lib/lang/dk.lng
index 2f7aeb2790..798d2ccd45 100644
--- a/interface/lib/lang/dk.lng
+++ b/interface/lib/lang/dk.lng
@@ -146,7 +146,7 @@ $wb['strength_2'] = 'Nogenlunde';
 $wb['strength_3'] = 'God';
 $wb['strength_4'] = 'Stærk';
 $wb['strength_5'] = 'Meget Stærk';
-$wb['weak_password_txt'] = 'Den valgte adgangskode matcher ikke retningslinjerne for sikkerhedsindstillingerne. Det skal være mindst {chars} tegn i længden og have en styrke på \"{strength}\".';
+$wb['weak_password_txt'] = 'Den valgte adgangskode matcher ikke retningslinjerne for sikkerhedsindstillingerne. Det skal være mindst {chars} tegn i længden og have en styrke på \\"{strength}\\".';
 $wb['weak_password_length_txt'] = 'Den valgte adgangskode matcher ikke retningslinjerne for sikkerhedsindstillingerne. Det skal være mindst {chars} tegn i længden.';
 $wb['security_check1_txt'] = 'Check for sikkerheds tilladelse:';
 $wb['security_check2_txt'] = 'mislykkedes.';
diff --git a/interface/lib/lang/el.lng b/interface/lib/lang/el.lng
index 53cd56f175..382bf4a758 100644
--- a/interface/lib/lang/el.lng
+++ b/interface/lib/lang/el.lng
@@ -145,7 +145,7 @@ $wb['strength_2'] = 'Fair';
 $wb['strength_3'] = 'Good';
 $wb['strength_4'] = 'Strong';
 $wb['strength_5'] = 'Very Strong';
-$wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \"{strength}\".';
+$wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \\"{strength}\\".';
 $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.';
 $wb['security_check1_txt'] = 'Check for security permission:';
 $wb['security_check2_txt'] = 'failed.';
diff --git a/interface/lib/lang/es.lng b/interface/lib/lang/es.lng
index 8b9bc94ef8..3b1bae0b46 100644
--- a/interface/lib/lang/es.lng
+++ b/interface/lib/lang/es.lng
@@ -146,7 +146,7 @@ $wb['strength_2'] = 'Aceptable';
 $wb['strength_3'] = 'Buena';
 $wb['strength_4'] = 'Fuerte';
 $wb['strength_5'] = 'Muy fuerte';
-$wb['weak_password_txt'] = 'La contraseña elegida no coincide con las directrices de seguridad. Debe contener al menos {chars} caracteres y tener una fortaleza \"{strength}\".';
+$wb['weak_password_txt'] = 'La contraseña elegida no coincide con las directrices de seguridad. Debe contener al menos {chars} caracteres y tener una fortaleza \\"{strength}\\".';
 $wb['weak_password_length_txt'] = 'La contraseña elegida no coincide con las directrices de seguridad. Debe contener al menos {chars} caracteres.';
 $wb['security_check1_txt'] = 'Verificar permisos de seguridad:';
 $wb['security_check2_txt'] = 'ha fallado.';
diff --git a/interface/lib/lang/fi.lng b/interface/lib/lang/fi.lng
index 0439142c52..d4c23ca777 100755
--- a/interface/lib/lang/fi.lng
+++ b/interface/lib/lang/fi.lng
@@ -145,7 +145,7 @@ $wb['strength_2'] = 'Fair';
 $wb['strength_3'] = 'Good';
 $wb['strength_4'] = 'Strong';
 $wb['strength_5'] = 'Very Strong';
-$wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \"{strength}\".';
+$wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \\"{strength}\\".';
 $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.';
 $wb['security_check1_txt'] = 'Check for security permission:';
 $wb['security_check2_txt'] = 'failed.';
diff --git a/interface/lib/lang/hr.lng b/interface/lib/lang/hr.lng
index c6a1b74d81..310371be47 100644
--- a/interface/lib/lang/hr.lng
+++ b/interface/lib/lang/hr.lng
@@ -145,7 +145,7 @@ $wb['strength_2'] = 'Dobro';
 $wb['strength_3'] = 'Bolje';
 $wb['strength_4'] = 'Jako';
 $wb['strength_5'] = 'Odlično';
-$wb['weak_password_txt'] = 'Unešena šifra nije dobra. Mora biti dugačka barem {chars} znakova i jačine \"{strength}\".';
+$wb['weak_password_txt'] = 'Unešena šifra nije dobra. Mora biti dugačka barem {chars} znakova i jačine \\"{strength}\\".';
 $wb['weak_password_length_txt'] = 'Unešena šifra nije dobra. Mora biti dugačka barem {chars} znakova.';
 $wb['security_check1_txt'] = 'Provjerite sigurnosne dozvole:';
 $wb['security_check2_txt'] = 'greška.';
diff --git a/interface/lib/lang/hu.lng b/interface/lib/lang/hu.lng
index 1ef741d6a2..dd4cce79b3 100644
--- a/interface/lib/lang/hu.lng
+++ b/interface/lib/lang/hu.lng
@@ -145,7 +145,7 @@ $wb['strength_2'] = 'Fair';
 $wb['strength_3'] = 'Good';
 $wb['strength_4'] = 'Strong';
 $wb['strength_5'] = 'Very Strong';
-$wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \"{strength}\".';
+$wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \\"{strength}\\".';
 $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.';
 $wb['security_check1_txt'] = 'Check for security permission:';
 $wb['security_check2_txt'] = 'failed.';
diff --git a/interface/lib/lang/id.lng b/interface/lib/lang/id.lng
index 6483418b3e..bd90fd5a1b 100644
--- a/interface/lib/lang/id.lng
+++ b/interface/lib/lang/id.lng
@@ -145,7 +145,7 @@ $wb['strength_2'] = 'Fair';
 $wb['strength_3'] = 'Good';
 $wb['strength_4'] = 'Strong';
 $wb['strength_5'] = 'Very Strong';
-$wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \"{strength}\".';
+$wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \\"{strength}\\".';
 $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.';
 $wb['security_check1_txt'] = 'Check for security permission:';
 $wb['security_check2_txt'] = 'failed.';
diff --git a/interface/lib/lang/it.lng b/interface/lib/lang/it.lng
index 332cd1ab9f..33d16c3d5f 100644
--- a/interface/lib/lang/it.lng
+++ b/interface/lib/lang/it.lng
@@ -138,7 +138,7 @@ $wb['strength_2'] = 'Mediocre';
 $wb['strength_3'] = 'Buono';
 $wb['strength_4'] = 'Forte';
 $wb['strength_5'] = 'Molto forte';
-$wb['weak_password_txt'] = 'La password indicata non segue le impostazioni di sicurezza. Deve essere lunga almeno  {chars} caratteri ed avere un livello di sicurezza pari a \"{strength}\".';
+$wb['weak_password_txt'] = 'La password indicata non segue le impostazioni di sicurezza. Deve essere lunga almeno  {chars} caratteri ed avere un livello di sicurezza pari a \\"{strength}\\".';
 $wb['weak_password_length_txt'] = 'La password indicata non segue le impostazioni di sicurezza. Deve essere lunga almeno  {chars} caratteri.';
 $wb['security_check1_txt'] = 'Verifica permessi di sicurezza:';
 $wb['security_check2_txt'] = 'fallito.';
diff --git a/interface/lib/lang/ja.lng b/interface/lib/lang/ja.lng
index 5f8b20add4..2a56e77399 100644
--- a/interface/lib/lang/ja.lng
+++ b/interface/lib/lang/ja.lng
@@ -145,7 +145,7 @@ $wb['strength_2'] = 'Fair';
 $wb['strength_3'] = 'Good';
 $wb['strength_4'] = 'Strong';
 $wb['strength_5'] = 'Very Strong';
-$wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \"{strength}\".';
+$wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \\"{strength}\\".';
 $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.';
 $wb['security_check1_txt'] = 'Check for security permission:';
 $wb['security_check2_txt'] = 'failed.';
diff --git a/interface/lib/lang/nl.lng b/interface/lib/lang/nl.lng
index 561e4cdb76..888f9c0200 100644
--- a/interface/lib/lang/nl.lng
+++ b/interface/lib/lang/nl.lng
@@ -145,7 +145,7 @@ $wb['strength_2'] = 'Fair';
 $wb['strength_3'] = 'Good';
 $wb['strength_4'] = 'Strong';
 $wb['strength_5'] = 'Very Strong';
-$wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \"{strength}\".';
+$wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \\"{strength}\\".';
 $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.';
 $wb['security_check1_txt'] = 'Check for security permission:';
 $wb['security_check2_txt'] = 'failed.';
diff --git a/interface/lib/lang/pl.lng b/interface/lib/lang/pl.lng
index abbb98ee14..b5b62c816d 100644
--- a/interface/lib/lang/pl.lng
+++ b/interface/lib/lang/pl.lng
@@ -145,7 +145,7 @@ $wb['strength_2'] = 'Fair';
 $wb['strength_3'] = 'Good';
 $wb['strength_4'] = 'Strong';
 $wb['strength_5'] = 'Very Strong';
-$wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \"{strength}\".';
+$wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \\"{strength}\\".';
 $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.';
 $wb['security_check1_txt'] = 'Check for security permission:';
 $wb['security_check2_txt'] = 'failed.';
diff --git a/interface/lib/lang/pt.lng b/interface/lib/lang/pt.lng
index 026aff80a8..7845520a5b 100644
--- a/interface/lib/lang/pt.lng
+++ b/interface/lib/lang/pt.lng
@@ -145,7 +145,7 @@ $wb['strength_2'] = 'Fair';
 $wb['strength_3'] = 'Good';
 $wb['strength_4'] = 'Strong';
 $wb['strength_5'] = 'Very Strong';
-$wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \"{strength}\".';
+$wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \\"{strength}\\".';
 $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.';
 $wb['security_check1_txt'] = 'Check for security permission:';
 $wb['security_check2_txt'] = 'failed.';
diff --git a/interface/lib/lang/ro.lng b/interface/lib/lang/ro.lng
index bfbd725dab..613f2377a1 100644
--- a/interface/lib/lang/ro.lng
+++ b/interface/lib/lang/ro.lng
@@ -145,7 +145,7 @@ $wb['strength_2'] = 'Fair';
 $wb['strength_3'] = 'Good';
 $wb['strength_4'] = 'Strong';
 $wb['strength_5'] = 'Very Strong';
-$wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \"{strength}\".';
+$wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \\"{strength}\\".';
 $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.';
 $wb['security_check1_txt'] = 'Check for security permission:';
 $wb['security_check2_txt'] = 'failed.';
diff --git a/interface/lib/lang/ru.lng b/interface/lib/lang/ru.lng
index 823ef44c79..e5e8ce6278 100644
--- a/interface/lib/lang/ru.lng
+++ b/interface/lib/lang/ru.lng
@@ -145,7 +145,7 @@ $wb['strength_2'] = 'Средний';
 $wb['strength_3'] = 'Хороший';
 $wb['strength_4'] = 'Стойкий';
 $wb['strength_5'] = 'Очень стойкий';
-$wb['weak_password_txt'] = 'Выбранный пароль не соответствует требованиям безопасности. Он должен быть как минимум {chars} символов в длину и стойкость \"{strength}\".';
+$wb['weak_password_txt'] = 'Выбранный пароль не соответствует требованиям безопасности. Он должен быть как минимум {chars} символов в длину и стойкость \\"{strength}\\".';
 $wb['weak_password_length_txt'] = 'Выбранный пароль не соответствует требованиям безопасности. Он должен быть как минимум {chars} символов в длину.';
 $wb['security_check1_txt'] = 'Проверка разрешений безопасности:';
 $wb['security_check2_txt'] = 'не удалось.';
diff --git a/interface/lib/lang/se.lng b/interface/lib/lang/se.lng
index 4f67c28024..b6767144df 100644
--- a/interface/lib/lang/se.lng
+++ b/interface/lib/lang/se.lng
@@ -145,7 +145,7 @@ $wb['strength_2'] = 'Sådär';
 $wb['strength_3'] = 'Bra';
 $wb['strength_4'] = 'Starkt';
 $wb['strength_5'] = 'Väldigt starkt';
-$wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \"{strength}\".';
+$wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \\"{strength}\\".';
 $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.';
 $wb['security_check1_txt'] = 'Check for security permission:';
 $wb['security_check2_txt'] = 'failed.';
diff --git a/interface/lib/lang/sk.lng b/interface/lib/lang/sk.lng
index b647226e34..6b4ef7676f 100644
--- a/interface/lib/lang/sk.lng
+++ b/interface/lib/lang/sk.lng
@@ -145,7 +145,7 @@ $wb['strength_2'] = 'Fair';
 $wb['strength_3'] = 'Good';
 $wb['strength_4'] = 'Strong';
 $wb['strength_5'] = 'Very Strong';
-$wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \"{strength}\".';
+$wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \\"{strength}\\".';
 $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.';
 $wb['security_check1_txt'] = 'Check for security permission:';
 $wb['security_check2_txt'] = 'failed.';
diff --git a/interface/lib/lang/tr.lng b/interface/lib/lang/tr.lng
index 551fae8d86..115bc890bb 100644
--- a/interface/lib/lang/tr.lng
+++ b/interface/lib/lang/tr.lng
@@ -146,7 +146,7 @@ $wb['strength_2'] = 'Yeterli';
 $wb['strength_3'] = 'Ä°yi';
 $wb['strength_4'] = 'Güçlü';
 $wb['strength_5'] = 'Çok Güçlü';
-$wb['weak_password_txt'] = 'Yazdığınız parola güvenlik ilkesine uygun değil. Parola en az {chars} karakter uzunluğunda ve \"{strength}\" güçlüğünde olmalı.';
+$wb['weak_password_txt'] = 'Yazdığınız parola güvenlik ilkesine uygun değil. Parola en az {chars} karakter uzunluğunda ve \\"{strength}\\" güçlüğünde olmalı.';
 $wb['weak_password_length_txt'] = 'Yazdığınız parola güvenlik ilkesine uygun değil. Parola en az {chars} karakter uzunluğunda olmalı.';
 $wb['security_check1_txt'] = 'Güvenlik iznini denetle:';
 $wb['security_check2_txt'] = 'başarısız.';
diff --git a/interface/web/admin/lib/lang/ar_server_config.lng b/interface/web/admin/lib/lang/ar_server_config.lng
index 55d3f8949c..bccdcc42c0 100644
--- a/interface/web/admin/lib/lang/ar_server_config.lng
+++ b/interface/web/admin/lib/lang/ar_server_config.lng
@@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
 $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode';
+$wb['content_filter_txt'] = 'Content Filter';
+$wb['rspamd_url_txt'] = 'Rspamd URL';
+$wb['rspamd_user_txt'] = 'Rspamd User';
+$wb['rspamd_password_txt'] = 'Rspamd Password';
 ?>
diff --git a/interface/web/admin/lib/lang/ar_system_config.lng b/interface/web/admin/lib/lang/ar_system_config.lng
index b650929064..0a830014d8 100644
--- a/interface/web/admin/lib/lang/ar_system_config.lng
+++ b/interface/web/admin/lib/lang/ar_system_config.lng
@@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain
 $wb['customer_no_start_txt'] = 'Customer No. start value';
 $wb['customer_no_counter_txt'] = 'Customer No. counter';
 $wb['session_timeout_txt'] = 'Session timeout (minutes)';
-$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"';
+$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
 $wb['No'] = 'No';
 $wb['min_password_length_txt'] = 'Minimum password length';
 $wb['min_password_strength_txt'] = 'Minimum password strength';
diff --git a/interface/web/admin/lib/lang/ar_users.lng b/interface/web/admin/lib/lang/ar_users.lng
index 9d9923b631..dcbc4f4727 100644
--- a/interface/web/admin/lib/lang/ar_users.lng
+++ b/interface/web/admin/lib/lang/ar_users.lng
@@ -29,7 +29,7 @@ $wb['generate_password_txt'] = 'Generate Password';
 $wb['repeat_password_txt'] = 'Repeat Password';
 $wb['password_mismatch_txt'] = 'The passwords do not match.';
 $wb['password_match_txt'] = 'The passwords do match.';
-$wb['username_error_collision'] = 'The username may not be web or web plus a number.\"';
+$wb['username_error_collision'] = 'The username may not be web or web plus a number.\\"';
 $wb['client_not_admin_err'] = 'A user that belongs to a client can not be set to type: admin';
 $wb['lost_password_function_txt'] = 'Forgot password function is available';
 $wb['no_user_insert'] = 'CP-Users of type -user- get added and updated automatically when you add a client or reseller.';
diff --git a/interface/web/admin/lib/lang/bg_server_config.lng b/interface/web/admin/lib/lang/bg_server_config.lng
index 6b63770459..39531461c3 100644
--- a/interface/web/admin/lib/lang/bg_server_config.lng
+++ b/interface/web/admin/lib/lang/bg_server_config.lng
@@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
 $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode';
+$wb['content_filter_txt'] = 'Content Filter';
+$wb['rspamd_url_txt'] = 'Rspamd URL';
+$wb['rspamd_user_txt'] = 'Rspamd User';
+$wb['rspamd_password_txt'] = 'Rspamd Password';
 ?>
diff --git a/interface/web/admin/lib/lang/bg_system_config.lng b/interface/web/admin/lib/lang/bg_system_config.lng
index 15d5338704..130cb596aa 100644
--- a/interface/web/admin/lib/lang/bg_system_config.lng
+++ b/interface/web/admin/lib/lang/bg_system_config.lng
@@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain
 $wb['customer_no_start_txt'] = 'Customer No. start value';
 $wb['customer_no_counter_txt'] = 'Customer No. counter';
 $wb['session_timeout_txt'] = 'Session timeout (minutes)';
-$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"';
+$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
 $wb['No'] = 'No';
 $wb['min_password_length_txt'] = 'Minimum password length';
 $wb['min_password_strength_txt'] = 'Minimum password strength';
diff --git a/interface/web/admin/lib/lang/bg_users.lng b/interface/web/admin/lib/lang/bg_users.lng
index e36d2d9d32..e8dc631a59 100644
--- a/interface/web/admin/lib/lang/bg_users.lng
+++ b/interface/web/admin/lib/lang/bg_users.lng
@@ -29,7 +29,7 @@ $wb['generate_password_txt'] = 'Generate Password';
 $wb['repeat_password_txt'] = 'Repeat Password';
 $wb['password_mismatch_txt'] = 'The passwords do not match.';
 $wb['password_match_txt'] = 'The passwords do match.';
-$wb['username_error_collision'] = 'The username may not be web or web plus a number.\"';
+$wb['username_error_collision'] = 'The username may not be web or web plus a number.\\"';
 $wb['client_not_admin_err'] = 'A user that belongs to a client can not be set to type: admin';
 $wb['lost_password_function_txt'] = 'Forgot password function is available';
 $wb['no_user_insert'] = 'CP-Users of type -user- get added and updated automatically when you add a client or reseller.';
diff --git a/interface/web/admin/lib/lang/br_server_config.lng b/interface/web/admin/lib/lang/br_server_config.lng
index 088dac70be..25ffb06996 100644
--- a/interface/web/admin/lib/lang/br_server_config.lng
+++ b/interface/web/admin/lib/lang/br_server_config.lng
@@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode';
+$wb['content_filter_txt'] = 'Content Filter';
+$wb['rspamd_url_txt'] = 'Rspamd URL';
+$wb['rspamd_user_txt'] = 'Rspamd User';
+$wb['rspamd_password_txt'] = 'Rspamd Password';
 ?>
diff --git a/interface/web/admin/lib/lang/br_system_config.lng b/interface/web/admin/lib/lang/br_system_config.lng
index 3d8ea38e14..8688ca53aa 100644
--- a/interface/web/admin/lib/lang/br_system_config.lng
+++ b/interface/web/admin/lib/lang/br_system_config.lng
@@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'O número do gabarito do cliente
 $wb['customer_no_start_txt'] = 'Valor inicial do código do cliente';
 $wb['customer_no_counter_txt'] = 'Contador de código do cliente';
 $wb['session_timeout_txt'] = 'Duração da sessão (minutos)';
-$wb['session_allow_endless_txt'] = 'Habilitar \"Manter-me conectado\"';
+$wb['session_allow_endless_txt'] = 'Habilitar \\"Manter-me conectado\\"';
 $wb['min_password_length_txt'] = 'Comprimento mínimo da senha';
 $wb['min_password_strength_txt'] = 'Dificuldade mínima da senha';
 $wb['company_name_txt'] = 'Nome da empresa no título da página';
diff --git a/interface/web/admin/lib/lang/ca_firewall.lng b/interface/web/admin/lib/lang/ca_firewall.lng
index 0e08215f7a..06a51c80cf 100644
--- a/interface/web/admin/lib/lang/ca_firewall.lng
+++ b/interface/web/admin/lib/lang/ca_firewall.lng
@@ -6,6 +6,6 @@ $wb['tcp_port_help_txt'] = 'Separated by comma';
 $wb['udp_port_help_txt'] = 'Separated by comma';
 $wb['active_txt'] = 'Active';
 $wb['firewall_error_unique'] = 'There is already a firewall record for this server.';
-$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".';
-$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".';
+$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".';
+$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".';
 ?>
diff --git a/interface/web/admin/lib/lang/ca_server_config.lng b/interface/web/admin/lib/lang/ca_server_config.lng
index 42fb15c246..14f0b91d3b 100644
--- a/interface/web/admin/lib/lang/ca_server_config.lng
+++ b/interface/web/admin/lib/lang/ca_server_config.lng
@@ -161,7 +161,7 @@ $wb['do_not_try_rescue_httpd_txt'] = 'Disable HTTPD monitoring';
 $wb['do_not_try_rescue_mongodb_txt'] = 'Disable MongoDB monitoring';
 $wb['do_not_try_rescue_mysql_txt'] = 'Disable MySQL monitoring';
 $wb['do_not_try_rescue_mail_txt'] = 'Disable Email monitoring';
-$wb['rescue_description_txt'] = '<b>Information:</b> If you want to shut down mysql you have to select the \"Disable MySQL monitor\" checkbox and then wait 2-3 minutes.<br>If you do not wait 2-3 minutes, rescue will try to restart mysql!';
+$wb['rescue_description_txt'] = '<b>Information:</b> If you want to shut down mysql you have to select the \\"Disable MySQL monitor\\" checkbox and then wait 2-3 minutes.<br>If you do not wait 2-3 minutes, rescue will try to restart mysql!';
 $wb['enable_sni_txt'] = 'Enable SNI';
 $wb['set_folder_permissions_on_update_txt'] = 'Set folder permissions on update';
 $wb['add_web_users_to_sshusers_group_txt'] = 'Add web users to -sshusers- group';
@@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
 $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode';
+$wb['content_filter_txt'] = 'Content Filter';
+$wb['rspamd_url_txt'] = 'Rspamd URL';
+$wb['rspamd_user_txt'] = 'Rspamd User';
+$wb['rspamd_password_txt'] = 'Rspamd Password';
 ?>
diff --git a/interface/web/admin/lib/lang/ca_system_config.lng b/interface/web/admin/lib/lang/ca_system_config.lng
index 326b3b2750..cc3c11c6c5 100644
--- a/interface/web/admin/lib/lang/ca_system_config.lng
+++ b/interface/web/admin/lib/lang/ca_system_config.lng
@@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain
 $wb['customer_no_start_txt'] = 'Customer No. start value';
 $wb['customer_no_counter_txt'] = 'Customer No. counter';
 $wb['session_timeout_txt'] = 'Session timeout (minutes)';
-$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"';
+$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
 $wb['No'] = 'No';
 $wb['min_password_length_txt'] = 'Minimum password length';
 $wb['min_password_strength_txt'] = 'Minimum password strength';
diff --git a/interface/web/admin/lib/lang/ca_users.lng b/interface/web/admin/lib/lang/ca_users.lng
index 9d9923b631..dcbc4f4727 100644
--- a/interface/web/admin/lib/lang/ca_users.lng
+++ b/interface/web/admin/lib/lang/ca_users.lng
@@ -29,7 +29,7 @@ $wb['generate_password_txt'] = 'Generate Password';
 $wb['repeat_password_txt'] = 'Repeat Password';
 $wb['password_mismatch_txt'] = 'The passwords do not match.';
 $wb['password_match_txt'] = 'The passwords do match.';
-$wb['username_error_collision'] = 'The username may not be web or web plus a number.\"';
+$wb['username_error_collision'] = 'The username may not be web or web plus a number.\\"';
 $wb['client_not_admin_err'] = 'A user that belongs to a client can not be set to type: admin';
 $wb['lost_password_function_txt'] = 'Forgot password function is available';
 $wb['no_user_insert'] = 'CP-Users of type -user- get added and updated automatically when you add a client or reseller.';
diff --git a/interface/web/admin/lib/lang/cz_remote_action.lng b/interface/web/admin/lib/lang/cz_remote_action.lng
index 68da1c065d..e1908e2d04 100644
--- a/interface/web/admin/lib/lang/cz_remote_action.lng
+++ b/interface/web/admin/lib/lang/cz_remote_action.lng
@@ -2,9 +2,9 @@
 $wb['select_server_txt'] = 'Zvolit server';
 $wb['btn_do_txt'] = 'Provést akci';
 $wb['do_osupdate_caption'] = 'Aktualizace operačního systému na vzdáleném serveru.';
-$wb['do_osupdate_desc'] = 'Tato akce provede \"aptitude -y\" aktualizaci na vybraném serveru.<br><br><strong>POUŽITÍ TÉTO AKCE NA VLASTNÍ NEBEZPEČÍ !</strong>';
+$wb['do_osupdate_desc'] = 'Tato akce provede \\"aptitude -y\\" aktualizaci na vybraném serveru.<br><br><strong>POUŽITÍ TÉTO AKCE NA VLASTNÍ NEBEZPEČÍ !</strong>';
 $wb['do_ispcupdate_caption'] = 'Provedení ISPConfig 3 - aktualizace na vzdáleném serveru';
-$wb['do_ispcupdate_desc'] = 'Tato akce provede \"ISPConfig 3\" aktualizaci na vašem vybraném serveru.<br><br><strong>POUŽITÍ TÉTO AKCE NA VLASTNÍ NEBEZPEČÍ !</strong>';
+$wb['do_ispcupdate_desc'] = 'Tato akce provede \\"ISPConfig 3\\" aktualizaci na vašem vybraném serveru.<br><br><strong>POUŽITÍ TÉTO AKCE NA VLASTNÍ NEBEZPEČÍ !</strong>';
 $wb['action_scheduled'] = 'Akce je naplánována na provedení';
 $wb['select_all_server'] = 'VÅ¡echny servery';
 $wb['ispconfig_update_title'] = 'ISPConfig pokyny k aktualizaci';
diff --git a/interface/web/admin/lib/lang/cz_server_config.lng b/interface/web/admin/lib/lang/cz_server_config.lng
index 40af41289a..a97d78b8eb 100644
--- a/interface/web/admin/lib/lang/cz_server_config.lng
+++ b/interface/web/admin/lib/lang/cz_server_config.lng
@@ -143,7 +143,7 @@ $wb['php_fpm_socket_dir_error_empty'] = 'PHP-FPM adresář pro socket je prázdn
 $wb['try_rescue_txt'] = 'Povolit monitorování služeb a restartovat při selhání';
 $wb['do_not_try_rescue_mysql_txt'] = 'Zakázat MySQL monitorování';
 $wb['do_not_try_rescue_mail_txt'] = 'Zakázat E-mail monitorování';
-$wb['rescue_description_txt'] = '<b>Informace:</b> Pokud chcete např. vypnout MySQL službu zatrhněte políčko \"Zakázat MySQL monitorování\" změna se provede do 2-3 minut.<br>Pokud nepočkáte 2-3 minuty, monitorování nastartuje službu MySQL automaticky znovu !';
+$wb['rescue_description_txt'] = '<b>Informace:</b> Pokud chcete např. vypnout MySQL službu zatrhněte políčko \\"Zakázat MySQL monitorování\\" změna se provede do 2-3 minut.<br>Pokud nepočkáte 2-3 minuty, monitorování nastartuje službu MySQL automaticky znovu !';
 $wb['enable_sni_txt'] = 'Aktivovat SNI (Server Name Indication)';
 $wb['do_not_try_rescue_httpd_txt'] = 'Zakázat HTTPD monitorování';
 $wb['set_folder_permissions_on_update_txt'] = 'Nastavení oprávnění složky při aktualizaci';
@@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
 $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode';
+$wb['content_filter_txt'] = 'Content Filter';
+$wb['rspamd_url_txt'] = 'Rspamd URL';
+$wb['rspamd_user_txt'] = 'Rspamd User';
+$wb['rspamd_password_txt'] = 'Rspamd Password';
 ?>
diff --git a/interface/web/admin/lib/lang/de_server_config.lng b/interface/web/admin/lib/lang/de_server_config.lng
index 50b3514564..960381e7c1 100644
--- a/interface/web/admin/lib/lang/de_server_config.lng
+++ b/interface/web/admin/lib/lang/de_server_config.lng
@@ -299,4 +299,5 @@ $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload Modus';
 $wb['content_filter_txt'] = 'Content-Filter';
 $wb['rspamd_url_txt'] = 'Rspamd-URL';
 $wb['rspamd_user_txt'] = 'Rspamd-Benutzer';
-$wb['rspamd_password_txt'] = 'Rspamd-Passwort';
\ No newline at end of file
+$wb['rspamd_password_txt'] = 'Rspamd-Passwort';
+?>
diff --git a/interface/web/admin/lib/lang/dk_firewall.lng b/interface/web/admin/lib/lang/dk_firewall.lng
index 9a20698384..96608b2830 100644
--- a/interface/web/admin/lib/lang/dk_firewall.lng
+++ b/interface/web/admin/lib/lang/dk_firewall.lng
@@ -6,6 +6,6 @@ $wb['tcp_port_help_txt'] = 'Adskilt af komma';
 $wb['udp_port_help_txt'] = 'Adskilt af komma';
 $wb['active_txt'] = 'Aktiv';
 $wb['firewall_error_unique'] = 'Der er allerede en firewall post for denne server.';
-$wb['tcp_ports_error_regex'] = 'Tegn ikke tilladt i tcp port definition. Tilladt tegn er tal, \":\" og \",\".';
-$wb['udp_ports_error_regex'] = 'Tegn ikke tilladt i udp port definition. Tilladt tegn er tal, \":\" og \",\".';
+$wb['tcp_ports_error_regex'] = 'Tegn ikke tilladt i tcp port definition. Tilladt tegn er tal, \\":\\" og \\",\\".';
+$wb['udp_ports_error_regex'] = 'Tegn ikke tilladt i udp port definition. Tilladt tegn er tal, \\":\\" og \\",\\".';
 ?>
diff --git a/interface/web/admin/lib/lang/dk_server_config.lng b/interface/web/admin/lib/lang/dk_server_config.lng
index a4e0a12d9f..73e7ef1bfd 100644
--- a/interface/web/admin/lib/lang/dk_server_config.lng
+++ b/interface/web/admin/lib/lang/dk_server_config.lng
@@ -152,7 +152,7 @@ $wb['try_rescue_txt'] = 'Aktiver overvågnings service og genstarte ved fejl';
 $wb['do_not_try_rescue_httpd_txt'] = 'Deaktiver HTTPD monitoring';
 $wb['do_not_try_rescue_mysql_txt'] = 'Deaktiver MySQL monitoring';
 $wb['do_not_try_rescue_mail_txt'] = 'Deaktiver E-mail monitoring';
-$wb['rescue_description_txt'] = '<b>Information:</b> Hvis du ønsker nedlukning af mysql skal du vælge \"Deaktiver MySQL monitor\" afkrydsningsfeltet og derefter vente 2-3 minutter.<br>Hvis du ikke vente 2-3 minutter, vil redning forsøge at genstarte mysql!';
+$wb['rescue_description_txt'] = '<b>Information:</b> Hvis du ønsker nedlukning af mysql skal du vælge \\"Deaktiver MySQL monitor\\" afkrydsningsfeltet og derefter vente 2-3 minutter.<br>Hvis du ikke vente 2-3 minutter, vil redning forsøge at genstarte mysql!';
 $wb['enable_sni_txt'] = 'Enable SNI';
 $wb['set_folder_permissions_on_update_txt'] = 'Indstil mappe tilladelser ved opdatering';
 $wb['add_web_users_to_sshusers_group_txt'] = 'Tilføj web-brugere til -sshusers- gruppe';
@@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
 $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode';
+$wb['content_filter_txt'] = 'Content Filter';
+$wb['rspamd_url_txt'] = 'Rspamd URL';
+$wb['rspamd_user_txt'] = 'Rspamd User';
+$wb['rspamd_password_txt'] = 'Rspamd Password';
 ?>
diff --git a/interface/web/admin/lib/lang/dk_system_config.lng b/interface/web/admin/lib/lang/dk_system_config.lng
index 75e55f1eb0..26b0fe7e78 100644
--- a/interface/web/admin/lib/lang/dk_system_config.lng
+++ b/interface/web/admin/lib/lang/dk_system_config.lng
@@ -64,7 +64,7 @@ $wb['customer_no_template_error_regex_txt'] = 'Kunde Nr. skabelon indeholder ugy
 $wb['customer_no_start_txt'] = 'Kunde Nr. start værdi';
 $wb['customer_no_counter_txt'] = 'Kunde Nr. tæller';
 $wb['session_timeout_txt'] = 'Session timeout (minutter)';
-$wb['session_allow_endless_txt'] = 'Aktiver \"forbliv logget ind\"';
+$wb['session_allow_endless_txt'] = 'Aktiver \\"forbliv logget ind\\"';
 $wb['No'] = 'No';
 $wb['min_password_length_txt'] = 'Minimum adgangskode længde';
 $wb['min_password_strength_txt'] = 'Minimum adgangskode styrke';
diff --git a/interface/web/admin/lib/lang/dk_users.lng b/interface/web/admin/lib/lang/dk_users.lng
index a70cc1dbf1..2e86ab4ca9 100644
--- a/interface/web/admin/lib/lang/dk_users.lng
+++ b/interface/web/admin/lib/lang/dk_users.lng
@@ -29,7 +29,7 @@ $wb['generate_password_txt'] = 'Generer Adgangskode';
 $wb['repeat_password_txt'] = 'Gentage Adgangskode';
 $wb['password_mismatch_txt'] = 'Adgangskoderne stemmer ikke overens.';
 $wb['password_match_txt'] = 'Adgangskoderne stemmer overens.';
-$wb['username_error_collision'] = 'Brugernavn må ikke være web eller web plus et tal.\"';
+$wb['username_error_collision'] = 'Brugernavn må ikke være web eller web plus et tal.\\"';
 $wb['client_not_admin_err'] = 'En bruger der hører til en klient kan ikke indstilles til typen: admin';
 $wb['lost_password_function_txt'] = 'Forgot password function is available';
 $wb['no_user_insert'] = 'CP-Users of type -user- get added and updated automatically when you add a client or reseller.';
diff --git a/interface/web/admin/lib/lang/el_server_config.lng b/interface/web/admin/lib/lang/el_server_config.lng
index ae0efc9e31..84992261bb 100644
--- a/interface/web/admin/lib/lang/el_server_config.lng
+++ b/interface/web/admin/lib/lang/el_server_config.lng
@@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
 $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode';
+$wb['content_filter_txt'] = 'Content Filter';
+$wb['rspamd_url_txt'] = 'Rspamd URL';
+$wb['rspamd_user_txt'] = 'Rspamd User';
+$wb['rspamd_password_txt'] = 'Rspamd Password';
 ?>
diff --git a/interface/web/admin/lib/lang/el_system_config.lng b/interface/web/admin/lib/lang/el_system_config.lng
index 80ddaca144..640d6f00a9 100644
--- a/interface/web/admin/lib/lang/el_system_config.lng
+++ b/interface/web/admin/lib/lang/el_system_config.lng
@@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain
 $wb['customer_no_start_txt'] = 'Customer No. start value';
 $wb['customer_no_counter_txt'] = 'Customer No. counter';
 $wb['session_timeout_txt'] = 'Session timeout (minutes)';
-$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"';
+$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
 $wb['No'] = 'No';
 $wb['min_password_length_txt'] = 'Minimum password length';
 $wb['min_password_strength_txt'] = 'Minimum password strength';
diff --git a/interface/web/admin/lib/lang/el_users.lng b/interface/web/admin/lib/lang/el_users.lng
index e5ce7a8792..f0307b95ec 100644
--- a/interface/web/admin/lib/lang/el_users.lng
+++ b/interface/web/admin/lib/lang/el_users.lng
@@ -29,7 +29,7 @@ $wb['generate_password_txt'] = 'Generate Password';
 $wb['repeat_password_txt'] = 'Repeat Password';
 $wb['password_mismatch_txt'] = 'The passwords do not match.';
 $wb['password_match_txt'] = 'The passwords do match.';
-$wb['username_error_collision'] = 'The username may not be web or web plus a number.\"';
+$wb['username_error_collision'] = 'The username may not be web or web plus a number.\\"';
 $wb['client_not_admin_err'] = 'A user that belongs to a client can not be set to type: admin';
 $wb['lost_password_function_txt'] = 'Forgot password function is available';
 $wb['no_user_insert'] = 'CP-Users of type -user- get added and updated automatically when you add a client or reseller.';
diff --git a/interface/web/admin/lib/lang/es_firewall.lng b/interface/web/admin/lib/lang/es_firewall.lng
index db09b57844..81cad3c0aa 100755
--- a/interface/web/admin/lib/lang/es_firewall.lng
+++ b/interface/web/admin/lib/lang/es_firewall.lng
@@ -4,8 +4,8 @@ $wb['firewall_error_unique'] = 'Ya existe un registro de cortafuegos para este s
 $wb['server_id_txt'] = 'Servidor';
 $wb['tcp_port_help_txt'] = 'Separados por coma';
 $wb['tcp_port_txt'] = 'Puertos TCP abiertos';
-$wb['tcp_ports_error_regex'] = 'Caracteres no permitidos en la definición de puertos tcp. Los caracteres permitidos son: números, \":\" y \",\".';
+$wb['tcp_ports_error_regex'] = 'Caracteres no permitidos en la definición de puertos tcp. Los caracteres permitidos son: números, \\":\\" y \\",\\".';
 $wb['udp_port_help_txt'] = 'Separados por coma';
 $wb['udp_port_txt'] = 'Puertos UDP abiertos';
-$wb['udp_ports_error_regex'] = 'Caracteres no permitidos en la definición de puertos udp. Los caracteres permitidos son: números, \":\" y \",\".';
+$wb['udp_ports_error_regex'] = 'Caracteres no permitidos en la definición de puertos udp. Los caracteres permitidos son: números, \\":\\" y \\",\\".';
 ?>
diff --git a/interface/web/admin/lib/lang/es_server_config.lng b/interface/web/admin/lib/lang/es_server_config.lng
index 01c9978ae1..01350367ae 100755
--- a/interface/web/admin/lib/lang/es_server_config.lng
+++ b/interface/web/admin/lib/lang/es_server_config.lng
@@ -228,7 +228,7 @@ $wb['reject_sender_login_mismatch_txt'] = 'Rechazar remitente e inicio de sesió
 $wb['relayhost_password_txt'] = 'Contraseña del servidor de retransmisión';
 $wb['relayhost_txt'] = 'Servidor de retransmisión';
 $wb['relayhost_user_txt'] = 'Usuario del servidor de retransmisión';
-$wb['rescue_description_txt'] = '<b>Información:</b> Si desea detener el servicio de MySQL debe seleccionar la casilla \"Deshabilitar monitorización de MySQL\" y luego esperar 2-3 minutos.<br>Si no espera 2-3 minutos, el rescatador intentará reiniciar el servicio';
+$wb['rescue_description_txt'] = '<b>Información:</b> Si desea detener el servicio de MySQL debe seleccionar la casilla \\"Deshabilitar monitorización de MySQL\\" y luego esperar 2-3 minutos.<br>Si no espera 2-3 minutos, el rescatador intentará reiniciar el servicio';
 $wb['security_level_txt'] = 'Nivel de seguridad';
 $wb['server_type_txt'] = 'Tipo de servidor';
 $wb['set_folder_permissions_on_update_txt'] = 'Establecer permisos de carpetas al actualizar';
@@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
 $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode';
+$wb['content_filter_txt'] = 'Content Filter';
+$wb['rspamd_url_txt'] = 'Rspamd URL';
+$wb['rspamd_user_txt'] = 'Rspamd User';
+$wb['rspamd_password_txt'] = 'Rspamd Password';
 ?>
diff --git a/interface/web/admin/lib/lang/es_system_config.lng b/interface/web/admin/lib/lang/es_system_config.lng
index b927ab043f..043c52cfdd 100755
--- a/interface/web/admin/lib/lang/es_system_config.lng
+++ b/interface/web/admin/lib/lang/es_system_config.lng
@@ -7,7 +7,7 @@ $wb['available_dashlets_note_txt'] = 'Componentes disponibles:';
 $wb['backups_include_into_web_quota_txt'] = 'Incluir archivos de copia de seguridad en la cuota web.';
 $wb['client_dashlets_left_txt'] = 'Componentes del cliente a la izquierda';
 $wb['client_dashlets_right_txt'] = 'Componentes del cliente a la derecha';
-$wb['client_username_web_check_disabled_txt'] = 'Desactivar la comprobación de la palabra \"web\" en los nombres de clientes.';
+$wb['client_username_web_check_disabled_txt'] = 'Desactivar la comprobación de la palabra \\"web\\" en los nombres de clientes.';
 $wb['company_name_txt'] = 'Nombre de la compañía para el título de la página';
 $wb['custom_login_link_txt'] = 'Enlace personalizado para la página de Inicio de Sesión';
 $wb['custom_login_text_txt'] = 'Texto personalizado para la página de Inicio de Sesión';
@@ -51,7 +51,7 @@ $wb['phpmyadmin_url_txt'] = 'Enlace a phpMyAdmin';
 $wb['reseller_can_use_options_txt'] = 'El revendedor puede utilizar la pestaña opciones para los sitios webs';
 $wb['reseller_dashlets_left_txt'] = 'Componentes de revendedores a la izquierda';
 $wb['reseller_dashlets_right_txt'] = 'Componentes de revendedores a la derecha';
-$wb['session_allow_endless_txt'] = 'Habilitar \"mantenerme conectado\"';
+$wb['session_allow_endless_txt'] = 'Habilitar \\"mantenerme conectado\\"';
 $wb['session_timeout_txt'] = 'Tiempo límite de sesión (minutos)';
 $wb['shelluser_prefix_error_regex'] = 'Carácter no permitido en el prefijo de usuario del shell.';
 $wb['shelluser_prefix_txt'] = 'Prefijo del usuario del Shell';
diff --git a/interface/web/admin/lib/lang/fi_server_config.lng b/interface/web/admin/lib/lang/fi_server_config.lng
index c1e43b276b..6caf643abe 100755
--- a/interface/web/admin/lib/lang/fi_server_config.lng
+++ b/interface/web/admin/lib/lang/fi_server_config.lng
@@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
 $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode';
+$wb['content_filter_txt'] = 'Content Filter';
+$wb['rspamd_url_txt'] = 'Rspamd URL';
+$wb['rspamd_user_txt'] = 'Rspamd User';
+$wb['rspamd_password_txt'] = 'Rspamd Password';
 ?>
diff --git a/interface/web/admin/lib/lang/fi_system_config.lng b/interface/web/admin/lib/lang/fi_system_config.lng
index 72e7aaa2e6..c0972c49d8 100644
--- a/interface/web/admin/lib/lang/fi_system_config.lng
+++ b/interface/web/admin/lib/lang/fi_system_config.lng
@@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain
 $wb['customer_no_start_txt'] = 'Customer No. start value';
 $wb['customer_no_counter_txt'] = 'Customer No. counter';
 $wb['session_timeout_txt'] = 'Session timeout (minutes)';
-$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"';
+$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
 $wb['No'] = 'No';
 $wb['min_password_length_txt'] = 'Minimum password length';
 $wb['min_password_strength_txt'] = 'Minimum password strength';
diff --git a/interface/web/admin/lib/lang/fi_users.lng b/interface/web/admin/lib/lang/fi_users.lng
index 4fde01b87c..199601f520 100755
--- a/interface/web/admin/lib/lang/fi_users.lng
+++ b/interface/web/admin/lib/lang/fi_users.lng
@@ -29,7 +29,7 @@ $wb['generate_password_txt'] = 'Generate Password';
 $wb['repeat_password_txt'] = 'Repeat Password';
 $wb['password_mismatch_txt'] = 'The passwords do not match.';
 $wb['password_match_txt'] = 'The passwords do match.';
-$wb['username_error_collision'] = 'The username may not be web or web plus a number.\"';
+$wb['username_error_collision'] = 'The username may not be web or web plus a number.\\"';
 $wb['client_not_admin_err'] = 'A user that belongs to a client can not be set to type: admin';
 $wb['lost_password_function_txt'] = 'Forgot password function is available';
 $wb['no_user_insert'] = 'CP-Users of type -user- get added and updated automatically when you add a client or reseller.';
diff --git a/interface/web/admin/lib/lang/fr_remote_action.lng b/interface/web/admin/lib/lang/fr_remote_action.lng
index 0072271d69..bb3443b40a 100644
--- a/interface/web/admin/lib/lang/fr_remote_action.lng
+++ b/interface/web/admin/lib/lang/fr_remote_action.lng
@@ -8,5 +8,5 @@ $wb['do_ispcupdate_desc'] = 'Cette action met à jour ISPConfig3 sur le serveur
 $wb['action_scheduled'] = 'L’action est marquée pour exécution';
 $wb['select_all_server'] = 'Tout serveur';
 $wb['ispconfig_update_title'] = 'ISPConfig update instructions';
-$wb['ispconfig_update_text'] = 'Login as root user on the shell of your server and execute the command<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />to start the ISPConfig update.<br /><br /><a href=\"http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/\" target=\"_blank\">Click here for detailed update instructions</a>';
+$wb['ispconfig_update_text'] = 'Login as root user on the shell of your server and execute the command<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />to start the ISPConfig update.<br /><br /><a href=\\"http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/\\" target=\\"_blank\\">Click here for detailed update instructions</a>';
 ?>
diff --git a/interface/web/admin/lib/lang/fr_server_config.lng b/interface/web/admin/lib/lang/fr_server_config.lng
index 418f633670..25f7375688 100644
--- a/interface/web/admin/lib/lang/fr_server_config.lng
+++ b/interface/web/admin/lib/lang/fr_server_config.lng
@@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
 $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode';
+$wb['content_filter_txt'] = 'Content Filter';
+$wb['rspamd_url_txt'] = 'Rspamd URL';
+$wb['rspamd_user_txt'] = 'Rspamd User';
+$wb['rspamd_password_txt'] = 'Rspamd Password';
 ?>
diff --git a/interface/web/admin/lib/lang/fr_system_config.lng b/interface/web/admin/lib/lang/fr_system_config.lng
index df90e03011..18f0dbbed4 100644
--- a/interface/web/admin/lib/lang/fr_system_config.lng
+++ b/interface/web/admin/lib/lang/fr_system_config.lng
@@ -64,7 +64,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain
 $wb['customer_no_start_txt'] = 'Customer No. start value';
 $wb['customer_no_counter_txt'] = 'Customer No. counter';
 $wb['session_timeout_txt'] = 'Session timeout (minutes)';
-$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"';
+$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
 $wb['No'] = 'No';
 $wb['min_password_length_txt'] = 'Minimum password length';
 $wb['min_password_strength_txt'] = 'Minimum password strength';
diff --git a/interface/web/admin/lib/lang/hr_server_config.lng b/interface/web/admin/lib/lang/hr_server_config.lng
index 78d9a57a5b..faf08f4201 100644
--- a/interface/web/admin/lib/lang/hr_server_config.lng
+++ b/interface/web/admin/lib/lang/hr_server_config.lng
@@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
 $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode';
+$wb['content_filter_txt'] = 'Content Filter';
+$wb['rspamd_url_txt'] = 'Rspamd URL';
+$wb['rspamd_user_txt'] = 'Rspamd User';
+$wb['rspamd_password_txt'] = 'Rspamd Password';
 ?>
diff --git a/interface/web/admin/lib/lang/hr_system_config.lng b/interface/web/admin/lib/lang/hr_system_config.lng
index a8b44528c6..a7735647b1 100644
--- a/interface/web/admin/lib/lang/hr_system_config.lng
+++ b/interface/web/admin/lib/lang/hr_system_config.lng
@@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain
 $wb['customer_no_start_txt'] = 'Customer No. start value';
 $wb['customer_no_counter_txt'] = 'Customer No. counter';
 $wb['session_timeout_txt'] = 'Session timeout (minutes)';
-$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"';
+$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
 $wb['No'] = 'No';
 $wb['min_password_length_txt'] = 'Minimum password length';
 $wb['min_password_strength_txt'] = 'Minimum password strength';
diff --git a/interface/web/admin/lib/lang/hr_users.lng b/interface/web/admin/lib/lang/hr_users.lng
index 52f0bdff34..7be3f968f2 100644
--- a/interface/web/admin/lib/lang/hr_users.lng
+++ b/interface/web/admin/lib/lang/hr_users.lng
@@ -29,7 +29,7 @@ $wb['generate_password_txt'] = 'Generiraj Å¡ifru';
 $wb['repeat_password_txt'] = 'Ponovi Å¡ifru';
 $wb['password_mismatch_txt'] = 'Šifre nisu identične.';
 $wb['password_match_txt'] = 'Šifre su identične.';
-$wb['username_error_collision'] = 'Korisničko ime ne može biti web ili web sa brojem.\"';
+$wb['username_error_collision'] = 'Korisničko ime ne može biti web ili web sa brojem.\\"';
 $wb['client_not_admin_err'] = 'Korisnik koji je u grupi klijenti ne može biti admin';
 $wb['lost_password_function_txt'] = 'Forgot password function is available';
 $wb['no_user_insert'] = 'CP-Users of type -user- get added and updated automatically when you add a client or reseller.';
diff --git a/interface/web/admin/lib/lang/hr_users_list.lng b/interface/web/admin/lib/lang/hr_users_list.lng
index 7725ce2b96..c102e5f7f5 100644
--- a/interface/web/admin/lib/lang/hr_users_list.lng
+++ b/interface/web/admin/lib/lang/hr_users_list.lng
@@ -4,6 +4,6 @@ $wb['username_txt'] = 'Korisničko ime';
 $wb['client_id_txt'] = 'Client ID';
 $wb['active_txt'] = 'Active';
 $wb['add_new_record_txt'] = 'Dodaj klijenta';
-$wb['warning_txt'] = '<b>UPOZORENJE:</b> Ovdje nemojte mijenjati podatke klijenta. Koristite \"Klijent\" i \"Preprodavač\" postavke u Klijent modulu. Mijenjanjem postavki klijenata ili grupa može doći do gubitka podataka!';
+$wb['warning_txt'] = '<b>UPOZORENJE:</b> Ovdje nemojte mijenjati podatke klijenta. Koristite \\"Klijent\\" i \\"Preprodavač\\" postavke u Klijent modulu. Mijenjanjem postavki klijenata ili grupa može doći do gubitka podataka!';
 $wb['groups_txt'] = 'Groups';
 ?>
diff --git a/interface/web/admin/lib/lang/hu_server_config.lng b/interface/web/admin/lib/lang/hu_server_config.lng
index c2adb3efb2..6347afb7da 100644
--- a/interface/web/admin/lib/lang/hu_server_config.lng
+++ b/interface/web/admin/lib/lang/hu_server_config.lng
@@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
 $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode';
+$wb['content_filter_txt'] = 'Content Filter';
+$wb['rspamd_url_txt'] = 'Rspamd URL';
+$wb['rspamd_user_txt'] = 'Rspamd User';
+$wb['rspamd_password_txt'] = 'Rspamd Password';
 ?>
diff --git a/interface/web/admin/lib/lang/hu_system_config.lng b/interface/web/admin/lib/lang/hu_system_config.lng
index e983379e3f..cee497fe19 100644
--- a/interface/web/admin/lib/lang/hu_system_config.lng
+++ b/interface/web/admin/lib/lang/hu_system_config.lng
@@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain
 $wb['customer_no_start_txt'] = 'Customer No. start value';
 $wb['customer_no_counter_txt'] = 'Customer No. counter';
 $wb['session_timeout_txt'] = 'Session timeout (minutes)';
-$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"';
+$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
 $wb['No'] = 'No';
 $wb['min_password_length_txt'] = 'Minimum password length';
 $wb['min_password_strength_txt'] = 'Minimum password strength';
diff --git a/interface/web/admin/lib/lang/hu_users.lng b/interface/web/admin/lib/lang/hu_users.lng
index 05f3554dfd..e2cf25fb79 100644
--- a/interface/web/admin/lib/lang/hu_users.lng
+++ b/interface/web/admin/lib/lang/hu_users.lng
@@ -29,7 +29,7 @@ $wb['generate_password_txt'] = 'Generate Password';
 $wb['repeat_password_txt'] = 'Repeat Password';
 $wb['password_mismatch_txt'] = 'The passwords do not match.';
 $wb['password_match_txt'] = 'The passwords do match.';
-$wb['username_error_collision'] = 'The username may not be web or web plus a number.\"';
+$wb['username_error_collision'] = 'The username may not be web or web plus a number.\\"';
 $wb['client_not_admin_err'] = 'A user that belongs to a client can not be set to type: admin';
 $wb['lost_password_function_txt'] = 'Forgot password function is available';
 $wb['no_user_insert'] = 'CP-Users of type -user- get added and updated automatically when you add a client or reseller.';
diff --git a/interface/web/admin/lib/lang/id_server_config.lng b/interface/web/admin/lib/lang/id_server_config.lng
index 36f3cd8535..9a28dff300 100644
--- a/interface/web/admin/lib/lang/id_server_config.lng
+++ b/interface/web/admin/lib/lang/id_server_config.lng
@@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
 $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode';
+$wb['content_filter_txt'] = 'Content Filter';
+$wb['rspamd_url_txt'] = 'Rspamd URL';
+$wb['rspamd_user_txt'] = 'Rspamd User';
+$wb['rspamd_password_txt'] = 'Rspamd Password';
 ?>
diff --git a/interface/web/admin/lib/lang/id_system_config.lng b/interface/web/admin/lib/lang/id_system_config.lng
index 41dd67fbac..344185b84d 100644
--- a/interface/web/admin/lib/lang/id_system_config.lng
+++ b/interface/web/admin/lib/lang/id_system_config.lng
@@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain
 $wb['customer_no_start_txt'] = 'Customer No. start value';
 $wb['customer_no_counter_txt'] = 'Customer No. counter';
 $wb['session_timeout_txt'] = 'Session timeout (minutes)';
-$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"';
+$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
 $wb['No'] = 'No';
 $wb['min_password_length_txt'] = 'Minimum password length';
 $wb['min_password_strength_txt'] = 'Minimum password strength';
diff --git a/interface/web/admin/lib/lang/id_users.lng b/interface/web/admin/lib/lang/id_users.lng
index f5ae7efea5..f9e961192c 100644
--- a/interface/web/admin/lib/lang/id_users.lng
+++ b/interface/web/admin/lib/lang/id_users.lng
@@ -29,7 +29,7 @@ $wb['generate_password_txt'] = 'Generate Password';
 $wb['repeat_password_txt'] = 'Repeat Password';
 $wb['password_mismatch_txt'] = 'The passwords do not match.';
 $wb['password_match_txt'] = 'The passwords do match.';
-$wb['username_error_collision'] = 'The username may not be web or web plus a number.\"';
+$wb['username_error_collision'] = 'The username may not be web or web plus a number.\\"';
 $wb['client_not_admin_err'] = 'A user that belongs to a client can not be set to type: admin';
 $wb['lost_password_function_txt'] = 'Forgot password function is available';
 $wb['no_user_insert'] = 'CP-Users of type -user- get added and updated automatically when you add a client or reseller.';
diff --git a/interface/web/admin/lib/lang/it_server_config.lng b/interface/web/admin/lib/lang/it_server_config.lng
index 766b7fb1ae..3dc37a3c1d 100644
--- a/interface/web/admin/lib/lang/it_server_config.lng
+++ b/interface/web/admin/lib/lang/it_server_config.lng
@@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
 $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode';
+$wb['content_filter_txt'] = 'Content Filter';
+$wb['rspamd_url_txt'] = 'Rspamd URL';
+$wb['rspamd_user_txt'] = 'Rspamd User';
+$wb['rspamd_password_txt'] = 'Rspamd Password';
 ?>
diff --git a/interface/web/admin/lib/lang/it_system_config.lng b/interface/web/admin/lib/lang/it_system_config.lng
index 35e625bd2a..311b7c957c 100644
--- a/interface/web/admin/lib/lang/it_system_config.lng
+++ b/interface/web/admin/lib/lang/it_system_config.lng
@@ -64,7 +64,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain
 $wb['customer_no_start_txt'] = 'Customer No. start value';
 $wb['customer_no_counter_txt'] = 'Customer No. counter';
 $wb['session_timeout_txt'] = 'Session timeout (minutes)';
-$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"';
+$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
 $wb['No'] = 'No';
 $wb['min_password_length_txt'] = 'Minimum password length';
 $wb['min_password_strength_txt'] = 'Minimum password strength';
diff --git a/interface/web/admin/lib/lang/it_users.lng b/interface/web/admin/lib/lang/it_users.lng
index be1294cdbe..1bde73a67b 100644
--- a/interface/web/admin/lib/lang/it_users.lng
+++ b/interface/web/admin/lib/lang/it_users.lng
@@ -29,7 +29,7 @@ $wb['generate_password_txt'] = 'Genera Password';
 $wb['repeat_password_txt'] = 'Ripeti Password';
 $wb['password_mismatch_txt'] = 'Le password non coincidono.';
 $wb['password_match_txt'] = 'Le password coincidono.';
-$wb['username_error_collision'] = 'The username may not be web or web plus a number.\"';
+$wb['username_error_collision'] = 'The username may not be web or web plus a number.\\"';
 $wb['client_not_admin_err'] = 'A user that belongs to a client can not be set to type: admin';
 $wb['lost_password_function_txt'] = 'Forgot password function is available';
 $wb['no_user_insert'] = 'CP-Users of type -user- get added and updated automatically when you add a client or reseller.';
diff --git a/interface/web/admin/lib/lang/ja_server_config.lng b/interface/web/admin/lib/lang/ja_server_config.lng
index ccabb127e6..72bef72c4b 100644
--- a/interface/web/admin/lib/lang/ja_server_config.lng
+++ b/interface/web/admin/lib/lang/ja_server_config.lng
@@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
 $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode';
+$wb['content_filter_txt'] = 'Content Filter';
+$wb['rspamd_url_txt'] = 'Rspamd URL';
+$wb['rspamd_user_txt'] = 'Rspamd User';
+$wb['rspamd_password_txt'] = 'Rspamd Password';
 ?>
diff --git a/interface/web/admin/lib/lang/ja_system_config.lng b/interface/web/admin/lib/lang/ja_system_config.lng
index 494f90dd3e..aa5cc6a7a3 100644
--- a/interface/web/admin/lib/lang/ja_system_config.lng
+++ b/interface/web/admin/lib/lang/ja_system_config.lng
@@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain
 $wb['customer_no_start_txt'] = 'Customer No. start value';
 $wb['customer_no_counter_txt'] = 'Customer No. counter';
 $wb['session_timeout_txt'] = 'Session timeout (minutes)';
-$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"';
+$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
 $wb['No'] = 'No';
 $wb['min_password_length_txt'] = 'Minimum password length';
 $wb['min_password_strength_txt'] = 'Minimum password strength';
diff --git a/interface/web/admin/lib/lang/ja_users.lng b/interface/web/admin/lib/lang/ja_users.lng
index 2e6ad9fb72..64f8339ffa 100644
--- a/interface/web/admin/lib/lang/ja_users.lng
+++ b/interface/web/admin/lib/lang/ja_users.lng
@@ -29,7 +29,7 @@ $wb['generate_password_txt'] = 'Generate Password';
 $wb['repeat_password_txt'] = 'Repeat Password';
 $wb['password_mismatch_txt'] = 'The passwords do not match.';
 $wb['password_match_txt'] = 'The passwords do match.';
-$wb['username_error_collision'] = 'The username may not be web or web plus a number.\"';
+$wb['username_error_collision'] = 'The username may not be web or web plus a number.\\"';
 $wb['client_not_admin_err'] = 'A user that belongs to a client can not be set to type: admin';
 $wb['lost_password_function_txt'] = 'Forgot password function is available';
 $wb['no_user_insert'] = 'CP-Users of type -user- get added and updated automatically when you add a client or reseller.';
diff --git a/interface/web/admin/lib/lang/nl_server_config.lng b/interface/web/admin/lib/lang/nl_server_config.lng
index 187ea86ec1..2884f304ec 100644
--- a/interface/web/admin/lib/lang/nl_server_config.lng
+++ b/interface/web/admin/lib/lang/nl_server_config.lng
@@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
 $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode';
+$wb['content_filter_txt'] = 'Content Filter';
+$wb['rspamd_url_txt'] = 'Rspamd URL';
+$wb['rspamd_user_txt'] = 'Rspamd User';
+$wb['rspamd_password_txt'] = 'Rspamd Password';
 ?>
diff --git a/interface/web/admin/lib/lang/nl_system_config.lng b/interface/web/admin/lib/lang/nl_system_config.lng
index 89e3ff8e47..44a58b7646 100644
--- a/interface/web/admin/lib/lang/nl_system_config.lng
+++ b/interface/web/admin/lib/lang/nl_system_config.lng
@@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain
 $wb['customer_no_start_txt'] = 'Customer No. start value';
 $wb['customer_no_counter_txt'] = 'Customer No. counter';
 $wb['session_timeout_txt'] = 'Session timeout (minutes)';
-$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"';
+$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
 $wb['No'] = 'No';
 $wb['min_password_length_txt'] = 'Minimum password length';
 $wb['min_password_strength_txt'] = 'Minimum password strength';
diff --git a/interface/web/admin/lib/lang/nl_users.lng b/interface/web/admin/lib/lang/nl_users.lng
index 782bfc5f90..1e6d4ef586 100644
--- a/interface/web/admin/lib/lang/nl_users.lng
+++ b/interface/web/admin/lib/lang/nl_users.lng
@@ -29,7 +29,7 @@ $wb['generate_password_txt'] = 'Generate Password';
 $wb['repeat_password_txt'] = 'Repeat Password';
 $wb['password_mismatch_txt'] = 'The passwords do not match.';
 $wb['password_match_txt'] = 'The passwords do match.';
-$wb['username_error_collision'] = 'The username may not be web or web plus a number.\"';
+$wb['username_error_collision'] = 'The username may not be web or web plus a number.\\"';
 $wb['client_not_admin_err'] = 'A user that belongs to a client can not be set to type: admin';
 $wb['lost_password_function_txt'] = 'Forgot password function is available';
 $wb['no_user_insert'] = 'CP-Users of type -user- get added and updated automatically when you add a client or reseller.';
diff --git a/interface/web/admin/lib/lang/pl_server_config.lng b/interface/web/admin/lib/lang/pl_server_config.lng
index a50e27b33e..29cb94e96c 100644
--- a/interface/web/admin/lib/lang/pl_server_config.lng
+++ b/interface/web/admin/lib/lang/pl_server_config.lng
@@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
 $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode';
+$wb['content_filter_txt'] = 'Content Filter';
+$wb['rspamd_url_txt'] = 'Rspamd URL';
+$wb['rspamd_user_txt'] = 'Rspamd User';
+$wb['rspamd_password_txt'] = 'Rspamd Password';
 ?>
diff --git a/interface/web/admin/lib/lang/pl_system_config.lng b/interface/web/admin/lib/lang/pl_system_config.lng
index bbbbf95ec7..a809251ec1 100644
--- a/interface/web/admin/lib/lang/pl_system_config.lng
+++ b/interface/web/admin/lib/lang/pl_system_config.lng
@@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain
 $wb['customer_no_start_txt'] = 'Customer No. start value';
 $wb['customer_no_counter_txt'] = 'Customer No. counter';
 $wb['session_timeout_txt'] = 'Session timeout (minutes)';
-$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"';
+$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
 $wb['No'] = 'No';
 $wb['min_password_length_txt'] = 'Minimum password length';
 $wb['min_password_strength_txt'] = 'Minimum password strength';
diff --git a/interface/web/admin/lib/lang/pt_server_config.lng b/interface/web/admin/lib/lang/pt_server_config.lng
index 96c16d3a2c..3703c759ed 100644
--- a/interface/web/admin/lib/lang/pt_server_config.lng
+++ b/interface/web/admin/lib/lang/pt_server_config.lng
@@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
 $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode';
+$wb['content_filter_txt'] = 'Content Filter';
+$wb['rspamd_url_txt'] = 'Rspamd URL';
+$wb['rspamd_user_txt'] = 'Rspamd User';
+$wb['rspamd_password_txt'] = 'Rspamd Password';
 ?>
diff --git a/interface/web/admin/lib/lang/pt_system_config.lng b/interface/web/admin/lib/lang/pt_system_config.lng
index a72ca0e954..6fc26344c0 100644
--- a/interface/web/admin/lib/lang/pt_system_config.lng
+++ b/interface/web/admin/lib/lang/pt_system_config.lng
@@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain
 $wb['customer_no_start_txt'] = 'Customer No. start value';
 $wb['customer_no_counter_txt'] = 'Customer No. counter';
 $wb['session_timeout_txt'] = 'Session timeout (minutes)';
-$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"';
+$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
 $wb['No'] = 'No';
 $wb['min_password_length_txt'] = 'Minimum password length';
 $wb['min_password_strength_txt'] = 'Minimum password strength';
diff --git a/interface/web/admin/lib/lang/pt_users.lng b/interface/web/admin/lib/lang/pt_users.lng
index b53790e6fa..67cfe4f572 100644
--- a/interface/web/admin/lib/lang/pt_users.lng
+++ b/interface/web/admin/lib/lang/pt_users.lng
@@ -29,7 +29,7 @@ $wb['generate_password_txt'] = 'Generate Password';
 $wb['repeat_password_txt'] = 'Repeat Password';
 $wb['password_mismatch_txt'] = 'The passwords do not match.';
 $wb['password_match_txt'] = 'The passwords do match.';
-$wb['username_error_collision'] = 'The username may not be web or web plus a number.\"';
+$wb['username_error_collision'] = 'The username may not be web or web plus a number.\\"';
 $wb['client_not_admin_err'] = 'A user that belongs to a client can not be set to type: admin';
 $wb['lost_password_function_txt'] = 'Forgot password function is available';
 $wb['no_user_insert'] = 'CP-Users of type -user- get added and updated automatically when you add a client or reseller.';
diff --git a/interface/web/admin/lib/lang/ro_server_config.lng b/interface/web/admin/lib/lang/ro_server_config.lng
index 239a87dc74..3251476126 100644
--- a/interface/web/admin/lib/lang/ro_server_config.lng
+++ b/interface/web/admin/lib/lang/ro_server_config.lng
@@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
 $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode';
+$wb['content_filter_txt'] = 'Content Filter';
+$wb['rspamd_url_txt'] = 'Rspamd URL';
+$wb['rspamd_user_txt'] = 'Rspamd User';
+$wb['rspamd_password_txt'] = 'Rspamd Password';
 ?>
diff --git a/interface/web/admin/lib/lang/ro_system_config.lng b/interface/web/admin/lib/lang/ro_system_config.lng
index 93ccf39477..2a39a454e8 100644
--- a/interface/web/admin/lib/lang/ro_system_config.lng
+++ b/interface/web/admin/lib/lang/ro_system_config.lng
@@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain
 $wb['customer_no_start_txt'] = 'Customer No. start value';
 $wb['customer_no_counter_txt'] = 'Customer No. counter';
 $wb['session_timeout_txt'] = 'Session timeout (minutes)';
-$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"';
+$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
 $wb['No'] = 'No';
 $wb['min_password_length_txt'] = 'Minimum password length';
 $wb['min_password_strength_txt'] = 'Minimum password strength';
diff --git a/interface/web/admin/lib/lang/ro_users.lng b/interface/web/admin/lib/lang/ro_users.lng
index 9d9923b631..dcbc4f4727 100644
--- a/interface/web/admin/lib/lang/ro_users.lng
+++ b/interface/web/admin/lib/lang/ro_users.lng
@@ -29,7 +29,7 @@ $wb['generate_password_txt'] = 'Generate Password';
 $wb['repeat_password_txt'] = 'Repeat Password';
 $wb['password_mismatch_txt'] = 'The passwords do not match.';
 $wb['password_match_txt'] = 'The passwords do match.';
-$wb['username_error_collision'] = 'The username may not be web or web plus a number.\"';
+$wb['username_error_collision'] = 'The username may not be web or web plus a number.\\"';
 $wb['client_not_admin_err'] = 'A user that belongs to a client can not be set to type: admin';
 $wb['lost_password_function_txt'] = 'Forgot password function is available';
 $wb['no_user_insert'] = 'CP-Users of type -user- get added and updated automatically when you add a client or reseller.';
diff --git a/interface/web/admin/lib/lang/ru_firewall.lng b/interface/web/admin/lib/lang/ru_firewall.lng
index c30f26f2e8..70beb30437 100644
--- a/interface/web/admin/lib/lang/ru_firewall.lng
+++ b/interface/web/admin/lib/lang/ru_firewall.lng
@@ -6,6 +6,6 @@ $wb['tcp_port_help_txt'] = 'Перечислить порты TCP через з
 $wb['udp_port_help_txt'] = 'Перечислить порты UDP через запятую';
 $wb['active_txt'] = 'Активно';
 $wb['firewall_error_unique'] = 'Уже есть такая запись брандмауэра для этого сервера.';
-$wb['tcp_ports_error_regex'] = 'Недопустимый символ в указании tcp порта. Корректные сиволы - цифры, \":\" и \",\"';
-$wb['udp_ports_error_regex'] = 'Некорректный символ в указании UDP порта. Допустимые сиволы - цифры, \":\" и \",\"';
+$wb['tcp_ports_error_regex'] = 'Недопустимый символ в указании tcp порта. Корректные сиволы - цифры, \\":\\" и \\",\\"';
+$wb['udp_ports_error_regex'] = 'Некорректный символ в указании UDP порта. Допустимые сиволы - цифры, \\":\\" и \\",\\"';
 ?>
diff --git a/interface/web/admin/lib/lang/ru_server_config.lng b/interface/web/admin/lib/lang/ru_server_config.lng
index ca66b325bc..b2f0b407d6 100644
--- a/interface/web/admin/lib/lang/ru_server_config.lng
+++ b/interface/web/admin/lib/lang/ru_server_config.lng
@@ -152,7 +152,7 @@ $wb['php_fpm_socket_dir_error_empty'] = 'Каталог PHP-FPM сокета п
 $wb['try_rescue_txt'] = 'Включить мониторинг службы и перезапуск при сбое';
 $wb['do_not_try_rescue_mysql_txt'] = 'Отключить мониторинг MySQL';
 $wb['do_not_try_rescue_mail_txt'] = 'Отключить мониторинг Email';
-$wb['rescue_description_txt'] = '<b>Информация:</b> Если вы хотите выключить MySQL, вы должны установить флажок \"Отключить мониторинг MySQL\" и подождать 2-3 минуты.<br>Если вы не подождёте 2-3 минуты, мониторинг будет пытаться перезапустить MySQL!';
+$wb['rescue_description_txt'] = '<b>Информация:</b> Если вы хотите выключить MySQL, вы должны установить флажок \\"Отключить мониторинг MySQL\\" и подождать 2-3 минуты.<br>Если вы не подождёте 2-3 минуты, мониторинг будет пытаться перезапустить MySQL!';
 $wb['enable_sni_txt'] = 'Включить SNI';
 $wb['do_not_try_rescue_httpd_txt'] = 'Отключить мониторинг HTTPD';
 $wb['set_folder_permissions_on_update_txt'] = 'Установить разрешения для папки на обновления';
@@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
 $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode';
+$wb['content_filter_txt'] = 'Content Filter';
+$wb['rspamd_url_txt'] = 'Rspamd URL';
+$wb['rspamd_user_txt'] = 'Rspamd User';
+$wb['rspamd_password_txt'] = 'Rspamd Password';
 ?>
diff --git a/interface/web/admin/lib/lang/ru_system_config.lng b/interface/web/admin/lib/lang/ru_system_config.lng
index 52324f3c77..baed497b0e 100644
--- a/interface/web/admin/lib/lang/ru_system_config.lng
+++ b/interface/web/admin/lib/lang/ru_system_config.lng
@@ -14,7 +14,7 @@ $wb['mailboxlist_webmail_link_txt'] = 'Ссылка на веб-почту в с
 $wb['webmail_url_txt'] = 'URL веб-почты';
 $wb['phpmyadmin_url_txt'] = 'URL PHPMyAdmin';
 $wb['use_domain_module_txt'] = 'Использовать модуль домена, чтобы добавить новые домены';
-$wb['use_domain_module_hint'] = 'При использовании этого модуля, Ваши клиенты смогут выбрать только один из доменов, созданных для них администратором. Они не могут свободно редактировать поле \"домен\". Чтобы сделать эти изменения видимыми, Вы должны выйти и повторно войти в панель после изменения этого значения.';
+$wb['use_domain_module_hint'] = 'При использовании этого модуля, Ваши клиенты смогут выбрать только один из доменов, созданных для них администратором. Они не могут свободно редактировать поле \\"домен\\". Чтобы сделать эти изменения видимыми, Вы должны выйти и повторно войти в панель после изменения этого значения.';
 $wb['new_domain_txt'] = 'HTML текст, чтобы создать новый домен';
 $wb['webdavuser_prefix_txt'] = 'Префикс пользователя WebDAV';
 $wb['webdavuser_prefix_error_regex'] = 'Некорректный символ в префиксе пользователя WebDAV.';
@@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'Шаблон номера Кли
 $wb['customer_no_start_txt'] = 'Начальное значение номера Клиента';
 $wb['customer_no_counter_txt'] = 'Счётчик номера Клиента';
 $wb['session_timeout_txt'] = 'Тайм-аут сессии (в минутах)';
-$wb['session_allow_endless_txt'] = 'Включить \"оставаться в системе\"';
+$wb['session_allow_endless_txt'] = 'Включить \\"оставаться в системе\\"';
 $wb['No'] = 'Нет';
 $wb['min_password_length_txt'] = 'Минимальная длина пароля';
 $wb['min_password_strength_txt'] = 'Минимальная стойкость пароля';
diff --git a/interface/web/admin/lib/lang/ru_users.lng b/interface/web/admin/lib/lang/ru_users.lng
index bd1b8034ff..63f081f917 100644
--- a/interface/web/admin/lib/lang/ru_users.lng
+++ b/interface/web/admin/lib/lang/ru_users.lng
@@ -29,7 +29,7 @@ $wb['generate_password_txt'] = 'Создать пароль';
 $wb['repeat_password_txt'] = 'Повторить пароль';
 $wb['password_mismatch_txt'] = 'Пароли не совпадают.';
 $wb['password_match_txt'] = 'Эти пароли совпадают.';
-$wb['username_error_collision'] = 'Имя пользователя не может начинаться со слова \"web\" или \"web\" плюс число.';
+$wb['username_error_collision'] = 'Имя пользователя не может начинаться со слова \\"web\\" или \\"web\\" плюс число.';
 $wb['client_not_admin_err'] = 'Пользователь, который принадлежит к клиенту не может быть установлен тип: admin';
 $wb['lost_password_function_txt'] = 'Функция восстановления пароля доступна';
 $wb['no_user_insert'] = 'CP-Users of type -user- get added and updated automatically when you add a client or reseller.';
diff --git a/interface/web/admin/lib/lang/se_server_config.lng b/interface/web/admin/lib/lang/se_server_config.lng
index c949c052ba..1103baa4d2 100644
--- a/interface/web/admin/lib/lang/se_server_config.lng
+++ b/interface/web/admin/lib/lang/se_server_config.lng
@@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
 $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode';
+$wb['content_filter_txt'] = 'Content Filter';
+$wb['rspamd_url_txt'] = 'Rspamd URL';
+$wb['rspamd_user_txt'] = 'Rspamd User';
+$wb['rspamd_password_txt'] = 'Rspamd Password';
 ?>
diff --git a/interface/web/admin/lib/lang/se_system_config.lng b/interface/web/admin/lib/lang/se_system_config.lng
index 0c5643bf4f..74ae16734f 100644
--- a/interface/web/admin/lib/lang/se_system_config.lng
+++ b/interface/web/admin/lib/lang/se_system_config.lng
@@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'Kundnummermallen innehåller otil
 $wb['customer_no_start_txt'] = 'Kundnummer startvärde';
 $wb['customer_no_counter_txt'] = 'Kundnummer räknare';
 $wb['session_timeout_txt'] = 'Session timeout (minuter)';
-$wb['session_allow_endless_txt'] = 'Aktivera \"håll mig inloggad\"';
+$wb['session_allow_endless_txt'] = 'Aktivera \\"håll mig inloggad\\"';
 $wb['No'] = 'Nej';
 $wb['min_password_length_txt'] = 'Minsta lösenordslängd';
 $wb['min_password_strength_txt'] = 'Minsta lösenordsstyrka';
diff --git a/interface/web/admin/lib/lang/sk_server_config.lng b/interface/web/admin/lib/lang/sk_server_config.lng
index 709f7b928a..125e0b1ea2 100644
--- a/interface/web/admin/lib/lang/sk_server_config.lng
+++ b/interface/web/admin/lib/lang/sk_server_config.lng
@@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
 $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode';
+$wb['content_filter_txt'] = 'Content Filter';
+$wb['rspamd_url_txt'] = 'Rspamd URL';
+$wb['rspamd_user_txt'] = 'Rspamd User';
+$wb['rspamd_password_txt'] = 'Rspamd Password';
 ?>
diff --git a/interface/web/admin/lib/lang/sk_system_config.lng b/interface/web/admin/lib/lang/sk_system_config.lng
index 390458886c..90418e87d5 100644
--- a/interface/web/admin/lib/lang/sk_system_config.lng
+++ b/interface/web/admin/lib/lang/sk_system_config.lng
@@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain
 $wb['customer_no_start_txt'] = 'Customer No. start value';
 $wb['customer_no_counter_txt'] = 'Customer No. counter';
 $wb['session_timeout_txt'] = 'Session timeout (minutes)';
-$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"';
+$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
 $wb['No'] = 'No';
 $wb['min_password_length_txt'] = 'Minimum password length';
 $wb['min_password_strength_txt'] = 'Minimum password strength';
diff --git a/interface/web/admin/lib/lang/sk_users.lng b/interface/web/admin/lib/lang/sk_users.lng
index 60a0aa99ec..d71952fa3e 100644
--- a/interface/web/admin/lib/lang/sk_users.lng
+++ b/interface/web/admin/lib/lang/sk_users.lng
@@ -29,7 +29,7 @@ $wb['generate_password_txt'] = 'Generate Password';
 $wb['repeat_password_txt'] = 'Repeat Password';
 $wb['password_mismatch_txt'] = 'The passwords do not match.';
 $wb['password_match_txt'] = 'The passwords do match.';
-$wb['username_error_collision'] = 'The username may not be web or web plus a number.\"';
+$wb['username_error_collision'] = 'The username may not be web or web plus a number.\\"';
 $wb['client_not_admin_err'] = 'A user that belongs to a client can not be set to type: admin';
 $wb['lost_password_function_txt'] = 'Forgot password function is available';
 $wb['no_user_insert'] = 'CP-Users of type -user- get added and updated automatically when you add a client or reseller.';
diff --git a/interface/web/admin/lib/lang/tr_firewall.lng b/interface/web/admin/lib/lang/tr_firewall.lng
index 8db312ff05..a45998d4e1 100644
--- a/interface/web/admin/lib/lang/tr_firewall.lng
+++ b/interface/web/admin/lib/lang/tr_firewall.lng
@@ -6,6 +6,6 @@ $wb['tcp_port_help_txt'] = 'Virgül ile ayırarak yazın';
 $wb['udp_port_help_txt'] = 'Virgül ile ayırarak yazın';
 $wb['active_txt'] = 'Etkin';
 $wb['firewall_error_unique'] = 'Bu sunucu için bir güvenlik duvarı kaydı zaten var.';
-$wb['tcp_ports_error_regex'] = 'TCP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, \":\" ve \",\" karakterleri kullanılabilir.';
-$wb['udp_ports_error_regex'] = 'UDP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, \":\" ve \",\" karakterleri kullanılabilir.';
+$wb['tcp_ports_error_regex'] = 'TCP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, \\":\\" ve \\",\\" karakterleri kullanılabilir.';
+$wb['udp_ports_error_regex'] = 'UDP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, \\":\\" ve \\",\\" karakterleri kullanılabilir.';
 ?>
diff --git a/interface/web/admin/lib/lang/tr_remote_action.lng b/interface/web/admin/lib/lang/tr_remote_action.lng
index 2f124714e1..c067f67e88 100644
--- a/interface/web/admin/lib/lang/tr_remote_action.lng
+++ b/interface/web/admin/lib/lang/tr_remote_action.lng
@@ -2,11 +2,11 @@
 $wb['select_server_txt'] = 'Sunucu Seçin';
 $wb['btn_do_txt'] = 'İşlemi Başlatın';
 $wb['do_osupdate_caption'] = 'Uzak sunucudaki işletim sistemini güncelleyin';
-$wb['do_osupdate_desc'] = 'Bu işlem seçilmiş sunucuda \"aptitude -y upgrade\" komutunu yürütür.<br><br><strong>OLUŞABİLECEK RİSKLER SİZE AİTTİR!</strong>';
+$wb['do_osupdate_desc'] = 'Bu işlem seçilmiş sunucuda \\"aptitude -y upgrade\\" komutunu yürütür.<br><br><strong>OLUŞABİLECEK RİSKLER SİZE AİTTİR!</strong>';
 $wb['do_ispcupdate_caption'] = 'Uzak sunucudaki ISPConfig 3 - sürümünü güncelleyin';
 $wb['do_ispcupdate_desc'] = 'Bu işlem seçilmiş sunucuda ISPConfig3 güncellemesini yürütür.<br><br><strong>OLUŞABİLECEK RİSKLER SÜZE AİTTİR!</strong>';
 $wb['action_scheduled'] = 'İşlem yürütülmek üzere zamanlandı';
 $wb['select_all_server'] = 'Tüm Sunucularda';
 $wb['ispconfig_update_title'] = 'ISPConfig güncelleme yönergeleri';
-$wb['ispconfig_update_text'] = 'Sunucunuzda root kullanıcısı ile bir kabuk oturumu açın ve ISPConfig güncellemesini başlatmak için<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />komutunu yürütün.<br /><br /><a href=\"http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/\" target=\"_blank\">Ayrıntılı güncelleme bilgilerine bakmak için buraya tıklayın</a>';
+$wb['ispconfig_update_text'] = 'Sunucunuzda root kullanıcısı ile bir kabuk oturumu açın ve ISPConfig güncellemesini başlatmak için<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />komutunu yürütün.<br /><br /><a href=\\"http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/\\" target=\\"_blank\\">Ayrıntılı güncelleme bilgilerine bakmak için buraya tıklayın</a>';
 ?>
diff --git a/interface/web/admin/lib/lang/tr_server_config.lng b/interface/web/admin/lib/lang/tr_server_config.lng
index 4abfd909bf..efe24bf3a4 100644
--- a/interface/web/admin/lib/lang/tr_server_config.lng
+++ b/interface/web/admin/lib/lang/tr_server_config.lng
@@ -152,7 +152,7 @@ $wb['try_rescue_txt'] = 'Hizmetler izlensin ve sorun çıktığında yeniden ba
 $wb['do_not_try_rescue_httpd_txt'] = 'HTTPD izlenmesin';
 $wb['do_not_try_rescue_mysql_txt'] = 'MySQL izlenmesin';
 $wb['do_not_try_rescue_mail_txt'] = 'E-posta izlenmesin';
-$wb['rescue_description_txt'] = '<b>Uyarı:</b> mysql sunucusunu kapatmak istiyorsanız \"MySQL izlenmesin\" seçeneğini işaretleyip 2-3 dakika bekleyin.<br>2-3 dakika beklemezseniz, kurtarma işlemi mysql sunucusunu yeniden başlatmaya çalışır!';
+$wb['rescue_description_txt'] = '<b>Uyarı:</b> mysql sunucusunu kapatmak istiyorsanız \\"MySQL izlenmesin\\" seçeneğini işaretleyip 2-3 dakika bekleyin.<br>2-3 dakika beklemezseniz, kurtarma işlemi mysql sunucusunu yeniden başlatmaya çalışır!';
 $wb['enable_sni_txt'] = 'SNI Kullanılsın';
 $wb['set_folder_permissions_on_update_txt'] = 'Güncellenirken klasör izinleri ayarlansın';
 $wb['add_web_users_to_sshusers_group_txt'] = 'Web kullanıcıları -sshusers- grubuna eklensin';
@@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
 $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode';
+$wb['content_filter_txt'] = 'Content Filter';
+$wb['rspamd_url_txt'] = 'Rspamd URL';
+$wb['rspamd_user_txt'] = 'Rspamd User';
+$wb['rspamd_password_txt'] = 'Rspamd Password';
 ?>
diff --git a/interface/web/admin/lib/lang/tr_system_config.lng b/interface/web/admin/lib/lang/tr_system_config.lng
index b4b213697f..c52893f6b4 100644
--- a/interface/web/admin/lib/lang/tr_system_config.lng
+++ b/interface/web/admin/lib/lang/tr_system_config.lng
@@ -64,7 +64,7 @@ $wb['customer_no_template_error_regex_txt'] = 'Müşteri no kalıbında geçersi
 $wb['customer_no_start_txt'] = 'Müşteri No Başlangıç Değeri';
 $wb['customer_no_counter_txt'] = 'Müşteri No Sayacı';
 $wb['session_timeout_txt'] = 'Oturum Zaman Aşımı (dakika)';
-$wb['session_allow_endless_txt'] = '\"Oturum açık kalsın\" kullanılabilsin';
+$wb['session_allow_endless_txt'] = '\\"Oturum açık kalsın\\" kullanılabilsin';
 $wb['No'] = 'No';
 $wb['min_password_length_txt'] = 'En Az Parola UzunluÄŸu';
 $wb['min_password_strength_txt'] = 'En Az Parola Güçlüğü';
diff --git a/interface/web/admin/lib/lang/tr_users.lng b/interface/web/admin/lib/lang/tr_users.lng
index b639bf9a1d..0029214773 100644
--- a/interface/web/admin/lib/lang/tr_users.lng
+++ b/interface/web/admin/lib/lang/tr_users.lng
@@ -29,7 +29,7 @@ $wb['generate_password_txt'] = 'Parola OluÅŸtur';
 $wb['repeat_password_txt'] = 'Parola Onayı';
 $wb['password_mismatch_txt'] = 'Parola ile onayı aynı değil.';
 $wb['password_match_txt'] = 'Parola ile onayı aynı.';
-$wb['username_error_collision'] = 'Kullanıcı adı -web- ya da -web- sözcüğünü izleyen bir sayı ile başlayamaz.\"';
+$wb['username_error_collision'] = 'Kullanıcı adı -web- ya da -web- sözcüğünü izleyen bir sayı ile başlayamaz.\\"';
 $wb['client_not_admin_err'] = 'Bir müşteriye ait bir kullanıcının tipi admin olarak atanamaz';
 $wb['lost_password_function_txt'] = 'Forgot password function is available';
 $wb['no_user_insert'] = 'CP-Users of type -user- get added and updated automatically when you add a client or reseller.';
diff --git a/interface/web/client/lib/lang/ar_client.lng b/interface/web/client/lib/lang/ar_client.lng
index 4d2bcccef0..71bc0fc1f7 100644
--- a/interface/web/client/lib/lang/ar_client.lng
+++ b/interface/web/client/lib/lang/ar_client.lng
@@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Please enter a valid email address.';
 $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).';
 $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.';
 $wb['paypal_email_txt'] = 'PayPal Email';
-$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.';
+$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.';
 $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
diff --git a/interface/web/client/lib/lang/ar_reseller.lng b/interface/web/client/lib/lang/ar_reseller.lng
index 553abe0aee..68e8a950f3 100644
--- a/interface/web/client/lib/lang/ar_reseller.lng
+++ b/interface/web/client/lib/lang/ar_reseller.lng
@@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Added date';
 $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.';
 $wb['limit_domainmodule_txt'] = 'Domainmodule Limit';
 $wb['client_limits_txt'] = 'Client Limits';
-$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.';
+$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.';
 $wb['btn_save_txt'] = 'Save';
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['email_error_empty'] = 'Email is empty';
diff --git a/interface/web/client/lib/lang/bg_client.lng b/interface/web/client/lib/lang/bg_client.lng
index 163f677043..36da0a0422 100644
--- a/interface/web/client/lib/lang/bg_client.lng
+++ b/interface/web/client/lib/lang/bg_client.lng
@@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Please enter a valid email address.';
 $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).';
 $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.';
 $wb['paypal_email_txt'] = 'PayPal Email';
-$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.';
+$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.';
 $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
diff --git a/interface/web/client/lib/lang/bg_reseller.lng b/interface/web/client/lib/lang/bg_reseller.lng
index 7daa4cff22..211b6daf93 100644
--- a/interface/web/client/lib/lang/bg_reseller.lng
+++ b/interface/web/client/lib/lang/bg_reseller.lng
@@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Added date';
 $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.';
 $wb['limit_domainmodule_txt'] = 'Domainmodule Limit';
 $wb['client_limits_txt'] = 'Client Limits';
-$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.';
+$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.';
 $wb['btn_save_txt'] = 'Save';
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['email_error_empty'] = 'Email is empty';
diff --git a/interface/web/client/lib/lang/br_client.lng b/interface/web/client/lib/lang/br_client.lng
index ad9282aa4c..992c1ea2ca 100644
--- a/interface/web/client/lib/lang/br_client.lng
+++ b/interface/web/client/lib/lang/br_client.lng
@@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Por favor, insira um e-mail válido.';
 $wb['customer_no_error_unique'] = 'O código do cliente deve ser exclusivo (ou em branco).';
 $wb['paypal_email_error_isemail'] = 'Por favor, insira um e-mail do PayPal válido.';
 $wb['paypal_email_txt'] = 'e-mail do PayPal';
-$wb['err_msg_master_tpl_set'] = 'Todos as configurações de limites personalizadas são ignoradas se qualquer gabarito mestre ou algum gabarito \"personalizado\" for selecionado.';
+$wb['err_msg_master_tpl_set'] = 'Todos as configurações de limites personalizadas são ignoradas se qualquer gabarito mestre ou algum gabarito \\"personalizado\\" for selecionado.';
 $wb['aps_limits_txt'] = 'Limites de apps instalados';
 $wb['limit_aps_txt'] = 'Limite de instâncias de apps';
 $wb['limit_aps_error_notint'] = 'Limite de instâncias de apps deve ser um número.';
diff --git a/interface/web/client/lib/lang/br_client_template.lng b/interface/web/client/lib/lang/br_client_template.lng
index bc7124b16c..4b2ce6555b 100644
--- a/interface/web/client/lib/lang/br_client_template.lng
+++ b/interface/web/client/lib/lang/br_client_template.lng
@@ -76,7 +76,7 @@ $wb['limit_perl_txt'] = 'Perl disponível';
 $wb['limit_ruby_txt'] = 'Ruby disponível';
 $wb['limit_python_txt'] = 'Python disponível';
 $wb['force_suexec_txt'] = 'Forçar SuEXEC';
-$wb['limit_hterror_txt'] = 'Diretório \"Custom error docs\" disponível';
+$wb['limit_hterror_txt'] = 'Diretório \\"Custom error docs\\" disponível';
 $wb['limit_wildcard_txt'] = 'Curingas de subdomínios disponíveis';
 $wb['limit_ssl_txt'] = 'SSL disponível';
 $wb['web_limits_txt'] = 'Limites web';
diff --git a/interface/web/client/lib/lang/br_reseller.lng b/interface/web/client/lib/lang/br_reseller.lng
index 524f875f73..d90d3b15a2 100644
--- a/interface/web/client/lib/lang/br_reseller.lng
+++ b/interface/web/client/lib/lang/br_reseller.lng
@@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Data do cadastro';
 $wb['limit_domainmodule_error_notint'] = 'Limite de módulos de domínio deve ser um número.';
 $wb['limit_domainmodule_txt'] = 'Limites de módulos de domínio';
 $wb['client_limits_txt'] = 'Limite de clientes';
-$wb['err_msg_master_tpl_set'] = 'Todas as configurações personalizadas de limites serão ignoradas se um gabarito mestre ou \"personalizado\" for selecionado.';
+$wb['err_msg_master_tpl_set'] = 'Todas as configurações personalizadas de limites serão ignoradas se um gabarito mestre ou \\"personalizado\\" for selecionado.';
 $wb['btn_save_txt'] = 'Salvar';
 $wb['btn_cancel_txt'] = 'Cancelar';
 $wb['email_error_empty'] = 'e-mail está em branco.';
diff --git a/interface/web/client/lib/lang/ca_client.lng b/interface/web/client/lib/lang/ca_client.lng
index 7f460522ff..bfa38a3401 100644
--- a/interface/web/client/lib/lang/ca_client.lng
+++ b/interface/web/client/lib/lang/ca_client.lng
@@ -139,7 +139,7 @@ $wb['email_error_isemail'] = 'Saisissez une adresse courriel valide.';
 $wb['customer_no_error_unique'] = 'Le numéro client doit être unique (ou vide).';
 $wb['paypal_email_error_isemail'] = 'Saisissez un compte Paypal valide.';
 $wb['paypal_email_txt'] = 'Compte Paypal';
-$wb['err_msg_master_tpl_set'] = 'Les paramètres de limites personnalisés seront ignorés si un modèle maître autre que \"custom\" est sélectionné.';
+$wb['err_msg_master_tpl_set'] = 'Les paramètres de limites personnalisés seront ignorés si un modèle maître autre que \\"custom\\" est sélectionné.';
 $wb['aps_limits_txt'] = 'Nombre max d\'Installeur APS';
 $wb['limit_aps_txt'] = 'Nombre max d\'instances APS';
 $wb['limit_aps_error_notint'] = 'La limite d\'instances APS doit être un nombre';
diff --git a/interface/web/client/lib/lang/ca_reseller.lng b/interface/web/client/lib/lang/ca_reseller.lng
index 7125b01a74..f83d3aaff7 100644
--- a/interface/web/client/lib/lang/ca_reseller.lng
+++ b/interface/web/client/lib/lang/ca_reseller.lng
@@ -156,7 +156,7 @@ $wb['added_date_txt'] = 'Ajouté le';
 $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.';
 $wb['limit_domainmodule_txt'] = 'Domainmodule Limit';
 $wb['client_limits_txt'] = 'Client Limits';
-$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.';
+$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.';
 $wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['limit_backup_txt'] = 'Backupfunction available';
 $wb['limit_client_error_positive_or_unlimited'] = 'The number of clients must be > 0 or -1 (unlimited)';
diff --git a/interface/web/client/lib/lang/cz_client.lng b/interface/web/client/lib/lang/cz_client.lng
index edd366830a..3351ac58e1 100644
--- a/interface/web/client/lib/lang/cz_client.lng
+++ b/interface/web/client/lib/lang/cz_client.lng
@@ -139,7 +139,7 @@ $wb['email_error_isemail'] = 'Zadejte prosím platnou e-mailovou adresu.';
 $wb['customer_no_error_unique'] = 'Zákaznické číslo musí být jedinečné (nebo prázdné).';
 $wb['paypal_email_error_isemail'] = 'Zadejte prosím platnou PayPal e-mail addresu.';
 $wb['paypal_email_txt'] = 'PayPal e-mail';
-$wb['err_msg_master_tpl_set'] = 'Nelze nastavit vlastní limity, pokud chtete nastavit vlatní limity musí být \"hlavní šablona\" nastavena na volbu \"Custom\".';
+$wb['err_msg_master_tpl_set'] = 'Nelze nastavit vlastní limity, pokud chtete nastavit vlatní limity musí být \\"hlavní šablona\\" nastavena na volbu \\"Custom\\".';
 $wb['aps_limits_txt'] = 'APS limity instalátoru';
 $wb['limit_aps_txt'] = 'Max. počet APS instalací';
 $wb['limit_aps_error_notint'] = 'Limit pro APS instalace musí být číslo.';
diff --git a/interface/web/client/lib/lang/cz_reseller.lng b/interface/web/client/lib/lang/cz_reseller.lng
index 011b985311..adfea62ac5 100644
--- a/interface/web/client/lib/lang/cz_reseller.lng
+++ b/interface/web/client/lib/lang/cz_reseller.lng
@@ -156,7 +156,7 @@ $wb['added_date_txt'] = 'Datum vytvoření účtu';
 $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.';
 $wb['limit_domainmodule_txt'] = 'Domainmodule Limit';
 $wb['client_limits_txt'] = 'Klientské limity';
-$wb['err_msg_master_tpl_set'] = 'Nelze nastavit vlastní limity, pokud chtete nastavit vlatní limity musí být \"hlavní šablona\" nastavena na volbu \"Custom\".';
+$wb['err_msg_master_tpl_set'] = 'Nelze nastavit vlastní limity, pokud chtete nastavit vlatní limity musí být \\"hlavní šablona\\" nastavena na volbu \\"Custom\\".';
 $wb['contact_firstname_txt'] = 'Kontakt křestní jméno';
 $wb['limit_backup_txt'] = 'Funkce zálohování (volitelné)';
 $wb['limit_client_error_positive_or_unlimited'] = 'The number of clients must be > 0 or -1 (unlimited)';
diff --git a/interface/web/client/lib/lang/de_reseller.lng b/interface/web/client/lib/lang/de_reseller.lng
index 48460658c0..e37ca395af 100644
--- a/interface/web/client/lib/lang/de_reseller.lng
+++ b/interface/web/client/lib/lang/de_reseller.lng
@@ -160,7 +160,7 @@ $wb['added_date_txt'] = 'Added date';
 $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.';
 $wb['limit_domainmodule_txt'] = 'Domainmodule Limit';
 $wb['client_limits_txt'] = 'Client Limits';
-$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.';
+$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.';
 $wb['invalid_vat_id'] = 'Die USt.-ID ist ungültig.';
 $wb['btn_save_txt'] = 'Speichern';
 $wb['btn_cancel_txt'] = 'Abbrechen';
diff --git a/interface/web/client/lib/lang/dk_client.lng b/interface/web/client/lib/lang/dk_client.lng
index f0a8d1a7cd..b944e03175 100644
--- a/interface/web/client/lib/lang/dk_client.lng
+++ b/interface/web/client/lib/lang/dk_client.lng
@@ -139,7 +139,7 @@ $wb['email_error_isemail'] = 'Indtast en gyldig e-mail adresse.';
 $wb['customer_no_error_unique'] = 'Kunde nr. skal være unikke (eller tomt).';
 $wb['paypal_email_error_isemail'] = 'Indtast en gyldig PayPal e-mail adresse.';
 $wb['paypal_email_txt'] = 'PayPal E-mail';
-$wb['err_msg_master_tpl_set'] = 'Alle brugerdefinerede grænse indstillinger ignoreres, hvis nogen anden master skabelonen end \"custom\" er valgt.';
+$wb['err_msg_master_tpl_set'] = 'Alle brugerdefinerede grænse indstillinger ignoreres, hvis nogen anden master skabelonen end \\"custom\\" er valgt.';
 $wb['aps_limits_txt'] = 'APS Installer Begrænsninger';
 $wb['limit_aps_txt'] = 'Max. antal af APS forekomster';
 $wb['limit_aps_error_notint'] = 'APS forekomster grænse skal være et tal.';
diff --git a/interface/web/client/lib/lang/dk_reseller.lng b/interface/web/client/lib/lang/dk_reseller.lng
index 93cd7c4032..b06301ccdd 100644
--- a/interface/web/client/lib/lang/dk_reseller.lng
+++ b/interface/web/client/lib/lang/dk_reseller.lng
@@ -156,7 +156,7 @@ $wb['added_date_txt'] = 'Tilføjet d.';
 $wb['limit_domainmodule_error_notint'] = 'Domænemodul grænse skal være et tal.';
 $wb['limit_domainmodule_txt'] = 'Domænemodul Begrænsning';
 $wb['client_limits_txt'] = 'Kunde Begrænsninger';
-$wb['err_msg_master_tpl_set'] = 'Alle brugerdefinerede grænse indstillinger ignoreres, hvis nogen anden master skabelonen end \"custom\" er valgt.';
+$wb['err_msg_master_tpl_set'] = 'Alle brugerdefinerede grænse indstillinger ignoreres, hvis nogen anden master skabelonen end \\"custom\\" er valgt.';
 $wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['password_click_to_set_txt'] = 'Click to set';
 $wb['limit_database_user_txt'] = 'Max. Database users';
diff --git a/interface/web/client/lib/lang/el_client.lng b/interface/web/client/lib/lang/el_client.lng
index 8c2d7d738e..b85f653d4e 100644
--- a/interface/web/client/lib/lang/el_client.lng
+++ b/interface/web/client/lib/lang/el_client.lng
@@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Please enter a valid email address.';
 $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).';
 $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.';
 $wb['paypal_email_txt'] = 'PayPal Email';
-$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.';
+$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.';
 $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
diff --git a/interface/web/client/lib/lang/el_reseller.lng b/interface/web/client/lib/lang/el_reseller.lng
index 13a38caf9d..b409c169e6 100644
--- a/interface/web/client/lib/lang/el_reseller.lng
+++ b/interface/web/client/lib/lang/el_reseller.lng
@@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Added date';
 $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.';
 $wb['limit_domainmodule_txt'] = 'Domainmodule Limit';
 $wb['client_limits_txt'] = 'Client Limits';
-$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.';
+$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.';
 $wb['btn_save_txt'] = 'Save';
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['email_error_empty'] = 'Email is empty';
diff --git a/interface/web/client/lib/lang/es_client.lng b/interface/web/client/lib/lang/es_client.lng
index 1935b168af..75125024fb 100755
--- a/interface/web/client/lib/lang/es_client.lng
+++ b/interface/web/client/lib/lang/es_client.lng
@@ -42,7 +42,7 @@ $wb['email_error_empty'] = 'El correo electrónico está vacío';
 $wb['email_error_isemail'] = 'Por favor ingrese una dirección de correo válida.';
 $wb['email_limits_txt'] = 'Límites de correo';
 $wb['email_txt'] = 'Correo';
-$wb['err_msg_master_tpl_set'] = 'Todas las opciones personalizadas de límites serán ignoradas si se utiliza otra plantilla maestra diferente a \"personalizada\".';
+$wb['err_msg_master_tpl_set'] = 'Todas las opciones personalizadas de límites serán ignoradas si se utiliza otra plantilla maestra diferente a \\"personalizada\\".';
 $wb['fax_txt'] = 'Fax';
 $wb['firstname_error_empty'] = 'El nombre está vacío.';
 $wb['firstname_txt'] = 'Nombre';
@@ -90,7 +90,7 @@ $wb['limit_mailaliasdomain_error_notint'] = 'El límite de alias de dominio de c
 $wb['limit_mailaliasdomain_txt'] = 'Cantidad máx. de alias de dominio';
 $wb['limit_mailbox_error_notint'] = 'El límite de buzones debe ser un número.';
 $wb['limit_mailbox_txt'] = 'Cantidad máx. de buzones';
-$wb['limit_mailcatchall_error_notint'] = 'El límite de correos \"recoge-todo\" debe ser un número.';
+$wb['limit_mailcatchall_error_notint'] = 'El límite de correos \\"recoge-todo\\" debe ser un número.';
 $wb['limit_mailcatchall_txt'] = 'Cantidad máx. de receptores de correos huérfanos';
 $wb['limit_maildomain_error_notint'] = 'El límite de dominio de correo debe ser un número.';
 $wb['limit_maildomain_txt'] = 'Cantidad máx. de dominios para correo';
diff --git a/interface/web/client/lib/lang/es_client_template.lng b/interface/web/client/lib/lang/es_client_template.lng
index 6a51459600..4fd6f650f3 100755
--- a/interface/web/client/lib/lang/es_client_template.lng
+++ b/interface/web/client/lib/lang/es_client_template.lng
@@ -46,8 +46,8 @@ $wb['limit_mailaliasdomain_error_notint'] = 'El límite de alias de dominio de c
 $wb['limit_mailaliasdomain_txt'] = 'Cantidad máx. de alias de dominio';
 $wb['limit_mailbox_error_notint'] = 'El límite de buzones debe ser un número.';
 $wb['limit_mailbox_txt'] = 'Cantidad máx. de buzones';
-$wb['limit_mailcatchall_error_notint'] = 'El límite de receptores de correo \"recoge-todo\" debe ser un número.';
-$wb['limit_mailcatchall_txt'] = 'Cantidad máx. de receptores de correo  \"recoge-todo\" ';
+$wb['limit_mailcatchall_error_notint'] = 'El límite de receptores de correo \\"recoge-todo\\" debe ser un número.';
+$wb['limit_mailcatchall_txt'] = 'Cantidad máx. de receptores de correo  \\"recoge-todo\\" ';
 $wb['limit_maildomain_error_notint'] = 'El límite de dominio de correo debe ser un número.';
 $wb['limit_maildomain_txt'] = 'Cantidad máx. de dominios para correo';
 $wb['limit_mailfetchmail_error_notint'] = 'El límite de recuperadores de correo debe ser un número.';
diff --git a/interface/web/client/lib/lang/es_reseller.lng b/interface/web/client/lib/lang/es_reseller.lng
index a1de1fb7b9..5a94b9e803 100755
--- a/interface/web/client/lib/lang/es_reseller.lng
+++ b/interface/web/client/lib/lang/es_reseller.lng
@@ -46,7 +46,7 @@ $wb['email_error_empty'] = 'El correo electrónico está vacío';
 $wb['email_error_isemail'] = 'Por favor ingrese una dirección de correo válida.';
 $wb['email_limits_txt'] = 'Límites de correo';
 $wb['email_txt'] = 'Correo';
-$wb['err_msg_master_tpl_set'] = 'Todas las opciones personalizadas de límites serán ignoradas si se utiliza otra plantilla maestra diferente a \"personalizada\".';
+$wb['err_msg_master_tpl_set'] = 'Todas las opciones personalizadas de límites serán ignoradas si se utiliza otra plantilla maestra diferente a \\"personalizada\\".';
 $wb['fax_txt'] = 'Fax';
 $wb['firstname_error_empty'] = 'El nombre está vacío.';
 $wb['firstname_txt'] = 'Nombre';
@@ -97,7 +97,7 @@ $wb['limit_mailalias_txt'] = 'Cantidad máx. de alias de correo';
 $wb['limit_mailaliasdomain_txt'] = 'Cantidad máx. de alias de dominio';
 $wb['limit_mailbox_error_notint'] = 'El límite de buzones debe ser un número.';
 $wb['limit_mailbox_txt'] = 'Cantidad máx. de buzones';
-$wb['limit_mailcatchall_error_notint'] = 'El límite de correos \"recoge-todo\" debe ser un número.';
+$wb['limit_mailcatchall_error_notint'] = 'El límite de correos \\"recoge-todo\\" debe ser un número.';
 $wb['limit_mailcatchall_txt'] = 'Cantidad máx. de receptores de correos huérfanos';
 $wb['limit_maildomain_error_notint'] = 'El límite de dominio de correo debe ser un número.';
 $wb['limit_maildomain_txt'] = 'Cantidad máx. de dominios para correo';
diff --git a/interface/web/client/lib/lang/fi_client.lng b/interface/web/client/lib/lang/fi_client.lng
index a90a3d7c2d..6df30e7753 100755
--- a/interface/web/client/lib/lang/fi_client.lng
+++ b/interface/web/client/lib/lang/fi_client.lng
@@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Please enter a valid email address.';
 $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).';
 $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.';
 $wb['paypal_email_txt'] = 'PayPal Email';
-$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.';
+$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.';
 $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
diff --git a/interface/web/client/lib/lang/fi_reseller.lng b/interface/web/client/lib/lang/fi_reseller.lng
index 6aecc836e3..58af2fdf0d 100644
--- a/interface/web/client/lib/lang/fi_reseller.lng
+++ b/interface/web/client/lib/lang/fi_reseller.lng
@@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Added date';
 $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.';
 $wb['limit_domainmodule_txt'] = 'Domainmodule Limit';
 $wb['client_limits_txt'] = 'Client Limits';
-$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.';
+$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.';
 $wb['btn_save_txt'] = 'Save';
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['email_error_empty'] = 'Email is empty';
diff --git a/interface/web/client/lib/lang/fr_client.lng b/interface/web/client/lib/lang/fr_client.lng
index f13f0d4676..61612ccbe0 100644
--- a/interface/web/client/lib/lang/fr_client.lng
+++ b/interface/web/client/lib/lang/fr_client.lng
@@ -139,7 +139,7 @@ $wb['email_error_isemail'] = 'Saisissez une adresse e-mail valide.';
 $wb['customer_no_error_unique'] = 'Le numéro client doit être unique (ou vide).';
 $wb['paypal_email_error_isemail'] = 'Saisissez un compte Paypal valide.';
 $wb['paypal_email_txt'] = 'Compte Paypal';
-$wb['err_msg_master_tpl_set'] = 'Les paramètres de limites personnalisés seront ignorés si un modèle maître autre que \"custom\" est sélectionné.';
+$wb['err_msg_master_tpl_set'] = 'Les paramètres de limites personnalisés seront ignorés si un modèle maître autre que \\"custom\\" est sélectionné.';
 $wb['aps_limits_txt'] = 'Nombre max d’Installeur APS';
 $wb['limit_aps_txt'] = 'Nombre max d’instances APS';
 $wb['limit_aps_error_notint'] = 'La limite d’instances APS doit être un nombre';
diff --git a/interface/web/client/lib/lang/fr_reseller.lng b/interface/web/client/lib/lang/fr_reseller.lng
index 591e12ac35..f30fcd48c6 100644
--- a/interface/web/client/lib/lang/fr_reseller.lng
+++ b/interface/web/client/lib/lang/fr_reseller.lng
@@ -156,7 +156,7 @@ $wb['added_date_txt'] = 'Added date';
 $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.';
 $wb['limit_domainmodule_txt'] = 'Domainmodule Limit';
 $wb['client_limits_txt'] = 'Client Limits';
-$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.';
+$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.';
 $wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['limit_backup_txt'] = 'Backupfunction available';
 $wb['limit_client_error_positive_or_unlimited'] = 'The number of clients must be > 0 or -1 (unlimited)';
diff --git a/interface/web/client/lib/lang/hr_client.lng b/interface/web/client/lib/lang/hr_client.lng
index 351ad4b8b4..ec5b73d940 100644
--- a/interface/web/client/lib/lang/hr_client.lng
+++ b/interface/web/client/lib/lang/hr_client.lng
@@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Unesi ispravnu email adresu.';
 $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).';
 $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.';
 $wb['paypal_email_txt'] = 'PayPal Email';
-$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.';
+$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.';
 $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
diff --git a/interface/web/client/lib/lang/hr_reseller.lng b/interface/web/client/lib/lang/hr_reseller.lng
index 37e1e38356..9188b6861b 100644
--- a/interface/web/client/lib/lang/hr_reseller.lng
+++ b/interface/web/client/lib/lang/hr_reseller.lng
@@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Datum dodavanja';
 $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.';
 $wb['limit_domainmodule_txt'] = 'Domain module Limit';
 $wb['client_limits_txt'] = 'Limiti klijenata';
-$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.';
+$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.';
 $wb['btn_save_txt'] = 'Save';
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['email_error_empty'] = 'Email is empty';
diff --git a/interface/web/client/lib/lang/hu_client.lng b/interface/web/client/lib/lang/hu_client.lng
index 8b9cc16081..10993601c0 100644
--- a/interface/web/client/lib/lang/hu_client.lng
+++ b/interface/web/client/lib/lang/hu_client.lng
@@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Please enter a valid email address.';
 $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).';
 $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.';
 $wb['paypal_email_txt'] = 'PayPal Email';
-$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.';
+$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.';
 $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
diff --git a/interface/web/client/lib/lang/hu_reseller.lng b/interface/web/client/lib/lang/hu_reseller.lng
index 2b0c15e8f0..dd9290885a 100644
--- a/interface/web/client/lib/lang/hu_reseller.lng
+++ b/interface/web/client/lib/lang/hu_reseller.lng
@@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Added date';
 $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.';
 $wb['limit_domainmodule_txt'] = 'Domainmodule Limit';
 $wb['client_limits_txt'] = 'Client Limits';
-$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.';
+$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.';
 $wb['btn_save_txt'] = 'Save';
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['email_error_empty'] = 'Email is empty';
diff --git a/interface/web/client/lib/lang/id_client.lng b/interface/web/client/lib/lang/id_client.lng
index d25230ea3d..c84e6251f4 100644
--- a/interface/web/client/lib/lang/id_client.lng
+++ b/interface/web/client/lib/lang/id_client.lng
@@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Please enter a valid email address.';
 $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).';
 $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.';
 $wb['paypal_email_txt'] = 'PayPal Email';
-$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.';
+$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.';
 $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
diff --git a/interface/web/client/lib/lang/id_reseller.lng b/interface/web/client/lib/lang/id_reseller.lng
index af91d1bb4e..821a35e3cd 100644
--- a/interface/web/client/lib/lang/id_reseller.lng
+++ b/interface/web/client/lib/lang/id_reseller.lng
@@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Added date';
 $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.';
 $wb['limit_domainmodule_txt'] = 'Domainmodule Limit';
 $wb['client_limits_txt'] = 'Client Limits';
-$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.';
+$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.';
 $wb['btn_save_txt'] = 'Save';
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['email_error_empty'] = 'Email is empty';
diff --git a/interface/web/client/lib/lang/it_client.lng b/interface/web/client/lib/lang/it_client.lng
index a361d0a887..0f75d849d6 100644
--- a/interface/web/client/lib/lang/it_client.lng
+++ b/interface/web/client/lib/lang/it_client.lng
@@ -139,7 +139,7 @@ $wb['email_error_isemail'] = 'Please enter a valid email address.';
 $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).';
 $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.';
 $wb['paypal_email_txt'] = 'PayPal Email';
-$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.';
+$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.';
 $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
diff --git a/interface/web/client/lib/lang/it_reseller.lng b/interface/web/client/lib/lang/it_reseller.lng
index 8fc49568af..2cef293265 100644
--- a/interface/web/client/lib/lang/it_reseller.lng
+++ b/interface/web/client/lib/lang/it_reseller.lng
@@ -156,7 +156,7 @@ $wb['added_date_txt'] = 'Added date';
 $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.';
 $wb['limit_domainmodule_txt'] = 'Domainmodule Limit';
 $wb['client_limits_txt'] = 'Client Limits';
-$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.';
+$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.';
 $wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['limit_backup_txt'] = 'Backupfunction available';
 $wb['limit_client_error_positive_or_unlimited'] = 'The number of clients must be > 0 or -1 (unlimited)';
diff --git a/interface/web/client/lib/lang/ja_client.lng b/interface/web/client/lib/lang/ja_client.lng
index 2526c02791..33aa6ab4e9 100644
--- a/interface/web/client/lib/lang/ja_client.lng
+++ b/interface/web/client/lib/lang/ja_client.lng
@@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Please enter a valid email address.';
 $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).';
 $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.';
 $wb['paypal_email_txt'] = 'PayPal Email';
-$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.';
+$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.';
 $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
diff --git a/interface/web/client/lib/lang/ja_reseller.lng b/interface/web/client/lib/lang/ja_reseller.lng
index 66200eccbe..7edf836f39 100644
--- a/interface/web/client/lib/lang/ja_reseller.lng
+++ b/interface/web/client/lib/lang/ja_reseller.lng
@@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Added date';
 $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.';
 $wb['limit_domainmodule_txt'] = 'Domainmodule Limit';
 $wb['client_limits_txt'] = 'Client Limits';
-$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.';
+$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.';
 $wb['btn_save_txt'] = 'Save';
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['email_error_empty'] = 'Email is empty';
diff --git a/interface/web/client/lib/lang/nl_client.lng b/interface/web/client/lib/lang/nl_client.lng
index 8e0092f255..188a37f4fd 100644
--- a/interface/web/client/lib/lang/nl_client.lng
+++ b/interface/web/client/lib/lang/nl_client.lng
@@ -142,7 +142,7 @@ $wb['email_error_isemail'] = 'Please enter a valid email address.';
 $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).';
 $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.';
 $wb['paypal_email_txt'] = 'PayPal Email';
-$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.';
+$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.';
 $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
diff --git a/interface/web/client/lib/lang/nl_reseller.lng b/interface/web/client/lib/lang/nl_reseller.lng
index 9cdb1856fe..9953880bec 100644
--- a/interface/web/client/lib/lang/nl_reseller.lng
+++ b/interface/web/client/lib/lang/nl_reseller.lng
@@ -160,7 +160,7 @@ $wb['added_date_txt'] = 'Added date';
 $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.';
 $wb['limit_domainmodule_txt'] = 'Domainmodule Limit';
 $wb['client_limits_txt'] = 'Client Limits';
-$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.';
+$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.';
 $wb['btn_save_txt'] = 'Save';
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['email_error_empty'] = 'Email is empty';
diff --git a/interface/web/client/lib/lang/pl_reseller.lng b/interface/web/client/lib/lang/pl_reseller.lng
index 69b30fe2a3..9b2cf58f75 100644
--- a/interface/web/client/lib/lang/pl_reseller.lng
+++ b/interface/web/client/lib/lang/pl_reseller.lng
@@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Added date';
 $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.';
 $wb['limit_domainmodule_txt'] = 'Domainmodule Limit';
 $wb['client_limits_txt'] = 'Client Limits';
-$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.';
+$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.';
 $wb['btn_save_txt'] = 'Save';
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['email_error_empty'] = 'Email is empty';
diff --git a/interface/web/client/lib/lang/pt_client.lng b/interface/web/client/lib/lang/pt_client.lng
index b05e14dfe7..ae3e45b24d 100644
--- a/interface/web/client/lib/lang/pt_client.lng
+++ b/interface/web/client/lib/lang/pt_client.lng
@@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Please enter a valid email address.';
 $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).';
 $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.';
 $wb['paypal_email_txt'] = 'PayPal Email';
-$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.';
+$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.';
 $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
diff --git a/interface/web/client/lib/lang/pt_reseller.lng b/interface/web/client/lib/lang/pt_reseller.lng
index ae3eddd8b0..e021cd2511 100644
--- a/interface/web/client/lib/lang/pt_reseller.lng
+++ b/interface/web/client/lib/lang/pt_reseller.lng
@@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Added date';
 $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.';
 $wb['limit_domainmodule_txt'] = 'Domainmodule Limit';
 $wb['client_limits_txt'] = 'Client Limits';
-$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.';
+$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.';
 $wb['btn_save_txt'] = 'Save';
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['email_error_empty'] = 'Email is empty';
diff --git a/interface/web/client/lib/lang/ro_client.lng b/interface/web/client/lib/lang/ro_client.lng
index bc0ad4316e..034c4d0e44 100644
--- a/interface/web/client/lib/lang/ro_client.lng
+++ b/interface/web/client/lib/lang/ro_client.lng
@@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Please enter a valid email address.';
 $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).';
 $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.';
 $wb['paypal_email_txt'] = 'PayPal Email';
-$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.';
+$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.';
 $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
diff --git a/interface/web/client/lib/lang/ro_reseller.lng b/interface/web/client/lib/lang/ro_reseller.lng
index 553abe0aee..68e8a950f3 100644
--- a/interface/web/client/lib/lang/ro_reseller.lng
+++ b/interface/web/client/lib/lang/ro_reseller.lng
@@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Added date';
 $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.';
 $wb['limit_domainmodule_txt'] = 'Domainmodule Limit';
 $wb['client_limits_txt'] = 'Client Limits';
-$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.';
+$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.';
 $wb['btn_save_txt'] = 'Save';
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['email_error_empty'] = 'Email is empty';
diff --git a/interface/web/client/lib/lang/ru_client.lng b/interface/web/client/lib/lang/ru_client.lng
index a37d4673a1..befd6b15bf 100644
--- a/interface/web/client/lib/lang/ru_client.lng
+++ b/interface/web/client/lib/lang/ru_client.lng
@@ -108,7 +108,7 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Принудительный шабл
 $wb['limit_openvz_vm_error_notint'] = 'Лимит виртуальных серверов должен быть числом.';
 $wb['web_php_options_notempty'] = 'Нет выбранных параметров PHP. Выберите по крайней мере один параметр PHP.';
 $wb['ssh_chroot_notempty'] = 'Не выбран параметр SSH-Chroot. Выберите по крайней мере один параметр SSH-Chroot.';
-$wb['username_error_collision'] = 'Имя пользователя не может начинаться со слова \"web\" или \"web\" плюс число.';
+$wb['username_error_collision'] = 'Имя пользователя не может начинаться со слова \\"web\\" или \\"web\\" плюс число.';
 $wb['add_additional_template_txt'] = 'Добавить дополнительный шаблон';
 $wb['delete_additional_template_txt'] = 'Удалить дополнительный шаблон';
 $wb['limit_cgi_txt'] = 'CGI доступен';
@@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Некорректный почтовый адре
 $wb['customer_no_error_unique'] = 'Счётчик номера Клиента должен быть уникален (или отсутствует).';
 $wb['paypal_email_error_isemail'] = 'Пожалуйста, введите действующий адрес электронной почты PayPal.';
 $wb['paypal_email_txt'] = 'Адрес электронной почты PayPal';
-$wb['err_msg_master_tpl_set'] = 'Значения, установленные здесь игнорируются, если не выбран в качестве главного шаблона \"Custom\"!';
+$wb['err_msg_master_tpl_set'] = 'Значения, установленные здесь игнорируются, если не выбран в качестве главного шаблона \\"Custom\\"!';
 $wb['aps_limits_txt'] = 'Лимиты Установщика APS';
 $wb['limit_aps_txt'] = 'Макс. количество экземпляров APS';
 $wb['limit_aps_error_notint'] = 'Лимит экземпляров APS должен быть числом.';
diff --git a/interface/web/client/lib/lang/ru_reseller.lng b/interface/web/client/lib/lang/ru_reseller.lng
index 4a177cccc8..998a886990 100644
--- a/interface/web/client/lib/lang/ru_reseller.lng
+++ b/interface/web/client/lib/lang/ru_reseller.lng
@@ -108,7 +108,7 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Принудительный шабл
 $wb['limit_openvz_vm_error_notint'] = 'Лимит виртуальных серверов должен быть числом.';
 $wb['web_php_options_notempty'] = 'Нет выбранных параметров PHP. Выберите по крайней мере один параметр PHP.';
 $wb['ssh_chroot_notempty'] = 'Не выбран параметр SSH-Chroot. Выберите по крайней мере один параметр SSH-Chroot.';
-$wb['username_error_collision'] = 'Имя пользователя не может начинаться со слова \"web\" или \"web\" плюс число.';
+$wb['username_error_collision'] = 'Имя пользователя не может начинаться со слова \\"web\\" или \\"web\\" плюс число.';
 $wb['add_additional_template_txt'] = 'Добавить дополнительный шаблон';
 $wb['delete_additional_template_txt'] = 'Удалить дополнительный шаблон';
 $wb['limit_cgi_txt'] = 'CGI доступен';
@@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Дата добавления';
 $wb['limit_domainmodule_error_notint'] = 'Лимит модулей домена должен быть числом.';
 $wb['limit_domainmodule_txt'] = 'Лимит модулей домена';
 $wb['client_limits_txt'] = 'Лимиты Клиента';
-$wb['err_msg_master_tpl_set'] = 'Значения, установленные здесь игнорируются, если не выбран в качестве главного шаблона \"Custom\"!';
+$wb['err_msg_master_tpl_set'] = 'Значения, установленные здесь игнорируются, если не выбран в качестве главного шаблона \\"Custom\\"!';
 $wb['btn_save_txt'] = 'Сохранить';
 $wb['btn_cancel_txt'] = 'Отменить';
 $wb['email_error_empty'] = 'Адрес эл. почты пустой';
diff --git a/interface/web/client/lib/lang/se_client.lng b/interface/web/client/lib/lang/se_client.lng
index 5232e95f55..2884302c18 100644
--- a/interface/web/client/lib/lang/se_client.lng
+++ b/interface/web/client/lib/lang/se_client.lng
@@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Vänligen ange en giltig epostadress';
 $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).';
 $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.';
 $wb['paypal_email_txt'] = 'PayPal epostadress';
-$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.';
+$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.';
 $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
diff --git a/interface/web/client/lib/lang/se_reseller.lng b/interface/web/client/lib/lang/se_reseller.lng
index 553abe0aee..68e8a950f3 100644
--- a/interface/web/client/lib/lang/se_reseller.lng
+++ b/interface/web/client/lib/lang/se_reseller.lng
@@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Added date';
 $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.';
 $wb['limit_domainmodule_txt'] = 'Domainmodule Limit';
 $wb['client_limits_txt'] = 'Client Limits';
-$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.';
+$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.';
 $wb['btn_save_txt'] = 'Save';
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['email_error_empty'] = 'Email is empty';
diff --git a/interface/web/client/lib/lang/sk_client.lng b/interface/web/client/lib/lang/sk_client.lng
index 6fff6bf3f0..3edec417cf 100644
--- a/interface/web/client/lib/lang/sk_client.lng
+++ b/interface/web/client/lib/lang/sk_client.lng
@@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Please enter a valid email address.';
 $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).';
 $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.';
 $wb['paypal_email_txt'] = 'PayPal Email';
-$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.';
+$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.';
 $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
diff --git a/interface/web/client/lib/lang/sk_reseller.lng b/interface/web/client/lib/lang/sk_reseller.lng
index 34643c55b8..4ae3ef5b97 100644
--- a/interface/web/client/lib/lang/sk_reseller.lng
+++ b/interface/web/client/lib/lang/sk_reseller.lng
@@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Added date';
 $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.';
 $wb['limit_domainmodule_txt'] = 'Domainmodule Limit';
 $wb['client_limits_txt'] = 'Client Limits';
-$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.';
+$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.';
 $wb['btn_save_txt'] = 'Save';
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['email_error_empty'] = 'Email is empty';
diff --git a/interface/web/client/lib/lang/tr_client.lng b/interface/web/client/lib/lang/tr_client.lng
index 359095534a..765d9f1980 100644
--- a/interface/web/client/lib/lang/tr_client.lng
+++ b/interface/web/client/lib/lang/tr_client.lng
@@ -139,7 +139,7 @@ $wb['email_error_isemail'] = 'Lütfen geçerli bir e-posta adresi yazın.';
 $wb['customer_no_error_unique'] = 'Müşteri numarası eşsiz (ya da boş) olmalıdır.';
 $wb['paypal_email_error_isemail'] = 'Lütfen geçerli bir PayPal e-posta adresi yazın.';
 $wb['paypal_email_txt'] = 'PayPal E-posta Adresi';
-$wb['err_msg_master_tpl_set'] = '\"Özel\" kalıptan başka bir ana kalıp seçilirse, tüm özel sınırlama ayarları yoksayılır.';
+$wb['err_msg_master_tpl_set'] = '\\"Özel\\" kalıptan başka bir ana kalıp seçilirse, tüm özel sınırlama ayarları yoksayılır.';
 $wb['aps_limits_txt'] = 'APS Yükleyici Sınırları';
 $wb['limit_aps_txt'] = 'En Fazla APS Kopyası Sayısı';
 $wb['limit_aps_error_notint'] = 'APS kopya sayısı sınırı bir sayı olmalıdır.';
diff --git a/interface/web/client/lib/lang/tr_reseller.lng b/interface/web/client/lib/lang/tr_reseller.lng
index 5e2a37e268..4906a894c0 100644
--- a/interface/web/client/lib/lang/tr_reseller.lng
+++ b/interface/web/client/lib/lang/tr_reseller.lng
@@ -156,7 +156,7 @@ $wb['added_date_txt'] = 'EklendiÄŸi Tarih';
 $wb['limit_domainmodule_error_notint'] = 'Alan adı modülü sınırı bir sayı olmalıdır.';
 $wb['limit_domainmodule_txt'] = 'Alan Adı Modülü Sınırı';
 $wb['client_limits_txt'] = 'Müşteri Sınırları';
-$wb['err_msg_master_tpl_set'] = '\"Özel\" kalıptan başka bir ana kalıp seçilirse, tüm özel sınırlama ayarları yoksayılır.';
+$wb['err_msg_master_tpl_set'] = '\\"Özel\\" kalıptan başka bir ana kalıp seçilirse, tüm özel sınırlama ayarları yoksayılır.';
 $wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['password_click_to_set_txt'] = 'Click to set';
 $wb['limit_database_user_txt'] = 'Max. Database users';
diff --git a/interface/web/dashboard/lib/lang/es_dashlet_limits.lng b/interface/web/dashboard/lib/lang/es_dashlet_limits.lng
index 0f819f2a9d..da6cd6b513 100755
--- a/interface/web/dashboard/lib/lang/es_dashlet_limits.lng
+++ b/interface/web/dashboard/lib/lang/es_dashlet_limits.lng
@@ -11,7 +11,7 @@ $wb['limit_ftp_user_txt'] = 'Cantidad de usuarios FTP';
 $wb['limit_mailalias_txt'] = 'Cantidad de alias de correos';
 $wb['limit_mailaliasdomain_txt'] = 'Cantidad de alias de dominios';
 $wb['limit_mailbox_txt'] = 'Cantidad de buzones';
-$wb['limit_mailcatchall_txt'] = 'Cantidad de cuentas de correo \"recoge-todo\"';
+$wb['limit_mailcatchall_txt'] = 'Cantidad de cuentas de correo \\"recoge-todo\\"';
 $wb['limit_maildomain_txt'] = 'Cantidad de dominios para correo';
 $wb['limit_mailfilter_txt'] = 'Cantidad de filtros de correo';
 $wb['limit_mailforward_txt'] = 'Cantidad de reenviadores de correos';
diff --git a/interface/web/dns/lib/lang/br_dns_dmarc.lng b/interface/web/dns/lib/lang/br_dns_dmarc.lng
index 5b7201075f..8bb35318f8 100644
--- a/interface/web/dns/lib/lang/br_dns_dmarc.lng
+++ b/interface/web/dns/lib/lang/br_dns_dmarc.lng
@@ -2,7 +2,7 @@
 $wb['data_txt'] = 'Registro DMARC';
 $wb['domain_txt'] = 'Domínio';
 $wb['dmarc_policy_txt'] = 'Política de recepção de e-mails';
-$wb['dmarc_policy_note_txt'] = 'Como os \"ISPs\" devem tratar as mensagens SPF ou DKIM com falha (DMARC).';
+$wb['dmarc_policy_note_txt'] = 'Como os \\"ISPs\\" devem tratar as mensagens SPF ou DKIM com falha (DMARC).';
 $wb['dmarc_policy_none_txt'] = 'não fazer nada';
 $wb['dmarc_policy_quarantine_txt'] = 'quarentena';
 $wb['dmarc_policy_reject_txt'] = 'rejeitar';
@@ -11,16 +11,16 @@ $wb['dmarc_rua_note_txt'] = 'Endereços de e-mail para receber relatórios do si
 $wb['dmarc_ruf_txt'] = 'Relatório forense de dados por endereço';
 $wb['dmarc_ruf_note_txt'] = 'Endereços de e-mail para receber amostras de mensagens com falha e controles DMARC do domínio (separados por espaço em branco)';
 $wb['dmarc_fo_txt'] = 'Opções de relatório forense';
-$wb['dmarc_fo0_txt'] = 'Gerar relatórios se todos os mecanismos de autenticação subjacentes deixarem de produzir um resultado DMARC \"pass\".';
+$wb['dmarc_fo0_txt'] = 'Gerar relatórios se todos os mecanismos de autenticação subjacentes deixarem de produzir um resultado DMARC \\"pass\\".';
 $wb['dmarc_fo1_txt'] = 'Gerar relatório se algum mecanismo falhar.';
 $wb['dmarc_fod_txt'] = 'Gerar relatório se assinatura DKIM falhar na verificação.';
 $wb['dmarc_fos_txt'] = 'Gerar relatório se o SPF falhar.';
 $wb['dmarc_adkim_txt'] = 'Parametrização do identificador DKIM';
-$wb['dmarc_adkim_note_txt'] = 'Modo \"strict\" exige combinação exata entre o DKIM do domínio e e-mails';
+$wb['dmarc_adkim_note_txt'] = 'Modo \\"strict\\" exige combinação exata entre o DKIM do domínio e e-mails';
 $wb['dmarc_adkim_r_txt'] = 'relaxed';
 $wb['dmarc_adkim_s_txt'] = 'strict';
 $wb['dmarc_aspf_txt'] = 'Parametrização do identificador SPF';
-$wb['dmarc_aspf_note_txt'] = 'Modo \"strict\" exige combinação exata entre o SPF do domínio e e-mails';
+$wb['dmarc_aspf_note_txt'] = 'Modo \\"strict\\" exige combinação exata entre o SPF do domínio e e-mails';
 $wb['dmarc_aspf_r_txt'] = 'relaxed';
 $wb['dmarc_aspf_s_txt'] = 'strict';
 $wb['dmarc_rf_txt'] = 'Formatação do relatório';
@@ -37,7 +37,7 @@ $wb['dmarc_sp_quarantine_txt'] = 'quarentena';
 $wb['dmarc_sp_reject_txt'] = 'rejeitar';
 $wb['ttl_txt'] = 'TTL';
 $wb['active_txt'] = 'Ativo';
-$wb['dmarc_policy_error_txt'] = 'Somente a política \"nenhum\" é permitida para e-mails sem assinatura DKIM.';
+$wb['dmarc_policy_error_txt'] = 'Somente a política \\"nenhum\\" é permitida para e-mails sem assinatura DKIM.';
 $wb['dmarc_no_dkim_txt'] = 'Nenhum registro DKIM ativo.';
 $wb['dmarc_no_spf_txt'] = 'Nenhum registro SPF ativo.';
 $wb['dmarc_more_spf_txt'] = 'Mais de um registro SPF ativo.';
diff --git a/interface/web/dns/lib/lang/br_dns_tlsa.lng b/interface/web/dns/lib/lang/br_dns_tlsa.lng
index c78c6fd190..5e1bf2256e 100644
--- a/interface/web/dns/lib/lang/br_dns_tlsa.lng
+++ b/interface/web/dns/lib/lang/br_dns_tlsa.lng
@@ -9,8 +9,8 @@ $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 a esta zona dns.';
 $wb['name_error_empty'] = 'Descritor de serviço está em branco.';
-$wb['name_error_regex'] = 'Descritor de serviço é inválido. Formato correto: \"_&lt;port&gt;._(tcp|udp).&lt;hostname&gt;\".';
+$wb['name_error_regex'] = 'Descritor de serviço é inválido. Formato correto: \\"_&lt;port&gt;._(tcp|udp).&lt;hostname&gt;\\".';
 $wb['data_error_empty'] = 'Dados TLSA está em branco.';
-$wb['data_error_regex'] = 'Dados TLSA são inválidos. Formato correto: \"n n n HASH\".';
+$wb['data_error_regex'] = 'Dados TLSA são inválidos. Formato correto: \\"n n n HASH\\".';
 $wb['ttl_range_error'] = 'O ttl mínimo são 60 segundos.';
 ?>
diff --git a/interface/web/dns/lib/lang/ru_dns_hinfo.lng b/interface/web/dns/lib/lang/ru_dns_hinfo.lng
index 830576fdf6..363ed0eef5 100644
--- a/interface/web/dns/lib/lang/ru_dns_hinfo.lng
+++ b/interface/web/dns/lib/lang/ru_dns_hinfo.lng
@@ -11,6 +11,6 @@ $wb['no_zone_perm'] = 'У Вас нет прав добавлять эту за
 $wb['name_error_empty'] = 'Имя пустое.';
 $wb['name_error_regex'] = 'Имя узла имеет неправильный формат.';
 $wb['data_error_empty'] = 'Информация об узле отсутсвует';
-$wb['data_error_regex'] = 'Поле \"Информация о хосте\" имеет неправильный формат';
+$wb['data_error_regex'] = 'Поле \\"Информация о хосте\\" имеет неправильный формат';
 $wb['ttl_range_error'] = 'Мин. время <b>TTL</b> 60 секунд.';
 ?>
diff --git a/interface/web/help/lib/lang/br_support_message.lng b/interface/web/help/lib/lang/br_support_message.lng
index 83097915bf..19ae309a1f 100644
--- a/interface/web/help/lib/lang/br_support_message.lng
+++ b/interface/web/help/lib/lang/br_support_message.lng
@@ -12,5 +12,5 @@ $wb['answer_to_support_request_txt'] = 'Você tem uma nova resposta para requisi
 $wb['answer_to_support_request_sent_txt'] = 'Sua resposta para requisição de suporte foi enviada. Por favor, não responda esse e-mail.';
 $wb['support_request_sent_txt'] = 'Sua requisição de suporte foi enviada. Por favor não responda este e-mail.';
 $wb['recipient_or_sender_email_address_not_valid_txt'] = 'A mensagem não foi enviada porque o e-mail do destinatário e/ou remetente não é válido.';
-$wb['subject_is_empty'] = 'Não é permitido o campo \"Assunto\" em branco.';
+$wb['subject_is_empty'] = 'Não é permitido o campo \\"Assunto\\" em branco.';
 ?>
diff --git a/interface/web/login/lib/lang/ar_login_as.lng b/interface/web/login/lib/lang/ar_login_as.lng
index 68cb3318e5..cf75b54b47 100644
--- a/interface/web/login/lib/lang/ar_login_as.lng
+++ b/interface/web/login/lib/lang/ar_login_as.lng
@@ -1,12 +1,12 @@
 <?php
 $wb['login_1_txt'] = 'Do you want to login as user';
-$wb['login_2_txt'] = 'If you do so, you can \"go back\" by clicking at logout.';
+$wb['login_2_txt'] = 'If you do so, you can \\"go back\\" by clicking at logout.';
 $wb['btn_yes_txt'] = 'Yes, login as Client';
 $wb['btn_back_txt'] = 'No, back to list';
 $wb['udp_port_help_txt'] = 'Separated by comma';
 $wb['active_txt'] = 'Active';
 $wb['firewall_error_unique'] = 'There is already a firewall record for this server.';
-$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".';
-$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".';
+$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".';
+$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".';
 $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?';
 ?>
diff --git a/interface/web/login/lib/lang/bg_login_as.lng b/interface/web/login/lib/lang/bg_login_as.lng
index 68cb3318e5..cf75b54b47 100644
--- a/interface/web/login/lib/lang/bg_login_as.lng
+++ b/interface/web/login/lib/lang/bg_login_as.lng
@@ -1,12 +1,12 @@
 <?php
 $wb['login_1_txt'] = 'Do you want to login as user';
-$wb['login_2_txt'] = 'If you do so, you can \"go back\" by clicking at logout.';
+$wb['login_2_txt'] = 'If you do so, you can \\"go back\\" by clicking at logout.';
 $wb['btn_yes_txt'] = 'Yes, login as Client';
 $wb['btn_back_txt'] = 'No, back to list';
 $wb['udp_port_help_txt'] = 'Separated by comma';
 $wb['active_txt'] = 'Active';
 $wb['firewall_error_unique'] = 'There is already a firewall record for this server.';
-$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".';
-$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".';
+$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".';
+$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".';
 $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?';
 ?>
diff --git a/interface/web/login/lib/lang/br_login_as.lng b/interface/web/login/lib/lang/br_login_as.lng
index 4c02c963c2..5d9fb269b9 100644
--- a/interface/web/login/lib/lang/br_login_as.lng
+++ b/interface/web/login/lib/lang/br_login_as.lng
@@ -1,6 +1,6 @@
 <?php
 $wb['login_1_txt'] = 'Você deseja acessar como usuário';
-$wb['login_2_txt'] = 'Para retornar ao administrador, você pode \"voltar\" selecionando sair.';
+$wb['login_2_txt'] = 'Para retornar ao administrador, você pode \\"voltar\\" selecionando sair.';
 $wb['btn_yes_txt'] = 'Sim, acessar como cliente';
 $wb['btn_back_txt'] = 'Não, voltar a lista';
 $wb['udp_port_help_txt'] = 'Separado por vírgula';
diff --git a/interface/web/login/lib/lang/ca_login_as.lng b/interface/web/login/lib/lang/ca_login_as.lng
index 68cb3318e5..cf75b54b47 100644
--- a/interface/web/login/lib/lang/ca_login_as.lng
+++ b/interface/web/login/lib/lang/ca_login_as.lng
@@ -1,12 +1,12 @@
 <?php
 $wb['login_1_txt'] = 'Do you want to login as user';
-$wb['login_2_txt'] = 'If you do so, you can \"go back\" by clicking at logout.';
+$wb['login_2_txt'] = 'If you do so, you can \\"go back\\" by clicking at logout.';
 $wb['btn_yes_txt'] = 'Yes, login as Client';
 $wb['btn_back_txt'] = 'No, back to list';
 $wb['udp_port_help_txt'] = 'Separated by comma';
 $wb['active_txt'] = 'Active';
 $wb['firewall_error_unique'] = 'There is already a firewall record for this server.';
-$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".';
-$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".';
+$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".';
+$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".';
 $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?';
 ?>
diff --git a/interface/web/login/lib/lang/dk_login_as.lng b/interface/web/login/lib/lang/dk_login_as.lng
index a75ea7262a..bebcf165a7 100644
--- a/interface/web/login/lib/lang/dk_login_as.lng
+++ b/interface/web/login/lib/lang/dk_login_as.lng
@@ -1,12 +1,12 @@
 <?php
 $wb['login_1_txt'] = 'Vil du logge ind som bruger';
-$wb['login_2_txt'] = 'Hvis du gør det, kan du \"Gå tilbage\" ved at klikke på logout.';
+$wb['login_2_txt'] = 'Hvis du gør det, kan du \\"Gå tilbage\\" ved at klikke på logout.';
 $wb['btn_yes_txt'] = 'Ja, log ind som Kunde';
 $wb['btn_back_txt'] = 'Nej, tilbage til listen';
 $wb['udp_port_help_txt'] = 'Adskilt af komma';
 $wb['active_txt'] = 'Aktiv';
 $wb['firewall_error_unique'] = 'Der er allerede en firewall post for denne server.';
-$wb['tcp_ports_error_regex'] = 'Tegn ikke tilladt i TCP port definition. Tilladt tegn er tal, \":\" og \",\".';
-$wb['udp_ports_error_regex'] = 'Tegn ikke tilladt i UDP port definition. Tilladt tegn er tal, \":\" og \",\".';
+$wb['tcp_ports_error_regex'] = 'Tegn ikke tilladt i TCP port definition. Tilladt tegn er tal, \\":\\" og \\",\\".';
+$wb['udp_ports_error_regex'] = 'Tegn ikke tilladt i UDP port definition. Tilladt tegn er tal, \\":\\" og \\",\\".';
 $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?';
 ?>
diff --git a/interface/web/login/lib/lang/el_login_as.lng b/interface/web/login/lib/lang/el_login_as.lng
index a6c2988017..435d3e9a69 100644
--- a/interface/web/login/lib/lang/el_login_as.lng
+++ b/interface/web/login/lib/lang/el_login_as.lng
@@ -1,12 +1,12 @@
 <?php
 $wb['login_1_txt'] = 'Θέλετε να εισέλθετε ως χρήστης;';
-$wb['login_2_txt'] = 'Αν το κάνετε, μπορείτε να  \"επιστρέψετε\" κάνοντας αποσύνδεση.';
+$wb['login_2_txt'] = 'Αν το κάνετε, μπορείτε να  \\"επιστρέψετε\\" κάνοντας αποσύνδεση.';
 $wb['btn_yes_txt'] = 'Ναι, είσοδος ως Πελάτης';
 $wb['btn_back_txt'] = 'Όχι, επιστροφή στην λίστα';
 $wb['udp_port_help_txt'] = 'διαχωρισμός με κόμα';
 $wb['active_txt'] = 'Εν Ενεργεία';
 $wb['firewall_error_unique'] = 'Υπάρχει ήδη μια εγγραφή Firewall για αυτόν τον server.';
-$wb['tcp_ports_error_regex'] = 'Μη έγκυρος χαρακτήρας για τον ορισμός θύρας tcp. Επιτρεπόμενοι χαρακτήρες είναι οι αριθμοί, η \":\" και οι \",\".';
-$wb['udp_ports_error_regex'] = 'Μη έγκυρος χαρακτήρας για τον ορισμός θύρας udp. Επιτρεπόμενοι χαρακτήρες είναι οι αριθμοί, η \":\" και οι \",\".';
+$wb['tcp_ports_error_regex'] = 'Μη έγκυρος χαρακτήρας για τον ορισμός θύρας tcp. Επιτρεπόμενοι χαρακτήρες είναι οι αριθμοί, η \\":\\" και οι \\",\\".';
+$wb['udp_ports_error_regex'] = 'Μη έγκυρος χαρακτήρας για τον ορισμός θύρας udp. Επιτρεπόμενοι χαρακτήρες είναι οι αριθμοί, η \\":\\" και οι \\",\\".';
 $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?';
 ?>
diff --git a/interface/web/login/lib/lang/es_login_as.lng b/interface/web/login/lib/lang/es_login_as.lng
index 10a8554bcb..b7f3e21f98 100755
--- a/interface/web/login/lib/lang/es_login_as.lng
+++ b/interface/web/login/lib/lang/es_login_as.lng
@@ -4,9 +4,9 @@ $wb['btn_back_txt'] = 'No, volver a la lista';
 $wb['btn_yes_txt'] = 'Sí, iniciar sesión como cliente';
 $wb['firewall_error_unique'] = 'Ya existe un registro de cortafuegos para este servidor.';
 $wb['login_1_txt'] = 'Desea iniciar sesión como usuario';
-$wb['login_2_txt'] = 'Si lo hace, puede \"volver\" haciendo clic en salir.';
-$wb['tcp_ports_error_regex'] = 'Caracteres no permitidos en la definición de puertos tcp. Los caracteres permitidos son: números, \":\" y \",\".';
+$wb['login_2_txt'] = 'Si lo hace, puede \\"volver\\" haciendo clic en salir.';
+$wb['tcp_ports_error_regex'] = 'Caracteres no permitidos en la definición de puertos tcp. Los caracteres permitidos son: números, \\":\\" y \\",\\".';
 $wb['udp_port_help_txt'] = 'Separado por comas';
-$wb['udp_ports_error_regex'] = 'Caracteres no permitidos en la definición de puertos udp. Los caracteres permitidos son: números, \":\" y \",\".';
+$wb['udp_ports_error_regex'] = 'Caracteres no permitidos en la definición de puertos udp. Los caracteres permitidos son: números, \\":\\" y \\",\\".';
 $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?';
 ?>
diff --git a/interface/web/login/lib/lang/fi_login_as.lng b/interface/web/login/lib/lang/fi_login_as.lng
index 68cb3318e5..cf75b54b47 100644
--- a/interface/web/login/lib/lang/fi_login_as.lng
+++ b/interface/web/login/lib/lang/fi_login_as.lng
@@ -1,12 +1,12 @@
 <?php
 $wb['login_1_txt'] = 'Do you want to login as user';
-$wb['login_2_txt'] = 'If you do so, you can \"go back\" by clicking at logout.';
+$wb['login_2_txt'] = 'If you do so, you can \\"go back\\" by clicking at logout.';
 $wb['btn_yes_txt'] = 'Yes, login as Client';
 $wb['btn_back_txt'] = 'No, back to list';
 $wb['udp_port_help_txt'] = 'Separated by comma';
 $wb['active_txt'] = 'Active';
 $wb['firewall_error_unique'] = 'There is already a firewall record for this server.';
-$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".';
-$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".';
+$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".';
+$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".';
 $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?';
 ?>
diff --git a/interface/web/login/lib/lang/hr_login_as.lng b/interface/web/login/lib/lang/hr_login_as.lng
index a94f659705..bcd13040d3 100644
--- a/interface/web/login/lib/lang/hr_login_as.lng
+++ b/interface/web/login/lib/lang/hr_login_as.lng
@@ -1,12 +1,12 @@
 <?php
 $wb['login_1_txt'] = 'Do you want to login as user';
-$wb['login_2_txt'] = 'If you do so, you can \"go back\" by clicking at logout.';
+$wb['login_2_txt'] = 'If you do so, you can \\"go back\\" by clicking at logout.';
 $wb['btn_yes_txt'] = 'Yes, login as Client';
 $wb['btn_back_txt'] = 'No, back to list';
 $wb['udp_port_help_txt'] = 'Odvojeno zarezom';
 $wb['active_txt'] = 'Aktivno';
 $wb['firewall_error_unique'] = 'There is already a firewall record for this server.';
-$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".';
-$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".';
+$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".';
+$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".';
 $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?';
 ?>
diff --git a/interface/web/login/lib/lang/hu_login_as.lng b/interface/web/login/lib/lang/hu_login_as.lng
index 68cb3318e5..cf75b54b47 100644
--- a/interface/web/login/lib/lang/hu_login_as.lng
+++ b/interface/web/login/lib/lang/hu_login_as.lng
@@ -1,12 +1,12 @@
 <?php
 $wb['login_1_txt'] = 'Do you want to login as user';
-$wb['login_2_txt'] = 'If you do so, you can \"go back\" by clicking at logout.';
+$wb['login_2_txt'] = 'If you do so, you can \\"go back\\" by clicking at logout.';
 $wb['btn_yes_txt'] = 'Yes, login as Client';
 $wb['btn_back_txt'] = 'No, back to list';
 $wb['udp_port_help_txt'] = 'Separated by comma';
 $wb['active_txt'] = 'Active';
 $wb['firewall_error_unique'] = 'There is already a firewall record for this server.';
-$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".';
-$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".';
+$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".';
+$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".';
 $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?';
 ?>
diff --git a/interface/web/login/lib/lang/id_login_as.lng b/interface/web/login/lib/lang/id_login_as.lng
index 68cb3318e5..cf75b54b47 100644
--- a/interface/web/login/lib/lang/id_login_as.lng
+++ b/interface/web/login/lib/lang/id_login_as.lng
@@ -1,12 +1,12 @@
 <?php
 $wb['login_1_txt'] = 'Do you want to login as user';
-$wb['login_2_txt'] = 'If you do so, you can \"go back\" by clicking at logout.';
+$wb['login_2_txt'] = 'If you do so, you can \\"go back\\" by clicking at logout.';
 $wb['btn_yes_txt'] = 'Yes, login as Client';
 $wb['btn_back_txt'] = 'No, back to list';
 $wb['udp_port_help_txt'] = 'Separated by comma';
 $wb['active_txt'] = 'Active';
 $wb['firewall_error_unique'] = 'There is already a firewall record for this server.';
-$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".';
-$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".';
+$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".';
+$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".';
 $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?';
 ?>
diff --git a/interface/web/login/lib/lang/it_login_as.lng b/interface/web/login/lib/lang/it_login_as.lng
index fab2f1b088..3fa23da274 100644
--- a/interface/web/login/lib/lang/it_login_as.lng
+++ b/interface/web/login/lib/lang/it_login_as.lng
@@ -1,12 +1,12 @@
 <?php
 $wb['login_1_txt'] = 'Desideri accedere come utente';
-$wb['login_2_txt'] = 'Se vuoi procedere puoi tornare indietro \"go back\" eseguendo il logout.';
+$wb['login_2_txt'] = 'Se vuoi procedere puoi tornare indietro \\"go back\\" eseguendo il logout.';
 $wb['btn_yes_txt'] = 'Si, login accedi come cliente';
 $wb['btn_back_txt'] = 'No, torna alla lista';
 $wb['udp_port_help_txt'] = 'Separato da virgola';
 $wb['active_txt'] = 'Attivo';
 $wb['firewall_error_unique'] = 'Esiste già un record firewall per questo server.';
-$wb['tcp_ports_error_regex'] = 'Caratteri non autorizzati nella definizine di porta tcp. Sono consentiti caratteri numerici, \":\" e \",\".';
-$wb['udp_ports_error_regex'] = 'Caratteri non autorizzati nella definizine di porta udp. ono consentiti caratteri numerici, \":\" e \",\".';
+$wb['tcp_ports_error_regex'] = 'Caratteri non autorizzati nella definizine di porta tcp. Sono consentiti caratteri numerici, \\":\\" e \\",\\".';
+$wb['udp_ports_error_regex'] = 'Caratteri non autorizzati nella definizine di porta udp. ono consentiti caratteri numerici, \\":\\" e \\",\\".';
 $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?';
 ?>
diff --git a/interface/web/login/lib/lang/ja_login_as.lng b/interface/web/login/lib/lang/ja_login_as.lng
index 68cb3318e5..cf75b54b47 100644
--- a/interface/web/login/lib/lang/ja_login_as.lng
+++ b/interface/web/login/lib/lang/ja_login_as.lng
@@ -1,12 +1,12 @@
 <?php
 $wb['login_1_txt'] = 'Do you want to login as user';
-$wb['login_2_txt'] = 'If you do so, you can \"go back\" by clicking at logout.';
+$wb['login_2_txt'] = 'If you do so, you can \\"go back\\" by clicking at logout.';
 $wb['btn_yes_txt'] = 'Yes, login as Client';
 $wb['btn_back_txt'] = 'No, back to list';
 $wb['udp_port_help_txt'] = 'Separated by comma';
 $wb['active_txt'] = 'Active';
 $wb['firewall_error_unique'] = 'There is already a firewall record for this server.';
-$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".';
-$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".';
+$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".';
+$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".';
 $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?';
 ?>
diff --git a/interface/web/login/lib/lang/nl_login_as.lng b/interface/web/login/lib/lang/nl_login_as.lng
index 3061782706..d4d2715e7a 100644
--- a/interface/web/login/lib/lang/nl_login_as.lng
+++ b/interface/web/login/lib/lang/nl_login_as.lng
@@ -6,7 +6,7 @@ $wb['btn_back_txt'] = 'Nee, terug naar het overzicht';
 $wb['udp_port_help_txt'] = 'Gescheiden door komma';
 $wb['active_txt'] = 'Active';
 $wb['firewall_error_unique'] = 'There is already a firewall record for this server.';
-$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".';
-$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".';
+$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".';
+$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".';
 $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?';
 ?>
diff --git a/interface/web/login/lib/lang/pt_login_as.lng b/interface/web/login/lib/lang/pt_login_as.lng
index 68cb3318e5..cf75b54b47 100644
--- a/interface/web/login/lib/lang/pt_login_as.lng
+++ b/interface/web/login/lib/lang/pt_login_as.lng
@@ -1,12 +1,12 @@
 <?php
 $wb['login_1_txt'] = 'Do you want to login as user';
-$wb['login_2_txt'] = 'If you do so, you can \"go back\" by clicking at logout.';
+$wb['login_2_txt'] = 'If you do so, you can \\"go back\\" by clicking at logout.';
 $wb['btn_yes_txt'] = 'Yes, login as Client';
 $wb['btn_back_txt'] = 'No, back to list';
 $wb['udp_port_help_txt'] = 'Separated by comma';
 $wb['active_txt'] = 'Active';
 $wb['firewall_error_unique'] = 'There is already a firewall record for this server.';
-$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".';
-$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".';
+$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".';
+$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".';
 $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?';
 ?>
diff --git a/interface/web/login/lib/lang/ro_login_as.lng b/interface/web/login/lib/lang/ro_login_as.lng
index 68cb3318e5..cf75b54b47 100644
--- a/interface/web/login/lib/lang/ro_login_as.lng
+++ b/interface/web/login/lib/lang/ro_login_as.lng
@@ -1,12 +1,12 @@
 <?php
 $wb['login_1_txt'] = 'Do you want to login as user';
-$wb['login_2_txt'] = 'If you do so, you can \"go back\" by clicking at logout.';
+$wb['login_2_txt'] = 'If you do so, you can \\"go back\\" by clicking at logout.';
 $wb['btn_yes_txt'] = 'Yes, login as Client';
 $wb['btn_back_txt'] = 'No, back to list';
 $wb['udp_port_help_txt'] = 'Separated by comma';
 $wb['active_txt'] = 'Active';
 $wb['firewall_error_unique'] = 'There is already a firewall record for this server.';
-$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".';
-$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".';
+$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".';
+$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".';
 $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?';
 ?>
diff --git a/interface/web/login/lib/lang/ru_login_as.lng b/interface/web/login/lib/lang/ru_login_as.lng
index 46a3eab288..63031d4d09 100644
--- a/interface/web/login/lib/lang/ru_login_as.lng
+++ b/interface/web/login/lib/lang/ru_login_as.lng
@@ -1,12 +1,12 @@
 <?php
 $wb['login_1_txt'] = 'Вы хотите войти как пользователь';
-$wb['login_2_txt'] = 'Если вы это сделаете, вы можете \"вернуться\", нажав на \"выход\".';
+$wb['login_2_txt'] = 'Если вы это сделаете, вы можете \\"вернуться\\", нажав на \\"выход\\".';
 $wb['btn_yes_txt'] = 'Да, войти как Клиент';
 $wb['btn_back_txt'] = 'Нет, назад к списку';
 $wb['udp_port_help_txt'] = 'Перечислить через запятую';
 $wb['active_txt'] = 'Активно';
 $wb['firewall_error_unique'] = 'Уже есть такая запись бредмауэра для этого сервера.';
-$wb['tcp_ports_error_regex'] = 'Недопустимый символ в указании tcp порта. Корректные сиволы - цифры, \":\" и \",\"';
-$wb['udp_ports_error_regex'] = 'Некорректный символ в указании UDP порта. Допустимые сиволы - цифры, \":\" и \",\"';
+$wb['tcp_ports_error_regex'] = 'Недопустимый символ в указании tcp порта. Корректные сиволы - цифры, \\":\\" и \\",\\"';
+$wb['udp_ports_error_regex'] = 'Некорректный символ в указании UDP порта. Допустимые сиволы - цифры, \\":\\" и \\",\\"';
 $wb['login_as_or_logout_txt'] = 'Вы хотите заново войти как {UTYPE} или выйти?';
 ?>
diff --git a/interface/web/login/lib/lang/se_login_as.lng b/interface/web/login/lib/lang/se_login_as.lng
index 203832c7b7..17a82080dc 100644
--- a/interface/web/login/lib/lang/se_login_as.lng
+++ b/interface/web/login/lib/lang/se_login_as.lng
@@ -1,12 +1,12 @@
 <?php
 $wb['login_1_txt'] = 'Vill du loggga in som användare';
-$wb['login_2_txt'] = 'If you do so, you can \"go back\" by clicking at logout.';
+$wb['login_2_txt'] = 'If you do so, you can \\"go back\\" by clicking at logout.';
 $wb['btn_yes_txt'] = 'Ja, logga in som kund';
 $wb['btn_back_txt'] = 'Nej, tillbaka till listan';
 $wb['udp_port_help_txt'] = 'Avdelade med kommatecken';
 $wb['active_txt'] = 'Aktiv';
 $wb['firewall_error_unique'] = 'There is already a firewall record for this server.';
-$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".';
-$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".';
+$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".';
+$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".';
 $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?';
 ?>
diff --git a/interface/web/login/lib/lang/sk_login_as.lng b/interface/web/login/lib/lang/sk_login_as.lng
index 68cb3318e5..cf75b54b47 100644
--- a/interface/web/login/lib/lang/sk_login_as.lng
+++ b/interface/web/login/lib/lang/sk_login_as.lng
@@ -1,12 +1,12 @@
 <?php
 $wb['login_1_txt'] = 'Do you want to login as user';
-$wb['login_2_txt'] = 'If you do so, you can \"go back\" by clicking at logout.';
+$wb['login_2_txt'] = 'If you do so, you can \\"go back\\" by clicking at logout.';
 $wb['btn_yes_txt'] = 'Yes, login as Client';
 $wb['btn_back_txt'] = 'No, back to list';
 $wb['udp_port_help_txt'] = 'Separated by comma';
 $wb['active_txt'] = 'Active';
 $wb['firewall_error_unique'] = 'There is already a firewall record for this server.';
-$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".';
-$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".';
+$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".';
+$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".';
 $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?';
 ?>
diff --git a/interface/web/login/lib/lang/tr_login_as.lng b/interface/web/login/lib/lang/tr_login_as.lng
index a000d44342..f7f12feeff 100644
--- a/interface/web/login/lib/lang/tr_login_as.lng
+++ b/interface/web/login/lib/lang/tr_login_as.lng
@@ -1,12 +1,12 @@
 <?php
 $wb['login_1_txt'] = 'Bu kullanıcı olarak oturum açmak ister misiniz';
-$wb['login_2_txt'] = '\"Geri dönmek\" için oturumu kapat üzerine tıklayın.';
+$wb['login_2_txt'] = '\\"Geri dönmek\\" için oturumu kapat üzerine tıklayın.';
 $wb['btn_yes_txt'] = 'Evet, Müşteri olarak oturum aç';
 $wb['btn_back_txt'] = 'Hayır, listeye geri dön';
 $wb['udp_port_help_txt'] = 'Virgül ile ayırarak yazın';
 $wb['active_txt'] = 'Etkin';
 $wb['firewall_error_unique'] = 'Bu sunucu için bir güvenlik duvarı kaydı zaten var.';
-$wb['tcp_ports_error_regex'] = 'TCP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, \":\" ve \",\" karakterleri kullanılabilir.';
-$wb['udp_ports_error_regex'] = 'UDP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, \":\" ve \",\" karakterleri kullanılabilir.';
+$wb['tcp_ports_error_regex'] = 'TCP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, \\":\\" ve \\",\\" karakterleri kullanılabilir.';
+$wb['udp_ports_error_regex'] = 'UDP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, \\":\\" ve \\",\\" karakterleri kullanılabilir.';
 $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?';
 ?>
diff --git a/interface/web/mail/lib/lang/ar.lng b/interface/web/mail/lib/lang/ar.lng
index e12b05e278..3d15a518a1 100644
--- a/interface/web/mail/lib/lang/ar.lng
+++ b/interface/web/mail/lib/lang/ar.lng
@@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Global Filters';
 $wb['Domain Alias'] = 'Domain Alias';
 $wb['Relay Recipients'] = 'Relay Recipients';
 $wb['Mailbox quota'] = 'Mailbox quota';
+$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")';
+$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)';
 ?>
diff --git a/interface/web/mail/lib/lang/ar_mail_domain_catchall.lng b/interface/web/mail/lib/lang/ar_mail_domain_catchall.lng
index af8e42f24b..d1b54151d2 100644
--- a/interface/web/mail/lib/lang/ar_mail_domain_catchall.lng
+++ b/interface/web/mail/lib/lang/ar_mail_domain_catchall.lng
@@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Invalid domain name od domain contains invalid char
 $wb['limit_mailcatchall_txt'] = 'The max. number of email catchall accounts for your account is reached.';
 $wb['source_txt'] = 'Source';
 $wb['destination_error_isemail'] = 'Destination is no valid email address.';
+$wb['greylisting_txt'] = 'Enable greylisting';
 ?>
diff --git a/interface/web/mail/lib/lang/ar_mail_get.lng b/interface/web/mail/lib/lang/ar_mail_get.lng
index 5d6a72fbfb..8ae7712151 100644
--- a/interface/web/mail/lib/lang/ar_mail_get.lng
+++ b/interface/web/mail/lib/lang/ar_mail_get.lng
@@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Password is empty.';
 $wb['destination_error_isemail'] = 'No destination selected.';
 $wb['source_server_error_regex'] = 'Pop3/Imap Server is not a valid domain name.';
 $wb['source_read_all_txt'] = 'Retrieve all emails (incl. read mails)';
-$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes';
+$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes';
 $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.';
 ?>
diff --git a/interface/web/mail/lib/lang/ar_spamfilter_policy.lng b/interface/web/mail/lib/lang/ar_spamfilter_policy.lng
index e876330a68..683b378c21 100644
--- a/interface/web/mail/lib/lang/ar_spamfilter_policy.lng
+++ b/interface/web/mail/lib/lang/ar_spamfilter_policy.lng
@@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Bad header admin';
 $wb['spam_admin_txt'] = 'SPAM admin';
 $wb['message_size_limit_txt'] = 'Message size limit';
 $wb['banned_rulenames_txt'] = 'Banned rulenames';
+$wb['rspamd_greylisting_txt'] = 'Use greylisting';
+$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level';
+$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level';
+$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method';
+$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['amavis_settings_txt'] = 'Settings';
+$wb['amavis_taglevel_txt'] = 'Tag-Level';
+$wb['amavis_quarantine_txt'] = 'Quarantine';
+$wb['amavis_other_txt'] = 'Other';
+$wb['add_header_txt'] = 'Add header';
+$wb['rewrite_subject_txt'] = 'Rewrite subject';
 ?>
diff --git a/interface/web/mail/lib/lang/bg.lng b/interface/web/mail/lib/lang/bg.lng
index a1299f4472..c117c863a2 100644
--- a/interface/web/mail/lib/lang/bg.lng
+++ b/interface/web/mail/lib/lang/bg.lng
@@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Глобални филтри';
 $wb['Domain Alias'] = 'Domain Alias';
 $wb['Relay Recipients'] = 'Relay Recipients';
 $wb['Mailbox quota'] = 'Mailbox quota';
+$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")';
+$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)';
 ?>
diff --git a/interface/web/mail/lib/lang/bg_mail_domain_catchall.lng b/interface/web/mail/lib/lang/bg_mail_domain_catchall.lng
index 5db26b11a1..06f1f01e11 100644
--- a/interface/web/mail/lib/lang/bg_mail_domain_catchall.lng
+++ b/interface/web/mail/lib/lang/bg_mail_domain_catchall.lng
@@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Грешен домейн или непозволе
 $wb['limit_mailcatchall_txt'] = 'Максималният брой записи за catchall в твоят акоунт е достигнат.';
 $wb['source_txt'] = 'Source';
 $wb['destination_error_isemail'] = 'Destination is no valid email address.';
+$wb['greylisting_txt'] = 'Enable greylisting';
 ?>
diff --git a/interface/web/mail/lib/lang/bg_mail_get.lng b/interface/web/mail/lib/lang/bg_mail_get.lng
index 305256d5c6..e1b1935d32 100644
--- a/interface/web/mail/lib/lang/bg_mail_get.lng
+++ b/interface/web/mail/lib/lang/bg_mail_get.lng
@@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Password is empty.';
 $wb['destination_error_isemail'] = 'No destination selected.';
 $wb['source_server_error_regex'] = 'Pop3/Imap Server is not a valid domain name.';
 $wb['source_read_all_txt'] = 'Retrieve all emails (incl. read mails)';
-$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes';
+$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes';
 $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.';
 ?>
diff --git a/interface/web/mail/lib/lang/bg_spamfilter_policy.lng b/interface/web/mail/lib/lang/bg_spamfilter_policy.lng
index e876330a68..683b378c21 100644
--- a/interface/web/mail/lib/lang/bg_spamfilter_policy.lng
+++ b/interface/web/mail/lib/lang/bg_spamfilter_policy.lng
@@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Bad header admin';
 $wb['spam_admin_txt'] = 'SPAM admin';
 $wb['message_size_limit_txt'] = 'Message size limit';
 $wb['banned_rulenames_txt'] = 'Banned rulenames';
+$wb['rspamd_greylisting_txt'] = 'Use greylisting';
+$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level';
+$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level';
+$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method';
+$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['amavis_settings_txt'] = 'Settings';
+$wb['amavis_taglevel_txt'] = 'Tag-Level';
+$wb['amavis_quarantine_txt'] = 'Quarantine';
+$wb['amavis_other_txt'] = 'Other';
+$wb['add_header_txt'] = 'Add header';
+$wb['rewrite_subject_txt'] = 'Rewrite subject';
 ?>
diff --git a/interface/web/mail/lib/lang/br.lng b/interface/web/mail/lib/lang/br.lng
index 3ae45b5db0..972e134bc8 100644
--- a/interface/web/mail/lib/lang/br.lng
+++ b/interface/web/mail/lib/lang/br.lng
@@ -45,4 +45,6 @@ $wb['Domain Alias'] = 'Apelidos de domínio';
 $wb['Relay Recipients'] = 'Destinatários de retransmissão';
 $wb['Mailbox quota'] = 'Cota para contas de e-mails';
 $wb['Server'] = 'Servidor';
+$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")';
+$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)';
 ?>
diff --git a/interface/web/mail/lib/lang/br_mail_domain_catchall.lng b/interface/web/mail/lib/lang/br_mail_domain_catchall.lng
index df5fd39b9a..3c4c6a2628 100644
--- a/interface/web/mail/lib/lang/br_mail_domain_catchall.lng
+++ b/interface/web/mail/lib/lang/br_mail_domain_catchall.lng
@@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'O domínio contém caracteres inválidos';
 $wb['limit_mailcatchall_txt'] = 'O limite de contas cata tudo para este domínio foi alcançado.';
 $wb['source_txt'] = 'Origem';
 $wb['destination_error_isemail'] = 'Destino não é um e-mail válido.';
+$wb['greylisting_txt'] = 'Enable greylisting';
 ?>
diff --git a/interface/web/mail/lib/lang/br_mail_user.lng b/interface/web/mail/lib/lang/br_mail_user.lng
index a786566277..f91d40f625 100644
--- a/interface/web/mail/lib/lang/br_mail_user.lng
+++ b/interface/web/mail/lib/lang/br_mail_user.lng
@@ -35,7 +35,7 @@ $wb['name_txt'] = 'Nome real';
 $wb['name_optional_txt'] = '(Opcional)';
 $wb['autoresponder_active'] = 'Ativar autoresposta';
 $wb['cc_txt'] = 'Enviar cópia para';
-$wb['cc_error_isemail'] = 'O campo \"Enviar cópia para\" deve conter um endereço de e-mail válido';
+$wb['cc_error_isemail'] = 'O campo \\"Enviar cópia para\\" deve conter um endereço de e-mail válido';
 $wb['domain_txt'] = 'Domínio';
 $wb['now_txt'] = 'Agora';
 $wb['login_error_unique'] = 'O acesso já está em uso.';
@@ -48,7 +48,7 @@ $wb['generate_password_txt'] = 'Gerar senha';
 $wb['repeat_password_txt'] = 'Repetir senha';
 $wb['password_mismatch_txt'] = 'A senhas não coincidem.';
 $wb['password_match_txt'] = 'A senhas coincidem.';
-$wb['email_error_isascii'] = 'Por favor não use caracteres \"unicode\" para a senha. Esta ação poderá causar problemas com seu cliente de e-mail (mua).';
+$wb['email_error_isascii'] = 'Por favor não use caracteres \\"unicode\\" para a senha. Esta ação poderá causar problemas com seu cliente de e-mail (mua).';
 $wb['cc_note_txt'] = '(Múltiplos e-mails separados por vírgulas)';
 $wb['disablesmtp_txt'] = 'Desabilitar smtp (envio)';
 $wb['autoresponder_start_date_is_required'] = 'Data de início deve ser configurada quando \'autoresposta\' é habilitada.';
diff --git a/interface/web/mail/lib/lang/br_spamfilter_policy.lng b/interface/web/mail/lib/lang/br_spamfilter_policy.lng
index 998f36d8fa..b5bb69db43 100644
--- a/interface/web/mail/lib/lang/br_spamfilter_policy.lng
+++ b/interface/web/mail/lib/lang/br_spamfilter_policy.lng
@@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Administrador para cabeçalhos inválidos';
 $wb['spam_admin_txt'] = 'Administrador para spam';
 $wb['message_size_limit_txt'] = 'Tamanho máximo da mensagem';
 $wb['banned_rulenames_txt'] = 'Regras de banimento';
+$wb['rspamd_greylisting_txt'] = 'Use greylisting';
+$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level';
+$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level';
+$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method';
+$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['amavis_settings_txt'] = 'Settings';
+$wb['amavis_taglevel_txt'] = 'Tag-Level';
+$wb['amavis_quarantine_txt'] = 'Quarantine';
+$wb['amavis_other_txt'] = 'Other';
+$wb['add_header_txt'] = 'Add header';
+$wb['rewrite_subject_txt'] = 'Rewrite subject';
 ?>
diff --git a/interface/web/mail/lib/lang/ca.lng b/interface/web/mail/lib/lang/ca.lng
index 1665346a82..0531f19bd0 100644
--- a/interface/web/mail/lib/lang/ca.lng
+++ b/interface/web/mail/lib/lang/ca.lng
@@ -45,4 +45,6 @@ $wb['Mailbox traffic'] = 'Trafic de la boite courriels';
 $wb['Domain Alias'] = 'Alias de domaine';
 $wb['Relay Recipients'] = 'Destinataires de relais';
 $wb['Mailbox quota'] = 'Quota courriel';
+$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")';
+$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)';
 ?>
diff --git a/interface/web/mail/lib/lang/ca_mail_domain_catchall.lng b/interface/web/mail/lib/lang/ca_mail_domain_catchall.lng
index 7e82c34ca2..feafd436f6 100644
--- a/interface/web/mail/lib/lang/ca_mail_domain_catchall.lng
+++ b/interface/web/mail/lib/lang/ca_mail_domain_catchall.lng
@@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Nom de domaine invalide, ou contient des caractère
 $wb['limit_mailcatchall_txt'] = 'Le nombre maximal de comptes collecteurs pour votre compte a été atteint.';
 $wb['source_txt'] = 'Source';
 $wb['destination_error_isemail'] = 'La destination n\'est pas valide.';
+$wb['greylisting_txt'] = 'Enable greylisting';
 ?>
diff --git a/interface/web/mail/lib/lang/ca_mail_get.lng b/interface/web/mail/lib/lang/ca_mail_get.lng
index 9300a29049..a13a1b03f6 100644
--- a/interface/web/mail/lib/lang/ca_mail_get.lng
+++ b/interface/web/mail/lib/lang/ca_mail_get.lng
@@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Le mot de passe est vide.';
 $wb['destination_error_isemail'] = 'Pas de destination sélectionnée.';
 $wb['source_server_error_regex'] = 'Le serveur POP3 / IMAP n\'est pas un nom de domaine valide.';
 $wb['source_read_all_txt'] = 'Récupérer tous les courriels (incl. les courriels lus)';
-$wb['error_delete_read_all_combination'] = 'Combinaison d\'options non autorisée. Vous ne pouvez pas utiliser \"Supprimer les courriels après récupération\" = non avec \"Récupérer tous les courriels\" = oui';
+$wb['error_delete_read_all_combination'] = 'Combinaison d\'options non autorisée. Vous ne pouvez pas utiliser \\"Supprimer les courriels après récupération\\" = non avec \\"Récupérer tous les courriels\\" = oui';
 $wb['source_delete_note_txt'] = 'Please check first if courriel retrieval works, before you activate this option.';
 ?>
diff --git a/interface/web/mail/lib/lang/ca_spamfilter_policy.lng b/interface/web/mail/lib/lang/ca_spamfilter_policy.lng
index d07b382ddf..7b593f0a16 100644
--- a/interface/web/mail/lib/lang/ca_spamfilter_policy.lng
+++ b/interface/web/mail/lib/lang/ca_spamfilter_policy.lng
@@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Admin mauvais entête';
 $wb['spam_admin_txt'] = 'Admin SPAM';
 $wb['message_size_limit_txt'] = 'Limite de taille de message';
 $wb['banned_rulenames_txt'] = 'Noms des règles bannir';
+$wb['rspamd_greylisting_txt'] = 'Use greylisting';
+$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level';
+$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level';
+$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method';
+$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['amavis_settings_txt'] = 'Settings';
+$wb['amavis_taglevel_txt'] = 'Tag-Level';
+$wb['amavis_quarantine_txt'] = 'Quarantine';
+$wb['amavis_other_txt'] = 'Other';
+$wb['add_header_txt'] = 'Add header';
+$wb['rewrite_subject_txt'] = 'Rewrite subject';
 ?>
diff --git a/interface/web/mail/lib/lang/cz.lng b/interface/web/mail/lib/lang/cz.lng
index d0f6157cb4..040a6d0de8 100644
--- a/interface/web/mail/lib/lang/cz.lng
+++ b/interface/web/mail/lib/lang/cz.lng
@@ -45,4 +45,6 @@ $wb['Domain Alias'] = 'Přezdívky e-mailových domén';
 $wb['Relay Recipients'] = 'Relay adresáti';
 $wb['Statistics'] = 'Statistiky';
 $wb['Mailbox quota'] = 'Kvóty pro e-mailové schránky';
+$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")';
+$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)';
 ?>
diff --git a/interface/web/mail/lib/lang/cz_mail_domain_catchall.lng b/interface/web/mail/lib/lang/cz_mail_domain_catchall.lng
index ab4006df0c..d0ae7c7e4b 100644
--- a/interface/web/mail/lib/lang/cz_mail_domain_catchall.lng
+++ b/interface/web/mail/lib/lang/cz_mail_domain_catchall.lng
@@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Chybné doménové jméno nebo doména obsahuje chy
 $wb['limit_mailcatchall_txt'] = 'Byl dosažen maximální počet košů účtů pro Váš účet.';
 $wb['source_txt'] = 'Zdroj';
 $wb['destination_error_isemail'] = 'Cílová e-mailová adresa není platná.';
+$wb['greylisting_txt'] = 'Enable greylisting';
 ?>
diff --git a/interface/web/mail/lib/lang/cz_mail_get.lng b/interface/web/mail/lib/lang/cz_mail_get.lng
index 3dfee1a5ef..cdb39b09a1 100644
--- a/interface/web/mail/lib/lang/cz_mail_get.lng
+++ b/interface/web/mail/lib/lang/cz_mail_get.lng
@@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Heslo je prázdné.';
 $wb['destination_error_isemail'] = 'Nevybrán žádný cíl.';
 $wb['source_server_error_regex'] = 'POP3/IMAP server není validní doménový název.';
 $wb['source_read_all_txt'] = 'Načíst všechny e-maily (včetně již přečtené pošty)';
-$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes';
+$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes';
 $wb['source_delete_note_txt'] = 'Prosím, zkontrolujte nejprve, zda příjímání e-mailů funguje, než aktivujete tuto možnost.';
 ?>
diff --git a/interface/web/mail/lib/lang/cz_mail_mailinglist.lng b/interface/web/mail/lib/lang/cz_mail_mailinglist.lng
index f534d6c8e9..e1f7dfbfa5 100644
--- a/interface/web/mail/lib/lang/cz_mail_mailinglist.lng
+++ b/interface/web/mail/lib/lang/cz_mail_mailinglist.lng
@@ -16,7 +16,7 @@ $wb['generate_password_txt'] = 'Generovat heslo';
 $wb['repeat_password_txt'] = 'Opakujte heslo';
 $wb['password_mismatch_txt'] = 'Hesla se neshodují.';
 $wb['password_match_txt'] = 'Hesla se shodují.';
-$wb['listname_error_unique'] = 'Na serveru je již shodný \"název seznamu\". Prosím, vyberte si jiný \"název seznamu\".';
+$wb['listname_error_unique'] = 'Na serveru je již shodný \\"název seznamu\\". Prosím, vyberte si jiný \\"název seznamu\\".';
 $wb['email_error_isemail'] = 'E-mailová adresa je neplatná.';
 $wb['mailinglist_txt'] = 'E-mailové konference';
 ?>
diff --git a/interface/web/mail/lib/lang/cz_spamfilter_policy.lng b/interface/web/mail/lib/lang/cz_spamfilter_policy.lng
index c5765e807f..b8b8a2e78f 100644
--- a/interface/web/mail/lib/lang/cz_spamfilter_policy.lng
+++ b/interface/web/mail/lib/lang/cz_spamfilter_policy.lng
@@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Špatná hlavička admin';
 $wb['spam_admin_txt'] = 'SPAM admin';
 $wb['message_size_limit_txt'] = 'Limit velikosti zprávy';
 $wb['banned_rulenames_txt'] = 'Název pravidel zabanované';
+$wb['rspamd_greylisting_txt'] = 'Use greylisting';
+$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level';
+$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level';
+$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method';
+$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['amavis_settings_txt'] = 'Settings';
+$wb['amavis_taglevel_txt'] = 'Tag-Level';
+$wb['amavis_quarantine_txt'] = 'Quarantine';
+$wb['amavis_other_txt'] = 'Other';
+$wb['add_header_txt'] = 'Add header';
+$wb['rewrite_subject_txt'] = 'Rewrite subject';
 ?>
diff --git a/interface/web/mail/lib/lang/de.lng b/interface/web/mail/lib/lang/de.lng
index 91418972dd..e0f1e7cd3b 100644
--- a/interface/web/mail/lib/lang/de.lng
+++ b/interface/web/mail/lib/lang/de.lng
@@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Globale Filter';
 $wb['Domain Alias'] = 'E-Mail Domain Alias';
 $wb['Relay Recipients'] = 'Relay Empfänger';
 $wb['Mailbox quota'] = 'E-Mail Konto Speichernutzung';
+$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")';
+$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)';
 ?>
diff --git a/interface/web/mail/lib/lang/de_spamfilter_policy.lng b/interface/web/mail/lib/lang/de_spamfilter_policy.lng
index 1efbcb6afc..1036fbf91c 100644
--- a/interface/web/mail/lib/lang/de_spamfilter_policy.lng
+++ b/interface/web/mail/lib/lang/de_spamfilter_policy.lng
@@ -42,10 +42,10 @@ $wb['rspamd_spam_tag_method_txt'] = 'SPAM-Markierungsmethode';
 $wb['rspamd_spam_kill_level_txt'] = 'SPAM-Reject-Level';
 $wb['btn_save_txt'] = 'Speichern';
 $wb['btn_cancel_txt'] = 'Abbrechen';
-
 $wb['amavis_settings_txt'] = 'Einstellungen';
 $wb['amavis_taglevel_txt'] = 'Tag-Level';
 $wb['amavis_quarantine_txt'] = 'Quarantäne';
 $wb['amavis_other_txt'] = 'Sonstiges';
 $wb['add_header_txt'] = 'Header hinzufügen';
-$wb['rewrite_subject_txt'] = 'Betreff ändern';
\ No newline at end of file
+$wb['rewrite_subject_txt'] = 'Betreff ändern';
+?>
diff --git a/interface/web/mail/lib/lang/dk.lng b/interface/web/mail/lib/lang/dk.lng
index 7330253c23..3fe8d568ae 100644
--- a/interface/web/mail/lib/lang/dk.lng
+++ b/interface/web/mail/lib/lang/dk.lng
@@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Global Filtere';
 $wb['Domain Alias'] = 'Domæne Alias';
 $wb['Relay Recipients'] = 'Relay Modtagere';
 $wb['Mailbox quota'] = 'Postboks kvota';
+$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")';
+$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)';
 ?>
diff --git a/interface/web/mail/lib/lang/dk_mail_domain_catchall.lng b/interface/web/mail/lib/lang/dk_mail_domain_catchall.lng
index 0cdcad2098..8c0be49775 100644
--- a/interface/web/mail/lib/lang/dk_mail_domain_catchall.lng
+++ b/interface/web/mail/lib/lang/dk_mail_domain_catchall.lng
@@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Ugyldigt domæne navn eller domæne, indeholder ugy
 $wb['limit_mailcatchall_txt'] = 'Max. antal af e-mail catchall konti for din konto er nået.';
 $wb['source_txt'] = 'Kilde';
 $wb['destination_error_isemail'] = 'Destinationen er ikke en gyldig e-mail adresse.';
+$wb['greylisting_txt'] = 'Enable greylisting';
 ?>
diff --git a/interface/web/mail/lib/lang/dk_mail_get.lng b/interface/web/mail/lib/lang/dk_mail_get.lng
index dc0b7455ac..1fa44cb6ad 100644
--- a/interface/web/mail/lib/lang/dk_mail_get.lng
+++ b/interface/web/mail/lib/lang/dk_mail_get.lng
@@ -15,5 +15,5 @@ $wb['source_username_error_isempty'] = 'Brugernavn er tom.';
 $wb['source_password_error_isempty'] = 'Adgangskode er tom.';
 $wb['destination_error_isemail'] = 'Ingen destination er valgt.';
 $wb['source_server_error_regex'] = 'Pop3/Imap Server er ikke et gyldigt domænenavn.';
-$wb['error_delete_read_all_combination'] = 'Ulovlig kombination af muligheder. Du kan ikke bruge \"Slet e-mails efter hentning\" = nej sammen med \"Hent alle e-mails\" = ja';
+$wb['error_delete_read_all_combination'] = 'Ulovlig kombination af muligheder. Du kan ikke bruge \\"Slet e-mails efter hentning\\" = nej sammen med \\"Hent alle e-mails\\" = ja';
 ?>
diff --git a/interface/web/mail/lib/lang/dk_spamfilter_policy.lng b/interface/web/mail/lib/lang/dk_spamfilter_policy.lng
index b225eb48ac..97b02923d8 100644
--- a/interface/web/mail/lib/lang/dk_spamfilter_policy.lng
+++ b/interface/web/mail/lib/lang/dk_spamfilter_policy.lng
@@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Bad header admin';
 $wb['spam_admin_txt'] = 'SPAM admin';
 $wb['message_size_limit_txt'] = 'Meddelelses størrelse grænse';
 $wb['banned_rulenames_txt'] = 'Bandlyste reglnavne';
+$wb['rspamd_greylisting_txt'] = 'Use greylisting';
+$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level';
+$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level';
+$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method';
+$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['amavis_settings_txt'] = 'Settings';
+$wb['amavis_taglevel_txt'] = 'Tag-Level';
+$wb['amavis_quarantine_txt'] = 'Quarantine';
+$wb['amavis_other_txt'] = 'Other';
+$wb['add_header_txt'] = 'Add header';
+$wb['rewrite_subject_txt'] = 'Rewrite subject';
 ?>
diff --git a/interface/web/mail/lib/lang/el.lng b/interface/web/mail/lib/lang/el.lng
index f8cadc62f0..cb873eac2a 100644
--- a/interface/web/mail/lib/lang/el.lng
+++ b/interface/web/mail/lib/lang/el.lng
@@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Καθολικά Φίλτρα';
 $wb['Domain Alias'] = 'Ψευδώνυμο Domain';
 $wb['Relay Recipients'] = 'Παραλήπτες Relay';
 $wb['Mailbox quota'] = 'Mailbox quota';
+$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")';
+$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)';
 ?>
diff --git a/interface/web/mail/lib/lang/el_mail_domain_catchall.lng b/interface/web/mail/lib/lang/el_mail_domain_catchall.lng
index 43c0bdf565..b04b43cfcc 100644
--- a/interface/web/mail/lib/lang/el_mail_domain_catchall.lng
+++ b/interface/web/mail/lib/lang/el_mail_domain_catchall.lng
@@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Μη έγκρυρο όνομα domain ή το όν
 $wb['limit_mailcatchall_txt'] = 'Το μέγιστο πλήθος των email catchall για τον λογαριασμό σας, έχει εξαντληθεί.';
 $wb['source_txt'] = 'Source';
 $wb['destination_error_isemail'] = 'Destination is no valid email address.';
+$wb['greylisting_txt'] = 'Enable greylisting';
 ?>
diff --git a/interface/web/mail/lib/lang/el_mail_get.lng b/interface/web/mail/lib/lang/el_mail_get.lng
index cc2c261a5b..0ec9645c8f 100644
--- a/interface/web/mail/lib/lang/el_mail_get.lng
+++ b/interface/web/mail/lib/lang/el_mail_get.lng
@@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Το Συνθηματικό δεν έχ
 $wb['destination_error_isemail'] = 'Δεν επιλέχθηκε προορισμός.';
 $wb['source_server_error_regex'] = 'Το όνομα του Pop3/Imap Server δεν είναι έγκυρο.';
 $wb['source_read_all_txt'] = 'Ανάκτηση όλων των emails (συμπερ. αναγνωσμένων mails)';
-$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes';
+$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes';
 $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.';
 ?>
diff --git a/interface/web/mail/lib/lang/el_spamfilter_policy.lng b/interface/web/mail/lib/lang/el_spamfilter_policy.lng
index 4ab7291697..0eed350239 100644
--- a/interface/web/mail/lib/lang/el_spamfilter_policy.lng
+++ b/interface/web/mail/lib/lang/el_spamfilter_policy.lng
@@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Bad header admin';
 $wb['spam_admin_txt'] = 'SPAM admin';
 $wb['message_size_limit_txt'] = 'Όριο μεγέθους μηνύματος';
 $wb['banned_rulenames_txt'] = 'Banned rulenames';
+$wb['rspamd_greylisting_txt'] = 'Use greylisting';
+$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level';
+$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level';
+$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method';
+$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['amavis_settings_txt'] = 'Settings';
+$wb['amavis_taglevel_txt'] = 'Tag-Level';
+$wb['amavis_quarantine_txt'] = 'Quarantine';
+$wb['amavis_other_txt'] = 'Other';
+$wb['add_header_txt'] = 'Add header';
+$wb['rewrite_subject_txt'] = 'Rewrite subject';
 ?>
diff --git a/interface/web/mail/lib/lang/es.lng b/interface/web/mail/lib/lang/es.lng
index 787007a7fc..fdf4e5b00d 100755
--- a/interface/web/mail/lib/lang/es.lng
+++ b/interface/web/mail/lib/lang/es.lng
@@ -8,7 +8,7 @@ $wb['Domain'] = 'Dominio';
 $wb['Email Accounts'] = 'Cuentas de correo';
 $wb['Email Alias'] = 'Alias de correo';
 $wb['Email Blacklist'] = 'Lista negra de correo';
-$wb['Email Catchall'] = 'Correo \"recoge-todo\"';
+$wb['Email Catchall'] = 'Correo \\"recoge-todo\\"';
 $wb['Email filter'] = 'Filtro de correo';
 $wb['Email Forward'] = 'Reenvío de correo';
 $wb['Email Mailbox'] = 'Buzón de correo';
@@ -45,4 +45,6 @@ $wb['Tag-Level'] = 'Nivel de etiqueta';
 $wb['User / Domain'] = 'Usuario / Dominio';
 $wb['Users'] = 'Usuarios';
 $wb['Whitelist'] = 'Lista blanca';
+$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")';
+$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)';
 ?>
diff --git a/interface/web/mail/lib/lang/es_mail_domain_catchall.lng b/interface/web/mail/lib/lang/es_mail_domain_catchall.lng
index ed6c9b5db4..68e03c8c37 100755
--- a/interface/web/mail/lib/lang/es_mail_domain_catchall.lng
+++ b/interface/web/mail/lib/lang/es_mail_domain_catchall.lng
@@ -3,9 +3,10 @@ $wb['active_txt'] = 'Habilitado';
 $wb['destination_error_isemail'] = 'El destinatario no es una dirección de correo válida.';
 $wb['destination_txt'] = 'Correo de destino';
 $wb['domain_error_regex'] = 'El nombre de dominio es inválido o contiene caracteres no permitidos.';
-$wb['domain_error_unique'] = 'Este dominio ya tiene un correo \"recoge-todo\".';
+$wb['domain_error_unique'] = 'Este dominio ya tiene un correo \\"recoge-todo\\".';
 $wb['domain_txt'] = 'Dominio';
-$wb['limit_mailcatchall_txt'] = 'Ha alcanzado el número máx. de correo \"recoge-todo\" para correo permitidos para su cuenta.';
+$wb['limit_mailcatchall_txt'] = 'Ha alcanzado el número máx. de correo \\"recoge-todo\\" para correo permitidos para su cuenta.';
 $wb['no_domain_perm'] = 'No tiene permisos para usar este dominio.';
 $wb['source_txt'] = 'Origen';
+$wb['greylisting_txt'] = 'Enable greylisting';
 ?>
diff --git a/interface/web/mail/lib/lang/es_mail_domain_catchall_list.lng b/interface/web/mail/lib/lang/es_mail_domain_catchall_list.lng
index fc3fde1956..8288430a18 100755
--- a/interface/web/mail/lib/lang/es_mail_domain_catchall_list.lng
+++ b/interface/web/mail/lib/lang/es_mail_domain_catchall_list.lng
@@ -1,9 +1,9 @@
 <?php
 $wb['active_txt'] = 'Habilitado';
-$wb['add_new_record_txt'] = 'Añadir correo \"recoge-todo\"';
+$wb['add_new_record_txt'] = 'Añadir correo \\"recoge-todo\\"';
 $wb['destination_txt'] = 'Dirección de correo de destino';
 $wb['domain_txt'] = 'Dominio';
-$wb['list_head_txt'] = 'Correo \"recoge-todo\"';
+$wb['list_head_txt'] = 'Correo \\"recoge-todo\\"';
 $wb['server_id_txt'] = 'Servidor';
 $wb['source_txt'] = 'Origen';
 ?>
diff --git a/interface/web/mail/lib/lang/es_mail_get.lng b/interface/web/mail/lib/lang/es_mail_get.lng
index 47529e27c6..81de60b038 100755
--- a/interface/web/mail/lib/lang/es_mail_get.lng
+++ b/interface/web/mail/lib/lang/es_mail_get.lng
@@ -2,7 +2,7 @@
 $wb['active_txt'] = 'Habilitado';
 $wb['destination_error_isemail'] = 'No ha seleccionado un destinatario.';
 $wb['destination_txt'] = 'Destino';
-$wb['error_delete_read_all_combination'] = 'Combinación incorrecta de opciones. No puede usar \"Borrar correos después de recuperarlos\" = NO al mismo tiempo que \"Recuperar todos los correos\" = SI';
+$wb['error_delete_read_all_combination'] = 'Combinación incorrecta de opciones. No puede usar \\"Borrar correos después de recuperarlos\\" = NO al mismo tiempo que \\"Recuperar todos los correos\\" = SI';
 $wb['limit_fetchmail_txt'] = 'Ha alcanzado el número máx. de registros de recuperación de correo permitidos para su cuenta.';
 $wb['server_id_txt'] = 'Servidor';
 $wb['source_delete_note_txt'] = 'Por favor, verifique que funcione la recuperación de correos antes de activar esta opción.';
diff --git a/interface/web/mail/lib/lang/es_spamfilter_policy.lng b/interface/web/mail/lib/lang/es_spamfilter_policy.lng
index 1cb1d43630..b7a168c983 100755
--- a/interface/web/mail/lib/lang/es_spamfilter_policy.lng
+++ b/interface/web/mail/lib/lang/es_spamfilter_policy.lng
@@ -35,4 +35,17 @@ $wb['virus_quarantine_to_txt'] = 'Reenviar virus al correo';
 $wb['warnbadhrecip_txt'] = 'Avisar al receptor de la cabecera incorrecta.';
 $wb['warnbannedrecip_txt'] = 'Avisar al receptor del bloqueo.';
 $wb['warnvirusrecip_txt'] = 'Avisar al receptor del virus.';
+$wb['rspamd_greylisting_txt'] = 'Use greylisting';
+$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level';
+$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level';
+$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method';
+$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['amavis_settings_txt'] = 'Settings';
+$wb['amavis_taglevel_txt'] = 'Tag-Level';
+$wb['amavis_quarantine_txt'] = 'Quarantine';
+$wb['amavis_other_txt'] = 'Other';
+$wb['add_header_txt'] = 'Add header';
+$wb['rewrite_subject_txt'] = 'Rewrite subject';
 ?>
diff --git a/interface/web/mail/lib/lang/fi.lng b/interface/web/mail/lib/lang/fi.lng
index 3738c7fd64..78a4328336 100755
--- a/interface/web/mail/lib/lang/fi.lng
+++ b/interface/web/mail/lib/lang/fi.lng
@@ -45,4 +45,6 @@ $wb['Server'] = 'Palvelin';
 $wb['Domain Alias'] = 'Aliasverkkotunnus';
 $wb['Relay Recipients'] = 'Välityksen vastaanottajat';
 $wb['Mailbox quota'] = 'Mailbox quota';
+$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")';
+$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)';
 ?>
diff --git a/interface/web/mail/lib/lang/fi_mail_domain_catchall.lng b/interface/web/mail/lib/lang/fi_mail_domain_catchall.lng
index f835f5667a..085a116c2c 100755
--- a/interface/web/mail/lib/lang/fi_mail_domain_catchall.lng
+++ b/interface/web/mail/lib/lang/fi_mail_domain_catchall.lng
@@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Vääränlainen verkkotunnus tai se sisältää kie
 $wb['limit_mailcatchall_txt'] = 'Käyttäjätunnuksella on jo sallittu määrä CatchAll-tunnuksia.';
 $wb['source_txt'] = 'Source';
 $wb['destination_error_isemail'] = 'Destination is no valid email address.';
+$wb['greylisting_txt'] = 'Enable greylisting';
 ?>
diff --git a/interface/web/mail/lib/lang/fi_mail_get.lng b/interface/web/mail/lib/lang/fi_mail_get.lng
index 9eca1d8498..063a37bf04 100755
--- a/interface/web/mail/lib/lang/fi_mail_get.lng
+++ b/interface/web/mail/lib/lang/fi_mail_get.lng
@@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Salasana-kenttä on tyhjä.';
 $wb['destination_error_isemail'] = 'Ei kohdetta valittuna.';
 $wb['source_server_error_regex'] = 'Pop3/Imap-palvelin ei ole kelvollinen osoite.';
 $wb['source_read_all_txt'] = 'Retrieve all emails (incl. read mails)';
-$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes';
+$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes';
 $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.';
 ?>
diff --git a/interface/web/mail/lib/lang/fi_spamfilter_policy.lng b/interface/web/mail/lib/lang/fi_spamfilter_policy.lng
index 8f61ba411b..4f72021077 100755
--- a/interface/web/mail/lib/lang/fi_spamfilter_policy.lng
+++ b/interface/web/mail/lib/lang/fi_spamfilter_policy.lng
@@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Otsikkovirhetunnisteiden ylläpitäjä';
 $wb['spam_admin_txt'] = 'Roskapostitunnisteiden ylläpitäjä';
 $wb['message_size_limit_txt'] = 'Viestin kokoraja';
 $wb['banned_rulenames_txt'] = 'Estojen sääntönimet';
+$wb['rspamd_greylisting_txt'] = 'Use greylisting';
+$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level';
+$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level';
+$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method';
+$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['amavis_settings_txt'] = 'Settings';
+$wb['amavis_taglevel_txt'] = 'Tag-Level';
+$wb['amavis_quarantine_txt'] = 'Quarantine';
+$wb['amavis_other_txt'] = 'Other';
+$wb['add_header_txt'] = 'Add header';
+$wb['rewrite_subject_txt'] = 'Rewrite subject';
 ?>
diff --git a/interface/web/mail/lib/lang/fr.lng b/interface/web/mail/lib/lang/fr.lng
index 3437d37100..a70f080295 100644
--- a/interface/web/mail/lib/lang/fr.lng
+++ b/interface/web/mail/lib/lang/fr.lng
@@ -45,4 +45,6 @@ $wb['Domain Alias'] = 'Alias de domaine';
 $wb['Relay Recipients'] = 'Destinataires de relais';
 $wb['Mailbox quota'] = 'Mailbox quota';
 $wb['Email'] = 'Email';
+$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")';
+$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)';
 ?>
diff --git a/interface/web/mail/lib/lang/fr_mail_domain_catchall.lng b/interface/web/mail/lib/lang/fr_mail_domain_catchall.lng
index b7c4b60760..199cd47224 100644
--- a/interface/web/mail/lib/lang/fr_mail_domain_catchall.lng
+++ b/interface/web/mail/lib/lang/fr_mail_domain_catchall.lng
@@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Nom de domaine invalide, ou contient des caractère
 $wb['limit_mailcatchall_txt'] = 'Le nombre maximal de comptes collecteurs pour votre compte a été atteint.';
 $wb['source_txt'] = 'Source';
 $wb['destination_error_isemail'] = 'Destination is no valid e-mail address.';
+$wb['greylisting_txt'] = 'Enable greylisting';
 ?>
diff --git a/interface/web/mail/lib/lang/fr_mail_get.lng b/interface/web/mail/lib/lang/fr_mail_get.lng
index 118ab5ed32..00f72f0c8b 100644
--- a/interface/web/mail/lib/lang/fr_mail_get.lng
+++ b/interface/web/mail/lib/lang/fr_mail_get.lng
@@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Le mot de passe est vide.';
 $wb['destination_error_isemail'] = 'Pas de destination sélectionnée.';
 $wb['source_server_error_regex'] = 'Le serveur POP3 / IMAP n’est pas un nom de domaine valide.';
 $wb['source_read_all_txt'] = 'Récupérer tous les emails (incl. les emails lus)';
-$wb['error_delete_read_all_combination'] = 'Combinaison d’options non autorisée. Vous ne pouvez pas utiliser \"Supprimer les emails après récupération\" = non avec \"Récupérer tous les emails\" = oui';
+$wb['error_delete_read_all_combination'] = 'Combinaison d’options non autorisée. Vous ne pouvez pas utiliser \\"Supprimer les emails après récupération\\" = non avec \\"Récupérer tous les emails\\" = oui';
 $wb['source_delete_note_txt'] = 'Please check first if e-mail retrieval works, before you activate this option.';
 ?>
diff --git a/interface/web/mail/lib/lang/fr_spamfilter_policy.lng b/interface/web/mail/lib/lang/fr_spamfilter_policy.lng
index d07b382ddf..7b593f0a16 100644
--- a/interface/web/mail/lib/lang/fr_spamfilter_policy.lng
+++ b/interface/web/mail/lib/lang/fr_spamfilter_policy.lng
@@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Admin mauvais entête';
 $wb['spam_admin_txt'] = 'Admin SPAM';
 $wb['message_size_limit_txt'] = 'Limite de taille de message';
 $wb['banned_rulenames_txt'] = 'Noms des règles bannir';
+$wb['rspamd_greylisting_txt'] = 'Use greylisting';
+$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level';
+$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level';
+$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method';
+$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['amavis_settings_txt'] = 'Settings';
+$wb['amavis_taglevel_txt'] = 'Tag-Level';
+$wb['amavis_quarantine_txt'] = 'Quarantine';
+$wb['amavis_other_txt'] = 'Other';
+$wb['add_header_txt'] = 'Add header';
+$wb['rewrite_subject_txt'] = 'Rewrite subject';
 ?>
diff --git a/interface/web/mail/lib/lang/hr.lng b/interface/web/mail/lib/lang/hr.lng
index 882f6d2b7e..877f8827f5 100644
--- a/interface/web/mail/lib/lang/hr.lng
+++ b/interface/web/mail/lib/lang/hr.lng
@@ -45,4 +45,6 @@ $wb['Domain Alias'] = 'Alias domena';
 $wb['Relay Recipients'] = 'Relay primatelji';
 $wb['Mailbox quota'] = 'Mailbox quota';
 $wb['Domain'] = 'Domain';
+$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")';
+$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)';
 ?>
diff --git a/interface/web/mail/lib/lang/hr_mail_domain_catchall.lng b/interface/web/mail/lib/lang/hr_mail_domain_catchall.lng
index 2c8d23e218..1c8da72ab3 100644
--- a/interface/web/mail/lib/lang/hr_mail_domain_catchall.lng
+++ b/interface/web/mail/lib/lang/hr_mail_domain_catchall.lng
@@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Neispravan naziv domene ili naziv sadrži nedozvolj
 $wb['limit_mailcatchall_txt'] = 'Iskorišten ja maksimalan broj email catchall računa.';
 $wb['source_txt'] = 'Source';
 $wb['destination_error_isemail'] = 'Destination is no valid email address.';
+$wb['greylisting_txt'] = 'Enable greylisting';
 ?>
diff --git a/interface/web/mail/lib/lang/hr_mail_get.lng b/interface/web/mail/lib/lang/hr_mail_get.lng
index 025bb136b0..18c53a4d53 100644
--- a/interface/web/mail/lib/lang/hr_mail_get.lng
+++ b/interface/web/mail/lib/lang/hr_mail_get.lng
@@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Password is empty.';
 $wb['destination_error_isemail'] = 'No destination selected.';
 $wb['source_server_error_regex'] = 'Pop3/Imap Server is not a valid domain name.';
 $wb['source_read_all_txt'] = 'Retrieve all emails (incl. read mails)';
-$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes';
+$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes';
 $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.';
 ?>
diff --git a/interface/web/mail/lib/lang/hr_spamfilter_policy.lng b/interface/web/mail/lib/lang/hr_spamfilter_policy.lng
index e876330a68..683b378c21 100644
--- a/interface/web/mail/lib/lang/hr_spamfilter_policy.lng
+++ b/interface/web/mail/lib/lang/hr_spamfilter_policy.lng
@@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Bad header admin';
 $wb['spam_admin_txt'] = 'SPAM admin';
 $wb['message_size_limit_txt'] = 'Message size limit';
 $wb['banned_rulenames_txt'] = 'Banned rulenames';
+$wb['rspamd_greylisting_txt'] = 'Use greylisting';
+$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level';
+$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level';
+$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method';
+$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['amavis_settings_txt'] = 'Settings';
+$wb['amavis_taglevel_txt'] = 'Tag-Level';
+$wb['amavis_quarantine_txt'] = 'Quarantine';
+$wb['amavis_other_txt'] = 'Other';
+$wb['add_header_txt'] = 'Add header';
+$wb['rewrite_subject_txt'] = 'Rewrite subject';
 ?>
diff --git a/interface/web/mail/lib/lang/hu.lng b/interface/web/mail/lib/lang/hu.lng
index 752f4003a8..f3ffa4aef0 100644
--- a/interface/web/mail/lib/lang/hu.lng
+++ b/interface/web/mail/lib/lang/hu.lng
@@ -45,4 +45,6 @@ $wb['Domain Alias'] = 'Domain Alias';
 $wb['Relay Recipients'] = 'Relay Recipients';
 $wb['Server'] = 'Server';
 $wb['Mailbox quota'] = 'Mailbox quota';
+$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")';
+$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)';
 ?>
diff --git a/interface/web/mail/lib/lang/hu_mail_domain_catchall.lng b/interface/web/mail/lib/lang/hu_mail_domain_catchall.lng
index 8331f22101..e26795953d 100644
--- a/interface/web/mail/lib/lang/hu_mail_domain_catchall.lng
+++ b/interface/web/mail/lib/lang/hu_mail_domain_catchall.lng
@@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Érvénytelen domain vagy a domain érvénytelen ka
 $wb['limit_mailcatchall_txt'] = 'Nincs több catchall lehetőség.';
 $wb['source_txt'] = 'Source';
 $wb['destination_error_isemail'] = 'Destination is no valid email address.';
+$wb['greylisting_txt'] = 'Enable greylisting';
 ?>
diff --git a/interface/web/mail/lib/lang/hu_mail_get.lng b/interface/web/mail/lib/lang/hu_mail_get.lng
index a02a1fe114..59cb26dd6a 100644
--- a/interface/web/mail/lib/lang/hu_mail_get.lng
+++ b/interface/web/mail/lib/lang/hu_mail_get.lng
@@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Jelszó üres.';
 $wb['destination_error_isemail'] = 'Nem választott címzettet.';
 $wb['source_server_error_regex'] = 'Pop3/Imap Server is not a valid domain name.';
 $wb['source_read_all_txt'] = 'Retrieve all emails (incl. read mails)';
-$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes';
+$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes';
 $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.';
 ?>
diff --git a/interface/web/mail/lib/lang/hu_spamfilter_policy.lng b/interface/web/mail/lib/lang/hu_spamfilter_policy.lng
index 391d4ab43a..c2b6b9244c 100644
--- a/interface/web/mail/lib/lang/hu_spamfilter_policy.lng
+++ b/interface/web/mail/lib/lang/hu_spamfilter_policy.lng
@@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Hibás fejléc admin';
 $wb['spam_admin_txt'] = 'SPAM admin';
 $wb['message_size_limit_txt'] = 'Levél méret limit';
 $wb['banned_rulenames_txt'] = 'Tiltószabály nevek';
+$wb['rspamd_greylisting_txt'] = 'Use greylisting';
+$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level';
+$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level';
+$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method';
+$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['amavis_settings_txt'] = 'Settings';
+$wb['amavis_taglevel_txt'] = 'Tag-Level';
+$wb['amavis_quarantine_txt'] = 'Quarantine';
+$wb['amavis_other_txt'] = 'Other';
+$wb['add_header_txt'] = 'Add header';
+$wb['rewrite_subject_txt'] = 'Rewrite subject';
 ?>
diff --git a/interface/web/mail/lib/lang/id.lng b/interface/web/mail/lib/lang/id.lng
index c9acaf27f1..3a2b5dfe45 100644
--- a/interface/web/mail/lib/lang/id.lng
+++ b/interface/web/mail/lib/lang/id.lng
@@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Penyaringan Global';
 $wb['Domain Alias'] = 'Alias Domain';
 $wb['Relay Recipients'] = 'Penerima Relay';
 $wb['Mailbox quota'] = 'Mailbox quota';
+$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")';
+$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)';
 ?>
diff --git a/interface/web/mail/lib/lang/id_mail_domain_catchall.lng b/interface/web/mail/lib/lang/id_mail_domain_catchall.lng
index 435856c105..c380957fdc 100644
--- a/interface/web/mail/lib/lang/id_mail_domain_catchall.lng
+++ b/interface/web/mail/lib/lang/id_mail_domain_catchall.lng
@@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Nama domain tidak valid atau domain mengandung kara
 $wb['limit_mailcatchall_txt'] = 'Jumlah maks akun catchall email untuk akun Anda sudah tercapai.';
 $wb['source_txt'] = 'Source';
 $wb['destination_error_isemail'] = 'Destination is no valid email address.';
+$wb['greylisting_txt'] = 'Enable greylisting';
 ?>
diff --git a/interface/web/mail/lib/lang/id_mail_get.lng b/interface/web/mail/lib/lang/id_mail_get.lng
index 7617cbc7df..cec2466f28 100644
--- a/interface/web/mail/lib/lang/id_mail_get.lng
+++ b/interface/web/mail/lib/lang/id_mail_get.lng
@@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Kata Sandi kosong.';
 $wb['destination_error_isemail'] = 'Tidak ada tujuan yang dipilih.';
 $wb['source_server_error_regex'] = 'Server Pop3/Imap bukan merupakan nama domain yang valid.';
 $wb['source_read_all_txt'] = 'Retrieve all emails (incl. read mails)';
-$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes';
+$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes';
 $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.';
 ?>
diff --git a/interface/web/mail/lib/lang/id_spamfilter_policy.lng b/interface/web/mail/lib/lang/id_spamfilter_policy.lng
index afa0ba1a09..9813dec470 100644
--- a/interface/web/mail/lib/lang/id_spamfilter_policy.lng
+++ b/interface/web/mail/lib/lang/id_spamfilter_policy.lng
@@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Admin Bad header';
 $wb['spam_admin_txt'] = 'Admin SPAM';
 $wb['message_size_limit_txt'] = 'Batasan ukuran pesan';
 $wb['banned_rulenames_txt'] = 'Nama aturan Banned';
+$wb['rspamd_greylisting_txt'] = 'Use greylisting';
+$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level';
+$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level';
+$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method';
+$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['amavis_settings_txt'] = 'Settings';
+$wb['amavis_taglevel_txt'] = 'Tag-Level';
+$wb['amavis_quarantine_txt'] = 'Quarantine';
+$wb['amavis_other_txt'] = 'Other';
+$wb['add_header_txt'] = 'Add header';
+$wb['rewrite_subject_txt'] = 'Rewrite subject';
 ?>
diff --git a/interface/web/mail/lib/lang/it.lng b/interface/web/mail/lib/lang/it.lng
index 715e2efb8e..15bc87ea3f 100644
--- a/interface/web/mail/lib/lang/it.lng
+++ b/interface/web/mail/lib/lang/it.lng
@@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Filtri globali';
 $wb['Domain Alias'] = 'Alias dominio';
 $wb['Relay Recipients'] = 'Destinatari inoltro';
 $wb['Mailbox quota'] = 'Quota Casella di Posta';
+$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")';
+$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)';
 ?>
diff --git a/interface/web/mail/lib/lang/it_mail_domain_catchall.lng b/interface/web/mail/lib/lang/it_mail_domain_catchall.lng
index 6ff4cbdf1c..3345bed9c7 100644
--- a/interface/web/mail/lib/lang/it_mail_domain_catchall.lng
+++ b/interface/web/mail/lib/lang/it_mail_domain_catchall.lng
@@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Invalid domain name od domain contiene caratteri no
 $wb['limit_mailcatchall_txt'] = 'The max. number of email catchall accounts raggiunto per il tuo account.';
 $wb['source_txt'] = 'Source';
 $wb['destination_error_isemail'] = 'Destination is no valid email address.';
+$wb['greylisting_txt'] = 'Enable greylisting';
 ?>
diff --git a/interface/web/mail/lib/lang/it_mail_get.lng b/interface/web/mail/lib/lang/it_mail_get.lng
index 3b443a7268..70770c22d4 100644
--- a/interface/web/mail/lib/lang/it_mail_get.lng
+++ b/interface/web/mail/lib/lang/it_mail_get.lng
@@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Valore Password  vuoto.';
 $wb['destination_error_isemail'] = 'Nessuna destinazione selezionata.';
 $wb['source_server_error_regex'] = 'Pop3/Imap Server non è un nome dominio valido.';
 $wb['source_read_all_txt'] = 'Recupera tutte le email (incluso mail lette)';
-$wb['error_delete_read_all_combination'] = 'Combinazione di opzioni non conforme. Non puoi utilizzare \"Elimina mail dopo averle scaricate \" = NO assieme a  \"Recupera tutte le email\" = SI';
+$wb['error_delete_read_all_combination'] = 'Combinazione di opzioni non conforme. Non puoi utilizzare \\"Elimina mail dopo averle scaricate \\" = NO assieme a  \\"Recupera tutte le email\\" = SI';
 $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.';
 ?>
diff --git a/interface/web/mail/lib/lang/it_spamfilter_policy.lng b/interface/web/mail/lib/lang/it_spamfilter_policy.lng
index e876330a68..683b378c21 100644
--- a/interface/web/mail/lib/lang/it_spamfilter_policy.lng
+++ b/interface/web/mail/lib/lang/it_spamfilter_policy.lng
@@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Bad header admin';
 $wb['spam_admin_txt'] = 'SPAM admin';
 $wb['message_size_limit_txt'] = 'Message size limit';
 $wb['banned_rulenames_txt'] = 'Banned rulenames';
+$wb['rspamd_greylisting_txt'] = 'Use greylisting';
+$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level';
+$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level';
+$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method';
+$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['amavis_settings_txt'] = 'Settings';
+$wb['amavis_taglevel_txt'] = 'Tag-Level';
+$wb['amavis_quarantine_txt'] = 'Quarantine';
+$wb['amavis_other_txt'] = 'Other';
+$wb['add_header_txt'] = 'Add header';
+$wb['rewrite_subject_txt'] = 'Rewrite subject';
 ?>
diff --git a/interface/web/mail/lib/lang/ja.lng b/interface/web/mail/lib/lang/ja.lng
index f8289d4907..818a3ed126 100644
--- a/interface/web/mail/lib/lang/ja.lng
+++ b/interface/web/mail/lib/lang/ja.lng
@@ -45,4 +45,6 @@ $wb['Global Filters'] = 'グローバルフィルター';
 $wb['Domain Alias'] = 'Domain Alias';
 $wb['Relay Recipients'] = 'Relay Recipients';
 $wb['Mailbox quota'] = 'Mailbox quota';
+$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")';
+$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)';
 ?>
diff --git a/interface/web/mail/lib/lang/ja_mail_domain_catchall.lng b/interface/web/mail/lib/lang/ja_mail_domain_catchall.lng
index cb430fefe6..6da7d05c56 100644
--- a/interface/web/mail/lib/lang/ja_mail_domain_catchall.lng
+++ b/interface/web/mail/lib/lang/ja_mail_domain_catchall.lng
@@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'ドメイン名が不正です。無効な文字を
 $wb['limit_mailcatchall_txt'] = 'キャッチオールアカウントが最大数に達したため、これ以上追加できません。';
 $wb['source_txt'] = 'Source';
 $wb['destination_error_isemail'] = 'Destination is no valid email address.';
+$wb['greylisting_txt'] = 'Enable greylisting';
 ?>
diff --git a/interface/web/mail/lib/lang/ja_mail_get.lng b/interface/web/mail/lib/lang/ja_mail_get.lng
index f1c45256bf..3c5c9ec092 100644
--- a/interface/web/mail/lib/lang/ja_mail_get.lng
+++ b/interface/web/mail/lib/lang/ja_mail_get.lng
@@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'パスワードを指定してくださ
 $wb['destination_error_isemail'] = '宛先を選択してください。';
 $wb['source_server_error_regex'] = 'Pop3/Imap Server is not a valid domain name.';
 $wb['source_read_all_txt'] = 'Retrieve all emails (incl. read mails)';
-$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes';
+$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes';
 $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.';
 ?>
diff --git a/interface/web/mail/lib/lang/ja_spamfilter_policy.lng b/interface/web/mail/lib/lang/ja_spamfilter_policy.lng
index 89d377a384..a23f28a766 100644
--- a/interface/web/mail/lib/lang/ja_spamfilter_policy.lng
+++ b/interface/web/mail/lib/lang/ja_spamfilter_policy.lng
@@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Bad header admin';
 $wb['spam_admin_txt'] = 'SPAM admin';
 $wb['message_size_limit_txt'] = 'Message size limit';
 $wb['banned_rulenames_txt'] = 'Banned rulenames';
+$wb['rspamd_greylisting_txt'] = 'Use greylisting';
+$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level';
+$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level';
+$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method';
+$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['amavis_settings_txt'] = 'Settings';
+$wb['amavis_taglevel_txt'] = 'Tag-Level';
+$wb['amavis_quarantine_txt'] = 'Quarantine';
+$wb['amavis_other_txt'] = 'Other';
+$wb['add_header_txt'] = 'Add header';
+$wb['rewrite_subject_txt'] = 'Rewrite subject';
 ?>
diff --git a/interface/web/mail/lib/lang/nl.lng b/interface/web/mail/lib/lang/nl.lng
index e47cc65811..91d63a7abc 100644
--- a/interface/web/mail/lib/lang/nl.lng
+++ b/interface/web/mail/lib/lang/nl.lng
@@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Globale filters';
 $wb['Domain Alias'] = 'Domein alias';
 $wb['Relay Recipients'] = 'Relay ontvangers';
 $wb['Mailbox quota'] = 'Mailbox quota';
+$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")';
+$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)';
 ?>
diff --git a/interface/web/mail/lib/lang/nl_mail_domain_catchall.lng b/interface/web/mail/lib/lang/nl_mail_domain_catchall.lng
index 06ad66c9be..ee9c1f7678 100644
--- a/interface/web/mail/lib/lang/nl_mail_domain_catchall.lng
+++ b/interface/web/mail/lib/lang/nl_mail_domain_catchall.lng
@@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Ongeldige domeinnaam of domein bevat ongeldige kara
 $wb['limit_mailcatchall_txt'] = 'Het max. aantal e-mail catchall accounts voor uw account is bereikt.';
 $wb['source_txt'] = 'Source';
 $wb['destination_error_isemail'] = 'Destination is no valid email address.';
+$wb['greylisting_txt'] = 'Enable greylisting';
 ?>
diff --git a/interface/web/mail/lib/lang/nl_mail_get.lng b/interface/web/mail/lib/lang/nl_mail_get.lng
index 6752b42cd8..5cbeab14e7 100644
--- a/interface/web/mail/lib/lang/nl_mail_get.lng
+++ b/interface/web/mail/lib/lang/nl_mail_get.lng
@@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Wachtwoord is niet ingvuld.';
 $wb['destination_error_isemail'] = 'Geen bestemming geselecteerd.';
 $wb['source_server_error_regex'] = 'Pop3/Imap server is geen geldige domeinnaam.';
 $wb['source_read_all_txt'] = 'Retrieve all emails (incl. read mails)';
-$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes';
+$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes';
 $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.';
 ?>
diff --git a/interface/web/mail/lib/lang/nl_mail_user.lng b/interface/web/mail/lib/lang/nl_mail_user.lng
index acc2da94e1..94dd018332 100644
--- a/interface/web/mail/lib/lang/nl_mail_user.lng
+++ b/interface/web/mail/lib/lang/nl_mail_user.lng
@@ -36,7 +36,7 @@ $wb['name_txt'] = 'Echte naam';
 $wb['name_optional_txt'] = '(Optioneel)';
 $wb['autoresponder_active'] = 'Inschakelen autoresponder';
 $wb['cc_txt'] = 'Stuur kopie naar';
-$wb['cc_error_isemail'] = 'Het \"Stuur kopie naar\" veld bevat geen geldig e-mail adres';
+$wb['cc_error_isemail'] = 'Het \\"Stuur kopie naar\\" veld bevat geen geldig e-mail adres';
 $wb['domain_txt'] = 'Domain';
 $wb['now_txt'] = 'Now';
 $wb['login_error_unique'] = 'Login is already taken.';
@@ -60,6 +60,6 @@ $wb['cc_note_txt'] = '(Meerdere e-mail adressen scheiden met een komma)';
 $wb['disablesmtp_txt'] = 'Uitschakelen SMTP (versturen)';
 $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.';
 $wb['sender_cc_txt'] = 'Stuur uitgaande kopie aan';
-$wb['sender_cc_error_isemail'] = 'Het \"Stuur uitgaande kopie aan\" veld bevat geen geldig e-mail adres';
+$wb['sender_cc_error_isemail'] = 'Het \\"Stuur uitgaande kopie aan\\" veld bevat geen geldig e-mail adres';
 $wb['sender_cc_note_txt'] = '(Meerdere e-mail adressen scheiden met een komma)';
 ?>
diff --git a/interface/web/mail/lib/lang/nl_spamfilter_policy.lng b/interface/web/mail/lib/lang/nl_spamfilter_policy.lng
index 84d5242da9..4a7ab96152 100644
--- a/interface/web/mail/lib/lang/nl_spamfilter_policy.lng
+++ b/interface/web/mail/lib/lang/nl_spamfilter_policy.lng
@@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Bad header admin';
 $wb['spam_admin_txt'] = 'SPAM admin';
 $wb['message_size_limit_txt'] = 'Bericht grootte limiet';
 $wb['banned_rulenames_txt'] = 'Verbannen rulenames';
+$wb['rspamd_greylisting_txt'] = 'Use greylisting';
+$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level';
+$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level';
+$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method';
+$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['amavis_settings_txt'] = 'Settings';
+$wb['amavis_taglevel_txt'] = 'Tag-Level';
+$wb['amavis_quarantine_txt'] = 'Quarantine';
+$wb['amavis_other_txt'] = 'Other';
+$wb['add_header_txt'] = 'Add header';
+$wb['rewrite_subject_txt'] = 'Rewrite subject';
 ?>
diff --git a/interface/web/mail/lib/lang/pl.lng b/interface/web/mail/lib/lang/pl.lng
index 93861b784d..17b7701992 100644
--- a/interface/web/mail/lib/lang/pl.lng
+++ b/interface/web/mail/lib/lang/pl.lng
@@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Globalne filtry';
 $wb['Domain Alias'] = 'Alias domeny';
 $wb['Relay Recipients'] = 'Odbiorcy przekierowania';
 $wb['Mailbox quota'] = 'Użycie skrzynek email';
+$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")';
+$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)';
 ?>
diff --git a/interface/web/mail/lib/lang/pl_mail_domain_catchall.lng b/interface/web/mail/lib/lang/pl_mail_domain_catchall.lng
index 3630b954bf..fad83875ca 100644
--- a/interface/web/mail/lib/lang/pl_mail_domain_catchall.lng
+++ b/interface/web/mail/lib/lang/pl_mail_domain_catchall.lng
@@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Nieprawidłowa nazwa domeny. Domena zawiera niedozo
 $wb['limit_mailcatchall_txt'] = 'Maksymalna ilość kont e-mail catchall dla Twojej domeny została przekroczona.';
 $wb['source_txt'] = 'Źródło';
 $wb['destination_error_isemail'] = 'Cel nie jest poprawnym adresem email.';
+$wb['greylisting_txt'] = 'Enable greylisting';
 ?>
diff --git a/interface/web/mail/lib/lang/pl_spamfilter_policy.lng b/interface/web/mail/lib/lang/pl_spamfilter_policy.lng
index 8a825b5594..8291102308 100644
--- a/interface/web/mail/lib/lang/pl_spamfilter_policy.lng
+++ b/interface/web/mail/lib/lang/pl_spamfilter_policy.lng
@@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Admin obsługi złych nagłowków';
 $wb['spam_admin_txt'] = 'Admin obsługi spamu';
 $wb['message_size_limit_txt'] = 'Limit wielkości wiadomości';
 $wb['banned_rulenames_txt'] = 'Zabronione nazwy zasad';
+$wb['rspamd_greylisting_txt'] = 'Use greylisting';
+$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level';
+$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level';
+$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method';
+$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['amavis_settings_txt'] = 'Settings';
+$wb['amavis_taglevel_txt'] = 'Tag-Level';
+$wb['amavis_quarantine_txt'] = 'Quarantine';
+$wb['amavis_other_txt'] = 'Other';
+$wb['add_header_txt'] = 'Add header';
+$wb['rewrite_subject_txt'] = 'Rewrite subject';
 ?>
diff --git a/interface/web/mail/lib/lang/pt.lng b/interface/web/mail/lib/lang/pt.lng
index 7a9a69cf83..d47eb6183b 100644
--- a/interface/web/mail/lib/lang/pt.lng
+++ b/interface/web/mail/lib/lang/pt.lng
@@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Filtros Globais';
 $wb['Domain Alias'] = 'Domínios Alias';
 $wb['Relay Recipients'] = 'Recipientes de Relay';
 $wb['Mailbox quota'] = 'Mailbox quota';
+$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")';
+$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)';
 ?>
diff --git a/interface/web/mail/lib/lang/pt_mail_domain_catchall.lng b/interface/web/mail/lib/lang/pt_mail_domain_catchall.lng
index 1fde21c020..e81afd74b9 100644
--- a/interface/web/mail/lib/lang/pt_mail_domain_catchall.lng
+++ b/interface/web/mail/lib/lang/pt_mail_domain_catchall.lng
@@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'O nome do domínio contém caracteres inválidos';
 $wb['limit_mailcatchall_txt'] = 'O número máximo de catchall para este domínio foi atingido.';
 $wb['source_txt'] = 'Source';
 $wb['destination_error_isemail'] = 'Destination is no valid email address.';
+$wb['greylisting_txt'] = 'Enable greylisting';
 ?>
diff --git a/interface/web/mail/lib/lang/pt_mail_get.lng b/interface/web/mail/lib/lang/pt_mail_get.lng
index f3ea6227fa..883279a2d5 100644
--- a/interface/web/mail/lib/lang/pt_mail_get.lng
+++ b/interface/web/mail/lib/lang/pt_mail_get.lng
@@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Senha em branco.';
 $wb['destination_error_isemail'] = 'Destino não seleccionado.';
 $wb['source_server_error_regex'] = 'Servidor Pop3/Imap não é um nome de domínio válido.';
 $wb['source_read_all_txt'] = 'Retrieve all emails (incl. read mails)';
-$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes';
+$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes';
 $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.';
 ?>
diff --git a/interface/web/mail/lib/lang/pt_spamfilter_policy.lng b/interface/web/mail/lib/lang/pt_spamfilter_policy.lng
index 1610aebdca..af960c99f6 100644
--- a/interface/web/mail/lib/lang/pt_spamfilter_policy.lng
+++ b/interface/web/mail/lib/lang/pt_spamfilter_policy.lng
@@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Administrador de Bad header';
 $wb['spam_admin_txt'] = 'Administrador SPAM';
 $wb['message_size_limit_txt'] = 'Tamanho limite da mensagem';
 $wb['banned_rulenames_txt'] = 'Regras de Banimento';
+$wb['rspamd_greylisting_txt'] = 'Use greylisting';
+$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level';
+$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level';
+$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method';
+$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['amavis_settings_txt'] = 'Settings';
+$wb['amavis_taglevel_txt'] = 'Tag-Level';
+$wb['amavis_quarantine_txt'] = 'Quarantine';
+$wb['amavis_other_txt'] = 'Other';
+$wb['add_header_txt'] = 'Add header';
+$wb['rewrite_subject_txt'] = 'Rewrite subject';
 ?>
diff --git a/interface/web/mail/lib/lang/ro.lng b/interface/web/mail/lib/lang/ro.lng
index dbfa06bcc8..0c0e85995e 100644
--- a/interface/web/mail/lib/lang/ro.lng
+++ b/interface/web/mail/lib/lang/ro.lng
@@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Filtre Global';
 $wb['Domain Alias'] = 'Domain Alias';
 $wb['Relay Recipients'] = 'Relay Recipients';
 $wb['Mailbox quota'] = 'Mailbox quota';
+$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")';
+$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)';
 ?>
diff --git a/interface/web/mail/lib/lang/ro_mail_domain_catchall.lng b/interface/web/mail/lib/lang/ro_mail_domain_catchall.lng
index 97add765ab..c0689ca044 100644
--- a/interface/web/mail/lib/lang/ro_mail_domain_catchall.lng
+++ b/interface/web/mail/lib/lang/ro_mail_domain_catchall.lng
@@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'nume de domeniu invalid sau caractere nepermise';
 $wb['limit_mailcatchall_txt'] = 'numarul maxim de CATCHALL pe contul dumneavoatra a fost atins';
 $wb['source_txt'] = 'Source';
 $wb['destination_error_isemail'] = 'Destination is no valid email address.';
+$wb['greylisting_txt'] = 'Enable greylisting';
 ?>
diff --git a/interface/web/mail/lib/lang/ro_mail_get.lng b/interface/web/mail/lib/lang/ro_mail_get.lng
index 16a0b6aeb7..5e0a590f70 100644
--- a/interface/web/mail/lib/lang/ro_mail_get.lng
+++ b/interface/web/mail/lib/lang/ro_mail_get.lng
@@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Password este necompletat';
 $wb['destination_error_isemail'] = 'Nici o destinatie nu e selectata';
 $wb['source_server_error_regex'] = 'Pop3/Imap Server is not a valid domain name.';
 $wb['source_read_all_txt'] = 'Retrieve all emails (incl. read mails)';
-$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes';
+$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes';
 $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.';
 ?>
diff --git a/interface/web/mail/lib/lang/ro_spamfilter_policy.lng b/interface/web/mail/lib/lang/ro_spamfilter_policy.lng
index 3645b3e1d1..f77d0f3e5a 100644
--- a/interface/web/mail/lib/lang/ro_spamfilter_policy.lng
+++ b/interface/web/mail/lib/lang/ro_spamfilter_policy.lng
@@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = ' header defect  admin';
 $wb['spam_admin_txt'] = 'SPAM admin';
 $wb['message_size_limit_txt'] = 'Message size limit';
 $wb['banned_rulenames_txt'] = 'Banned nume reguli';
+$wb['rspamd_greylisting_txt'] = 'Use greylisting';
+$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level';
+$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level';
+$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method';
+$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['amavis_settings_txt'] = 'Settings';
+$wb['amavis_taglevel_txt'] = 'Tag-Level';
+$wb['amavis_quarantine_txt'] = 'Quarantine';
+$wb['amavis_other_txt'] = 'Other';
+$wb['add_header_txt'] = 'Add header';
+$wb['rewrite_subject_txt'] = 'Rewrite subject';
 ?>
diff --git a/interface/web/mail/lib/lang/ru.lng b/interface/web/mail/lib/lang/ru.lng
index 124441ffa9..1b7995e024 100644
--- a/interface/web/mail/lib/lang/ru.lng
+++ b/interface/web/mail/lib/lang/ru.lng
@@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Глобальные фильтры';
 $wb['Domain Alias'] = 'Алиасы доменов';
 $wb['Relay Recipients'] = 'Relay получатели';
 $wb['Mailbox quota'] = 'Квота почтового ящика';
+$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")';
+$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)';
 ?>
diff --git a/interface/web/mail/lib/lang/ru_mail_domain_catchall.lng b/interface/web/mail/lib/lang/ru_mail_domain_catchall.lng
index 60d3ebd326..25349ca497 100644
--- a/interface/web/mail/lib/lang/ru_mail_domain_catchall.lng
+++ b/interface/web/mail/lib/lang/ru_mail_domain_catchall.lng
@@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Некорректное имя домена.';
 $wb['limit_mailcatchall_txt'] = 'Максимальное число Макс. количество учётных записей сводных почтовых ящиков достигнуто.';
 $wb['source_txt'] = 'Источник';
 $wb['destination_error_isemail'] = 'Не выбран получатель или запись некорректна.';
+$wb['greylisting_txt'] = 'Enable greylisting';
 ?>
diff --git a/interface/web/mail/lib/lang/ru_mail_get.lng b/interface/web/mail/lib/lang/ru_mail_get.lng
index 0ce613cd05..b3f2f0b6bf 100644
--- a/interface/web/mail/lib/lang/ru_mail_get.lng
+++ b/interface/web/mail/lib/lang/ru_mail_get.lng
@@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Пустой пароль.';
 $wb['destination_error_isemail'] = 'Не выбран получатель или запись некорректна.';
 $wb['source_server_error_regex'] = 'Некорректное доменное имя для сервера POP3/IMAP.';
 $wb['source_read_all_txt'] = 'Получать все сообщения электронной почты (включая прочитанные письма)';
-$wb['error_delete_read_all_combination'] = 'Недопустимая комбинация параметров. Вы не можете использовать \"Удалить письма после получения\" = НЕТ вместе с \"Получить все письма\" = ДА';
+$wb['error_delete_read_all_combination'] = 'Недопустимая комбинация параметров. Вы не можете использовать \\"Удалить письма после получения\\" = НЕТ вместе с \\"Получить все письма\\" = ДА';
 $wb['source_delete_note_txt'] = 'Пожалуйста, прежде чем активировать этот параметр, убедитесь в том, что сборщик почты работает.';
 ?>
diff --git a/interface/web/mail/lib/lang/ru_mail_user_filter.lng b/interface/web/mail/lib/lang/ru_mail_user_filter.lng
index ecc2d25b9d..c8306f9838 100644
--- a/interface/web/mail/lib/lang/ru_mail_user_filter.lng
+++ b/interface/web/mail/lib/lang/ru_mail_user_filter.lng
@@ -6,7 +6,7 @@ $wb['active_txt'] = 'Активно';
 $wb['rulename_error_empty'] = 'Имя пустое.';
 $wb['searchterm_is_empty'] = 'Поле поиска пустое.';
 $wb['source_txt'] = 'Источник';
-$wb['target_error_regex'] = 'Назначение может содержать только следующие символы: \"a-z\", \"0-9\", \"-\", \".\", \"_\" и {пробел}';
+$wb['target_error_regex'] = 'Назначение может содержать только следующие символы: \\"a-z\\", \\"0-9\\", \\"-\\", \\".\\", \\"_\\" и {пробел}';
 $wb['limit_mailfilter_txt'] = 'Максимальное число почтовых фильтров достигнуто.';
 $wb['subject_txt'] = 'Тема';
 $wb['from_txt'] = 'От';
diff --git a/interface/web/mail/lib/lang/ru_spamfilter_policy.lng b/interface/web/mail/lib/lang/ru_spamfilter_policy.lng
index 7bae8a0fd0..bab0a9ba0c 100644
--- a/interface/web/mail/lib/lang/ru_spamfilter_policy.lng
+++ b/interface/web/mail/lib/lang/ru_spamfilter_policy.lng
@@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Админ: кривые заголовки';
 $wb['spam_admin_txt'] = 'Админ: СПАМ';
 $wb['message_size_limit_txt'] = 'Превышен размер сообщения';
 $wb['banned_rulenames_txt'] = 'Правила банов';
+$wb['rspamd_greylisting_txt'] = 'Use greylisting';
+$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level';
+$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level';
+$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method';
+$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['amavis_settings_txt'] = 'Settings';
+$wb['amavis_taglevel_txt'] = 'Tag-Level';
+$wb['amavis_quarantine_txt'] = 'Quarantine';
+$wb['amavis_other_txt'] = 'Other';
+$wb['add_header_txt'] = 'Add header';
+$wb['rewrite_subject_txt'] = 'Rewrite subject';
 ?>
diff --git a/interface/web/mail/lib/lang/se.lng b/interface/web/mail/lib/lang/se.lng
index 3edc2034d0..7a415aa901 100644
--- a/interface/web/mail/lib/lang/se.lng
+++ b/interface/web/mail/lib/lang/se.lng
@@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Global Filters';
 $wb['Domain Alias'] = 'Domain Alias';
 $wb['Relay Recipients'] = 'Relay Recipients';
 $wb['Mailbox quota'] = 'Mailbox quota';
+$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")';
+$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)';
 ?>
diff --git a/interface/web/mail/lib/lang/se_mail_domain_catchall.lng b/interface/web/mail/lib/lang/se_mail_domain_catchall.lng
index 7ef1116390..39c6e6c559 100644
--- a/interface/web/mail/lib/lang/se_mail_domain_catchall.lng
+++ b/interface/web/mail/lib/lang/se_mail_domain_catchall.lng
@@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Ogiltig domän eller domänen innehåller ogiltiga
 $wb['limit_mailcatchall_txt'] = 'Det maximala antalet catchall-adresser för ditt konto är uppnått.';
 $wb['source_txt'] = 'Källa';
 $wb['destination_error_isemail'] = 'Destinationen när inte en giltig epostadress.';
+$wb['greylisting_txt'] = 'Enable greylisting';
 ?>
diff --git a/interface/web/mail/lib/lang/se_mail_get.lng b/interface/web/mail/lib/lang/se_mail_get.lng
index db4440210e..9ed9710055 100644
--- a/interface/web/mail/lib/lang/se_mail_get.lng
+++ b/interface/web/mail/lib/lang/se_mail_get.lng
@@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Lösenord är tomt.';
 $wb['destination_error_isemail'] = 'Ingen destination vald.';
 $wb['source_server_error_regex'] = 'POP3-/Imapserver är inte ett giltigt domännamn.';
 $wb['source_read_all_txt'] = 'Hämta all epost (även läst epost)';
-$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes';
+$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes';
 $wb['source_delete_note_txt'] = 'Vänligen kontrollera först om eposthämtning fungerar innan du aktiverar detta val..';
 ?>
diff --git a/interface/web/mail/lib/lang/se_spamfilter_policy.lng b/interface/web/mail/lib/lang/se_spamfilter_policy.lng
index e876330a68..683b378c21 100644
--- a/interface/web/mail/lib/lang/se_spamfilter_policy.lng
+++ b/interface/web/mail/lib/lang/se_spamfilter_policy.lng
@@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Bad header admin';
 $wb['spam_admin_txt'] = 'SPAM admin';
 $wb['message_size_limit_txt'] = 'Message size limit';
 $wb['banned_rulenames_txt'] = 'Banned rulenames';
+$wb['rspamd_greylisting_txt'] = 'Use greylisting';
+$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level';
+$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level';
+$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method';
+$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['amavis_settings_txt'] = 'Settings';
+$wb['amavis_taglevel_txt'] = 'Tag-Level';
+$wb['amavis_quarantine_txt'] = 'Quarantine';
+$wb['amavis_other_txt'] = 'Other';
+$wb['add_header_txt'] = 'Add header';
+$wb['rewrite_subject_txt'] = 'Rewrite subject';
 ?>
diff --git a/interface/web/mail/lib/lang/sk.lng b/interface/web/mail/lib/lang/sk.lng
index 22773a574a..7b00f9d52c 100644
--- a/interface/web/mail/lib/lang/sk.lng
+++ b/interface/web/mail/lib/lang/sk.lng
@@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Globálne Filtere';
 $wb['Domain Alias'] = 'Domain Alias';
 $wb['Relay Recipients'] = 'Relay Recipients';
 $wb['Mailbox quota'] = 'Mailbox quota';
+$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")';
+$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)';
 ?>
diff --git a/interface/web/mail/lib/lang/sk_mail_domain_catchall.lng b/interface/web/mail/lib/lang/sk_mail_domain_catchall.lng
index 38c37544e6..03c701c6db 100644
--- a/interface/web/mail/lib/lang/sk_mail_domain_catchall.lng
+++ b/interface/web/mail/lib/lang/sk_mail_domain_catchall.lng
@@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Neplatný názov domény alebo doména obsahuje nep
 $wb['limit_mailcatchall_txt'] = 'Max. počet e-mailových doménových košov pre Váš účet je dosiahnutý.';
 $wb['source_txt'] = 'Source';
 $wb['destination_error_isemail'] = 'Destination is no valid email address.';
+$wb['greylisting_txt'] = 'Enable greylisting';
 ?>
diff --git a/interface/web/mail/lib/lang/sk_mail_get.lng b/interface/web/mail/lib/lang/sk_mail_get.lng
index 8e180ca7a8..e43899965d 100644
--- a/interface/web/mail/lib/lang/sk_mail_get.lng
+++ b/interface/web/mail/lib/lang/sk_mail_get.lng
@@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Heslo je prázdne.';
 $wb['destination_error_isemail'] = 'Žiadny Cieľ nebol vybraný.';
 $wb['source_server_error_regex'] = 'Pop3/Imap Server nie je valídne doménové meno.';
 $wb['source_read_all_txt'] = 'Retrieve all emails (incl. read mails)';
-$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes';
+$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes';
 $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.';
 ?>
diff --git a/interface/web/mail/lib/lang/sk_spamfilter_policy.lng b/interface/web/mail/lib/lang/sk_spamfilter_policy.lng
index b58988d60b..6a4d636259 100644
--- a/interface/web/mail/lib/lang/sk_spamfilter_policy.lng
+++ b/interface/web/mail/lib/lang/sk_spamfilter_policy.lng
@@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Zlé hlavičky admin';
 $wb['spam_admin_txt'] = 'SPAM admin';
 $wb['message_size_limit_txt'] = 'Limit veľkosti správy';
 $wb['banned_rulenames_txt'] = 'Banned rulenames';
+$wb['rspamd_greylisting_txt'] = 'Use greylisting';
+$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level';
+$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level';
+$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method';
+$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['amavis_settings_txt'] = 'Settings';
+$wb['amavis_taglevel_txt'] = 'Tag-Level';
+$wb['amavis_quarantine_txt'] = 'Quarantine';
+$wb['amavis_other_txt'] = 'Other';
+$wb['add_header_txt'] = 'Add header';
+$wb['rewrite_subject_txt'] = 'Rewrite subject';
 ?>
diff --git a/interface/web/mail/lib/lang/tr.lng b/interface/web/mail/lib/lang/tr.lng
index e2deaca006..4f6f77a38a 100644
--- a/interface/web/mail/lib/lang/tr.lng
+++ b/interface/web/mail/lib/lang/tr.lng
@@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Genel Süzgeçler';
 $wb['Domain Alias'] = 'Takma Alan Adı';
 $wb['Relay Recipients'] = 'Aktarılan Alıcılar';
 $wb['Mailbox quota'] = 'Posta Kutusu Kotası';
+$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")';
+$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)';
 ?>
diff --git a/interface/web/mail/lib/lang/tr_mail_domain_catchall.lng b/interface/web/mail/lib/lang/tr_mail_domain_catchall.lng
index 037d2ad16e..c5f8725a72 100644
--- a/interface/web/mail/lib/lang/tr_mail_domain_catchall.lng
+++ b/interface/web/mail/lib/lang/tr_mail_domain_catchall.lng
@@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Alan adı geçersiz ya da geçersiz karakterler iç
 $wb['limit_mailcatchall_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla tümünü al hesabı sayısına ulaştınız.';
 $wb['source_txt'] = 'Kaynak';
 $wb['destination_error_isemail'] = 'Hedef e-posta adresi geçersiz.';
+$wb['greylisting_txt'] = 'Enable greylisting';
 ?>
diff --git a/interface/web/mail/lib/lang/tr_mail_get.lng b/interface/web/mail/lib/lang/tr_mail_get.lng
index 3e29c26a71..b82b6c8c9a 100644
--- a/interface/web/mail/lib/lang/tr_mail_get.lng
+++ b/interface/web/mail/lib/lang/tr_mail_get.lng
@@ -15,5 +15,5 @@ $wb['source_username_error_isempty'] = 'Kullanıcı adı boş olamaz.';
 $wb['source_password_error_isempty'] = 'Parola boÅŸ olamaz.';
 $wb['destination_error_isemail'] = 'Hedef seçilmemiş.';
 $wb['source_server_error_regex'] = 'POP3/IMAP Sunucu alan adı geçersiz.';
-$wb['error_delete_read_all_combination'] = 'Seçenek kombinasyonu geçersiz. You can not use \"E-postalar alındıktan sonra silinsin\" = Hayır iken \"Tüm e-postalar alınsın\" = Evet olamaz';
+$wb['error_delete_read_all_combination'] = 'Seçenek kombinasyonu geçersiz. You can not use \\"E-postalar alındıktan sonra silinsin\\" = Hayır iken \\"Tüm e-postalar alınsın\\" = Evet olamaz';
 ?>
diff --git a/interface/web/mail/lib/lang/tr_spamfilter_policy.lng b/interface/web/mail/lib/lang/tr_spamfilter_policy.lng
index 721b0490f7..d7b76496a1 100644
--- a/interface/web/mail/lib/lang/tr_spamfilter_policy.lng
+++ b/interface/web/mail/lib/lang/tr_spamfilter_policy.lng
@@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Kötü üstbilgi yönetici';
 $wb['spam_admin_txt'] = 'Önemsiz posta yönetici';
 $wb['message_size_limit_txt'] = 'İleti boyutu sınırı';
 $wb['banned_rulenames_txt'] = 'Yasak kural adları';
+$wb['rspamd_greylisting_txt'] = 'Use greylisting';
+$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level';
+$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level';
+$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method';
+$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['amavis_settings_txt'] = 'Settings';
+$wb['amavis_taglevel_txt'] = 'Tag-Level';
+$wb['amavis_quarantine_txt'] = 'Quarantine';
+$wb['amavis_other_txt'] = 'Other';
+$wb['add_header_txt'] = 'Add header';
+$wb['rewrite_subject_txt'] = 'Rewrite subject';
 ?>
diff --git a/interface/web/mailuser/lib/lang/ru_mail_user_filter.lng b/interface/web/mailuser/lib/lang/ru_mail_user_filter.lng
index f10dd4ddb2..d834e4057a 100644
--- a/interface/web/mailuser/lib/lang/ru_mail_user_filter.lng
+++ b/interface/web/mailuser/lib/lang/ru_mail_user_filter.lng
@@ -6,7 +6,7 @@ $wb['active_txt'] = 'Активно';
 $wb['rulename_error_empty'] = 'Имя пустое.';
 $wb['searchterm_is_empty'] = 'Поле поиска пустое.';
 $wb['source_txt'] = 'Источник';
-$wb['target_error_regex'] = 'Назначение может содержать только следующие символы: \"a-z\", \"0-9\", \"-\", \".\", \"_\" и {пробел}';
+$wb['target_error_regex'] = 'Назначение может содержать только следующие символы: \\"a-z\\", \\"0-9\\", \\"-\\", \\".\\", \\"_\\" и {пробел}';
 $wb['limit_mailfilter_txt'] = 'Максимальное число почтовых фильтров достигнуто.';
 $wb['subject_txt'] = 'Тема';
 $wb['from_txt'] = 'От';
diff --git a/interface/web/monitor/lib/lang/ar_dataloghistory_list.lng b/interface/web/monitor/lib/lang/ar_dataloghistory_list.lng
index 9f9afd6347..f1ba8c67b8 100644
--- a/interface/web/monitor/lib/lang/ar_dataloghistory_list.lng
+++ b/interface/web/monitor/lib/lang/ar_dataloghistory_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["list_head_txt"] = 'Datalog History';
-$wb["tstamp_txt"] = 'Date';
-$wb["server_id_txt"] = 'Server';
-$wb["dbtable_txt"] = 'DB Table';
-$wb["action_txt"] = 'Action';
-$wb["status_txt"] = 'Status';
+$wb['list_head_txt'] = 'Datalog History';
+$wb['tstamp_txt'] = 'Date';
+$wb['server_id_txt'] = 'Server';
+$wb['dbtable_txt'] = 'DB Table';
+$wb['action_txt'] = 'Action';
+$wb['status_txt'] = 'Status';
 ?>
diff --git a/interface/web/monitor/lib/lang/bg_dataloghistory_list.lng b/interface/web/monitor/lib/lang/bg_dataloghistory_list.lng
index 9f9afd6347..f1ba8c67b8 100644
--- a/interface/web/monitor/lib/lang/bg_dataloghistory_list.lng
+++ b/interface/web/monitor/lib/lang/bg_dataloghistory_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["list_head_txt"] = 'Datalog History';
-$wb["tstamp_txt"] = 'Date';
-$wb["server_id_txt"] = 'Server';
-$wb["dbtable_txt"] = 'DB Table';
-$wb["action_txt"] = 'Action';
-$wb["status_txt"] = 'Status';
+$wb['list_head_txt'] = 'Datalog History';
+$wb['tstamp_txt'] = 'Date';
+$wb['server_id_txt'] = 'Server';
+$wb['dbtable_txt'] = 'DB Table';
+$wb['action_txt'] = 'Action';
+$wb['status_txt'] = 'Status';
 ?>
diff --git a/interface/web/monitor/lib/lang/br_dataloghistory_list.lng b/interface/web/monitor/lib/lang/br_dataloghistory_list.lng
index 9f9afd6347..f1ba8c67b8 100644
--- a/interface/web/monitor/lib/lang/br_dataloghistory_list.lng
+++ b/interface/web/monitor/lib/lang/br_dataloghistory_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["list_head_txt"] = 'Datalog History';
-$wb["tstamp_txt"] = 'Date';
-$wb["server_id_txt"] = 'Server';
-$wb["dbtable_txt"] = 'DB Table';
-$wb["action_txt"] = 'Action';
-$wb["status_txt"] = 'Status';
+$wb['list_head_txt'] = 'Datalog History';
+$wb['tstamp_txt'] = 'Date';
+$wb['server_id_txt'] = 'Server';
+$wb['dbtable_txt'] = 'DB Table';
+$wb['action_txt'] = 'Action';
+$wb['status_txt'] = 'Status';
 ?>
diff --git a/interface/web/monitor/lib/lang/ca_dataloghistory_list.lng b/interface/web/monitor/lib/lang/ca_dataloghistory_list.lng
index 9f9afd6347..f1ba8c67b8 100644
--- a/interface/web/monitor/lib/lang/ca_dataloghistory_list.lng
+++ b/interface/web/monitor/lib/lang/ca_dataloghistory_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["list_head_txt"] = 'Datalog History';
-$wb["tstamp_txt"] = 'Date';
-$wb["server_id_txt"] = 'Server';
-$wb["dbtable_txt"] = 'DB Table';
-$wb["action_txt"] = 'Action';
-$wb["status_txt"] = 'Status';
+$wb['list_head_txt'] = 'Datalog History';
+$wb['tstamp_txt'] = 'Date';
+$wb['server_id_txt'] = 'Server';
+$wb['dbtable_txt'] = 'DB Table';
+$wb['action_txt'] = 'Action';
+$wb['status_txt'] = 'Status';
 ?>
diff --git a/interface/web/monitor/lib/lang/dk_dataloghistory_list.lng b/interface/web/monitor/lib/lang/dk_dataloghistory_list.lng
index 9f9afd6347..f1ba8c67b8 100644
--- a/interface/web/monitor/lib/lang/dk_dataloghistory_list.lng
+++ b/interface/web/monitor/lib/lang/dk_dataloghistory_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["list_head_txt"] = 'Datalog History';
-$wb["tstamp_txt"] = 'Date';
-$wb["server_id_txt"] = 'Server';
-$wb["dbtable_txt"] = 'DB Table';
-$wb["action_txt"] = 'Action';
-$wb["status_txt"] = 'Status';
+$wb['list_head_txt'] = 'Datalog History';
+$wb['tstamp_txt'] = 'Date';
+$wb['server_id_txt'] = 'Server';
+$wb['dbtable_txt'] = 'DB Table';
+$wb['action_txt'] = 'Action';
+$wb['status_txt'] = 'Status';
 ?>
diff --git a/interface/web/monitor/lib/lang/el_dataloghistory_list.lng b/interface/web/monitor/lib/lang/el_dataloghistory_list.lng
index 9f9afd6347..f1ba8c67b8 100644
--- a/interface/web/monitor/lib/lang/el_dataloghistory_list.lng
+++ b/interface/web/monitor/lib/lang/el_dataloghistory_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["list_head_txt"] = 'Datalog History';
-$wb["tstamp_txt"] = 'Date';
-$wb["server_id_txt"] = 'Server';
-$wb["dbtable_txt"] = 'DB Table';
-$wb["action_txt"] = 'Action';
-$wb["status_txt"] = 'Status';
+$wb['list_head_txt'] = 'Datalog History';
+$wb['tstamp_txt'] = 'Date';
+$wb['server_id_txt'] = 'Server';
+$wb['dbtable_txt'] = 'DB Table';
+$wb['action_txt'] = 'Action';
+$wb['status_txt'] = 'Status';
 ?>
diff --git a/interface/web/monitor/lib/lang/es.lng b/interface/web/monitor/lib/lang/es.lng
index 3a95c6e9c2..f4acb3c45c 100755
--- a/interface/web/monitor/lib/lang/es.lng
+++ b/interface/web/monitor/lib/lang/es.lng
@@ -27,7 +27,7 @@ $wb['monitor_logs_mailerr_txt'] = 'Registros de errores de correo';
 $wb['monitor_logs_mailwarn_txt'] = 'Registros de advertencias de correo';
 $wb['monitor_logs_messages_txt'] = 'Registros de mensajes del sistema';
 $wb['monitor_norkhunter_txt'] = 'RKHunter no está instalado, por lo que no hay registros a mostrar';
-$wb['monitor_nosupportedraid1_txt'] = 'Por el momento, soportamos \"mdadm\" o \"mpt-status\" para supervisar el RAID.<br>No hemos podido encontrarlo en su servidor. </br> Por lo tanto no podemos monitorizar su RAID todavía.';
+$wb['monitor_nosupportedraid1_txt'] = 'Por el momento, soportamos \\"mdadm\\" o \\"mpt-status\\" para supervisar el RAID.<br>No hemos podido encontrarlo en su servidor. </br> Por lo tanto no podemos monitorizar su RAID todavía.';
 $wb['monitor_serverstate_beancountercritical_txt'] = 'Existen muchos errores en el Beancounter';
 $wb['monitor_serverstate_beancountererror_txt'] = 'Existen muchísimos errores en el Beancounter';
 $wb['monitor_serverstate_beancounterinfo_txt'] = 'Existen algún error en el Beancounter';
diff --git a/interface/web/monitor/lib/lang/es_dataloghistory_list.lng b/interface/web/monitor/lib/lang/es_dataloghistory_list.lng
index 9f9afd6347..f1ba8c67b8 100644
--- a/interface/web/monitor/lib/lang/es_dataloghistory_list.lng
+++ b/interface/web/monitor/lib/lang/es_dataloghistory_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["list_head_txt"] = 'Datalog History';
-$wb["tstamp_txt"] = 'Date';
-$wb["server_id_txt"] = 'Server';
-$wb["dbtable_txt"] = 'DB Table';
-$wb["action_txt"] = 'Action';
-$wb["status_txt"] = 'Status';
+$wb['list_head_txt'] = 'Datalog History';
+$wb['tstamp_txt'] = 'Date';
+$wb['server_id_txt'] = 'Server';
+$wb['dbtable_txt'] = 'DB Table';
+$wb['action_txt'] = 'Action';
+$wb['status_txt'] = 'Status';
 ?>
diff --git a/interface/web/monitor/lib/lang/fi_dataloghistory_list.lng b/interface/web/monitor/lib/lang/fi_dataloghistory_list.lng
index 9f9afd6347..f1ba8c67b8 100644
--- a/interface/web/monitor/lib/lang/fi_dataloghistory_list.lng
+++ b/interface/web/monitor/lib/lang/fi_dataloghistory_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["list_head_txt"] = 'Datalog History';
-$wb["tstamp_txt"] = 'Date';
-$wb["server_id_txt"] = 'Server';
-$wb["dbtable_txt"] = 'DB Table';
-$wb["action_txt"] = 'Action';
-$wb["status_txt"] = 'Status';
+$wb['list_head_txt'] = 'Datalog History';
+$wb['tstamp_txt'] = 'Date';
+$wb['server_id_txt'] = 'Server';
+$wb['dbtable_txt'] = 'DB Table';
+$wb['action_txt'] = 'Action';
+$wb['status_txt'] = 'Status';
 ?>
diff --git a/interface/web/monitor/lib/lang/fr_dataloghistory_list.lng b/interface/web/monitor/lib/lang/fr_dataloghistory_list.lng
index 9f9afd6347..f1ba8c67b8 100644
--- a/interface/web/monitor/lib/lang/fr_dataloghistory_list.lng
+++ b/interface/web/monitor/lib/lang/fr_dataloghistory_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["list_head_txt"] = 'Datalog History';
-$wb["tstamp_txt"] = 'Date';
-$wb["server_id_txt"] = 'Server';
-$wb["dbtable_txt"] = 'DB Table';
-$wb["action_txt"] = 'Action';
-$wb["status_txt"] = 'Status';
+$wb['list_head_txt'] = 'Datalog History';
+$wb['tstamp_txt'] = 'Date';
+$wb['server_id_txt'] = 'Server';
+$wb['dbtable_txt'] = 'DB Table';
+$wb['action_txt'] = 'Action';
+$wb['status_txt'] = 'Status';
 ?>
diff --git a/interface/web/monitor/lib/lang/hr_dataloghistory_list.lng b/interface/web/monitor/lib/lang/hr_dataloghistory_list.lng
index 9f9afd6347..f1ba8c67b8 100644
--- a/interface/web/monitor/lib/lang/hr_dataloghistory_list.lng
+++ b/interface/web/monitor/lib/lang/hr_dataloghistory_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["list_head_txt"] = 'Datalog History';
-$wb["tstamp_txt"] = 'Date';
-$wb["server_id_txt"] = 'Server';
-$wb["dbtable_txt"] = 'DB Table';
-$wb["action_txt"] = 'Action';
-$wb["status_txt"] = 'Status';
+$wb['list_head_txt'] = 'Datalog History';
+$wb['tstamp_txt'] = 'Date';
+$wb['server_id_txt'] = 'Server';
+$wb['dbtable_txt'] = 'DB Table';
+$wb['action_txt'] = 'Action';
+$wb['status_txt'] = 'Status';
 ?>
diff --git a/interface/web/monitor/lib/lang/hu_dataloghistory_list.lng b/interface/web/monitor/lib/lang/hu_dataloghistory_list.lng
index 9f9afd6347..f1ba8c67b8 100644
--- a/interface/web/monitor/lib/lang/hu_dataloghistory_list.lng
+++ b/interface/web/monitor/lib/lang/hu_dataloghistory_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["list_head_txt"] = 'Datalog History';
-$wb["tstamp_txt"] = 'Date';
-$wb["server_id_txt"] = 'Server';
-$wb["dbtable_txt"] = 'DB Table';
-$wb["action_txt"] = 'Action';
-$wb["status_txt"] = 'Status';
+$wb['list_head_txt'] = 'Datalog History';
+$wb['tstamp_txt'] = 'Date';
+$wb['server_id_txt'] = 'Server';
+$wb['dbtable_txt'] = 'DB Table';
+$wb['action_txt'] = 'Action';
+$wb['status_txt'] = 'Status';
 ?>
diff --git a/interface/web/monitor/lib/lang/id_dataloghistory_list.lng b/interface/web/monitor/lib/lang/id_dataloghistory_list.lng
index 9f9afd6347..f1ba8c67b8 100644
--- a/interface/web/monitor/lib/lang/id_dataloghistory_list.lng
+++ b/interface/web/monitor/lib/lang/id_dataloghistory_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["list_head_txt"] = 'Datalog History';
-$wb["tstamp_txt"] = 'Date';
-$wb["server_id_txt"] = 'Server';
-$wb["dbtable_txt"] = 'DB Table';
-$wb["action_txt"] = 'Action';
-$wb["status_txt"] = 'Status';
+$wb['list_head_txt'] = 'Datalog History';
+$wb['tstamp_txt'] = 'Date';
+$wb['server_id_txt'] = 'Server';
+$wb['dbtable_txt'] = 'DB Table';
+$wb['action_txt'] = 'Action';
+$wb['status_txt'] = 'Status';
 ?>
diff --git a/interface/web/monitor/lib/lang/it_dataloghistory_list.lng b/interface/web/monitor/lib/lang/it_dataloghistory_list.lng
index 9f9afd6347..f1ba8c67b8 100644
--- a/interface/web/monitor/lib/lang/it_dataloghistory_list.lng
+++ b/interface/web/monitor/lib/lang/it_dataloghistory_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["list_head_txt"] = 'Datalog History';
-$wb["tstamp_txt"] = 'Date';
-$wb["server_id_txt"] = 'Server';
-$wb["dbtable_txt"] = 'DB Table';
-$wb["action_txt"] = 'Action';
-$wb["status_txt"] = 'Status';
+$wb['list_head_txt'] = 'Datalog History';
+$wb['tstamp_txt'] = 'Date';
+$wb['server_id_txt'] = 'Server';
+$wb['dbtable_txt'] = 'DB Table';
+$wb['action_txt'] = 'Action';
+$wb['status_txt'] = 'Status';
 ?>
diff --git a/interface/web/monitor/lib/lang/ja_dataloghistory_list.lng b/interface/web/monitor/lib/lang/ja_dataloghistory_list.lng
index 9f9afd6347..f1ba8c67b8 100644
--- a/interface/web/monitor/lib/lang/ja_dataloghistory_list.lng
+++ b/interface/web/monitor/lib/lang/ja_dataloghistory_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["list_head_txt"] = 'Datalog History';
-$wb["tstamp_txt"] = 'Date';
-$wb["server_id_txt"] = 'Server';
-$wb["dbtable_txt"] = 'DB Table';
-$wb["action_txt"] = 'Action';
-$wb["status_txt"] = 'Status';
+$wb['list_head_txt'] = 'Datalog History';
+$wb['tstamp_txt'] = 'Date';
+$wb['server_id_txt'] = 'Server';
+$wb['dbtable_txt'] = 'DB Table';
+$wb['action_txt'] = 'Action';
+$wb['status_txt'] = 'Status';
 ?>
diff --git a/interface/web/monitor/lib/lang/nl_dataloghistory_list.lng b/interface/web/monitor/lib/lang/nl_dataloghistory_list.lng
index 9f9afd6347..f1ba8c67b8 100644
--- a/interface/web/monitor/lib/lang/nl_dataloghistory_list.lng
+++ b/interface/web/monitor/lib/lang/nl_dataloghistory_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["list_head_txt"] = 'Datalog History';
-$wb["tstamp_txt"] = 'Date';
-$wb["server_id_txt"] = 'Server';
-$wb["dbtable_txt"] = 'DB Table';
-$wb["action_txt"] = 'Action';
-$wb["status_txt"] = 'Status';
+$wb['list_head_txt'] = 'Datalog History';
+$wb['tstamp_txt'] = 'Date';
+$wb['server_id_txt'] = 'Server';
+$wb['dbtable_txt'] = 'DB Table';
+$wb['action_txt'] = 'Action';
+$wb['status_txt'] = 'Status';
 ?>
diff --git a/interface/web/monitor/lib/lang/pl_dataloghistory_list.lng b/interface/web/monitor/lib/lang/pl_dataloghistory_list.lng
index 9f9afd6347..f1ba8c67b8 100644
--- a/interface/web/monitor/lib/lang/pl_dataloghistory_list.lng
+++ b/interface/web/monitor/lib/lang/pl_dataloghistory_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["list_head_txt"] = 'Datalog History';
-$wb["tstamp_txt"] = 'Date';
-$wb["server_id_txt"] = 'Server';
-$wb["dbtable_txt"] = 'DB Table';
-$wb["action_txt"] = 'Action';
-$wb["status_txt"] = 'Status';
+$wb['list_head_txt'] = 'Datalog History';
+$wb['tstamp_txt'] = 'Date';
+$wb['server_id_txt'] = 'Server';
+$wb['dbtable_txt'] = 'DB Table';
+$wb['action_txt'] = 'Action';
+$wb['status_txt'] = 'Status';
 ?>
diff --git a/interface/web/monitor/lib/lang/pt_dataloghistory_list.lng b/interface/web/monitor/lib/lang/pt_dataloghistory_list.lng
index 9f9afd6347..f1ba8c67b8 100644
--- a/interface/web/monitor/lib/lang/pt_dataloghistory_list.lng
+++ b/interface/web/monitor/lib/lang/pt_dataloghistory_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["list_head_txt"] = 'Datalog History';
-$wb["tstamp_txt"] = 'Date';
-$wb["server_id_txt"] = 'Server';
-$wb["dbtable_txt"] = 'DB Table';
-$wb["action_txt"] = 'Action';
-$wb["status_txt"] = 'Status';
+$wb['list_head_txt'] = 'Datalog History';
+$wb['tstamp_txt'] = 'Date';
+$wb['server_id_txt'] = 'Server';
+$wb['dbtable_txt'] = 'DB Table';
+$wb['action_txt'] = 'Action';
+$wb['status_txt'] = 'Status';
 ?>
diff --git a/interface/web/monitor/lib/lang/ro_dataloghistory_list.lng b/interface/web/monitor/lib/lang/ro_dataloghistory_list.lng
index 9f9afd6347..f1ba8c67b8 100644
--- a/interface/web/monitor/lib/lang/ro_dataloghistory_list.lng
+++ b/interface/web/monitor/lib/lang/ro_dataloghistory_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["list_head_txt"] = 'Datalog History';
-$wb["tstamp_txt"] = 'Date';
-$wb["server_id_txt"] = 'Server';
-$wb["dbtable_txt"] = 'DB Table';
-$wb["action_txt"] = 'Action';
-$wb["status_txt"] = 'Status';
+$wb['list_head_txt'] = 'Datalog History';
+$wb['tstamp_txt'] = 'Date';
+$wb['server_id_txt'] = 'Server';
+$wb['dbtable_txt'] = 'DB Table';
+$wb['action_txt'] = 'Action';
+$wb['status_txt'] = 'Status';
 ?>
diff --git a/interface/web/monitor/lib/lang/ru_dataloghistory_list.lng b/interface/web/monitor/lib/lang/ru_dataloghistory_list.lng
index 9f9afd6347..f1ba8c67b8 100644
--- a/interface/web/monitor/lib/lang/ru_dataloghistory_list.lng
+++ b/interface/web/monitor/lib/lang/ru_dataloghistory_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["list_head_txt"] = 'Datalog History';
-$wb["tstamp_txt"] = 'Date';
-$wb["server_id_txt"] = 'Server';
-$wb["dbtable_txt"] = 'DB Table';
-$wb["action_txt"] = 'Action';
-$wb["status_txt"] = 'Status';
+$wb['list_head_txt'] = 'Datalog History';
+$wb['tstamp_txt'] = 'Date';
+$wb['server_id_txt'] = 'Server';
+$wb['dbtable_txt'] = 'DB Table';
+$wb['action_txt'] = 'Action';
+$wb['status_txt'] = 'Status';
 ?>
diff --git a/interface/web/monitor/lib/lang/se_dataloghistory_list.lng b/interface/web/monitor/lib/lang/se_dataloghistory_list.lng
index 9f9afd6347..f1ba8c67b8 100644
--- a/interface/web/monitor/lib/lang/se_dataloghistory_list.lng
+++ b/interface/web/monitor/lib/lang/se_dataloghistory_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["list_head_txt"] = 'Datalog History';
-$wb["tstamp_txt"] = 'Date';
-$wb["server_id_txt"] = 'Server';
-$wb["dbtable_txt"] = 'DB Table';
-$wb["action_txt"] = 'Action';
-$wb["status_txt"] = 'Status';
+$wb['list_head_txt'] = 'Datalog History';
+$wb['tstamp_txt'] = 'Date';
+$wb['server_id_txt'] = 'Server';
+$wb['dbtable_txt'] = 'DB Table';
+$wb['action_txt'] = 'Action';
+$wb['status_txt'] = 'Status';
 ?>
diff --git a/interface/web/monitor/lib/lang/sk_dataloghistory_list.lng b/interface/web/monitor/lib/lang/sk_dataloghistory_list.lng
index 9f9afd6347..f1ba8c67b8 100644
--- a/interface/web/monitor/lib/lang/sk_dataloghistory_list.lng
+++ b/interface/web/monitor/lib/lang/sk_dataloghistory_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["list_head_txt"] = 'Datalog History';
-$wb["tstamp_txt"] = 'Date';
-$wb["server_id_txt"] = 'Server';
-$wb["dbtable_txt"] = 'DB Table';
-$wb["action_txt"] = 'Action';
-$wb["status_txt"] = 'Status';
+$wb['list_head_txt'] = 'Datalog History';
+$wb['tstamp_txt'] = 'Date';
+$wb['server_id_txt'] = 'Server';
+$wb['dbtable_txt'] = 'DB Table';
+$wb['action_txt'] = 'Action';
+$wb['status_txt'] = 'Status';
 ?>
diff --git a/interface/web/monitor/lib/lang/tr_dataloghistory_list.lng b/interface/web/monitor/lib/lang/tr_dataloghistory_list.lng
index 9f9afd6347..f1ba8c67b8 100644
--- a/interface/web/monitor/lib/lang/tr_dataloghistory_list.lng
+++ b/interface/web/monitor/lib/lang/tr_dataloghistory_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["list_head_txt"] = 'Datalog History';
-$wb["tstamp_txt"] = 'Date';
-$wb["server_id_txt"] = 'Server';
-$wb["dbtable_txt"] = 'DB Table';
-$wb["action_txt"] = 'Action';
-$wb["status_txt"] = 'Status';
+$wb['list_head_txt'] = 'Datalog History';
+$wb['tstamp_txt'] = 'Date';
+$wb['server_id_txt'] = 'Server';
+$wb['dbtable_txt'] = 'DB Table';
+$wb['action_txt'] = 'Action';
+$wb['status_txt'] = 'Status';
 ?>
diff --git a/interface/web/sites/lib/lang/ar.lng b/interface/web/sites/lib/lang/ar.lng
index bfd833292d..6ca61afae0 100644
--- a/interface/web/sites/lib/lang/ar.lng
+++ b/interface/web/sites/lib/lang/ar.lng
@@ -31,5 +31,5 @@ $wb['Available packages'] = 'Available packages';
 $wb['Installed packages'] = 'Installed packages';
 $wb['Update Packagelist'] = 'Update Packagelist';
 $wb['Subdomain (Vhost)'] = 'Subdomain (Vhost)';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 ?>
diff --git a/interface/web/sites/lib/lang/ar_aps.lng b/interface/web/sites/lib/lang/ar_aps.lng
index 3ff130f57e..881c146a4d 100644
--- a/interface/web/sites/lib/lang/ar_aps.lng
+++ b/interface/web/sites/lib/lang/ar_aps.lng
@@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.'
 $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.';
 $wb['error_no_database_pw'] = 'You have provided no valid database password.';
 $wb['error_short_database_pw'] = 'Please choose a longer database password.';
-$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.';
-$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.';
-$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.';
-$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".';
-$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".';
-$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".';
-$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".';
-$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".';
+$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.';
+$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.';
+$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.';
+$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".';
+$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".';
+$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".';
+$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".';
+$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".';
 $wb['error_used_location'] = 'The installation path already contains a package installation.';
 $wb['installation_task_txt'] = 'Install planned';
 $wb['installation_error_txt'] = 'Install error';
diff --git a/interface/web/sites/lib/lang/ar_web_childdomain.lng b/interface/web/sites/lib/lang/ar_web_childdomain.lng
index 604a81b68f..636505f248 100644
--- a/interface/web/sites/lib/lang/ar_web_childdomain.lng
+++ b/interface/web/sites/lib/lang/ar_web_childdomain.lng
@@ -43,7 +43,7 @@ $wb['no_flag_txt'] = 'No flag';
 $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
 $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 $wb['backup_interval_txt'] = 'Backup interval';
 $wb['backup_copies_txt'] = 'Number of backup copies';
 $wb['ssl_key_txt'] = 'SSL Key';
diff --git a/interface/web/sites/lib/lang/ar_web_subdomain.lng b/interface/web/sites/lib/lang/ar_web_subdomain.lng
index 1295f36697..c5fa1711bb 100644
--- a/interface/web/sites/lib/lang/ar_web_subdomain.lng
+++ b/interface/web/sites/lib/lang/ar_web_subdomain.lng
@@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag';
 $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
 $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 $wb['http_port_txt'] = 'HTTP Port';
 $wb['https_port_txt'] = 'HTTPS Port';
 $wb['http_port_error_regex'] = 'HTTP Port invalid.';
diff --git a/interface/web/sites/lib/lang/bg.lng b/interface/web/sites/lib/lang/bg.lng
index 842b70ae02..0d28df2994 100644
--- a/interface/web/sites/lib/lang/bg.lng
+++ b/interface/web/sites/lib/lang/bg.lng
@@ -31,5 +31,5 @@ $wb['Available packages'] = 'Available packages';
 $wb['Installed packages'] = 'Installed packages';
 $wb['Update Packagelist'] = 'Update Packagelist';
 $wb['Subdomain (Vhost)'] = 'Subdomain (Vhost)';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 ?>
diff --git a/interface/web/sites/lib/lang/bg_aps.lng b/interface/web/sites/lib/lang/bg_aps.lng
index 612adcd429..6a5f981943 100644
--- a/interface/web/sites/lib/lang/bg_aps.lng
+++ b/interface/web/sites/lib/lang/bg_aps.lng
@@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.'
 $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.';
 $wb['error_no_database_pw'] = 'You have provided no valid database password.';
 $wb['error_short_database_pw'] = 'Please choose a longer database password.';
-$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.';
-$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.';
-$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.';
-$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".';
-$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".';
-$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".';
-$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".';
-$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".';
+$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.';
+$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.';
+$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.';
+$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".';
+$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".';
+$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".';
+$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".';
+$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".';
 $wb['error_used_location'] = 'The installation path already contains a package installation.';
 $wb['installation_task_txt'] = 'Install planned';
 $wb['installation_error_txt'] = 'Install error';
diff --git a/interface/web/sites/lib/lang/bg_web_childdomain.lng b/interface/web/sites/lib/lang/bg_web_childdomain.lng
index 7106438c34..c7549b76f7 100644
--- a/interface/web/sites/lib/lang/bg_web_childdomain.lng
+++ b/interface/web/sites/lib/lang/bg_web_childdomain.lng
@@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag';
 $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
 $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 $wb['backup_interval_txt'] = 'Backup interval';
 $wb['backup_copies_txt'] = 'Number of backup copies';
 $wb['ssl_key_txt'] = 'SSL Key';
diff --git a/interface/web/sites/lib/lang/bg_web_subdomain.lng b/interface/web/sites/lib/lang/bg_web_subdomain.lng
index f4218278d9..0df1e50594 100644
--- a/interface/web/sites/lib/lang/bg_web_subdomain.lng
+++ b/interface/web/sites/lib/lang/bg_web_subdomain.lng
@@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag';
 $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
 $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 $wb['http_port_txt'] = 'HTTP Port';
 $wb['https_port_txt'] = 'HTTPS Port';
 $wb['http_port_error_regex'] = 'HTTP Port invalid.';
diff --git a/interface/web/sites/lib/lang/br.lng b/interface/web/sites/lib/lang/br.lng
index 3fdd93585e..685ce6ed28 100644
--- a/interface/web/sites/lib/lang/br.lng
+++ b/interface/web/sites/lib/lang/br.lng
@@ -30,6 +30,6 @@ $wb['Available packages'] = 'Pacotes disponíveis';
 $wb['Installed packages'] = 'Pacotes instalados';
 $wb['Update Packagelist'] = 'Atualizar lista de pacotes';
 $wb['Subdomain (Vhost)'] = 'Subdomínio (vhost)';
-$wb['error_proxy_requires_url'] = 'Tipo de redirecionamento \"proxy\" exige uma url como caminho do redirecionamento.';
+$wb['error_proxy_requires_url'] = 'Tipo de redirecionamento \\"proxy\\" exige uma url como caminho do redirecionamento.';
 $wb['Domain'] = 'Domínio';
 ?>
diff --git a/interface/web/sites/lib/lang/br_cron.lng b/interface/web/sites/lib/lang/br_cron.lng
index eab5b9f688..2bbadf6d1b 100644
--- a/interface/web/sites/lib/lang/br_cron.lng
+++ b/interface/web/sites/lib/lang/br_cron.lng
@@ -19,8 +19,8 @@ $wb['run_wday_error_format'] = 'Formato dos dias da semana é inválido.';
 $wb['command_error_format'] = 'Formato de comando é inválido. Somente endereços url http/https são permitidos.';
 $wb['unknown_fieldtype_error'] = 'Um tipo desconhecido de campo foi usado.';
 $wb['server_id_error_empty'] = 'O ID do servidor está em branco.';
-$wb['limit_cron_url_txt'] = 'Somente url do cron. Por favor, insira uma url iniciando com \"http://\" e um comando do cron.';
+$wb['limit_cron_url_txt'] = 'Somente url do cron. Por favor, insira uma url iniciando com \\"http://\\" e um comando do cron.';
 $wb['command_error_empty'] = 'Comando está em branco.';
-$wb['command_hint_txt'] = 'Você poderá usar, por exemplo: \"/var/www/clients/clientX/webY/meu_script.sh\" ou \"http://www.dominio.com.br/path/script.php\" e também a palavra reservada \"[web_root]\" substituído por \"/var/www/clients/clientX/webY/web\".';
+$wb['command_hint_txt'] = 'Você poderá usar, por exemplo: \\"/var/www/clients/clientX/webY/meu_script.sh\\" ou \\"http://www.dominio.com.br/path/script.php\\" e também a palavra reservada \\"[web_root]\\" substituído por \\"/var/www/clients/clientX/webY/web\\".';
 $wb['log_output_txt'] = 'Saída do Log';
 ?>
diff --git a/interface/web/sites/lib/lang/br_database.lng b/interface/web/sites/lib/lang/br_database.lng
index 57b97693eb..ac916feef1 100644
--- a/interface/web/sites/lib/lang/br_database.lng
+++ b/interface/web/sites/lib/lang/br_database.lng
@@ -23,7 +23,7 @@ $wb['database_remote_error_ips'] = 'Pelo menos um dos endereços IP informados n
 $wb['database_name_error_len'] = 'Nome do banco de dados - {db} - é muito longo. 64 caracteres, incluindo o prefixo, é o limite permitido.';
 $wb['database_user_error_len'] = 'Nome do usuário do banco de dados \'{user}\' é muito longo. 16 caracteres, incluindo o prefixo, é o limite permitido.';
 $wb['parent_domain_id_txt'] = 'Site';
-$wb['database_site_error_empty'] = 'Selecione o \"site\" ao qual o banco de dados pertence.';
+$wb['database_site_error_empty'] = 'Selecione o \\"site\\" ao qual o banco de dados pertence.';
 $wb['select_site_txt'] = '- Selecionar site -';
 $wb['btn_save_txt'] = 'Salvar';
 $wb['btn_cancel_txt'] = 'Cancelar';
diff --git a/interface/web/sites/lib/lang/br_database_user.lng b/interface/web/sites/lib/lang/br_database_user.lng
index 518f0296e1..59b9fce627 100644
--- a/interface/web/sites/lib/lang/br_database_user.lng
+++ b/interface/web/sites/lib/lang/br_database_user.lng
@@ -6,7 +6,7 @@ $wb['client_txt'] = 'Cliente';
 $wb['active_txt'] = 'Ativo';
 $wb['database_user_error_empty'] = 'Usuário do banco de dados está em branco.';
 $wb['database_user_error_unique'] = 'Já existe um usuário do banco de dados com este nome no servidor. Para configurar um nome exclusivo, use como prefixo o domínio para o nome do usuário.';
-$wb['database_user_error_regex'] = 'Usuário do banco de dados inválido! O nome do usuário pode conter os seguintes caracteres: \'\"a-z\', \'A-Z\', \'0-9\' e o \'underscore\'. Tamanho: 2 - 64 caracteres.';
+$wb['database_user_error_regex'] = 'Usuário do banco de dados inválido! O nome do usuário pode conter os seguintes caracteres: \'\\"a-z\', \'A-Z\', \'0-9\' e o \'underscore\'. Tamanho: 2 - 64 caracteres.';
 $wb['database_user_error_len'] = 'O usuário do banco de dados - {user} - é muito longo. O limite do nome do usuário, incluindo o prefixo, são 16 caracteres.';
 $wb['btn_save_txt'] = 'Salvar';
 $wb['btn_cancel_txt'] = 'Cancelar';
diff --git a/interface/web/sites/lib/lang/br_ftp_user.lng b/interface/web/sites/lib/lang/br_ftp_user.lng
index bb8d99ceb0..3df741ed9e 100644
--- a/interface/web/sites/lib/lang/br_ftp_user.lng
+++ b/interface/web/sites/lib/lang/br_ftp_user.lng
@@ -25,8 +25,8 @@ $wb['directory_error_empty'] = 'Diretório está em branco.';
 $wb['directory_error_notinweb'] = 'O diretório não está dentro do diretório web principal.';
 $wb['parent_domain_id_error_empty'] = 'Nenhum site selecionado.';
 $wb['quota_size_error_regex'] = 'Cota: insira -1 para ilimitado ou um número > 0';
-$wb['dir_dot_error'] = 'Não é permitido \"..\" no caminho.';
-$wb['dir_slashdot_error'] = 'Não é permitido \"./\" no caminho.';
+$wb['dir_dot_error'] = 'Não é permitido \\"..\\" no caminho.';
+$wb['dir_slashdot_error'] = 'Não é permitido \\"./\\" no caminho.';
 $wb['generate_password_txt'] = 'Gerar senha';
 $wb['repeat_password_txt'] = 'Repetir senha';
 $wb['password_mismatch_txt'] = 'A senhas não coincidem.';
diff --git a/interface/web/sites/lib/lang/br_shell_user.lng b/interface/web/sites/lib/lang/br_shell_user.lng
index c92bf5baa4..3cbc911ab3 100644
--- a/interface/web/sites/lib/lang/br_shell_user.lng
+++ b/interface/web/sites/lib/lang/br_shell_user.lng
@@ -20,8 +20,8 @@ $wb['parent_domain_id_error_empty'] = 'Nenhum site selecionado.';
 $wb['puser_txt'] = 'Usuário web';
 $wb['pgroup_txt'] = 'Grupo web';
 $wb['ssh_rsa_txt'] = 'Chave pública SSH-RSA (para acessos baseados em chave)';
-$wb['dir_dot_error'] = 'Não é permitido \"..\" no caminho.';
-$wb['dir_slashdot_error'] = 'Não é permitido  \"./\" no caminho.';
+$wb['dir_dot_error'] = 'Não é permitido \\"..\\" no caminho.';
+$wb['dir_slashdot_error'] = 'Não é permitido  \\"./\\" no caminho.';
 $wb['generate_password_txt'] = 'Gerar senha';
 $wb['repeat_password_txt'] = 'Repetir senha';
 $wb['password_mismatch_txt'] = 'A senhas não coincidem.';
diff --git a/interface/web/sites/lib/lang/br_web_aliasdomain.lng b/interface/web/sites/lib/lang/br_web_aliasdomain.lng
index 9d4f1951d8..4acadb2c54 100644
--- a/interface/web/sites/lib/lang/br_web_aliasdomain.lng
+++ b/interface/web/sites/lib/lang/br_web_aliasdomain.lng
@@ -14,7 +14,7 @@ $wb['ssl_bundle_txt'] = 'Pacote';
 $wb['ssl_action_txt'] = 'Ação';
 $wb['ssl_domain_txt'] = 'Domínio';
 $wb['server_id_txt'] = 'Servidor';
-$wb['web_folder_error_regex'] = 'Pasta inválida inserida. Por favor, não use barra \"/\".';
+$wb['web_folder_error_regex'] = 'Pasta inválida inserida. Por favor, não use barra \\"/\\".';
 $wb['type_txt'] = 'Tipo';
 $wb['parent_domain_id_txt'] = 'Site pai';
 $wb['redirect_type_txt'] = 'Tipo de redirecionamento';
@@ -62,7 +62,7 @@ $wb['ssl_organisation_error_regex'] = 'Campo \'Empresa\' é inválido. São cara
 $wb['ssl_organistaion_unit_error_regex'] = 'Campo \'Departamento\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.';
 $wb['ssl_country_error_regex'] = 'Campo \'País\' é inválido. São caracteres válidos: \'A-Z\'.';
 $wb['limit_traffic_quota_free_txt'] = 'Cota máxima de tráfego disponível';
-$wb['redirect_error_regex'] = 'Caminho de redirecionamento é inválido. Exemplos de caminhos válidos: \"/teste/\" ou \"http://www.dominio.com.br/teste/\".';
+$wb['redirect_error_regex'] = 'Caminho de redirecionamento é inválido. Exemplos de caminhos válidos: \\"/teste/\\" ou \\"http://www.dominio.com.br/teste/\\".';
 $wb['php_open_basedir_txt'] = 'Diretório open_basedir do PHP';
 $wb['traffic_quota_exceeded_txt'] = 'Cota de tráfego excedida';
 $wb['ruby_txt'] = 'Ruby';
diff --git a/interface/web/sites/lib/lang/br_web_childdomain.lng b/interface/web/sites/lib/lang/br_web_childdomain.lng
index 1c53d16584..ecff0c2ae8 100644
--- a/interface/web/sites/lib/lang/br_web_childdomain.lng
+++ b/interface/web/sites/lib/lang/br_web_childdomain.lng
@@ -36,18 +36,18 @@ $wb['domain_error_empty'] = 'Domínio está em branco.';
 $wb['domain_error_unique'] = 'Já existe apelido de domínio ou subdomínio com este nome.';
 $wb['domain_error_regex'] = 'Nome de domínio é inválido.';
 $wb['host_txt'] = 'Nome do servidor';
-$wb['redirect_error_regex'] = 'Caminho de redirecionamento é inválido. Exemplo de caminho válido: \"/teste/\" ou \"http://www.dominio.com.br/teste/\".';
+$wb['redirect_error_regex'] = 'Caminho de redirecionamento é inválido. Exemplo de caminho válido: \\"/teste/\\" ou \\"http://www.dominio.com.br/teste/\\".';
 $wb['no_redirect_txt'] = 'Sem redirecionamento';
 $wb['no_flag_txt'] = 'Sem marcas';
 $wb['domain_error_wildcard'] = 'Curingas para subdomínios não são permitidos.';
 $wb['proxy_directives_txt'] = 'Diretivas do proxy';
 $wb['available_proxy_directive_snippets_txt'] = 'Diretivas de trechos de código do proxy disponíveis:';
-$wb['error_proxy_requires_url'] = 'O tipo de redirecionamento \"proxy\" exige uma url no caminho de redirecionamento.';
+$wb['error_proxy_requires_url'] = 'O tipo de redirecionamento \\"proxy\\" exige uma url no caminho de redirecionamento.';
 $wb['backup_interval_txt'] = 'Intervalo de backup';
 $wb['backup_copies_txt'] = 'Limite de cópias do backup';
 $wb['ssl_key_txt'] = 'Chave';
 $wb['ssl_domain_txt'] = 'Domínio do SSL';
-$wb['web_folder_error_regex'] = 'Pasta inválida informada. Por favor não use uma barra - \"/\".';
+$wb['web_folder_error_regex'] = 'Pasta inválida informada. Por favor não use uma barra - \\"/\\".';
 $wb['ipv6_address_txt'] = 'Endereço IPv6';
 $wb['errordocs_txt'] = 'Pasta personalizada Error-Documents';
 $wb['subdomain_txt'] = 'Subdomínio automático';
diff --git a/interface/web/sites/lib/lang/br_web_domain.lng b/interface/web/sites/lib/lang/br_web_domain.lng
index 4b2e77b654..662fdb407c 100644
--- a/interface/web/sites/lib/lang/br_web_domain.lng
+++ b/interface/web/sites/lib/lang/br_web_domain.lng
@@ -52,10 +52,10 @@ $wb['limit_web_quota_free_txt'] = 'Cota máxima de disco disponível';
 $wb['ssl_state_error_regex'] = 'Campo \'Estado\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.';
 $wb['ssl_locality_error_regex'] = 'Campo \'Cidade\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.';
 $wb['ssl_organisation_error_regex'] = 'Campo \'Empresa\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.';
-$wb['ssl_organistaion_unit_error_regex'] = 'Campo \'Departamento\' é inválido. São caracteres válidos: \"a-z\", \'0-9\' e \'.,-_\'.';
+$wb['ssl_organistaion_unit_error_regex'] = 'Campo \'Departamento\' é inválido. São caracteres válidos: \\"a-z\\", \'0-9\' e \'.,-_\'.';
 $wb['ssl_country_error_regex'] = 'Campo \'País\' é inválido. São caracteres válidos: \'A-Z\'.';
 $wb['limit_traffic_quota_free_txt'] = 'Cota máxima de tráfego disponível';
-$wb['redirect_error_regex'] = 'Caminho de redirecionamento é inválido. Exemplos de caminhos válidos: \"/teste/\" ou \"http://www.dominio.com.br/teste/\".';
+$wb['redirect_error_regex'] = 'Caminho de redirecionamento é inválido. Exemplos de caminhos válidos: \\"/teste/\\" ou \\"http://www.dominio.com.br/teste/\\".';
 $wb['php_open_basedir_txt'] = 'Diretório open_basedir do php';
 $wb['traffic_quota_exceeded_txt'] = 'Cota de tráfego excedida';
 $wb['backup_interval_txt'] = 'Intervalo de backup';
@@ -104,7 +104,7 @@ $wb['generate_password_txt'] = 'Gerar senha';
 $wb['repeat_password_txt'] = 'Repetir senha';
 $wb['password_mismatch_txt'] = 'A senhas não coincidem.';
 $wb['password_match_txt'] = 'A senhas coincidem.';
-$wb['web_folder_error_regex'] = 'Pasta informada é inválida! Por favor não insira barra \"/\".';
+$wb['web_folder_error_regex'] = 'Pasta informada é inválida! Por favor não insira barra \\"/\\".';
 $wb['domain_error_autosub'] = 'Já existe um subdomínio com estas configurações.';
 $wb['available_php_directive_snippets_txt'] = 'Diretivas de trechos de código do php:';
 $wb['available_apache_directive_snippets_txt'] = 'Diretivas de trechos de código do apache:';
diff --git a/interface/web/sites/lib/lang/br_web_subdomain.lng b/interface/web/sites/lib/lang/br_web_subdomain.lng
index 8abb050438..0ccc574805 100644
--- a/interface/web/sites/lib/lang/br_web_subdomain.lng
+++ b/interface/web/sites/lib/lang/br_web_subdomain.lng
@@ -36,7 +36,7 @@ $wb['domain_error_empty'] = 'Domínio está em branco.';
 $wb['domain_error_unique'] = 'Já existe apelido de domínio ou subdomínio com este nome.';
 $wb['domain_error_regex'] = 'Nome do domínio é inválido.';
 $wb['host_txt'] = 'Host';
-$wb['redirect_error_regex'] = 'Caminho de redirecionamento é inválido. Exemplo de caminho válido: \"/teste/\" ou \"http://www.dominio.com.br/teste/\".';
+$wb['redirect_error_regex'] = 'Caminho de redirecionamento é inválido. Exemplo de caminho válido: \\"/teste/\\" ou \\"http://www.dominio.com.br/teste/\\".';
 $wb['no_redirect_txt'] = 'Sem redirecionamento';
 $wb['no_flag_txt'] = 'Sem marcas';
 $wb['domain_error_wildcard'] = 'Curingas de subdomínios não são permitidos.';
diff --git a/interface/web/sites/lib/lang/br_web_vhost_domain.lng b/interface/web/sites/lib/lang/br_web_vhost_domain.lng
index d30db9f189..4c72b1fd88 100644
--- a/interface/web/sites/lib/lang/br_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/br_web_vhost_domain.lng
@@ -56,7 +56,7 @@ $wb['ssl_organisation_error_regex'] = 'Campo \'Empresa\' é inválido. São cara
 $wb['ssl_organistaion_unit_error_regex'] = 'Campo \'Departamento\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.';
 $wb['ssl_country_error_regex'] = 'Campo \'País\' é inválido. São caracteres válidos: \'A-Z\'.';
 $wb['limit_traffic_quota_free_txt'] = 'Limite da cota de tráfego';
-$wb['redirect_error_regex'] = 'Caminho de redirecionamento é inválido. Exemplos de caminhos válidos: \"/teste\" ou \"http://www.dominio.com.br/teste/\".';
+$wb['redirect_error_regex'] = 'Caminho de redirecionamento é inválido. Exemplos de caminhos válidos: \\"/teste\\" ou \\"http://www.dominio.com.br/teste/\\".';
 $wb['php_open_basedir_txt'] = 'Diretório open_basedir do php';
 $wb['traffic_quota_exceeded_txt'] = 'Cota de tráfego excedida';
 $wb['backup_interval_txt'] = 'Intervalo de backup';
@@ -106,7 +106,7 @@ $wb['generate_password_txt'] = 'Gerar senha';
 $wb['repeat_password_txt'] = 'Repetir senha';
 $wb['password_mismatch_txt'] = 'A senhas não coincidem.';
 $wb['password_match_txt'] = 'A senhas coincidem.';
-$wb['web_folder_error_regex'] = 'Pasta inválida informada. Por favor não insira barra - \"\".';
+$wb['web_folder_error_regex'] = 'Pasta inválida informada. Por favor não insira barra - \\"\\".';
 $wb['domain_error_autosub'] = 'Já existe um subdomínio com essas configurações.';
 $wb['available_php_directive_snippets_txt'] = 'Diretivas de trechos de código do php disponíveis:';
 $wb['available_apache_directive_snippets_txt'] = 'Diretivas de trechos de código do apache disponíveis:';
diff --git a/interface/web/sites/lib/lang/br_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/br_web_vhost_subdomain.lng
index 8a0c3e6a1f..fa6ddad484 100644
--- a/interface/web/sites/lib/lang/br_web_vhost_subdomain.lng
+++ b/interface/web/sites/lib/lang/br_web_vhost_subdomain.lng
@@ -19,7 +19,7 @@ $wb['ssl_domain_txt'] = 'Domínio';
 $wb['server_id_txt'] = 'Servidor';
 $wb['domain_txt'] = 'Domínio';
 $wb['host_txt'] = 'Hostname';
-$wb['web_folder_error_regex'] = 'Pasta informada é inválida. Por favor, não insira barra - \"/\".';
+$wb['web_folder_error_regex'] = 'Pasta informada é inválida. Por favor, não insira barra - \\"/\\".';
 $wb['type_txt'] = 'Tipo';
 $wb['redirect_type_txt'] = 'Tipo de redirecionamento';
 $wb['redirect_path_txt'] = 'Caminho para redirecionamento';
@@ -60,13 +60,13 @@ $wb['client_group_id_txt'] = 'Cliente';
 $wb['stats_password_txt'] = 'Senha para estatísticas web';
 $wb['allow_override_txt'] = 'Diretiva Apache AllowOverride';
 $wb['limit_web_quota_free_txt'] = 'Cota de disco';
-$wb['ssl_state_error_regex'] = 'Campo \'Estado\' é inválido. Caracteres válidos são: \'0-9\' e \".,-_\".';
+$wb['ssl_state_error_regex'] = 'Campo \'Estado\' é inválido. Caracteres válidos são: \'0-9\' e \\".,-_\\".';
 $wb['ssl_locality_error_regex'] = 'Campo \'Cidade\' é inválido. Caracteres válidos são: \'a-z\', \'0-9\' e \'.,-_\'.';
 $wb['ssl_organisation_error_regex'] = 'Campo \'Empresa\' é inválido. Caracteres válidos são: \'a-z\', \'0-9\' e \'.,-_\'.';
 $wb['ssl_organistaion_unit_error_regex'] = 'Campo \'Departamento\' é inválido. Caracteres válidos são: \'a-z\', \'0-9\' e \'.,-_\'.';
 $wb['ssl_country_error_regex'] = 'Campo \'País\' é inválido. Caracteres válidos são: \'A-Z\'.';
 $wb['limit_traffic_quota_free_txt'] = 'Cota de tráfego';
-$wb['redirect_error_regex'] = 'Caminho de redirecionamento é inválido. Exemplo de caminho válido: \"/teste/\" ou \"http://www.dominio.com.br/teste/\".';
+$wb['redirect_error_regex'] = 'Caminho de redirecionamento é inválido. Exemplo de caminho válido: \\"/teste/\\" ou \\"http://www.dominio.com.br/teste/\\".';
 $wb['php_open_basedir_txt'] = 'Diretório open_basedir do PHP';
 $wb['traffic_quota_exceeded_txt'] = 'Cota de tráfego excedida';
 $wb['ruby_txt'] = 'Ruby';
@@ -121,9 +121,9 @@ $wb['allowed_rewrite_rule_directives_txt'] = 'Diretivas Permitidas:';
 $wb['configuration_error_txt'] = 'ERRO DE CONFIGURAÇÃO';
 $wb['variables_txt'] = 'Variáveis';
 $wb['backup_excludes_txt'] = 'Diretórios Excluídos';
-$wb['backup_excludes_note_txt'] = '(Separar múltiplos diretórios por vírgulas. Exemplo: \"web/cache/*,web/backup\".)';
+$wb['backup_excludes_note_txt'] = '(Separar múltiplos diretórios por vírgulas. Exemplo: \\"web/cache/*,web/backup\\".)';
 $wb['backup_excludes_error_regex'] = 'Os diretórios excluídos contém caracteres inválidos.';
-$wb['subdomain_error_empty'] = 'O campo \"Subdomínio\" está em branco ou contém caracteres inválidos.';
+$wb['subdomain_error_empty'] = 'O campo \\"Subdomínio\\" está em branco ou contém caracteres inválidos.';
 $wb['http_port_txt'] = 'Porta HTTP';
 $wb['https_port_txt'] = 'Porta HTTPS';
 $wb['http_port_error_regex'] = 'Porta HTTP inválida.';
diff --git a/interface/web/sites/lib/lang/br_webdav_user.lng b/interface/web/sites/lib/lang/br_webdav_user.lng
index b135d5e0fa..4347f8ae36 100644
--- a/interface/web/sites/lib/lang/br_webdav_user.lng
+++ b/interface/web/sites/lib/lang/br_webdav_user.lng
@@ -12,8 +12,8 @@ $wb['username_error_unique'] = 'O nome do usuário deve ser exclusivo.';
 $wb['username_error_regex'] = 'O nome do usuário contém caracteres não permitidos.';
 $wb['directory_error_empty'] = 'Diretório está em branco.';
 $wb['parent_domain_id_error_empty'] = 'Nenhum site selecionado.';
-$wb['dir_dot_error'] = 'Não é permitido \"..\" no caminho.';
-$wb['dir_slashdot_error'] = 'Não é permitido \"./\" no caminho.';
+$wb['dir_dot_error'] = 'Não é permitido \\"..\\" no caminho.';
+$wb['dir_slashdot_error'] = 'Não é permitido \\"./\\" no caminho.';
 $wb['generate_password_txt'] = 'Gerar senha';
 $wb['repeat_password_txt'] = 'Repetir senha';
 $wb['password_mismatch_txt'] = 'A senhas não coincidem.';
diff --git a/interface/web/sites/lib/lang/ca.lng b/interface/web/sites/lib/lang/ca.lng
index c914ef002f..9acee9d061 100644
--- a/interface/web/sites/lib/lang/ca.lng
+++ b/interface/web/sites/lib/lang/ca.lng
@@ -31,5 +31,5 @@ $wb['Available packages'] = 'Packages disponibles';
 $wb['Installed packages'] = 'Packages installés';
 $wb['Update Packagelist'] = 'Mise à jour de la liste des packages';
 $wb['Subdomain (Vhost)'] = 'Sous-domaine (Vhost)';
-$wb['error_proxy_requires_url'] = 'Type de redirection \"proxy\" nécessite une URL comme chemin de redirection.';
+$wb['error_proxy_requires_url'] = 'Type de redirection \\"proxy\\" nécessite une URL comme chemin de redirection.';
 ?>
diff --git a/interface/web/sites/lib/lang/ca_aps.lng b/interface/web/sites/lib/lang/ca_aps.lng
index 7233c1f0dd..062d6ea589 100644
--- a/interface/web/sites/lib/lang/ca_aps.lng
+++ b/interface/web/sites/lib/lang/ca_aps.lng
@@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'Le dossier d\'installation choisi est invalide
 $wb['error_license_agreement'] = 'Avant de continuer, vous devez accepter les conditions d\'utilisation (licence).';
 $wb['error_no_database_pw'] = 'Vous n\'avez pas renseigné de mot de passe BDD valide.';
 $wb['error_short_database_pw'] = 'Veuillez saisir un mot de passe BDD plus long.';
-$wb['error_no_value_for'] = 'Le champ \"%s\" ne peut pas être vide.';
-$wb['error_short_value_for'] = 'Le champ \"%s\" nécessite une valeur plus longue.';
-$wb['error_long_value_for'] = 'Le champ \"%s\" nécessite une valeur plus courte.';
-$wb['error_inv_value_for'] = 'Vous avez saisi une valeur invalide pour le champ \"%s\".';
-$wb['error_inv_email_for'] = 'L\'adresse courriel saisie pour le champ \"%s\" est invalide.';
-$wb['error_inv_domain_for'] = 'Le domaine saisi pour le champ \"%s\" est invalide.';
-$wb['error_inv_integer_for'] = 'Le nombre saisi pour le champ \"%s\" est invalide.';
-$wb['error_inv_float_for'] = 'La décimale saisie pour le champ \"%s\" est invalide.';
+$wb['error_no_value_for'] = 'Le champ \\"%s\\" ne peut pas être vide.';
+$wb['error_short_value_for'] = 'Le champ \\"%s\\" nécessite une valeur plus longue.';
+$wb['error_long_value_for'] = 'Le champ \\"%s\\" nécessite une valeur plus courte.';
+$wb['error_inv_value_for'] = 'Vous avez saisi une valeur invalide pour le champ \\"%s\\".';
+$wb['error_inv_email_for'] = 'L\'adresse courriel saisie pour le champ \\"%s\\" est invalide.';
+$wb['error_inv_domain_for'] = 'Le domaine saisi pour le champ \\"%s\\" est invalide.';
+$wb['error_inv_integer_for'] = 'Le nombre saisi pour le champ \\"%s\\" est invalide.';
+$wb['error_inv_float_for'] = 'La décimale saisie pour le champ \\"%s\\" est invalide.';
 $wb['error_used_location'] = 'Le chemin de destination contient déjà un package d\'installation.';
 $wb['installation_task_txt'] = 'Installation prévue';
 $wb['installation_error_txt'] = 'Erreur d\'installation';
diff --git a/interface/web/sites/lib/lang/ca_web_childdomain.lng b/interface/web/sites/lib/lang/ca_web_childdomain.lng
index 1d838990e3..762acfe244 100644
--- a/interface/web/sites/lib/lang/ca_web_childdomain.lng
+++ b/interface/web/sites/lib/lang/ca_web_childdomain.lng
@@ -43,7 +43,7 @@ $wb['no_redirect_txt'] = 'No redirect';
 $wb['no_flag_txt'] = 'No flag';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
 $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 $wb['backup_interval_txt'] = 'Backup interval';
 $wb['backup_copies_txt'] = 'Number of backup copies';
 $wb['ssl_key_txt'] = 'SSL Key';
diff --git a/interface/web/sites/lib/lang/ca_web_subdomain.lng b/interface/web/sites/lib/lang/ca_web_subdomain.lng
index ec5980a91b..13fd0d66ef 100644
--- a/interface/web/sites/lib/lang/ca_web_subdomain.lng
+++ b/interface/web/sites/lib/lang/ca_web_subdomain.lng
@@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'Aucun flag';
 $wb['domain_error_wildcard'] = 'Les sous-domaines joker ne sont pas autorisés.';
 $wb['proxy_directives_txt'] = 'Directives pour les Proxy';
 $wb['available_proxy_directive_snippets_txt'] = 'Directives pour les Proxy Snippets disponibles :';
-$wb['error_proxy_requires_url'] = 'Les redirections de type \"proxy\" nécessitent une URL comme chemin de redirection.';
+$wb['error_proxy_requires_url'] = 'Les redirections de type \\"proxy\\" nécessitent une URL comme chemin de redirection.';
 $wb['http_port_txt'] = 'HTTP Port';
 $wb['https_port_txt'] = 'HTTPS Port';
 $wb['http_port_error_regex'] = 'HTTP Port invalid.';
diff --git a/interface/web/sites/lib/lang/cz.lng b/interface/web/sites/lib/lang/cz.lng
index 2e4276c817..4c16438e34 100644
--- a/interface/web/sites/lib/lang/cz.lng
+++ b/interface/web/sites/lib/lang/cz.lng
@@ -31,5 +31,5 @@ $wb['Available packages'] = 'Dostupné balíčky';
 $wb['Installed packages'] = 'Nainstalované balíčky';
 $wb['Update Packagelist'] = 'Aktualizace seznamu balíčků';
 $wb['Subdomain (Vhost)'] = 'Subdoména (Vhost)';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 ?>
diff --git a/interface/web/sites/lib/lang/cz_aps.lng b/interface/web/sites/lib/lang/cz_aps.lng
index bb8015951c..adf6ccf58e 100644
--- a/interface/web/sites/lib/lang/cz_aps.lng
+++ b/interface/web/sites/lib/lang/cz_aps.lng
@@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.'
 $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.';
 $wb['error_no_database_pw'] = 'You have provided no valid database password.';
 $wb['error_short_database_pw'] = 'Please choose a longer database password.';
-$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.';
-$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.';
-$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.';
-$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".';
-$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".';
-$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".';
-$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".';
-$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".';
+$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.';
+$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.';
+$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.';
+$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".';
+$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".';
+$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".';
+$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".';
+$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".';
 $wb['error_used_location'] = 'The installation path already contains a package installation.';
 $wb['installation_task_txt'] = 'Instalace plánované';
 $wb['installation_error_txt'] = 'Chyba instalace';
diff --git a/interface/web/sites/lib/lang/cz_web_childdomain.lng b/interface/web/sites/lib/lang/cz_web_childdomain.lng
index 5a5091c89a..b159976b29 100644
--- a/interface/web/sites/lib/lang/cz_web_childdomain.lng
+++ b/interface/web/sites/lib/lang/cz_web_childdomain.lng
@@ -49,7 +49,7 @@ $wb['no_flag_txt'] = 'Žádný příznak';
 $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
 $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 $wb['ipv6_address_txt'] = 'IPv6 adresa';
 $wb['domain_error_autosub'] = 'There is already a subdomain with these settings.';
 $wb['hd_quota_error_empty'] = 'Harddisk quota is 0 or empty.';
diff --git a/interface/web/sites/lib/lang/cz_web_subdomain.lng b/interface/web/sites/lib/lang/cz_web_subdomain.lng
index 986f76acc8..cd301db143 100644
--- a/interface/web/sites/lib/lang/cz_web_subdomain.lng
+++ b/interface/web/sites/lib/lang/cz_web_subdomain.lng
@@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'Žádný příznak';
 $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
 $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 $wb['http_port_txt'] = 'HTTP Port';
 $wb['https_port_txt'] = 'HTTPS Port';
 $wb['http_port_error_regex'] = 'HTTP Port invalid.';
diff --git a/interface/web/sites/lib/lang/de_web_childdomain.lng b/interface/web/sites/lib/lang/de_web_childdomain.lng
index 561e8de968..05b1f1d51d 100644
--- a/interface/web/sites/lib/lang/de_web_childdomain.lng
+++ b/interface/web/sites/lib/lang/de_web_childdomain.lng
@@ -42,7 +42,7 @@ $wb['no_redirect_txt'] = 'Kein Redirect';
 $wb['no_flag_txt'] = 'Kein Flag';
 $wb['proxy_directives_txt'] = 'Proxy-Direktiven';
 $wb['available_proxy_directive_snippets_txt'] = 'Verfügbare Proxy Direktiven Schnipsel:';
-$wb['error_proxy_requires_url'] = 'Weiterleitungstyp \"proxy\" erfordert eine URL als Weiterleitungspfad.';
+$wb['error_proxy_requires_url'] = 'Weiterleitungstyp \\"proxy\\" erfordert eine URL als Weiterleitungspfad.';
 $wb['backup_interval_txt'] = 'Backup-Intervall';
 $wb['backup_copies_txt'] = 'Anzahl der Backups';
 $wb['ssl_key_txt'] = 'SSL-Schlüssel';
diff --git a/interface/web/sites/lib/lang/de_web_subdomain.lng b/interface/web/sites/lib/lang/de_web_subdomain.lng
index a88918b09a..586c90adc3 100644
--- a/interface/web/sites/lib/lang/de_web_subdomain.lng
+++ b/interface/web/sites/lib/lang/de_web_subdomain.lng
@@ -42,7 +42,7 @@ $wb['no_redirect_txt'] = 'Kein Redirect';
 $wb['no_flag_txt'] = 'Kein Flag';
 $wb['proxy_directives_txt'] = 'Proxy-Direktiven';
 $wb['available_proxy_directive_snippets_txt'] = 'Verfügbare Proxy Direktiven Schnipsel:';
-$wb['error_proxy_requires_url'] = 'Weiterleitungstyp \"proxy\" erfordert eine URL als Weiterleitungspfad.';
+$wb['error_proxy_requires_url'] = 'Weiterleitungstyp \\"proxy\\" erfordert eine URL als Weiterleitungspfad.';
 $wb['http_port_txt'] = 'HTTP Port';
 $wb['https_port_txt'] = 'HTTPS Port';
 $wb['http_port_error_regex'] = 'HTTP Port invalid.';
diff --git a/interface/web/sites/lib/lang/dk.lng b/interface/web/sites/lib/lang/dk.lng
index a99760a66e..39974fef5d 100644
--- a/interface/web/sites/lib/lang/dk.lng
+++ b/interface/web/sites/lib/lang/dk.lng
@@ -31,5 +31,5 @@ $wb['Available packages'] = 'Tilgængelig pakker';
 $wb['Installed packages'] = 'Installeret pakker';
 $wb['Update Packagelist'] = 'Opdater Pakkeliste';
 $wb['Subdomain (Vhost)'] = 'Sub-domæne (Vhost)';
-$wb['error_proxy_requires_url'] = 'Omdiriger Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Omdiriger Type \\"proxy\\" requires a URL as the redirect path.';
 ?>
diff --git a/interface/web/sites/lib/lang/dk_aps.lng b/interface/web/sites/lib/lang/dk_aps.lng
index c3f2983cfd..ca006e2eb2 100644
--- a/interface/web/sites/lib/lang/dk_aps.lng
+++ b/interface/web/sites/lib/lang/dk_aps.lng
@@ -40,14 +40,14 @@ $wb['error_inv_main_location'] = 'Den oplyste installations mappe er ugyldig.';
 $wb['error_license_agreement'] = 'For at fortsætte skal du acceptere licensaftalen.';
 $wb['error_no_database_pw'] = 'Du har ikke oplyst en database adgangskode.';
 $wb['error_short_database_pw'] = 'Vælg en længer database adgangskode.';
-$wb['error_no_value_for'] = 'Feltet \"%s\" må ikke være tomt.';
-$wb['error_short_value_for'] = 'Feltet \"%s\" kræver en længere indtastnings værdi.';
-$wb['error_long_value_for'] = 'Feltet \"%s\" kræver en kortere indtastnings værdi.';
-$wb['error_inv_value_for'] = 'Du har indtastet en ugyldig værdi for feltet \"%s\".';
-$wb['error_inv_email_for'] = 'Du har indtastet en ugyldig mail adresse for feltet \"%s\".';
-$wb['error_inv_domain_for'] = 'Du har indtastet et ugyldigt domæne for feltet \"%s\".';
-$wb['error_inv_integer_for'] = 'Du har indtastet et ugyldigt tal for feltet \"%s\".';
-$wb['error_inv_float_for'] = 'Du har indtastet et ugyldigt floating point tal for feltet \"%s\".';
+$wb['error_no_value_for'] = 'Feltet \\"%s\\" må ikke være tomt.';
+$wb['error_short_value_for'] = 'Feltet \\"%s\\" kræver en længere indtastnings værdi.';
+$wb['error_long_value_for'] = 'Feltet \\"%s\\" kræver en kortere indtastnings værdi.';
+$wb['error_inv_value_for'] = 'Du har indtastet en ugyldig værdi for feltet \\"%s\\".';
+$wb['error_inv_email_for'] = 'Du har indtastet en ugyldig mail adresse for feltet \\"%s\\".';
+$wb['error_inv_domain_for'] = 'Du har indtastet et ugyldigt domæne for feltet \\"%s\\".';
+$wb['error_inv_integer_for'] = 'Du har indtastet et ugyldigt tal for feltet \\"%s\\".';
+$wb['error_inv_float_for'] = 'Du har indtastet et ugyldigt floating point tal for feltet \\"%s\\".';
 $wb['error_used_location'] = 'Installations stien indeholder allerede en pakke installation.';
 $wb['installation_task_txt'] = 'Installation planlagt';
 $wb['installation_error_txt'] = 'Installations fejl';
diff --git a/interface/web/sites/lib/lang/dk_web_childdomain.lng b/interface/web/sites/lib/lang/dk_web_childdomain.lng
index 1d838990e3..762acfe244 100644
--- a/interface/web/sites/lib/lang/dk_web_childdomain.lng
+++ b/interface/web/sites/lib/lang/dk_web_childdomain.lng
@@ -43,7 +43,7 @@ $wb['no_redirect_txt'] = 'No redirect';
 $wb['no_flag_txt'] = 'No flag';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
 $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 $wb['backup_interval_txt'] = 'Backup interval';
 $wb['backup_copies_txt'] = 'Number of backup copies';
 $wb['ssl_key_txt'] = 'SSL Key';
diff --git a/interface/web/sites/lib/lang/dk_web_subdomain.lng b/interface/web/sites/lib/lang/dk_web_subdomain.lng
index 4fffd59365..c14a347263 100644
--- a/interface/web/sites/lib/lang/dk_web_subdomain.lng
+++ b/interface/web/sites/lib/lang/dk_web_subdomain.lng
@@ -42,7 +42,7 @@ $wb['no_redirect_txt'] = 'Ingen redirect';
 $wb['no_flag_txt'] = 'Ingen flag';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
 $wb['available_proxy_directive_snippets_txt'] = 'Tilgængelig Proxy Direktiv Kodestykker:';
-$wb['error_proxy_requires_url'] = 'Omdiriger Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Omdiriger Type \\"proxy\\" requires a URL as the redirect path.';
 $wb['http_port_txt'] = 'HTTP Port';
 $wb['https_port_txt'] = 'HTTPS Port';
 $wb['http_port_error_regex'] = 'HTTP Port invalid.';
diff --git a/interface/web/sites/lib/lang/el.lng b/interface/web/sites/lib/lang/el.lng
index 19bfc27349..2d726140fd 100644
--- a/interface/web/sites/lib/lang/el.lng
+++ b/interface/web/sites/lib/lang/el.lng
@@ -31,5 +31,5 @@ $wb['Available packages'] = 'Available packages';
 $wb['Installed packages'] = 'Installed packages';
 $wb['Update Packagelist'] = 'Update Packagelist';
 $wb['Subdomain (Vhost)'] = 'Subdomain (Vhost)';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 ?>
diff --git a/interface/web/sites/lib/lang/el_aps.lng b/interface/web/sites/lib/lang/el_aps.lng
index 73cb49f106..0209737f61 100644
--- a/interface/web/sites/lib/lang/el_aps.lng
+++ b/interface/web/sites/lib/lang/el_aps.lng
@@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.'
 $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.';
 $wb['error_no_database_pw'] = 'You have provided no valid database password.';
 $wb['error_short_database_pw'] = 'Please choose a longer database password.';
-$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.';
-$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.';
-$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.';
-$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".';
-$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".';
-$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".';
-$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".';
-$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".';
+$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.';
+$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.';
+$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.';
+$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".';
+$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".';
+$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".';
+$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".';
+$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".';
 $wb['error_used_location'] = 'The installation path already contains a package installation.';
 $wb['installation_task_txt'] = 'Install planned';
 $wb['installation_error_txt'] = 'Install error';
diff --git a/interface/web/sites/lib/lang/el_web_childdomain.lng b/interface/web/sites/lib/lang/el_web_childdomain.lng
index a1cead28e3..3c5cb7a936 100644
--- a/interface/web/sites/lib/lang/el_web_childdomain.lng
+++ b/interface/web/sites/lib/lang/el_web_childdomain.lng
@@ -45,7 +45,7 @@ $wb['no_flag_txt'] = 'Χωρίς Σημαία';
 $wb['domain_error_wildcard'] = 'Wildcard subdomains δεν επιτρέπονται.';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
 $wb['available_proxy_directive_snippets_txt'] = 'Διαθέσιμα Proxy Directive Snippets:';
-$wb['error_proxy_requires_url'] = 'Ο τύπος ανακατεύθυνσης \"proxy\" απαιτεί ένα URL ως μονοπάτι ανακατεύθυνσης.';
+$wb['error_proxy_requires_url'] = 'Ο τύπος ανακατεύθυνσης \\"proxy\\" απαιτεί ένα URL ως μονοπάτι ανακατεύθυνσης.';
 $wb['ssl_domain_txt'] = 'SSL Domain';
 $wb['web_folder_error_regex'] = 'Εισάγατε μη έγκυρο φάκελο. Μην εισάγετε την κάθετο.';
 $wb['ipv6_address_txt'] = 'Διεύθυνση IPv6';
diff --git a/interface/web/sites/lib/lang/el_web_subdomain.lng b/interface/web/sites/lib/lang/el_web_subdomain.lng
index b3f8e1312f..606137bc82 100644
--- a/interface/web/sites/lib/lang/el_web_subdomain.lng
+++ b/interface/web/sites/lib/lang/el_web_subdomain.lng
@@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'Χωρίς Σημαία';
 $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
 $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 $wb['http_port_txt'] = 'HTTP Port';
 $wb['https_port_txt'] = 'HTTPS Port';
 $wb['http_port_error_regex'] = 'HTTP Port invalid.';
diff --git a/interface/web/sites/lib/lang/es.lng b/interface/web/sites/lib/lang/es.lng
index 78cfa3a609..7d128081f6 100755
--- a/interface/web/sites/lib/lang/es.lng
+++ b/interface/web/sites/lib/lang/es.lng
@@ -8,7 +8,7 @@ $wb['Cron'] = 'Trabajos programados';
 $wb['Database User'] = 'Usuarios de bases de datos';
 $wb['Database'] = 'Bases de datos';
 $wb['Domain'] = 'Dominio';
-$wb['error_proxy_requires_url'] = 'La redirección del tipo \"proxy\" requiere de una URL como ruta de redirección.';
+$wb['error_proxy_requires_url'] = 'La redirección del tipo \\"proxy\\" requiere de una URL como ruta de redirección.';
 $wb['Folder users'] = 'Usuarios de carpetas protegidas';
 $wb['Folder'] = 'Carpetas protegidas';
 $wb['FTP'] = 'FTP';
diff --git a/interface/web/sites/lib/lang/es_aps.lng b/interface/web/sites/lib/lang/es_aps.lng
index afecc225fc..3780b32edd 100755
--- a/interface/web/sites/lib/lang/es_aps.lng
+++ b/interface/web/sites/lib/lang/es_aps.lng
@@ -12,20 +12,20 @@ $wb['config_script_txt'] = 'Archivo de configuración';
 $wb['database_txt'] = 'Base de datos';
 $wb['description_txt'] = 'Descripción';
 $wb['details_txt'] = 'Detalles';
-$wb['error_inv_domain_for'] = 'Ha ingresado un dominio inválido en el campo \"%s\".';
-$wb['error_inv_email_for'] = 'Ha ingresado una dirección de correo inválida en el campo \"%s\".';
-$wb['error_inv_float_for'] = 'Ha introducido un número de punto flotante no válido para el campo \"%s\".';
-$wb['error_inv_integer_for'] = 'Ha ingresado un número inválido en el campo \"%s\".';
+$wb['error_inv_domain_for'] = 'Ha ingresado un dominio inválido en el campo \\"%s\\".';
+$wb['error_inv_email_for'] = 'Ha ingresado una dirección de correo inválida en el campo \\"%s\\".';
+$wb['error_inv_float_for'] = 'Ha introducido un número de punto flotante no válido para el campo \\"%s\\".';
+$wb['error_inv_integer_for'] = 'Ha ingresado un número inválido en el campo \\"%s\\".';
 $wb['error_inv_main_location'] = 'La ubicación de la carpeta de instalación proporcionada es inválida.';
-$wb['error_inv_value_for'] = 'Ha ingresado un valor inválido en el campo \"%s\".';
+$wb['error_inv_value_for'] = 'Ha ingresado un valor inválido en el campo \\"%s\\".';
 $wb['error_license_agreement'] = 'Para poder continuar debe aceptar el acuerdo de licencia.';
-$wb['error_long_value_for'] = 'El campo \"%s\" requiere una entrada más corta.';
+$wb['error_long_value_for'] = 'El campo \\"%s\\" requiere una entrada más corta.';
 $wb['error_main_domain'] = 'El dominio de la ruta de la instalación es inválido.';
 $wb['error_no_database_pw'] = 'No ha proporcionado una contraseña válida para la base de datos.';
 $wb['error_no_main_location'] = 'Ha proporcionado una ruta de instalación inválida.';
-$wb['error_no_value_for'] = 'El campo \"%s\" no puede estar vacío.';
+$wb['error_no_value_for'] = 'El campo \\"%s\\" no puede estar vacío.';
 $wb['error_short_database_pw'] = 'Por favor seleccione un contraseña más larga para la base de datos.';
-$wb['error_short_value_for'] = 'El campo \"%s\" requiere una entrada más larga.';
+$wb['error_short_value_for'] = 'El campo \\"%s\\" requiere una entrada más larga.';
 $wb['error_used_location'] = 'La ruta de instalación ya contiene un paquete instalado.';
 $wb['homepage_txt'] = 'Página de inicio';
 $wb['install_language_txt'] = 'Idioma de la interfaz';
diff --git a/interface/web/sites/lib/lang/es_web_childdomain.lng b/interface/web/sites/lib/lang/es_web_childdomain.lng
index 839110669f..25843a0e21 100644
--- a/interface/web/sites/lib/lang/es_web_childdomain.lng
+++ b/interface/web/sites/lib/lang/es_web_childdomain.lng
@@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'Sin flag';
 $wb['domain_error_wildcard'] = 'No se permiten subdominios comodín.';
 $wb['proxy_directives_txt'] = 'Directivas de Proxy';
 $wb['available_proxy_directive_snippets_txt'] = 'Fragmentos de directivas de proxy disponibles:';
-$wb['error_proxy_requires_url'] = 'Tipo de redirección \"proxy\" necesita una URL como ruta de redirección.';
+$wb['error_proxy_requires_url'] = 'Tipo de redirección \\"proxy\\" necesita una URL como ruta de redirección.';
 $wb['backup_interval_txt'] = 'Intervalo de copia de seguridad';
 $wb['backup_copies_txt'] = 'Número de copias de seguridad';
 $wb['ssl_key_txt'] = 'Clave SSL';
@@ -104,7 +104,7 @@ $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
 $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
 $wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout debe ser un valor entero positivo.';
 $wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests debe ser un valor entero >= 0.';
-$wb['pm_ondemand_hint_txt'] = 'Por favor ten en cuenta que debes tener una versión de PHP >= 5.3.9 para poder usar el gestor de procesos \"ondemand\". Si seleccionas \"ondemand\" para una versión de PHP anterior, ¡PHP dejará de funcionar!';
+$wb['pm_ondemand_hint_txt'] = 'Por favor ten en cuenta que debes tener una versión de PHP >= 5.3.9 para poder usar el gestor de procesos \\"ondemand\\". Si seleccionas \\"ondemand\\" para una versión de PHP anterior, ¡PHP dejará de funcionar!';
 $wb['generate_password_txt'] = 'Generar contraseña';
 $wb['repeat_password_txt'] = 'Repetir contraseña';
 $wb['password_mismatch_txt'] = 'Las contraseñas no coinciden.';
diff --git a/interface/web/sites/lib/lang/es_web_subdomain.lng b/interface/web/sites/lib/lang/es_web_subdomain.lng
index 8bae76742c..2221a749c2 100644
--- a/interface/web/sites/lib/lang/es_web_subdomain.lng
+++ b/interface/web/sites/lib/lang/es_web_subdomain.lng
@@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag';
 $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
 $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 $wb['http_port_txt'] = 'HTTP Port';
 $wb['https_port_txt'] = 'HTTPS Port';
 $wb['http_port_error_regex'] = 'HTTP Port invalid.';
diff --git a/interface/web/sites/lib/lang/es_web_vhost_domain.lng b/interface/web/sites/lib/lang/es_web_vhost_domain.lng
index 4a2b17cab7..f98c02db15 100644
--- a/interface/web/sites/lib/lang/es_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/es_web_vhost_domain.lng
@@ -102,7 +102,7 @@ $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
 $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
 $wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout debe ser un valor entero positivo.';
 $wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests debe ser un valor entero >= 0.';
-$wb['pm_ondemand_hint_txt'] = 'Por favor ten en cuenta que debes tener una versión de PHP >= 5.3.9 para poder usar el gestor de procesos \"ondemand\". Si seleccionas \"ondemand\" para una versión de PHP anterior, ¡PHP dejará de funcionar!';
+$wb['pm_ondemand_hint_txt'] = 'Por favor ten en cuenta que debes tener una versión de PHP >= 5.3.9 para poder usar el gestor de procesos \\"ondemand\\". Si seleccionas \\"ondemand\\" para una versión de PHP anterior, ¡PHP dejará de funcionar!';
 $wb['generate_password_txt'] = 'Generar contraseña';
 $wb['repeat_password_txt'] = 'Repetir contraseña';
 $wb['password_mismatch_txt'] = 'Las contraseñas no coinciden.';
diff --git a/interface/web/sites/lib/lang/fi.lng b/interface/web/sites/lib/lang/fi.lng
index 5adab57775..ebf94bc190 100755
--- a/interface/web/sites/lib/lang/fi.lng
+++ b/interface/web/sites/lib/lang/fi.lng
@@ -31,5 +31,5 @@ $wb['Available packages'] = 'Available packages';
 $wb['Installed packages'] = 'Installed packages';
 $wb['Update Packagelist'] = 'Update Packagelist';
 $wb['Subdomain (Vhost)'] = 'Subdomain (Vhost)';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 ?>
diff --git a/interface/web/sites/lib/lang/fi_aps.lng b/interface/web/sites/lib/lang/fi_aps.lng
index cc8dc83588..d78701f272 100644
--- a/interface/web/sites/lib/lang/fi_aps.lng
+++ b/interface/web/sites/lib/lang/fi_aps.lng
@@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.'
 $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.';
 $wb['error_no_database_pw'] = 'You have provided no valid database password.';
 $wb['error_short_database_pw'] = 'Please choose a longer database password.';
-$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.';
-$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.';
-$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.';
-$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".';
-$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".';
-$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".';
-$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".';
-$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".';
+$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.';
+$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.';
+$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.';
+$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".';
+$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".';
+$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".';
+$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".';
+$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".';
 $wb['error_used_location'] = 'The installation path already contains a package installation.';
 $wb['installation_task_txt'] = 'Install planned';
 $wb['installation_error_txt'] = 'Install error';
diff --git a/interface/web/sites/lib/lang/fi_web_childdomain.lng b/interface/web/sites/lib/lang/fi_web_childdomain.lng
index 98c41088a1..5105ba3f2e 100755
--- a/interface/web/sites/lib/lang/fi_web_childdomain.lng
+++ b/interface/web/sites/lib/lang/fi_web_childdomain.lng
@@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag';
 $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
 $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 $wb['backup_interval_txt'] = 'Backup interval';
 $wb['backup_copies_txt'] = 'Number of backup copies';
 $wb['ssl_key_txt'] = 'SSL Key';
diff --git a/interface/web/sites/lib/lang/fi_web_subdomain.lng b/interface/web/sites/lib/lang/fi_web_subdomain.lng
index 7500fb7a61..7fe7103905 100644
--- a/interface/web/sites/lib/lang/fi_web_subdomain.lng
+++ b/interface/web/sites/lib/lang/fi_web_subdomain.lng
@@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag';
 $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
 $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 $wb['http_port_txt'] = 'HTTP Port';
 $wb['https_port_txt'] = 'HTTPS Port';
 $wb['http_port_error_regex'] = 'HTTP Port invalid.';
diff --git a/interface/web/sites/lib/lang/fr.lng b/interface/web/sites/lib/lang/fr.lng
index c914ef002f..9acee9d061 100644
--- a/interface/web/sites/lib/lang/fr.lng
+++ b/interface/web/sites/lib/lang/fr.lng
@@ -31,5 +31,5 @@ $wb['Available packages'] = 'Packages disponibles';
 $wb['Installed packages'] = 'Packages installés';
 $wb['Update Packagelist'] = 'Mise à jour de la liste des packages';
 $wb['Subdomain (Vhost)'] = 'Sous-domaine (Vhost)';
-$wb['error_proxy_requires_url'] = 'Type de redirection \"proxy\" nécessite une URL comme chemin de redirection.';
+$wb['error_proxy_requires_url'] = 'Type de redirection \\"proxy\\" nécessite une URL comme chemin de redirection.';
 ?>
diff --git a/interface/web/sites/lib/lang/fr_aps.lng b/interface/web/sites/lib/lang/fr_aps.lng
index 0f067e78bc..6beef9939f 100644
--- a/interface/web/sites/lib/lang/fr_aps.lng
+++ b/interface/web/sites/lib/lang/fr_aps.lng
@@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'Le dossier d’installation choisi est invalid
 $wb['error_license_agreement'] = 'Avant de continuer, vous devez accepter les conditions d’utilisation (licence).';
 $wb['error_no_database_pw'] = 'Vous n’avez pas renseigné de mot de passe BDD valide.';
 $wb['error_short_database_pw'] = 'Veuillez saisir un mot de passe BDD plus long.';
-$wb['error_no_value_for'] = 'Le champ \"%s\" ne peut pas être vide.';
-$wb['error_short_value_for'] = 'Le champ \"%s\" nécessite une valeur plus longue.';
-$wb['error_long_value_for'] = 'Le champ \"%s\" nécessite une valeur plus courte.';
-$wb['error_inv_value_for'] = 'Vous avez saisi une valeur invalide pour le champ \"%s\".';
-$wb['error_inv_email_for'] = 'L’adresse e-mail saisie pour le champ \"%s\" est invalide.';
-$wb['error_inv_domain_for'] = 'Le domaine saisi pour le champ \"%s\" est invalide.';
-$wb['error_inv_integer_for'] = 'Le nombre saisi pour le champ \"%s\" est invalide.';
-$wb['error_inv_float_for'] = 'La décimale saisie pour le champ \"%s\" est invalide.';
+$wb['error_no_value_for'] = 'Le champ \\"%s\\" ne peut pas être vide.';
+$wb['error_short_value_for'] = 'Le champ \\"%s\\" nécessite une valeur plus longue.';
+$wb['error_long_value_for'] = 'Le champ \\"%s\\" nécessite une valeur plus courte.';
+$wb['error_inv_value_for'] = 'Vous avez saisi une valeur invalide pour le champ \\"%s\\".';
+$wb['error_inv_email_for'] = 'L’adresse e-mail saisie pour le champ \\"%s\\" est invalide.';
+$wb['error_inv_domain_for'] = 'Le domaine saisi pour le champ \\"%s\\" est invalide.';
+$wb['error_inv_integer_for'] = 'Le nombre saisi pour le champ \\"%s\\" est invalide.';
+$wb['error_inv_float_for'] = 'La décimale saisie pour le champ \\"%s\\" est invalide.';
 $wb['error_used_location'] = 'Le chemin de destination contient déjà un package d’installation.';
 $wb['installation_task_txt'] = 'Installation prévue';
 $wb['installation_error_txt'] = 'Erreur d’installation';
diff --git a/interface/web/sites/lib/lang/fr_web_childdomain.lng b/interface/web/sites/lib/lang/fr_web_childdomain.lng
index f33ca58f09..1be206e122 100644
--- a/interface/web/sites/lib/lang/fr_web_childdomain.lng
+++ b/interface/web/sites/lib/lang/fr_web_childdomain.lng
@@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'Aucun flag';
 $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
 $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 $wb['backup_interval_txt'] = 'Backup interval';
 $wb['backup_copies_txt'] = 'Number of backup copies';
 $wb['ssl_key_txt'] = 'SSL Key';
diff --git a/interface/web/sites/lib/lang/fr_web_subdomain.lng b/interface/web/sites/lib/lang/fr_web_subdomain.lng
index 6dfc914a0a..957dfbfed6 100644
--- a/interface/web/sites/lib/lang/fr_web_subdomain.lng
+++ b/interface/web/sites/lib/lang/fr_web_subdomain.lng
@@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'Aucun flag';
 $wb['domain_error_wildcard'] = 'Les sous-domaines joker ne sont pas autorisés.';
 $wb['proxy_directives_txt'] = 'Directives pour les Proxy';
 $wb['available_proxy_directive_snippets_txt'] = 'Directives pour les Proxy Snippets disponibles :';
-$wb['error_proxy_requires_url'] = 'Les redirections de type \"proxy\" nécessitent une URL comme chemin de redirection.';
+$wb['error_proxy_requires_url'] = 'Les redirections de type \\"proxy\\" nécessitent une URL comme chemin de redirection.';
 $wb['http_port_txt'] = 'HTTP Port';
 $wb['https_port_txt'] = 'HTTPS Port';
 $wb['http_port_error_regex'] = 'HTTP Port invalid.';
diff --git a/interface/web/sites/lib/lang/hr.lng b/interface/web/sites/lib/lang/hr.lng
index 4c53c89843..b6af1225ac 100644
--- a/interface/web/sites/lib/lang/hr.lng
+++ b/interface/web/sites/lib/lang/hr.lng
@@ -30,6 +30,6 @@ $wb['Available packages'] = 'Dostupni paketi';
 $wb['Installed packages'] = 'Instalirani paketi';
 $wb['Update Packagelist'] = 'Osvježi listu paketa';
 $wb['Subdomain (Vhost)'] = 'Poddomena (Vhost)';
-$wb['error_proxy_requires_url'] = '\"proxy\" redirekcija zahtijeva URL za redirekcijsku putanju.';
+$wb['error_proxy_requires_url'] = '\\"proxy\\" redirekcija zahtijeva URL za redirekcijsku putanju.';
 $wb['Domain'] = 'Domain';
 ?>
diff --git a/interface/web/sites/lib/lang/hr_aps.lng b/interface/web/sites/lib/lang/hr_aps.lng
index 6169342e71..79d31cf7fa 100644
--- a/interface/web/sites/lib/lang/hr_aps.lng
+++ b/interface/web/sites/lib/lang/hr_aps.lng
@@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.'
 $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.';
 $wb['error_no_database_pw'] = 'You have provided no valid database password.';
 $wb['error_short_database_pw'] = 'Please choose a longer database password.';
-$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.';
-$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.';
-$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.';
-$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".';
-$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".';
-$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".';
-$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".';
-$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".';
+$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.';
+$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.';
+$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.';
+$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".';
+$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".';
+$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".';
+$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".';
+$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".';
 $wb['error_used_location'] = 'The installation path already contains a package installation.';
 $wb['installation_task_txt'] = 'Instalacija u postupku';
 $wb['installation_error_txt'] = 'Instalacijska greška';
diff --git a/interface/web/sites/lib/lang/hr_web_childdomain.lng b/interface/web/sites/lib/lang/hr_web_childdomain.lng
index f0e69f24f8..99df0d2fdf 100644
--- a/interface/web/sites/lib/lang/hr_web_childdomain.lng
+++ b/interface/web/sites/lib/lang/hr_web_childdomain.lng
@@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'Bez markiranja';
 $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
 $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 $wb['backup_interval_txt'] = 'Backup interval';
 $wb['backup_copies_txt'] = 'Number of backup copies';
 $wb['ssl_key_txt'] = 'SSL Key';
diff --git a/interface/web/sites/lib/lang/hr_web_subdomain.lng b/interface/web/sites/lib/lang/hr_web_subdomain.lng
index 18fe4630a4..76d7f39571 100644
--- a/interface/web/sites/lib/lang/hr_web_subdomain.lng
+++ b/interface/web/sites/lib/lang/hr_web_subdomain.lng
@@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'Bez markiranja';
 $wb['domain_error_wildcard'] = 'Wildcard poddomene nisu dozvoljene.';
 $wb['proxy_directives_txt'] = 'Proxy direktive';
 $wb['available_proxy_directive_snippets_txt'] = 'Dostupne proxy direktive:';
-$wb['error_proxy_requires_url'] = 'Vrsta redirekcije \"proxy\" zahtjeva URL kao redirekcijsku putanju.';
+$wb['error_proxy_requires_url'] = 'Vrsta redirekcije \\"proxy\\" zahtjeva URL kao redirekcijsku putanju.';
 $wb['http_port_txt'] = 'HTTP Port';
 $wb['https_port_txt'] = 'HTTPS Port';
 $wb['http_port_error_regex'] = 'HTTP Port invalid.';
diff --git a/interface/web/sites/lib/lang/hu.lng b/interface/web/sites/lib/lang/hu.lng
index 1a3e31d3f9..2c156a4775 100644
--- a/interface/web/sites/lib/lang/hu.lng
+++ b/interface/web/sites/lib/lang/hu.lng
@@ -31,5 +31,5 @@ $wb['Available packages'] = 'Available packages';
 $wb['Installed packages'] = 'Installed packages';
 $wb['Update Packagelist'] = 'Update Packagelist';
 $wb['Subdomain (Vhost)'] = 'Subdomain (Vhost)';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 ?>
diff --git a/interface/web/sites/lib/lang/hu_aps.lng b/interface/web/sites/lib/lang/hu_aps.lng
index 9330a1fb45..88708732df 100644
--- a/interface/web/sites/lib/lang/hu_aps.lng
+++ b/interface/web/sites/lib/lang/hu_aps.lng
@@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.'
 $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.';
 $wb['error_no_database_pw'] = 'You have provided no valid database password.';
 $wb['error_short_database_pw'] = 'Please choose a longer database password.';
-$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.';
-$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.';
-$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.';
-$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".';
-$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".';
-$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".';
-$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".';
-$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".';
+$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.';
+$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.';
+$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.';
+$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".';
+$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".';
+$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".';
+$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".';
+$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".';
 $wb['error_used_location'] = 'The installation path already contains a package installation.';
 $wb['installation_task_txt'] = 'Install planned';
 $wb['installation_error_txt'] = 'Install error';
diff --git a/interface/web/sites/lib/lang/hu_web_childdomain.lng b/interface/web/sites/lib/lang/hu_web_childdomain.lng
index aa554d4bc4..5ac19c3bbc 100644
--- a/interface/web/sites/lib/lang/hu_web_childdomain.lng
+++ b/interface/web/sites/lib/lang/hu_web_childdomain.lng
@@ -42,7 +42,7 @@ $wb['redirect_error_regex'] = 'Invalid redirect path. Valid redirects are for ex
 $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
 $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 $wb['backup_interval_txt'] = 'Backup interval';
 $wb['backup_copies_txt'] = 'Number of backup copies';
 $wb['ssl_key_txt'] = 'SSL Key';
diff --git a/interface/web/sites/lib/lang/hu_web_subdomain.lng b/interface/web/sites/lib/lang/hu_web_subdomain.lng
index 79c9ecc700..84874b22c5 100644
--- a/interface/web/sites/lib/lang/hu_web_subdomain.lng
+++ b/interface/web/sites/lib/lang/hu_web_subdomain.lng
@@ -42,7 +42,7 @@ $wb['redirect_error_regex'] = 'Invalid redirect path. Valid redirects are for ex
 $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
 $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 $wb['http_port_txt'] = 'HTTP Port';
 $wb['https_port_txt'] = 'HTTPS Port';
 $wb['http_port_error_regex'] = 'HTTP Port invalid.';
diff --git a/interface/web/sites/lib/lang/id.lng b/interface/web/sites/lib/lang/id.lng
index 4fdae1813f..c8510df6cb 100644
--- a/interface/web/sites/lib/lang/id.lng
+++ b/interface/web/sites/lib/lang/id.lng
@@ -31,5 +31,5 @@ $wb['Available packages'] = 'Available packages';
 $wb['Installed packages'] = 'Installed packages';
 $wb['Update Packagelist'] = 'Update Packagelist';
 $wb['Subdomain (Vhost)'] = 'Subdomain (Vhost)';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 ?>
diff --git a/interface/web/sites/lib/lang/id_aps.lng b/interface/web/sites/lib/lang/id_aps.lng
index 6f6d0bced2..b8c9af2152 100644
--- a/interface/web/sites/lib/lang/id_aps.lng
+++ b/interface/web/sites/lib/lang/id_aps.lng
@@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.'
 $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.';
 $wb['error_no_database_pw'] = 'You have provided no valid database password.';
 $wb['error_short_database_pw'] = 'Please choose a longer database password.';
-$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.';
-$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.';
-$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.';
-$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".';
-$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".';
-$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".';
-$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".';
-$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".';
+$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.';
+$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.';
+$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.';
+$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".';
+$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".';
+$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".';
+$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".';
+$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".';
 $wb['error_used_location'] = 'The installation path already contains a package installation.';
 $wb['installation_task_txt'] = 'Install planned';
 $wb['installation_error_txt'] = 'Install error';
diff --git a/interface/web/sites/lib/lang/id_web_childdomain.lng b/interface/web/sites/lib/lang/id_web_childdomain.lng
index 2b97dc223a..d5fd9711a4 100644
--- a/interface/web/sites/lib/lang/id_web_childdomain.lng
+++ b/interface/web/sites/lib/lang/id_web_childdomain.lng
@@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag';
 $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
 $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 $wb['backup_interval_txt'] = 'Backup interval';
 $wb['backup_copies_txt'] = 'Number of backup copies';
 $wb['ssl_key_txt'] = 'SSL Key';
diff --git a/interface/web/sites/lib/lang/id_web_subdomain.lng b/interface/web/sites/lib/lang/id_web_subdomain.lng
index 7f51be8e44..c2d007e693 100644
--- a/interface/web/sites/lib/lang/id_web_subdomain.lng
+++ b/interface/web/sites/lib/lang/id_web_subdomain.lng
@@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag';
 $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
 $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 $wb['http_port_txt'] = 'HTTP Port';
 $wb['https_port_txt'] = 'HTTPS Port';
 $wb['http_port_error_regex'] = 'HTTP Port invalid.';
diff --git a/interface/web/sites/lib/lang/it.lng b/interface/web/sites/lib/lang/it.lng
index 2237545be9..77473bd0f8 100644
--- a/interface/web/sites/lib/lang/it.lng
+++ b/interface/web/sites/lib/lang/it.lng
@@ -31,5 +31,5 @@ $wb['Available packages'] = 'Pacchetti disponibili';
 $wb['Installed packages'] = 'Pacchetti  Installati';
 $wb['Update Packagelist'] = 'Aggiorna Elenco Pacchetti';
 $wb['Subdomain (Vhost)'] = 'Sottodominio (Vhost)';
-$wb['error_proxy_requires_url'] = 'Tipo reinderizzamento \"proxy\" richiede una URL come percorso del reinderizzamento.';
+$wb['error_proxy_requires_url'] = 'Tipo reinderizzamento \\"proxy\\" richiede una URL come percorso del reinderizzamento.';
 ?>
diff --git a/interface/web/sites/lib/lang/it_aps.lng b/interface/web/sites/lib/lang/it_aps.lng
index ade7808616..0a6365f98f 100644
--- a/interface/web/sites/lib/lang/it_aps.lng
+++ b/interface/web/sites/lib/lang/it_aps.lng
@@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'La cartella di installazione fornita non è va
 $wb['error_license_agreement'] = 'Per poter proseguire è necessario che prendi visione ed accetti l accordi di licenza.';
 $wb['error_no_database_pw'] = 'La password fornita non è valida.';
 $wb['error_short_database_pw'] = 'Per favore scegli una password di database più lunga.';
-$wb['error_no_value_for'] = 'Il campo \"%s\" non può essere vuoto.';
-$wb['error_short_value_for'] = 'Il campo \"%s\" richiede un valore immesso più lungo.';
-$wb['error_long_value_for'] = 'Il campo \"%s\" richiede un valore immesso più corto.';
-$wb['error_inv_value_for'] = 'Hai inserito un valore non valido per il campo \"%s\".';
-$wb['error_inv_email_for'] = 'Hai inserito un indirizzo email non valido per il campo \"%s\".';
-$wb['error_inv_domain_for'] = 'Hai inserito un dominio non valido per il campo \"%s\".';
-$wb['error_inv_integer_for'] = 'Hai inserito un numero non valido per il campo  \"%s\".';
-$wb['error_inv_float_for'] = 'Hai inserito un numero di floating point non valido per il campo \"%s\".';
+$wb['error_no_value_for'] = 'Il campo \\"%s\\" non può essere vuoto.';
+$wb['error_short_value_for'] = 'Il campo \\"%s\\" richiede un valore immesso più lungo.';
+$wb['error_long_value_for'] = 'Il campo \\"%s\\" richiede un valore immesso più corto.';
+$wb['error_inv_value_for'] = 'Hai inserito un valore non valido per il campo \\"%s\\".';
+$wb['error_inv_email_for'] = 'Hai inserito un indirizzo email non valido per il campo \\"%s\\".';
+$wb['error_inv_domain_for'] = 'Hai inserito un dominio non valido per il campo \\"%s\\".';
+$wb['error_inv_integer_for'] = 'Hai inserito un numero non valido per il campo  \\"%s\\".';
+$wb['error_inv_float_for'] = 'Hai inserito un numero di floating point non valido per il campo \\"%s\\".';
 $wb['error_used_location'] = 'L installazione della patch  contiene già un pacchetto di installazione.';
 $wb['installation_task_txt'] = 'Installazione pianificata';
 $wb['installation_error_txt'] = 'Errore di installazione';
diff --git a/interface/web/sites/lib/lang/it_web_childdomain.lng b/interface/web/sites/lib/lang/it_web_childdomain.lng
index edd32aa6db..3a214e298e 100644
--- a/interface/web/sites/lib/lang/it_web_childdomain.lng
+++ b/interface/web/sites/lib/lang/it_web_childdomain.lng
@@ -43,7 +43,7 @@ $wb['no_flag_txt'] = 'No flag';
 $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
 $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 $wb['backup_interval_txt'] = 'Backup interval';
 $wb['backup_copies_txt'] = 'Number of backup copies';
 $wb['ssl_key_txt'] = 'SSL Key';
diff --git a/interface/web/sites/lib/lang/it_web_subdomain.lng b/interface/web/sites/lib/lang/it_web_subdomain.lng
index 0019304914..956b5c3be0 100644
--- a/interface/web/sites/lib/lang/it_web_subdomain.lng
+++ b/interface/web/sites/lib/lang/it_web_subdomain.lng
@@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag';
 $wb['domain_error_wildcard'] = 'Non sono ammessi caratteri jolly per i sottodomini.';
 $wb['proxy_directives_txt'] = 'Direttive Proxy';
 $wb['available_proxy_directive_snippets_txt'] = 'Snippets Direttive Proxy disponibili:';
-$wb['error_proxy_requires_url'] = 'Tipo reinderizzamento \"proxy\" richiede una URL come percorso di reinderizzamento.';
+$wb['error_proxy_requires_url'] = 'Tipo reinderizzamento \\"proxy\\" richiede una URL come percorso di reinderizzamento.';
 $wb['http_port_txt'] = 'HTTP Port';
 $wb['https_port_txt'] = 'HTTPS Port';
 $wb['http_port_error_regex'] = 'HTTP Port invalid.';
diff --git a/interface/web/sites/lib/lang/ja.lng b/interface/web/sites/lib/lang/ja.lng
index 470ec2baec..920064bc5e 100644
--- a/interface/web/sites/lib/lang/ja.lng
+++ b/interface/web/sites/lib/lang/ja.lng
@@ -31,5 +31,5 @@ $wb['Available packages'] = 'Available packages';
 $wb['Installed packages'] = 'Installed packages';
 $wb['Update Packagelist'] = 'Update Packagelist';
 $wb['Subdomain (Vhost)'] = 'Subdomain (Vhost)';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 ?>
diff --git a/interface/web/sites/lib/lang/ja_aps.lng b/interface/web/sites/lib/lang/ja_aps.lng
index 91f8ad102c..dc6b22edf7 100644
--- a/interface/web/sites/lib/lang/ja_aps.lng
+++ b/interface/web/sites/lib/lang/ja_aps.lng
@@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.'
 $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.';
 $wb['error_no_database_pw'] = 'You have provided no valid database password.';
 $wb['error_short_database_pw'] = 'Please choose a longer database password.';
-$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.';
-$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.';
-$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.';
-$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".';
-$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".';
-$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".';
-$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".';
-$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".';
+$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.';
+$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.';
+$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.';
+$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".';
+$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".';
+$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".';
+$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".';
+$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".';
 $wb['error_used_location'] = 'The installation path already contains a package installation.';
 $wb['installation_task_txt'] = 'Install planned';
 $wb['installation_error_txt'] = 'Install error';
diff --git a/interface/web/sites/lib/lang/ja_web_childdomain.lng b/interface/web/sites/lib/lang/ja_web_childdomain.lng
index fe885c8c3e..d59d7bbda5 100644
--- a/interface/web/sites/lib/lang/ja_web_childdomain.lng
+++ b/interface/web/sites/lib/lang/ja_web_childdomain.lng
@@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag';
 $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
 $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 $wb['backup_interval_txt'] = 'Backup interval';
 $wb['backup_copies_txt'] = 'Number of backup copies';
 $wb['ssl_key_txt'] = 'SSL Key';
diff --git a/interface/web/sites/lib/lang/ja_web_subdomain.lng b/interface/web/sites/lib/lang/ja_web_subdomain.lng
index f77c98444e..5eb45907ea 100644
--- a/interface/web/sites/lib/lang/ja_web_subdomain.lng
+++ b/interface/web/sites/lib/lang/ja_web_subdomain.lng
@@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag';
 $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
 $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 $wb['http_port_txt'] = 'HTTP Port';
 $wb['https_port_txt'] = 'HTTPS Port';
 $wb['http_port_error_regex'] = 'HTTP Port invalid.';
diff --git a/interface/web/sites/lib/lang/nl.lng b/interface/web/sites/lib/lang/nl.lng
index 89a4caa109..8e07a1844a 100644
--- a/interface/web/sites/lib/lang/nl.lng
+++ b/interface/web/sites/lib/lang/nl.lng
@@ -31,5 +31,5 @@ $wb['Available packages'] = 'Beschikbare pakketten';
 $wb['Installed packages'] = 'Geïnstalleerde pakketten';
 $wb['Update Packagelist'] = 'Pakkettenlijst bijwerken';
 $wb['Subdomain (Vhost)'] = 'Subdomein (Vhost)';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 ?>
diff --git a/interface/web/sites/lib/lang/nl_aps.lng b/interface/web/sites/lib/lang/nl_aps.lng
index dfd852dcd0..c0adacee99 100644
--- a/interface/web/sites/lib/lang/nl_aps.lng
+++ b/interface/web/sites/lib/lang/nl_aps.lng
@@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.'
 $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.';
 $wb['error_no_database_pw'] = 'You have provided no valid database password.';
 $wb['error_short_database_pw'] = 'Please choose a longer database password.';
-$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.';
-$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.';
-$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.';
-$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".';
-$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".';
-$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".';
-$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".';
-$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".';
+$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.';
+$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.';
+$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.';
+$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".';
+$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".';
+$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".';
+$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".';
+$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".';
 $wb['error_used_location'] = 'The installation path already contains a package installation.';
 $wb['installation_task_txt'] = 'Install planned';
 $wb['installation_error_txt'] = 'Install error';
diff --git a/interface/web/sites/lib/lang/nl_web_childdomain.lng b/interface/web/sites/lib/lang/nl_web_childdomain.lng
index 4c5b3dc2ad..e99616ce11 100644
--- a/interface/web/sites/lib/lang/nl_web_childdomain.lng
+++ b/interface/web/sites/lib/lang/nl_web_childdomain.lng
@@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag';
 $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
 $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 $wb['backup_interval_txt'] = 'Backup interval';
 $wb['backup_copies_txt'] = 'Number of backup copies';
 $wb['ssl_key_txt'] = 'SSL Key';
diff --git a/interface/web/sites/lib/lang/nl_web_subdomain.lng b/interface/web/sites/lib/lang/nl_web_subdomain.lng
index c644d8113d..2f4412afba 100644
--- a/interface/web/sites/lib/lang/nl_web_subdomain.lng
+++ b/interface/web/sites/lib/lang/nl_web_subdomain.lng
@@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'Geen flag';
 $wb['domain_error_wildcard'] = 'Wildcard subdomeinen zijn niet toegestaan.';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
 $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 $wb['http_port_txt'] = 'HTTP Port';
 $wb['https_port_txt'] = 'HTTPS Port';
 $wb['http_port_error_regex'] = 'HTTP Port niet correct.';
diff --git a/interface/web/sites/lib/lang/pl_aps.lng b/interface/web/sites/lib/lang/pl_aps.lng
index 398c74e4c0..c17bbca532 100644
--- a/interface/web/sites/lib/lang/pl_aps.lng
+++ b/interface/web/sites/lib/lang/pl_aps.lng
@@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'Instalacja w podanym folderze jest niemożliwa
 $wb['error_license_agreement'] = 'Aby kontynuować musisz zaakceptować umowę licencyjną.';
 $wb['error_no_database_pw'] = 'Nie podałeś prawidłowego hasła do bazy danych.';
 $wb['error_short_database_pw'] = 'Wybierz dłuższe hasło do bazy.';
-$wb['error_no_value_for'] = 'Pole \"%s\" nie może być puste';
-$wb['error_short_value_for'] = 'Pole \"%s\" wymaga dłuższej wartości';
-$wb['error_long_value_for'] = 'Pole  \"%s\" wymaga krótszej wartości';
-$wb['error_inv_value_for'] = 'Wprowadziłeś nieprawidłową wartość w polu \"%s\"';
-$wb['error_inv_email_for'] = 'Wprowadziłeś nieprawidłowy adres email w polu \"%s\"';
-$wb['error_inv_domain_for'] = 'Wprowadziłeś nieprawidłową domenę w polu \"%s\"';
-$wb['error_inv_integer_for'] = 'Wprowadziłeś nieprawidłową liczbę w polu \"%s\"';
-$wb['error_inv_float_for'] = 'Wprowadziłeś nieprawidłową liczbę w polu \"%s\"';
+$wb['error_no_value_for'] = 'Pole \\"%s\\" nie może być puste';
+$wb['error_short_value_for'] = 'Pole \\"%s\\" wymaga dłuższej wartości';
+$wb['error_long_value_for'] = 'Pole  \\"%s\\" wymaga krótszej wartości';
+$wb['error_inv_value_for'] = 'Wprowadziłeś nieprawidłową wartość w polu \\"%s\\"';
+$wb['error_inv_email_for'] = 'Wprowadziłeś nieprawidłowy adres email w polu \\"%s\\"';
+$wb['error_inv_domain_for'] = 'Wprowadziłeś nieprawidłową domenę w polu \\"%s\\"';
+$wb['error_inv_integer_for'] = 'Wprowadziłeś nieprawidłową liczbę w polu \\"%s\\"';
+$wb['error_inv_float_for'] = 'Wprowadziłeś nieprawidłową liczbę w polu \\"%s\\"';
 $wb['error_used_location'] = 'Ścieżka instalacji zawiera już zainstalowany pakiet.';
 $wb['installation_task_txt'] = 'Instalacja planowana';
 $wb['installation_error_txt'] = 'BÅ‚Ä…d instalacji';
diff --git a/interface/web/sites/lib/lang/pt.lng b/interface/web/sites/lib/lang/pt.lng
index 6cd9798fa1..c1fca015b8 100644
--- a/interface/web/sites/lib/lang/pt.lng
+++ b/interface/web/sites/lib/lang/pt.lng
@@ -31,5 +31,5 @@ $wb['Available packages'] = 'Available packages';
 $wb['Installed packages'] = 'Installed packages';
 $wb['Update Packagelist'] = 'Update Packagelist';
 $wb['Subdomain (Vhost)'] = 'Subdomain (Vhost)';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 ?>
diff --git a/interface/web/sites/lib/lang/pt_aps.lng b/interface/web/sites/lib/lang/pt_aps.lng
index 33c4e87266..c17ef00914 100644
--- a/interface/web/sites/lib/lang/pt_aps.lng
+++ b/interface/web/sites/lib/lang/pt_aps.lng
@@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.'
 $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.';
 $wb['error_no_database_pw'] = 'You have provided no valid database password.';
 $wb['error_short_database_pw'] = 'Please choose a longer database password.';
-$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.';
-$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.';
-$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.';
-$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".';
-$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".';
-$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".';
-$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".';
-$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".';
+$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.';
+$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.';
+$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.';
+$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".';
+$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".';
+$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".';
+$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".';
+$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".';
 $wb['error_used_location'] = 'The installation path already contains a package installation.';
 $wb['installation_task_txt'] = 'Install planned';
 $wb['installation_error_txt'] = 'Install error';
diff --git a/interface/web/sites/lib/lang/pt_web_childdomain.lng b/interface/web/sites/lib/lang/pt_web_childdomain.lng
index 688af77bd2..4cbc032c19 100644
--- a/interface/web/sites/lib/lang/pt_web_childdomain.lng
+++ b/interface/web/sites/lib/lang/pt_web_childdomain.lng
@@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag';
 $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
 $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 $wb['backup_interval_txt'] = 'Backup interval';
 $wb['backup_copies_txt'] = 'Number of backup copies';
 $wb['ssl_key_txt'] = 'SSL Key';
diff --git a/interface/web/sites/lib/lang/pt_web_subdomain.lng b/interface/web/sites/lib/lang/pt_web_subdomain.lng
index 8f2fd70e46..8a4f1440fd 100644
--- a/interface/web/sites/lib/lang/pt_web_subdomain.lng
+++ b/interface/web/sites/lib/lang/pt_web_subdomain.lng
@@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag';
 $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
 $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 $wb['http_port_txt'] = 'HTTP Port';
 $wb['https_port_txt'] = 'HTTPS Port';
 $wb['http_port_error_regex'] = 'HTTP Port invalid.';
diff --git a/interface/web/sites/lib/lang/ro.lng b/interface/web/sites/lib/lang/ro.lng
index 418585ea55..f674e91b80 100644
--- a/interface/web/sites/lib/lang/ro.lng
+++ b/interface/web/sites/lib/lang/ro.lng
@@ -31,5 +31,5 @@ $wb['Available packages'] = 'Available packages';
 $wb['Installed packages'] = 'Installed packages';
 $wb['Update Packagelist'] = 'Update Packagelist';
 $wb['Subdomain (Vhost)'] = 'Subdomain (Vhost)';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 ?>
diff --git a/interface/web/sites/lib/lang/ro_aps.lng b/interface/web/sites/lib/lang/ro_aps.lng
index 3ff130f57e..881c146a4d 100644
--- a/interface/web/sites/lib/lang/ro_aps.lng
+++ b/interface/web/sites/lib/lang/ro_aps.lng
@@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.'
 $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.';
 $wb['error_no_database_pw'] = 'You have provided no valid database password.';
 $wb['error_short_database_pw'] = 'Please choose a longer database password.';
-$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.';
-$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.';
-$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.';
-$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".';
-$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".';
-$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".';
-$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".';
-$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".';
+$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.';
+$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.';
+$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.';
+$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".';
+$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".';
+$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".';
+$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".';
+$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".';
 $wb['error_used_location'] = 'The installation path already contains a package installation.';
 $wb['installation_task_txt'] = 'Install planned';
 $wb['installation_error_txt'] = 'Install error';
diff --git a/interface/web/sites/lib/lang/ro_web_childdomain.lng b/interface/web/sites/lib/lang/ro_web_childdomain.lng
index 5f56786510..30f83e7283 100644
--- a/interface/web/sites/lib/lang/ro_web_childdomain.lng
+++ b/interface/web/sites/lib/lang/ro_web_childdomain.lng
@@ -43,7 +43,7 @@ $wb['no_flag_txt'] = 'No flag';
 $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
 $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 $wb['backup_interval_txt'] = 'Backup interval';
 $wb['backup_copies_txt'] = 'Number of backup copies';
 $wb['ssl_key_txt'] = 'SSL Key';
diff --git a/interface/web/sites/lib/lang/ro_web_subdomain.lng b/interface/web/sites/lib/lang/ro_web_subdomain.lng
index 436acc4cf9..f36685be8a 100644
--- a/interface/web/sites/lib/lang/ro_web_subdomain.lng
+++ b/interface/web/sites/lib/lang/ro_web_subdomain.lng
@@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag';
 $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
 $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 $wb['http_port_txt'] = 'HTTP Port';
 $wb['https_port_txt'] = 'HTTPS Port';
 $wb['http_port_error_regex'] = 'HTTP Port invalid.';
diff --git a/interface/web/sites/lib/lang/ru.lng b/interface/web/sites/lib/lang/ru.lng
index 6316c21d17..dbf2926043 100644
--- a/interface/web/sites/lib/lang/ru.lng
+++ b/interface/web/sites/lib/lang/ru.lng
@@ -31,5 +31,5 @@ $wb['Available packages'] = 'Доступные пакеты';
 $wb['Installed packages'] = 'Установленные пакеты';
 $wb['Update Packagelist'] = 'Обновить список пакетов';
 $wb['Subdomain (Vhost)'] = 'Поддомен (Vhost)';
-$wb['error_proxy_requires_url'] = 'Тип редиректа \"proxy\" требует URL в качестве пути перенаправления.';
+$wb['error_proxy_requires_url'] = 'Тип редиректа \\"proxy\\" требует URL в качестве пути перенаправления.';
 ?>
diff --git a/interface/web/sites/lib/lang/ru_aps.lng b/interface/web/sites/lib/lang/ru_aps.lng
index 3dd4ad0a8a..d2225358c1 100644
--- a/interface/web/sites/lib/lang/ru_aps.lng
+++ b/interface/web/sites/lib/lang/ru_aps.lng
@@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'Вы  указали некорректную
 $wb['error_license_agreement'] = 'Для продолжения нужно принять лицензионное соглашение.';
 $wb['error_no_database_pw'] = 'Вы предоставили не правильный пароль базы данных.';
 $wb['error_short_database_pw'] = 'Пожалуйста, выберите более длинный пароль базы данных.';
-$wb['error_no_value_for'] = 'Поле \"%s\" не может быть пустым.';
-$wb['error_short_value_for'] = 'Поле \"%s\" требует более длинного входного значения.';
-$wb['error_long_value_for'] = 'Поле \"%s\"требует более короткого входного значения.';
-$wb['error_inv_value_for'] = 'Вы ввели неверное значение для поля \"%s\".';
-$wb['error_inv_email_for'] = 'Вы ввели некорректный адрес электронной почты для поля \"%s\".';
-$wb['error_inv_domain_for'] = 'Вы ввели некорректный домен для поля \"%s\".';
-$wb['error_inv_integer_for'] = 'Вы ввели некорректное число для поля \"%s\".';
-$wb['error_inv_float_for'] = 'Вы ввели некорректное число с плавающей точкой для поля \"%s\".';
+$wb['error_no_value_for'] = 'Поле \\"%s\\" не может быть пустым.';
+$wb['error_short_value_for'] = 'Поле \\"%s\\" требует более длинного входного значения.';
+$wb['error_long_value_for'] = 'Поле \\"%s\\"требует более короткого входного значения.';
+$wb['error_inv_value_for'] = 'Вы ввели неверное значение для поля \\"%s\\".';
+$wb['error_inv_email_for'] = 'Вы ввели некорректный адрес электронной почты для поля \\"%s\\".';
+$wb['error_inv_domain_for'] = 'Вы ввели некорректный домен для поля \\"%s\\".';
+$wb['error_inv_integer_for'] = 'Вы ввели некорректное число для поля \\"%s\\".';
+$wb['error_inv_float_for'] = 'Вы ввели некорректное число с плавающей точкой для поля \\"%s\\".';
 $wb['error_used_location'] = 'Путь установки уже содержит установочный пакет.';
 $wb['installation_task_txt'] = 'Запланирована установка';
 $wb['installation_error_txt'] = 'Ошибка установки';
diff --git a/interface/web/sites/lib/lang/ru_database.lng b/interface/web/sites/lib/lang/ru_database.lng
index b931b715f2..0f5eaf3180 100644
--- a/interface/web/sites/lib/lang/ru_database.lng
+++ b/interface/web/sites/lib/lang/ru_database.lng
@@ -13,7 +13,7 @@ $wb['database_name_error_unique'] = 'Имя базы данных уже сущ
 $wb['database_name_error_regex'] = 'Неверное имя базы данных. Имя базы данных может содержать только следующие символы: a-z, A-Z, 0-9 и нижний пробел _. Длина: 2 - 64 символа.';
 $wb['database_user_error_empty'] = 'Логин базы данных пустой';
 $wb['database_user_error_unique'] = 'Такой пользователь базы данных уже существует. Что бы получить уникальное имя, например, сложите название сайта и ваше имя.';
-$wb['database_user_error_regex'] = 'Некорректный логин для базы данных. Логин может содержать только следующие символы: a-z, A-Z, 0-9 и \"_\". Длина: 2 - 16 символов.';
+$wb['database_user_error_regex'] = 'Некорректный логин для базы данных. Логин может содержать только следующие символы: a-z, A-Z, 0-9 и \\"_\\". Длина: 2 - 16 символов.';
 $wb['limit_database_txt'] = 'Достигнуто максимальное количество БД.';
 $wb['database_name_change_txt'] = 'Имя базы данных не может быть изменено.';
 $wb['database_charset_change_txt'] = 'Кодировка базы данных не может быть изменена';
diff --git a/interface/web/sites/lib/lang/ru_database_user.lng b/interface/web/sites/lib/lang/ru_database_user.lng
index df927317ca..7de99a11dc 100644
--- a/interface/web/sites/lib/lang/ru_database_user.lng
+++ b/interface/web/sites/lib/lang/ru_database_user.lng
@@ -6,7 +6,7 @@ $wb['client_txt'] = 'Клиент';
 $wb['active_txt'] = 'Активно';
 $wb['database_user_error_empty'] = 'Логин базы данных пустой';
 $wb['database_user_error_unique'] = 'Такой пользователь базы данных уже существует. Что бы получить уникальное имя, например, сложите название сайта и ваше имя.';
-$wb['database_user_error_regex'] = 'Некорректный логин для базы данных. Логин может содержать только следующие символы: a-z, A-Z, 0-9 и \"_\". Длина: 2 - 16 символов.';
+$wb['database_user_error_regex'] = 'Некорректный логин для базы данных. Логин может содержать только следующие символы: a-z, A-Z, 0-9 и \\"_\\". Длина: 2 - 16 символов.';
 $wb['database_user_error_len'] = 'Логин для базы данных - {user} - cлишком длинный. Максимальная длина логина - 16 символов';
 $wb['btn_save_txt'] = 'Сохранить';
 $wb['btn_cancel_txt'] = 'Отменить';
diff --git a/interface/web/sites/lib/lang/ru_web_childdomain.lng b/interface/web/sites/lib/lang/ru_web_childdomain.lng
index 49905e77ea..af71669a47 100644
--- a/interface/web/sites/lib/lang/ru_web_childdomain.lng
+++ b/interface/web/sites/lib/lang/ru_web_childdomain.lng
@@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'Нет флага';
 $wb['domain_error_wildcard'] = 'Wildcard поддомены не допускаются.';
 $wb['proxy_directives_txt'] = 'Директивы прокси';
 $wb['available_proxy_directive_snippets_txt'] = 'Доступные заготовки директив Proxy:';
-$wb['error_proxy_requires_url'] = 'Тип редиректа \"proxy\" требует URL в качестве пути перенаправления.';
+$wb['error_proxy_requires_url'] = 'Тип редиректа \\"proxy\\" требует URL в качестве пути перенаправления.';
 $wb['backup_interval_txt'] = 'Интервал резервного копирования';
 $wb['backup_copies_txt'] = 'Количество резервных копий';
 $wb['ssl_key_txt'] = 'SSL-ключ';
diff --git a/interface/web/sites/lib/lang/ru_web_subdomain.lng b/interface/web/sites/lib/lang/ru_web_subdomain.lng
index 46203a1815..376c789430 100644
--- a/interface/web/sites/lib/lang/ru_web_subdomain.lng
+++ b/interface/web/sites/lib/lang/ru_web_subdomain.lng
@@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'Нет флага';
 $wb['domain_error_wildcard'] = 'Wildcard-поддомены не допускаются.';
 $wb['proxy_directives_txt'] = 'Директивы прокси';
 $wb['available_proxy_directive_snippets_txt'] = 'Доступные заготовки директив Proxy:';
-$wb['error_proxy_requires_url'] = 'Тип редиректа \"proxy\" требует URL в качестве пути перенаправления.';
+$wb['error_proxy_requires_url'] = 'Тип редиректа \\"proxy\\" требует URL в качестве пути перенаправления.';
 $wb['http_port_txt'] = 'Порт HTTP';
 $wb['https_port_txt'] = 'Порт HTTPS';
 $wb['http_port_error_regex'] = 'Некорректный порт HTTP.';
diff --git a/interface/web/sites/lib/lang/se.lng b/interface/web/sites/lib/lang/se.lng
index a63670545c..6b44cdcf7c 100644
--- a/interface/web/sites/lib/lang/se.lng
+++ b/interface/web/sites/lib/lang/se.lng
@@ -31,5 +31,5 @@ $wb['Available packages'] = 'Tillgängliga paket';
 $wb['Installed packages'] = 'Installerade paket';
 $wb['Update Packagelist'] = 'Uppdatera paketlista';
 $wb['Subdomain (Vhost)'] = 'Underdomän (Vhost)';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 ?>
diff --git a/interface/web/sites/lib/lang/se_aps.lng b/interface/web/sites/lib/lang/se_aps.lng
index f399880dea..3b32095d62 100644
--- a/interface/web/sites/lib/lang/se_aps.lng
+++ b/interface/web/sites/lib/lang/se_aps.lng
@@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.'
 $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.';
 $wb['error_no_database_pw'] = 'You have provided no valid database password.';
 $wb['error_short_database_pw'] = 'Please choose a longer database password.';
-$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.';
-$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.';
-$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.';
-$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".';
-$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".';
-$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".';
-$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".';
-$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".';
+$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.';
+$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.';
+$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.';
+$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".';
+$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".';
+$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".';
+$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".';
+$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".';
 $wb['error_used_location'] = 'The installation path already contains a package installation.';
 $wb['installation_task_txt'] = 'Installation planerad';
 $wb['installation_error_txt'] = 'Installationsfel';
diff --git a/interface/web/sites/lib/lang/se_web_childdomain.lng b/interface/web/sites/lib/lang/se_web_childdomain.lng
index 52fba020aa..eff6791c65 100644
--- a/interface/web/sites/lib/lang/se_web_childdomain.lng
+++ b/interface/web/sites/lib/lang/se_web_childdomain.lng
@@ -43,7 +43,7 @@ $wb['no_flag_txt'] = 'No flag';
 $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
 $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 $wb['backup_interval_txt'] = 'Backup interval';
 $wb['backup_copies_txt'] = 'Number of backup copies';
 $wb['ssl_key_txt'] = 'SSL Key';
diff --git a/interface/web/sites/lib/lang/se_web_subdomain.lng b/interface/web/sites/lib/lang/se_web_subdomain.lng
index a2d73c012d..ec784641e8 100644
--- a/interface/web/sites/lib/lang/se_web_subdomain.lng
+++ b/interface/web/sites/lib/lang/se_web_subdomain.lng
@@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'Ingan flagga';
 $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
 $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 $wb['http_port_txt'] = 'HTTP Port';
 $wb['https_port_txt'] = 'HTTPS Port';
 $wb['http_port_error_regex'] = 'HTTP Port invalid.';
diff --git a/interface/web/sites/lib/lang/sk.lng b/interface/web/sites/lib/lang/sk.lng
index 401ad2c65d..fabf52fda0 100644
--- a/interface/web/sites/lib/lang/sk.lng
+++ b/interface/web/sites/lib/lang/sk.lng
@@ -31,5 +31,5 @@ $wb['Available packages'] = 'Available packages';
 $wb['Installed packages'] = 'Installed packages';
 $wb['Update Packagelist'] = 'Update Packagelist';
 $wb['Subdomain (Vhost)'] = 'Subdomain (Vhost)';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 ?>
diff --git a/interface/web/sites/lib/lang/sk_aps.lng b/interface/web/sites/lib/lang/sk_aps.lng
index 2b3dc9a0ff..d6e6c7f4ca 100644
--- a/interface/web/sites/lib/lang/sk_aps.lng
+++ b/interface/web/sites/lib/lang/sk_aps.lng
@@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.'
 $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.';
 $wb['error_no_database_pw'] = 'You have provided no valid database password.';
 $wb['error_short_database_pw'] = 'Please choose a longer database password.';
-$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.';
-$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.';
-$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.';
-$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".';
-$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".';
-$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".';
-$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".';
-$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".';
+$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.';
+$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.';
+$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.';
+$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".';
+$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".';
+$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".';
+$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".';
+$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".';
 $wb['error_used_location'] = 'The installation path already contains a package installation.';
 $wb['installation_task_txt'] = 'Install planned';
 $wb['installation_error_txt'] = 'Install error';
diff --git a/interface/web/sites/lib/lang/sk_web_childdomain.lng b/interface/web/sites/lib/lang/sk_web_childdomain.lng
index c91bee49ac..e0d26667bc 100644
--- a/interface/web/sites/lib/lang/sk_web_childdomain.lng
+++ b/interface/web/sites/lib/lang/sk_web_childdomain.lng
@@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag';
 $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
 $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 $wb['backup_interval_txt'] = 'Backup interval';
 $wb['backup_copies_txt'] = 'Number of backup copies';
 $wb['ssl_key_txt'] = 'SSL Key';
diff --git a/interface/web/sites/lib/lang/sk_web_subdomain.lng b/interface/web/sites/lib/lang/sk_web_subdomain.lng
index d44bb27bd6..f6bcffd901 100644
--- a/interface/web/sites/lib/lang/sk_web_subdomain.lng
+++ b/interface/web/sites/lib/lang/sk_web_subdomain.lng
@@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag';
 $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
 $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 $wb['http_port_txt'] = 'HTTP Port';
 $wb['https_port_txt'] = 'HTTPS Port';
 $wb['http_port_error_regex'] = 'HTTP Port invalid.';
diff --git a/interface/web/sites/lib/lang/tr.lng b/interface/web/sites/lib/lang/tr.lng
index 4f8620c34a..d0570f6c12 100644
--- a/interface/web/sites/lib/lang/tr.lng
+++ b/interface/web/sites/lib/lang/tr.lng
@@ -31,5 +31,5 @@ $wb['Available packages'] = 'Kullanılabilecek Paketler';
 $wb['Installed packages'] = 'Yüklü Paketler';
 $wb['Update Packagelist'] = 'Güncelleme Paketi Listesi';
 $wb['Subdomain (Vhost)'] = 'Alt alan adı (SSunucu)';
-$wb['error_proxy_requires_url'] = '\"Vekil Sunucu\" yönlendirme tipi için, yönlendirilecek yolu gösteren bir İnternet adresi gereklidir.';
+$wb['error_proxy_requires_url'] = '\\"Vekil Sunucu\\" yönlendirme tipi için, yönlendirilecek yolu gösteren bir İnternet adresi gereklidir.';
 ?>
diff --git a/interface/web/sites/lib/lang/tr_aps.lng b/interface/web/sites/lib/lang/tr_aps.lng
index f0eea59cba..1c6ccd49a6 100644
--- a/interface/web/sites/lib/lang/tr_aps.lng
+++ b/interface/web/sites/lib/lang/tr_aps.lng
@@ -40,14 +40,14 @@ $wb['error_inv_main_location'] = 'Yazdığınız yükleme konumunu klasörü ge
 $wb['error_license_agreement'] = 'Devam etmek için lisans anlaşmasını onaylamalısınız.';
 $wb['error_no_database_pw'] = 'Yazdığınız veritabanı parolası geçersiz.';
 $wb['error_short_database_pw'] = 'Lütfen daha uzun bir veritabanı parolası yazın.';
-$wb['error_no_value_for'] = '\"%s\" alanı boş olamaz.';
-$wb['error_short_value_for'] = '\"%s\" alanına daha uzun bir değer yazılmalıdır.';
-$wb['error_long_value_for'] = '\"%s\" alanına daha kısa bir değer yazılmalıdır.';
-$wb['error_inv_value_for'] = '\"%s\" alanına yazılan değer geçersiz.';
-$wb['error_inv_email_for'] = '\"%s\" alanına yazılan e-posta adresi geçersiz.';
-$wb['error_inv_domain_for'] = '\"%s\" alanına yazılan alan adı geçersiz.';
-$wb['error_inv_integer_for'] = '\"%s\" alanına yazılan sayı geçersiz.';
-$wb['error_inv_float_for'] = '\"%s\" alanına yazılan küsuratlı sayı geçersiz.';
+$wb['error_no_value_for'] = '\\"%s\\" alanı boş olamaz.';
+$wb['error_short_value_for'] = '\\"%s\\" alanına daha uzun bir değer yazılmalıdır.';
+$wb['error_long_value_for'] = '\\"%s\\" alanına daha kısa bir değer yazılmalıdır.';
+$wb['error_inv_value_for'] = '\\"%s\\" alanına yazılan değer geçersiz.';
+$wb['error_inv_email_for'] = '\\"%s\\" alanına yazılan e-posta adresi geçersiz.';
+$wb['error_inv_domain_for'] = '\\"%s\\" alanına yazılan alan adı geçersiz.';
+$wb['error_inv_integer_for'] = '\\"%s\\" alanına yazılan sayı geçersiz.';
+$wb['error_inv_float_for'] = '\\"%s\\" alanına yazılan küsuratlı sayı geçersiz.';
 $wb['error_used_location'] = 'Yükleme yoluna daha önce yüklenmiş bir paket var.';
 $wb['installation_task_txt'] = 'Yükleme planlandı';
 $wb['installation_error_txt'] = 'Yükleme hatası';
diff --git a/interface/web/sites/lib/lang/tr_web_childdomain.lng b/interface/web/sites/lib/lang/tr_web_childdomain.lng
index 5d68e809b3..e11c6a92b5 100644
--- a/interface/web/sites/lib/lang/tr_web_childdomain.lng
+++ b/interface/web/sites/lib/lang/tr_web_childdomain.lng
@@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag';
 $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
 $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 $wb['backup_interval_txt'] = 'Backup interval';
 $wb['backup_copies_txt'] = 'Number of backup copies';
 $wb['ssl_key_txt'] = 'SSL Key';
diff --git a/interface/web/sites/lib/lang/tr_web_subdomain.lng b/interface/web/sites/lib/lang/tr_web_subdomain.lng
index c6e28bc6fa..188b257589 100644
--- a/interface/web/sites/lib/lang/tr_web_subdomain.lng
+++ b/interface/web/sites/lib/lang/tr_web_subdomain.lng
@@ -42,7 +42,7 @@ $wb['no_redirect_txt'] = 'Yönlendirme yok';
 $wb['no_flag_txt'] = 'Ä°ÅŸaret yok';
 $wb['proxy_directives_txt'] = 'Vekil Sunucu Yönergeleri';
 $wb['available_proxy_directive_snippets_txt'] = 'Kullanılabilecek Vekil Sunucu Yönerge Parçaları:';
-$wb['error_proxy_requires_url'] = '\"Vekil Sunucu\" yönlendirme tipi için, yönlendirilecek yolu gösteren bir İnternet adresi gereklidir.';
+$wb['error_proxy_requires_url'] = '\\"Vekil Sunucu\\" yönlendirme tipi için, yönlendirilecek yolu gösteren bir İnternet adresi gereklidir.';
 $wb['http_port_txt'] = 'HTTP Port';
 $wb['https_port_txt'] = 'HTTPS Port';
 $wb['http_port_error_regex'] = 'HTTP Port invalid.';
diff --git a/interface/web/vm/lib/lang/dk_openvz_template.lng b/interface/web/vm/lib/lang/dk_openvz_template.lng
index 7016f41a67..9de4a6fd92 100644
--- a/interface/web/vm/lib/lang/dk_openvz_template.lng
+++ b/interface/web/vm/lib/lang/dk_openvz_template.lng
@@ -44,7 +44,7 @@ $wb['tcpsndbuf_desc_txt'] = 'Total størrelse af TCP send buffere.';
 $wb['tcprcvbuf_desc_txt'] = 'Total størrelse af TCP modtage buffere.';
 $wb['othersockbuf_desc_txt'] = 'Total størrelse af UNIX-domæne sokel buffere, UDP og andre datagram protokoller send buffere.';
 $wb['dgramrcvbuf_desc_txt'] = 'Modtage buffere af UDP og andre datagram protokoller.';
-$wb['oomguarpages_desc_txt'] = 'Den garanterede mængde hukommelse for det tilfælde hukommelsen er \"over-booked\" (out-of-memory kill guarantee), i sider.';
+$wb['oomguarpages_desc_txt'] = 'Den garanterede mængde hukommelse for det tilfælde hukommelsen er \\"over-booked\\" (out-of-memory kill guarantee), i sider.';
 $wb['privvmpages_desc_txt'] = 'Hukommelses grænse tildeling, i sider.';
 $wb['lockedpages_desc_txt'] = 'Proces-sider uden tiladelse til at blive byttet ud (pages locked by mlock(2)).';
 $wb['shmpages_desc_txt'] = 'Total størrelse af delt hukommelse (IPC, delt anonyme afbildninger og tmpfs objekter), i sider.';
diff --git a/interface/web/vm/lib/lang/es_openvz_template.lng b/interface/web/vm/lib/lang/es_openvz_template.lng
index 1868240d3e..1abd562ed5 100644
--- a/interface/web/vm/lib/lang/es_openvz_template.lng
+++ b/interface/web/vm/lib/lang/es_openvz_template.lng
@@ -44,7 +44,7 @@ $wb['tcpsndbuf_desc_txt'] = 'Tamaño total de los buffers de envío TCP.';
 $wb['tcprcvbuf_desc_txt'] = 'Tamaño total de los buffers de recepción TCP.';
 $wb['othersockbuf_desc_txt'] = 'Tamaño total de buffers de socket UNIX-domain, UDP y otros protocolos de envío para buffers de datagramas.';
 $wb['dgramrcvbuf_desc_txt'] = 'Recibir buffers de UDP y otros protocolos de datagrama.';
-$wb['oomguarpages_desc_txt'] = 'La cantidad de memoria garantizada en caso de que la memoria \"over-booked\" (garantizado para out-of-memory kill), en las páginas.';
+$wb['oomguarpages_desc_txt'] = 'La cantidad de memoria garantizada en caso de que la memoria \\"over-booked\\" (garantizado para out-of-memory kill), en las páginas.';
 $wb['privvmpages_desc_txt'] = 'Límite de asignación de memoria en las páginas.';
 $wb['lockedpages_desc_txt'] = 'Páginas de procesos sin permisos para sacar del swap (páginas bloqueadas por mlock(2)).';
 $wb['shmpages_desc_txt'] = 'Tamaño total de memoria compatida (IPC, asignaciones anónimas compartidas y objetos tmpfs), en las páginas.';
diff --git a/interface/web/vm/lib/lang/tr_openvz_template.lng b/interface/web/vm/lib/lang/tr_openvz_template.lng
index 2621212862..fb1452e885 100644
--- a/interface/web/vm/lib/lang/tr_openvz_template.lng
+++ b/interface/web/vm/lib/lang/tr_openvz_template.lng
@@ -44,7 +44,7 @@ $wb['tcpsndbuf_desc_txt'] = 'TCP gönderme arabelleğinin toplam boyutu.';
 $wb['tcprcvbuf_desc_txt'] = 'TCP alma arabelleÄŸinin toplam boyutu.';
 $wb['othersockbuf_desc_txt'] = 'UNIX alan adı soket arabelleğinin toplam boyutu, UDP ve diğer datagram iletişim kuralları gönderme ara bellekleri.';
 $wb['dgramrcvbuf_desc_txt'] = 'UDP ve diğer datagram iletişim kuralları alma ara bellekleri.';
-$wb['oomguarpages_desc_txt'] = 'Bellek sayfası cinsinden, bellek taşması durumlarında garanti edilen bellek miktarı\" (bellek bitti boşaltma garantisi).';
+$wb['oomguarpages_desc_txt'] = 'Bellek sayfası cinsinden, bellek taşması durumlarında garanti edilen bellek miktarı\\" (bellek bitti boşaltma garantisi).';
 $wb['privvmpages_desc_txt'] = 'Bellek sayfası cinsinden ayrılacak bellek sınırı.';
 $wb['lockedpages_desc_txt'] = 'İşlem sayfaları takasına izin verilmez (mlock(2) ile kilitlenmiş sayfalar).';
 $wb['shmpages_desc_txt'] = 'Bellek sayfası cinsinden, paylaşılan belleğin toplam boyutu (IPC, paylaşılan anonim haritalama ve tmpfs nesneleri).';
-- 
GitLab


From 9f745c2b9d37a496900e44565c2b47ce48802655 Mon Sep 17 00:00:00 2001
From: Herman van Rink <rink@initfour.nl>
Date: Tue, 30 Jul 2019 22:16:39 +0200
Subject: [PATCH 045/242] Improve comments

---
 interface/lib/classes/remote.d/mail.inc.php | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/interface/lib/classes/remote.d/mail.inc.php b/interface/lib/classes/remote.d/mail.inc.php
index bda7e861ed..477743dfc3 100644
--- a/interface/lib/classes/remote.d/mail.inc.php
+++ b/interface/lib/classes/remote.d/mail.inc.php
@@ -710,7 +710,7 @@ class remoting_mail extends remoting {
 		return $app->remoting_lib->getDataRecord($primary_id);
 	}
 
-	//* czarna lista e-mail
+	//* Add a new spamfilter blacklist
 	public function mail_spamfilter_blacklist_add($session_id, $client_id, $params)
 	{
 		if (!$this->checkPerm($session_id, 'mail_spamfilter_blacklist_add'))
@@ -810,7 +810,7 @@ class remoting_mail extends remoting {
 		return $app->remoting_lib->getDataRecord($primary_id);
 	}
 
-	//* polityki filtrów spamu e-mail
+	//* Add a spam policy
 	public function mail_policy_add($session_id, $client_id, $params)
 	{
 		if (!$this->checkPerm($session_id, 'mail_policy_add'))
@@ -860,7 +860,7 @@ class remoting_mail extends remoting {
 		return $app->remoting_lib->getDataRecord($primary_id);
 	}
 
-	//* fetchmail
+	//* Add fetchmail
 	public function mail_fetchmail_add($session_id, $client_id, $params)
 	{
 		if (!$this->checkPerm($session_id, 'mail_fetchmail_add'))
@@ -960,7 +960,7 @@ class remoting_mail extends remoting {
 		return $app->remoting_lib->getDataRecord($primary_id);
 	}
 
-	//* wpisy białej listy
+	//* Add blacklist
 	public function mail_blacklist_add($session_id, $client_id, $params)
 	{
 		if (!$this->checkPerm($session_id, 'mail_blacklist_add'))
@@ -1010,7 +1010,7 @@ class remoting_mail extends remoting {
 		return $app->remoting_lib->getDataRecord($primary_id);
 	}
 
-	//* wpisy filtrow e-mail
+	//* Add mail filter
 	public function mail_filter_add($session_id, $client_id, $params)
 	{
 		if (!$this->checkPerm($session_id, 'mail_filter_add'))
-- 
GitLab


From c830e6e714737f97d149d93d63dd8c745d89ffe7 Mon Sep 17 00:00:00 2001
From: Herman van Rink <rink@initfour.nl>
Date: Tue, 30 Jul 2019 22:17:15 +0200
Subject: [PATCH 046/242] codestyle

---
 interface/lib/classes/validate_autoresponder.inc.php | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/interface/lib/classes/validate_autoresponder.inc.php b/interface/lib/classes/validate_autoresponder.inc.php
index 8fefa33b30..25db68bdd9 100755
--- a/interface/lib/classes/validate_autoresponder.inc.php
+++ b/interface/lib/classes/validate_autoresponder.inc.php
@@ -53,8 +53,8 @@ class validate_autoresponder extends validate_datetime
 		
 		// Parse date
 		$datetimeformat = (isset($app->remoting_lib) ? $app->remoting_lib->datetimeformat : $app->tform->datetimeformat);
-		$start_date_array = date_parse_from_format($datetimeformat,$start_date);
-		$end_date_array = date_parse_from_format($datetimeformat,$field_value);
+		$start_date_array = date_parse_from_format($datetimeformat, $start_date);
+		$end_date_array = date_parse_from_format($datetimeformat, $field_value);
 		
 		//calculate timestamps
 		$start_date_tstamp = mktime($start_date_array['hour'], $start_date_array['minute'], $start_date_array['second'], $start_date_array['month'], $start_date_array['day'], $start_date_array['year']);
-- 
GitLab


From c7c1671b0a180bfdf9fb032f8e23484541af5958 Mon Sep 17 00:00:00 2001
From: Herman van Rink <rink@initfour.nl>
Date: Tue, 30 Jul 2019 22:18:02 +0200
Subject: [PATCH 047/242] Add extra field explanation

---
 remoting_client/API-docs/mail_spamfilter_blacklist_add.html | 2 +-
 remoting_client/API-docs/mail_spamfilter_user_add.html      | 2 +-
 remoting_client/examples/mail_spamfilter_blacklist_add.php  | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/remoting_client/API-docs/mail_spamfilter_blacklist_add.html b/remoting_client/API-docs/mail_spamfilter_blacklist_add.html
index c45c5d60f0..198f7b6b23 100644
--- a/remoting_client/API-docs/mail_spamfilter_blacklist_add.html
+++ b/remoting_client/API-docs/mail_spamfilter_blacklist_add.html
@@ -21,7 +21,7 @@
 <p class="headgrp">Parameters (in <span class="var">$params</span>): </p>
 <p class="margin"> server_id&nbsp;&nbsp;(<span class="paratype">int(11)</span>)</p>
 <p class="margin"> wb&nbsp;&nbsp;(<span class="paratype">enum('W','B')</span>)</p>
-<p class="margin"> rid&nbsp;&nbsp;(<span class="paratype">int(11)</span>)</p>
+<p class="margin"> rid&nbsp;&nbsp;(<span class="paratype">int(11)</span>) An ID from the spamfilter_users table.</p>
 <p class="margin"> email&nbsp;&nbsp;(<span class="paratype">varchar(255)</span>)</p>
 <p class="margin"> priority&nbsp;&nbsp;(<span class="paratype">tinyint(3)</span>)</p>
 <p class="margin"> active&nbsp;&nbsp;(<span class="paratype">enum('n','y')</span>)</p>
diff --git a/remoting_client/API-docs/mail_spamfilter_user_add.html b/remoting_client/API-docs/mail_spamfilter_user_add.html
index c23a9dbd42..888c74ab70 100644
--- a/remoting_client/API-docs/mail_spamfilter_user_add.html
+++ b/remoting_client/API-docs/mail_spamfilter_user_add.html
@@ -24,7 +24,7 @@
 <p class="margin"> policy_id&nbsp;&nbsp;(<span class="paratype">int(11)</span>)</p>
 <p class="margin"> email&nbsp;&nbsp;(<span class="paratype">varchar(255)</span>)</p>
 <p class="margin"> fullname&nbsp;&nbsp;(<span class="paratype">varchar(64)</span>)</p>
-<p class="margin"> local&nbsp;&nbsp;(<span class="paratype">varchar(1)</span>)</p>
+<p class="margin"> local&nbsp;&nbsp;(<span class="paratype">varchar(1)</span>) 'Y' for a local account.</p>
 <p class="headgrp">Output: </p> 
 <p class="margin"> Returns the ID of the newly added spamfilter user.</p>
 <!--<b>Output:</b> 
diff --git a/remoting_client/examples/mail_spamfilter_blacklist_add.php b/remoting_client/examples/mail_spamfilter_blacklist_add.php
index d5768e2536..b5d8a7f80a 100644
--- a/remoting_client/examples/mail_spamfilter_blacklist_add.php
+++ b/remoting_client/examples/mail_spamfilter_blacklist_add.php
@@ -19,7 +19,7 @@ try {
 	$params = array(
 		'server_id' => 1,
 		'wb' => 'B',
-		'rid' => '',
+		'rid' => '', // Fill in an ID from the spamfilter_users table.
 		'email' => 'hmmnoe@test.int',
 		'priority' => 1,
 		'active' => 'y'
-- 
GitLab


From 96416c321a42f10d1abdd10a5e00137a1f45bb1d Mon Sep 17 00:00:00 2001
From: Herman van Rink <rink@initfour.nl>
Date: Tue, 30 Jul 2019 22:20:00 +0200
Subject: [PATCH 048/242] Add missing autoresponder_subject field in api docs

---
 remoting_client/API-docs/mail_user_add.html | 1 +
 remoting_client/examples/mail_user_add.php  | 1 +
 2 files changed, 2 insertions(+)

diff --git a/remoting_client/API-docs/mail_user_add.html b/remoting_client/API-docs/mail_user_add.html
index b88ec706cc..88ab952e6a 100644
--- a/remoting_client/API-docs/mail_user_add.html
+++ b/remoting_client/API-docs/mail_user_add.html
@@ -36,6 +36,7 @@
 <p class="margin"> autoresponder_start_date&nbsp;&nbsp;(<span class="paratype">datetime</span>)</p>
 <p class="margin"> autoresponder_end_date&nbsp;&nbsp;(<span class="paratype">datetime</span>)</p>
 <p class="margin"> autoresponder_text&nbsp;&nbsp;(<span class="paratype">mediumtext</span>)</p>
+<p class="margin"> autoresponder_subject&nbsp;&nbsp;(<span class="paratype">varchar(255)</span>)</p>
 <p class="margin"> move_junk&nbsp;&nbsp;(<span class="paratype">enum('n','y')</span>)</p>
 <p class="margin"> custom_mailfilter&nbsp;&nbsp;(<span class="paratype">mediumtext</span>)</p>
 <p class="margin"> postfix&nbsp;&nbsp;(<span class="paratype">enum('n','y')</span>)</p>
diff --git a/remoting_client/examples/mail_user_add.php b/remoting_client/examples/mail_user_add.php
index 3b7d240ecc..80a7358cf9 100644
--- a/remoting_client/examples/mail_user_add.php
+++ b/remoting_client/examples/mail_user_add.php
@@ -32,6 +32,7 @@ try {
 		'autoresponder_start_date' => '',
 		'autoresponder_end_date' => '',
 		'autoresponder_text' => 'hallo',
+		'autoresponder_subject' => 'Out of office reply',
 		'move_junk' => 'n',
 		'custom_mailfilter' => 'spam',
 		'postfix' => 'n',
-- 
GitLab


From 0efec5c38a5d51634a2ea07437ae97bffa1fb274 Mon Sep 17 00:00:00 2001
From: Herman van Rink <rink@initfour.nl>
Date: Fri, 2 Aug 2019 22:31:51 +0200
Subject: [PATCH 049/242] Wrap long query for readability

---
 install/tpl/mysql-virtual_policy_greylist.cf.master | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/install/tpl/mysql-virtual_policy_greylist.cf.master b/install/tpl/mysql-virtual_policy_greylist.cf.master
index 00f504e082..55378b29ca 100644
--- a/install/tpl/mysql-virtual_policy_greylist.cf.master
+++ b/install/tpl/mysql-virtual_policy_greylist.cf.master
@@ -1,6 +1,10 @@
 user = {mysql_server_ispconfig_user}
 password = {mysql_server_ispconfig_password}
 dbname = {mysql_server_database}
-query = SELECT 'greylisting' FROM (SELECT `greylisting`, 1 as `prio` FROM `mail_user` WHERE `server_id` = {server_id} AND `email` = '%s' UNION SELECT `greylisting`, 2 as `prio` FROM `mail_forwarding` WHERE `server_id` = {server_id} AND `source` = '%s' UNION SELECT `greylisting`, 3 as `prio` FROM `mail_forwarding` WHERE `server_id` = {server_id} AND `source` = '@%d' ORDER BY `prio` ASC LIMIT 1) as rules WHERE rules.greylisting = 'y'
+query = SELECT 'greylisting' FROM
+  (SELECT `greylisting`, 1 as `prio` FROM `mail_user` WHERE `server_id` = {server_id} AND `email` = '%s' 
+  UNION SELECT `greylisting`, 2 as `prio` FROM `mail_forwarding` WHERE `server_id` = {server_id} AND `source` = '%s' 
+  UNION SELECT `greylisting`, 3 as `prio` FROM `mail_forwarding` WHERE `server_id` = {server_id} AND `source` = '@%d' ORDER BY `prio` ASC LIMIT 1) as rules 
+  WHERE rules.greylisting = 'y'
 
-hosts = {mysql_server_ip}
\ No newline at end of file
+hosts = {mysql_server_ip}
-- 
GitLab


From 1f46e8a23e2975631c6d8e924aedb2098fcaf481 Mon Sep 17 00:00:00 2001
From: Ales Seifert <ales@web4people.com.au>
Date: Thu, 5 Sep 2019 09:19:47 +0200
Subject: [PATCH 050/242] updated to recognize newer Centos 7 releases & to
 recognize recent openSUSE even if not supported

---
 server/lib/classes/monitor_tools.inc.php | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/server/lib/classes/monitor_tools.inc.php b/server/lib/classes/monitor_tools.inc.php
index fefdbcd681..b2bd5ede30 100644
--- a/server/lib/classes/monitor_tools.inc.php
+++ b/server/lib/classes/monitor_tools.inc.php
@@ -249,6 +249,14 @@ class monitor_tools {
 			$distver = '11.2';
 			$distid = 'opensuse112';
 			$distbaseid = 'opensuse';
+		} elseif(stristr(file_get_contents('/etc/os-release'), 'opensuse')) {
+			$content = file_get_contents('/etc/os-release');
+            preg_match_all('/NAME=\"([\w ]+)\"/m', $content, $name);
+            preg_match_all('/VERSION_ID=\"([0-9]{1,2})\.?([0-9]{0,2})\.?([0-9]*).$/m', $content, $version);
+			$distname = is_array($name) ? $name[1][0] : 'openSUSE';
+			$distver = is_array($version) ? implode('.', array_filter([$version[1][0],$version[2][0],$version[3][0]],'strlen')) : 'Unknown';
+			$distid = 'opensuse112';
+			$distbaseid = 'opensuse';
 		}  else {
 			$distname = 'openSUSE';
 			$distver = 'Unknown';
@@ -299,8 +307,9 @@ class monitor_tools {
 			$distid = 'centos53';
 			$distbaseid = 'fedora';
 		} elseif(stristr($content, 'CentOS Linux release 7')) {
+			preg_match_all('/([0-9]{1,2})\.?([0-9]{0,2})\.?([0-9]*)/', $content, $version);
 			$distname = 'CentOS';
-			$distver = 'Unknown';
+			$distver = is_array($version)? implode('.', array_filter([$version[1][0],$version[2][0],$version[3][0]],'strlen')) :'Unknown';
 			$distbaseid = 'fedora';
 			$var=explode(" ", $content);
 			$var=explode(".", $var[3]);
-- 
GitLab


From 8f4ed6281c06fcb677a981c74e62560a9573f18f Mon Sep 17 00:00:00 2001
From: Herman van Rink <rink@initfour.nl>
Date: Sat, 20 Oct 2018 21:52:03 +0200
Subject: [PATCH 051/242] typo

---
 install/dist/tpl/gentoo/amavisd-ispconfig.conf.master | 2 +-
 install/tpl/amavisd_user_config.master                | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/install/dist/tpl/gentoo/amavisd-ispconfig.conf.master b/install/dist/tpl/gentoo/amavisd-ispconfig.conf.master
index 5e1c8ebba6..7e42c8a362 100644
--- a/install/dist/tpl/gentoo/amavisd-ispconfig.conf.master
+++ b/install/dist/tpl/gentoo/amavisd-ispconfig.conf.master
@@ -67,7 +67,7 @@ $final_spam_destiny = D_DISCARD;
 $final_banned_destiny = D_BOUNCE;
 $final_bad_header_destiny = D_PASS;
 
-# Default settings, we st this very high to not filter aut emails accidently
+# Default settings, we set this very high to not filter out emails accidentally
 $sa_spam_subject_tag = '***SPAM*** ';
 $sa_tag_level_deflt  = 20.0;  # add spam info headers if at, or above that level
 $sa_tag2_level_deflt = 60.0; # add 'spam detected' headers at that level
diff --git a/install/tpl/amavisd_user_config.master b/install/tpl/amavisd_user_config.master
index 2738eac3a9..344ea9a152 100644
--- a/install/tpl/amavisd_user_config.master
+++ b/install/tpl/amavisd_user_config.master
@@ -49,7 +49,7 @@ $final_spam_destiny = D_DISCARD;
 $final_banned_destiny = D_BOUNCE;
 $final_bad_header_destiny = D_PASS;
 
-# Default settings, we st this very high to not filter aut emails accidently
+# Default settings, we set this very high to not filter out emails accidentally
 $sa_spam_subject_tag = '***SPAM*** ';
 $sa_tag_level_deflt  = 20.0;  # add spam info headers if at, or above that level
 $sa_tag2_level_deflt = 60.0; # add 'spam detected' headers at that level
-- 
GitLab


From 9e7a9eb1351f1d4eb23103fb5230caa5725645db Mon Sep 17 00:00:00 2001
From: Herman van Rink <rink@initfour.nl>
Date: Thu, 20 Jun 2019 13:53:49 +0200
Subject: [PATCH 052/242] Improve comments

---
 interface/lib/plugins/mail_user_filter_plugin.inc.php | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/interface/lib/plugins/mail_user_filter_plugin.inc.php b/interface/lib/plugins/mail_user_filter_plugin.inc.php
index 5afd1c0044..26c0b02b83 100644
--- a/interface/lib/plugins/mail_user_filter_plugin.inc.php
+++ b/interface/lib/plugins/mail_user_filter_plugin.inc.php
@@ -55,9 +55,9 @@ class mail_user_filter_plugin {
 
 
 	/*
-		function to create the mail filter rule and insert it into the custom rules
-		field when a new mail filter is added or modified.
-	*/
+	 *	Render the mail filter rule in the desired format and insert it into the custom rules
+	 *	field when a new mail filter is added or modified.
+	 */
 	function mail_user_filter_edit($event_name, $page_form) {
 		global $app, $conf;
 
@@ -91,6 +91,9 @@ class mail_user_filter_plugin {
 
 	}
 
+	/*
+	 *	Remove the rendered filter from custom_mailfilter when a mail_user_filter is deleted
+	 */
 	function mail_user_filter_del($event_name, $page_form) {
 		global $app, $conf;
 
-- 
GitLab


From 92f977d3eec6b87aff217f83a4bd4baf2c899c56 Mon Sep 17 00:00:00 2001
From: Herman van Rink <rink@initfour.nl>
Date: Thu, 20 Jun 2019 15:38:34 +0200
Subject: [PATCH 053/242] Consistent comments, German vs English

Some were already in English, most were still in German.
---
 .../admin/form/directive_snippets.tform.php   |  2 +-
 interface/web/admin/form/firewall.tform.php   |  2 +-
 .../web/admin/form/remote_user.tform.php      |  2 +-
 interface/web/admin/form/server.tform.php     |  4 ++--
 .../web/admin/form/server_config.tform.php    | 22 +++++++++----------
 interface/web/admin/form/server_php.tform.php |  4 ++--
 .../web/admin/form/system_config.tform.php    | 10 ++++-----
 interface/web/client/form/client.tform.php    |  2 +-
 interface/web/client/form/domain.tform.php    |  2 +-
 interface/web/client/form/reseller.tform.php  |  2 +-
 interface/web/dns/form/dns_a.tform.php        |  2 +-
 interface/web/dns/form/dns_aaaa.tform.php     |  2 +-
 interface/web/dns/form/dns_alias.tform.php    |  2 +-
 interface/web/dns/form/dns_cname.tform.php    |  2 +-
 interface/web/dns/form/dns_dkim.tform.php     |  2 +-
 interface/web/dns/form/dns_dmarc.tform.php    |  2 +-
 interface/web/dns/form/dns_ds.tform.php       |  2 +-
 interface/web/dns/form/dns_hinfo.tform.php    |  2 +-
 interface/web/dns/form/dns_loc.tform.php      |  2 +-
 interface/web/dns/form/dns_mx.tform.php       |  2 +-
 interface/web/dns/form/dns_ns.tform.php       |  2 +-
 interface/web/dns/form/dns_ptr.tform.php      |  2 +-
 interface/web/dns/form/dns_rp.tform.php       |  2 +-
 interface/web/dns/form/dns_slave.tform.php    |  2 +-
 interface/web/dns/form/dns_soa.tform.php      |  4 ++--
 interface/web/dns/form/dns_spf.tform.php      |  2 +-
 interface/web/dns/form/dns_srv.tform.php      |  2 +-
 interface/web/dns/form/dns_template.tform.php |  2 +-
 interface/web/dns/form/dns_tlsa.tform.php     |  2 +-
 interface/web/dns/form/dns_txt.tform.php      |  2 +-
 .../web/help/form/support_message.tform.php   |  2 +-
 interface/web/mail/form/mail_alias.tform.php  |  2 +-
 .../web/mail/form/mail_aliasdomain.tform.php  |  2 +-
 .../web/mail/form/mail_blacklist.tform.php    |  2 +-
 .../mail/form/mail_content_filter.tform.php   |  2 +-
 interface/web/mail/form/mail_domain.tform.php |  2 +-
 .../mail/form/mail_domain_catchall.tform.php  |  2 +-
 .../web/mail/form/mail_forward.tform.php      |  2 +-
 interface/web/mail/form/mail_get.tform.php    |  2 +-
 .../mail/form/mail_relay_recipient.tform.php  |  2 +-
 .../web/mail/form/mail_spamfilter.tform.php   |  2 +-
 .../web/mail/form/mail_transport.tform.php    |  2 +-
 interface/web/mail/form/mail_user.tform.php   |  2 +-
 .../web/mail/form/mail_user_filter.tform.php  |  2 +-
 .../web/mail/form/mail_whitelist.tform.php    |  2 +-
 .../mail/form/spamfilter_blacklist.tform.php  |  2 +-
 .../web/mail/form/spamfilter_config.tform.php |  6 ++---
 .../web/mail/form/spamfilter_policy.tform.php |  6 ++---
 .../web/mail/form/spamfilter_users.tform.php  |  2 +-
 .../mail/form/spamfilter_whitelist.tform.php  |  2 +-
 .../mailuser/form/mail_user_filter.tform.php  |  2 +-
 interface/web/sites/form/cron.tform.php       |  2 +-
 interface/web/sites/form/database.tform.php   |  2 +-
 .../web/sites/form/database_user.tform.php    |  2 +-
 interface/web/sites/form/ftp_user.tform.php   |  6 ++---
 interface/web/sites/form/shell_user.tform.php |  4 ++--
 .../web/sites/form/web_childdomain.tform.php  |  4 ++--
 interface/web/sites/form/web_folder.tform.php |  2 +-
 .../web/sites/form/web_folder_user.tform.php  |  2 +-
 .../web/sites/form/web_vhost_domain.tform.php | 12 +++++-----
 .../web/sites/form/webdav_user.tform.php      |  2 +-
 61 files changed, 91 insertions(+), 91 deletions(-)

diff --git a/interface/web/admin/form/directive_snippets.tform.php b/interface/web/admin/form/directive_snippets.tform.php
index 544cb8b855..d451a50795 100644
--- a/interface/web/admin/form/directive_snippets.tform.php
+++ b/interface/web/admin/form/directive_snippets.tform.php
@@ -123,7 +123,7 @@ $form["tabs"]['directive_snippets'] = array (
 			'separator' => ',',
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/admin/form/firewall.tform.php b/interface/web/admin/form/firewall.tform.php
index 75f190b3f0..e136b345be 100644
--- a/interface/web/admin/form/firewall.tform.php
+++ b/interface/web/admin/form/firewall.tform.php
@@ -103,7 +103,7 @@ $form["tabs"]['firewall'] = array (
 			'value'  => array(0 => 'n', 1 => 'y')
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/admin/form/remote_user.tform.php b/interface/web/admin/form/remote_user.tform.php
index 895d9418a9..3b920ccb4a 100644
--- a/interface/web/admin/form/remote_user.tform.php
+++ b/interface/web/admin/form/remote_user.tform.php
@@ -151,7 +151,7 @@ $form["tabs"]['remote_user'] = array (
 		)
 
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/admin/form/server.tform.php b/interface/web/admin/form/server.tform.php
index 95dca6c33b..f205758a8d 100644
--- a/interface/web/admin/form/server.tform.php
+++ b/interface/web/admin/form/server.tform.php
@@ -135,7 +135,7 @@ $form["tabs"]['services'] = array (
 			'value'  => array(0 => 'No', 1 => 'Yes')
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
@@ -160,7 +160,7 @@ $form["tabs"]['config'] = array (
 			'maxlength'	=> ''
 		),
 	##################################
-	# ENDE Datatable fields
+	# END Datatable fields
 	##################################
 	)
 );
diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php
index 1c19d0928b..2663cdd0e0 100644
--- a/interface/web/admin/form/server_config.tform.php
+++ b/interface/web/admin/form/server_config.tform.php
@@ -413,7 +413,7 @@ $form["tabs"]['server'] = array(
 			'value' => array(0 => 'n', 1 => 'y')
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
@@ -699,7 +699,7 @@ $form["tabs"]['mail'] = array(
 			'value' => array(0 => 'n', 1 => 'y')
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
@@ -727,7 +727,7 @@ $form["tabs"]['getmail'] = array(
 			'maxlength' => '255'
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
@@ -1408,7 +1408,7 @@ $form["tabs"]['web'] = array(
 			'maxlength' => '255'
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
@@ -1498,7 +1498,7 @@ $form["tabs"]['dns'] = array(
 			'value' => array(0 => 'n', 1 => 'y')
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
@@ -1615,7 +1615,7 @@ $form["tabs"]['fastcgi'] = array(
 			'maxlength' => '255'
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
@@ -1778,7 +1778,7 @@ $form["tabs"]['jailkit'] = array(
 			'maxlength' => '1000'
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
@@ -1841,7 +1841,7 @@ $form["tabs"]['ufw_firewall'] = array (
 			'value'		=> array('low' => 'low', 'medium' => 'medium', 'high' => 'high')
 		)
 	##################################
-	# ENDE Datatable fields
+	# END Datatable fields
 	##################################
 	)
 );
@@ -1870,7 +1870,7 @@ $form["tabs"]['vlogger'] = array(
 			'maxlength' => '255'
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
@@ -1928,7 +1928,7 @@ $form["tabs"]['cron'] = array(
 			'maxlength' => '255'
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
@@ -1972,7 +1972,7 @@ $form["tabs"]['rescue'] = array(
 			'value' => array(0 => 'n', 1 => 'y')
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/admin/form/server_php.tform.php b/interface/web/admin/form/server_php.tform.php
index 67e54ec6b5..6d443e8d50 100644
--- a/interface/web/admin/form/server_php.tform.php
+++ b/interface/web/admin/form/server_php.tform.php
@@ -174,7 +174,7 @@ $form["tabs"]['php_fastcgi'] = array(
 			'maxlength' => '255'
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
@@ -230,7 +230,7 @@ $form["tabs"]['php_fpm'] = array(
 			'maxlength' => '255'
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/admin/form/system_config.tform.php b/interface/web/admin/form/system_config.tform.php
index 3fe7f0c7e3..cb37cbefdd 100644
--- a/interface/web/admin/form/system_config.tform.php
+++ b/interface/web/admin/form/system_config.tform.php
@@ -211,7 +211,7 @@ $form["tabs"]['sites'] = array (
 			'value'  => array('no' => 'Disabled', 'fast-cgi' => 'Fast-CGI', 'cgi' => 'CGI', 'mod' => 'Mod-PHP', 'suphp' => 'SuPHP', 'php-fpm' => 'PHP-FPM', 'hhvm' => 'HHVM')
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
@@ -397,7 +397,7 @@ $form["tabs"]['mail'] = array (
 			'name'  => 'default_mailserver'
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
@@ -433,7 +433,7 @@ $form["tabs"]['dns'] = array (
 			'name'  => 'default_slave_dnsserver'
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
@@ -463,7 +463,7 @@ $form["tabs"]['domains'] = array (
 			'value'  => ''
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
@@ -735,7 +735,7 @@ $form["tabs"]['misc'] = array (
 			'value'  => array('' => 'None', '1' => 'strength_1', '2' => 'strength_2', '3' => 'strength_3', '4' => 'strength_4', '5' => 'strength_5')
 		)
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/client/form/client.tform.php b/interface/web/client/form/client.tform.php
index 07ca813bf5..5b45ffb972 100644
--- a/interface/web/client/form/client.tform.php
+++ b/interface/web/client/form/client.tform.php
@@ -1518,7 +1518,7 @@ $form["tabs"]['ipaddress'] = array (
 			'separator'	=> ';'
 		),
 	##################################
-	# ENDE Datatable fields
+	# END Datatable fields
 	##################################
 	)
 );
diff --git a/interface/web/client/form/domain.tform.php b/interface/web/client/form/domain.tform.php
index 549617e713..2d3e1dbdd1 100644
--- a/interface/web/client/form/domain.tform.php
+++ b/interface/web/client/form/domain.tform.php
@@ -109,7 +109,7 @@ $form["tabs"]['domain'] = array (
 			'maxlength' => '255'
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/client/form/reseller.tform.php b/interface/web/client/form/reseller.tform.php
index 6231895f28..174c18081d 100644
--- a/interface/web/client/form/reseller.tform.php
+++ b/interface/web/client/form/reseller.tform.php
@@ -1560,7 +1560,7 @@ $form["tabs"]['ipaddress'] = array (
 			'separator'	=> ';'
 		),
 	##################################
-	# ENDE Datatable fields
+	# END Datatable fields
 	##################################
 	)
 );
diff --git a/interface/web/dns/form/dns_a.tform.php b/interface/web/dns/form/dns_a.tform.php
index d9ed197c51..aa00e9cb50 100644
--- a/interface/web/dns/form/dns_a.tform.php
+++ b/interface/web/dns/form/dns_a.tform.php
@@ -159,7 +159,7 @@ $form["tabs"]['dns'] = array (
 			'maxlength' => '10'
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/dns/form/dns_aaaa.tform.php b/interface/web/dns/form/dns_aaaa.tform.php
index 018657b838..05f52ca67b 100644
--- a/interface/web/dns/form/dns_aaaa.tform.php
+++ b/interface/web/dns/form/dns_aaaa.tform.php
@@ -152,7 +152,7 @@ $form["tabs"]['dns'] = array (
 			'maxlength' => '10'
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/dns/form/dns_alias.tform.php b/interface/web/dns/form/dns_alias.tform.php
index 55833b7ec7..0e82ee6da2 100644
--- a/interface/web/dns/form/dns_alias.tform.php
+++ b/interface/web/dns/form/dns_alias.tform.php
@@ -170,7 +170,7 @@ $form["tabs"]['dns'] = array (
 			'maxlength' => '10'
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/dns/form/dns_cname.tform.php b/interface/web/dns/form/dns_cname.tform.php
index d04c1d01af..290e83f54b 100644
--- a/interface/web/dns/form/dns_cname.tform.php
+++ b/interface/web/dns/form/dns_cname.tform.php
@@ -168,7 +168,7 @@ $form["tabs"]['dns'] = array (
 			'maxlength' => '10'
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/dns/form/dns_dkim.tform.php b/interface/web/dns/form/dns_dkim.tform.php
index 550255da46..d47a622b0d 100644
--- a/interface/web/dns/form/dns_dkim.tform.php
+++ b/interface/web/dns/form/dns_dkim.tform.php
@@ -148,7 +148,7 @@ $form["tabs"]['dns'] = array (
 			'maxlength' => '10'
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/dns/form/dns_dmarc.tform.php b/interface/web/dns/form/dns_dmarc.tform.php
index a1ecaa40c8..625fddc98c 100644
--- a/interface/web/dns/form/dns_dmarc.tform.php
+++ b/interface/web/dns/form/dns_dmarc.tform.php
@@ -154,7 +154,7 @@ $form["tabs"]['dns'] = array (
 			'maxlength' => '10'
 		),
 		//#################################
-		// End Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/dns/form/dns_ds.tform.php b/interface/web/dns/form/dns_ds.tform.php
index fe8528f9c8..04ee9a1f0b 100644
--- a/interface/web/dns/form/dns_ds.tform.php
+++ b/interface/web/dns/form/dns_ds.tform.php
@@ -152,7 +152,7 @@ $form["tabs"]['dns'] = array (
 			'maxlength' => '10'
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/dns/form/dns_hinfo.tform.php b/interface/web/dns/form/dns_hinfo.tform.php
index 76c8c79dc0..972a07dff8 100644
--- a/interface/web/dns/form/dns_hinfo.tform.php
+++ b/interface/web/dns/form/dns_hinfo.tform.php
@@ -160,7 +160,7 @@ $form["tabs"]['dns'] = array (
 			'maxlength' => '10'
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/dns/form/dns_loc.tform.php b/interface/web/dns/form/dns_loc.tform.php
index 5749a866b2..37df8b24c9 100644
--- a/interface/web/dns/form/dns_loc.tform.php
+++ b/interface/web/dns/form/dns_loc.tform.php
@@ -157,7 +157,7 @@ $form["tabs"]['dns'] = array (
 			'maxlength' => '10'
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/dns/form/dns_mx.tform.php b/interface/web/dns/form/dns_mx.tform.php
index 9aace37ae7..3681c1a67a 100644
--- a/interface/web/dns/form/dns_mx.tform.php
+++ b/interface/web/dns/form/dns_mx.tform.php
@@ -169,7 +169,7 @@ $form["tabs"]['dns'] = array (
 			'maxlength' => '10'
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/dns/form/dns_ns.tform.php b/interface/web/dns/form/dns_ns.tform.php
index e20a7892bf..fdfb92b54f 100644
--- a/interface/web/dns/form/dns_ns.tform.php
+++ b/interface/web/dns/form/dns_ns.tform.php
@@ -168,7 +168,7 @@ $form["tabs"]['dns'] = array (
 			'maxlength' => '10'
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/dns/form/dns_ptr.tform.php b/interface/web/dns/form/dns_ptr.tform.php
index 4cc0462522..cf50577764 100644
--- a/interface/web/dns/form/dns_ptr.tform.php
+++ b/interface/web/dns/form/dns_ptr.tform.php
@@ -168,7 +168,7 @@ $form["tabs"]['dns'] = array (
 			'maxlength' => '10'
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/dns/form/dns_rp.tform.php b/interface/web/dns/form/dns_rp.tform.php
index 5f4610a45b..fc85ad98e8 100644
--- a/interface/web/dns/form/dns_rp.tform.php
+++ b/interface/web/dns/form/dns_rp.tform.php
@@ -161,7 +161,7 @@ $form["tabs"]['dns'] = array (
 			'maxlength' => '10'
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/dns/form/dns_slave.tform.php b/interface/web/dns/form/dns_slave.tform.php
index 2f287dbfd7..0b4457b700 100644
--- a/interface/web/dns/form/dns_slave.tform.php
+++ b/interface/web/dns/form/dns_slave.tform.php
@@ -144,7 +144,7 @@ $form["tabs"]['dns_slave'] = array (
 			'value'  => array(0 => 'N', 1 => 'Y')
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/dns/form/dns_soa.tform.php b/interface/web/dns/form/dns_soa.tform.php
index 6fab657baa..e56211782a 100644
--- a/interface/web/dns/form/dns_soa.tform.php
+++ b/interface/web/dns/form/dns_soa.tform.php
@@ -289,7 +289,7 @@ $form["tabs"]['dns_soa'] = array (
  			'maxlength' => '10000'
  		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
@@ -304,7 +304,7 @@ $form["tabs"]['dns_records'] = array (
 		//#################################
 
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	),
 	'plugins' => array (
diff --git a/interface/web/dns/form/dns_spf.tform.php b/interface/web/dns/form/dns_spf.tform.php
index ea2cf8310c..62b6b5283b 100644
--- a/interface/web/dns/form/dns_spf.tform.php
+++ b/interface/web/dns/form/dns_spf.tform.php
@@ -154,7 +154,7 @@ $form["tabs"]['dns'] = array (
 			'maxlength' => '10'
 		),
 		//#################################
-		// End Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/dns/form/dns_srv.tform.php b/interface/web/dns/form/dns_srv.tform.php
index ee0674fd19..5d1c106695 100644
--- a/interface/web/dns/form/dns_srv.tform.php
+++ b/interface/web/dns/form/dns_srv.tform.php
@@ -159,7 +159,7 @@ $form["tabs"]['dns'] = array (
 			'maxlength' => '10'
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/dns/form/dns_template.tform.php b/interface/web/dns/form/dns_template.tform.php
index 2c53f32ec1..5655c3e4cd 100644
--- a/interface/web/dns/form/dns_template.tform.php
+++ b/interface/web/dns/form/dns_template.tform.php
@@ -106,7 +106,7 @@ $form["tabs"]['template'] = array (
 			'value'  => array(0 => 'N', 1 => 'Y')
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/dns/form/dns_tlsa.tform.php b/interface/web/dns/form/dns_tlsa.tform.php
index ef6f2a05b1..b86252cc31 100644
--- a/interface/web/dns/form/dns_tlsa.tform.php
+++ b/interface/web/dns/form/dns_tlsa.tform.php
@@ -148,7 +148,7 @@ $form["tabs"]['dns'] = array (
 			'maxlength' => '10'
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/dns/form/dns_txt.tform.php b/interface/web/dns/form/dns_txt.tform.php
index 3aee920dd9..564e26aa18 100644
--- a/interface/web/dns/form/dns_txt.tform.php
+++ b/interface/web/dns/form/dns_txt.tform.php
@@ -165,7 +165,7 @@ $form["tabs"]['dns'] = array (
 			'maxlength' => '10'
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/help/form/support_message.tform.php b/interface/web/help/form/support_message.tform.php
index caf1a010c6..6313b4da67 100644
--- a/interface/web/help/form/support_message.tform.php
+++ b/interface/web/help/form/support_message.tform.php
@@ -136,7 +136,7 @@ $form["tabs"]['message'] = array (
 			'maxlength' => '30'
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/mail/form/mail_alias.tform.php b/interface/web/mail/form/mail_alias.tform.php
index a004203622..9434ba3eec 100644
--- a/interface/web/mail/form/mail_alias.tform.php
+++ b/interface/web/mail/form/mail_alias.tform.php
@@ -137,7 +137,7 @@ $form["tabs"]['alias'] = array (
 			'value'  => array(1 => 'y', 0 => 'n')
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/mail/form/mail_aliasdomain.tform.php b/interface/web/mail/form/mail_aliasdomain.tform.php
index 66db01e5aa..a0d1024989 100644
--- a/interface/web/mail/form/mail_aliasdomain.tform.php
+++ b/interface/web/mail/form/mail_aliasdomain.tform.php
@@ -128,7 +128,7 @@ $form["tabs"]['alias'] = array (
 			'value'  => array(0 => 'n', 1 => 'y')
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/mail/form/mail_blacklist.tform.php b/interface/web/mail/form/mail_blacklist.tform.php
index 8b268147fb..957f35b95b 100644
--- a/interface/web/mail/form/mail_blacklist.tform.php
+++ b/interface/web/mail/form/mail_blacklist.tform.php
@@ -107,7 +107,7 @@ $form["tabs"]['blacklist'] = array (
 			'value'  => array(0 => 'n', 1 => 'y')
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/mail/form/mail_content_filter.tform.php b/interface/web/mail/form/mail_content_filter.tform.php
index 550ae6b5d6..88f16298f7 100644
--- a/interface/web/mail/form/mail_content_filter.tform.php
+++ b/interface/web/mail/form/mail_content_filter.tform.php
@@ -107,7 +107,7 @@ $form["tabs"]['filter'] = array (
 			'value'  => array(0 => 'n', 1 => 'y')
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/mail/form/mail_domain.tform.php b/interface/web/mail/form/mail_domain.tform.php
index 06fb0906c3..5c8fa0185a 100644
--- a/interface/web/mail/form/mail_domain.tform.php
+++ b/interface/web/mail/form/mail_domain.tform.php
@@ -143,7 +143,7 @@ $form["tabs"]['domain'] = array (
 			'value'  => array(0 => 'n', 1 => 'y')
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/mail/form/mail_domain_catchall.tform.php b/interface/web/mail/form/mail_domain_catchall.tform.php
index 81ce24c7b5..34d26088cd 100644
--- a/interface/web/mail/form/mail_domain_catchall.tform.php
+++ b/interface/web/mail/form/mail_domain_catchall.tform.php
@@ -138,7 +138,7 @@ $form["tabs"]['catchall'] = array (
 			'value'  => array(1 => 'y', 0 => 'n')
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/mail/form/mail_forward.tform.php b/interface/web/mail/form/mail_forward.tform.php
index 3c902b4221..003e678455 100644
--- a/interface/web/mail/form/mail_forward.tform.php
+++ b/interface/web/mail/form/mail_forward.tform.php
@@ -133,7 +133,7 @@ $form["tabs"]['forward'] = array (
 			'value'  => array(1 => 'y', 0 => 'n')
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/mail/form/mail_get.tform.php b/interface/web/mail/form/mail_get.tform.php
index 9f7de76e01..9082c36866 100644
--- a/interface/web/mail/form/mail_get.tform.php
+++ b/interface/web/mail/form/mail_get.tform.php
@@ -173,7 +173,7 @@ $form["tabs"]['mailget'] = array (
 			'value'  => array(0 => 'n', 1 => 'y')
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/mail/form/mail_relay_recipient.tform.php b/interface/web/mail/form/mail_relay_recipient.tform.php
index 34c23861e4..e3d8faa1ed 100644
--- a/interface/web/mail/form/mail_relay_recipient.tform.php
+++ b/interface/web/mail/form/mail_relay_recipient.tform.php
@@ -107,7 +107,7 @@ $form["tabs"]['relay_recipient'] = array (
 			'value'  => array(0 => 'n', 1 => 'y')
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/mail/form/mail_spamfilter.tform.php b/interface/web/mail/form/mail_spamfilter.tform.php
index d726a3eb74..2890cfb8b6 100644
--- a/interface/web/mail/form/mail_spamfilter.tform.php
+++ b/interface/web/mail/form/mail_spamfilter.tform.php
@@ -145,7 +145,7 @@ $form["tabs"]['spamfilter'] = array (
 			'value'  => array(0 => 'n', 1 => 'y')
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/mail/form/mail_transport.tform.php b/interface/web/mail/form/mail_transport.tform.php
index f55541346c..b40ad86e8a 100644
--- a/interface/web/mail/form/mail_transport.tform.php
+++ b/interface/web/mail/form/mail_transport.tform.php
@@ -122,7 +122,7 @@ $form["tabs"]['transport'] = array (
 			'value'  => array(0 => 'n', 1 => 'y')
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/mail/form/mail_user.tform.php b/interface/web/mail/form/mail_user.tform.php
index 631c507f90..da386f5844 100644
--- a/interface/web/mail/form/mail_user.tform.php
+++ b/interface/web/mail/form/mail_user.tform.php
@@ -472,7 +472,7 @@ if ($backup_available) {
 				'value'         => array('1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9', '10' => '10')
 			),
 		##################################
-		# ENDE Datatable fields
+		# END Datatable fields
 		##################################
 		),
 		'plugins' => array (
diff --git a/interface/web/mail/form/mail_user_filter.tform.php b/interface/web/mail/form/mail_user_filter.tform.php
index becb09351e..b00aacb9db 100644
--- a/interface/web/mail/form/mail_user_filter.tform.php
+++ b/interface/web/mail/form/mail_user_filter.tform.php
@@ -137,7 +137,7 @@ $form["tabs"]['filter'] = array (
 			'value'  => array(0 => 'n', 1 => 'y')
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/mail/form/mail_whitelist.tform.php b/interface/web/mail/form/mail_whitelist.tform.php
index 00fc971647..edd3248371 100644
--- a/interface/web/mail/form/mail_whitelist.tform.php
+++ b/interface/web/mail/form/mail_whitelist.tform.php
@@ -113,7 +113,7 @@ $form["tabs"]['whitelist'] = array (
 			'value'  => array(0 => 'n', 1 => 'y')
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/mail/form/spamfilter_blacklist.tform.php b/interface/web/mail/form/spamfilter_blacklist.tform.php
index 3514eed434..7d212d9317 100644
--- a/interface/web/mail/form/spamfilter_blacklist.tform.php
+++ b/interface/web/mail/form/spamfilter_blacklist.tform.php
@@ -127,7 +127,7 @@ $form["tabs"]['blacklist'] = array (
 			'value'  => array(0 => 'n', 1 => 'y')
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/mail/form/spamfilter_config.tform.php b/interface/web/mail/form/spamfilter_config.tform.php
index 39c1b35621..2217cbbd31 100644
--- a/interface/web/mail/form/spamfilter_config.tform.php
+++ b/interface/web/mail/form/spamfilter_config.tform.php
@@ -121,7 +121,7 @@ $form["tabs"]['server'] = array (
 			'maxlength' => '255'
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
@@ -247,7 +247,7 @@ $form["tabs"]['mail'] = array (
 			'maxlength' => '15'
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
@@ -272,7 +272,7 @@ $form["tabs"]['getmail'] = array (
 			'maxlength' => '255'
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/mail/form/spamfilter_policy.tform.php b/interface/web/mail/form/spamfilter_policy.tform.php
index 57aa4f2bf5..ef777a8884 100644
--- a/interface/web/mail/form/spamfilter_policy.tform.php
+++ b/interface/web/mail/form/spamfilter_policy.tform.php
@@ -88,7 +88,7 @@ $form["tabs"]['policy'] = array (
 			'value'  => array('N' => 'No', 'Y' => 'Yes')
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
@@ -458,7 +458,7 @@ $form["tabs"]['amavis'] = array (
 			'maxlength' => '255'
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
@@ -502,7 +502,7 @@ $form["tabs"]['rspamd'] = array (
 			'maxlength' => '255'
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/mail/form/spamfilter_users.tform.php b/interface/web/mail/form/spamfilter_users.tform.php
index 8ef3c4e131..65f196b987 100644
--- a/interface/web/mail/form/spamfilter_users.tform.php
+++ b/interface/web/mail/form/spamfilter_users.tform.php
@@ -133,7 +133,7 @@ $form["tabs"]['users'] = array (
 		),
 
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/mail/form/spamfilter_whitelist.tform.php b/interface/web/mail/form/spamfilter_whitelist.tform.php
index f0802fa491..202a3c6810 100644
--- a/interface/web/mail/form/spamfilter_whitelist.tform.php
+++ b/interface/web/mail/form/spamfilter_whitelist.tform.php
@@ -127,7 +127,7 @@ $form["tabs"]['whitelist'] = array (
 			'value'  => array(0 => 'n', 1 => 'y')
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/mailuser/form/mail_user_filter.tform.php b/interface/web/mailuser/form/mail_user_filter.tform.php
index b785ae0263..adf7716317 100644
--- a/interface/web/mailuser/form/mail_user_filter.tform.php
+++ b/interface/web/mailuser/form/mail_user_filter.tform.php
@@ -128,7 +128,7 @@ $form["tabs"]['filter'] = array (
 			'value'  => array(0 => 'n', 1 => 'y')
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/sites/form/cron.tform.php b/interface/web/sites/form/cron.tform.php
index 4a169c3a67..aedfcb26ca 100644
--- a/interface/web/sites/form/cron.tform.php
+++ b/interface/web/sites/form/cron.tform.php
@@ -185,7 +185,7 @@ $form["tabs"]['cron'] = array (
 			'value'  => array(0 => 'n', 1 => 'y')
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/sites/form/database.tform.php b/interface/web/sites/form/database.tform.php
index 3bb2f9af73..dd3910c043 100644
--- a/interface/web/sites/form/database.tform.php
+++ b/interface/web/sites/form/database.tform.php
@@ -185,7 +185,7 @@ $form["tabs"]['database'] = array (
 			'searchable' => 2
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/sites/form/database_user.tform.php b/interface/web/sites/form/database_user.tform.php
index 09d2c32b2c..5f91cbd1f3 100644
--- a/interface/web/sites/form/database_user.tform.php
+++ b/interface/web/sites/form/database_user.tform.php
@@ -125,7 +125,7 @@ $form["tabs"]['database_user'] = array (
 			'maxlength' => '255'
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/sites/form/ftp_user.tform.php b/interface/web/sites/form/ftp_user.tform.php
index 5e77de4b5f..0b48d7a92d 100644
--- a/interface/web/sites/form/ftp_user.tform.php
+++ b/interface/web/sites/form/ftp_user.tform.php
@@ -146,7 +146,7 @@ $form["tabs"]['ftp'] = array (
 			'value'  => array(0 => 'n', 1 => 'y')
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
@@ -256,7 +256,7 @@ if($app->auth->is_admin()) {
 				'maxlength' => '7'
 			),
 			//#################################
-			// ENDE Datatable fields
+			// END Datatable fields
 			//#################################
 		)
 	);
@@ -290,7 +290,7 @@ if($app->auth->is_admin()) {
 				'maxlength' => '255'
 			),
 			//#################################
-			// ENDE Datatable fields
+			// END Datatable fields
 			//#################################
 		)
 	);
diff --git a/interface/web/sites/form/shell_user.tform.php b/interface/web/sites/form/shell_user.tform.php
index 4268fc08ec..f4e83a1b57 100644
--- a/interface/web/sites/form/shell_user.tform.php
+++ b/interface/web/sites/form/shell_user.tform.php
@@ -164,7 +164,7 @@ $form["tabs"]['shell'] = array (
 			'maxlength' => '600'
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
@@ -248,7 +248,7 @@ if($_SESSION["s"]["user"]["typ"] == 'admin') {
 				'maxlength' => '255'
 			),
 			//#################################
-			// ENDE Datatable fields
+			// END Datatable fields
 			//#################################
 		)
 	);
diff --git a/interface/web/sites/form/web_childdomain.tform.php b/interface/web/sites/form/web_childdomain.tform.php
index 6cfaa38c2a..01132a75dc 100644
--- a/interface/web/sites/form/web_childdomain.tform.php
+++ b/interface/web/sites/form/web_childdomain.tform.php
@@ -146,7 +146,7 @@ $form["tabs"]['domain'] = array (
 			'value'  => array(0 => 'n', 1 => 'y')
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
@@ -193,7 +193,7 @@ if($_SESSION["s"]["user"]["typ"] == 'admin') {
 				'maxlength' => '255'
 			),
 			//#################################
-			// ENDE Datatable fields
+			// END Datatable fields
 			//#################################
 		)
 	);
diff --git a/interface/web/sites/form/web_folder.tform.php b/interface/web/sites/form/web_folder.tform.php
index 5fec523a69..9f8418446c 100644
--- a/interface/web/sites/form/web_folder.tform.php
+++ b/interface/web/sites/form/web_folder.tform.php
@@ -99,7 +99,7 @@ $form["tabs"]['folder'] = array (
 			'value'  => array(0 => 'n', 1 => 'y')
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/sites/form/web_folder_user.tform.php b/interface/web/sites/form/web_folder_user.tform.php
index c3386a5a22..b5f0b711c6 100644
--- a/interface/web/sites/form/web_folder_user.tform.php
+++ b/interface/web/sites/form/web_folder_user.tform.php
@@ -119,7 +119,7 @@ $form["tabs"]['user'] = array (
 			'value'  => array(0 => 'n', 1 => 'y')
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
diff --git a/interface/web/sites/form/web_vhost_domain.tform.php b/interface/web/sites/form/web_vhost_domain.tform.php
index e131a7cbaf..838445e361 100644
--- a/interface/web/sites/form/web_vhost_domain.tform.php
+++ b/interface/web/sites/form/web_vhost_domain.tform.php
@@ -299,7 +299,7 @@ $form["tabs"]['domain'] = array (
 			'value'  => array(0 => 'n', 1 => 'y')
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	),
 	'plugins' => array (
@@ -435,7 +435,7 @@ $form["tabs"]['redirect'] = array (
 			)
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
@@ -601,7 +601,7 @@ if($ssl_available) {
 				)
 			),
 			//#################################
-			// ENDE Datatable fields
+			// END Datatable fields
 			//#################################
 		)
 	);
@@ -641,7 +641,7 @@ $form["tabs"]['stats'] = array (
 			'value'  => array('webalizer' => 'Webalizer', 'awstats' => 'AWStats', '' => 'None')
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
@@ -683,7 +683,7 @@ if ($backup_available) {
 				'maxlength' => '255'
 			),
 			//#################################
-			// ENDE Datatable fields
+			// END Datatable fields
 			//#################################
 		),
 		'plugins' => array (
@@ -972,7 +972,7 @@ if($_SESSION["s"]["user"]["typ"] == 'admin'
 				'maxlength' => '4'
 			)
 			//#################################
-			// ENDE Datatable fields
+			// END Datatable fields
 			//#################################
 		)
 	);
diff --git a/interface/web/sites/form/webdav_user.tform.php b/interface/web/sites/form/webdav_user.tform.php
index b7db858546..73ea898b68 100644
--- a/interface/web/sites/form/webdav_user.tform.php
+++ b/interface/web/sites/form/webdav_user.tform.php
@@ -142,7 +142,7 @@ $form["tabs"]['webdav'] = array (
 			'maxlength' => '255'
 		),
 		//#################################
-		// ENDE Datatable fields
+		// END Datatable fields
 		//#################################
 	)
 );
-- 
GitLab


From d77b1219c5d1a7968501c135551b8f3887ca2dcc Mon Sep 17 00:00:00 2001
From: Herman van Rink <rink@initfour.nl>
Date: Thu, 20 Jun 2019 15:42:26 +0200
Subject: [PATCH 054/242] remove old commented code

---
 interface/web/mail/form/mail_user_filter.tform.php | 1 -
 1 file changed, 1 deletion(-)

diff --git a/interface/web/mail/form/mail_user_filter.tform.php b/interface/web/mail/form/mail_user_filter.tform.php
index b00aacb9db..c1134c5e41 100644
--- a/interface/web/mail/form/mail_user_filter.tform.php
+++ b/interface/web/mail/form/mail_user_filter.tform.php
@@ -94,7 +94,6 @@ $form["tabs"]['filter'] = array (
 			'datatype' => 'VARCHAR',
 			'formtype' => 'SELECT',
 			'default' => '',
-			//'value'  => array('contains'=>'contains_txt','is' => 'Is','begins'=>'Begins with','ends'=>'Ends with')
 			'value'  => array('contains'=>'contains_txt', 'is' => 'is_txt', 'begins'=>'begins_with_txt', 'ends'=>'ends_with_txt')
 		),
 		'searchterm' => array (
-- 
GitLab


From e0c9b5c74fb36365fa1b5bbc951a35f6b02f37b7 Mon Sep 17 00:00:00 2001
From: Webslice <webslice@bixels.nl>
Date: Fri, 6 Sep 2019 13:00:22 +0200
Subject: [PATCH 055/242] Check explicitly for session username, fixes #5389

---
 interface/lib/classes/db_mysql.inc.php | 2 +-
 server/lib/classes/db_mysql.inc.php    | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/interface/lib/classes/db_mysql.inc.php b/interface/lib/classes/db_mysql.inc.php
index 7d7b568980..227fab73fa 100644
--- a/interface/lib/classes/db_mysql.inc.php
+++ b/interface/lib/classes/db_mysql.inc.php
@@ -709,7 +709,7 @@ class db
 
 		if($diff_num > 0) {
 			$diffstr = serialize($diffrec_full);
-			if(isset($_SESSION)) {
+			if(!empty($_SESSION['s']['user']['username'])) {
 				$username = $_SESSION['s']['user']['username'];
 			} else {
 				$username = 'admin';
diff --git a/server/lib/classes/db_mysql.inc.php b/server/lib/classes/db_mysql.inc.php
index 7d7b568980..227fab73fa 100644
--- a/server/lib/classes/db_mysql.inc.php
+++ b/server/lib/classes/db_mysql.inc.php
@@ -709,7 +709,7 @@ class db
 
 		if($diff_num > 0) {
 			$diffstr = serialize($diffrec_full);
-			if(isset($_SESSION)) {
+			if(!empty($_SESSION['s']['user']['username'])) {
 				$username = $_SESSION['s']['user']['username'];
 			} else {
 				$username = 'admin';
-- 
GitLab


From 065d5ff93fb92b2b87a85c9bd3ee690726941fae Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Tue, 10 Sep 2019 15:39:42 +0200
Subject: [PATCH 056/242] - when using pigz tar arguments for backup are in
 wrong order, fixes #5393

---
 server/lib/classes/cron.d/500-backup.inc.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/server/lib/classes/cron.d/500-backup.inc.php b/server/lib/classes/cron.d/500-backup.inc.php
index 579e0174ba..f261daf468 100644
--- a/server/lib/classes/cron.d/500-backup.inc.php
+++ b/server/lib/classes/cron.d/500-backup.inc.php
@@ -135,7 +135,7 @@ class cronjob_backup extends cronjob {
 								//* Create a tar.gz backup as root user
 								$web_backup_file = 'web'.$web_id.'_'.date('Y-m-d_H-i').'.tar.gz';
 								if ($use_pigz) {
-									$app->system->exec_safe('tar pcf - --directory ? . --exclude=./backup\*'.$backup_excludes.' | pigz > ?', $web_path, $web_backup_dir.'/'.$web_backup_file);
+									$app->system->exec_safe('tar pcf - --exclude=./backup\*'.$backup_excludes.' --directory ? . | pigz > ?', $web_path, $web_backup_dir.'/'.$web_backup_file);
 									$retval = $app->system->last_exec_retcode();
 								} else {
 									$app->system->exec_safe('tar pczf ? --exclude=./backup\*'.$backup_excludes.' --directory ? .', $web_backup_dir.'/'.$web_backup_file, $web_path);
-- 
GitLab


From f2ec8695499cee62cc4eeea7e245d09f0463a97e Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Wed, 11 Sep 2019 12:25:37 +0200
Subject: [PATCH 057/242] Set file mode explicitly for rspamd
 worker-controller.inc config file to not rely on system umask.

---
 install/lib/installer_base.lib.php                     | 3 ++-
 server/plugins-available/postfix_server_plugin.inc.php | 1 +
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php
index dd4fe9c306..4f72c6920b 100644
--- a/install/lib/installer_base.lib.php
+++ b/install/lib/installer_base.lib.php
@@ -1644,7 +1644,8 @@ class installer_base {
 		$tpl = new tpl();
 		$tpl->newTemplate('rspamd_worker-controller.inc.master');
 		$tpl->setVar('rspamd_password', $mail_config['rspamd_password']);
-		wf('/etc/rspamd/local.d/worker-controller.inc', $tpl->grab());		
+		wf('/etc/rspamd/local.d/worker-controller.inc', $tpl->grab());
+		chmod('/etc/rspamd/local.d/worker-controller.inc', 0644);
 	}
 
 	public function configure_spamassassin() {
diff --git a/server/plugins-available/postfix_server_plugin.inc.php b/server/plugins-available/postfix_server_plugin.inc.php
index bec1c5498d..77ac689077 100644
--- a/server/plugins-available/postfix_server_plugin.inc.php
+++ b/server/plugins-available/postfix_server_plugin.inc.php
@@ -242,6 +242,7 @@ class postfix_server_plugin {
 			$tpl->newTemplate('rspamd_worker-controller.inc.master');
 			$tpl->setVar('rspamd_password', $rspamd_password);
 			$app->system->file_put_contents('/etc/rspamd/local.d/worker-controller.inc', $tpl->grab());
+			chmod('/etc/rspamd/local.d/worker-controller.inc', 0644);
 			$app->services->restartServiceDelayed('rspamd', 'reload');
 		}
 
-- 
GitLab


From 0d3e2987ce608d3e342f5d3fcab340bc8f615107 Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Thu, 12 Sep 2019 08:55:07 +0200
Subject: [PATCH 058/242] - fixed missing template file for rspamd

---
 install/tpl/rspamd_users.conf.master | 44 +---------------------------
 server/conf/rspamd_users.conf.master | 43 +++++++++++++++++++++++++++
 2 files changed, 44 insertions(+), 43 deletions(-)
 mode change 100644 => 120000 install/tpl/rspamd_users.conf.master
 create mode 100644 server/conf/rspamd_users.conf.master

diff --git a/install/tpl/rspamd_users.conf.master b/install/tpl/rspamd_users.conf.master
deleted file mode 100644
index 73d437d6cb..0000000000
--- a/install/tpl/rspamd_users.conf.master
+++ /dev/null
@@ -1,43 +0,0 @@
-settings {
-	authenticated {
-		priority = 10;
-		authenticated = yes;
-		#apply "default" { groups_disabled = ["rbl", "spf"]; }
-		apply "default" {
-			#symbols_enabled = [];
-			symbols_disabled = [];
-			#groups_enabled = [];
-			groups_disabled = ["rbl"];
-		}
-	}
-	whitelist {
-		priority = 10;
-		rcpt = "postmaster";
-		rcpt = "hostmaster";
-		rcpt = "abuse";
-		want_spam = yes;
-	}
-	whitelist-ip {
-		priority = 10;
-<tmpl_loop name="whitelist_ips">
-		ip = "<tmpl_var name='ip'>";
-</tmpl_loop>
-		
-		want_spam = yes;
-	}
-#	whitelist-timmehosting {
-#		priority = 20;
-#		from = "@xxx";
-#		from = "@xxx";
-#		want_spam = yes;
-#	}
-	whitelist-ca {
-		priority = 20;
-		from = "@comodo.com";
-		from = "@geotrust.com";
-		from = "@geotrusteurope.com";
-		want_spam = yes;
-	}
-	.include(try=true; glob=true) "$LOCAL_CONFDIR/local.d/users/*.conf"
-	.include(try=true; priority=1,duplicate=merge) "$LOCAL_CONFDIR/local.d/users.local.conf"
-}
diff --git a/install/tpl/rspamd_users.conf.master b/install/tpl/rspamd_users.conf.master
new file mode 120000
index 0000000000..3aa7af3185
--- /dev/null
+++ b/install/tpl/rspamd_users.conf.master
@@ -0,0 +1 @@
+../../server/conf/rspamd_users.conf.master
\ No newline at end of file
diff --git a/server/conf/rspamd_users.conf.master b/server/conf/rspamd_users.conf.master
new file mode 100644
index 0000000000..73d437d6cb
--- /dev/null
+++ b/server/conf/rspamd_users.conf.master
@@ -0,0 +1,43 @@
+settings {
+	authenticated {
+		priority = 10;
+		authenticated = yes;
+		#apply "default" { groups_disabled = ["rbl", "spf"]; }
+		apply "default" {
+			#symbols_enabled = [];
+			symbols_disabled = [];
+			#groups_enabled = [];
+			groups_disabled = ["rbl"];
+		}
+	}
+	whitelist {
+		priority = 10;
+		rcpt = "postmaster";
+		rcpt = "hostmaster";
+		rcpt = "abuse";
+		want_spam = yes;
+	}
+	whitelist-ip {
+		priority = 10;
+<tmpl_loop name="whitelist_ips">
+		ip = "<tmpl_var name='ip'>";
+</tmpl_loop>
+		
+		want_spam = yes;
+	}
+#	whitelist-timmehosting {
+#		priority = 20;
+#		from = "@xxx";
+#		from = "@xxx";
+#		want_spam = yes;
+#	}
+	whitelist-ca {
+		priority = 20;
+		from = "@comodo.com";
+		from = "@geotrust.com";
+		from = "@geotrusteurope.com";
+		want_spam = yes;
+	}
+	.include(try=true; glob=true) "$LOCAL_CONFDIR/local.d/users/*.conf"
+	.include(try=true; priority=1,duplicate=merge) "$LOCAL_CONFDIR/local.d/users.local.conf"
+}
-- 
GitLab


From 0a18e943449be72cd9e733602ff2be9fdb2b32e6 Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Wed, 18 Sep 2019 10:59:10 +0200
Subject: [PATCH 059/242] - better log messages on rspamd plugin - ignore @/*@
 targets for spamfilter_user in rspamd plugin

---
 server/plugins-available/rspamd_plugin.inc.php | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/server/plugins-available/rspamd_plugin.inc.php b/server/plugins-available/rspamd_plugin.inc.php
index 49eb87165e..cb2af0f8f3 100644
--- a/server/plugins-available/rspamd_plugin.inc.php
+++ b/server/plugins-available/rspamd_plugin.inc.php
@@ -131,7 +131,11 @@ class rspamd_plugin {
 		$is_domain = false;
 		$email_address = $data[$use_data][$identifier];
 		$settings_name =  $email_address;
-		if(!$email_address) {
+		if($email_address === '*@' || $email_address === '@') {
+			// we will ignore those global targets
+			$app->log('Ignoring @ spamfilter_user as rspamd does not support it this way.', LOGLEVEL_DEBUG);
+			return;
+		} elseif(!$email_address) {
 			// problem reading identifier
 			$app->log('Empty email address in rspamd_plugin from identifier: ' . $use_data . '/' . $identifier, LOGLEVEL_WARN);
 			return;
@@ -145,7 +149,7 @@ class rspamd_plugin {
 		
 		if($settings_name == '') {
 			// missing settings file name
-			$app->log('Empty email address in rspamd_plugin from identifier: ' . $use_data . '/' . $identifier, LOGLEVEL_WARN);
+			$app->log('Empty rspamd identifier in rspamd_plugin from identifier: ' . $use_data . '/' . $identifier, LOGLEVEL_WARN);
 			return;
 		}
 		
-- 
GitLab


From 3b0ec62c98e32af10a4d8b31aca6a749d377e8ed Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Wed, 18 Sep 2019 12:57:28 +0200
Subject: [PATCH 060/242] - fixed problem in rspamd plugin handling deleting of
 domains or users, fixes #5401

---
 server/plugins-available/rspamd_plugin.inc.php | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/server/plugins-available/rspamd_plugin.inc.php b/server/plugins-available/rspamd_plugin.inc.php
index cb2af0f8f3..f6bb5d5a8e 100644
--- a/server/plugins-available/rspamd_plugin.inc.php
+++ b/server/plugins-available/rspamd_plugin.inc.php
@@ -94,10 +94,10 @@ class rspamd_plugin {
 		}
 		
 		$use_data = 'new';
-		if(substr($event_name, -7) === 'delete') {
+		if(substr($event_name, -7) === '_delete') {
 			$mode = 'delete';
 			$use_data = 'old';
-		} elseif(substr($event_name, -7) === 'insert') {
+		} elseif(substr($event_name, -7) === '_insert') {
 			$mode = 'insert';
 		} else {
 			$mode = 'update';
-- 
GitLab


From ba8971de0cb5f8ff01f3e943b4787658f4d6b5bb Mon Sep 17 00:00:00 2001
From: Ales Seifert <ales@web4people.com.au>
Date: Wed, 18 Sep 2019 17:42:29 +0200
Subject: [PATCH 061/242] Added option to select Local Mail server for remote
 email accounts import

---
 interface/web/tools/import_ispconfig.php        | 17 ++++++++++++++++-
 .../web/tools/lib/lang/en_import_ispconfig.lng  |  1 +
 .../web/tools/templates/import_ispconfig.htm    |  6 ++++++
 3 files changed, 23 insertions(+), 1 deletion(-)

diff --git a/interface/web/tools/import_ispconfig.php b/interface/web/tools/import_ispconfig.php
index e2b8bad647..716ed2f934 100644
--- a/interface/web/tools/import_ispconfig.php
+++ b/interface/web/tools/import_ispconfig.php
@@ -107,6 +107,17 @@ if(isset($_POST['connected'])) {
 		}
 		$app->tpl->setVar("client_group_id", $client_select);
 
+		//* Fill the mail server select field
+		$sql = "SELECT server_id, server_name FROM server WHERE mail_server = 1 and mirror_server_id = 0";
+		$mail_servers = $app->db->queryAllRecords($sql);
+		$mail_server_select = "";
+		if(is_array($mail_servers)) {
+			foreach( $mail_servers as $m_server) {
+				$selected = @($m_server['server_id'] == $_POST['local_server_id'])?'SELECTED':'';
+				$mail_server_select .= "<option value='$m_server[server_id]' $selected>$m_server[server_name]</option>\r\n";
+			}
+		}
+		$app->tpl->setVar("local_server_id", $mail_server_select);
 
 		try {
 			//* Allow connections to self signed SSL certs
@@ -161,6 +172,7 @@ $app->tpl->setVar('connected', $connected);
 $app->tpl->setVar('remote_session_id', $remote_session_id);
 $app->tpl->setVar('msg', $msg);
 $app->tpl->setVar('error', $error);
+$app->tpl->setVar('local_server_id', $_POST['local_server_id'], true);
 
 //* SET csrf token
 $csrf_token = $app->auth->csrf_token_get('ispconfig_import');
@@ -188,7 +200,10 @@ function start_domain_import($mail_domain) {
 	$server_id = intval($tmp['server_id']);
 	unset($tmp);
 	if($server_id == 0) $server_id = 1;
-
+	
+    if (isset($_POST['local_server_id']) && intval($_POST['local_server_id']) !== $server_id){
+        $server_id = intval($_POST['local_server_id']);
+    }
 	//* get the mail domain record
 	$mail_domain_rec = $client->mail_domain_get($remote_session_id, array('domain' => $mail_domain));
 	if(is_array($mail_domain_rec)) {
diff --git a/interface/web/tools/lib/lang/en_import_ispconfig.lng b/interface/web/tools/lib/lang/en_import_ispconfig.lng
index 65ea145980..73002f8868 100644
--- a/interface/web/tools/lib/lang/en_import_ispconfig.lng
+++ b/interface/web/tools/lib/lang/en_import_ispconfig.lng
@@ -20,5 +20,6 @@ $wb['import_alias_txt'] = 'Import email alias';
 $wb['import_forward_txt'] = 'Import forward';
 $wb['import_user_filter_txt'] = 'Import user filter';
 $wb['import_spamfilter_txt'] = 'Import spamfilter';
+$wb['local_server_txt'] = 'Local Mail Server';
 
 ?>
\ No newline at end of file
diff --git a/interface/web/tools/templates/import_ispconfig.htm b/interface/web/tools/templates/import_ispconfig.htm
index 1d63df2a6d..9d845701f6 100644
--- a/interface/web/tools/templates/import_ispconfig.htm
+++ b/interface/web/tools/templates/import_ispconfig.htm
@@ -36,6 +36,12 @@
                         {tmpl_var name='client_group_id'}
                     </select></div>
                 </div>
+                <div class="form-group">
+                    <label for="local_server_id" class="col-sm-3 control-label">{tmpl_var name='local_server_txt'}</label>
+                    <div class="col-sm-9"><select name="local_server_id" id="local_server_id" class="form-control">
+                        {tmpl_var name='local_server_id'}
+                    </select></div>
+                </div>
                 <div class="form-group">
                     <label class="col-sm-3 control-label">{tmpl_var name="import_mailbox_txt"}</label>
                     <div class="col-sm-9"><input class="form-control" type="checkbox" id="import_mailbox" value="1" name="import_mailbox" checked="checked" /></div>
-- 
GitLab


From 6d9985346ad660e36f62805ff3fa4ebf1e0afe6b Mon Sep 17 00:00:00 2001
From: Helmo <rink@initfour.nl>
Date: Tue, 24 Sep 2019 10:55:11 +0200
Subject: [PATCH 062/242] More Dutch, mail_user_filter

Some form of inheritance might be nice to reduce the amount of duplication in these files.
---
 .../lib/lang/nl_software_package_list.lng     |  2 +-
 interface/web/mail/lib/lang/nl.lng            |  2 +-
 interface/web/mail/lib/lang/nl_mail_get.lng   |  6 +--
 interface/web/mail/lib/lang/nl_mail_user.lng  |  7 ++--
 .../web/mail/lib/lang/nl_mail_user_filter.lng | 30 +++++++--------
 .../web/mail/lib/lang/nl_mail_user_list.lng   |  4 +-
 .../web/mail/lib/lang/nl_spamfilter_users.lng |  2 +-
 interface/web/mailuser/lib/lang/nl.lng        |  6 +--
 .../lib/lang/nl_mail_user_autoresponder.lng   | 22 +++++------
 .../mailuser/lib/lang/nl_mail_user_filter.lng | 38 +++++++++----------
 10 files changed, 59 insertions(+), 60 deletions(-)

diff --git a/interface/web/admin/lib/lang/nl_software_package_list.lng b/interface/web/admin/lib/lang/nl_software_package_list.lng
index 33e66022bc..44aaa563ad 100644
--- a/interface/web/admin/lib/lang/nl_software_package_list.lng
+++ b/interface/web/admin/lib/lang/nl_software_package_list.lng
@@ -6,7 +6,7 @@ $wb['package_description_txt'] = 'Omschrijving';
 $wb['action_txt'] = 'Actie';
 $wb['toolsarea_head_txt'] = 'Pakketten';
 $wb['repoupdate_txt'] = 'Update pakketlijst';
-$wb['package_id_txt'] = 'locaal App-ID';
+$wb['package_id_txt'] = 'lokaal App-ID';
 $wb['no_packages_txt'] = 'No packages available';
 $wb['edit_txt'] = 'Edit';
 $wb['delete_txt'] = 'Delete';
diff --git a/interface/web/mail/lib/lang/nl.lng b/interface/web/mail/lib/lang/nl.lng
index 91d63a7abc..6664809b46 100644
--- a/interface/web/mail/lib/lang/nl.lng
+++ b/interface/web/mail/lib/lang/nl.lng
@@ -13,7 +13,7 @@ $wb['Spamfilter'] = 'Spamfilter';
 $wb['Email Routing'] = 'Email routing';
 $wb['Email transport'] = 'Email transport';
 $wb['Mailbox'] = 'Mailbox';
-$wb['Autoresponder'] = 'Autoresponder';
+$wb['Autoresponder'] = 'Autobeantwoorden';
 $wb['Mail Filter'] = 'Mail filter';
 $wb['Custom Rules'] = 'Custom rules';
 $wb['Email filter'] = 'E-mail filter';
diff --git a/interface/web/mail/lib/lang/nl_mail_get.lng b/interface/web/mail/lib/lang/nl_mail_get.lng
index 5cbeab14e7..738f93e663 100644
--- a/interface/web/mail/lib/lang/nl_mail_get.lng
+++ b/interface/web/mail/lib/lang/nl_mail_get.lng
@@ -13,7 +13,7 @@ $wb['source_username_error_isempty'] = 'Gebruikersnaam is niet ingvuld.';
 $wb['source_password_error_isempty'] = 'Wachtwoord is niet ingvuld.';
 $wb['destination_error_isemail'] = 'Geen bestemming geselecteerd.';
 $wb['source_server_error_regex'] = 'Pop3/Imap server is geen geldige domeinnaam.';
-$wb['source_read_all_txt'] = 'Retrieve all emails (incl. read mails)';
-$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes';
-$wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.';
+$wb['source_read_all_txt'] = 'Haal alle berichten op (incl. reeds gelezen)';
+$wb['error_delete_read_all_combination'] = 'Ongeldige combinatie van opties. \\"Verwijder e-mails na ontvangst\\" en \\"Haal alle berichten op (incl. reeds gelezen)\\" werken niet samen.';
+$wb['source_delete_note_txt'] = 'Controleer voor het activeren van deze optie of het ophalen van berichten naar verwachting werkt.';
 ?>
diff --git a/interface/web/mail/lib/lang/nl_mail_user.lng b/interface/web/mail/lib/lang/nl_mail_user.lng
index 94dd018332..65d89a32af 100644
--- a/interface/web/mail/lib/lang/nl_mail_user.lng
+++ b/interface/web/mail/lib/lang/nl_mail_user.lng
@@ -9,7 +9,6 @@ $wb['email_error_unique'] = 'Duplicaat e-mail adres.';
 $wb['autoresponder_text_txt'] = 'Tekst';
 $wb['autoresponder_txt'] = 'Actief';
 $wb['autoresponder_start_date_txt'] = 'Start op';
-$wb['autoresponder_start_date_ispast'] = 'Start datum mag niet in het verleden liggen.';
 $wb['autoresponder_end_date_txt'] = 'Eindigt op';
 $wb['autoresponder_end_date_isgreater'] = 'Einddatum moet later zijn dan de startdatum.';
 $wb['no_domain_perm'] = 'U heeft geen toestemming voor dit domein.';
@@ -34,11 +33,11 @@ $wb['quota_error_value'] = 'Ongeldige quota waarde. Toegestane waarden zijn: 0 =
 $wb['move_junk_txt'] = 'Verplaats SPAM e-mails naar junk folder';
 $wb['name_txt'] = 'Echte naam';
 $wb['name_optional_txt'] = '(Optioneel)';
-$wb['autoresponder_active'] = 'Inschakelen autoresponder';
+$wb['autoresponder_active'] = 'Inschakelen autobeantwoorden';
 $wb['cc_txt'] = 'Stuur kopie naar';
 $wb['cc_error_isemail'] = 'Het \\"Stuur kopie naar\\" veld bevat geen geldig e-mail adres';
 $wb['domain_txt'] = 'Domain';
-$wb['now_txt'] = 'Now';
+$wb['now_txt'] = 'Nu';
 $wb['login_error_unique'] = 'Login is already taken.';
 $wb['login_error_regex'] = 'Valid characters are A-Z, a-z, 0-9, ., _ and -.';
 $wb['login_txt'] = 'Login (optional)';
@@ -58,7 +57,7 @@ $wb['monthly_backup_txt'] = 'Monthly';
 $wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.';
 $wb['cc_note_txt'] = '(Meerdere e-mail adressen scheiden met een komma)';
 $wb['disablesmtp_txt'] = 'Uitschakelen SMTP (versturen)';
-$wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.';
+$wb['autoresponder_start_date_is_required'] = 'Een startdatun is vereist voor het inschakelen van Autobeantwoorden.';
 $wb['sender_cc_txt'] = 'Stuur uitgaande kopie aan';
 $wb['sender_cc_error_isemail'] = 'Het \\"Stuur uitgaande kopie aan\\" veld bevat geen geldig e-mail adres';
 $wb['sender_cc_note_txt'] = '(Meerdere e-mail adressen scheiden met een komma)';
diff --git a/interface/web/mail/lib/lang/nl_mail_user_filter.lng b/interface/web/mail/lib/lang/nl_mail_user_filter.lng
index 903b610729..95af45d96e 100644
--- a/interface/web/mail/lib/lang/nl_mail_user_filter.lng
+++ b/interface/web/mail/lib/lang/nl_mail_user_filter.lng
@@ -7,23 +7,23 @@ $wb['rulename_error_empty'] = 'Naam is niet ingvuld.';
 $wb['searchterm_is_empty'] = 'Zoekterm is niet ingvuld.';
 $wb['source_txt'] = 'Bron';
 $wb['target_error_regex'] = 'Het doel mag alleen de volgende karakters bevatten: a-z, 0-9, -, ., _, en {spatie}';
-$wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.';
-$wb['subject_txt'] = 'Subject';
-$wb['from_txt'] = 'From';
-$wb['to_txt'] = 'To';
-$wb['contains_txt'] = 'Contains';
+$wb['limit_mailfilter_txt'] = 'Het max. aantal e-mail filters voor uw account is bereikt.';
+$wb['subject_txt'] = 'Onderwerp';
+$wb['from_txt'] = 'Afzender';
+$wb['to_txt'] = 'Bestemming';
+$wb['contains_txt'] = 'Bevat';
 $wb['is_txt'] = 'Is';
-$wb['begins_with_txt'] = 'Begins with';
-$wb['ends_with_txt'] = 'Ends with';
-$wb['delete_txt'] = 'Delete';
-$wb['move_stop_txt'] = 'Move to';
+$wb['begins_with_txt'] = 'Begint met';
+$wb['ends_with_txt'] = 'Eindigt in';
+$wb['delete_txt'] = 'Verwijderen';
+$wb['move_stop_txt'] = 'Verplaatsen naar';
 $wb['header_txt'] = 'Header';
-$wb['size_over_txt'] = 'Email size over (KB)';
-$wb['size_under_txt'] = 'Email size under (KB)';
+$wb['size_over_txt'] = 'Email grootte bove (KB)';
+$wb['size_under_txt'] = 'Email grootte onder (KB)';
 $wb['localpart_txt'] = 'Localpart';
-$wb['domain_txt'] = 'Domain';
-$wb['keep_txt'] = 'Keep';
-$wb['reject_txt'] = 'Reject';
+$wb['domain_txt'] = 'Domein';
+$wb['keep_txt'] = 'Behouden';
+$wb['reject_txt'] = 'Afwijzen';
 $wb['stop_txt'] = 'Stop';
-$wb['move_to_txt'] = 'Move to';
+$wb['move_to_txt'] = 'Verplaatsen naar';
 ?>
diff --git a/interface/web/mail/lib/lang/nl_mail_user_list.lng b/interface/web/mail/lib/lang/nl_mail_user_list.lng
index e421af0ecc..39125af2e0 100644
--- a/interface/web/mail/lib/lang/nl_mail_user_list.lng
+++ b/interface/web/mail/lib/lang/nl_mail_user_list.lng
@@ -1,11 +1,11 @@
 <?php
 $wb['list_head_txt'] = 'Mailbox';
 $wb['email_txt'] = 'E-mail';
-$wb['autoresponder_txt'] = 'Autoresponder';
+$wb['autoresponder_txt'] = 'Autobeantwoorden';
 $wb['add_new_record_txt'] = 'Toevoegen mailbox';
 $wb['name_txt'] = 'Echte naam';
 $wb['login_txt'] = 'Login';
-$wb['postfix_txt'] = 'Receiving';
+$wb['postfix_txt'] = 'Ontvangen';
 $wb['disablesmtp_txt'] = 'SMTP (sending)';
 $wb['disableimap_txt'] = 'IMAP';
 $wb['disablepop3_txt'] = 'POP3';
diff --git a/interface/web/mail/lib/lang/nl_spamfilter_users.lng b/interface/web/mail/lib/lang/nl_spamfilter_users.lng
index 4b7144b1f3..697e130b35 100644
--- a/interface/web/mail/lib/lang/nl_spamfilter_users.lng
+++ b/interface/web/mail/lib/lang/nl_spamfilter_users.lng
@@ -4,7 +4,7 @@ $wb['priority_txt'] = 'Prioriteit';
 $wb['policy_id_txt'] = 'Policy';
 $wb['email_txt'] = 'E-mail (Patroon)';
 $wb['fullname_txt'] = 'Naam';
-$wb['local_txt'] = 'Locaal';
+$wb['local_txt'] = 'Lokaal';
 $wb['email_error_notempty'] = 'The email address must not be empty.';
 $wb['fullname_error_notempty'] = 'The name must not be empty.';
 $wb['10 - highest'] = '10 - highest';
diff --git a/interface/web/mailuser/lib/lang/nl.lng b/interface/web/mailuser/lib/lang/nl.lng
index 114dec9b91..6383a82864 100644
--- a/interface/web/mailuser/lib/lang/nl.lng
+++ b/interface/web/mailuser/lib/lang/nl.lng
@@ -1,8 +1,8 @@
 <?php
 $wb['Email Account'] = 'Email Account';
-$wb['Overview'] = 'Overview';
-$wb['Password'] = 'Password';
-$wb['Autoresponder'] = 'Autoresponder';
+$wb['Overview'] = 'Overzicht';
+$wb['Password'] = 'Wachtwoord';
+$wb['Autoresponder'] = 'Autobeantwoorden';
 $wb['Send copy'] = 'Send copy';
 $wb['Spamfilter'] = 'Spamfilter';
 $wb['Email Filters'] = 'Email Filters';
diff --git a/interface/web/mailuser/lib/lang/nl_mail_user_autoresponder.lng b/interface/web/mailuser/lib/lang/nl_mail_user_autoresponder.lng
index 79f386a7dc..7c8283c838 100644
--- a/interface/web/mailuser/lib/lang/nl_mail_user_autoresponder.lng
+++ b/interface/web/mailuser/lib/lang/nl_mail_user_autoresponder.lng
@@ -1,13 +1,13 @@
 <?php
-$wb['mailbox_autoresponder_txt'] = 'Autoresponder';
-$wb['autoresponder_subject'] = 'Out of office reply';
-$wb['autoresponder_text_txt'] = 'Text';
-$wb['autoresponder_txt'] = 'Active';
-$wb['autoresponder_start_date_txt'] = 'Start on';
-$wb['autoresponder_start_date_isfuture'] = 'Start date cannot be in the past.';
-$wb['autoresponder_end_date_txt'] = 'End by';
-$wb['autoresponder_end_date_isgreater'] = 'End date must be set and be later than start date.';
-$wb['autoresponder_active'] = 'Enable the autoresponder';
-$wb['now_txt'] = 'Now';
-$wb['autoresponder_subject_txt'] = 'Betreff';
+$wb['mailbox_autoresponder_txt'] = 'Autobeantwoorden';
+$wb['autoresponder_subject'] = 'Out of office antwoord';
+$wb['autoresponder_text_txt'] = 'Tekst';
+$wb['autoresponder_txt'] = 'Actief';
+$wb['autoresponder_start_date_txt'] = 'Start op';
+$wb['autoresponder_start_date_isfuture'] = 'Startdatum mag niet in het verleden liggen.';
+$wb['autoresponder_end_date_txt'] = 'Eindigt op';
+$wb['autoresponder_end_date_isgreater'] = 'Einddatum moet later zijn dan de startdatum.';
+$wb['autoresponder_active'] = 'Inschakelen autobeantwoorden';
+$wb['now_txt'] = 'Nu';
+$wb['autoresponder_subject_txt'] = 'E-mail onderwerp';
 ?>
diff --git a/interface/web/mailuser/lib/lang/nl_mail_user_filter.lng b/interface/web/mailuser/lib/lang/nl_mail_user_filter.lng
index 4069a15351..0092c288a0 100644
--- a/interface/web/mailuser/lib/lang/nl_mail_user_filter.lng
+++ b/interface/web/mailuser/lib/lang/nl_mail_user_filter.lng
@@ -1,21 +1,21 @@
 <?php
-$wb['rulename_txt'] = 'Name';
-$wb['action_txt'] = 'Action';
-$wb['target_txt'] = 'Folder';
-$wb['active_txt'] = 'Active';
-$wb['rulename_error_empty'] = 'Name is empty.';
-$wb['searchterm_is_empty'] = 'Search term is empty.';
-$wb['source_txt'] = 'Source';
-$wb['target_error_regex'] = 'The target may only contain these characters: a-z, 0-9, -, ., _, and {space}';
-$wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.';
-$wb['subject_txt'] = 'Subject';
-$wb['from_txt'] = 'From';
-$wb['to_txt'] = 'To';
-$wb['contains_txt'] = 'Contains';
-$wb['is_txt'] = 'Is';
-$wb['begins_with_txt'] = 'Begins with';
-$wb['ends_with_txt'] = 'Ends with';
-$wb['move_to_txt'] = 'Move to';
-$wb['delete_txt'] = 'Delete';
-$wb['mailbox_filter_txt'] = 'Mailbox filter';
+$wb['rulename_txt'] = "Naam";
+$wb['action_txt'] = "Actie";
+$wb['target_txt'] = "Map";
+$wb['active_txt'] = "Actief";
+$wb['rulename_error_empty'] = "Naam is niet ingevuld.";
+$wb['searchterm_is_empty'] = "Zoekterm is niet ingvuld.";
+$wb['source_txt'] = "Bron";
+$wb['target_error_regex'] = 'Het doel mag alleen de volgende karakters bevatten: a-z, 0-9, -, ., _, en {spatie}';
+$wb['limit_mailfilter_txt'] = "Het max. aantal e-mail filters voor uw account is bereikt.";
+$wb['subject_txt'] = "Onderwerp";
+$wb['from_txt'] = "Afzender";
+$wb['to_txt'] = "Bestemming";
+$wb['contains_txt'] = "Bevat";
+$wb['is_txt'] = "Is";
+$wb['begins_with_txt'] = "Begint met";
+$wb['ends_with_txt'] = "Endigt in";
+$wb['move_to_txt'] = "Verplaatsen naar";
+$wb['delete_txt'] = "Verwijderen";
+$wb['mailbox_filter_txt'] = "Mailbox filter";
 ?>
-- 
GitLab


From 090607b01bc9f4d9674ae3542316ef0e06085159 Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Fri, 27 Sep 2019 17:56:29 +0200
Subject: [PATCH 063/242] Fixes #5410 rspamd mail aliases don't get updated
 when policy is changed

---
 .../lib/plugins/mail_mail_domain_plugin.inc.php    | 10 ++++++++++
 interface/web/mail/spamfilter_policy_edit.php      | 14 ++++++++++++++
 2 files changed, 24 insertions(+)

diff --git a/interface/lib/plugins/mail_mail_domain_plugin.inc.php b/interface/lib/plugins/mail_mail_domain_plugin.inc.php
index df6e3ffeb0..598fe74f09 100644
--- a/interface/lib/plugins/mail_mail_domain_plugin.inc.php
+++ b/interface/lib/plugins/mail_mail_domain_plugin.inc.php
@@ -116,6 +116,16 @@ class mail_mail_domain_plugin {
 			$app->db->query("UPDATE spamfilter_users SET email=REPLACE(email, ?, ?), sys_userid = ?, sys_groupid = ? WHERE email LIKE ?", $page_form->oldDataRecord['domain'], $domain, $client_user_id, $sys_groupid, "%@" . $page_form->oldDataRecord['domain']);
 
 		} // end if domain name changed
+		
+		//* Force-update the aliases (required for spamfilter changes)
+		$forwardings = $app->db->queryAllRecords("SELECT * FROM mail_forwarding WHERE source LIKE ? OR destination LIKE ?", "%@" . $domain, "%@" . $domain);
+		
+		if(is_array($forwardings)) {
+			foreach($forwardings as $rec) {
+				$app->db->datalogUpdate('mail_forwarding', array("source" => $rec['source']), 'forwarding_id', $rec['forwarding_id'],true);
+			}
+		}
+		
 	}
 
 }
diff --git a/interface/web/mail/spamfilter_policy_edit.php b/interface/web/mail/spamfilter_policy_edit.php
index 8226ae6048..572a184020 100644
--- a/interface/web/mail/spamfilter_policy_edit.php
+++ b/interface/web/mail/spamfilter_policy_edit.php
@@ -105,6 +105,20 @@ class page_action extends tform_actions {
 			if(is_array($spamfilter_users) && !empty($spamfilter_users)){
 				foreach($spamfilter_users as $spamfilter_user){
 					$app->db->datalogUpdate('spamfilter_users', $spamfilter_user, 'id', $spamfilter_user["id"], true);
+					
+					// check if this is an email domain
+					if(substr($spamfilter_user['email'],0,1) == '@') {
+						$domain = substr($spamfilter_user['email'],1);
+						$forwardings = $app->db->queryAllRecords("SELECT * FROM mail_forwarding WHERE source LIKE ? OR destination LIKE ?", "%@" . $domain, "%@" . $domain);
+						
+						// Force-update aliases and forwards
+						if(is_array($forwardings)) {
+							foreach($forwardings as $rec) {
+								$app->db->datalogUpdate('mail_forwarding', array("source" => $rec['source']), 'forwarding_id', $rec['forwarding_id'],true);
+							}
+						}
+					}
+					
 				}
 			}
 		}
-- 
GitLab


From b08a125644ab9b2d48a41a69721d87767ee73312 Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Thu, 3 Oct 2019 16:56:09 +0200
Subject: [PATCH 064/242] Fix for issue #5415

---
 interface/lib/classes/auth.inc.php            | 23 ++++++++++++++-----
 .../lib/classes/listform_actions.inc.php      | 10 ++++++--
 interface/lib/classes/tform_actions.inc.php   |  3 +++
 .../templates/directive_snippets_list.htm     |  2 +-
 .../web/admin/templates/firewall_list.htm     |  2 +-
 interface/web/admin/templates/groups_list.htm |  2 +-
 .../web/admin/templates/iptables_list.htm     |  2 +-
 .../admin/templates/server_config_list.htm    |  2 +-
 .../web/admin/templates/server_ip_list.htm    |  2 +-
 .../admin/templates/server_ip_map_list.htm    |  2 +-
 interface/web/admin/templates/server_list.htm |  2 +-
 .../web/admin/templates/server_php_list.htm   |  2 +-
 .../admin/templates/software_repo_list.htm    |  2 +-
 interface/web/admin/templates/users_list.htm  |  2 +-
 .../client/templates/client_circle_list.htm   |  2 +-
 .../client_message_template_list.htm          |  2 +-
 .../client/templates/client_template_list.htm |  2 +-
 .../web/client/templates/clients_list.htm     |  2 +-
 .../web/client/templates/domain_list.htm      |  2 +-
 .../templates/message_template_list.htm       |  2 +-
 .../web/client/templates/resellers_list.htm   |  2 +-
 interface/web/dns/templates/dns_a_list.htm    |  2 +-
 .../dns/templates/dns_slave_admin_list.htm    |  2 +-
 .../web/dns/templates/dns_slave_list.htm      |  2 +-
 .../web/dns/templates/dns_soa_admin_list.htm  |  2 +-
 interface/web/dns/templates/dns_soa_list.htm  |  2 +-
 .../web/dns/templates/dns_template_list.htm   |  2 +-
 .../help/templates/support_message_list.htm   |  2 +-
 .../web/mail/templates/mail_alias_list.htm    |  2 +-
 .../mail/templates/mail_aliasdomain_list.htm  |  2 +-
 .../mail/templates/mail_blacklist_list.htm    |  2 +-
 .../templates/mail_content_filter_list.htm    |  2 +-
 .../mail/templates/mail_domain_admin_list.htm |  2 +-
 .../templates/mail_domain_catchall_list.htm   |  2 +-
 .../web/mail/templates/mail_domain_list.htm   |  2 +-
 .../web/mail/templates/mail_forward_list.htm  |  2 +-
 .../web/mail/templates/mail_get_list.htm      |  2 +-
 .../mail/templates/mail_mailinglist_list.htm  |  2 +-
 .../templates/mail_relay_recipient_list.htm   |  2 +-
 .../mail/templates/mail_transport_list.htm    |  2 +-
 .../mail/templates/mail_user_filter_list.htm  |  2 +-
 .../web/mail/templates/mail_user_list.htm     |  2 +-
 .../mail/templates/mail_whitelist_list.htm    |  2 +-
 .../templates/spamfilter_blacklist_list.htm   |  2 +-
 .../mail/templates/spamfilter_config_list.htm |  2 +-
 .../mail/templates/spamfilter_policy_list.htm |  2 +-
 .../mail/templates/spamfilter_users_list.htm  |  2 +-
 .../templates/spamfilter_whitelist_list.htm   |  2 +-
 .../mail/templates/xmpp_domain_admin_list.htm |  2 +-
 .../web/mail/templates/xmpp_domain_list.htm   |  2 +-
 .../web/mail/templates/xmpp_user_list.htm     |  2 +-
 .../templates/mail_user_filter_list.htm       |  2 +-
 .../web/monitor/templates/datalog_list.htm    |  2 +-
 .../web/monitor/templates/syslog_list.htm     |  4 ++--
 interface/web/sites/templates/cron_list.htm   |  2 +-
 .../sites/templates/database_admin_list.htm   |  2 +-
 .../web/sites/templates/database_list.htm     |  2 +-
 .../templates/database_user_admin_list.htm    |  2 +-
 .../sites/templates/database_user_list.htm    |  2 +-
 .../web/sites/templates/ftp_user_list.htm     |  2 +-
 .../web/sites/templates/shell_user_list.htm   |  2 +-
 .../sites/templates/web_childdomain_list.htm  |  2 +-
 .../web/sites/templates/web_folder_list.htm   |  2 +-
 .../sites/templates/web_folder_user_list.htm  |  2 +-
 .../templates/web_vhost_domain_admin_list.htm |  2 +-
 .../sites/templates/web_vhost_domain_list.htm |  2 +-
 .../web/sites/templates/webdav_user_list.htm  |  2 +-
 interface/web/vm/templates/openvz_ip_list.htm |  2 +-
 .../vm/templates/openvz_ostemplate_list.htm   |  2 +-
 .../web/vm/templates/openvz_template_list.htm |  2 +-
 interface/web/vm/templates/openvz_vm_list.htm |  2 +-
 71 files changed, 97 insertions(+), 77 deletions(-)

diff --git a/interface/lib/classes/auth.inc.php b/interface/lib/classes/auth.inc.php
index afe50ac692..2075c7b90d 100644
--- a/interface/lib/classes/auth.inc.php
+++ b/interface/lib/classes/auth.inc.php
@@ -268,16 +268,27 @@ class auth {
 		return array('csrf_id' => $_csrf_id,'csrf_key' => $_csrf_key);
 	}
 	
-	public function csrf_token_check() {
+	public function csrf_token_check($method = 'POST') {
 		global $app;
 		
-		if(isset($_POST) && is_array($_POST)) {
+		if($method == 'POST') {
+			$input_vars = $_POST;
+		} elseif ($method == 'GET') {
+			$input_vars = $_GET;
+		} else {
+			$app->error('Unknown CSRF verification method.');
+		}
+		
+		//print_r($input_vars);
+		//die(print_r($_SESSION['_csrf']));
+		
+		if(isset($input_vars) && is_array($input_vars)) {
 			$_csrf_valid = false;
-			if(isset($_POST['_csrf_id']) && isset($_POST['_csrf_key'])) {
-				$_csrf_id = trim($_POST['_csrf_id']);
-				$_csrf_key = trim($_POST['_csrf_key']);
+			if(isset($input_vars['_csrf_id']) && isset($input_vars['_csrf_key'])) {
+				$_csrf_id = trim($input_vars['_csrf_id']);
+				$_csrf_key = trim($input_vars['_csrf_key']);
 				if(isset($_SESSION['_csrf']) && isset($_SESSION['_csrf'][$_csrf_id]) && isset($_SESSION['_csrf_timeout']) && isset($_SESSION['_csrf_timeout'][$_csrf_id])) {
-					if($_SESSION['_csrf'][$_csrf_id] === $_csrf_key && $_SESSION['_csrf_timeout'] >= time()) $_csrf_valid = true;
+					if($_SESSION['_csrf'][$_csrf_id] === $_csrf_key && $_SESSION['_csrf_timeout'][$_csrf_id] >= time()) $_csrf_valid = true;
 				}
 			}
 			if($_csrf_valid !== true) {
diff --git a/interface/lib/classes/listform_actions.inc.php b/interface/lib/classes/listform_actions.inc.php
index 1b8426b894..4a463fe015 100644
--- a/interface/lib/classes/listform_actions.inc.php
+++ b/interface/lib/classes/listform_actions.inc.php
@@ -129,13 +129,19 @@ class listform_actions {
 
 		// Getting Datasets from DB
 		$records = $app->db->queryAllRecords($this->getQueryString($php_sort));
+		
+		$csrf_token = $app->auth->csrf_token_get($app->listform->listDef['name']);
+		$_csrf_id = $csrf_token['csrf_id'];
+		$_csrf_key = $csrf_token['csrf_key'];
 
 		$this->DataRowColor = "#FFFFFF";
 		$records_new = array();
 		if(is_array($records)) {
 			$this->idx_key = $app->listform->listDef["table_idx"];
-			foreach($records as $rec) {
-				$records_new[] = $this->prepareDataRow($rec);
+			foreach($records as $key => $rec) {
+				$records_new[$key] = $this->prepareDataRow($rec);
+				$records_new[$key]['csrf_id'] = $_csrf_id;
+				$records_new[$key]['csrf_key'] = $_csrf_key;
 			}
 		}
 
diff --git a/interface/lib/classes/tform_actions.inc.php b/interface/lib/classes/tform_actions.inc.php
index f277c51274..d83ec0d3d7 100644
--- a/interface/lib/classes/tform_actions.inc.php
+++ b/interface/lib/classes/tform_actions.inc.php
@@ -297,6 +297,9 @@ class tform_actions {
 	 */
 	function onDelete() {
 		global $app, $conf, $list_def_file, $tform_def_file;
+		
+		// Check CSRF Token
+		$app->auth->csrf_token_check('GET');
 
 		include_once $list_def_file;
 
diff --git a/interface/web/admin/templates/directive_snippets_list.htm b/interface/web/admin/templates/directive_snippets_list.htm
index 602c71a07c..8433282496 100644
--- a/interface/web/admin/templates/directive_snippets_list.htm
+++ b/interface/web/admin/templates/directive_snippets_list.htm
@@ -40,7 +40,7 @@
 							<td><a href="#" data-load-content="admin/directive_snippets_edit.php?id={tmpl_var name='id'}">{tmpl_var name="customer_viewable"}</a></td>
 							<td><a href="#" data-load-content="admin/directive_snippets_edit.php?id={tmpl_var name='id'}">{tmpl_var name="master_directive_snippets_id"}</a></td>
                             <td class="text-right">
-                                <tmpl_if name='is_master'></tmpl_else><a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/directive_snippets_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a></tmpl_if>
+                                <tmpl_if name='is_master'></tmpl_else><a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/directive_snippets_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a></tmpl_if>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/admin/templates/firewall_list.htm b/interface/web/admin/templates/firewall_list.htm
index ac85f7e4fe..b40414a5da 100644
--- a/interface/web/admin/templates/firewall_list.htm
+++ b/interface/web/admin/templates/firewall_list.htm
@@ -40,7 +40,7 @@
                             <td><a href="#" data-load-content="admin/firewall_edit.php?id={tmpl_var name='id'}">{tmpl_var name="tcp_port"}</a></td>
                             <td><a href="#" data-load-content="admin/firewall_edit.php?id={tmpl_var name='id'}">{tmpl_var name="udp_port"}</a></td>
                             <td class="text-right">
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/firewall_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/firewall_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/admin/templates/groups_list.htm b/interface/web/admin/templates/groups_list.htm
index d53ee58b24..972ae64144 100644
--- a/interface/web/admin/templates/groups_list.htm
+++ b/interface/web/admin/templates/groups_list.htm
@@ -35,7 +35,7 @@
                             <td><a href="#" data-load-content="admin/groups_edit.php?id={tmpl_var name='id'}">{tmpl_var name="name"}</a></td>
                             <td><a href="#" data-load-content="admin/groups_edit.php?id={tmpl_var name='id'}">{tmpl_var name="description"}</a></td>
                             <td class="text-right">
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/groups_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/groups_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/admin/templates/iptables_list.htm b/interface/web/admin/templates/iptables_list.htm
index e1fcb3dc03..2adbd04627 100644
--- a/interface/web/admin/templates/iptables_list.htm
+++ b/interface/web/admin/templates/iptables_list.htm
@@ -51,7 +51,7 @@
                             <td><a href="#" data-load-content="admin/iptables_edit.php?id={tmpl_var name='id'}">{tmpl_var name="state"}</a></td>
                             <td><a href="#" data-load-content="admin/iptables_edit.php?id={tmpl_var name='id'}">{tmpl_var name="target"}</a></td>
                             <td class="text-right">
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/iptables_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/iptables_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/admin/templates/server_config_list.htm b/interface/web/admin/templates/server_config_list.htm
index ef0935552a..9284c5c354 100644
--- a/interface/web/admin/templates/server_config_list.htm
+++ b/interface/web/admin/templates/server_config_list.htm
@@ -24,7 +24,7 @@
                         <tr>
                             <td><a href="#" data-load-content="admin/server_config_edit.php?id={tmpl_var name='id'}">{tmpl_var name="server_name"}</a></td>
                             <td class="text-right">
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/server_config_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/server_config_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/admin/templates/server_ip_list.htm b/interface/web/admin/templates/server_ip_list.htm
index 892c263f20..c612e1ca64 100644
--- a/interface/web/admin/templates/server_ip_list.htm
+++ b/interface/web/admin/templates/server_ip_list.htm
@@ -45,7 +45,7 @@
                             <td><a href="#" data-load-content="admin/server_ip_edit.php?id={tmpl_var name='id'}">{tmpl_var name="virtualhost"}</a></td>
                             <td><a href="#" data-load-content="admin/server_ip_edit.php?id={tmpl_var name='id'}">{tmpl_var name="virtualhost_port"}</a></td>
                             <td class="text-right">
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/server_ip_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/server_ip_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/admin/templates/server_ip_map_list.htm b/interface/web/admin/templates/server_ip_map_list.htm
index a186e49b03..ea23856022 100644
--- a/interface/web/admin/templates/server_ip_map_list.htm
+++ b/interface/web/admin/templates/server_ip_map_list.htm
@@ -32,7 +32,7 @@
 					<td><a href="#" data-load-content="admin/server_ip_map_edit.php?id={tmpl_var name='id'}">{tmpl_var name="source_ip"}</a></td>
 					<td><a href="#" data-load-content="admin/server_ip_map_edit.php?id={tmpl_var name='id'}">{tmpl_var name="destination_ip"}</a></td>
 					<td class="text-right">
-						<a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/server_ip_map_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+						<a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/server_ip_map_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
 					</td>
 				</tr>
 			</tmpl_loop>
diff --git a/interface/web/admin/templates/server_list.htm b/interface/web/admin/templates/server_list.htm
index 1152909320..313fad7ff1 100644
--- a/interface/web/admin/templates/server_list.htm
+++ b/interface/web/admin/templates/server_list.htm
@@ -45,7 +45,7 @@
                             <td>{tmpl_var name="vserver_server"}</td>
                             <td>{tmpl_var name="xmpp_server"}</td>
                             <td class="text-right">
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/server_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/server_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/admin/templates/server_php_list.htm b/interface/web/admin/templates/server_php_list.htm
index 5a6392eea3..9833eb1e7e 100644
--- a/interface/web/admin/templates/server_php_list.htm
+++ b/interface/web/admin/templates/server_php_list.htm
@@ -39,7 +39,7 @@
                             <td><a href="#" data-load-content="admin/server_php_edit.php?id={tmpl_var name='id'}">{tmpl_var name="client_id"}</a></td>
                             <td><a href="#" data-load-content="admin/server_php_edit.php?id={tmpl_var name='id'}">{tmpl_var name="name"}</a></td>
                             <td class="text-right">
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/server_php_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/server_php_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/admin/templates/software_repo_list.htm b/interface/web/admin/templates/software_repo_list.htm
index 8b1a48b562..d408896de6 100644
--- a/interface/web/admin/templates/software_repo_list.htm
+++ b/interface/web/admin/templates/software_repo_list.htm
@@ -37,7 +37,7 @@
                             <td><a href="#" data-load-content="admin/software_repo_edit.php?id={tmpl_var name='id'}">{tmpl_var name="repo_name"}</a></td>
                             <td><a href="#" data-load-content="admin/software_repo_edit.php?id={tmpl_var name='id'}">{tmpl_var name="repo_url"}</a></td>
                             <td class="text-right">
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/software_repo_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/software_repo_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/admin/templates/users_list.htm b/interface/web/admin/templates/users_list.htm
index b7872527ff..8db81c6c8d 100644
--- a/interface/web/admin/templates/users_list.htm
+++ b/interface/web/admin/templates/users_list.htm
@@ -43,7 +43,7 @@
                             <td class="text-right">
                                 <tmpl_if name="username" op="!=" value="admin">
                                     <a class="btn btn-default formbutton-success formbutton-narrow" data-load-content="login/login_as.php?cid={tmpl_var name='client_id'}"><span class="icon icon-loginas"></span></a>
-                                    <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/users_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                    <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/users_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                                 </tmpl_if>
                             </td>
                         </tr>
diff --git a/interface/web/client/templates/client_circle_list.htm b/interface/web/client/templates/client_circle_list.htm
index 56bce62d6c..2cfbdf36e3 100644
--- a/interface/web/client/templates/client_circle_list.htm
+++ b/interface/web/client/templates/client_circle_list.htm
@@ -40,7 +40,7 @@
                             <td><a href="#" data-load-content="client/client_circle_edit.php?id={tmpl_var name='id'}">{tmpl_var name="circle_name"}</a></td>
                             <td><a href="#" data-load-content="client/client_circle_edit.php?id={tmpl_var name='id'}">{tmpl_var name="description"}</a></td>
                             <td class="text-right">
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('client/client_circle_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('client/client_circle_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/client/templates/client_message_template_list.htm b/interface/web/client/templates/client_message_template_list.htm
index d83a9f7dec..2f586c1ed7 100644
--- a/interface/web/client/templates/client_message_template_list.htm
+++ b/interface/web/client/templates/client_message_template_list.htm
@@ -32,7 +32,7 @@
             <td><a href="#" data-load-content="client/message_template_edit.php?id={tmpl_var name='id'}">{tmpl_var name="template_name"}</a></td>
             <td class="text-right">
               <div class="buttons icons16">
-                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('client/message_template_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('client/message_template_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
               </div>
             </td>
           </tr>
diff --git a/interface/web/client/templates/client_template_list.htm b/interface/web/client/templates/client_template_list.htm
index 37564f7197..887072b438 100644
--- a/interface/web/client/templates/client_template_list.htm
+++ b/interface/web/client/templates/client_template_list.htm
@@ -40,7 +40,7 @@
                             <td><a href="#" data-load-content="client/client_template_edit.php?id={tmpl_var name='id'}">{tmpl_var name="template_type"}</a></td>
                             <td><a href="#" data-load-content="client/client_template_edit.php?id={tmpl_var name='id'}">{tmpl_var name="template_name"}</a></td>
                             <td class="text-right">
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('client/client_template_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('client/client_template_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/client/templates/clients_list.htm b/interface/web/client/templates/clients_list.htm
index 7a538eba22..2ffd7dfa78 100644
--- a/interface/web/client/templates/clients_list.htm
+++ b/interface/web/client/templates/clients_list.htm
@@ -68,7 +68,7 @@
                                 <tmpl_elseif name="is_reseller">
                                     <a class="btn btn-default formbutton-success formbutton-narrow" data-load-content="login/login_as.php?cid={tmpl_var name='id'}"><span class="icon icon-loginas"></span></a>
                                 </tmpl_if>
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('client/client_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('client/client_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/client/templates/domain_list.htm b/interface/web/client/templates/domain_list.htm
index 8dda689cba..818812ddd9 100644
--- a/interface/web/client/templates/domain_list.htm
+++ b/interface/web/client/templates/domain_list.htm
@@ -32,7 +32,7 @@
                     <td><a href="#" data-load-content="client/domain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="domain"}</a></td>
                     <td><a href="#" data-load-content="client/domain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="sys_groupid"}</a></td>
                     <td class="text-right">
-                        <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('client/domain_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                        <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('client/domain_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                     </td>
                 </tr>
                 </tmpl_loop>
diff --git a/interface/web/client/templates/message_template_list.htm b/interface/web/client/templates/message_template_list.htm
index 5efaf5f23e..71011634f9 100644
--- a/interface/web/client/templates/message_template_list.htm
+++ b/interface/web/client/templates/message_template_list.htm
@@ -28,7 +28,7 @@
             <td><a href="#" data-load-content="billing/invoice_message_template_edit.php?id={tmpl_var name='id'}">{tmpl_var name="template_name"}</a></td>
             <td class="text-right">
               <div class="buttons icons16">    
-                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('billing/invoice_message_template_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('billing/invoice_message_template_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
               </div>
             </td>
           </tr>
diff --git a/interface/web/client/templates/resellers_list.htm b/interface/web/client/templates/resellers_list.htm
index 8edfa08546..1ccaffa07e 100644
--- a/interface/web/client/templates/resellers_list.htm
+++ b/interface/web/client/templates/resellers_list.htm
@@ -50,7 +50,7 @@
                             <td><a href="#" data-load-content="client/reseller_edit.php?id={tmpl_var name='id'}"><span class="flags flag-{tmpl_var name="countryiso"}">{tmpl_var name="country"}</span></a></td>
                             <td class="text-right">
                                 <a class="btn btn-default formbutton-success formbutton-narrow" data-load-content="login/login_as.php?cid={tmpl_var name='id'}"><span class="icon icon-loginas"></span></a>
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('client/reseller_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('client/reseller_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/dns/templates/dns_a_list.htm b/interface/web/dns/templates/dns_a_list.htm
index 67bf8ac910..5a4a5eeb68 100644
--- a/interface/web/dns/templates/dns_a_list.htm
+++ b/interface/web/dns/templates/dns_a_list.htm
@@ -75,7 +75,7 @@
                         <td><a href="#" data-load-content="dns/dns_{tmpl_var name='type_lowercase'}_edit.php?id={tmpl_var name='id'}">{tmpl_var name="aux"}</a></td>
                         <td><a href="#" data-load-content="dns/dns_{tmpl_var name='type_lowercase'}_edit.php?id={tmpl_var name='id'}">{tmpl_var name="ttl"}</a></td>
                         <td class="text-right">
-                            <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('dns/dns_rr_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                            <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('dns/dns_rr_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                         </td>
                     </tr>
                 </tmpl_loop>
diff --git a/interface/web/dns/templates/dns_slave_admin_list.htm b/interface/web/dns/templates/dns_slave_admin_list.htm
index f4395849be..3afaa91175 100644
--- a/interface/web/dns/templates/dns_slave_admin_list.htm
+++ b/interface/web/dns/templates/dns_slave_admin_list.htm
@@ -59,7 +59,7 @@
                         <td><a href="#" data-load-content="dns/dns_slave_edit.php?id={tmpl_var name='id'}">{tmpl_var name="origin"}</a></td>
                         <td><a href="#" data-load-content="dns/dns_slave_edit.php?id={tmpl_var name='id'}">{tmpl_var name="ns"}</a></td>
                         <td class="text-right">
-                            <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('dns/dns_slave_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                            <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('dns/dns_slave_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                         </td>
                     </tr>
                 </tmpl_loop>
diff --git a/interface/web/dns/templates/dns_slave_list.htm b/interface/web/dns/templates/dns_slave_list.htm
index 27916f4b25..799f14ba28 100644
--- a/interface/web/dns/templates/dns_slave_list.htm
+++ b/interface/web/dns/templates/dns_slave_list.htm
@@ -56,7 +56,7 @@
                         <td><a href="#" data-load-content="dns/dns_slave_edit.php?id={tmpl_var name='id'}">{tmpl_var name="origin"}</a></td>
                         <td><a href="#" data-load-content="dns/dns_slave_edit.php?id={tmpl_var name='id'}">{tmpl_var name="ns"}</a></td>
                         <td class="text-right">
-                            <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('dns/dns_slave_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                            <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('dns/dns_slave_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                         </td>
                     </tr>
                 </tmpl_loop>
diff --git a/interface/web/dns/templates/dns_soa_admin_list.htm b/interface/web/dns/templates/dns_soa_admin_list.htm
index fbdc0398ed..79faa645fe 100644
--- a/interface/web/dns/templates/dns_soa_admin_list.htm
+++ b/interface/web/dns/templates/dns_soa_admin_list.htm
@@ -64,7 +64,7 @@
                         <td><a href="#" data-load-content="dns/dns_soa_edit.php?id={tmpl_var name='id'}" data-toggle="tooltip" data-placement="bottom" title="{tmpl_var name='ns'}">{tmpl_var name="ns"}</a></td>
                         <td><a href="#" data-load-content="dns/dns_soa_edit.php?id={tmpl_var name='id'}" data-toggle="tooltip" data-placement="bottom" title="{tmpl_var name='mbox'}">{tmpl_var name="mbox"}</a></td>
                         <td class="text-right">   
-                            <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('dns/dns_soa_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                            <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('dns/dns_soa_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                         </td>
                     </tr>
                 </tmpl_loop>
diff --git a/interface/web/dns/templates/dns_soa_list.htm b/interface/web/dns/templates/dns_soa_list.htm
index 22cd19484e..df579e852a 100644
--- a/interface/web/dns/templates/dns_soa_list.htm
+++ b/interface/web/dns/templates/dns_soa_list.htm
@@ -61,7 +61,7 @@
                         <td><a href="#" data-load-content="dns/dns_soa_edit.php?id={tmpl_var name='id'}" data-toggle="tooltip" data-placement="bottom" title="{tmpl_var name='ns'}">{tmpl_var name="ns"}</a></td>
                         <td><a href="#" data-load-content="dns/dns_soa_edit.php?id={tmpl_var name='id'}" data-toggle="tooltip" data-placement="bottom" title="{tmpl_var name='mbox'}">{tmpl_var name="mbox"}</a></td>
                         <td class="text-right">   
-                            <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('dns/dns_soa_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                            <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('dns/dns_soa_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                         </td>
                     </tr>
                 </tmpl_loop>
diff --git a/interface/web/dns/templates/dns_template_list.htm b/interface/web/dns/templates/dns_template_list.htm
index f7816cf4d8..7622666940 100644
--- a/interface/web/dns/templates/dns_template_list.htm
+++ b/interface/web/dns/templates/dns_template_list.htm
@@ -34,7 +34,7 @@
                         <td><a href="#" data-load-content="dns/dns_template_edit.php?id={tmpl_var name='id'}">{tmpl_var name="visible"}</a></td>
                         <td><a href="#" data-load-content="dns/dns_template_edit.php?id={tmpl_var name='id'}">{tmpl_var name="name"}</a></td>
                         <td class="text-right">
-                            <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('dns/dns_template_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                            <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('dns/dns_template_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                         </td>
                     </tr>
                 </tmpl_loop>
diff --git a/interface/web/help/templates/support_message_list.htm b/interface/web/help/templates/support_message_list.htm
index 3094b96728..c0b4b75d74 100644
--- a/interface/web/help/templates/support_message_list.htm
+++ b/interface/web/help/templates/support_message_list.htm
@@ -37,7 +37,7 @@
                             <td><a href="#" data-load-content="help/support_message_edit.php?id={tmpl_var name='id'}">{tmpl_var name="subject"}</a></td>
 							<td><a href="#" data-load-content="help/support_message_edit.php?id={tmpl_var name='id'}">{tmpl_var name="tstamp"}</a></td>
                             <td class="text-right">
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('help/support_message_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('help/support_message_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/mail/templates/mail_alias_list.htm b/interface/web/mail/templates/mail_alias_list.htm
index 5f19fba138..f65e40a908 100644
--- a/interface/web/mail/templates/mail_alias_list.htm
+++ b/interface/web/mail/templates/mail_alias_list.htm
@@ -53,7 +53,7 @@
                             <td><a href="#" data-load-content="mail/mail_alias_edit.php?id={tmpl_var name='id'}">{tmpl_var name="source"}</a></td>
                             <td><a href="#" data-load-content="mail/mail_alias_edit.php?id={tmpl_var name='id'}">{tmpl_var name="destination"}</a></td>
                             <td class="text-right">
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_alias_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_alias_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/mail/templates/mail_aliasdomain_list.htm b/interface/web/mail/templates/mail_aliasdomain_list.htm
index 6ce208b48b..06166ae3c4 100644
--- a/interface/web/mail/templates/mail_aliasdomain_list.htm
+++ b/interface/web/mail/templates/mail_aliasdomain_list.htm
@@ -53,7 +53,7 @@
                             <td><a href="#" data-load-content="mail/mail_aliasdomain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="source"}</a></td>
                             <td><a href="#" data-load-content="mail/mail_aliasdomain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="destination"}</a></td>
                             <td class="text-right">
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_aliasdomain_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_aliasdomain_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/mail/templates/mail_blacklist_list.htm b/interface/web/mail/templates/mail_blacklist_list.htm
index b023f54042..a52c797e8b 100644
--- a/interface/web/mail/templates/mail_blacklist_list.htm
+++ b/interface/web/mail/templates/mail_blacklist_list.htm
@@ -56,7 +56,7 @@
                             <td><a href="#" data-load-content="mail/mail_blacklist_edit.php?id={tmpl_var name='id'}">{tmpl_var name="source"}</a></td>
                             <td><a href="#" data-load-content="mail/mail_blacklist_edit.php?id={tmpl_var name='id'}">{tmpl_var name="type"}</a></td>
                             <td class="text-right">
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_blacklist_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_blacklist_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/mail/templates/mail_content_filter_list.htm b/interface/web/mail/templates/mail_content_filter_list.htm
index 01689aa4d6..5dcd8e7ff9 100644
--- a/interface/web/mail/templates/mail_content_filter_list.htm
+++ b/interface/web/mail/templates/mail_content_filter_list.htm
@@ -56,7 +56,7 @@
                             <td><a href="#" data-load-content="mail/mail_content_filter_edit.php?id={tmpl_var name='id'}">{tmpl_var name="pattern"}</a></td>
                             <td><a href="#" data-load-content="mail/mail_content_filter_edit.php?id={tmpl_var name='id'}">{tmpl_var name="action"}</a></td>
                             <td class="text-right">
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_content_filter_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_content_filter_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/mail/templates/mail_domain_admin_list.htm b/interface/web/mail/templates/mail_domain_admin_list.htm
index 1b2b41f392..69680cf308 100644
--- a/interface/web/mail/templates/mail_domain_admin_list.htm
+++ b/interface/web/mail/templates/mail_domain_admin_list.htm
@@ -39,7 +39,7 @@
                             <td><a href="#" data-load-content="mail/mail_domain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="server_id"}</a></td>
                             <td><a href="#" data-load-content="mail/mail_domain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="domain"}</a></td>
                             <td class="text-right">
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_domain_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_domain_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/mail/templates/mail_domain_catchall_list.htm b/interface/web/mail/templates/mail_domain_catchall_list.htm
index 29483ae3d0..a9c0d9acd7 100644
--- a/interface/web/mail/templates/mail_domain_catchall_list.htm
+++ b/interface/web/mail/templates/mail_domain_catchall_list.htm
@@ -53,7 +53,7 @@
                             <td><a href="#" data-load-content="mail/mail_domain_catchall_edit.php?id={tmpl_var name='id'}">{tmpl_var name="source"}</a></td>
                             <td><a href="#" data-load-content="mail/mail_domain_catchall_edit.php?id={tmpl_var name='id'}">{tmpl_var name="destination"}</a></td>
                             <td class="text-right">
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_domain_catchall_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_domain_catchall_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/mail/templates/mail_domain_list.htm b/interface/web/mail/templates/mail_domain_list.htm
index bb1eba146b..f0d6e532e7 100644
--- a/interface/web/mail/templates/mail_domain_list.htm
+++ b/interface/web/mail/templates/mail_domain_list.htm
@@ -53,7 +53,7 @@
                             <td><a href="#" data-load-content="mail/mail_domain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="server_id"}</a></td>
                             <td><a href="#" data-load-content="mail/mail_domain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="domain"}</a></td>
                             <td class="text-right">
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_domain_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_domain_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/mail/templates/mail_forward_list.htm b/interface/web/mail/templates/mail_forward_list.htm
index bb4b95ed12..c4d7e1f60a 100644
--- a/interface/web/mail/templates/mail_forward_list.htm
+++ b/interface/web/mail/templates/mail_forward_list.htm
@@ -53,7 +53,7 @@
                             <td><a href="#" data-load-content="mail/mail_forward_edit.php?id={tmpl_var name='id'}">{tmpl_var name="source"}</a></td>
                             <td><a href="#" data-load-content="mail/mail_forward_edit.php?id={tmpl_var name='id'}">{tmpl_var name="destination"}</a></td>
                             <td class="text-right">
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_forward_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_forward_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/mail/templates/mail_get_list.htm b/interface/web/mail/templates/mail_get_list.htm
index 58a550a7d1..747220c2da 100644
--- a/interface/web/mail/templates/mail_get_list.htm
+++ b/interface/web/mail/templates/mail_get_list.htm
@@ -59,7 +59,7 @@
                             <td><a href="#" data-load-content="mail/mail_get_edit.php?id={tmpl_var name='id'}">{tmpl_var name="source_username"}</a></td>
                             <td><a href="#" data-load-content="mail/mail_get_edit.php?id={tmpl_var name='id'}">{tmpl_var name="destination"}</a></td>
                             <td class="text-right">
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_get_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_get_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/mail/templates/mail_mailinglist_list.htm b/interface/web/mail/templates/mail_mailinglist_list.htm
index 7e15df3aad..78e216dc08 100644
--- a/interface/web/mail/templates/mail_mailinglist_list.htm
+++ b/interface/web/mail/templates/mail_mailinglist_list.htm
@@ -52,7 +52,7 @@
                                 <tmpl_if name="mailmailinglist_link">
                                     <a class="btn btn-default formbutton-default formbutton-narrow" href="mail/mailinglist.php?id={tmpl_var name='id'}" target="mailmailinglist"><span class="icon icon-mail"></span></a>
                                 </tmpl_if>
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_mailinglist_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_mailinglist_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/mail/templates/mail_relay_recipient_list.htm b/interface/web/mail/templates/mail_relay_recipient_list.htm
index 7dac3e7ce5..3aeeb12e6c 100644
--- a/interface/web/mail/templates/mail_relay_recipient_list.htm
+++ b/interface/web/mail/templates/mail_relay_recipient_list.htm
@@ -52,7 +52,7 @@
                             <td><a href="#" data-load-content="mail/mail_relay_recipient_edit.php?id={tmpl_var name='id'}">{tmpl_var name="server_id"}</a></td>
                             <td><a href="#" data-load-content="mail/mail_relay_recipient_edit.php?id={tmpl_var name='id'}">{tmpl_var name="source"}</a></td>
                             <td class="text-right">
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_relay_recipient_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_relay_recipient_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/mail/templates/mail_transport_list.htm b/interface/web/mail/templates/mail_transport_list.htm
index 4b4b2d9e53..9795f0093e 100644
--- a/interface/web/mail/templates/mail_transport_list.htm
+++ b/interface/web/mail/templates/mail_transport_list.htm
@@ -59,7 +59,7 @@
                             <td><a href="#" data-load-content="mail/mail_transport_edit.php?id={tmpl_var name='id'}">{tmpl_var name="transport"}</a></td>
                             <td><a href="#" data-load-content="mail/mail_transport_edit.php?id={tmpl_var name='id'}">{tmpl_var name="sort_order"}</a></td>
                             <td class="text-right">
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_transport_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_transport_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/mail/templates/mail_user_filter_list.htm b/interface/web/mail/templates/mail_user_filter_list.htm
index 990558bd11..c38df26a8e 100644
--- a/interface/web/mail/templates/mail_user_filter_list.htm
+++ b/interface/web/mail/templates/mail_user_filter_list.htm
@@ -42,7 +42,7 @@
                     <tr>
                         <td><a href="#" data-load-content="mail/mail_user_filter_edit.php?id={tmpl_var name='id'}">{tmpl_var name="rulename"}</a></td>
                         <td class="text-right">
-                            <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_user_filter_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                            <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_user_filter_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                         </td>
                     </tr>
                 </tmpl_loop>
diff --git a/interface/web/mail/templates/mail_user_list.htm b/interface/web/mail/templates/mail_user_list.htm
index 4e2fedd50c..6d800de57e 100644
--- a/interface/web/mail/templates/mail_user_list.htm
+++ b/interface/web/mail/templates/mail_user_list.htm
@@ -75,7 +75,7 @@
                             <tmpl_if name="mailboxlist_webmail_link">
                                 <a class="btn btn-default formbutton-default formbutton-narrow" href="mail/webmailer.php?id={tmpl_var name='id'}" target="webmail"><span class="icon icon-mail"></span></a>
                             </tmpl_if>
-                            <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_user_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                            <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_user_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                         </td>
                     </tr>
                 </tmpl_loop>
diff --git a/interface/web/mail/templates/mail_whitelist_list.htm b/interface/web/mail/templates/mail_whitelist_list.htm
index cb3b783e7f..dcc018f717 100644
--- a/interface/web/mail/templates/mail_whitelist_list.htm
+++ b/interface/web/mail/templates/mail_whitelist_list.htm
@@ -40,7 +40,7 @@
                             <td><a href="#" data-load-content="mail/mail_whitelist_edit.php?id={tmpl_var name='id'}">{tmpl_var name="source"}</a></td>
                             <td><a href="#" data-load-content="mail/mail_whitelist_edit.php?id={tmpl_var name='id'}">{tmpl_var name="type"}</a></td>
                             <td class="text-right">
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_whitelist_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_whitelist_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/mail/templates/spamfilter_blacklist_list.htm b/interface/web/mail/templates/spamfilter_blacklist_list.htm
index 91a45916ba..ae013bdff4 100644
--- a/interface/web/mail/templates/spamfilter_blacklist_list.htm
+++ b/interface/web/mail/templates/spamfilter_blacklist_list.htm
@@ -43,7 +43,7 @@
                             <td><a href="#" data-load-content="mail/spamfilter_blacklist_edit.php?id={tmpl_var name='id'}">{tmpl_var name="rid"}</a></td>
                             <td><a href="#" data-load-content="mail/spamfilter_blacklist_edit.php?id={tmpl_var name='id'}">{tmpl_var name="email"}</a></td>
                             <td class="text-right">
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/spamfilter_blacklist_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/spamfilter_blacklist_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/mail/templates/spamfilter_config_list.htm b/interface/web/mail/templates/spamfilter_config_list.htm
index 486a79e6d9..3bcac6767a 100644
--- a/interface/web/mail/templates/spamfilter_config_list.htm
+++ b/interface/web/mail/templates/spamfilter_config_list.htm
@@ -31,7 +31,7 @@
                         <tr>
                             <td><a href="#" data-load-content="mail/spamfilter_config_edit.php?id={tmpl_var name='id'}">{tmpl_var name="server_name"}</a></td>
                             <td class="text-right">
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/spamfilter_config_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/spamfilter_config_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/mail/templates/spamfilter_policy_list.htm b/interface/web/mail/templates/spamfilter_policy_list.htm
index 0dd72dee54..665fa613af 100644
--- a/interface/web/mail/templates/spamfilter_policy_list.htm
+++ b/interface/web/mail/templates/spamfilter_policy_list.htm
@@ -49,7 +49,7 @@
                         <td><a href="#" data-load-content="mail/spamfilter_policy_edit.php?id={tmpl_var name='id'}">{tmpl_var name="bad_header_lover"}</a></td>
 						</tmpl_if>
                         <td class="text-right">
-                            <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/spamfilter_policy_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                            <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/spamfilter_policy_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                         </td>
                     </tr>
                 </tmpl_loop>
diff --git a/interface/web/mail/templates/spamfilter_users_list.htm b/interface/web/mail/templates/spamfilter_users_list.htm
index 5f8ef83bae..d13fe32ccb 100644
--- a/interface/web/mail/templates/spamfilter_users_list.htm
+++ b/interface/web/mail/templates/spamfilter_users_list.htm
@@ -43,7 +43,7 @@
                         <td><a href="#" data-load-content="mail/spamfilter_users_edit.php?id={tmpl_var name='id'}">{tmpl_var name="policy_id"}</a></td>
                         <td><a href="#" data-load-content="mail/spamfilter_users_edit.php?id={tmpl_var name='id'}">{tmpl_var name="fullname"}</a></td>
                         <td class="text-right">
-                            <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/spamfilter_users_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                            <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/spamfilter_users_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                         </td>
                     </tr>
                     </tmpl_loop>
diff --git a/interface/web/mail/templates/spamfilter_whitelist_list.htm b/interface/web/mail/templates/spamfilter_whitelist_list.htm
index 87ef0bde23..614f2a8f5e 100644
--- a/interface/web/mail/templates/spamfilter_whitelist_list.htm
+++ b/interface/web/mail/templates/spamfilter_whitelist_list.htm
@@ -43,7 +43,7 @@
                             <td><a href="#" data-load-content="mail/spamfilter_whitelist_edit.php?id={tmpl_var name='id'}">{tmpl_var name="rid"}</a></td>
                             <td><a href="#" data-load-content="mail/spamfilter_whitelist_edit.php?id={tmpl_var name='id'}">{tmpl_var name="email"}</a></td>
                             <td class="text-right">
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/spamfilter_whitelist_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></button>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/spamfilter_whitelist_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></button>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/mail/templates/xmpp_domain_admin_list.htm b/interface/web/mail/templates/xmpp_domain_admin_list.htm
index ccda2d5032..c6338037f1 100644
--- a/interface/web/mail/templates/xmpp_domain_admin_list.htm
+++ b/interface/web/mail/templates/xmpp_domain_admin_list.htm
@@ -39,7 +39,7 @@
                             <td><a href="#" data-load-content="mail/xmpp_domain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="server_id"}</a></td>
                             <td><a href="#" data-load-content="mail/xmpp_domain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="domain"}</a></td>
                             <td class="text-right">
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/xmpp_domain_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></button>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/xmpp_domain_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></button>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/mail/templates/xmpp_domain_list.htm b/interface/web/mail/templates/xmpp_domain_list.htm
index 79579142d7..dff0adb399 100644
--- a/interface/web/mail/templates/xmpp_domain_list.htm
+++ b/interface/web/mail/templates/xmpp_domain_list.htm
@@ -53,7 +53,7 @@
                             <td><a href="#" data-load-content="mail/xmpp_domain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="server_id"}</a></td>
                             <td><a href="#" data-load-content="mail/xmpp_domain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="domain"}</a></td>
                             <td class="text-right">
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/xmpp_domain_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></button>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/xmpp_domain_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></button>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/mail/templates/xmpp_user_list.htm b/interface/web/mail/templates/xmpp_user_list.htm
index 68668b4928..bb8e91c6d0 100644
--- a/interface/web/mail/templates/xmpp_user_list.htm
+++ b/interface/web/mail/templates/xmpp_user_list.htm
@@ -53,7 +53,7 @@
                         <td><a href="#" data-load-content="mail/xmpp_user_edit.php?id={tmpl_var name='id'}">{tmpl_var name="is_domain_admin"}</a></td>
                         <td><a href="#" data-load-content="mail/xmpp_user_edit.php?id={tmpl_var name='id'}">{tmpl_var name="is_muc_admin"}</a></td>
                         <td class="text-right">
-                            <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/xmpp_user_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></button>
+                            <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/xmpp_user_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></button>
                         </td>
                     </tr>
                 </tmpl_loop>
diff --git a/interface/web/mailuser/templates/mail_user_filter_list.htm b/interface/web/mailuser/templates/mail_user_filter_list.htm
index 32d093844e..b81793b631 100644
--- a/interface/web/mailuser/templates/mail_user_filter_list.htm
+++ b/interface/web/mailuser/templates/mail_user_filter_list.htm
@@ -30,7 +30,7 @@
                 <tr>
                     <td><a href="#" data-load-content="mailuser/mail_user_filter_edit.php?id={tmpl_var name='id'}">{tmpl_var name="rulename"}</a></td>
                     <td class="text-right">
-                        <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mailuser/mail_user_filter_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                        <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mailuser/mail_user_filter_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                     </td>
                 </tr>
                 </tmpl_loop>
diff --git a/interface/web/monitor/templates/datalog_list.htm b/interface/web/monitor/templates/datalog_list.htm
index eb79f46b54..53ca89997f 100644
--- a/interface/web/monitor/templates/datalog_list.htm
+++ b/interface/web/monitor/templates/datalog_list.htm
@@ -33,7 +33,7 @@
                             <td>{tmpl_var name="action"}</td>
                             <td>{tmpl_var name="dbtable"}</td>
                             <td class="text-right">    
-                                <!--<a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('monitor/datalog_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> -->
+                                <!--<a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('monitor/datalog_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> -->
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/monitor/templates/syslog_list.htm b/interface/web/monitor/templates/syslog_list.htm
index 8f62422a84..7196e3ab02 100644
--- a/interface/web/monitor/templates/syslog_list.htm
+++ b/interface/web/monitor/templates/syslog_list.htm
@@ -34,10 +34,10 @@
                             <td>{tmpl_var name="message"}</td>
                             <td class="text-right">
                                 <tmpl_if name="loglevel" op="==" value="Error">
-                                    <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('monitor/log_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                    <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('monitor/log_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                                 </tmpl_if>
                                 <tmpl_if name="loglevel" op="==" value="Warning">
-                                    <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('monitor/log_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                    <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('monitor/log_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                                 </tmpl_if>
                             </td>
                         </tr>
diff --git a/interface/web/sites/templates/cron_list.htm b/interface/web/sites/templates/cron_list.htm
index b38a6224a5..fbca26a844 100644
--- a/interface/web/sites/templates/cron_list.htm
+++ b/interface/web/sites/templates/cron_list.htm
@@ -56,7 +56,7 @@
                             <td><a href="#" data-load-content="sites/cron_edit.php?id={tmpl_var name='id'}" data-toggle="tooltip" data-placement="bottom" title="{tmpl_var name='command'}">{tmpl_var name="command"}</a></td>
                             <td class="text-right">
                                 <div class="buttons icons16">    
-                                    <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/cron_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                    <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/cron_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                                 </div>
                             </td>
                         </tr>
diff --git a/interface/web/sites/templates/database_admin_list.htm b/interface/web/sites/templates/database_admin_list.htm
index aad56db337..724027ca91 100644
--- a/interface/web/sites/templates/database_admin_list.htm
+++ b/interface/web/sites/templates/database_admin_list.htm
@@ -61,7 +61,7 @@
                                     <a class="btn btn-default formbutton-default formbutton-narrow" href="sites/database_phpmyadmin.php?id={tmpl_var name='id'}" target="phpmyadmin"><span class="icon icon-dbadmin"></span></a>
                                 </tmpl_if>
                                 <a class="btn btn-default formbutton-default formbutton-narrow" data-load-content="sites/database_edit.php?id={tmpl_var name='id'}"><span class="icon icon-edit"></span></a>
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/database_del.php?id={tmpl_var name='id'}&amp;phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/database_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&amp;phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/sites/templates/database_list.htm b/interface/web/sites/templates/database_list.htm
index 0d0aaca923..208741ff5a 100644
--- a/interface/web/sites/templates/database_list.htm
+++ b/interface/web/sites/templates/database_list.htm
@@ -75,7 +75,7 @@
                                     <a class="btn btn-default formbutton-default formbutton-narrow" href="sites/database_phpmyadmin.php?id={tmpl_var name='id'}" target="phpmyadmin"><span class="icon icon-dbadmin"></span></a>
                                 </tmpl_if>
                                 <a class="btn btn-default formbutton-default formbutton-narrow" data-load-content="sites/database_edit.php?id={tmpl_var name='id'}"><span class="icon icon-edit"></span></a>
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/database_del.php?id={tmpl_var name='id'}&amp;phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/database_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&amp;phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/sites/templates/database_user_admin_list.htm b/interface/web/sites/templates/database_user_admin_list.htm
index 2d7ece0b87..0b7eb1be09 100644
--- a/interface/web/sites/templates/database_user_admin_list.htm
+++ b/interface/web/sites/templates/database_user_admin_list.htm
@@ -33,7 +33,7 @@
                             <td><a href="#" data-load-content="sites/database_user_edit.php?id={tmpl_var name='id'}">{tmpl_var name="sys_groupid"}</a></td>                            
                             <td class="text-right">
                                 <a class="btn btn-default formbutton-default formbutton-narrow" data-load-content="sites/database_user_edit.php?id={tmpl_var name='id'}"><span class="icon icon-edit"></span></a>
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/database_user_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/database_user_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/sites/templates/database_user_list.htm b/interface/web/sites/templates/database_user_list.htm
index b29d5c0600..3cca7ec510 100644
--- a/interface/web/sites/templates/database_user_list.htm
+++ b/interface/web/sites/templates/database_user_list.htm
@@ -46,7 +46,7 @@
                             <td><a href="#" data-load-content="sites/database_user_edit.php?id={tmpl_var name='id'}">{tmpl_var name="database_user"}</a></td>
                             <td class="text-right">
                                 <a class="btn btn-default formbutton-default formbutton-narrow" data-load-content="sites/database_user_edit.php?id={tmpl_var name='id'}"><span class="icon icon-edit"></span></a>
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/database_user_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/database_user_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/sites/templates/ftp_user_list.htm b/interface/web/sites/templates/ftp_user_list.htm
index 43650dac89..bd807c5072 100644
--- a/interface/web/sites/templates/ftp_user_list.htm
+++ b/interface/web/sites/templates/ftp_user_list.htm
@@ -59,7 +59,7 @@
                             <tmpl_if name="webftp_link">
                                 <a class="btn btn-default formbutton-default formbutton-narrow" href="{tmpl_var name='webftp_url'}" target="_blank"><span class="icon icon-dbadmin"></span></button>
                             </tmpl_if>
-                            <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/ftp_user_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></button>
+                            <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/ftp_user_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></button>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/sites/templates/shell_user_list.htm b/interface/web/sites/templates/shell_user_list.htm
index 9be1d8485d..53eb6906fa 100644
--- a/interface/web/sites/templates/shell_user_list.htm
+++ b/interface/web/sites/templates/shell_user_list.htm
@@ -56,7 +56,7 @@
                             <td><a href="#" data-load-content="sites/shell_user_edit.php?id={tmpl_var name='id'}">{tmpl_var name="parent_domain_id"}</a></td>
                             <td><a href="#" data-load-content="sites/shell_user_edit.php?id={tmpl_var name='id'}">{tmpl_var name="username"}</a></td>
                             <td class="text-right">
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/shell_user_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/shell_user_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/sites/templates/web_childdomain_list.htm b/interface/web/sites/templates/web_childdomain_list.htm
index 51aadc157a..8aa5dc3447 100644
--- a/interface/web/sites/templates/web_childdomain_list.htm
+++ b/interface/web/sites/templates/web_childdomain_list.htm
@@ -56,7 +56,7 @@
                             <td><a href="#" data-load-content="sites/web_childdomain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="parent_domain_id"}</a></td>
                             <td><a href="#" data-load-content="sites/web_childdomain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="domain"}</a></td>
                             <td class="text-right">
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/web_childdomain_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/web_childdomain_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/sites/templates/web_folder_list.htm b/interface/web/sites/templates/web_folder_list.htm
index aaccb48895..e512b8b594 100644
--- a/interface/web/sites/templates/web_folder_list.htm
+++ b/interface/web/sites/templates/web_folder_list.htm
@@ -55,7 +55,7 @@
                         <td><a href="#" data-load-content="sites/web_folder_edit.php?id={tmpl_var name='id'}">{tmpl_var name="parent_domain_id"}</a></td>
                         <td><a href="#" data-load-content="sites/web_folder_edit.php?id={tmpl_var name='id'}">{tmpl_var name="path"}</a></td>
                         <td class="text-right">
-                            <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/web_folder_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                            <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/web_folder_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                         </td>
                     </tr>
                 </tmpl_loop>
diff --git a/interface/web/sites/templates/web_folder_user_list.htm b/interface/web/sites/templates/web_folder_user_list.htm
index 6b67e0591c..8e1d77e25d 100644
--- a/interface/web/sites/templates/web_folder_user_list.htm
+++ b/interface/web/sites/templates/web_folder_user_list.htm
@@ -52,7 +52,7 @@
                         <td><a href="#" data-load-content="sites/web_folder_user_edit.php?id={tmpl_var name='id'}">{tmpl_var name="web_folder_id"}</a></td>
                         <td><a href="#" data-load-content="sites/web_folder_user_edit.php?id={tmpl_var name='id'}">{tmpl_var name="username"}</a></td>
                         <td class="text-right">
-                            <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/web_folder_user_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                            <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/web_folder_user_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                         </td>
                     </tr>
                 </tmpl_loop>
diff --git a/interface/web/sites/templates/web_vhost_domain_admin_list.htm b/interface/web/sites/templates/web_vhost_domain_admin_list.htm
index 6f0e8f39ca..1ab14300d0 100644
--- a/interface/web/sites/templates/web_vhost_domain_admin_list.htm
+++ b/interface/web/sites/templates/web_vhost_domain_admin_list.htm
@@ -47,7 +47,7 @@
                         <td class="text-right">
 							<a href="http://{tmpl_var name="domain"}" target="_blank" class="btn btn-default formbutton-default formbutton-narrow"><span class="icon icon-link"></span></a>
 							<a href="http://{tmpl_var name="domain"}/stats/" target="_blank" class="btn btn-default formbutton-default formbutton-narrow"><span class="glyphicon glyphicon-signal"></span></a>
-                            <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/web_vhost_domain_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                            <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/web_vhost_domain_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                         </td>
                     </tr>
                 </tmpl_loop>
diff --git a/interface/web/sites/templates/web_vhost_domain_list.htm b/interface/web/sites/templates/web_vhost_domain_list.htm
index b784f15965..105dac9399 100644
--- a/interface/web/sites/templates/web_vhost_domain_list.htm
+++ b/interface/web/sites/templates/web_vhost_domain_list.htm
@@ -61,7 +61,7 @@
                         <td class="text-right">
 							<a href="http://{tmpl_var name="domain"}" target="_blank" class="btn btn-default formbutton-default formbutton-narrow"><span class="icon icon-link"></span></button>
                             <a href="http://{tmpl_var name="domain"}/stats/" target="_blank" class="btn btn-default formbutton-default formbutton-narrow"><span class="glyphicon glyphicon-signal"></span></a>
-							<a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/web_vhost_domain_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></button>
+							<a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/web_vhost_domain_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></button>
                         </td>
                     </tr>
                 </tmpl_loop>
diff --git a/interface/web/sites/templates/webdav_user_list.htm b/interface/web/sites/templates/webdav_user_list.htm
index 01764cc2fe..866bcc9826 100644
--- a/interface/web/sites/templates/webdav_user_list.htm
+++ b/interface/web/sites/templates/webdav_user_list.htm
@@ -56,7 +56,7 @@
                             <td><a href="#" data-load-content="sites/webdav_user_edit.php?id={tmpl_var name='id'}">{tmpl_var name="parent_domain_id"}</a></td>
                             <td><a href="#" data-load-content="sites/webdav_user_edit.php?id={tmpl_var name='id'}">{tmpl_var name="username"}</a></td>
                             <td class="text-right">
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/webdav_user_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/webdav_user_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/vm/templates/openvz_ip_list.htm b/interface/web/vm/templates/openvz_ip_list.htm
index fd12694c37..ff98e2df55 100644
--- a/interface/web/vm/templates/openvz_ip_list.htm
+++ b/interface/web/vm/templates/openvz_ip_list.htm
@@ -39,7 +39,7 @@
                             <td><a href="#" data-load-content="vm/openvz_ip_edit.php?id={tmpl_var name='id'}">{tmpl_var name="ip_address"}</a></td>
                             <td><a href="#" data-load-content="vm/openvz_ip_edit.php?id={tmpl_var name='id'}">{tmpl_var name="reserved"}</a></td>
                             <td class="text-right">
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('vm/openvz_ip_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('vm/openvz_ip_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/vm/templates/openvz_ostemplate_list.htm b/interface/web/vm/templates/openvz_ostemplate_list.htm
index 85f46e6732..d800686e1c 100644
--- a/interface/web/vm/templates/openvz_ostemplate_list.htm
+++ b/interface/web/vm/templates/openvz_ostemplate_list.htm
@@ -42,7 +42,7 @@
                             <td><a href="#" data-load-content="vm/openvz_ostemplate_edit.php?id={tmpl_var name='id'}">{tmpl_var name="server_id"}</a></td>
                             <td><a href="#" data-load-content="vm/openvz_ostemplate_edit.php?id={tmpl_var name='id'}">{tmpl_var name="allservers"}</a></td>
                             <td class="text-right">
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('vm/openvz_ostemplate_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('vm/openvz_ostemplate_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/vm/templates/openvz_template_list.htm b/interface/web/vm/templates/openvz_template_list.htm
index 5ec0cb7913..2c20427901 100644
--- a/interface/web/vm/templates/openvz_template_list.htm
+++ b/interface/web/vm/templates/openvz_template_list.htm
@@ -33,7 +33,7 @@
                             <td><a href="#" data-load-content="vm/openvz_template_edit.php?id={tmpl_var name='id'}">{tmpl_var name="active"}</a></td>
                             <td><a href="#" data-load-content="vm/openvz_template_edit.php?id={tmpl_var name='id'}">{tmpl_var name="template_name"}</a></td>
                             <td class="text-right">
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('vm/openvz_template_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('vm/openvz_template_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
diff --git a/interface/web/vm/templates/openvz_vm_list.htm b/interface/web/vm/templates/openvz_vm_list.htm
index 516b536bb3..ee4084f4d1 100644
--- a/interface/web/vm/templates/openvz_vm_list.htm
+++ b/interface/web/vm/templates/openvz_vm_list.htm
@@ -49,7 +49,7 @@
                             <td><a href="#" data-load-content="vm/openvz_vm_edit.php?id={tmpl_var name='id'}">{tmpl_var name="ip_address"}</a></td>
                             <td class="text-right">
                                 <a class="btn btn-default formbutton-default formbutton-narrow" data-load-content="vm/openvz_action.php?id={tmpl_var name='id'}"><span class="icon icon-action"></span></a>
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('vm/openvz_vm_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('vm/openvz_vm_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
-- 
GitLab


From e958363340da23d59f2dd69bf25bda98b3913850 Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Thu, 3 Oct 2019 16:56:59 +0200
Subject: [PATCH 065/242] Fixedm code typo in nginx_plugin.inc.php

---
 server/plugins-available/nginx_plugin.inc.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php
index 86d5aba14f..a8a3c3bf16 100644
--- a/server/plugins-available/nginx_plugin.inc.php
+++ b/server/plugins-available/nginx_plugin.inc.php
@@ -694,7 +694,7 @@ class nginx_plugin {
 			
 			//* Copy the web skeleton files only when there is no index.ph or index.html file yet
 			if(!file_exists($data['new']['document_root'].'/'.$web_folder.'/index.html') && !file_exists($data['new']['document_root'].'/'.$web_folder.'/index.php')) {
-				if (file_exists($conf['rootpath'] . '/conf-custom/index/standard_index.html_'.substr($conf['language']), 0, 2)) {
+				if (file_exists($conf['rootpath'] . '/conf-custom/index/standard_index.html_'.substr($conf['language'], 0, 2))) {
 					if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/index.html')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf-custom/index/standard_index.html_'.substr($conf['language'], 0, 2), $data['new']['document_root'].'/' . $web_folder . '/index.html');
 
 					if(is_file($conf['rootpath'] . '/conf-custom/index/favicon.ico')) {
-- 
GitLab


From 9d5bde2cf44500d2815a93d7f60deb61ca5db9e2 Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Fri, 4 Oct 2019 10:32:48 +0200
Subject: [PATCH 066/242] - Don't pass password to useradd and use chpasswd
 with proc_open instead, fixes #5416

---
 server/lib/classes/system.inc.php             | 27 +++++++++++++++++++
 .../shelluser_base_plugin.inc.php             | 12 +++++++--
 2 files changed, 37 insertions(+), 2 deletions(-)

diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php
index c05d5ddf00..525bd7bda1 100644
--- a/server/lib/classes/system.inc.php
+++ b/server/lib/classes/system.inc.php
@@ -2191,4 +2191,31 @@ class system{
 		return true;
 	}
 	
+	
+	public function pipe_exec($cmd, $stdin, &$retval = null, &$stderr = null) {
+		$descriptors = array(
+			0 => array('pipe', 'r'),
+			1 => array('pipe', 'w'),
+			2 => array('pipe', 'w')
+		);
+		
+		$result = '';
+		$pipes = null;
+		$proc = proc_open($cmd, $descriptors, $pipes);
+		if(is_resource($proc)) {
+			fwrite($pipes[0], $stdin);
+			fclose($pipes[0]);
+			
+			$result = stream_get_contents($pipes[1]);
+			$stderr = stream_get_contents($pipes[2]);
+			fclose($pipes[1]);
+			fclose($pipes[2]);
+			
+			$retval = proc_close($proc);
+			
+			return $result;
+		} else {
+			return false;
+		}
+	}
 }
diff --git a/server/plugins-available/shelluser_base_plugin.inc.php b/server/plugins-available/shelluser_base_plugin.inc.php
index b4e47b4e97..9f19c2be58 100755
--- a/server/plugins-available/shelluser_base_plugin.inc.php
+++ b/server/plugins-available/shelluser_base_plugin.inc.php
@@ -129,12 +129,20 @@ class shelluser_base_plugin {
 					$app->system->chgrp($homedir,$data['new']['pgroup'],false);
 				}
 				$command = 'useradd -d ? -g ? -o'; // non unique
-				if($data['new']['password'] != '') $command .= ' -p ' . escapeshellarg($data['new']['password']);
 				$command .= ' -s ? -u ? ?';
 				$app->system->exec_safe($command, $homedir, $data['new']['pgroup'], $data['new']['shell'], $uid, $data['new']['username']);
 				$app->log("Executed command: ".$command, LOGLEVEL_DEBUG);
 				$app->log("Added shelluser: ".$data['new']['username'], LOGLEVEL_DEBUG);
-				
+
+				if($data['new']['password'] != '') {
+					$retval = null;
+					$stderr = '';
+					$app->system->pipe_exec('chpasswd -e ' . escapeshellarg($data['new']['username']), $data['new']['username'] . ':' . $data['new']['password'], $retval, $stderr);
+					if($retval != 0) {
+						$app->log("Command chpasswd failed for user ".$data['new']['username'] . ' with code ' . $retval . ': ' . $stderr, LOGLEVEL_WARN);
+					}
+				}
+			
 				$app->system->chown($data['new']['dir'],$data['new']['username'],false);
 				$app->system->chgrp($data['new']['dir'],$data['new']['pgroup'],false);
 				
-- 
GitLab


From 126290c8e8d4a4bbba21f08b2f5dee4578d9224d Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Fri, 4 Oct 2019 12:05:35 +0200
Subject: [PATCH 067/242] - added possibility to execute mkdirpath,
 file_put_contents and file_get_contents as unprivileged user, partly
 implements #5417

---
 server/lib/classes/system.inc.php | 78 +++++++++++++++++++++++++++----
 1 file changed, 69 insertions(+), 9 deletions(-)

diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php
index 525bd7bda1..3db57c510f 100644
--- a/server/lib/classes/system.inc.php
+++ b/server/lib/classes/system.inc.php
@@ -834,23 +834,55 @@ class system{
 		}
 	}
 
-	function file_put_contents($filename, $data, $allow_symlink = false) {
+	function file_put_contents($filename, $data, $allow_symlink = false, $run_as_user = null) {
 		global $app;
 		if($allow_symlink == false && $this->checkpath($filename) == false) {
 			$app->log("Action aborted, file is a symlink: $filename", LOGLEVEL_WARN);
 			return false;
 		}
-		if(file_exists($filename)) unlink($filename);
-		return file_put_contents($filename, $data);
+		if($run_as_user !== null && $run_as_user !== 'root') {
+			if(!$this->check_run_as_user($run_as_user)) {
+				$app->log("Action aborted, invalid run-as-user: $run_as_user", LOGLEVEL_WARN);
+				return false;
+			}
+			if(file_exists($filename)) {
+				$cmd = $this->get_sudo_command('rm ' . escapeshellarg($filename), $run_as_user);
+				$this->exec_safe($cmd);
+			}
+			$cmd = $this->get_sudo_command('cat - > ' . escapeshellarg($filename), $run_as_user);
+			$retval = null;
+			$stderr = '';
+			$this->pipe_exec($cmd, $data, $retval, $stderr);
+			if($retval > 0) {
+				$app->log("Safe file_put_contents failed: $stderr", LOGLEVEL_WARN);
+				return false;
+			} else {
+				$size = filesize($filename);
+				return $size;
+			}
+		} else {
+			if(file_exists($filename)) unlink($filename);
+			return file_put_contents($filename, $data);
+		}
 	}
 
-	function file_get_contents($filename, $allow_symlink = false) {
+	function file_get_contents($filename, $allow_symlink = false, $run_as_user = null) {
 		global $app;
 		if($allow_symlink == false && $this->checkpath($filename) == false) {
 			$app->log("Action aborted, file is a symlink: $filename", LOGLEVEL_WARN);
 			return false;
 		}
-		return file_get_contents($filename, $data);
+		
+		if($run_as_user !== null && $run_as_user !== 'root') {
+			if(!$this->check_run_as_user($run_as_user)) {
+				$app->log("Action aborted, invalid run-as-user: $run_as_user", LOGLEVEL_WARN);
+				return false;
+			}
+			$cmd = $this->get_sudo_command('cat ' . escapeshellarg($filename), $run_as_user) . ' 2>/dev/null';
+			return $this->system_safe($cmd);
+		} else {
+			return file_get_contents($filename);
+		}
 	}
 
 	function rename($filename, $new_filename, $allow_symlink = false) {
@@ -862,13 +894,29 @@ class system{
 		return rename($filename, $new_filename);
 	}
 
-	function mkdir($dirname, $allow_symlink = false, $mode = 0777, $recursive = false) {
+	function mkdir($dirname, $allow_symlink = false, $mode = 0777, $recursive = false, $run_as_user = null) {
 		global $app;
 		if($allow_symlink == false && $this->checkpath($dirname) == false) {
 			$app->log("Action aborted, file is a symlink: $dirname", LOGLEVEL_WARN);
 			return false;
 		}
-		if(@mkdir($dirname, $mode, $recursive)) {
+		if($run_as_user !== null && !$this->check_run_as_user($run_as_user)) {
+			$app->log("Action aborted, invalid run-as-user: $run_as_user", LOGLEVEL_WARN);
+			return false;
+		}
+		$success = false;
+		if($run_as_user !== null && $run_as_user !== 'root') {
+			$cmd = $this->get_sudo_command('mkdir ' . ($recursive ? '-p ' : '') . escapeshellarg($dirname), $run_as_user) . ' >/dev/null 2>&1';
+			$this->exec_safe($cmd);
+			if($this->last_exec_retcode() != 0) {
+				$success = false;
+			} else {
+				$success = true;
+			}
+		} else {
+			$success = @mkdir($dirname, $mode, $recursive);
+		}
+		if($success) {
 			return true;
 		} else {
 			$app->log("mkdir failed: $dirname", LOGLEVEL_DEBUG);
@@ -1677,14 +1725,14 @@ class system{
 	}
 
 	//* Function to create directory paths and chown them to a user and group
-	function mkdirpath($path, $mode = 0755, $user = '', $group = '') {
+	function mkdirpath($path, $mode = 0755, $user = '', $group = '', $run_as_user = null) {
 		$path_parts = explode('/', $path);
 		$new_path = '';
 		if(is_array($path_parts)) {
 			foreach($path_parts as $part) {
 				$new_path .= '/'.$part;
 				if(!@is_dir($new_path)) {
-					$this->mkdir($new_path);
+					$this->mkdir($new_path, false, 0777, false, $run_as_user);
 					$this->chmod($new_path, $mode);
 					if($user != '') $this->chown($new_path, $user);
 					if($group != '') $this->chgrp($new_path, $group);
@@ -2218,4 +2266,16 @@ class system{
 			return false;
 		}
 	}
+	
+	private function get_sudo_command($cmd, $run_as_user) {
+		return 'sudo -u ' . escapeshellarg($run_as_user) . ' sh -c ' . escapeshellarg($cmd);
+	}
+	
+	private function check_run_as_user($username) {
+		if(preg_match('/^[a-zA-Z0-9_\-]+$/', $username)) {
+			return true;
+		} else{
+			return false;
+		}
+	}
 }
-- 
GitLab


From ed8922b48a67f981c44ee933633c403f27a1b882 Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Fri, 4 Oct 2019 14:38:48 +0200
Subject: [PATCH 068/242] For issue #5415

---
 interface/web/client/client_del.php | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/interface/web/client/client_del.php b/interface/web/client/client_del.php
index 2bddd02a07..d92dc56008 100644
--- a/interface/web/client/client_del.php
+++ b/interface/web/client/client_del.php
@@ -58,9 +58,14 @@ class page_action extends tform_actions {
 		if(!is_object($app->tform)) $app->uses('tform');
 
 		if($_POST["confirm"] == 'yes') {
+			if(isset($_POST['_csrf_id'])) $_GET['_csrf_id'] = $_POST['_csrf_id'];
+			if(isset($_POST['_csrf_key'])) $_GET['_csrf_key'] = $_POST['_csrf_key'];
 			parent::onDelete();
 		} else {
 
+			// Check CSRF Token
+			$app->auth->csrf_token_check('GET');
+			
 			$app->uses('tpl');
 			$app->tpl->newTemplate("form.tpl.htm");
 			$app->tpl->setInclude('content_tpl', 'templates/client_del.htm');
@@ -100,6 +105,11 @@ class page_action extends tform_actions {
 			$lng_file = 'lib/lang/'.$app->functions->check_language($_SESSION['s']['language']).'_client_del.lng';
 			include $lng_file;
 			$app->tpl->setVar($wb);
+			
+			// get new csrf token
+			$csrf_token = $app->auth->csrf_token_get('client_del');
+			$app->tpl->setVar('_csrf_id', $csrf_token['csrf_id']);
+			$app->tpl->setVar('_csrf_key', $csrf_token['csrf_key']);
 
 			$app->tpl_defaults();
 			$app->tpl->pparse();
-- 
GitLab


From 559c694e648bcf52d7eb057a7b54a95de169738f Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Fri, 4 Oct 2019 17:33:43 +0200
Subject: [PATCH 069/242] Various fixes related to #5415

---
 interface/web/sites/aps_do_operation.php             |  3 +++
 interface/web/sites/aps_install_package.php          | 10 ++++++++--
 interface/web/sites/aps_installedpackages_list.php   | 10 ++++++++--
 interface/web/sites/templates/aps_instances_list.htm |  2 +-
 interface/web/sites/templates/aps_packages_list.htm  |  2 +-
 5 files changed, 21 insertions(+), 6 deletions(-)

diff --git a/interface/web/sites/aps_do_operation.php b/interface/web/sites/aps_do_operation.php
index ff0705f9bb..8de3ed4e29 100644
--- a/interface/web/sites/aps_do_operation.php
+++ b/interface/web/sites/aps_do_operation.php
@@ -64,6 +64,9 @@ if($_GET['action'] == 'change_status')
 }
 else if($_GET['action'] == 'delete_instance')
 	{
+		// Check CSRF Token
+		$app->auth->csrf_token_check('GET');
+		
 		// Make sure a valid package ID is given (also corresponding to the calling user)
 		$client_id = 0;
 		$is_admin = ($_SESSION['s']['user']['typ'] == 'admin') ? true : false;
diff --git a/interface/web/sites/aps_install_package.php b/interface/web/sites/aps_install_package.php
index 4739e25b8a..1a38190a9f 100644
--- a/interface/web/sites/aps_install_package.php
+++ b/interface/web/sites/aps_install_package.php
@@ -93,6 +93,9 @@ if(!empty($domains_assoc)) foreach($domains_assoc as $domain) $domains[] = $doma
 	$result['input'] = array();
 if(count($_POST) > 1)
 {
+	// Check CSRF Token
+	$app->auth->csrf_token_check();
+	
 	$result = $gui->validateInstallerInput($_POST, $details, $domains, $settings);
 	if(empty($result['error']))
 	{
@@ -117,13 +120,16 @@ foreach($details as $key => $value)
 	else if($key == 'Requirements PHP settings') $app->tpl->setLoop('pkg_requirements_php_settings', $details['Requirements PHP settings']);
 }
 
+// get new csrf token
+$csrf_token = $app->auth->csrf_token_get('aps_install_package');
+$app->tpl->setVar('_csrf_id', $csrf_token['csrf_id']);
+$app->tpl->setVar('_csrf_key', $csrf_token['csrf_key']);
+
 // Parse the template as far as possible, then do the rest manually
 $app->tpl_defaults();
 $parsed_tpl = $app->tpl->grab();
 
 
-// ISPConfig has a very old and functionally limited template engine. We have to style parts on our own...
-
 // Print the domain list
 $domains_tpl = '';
 if(!empty($domains))
diff --git a/interface/web/sites/aps_installedpackages_list.php b/interface/web/sites/aps_installedpackages_list.php
index 28f334019f..32849ad740 100644
--- a/interface/web/sites/aps_installedpackages_list.php
+++ b/interface/web/sites/aps_installedpackages_list.php
@@ -112,12 +112,16 @@ if(!$is_admin) {
 $records = $app->db->queryAllRecords($query);
 $app->listform_actions->DataRowColor = '#FFFFFF';
 
+$csrf_token = $app->auth->csrf_token_get($app->listform->listDef['name']);
+$_csrf_id = $csrf_token['csrf_id'];
+$_csrf_key = $csrf_token['csrf_key'];
+
 // Re-form all result entries and add extra entries
 $records_new = array();
 if(is_array($records))
 {
 	$app->listform_actions->idx_key = $app->listform->listDef["table_idx"];
-	foreach($records as $rec)
+	foreach($records as $key => $rec)
 	{
 		// Set an abbreviated install location to beware the page layout
 		$ils = '';
@@ -129,7 +133,9 @@ if(is_array($records))
 		if($rec['instance_status'] != INSTANCE_REMOVE && $rec['instance_status'] != INSTANCE_INSTALL)
 			$rec['delete_possible'] = 'true';
 
-		$records_new[] = $app->listform_actions->prepareDataRow($rec);
+		$records_new[$key] = $app->listform_actions->prepareDataRow($rec);
+		$records_new[$key]['csrf_id'] = $_csrf_id;
+		$records_new[$key]['csrf_key'] = $_csrf_key;
 	}
 }
 $app->tpl->setLoop('records', $records_new);
diff --git a/interface/web/sites/templates/aps_instances_list.htm b/interface/web/sites/templates/aps_instances_list.htm
index cfde591b19..ae3d095e7b 100644
--- a/interface/web/sites/templates/aps_instances_list.htm
+++ b/interface/web/sites/templates/aps_instances_list.htm
@@ -40,7 +40,7 @@
                             <td><span id="status_content{tmpl_var name='__ROWNUM__'}">{tmpl_var name='instance_status'}</span></td>
                             <td class="text-right">
                                 <tmpl_if name='delete_possible'>
-                                    <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/aps_do_operation.php?action=delete_instance&id={tmpl_var name='id'}','{tmpl_var name='pkg_delete_confirmation'}')"><span class="icon icon-delete"></span></button>
+                                    <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/aps_do_operation.php?action=delete_instance&id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}','{tmpl_var name='pkg_delete_confirmation'}')"><span class="icon icon-delete"></span></button>
                                 </tmpl_if>
                             </td>        
                         </tr>
diff --git a/interface/web/sites/templates/aps_packages_list.htm b/interface/web/sites/templates/aps_packages_list.htm
index 501e7aeedd..fa3582ed74 100644
--- a/interface/web/sites/templates/aps_packages_list.htm
+++ b/interface/web/sites/templates/aps_packages_list.htm
@@ -31,7 +31,7 @@
                             <td>{tmpl_var name='version'}-{tmpl_var name='release'}</td>
                             <td>{tmpl_var name='category'}</td>
                                 <tmpl_if name='is_admin'>
-                                    <td><a href="javascript:ISPConfig.loadContentInto('status_content{tmpl_var name='__ROWNUM__'}', 'sites/aps_do_operation.php?action=change_status&id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}');"><span id="status_content{tmpl_var name='__ROWNUM__'}">{tmpl_var name='package_status'}</span></a></td>
+                                    <td><a href="javascript:ISPConfig.loadContentInto('status_content{tmpl_var name='__ROWNUM__'}', 'sites/aps_do_operation.php?action=change_status&id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}');"><span id="status_content{tmpl_var name='__ROWNUM__'}">{tmpl_var name='package_status'}</span></a></td>
                                 </tmpl_if>
                             <td class="text-right">&nbsp;</td>
                         </tr>
-- 
GitLab


From 58b341857c056db03999e9a79404ffcffe153ec4 Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Tue, 8 Oct 2019 18:26:11 +0200
Subject: [PATCH 070/242] Implemented #5420 Improve input filters for Tools >
 Interface settings

---
 interface/web/admin/form/users.tform.php             | 12 ++++++++++++
 interface/web/admin/lib/lang/en_users.lng            |  4 ++++
 .../web/tools/form/interface_settings.tform.php      | 12 ++++++++++++
 interface/web/tools/interface_settings.php           |  5 +++--
 interface/web/tools/lib/lang/en_interface.lng        |  4 ++++
 5 files changed, 35 insertions(+), 2 deletions(-)

diff --git a/interface/web/admin/form/users.tform.php b/interface/web/admin/form/users.tform.php
index 6a23559f12..b7f00b4eef 100644
--- a/interface/web/admin/form/users.tform.php
+++ b/interface/web/admin/form/users.tform.php
@@ -199,6 +199,12 @@ $form['tabs']['users'] = array (
 		'startmodule' => array (
 			'datatype' => 'VARCHAR',
 			'formtype' => 'SELECT',
+			'validators' => array (  0 => array (    'type' => 'NOTEMPTY',
+					'errmsg'=> 'startmodule_empty'),
+				1 => array (    'type' => 'REGEX',
+					'regex' => '/^[a-z0-9\_]{0,64}$/',
+					'errmsg'=> 'startmodule_regex'),
+			),
 			'regex'  => '',
 			'errmsg' => '',
 			'default' => '',
@@ -212,6 +218,12 @@ $form['tabs']['users'] = array (
 		'app_theme' => array (
 			'datatype' => 'VARCHAR',
 			'formtype' => 'RADIO',
+			'validators' => array (  0 => array (    'type' => 'NOTEMPTY',
+					'errmsg'=> 'app_theme_empty'),
+				1 => array (    'type' => 'REGEX',
+					'regex' => '/^[a-z0-9\_]{0,64}$/',
+					'errmsg'=> 'app_theme_regex'),
+			),
 			'regex'  => '',
 			'errmsg' => '',
 			'default' => 'default',
diff --git a/interface/web/admin/lib/lang/en_users.lng b/interface/web/admin/lib/lang/en_users.lng
index 81f3742a35..931c73e8eb 100644
--- a/interface/web/admin/lib/lang/en_users.lng
+++ b/interface/web/admin/lib/lang/en_users.lng
@@ -33,4 +33,8 @@ $wb['username_error_collision'] = 'The username may not be web or web plus a num
 $wb['client_not_admin_err'] = 'A user that belongs to a client can not be set to type: admin';
 $wb['lost_password_function_txt'] = 'Forgot password function is available';
 $wb['no_user_insert'] = 'CP-Users of type -user- get added and updated automatically when you add a client or reseller.';
+$wb['startmodule_empty'] = 'Startmodule empty.';
+$wb['startmodule_regex'] = 'Invalid chars in Startmodule.';
+$wb['app_theme_empty'] = 'App theme empty.';
+$wb['app_theme_regex'] = 'Invalid chars in App theme.';
 ?>
diff --git a/interface/web/tools/form/interface_settings.tform.php b/interface/web/tools/form/interface_settings.tform.php
index f213605bf7..9ab49eb0f1 100644
--- a/interface/web/tools/form/interface_settings.tform.php
+++ b/interface/web/tools/form/interface_settings.tform.php
@@ -144,6 +144,12 @@ $form['tabs']['main'] = array (
 		'startmodule' => array (
 			'datatype' => 'VARCHAR',
 			'formtype' => 'SELECT',
+			'validators' => array (  0 => array (    'type' => 'NOTEMPTY',
+					'errmsg'=> 'startmodule_empty'),
+				1 => array (    'type' => 'REGEX',
+					'regex' => '/^[a-z0-9\_]{0,64}$/',
+					'errmsg'=> 'startmodule_regex'),
+			),
 			'regex'  => '',
 			'errmsg' => '',
 			'default' => '',
@@ -157,6 +163,12 @@ $form['tabs']['main'] = array (
 		'app_theme' => array (
 			'datatype' => 'VARCHAR',
 			'formtype' => 'SELECT',
+			'validators' => array (  0 => array (    'type' => 'NOTEMPTY',
+					'errmsg'=> 'app_theme_empty'),
+				1 => array (    'type' => 'REGEX',
+					'regex' => '/^[a-z0-9\_]{0,64}$/',
+					'errmsg'=> 'app_theme_regex'),
+			),
 			'regex' => '',
 			'errmsg' => '',
 			'default' => 'default',
diff --git a/interface/web/tools/interface_settings.php b/interface/web/tools/interface_settings.php
index d7a1333b59..b14b637375 100644
--- a/interface/web/tools/interface_settings.php
+++ b/interface/web/tools/interface_settings.php
@@ -81,7 +81,6 @@ class page_action extends tform_actions {
 		if(!in_array($this->dataRecord['startmodule'], $this->dataRecord['modules'])) {
 			$app->tform->errorMessage .= $app->tform->wordbook['startmodule_err'];
 		}
-		$this->updateSessionTheme();
 	}
 
 	function onInsert() {
@@ -96,7 +95,6 @@ class page_action extends tform_actions {
 		if(@is_array($this->dataRecord['modules']) && !in_array($this->dataRecord['startmodule'], $this->dataRecord['modules'])) {
 			$app->tform->errorMessage .= $app->tform->wordbook['startmodule_err'];
 		}
-		$this->updateSessionTheme();
 	}
 
 	function updateSessionTheme() {
@@ -120,6 +118,9 @@ class page_action extends tform_actions {
 	}
 
 	function onAfterUpdate() {
+		
+		$this->updateSessionTheme();
+		
 		if($this->_theme_changed == true) {
 			// not the best way, but it works
 			header('Content-Type: text/html');
diff --git a/interface/web/tools/lib/lang/en_interface.lng b/interface/web/tools/lib/lang/en_interface.lng
index b15c7334b2..7cb0e2d8bc 100644
--- a/interface/web/tools/lib/lang/en_interface.lng
+++ b/interface/web/tools/lib/lang/en_interface.lng
@@ -4,4 +4,8 @@ $wb["interface_desc_txt"] = 'Modify your interface';
 $wb["language_txt"] = 'Language';
 $wb["startmodule_txt"] = 'Startmodule';
 $wb["app_theme_txt"] = 'Design';
+$wb['startmodule_empty'] = 'Startmodule empty.';
+$wb['startmodule_regex'] = 'Invalid chars in Startmodule.';
+$wb['app_theme_empty'] = 'App theme empty.';
+$wb['app_theme_regex'] = 'Invalid chars in App theme.';
 ?>
\ No newline at end of file
-- 
GitLab


From a1d4fd4828408ba33c53dfcfe14b1618f4a68c56 Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Wed, 9 Oct 2019 10:48:24 +0200
Subject: [PATCH 071/242] More fixes for issue #5415

---
 interface/web/admin/software_package_del.php            | 3 +++
 interface/web/admin/software_package_install.php        | 7 +++++++
 interface/web/admin/software_package_list.php           | 7 ++++++-
 interface/web/admin/templates/software_package_list.htm | 2 +-
 4 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/interface/web/admin/software_package_del.php b/interface/web/admin/software_package_del.php
index 31aeb1c09b..e1387f39c4 100644
--- a/interface/web/admin/software_package_del.php
+++ b/interface/web/admin/software_package_del.php
@@ -36,6 +36,9 @@ $app->auth->check_module_permissions('admin');
 $app->auth->check_security_permissions('admin_allow_software_packages');
 if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.');
 
+// Check CSRF Token
+$app->auth->csrf_token_check('GET');
+
 $software_update_inst_id = $app->functions->intval($_GET['software_update_inst_id']);
 
 if($software_update_inst_id > 0) {
diff --git a/interface/web/admin/software_package_install.php b/interface/web/admin/software_package_install.php
index ccbfd73ebe..6a5326d51a 100644
--- a/interface/web/admin/software_package_install.php
+++ b/interface/web/admin/software_package_install.php
@@ -38,6 +38,13 @@ $app->auth->check_security_permissions('admin_allow_software_packages');
 //* This is only allowed for administrators
 if(!$app->auth->is_admin()) die('only allowed for administrators.');
 
+// Check CSRF Token
+if(count($_POST) > 0) {
+	$app->auth->csrf_token_check('POST');
+} else {
+	$app->auth->csrf_token_check('GET');
+}
+
 $package_name = $_REQUEST['package'];
 $install_server_id = $app->functions->intval($_REQUEST['server_id']);
 $install_key = trim($_REQUEST['install_key']);
diff --git a/interface/web/admin/software_package_list.php b/interface/web/admin/software_package_list.php
index b6664d4234..8a21696c7f 100644
--- a/interface/web/admin/software_package_list.php
+++ b/interface/web/admin/software_package_list.php
@@ -145,6 +145,9 @@ $app->uses('tpl');
 $app->tpl->newTemplate("form.tpl.htm");
 $app->tpl->setInclude('content_tpl', 'templates/software_package_list.htm');
 
+$csrf_token = $app->auth->csrf_token_get('software_package_list');
+$_csrf_id = $csrf_token['csrf_id'];
+$_csrf_key = $csrf_token['csrf_key'];
 
 $servers = $app->db->queryAllRecords('SELECT server_id, server_name FROM server ORDER BY server_name');
 $packages = $app->db->queryAllRecords('SELECT * FROM software_package');
@@ -167,12 +170,14 @@ if(is_array($packages) && count($packages) > 0) {
 				if($p['package_installable'] == 'no') {
 					$installed_txt .= $s['server_name'].": ".$app->lng("Package can not be installed.")."<br />";
 				} else {
-					$installed_txt .= $s['server_name'].": <a href=\"#\" data-load-content=\"admin/software_package_install.php?package=".$p["package_name"]."&server_id=".$s["server_id"]."\">Install now</a><br />";
+					$installed_txt .= $s['server_name'].": <a href=\"#\" data-load-content=\"admin/software_package_install.php?package=".$p["package_name"]."&server_id=".$s["server_id"]."&_csrf_key=".$_csrf_key."&_csrf_id=".$_csrf_id."\">Install now</a><br />";
 				}
 			}
 		}
 		$packages[$key]['software_update_inst_id'] = intval($inst['software_update_inst_id']);
 		$packages[$key]['installed'] = $installed_txt;
+		$packages[$key]['csrf_id'] = $_csrf_id;
+		$packages[$key]['csrf_key'] = $_csrf_key;
 	}
 	$app->tpl->setVar('has_packages', 1);
 } else {
diff --git a/interface/web/admin/templates/software_package_list.htm b/interface/web/admin/templates/software_package_list.htm
index 31969c0575..e69e3780af 100644
--- a/interface/web/admin/templates/software_package_list.htm
+++ b/interface/web/admin/templates/software_package_list.htm
@@ -33,7 +33,7 @@
                             <td>ispapp{tmpl_var name="package_id"}</td>
 							<td class="text-right">
 								<a class="btn btn-default formbutton-default formbutton-narrow" data-load-content="admin/software_package_edit.php?id={tmpl_var name='package_id'}"><span class="icon icon-edit"></span></a>
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/software_package_del.php?software_update_inst_id={tmpl_var name='software_update_inst_id'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/software_package_del.php?software_update_inst_id={tmpl_var name='software_update_inst_id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
 						</tmpl_if>
-- 
GitLab


From 92184cbe2c093ddbcda168e63613e87d593947c4 Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Wed, 9 Oct 2019 16:03:58 +0200
Subject: [PATCH 072/242] Updated Brazilian Portuguese and Turkish language
 files.

---
 interface/lib/lang/br.lng                     | 108 ++--
 interface/lib/lang/tr.lng                     | 127 ++---
 interface/web/admin/lib/lang/br.lng           |  35 +-
 .../admin/lib/lang/br_directive_snippets.lng  |  10 +-
 .../lib/lang/br_directive_snippets_list.lng   |   4 +-
 interface/web/admin/lib/lang/br_firewall.lng  |  10 +-
 .../web/admin/lib/lang/br_firewall_list.lng   |   2 +-
 interface/web/admin/lib/lang/br_groups.lng    |   2 +-
 .../web/admin/lib/lang/br_groups_list.lng     |   6 +-
 interface/web/admin/lib/lang/br_iptables.lng  |  10 +-
 .../web/admin/lib/lang/br_iptables_list.lng   |   8 +-
 .../web/admin/lib/lang/br_language_add.lng    |   4 +-
 .../admin/lib/lang/br_language_complete.lng   |   2 +-
 .../web/admin/lib/lang/br_language_edit.lng   |   4 +-
 .../web/admin/lib/lang/br_language_export.lng |   4 +-
 .../web/admin/lib/lang/br_language_import.lng |   6 +-
 .../web/admin/lib/lang/br_language_list.lng   |   6 +-
 .../web/admin/lib/lang/br_package_install.lng |   2 +-
 .../web/admin/lib/lang/br_remote_action.lng   |  14 +-
 .../web/admin/lib/lang/br_remote_user.lng     |  96 ++--
 .../admin/lib/lang/br_remote_user_list.lng    |   6 +-
 interface/web/admin/lib/lang/br_server.lng    |  16 +-
 .../web/admin/lib/lang/br_server_config.lng   | 506 +++++++++---------
 interface/web/admin/lib/lang/br_server_ip.lng |  12 +-
 .../web/admin/lib/lang/br_server_ip_list.lng  |   4 +-
 .../web/admin/lib/lang/br_server_ip_map.lng   |  14 +-
 .../admin/lib/lang/br_server_ip_map_list.lng  |   6 +-
 .../web/admin/lib/lang/br_server_list.lng     |   6 +-
 .../web/admin/lib/lang/br_server_php.lng      |  16 +-
 .../web/admin/lib/lang/br_server_php_list.lng |   4 +-
 .../lib/lang/br_software_package_list.lng     |   8 +-
 .../web/admin/lib/lang/br_software_repo.lng   |   2 +-
 .../lib/lang/br_software_update_list.lng      |   8 +-
 .../web/admin/lib/lang/br_system_config.lng   | 127 +++--
 .../admin/lib/lang/br_tpl_default_admin.lng   |  22 +-
 interface/web/admin/lib/lang/br_users.lng     |  36 +-
 .../web/admin/lib/lang/br_users_list.lng      |   8 +-
 interface/web/admin/lib/lang/tr.lng           |  30 +-
 .../admin/lib/lang/tr_directive_snippets.lng  |  16 +-
 .../lib/lang/tr_directive_snippets_list.lng   |  10 +-
 interface/web/admin/lib/lang/tr_firewall.lng  |   5 +-
 interface/web/admin/lib/lang/tr_groups.lng    |   2 +-
 interface/web/admin/lib/lang/tr_iptables.lng  |   2 +
 .../web/admin/lib/lang/tr_iptables_list.lng   |   2 +
 .../web/admin/lib/lang/tr_language_import.lng |   4 +-
 interface/web/admin/lib/lang/tr_login_as.lng  |  12 +
 .../web/admin/lib/lang/tr_remote_action.lng   |  10 +-
 .../web/admin/lib/lang/tr_remote_user.lng     |  48 +-
 interface/web/admin/lib/lang/tr_server.lng    |   6 +-
 .../web/admin/lib/lang/tr_server_config.lng   | 230 ++++----
 interface/web/admin/lib/lang/tr_server_ip.lng |   6 +-
 .../web/admin/lib/lang/tr_server_ip_list.lng  |   4 +-
 .../web/admin/lib/lang/tr_server_ip_map.lng   |  20 +-
 .../admin/lib/lang/tr_server_ip_map_list.lng  |  10 +-
 .../web/admin/lib/lang/tr_server_list.lng     |   4 +-
 .../web/admin/lib/lang/tr_server_php.lng      |   2 +-
 .../web/admin/lib/lang/tr_server_php_list.lng |   2 +-
 .../admin/lib/lang/tr_software_package.lng    |   2 +-
 .../lib/lang/tr_software_update_list.lng      |   2 +-
 .../web/admin/lib/lang/tr_system_config.lng   |  70 ++-
 interface/web/admin/lib/lang/tr_users.lng     |  20 +-
 .../web/admin/lib/lang/tr_users_list.lng      |   2 +-
 interface/web/client/lib/lang/br.lng          |  20 +-
 interface/web/client/lib/lang/br_client.lng   | 258 ++++-----
 .../web/client/lib/lang/br_client_circle.lng  |   4 +-
 .../client/lib/lang/br_client_circle_list.lng |   6 +-
 .../web/client/lib/lang/br_client_del.lng     |   2 +-
 .../web/client/lib/lang/br_client_message.lng |  16 +-
 .../lib/lang/br_client_message_template.lng   |  10 +-
 .../lang/br_client_message_template_list.lng  |   2 +-
 .../client/lib/lang/br_client_template.lng    | 179 ++++---
 .../lib/lang/br_client_template_list.lng      |   8 +-
 .../web/client/lib/lang/br_clients_list.lng   |  10 +-
 interface/web/client/lib/lang/br_domain.lng   |   6 +-
 interface/web/client/lib/lang/br_reseller.lng | 288 +++++-----
 .../web/client/lib/lang/br_resellers_list.lng |   2 +-
 interface/web/client/lib/lang/tr.lng          |  17 +-
 interface/web/client/lib/lang/tr_client.lng   | 180 ++++---
 .../lib/lang/tr_client_message_template.lng   |  12 +-
 .../lang/tr_client_message_template_list.lng  |   4 +-
 .../client/lib/lang/tr_client_template.lng    | 141 ++---
 .../lib/lang/tr_client_template_list.lng      |   8 +-
 .../web/client/lib/lang/tr_clients_list.lng   |   8 +-
 interface/web/client/lib/lang/tr_domain.lng   |   8 +-
 .../web/client/lib/lang/tr_domain_list.lng    |   6 +-
 interface/web/client/lib/lang/tr_reseller.lng | 184 +++----
 .../web/client/lib/lang/tr_resellers_list.lng |   2 +-
 interface/web/dashboard/lib/lang/br.lng       |   2 +-
 .../lib/lang/br_dashlet_customer.lng          |   2 +-
 .../lib/lang/br_dashlet_databasequota.lng     |   4 +-
 .../br_dashlet_invoice_client_settings.lng    |   2 +-
 .../lib/lang/br_dashlet_invoices.lng          |   8 +-
 .../dashboard/lib/lang/br_dashlet_limits.lng  |  62 +--
 .../lib/lang/br_dashlet_mailquota.lng         |   4 +-
 .../dashboard/lib/lang/br_dashlet_modules.lng |   2 +-
 .../lib/lang/br_dashlet_products.lng          |   4 +-
 .../dashboard/lib/lang/br_dashlet_quota.lng   |   4 +-
 .../dashboard/lib/lang/br_dashlet_shop.lng    |   6 +-
 .../lib/lang/tr_dashlet_customer.lng          |   4 +-
 .../lib/lang/tr_dashlet_databasequota.lng     |  10 +-
 .../dashboard/lib/lang/tr_dashlet_donate.lng  |  10 +-
 .../tr_dashlet_invoice_client_settings.lng    |   4 +-
 .../lib/lang/tr_dashlet_invoices.lng          |  32 +-
 .../dashboard/lib/lang/tr_dashlet_limits.lng  |  32 +-
 .../lib/lang/tr_dashlet_mailquota.lng         |   2 +-
 .../dashboard/lib/lang/tr_dashlet_modules.lng |   2 +-
 .../lib/lang/tr_dashlet_products.lng          |  14 +-
 .../dashboard/lib/lang/tr_dashlet_quota.lng   |   6 +-
 .../dashboard/lib/lang/tr_dashlet_shop.lng    |  12 +-
 interface/web/dns/lib/lang/br.lng             |  10 +-
 interface/web/dns/lib/lang/br_dns_a.lng       |  16 +-
 interface/web/dns/lib/lang/br_dns_a_list.lng  |   8 +-
 interface/web/dns/lib/lang/br_dns_aaaa.lng    |  16 +-
 interface/web/dns/lib/lang/br_dns_alias.lng   |  16 +-
 interface/web/dns/lib/lang/br_dns_caa.lng     |  32 +-
 interface/web/dns/lib/lang/br_dns_cname.lng   |  18 +-
 interface/web/dns/lib/lang/br_dns_dkim.lng    |  14 +-
 interface/web/dns/lib/lang/br_dns_dmarc.lng   |  64 +--
 interface/web/dns/lib/lang/br_dns_ds.lng      |  17 +-
 interface/web/dns/lib/lang/br_dns_hinfo.lng   |  18 +-
 interface/web/dns/lib/lang/br_dns_import.lng  |  20 +-
 interface/web/dns/lib/lang/br_dns_loc.lng     |  16 +-
 interface/web/dns/lib/lang/br_dns_mx.lng      |  18 +-
 interface/web/dns/lib/lang/br_dns_ns.lng      |  16 +-
 interface/web/dns/lib/lang/br_dns_ptr.lng     |  14 +-
 interface/web/dns/lib/lang/br_dns_rp.lng      |  16 +-
 interface/web/dns/lib/lang/br_dns_slave.lng   |  16 +-
 .../dns/lib/lang/br_dns_slave_admin_list.lng  |   4 +-
 .../web/dns/lib/lang/br_dns_slave_list.lng    |   4 +-
 interface/web/dns/lib/lang/br_dns_soa.lng     |  48 +-
 .../dns/lib/lang/br_dns_soa_admin_list.lng    |   9 +-
 .../web/dns/lib/lang/br_dns_soa_list.lng      |   7 +-
 interface/web/dns/lib/lang/br_dns_spf.lng     |  22 +-
 interface/web/dns/lib/lang/br_dns_srv.lng     |  18 +-
 .../web/dns/lib/lang/br_dns_template.lng      |   4 +-
 .../web/dns/lib/lang/br_dns_template_list.lng |   4 +-
 interface/web/dns/lib/lang/br_dns_tlsa.lng    |  12 +-
 interface/web/dns/lib/lang/br_dns_txt.lng     |  22 +-
 interface/web/dns/lib/lang/br_dns_wizard.lng  |  44 +-
 interface/web/dns/lib/lang/tr.lng             |   5 +-
 interface/web/dns/lib/lang/tr_dns_a.lng       |   6 +-
 interface/web/dns/lib/lang/tr_dns_a_list.lng  |   2 +-
 interface/web/dns/lib/lang/tr_dns_aaaa.lng    |   8 +-
 interface/web/dns/lib/lang/tr_dns_alias.lng   |   4 +-
 interface/web/dns/lib/lang/tr_dns_cname.lng   |   4 +-
 interface/web/dns/lib/lang/tr_dns_dkim.lng    |  22 +-
 interface/web/dns/lib/lang/tr_dns_dmarc.lng   |  96 ++--
 interface/web/dns/lib/lang/tr_dns_ds.lng      |  31 +-
 interface/web/dns/lib/lang/tr_dns_hinfo.lng   |   4 +-
 interface/web/dns/lib/lang/tr_dns_import.lng  |  16 +-
 interface/web/dns/lib/lang/tr_dns_loc.lng     |  28 +-
 interface/web/dns/lib/lang/tr_dns_mx.lng      |  10 +-
 interface/web/dns/lib/lang/tr_dns_ns.lng      |   4 +-
 interface/web/dns/lib/lang/tr_dns_rp.lng      |   4 +-
 interface/web/dns/lib/lang/tr_dns_slave.lng   |   2 +-
 interface/web/dns/lib/lang/tr_dns_soa.lng     |  24 +-
 .../dns/lib/lang/tr_dns_soa_admin_list.lng    |   2 +-
 .../web/dns/lib/lang/tr_dns_soa_list.lng      |   4 +-
 interface/web/dns/lib/lang/tr_dns_spf.lng     |  46 +-
 interface/web/dns/lib/lang/tr_dns_srv.lng     |   4 +-
 .../web/dns/lib/lang/tr_dns_template.lng      |   1 -
 interface/web/dns/lib/lang/tr_dns_tlsa.lng    |  28 +-
 interface/web/dns/lib/lang/tr_dns_txt.lng     |  10 +-
 interface/web/dns/lib/lang/tr_dns_wizard.lng  |  32 +-
 interface/web/help/lib/lang/br.lng            |  14 +-
 interface/web/help/lib/lang/br_faq_form.lng   |   6 +-
 .../lib/lang/br_faq_manage_questions_list.lng |  10 +-
 .../help/lib/lang/br_faq_sections_form.lng    |   2 +-
 .../lib/lang/br_help_faq_sections_list.lng    |   8 +-
 .../web/help/lib/lang/br_support_message.lng  |  20 +-
 .../help/lib/lang/br_support_message_list.lng |   6 +-
 interface/web/help/lib/lang/tr.lng            |   1 +
 .../web/help/lib/lang/tr_support_message.lng  |   4 +-
 interface/web/login/lib/lang/br.lng           |   8 +-
 interface/web/login/lib/lang/br_login_as.lng  |  14 +-
 interface/web/login/lib/lang/tr.lng           |  16 +-
 interface/web/login/lib/lang/tr_login_as.lng  |   9 +-
 interface/web/mail/lib/lang/br.lng            |  78 +--
 .../mail/lib/lang/br_backup_stats_list.lng    |  10 +-
 interface/web/mail/lib/lang/br_mail_alias.lng |  16 +-
 .../web/mail/lib/lang/br_mail_alias_list.lng  |   8 +-
 .../web/mail/lib/lang/br_mail_aliasdomain.lng |   8 +-
 .../lib/lang/br_mail_aliasdomain_list.lng     |   5 +-
 .../web/mail/lib/lang/br_mail_backup_list.lng |  20 +-
 .../web/mail/lib/lang/br_mail_blacklist.lng   |   4 +-
 .../mail/lib/lang/br_mail_blacklist_list.lng  |   6 +-
 .../mail/lib/lang/br_mail_content_filter.lng  |   6 +-
 .../lib/lang/br_mail_content_filter_list.lng  |   2 +-
 .../web/mail/lib/lang/br_mail_domain.lng      |  26 +-
 .../mail/lib/lang/br_mail_domain_catchall.lng |  13 +-
 .../lib/lang/br_mail_domain_catchall_list.lng |   6 +-
 .../web/mail/lib/lang/br_mail_forward.lng     |  16 +-
 .../mail/lib/lang/br_mail_forward_list.lng    |   6 +-
 interface/web/mail/lib/lang/br_mail_get.lng   |  22 +-
 .../web/mail/lib/lang/br_mail_get_list.lng    |   2 +-
 .../web/mail/lib/lang/br_mail_mailinglist.lng |  26 +-
 .../lib/lang/br_mail_mailinglist_list.lng     |   2 +-
 .../mail/lib/lang/br_mail_relay_recipient.lng |   4 +-
 .../lib/lang/br_mail_relay_recipient_list.lng |   4 +-
 .../web/mail/lib/lang/br_mail_spamfilter.lng  |  18 +-
 .../mail/lib/lang/br_mail_spamfilter_list.lng |   8 +-
 .../web/mail/lib/lang/br_mail_transport.lng   |   4 +-
 .../mail/lib/lang/br_mail_transport_list.lng  |   4 +-
 interface/web/mail/lib/lang/br_mail_user.lng  |  86 +--
 .../web/mail/lib/lang/br_mail_user_filter.lng |  20 +-
 .../lib/lang/br_mail_user_filter_list.lng     |   2 +-
 .../mail/lib/lang/br_mail_user_stats_list.lng |   2 +-
 .../web/mail/lib/lang/br_mail_whitelist.lng   |   6 +-
 .../mail/lib/lang/br_mail_whitelist_list.lng  |   6 +-
 .../mail/lib/lang/br_spamfilter_blacklist.lng |   6 +-
 .../lib/lang/br_spamfilter_blacklist_list.lng |   6 +-
 .../mail/lib/lang/br_spamfilter_config.lng    |  30 +-
 .../lib/lang/br_spamfilter_config_list.lng    |   4 +-
 .../mail/lib/lang/br_spamfilter_policy.lng    |  82 +--
 .../lib/lang/br_spamfilter_policy_list.lng    |  10 +-
 .../web/mail/lib/lang/br_spamfilter_users.lng |   2 +-
 .../lib/lang/br_spamfilter_users_list.lng     |   8 +-
 .../mail/lib/lang/br_spamfilter_whitelist.lng |   6 +-
 .../lib/lang/br_spamfilter_whitelist_list.lng |   6 +-
 .../lib/lang/br_user_quota_stats_list.lng     |   4 +-
 .../web/mail/lib/lang/br_xmpp_domain.lng      |  74 +--
 .../web/mail/lib/lang/br_xmpp_domain_list.lng |   2 +-
 interface/web/mail/lib/lang/br_xmpp_user.lng  |  12 +-
 .../web/mail/lib/lang/br_xmpp_user_list.lng   |   2 +-
 interface/web/mail/lib/lang/tr.lng            |  35 +-
 .../mail/lib/lang/tr_backup_stats_list.lng    |  14 +-
 interface/web/mail/lib/lang/tr_mail_alias.lng |  12 +-
 .../web/mail/lib/lang/tr_mail_aliasdomain.lng |  12 +-
 .../lib/lang/tr_mail_aliasdomain_list.lng     |   5 +-
 .../web/mail/lib/lang/tr_mail_backup_list.lng |  28 +-
 .../web/mail/lib/lang/tr_mail_blacklist.lng   |   2 +-
 .../mail/lib/lang/tr_mail_blacklist_list.lng  |   2 +-
 .../mail/lib/lang/tr_mail_content_filter.lng  |   4 +-
 .../web/mail/lib/lang/tr_mail_domain.lng      |  34 +-
 .../lib/lang/tr_mail_domain_admin_list.lng    |   6 +-
 .../mail/lib/lang/tr_mail_domain_catchall.lng |  10 +-
 .../lib/lang/tr_mail_domain_catchall_list.lng |   4 +-
 .../web/mail/lib/lang/tr_mail_domain_list.lng |   6 +-
 .../web/mail/lib/lang/tr_mail_forward.lng     |  12 +-
 interface/web/mail/lib/lang/tr_mail_get.lng   |   8 +-
 .../web/mail/lib/lang/tr_mail_mailinglist.lng |  14 +-
 .../lib/lang/tr_mail_mailinglist_list.lng     |   4 +-
 .../mail/lib/lang/tr_mail_relay_recipient.lng |   2 +-
 .../web/mail/lib/lang/tr_mail_spamfilter.lng  |   6 +-
 .../mail/lib/lang/tr_mail_spamfilter_list.lng |   4 +-
 .../web/mail/lib/lang/tr_mail_transport.lng   |   4 +-
 .../mail/lib/lang/tr_mail_transport_list.lng  |   2 +-
 interface/web/mail/lib/lang/tr_mail_user.lng  |  52 +-
 .../web/mail/lib/lang/tr_mail_user_filter.lng |   4 +-
 .../web/mail/lib/lang/tr_mail_user_list.lng   |   6 +-
 .../mail/lib/lang/tr_mail_user_stats_list.lng |   2 +-
 .../web/mail/lib/lang/tr_mail_whitelist.lng   |   2 +-
 .../mail/lib/lang/tr_mail_whitelist_list.lng  |   2 +-
 .../lib/lang/tr_spamfilter_blacklist_list.lng |   2 +-
 .../mail/lib/lang/tr_spamfilter_config.lng    |  12 +-
 .../lib/lang/tr_spamfilter_config_list.lng    |   2 +-
 .../mail/lib/lang/tr_spamfilter_policy.lng    |  71 +--
 .../lib/lang/tr_spamfilter_policy_list.lng    |   6 +-
 .../lib/lang/tr_spamfilter_users_list.lng     |   4 +-
 .../lib/lang/tr_spamfilter_whitelist_list.lng |   2 +-
 .../lib/lang/tr_user_quota_stats_list.lng     |   2 +-
 .../web/mail/lib/lang/tr_xmpp_domain.lng      | 120 ++---
 .../lib/lang/tr_xmpp_domain_admin_list.lng    |  12 +-
 .../web/mail/lib/lang/tr_xmpp_domain_list.lng |  10 +-
 interface/web/mail/lib/lang/tr_xmpp_user.lng  |  26 +-
 .../web/mail/lib/lang/tr_xmpp_user_list.lng   |  12 +-
 interface/web/mailuser/lib/lang/br.lng        |  10 +-
 interface/web/mailuser/lib/lang/br_index.lng  |  10 +-
 .../lib/lang/br_mail_user_autoresponder.lng   |  14 +-
 .../web/mailuser/lib/lang/br_mail_user_cc.lng |  10 +-
 .../mailuser/lib/lang/br_mail_user_filter.lng |  14 +-
 .../lib/lang/br_mail_user_filter_list.lng     |   2 +-
 .../lib/lang/br_mail_user_password.lng        |  10 +-
 .../lib/lang/br_mail_user_spamfilter.lng      |   2 +-
 interface/web/mailuser/lib/lang/tr.lng        |   2 +-
 interface/web/mailuser/lib/lang/tr_index.lng  |   8 +-
 .../mailuser/lib/lang/tr_mail_user_filter.lng |   4 +-
 .../lib/lang/tr_mail_user_filter_list.lng     |   2 +-
 .../lib/lang/tr_mail_user_password.lng        |   8 +-
 .../lib/lang/tr_mail_user_spamfilter.lng      |   4 +-
 interface/web/monitor/lib/lang/br.lng         | 225 ++++----
 .../web/monitor/lib/lang/br_datalog_list.lng  |   4 +-
 .../lib/lang/br_dataloghistory_list.lng       |  12 +-
 .../lib/lang/br_dataloghistory_undo.lng       |  10 +-
 .../lib/lang/br_dataloghistory_view.lng       |  46 +-
 .../web/monitor/lib/lang/br_syslog_list.lng   |   6 +-
 interface/web/monitor/lib/lang/tr.lng         |  69 ++-
 interface/web/sites/lib/lang/br.lng           |  21 +-
 interface/web/sites/lib/lang/br_aps.lng       |  76 +--
 .../sites/lib/lang/br_aps_instances_list.lng  |   2 +-
 .../sites/lib/lang/br_aps_packages_list.lng   |   2 +-
 .../lib/lang/br_aps_update_packagelist.lng    |   4 +-
 .../sites/lib/lang/br_backup_stats_list.lng   |  10 +-
 interface/web/sites/lib/lang/br_cron.lng      |  28 +-
 interface/web/sites/lib/lang/br_cron_list.lng |  10 +-
 interface/web/sites/lib/lang/br_database.lng  |  54 +-
 .../sites/lib/lang/br_database_admin_list.lng |   6 +-
 .../web/sites/lib/lang/br_database_list.lng   |   6 +-
 .../lib/lang/br_database_quota_stats_list.lng |   8 +-
 .../web/sites/lib/lang/br_database_user.lng   |  20 +-
 .../lib/lang/br_database_user_admin_list.lng  |   4 +-
 .../sites/lib/lang/br_database_user_list.lng  |   4 +-
 .../lib/lang/br_ftp_sites_stats_list.lng      |   4 +-
 interface/web/sites/lib/lang/br_ftp_user.lng  |  39 +-
 .../web/sites/lib/lang/br_shell_user.lng      |  46 +-
 .../web/sites/lib/lang/br_shell_user_list.lng |   2 +-
 .../lib/lang/br_user_quota_stats_list.lng     |   6 +-
 .../web/sites/lib/lang/br_web_aliasdomain.lng | 134 ++---
 .../lib/lang/br_web_aliasdomain_list.lng      |  10 +-
 .../web/sites/lib/lang/br_web_backup_list.lng |  27 +-
 .../web/sites/lib/lang/br_web_childdomain.lng | 148 ++---
 .../lib/lang/br_web_childdomain_list.lng      |  14 +-
 .../web/sites/lib/lang/br_web_domain.lng      | 179 +++----
 .../web/sites/lib/lang/br_web_folder.lng      |   2 +-
 .../web/sites/lib/lang/br_web_folder_user.lng |  10 +-
 .../lib/lang/br_web_folder_user_list.lng      |   4 +-
 .../web/sites/lib/lang/br_web_subdomain.lng   |  34 +-
 .../sites/lib/lang/br_web_vhost_domain.lng    | 199 +++----
 .../lang/br_web_vhost_domain_admin_list.lng   |   4 +-
 .../lib/lang/br_web_vhost_domain_list.lng     |   6 +-
 .../sites/lib/lang/br_web_vhost_subdomain.lng | 159 +++---
 .../web/sites/lib/lang/br_webdav_user.lng     |  18 +-
 interface/web/sites/lib/lang/tr.lng           |  12 +-
 interface/web/sites/lib/lang/tr_aps.lng       |  23 +-
 .../sites/lib/lang/tr_aps_instances_list.lng  |   4 +-
 .../sites/lib/lang/tr_backup_stats_list.lng   |  14 +-
 interface/web/sites/lib/lang/tr_cron.lng      |   6 +-
 interface/web/sites/lib/lang/tr_database.lng  |  30 +-
 .../sites/lib/lang/tr_database_admin_list.lng |   8 +-
 .../web/sites/lib/lang/tr_database_list.lng   |   2 +-
 .../lib/lang/tr_database_quota_stats_list.lng |  14 +-
 .../web/sites/lib/lang/tr_database_user.lng   |  12 +-
 .../lib/lang/tr_ftp_sites_stats_list.lng      |  16 +-
 interface/web/sites/lib/lang/tr_ftp_user.lng  |   7 +-
 .../web/sites/lib/lang/tr_shell_user.lng      |   4 +-
 .../web/sites/lib/lang/tr_shell_user_list.lng |   6 +-
 .../lib/lang/tr_user_quota_stats_list.lng     |   2 +-
 .../web/sites/lib/lang/tr_web_aliasdomain.lng |  66 +--
 .../lib/lang/tr_web_aliasdomain_list.lng      |  16 +-
 .../web/sites/lib/lang/tr_web_backup_list.lng |  15 +-
 .../web/sites/lib/lang/tr_web_childdomain.lng | 178 +++---
 .../lib/lang/tr_web_childdomain_list.lng      |  20 +-
 .../lib/lang/tr_web_directive_snippets.lng    |   2 +-
 .../web/sites/lib/lang/tr_web_domain.lng      |  80 +--
 .../lib/lang/tr_web_domain_admin_list.lng     |   2 +-
 .../web/sites/lib/lang/tr_web_domain_list.lng |   2 +-
 .../web/sites/lib/lang/tr_web_folder_user.lng |   4 +-
 .../lib/lang/tr_web_sites_stats_list.lng      |   2 +-
 .../web/sites/lib/lang/tr_web_subdomain.lng   |  38 +-
 .../sites/lib/lang/tr_web_subdomain_list.lng  |   6 +-
 .../sites/lib/lang/tr_web_vhost_domain.lng    | 123 ++---
 .../lang/tr_web_vhost_domain_admin_list.lng   |  24 +-
 .../lib/lang/tr_web_vhost_domain_list.lng     |  14 +-
 .../sites/lib/lang/tr_web_vhost_subdomain.lng |  77 +--
 .../lib/lang/tr_web_vhost_subdomain_list.lng  |   6 +-
 .../web/sites/lib/lang/tr_webdav_user.lng     |   4 +-
 .../lib/lang/br_strengthmeter.lng             |   4 +-
 interface/web/tools/lib/lang/br.lng           |  12 +-
 .../tools/lib/lang/br_import_ispconfig.lng    |  26 +-
 .../web/tools/lib/lang/br_import_vpopmail.lng |   9 +-
 interface/web/tools/lib/lang/br_index.lng     |   2 +-
 interface/web/tools/lib/lang/br_interface.lng |   6 +-
 interface/web/tools/lib/lang/br_resync.lng    |  72 +--
 .../web/tools/lib/lang/br_tpl_default.lng     |   4 +-
 .../web/tools/lib/lang/br_usersettings.lng    |  12 +-
 interface/web/tools/lib/lang/tr.lng           |  10 +-
 .../tools/lib/lang/tr_import_ispconfig.lng    |  37 +-
 .../web/tools/lib/lang/tr_import_vpopmail.lng |  11 +-
 interface/web/tools/lib/lang/tr_index.lng     |   2 +-
 interface/web/tools/lib/lang/tr_interface.lng |   2 +-
 interface/web/tools/lib/lang/tr_resync.lng    |  98 ++--
 .../web/tools/lib/lang/tr_usersettings.lng    |   6 +-
 interface/web/vm/lib/lang/br.lng              |   6 +-
 .../web/vm/lib/lang/br_openvz_action.lng      |  18 +-
 interface/web/vm/lib/lang/br_openvz_ip.lng    |   6 +-
 .../web/vm/lib/lang/br_openvz_ip_list.lng     |   2 +-
 .../web/vm/lib/lang/br_openvz_ostemplate.lng  |   6 +-
 .../vm/lib/lang/br_openvz_ostemplate_list.lng |   6 +-
 .../web/vm/lib/lang/br_openvz_template.lng    | 146 ++---
 .../vm/lib/lang/br_openvz_template_list.lng   |   4 +-
 interface/web/vm/lib/lang/br_openvz_vm.lng    |  43 +-
 .../web/vm/lib/lang/br_openvz_vm_list.lng     |   6 +-
 interface/web/vm/lib/lang/tr.lng              |   6 +-
 .../web/vm/lib/lang/tr_openvz_action.lng      |  15 +-
 interface/web/vm/lib/lang/tr_openvz_ip.lng    |   2 +-
 .../vm/lib/lang/tr_openvz_ostemplate_list.lng |   2 +-
 .../web/vm/lib/lang/tr_openvz_template.lng    |  22 +-
 interface/web/vm/lib/lang/tr_openvz_vm.lng    |  20 +-
 .../web/vm/lib/lang/tr_openvz_vm_list.lng     |   4 +-
 389 files changed, 4516 insertions(+), 4450 deletions(-)
 create mode 100644 interface/web/admin/lib/lang/tr_login_as.lng

diff --git a/interface/lib/lang/br.lng b/interface/lib/lang/br.lng
index 7db654bd05..60a0dcf910 100644
--- a/interface/lib/lang/br.lng
+++ b/interface/lib/lang/br.lng
@@ -1,45 +1,48 @@
 <?php
-$wb['conf_format_dateshort'] = 'd/m/Y';
+$wb['conf_format_dateshort'] = 'd-m-Y';
+$wb['conf_format_dateshort_human_readable'] = 'dd-mm-yyyy';
 $wb['conf_format_datelong'] = 'l dS de F Y';
 $wb['conf_format_timeshort'] = 'H:i';
 $wb['conf_format_timelong'] = 'H:i:s';
-$wb['conf_format_datetime'] = 'd/m/Y H:i';
+$wb['conf_format_datetime'] = 'd-m-Y H:i';
 $wb['number_format_decimals'] = '4';
 $wb['number_format_decimals_client'] = '2';
 $wb['number_format_dec_point'] = '.';
 $wb['number_format_thousands_sep'] = '.';
 $wb['error_301'] = 'Módulo não permitido para o usuário atual.';
-$wb['error_302'] = 'Módulo é inválido.';
-$wb['error_1001'] = 'Usuário ou senha em branco!';
-$wb['error_1002'] = 'Usuário ou senha incorretos!';
-$wb['error_1003'] = 'Usuário inativo!';
-$wb['delete_confirmation'] = 'Tem certeza de que deseja remover este registro?';
-$wb['error_no_view_permission'] = 'Você não tem permissão para visualizar este registro ou o mesmo não existe!';
+$wb['error_302'] = 'Módulo inválido.';
+$wb['error_1001'] = 'Usuário e/ou senha está em branco!';
+$wb['error_1002'] = 'Usuário e/ou senha incorretos!';
+$wb['error_1003'] = 'Usuário desabilitado!';
+$wb['delete_confirmation'] = 'Você tem certeza que deseja remover o registro?';
+$wb['error_no_view_permission'] = 'Você não tem permissão para visualizar este registro ou o registro não existe!';
 $wb['error_no_delete_permission'] = 'Você não tem permissão para remover este registro!';
 $wb['page_txt'] = 'Página';
 $wb['page_of_txt'] = 'de';
-$wb['page_next_txt'] = 'Próximo';
-$wb['page_back_txt'] = 'Voltar';
+$wb['page_and_txt'] = 'e';
+$wb['page_next_txt'] = 'Próxima';
+$wb['page_back_txt'] = 'Anterior';
 $wb['delete_txt'] = 'Remover';
 $wb['filter_txt'] = 'Filtrar';
 $wb['add_new_record_txt'] = 'Adicionar novo registro';
 $wb['btn_save_txt'] = 'Salvar';
-$wb['btn_cancel_txt'] = 'Voltar';
-$wb['toolsarea_head_txt'] = 'Extras';
-$wb['page_and_txt'] = 'e';
+$wb['btn_cancel_txt'] = 'Cancelar';
 $wb['top_menu_system'] = 'Sistema';
 $wb['top_menu_client'] = 'Clientes';
-$wb['top_menu_email'] = 'e-Mails';
+$wb['top_menu_email'] = 'e-Mail';
 $wb['top_menu_monitor'] = 'Monitor';
 $wb['top_menu_sites'] = 'Sites';
 $wb['top_menu_dns'] = 'DNS';
-$wb['top_menu_tools'] = 'Extras';
+$wb['top_menu_tools'] = 'Ferramentas';
 $wb['top_menu_help'] = 'Ajuda';
-$wb['top_menu_billing'] = 'Faturas';
+$wb['top_menu_billing'] = 'Faturamento';
+$wb['top_menu_mailuser'] = 'Contas de e-mail';
 $wb['top_menu_domain'] = 'Domínios';
 $wb['top_menu_dashboard'] = 'Início';
-$wb['latest_news_txt'] = 'Últimas notícias';
 $wb['top_menu_vm'] = 'VPS';
+$wb['toolsarea_head_txt'] = 'Ferramentas';
+$wb['latest_news_txt'] = 'Novidades';
+$wb['logout_txt'] = 'Sair';
 $wb['daynamesmin_su'] = 'Do';
 $wb['daynamesmin_mo'] = 'Se';
 $wb['daynamesmin_tu'] = 'Te';
@@ -68,27 +71,24 @@ $wb['monthnamesshort_nov'] = 'Nov';
 $wb['monthnamesshort_dec'] = 'Dez';
 $wb['datepicker_nextText'] = 'Próximo';
 $wb['datepicker_prevText'] = 'Anterior';
-$wb['logout_txt'] = 'Sair';
-$wb['conf_format_dateshort_human_readable'] = 'dd-mm-aaaa';
-$wb['submit_confirmation'] = 'Você tem certeza que gostaria de executar esta ação?';
-$wb['top_menu_mailuser'] = 'e-Mails';
+$wb['submit_confirmation'] = 'Você tem certeza que deseja realizar esta ação?';
 $wb['globalsearch_resultslimit_of_txt'] = 'de';
 $wb['globalsearch_resultslimit_results_txt'] = 'resultados';
 $wb['globalsearch_noresults_text_txt'] = 'Sem resultados.';
 $wb['globalsearch_noresults_limit_txt'] = '0 resultados';
 $wb['globalsearch_searchfield_watermark_txt'] = 'Pesquisar';
 $wb['globalsearch_suggestions_text_txt'] = 'Sugestões';
-$wb['global_tabchange_warning_txt'] = 'As alterações efetuadas nesta aba terão efeito após você pressionar OK. Se cancelar, as alterações serão descartadas.';
-$wb['global_tabchange_discard_txt'] = 'Você não salvou as alterações nesta aba. As alterações serão descartadas se continuar.';
-$wb['datalog_changes_txt'] = 'As seguintes alterações ainda não foram realizadas em todos os servidores.';
-$wb['datalog_changes_end_txt'] = 'Gravar as atualizações pode demorar alguns minutos. Por favor, seja paciente.';
+$wb['global_tabchange_warning_txt'] = 'Para alterar dados nesta aba clique OK. Cancelar descarta todas as alterações.';
+$wb['global_tabchange_discard_txt'] = 'Você não salvou as alterações nesta aba. Todas as alterações serão descartadas caso prossiga.';
+$wb['datalog_changes_txt'] = 'As alterações ainda não propagaram em todos os servidores:';
+$wb['datalog_changes_end_txt'] = 'Gravar alterações pode levar alguns minutos. Por favor, seja paciente.';
 $wb['datalog_status_i_web_database'] = 'Adicionar novo banco de dados';
 $wb['datalog_status_u_web_database'] = 'Atualizar banco de dados';
 $wb['datalog_status_d_web_database'] = 'Remover banco de dados';
-$wb['datalog_status_i_web_database_user'] = 'Adicionar usuário do banco de dados';
-$wb['datalog_status_u_web_database_user'] = 'Atualizar usuário do banco de dados';
-$wb['datalog_status_d_web_database_user'] = 'Remover usuário do banco de dados';
-$wb['datalog_status_i_web_domain'] = 'Adicionar novo site';
+$wb['datalog_status_i_web_database_user'] = 'Adicionar novo usuário de banco de dados';
+$wb['datalog_status_u_web_database_user'] = 'Atualizar usuário de banco de dados';
+$wb['datalog_status_d_web_database_user'] = 'Remover usuário de banco de dados';
+$wb['datalog_status_i_web_domain'] = 'Adicionar site';
 $wb['datalog_status_u_web_domain'] = 'Atualizar site';
 $wb['datalog_status_d_web_domain'] = 'Remover site';
 $wb['datalog_status_i_ftp_user'] = 'Adicionar usuário ftp';
@@ -100,9 +100,12 @@ $wb['datalog_status_d_mail_domain'] = 'Remover domínio de e-mail';
 $wb['datalog_status_i_mail_user'] = 'Adicionar conta de e-mail';
 $wb['datalog_status_u_mail_user'] = 'Atualizar conta de e-mail';
 $wb['datalog_status_d_mail_user'] = 'Remover conta de e-mail';
-$wb['datalog_status_i_mail_forwarding'] = 'Adicionar encaminhamento de e-mail';
-$wb['datalog_status_u_mail_forwarding'] = 'Atualizar encaminhamento de e-mail';
-$wb['datalog_status_d_mail_forwarding'] = 'Remover encaminhamento de e-mail';
+$wb['datalog_status_i_spamfilter_users'] = 'Adicionar filtros anti-spam';
+$wb['datalog_status_u_spamfilter_users'] = 'Atualizar filtros anti-spam';
+$wb['datalog_status_d_spamfilter_users'] = 'Remover filtros anti-spam';
+$wb['datalog_status_i_mail_forwarding'] = 'Adicionar endereço de e-mail';
+$wb['datalog_status_u_mail_forwarding'] = 'Atualizar endereço de e-mail';
+$wb['datalog_status_d_mail_forwarding'] = 'Remover endereço de e-mail';
 $wb['datalog_status_i_dns_rr'] = 'Adicionar registro dns';
 $wb['datalog_status_u_dns_rr'] = 'Atualizar registro dns';
 $wb['datalog_status_d_dns_rr'] = 'Remover registro dns';
@@ -112,50 +115,47 @@ $wb['datalog_status_d_dns_soa'] = 'Remover zona dns';
 $wb['datalog_status_i_cron'] = 'Adicionar tarefa no cron';
 $wb['datalog_status_u_cron'] = 'Atualizar tarefa no cron';
 $wb['datalog_status_d_cron'] = 'Remover tarefa no cron';
-$wb['datalog_status_i_mail_get'] = 'Adicionar conta de busca de e-mails';
-$wb['datalog_status_u_mail_get'] = 'Atualizar conta de busca de e-mails';
-$wb['datalog_status_d_mail_get'] = 'Remover conta de busca de e-mails';
+$wb['datalog_status_i_mail_get'] = 'Adicionar conta de busca de e-mail';
+$wb['datalog_status_u_mail_get'] = 'Atualizar conta de busca de e-mail';
+$wb['datalog_status_d_mail_get'] = 'Remover conta de busca de e-mail';
 $wb['datalog_status_i_mail_mailinglist'] = 'Adicionar lista de e-mails';
 $wb['datalog_status_u_mail_mailinglist'] = 'Atualizar lista de e-mails';
 $wb['datalog_status_d_mail_mailinglist'] = 'Remover lista de e-mails';
-$wb['datalog_status_i_shell_user'] = 'Adicionar usuário shell';
-$wb['datalog_status_u_shell_user'] = 'Atualizar usuário shell';
-$wb['datalog_status_d_shell_user'] = 'Remover usuário shell';
+$wb['datalog_status_i_shell_user'] = 'Adicionar usuário do shell';
+$wb['datalog_status_u_shell_user'] = 'Atualizar usuário do shell';
+$wb['datalog_status_d_shell_user'] = 'Remover usuário do shell';
 $wb['datalog_status_i_web_folder'] = 'Adicionar pasta protegida';
 $wb['datalog_status_u_web_folder'] = 'Atualizar pasta protegida';
 $wb['datalog_status_d_web_folder'] = 'Remover pasta protegida';
 $wb['datalog_status_i_web_folder_user'] = 'Adicionar usuário de pasta protegida';
 $wb['datalog_status_u_web_folder_user'] = 'Atualizar usuário de pasta protegida';
 $wb['datalog_status_d_web_folder_user'] = 'Remover usuário de pasta protegida';
-$wb['datalog_status_i_spamfilter_users'] = 'Adicionar configurações de filtro anti-spam';
-$wb['datalog_status_u_spamfilter_users'] = 'Atualizar configurações de filtro anti-spam';
-$wb['datalog_status_d_spamfilter_users'] = 'Remover configurações de filtro anti-spam';
+$wb['datalog_status_i_xmpp_domain'] = 'Adicionar domínio xmpp';
+$wb['datalog_status_u_xmpp_domain'] = 'Atualizar domínio xmpp';
+$wb['datalog_status_d_xmpp_domain'] = 'Remover domínio xmpp';
+$wb['datalog_status_i_xmpp_user'] = 'Adicionar usuário xmpp';
+$wb['datalog_status_u_xmpp_user'] = 'Atualizar usuário xmpp';
+$wb['datalog_status_d_xmpp_user'] = 'Remover usuário xmpp';
+$wb['err_csrf_attempt_blocked'] = 'Tentativa de CSRF bloqueada.';
 $wb['login_as_txt'] = 'Acessar como';
 $wb['no_domain_perm'] = 'Você não tem permissão para este domínio.';
 $wb['no_destination_perm'] = 'Você não tem permissão para este destino.';
-$wb['client_you_are_locked'] = 'Você não tem permissão para alterar quaisquer configurações.';
+$wb['client_you_are_locked'] = 'Você não tem permissão para alterar nenhuma configuração.';
 $wb['gender_m_txt'] = 'Sr.';
 $wb['gender_f_txt'] = 'Sra.';
 $wb['client_cannot_be_deleted_because_of_billing_module_txt'] = 'Este cliente possui registros no módulo de faturamento, portanto não pode ser removido.';
 $wb['yes_txt'] = 'Sim';
 $wb['no_txt'] = 'Não';
+$wb['None'] = 'Nenhum';
 $wb['strength_1'] = 'Fraca';
 $wb['strength_2'] = 'Razoável';
 $wb['strength_3'] = 'Boa';
 $wb['strength_4'] = 'Forte';
 $wb['strength_5'] = 'Muito Forte';
-$wb['weak_password_txt'] = 'A senha escolhida não corresponde às diretrizes de segurança. São necessários no mínimo {chars} caracteres e dificuldade {strength}.';
-$wb['weak_password_length_txt'] = 'A senha escolhida não corresponde às diretrizes de segurança. São necessários no mínimo {chars} caracteres.';
-$wb['security_check1_txt'] = 'Verifique se há permissão de segurança:';
-$wb['security_check2_txt'] = 'falha';
-$wb['err_csrf_attempt_blocked'] = 'CSRF temporariamente bloqueado.';
+$wb['weak_password_txt'] = 'A senha configurada não obedece as diretivas de segurança. A senha deve possuir ao menos {chars} caracteres e ao menos um caractere maiúsculoe um caractere especial e dificuldade "{strength}".';
+$wb['weak_password_length_txt'] = 'A senha configurada não obedece as diretivas de segurança. A senha deve possuir ao menos {chars} de comprimento.';
+$wb['security_check1_txt'] = 'Verifique as permissões de segurança:';
+$wb['security_check2_txt'] = 'falhou.';
 $wb['select_directive_snippet_txt'] = 'Diretiva de trechos de código';
 $wb['select_master_directive_snippet_txt'] = 'Diretiva mestre de trechos de código';
-$wb['None'] = 'Nenhum';
-$wb['datalog_status_i_xmpp_domain'] = 'Adicionar domínio XMPP';
-$wb['datalog_status_u_xmpp_domain'] = 'Atualizar domínio XMPP';
-$wb['datalog_status_d_xmpp_domain'] = 'Remover domínio XMPP';
-$wb['datalog_status_i_xmpp_user'] = 'Adicionar usuário XMPP';
-$wb['datalog_status_u_xmpp_user'] = 'Atualizar usuário XMPP';
-$wb['datalog_status_d_xmpp_user'] = 'Remover usuário XMPP';
 ?>
diff --git a/interface/lib/lang/tr.lng b/interface/lib/lang/tr.lng
index 115bc890bb..cf4491ad5d 100644
--- a/interface/lib/lang/tr.lng
+++ b/interface/lib/lang/tr.lng
@@ -36,10 +36,10 @@ $wb['top_menu_dns'] = 'DNS';
 $wb['top_menu_tools'] = 'Araçlar';
 $wb['top_menu_help'] = 'Yardım';
 $wb['top_menu_billing'] = 'Faturalama';
-$wb['top_menu_mailuser'] = 'Posta Kullanıcısı';
+$wb['top_menu_mailuser'] = 'E-posta Kullanıcısı';
 $wb['top_menu_domain'] = 'Alan Adları';
 $wb['top_menu_dashboard'] = 'Açılış';
-$wb['top_menu_vm'] = 'SSunucu';
+$wb['top_menu_vm'] = 'sSunucu';
 $wb['toolsarea_head_txt'] = 'Araçlar';
 $wb['latest_news_txt'] = 'Haberler';
 $wb['logout_txt'] = 'Oturumu Kapat';
@@ -74,65 +74,72 @@ $wb['datepicker_prevText'] = 'Önceki';
 $wb['submit_confirmation'] = 'Bu iÅŸlemi yapmak istiyor musunuz?';
 $wb['globalsearch_resultslimit_of_txt'] = '/';
 $wb['globalsearch_resultslimit_results_txt'] = 'sonuç';
-$wb['globalsearch_noresults_text_txt'] = 'Sonuç yok.';
+$wb['globalsearch_noresults_text_txt'] = 'Uygun bir sonuç bulunamadı.';
 $wb['globalsearch_noresults_limit_txt'] = '0 sonuç';
 $wb['globalsearch_searchfield_watermark_txt'] = 'Arama';
 $wb['globalsearch_suggestions_text_txt'] = 'Öneriler';
-$wb['global_tabchange_warning_txt'] = 'Bu sekmedeki değişiklikler Tamam düğmesine tıklandığında kaydedilir. İptal düğmesine tıklandığında yoksayılır.';
-$wb['global_tabchange_discard_txt'] = 'Bu sekmede kaydedilmemiş değişiklikler var. Devam ederseniz değişiklikler yoksayılacak.';
+$wb['global_tabchange_warning_txt'] = 'Bu sekmedeki değişiklikler Tamam düğmesine tıklandığında kaydedilir. İptal düğmesine tıklandığında yok sayılır.';
+$wb['global_tabchange_discard_txt'] = 'Bu sekmede kaydedilmemiş değişiklikler var. Devam ederseniz değişiklikler yok sayılacak.';
+
 $wb['datalog_changes_txt'] = 'Şu değişiklikler henüz tüm sunuculara dağıtılmadı:';
 $wb['datalog_changes_end_txt'] = 'Güncellemelerin kaydedilmesi bir dakika kadar sürecek. Lütfen bekleyin.';
-$wb['datalog_status_i_web_database'] = 'Veritabanı ekle';
-$wb['datalog_status_u_web_database'] = 'Veritabanını güncelle';
-$wb['datalog_status_d_web_database'] = 'Veritabanını sil';
-$wb['datalog_status_i_web_database_user'] = 'Veritabanı kullanıcısı ekle';
-$wb['datalog_status_u_web_database_user'] = 'Veritabanı kullanıcısını güncelle';
-$wb['datalog_status_d_web_database_user'] = 'Veritabanı kullanıcısını sil';
-$wb['datalog_status_i_web_domain'] = 'Web sitesi ekle';
-$wb['datalog_status_u_web_domain'] = 'Web sitesi ayarlarını güncelle';
-$wb['datalog_status_d_web_domain'] = 'Web sitesini sil';
-$wb['datalog_status_i_ftp_user'] = 'FTP kullanıcısı ekle';
-$wb['datalog_status_u_ftp_user'] = 'FTP kullanıcısını güncelle';
-$wb['datalog_status_d_ftp_user'] = 'FTP kullanıcısını sil';
-$wb['datalog_status_i_mail_domain'] = 'E-posta alan adı ekle';
-$wb['datalog_status_u_mail_domain'] = 'E-posta alan adını güncelle';
-$wb['datalog_status_d_mail_domain'] = 'E-posta alan adını sil';
-$wb['datalog_status_i_mail_user'] = 'E-posta kullanıcısı ekle';
-$wb['datalog_status_u_mail_user'] = 'E-posta kullanıcısını güncelle';
-$wb['datalog_status_d_mail_user'] = 'E-posta kullanıcısını sil';
-$wb['datalog_status_i_spamfilter_users'] = 'Spam süzgeci ayarları ekle';
-$wb['datalog_status_u_spamfilter_users'] = 'Spam süzgeci ayarlarını güncelle';
-$wb['datalog_status_d_spamfilter_users'] = 'Spam süzgeci ayarlarını sil';
-$wb['datalog_status_i_mail_forwarding'] = 'E-posta adresi ekle';
-$wb['datalog_status_u_mail_forwarding'] = 'E-posta adresini güncelle';
-$wb['datalog_status_d_mail_forwarding'] = 'E-posta adresini sil';
-$wb['datalog_status_i_dns_rr'] = 'DNS kaydı ekle';
-$wb['datalog_status_u_dns_rr'] = 'DNS kaydını güncelle';
-$wb['datalog_status_d_dns_rr'] = 'DNS kaydını sil';
-$wb['datalog_status_i_dns_soa'] = 'DNS bölgesi ekle';
-$wb['datalog_status_u_dns_soa'] = 'DNS bölgesini güncelle';
-$wb['datalog_status_d_dns_soa'] = 'DNS bölgesini sil';
-$wb['datalog_status_i_cron'] = 'Zamanlanmış görev ekle';
-$wb['datalog_status_u_cron'] = 'Zamanlanmış görevi güncelle';
-$wb['datalog_status_d_cron'] = 'Zamanlanmış görevi sil';
-$wb['datalog_status_i_mail_get'] = 'E-posta alma hesabı ekle';
-$wb['datalog_status_u_mail_get'] = 'E-posta alma hesabını güncelle';
-$wb['datalog_status_d_mail_get'] = 'E-posta alma hesabını sil';
-$wb['datalog_status_i_mail_mailinglist'] = 'E-posta listesi ekle';
-$wb['datalog_status_u_mail_mailinglist'] = 'E-posta listesini güncelle';
-$wb['datalog_status_d_mail_mailinglist'] = 'E-posta listesini sil';
-$wb['datalog_status_i_shell_user'] = 'Kabuk kullanıcısı ekle';
-$wb['datalog_status_u_shell_user'] = 'Kabuk kullanıcısını güncelle';
-$wb['datalog_status_d_shell_user'] = 'Kabuk kullanıcısını sil';
-$wb['datalog_status_i_web_folder'] = 'Klasör koruması ekle';
-$wb['datalog_status_u_web_folder'] = 'Klasör korumasını güncelle';
-$wb['datalog_status_d_web_folder'] = 'Klasör korumasını sil';
-$wb['datalog_status_i_web_folder_user'] = 'Klasör koruma kullanıcısı ekle';
-$wb['datalog_status_u_web_folder_user'] = 'Klasör koruma kullanıcısını güncelle';
-$wb['datalog_status_d_web_folder_user'] = 'Klasör koruma kullanıcısını sil';
+$wb['datalog_status_i_web_database'] = 'Veritabanı Ekle';
+$wb['datalog_status_u_web_database'] = 'Veritabanını Güncelle';
+$wb['datalog_status_d_web_database'] = 'Veritabanını Sil';
+$wb['datalog_status_i_web_database_user'] = 'Veritabanı Kullanıcısı Ekle';
+$wb['datalog_status_u_web_database_user'] = 'Veritabanı Kullanıcısını Güncelle';
+$wb['datalog_status_d_web_database_user'] = 'Veritabanı Kullanıcısını Sil';
+$wb['datalog_status_i_web_domain'] = 'Web Sitesi Ekle';
+$wb['datalog_status_u_web_domain'] = 'Web Sitesi Ayarlarını Güncelle';
+$wb['datalog_status_d_web_domain'] = 'Web Sitesini Sil';
+$wb['datalog_status_i_ftp_user'] = 'FTP Kullanıcısı Ekle';
+$wb['datalog_status_u_ftp_user'] = 'FTP Kullanıcısını Güncelle';
+$wb['datalog_status_d_ftp_user'] = 'FTP Kullanıcısını Sil';
+$wb['datalog_status_i_mail_domain'] = 'E-posta Etki Alanı Ekle';
+$wb['datalog_status_u_mail_domain'] = 'E-posta Etki Alanını Güncelle';
+$wb['datalog_status_d_mail_domain'] = 'E-posta Etki Alanını Sil';
+$wb['datalog_status_i_mail_user'] = 'E-posta Kullanıcısı Ekle';
+$wb['datalog_status_u_mail_user'] = 'E-posta Kullanıcısını Güncelle';
+$wb['datalog_status_d_mail_user'] = 'E-posta Kullanıcısını Sil';
+$wb['datalog_status_i_spamfilter_users'] = 'Spam Süzgeci Ayarları Ekle';
+$wb['datalog_status_u_spamfilter_users'] = 'Spam Süzgeci Ayarlarını Güncelle';
+$wb['datalog_status_d_spamfilter_users'] = 'Spam Süzgeci Ayarlarını Sil';
+$wb['datalog_status_i_mail_forwarding'] = 'E-posta Adresi Ekle';
+$wb['datalog_status_u_mail_forwarding'] = 'E-posta Adresini Güncelle';
+$wb['datalog_status_d_mail_forwarding'] = 'E-posta Adresini Sil';
+$wb['datalog_status_i_dns_rr'] = 'DNS Kaydı Ekle';
+$wb['datalog_status_u_dns_rr'] = 'DNS Kaydını Güncelle';
+$wb['datalog_status_d_dns_rr'] = 'DNS Kaydını Sil';
+$wb['datalog_status_i_dns_soa'] = 'DNS Bölgesi Ekle';
+$wb['datalog_status_u_dns_soa'] = 'DNS Bölgesini Güncelle';
+$wb['datalog_status_d_dns_soa'] = 'DNS Bölgesini Sil';
+$wb['datalog_status_i_cron'] = 'Zamanlanmış Görev Ekle';
+$wb['datalog_status_u_cron'] = 'Zamanlanmış Görevi Güncelle';
+$wb['datalog_status_d_cron'] = 'Zamanlanmış Görevi Sil';
+$wb['datalog_status_i_mail_get'] = 'E-posta Alma Hesabı Ekle';
+$wb['datalog_status_u_mail_get'] = 'E-posta Alma Hesabını Güncelle';
+$wb['datalog_status_d_mail_get'] = 'E-posta Alma Hesabını Sil';
+$wb['datalog_status_i_mail_mailinglist'] = 'E-posta Listesi Ekle';
+$wb['datalog_status_u_mail_mailinglist'] = 'E-posta Listesini Güncelle';
+$wb['datalog_status_d_mail_mailinglist'] = 'E-posta Listesini Sil';
+$wb['datalog_status_i_shell_user'] = 'Kabuk Kullanıcısı Ekle';
+$wb['datalog_status_u_shell_user'] = 'Kabuk Kullanıcısını Güncelle';
+$wb['datalog_status_d_shell_user'] = 'Kabuk Kullanıcısını Sil';
+$wb['datalog_status_i_web_folder'] = 'Klasör Koruması Ekle';
+$wb['datalog_status_u_web_folder'] = 'Klasör Korumasını Güncelle';
+$wb['datalog_status_d_web_folder'] = 'Klasör Korumasını Sil';
+$wb['datalog_status_i_web_folder_user'] = 'Klasör Koruma Kullanıcısı Ekle';
+$wb['datalog_status_u_web_folder_user'] = 'Klasör Koruma Kullanıcısını Güncelle';
+$wb['datalog_status_d_web_folder_user'] = 'Klasör Koruma Kullanıcısını Sil';
+$wb['datalog_status_i_xmpp_domain'] = 'XMPP etki alanı ekle';
+$wb['datalog_status_u_xmpp_domain'] = 'XMPP etki alanını düzenle';
+$wb['datalog_status_d_xmpp_domain'] = 'XMPP etki alanını sil';
+$wb['datalog_status_i_xmpp_user'] = 'XMPP kullanıcısı ekle';
+$wb['datalog_status_u_xmpp_user'] = 'XMPP kullanıcısını güncelle';
+$wb['datalog_status_d_xmpp_user'] = 'XMPP kullanıcısını sil';
 $wb['err_csrf_attempt_blocked'] = 'CSRF giriÅŸimi engellendi.';
 $wb['login_as_txt'] = 'Müşteri adıyla oturum aç';
-$wb['no_domain_perm'] = 'Bu alan adı için izniniz yok.';
+$wb['no_domain_perm'] = 'Bu etki alanı için izniniz yok.';
 $wb['no_destination_perm'] = 'Bu hedef için izniniz yok.';
 $wb['client_you_are_locked'] = 'Herhangi bir ayarı değiştirme izniniz yok.';
 $wb['gender_m_txt'] = 'Bay';
@@ -146,16 +153,10 @@ $wb['strength_2'] = 'Yeterli';
 $wb['strength_3'] = 'Ä°yi';
 $wb['strength_4'] = 'Güçlü';
 $wb['strength_5'] = 'Çok Güçlü';
-$wb['weak_password_txt'] = 'Yazdığınız parola güvenlik ilkesine uygun değil. Parola en az {chars} karakter uzunluğunda ve \\"{strength}\\" güçlüğünde olmalı.';
+$wb['weak_password_txt'] = 'Yazdığınız parola güvenlik ilkesine uygun değil. Parola en az {chars} karakter uzunluğunda ve "{strength}" güçlüğünde olmalı.';
 $wb['weak_password_length_txt'] = 'Yazdığınız parola güvenlik ilkesine uygun değil. Parola en az {chars} karakter uzunluğunda olmalı.';
 $wb['security_check1_txt'] = 'Güvenlik iznini denetle:';
 $wb['security_check2_txt'] = 'başarısız.';
-$wb['select_directive_snippet_txt'] = 'Directive Snippets';
-$wb['select_master_directive_snippet_txt'] = 'Master Directive Snippets';
-$wb['datalog_status_i_xmpp_domain'] = 'Create XMPP domain';
-$wb['datalog_status_u_xmpp_domain'] = 'Update XMPP domain';
-$wb['datalog_status_d_xmpp_domain'] = 'Delete XMPP domain';
-$wb['datalog_status_i_xmpp_user'] = 'Create XMPP user';
-$wb['datalog_status_u_xmpp_user'] = 'Update XMPP user';
-$wb['datalog_status_d_xmpp_user'] = 'Delete XMPP user';
+$wb['select_directive_snippet_txt'] = 'Yönerge Kod Parçaları';
+$wb['select_master_directive_snippet_txt'] = 'Ana Komut Parçaları';
 ?>
diff --git a/interface/web/admin/lib/lang/br.lng b/interface/web/admin/lib/lang/br.lng
index c4df3fe58b..b558a1510e 100644
--- a/interface/web/admin/lib/lang/br.lng
+++ b/interface/web/admin/lib/lang/br.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['1001'] = 'Usuário ou senha está em branco.';
-$wb['1002'] = 'Usuário ou senha errados.';
+$wb['error_1001'] = 'Usuário ou senha está em branco.';
+$wb['error_1002'] = 'Usuário ou senha é inválido.';
 $wb['Groups'] = 'Grupos';
-$wb['groups_description'] = 'Edição dos grupos de usuários do sistema';
+$wb['groups_description'] = 'Editar grupos e usuários do sistema.';
 $wb['Servers'] = 'Servidores';
 $wb['Config'] = 'Configuração';
 $wb['Add user'] = 'Adicionar usuário';
@@ -11,30 +11,36 @@ $wb['Add group'] = 'Adicionar grupo';
 $wb['Edit group'] = 'Editar grupo';
 $wb['Edit server'] = 'Editar servidor';
 $wb['Sync. Now'] = 'Sincronizar agora';
-$wb['DB Sync.'] = 'Sincronizar banco de dados';
-$wb['User Management'] = 'Gerenciamento de usuários';
-$wb['CP Users'] = 'Usuários do painel';
+$wb['DB Sync.'] = 'Sincronização do BD.';
+$wb['User Management'] = 'Gerência de usuário';
+$wb['CP Users'] = 'Usuários ISPConfig';
 $wb['Remote Users'] = 'Usuários remotos';
 $wb['System'] = 'Sistema';
 $wb['Server Services'] = 'Serviços do servidor';
 $wb['Services'] = 'Serviços';
 $wb['Server Config'] = 'Configuração do servidor';
-$wb['Mail'] = 'E-mails';
+$wb['Server'] = 'Servidor';
+$wb['Mail'] = 'e-Mail';
 $wb['Getmail'] = 'Getmail';
-$wb['Web'] = 'Sites';
+$wb['Web'] = 'Web';
 $wb['FastCGI'] = 'FastCGI';
 $wb['Jailkit'] = 'Jailkit';
 $wb['Rescue'] = 'Manutenção';
-$wb['Server IP addresses'] = 'Endereço IP do servidor';
+$wb['Server IP addresses'] = 'Endereços IP do servidor';
+$wb['Server IPv4 mapping'] = 'Mapeamento IPv4 do servidor';
 $wb['Additional PHP Versions'] = 'Versões adicionais do php';
+$wb['Directive Snippets'] = 'Diretiva de trechos de código';
 $wb['Firewall'] = 'Firewall';
 $wb['Interface'] = 'Interface';
 $wb['Interface Config'] = 'Configuração principal';
+$wb['Sites'] = 'Sites';
+$wb['DNS'] = 'DNS';
 $wb['Domains'] = 'Domínios';
 $wb['Misc'] = 'Diversos';
-$wb['Software'] = 'Software';
+$wb['Software'] = 'APPs e complementos';
 $wb['Repositories'] = 'Repositórios';
 $wb['Packages'] = 'Pacotes';
+$wb['Updates'] = 'Atualizações';
 $wb['Language Editor'] = 'Editor de idiomas';
 $wb['Languages'] = 'Idiomas';
 $wb['New Language'] = 'Novo idioma';
@@ -42,11 +48,6 @@ $wb['Merge'] = 'Mesclar';
 $wb['Export'] = 'Exportar';
 $wb['Import'] = 'Importar';
 $wb['Remote Actions'] = 'Ações remotas';
-$wb['Do OS-Update'] = 'Atualização do SO';
-$wb['Do ISPConfig-Update'] = 'Atualização do ISPConfig';
-$wb['Directive Snippets'] = 'Diretivas de trechos de código';
-$wb['Sites'] = 'Sites';
-$wb['DNS'] = 'DNS';
-$wb['Server'] = 'Servidor';
-$wb['Updates'] = 'Atualizações';
+$wb['Do OS-Update'] = 'Atualizar sistema operacional';
+$wb['Do ISPConfig-Update'] = 'Atualizar o ISPConfig';
 ?>
diff --git a/interface/web/admin/lib/lang/br_directive_snippets.lng b/interface/web/admin/lib/lang/br_directive_snippets.lng
index ae56153844..43c46c69b9 100644
--- a/interface/web/admin/lib/lang/br_directive_snippets.lng
+++ b/interface/web/admin/lib/lang/br_directive_snippets.lng
@@ -2,11 +2,11 @@
 $wb['Directive Snippets'] = 'Diretiva de trechos de código';
 $wb['name_txt'] = 'Nome da diretiva';
 $wb['type_txt'] = 'Tipo';
-$wb['snippet_txt'] = 'Diretiva';
+$wb['snippet_txt'] = 'Trecho de código';
 $wb['active_txt'] = 'Ativo';
-$wb['directive_snippets_name_empty'] = 'Por favor, insira um nome para a diretiva';
-$wb['directive_snippets_name_error_unique'] = 'Já existe uma diretiva de trechos de código com este nome.';
+$wb['directive_snippets_name_empty'] = 'Por favor, insira um nome para a diretiva.';
+$wb['directive_snippets_name_error_unique'] = 'Já existe uma diretiva com este nome.';
 $wb['variables_txt'] = 'Variáveis';
-$wb['customer_viewable_txt'] = 'Visualizada pelo cliente';
-$wb['required_php_snippets_txt'] = 'Diretiva obrigatória para PHP';
+$wb['customer_viewable_txt'] = 'Visualização personalizada';
+$wb['required_php_snippets_txt'] = 'Trecho de código exige php';
 ?>
diff --git a/interface/web/admin/lib/lang/br_directive_snippets_list.lng b/interface/web/admin/lib/lang/br_directive_snippets_list.lng
index 8e08580ad2..70af844dd6 100644
--- a/interface/web/admin/lib/lang/br_directive_snippets_list.lng
+++ b/interface/web/admin/lib/lang/br_directive_snippets_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['list_head_txt'] = 'Diretivas de trechos de código';
+$wb['list_head_txt'] = 'Diretiva de trechos de código';
 $wb['active_txt'] = 'Ativo';
 $wb['name_txt'] = 'Nome da diretiva';
 $wb['type_txt'] = 'Tipo';
-$wb['add_new_record_txt'] = 'Adicionar nova diretiva';
+$wb['add_new_record_txt'] = 'Adicionar diretiva';
 $wb['customer_viewable_txt'] = 'Visível para o cliente';
 ?>
diff --git a/interface/web/admin/lib/lang/br_firewall.lng b/interface/web/admin/lib/lang/br_firewall.lng
index 0bd3cdc74f..da0936b007 100644
--- a/interface/web/admin/lib/lang/br_firewall.lng
+++ b/interface/web/admin/lib/lang/br_firewall.lng
@@ -1,11 +1,11 @@
 <?php
 $wb['server_id_txt'] = 'Servidor';
-$wb['tcp_port_txt'] = 'Portas TCP abertas';
-$wb['udp_port_txt'] = 'Portas UDP abertas';
+$wb['tcp_port_txt'] = 'Portas tcp abertas';
+$wb['udp_port_txt'] = 'Portas udp abertas';
 $wb['tcp_port_help_txt'] = 'Separado por vírgula';
 $wb['udp_port_help_txt'] = 'Separado por vírgula';
 $wb['active_txt'] = 'Ativo';
-$wb['firewall_error_unique'] = 'Já existe uma regra de firewall para este servidor!';
-$wb['tcp_ports_error_regex'] = 'Caractere não permitido para definição de porta tcp. São permitidos somente números, \':\' e \',\'.';
-$wb['udp_ports_error_regex'] = 'Caractere não permitido para definição de porta udp. São permitidos somente números, \':\' e \',\'.';
+$wb['firewall_error_unique'] = 'Já existe uma regra de firewall idêntica para este servidor.';
+$wb['tcp_ports_error_regex'] = 'Caractere não permitido para configuração de porta tcp: Caracteres permitidos são números, ":" e ",".';
+$wb['udp_ports_error_regex'] = 'Caractere não permitido para configuração de porta udp: Caracteres permitidos são números, ":" e ",".';
 ?>
diff --git a/interface/web/admin/lib/lang/br_firewall_list.lng b/interface/web/admin/lib/lang/br_firewall_list.lng
index 8ff52ee241..94ef3aab7d 100644
--- a/interface/web/admin/lib/lang/br_firewall_list.lng
+++ b/interface/web/admin/lib/lang/br_firewall_list.lng
@@ -4,5 +4,5 @@ $wb['active_txt'] = 'Ativo';
 $wb['server_id_txt'] = 'Servidor';
 $wb['tcp_port_txt'] = 'Portas tcp abertas';
 $wb['udp_port_txt'] = 'Portas udp abertas';
-$wb['add_new_record_txt'] = 'Adicionar regra de firewall';
+$wb['add_new_record_txt'] = 'Adicionar nova regra';
 ?>
diff --git a/interface/web/admin/lib/lang/br_groups.lng b/interface/web/admin/lib/lang/br_groups.lng
index 735bd864a9..22a1a5c63d 100644
--- a/interface/web/admin/lib/lang/br_groups.lng
+++ b/interface/web/admin/lib/lang/br_groups.lng
@@ -1,5 +1,5 @@
 <?php
 $wb['description_txt'] = 'Descrição';
 $wb['name_txt'] = 'Grupo';
-$wb['name_err'] = 'O nome do grupo deve conter de 1 a 30 caracteres!';
+$wb['name_err'] = 'O grupo deve conter no mínimo 1 e no máximo 30 caracteres.';
 ?>
diff --git a/interface/web/admin/lib/lang/br_groups_list.lng b/interface/web/admin/lib/lang/br_groups_list.lng
index f31a85d126..74a414f52d 100644
--- a/interface/web/admin/lib/lang/br_groups_list.lng
+++ b/interface/web/admin/lib/lang/br_groups_list.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['list_head_txt'] = 'Grupos de usuários do sistema';
+$wb['list_head_txt'] = 'Grupos';
 $wb['description_txt'] = 'Descrição';
 $wb['name_txt'] = 'Grupo';
-$wb['add_new_record_txt'] = 'Adicionar novo Grupo';
-$wb['warning_txt'] = '<b>AVISO:</b> Não modifique ou edite qualquer configuração de usuário aqui. Use o módulo de clientes ou revendas. Modificar ou alterar usuários e grupos aqui pode ocasionar perda de dados!';
+$wb['add_new_record_txt'] = 'Adicionar novo grupo';
+$wb['warning_txt'] = '<b>ALERTA:</b> Não editar ou alterar qualquer configuração de usuário aqui. Use o módulo de clientes e revendas para isso. Editar ou alterar usuários ou grupos aqui pode causar perda de dados!';
 ?>
diff --git a/interface/web/admin/lib/lang/br_iptables.lng b/interface/web/admin/lib/lang/br_iptables.lng
index e44fcf1e68..f899d53178 100644
--- a/interface/web/admin/lib/lang/br_iptables.lng
+++ b/interface/web/admin/lib/lang/br_iptables.lng
@@ -1,13 +1,13 @@
 <?php
 $wb['server_id_txt'] = 'Servidor';
-$wb['multiport_txt'] = 'Múltiplas portas';
-$wb['singleport_txt'] = 'Porta simples';
+$wb['multiport_txt'] = 'Multi-portas';
+$wb['singleport_txt'] = 'Portas simples';
 $wb['protocol_txt'] = 'Protocolo';
 $wb['table_txt'] = 'Tabela';
 $wb['target_txt'] = 'Alvo';
 $wb['state_txt'] = 'Estado';
-$wb['destination_ip_txt'] = 'Endereço IP de destino';
-$wb['source_ip_txt'] = 'Endereço IP de origem';
+$wb['destination_ip_txt'] = 'Endereço de destino';
+$wb['source_ip_txt'] = 'Endereço de origem';
 $wb['active_txt'] = 'Ativo';
-$wb['iptables_error_unique'] = 'Já existe um registro de firewall igual para este servidor.';
+$wb['iptables_error_unique'] = 'Já existe uma regra de firewall idêntica para este servidor.';
 ?>
diff --git a/interface/web/admin/lib/lang/br_iptables_list.lng b/interface/web/admin/lib/lang/br_iptables_list.lng
index 2cd7fdfb53..3326ac060a 100644
--- a/interface/web/admin/lib/lang/br_iptables_list.lng
+++ b/interface/web/admin/lib/lang/br_iptables_list.lng
@@ -1,6 +1,6 @@
 <?php
 $wb['list_head_txt'] = 'Firewall';
-$wb['add_new_rule_txt'] = 'Adicionar nova regra';
+$wb['add_new_rule_txt'] = 'Adicionar regra de firewall';
 $wb['server_id_txt'] = 'Servidor';
 $wb['multiport_txt'] = 'Multi portas';
 $wb['singleport_txt'] = 'Porta simples';
@@ -8,8 +8,8 @@ $wb['protocol_txt'] = 'Protocolo';
 $wb['table_txt'] = 'Tabela';
 $wb['target_txt'] = 'Alvo';
 $wb['state_txt'] = 'Estado';
-$wb['destination_ip_txt'] = 'Endereço IP de destino';
-$wb['source_ip_txt'] = 'Endereço IP de origem';
+$wb['destination_ip_txt'] = 'Endereço de destino';
+$wb['source_ip_txt'] = 'Endereço de origem';
 $wb['active_txt'] = 'Ativo';
-$wb['iptables_error_unique'] = 'Já existe um registro de firewall igual para este servidor.';
+$wb['iptables_error_unique'] = 'Já existe uma regra idêntica para este servidor.';
 ?>
diff --git a/interface/web/admin/lib/lang/br_language_add.lng b/interface/web/admin/lib/lang/br_language_add.lng
index eaa0808199..f63441c55d 100644
--- a/interface/web/admin/lib/lang/br_language_add.lng
+++ b/interface/web/admin/lib/lang/br_language_add.lng
@@ -1,8 +1,8 @@
 <?php
 $wb['list_head_txt'] = 'Adicionar novo idioma';
-$wb['language_select_txt'] = 'Selecionar o idioma base';
+$wb['language_select_txt'] = 'Selecionar idioma base';
 $wb['language_new_txt'] = 'Novo idioma';
-$wb['language_new_hint_txt'] = '2 letras código ISO 639-1 (veja http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)';
+$wb['language_new_hint_txt'] = '2 caracteres ISO 639-1 para o código do idioma (veja em http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)';
 $wb['btn_save_txt'] = 'Adicionar novo conjunto de idiomas';
 $wb['btn_cancel_txt'] = 'Voltar';
 ?>
diff --git a/interface/web/admin/lib/lang/br_language_complete.lng b/interface/web/admin/lib/lang/br_language_complete.lng
index 84d5e3393c..cb0ea2eb24 100644
--- a/interface/web/admin/lib/lang/br_language_complete.lng
+++ b/interface/web/admin/lib/lang/br_language_complete.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['list_head_txt'] = 'Mesclar idioma';
+$wb['list_head_txt'] = 'Mesclar idiomas';
 $wb['list_desc_txt'] = 'Mesclar o arquivo de idioma selecionado com o arquivo de idioma principal (em inglês). <br />Isto permite completar qualquer falha de tradução, com o arquivo principal original em inglês.';
 $wb['language_select_txt'] = 'Selecionar idioma';
 $wb['btn_save_txt'] = 'Mesclar arquivos agora';
diff --git a/interface/web/admin/lib/lang/br_language_edit.lng b/interface/web/admin/lib/lang/br_language_edit.lng
index 887080b6d5..ed0e6bb84d 100644
--- a/interface/web/admin/lib/lang/br_language_edit.lng
+++ b/interface/web/admin/lib/lang/br_language_edit.lng
@@ -1,6 +1,6 @@
 <?php
-$wb['list_head_txt'] = 'Editor de idiomas';
-$wb['language_select_txt'] = 'Selecione o idioma';
+$wb['list_head_txt'] = 'Editor de arquivos de idiomas';
+$wb['language_select_txt'] = 'Selecionar idioma';
 $wb['module_txt'] = 'Módulo';
 $wb['lang_file_txt'] = 'Arquivo de idioma';
 $wb['btn_save_txt'] = 'Salvar';
diff --git a/interface/web/admin/lib/lang/br_language_export.lng b/interface/web/admin/lib/lang/br_language_export.lng
index d484661389..7d75f7b6dd 100644
--- a/interface/web/admin/lib/lang/br_language_export.lng
+++ b/interface/web/admin/lib/lang/br_language_export.lng
@@ -1,6 +1,6 @@
 <?php
 $wb['list_head_txt'] = 'Exportar arquivos de idioma';
-$wb['language_select_txt'] = 'Selecione o idioma';
-$wb['btn_save_txt'] = 'Exportar idioma selecionado para um arquivo';
+$wb['language_select_txt'] = 'Selecionar idioma';
+$wb['btn_save_txt'] = 'Exportar arquivo de idioma selecionado';
 $wb['btn_cancel_txt'] = 'Voltar';
 ?>
diff --git a/interface/web/admin/lib/lang/br_language_import.lng b/interface/web/admin/lib/lang/br_language_import.lng
index e99756b376..99db339812 100644
--- a/interface/web/admin/lib/lang/br_language_import.lng
+++ b/interface/web/admin/lib/lang/br_language_import.lng
@@ -1,9 +1,9 @@
 <?php
 $wb['list_head_txt'] = 'Importar arquivo de idioma';
-$wb['language_import_txt'] = 'Buscar arquivo de idioma';
+$wb['list_desc_txt'] = 'ALERTA: Não importe arquivos de idioma de origem desconhecida.';
+$wb['language_import_txt'] = 'Selecionar arquivo de idioma';
 $wb['btn_save_txt'] = 'Importar arquivo de idioma selecionado';
-$wb['language_overwrite_txt'] = 'Sobrescrever o arquivo se existir.';
+$wb['language_overwrite_txt'] = 'Sobrescrever arquivo, se existir.';
 $wb['btn_cancel_txt'] = 'Voltar';
 $wb['ignore_version_txt'] = 'Ignorar verificação da versão do ISPConfig';
-$wb['list_desc_txt'] = 'ATENÇÃO: Não importe arquivos de idioma de fontes desconhecidas.';
 ?>
diff --git a/interface/web/admin/lib/lang/br_language_list.lng b/interface/web/admin/lib/lang/br_language_list.lng
index cd00833419..37941c4472 100644
--- a/interface/web/admin/lib/lang/br_language_list.lng
+++ b/interface/web/admin/lib/lang/br_language_list.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['list_head_txt'] = 'Editor de arquivo de idioma';
-$wb['language_select_txt'] = 'Selecione o idioma';
+$wb['list_head_txt'] = 'Editor de arquivos de idioma';
+$wb['language_select_txt'] = 'Selecionar idioma';
 $wb['module_txt'] = 'Módulo';
-$wb['lang_file_txt'] = 'Arquido de idioma';
+$wb['lang_file_txt'] = 'Arquivo de idioma';
 $wb['lang_file_date_txt'] = 'Última modificação';
 ?>
diff --git a/interface/web/admin/lib/lang/br_package_install.lng b/interface/web/admin/lib/lang/br_package_install.lng
index 5b54c3080a..bbe518549a 100644
--- a/interface/web/admin/lib/lang/br_package_install.lng
+++ b/interface/web/admin/lib/lang/br_package_install.lng
@@ -1,7 +1,7 @@
 <?php
 $wb['repo_name_txt'] = 'Repositório';
 $wb['repo_url_txt'] = 'URL';
-$wb['repo_username_txt'] = 'Usuário (opcional)';
+$wb['repo_username_txt'] = 'Usário (opcional)';
 $wb['repo_password_txt'] = 'Senha (opcional)';
 $wb['active_txt'] = 'Ativo';
 ?>
diff --git a/interface/web/admin/lib/lang/br_remote_action.lng b/interface/web/admin/lib/lang/br_remote_action.lng
index e06a6382b9..80d3a05c53 100644
--- a/interface/web/admin/lib/lang/br_remote_action.lng
+++ b/interface/web/admin/lib/lang/br_remote_action.lng
@@ -1,12 +1,12 @@
 <?php
-$wb['select_server_txt'] = 'Selecione o Servidor';
+$wb['select_server_txt'] = 'Selecionar servidor';
 $wb['btn_do_txt'] = 'Executar ação';
-$wb['do_osupdate_caption'] = 'Atualização do sistema operacional no servidor';
-$wb['do_osupdate_desc'] = 'Este comando fará um aptitude -y upgrade no servidor selecionado.<br><br><strong>UTILIZE POR SUA CONTA E RISCO!</strong>';
-$wb['do_ispcupdate_caption'] = 'Atualização do ISPConfig 3 no servidor';
-$wb['do_ispcupdate_desc'] = 'Esta ação fará uma atualização do ISPConfig3 no servidor selecionado.<br><br><strong>UTILIZE POR SUA CONTA E RISCO!</strong>';
-$wb['action_scheduled'] = 'Esta ação está agendada para execução';
+$wb['do_osupdate_caption'] = 'Atualizar sistema operacional no servidor remoto';
+$wb['do_osupdate_desc'] = 'Esta ação fará o comando \'aptitude -y upgrade\' no servidor selecionado.<br><br><strong>UTILIZE POR SUA CONTA E RISCO!</strong>';
+$wb['do_ispcupdate_caption'] = 'Atualizar ISPConfig 3 - Atualizar o servidor remoto';
+$wb['do_ispcupdate_desc'] = 'Esta ação atualizará o ISPConfig3 no servidor selecionado.<br><br><strong>UTILIZE POR SUA CONTA E RISCO!</strong>';
+$wb['action_scheduled'] = 'A ação foi agendada.';
 $wb['select_all_server'] = 'Todos os servidores';
 $wb['ispconfig_update_title'] = 'Instruções de atualização do ISPConfig';
-$wb['ispconfig_update_text'] = 'Acesse como root no shell do seu servidor e execute os seguintes comandos<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />para iniciar a atualização do ISPConfig.<br /><br /><a href=http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/ target=_blank>Clique aqui para instruções detalhadas sobre atualização</a>';
+$wb['ispconfig_update_text'] = 'Acesse com o usuário root no shell do servidor e execute o comando<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />para iniciar a atualização do ISPConfig.<br /><br /><a href=\'http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/\' target=\'_blank\'>Clique aqui para instruções detalhadas</a>';
 ?>
diff --git a/interface/web/admin/lib/lang/br_remote_user.lng b/interface/web/admin/lib/lang/br_remote_user.lng
index 95657a283d..fcaa6732c8 100644
--- a/interface/web/admin/lib/lang/br_remote_user.lng
+++ b/interface/web/admin/lib/lang/br_remote_user.lng
@@ -1,50 +1,68 @@
 <?php
-$wb['username_txt'] = 'Nome do usuário';
+$wb['username_txt'] = 'Usuário';
 $wb['password_txt'] = 'Senha';
 $wb['function_txt'] = 'Funções';
-$wb['username_error_unique'] = 'O nome de usuário deve ser exclusivo';
-$wb['username_error_empty'] = 'O nome de usuário não pode estar em branco';
-$wb['password_error_empty'] = 'A senha não pode estar em branco';
+$wb['username_error_unique'] = 'Nome do usuário deve ser exclusivo.';
+$wb['username_error_empty'] = 'Nome do usuário está em branco.';
+$wb['password_error_empty'] = 'Senha do usuário está em branco.';
 $wb['password_strength_txt'] = 'Dificuldade da senha';
+$wb['Server functions'] = 'Funções de servidor';
+$wb['Record permission changes'] = 'Permissões de alteração de registros';
+$wb['Domaintool functions'] = 'Funções ferramentas de domínios';
+$wb['Quota functions'] = 'Funções de cotas';
 $wb['Mail domain functions'] = 'Funções de domínios de e-mail';
-$wb['Mail user functions'] = 'Funções de usuários de e-mail';
-$wb['Mail alias functions'] = 'Funções de apelidos de domínio de e-mail';
-$wb['Mail forward functions'] = 'Funções de encaminhamento de e-mail';
-$wb['Mail catchall functions'] = 'Funções de de contas cata tudo';
-$wb['Mail transport functions'] = 'Funções de transporte de e-mail';
-$wb['Mail whitelist functions'] = 'Funções de lista branca de e-mail';
-$wb['Mail blacklist functions'] = 'Funções de lista negra de e-mail';
-$wb['Mail spamfilter user functions'] = 'Funções de filtros anti-spam para contas de e-mail';
-$wb['Mail spamfilter policy functions'] = 'Funções de política de anti-spam para contas de e-mail';
+$wb['Mail domain alias functions'] = 'Funções de alias de domínios de e-mail';
+$wb['Mail mailinglist functions'] = 'Funções de lista de e-mails';
+$wb['Mail user functions'] = 'Funções de contas de e-mails';
+$wb['Mail alias functions'] = 'Funções de alias de e-mails';
+$wb['Mail forward functions'] = 'Funções de encaminhamento de e-mails';
+$wb['Mail relay functions'] = 'Funções de retransmissão de e-mails';
+$wb['Mail catchall functions'] = 'Funções de contas cata-tudo';
+$wb['Mail transport functions'] = 'Funções de transporte de e-mails';
+$wb['Mail whitelist functions'] = 'Funções de lista branca';
+$wb['Mail blacklist functions'] = 'Funções de lista negra';
+$wb['Mail spamfilter user functions'] = 'Funções de filtros anti-spam';
+$wb['Mail spamfilter policy functions'] = 'Funções de políticas anti-spam';
 $wb['Mail fetchmail functions'] = 'Funções de contas de busca de e-mails';
-$wb['Mail user filter functions'] = 'Funções de filtro de e-mails para contas de e-mail';
-$wb['Mail filter functions'] = 'Funções de filtros de e-mail';
+$wb['Mail spamfilter whitelist functions'] = 'Funções de lista branca de e-mails';
+$wb['Mail spamfilter blacklist functions'] = 'Funções de lista negra de e-mails';
+$wb['Mail user filter functions'] = 'Funções de filtros de e-mails para contas de e-mails';
+$wb['Mail Backup functions'] = 'Funções de backup de e-mails';
+$wb['Mail filter functions'] = 'Funções de filtros de e-mails';
+$wb['Monitor functions'] = 'Funções de monitoramento';
 $wb['Client functions'] = 'Funções de cliente';
-$wb['Sites cron functions'] = 'Funções de tarefas no cron para sites';
-$wb['Sites database functions'] = 'Funções de banco de dados para sites';
-$wb['Sites FTP-User functions'] = 'Funções de usuários ftp para sites';
-$wb['Sites Shell-User functions'] = 'Funções de usuários shell para sites';
+$wb['Sites cron functions'] = 'Funções de tarefas no cron';
+$wb['Sites database functions'] = 'Funções de banco de dados';
+$wb['Sites Protected folder functions'] = 'Funções de pastas protegidas';
+$wb['Sites FTP-User functions'] = 'Funções de usuários ftp';
+$wb['Sites Shell-User functions'] = 'Funções de usuários do shell';
 $wb['Sites Domain functions'] = 'Funções de domínios de sites';
-$wb['Sites Aliasdomain functions'] = 'Função de apelidos de domínio de sites';
-$wb['Sites Subdomain functions'] = 'Função de subdomínio de sites';
-$wb['DNS zone functions'] = 'Funções de zona dns';
+$wb['Sites Backup functions'] = 'Funções de backup de sites';
+$wb['Sites Aliasdomain functions'] = 'Funções de alias de domínios de sites';
+$wb['Sites Subdomain functions'] = 'Funções de subdomínios de sites';
+$wb['Sites APS functions'] = 'Funções de apps e complementos';
+$wb['Sites WebDAV-User functions'] = 'Funções de usuários webdav';
+$wb['DNS zone functions'] = 'Funções de zonas dns';
 $wb['DNS a functions'] = 'Funções de registro A dns';
 $wb['DNS aaaa functions'] = 'Funções de registro AAAA dns';
-$wb['DNS alias functions'] = 'Funções de registro Alias dns';
-$wb['DNS cname functions'] = 'Funções de registro CNAME dns';
-$wb['DNS hinfo functions'] = 'Funções de registro HINFO dns';
-$wb['DNS mx functions'] = 'Funções de registro MX dns';
-$wb['DNS ns functions'] = 'Funções de registro NS dns';
-$wb['DNS ptr functions'] = 'Funções de registro PTR dns';
-$wb['DNS rp functions'] = 'Funções de registro RP dns';
-$wb['DNS srv functions'] = 'Funções de registro SRV dns';
-$wb['DNS txt functions'] = 'Funções de registro TXT dns';
-$wb['generate_password_txt'] = 'Gerar senha';
-$wb['repeat_password_txt'] = 'Repetir senha';
-$wb['password_mismatch_txt'] = 'A senhas não coincidem.';
-$wb['password_match_txt'] = 'A senhas coincidem.';
-$wb['remote_access_txt'] = 'Acesso remoto';
-$wb['remote_ips_txt'] = 'Endereço(s) IPs ou nome do servidor com acesso remoto (separado por vírgula ou em branco para qualquer <i>um</i>)';
-$wb['remote_user_error_ips'] = 'Ao menos um endereço IP ou nome do servidor é inválido.';
-$wb['Mail mailing list functions'] = 'Mail mailinglist functions';
+$wb['DNS alias functions'] = 'Funções de ALIAS dns';
+$wb['DNS cname functions'] = 'Funções de CNAME dns';
+$wb['DNS hinfo functions'] = 'Funções de HINFO dns';
+$wb['DNS mx functions'] = 'Funções de MX dns';
+$wb['DNS ns functions'] = 'Funções de NS dns';
+$wb['DNS ptr functions'] = 'Funções de PTR dns';
+$wb['DNS rp functions'] = 'Funções de RP dns';
+$wb['DNS srv functions'] = 'Funções de SVR dns';
+$wb['DNS txt functions'] = 'Funções de TXT dns';
+$wb['DNS ds functions'] = 'Funções de DS dns';
+$wb['DNS loc functions'] = 'Funções de LOC dns';
+$wb['DNS tlsa functions'] = 'Funções de TLSA dns';
+$wb['OpenVZ VM functions'] = 'Funções do openvz';
+$wb['generate_password_txt'] = 'Gerar Senha';
+$wb['repeat_password_txt'] = 'Repetir Senha';
+$wb['password_mismatch_txt'] = 'As senhas não coincidem.';
+$wb['password_match_txt'] = 'As senhas coincidem.';
+$wb['remote_access_txt'] = 'Acesso Remoto';
+$wb['remote_ips_txt'] = 'Endereços IPs ou nome(s) do(s) host(s) para acesso remoto (separado por vírgula e deixar em branco para <i>qualquer um</i>)';
+$wb['remote_user_error_ips'] = 'Ao menos um endereço IP ou nome do host informado é inválido.';
 ?>
diff --git a/interface/web/admin/lib/lang/br_remote_user_list.lng b/interface/web/admin/lib/lang/br_remote_user_list.lng
index f95d782ce6..0f0381a6f4 100644
--- a/interface/web/admin/lib/lang/br_remote_user_list.lng
+++ b/interface/web/admin/lib/lang/br_remote_user_list.lng
@@ -1,7 +1,7 @@
 <?php
 $wb['list_head_txt'] = 'Usuários remotos';
-$wb['list_desc_txt'] = '';
+$wb['list_desc_txt'] = 'Usuário remoto';
 $wb['add_new_record_txt'] = 'Adicionar novo usuário';
-$wb['parent_remote_userid_txt'] = 'ID';
-$wb['username_txt'] = 'Nome do usuário';
+$wb['parent_remote_userid_txt'] = 'ID do usuário';
+$wb['username_txt'] = 'Nome';
 ?>
diff --git a/interface/web/admin/lib/lang/br_server.lng b/interface/web/admin/lib/lang/br_server.lng
index 930b990f42..a896d0b49a 100644
--- a/interface/web/admin/lib/lang/br_server.lng
+++ b/interface/web/admin/lib/lang/br_server.lng
@@ -2,15 +2,15 @@
 $wb['config_txt'] = 'Configuração';
 $wb['server_name_txt'] = 'Nome do servidor';
 $wb['mail_server_txt'] = 'Servidor de e-mails';
-$wb['web_server_txt'] = 'Servidor de páginas';
+$wb['web_server_txt'] = 'Servidor web';
 $wb['dns_server_txt'] = 'Servidor dns';
-$wb['file_server_txt'] = 'Servidor de arquivo';
+$wb['file_server_txt'] = 'Servidor ftp';
 $wb['db_server_txt'] = 'Servidor de banco de dados';
-$wb['vserver_server_txt'] = 'Servidor virtual';
-$wb['active_txt'] = 'Ativo';
-$wb['mirror_server_id_txt'] = 'É um espelho de servidor?';
-$wb['- None -'] = '- Nenhum -';
+$wb['vserver_server_txt'] = 'Servidor de virtualização';
 $wb['proxy_server_txt'] = 'Servidor proxy';
-$wb['firewall_server_txt'] = 'Servidor de firewall';
-$wb['xmpp_server_txt'] = 'Servidor XMPP';
+$wb['firewall_server_txt'] = 'Servidor firewall';
+$wb['active_txt'] = 'Ativo';
+$wb['mirror_server_id_txt'] = 'É um espelho de servidor';
+$wb['- None -'] = '-Nenhum-';
+$wb['xmpp_server_txt'] = 'Servidor xmpp';
 ?>
diff --git a/interface/web/admin/lib/lang/br_server_config.lng b/interface/web/admin/lib/lang/br_server_config.lng
index 25ffb06996..f57a2310f2 100644
--- a/interface/web/admin/lib/lang/br_server_config.lng
+++ b/interface/web/admin/lib/lang/br_server_config.lng
@@ -1,303 +1,303 @@
 <?php
-$wb['jailkit_chroot_home_txt'] = 'Raiz do chroot jailkit';
-$wb['jailkit_chroot_app_sections_txt'] = 'Aplicações no jailkit chroot (sessões)';
-$wb['jailkit_chroot_app_programs_txt'] = 'Aplicações no jailkit em ambiente chroot';
+$wb['ufw_enable_txt'] = 'Habilitar';
+$wb['ufw_manage_builtins_txt'] = 'Gerenciar regras embutidas';
+$wb['ufw_ipv6_txt'] = 'Habilitar IPv6';
+$wb['ufw_default_input_policy_txt'] = 'Política de entrada padrão';
+$wb['ufw_default_output_policy_txt'] = 'Política de saída padrão';
+$wb['ufw_default_forward_policy_txt'] = 'Política de encaminhamento padrão';
+$wb['ufw_default_application_policy_txt'] = 'Política de aplicações padrão';
+$wb['ufw_log_level_txt'] = 'Nível do log';
+$wb['jailkit_chroot_home_txt'] = 'Diretório em chroot do jailkit';
+$wb['jailkit_chroot_app_sections_txt'] = 'Seções de aplicações em chroot no jailkit';
+$wb['jailkit_chroot_app_programs_txt'] = 'Aplicações em chroot no jailkit';
+$wb['jailkit_chroot_cron_programs_txt'] = 'Tarefas de aplicações em chroot no jailkit';
 $wb['website_path_txt'] = 'Caminho do site';
-$wb['website_symlinks_txt'] = 'Site symlinks: links simbólicos';
-$wb['website_symlinks_rel_txt'] = 'Criar links simbólicos relativos';
-$wb['website_basedir_txt'] = 'Site basedir: Diretório base ';
-$wb['vhost_conf_dir_txt'] = 'Diretório de configuração para vhost';
-$wb['vhost_conf_enabled_dir_txt'] = 'Diretório de configuração para vhost ativo';
+$wb['website_symlinks_txt'] = 'Links simbólicos de sites';
+$wb['website_symlinks_rel_txt'] = 'Adicionar links simbólicos relativos';
+$wb['website_basedir_txt'] = 'Diretório base - site';
+$wb['website_autoalias_txt'] = 'Auto alias - site';
+$wb['website_autoalias_note_txt'] = 'Área reservada:';
+$wb['vhost_conf_dir_txt'] = 'Diretório de configuração vhost';
+$wb['vhost_conf_enabled_dir_txt'] = 'Diretório de configuração vhost habilitado';
 $wb['getmail_config_dir_txt'] = 'Diretório de configuração do getmail';
-$wb['fastcgi_starter_path_txt'] = 'FastCGI: Caminho do diretório do scritp de inicialização';
-$wb['fastcgi_starter_script_txt'] = 'FastCGI: Script de inicialização';
-$wb['fastcgi_alias_txt'] = 'FastCGI: Alias (apelido)';
-$wb['fastcgi_phpini_path_txt'] = 'FastCGI: Caminho do php.ini ';
-$wb['fastcgi_children_txt'] = 'FastCGI: Filhos';
-$wb['fastcgi_max_requests_txt'] = 'FastCGI: Limite de requisições';
-$wb['fastcgi_bin_txt'] = 'Binário do FastCGI';
+$wb['fastcgi_starter_path_txt'] = 'Caminho de inicialização do FastCGI';
+$wb['fastcgi_starter_script_txt'] = 'Script de inicialização do FastCGI';
+$wb['fastcgi_alias_txt'] = 'Alias FastCGI';
+$wb['fastcgi_phpini_path_txt'] = 'Caminho do php.ini FastCGI';
+$wb['fastcgi_children_txt'] = 'Processos filhos do FastCGI';
+$wb['fastcgi_max_requests_txt'] = 'Limite de requisições do FastCGI';
+$wb['fastcgi_bin_txt'] = 'Binário FastCGI';
 $wb['module_txt'] = 'Módulo';
-$wb['maildir_path_txt'] = 'Caminho do diretório maildir';
+$wb['maildir_path_txt'] = 'Caminho do maildir';
 $wb['maildir_format_txt'] = 'Formato do maildir';
-$wb['homedir_path_txt'] = 'Caminho do diretório home';
+$wb['homedir_path_txt'] = 'Caminho do homedir';
+$wb['dkim_path_txt'] = 'Caminho do DKIM';
 $wb['mailuser_uid_txt'] = 'UID do mailuser';
 $wb['mailuser_gid_txt'] = 'GID do mailuser';
 $wb['mailuser_name_txt'] = 'Nome do mailuser';
-$wb['mailuser_group_txt'] = 'Grupo do mailuser';
-$wb['mailbox_virtual_uidgid_maps_txt'] = 'Mapear UID Linux de sites para mailbox';
-$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'Configuração única para sites e servidor de e-mails permitida apenas em configuração de servidor individual';
-$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'UID não pode ser mapeado em uma configuração multiservidor.';
-$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Mapeamento de UID só pode ser usada com o dovecot.';
-$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Mapeamento de UID não pode ser modificada se já existirem e-mails cadastrados.';
+$wb['mailuser_group_txt'] = 'Grupo do maildir';
+$wb['mailbox_virtual_uidgid_maps_txt'] = 'Usar uid linux para sites e conta de e-mail';
+$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'Permitido apenas para configuração de servidor único.';
+$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'O uid linux não pode ser mapeado em configuração multi-servidor.';
+$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'O uid linux não pode ser usado com o dovecot.';
+$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'O uid não pode ser alterado se já existir contas de e-mail.';
 $wb['relayhost_txt'] = 'Servidor de retransmissão';
-$wb['relayhost_user_txt'] = 'Usuário do servidor de retransmissão';
-$wb['relayhost_password_txt'] = 'Senha do servidor de retransmissão';
-$wb['reject_sender_login_mismatch_txt'] = 'Rejeitar remetente e acesso com erros';
-$wb['mailbox_size_limit_txt'] = 'Limite da conta de e-mail';
-$wb['message_size_limit_txt'] = 'Limite do tamanho máximo das mensagens';
+$wb['relayhost_user_txt'] = 'Usuário de retransmissão';
+$wb['relayhost_password_txt'] = 'Senha do usuário de retransmissão';
+$wb['reject_sender_login_mismatch_txt'] = 'Rejeitar acesso com erro de usuário e/ou senha';
+$wb['mailbox_size_limit_txt'] = 'Limite do tamanho da conta de e-mail';
+$wb['message_size_limit_txt'] = 'Limite do tamanho da mensagem';
 $wb['ip_address_txt'] = 'Endereço IP';
-$wb['netmask_txt'] = 'Máscara de rede';
+$wb['netmask_txt'] = 'Máscara';
 $wb['gateway_txt'] = 'Gateway';
-$wb['hostname_txt'] = 'Servidor';
-$wb['nameservers_txt'] = 'Servidores dns';
+$wb['hostname_txt'] = 'Nome do host';
+$wb['nameservers_txt'] = 'Servidor(es) dns';
 $wb['auto_network_configuration_txt'] = 'Configuração de rede';
-$wb['ip_address_error_wrong'] = 'Endereço IP inválido!';
-$wb['netmask_error_wrong'] = 'Máscara de rede inválida!';
-$wb['gateway_error_wrong'] = 'Gateway inválido!';
-$wb['hostname_error_empty'] = 'Por favor, insira o servidor.';
-$wb['nameservers_error_empty'] = 'Por favor, insira  o servidor dns.';
-$wb['jailkit_chroot_cron_programs_txt'] = 'Tarefas do cron para aplicações no Jailkit em ambiente chroot';
-$wb['config_dir_txt'] = 'Diretório de configuração';
+$wb['ip_address_error_wrong'] = 'Endereço IP com formato inválido.';
+$wb['netmask_error_wrong'] = 'Máscara de rede com formato inválido.';
+$wb['gateway_error_wrong'] = 'Gateway da rede com formado inválido.';
+$wb['hostname_error_empty'] = 'O nome do host está em branco.';
+$wb['hostname_error_regex'] = 'O nome do host é inválido.';
+$wb['nameservers_error_empty'] = 'O servidor(es) dns está em branco.';
+$wb['config_dir_txt'] = 'Diretório de configurações';
 $wb['init_script_txt'] = 'Nome do script de inicialização do cron';
-$wb['crontab_dir_txt'] = 'Caminho para tabelas de tarefas individuais no cron';
-$wb['wget_txt'] = 'Caminho para o wget';
-$wb['web_user_txt'] = 'Usuário apache';
-$wb['web_group_txt'] = 'Grupo apache';
+$wb['crontab_dir_txt'] = 'Caminho para crontabs individuais.';
+$wb['wget_txt'] = 'Caminho do binário wget';
+$wb['web_user_txt'] = 'Usuário do apache';
+$wb['web_group_txt'] = 'Grupo do apache';
 $wb['security_level_txt'] = 'Nível de segurança';
-$wb['loglevel_txt'] = 'Nível do log (Loglevel)';
-$wb['apps_vhost_port_txt'] = 'Porta para apps-vhost';
-$wb['apps_vhost_ip_txt'] = 'IP para apps-vhost';
-$wb['apps_vhost_servername_txt'] = 'Domínio para apps-vhost';
-$wb['bind_user_txt'] = 'Usuário bind';
-$wb['bind_group_txt'] = 'Grupo bind';
-$wb['bind_zonefiles_dir_txt'] = 'Diretório de arquivos de zona do bind';
+$wb['loglevel_txt'] = 'Nível do log';
+$wb['apps_vhost_port_txt'] = 'Porta dos apps-vhost';
+$wb['apps_vhost_ip_txt'] = 'IP dos apps-vhost';
+$wb['apps_vhost_servername_txt'] = 'Domínio dos apps-vhost';
+$wb['bind_user_txt'] = 'Usuário do bind';
+$wb['bind_group_txt'] = 'Grupo do bind';
+$wb['bind_zonefiles_dir_txt'] = 'Diretório de zonas';
 $wb['named_conf_path_txt'] = 'Caminho do named.conf';
 $wb['bind_user_error_empty'] = 'Usuário do bind está em branco.';
 $wb['bind_group_error_empty'] = 'Grupo do bind está em branco.';
-$wb['bind_zonefiles_dir_error_empty'] = 'Diretório de arquivos de zona está em branco.';
-$wb['named_conf_path_error_empty'] = 'Caminho do named.conf.';
+$wb['bind_zonefiles_dir_error_empty'] = 'Diretório de zonas está em branco.';
+$wb['named_conf_path_error_empty'] = 'Caminho do named.conf está em branco.';
 $wb['named_conf_local_path_error_empty'] = 'Caminho do named.conf.local está em branco.';
-$wb['mail_filter_syntax_txt'] = 'Sintaxe do mailfilter';
-$wb['pop3_imap_daemon_txt'] = 'Serviço POP3/IMAP';
-$wb['php_open_basedir_txt'] = 'Diretório PHP open_basedir';
-$wb['php_open_basedir_error_empty'] = 'Diretório PHP open_basedir está em branco.';
+$wb['mail_filter_syntax_txt'] = 'Sintaxe do filtro de e-mail';
+$wb['pop3_imap_daemon_txt'] = 'Daemon POP3/IMAP';
+$wb['php_open_basedir_txt'] = 'Diretório open_basedir do php';
+$wb['php_open_basedir_error_empty'] = 'O diretório do open_basedir PHP está em branco.';
 $wb['htaccess_allow_override_txt'] = 'Diretiva .htaccess AllowOverride';
 $wb['htaccess_allow_override_error_empty'] = 'Diretiva .htaccess AllowOverride está em branco.';
-$wb['awstats_conf_dir_txt'] = 'Diretório de configuração do awstats';
-$wb['awstats_data_dir_txt'] = 'Diretório de dados do awstats';
+$wb['awstats_conf_dir_txt'] = 'Pasta de configuração do awstats';
+$wb['awstats_data_dir_txt'] = 'Pasta de dados do awstats';
 $wb['awstats_pl_txt'] = 'Script awstats.pl';
 $wb['awstats_buildstaticpages_pl_txt'] = 'Script awstats_buildstaticpages.pl';
 $wb['backup_dir_txt'] = 'Diretório de backup';
+$wb['backup_tmp_txt'] = 'Diretório para backup temporário quando utilizado zip';
 $wb['named_conf_local_path_txt'] = 'Caminho do named.conf.local';
-$wb['php_ini_path_cgi_txt'] = 'Caminho do php.ini CGI';
-$wb['php_ini_path_apache_txt'] = 'Caminho do php.ini apache';
-$wb['check_apache_config_txt'] = 'Testar a configuração do apache ao reiniciar';
-$wb['network_config_warning_txt'] = 'A configuração de rede só está disponível para servidores Debian e Ubuntu. Não ative esta configuração se a adaptadora de rede no sistema for diferente de eth0.';
-$wb['CA_path_txt'] = 'Caminho do CA';
-$wb['CA_pass_txt'] = 'Senha do CA';
-$wb['ufw_enable_txt'] = 'Habilitar';
-$wb['ufw_manage_builtins_txt'] = 'Gerenciar regras embutidas';
-$wb['ufw_ipv6_txt'] = 'Habilitar IPv6';
-$wb['ufw_default_input_policy_txt'] = 'Política padrão para entrada';
-$wb['ufw_default_output_policy_txt'] = 'Política padrão para saída';
-$wb['ufw_default_forward_policy_txt'] = 'Política padrão para encaminhamento';
-$wb['ufw_default_application_policy_txt'] = 'Política padrão para aplicações';
-$wb['ufw_log_level_txt'] = 'Nível do log';
-$wb['fastcgi_config_syntax_txt'] = 'Sintaxe das configurações FastCGI';
-$wb['server_type_txt'] = 'Tipo de servidor';
-$wb['nginx_vhost_conf_dir_txt'] = 'Diretório de configuração do vhost nginx';
-$wb['nginx_vhost_conf_enabled_dir_txt'] = 'Configuração do diretório do vhost nginx habilitada';
+$wb['php_ini_path_cgi_txt'] = 'Caminho do php.ini do cgi';
+$wb['php_ini_path_apache_txt'] = 'Caminho do php.ini do apache';
+$wb['check_apache_config_txt'] = 'Verificar as configurações do apache quando reiniciar';
+$wb['network_config_warning_txt'] = 'A configuração de rede está disponível apenas para servidores Debian e Ubuntu. Não habilite esta opção se a interface de rede for diferente de eth0.';
+$wb['CA_path_txt'] = 'Caminho da CA';
+$wb['CA_pass_txt'] = 'Senha da CA';
+$wb['fastcgi_config_syntax_txt'] = 'Sintaxe das configurações do FastCGI';
+$wb['backup_mode_txt'] = 'Modo do backup';
+$wb['backup_mode_userzip'] = 'Arquivos de backup com propriedade do usuário web e compactados como zip';
+$wb['backup_mode_rootgz'] = 'Todos os arquivos no diretório web com proprietário root';
+$wb['tmpdir_path_error_empty'] = 'Caminho do diretório temporário está em branco.';
+$wb['tmpdir_path_error_regex'] = 'Caminho do diretório temporário é inválido.';
+$wb['backup_time_txt'] = 'Hora do backup';
+$wb['server_type_txt'] = 'Tipo do servidor';
+$wb['nginx_vhost_conf_dir_txt'] = 'Diretório de configurações vhost do nginx';
+$wb['nginx_vhost_conf_enabled_dir_txt'] = 'Diretório de configurações vhost do nginx habilitado';
 $wb['nginx_user_txt'] = 'Usuário nginx';
-$wb['nginx_group_txt'] = 'Grupo nginx';
-$wb['nginx_cgi_socket_txt'] = 'Soquete CGI nginx';
+$wb['nginx_group_txt'] = 'Grupo do nginx';
+$wb['nginx_cgi_socket_txt'] = 'Socket CGI do nginx';
 $wb['backup_dir_error_empty'] = 'Diretório de backup está em branco.';
 $wb['maildir_path_error_empty'] = 'Caminho do maildir está em branco.';
 $wb['homedir_path_error_empty'] = 'Caminho do homedir está em branco.';
-$wb['mailuser_uid_error_empty'] = 'UID do mailuser está em branco.';
-$wb['mailuser_gid_error_empty'] = 'GID do mailuser está em branco.';
-$wb['mailuser_name_error_empty'] = 'Nome do mailuser está em branco.';
-$wb['mailuser_group_error_empty'] = 'Grupo do mailuser está em branco.';
-$wb['getmail_config_dir_error_empty'] = 'Configuração do diretório getmail está em branco.';
-$wb['website_basedir_error_empty'] = 'Diretório padrão (basedir) do site está em branco.';
-$wb['website_path_error_empty'] = 'Caminho do diretório base (basedir) do site está em branco.';
-$wb['website_symlinks_error_empty'] = 'Links simbólicos para site está em branco.';
-$wb['vhost_conf_dir_error_empty'] = 'Configuração do diretório para vhost está em branco.';
-$wb['vhost_conf_enabled_dir_error_empty'] = 'Configuração habilitada do diretório vhost está em branco.';
-$wb['nginx_vhost_conf_dir_error_empty'] = 'Configuração do diretório vhost do nginx está em branco.';
-$wb['nginx_vhost_conf_enabled_dir_error_empty'] = 'Configuração habilitada do diretório vhost do nginx está em branco.';
-$wb['apache_user_error_empty'] = 'Usuário apache está em branco.';
-$wb['apache_group_error_empty'] = 'Grupo apache está em branco.';
-$wb['nginx_user_error_empty'] = 'Usuário nginx está em branco.';
-$wb['nginx_group_error_empty'] = 'Grupo nginx está em branco.';
-$wb['php_ini_path_apache_error_empty'] = 'Caminho do php.ini apache está em branco.';
+$wb['mailuser_uid_error_empty'] = 'UID do mailuser UID está em branco.';
+$wb['mailuser_gid_error_empty'] = 'GID do mailuser GID está em branco.';
+$wb['mailuser_name_error_empty'] = 'Usuário do mailuser está em branco.';
+$wb['mailuser_group_error_empty'] = 'Grupo do mailuser Group está em branco.';
+$wb['getmail_config_dir_error_empty'] = 'Diretório de configurações do getmail está em branco.';
+$wb['website_basedir_error_empty'] = 'Diretório basedir de sites está em branco.';
+$wb['website_path_error_empty'] = 'Caminho do site está em branco.';
+$wb['website_symlinks_error_empty'] = 'Links simbólicos de site está em branco.';
+$wb['vhost_conf_dir_error_empty'] = 'Diretório de configurações do vhost está em branco.';
+$wb['vhost_conf_enabled_dir_error_empty'] = 'Diretório de configurações vhost habilitadas está em branco.';
+$wb['nginx_vhost_conf_dir_error_empty'] = 'Diretório de configurações vhost do nginx está em branco.';
+$wb['nginx_vhost_conf_enabled_dir_error_empty'] = 'Diretório de configurações vhost habilitadas do nginx está em branco.';
+$wb['apache_user_error_empty'] = 'Usuário do apache está em branco.';
+$wb['apache_group_error_empty'] = 'Grupo do apache está em branco.';
+$wb['nginx_user_error_empty'] = 'Usuário do nginx está em branco.';
+$wb['nginx_group_error_empty'] = 'Grupo do nginx está em branco.';
+$wb['php_ini_path_apache_error_empty'] = 'Caminho do php.ini do apache está em branco.';
 $wb['php_ini_path_cgi_error_empty'] = 'Caminho do php.ini CGI está em branco.';
-$wb['nginx_cgi_socket_empty'] = 'Soquete do CGI nginx está em branco.';
-$wb['apps_vhost_port_error_empty'] = 'Porta de apps-vhost está em branco.';
-$wb['apps_vhost_ip_error_empty'] = 'IP para apps-vhost está em branco.';
-$wb['fastcgi_starter_path_error_empty'] = 'Caminho do programa de inicialização do FastCGI está em branco.';
+$wb['nginx_cgi_socket_empty'] = 'O socket CGI do nginx está em branco.';
+$wb['apps_vhost_port_error_empty'] = 'Portas de apps-vhost está em branco.';
+$wb['apps_vhost_ip_error_empty'] = 'IP do apps-vhost está em branco.';
+$wb['fastcgi_starter_path_error_empty'] = 'Caminho do script de inicialização do FastCGI está em branco.';
 $wb['fastcgi_starter_script_error_empty'] = 'Script de inicialização do FastCGI está em branco.';
-$wb['fastcgi_alias_error_empty'] = 'Alias (apelido) do FastCGI está em branco.';
-$wb['fastcgi_phpini_path_error_empty'] = 'Caminho do php.ini do FastCGI está em branco.';
-$wb['fastcgi_children_error_empty'] = 'Filhos do FastCGI está em branco.';
-$wb['fastcgi_max_requests_error_empty'] = 'Limite de requisições do FastCGI está em branco.';
-$wb['fastcgi_bin_error_empty'] = 'Binário do FastCGI está em branco.';
-$wb['jailkit_chroot_home_error_empty'] = 'Diretório raiz do jailkit está em branco.';
-$wb['jailkit_chroot_app_sections_error_empty'] = 'Aplicações no jailkit chroot (sessões) está em branco.';
-$wb['jailkit_chroot_app_programs_error_empty'] = 'Aplicações no jailkit em ambiente chroot está em branco.';
-$wb['jailkit_chroot_cron_programs_error_empty'] = 'Tarefas no cron de aplicações no jailkit em ambiente chroot está em branco.';
-$wb['vlogger_config_dir_error_empty'] = 'Diretório de configurações está em branco.';
-$wb['cron_init_script_error_empty'] = 'Nome do script de inicialização do cron está em branco.';
-$wb['crontab_dir_error_empty'] = 'Caminho para tabelas de tarefas individuais no cron está em branco.';
-$wb['cron_wget_error_empty'] = 'Caminho do programa wget está em branco.';
-$wb['php_fpm_init_script_txt'] = 'Script de inicialização do PHP-FPM';
-$wb['php_fpm_init_script_error_empty'] = 'Script de inicialização do PHP-FPM está em branco.';
-$wb['php_fpm_ini_path_txt'] = 'Caminho do php.ini do PHP-FPM';
-$wb['php_fpm_ini_path_error_empty'] = 'Caminho do php.ini do PHP-FPM está em branco.';
-$wb['php_fpm_pool_dir_txt'] = 'Diretório de faixas (pool) do PHP-FPM';
-$wb['php_fpm_pool_dir_error_empty'] = 'Diretório de faixas (pool) do PHP-FPM está em branco.';
-$wb['php_fpm_start_port_txt'] = 'Porta de inicialização do PHP-FPM';
-$wb['php_fpm_start_port_error_empty'] = 'Porta de inicialização do PHP-FPM está em branco.';
-$wb['php_fpm_socket_dir_txt'] = 'Diretório do soquete PHP-FPM';
-$wb['php_fpm_socket_dir_error_empty'] = 'Diretório do soquete PHP-FPM está em branco.';
-$wb['try_rescue_txt'] = 'Habilitar serviço de monitoramento e reiniciar em caso de falha';
-$wb['do_not_try_rescue_mysql_txt'] = 'Desabilitar monitoramento do MySQL';
-$wb['do_not_try_rescue_mail_txt'] = 'Desabilitar monitoramento do servidor de e-mails';
-$wb['rescue_description_txt'] = '<b>Informação:</b> Se você deseja desligar o MySQL deverá selecionar \'Desabilitar monitoramento do MySQL\' e aguardar em torno de 2 a 3 minutos...<br>se não aguardar em torno de 2 a 3 minutos, o serviço tentará reiniciar o MySQL!';
+$wb['fastcgi_alias_error_empty'] = 'Alias do FastCGI está em branco.';
+$wb['fastcgi_phpini_path_error_empty'] = 'O caminho do php.ini do FastCGI está em branco.';
+$wb['fastcgi_children_error_empty'] = 'Os processos filhos do FastCGI está em branco.';
+$wb['fastcgi_max_requests_error_empty'] = 'O limite de requisições FastCGI está em branco.';
+$wb['fastcgi_bin_error_empty'] = 'O binário do FastCGI está em branco.';
+$wb['jailkit_chroot_home_error_empty'] = 'O home em chroot do jailkit está em branco.';
+$wb['jailkit_chroot_app_sections_error_empty'] = 'Seções de aplicações no jailkit está em branco.';
+$wb['jailkit_chroot_app_programs_error_empty'] = 'Aplicações no jailkit está em branco.';
+$wb['jailkit_chroot_cron_programs_error_empty'] = 'Tarefas de aplicações no jailkit está em branco.';
+$wb['vlogger_config_dir_error_empty'] = 'Diretório de configuração está em branco.';
+$wb['cron_init_script_error_empty'] = 'Script de inicialização do cron está em branco.';
+$wb['crontab_dir_error_empty'] = 'Caminho para tarefas individuais no cron está em branco.';
+$wb['cron_wget_error_empty'] = 'Caminho do binário wget está em branco.';
+$wb['php_fpm_init_script_txt'] = 'Script de inicialização do php-fpm';
+$wb['php_fpm_init_script_error_empty'] = 'Script de inicialização do php-fpm está em branco.';
+$wb['php_fpm_ini_path_txt'] = 'Caminho do php.ini do php-fpm';
+$wb['php_fpm_ini_path_error_empty'] = 'Caminho do php.ini do php-fpm está em branco.';
+$wb['php_fpm_pool_dir_txt'] = 'Diretório de faixas do php-fpm';
+$wb['php_fpm_pool_dir_error_empty'] = 'Diretório de faixas do php-fpm está em branco.';
+$wb['php_fpm_start_port_txt'] = 'Porta do php-fpm';
+$wb['php_fpm_start_port_error_empty'] = 'Porta do php-fpm está em branco.';
+$wb['php_fpm_socket_dir_txt'] = 'Diretório do socket php-fpm';
+$wb['php_fpm_socket_dir_error_empty'] = 'O diretório do socket php-fpm está em branco.';
+$wb['try_rescue_txt'] = 'Habilitar monitoramento de reiniciar em caso de falha';
+$wb['do_not_try_rescue_httpd_txt'] = 'Desabilitar monitoramento do httpd';
+$wb['do_not_try_rescue_mongodb_txt'] = 'Desabilitar monitoramento do mongodb';
+$wb['do_not_try_rescue_mysql_txt'] = 'Desabilitar monitoramento do mysql';
+$wb['do_not_try_rescue_mail_txt'] = 'Desabilitar monitoramento de e-mail';
+$wb['rescue_description_txt'] = '<b>Informação:</b> Se o serviço mysql for desligado e estiver selecionado "Desabilitar monitoramento do mysql" aguarde entre 2 e 3 minutos sem abandonar a aba. <br>Se não aguardar o sistema de recuperação de falhas tentará reiniciar o mysql!';
 $wb['enable_sni_txt'] = 'Habilitar SNI';
-$wb['do_not_try_rescue_httpd_txt'] = 'Desabilitar monitoramento do HTTPD';
-$wb['set_folder_permissions_on_update_txt'] = 'Configurar permissões de pasta na atualização';
-$wb['add_web_users_to_sshusers_group_txt'] = 'Adicionar usuários de site (web) para grupo -sshusers-';
-$wb['connect_userid_to_webid_txt'] = 'Mapear userID Linux para webID';
-$wb['connect_userid_to_webid_start_txt'] = 'Iniciar ID para userID/webID se conectar';
-$wb['website_autoalias_txt'] = 'Auto apelido (alias) para sites';
-$wb['website_autoalias_note_txt'] = 'Área reservada:';
-$wb['backup_mode_txt'] = 'Modo do backup';
-$wb['backup_mode_userzip'] = 'Arquivos de backup com propriedade do usuário web e compactados como zip';
-$wb['backup_mode_rootgz'] = 'Todos os arquivos no diretório web com proprietário root';
-$wb['realtime_blackhole_list_txt'] = 'RBL em tempo real';
-$wb['realtime_blackhole_list_note_txt'] = '(Separar RBL\'s por vírgulas)';
+$wb['set_folder_permissions_on_update_txt'] = 'Configurar permissões de pasta quando atualizar';
+$wb['add_web_users_to_sshusers_group_txt'] = 'Adicionar novos usuários web para o grupo ssh';
+$wb['connect_userid_to_webid_txt'] = 'Conectar o UID do usuário no sistema para webID';
+$wb['connect_userid_to_webid_start_txt'] = 'Conexão do ID inicial do usuário com o webID';
+$wb['realtime_blackhole_list_txt'] = 'Lista RBL em tempo real';
+$wb['realtime_blackhole_list_note_txt'] = '(separar as RBLs com vírgulas)';
 $wb['ssl_settings_txt'] = 'Configurações SSL';
 $wb['permissions_txt'] = 'Permissões';
-$wb['php_settings_txt'] = 'Configurações PHP';
-$wb['apps_vhost_settings_txt'] = 'Configurações apps-vhost';
-$wb['awstats_settings_txt'] = 'Configurações awstats';
+$wb['php_settings_txt'] = 'Configurações php';
+$wb['apps_vhost_settings_txt'] = 'Configurações de apps vhost';
+$wb['awstats_settings_txt'] = 'Configurações do awstats';
 $wb['firewall_txt'] = 'Firewall';
-$wb['mailbox_quota_stats_txt'] = 'Estatísticas de cota das contas de e-mail';
-$wb['enable_ip_wildcard_txt'] = 'Habilitar curingas (*) para IP';
+$wb['mailbox_quota_stats_txt'] = 'Estatísticas das cotas das contas de e-mail';
+$wb['enable_ip_wildcard_txt'] = 'Habilitar curingas de IP (*)';
 $wb['web_folder_protection_txt'] = 'Tornar pastas web imutáveis (atributos estendidos)';
-$wb['overtraffic_notify_admin_txt'] = 'Enviar notificação de cota de tráfego excedida para o administrador';
-$wb['overtraffic_notify_client_txt'] = 'Enviar notificação de cota de tráfego excedida para o cliente';
-$wb['rbl_error_regex'] = 'Por favor, insira um nome de servidor válido para RBL.';
-$wb['overquota_notify_admin_txt'] = 'Enviar alertas de cota para o administrador';
-$wb['overquota_notify_client_txt'] = 'Enviar alertas de cota para o cliente';
-$wb['overquota_notify_onok_txt'] = 'Enviar mensagem de cota OK para o cliente';
-$wb['overquota_notify_freq_txt'] = 'Enviar alertas de cota a cada N dias';
-$wb['overquota_notify_freq_note_txt'] = '0 = enviar mensagem apenas uma vez, não repetir';
-$wb['admin_notify_events_txt'] = 'Enviar e-mail para o admin quando iniciando com o seguinte nível';
-$wb['no_notifications_txt'] = 'Sem Notificações';
-$wb['monit_url_txt'] = 'URL do Monit';
-$wb['monit_user_txt'] = 'Usuário do Monit';
-$wb['monit_password_txt'] = 'Senha do Monit';
-$wb['monit_url_error_regex'] = 'URL do Monit inválida.';
+$wb['overtraffic_notify_admin_txt'] = 'Enviar notificação de tráfego excedido para o administrador';
+$wb['overtraffic_notify_client_txt'] = 'Enviar notificação de tráfego excedido para o cliente';
+$wb['rbl_error_regex'] = 'Por favor, nomes de host válidos para RBLs.';
+$wb['overquota_notify_admin_txt'] = 'Enviar alerta da cota para o administrador';
+$wb['overquota_notify_client_txt'] = 'Enviar alerta da cota para o cliente';
+$wb['overquota_notify_onok_txt'] = 'Enviar mensagem da cota para o cliente';
+$wb['overquota_notify_freq_txt'] = 'Enviar alerta da cota a cada X dias';
+$wb['overquota_notify_freq_note_txt'] = '0 = enviar mensagem apenas uma vez, sem repetir';
+$wb['admin_notify_events_txt'] = 'Enviar e-mail para o administrador iniciando com o seguinte nível';
+$wb['no_notifications_txt'] = 'Sem notificações';
+$wb['monit_url_txt'] = 'URL de monitoramento do monit';
+$wb['monit_user_txt'] = 'Usuário do monit';
+$wb['monit_password_txt'] = 'Senha do monit';
+$wb['monit_url_error_regex'] = 'URL do monit é inválida';
 $wb['monit_url_note_txt'] = 'Área reservada:';
-$wb['munin_url_txt'] = 'URL do Munin';
-$wb['munin_user_txt'] = 'Usuário do Munin';
-$wb['munin_password_txt'] = 'Senha do Munin';
-$wb['munin_url_error_regex'] = 'URL do Munin inválida.';
+$wb['munin_url_txt'] = 'URL do munin';
+$wb['munin_user_txt'] = 'Usuário do munin';
+$wb['munin_password_txt'] = 'Senda do munin';
+$wb['munin_url_error_regex'] = 'URL do munin e inválida';
 $wb['munin_url_note_txt'] = 'Área reservada:';
-$wb['dkim_path_txt'] = 'Caminho do DKIM';
-$wb['backup_delete_txt'] = 'Remover backups do domínio/site';
 $wb['v6_prefix_txt'] = 'Prefixo IPv6';
-$wb['vhost_rewrite_v6_txt'] = 'Reescrever prefixo IPv6 no espelho';
-$wb['v6_prefix_length'] = 'Prefixo longo definido de acordo com IPv6';
-$wb['backup_dir_is_mount_txt'] = 'Diretório de backup está montado?';
-$wb['monitor_system_updates_txt'] = 'Verificar por atualizações Linux';
-$wb['hostname_error_regex'] = 'Nome do servidor é inválido.';
-$wb['invalid_apache_user_txt'] = 'Usuário do Apache é inválido.';
-$wb['invalid_apache_group_txt'] = 'Grupo do Apache é inválido.';
+$wb['vhost_rewrite_v6_txt'] = 'Reescrever IPv6 no espelho';
+$wb['v6_prefix_length'] = 'O prefixo é muito longo de acordo com as definições IPv6.';
+$wb['backup_dir_is_mount_txt'] = 'O diretório de backup está montando?';
+$wb['backup_dir_mount_cmd_txt'] = 'Comando mount, se o diretório não está montado';
+$wb['backup_delete_txt'] = 'Remover backups de domínios/site';
+$wb['overquota_db_notify_admin_txt'] = 'Enviar alerta da cota do banco de dados para o administrador';
+$wb['overquota_db_notify_client_txt'] = 'Enviar alerta da cota do banco de dados para o cliente';
+$wb['monitor_system_updates_txt'] = 'Verificar por atualizações do sistema';
+$wb['php_handler_txt'] = 'Manipulador padrão do php';
+$wb['php_fpm_incron_reload_txt'] = 'Instale o arquivo de disparo do incron para recarregar o php-fpm.';
+$wb['disabled_txt'] = 'Desabilitado';
+$wb['dkim_strength_txt'] = 'Dificuldade do DKIM';
+$wb['monitor_system_updates_txt'] = 'Verificar por atualizações do sistema';
+$wb['invalid_apache_user_txt'] = 'Usuário do apache é inválido.';
+$wb['invalid_apache_group_txt'] = 'Grupo do apache é inválido.';
 $wb['backup_dir_error_regex'] = 'Diretório de backup é inválido.';
-$wb['maildir_path_error_regex'] = 'Caminho do Maildir é inválido.';
-$wb['homedir_path_error_regex'] = 'Caminho do Home é inválido.';
-$wb['mailuser_name_error_regex'] = 'Nome do Mailuser é inválido.';
-$wb['mailuser_group_name_error_regex'] = 'Grupo do Mailuser é inválido.';
-$wb['mailuser_uid_error_range'] = 'A UID do Mailuser deve ser >= 2000';
-$wb['mailuser_gid_error_range'] = 'A GID do Mailuser deve ser >= 2000';
-$wb['getmail_config_dir_error_regex'] = 'Configuração do diretório do getmail inválida.';
-$wb['website_basedir_error_regex'] = 'Diretório base (basedir) para sites é inválido.';
-$wb['website_symlinks_error_regex'] = 'Links simbólicos para sites é inválido.';
-$wb['vhost_conf_dir_error_regex'] = 'Diretório de configurações para vhost é inválido.';
-$wb['vhost_conf_enabled_dir_error_regex'] = 'Diretório de configurações para vhost habilitado é inválido.';
+$wb['maildir_path_error_regex'] = 'Caminho do maildir é inválido.';
+$wb['homedir_path_error_regex'] = 'Caminho do homedir é inválido.';
+$wb['mailuser_name_error_regex'] = 'Caminho do mailuser é inválido.';
+$wb['mailuser_group_name_error_regex'] = 'Grupo do mailuser é inválido.';
+$wb['mailuser_uid_error_range'] = 'A UID do mailuser deve ser >= 2000.';
+$wb['mailuser_gid_error_range'] = 'A GID do mailuser deve ser >= 2000.';
+$wb['getmail_config_dir_error_regex'] = 'Diretório de configurações do getmail é inválido.';
+$wb['website_basedir_error_regex'] = 'Caminho do basedir para sites é inválido. Comprimento mínimo 5 caracteres.';
+$wb['website_symlinks_error_regex'] = 'Links simbólicos para site são inválidos.';
+$wb['vhost_conf_dir_error_regex'] = 'Diretório de configurações vhost é inválido.';
+$wb['vhost_conf_enabled_dir_error_regex'] = 'Diretório de configuração vhost habilitado é inválido.';
 $wb['nginx_vhost_conf_dir_error_regex'] = 'Diretório de configurações do nginx é inválido.';
-$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Diretório de configurações nginx habilitado é inválido.';
-$wb['ca_path_error_regex'] = 'Caminho do CA é inválido.';
+$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Diretório de configurações do nginx habilitado é inválido.';
+$wb['ca_path_error_regex'] = 'Caminho da CA é inválido.';
 $wb['invalid_nginx_user_txt'] = 'Usuário do nginx é inválido.';
 $wb['invalid_nginx_group_txt'] = 'Grupo do nginx é inválido.';
-$wb['php_ini_path_apache_error_regex'] = 'Caminho do php.ini apache é inválido.';
-$wb['php_ini_path_cgi_error_regex'] = 'Caminho do php.ini CGI é inválido.';
-$wb['php_fpm_init_script_error_regex'] = 'Caminho do script de inicialização do PHP-FPM é inválido.';
-$wb['php_fpm_ini_path_error_regex'] = 'Caminho do php.ini PHP-FPM é inválido.';
-$wb['php_fpm_pool_dir_error_regex'] = 'Diretório de faixas (pool) PHP-FPM é inválido.';
-$wb['php_fpm_socket_dir_error_regex'] = 'Diretório do sqouete PHP-FPM é inválido.';
-$wb['php_open_basedir_error_regex'] = 'Diretório base (open_basedir) PHP é inválido.';
-$wb['awstats_data_dir_empty'] = 'Diretório de dados do awstats está em branco.';
-$wb['awstats_data_dir_error_regex'] = 'Diretório de dados do do awstats é inválido.';
-$wb['awstats_pl_empty'] = 'Configuração do script awstats.pl está em branco.';
-$wb['awstats_pl_error_regex'] = 'Caminho do script awstats.pl é inválido.';
-$wb['awstats_buildstaticpages_pl_empty'] = 'Script awstats_buildstaticpages.pl está em branco.';
-$wb['awstats_buildstaticpages_pl_error_regex'] = 'Camindho do script awstats_buildstaticpages.pl é inválido.';
-$wb['invalid_bind_user_txt'] = 'Usuário bind é inválido.';
-$wb['invalid_bind_group_txt'] = 'Grupo bind é inválido.';
-$wb['bind_zonefiles_dir_error_regex'] = 'Diretório de zonas do bind é inválido.';
-$wb['named_conf_path_error_regex'] = 'Caminho do named.conf é inválido.';
-$wb['named_conf_local_path_error_regex'] = 'Caminho do named.conf.local é inválido.';
-$wb['fastcgi_starter_path_error_regex'] = 'Caminho do scritp de inicialização FASTCGI é inválido.';
-$wb['fastcgi_starter_script_error_regex'] = 'Script de inicizalização FASTCGI é inválido.';
-$wb['fastcgi_alias_error_regex'] = 'Apelido (alias) do FASTCGI é inválido.';
-$wb['fastcgi_phpini_path_error_regex'] = 'Caminho do FASTCGI é inválido.';
-$wb['fastcgi_bin_error_regex'] = 'Binário do FASTCGI é inválido.';
-$wb['jailkit_chroot_home_error_regex'] = 'Raiz do chroot jailkit inválida.';
-$wb['jailkit_chroot_app_sections_error_regex'] = 'Aplicações no jailkit chroot (sessões) são inválidas.';
-$wb['jailkit_chroot_app_programs_error_regex'] = 'Aplicações no jailkit em ambiente chroot são inválidas.';
-$wb['jailkit_chroot_cron_programs_error_regex'] = 'Programas no cron em ambiente chroot jailkit são inválidos.';
-$wb['vlogger_config_dir_error_regex'] = 'Diretório de configuração do vlogger é inválido.';
-$wb['cron_init_script_error_regex'] = 'Script de inicialização do Cron é inválido.';
-$wb['crontab_dir_error_regex'] = 'Diretório para tabelas de tarefas individuais no cron é inválido.';
-$wb['cron_wget_error_regex'] = 'Caminho do wget para cron é inválido.';
+$wb['php_ini_path_apache_error_regex'] = 'Caminho do php.ini do apache é inválido.';
+$wb['php_ini_path_cgi_error_regex'] = 'Caminho do php.ini do cgi é inválido.';
+$wb['php_fpm_init_script_error_regex'] = 'Script de inicialização do php-fpm é inválido.';
+$wb['php_fpm_ini_path_error_regex'] = 'Caminho de inicialização do php-fpm é inválido.';
+$wb['php_fpm_pool_dir_error_regex'] = 'Caminho do diretório de faixas do php-fpm é inválido.';
+$wb['php_fpm_socket_dir_error_regex'] = 'Caminho do diretório de socket do php-fpm é inválido.';
+$wb['php_open_basedir_error_regex'] = 'Caminho do open_basedir do php é inválido.';
+$wb['awstats_data_dir_empty'] = 'O diretório de dados do awstats está em branco.';
+$wb['awstats_data_dir_error_regex'] = 'O diretório de dados do awstats é inválido.';
+$wb['awstats_pl_empty'] = 'A configuração do awstats.pl está em branco.';
+$wb['awstats_pl_error_regex'] = 'O caminho do awstats.pl é inválido.';
+$wb['awstats_buildstaticpages_pl_empty'] = 'O awstats_buildstaticpages.pl está em branco';
+$wb['awstats_buildstaticpages_pl_error_regex'] = 'O caminho do awstats_buildstaticpages.pl é inválido.';
+$wb['invalid_bind_user_txt'] = 'O usuário do bind é inválido.';
+$wb['invalid_bind_group_txt'] = 'O grupo do bind é inválido.';
+$wb['bind_zonefiles_dir_error_regex'] = 'O diretório de zonas do bind é inválido.';
+$wb['named_conf_path_error_regex'] = 'O caminho do named.conf é inválido.';
+$wb['named_conf_local_path_error_regex'] = 'O caminho do named.conf.local é inválido.';
+$wb['fastcgi_starter_path_error_regex'] = 'O caminho do script de inicialização do fastcgi é inválido.';
+$wb['fastcgi_starter_script_error_regex'] = 'O script de inicialização do fastcgi é inválido.';
+$wb['fastcgi_alias_error_regex'] = 'O alias do fastcgi é inválido.';
+$wb['fastcgi_phpini_path_error_regex'] = 'O caminho do fastcgi é inválido.';
+$wb['fastcgi_bin_error_regex'] = 'O binário do fastcgi é inválido.';
+$wb['jailkit_chroot_home_error_regex'] = 'O diretório home em chroot do jailkit é inválido.';
+$wb['jailkit_chroot_app_sections_error_regex'] = 'As seções de aplicações no jaikit são inválidas.';
+$wb['jailkit_chroot_app_programs_error_regex'] = 'As aplicações em chroot no jailkit são inválidas.';
+$wb['jailkit_chroot_cron_programs_error_regex'] = 'As tarefas de aplicações em chroot no jailkit são inválidas.';
+$wb['vlogger_config_dir_error_regex'] = 'Diretório de configurações do vlogger é inválido.';
+$wb['cron_init_script_error_regex'] = 'Script de inicialização do cron é inválido.';
+$wb['crontab_dir_error_regex'] = 'Diretório do cron é inválido.';
+$wb['cron_wget_error_regex'] = 'Caminho do wget no cron é inválido.';
 $wb['network_filesystem_txt'] = 'Sistema de arquivos de rede';
-$wb['disable_bind_log_txt'] = 'Desabilitar mensagens de alerta no log para bind9.';
-$wb['apps_vhost_enabled_txt'] = 'Habilitar apps-vhost';
-$wb['do_not_try_rescue_mongodb_txt'] = 'Desabilitar monitoramento do MongoDB';
-$wb['backup_dir_mount_cmd_txt'] = 'Usar o comando mount, se o diretório de backups não estiver montado';
-$wb['overquota_db_notify_admin_txt'] = 'Enviar mensagens de alerta de cota do banco de dados para o administrador';
-$wb['overquota_db_notify_client_txt'] = 'Enviar mensagens de alerta de cota do banco de dados para o cliente';
-$wb['php_handler_txt'] = 'Manipulador padrão PHP';
-$wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM';
-$wb['disabled_txt'] = 'Desabilitado';
-$wb['dkim_strength_txt'] = 'Dificuldade do DKIM';
-$wb['php_ini_check_minutes_txt'] = 'Verificar modificações do php.ini a cada N minutos';
-$wb['php_ini_check_minutes_error_empty'] = 'Por favor, insira um valor de quantas vezes o php.ini deve ser verificado por modificações.';
-$wb['php_ini_check_minutes_info_txt'] = '0 = sem verificação';
+$wb['php_ini_check_minutes_txt'] = 'Verificar alterações no php.ini a cada X minutos';
+$wb['php_ini_check_minutes_error_empty'] = 'Por favor, insira um valor para verificação de alterações no php.ini.';
+$wb['php_ini_check_minutes_info_txt'] = '0 = sem verificações';
 $wb['enable_spdy_txt'] = 'Tornar SPDY/HTTP2 disponível';
-$wb['web_settings_txt'] = 'Servidor de páginas';
-$wb['xmpp_server_txt'] = 'Servidor XMPP';
+$wb['web_settings_txt'] = 'Servidor web';
+$wb['xmpp_server_txt'] = 'Servidor xmpp';
 $wb['xmpp_use_ipv6_txt'] = 'Usar IPv6';
-$wb['xmpp_bosh_max_inactivity_txt'] = 'O limite de tempo para falta de atividade BOSH';
-$wb['xmpp_bosh_timeout_range_wrong'] = 'Por favor, insira uma faixa de tempo - entre 15 e 360 - para verificar falta de atividade BOSH.';
-$wb['xmpp_module_saslauth'] = 'saslauth';
+$wb['xmpp_bosh_max_inactivity_txt'] = 'Tempo de inatividade do BOSH';
+$wb['xmpp_bosh_timeout_range_wrong'] = 'Por favor, insira um valor para o timeout do bosh entre 15 e 360.';
+$wb['xmpp_module_saslauth'] = 'Autenticação SASL';
 $wb['xmpp_server_admins_txt'] = 'Administradores do servidor (JIDs)';
-$wb['xmpp_modules_enabled_txt'] = 'Habilitar plugins no lado servidor (um por linha)';
+$wb['xmpp_modules_enabled_txt'] = 'Plugins habilitados no servidor (um por linha)';
 $wb['xmpp_ports_txt'] = 'Portas dos componentes';
-$wb['xmpp_port_http_txt'] = 'HTTP';
-$wb['xmpp_port_https_txt'] = 'HTTPS';
+$wb['xmpp_port_http_txt'] = 'http';
+$wb['xmpp_port_https_txt'] = 'https';
 $wb['xmpp_port_pastebin_txt'] = 'Pastebin';
 $wb['xmpp_port_bosh_txt'] = 'BOSH';
-$wb['backup_time_txt'] = 'Hora do backup';
+$wb['disable_bind_log_txt'] = 'Desabilitar mensagens de alerta do bind9';
+$wb['apps_vhost_enabled_txt'] = 'Habilitar apps-vhost';
 $wb['skip_le_check_txt'] = 'Ignorar verificação do Lets Encrypt';
-$wb['migration_mode_txt'] = 'Habilitar modo de migração do servidor';
-$wb['nginx_enable_pagespeed_txt'] = 'Makes Pagespeed available';
-$wb['backup_tmp_txt'] = 'Backup tmp directory for zip';
-$wb['tmpdir_path_error_empty'] = 'tmp-dir Path is empty.';
-$wb['tmpdir_path_error_regex'] = 'Invalid tmp-dir path.';
-$wb['logging_txt'] = 'Store website access and error logs';
-$wb['logging_desc_txt'] = 'Use Tools > Resync to apply changes to existing sites. For Apache, access and error log can be anonymized. For nginx, only the access log is anonymized, the error log will contain IP addresses.';
-$wb['log_retention_txt'] = 'Log retention (days)';
-$wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0';
-$wb['php_default_name_txt'] = 'Description Default PHP-Version';
-$wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
-$wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
-$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode';
-$wb['content_filter_txt'] = 'Content Filter';
-$wb['rspamd_url_txt'] = 'Rspamd URL';
-$wb['rspamd_user_txt'] = 'Rspamd User';
-$wb['rspamd_password_txt'] = 'Rspamd Password';
-?>
+$wb['migration_mode_txt'] = 'Modo migração de servidor';
+$wb['nginx_enable_pagespeed_txt'] = 'Tornar pagespeed disponível';
+$wb['logging_txt'] = 'Gravar logs de acesso e erros de sites';
+$wb['logging_desc_txt'] = 'Usar Ferramentas > Sicronizar para aplicar mudanças em sites existentes. Para o Apache, os logs de acesso e erros podem ser anonimizados. Para o nginx, apenas o log de acesso é anonimizado, o log de erros conterá endereços IP.';
+$wb['log_retention_txt'] = 'Tempo de retenção do log (dias)';
+$wb['log_retention_error_ispositive'] = 'O tempo de retenção do log deve ser um número > 0.';
+$wb['php_default_name_txt'] = 'Descrição da versão padrão do php';
+$wb['php_default_name_error_empty'] = 'A descrição da versão padrão do php está em branco.';
+$wb['error_mailbox_message_size_txt'] = 'O tamanho da cota da conta de e-mail deve ser maior ou igual o tamanho da cota de mensagens.';
+$wb['php_fpm_reload_mode_txt'] = 'Modo da recarga do php-fpm';
+$wb['content_filter_txt'] = 'Filtro de conteúdo';
+$wb['rspamd_url_txt'] = 'URL do rspamd';
+$wb['rspamd_user_txt'] = 'Usuário do rspamd';
+$wb['rspamd_password_txt'] = 'Senha do rspamd';
diff --git a/interface/web/admin/lib/lang/br_server_ip.lng b/interface/web/admin/lib/lang/br_server_ip.lng
index b921578940..b9bbd47949 100644
--- a/interface/web/admin/lib/lang/br_server_ip.lng
+++ b/interface/web/admin/lib/lang/br_server_ip.lng
@@ -1,11 +1,11 @@
 <?php
 $wb['server_id_txt'] = 'Servidor';
-$wb['ip_address_txt'] = 'Endereço IP';
-$wb['virtualhost_txt'] = 'Nome do virtualHost http';
-$wb['ip_error_wrong'] = 'Endereço IP inválido!';
-$wb['ip_error_unique'] = 'O endereço IP deve ser exclusivo.';
 $wb['client_id_txt'] = 'Cliente';
 $wb['ip_type_txt'] = 'Tipo';
-$wb['virtualhost_port_txt'] = 'Portas http';
-$wb['error_port_syntax'] = 'Caracteres inválidos no campo -portas http-, insira somente números separados por vírgula. Exemplo: 80,443';
+$wb['ip_address_txt'] = 'Endereço IP';
+$wb['virtualhost_txt'] = 'Nome do vhost http';
+$wb['virtualhost_port_txt'] = 'Porta http';
+$wb['ip_error_wrong'] = 'O endereço IP é inválido.';
+$wb['ip_error_unique'] = 'O endereço IP deve ser exclusivo.';
+$wb['error_port_syntax'] = 'Caracteres inválidos para porta http, por favor, insira apenas uma porta ou separe portas por vírgula. Exemplo: 80,443.';
 ?>
diff --git a/interface/web/admin/lib/lang/br_server_ip_list.lng b/interface/web/admin/lib/lang/br_server_ip_list.lng
index c7b22097bf..0ae892af87 100644
--- a/interface/web/admin/lib/lang/br_server_ip_list.lng
+++ b/interface/web/admin/lib/lang/br_server_ip_list.lng
@@ -1,10 +1,10 @@
 <?php
 $wb['list_head_txt'] = 'Endereço IP';
 $wb['server_id_txt'] = 'Servidor';
+$wb['client_id_txt'] = 'Cliente';
 $wb['ip_address_txt'] = 'Endereço IP';
 $wb['add_new_record_txt'] = 'Adicionar novo endereço IP';
-$wb['client_id_txt'] = 'Cliente';
-$wb['virtualhost_txt'] = 'Vhost http';
+$wb['virtualhost_txt'] = 'Virtual host http';
 $wb['virtualhost_port_txt'] = 'Portas http';
 $wb['ip_type_txt'] = 'Tipo';
 ?>
diff --git a/interface/web/admin/lib/lang/br_server_ip_map.lng b/interface/web/admin/lib/lang/br_server_ip_map.lng
index 44b7648277..81a2bb4b96 100644
--- a/interface/web/admin/lib/lang/br_server_ip_map.lng
+++ b/interface/web/admin/lib/lang/br_server_ip_map.lng
@@ -1,12 +1,12 @@
 <?php
-$wb['server_id_txt'] = 'Servidor';
+$wb['server_id_txt'] = 'Servidor para mapeamento IP';
 $wb['source_txt'] = 'Endereço IP de origem';
 $wb['destination_txt'] = 'Endereço IP de destino';
 $wb['active_txt'] = 'Ativo';
-$wb['ip_error_wrong'] = 'Endereço IP é inválido.';
-$wb['destination_ip_empty'] = 'Endereço IP de destino está em branco.';
-$wb['source_ip_empty'] = 'Endereço IP de origem está em branco.';
-$wb['server_empty_error'] = 'Servidor está em branco.';
-$wb['duplicate_mapping_error'] = 'Mapeamento já existe.';
-$wb['ip_mapping_error'] = 'Endereço IP de origem não pode ser um endereço IP do servidor.';
+$wb['ip_error_wrong'] = 'O endereço IP de destino é inválido.';
+$wb['destination_ip_empty'] = 'O endereço IP de destino está em branco.';
+$wb['source_ip_empty'] = 'O endereço IP de origem está em branco.';
+$wb['server_empty_error'] = 'O servidor está em branco.';
+$wb['duplicate_mapping_error'] = 'Este mapeamento IP já existe.';
+$wb['ip_mapping_error'] = 'Endereço IP de origem não pode ser o mesmo IP do servidor para o mapeamento.';
 ?>
diff --git a/interface/web/admin/lib/lang/br_server_ip_map_list.lng b/interface/web/admin/lib/lang/br_server_ip_map_list.lng
index f5682f31ac..8cb0a1e20f 100644
--- a/interface/web/admin/lib/lang/br_server_ip_map_list.lng
+++ b/interface/web/admin/lib/lang/br_server_ip_map_list.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['list_head_txt'] = 'Mapeamento IPv4 - servidor web';
+$wb['list_head_txt'] = 'Mapeamento IPv4';
 $wb['server_id_txt'] = 'Servidor';
-$wb['source_ip_txt'] = 'IP de origem';
-$wb['destination_ip_txt'] = 'IP de destino';
+$wb['source_ip_txt'] = 'Endereço de origem';
+$wb['destination_ip_txt'] = 'Endereço de destino';
 $wb['active_txt'] = 'Ativo';
 ?>
diff --git a/interface/web/admin/lib/lang/br_server_list.lng b/interface/web/admin/lib/lang/br_server_list.lng
index b4a1fcafc6..ae3bb52810 100644
--- a/interface/web/admin/lib/lang/br_server_list.lng
+++ b/interface/web/admin/lib/lang/br_server_list.lng
@@ -1,14 +1,14 @@
 <?php
 $wb['list_head_txt'] = 'Servidor';
 $wb['server_name_txt'] = 'Nome';
-$wb['mail_server_txt'] = 'e-Mails';
-$wb['web_server_txt'] = 'Sites';
+$wb['mail_server_txt'] = 'E-MAIL';
+$wb['web_server_txt'] = 'SITES';
 $wb['dns_server_txt'] = 'DNS';
 $wb['file_server_txt'] = 'FTP';
 $wb['db_server_txt'] = 'BD';
 $wb['vserver_server_txt'] = 'VPS';
-$wb['add_new_record_txt'] = 'Adicionar novo servidor';
 $wb['proxy_server_txt'] = 'Proxy';
 $wb['firewall_server_txt'] = 'Firewall';
+$wb['add_new_record_txt'] = 'Adicionar novo servidor';
 $wb['xmpp_server_txt'] = 'XMPP';
 ?>
diff --git a/interface/web/admin/lib/lang/br_server_php.lng b/interface/web/admin/lib/lang/br_server_php.lng
index 459b4d9e0c..377763ce45 100644
--- a/interface/web/admin/lib/lang/br_server_php.lng
+++ b/interface/web/admin/lib/lang/br_server_php.lng
@@ -1,17 +1,17 @@
 <?php
 $wb['server_id_txt'] = 'Servidor';
 $wb['client_id_txt'] = 'Cliente';
-$wb['name_txt'] = 'Nome do php';
+$wb['name_txt'] = 'Nome da versão do php';
 $wb['Name'] = 'Nome';
 $wb['FastCGI Settings'] = 'Configurações FastCGI';
 $wb['PHP-FPM Settings'] = 'Configurações PHP-FPM';
 $wb['Additional PHP Versions'] = 'Versões adicionais do php';
-$wb['Form to edit additional PHP versions'] = 'Formulário de edição de versões adicionais do php';
-$wb['server_php_name_error_empty'] = 'Nome está em branco.';
-$wb['php_fastcgi_binary_txt'] = 'Caminho do binário FastCGI';
-$wb['php_fastcgi_ini_dir_txt'] = 'Caminho do diretório do php.ini';
-$wb['php_fpm_init_script_txt'] = 'Caminho do script de inicialização do PHP-FPM';
+$wb['Form to edit additional PHP versions'] = 'Editar verões adicionais do php';
+$wb['server_php_name_error_empty'] = 'O campo nome está em branco.';
+$wb['php_fastcgi_binary_txt'] = 'Caminho do binário do FastCGI';
+$wb['php_fastcgi_ini_dir_txt'] = 'Diretório do php.ini';
+$wb['php_fpm_init_script_txt'] = 'Caminho do script de inicialização do php-fpm';
 $wb['php_fpm_ini_dir_txt'] = 'Caminho do diretório do php.ini';
-$wb['php_fpm_pool_dir_txt'] = 'Caminho do diretório de faixas (pool) do PHP-FPM';
-$wb['active_txt'] = 'Active';
+$wb['php_fpm_pool_dir_txt'] = 'Caminho do diretório pool do php-fpm';
+$wb['active_txt'] = 'Ativo';
 ?>
diff --git a/interface/web/admin/lib/lang/br_server_php_list.lng b/interface/web/admin/lib/lang/br_server_php_list.lng
index 88f1e38d21..38ebdd3568 100644
--- a/interface/web/admin/lib/lang/br_server_php_list.lng
+++ b/interface/web/admin/lib/lang/br_server_php_list.lng
@@ -3,6 +3,6 @@ $wb['list_head_txt'] = 'Versões adicionais do php';
 $wb['server_id_txt'] = 'Servidor';
 $wb['add_new_record_txt'] = 'Adicionar nova versão do php';
 $wb['client_id_txt'] = 'Cliente';
-$wb['name_txt'] = 'Nome da versão do php';
-$wb['active_txt'] = 'Active';
+$wb['name_txt'] = 'Nome da versão';
+$wb['active_txt'] = 'Ativo';
 ?>
diff --git a/interface/web/admin/lib/lang/br_software_package_list.lng b/interface/web/admin/lib/lang/br_software_package_list.lng
index 093f52bca3..de62e3d305 100644
--- a/interface/web/admin/lib/lang/br_software_package_list.lng
+++ b/interface/web/admin/lib/lang/br_software_package_list.lng
@@ -1,13 +1,13 @@
 <?php
-$wb['list_head_txt'] = 'Pacotes de software';
+$wb['list_head_txt'] = 'Pacotes de APPs e complementos';
 $wb['installed_txt'] = 'Estado';
 $wb['package_title_txt'] = 'Pacote';
 $wb['package_description_txt'] = 'Descrição';
-$wb['action_txt'] = 'Acão';
+$wb['action_txt'] = 'Ação';
 $wb['toolsarea_head_txt'] = 'Pacotes';
 $wb['repoupdate_txt'] = 'Atualizar lista de pacotes';
-$wb['package_id_txt'] = 'ID local do app';
-$wb['no_packages_txt'] = 'Nenhum pacote disponível';
+$wb['package_id_txt'] = 'ID local do APP';
+$wb['no_packages_txt'] = 'Nenhum pacote disponível.';
 $wb['edit_txt'] = 'Editar';
 $wb['delete_txt'] = 'Remover';
 ?>
diff --git a/interface/web/admin/lib/lang/br_software_repo.lng b/interface/web/admin/lib/lang/br_software_repo.lng
index b535850138..dbc14e2032 100644
--- a/interface/web/admin/lib/lang/br_software_repo.lng
+++ b/interface/web/admin/lib/lang/br_software_repo.lng
@@ -4,5 +4,5 @@ $wb['repo_url_txt'] = 'URL';
 $wb['repo_username_txt'] = 'Usuário (opcional)';
 $wb['repo_password_txt'] = 'Senha (opcional)';
 $wb['active_txt'] = 'Ativo';
-$wb['Software Repository which may contain addons or updates'] = 'Repositório de softwares podem conter complementos ou atualizações';
+$wb['Software Repository which may contain addons or updates'] = 'Repositório de software pode conter complementos ou atualizações';
 ?>
diff --git a/interface/web/admin/lib/lang/br_software_update_list.lng b/interface/web/admin/lib/lang/br_software_update_list.lng
index 0592ca7f26..0dff3a245c 100644
--- a/interface/web/admin/lib/lang/br_software_update_list.lng
+++ b/interface/web/admin/lib/lang/br_software_update_list.lng
@@ -1,9 +1,9 @@
 <?php
-$wb['list_head_txt'] = 'Atualizações de programas';
-$wb['server_select_txt'] = 'Selecione o servidor';
-$wb['installed_txt'] = 'Ações';
+$wb['list_head_txt'] = 'Atualizações de Software';
+$wb['server_select_txt'] = 'Selecionar o servidor';
+$wb['installed_txt'] = 'Ação';
 $wb['update_title_txt'] = 'Atualizar';
 $wb['version_txt'] = 'Versão';
 $wb['action_txt'] = 'Ação';
-$wb['no_updates_txt'] = 'Nenhuma atualização disponível';
+$wb['no_updates_txt'] = 'Nenhuma atualização disponível.';
 ?>
diff --git a/interface/web/admin/lib/lang/br_system_config.lng b/interface/web/admin/lib/lang/br_system_config.lng
index 8688ca53aa..98bd4c9614 100644
--- a/interface/web/admin/lib/lang/br_system_config.lng
+++ b/interface/web/admin/lib/lang/br_system_config.lng
@@ -1,58 +1,58 @@
 <?php
-$wb['system_config_desc_txt'] = '';
+$wb['system_config_desc_txt'] = 'Configurações do Sistema';
+$wb['smtp_missing_admin_mail_txt'] = 'Por favor, insira um nome e e-mail do administrador se você usar smtp para envio dos e-mails do sistema.';
+$wb['dashboard_atom_url_admin_txt'] = 'URL do Dashboard atom (admin)';
+$wb['dashboard_atom_url_reseller_txt'] = 'URL do Dashboard atom (revendas)';
+$wb['dashboard_atom_url_client_txt'] = 'URL do Dashboard atom  (clientes)';
 $wb['warning'] = 'Edite estes valores com cuidado! Não remova os prefixos em um sistema com mais de um cliente!';
-$wb['dbname_prefix_txt'] = 'Prefixo do banco de dados';
-$wb['dbuser_prefix_txt'] = 'Prefixo do usuário do banco de dados';
-$wb['shelluser_prefix_txt'] = 'Prefixo do usuário shell';
-$wb['ftpuser_prefix_txt'] = 'Prefixo do usuário ftp';
-$wb['dbname_prefix_error_regex'] = 'Caractere não permitido para o prefixo do banco de dados!';
-$wb['dbuser_prefix_error_regex'] = 'Caractere não permitido para o prefixo do usuário do banco de dados!';
-$wb['ftpuser_prefix_error_regex'] = 'Caractere não permitido para o prefixo do usuário ftp!';
-$wb['shelluser_prefix_error_regex'] = 'Caractere não permitido para o prefixo do usuário shell!';
+$wb['tab_change_discard_txt'] = 'Descartar alterações nesta aba';
+$wb['tab_change_warning_txt'] = 'Alerta de alterações';
+$wb['tab_change_warning_note_txt'] = 'Exibir alertas de alterações nesta aba se qualquer dado for alterado pelo usuário.';
+$wb['dbname_prefix_txt'] = 'Prefixo de banco de dados';
+$wb['dbuser_prefix_txt'] = 'Prefixo de usuário de banco de dados';
+$wb['shelluser_prefix_txt'] = 'Prefixo de usuário do shell';
+$wb['webdavuser_prefix_txt'] = 'Prefixo de usuário webdav';
+$wb['ftpuser_prefix_txt'] = 'Prefixo de usuário ftp';
+$wb['vhost_subdomains_txt'] = 'Adicionar subdomínios como um site';
+$wb['vhost_subdomains_note_txt'] = 'Você não pode desabilitar esta configuração enquanto existirem subdomínios vhost no sistema!';
+$wb['vhost_aliasdomains_txt'] = 'Adicionar alias de domínio como um site';
+$wb['vhost_aliasdomains_note_txt'] = 'Você não pode desabilitar esta configuração enquanto existirem alias de domínios vhost no sistema!';
+$wb['dbname_prefix_error_regex'] = 'Caractere não permitido para o prefixo de banco de dados.';
+$wb['dbuser_prefix_error_regex'] = 'Caractere não permitido para o prefixo de usuário de banco de dados.';
+$wb['ftpuser_prefix_error_regex'] = 'Caractere não permitido para o prefixo de usuário ftp.';
+$wb['shelluser_prefix_error_regex'] = 'Caractere não permitido para o prefixo de usuário do shell.';
+$wb['webdavuser_prefix_error_regex'] = 'Caractere não permitido para o prefixo de usuários webdav.';
 $wb['dblist_phpmyadmin_link_txt'] = 'Link para o phpmyadmin';
+$wb['enable_custom_login_txt'] = 'Permitir nome de usuário personalizado';
 $wb['mailboxlist_webmail_link_txt'] = 'Link para o webmail';
+$wb['mailbox_show_autoresponder_tab_txt'] = 'Exibir aba de auto-resposta nos detalhes da conta de e-mail';
+$wb['mailbox_show_mail_filter_tab_txt'] = 'Exibir aba de filtro de e-mails nos detalhes da conta de e-mail';
+$wb['mailbox_show_custom_rules_tab_txt'] = 'Exibir aba de filtros personalizados de e-mail nos detalhes da conta de e-mail';
 $wb['webmail_url_txt'] = 'URL do webmail';
-$wb['phpmyadmin_url_txt'] = 'URL do phpmyadmin';
-$wb['use_domain_module_txt'] = 'Use o módulo domínios para adicionar novos domínios';
-$wb['use_domain_module_hint'] = 'Se você usar este módulo, os clientes podem selecionar apenas um dos domínios que o administrador cria para eles. Eles não podem editar o campo domínio livremente. Você deve sair e acessar novamente depois de alterar este valor para que as mudanças sejam visíveis.';
-$wb['new_domain_txt'] = 'HTML para criar um novo domínio';
-$wb['dashboard_atom_url_admin_txt'] = 'URL do Dashboard atom (admin)';
-$wb['dashboard_atom_url_reseller_txt'] = 'URL do Dashboard atom (revendas)';
-$wb['dashboard_atom_url_client_txt'] = 'URL do Dashboard atom  (clientes)';
-$wb['webdavuser_prefix_txt'] = 'Prefixo do usuário webdav';
-$wb['webdavuser_prefix_error_regex'] = 'Caractere não permitido no prefixo do usuário webdav.';
-$wb['webftp_url_txt'] = 'URL do webFTP';
-$wb['mailmailinglist_link_txt'] = 'Link para lista de e-mails';
-$wb['mailmailinglist_url_txt'] = 'URL para lista de e-mails';
-$wb['admin_mail_txt'] = 'e-Mail do administrador';
+$wb['mailmailinglist_link_txt'] = 'Link para lista de e-mails na lista de e-mails';
+$wb['mailmailinglist_url_txt'] = 'URL da lista de e-mails';
+$wb['phpmyadmin_url_txt'] = 'URL do phpMyAdmin';
+$wb['use_domain_module_txt'] = 'Use o módulo de cliente para adicionar novos domínios';
+$wb['use_domain_module_hint'] = 'Se você usar este módulo, os clientes podem selecionar apenas um dos domínios que o administrador adicionar para eles. Eles não podem editar o campo domínio livremente. Você deve sair e acessar novamente após alterar este valor para que as mudanças sejam aplicadas.';
+$wb['new_domain_txt'] = 'Código HTML para criar um novo domínio';
+$wb['webftp_url_txt'] = 'URL do FTPweb';
+$wb['admin_mail_txt'] = 'Administrador(es) de e-mails';
+$wb['monitor_key_txt'] = 'Palavras reservadas a monitorar';
 $wb['admin_name_txt'] = 'Nome do administrador';
-$wb['enable_custom_login_txt'] = 'Permite nome de acesso personalizado';
-$wb['monitor_key_txt'] = 'Monitorar palavra reservada';
 $wb['maintenance_mode_txt'] = 'Modo manutenção';
-$wb['smtp_enabled_txt'] = 'Usar SMPT para enviar e-mails do sistema';
-$wb['smtp_host_txt'] = 'Servidor SMTP';
-$wb['smtp_port_txt'] = 'Porta';
-$wb['smtp_user_txt'] = 'Usuário';
-$wb['smtp_pass_txt'] = 'Senha';
-$wb['smtp_crypt_txt'] = 'Usar criptografia SSL/TLS para conexões SMTP';
-$wb['smtp_missing_admin_mail_txt'] = 'Por favor, insira um nome e e-mail do administrador se você usar smtp para envio dos e-mails do sistema.';
-$wb['tab_change_discard_txt'] = 'Descartar modificações nesta aba';
-$wb['tab_change_warning_txt'] = 'Alerta de modificações';
-$wb['tab_change_warning_note_txt'] = 'Exibir alertas de modificações nesta aba se qualquer dados for modificado pelo usuário.';
-$wb['vhost_subdomains_txt'] = 'Adicionar subdomínios vhost como site';
-$wb['vhost_subdomains_note_txt'] = 'Você não pode desabilitar esta configuração enquanto existirem subdomínios vhost no sistema!';
-$wb['vhost_aliasdomains_txt'] = 'Adicionar apelidos de domínios vhost como site';
-$wb['vhost_aliasdomains_note_txt'] = 'Você nao pode desabilitar esta configuração enquanto existirem apelidos de domínio vhost no sistema!';
-$wb['phpmyadmin_url_error_regex'] = 'URL do phpmyadmin inválida.';
-$wb['use_combobox_txt'] = 'Usar jQuery UI Combobox';
+$wb['smtp_enabled_txt'] = 'Usar SMTP para enviar e-mails do sistema';
+$wb['smtp_host_txt'] = 'Host SMTP';
+$wb['smtp_port_txt'] = 'Porta SMTP';
+$wb['smtp_user_txt'] = 'Usuário SMTP';
+$wb['smtp_pass_txt'] = 'Senha do SMTP';
+$wb['smtp_crypt_txt'] = 'Usar conexão criptografada SSL/TLS para o SMTP';
+$wb['phpmyadmin_url_error_regex'] = 'URL do phpmyadmin é inválida.';
+$wb['use_combobox_txt'] = 'Usar combobox jQuery UI';
 $wb['use_loadindicator_txt'] = 'Usar indicador de carga';
 $wb['f5_to_reload_js_txt'] = 'Se você modificar esta configuração, talvez será necessário pressionar F5 no seu navegador para recarregar as bibliotecas do JavaScript ou esvaziar o cache.';
-$wb['client_username_web_check_disabled_txt'] = 'Desabilitar verificação da palavra reservada \'web\' para nome do usuário (não recomendado!).';
-$wb['backups_include_into_web_quota_txt'] = 'Incluir arquivos de backup na cota para site.';
-$wb['mailbox_show_autoresponder_tab_txt'] = 'Exir aba autoresposta nos detalhes da conta de e-mail';
-$wb['mailbox_show_mail_filter_tab_txt'] = 'Exibir aba filtros de e-mail nos detalhes da conta de e-mail';
-$wb['mailbox_show_custom_rules_tab_txt'] = 'Exibir aba filtros de e-mail personalizados nos detalhes da conta de e-mail';
-$wb['webmail_url_error_regex'] = 'URL do webmail inválida';
+$wb['client_username_web_check_disabled_txt'] = 'Desabilitar verificação da palavra reservada "web" para o nome de usuário (não recomendado!).';
+$wb['backups_include_into_web_quota_txt'] = 'Incluir arquivos de backup na cota do site.';
+$wb['webmail_url_error_regex'] = 'URL do webmail é inválida.';
 $wb['phpmyadmin_url_note_txt'] = 'Área reservada:';
 $wb['webmail_url_note_txt'] = 'Área reservada:';
 $wb['available_dashlets_note_txt'] = 'Dashlets disponíveis:';
@@ -64,30 +64,29 @@ $wb['client_dashlets_left_txt'] = 'Restrições de dashlets para clientes';
 $wb['client_dashlets_right_txt'] = 'Permissões de dashlets para clientes';
 $wb['customer_no_template_txt'] = 'No. do gabarito do cliente';
 $wb['customer_no_template_error_regex_txt'] = 'O número do gabarito do cliente contém caracteres inválidos.';
-$wb['customer_no_start_txt'] = 'Valor inicial do código do cliente';
-$wb['customer_no_counter_txt'] = 'Contador de código do cliente';
+$wb['customer_no_start_txt'] = 'Valor inicial do código de cliente';
+$wb['customer_no_counter_txt'] = 'Contador do código de cliente';
 $wb['session_timeout_txt'] = 'Duração da sessão (minutos)';
-$wb['session_allow_endless_txt'] = 'Habilitar \\"Manter-me conectado\\"';
+$wb['session_allow_endless_txt'] = 'Habilitar "Manter-me conectado"';
+$wb['No'] = 'Não';
 $wb['min_password_length_txt'] = 'Comprimento mínimo da senha';
 $wb['min_password_strength_txt'] = 'Dificuldade mínima da senha';
-$wb['company_name_txt'] = 'Nome da empresa no título da página';
-$wb['reseller_can_use_options_txt'] = 'Revendas podem usar o menu sites';
-$wb['custom_login_text_txt'] = 'Texto personalizado para página de acesso';
-$wb['custom_login_link_txt'] = 'Link personalizado para página de acesso';
-$wb['login_link_error_regex'] = 'Link personalizado para acesso inválido';
 $wb['default_mailserver_txt'] = 'Servidor de e-mails padrão';
 $wb['default_webserver_txt'] = 'Servidor web padrão';
 $wb['default_dnsserver_txt'] = 'Servidor dns padrão';
 $wb['default_slave_dnsserver_txt'] = 'Servidor dns secundário padrão';
-$wb['ca_name_txt'] = 'Name';
-$wb['ca_issue_txt'] = 'Issue';
-$wb['ca_wildcard_txt'] = 'Use Wildcard';
-$wb['ca_critical_txt'] = 'Strict Check';
-$wb['ca_iodef_txt'] = 'iodef';
-$wb['active_txt'] = 'Aktive';
-$wb['btn_save_txt'] = 'Save';
-$wb['btn_cancel_txt'] = 'Cancel';
 $wb['default_dbserver_txt'] = 'Servidor de banco de dados padrão';
-$wb['No'] = 'Não';
-$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
+$wb['company_name_txt'] = 'Nome da empresa para título da página';
+$wb['reseller_can_use_options_txt'] = 'Revendas podem utilizar o menu sites';
+$wb['custom_login_text_txt'] = 'Texto personalizado para a página de acesso';
+$wb['custom_login_link_txt'] = 'Link personalizado para página de acesso';
+$wb['login_link_error_regex'] = 'Link personalizado para acesso inválido';
+$wb['ca_name_txt'] = 'Nome';
+$wb['ca_issue_txt'] = 'Questão';
+$wb['ca_wildcard_txt'] = 'Usar curingas';
+$wb['ca_iodef_txt'] = 'Definições de E/S';
+$wb['active_txt'] = 'Ativo';
+$wb['btn_save_txt'] = 'Salvar';
+$wb['btn_cancel_txt'] = 'Cancelar';
+$wb['web_php_options_txt'] = 'Manipulador do php (Somente apache)';
 ?>
diff --git a/interface/web/admin/lib/lang/br_tpl_default_admin.lng b/interface/web/admin/lib/lang/br_tpl_default_admin.lng
index 0a53752e4b..dbad6b1766 100644
--- a/interface/web/admin/lib/lang/br_tpl_default_admin.lng
+++ b/interface/web/admin/lib/lang/br_tpl_default_admin.lng
@@ -1,18 +1,18 @@
 <?php
-$wb['tpl_default_admin_head_txt'] = 'Configurações de tema global padrão';
-$wb['tpl_default_admin_desc_txt'] = '';
+$wb['tpl_default_admin_head_txt'] = 'Configurações globais do tema padrão';
+$wb['tpl_default_admin_desc_txt'] = 'Descrição';
 $wb['server_id_txt'] = 'Servidor';
 $wb['client_id_txt'] = 'Cliente';
-$wb['name_txt'] = 'Nome do PHP';
+$wb['name_txt'] = 'Nome da versão do php';
 $wb['Name'] = 'Nome';
-$wb['FastCGI Settings'] = 'Configurações do FastCGI';
-$wb['PHP-FPM Settings'] = 'Configurações do PHP-FPM';
+$wb['FastCGI Settings'] = 'Configurações FastCGI';
+$wb['PHP-FPM Settings'] = 'Configurações PHP-FPM';
 $wb['Additional PHP Versions'] = 'Versões adicionais do php';
-$wb['Form to edit additional PHP versions'] = 'Formulário de edição de versões adicionais do php';
-$wb['server_php_name_error_empty'] = 'Nome está em branco.';
-$wb['php_fastcgi_binary_txt'] = 'Caminho do binário FastCGI';
+$wb['Form to edit additional PHP versions'] = 'Editar versões adicionais do php';
+$wb['server_php_name_error_empty'] = 'O nome está em branco.';
+$wb['php_fastcgi_binary_txt'] = 'Caminho do binário do FastCGI';
 $wb['php_fastcgi_ini_dir_txt'] = 'Caminho do diretório do php.ini';
-$wb['php_fpm_init_script_txt'] = 'Caminho do script de inicialização PHP-FPM';
-$wb['php_fpm_ini_dir_txt'] = 'Caminho do diretório php.ini';
-$wb['php_fpm_pool_dir_txt'] = 'Caminho do diretório de faixas (pool) do PHP-FPM';
+$wb['php_fpm_init_script_txt'] = 'Caminho do script de inicialização php-fpm';
+$wb['php_fpm_ini_dir_txt'] = 'Caminho do diretório do php.ini';
+$wb['php_fpm_pool_dir_txt'] = 'Caminho do diretório de faixas php-fpm';
 ?>
diff --git a/interface/web/admin/lib/lang/br_users.lng b/interface/web/admin/lib/lang/br_users.lng
index d16bcf1cb1..6d71a39e4c 100644
--- a/interface/web/admin/lib/lang/br_users.lng
+++ b/interface/web/admin/lib/lang/br_users.lng
@@ -1,36 +1,36 @@
 <?php
 $wb['username_txt'] = 'Usuário';
-$wb['username_err'] = 'O nome do usuário é muito longo ou contém caracteres inválidos!';
-$wb['username_empty'] = 'Por favor, entre com o nome do usuário.';
-$wb['username_unique'] = 'Já existe um usuário com este nome!';
+$wb['username_err'] = 'O nome do usuário é muito longo ou contém caracteres inválidos.';
+$wb['username_empty'] = 'O nome do usuário está em branco.';
+$wb['username_unique'] = 'Já existe um usuário com este nome.';
 $wb['passwort_txt'] = 'Senha';
 $wb['password_strength_txt'] = 'Dificuldade da senha';
-$wb['modules_txt'] = 'Módulos';
-$wb['startmodule_txt'] = 'Módulo Inicial';
+$wb['modules_txt'] = 'Módulo';
+$wb['startmodule_txt'] = 'Módulo inicial';
 $wb['app_theme_txt'] = 'Tema';
 $wb['typ_txt'] = 'Tipo';
 $wb['active_txt'] = 'Ativo';
 $wb['language_txt'] = 'Idioma';
 $wb['name_txt'] = 'Nome';
-$wb['vorname_txt'] = 'Sobrenome';
+$wb['vorname_txt'] = 'Segundo nome';
 $wb['unternehmen_txt'] = 'Empresa';
 $wb['strasse_txt'] = 'Endereço';
 $wb['ort_txt'] = 'Cidade';
 $wb['plz_txt'] = 'CEP';
 $wb['land_txt'] = 'País';
-$wb['email_txt'] = 'e-mail';
-$wb['url_txt'] = 'Site';
+$wb['email_txt'] = 'e-Mail';
+$wb['url_txt'] = 'URL';
 $wb['telefon_txt'] = 'Telefone';
 $wb['fax_txt'] = 'Fax';
 $wb['groups_txt'] = 'Grupos';
-$wb['default_group_txt'] = 'Grupo Padrão';
-$wb['startmodule_err'] = 'O módulo inicial não está contido nos módulos.';
-$wb['generate_password_txt'] = 'Gerar senha';
-$wb['repeat_password_txt'] = 'Repetir senha';
-$wb['password_mismatch_txt'] = 'A senhas não coincidem.';
-$wb['password_match_txt'] = 'A senhas coincidem.';
-$wb['username_error_collision'] = 'O nome do usuário não pode conter as palavras reservadas -web- ou -web- seguidas por um número.';
-$wb['client_not_admin_err'] = 'Um usuário definido como cliente não pode ser configurado com o tipo: admin (administrador).';
-$wb['lost_password_function_txt'] = 'Função reconfigurar senha perdida disponível';
-$wb['no_user_insert'] = 'CP-Users of type -user- get added and updated automatically when you add a client or reseller.';
+$wb['default_group_txt'] = 'Grupo padrão';
+$wb['startmodule_err'] = 'Módulo inicial não está dentro de módulos.';
+$wb['generate_password_txt'] = 'Gerar Senha';
+$wb['repeat_password_txt'] = 'Repetir Senha';
+$wb['password_mismatch_txt'] = 'As senhas não coincidem.';
+$wb['password_match_txt'] = 'As senhas coincidem.';
+$wb['username_error_collision'] = 'O nome de usuário não pode conter a palavra "web" ou "web" seguida de um número."';
+$wb['client_not_admin_err'] = 'Um usuário que pertence a um cliente não pode ser configurado para: admin.';
+$wb['lost_password_function_txt'] = 'Função de senha esquecida disponível';
+$wb['no_user_insert'] = 'Os usuários do Painel de Controle (ISPC) do tipo -user- são adicionados e atualizados automaticamente quando você adiciona um cliente ou revenda.';
 ?>
diff --git a/interface/web/admin/lib/lang/br_users_list.lng b/interface/web/admin/lib/lang/br_users_list.lng
index 3422f78355..26910186c5 100644
--- a/interface/web/admin/lib/lang/br_users_list.lng
+++ b/interface/web/admin/lib/lang/br_users_list.lng
@@ -1,9 +1,9 @@
 <?php
 $wb['list_head_txt'] = 'Usuários';
-$wb['username_txt'] = 'Nome do usuário';
-$wb['client_id_txt'] = 'ID do cliente';
+$wb['username_txt'] = 'Usuário';
+$wb['client_id_txt'] = 'ID do usuário';
 $wb['active_txt'] = 'Ativo';
-$wb['add_new_record_txt'] = 'Adicionar novo usuário';
-$wb['warning_txt'] = '<b>AVISO:</b> Não modifique ou edite qualquer configuração de usuário aqui. Use o módulo de clientes ou revendas. Modificar ou alterar usuários e grupos nesta aba pode ocasionar perda de dados!';
 $wb['groups_txt'] = 'Grupos';
+$wb['add_new_record_txt'] = 'Adicionar novo usuário';
+$wb['warning_txt'] = '<b>ALERTA:</b> Não editar ou alterar qualquer configuração de usuário aqui. Use o módulo de clientes e revendas para isso. Editar ou alterar usuários ou grupos aqui pode causar perda de dados!';
 ?>
diff --git a/interface/web/admin/lib/lang/tr.lng b/interface/web/admin/lib/lang/tr.lng
index 23dbc45a49..9b0dfc59ec 100644
--- a/interface/web/admin/lib/lang/tr.lng
+++ b/interface/web/admin/lib/lang/tr.lng
@@ -1,20 +1,26 @@
 <?php
 $wb['1001'] = 'Kullanıcı adı ya da parola boş.';
 $wb['1002'] = 'Kullanıcı adı ya da parola hatalı.';
+
 $wb['Groups'] = 'Gruplar';
 $wb['groups_description'] = 'Sistem kullanıcısı gruplarını düzenleme formu.';
+
 $wb['Servers'] = 'Sunucular';
 $wb['Config'] = 'Ayarlar';
-$wb['Add user'] = 'Kullanıcı ekle';
-$wb['Edit user'] = 'Kullanıcıyı düzenle';
-$wb['Add group'] = 'Grup ekle';
-$wb['Edit group'] = 'Grubu düzenle';
-$wb['Edit server'] = 'Sunucuyu düzenle';
-$wb['Sync. Now'] = 'Åžimdi EÅŸleÅŸtir';
-$wb['DB Sync.'] = 'Veritabanı Eşleştirme';
+
+$wb['Add user'] = 'Kullanıcı Ekle';
+$wb['Edit user'] = 'Kullanıcıyı Düzenle';
+$wb['Add group'] = 'Grup Ekle';
+$wb['Edit group'] = 'Grubu Düzenle';
+$wb['Edit server'] = 'Sunucuyu Düzenle';
+
+$wb['Sync. Now'] = 'Åžimdi EÅŸitle';
+$wb['DB Sync.'] = 'Veritabanı Eşitleme';
+
 $wb['User Management'] = 'Kullanıcı Yönetimi';
 $wb['CP Users'] = 'Panel Kullanıcıları';
 $wb['Remote Users'] = 'Uzak Kullanıcılar';
+
 $wb['System'] = 'Sistem';
 $wb['Server Services'] = 'Sunucu Hizmetleri';
 $wb['Services'] = 'Hizmetler';
@@ -28,25 +34,29 @@ $wb['Jailkit'] = 'Jailkit';
 $wb['Rescue'] = 'Kurtarma';
 $wb['Server IP addresses'] = 'Sunucu IP Adresleri';
 $wb['Additional PHP Versions'] = 'Diğer PHP Sürümleri';
-$wb['Directive Snippets'] = 'Yönerge Parçacıkları';
+$wb['Directive Snippets'] = 'Yönerge Kod Parçaları';
 $wb['Firewall'] = 'Güvenlik Duvarı';
+
 $wb['Interface'] = 'Arayüz';
 $wb['Interface Config'] = 'Temel Ayarlar';
+$wb['Sites'] = 'Siteler';
+$wb['DNS'] = 'DNS';
 $wb['Domains'] = 'Alan Adları';
 $wb['Misc'] = 'Çeşitli';
+
 $wb['Software'] = 'Uygulama ve Eklentiler';
 $wb['Repositories'] = 'Depolar';
 $wb['Packages'] = 'Paketler';
 $wb['Updates'] = 'Güncellemeler';
+
 $wb['Language Editor'] = 'Dil Ä°ÅŸlemleri';
 $wb['Languages'] = 'Dil Dosyaları';
 $wb['New Language'] = 'Dil Ekleme';
 $wb['Merge'] = 'Dil BirleÅŸtirme';
 $wb['Export'] = 'Dil Ä°ndirme';
 $wb['Import'] = 'Dil Yükleme';
+
 $wb['Remote Actions'] = 'Uzak Ä°ÅŸlemler';
 $wb['Do OS-Update'] = 'İşletim Sistemi Güncelleme';
 $wb['Do ISPConfig-Update'] = 'ISPConfig Güncelleme';
-$wb['Sites'] = 'Sites';
-$wb['DNS'] = 'DNS';
 ?>
diff --git a/interface/web/admin/lib/lang/tr_directive_snippets.lng b/interface/web/admin/lib/lang/tr_directive_snippets.lng
index f503486528..448d453672 100644
--- a/interface/web/admin/lib/lang/tr_directive_snippets.lng
+++ b/interface/web/admin/lib/lang/tr_directive_snippets.lng
@@ -1,12 +1,12 @@
 <?php
-$wb['Directive Snippets'] = 'Yönerge Parçacıkları';
-$wb['name_txt'] = 'Parçacık Adı';
-$wb['type_txt'] = 'Tip';
-$wb['snippet_txt'] = 'Parçacık';
+$wb['Directive Snippets'] = 'Yönerge Kod Parçaları';
+$wb['name_txt'] = 'Kod Parçası Adı';
+$wb['type_txt'] = 'Tür';
+$wb['snippet_txt'] = 'Kod Parçası';
 $wb['active_txt'] = 'Etkin';
-$wb['directive_snippets_name_empty'] = 'Parçacık adı boş olamaz.';
-$wb['directive_snippets_name_error_unique'] = 'Aynı adlı bir yönerge parçacığı zaten var.';
+$wb['directive_snippets_name_empty'] = 'Kod Parçası adı boş olamaz.';
+$wb['directive_snippets_name_error_unique'] = 'Aynı adlı bir yönerge kod parçası zaten var.';
 $wb['variables_txt'] = 'DeÄŸiÅŸkenler';
-$wb['customer_viewable_txt'] = 'Customer viewable';
-$wb['required_php_snippets_txt'] = 'Requiered PHP Snippet';
+$wb['customer_viewable_txt'] = 'Müşteri görebilir';
+$wb['required_php_snippets_txt'] = 'Gerekli PHP Parçası';
 ?>
diff --git a/interface/web/admin/lib/lang/tr_directive_snippets_list.lng b/interface/web/admin/lib/lang/tr_directive_snippets_list.lng
index 766a194dc1..4a1fb954a5 100644
--- a/interface/web/admin/lib/lang/tr_directive_snippets_list.lng
+++ b/interface/web/admin/lib/lang/tr_directive_snippets_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['list_head_txt'] = 'Yönerge Parçacıkları';
+$wb['list_head_txt'] = 'Yönerge Kod Parçaları';
 $wb['active_txt'] = 'Etkin';
-$wb['name_txt'] = 'Parçacık Adı';
-$wb['type_txt'] = 'Tip';
-$wb['add_new_record_txt'] = 'Yönerge Parçacığı Ekle';
-$wb['customer_viewable_txt'] = 'Customer viewable';
+$wb['name_txt'] = 'Kod Parçası Adı';
+$wb['type_txt'] = 'Tür';
+$wb['add_new_record_txt'] = 'Yönerge Kod Parçası Ekle';
+$wb['customer_viewable_txt'] = 'Müşteri Görebilsin';
 ?>
diff --git a/interface/web/admin/lib/lang/tr_firewall.lng b/interface/web/admin/lib/lang/tr_firewall.lng
index a45998d4e1..9e853c7bde 100644
--- a/interface/web/admin/lib/lang/tr_firewall.lng
+++ b/interface/web/admin/lib/lang/tr_firewall.lng
@@ -6,6 +6,7 @@ $wb['tcp_port_help_txt'] = 'Virgül ile ayırarak yazın';
 $wb['udp_port_help_txt'] = 'Virgül ile ayırarak yazın';
 $wb['active_txt'] = 'Etkin';
 $wb['firewall_error_unique'] = 'Bu sunucu için bir güvenlik duvarı kaydı zaten var.';
-$wb['tcp_ports_error_regex'] = 'TCP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, \\":\\" ve \\",\\" karakterleri kullanılabilir.';
-$wb['udp_ports_error_regex'] = 'UDP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, \\":\\" ve \\",\\" karakterleri kullanılabilir.';
+$wb['active_txt'] = 'Etkin';
+$wb['tcp_ports_error_regex'] = 'TCP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, ":" ve "," karakterleri kullanılabilir.';
+$wb['udp_ports_error_regex'] = 'UDP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, ":" ve "," karakterleri kullanılabilir.';
 ?>
diff --git a/interface/web/admin/lib/lang/tr_groups.lng b/interface/web/admin/lib/lang/tr_groups.lng
index d41fcace9d..4bf60a284b 100644
--- a/interface/web/admin/lib/lang/tr_groups.lng
+++ b/interface/web/admin/lib/lang/tr_groups.lng
@@ -1,5 +1,5 @@
 <?php
 $wb['description_txt'] = 'Açıklama';
 $wb['name_txt'] = 'Grup';
-$wb['name_err'] = 'Grup 1-30 karakter arasında olmalı.';
+$wb['name_err'] = 'Grup 1 ile 30 karakter arasında olmalı.';
 ?>
diff --git a/interface/web/admin/lib/lang/tr_iptables.lng b/interface/web/admin/lib/lang/tr_iptables.lng
index dcec556485..970bc23931 100644
--- a/interface/web/admin/lib/lang/tr_iptables.lng
+++ b/interface/web/admin/lib/lang/tr_iptables.lng
@@ -1,4 +1,5 @@
 <?php
+
 $wb['server_id_txt'] = 'Sunucu';
 $wb['multiport_txt'] = 'Çok Kapı';
 $wb['singleport_txt'] = 'Tek Kapı';
@@ -10,4 +11,5 @@ $wb['destination_ip_txt'] = 'Hedef Adresi';
 $wb['source_ip_txt'] = 'Kaynak Adresi';
 $wb['active_txt'] = 'Etkin';
 $wb['iptables_error_unique'] = 'Bu sunucu için zaten bir güvenlik duvarı kaydı var.';
+
 ?>
diff --git a/interface/web/admin/lib/lang/tr_iptables_list.lng b/interface/web/admin/lib/lang/tr_iptables_list.lng
index a884ef7f78..ba8a1345fe 100644
--- a/interface/web/admin/lib/lang/tr_iptables_list.lng
+++ b/interface/web/admin/lib/lang/tr_iptables_list.lng
@@ -1,4 +1,5 @@
 <?php
+
 $wb['list_head_txt'] = 'IPTables';
 $wb['add_new_rule_txt'] = 'IPTables Kuralı Ekle';
 $wb['server_id_txt'] = 'Sunucu';
@@ -12,4 +13,5 @@ $wb['destination_ip_txt'] = 'Hedef Adresi';
 $wb['source_ip_txt'] = 'Kaynak Adresi';
 $wb['active_txt'] = 'Etkin';
 $wb['iptables_error_unique'] = 'Bu sunucu için zaten bir güvenlik duvarı kaydı var.';
+
 ?>
diff --git a/interface/web/admin/lib/lang/tr_language_import.lng b/interface/web/admin/lib/lang/tr_language_import.lng
index 581fcb5974..be319837dd 100644
--- a/interface/web/admin/lib/lang/tr_language_import.lng
+++ b/interface/web/admin/lib/lang/tr_language_import.lng
@@ -3,7 +3,7 @@ $wb['list_head_txt'] = 'Dil Paketi Yükleme';
 $wb['list_desc_txt'] = 'UYARI: Güvenilmeyen kaynaklardan aldığınız dil paketlerini yüklemeyin.';
 $wb['language_import_txt'] = 'Yüklenecek Dil Dosyası';
 $wb['btn_save_txt'] = 'Dil Paketini Yükle';
-$wb['language_overwrite_txt'] = 'Var olan dosyaları değiştir';
+$wb['language_overwrite_txt'] = 'Var Olan Dosyalar DeÄŸiÅŸtirilsin';
 $wb['btn_cancel_txt'] = 'Geri';
-$wb['ignore_version_txt'] = 'ISPConfig sürümüne bakma';
+$wb['ignore_version_txt'] = 'ISPConfig Sürümü Denetlenmesin';
 ?>
diff --git a/interface/web/admin/lib/lang/tr_login_as.lng b/interface/web/admin/lib/lang/tr_login_as.lng
new file mode 100644
index 0000000000..b7fc8ff987
--- /dev/null
+++ b/interface/web/admin/lib/lang/tr_login_as.lng
@@ -0,0 +1,12 @@
+<?php
+$wb['login_1_txt'] = 'Bu kullanıcı olarak oturum açmak ister misiniz';
+$wb['login_2_txt'] = '"Geri dönmek" için oturumu kapat üzerine tıklayın.';
+$wb['btn_yes_txt'] = 'Evet, Müşteri olarak oturum aç';
+$wb['btn_back_txt'] = 'Hayır, listeye geri dön';
+$wb['udp_port_help_txt'] = 'Virgül ile ayırarak yazın';
+$wb['active_txt'] = 'Etkin';
+$wb['firewall_error_unique'] = 'Bu sunucu için bir güvenlik duvarı kaydı zaten var.';
+$wb['active_txt'] = 'Etkin';
+$wb['tcp_ports_error_regex'] = 'TCP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, ":" ve "," karakterleri kullanılabilir.';
+$wb['udp_ports_error_regex'] = 'UDP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, ":" ve "," karakterleri kullanılabilir.';
+?>
diff --git a/interface/web/admin/lib/lang/tr_remote_action.lng b/interface/web/admin/lib/lang/tr_remote_action.lng
index c067f67e88..b2ed0a6da7 100644
--- a/interface/web/admin/lib/lang/tr_remote_action.lng
+++ b/interface/web/admin/lib/lang/tr_remote_action.lng
@@ -1,12 +1,12 @@
 <?php
 $wb['select_server_txt'] = 'Sunucu Seçin';
-$wb['btn_do_txt'] = 'İşlemi Başlatın';
-$wb['do_osupdate_caption'] = 'Uzak sunucudaki işletim sistemini güncelleyin';
-$wb['do_osupdate_desc'] = 'Bu işlem seçilmiş sunucuda \\"aptitude -y upgrade\\" komutunu yürütür.<br><br><strong>OLUŞABİLECEK RİSKLER SİZE AİTTİR!</strong>';
-$wb['do_ispcupdate_caption'] = 'Uzak sunucudaki ISPConfig 3 - sürümünü güncelleyin';
+$wb['btn_do_txt'] = 'Ä°ÅŸlemi BaÅŸlat';
+$wb['do_osupdate_caption'] = 'Uzak sunucudaki işletim sistemini güncelle';
+$wb['do_osupdate_desc'] = 'Bu işlem seçilmiş sunucuda  komutunu yürütür.<br><br><strong>OLUŞABİLECEK RİSKLER SİZE AİTTİR!</strong>';
+$wb['do_ispcupdate_caption'] = 'Uzak sunucudaki ISPConfig 3 - sürümünü güncelle';
 $wb['do_ispcupdate_desc'] = 'Bu işlem seçilmiş sunucuda ISPConfig3 güncellemesini yürütür.<br><br><strong>OLUŞABİLECEK RİSKLER SÜZE AİTTİR!</strong>';
 $wb['action_scheduled'] = 'İşlem yürütülmek üzere zamanlandı';
 $wb['select_all_server'] = 'Tüm Sunucularda';
 $wb['ispconfig_update_title'] = 'ISPConfig güncelleme yönergeleri';
-$wb['ispconfig_update_text'] = 'Sunucunuzda root kullanıcısı ile bir kabuk oturumu açın ve ISPConfig güncellemesini başlatmak için<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />komutunu yürütün.<br /><br /><a href=\\"http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/\\" target=\\"_blank\\">Ayrıntılı güncelleme bilgilerine bakmak için buraya tıklayın</a>';
+$wb['ispconfig_update_text'] = 'Sunucunuzda root kullanıcısı ile bir kabuk oturumu açın ve ISPConfig güncellemesini başlatmak için<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />komutunu yürütün.<br /><br /><a href= target=>Ayrıntılı güncelleme bilgilerine bakmak için buraya tıklayın</a>';
 ?>
diff --git a/interface/web/admin/lib/lang/tr_remote_user.lng b/interface/web/admin/lib/lang/tr_remote_user.lng
index d9e11f8308..a713cad0d4 100644
--- a/interface/web/admin/lib/lang/tr_remote_user.lng
+++ b/interface/web/admin/lib/lang/tr_remote_user.lng
@@ -1,37 +1,37 @@
 <?php
-$wb['username_txt'] = 'Kullanıcı adı:';
+$wb['username_txt'] = 'Kullanıcı Adı:';
 $wb['password_txt'] = 'Parola:';
 $wb['function_txt'] = 'Ä°ÅŸlevler:';
 $wb['username_error_unique'] = 'Bu kullanıcı adı zaten var';
 $wb['username_error_empty'] = 'Kullanıcı adı boş olamaz';
 $wb['password_error_empty'] = 'Parola boÅŸ olamaz';
-$wb['password_strength_txt'] = 'Parola Güçlüğü:';
-$wb['Mail domain functions'] = 'Posta alan adı işlevleri';
-$wb['Mail mailing list functions'] = 'Posta posta listesi iÅŸlevleri';
-$wb['Mail user functions'] = 'Posta kullanıcı işlevleri';
-$wb['Mail alias functions'] = 'Posta takma ad iÅŸlevleri';
-$wb['Mail forward functions'] = 'Posta yönlendirme işlevleri';
-$wb['Mail catchall functions'] = 'Posta tümünü al işlevleri';
-$wb['Mail transport functions'] = 'Posta aktarım işlevleri';
-$wb['Mail whitelist functions'] = 'Posta beyaz liste iÅŸlevleri';
-$wb['Mail blacklist functions'] = 'Posta kara liste iÅŸlevleri';
-$wb['Mail spamfilter user functions'] = 'Posta önemsiz posta süzgeci kullanıcı işlevleri';
-$wb['Mail spamfilter policy functions'] = 'Posta önemsiz posta süzgeci kuralları işlevleri';
-$wb['Mail fetchmail functions'] = 'Posta posta alma iÅŸlevleri';
-$wb['Mail user filter functions'] = 'Posta kullanıcı ve süzgeç işlevleri';
-$wb['Mail filter functions'] = 'Posta süzgeç işlevleri';
+$wb['password_strength_txt'] = 'Parola ZorluÄŸu:';
+$wb['Mail domain functions'] = 'E-posta etki alanı işlevleri';
+$wb['Mail mailing list functions'] = 'E-posta e-posta listesi iÅŸlevleri';
+$wb['Mail user functions'] = 'E-posta kullanıcı işlevleri';
+$wb['Mail alias functions'] = 'E-posta takma ad iÅŸlevleri';
+$wb['Mail forward functions'] = 'E-posta yönlendirme işlevleri';
+$wb['Mail catchall functions'] = 'E-posta tümünü al işlevleri';
+$wb['Mail transport functions'] = 'E-posta aktarım işlevleri';
+$wb['Mail whitelist functions'] = 'E-posta beyaz liste iÅŸlevleri';
+$wb['Mail blacklist functions'] = 'E-posta kara liste iÅŸlevleri';
+$wb['Mail spamfilter user functions'] = 'E-posta önemsiz ileti süzgeci kullanıcı işlevleri';
+$wb['Mail spamfilter policy functions'] = 'E-posta önemsiz ileti süzgeci kuralları işlevleri';
+$wb['Mail fetchmail functions'] = 'E-posta e-posta alma iÅŸlevleri';
+$wb['Mail user filter functions'] = 'E-posta kullanıcı ve süzgeç işlevleri';
+$wb['Mail filter functions'] = 'E-posta süzgeç işlevleri';
 $wb['Client functions'] = 'Müşteri işlevleri';
 $wb['Sites cron functions'] = 'Sitelerin zamanlanmış görev işlevleri';
 $wb['Sites database functions'] = 'Sitelerin veritabanı işlevleri';
 $wb['Sites FTP-User functions'] = 'Sitelerin FTP kullanıcısı işlevleri';
 $wb['Sites Shell-User functions'] = 'Sitelerin kabuk kullanıcısı işlevleri';
-$wb['Sites Domain functions'] = 'Sitelerin alan adı işlevleri';
-$wb['Sites Aliasdomain functions'] = 'Sitelerin takma alan adı işlevleri';
-$wb['Sites Subdomain functions'] = 'Sitelerin alt alan adı işlevleri';
+$wb['Sites Domain functions'] = 'Sitelerin etki alanı işlevleri';
+$wb['Sites Aliasdomain functions'] = 'Sitelerin takma etki alanı işlevleri';
+$wb['Sites Subdomain functions'] = 'Sitelerin alt etki alanı işlevleri';
 $wb['DNS zone functions'] = 'DNS bölgesi işlevleri';
 $wb['DNS a functions'] = 'DNS a iÅŸlevleri';
 $wb['DNS aaaa functions'] = 'DNS aaaa iÅŸlevleri';
-$wb['DNS alias functions'] = 'DNS takma ad iÅŸlevleri';
+$wb['DNS alias functions'] = 'DNS alias iÅŸlevleri';
 $wb['DNS cname functions'] = 'DNS cname iÅŸlevleri';
 $wb['DNS hinfo functions'] = 'DNS hinfo iÅŸlevleri';
 $wb['DNS mx functions'] = 'DNS mx iÅŸlevleri';
@@ -40,11 +40,11 @@ $wb['DNS ptr functions'] = 'DNS ptr iÅŸlevleri';
 $wb['DNS rp functions'] = 'DNS rp iÅŸlevleri';
 $wb['DNS srv functions'] = 'DNS srv iÅŸlevleri';
 $wb['DNS txt functions'] = 'DNS txt iÅŸlevleri';
-$wb['generate_password_txt'] = 'Parola OluÅŸtur';
+$wb['generate_password_txt'] = 'Parola Ãœret';
 $wb['repeat_password_txt'] = 'Parola Onayı';
 $wb['password_mismatch_txt'] = 'Parola ile onayı aynı değil.';
 $wb['password_match_txt'] = 'Parola ile onayı aynı.';
-$wb['remote_access_txt'] = 'Remote Access';
-$wb['remote_ips_txt'] = 'Remote Access IPs / Hostnames (separate by , and leave blank for <i>any</i>)';
-$wb['remote_user_error_ips'] = 'At least one of the entered ip addresses or hostnames is invalid.';
+$wb['remote_access_txt'] = 'Uzaktan EriÅŸim';
+$wb['remote_ips_txt'] = 'Uzaktan Erişim IP Adresleri / Sunucu Adları (, ile ayırarak yazın ve <i>tümü</i> için boş bırakın)';
+$wb['remote_user_error_ips'] = 'Yazılmış IP adresi ya da sunucu adlarından en az biri geçersiz.';
 ?>
diff --git a/interface/web/admin/lib/lang/tr_server.lng b/interface/web/admin/lib/lang/tr_server.lng
index 61e0b7dd6b..bdc70761e1 100644
--- a/interface/web/admin/lib/lang/tr_server.lng
+++ b/interface/web/admin/lib/lang/tr_server.lng
@@ -1,16 +1,16 @@
 <?php
 $wb['config_txt'] = 'Ayarlar';
 $wb['server_name_txt'] = 'Sunucu Adı';
-$wb['mail_server_txt'] = 'Posta Sunucusu';
+$wb['mail_server_txt'] = 'E-posta Sunucusu';
 $wb['web_server_txt'] = 'Web Sunucusu';
 $wb['dns_server_txt'] = 'DNS Sunucusu';
 $wb['file_server_txt'] = 'Dosya Sunucusu';
 $wb['db_server_txt'] = 'Veritabanı Sunucusu';
-$wb['vserver_server_txt'] = 'SSunucu Sunucusu';
+$wb['vserver_server_txt'] = 'sSunucu Sunucusu';
 $wb['proxy_server_txt'] = 'Vekil Sunucu';
 $wb['firewall_server_txt'] = 'Güvenlik Duvarı Sunucusu';
 $wb['active_txt'] = 'Etkin';
 $wb['mirror_server_id_txt'] = 'Sunucunun Yansısı';
 $wb['- None -'] = '- Hiçbiri -';
-$wb['xmpp_server_txt'] = 'XMPP Server';
+$wb['xmpp_server_txt'] = 'XMPP Sunucusu';
 ?>
diff --git a/interface/web/admin/lib/lang/tr_server_config.lng b/interface/web/admin/lib/lang/tr_server_config.lng
index efe24bf3a4..3b63e881f9 100644
--- a/interface/web/admin/lib/lang/tr_server_config.lng
+++ b/interface/web/admin/lib/lang/tr_server_config.lng
@@ -13,13 +13,13 @@ $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chroot Uygulamaları';
 $wb['jailkit_chroot_cron_programs_txt'] = 'Jailkit Zamanlanmış Görev chroot Uygulamaları';
 $wb['website_path_txt'] = 'Web Sitesi Yolu';
 $wb['website_symlinks_txt'] = 'Web Sitesi Sembolik Bağlantıları';
-$wb['website_symlinks_rel_txt'] = 'Sembolik Bağlantılar Bağıl Olsun';
+$wb['website_symlinks_rel_txt'] = 'Sembolik Bağlantılar Göreli Olsun';
 $wb['website_basedir_txt'] = 'Web Sitesi Klasörü';
 $wb['website_autoalias_txt'] = 'Otomatik Web Sitesi Takma Adı';
 $wb['website_autoalias_note_txt'] = 'Kodlar:';
-$wb['vhost_conf_dir_txt'] = 'SSunucu Ayar Klasörü';
-$wb['vhost_conf_enabled_dir_txt'] = 'Etkin SSunucu Ayar Klasörü';
-$wb['getmail_config_dir_txt'] = 'Getmail Ayar Klasörü';
+$wb['vhost_conf_dir_txt'] = 'Sanal Sunucu Ayarları Klasörü';
+$wb['vhost_conf_enabled_dir_txt'] = 'Etkin Sanal Sunucu Ayarları Klasörü';
+$wb['getmail_config_dir_txt'] = 'Getmail Ayarları Klasörü';
 $wb['fastcgi_starter_path_txt'] = 'FastCGI Başlatıcı Yolu';
 $wb['fastcgi_starter_script_txt'] = 'FastCGI Başlatıcı Betiği';
 $wb['fastcgi_alias_txt'] = 'FastCGI Takma Adı';
@@ -28,16 +28,24 @@ $wb['fastcgi_children_txt'] = 'FastCGI Çocuğu';
 $wb['fastcgi_max_requests_txt'] = 'FastCGI En Fazla Ä°stek';
 $wb['fastcgi_bin_txt'] = 'FastCGI Bin';
 $wb['module_txt'] = 'Modül';
-$wb['maildir_path_txt'] = 'Posta Klasörü Yolu';
+$wb['maildir_path_txt'] = 'E-posta Klasörü Yolu';
+$wb['maildir_format_txt'] = 'E-posta Klasörü Biçimi';
 $wb['homedir_path_txt'] = 'Kullanıcı Klasörü Yolu';
-$wb['mailuser_uid_txt'] = 'Posta Kullanıcısı UID';
-$wb['mailuser_gid_txt'] = 'Posta Kullanıcısı GID';
-$wb['mailuser_name_txt'] = 'Posta Kullanıcısı Adı';
-$wb['mailuser_group_txt'] = 'Posta Kullanıcısı Grubu';
+$wb['dkim_path_txt'] = 'DKIM Yolu';
+$wb['mailuser_uid_txt'] = 'E-posta Kullanıcısı UID';
+$wb['mailuser_gid_txt'] = 'E-posta Kullanıcısı GID';
+$wb['mailuser_name_txt'] = 'E-posta Kullanıcısı Adı';
+$wb['mailuser_group_txt'] = 'E-posta Kullanıcısı Grubu';
+$wb['mailbox_virtual_uidgid_maps_txt'] = 'E-posta Kutusunda Web Sitesinin Linux Kullanıcı Kodu Kullanılsın';
+$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'Yalnız tek bir web ve e-posta sunucusu kurulumunda';
+$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Çoklu sunucu kurulumunda UID eşleştirilemez.';
+$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'UID eşleştirmesi yalnız dovecot ile kullanılabilir.';
+$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Daha önce oluşturulmuş e-posta kullanıcıları varsa UID eşleştirme değiştirilemez.';
 $wb['relayhost_txt'] = 'Aktarım Sunucusu';
 $wb['relayhost_user_txt'] = 'Aktarım Sunucu Kullanıcı Adı';
 $wb['relayhost_password_txt'] = 'Aktarım Sunucu Parolası';
-$wb['mailbox_size_limit_txt'] = 'Posta Kutusu Boyutu Sınırı';
+$wb['reject_sender_login_mismatch_txt'] = 'Gönderen ile Oturum Açmış Kullanıcı Eşleşmiyorsa Reddedilsin';
+$wb['mailbox_size_limit_txt'] = 'E-posta Kutusu Boyutu Sınırı';
 $wb['message_size_limit_txt'] = 'İleti Boyutu Sınırı';
 $wb['ip_address_txt'] = 'IP Adresi';
 $wb['netmask_txt'] = 'AÄŸ Maskesi';
@@ -51,69 +59,73 @@ $wb['gateway_error_wrong'] = 'Ağ geçidi biçimi geçersiz.';
 $wb['hostname_error_empty'] = 'Sunucu adı boş olamaz.';
 $wb['hostname_error_regex'] = 'Sunucu adı geçersiz.';
 $wb['nameservers_error_empty'] = 'Ad sunucusu boÅŸ olamaz.';
-$wb['config_dir_txt'] = 'Ayar Klasörü';
+$wb['config_dir_txt'] = 'Ayarlar Klasörü';
 $wb['init_script_txt'] = 'Zamanlanmış Görev Başlatma Betiğinin Adı';
 $wb['crontab_dir_txt'] = 'Bireysel Zamanlanmış Görevler Yolu';
-$wb['wget_txt'] = 'wget Yazılımının Yolu';
+$wb['wget_txt'] = 'wget Uygulamasının Yolu';
 $wb['web_user_txt'] = 'Apache Kullanıcı Adı';
 $wb['web_group_txt'] = 'Apache Grubu';
 $wb['security_level_txt'] = 'Güvenlik Düzeyi';
 $wb['loglevel_txt'] = 'Günlükleme Düzeyi';
-$wb['apps_vhost_port_txt'] = 'Apps-vhost Kapısı';
-$wb['apps_vhost_ip_txt'] = 'Apps-vhost IP Adresi';
-$wb['apps_vhost_servername_txt'] = 'Apps-vhost Alan Adı';
+$wb['apps_vhost_port_txt'] = 'Uygulama Sanal Sunucusu Kapısı';
+$wb['apps_vhost_ip_txt'] = 'Uygulama Sanal Sunucusu IP Adresi';
+$wb['apps_vhost_servername_txt'] = 'Uygulama Sanal Sunucusu Etki Alanı';
 $wb['bind_user_txt'] = 'BIND Kullanıcı Adı';
 $wb['bind_group_txt'] = 'BIND Grubu';
-$wb['bind_zonefiles_dir_txt'] = 'BIND zonefiles Klasörü';
+$wb['bind_zonefiles_dir_txt'] = 'BIND Bölge Dosyaları Klasörü';
 $wb['named_conf_path_txt'] = 'BIND named.conf Dosyası Yolu';
 $wb['bind_user_error_empty'] = 'BIND kullanıcı adı boş olamaz.';
 $wb['bind_group_error_empty'] = 'BIND grubu boÅŸ olamaz.';
-$wb['bind_zonefiles_dir_error_empty'] = 'BIND zonefiles klasörü boş olamaz.';
+$wb['bind_zonefiles_dir_error_empty'] = 'BIND bölge dosyaları klasörü boş olamaz.';
 $wb['named_conf_path_error_empty'] = 'BIND named.conf dosyası yolu boş olamaz.';
 $wb['named_conf_local_path_error_empty'] = 'BIND named.conf.local dosyasının yolu boş olamaz.';
-$wb['mail_filter_syntax_txt'] = 'Posta Süzgeci Yazımı';
+$wb['mail_filter_syntax_txt'] = 'E-posta Süzgeci Yazımı';
 $wb['pop3_imap_daemon_txt'] = 'POP3/IMAP Sunucusu';
 $wb['php_open_basedir_txt'] = 'PHP open_basedir';
 $wb['php_open_basedir_error_empty'] = 'PHP open_basedir boÅŸ olamaz.';
 $wb['htaccess_allow_override_txt'] = '.htaccess AllowOverride';
 $wb['htaccess_allow_override_error_empty'] = '.htaccess AllowOverride boÅŸ olamaz.';
-$wb['awstats_conf_dir_txt'] = 'Awstats Ayar Klasörü';
+$wb['awstats_conf_dir_txt'] = 'Awstats Ayarları Klasörü';
 $wb['awstats_data_dir_txt'] = 'Awstats Veri Klasörü';
 $wb['awstats_pl_txt'] = 'awstats.pl BetiÄŸi';
 $wb['awstats_buildstaticpages_pl_txt'] = 'awstats_buildstaticpages.pl BetiÄŸi';
 $wb['backup_dir_txt'] = 'Yedek Klasörü';
+$wb['backup_tmp_txt'] = 'Geçici Zip Yedek Klasörü';
 $wb['named_conf_local_path_txt'] = 'BIND named.conf.local Yolu';
 $wb['php_ini_path_cgi_txt'] = 'CGI php.ini Yolu';
 $wb['php_ini_path_apache_txt'] = 'Apache php.ini Yolu';
-$wb['check_apache_config_txt'] = 'Yeniden başlatıldığında apache ayarları denetlensin';
-$wb['network_config_warning_txt'] = 'Ağ ayarlama seçeneği yalnız Debian ve Ubuntu sunucularda kullanılabilir. Ağ arayüzünüz eth0 değil ise bu seçeneği etkinleştirmeyin.';
+$wb['check_apache_config_txt'] = 'Apache Ayarları Yeniden Başlatmalarda Denetlensin';
+$wb['network_config_warning_txt'] = 'Ağ ayarlama seçeneği yalnız Debian ve Ubuntu sunucularda kullanılabilir. Ağ arayüzü eth0 değil ise bu seçeneği etkinleştirmeyin.';
 $wb['CA_path_txt'] = 'CA Yolu';
-$wb['CA_pass_txt'] = 'CA parolası';
+$wb['CA_pass_txt'] = 'CA Parolası';
 $wb['fastcgi_config_syntax_txt'] = 'FastCGI Ayar Yazımı';
 $wb['backup_mode_txt'] = 'Yedekleme Kipi';
 $wb['backup_mode_userzip'] = 'Web kullanıcısına ait web dosyaları ZIP biçiminde yedeklensin';
 $wb['backup_mode_rootgz'] = 'Web klasöründeki tüm dosyalar root kullanıcısı olarak yedeklensin';
-$wb['server_type_txt'] = 'Sunucu Tipi';
-$wb['nginx_vhost_conf_dir_txt'] = 'Nginx Vhost ayar klasörü';
-$wb['nginx_vhost_conf_enabled_dir_txt'] = 'Nginx Vhost etkin ayar klasörü';
+$wb['tmpdir_path_error_empty'] = 'tmp klasörü yolu boş olamaz.';
+$wb['tmpdir_path_error_regex'] = 'tmp klasörü yolu geçersiz.';
+$wb['backup_time_txt'] = 'Yedekleme Zamanı';
+$wb['server_type_txt'] = 'Sunucu Türü';
+$wb['nginx_vhost_conf_dir_txt'] = 'Nginx Sanal Sunucu Ayarları Klasörü';
+$wb['nginx_vhost_conf_enabled_dir_txt'] = 'Etkin Nginx sanal sunucu ayarları klasörü';
 $wb['nginx_user_txt'] = 'Nginx kullanıcı adı';
 $wb['nginx_group_txt'] = 'Nginx grubu';
 $wb['nginx_cgi_socket_txt'] = 'Nginx CGI Soketi';
 $wb['backup_dir_error_empty'] = 'Yedekleme klasörü boş olamaz.';
-$wb['maildir_path_error_empty'] = 'Posta klasörü yolu boş olamaz.';
+$wb['maildir_path_error_empty'] = 'E-posta klasörü yolu boş olamaz.';
 $wb['homedir_path_error_empty'] = 'Kullanıcı klasörü yolu boş olamaz.';
-$wb['mailuser_uid_error_empty'] = 'Posta kullanıcısı UID boş olamaz.';
-$wb['mailuser_gid_error_empty'] = 'Posta kullanıcısı GID boş olamaz.';
-$wb['mailuser_name_error_empty'] = 'Posta kullanıcısı adı boş olamaz.';
-$wb['mailuser_group_error_empty'] = 'Posta kullanıcısı grubu boş olamaz.';
-$wb['getmail_config_dir_error_empty'] = 'Getmail ayar klasörü boş olamaz.';
+$wb['mailuser_uid_error_empty'] = 'E-posta kullanıcısı UID boş olamaz.';
+$wb['mailuser_gid_error_empty'] = 'E-posta kullanıcısı GID boş olamaz.';
+$wb['mailuser_name_error_empty'] = 'E-posta kullanıcısı adı boş olamaz.';
+$wb['mailuser_group_error_empty'] = 'E-posta kullanıcısı grubu boş olamaz.';
+$wb['getmail_config_dir_error_empty'] = 'Getmail ayarları klasörü boş olamaz.';
 $wb['website_basedir_error_empty'] = 'Web sitesi kök klasörü boş olamaz.';
 $wb['website_path_error_empty'] = 'Web sitesi yolu boÅŸ olamaz.';
 $wb['website_symlinks_error_empty'] = 'Web sitesi sembolik bağlantısı boş olamaz.';
-$wb['vhost_conf_dir_error_empty'] = 'Vhost ayar klasörü boş olamaz.';
-$wb['vhost_conf_enabled_dir_error_empty'] = 'Vhost etkin ayar klasörü boş olamaz.';
-$wb['nginx_vhost_conf_dir_error_empty'] = 'Nginx Vhost ayar klasörü boş olamaz.';
-$wb['nginx_vhost_conf_enabled_dir_error_empty'] = 'Nginx Vhost etkin ayar klasörü boş olamaz.';
+$wb['vhost_conf_dir_error_empty'] = 'Sanal sunucu ayarları klasörü boş olamaz.';
+$wb['vhost_conf_enabled_dir_error_empty'] = 'Etkin sanal sunucu ayarları klasörü boş olamaz.';
+$wb['nginx_vhost_conf_dir_error_empty'] = 'Nginx sanal sunucu ayarları klasörü boş olamaz.';
+$wb['nginx_vhost_conf_enabled_dir_error_empty'] = 'Etkin nginx sanal sunucu ayarları klasörü boş olamaz.';
 $wb['apache_user_error_empty'] = 'Apache kullanıcısı boş olamaz.';
 $wb['apache_group_error_empty'] = 'Apache grubu boÅŸ olamaz.';
 $wb['nginx_user_error_empty'] = 'Nginx kullanıcısı boş olamaz.';
@@ -121,8 +133,8 @@ $wb['nginx_group_error_empty'] = 'Nginx grubu boÅŸ olamaz.';
 $wb['php_ini_path_apache_error_empty'] = 'Apache php.ini yolu boÅŸ olamaz.';
 $wb['php_ini_path_cgi_error_empty'] = 'CGI php.ini yolu boÅŸ olamaz.';
 $wb['nginx_cgi_socket_empty'] = 'Nginx CGI soketi boÅŸ olamaz.';
-$wb['apps_vhost_port_error_empty'] = 'Apps-vhost kapısı boş olamaz.';
-$wb['apps_vhost_ip_error_empty'] = 'Apps-vhost IP adresi boÅŸ olamaz.';
+$wb['apps_vhost_port_error_empty'] = 'Uygulama sanal sunucusu kapısı boş olamaz.';
+$wb['apps_vhost_ip_error_empty'] = 'Uygulama sanal sunucusu IP adresi boÅŸ olamaz.';
 $wb['fastcgi_starter_path_error_empty'] = 'FastCGI başlatıcı yolu boş olamaz.';
 $wb['fastcgi_starter_script_error_empty'] = 'FastCGI başlatıcı betiği boş olamaz.';
 $wb['fastcgi_alias_error_empty'] = 'FastCGI takma adı boş olamaz.';
@@ -137,7 +149,7 @@ $wb['jailkit_chroot_cron_programs_error_empty'] = 'Jailkit zamanlanmış görev
 $wb['vlogger_config_dir_error_empty'] = 'Ayarlar klasörü boş olamaz.';
 $wb['cron_init_script_error_empty'] = 'Zamanlanmış görevler başlatma betiği adı boş olamaz.';
 $wb['crontab_dir_error_empty'] = 'Bireysel zamanlanmış görev yolu boş olamaz.';
-$wb['cron_wget_error_empty'] = 'wget yazılımı yolu boş olamaz.';
+$wb['cron_wget_error_empty'] = 'wget uygulaması yolu boş olamaz.';
 $wb['php_fpm_init_script_txt'] = 'PHP-FPM BaÅŸlatma BetiÄŸi';
 $wb['php_fpm_init_script_error_empty'] = 'PHP-FPM baÅŸlatma betiÄŸi boÅŸ olamaz.';
 $wb['php_fpm_ini_path_txt'] = 'PHP-FPM php.ini Yolu';
@@ -148,11 +160,12 @@ $wb['php_fpm_start_port_txt'] = 'PHP-FPM Başlangıç Kapısı';
 $wb['php_fpm_start_port_error_empty'] = 'PHP-FPM başlangıç kapısı boş olamaz.';
 $wb['php_fpm_socket_dir_txt'] = 'PHP-FPM Soket Klasörü';
 $wb['php_fpm_socket_dir_error_empty'] = 'PHP-FPM soket klasörü boş olamaz.';
-$wb['try_rescue_txt'] = 'Hizmetler izlensin ve sorun çıktığında yeniden başlatılsın';
-$wb['do_not_try_rescue_httpd_txt'] = 'HTTPD izlenmesin';
-$wb['do_not_try_rescue_mysql_txt'] = 'MySQL izlenmesin';
-$wb['do_not_try_rescue_mail_txt'] = 'E-posta izlenmesin';
-$wb['rescue_description_txt'] = '<b>Uyarı:</b> mysql sunucusunu kapatmak istiyorsanız \\"MySQL izlenmesin\\" seçeneğini işaretleyip 2-3 dakika bekleyin.<br>2-3 dakika beklemezseniz, kurtarma işlemi mysql sunucusunu yeniden başlatmaya çalışır!';
+$wb['try_rescue_txt'] = 'Hizmetler İzlensin ve Sorun Çıktığında Yeniden Başlatılsın';
+$wb['do_not_try_rescue_httpd_txt'] = 'HTTPD Ä°zlenmesin';
+$wb['do_not_try_rescue_mongodb_txt'] = 'MongoDB Ä°zlenmesin';
+$wb['do_not_try_rescue_mysql_txt'] = 'MySQL Ä°zlenmesin';
+$wb['do_not_try_rescue_mail_txt'] = 'E-posta Ä°zlenmesin';
+$wb['rescue_description_txt'] = '<b>Uyarı:</b> mysql sunucusunu kapatmak istiyorsanız "MySQL İzlenmesin" seçeneğini etkinleştirip 2-3 dakika bekleyin.<br>2-3 dakika beklemezseniz, kurtarma işlemi mysql sunucusunu yeniden başlatmaya çalışır!';
 $wb['enable_sni_txt'] = 'SNI Kullanılsın';
 $wb['set_folder_permissions_on_update_txt'] = 'Güncellenirken klasör izinleri ayarlansın';
 $wb['add_web_users_to_sshusers_group_txt'] = 'Web kullanıcıları -sshusers- grubuna eklensin';
@@ -163,20 +176,20 @@ $wb['realtime_blackhole_list_note_txt'] = '(RBL adlarını virgül ile ayırarak
 $wb['ssl_settings_txt'] = 'SSL Ayarları';
 $wb['permissions_txt'] = 'Ä°zinler';
 $wb['php_settings_txt'] = 'PHP Ayarları';
-$wb['apps_vhost_settings_txt'] = 'Uygulama SSunucu Ayarları';
+$wb['apps_vhost_settings_txt'] = 'Uygulama Sanal Sunucu Ayarları';
 $wb['awstats_settings_txt'] = 'AWStats Ayarları';
 $wb['firewall_txt'] = 'Güvenlik Duvarı';
-$wb['mailbox_quota_stats_txt'] = 'Posta Kutusu Kota Ä°statistikleri';
-$wb['enable_ip_wildcard_txt'] = 'IP genel karakteri (*) kullanılsın';
+$wb['mailbox_quota_stats_txt'] = 'E-posta Kutusu Kota Ä°statistikleri';
+$wb['enable_ip_wildcard_txt'] = 'IP Genel Karakteri (*) Kullanılsın';
 $wb['web_folder_protection_txt'] = 'Web klasörleri ayarlanamasın (genişletilmiş öznitelikler)';
-$wb['overtraffic_notify_admin_txt'] = 'Yöneticiye aşırı trafik bildirimi gönderilsin';
-$wb['overtraffic_notify_client_txt'] = 'Müşteriye aşırı trafik bildirimi gönderilsin';
+$wb['overtraffic_notify_admin_txt'] = 'Trafik Aşımı Bildirimi Yöneticiye Gönderilsin';
+$wb['overtraffic_notify_client_txt'] = 'Trafik Aşımı Bildirimi Müşteriye Gönderilsin';
 $wb['rbl_error_regex'] = 'Lütfen geçerli RBL sunucu adları yazın.';
-$wb['overquota_notify_admin_txt'] = 'Yöneticiye kota uyarıları gönderilsin';
-$wb['overquota_notify_client_txt'] = 'Müşteriye kota uyarıları gönderilsin';
-$wb['overquota_notify_onok_txt'] = 'Müşteriye kota tamam iletisi gönderilsin';
-$wb['overquota_notify_freq_txt'] = 'Kota uyarılarının kaç günde bir gönderileceği';
-$wb['overquota_notify_freq_note_txt'] = '0 = ileti yalnız bir kez gönderilir, yinelenmez';
+$wb['overquota_notify_admin_txt'] = 'Kota Uyarıları Yöneticiye Gönderilsin';
+$wb['overquota_notify_client_txt'] = 'Kota Uyarıları Müşteriye Gönderilsin';
+$wb['overquota_notify_onok_txt'] = 'Kota Tamam İletisi Müşteriye Gönderilsin';
+$wb['overquota_notify_freq_txt'] = 'Kota Uyarısı Gönderim Sıklığı (Gün)';
+$wb['overquota_notify_freq_note_txt'] = '0 yazıldığında ileti yalnız bir kez gönderilir, yinelenmez';
 $wb['admin_notify_events_txt'] = 'Yönetici Bildirim Düzeyi';
 $wb['no_notifications_txt'] = 'Bildirim Gönderilmesin';
 $wb['monit_url_txt'] = 'Monit Adresi';
@@ -189,24 +202,35 @@ $wb['munin_user_txt'] = 'Munin Kullanıcı Adı';
 $wb['munin_password_txt'] = 'Munin Parolası';
 $wb['munin_url_error_regex'] = 'Munin adresi geçersiz';
 $wb['munin_url_note_txt'] = 'Kod:';
+$wb['v6_prefix_txt'] = 'IPv6 Ön Eki';
+$wb['vhost_rewrite_v6_txt'] = 'Yansı Üzerinde IPv6 Yeniden Yazılsın';
+$wb['v6_prefix_length'] = 'Ön ek tanımlanmış IPv6 adresine göre çok uzun ';
 $wb['backup_dir_is_mount_txt'] = 'Yedek Klasörü Takılı mı?';
+$wb['backup_dir_mount_cmd_txt'] = 'Mount komutu, yedek klasörü takılı değil ise';
+$wb['backup_delete_txt'] = 'Etki alanı ya da web sitesi silindiğinde yedekler de silinsin';
+$wb['overquota_db_notify_admin_txt'] = 'Veritabanı Kotası Bildirimleri Yöneticiye Gönderilsin';
+$wb['overquota_db_notify_client_txt'] = 'Veritabanı Kotası Bildirimleri Müşteriye Gönderilsin';
+$wb['monitor_system_updates_txt'] = 'Linux Güncellemeleri Denetlensin';
+$wb['php_handler_txt'] = 'Varsayılan PHP İşleyici';
+$wb['disabled_txt'] = 'Devre Dışı';
+$wb['dkim_strength_txt'] = 'DKIM zorluÄŸu';
 $wb['monitor_system_updates_txt'] = 'Linux Güncelleme Denetimi';
 $wb['invalid_apache_user_txt'] = 'Apache kullanıcısı geçersiz.';
 $wb['invalid_apache_group_txt'] = 'Apache grubu geçersiz.';
 $wb['backup_dir_error_regex'] = 'Yedek klasörü geçersiz.';
-$wb['maildir_path_error_regex'] = 'Posta klasörü yolu geçersiz.';
+$wb['maildir_path_error_regex'] = 'E-posta klasörü yolu geçersiz.';
 $wb['homedir_path_error_regex'] = 'Kullanıcı klasörü yolu geçersiz.';
-$wb['mailuser_name_error_regex'] = 'Posta kullanıcısı adı geçersiz.';
-$wb['mailuser_group_name_error_regex'] = 'Posta kullanıcısı grup adı geçersiz.';
-$wb['mailuser_uid_error_range'] = 'Posta kullanıcısı UID değeri >= 2000 olmalıdır';
-$wb['mailuser_gid_error_range'] = 'Posta kullanıcısı GID değeri >= 2000 olmalıdır';
-$wb['getmail_config_dir_error_regex'] = 'Getmail ayar klasörü geçersiz.';
+$wb['mailuser_name_error_regex'] = 'E-posta kullanıcısı adı geçersiz.';
+$wb['mailuser_group_name_error_regex'] = 'E-posta kullanıcısı grup adı geçersiz.';
+$wb['mailuser_uid_error_range'] = 'E-posta kullanıcısı UID değeri >= 2000 olmalıdır';
+$wb['mailuser_gid_error_range'] = 'E-posta kullanıcısı GID değeri >= 2000 olmalıdır';
+$wb['getmail_config_dir_error_regex'] = 'Getmail ayarları klasörü geçersiz.';
 $wb['website_basedir_error_regex'] = 'Web sitesi kök klasörü geçersiz.';
 $wb['website_symlinks_error_regex'] = 'Web sitesi sembolik bağlantıları geçersiz.';
-$wb['vhost_conf_dir_error_regex'] = 'Vhost ayar klasörü geçersiz.';
-$wb['vhost_conf_enabled_dir_error_regex'] = 'Etkin vhost ayar klasörü geçersiz.';
-$wb['nginx_vhost_conf_dir_error_regex'] = 'Nginx ayar klasörü geçersiz.';
-$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Etkin nginx ayar klasörü geçersiz.';
+$wb['vhost_conf_dir_error_regex'] = 'Sanal sunucu ayarları klasörü geçersiz.';
+$wb['vhost_conf_enabled_dir_error_regex'] = 'Etkin sanal sunucu ayarları klasörü geçersiz.';
+$wb['nginx_vhost_conf_dir_error_regex'] = 'Nginx ayarları klasörü geçersiz.';
+$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Etkin nginx ayarları klasörü geçersiz.';
 $wb['ca_path_error_regex'] = 'CA yolu geçersiz.';
 $wb['invalid_nginx_user_txt'] = 'nginx kullanıcısı geçersiz.';
 $wb['invalid_nginx_group_txt'] = 'nginx grubu geçersiz.';
@@ -225,7 +249,7 @@ $wb['awstats_buildstaticpages_pl_empty'] = 'awstats_buildstaticpages.pl boÅŸ ola
 $wb['awstats_buildstaticpages_pl_error_regex'] = 'awstats_buildstaticpages.pl yolu geçersiz.';
 $wb['invalid_bind_user_txt'] = 'BIND kullanıcısı geçersiz.';
 $wb['invalid_bind_group_txt'] = 'BIND grubu geçersiz.';
-$wb['bind_zonefiles_dir_error_regex'] = 'BIND zonefiles klasörü geçersiz.';
+$wb['bind_zonefiles_dir_error_regex'] = 'BIND bölge dosyaları klasörü geçersiz.';
 $wb['named_conf_path_error_regex'] = 'named.conf yolu geçersiz.';
 $wb['named_conf_local_path_error_regex'] = 'named.conf.local yolu geçersiz.';
 $wb['fastcgi_starter_path_error_regex'] = 'fastcgi başlatıcı yolu geçersiz.';
@@ -237,67 +261,37 @@ $wb['jailkit_chroot_home_error_regex'] = 'Jailkit chroot kök klasörü geçersi
 $wb['jailkit_chroot_app_sections_error_regex'] = 'Jailkit chroot bölümleri geçersiz.';
 $wb['jailkit_chroot_app_programs_error_regex'] = 'Jailkit chroot app uygulama yazılımları geçersiz.';
 $wb['jailkit_chroot_cron_programs_error_regex'] = 'Jailkit chroot zamanlanmış görev yazılımları geçersiz.';
-$wb['vlogger_config_dir_error_regex'] = 'Vlogger ayar klasörü geçersiz.';
+$wb['vlogger_config_dir_error_regex'] = 'Vlogger ayarları klasörü geçersiz.';
 $wb['cron_init_script_error_regex'] = 'Zamanlanmış görev başlatma betiği geçersiz.';
 $wb['crontab_dir_error_regex'] = 'Zamanlanmış görev klasörü geçersiz.';
 $wb['cron_wget_error_regex'] = 'Zamanlanmış görev wget yolu geçersiz.';
 $wb['network_filesystem_txt'] = 'AÄŸ Dosya Sistemi';
-$wb['maildir_format_txt'] = 'Maildir Format';
-$wb['dkim_path_txt'] = 'DKIM Path';
-$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox';
-$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup';
-$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.';
-$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.';
-$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.';
-$wb['reject_sender_login_mismatch_txt'] = 'Reject sender and login mismatch';
-$wb['backup_time_txt'] = 'Backup time';
-$wb['do_not_try_rescue_mongodb_txt'] = 'Disable MongoDB monitoring';
-$wb['v6_prefix_txt'] = 'IPv6 Prefix';
-$wb['vhost_rewrite_v6_txt'] = 'Rewrite IPv6 on Mirror';
-$wb['v6_prefix_length'] = 'Prefix too long according to defined IPv6 ';
-$wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounted';
-$wb['backup_delete_txt'] = 'Delete backups on domain/website delete';
-$wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin';
-$wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client';
-$wb['php_handler_txt'] = 'Default PHP Handler';
-$wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM';
-$wb['disabled_txt'] = 'Disabled';
-$wb['dkim_strength_txt'] = 'DKIM strength';
-$wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes';
-$wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.';
-$wb['php_ini_check_minutes_info_txt'] = '0 = no check';
-$wb['enable_spdy_txt'] = 'Makes SPDY/HTTP2 available';
-$wb['web_settings_txt'] = 'Web Server';
-$wb['xmpp_server_txt'] = 'XMPP Server';
-$wb['xmpp_use_ipv6_txt'] = 'Use IPv6';
-$wb['xmpp_bosh_max_inactivity_txt'] = 'Max. BOSH inactivity time';
-$wb['xmpp_bosh_timeout_range_wrong'] = 'Please enter a bosh timeout range between 15 - 360';
+$wb['php_ini_check_minutes_txt'] = 'Her X dakikada php.ini dosyasındaki değişiklikler denetlensin';
+$wb['php_ini_check_minutes_error_empty'] = 'php.ini dosyasındaki değişikliklerin kaç dakikada bir denetleneceğini yazın.';
+$wb['php_ini_check_minutes_info_txt'] = '0 = denetim yapılmaz';
+$wb['enable_spdy_txt'] = 'SPDY/HTTP2 Kullanılsın';
+$wb['web_settings_txt'] = 'Web Sunucu';
+$wb['xmpp_server_txt'] = 'XMPP Sunucu';
+$wb['xmpp_use_ipv6_txt'] = 'IPv6 Kullanılsın';
+$wb['xmpp_bosh_max_inactivity_txt'] = 'BOSH için en uzun işlem yapılmama süresi';
+$wb['xmpp_bosh_timeout_range_wrong'] = '15 ile 360 arasında bir bosh zaman aşımı süresi yazın';
 $wb['xmpp_module_saslauth'] = 'saslauth';
-$wb['xmpp_server_admins_txt'] = 'Server Admins (JIDs)';
-$wb['xmpp_modules_enabled_txt'] = 'Serverwide enabled plugins (one per line)';
-$wb['xmpp_ports_txt'] = 'Component ports';
+$wb['xmpp_server_admins_txt'] = 'Sunucu Yöneticileri (JID)';
+$wb['xmpp_modules_enabled_txt'] = 'Sunucu genelinde etkinleştirilecek uygulama ekleri (her satıra bir tane yazın)';
+$wb['xmpp_ports_txt'] = 'Bileşen Kapı Numaraları';
 $wb['xmpp_port_http_txt'] = 'HTTP';
 $wb['xmpp_port_https_txt'] = 'HTTPS';
 $wb['xmpp_port_pastebin_txt'] = 'Pastebin';
 $wb['xmpp_port_bosh_txt'] = 'BOSH';
-$wb['disable_bind_log_txt'] = 'Disable bind9 messages for Loglevel WARN';
-$wb['apps_vhost_enabled_txt'] = 'Apps-vhost enabled';
-$wb['skip_le_check_txt'] = 'Skip Lets Encrypt Check';
-$wb['migration_mode_txt'] = 'Server Migration Mode';
-$wb['nginx_enable_pagespeed_txt'] = 'Makes Pagespeed available';
-$wb['backup_tmp_txt'] = 'Backup tmp directory for zip';
-$wb['tmpdir_path_error_empty'] = 'tmp-dir Path is empty.';
-$wb['tmpdir_path_error_regex'] = 'Invalid tmp-dir path.';
-$wb['logging_txt'] = 'Store website access and error logs';
-$wb['logging_desc_txt'] = 'Use Tools > Resync to apply changes to existing sites. For Apache, access and error log can be anonymized. For nginx, only the access log is anonymized, the error log will contain IP addresses.';
-$wb['log_retention_txt'] = 'Log retention (days)';
-$wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0';
-$wb['php_default_name_txt'] = 'Description Default PHP-Version';
-$wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
-$wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
-$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode';
-$wb['content_filter_txt'] = 'Content Filter';
-$wb['rspamd_url_txt'] = 'Rspamd URL';
-$wb['rspamd_user_txt'] = 'Rspamd User';
-$wb['rspamd_password_txt'] = 'Rspamd Password';
+$wb['disable_bind_log_txt'] = 'UYARI günlük düzeyi iletileri için bind9 iletileri devre dışı bırakılsın';
+$wb['apps_vhost_enabled_txt'] = 'Uygulama Sanal Sunucusu Kullanılsın';
+$wb['skip_le_check_txt'] = 'Lets Encrypt Denetimi Atlansın';
+$wb['migration_mode_txt'] = 'Sunucu Aktarımı Kipi';
+$wb['nginx_enable_pagespeed_txt'] = 'Pagespeed uygulamasını etkinleştirir';
+$wb['logging_txt'] = 'Web Sitesi Erişim ve Hata Günlükleri Kaydedilsin';
+$wb['logging_desc_txt'] = 'Değişiklikleri var olan sitelere uygulamak için Araçlar > Yeniden Eşitle komutunu kullanın. Apache için, erişim ve hata günlükleri anonimleştirilebilir. nginx için, only erişim günlüğü anonimleştirilebilir, hata günlüğüne IP adresleri kaydedilir.';
+$wb['log_retention_txt'] = 'Günlük Tutma Süresi (Gün)';
+$wb['log_retention_error_ispositive'] = 'Günlük tutma süresi 0 değerinden büyük bir sayı olmalıdır';
+$wb['php_default_name_txt'] = 'Varsayılan PHP Sürümü Açıklaması';
+$wb['php_default_name_error_empty'] = 'Varsayılan PHP sürümü açıklaması boş olamaz';
 ?>
diff --git a/interface/web/admin/lib/lang/tr_server_ip.lng b/interface/web/admin/lib/lang/tr_server_ip.lng
index 3ebdbd0830..4b2cb1187d 100644
--- a/interface/web/admin/lib/lang/tr_server_ip.lng
+++ b/interface/web/admin/lib/lang/tr_server_ip.lng
@@ -1,10 +1,10 @@
 <?php
 $wb['server_id_txt'] = 'Sunucu';
 $wb['client_id_txt'] = 'Müşteri';
-$wb['ip_type_txt'] = 'Tip';
+$wb['ip_type_txt'] = 'Tür';
 $wb['ip_address_txt'] = 'IP Adresi';
-$wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
-$wb['virtualhost_port_txt'] = 'HTTP Kapıları';
+$wb['virtualhost_txt'] = 'HTTP sSunucu Adı';
+$wb['virtualhost_port_txt'] = 'HTTP Kapı Numaraları';
 $wb['ip_error_wrong'] = 'IP adresi geçersiz';
 $wb['ip_error_unique'] = 'Aynı IP adresi zaten var';
 $wb['error_port_syntax'] = 'Kapı alanında geçersiz karakterler var. Lütfen yalnız virgül ile ayrılmış sayılar yazın. Örnek: 80,443';
diff --git a/interface/web/admin/lib/lang/tr_server_ip_list.lng b/interface/web/admin/lib/lang/tr_server_ip_list.lng
index 9b25c605e7..d252da3df4 100644
--- a/interface/web/admin/lib/lang/tr_server_ip_list.lng
+++ b/interface/web/admin/lib/lang/tr_server_ip_list.lng
@@ -4,7 +4,7 @@ $wb['server_id_txt'] = 'Sunucu';
 $wb['client_id_txt'] = 'Müşteri';
 $wb['ip_address_txt'] = 'IP Adresi';
 $wb['add_new_record_txt'] = 'IP Adresi Ekle';
-$wb['virtualhost_txt'] = 'HTTP SSunucu';
+$wb['virtualhost_txt'] = 'HTTP sSunucu';
 $wb['virtualhost_port_txt'] = 'HTTP Kapıları';
-$wb['ip_type_txt'] = 'Tip';
+$wb['ip_type_txt'] = 'Tür';
 ?>
diff --git a/interface/web/admin/lib/lang/tr_server_ip_map.lng b/interface/web/admin/lib/lang/tr_server_ip_map.lng
index 68b196fb23..c05e19c4b1 100644
--- a/interface/web/admin/lib/lang/tr_server_ip_map.lng
+++ b/interface/web/admin/lib/lang/tr_server_ip_map.lng
@@ -1,12 +1,12 @@
 <?php
-$wb['server_id_txt'] = 'Rewrite on Server';
-$wb['source_txt'] = 'Source IP';
-$wb['destination_txt'] = 'Destination IP';
-$wb['active_txt'] = 'Active';
-$wb['ip_error_wrong'] = 'The Destination IP address is invalid';
-$wb['destination_ip_empty'] = 'The Destination IP is empty.';
-$wb['source_ip_empty'] = 'The Source IP is empty.';
-$wb['server_empty_error'] = 'The Server is empty.';
-$wb['duplicate_mapping_error'] = 'Mapping already exists.';
-$wb['ip_mapping_error'] = 'Source IP can not be an IP of the Rewrite-Server';
+$wb['server_id_txt'] = 'Sunucuda Yeniden Yazma';
+$wb['source_txt'] = 'Kaynak IP';
+$wb['destination_txt'] = 'Hedef IP';
+$wb['active_txt'] = 'Etkin';
+$wb['ip_error_wrong'] = 'Hedef IP adresi geçersiz';
+$wb['destination_ip_empty'] = 'Hedef IP adresi boÅŸ olamaz.';
+$wb['source_ip_empty'] = 'Kaynak IP adresi boÅŸ olamaz.';
+$wb['server_empty_error'] = 'Sunucu boÅŸ olamaz.';
+$wb['duplicate_mapping_error'] = 'EÅŸleÅŸme zaten var.';
+$wb['ip_mapping_error'] = 'Kaynak IP adresi Yeniden yazma sunucusunun IP adreslerinden biri olamaz';
 ?>
diff --git a/interface/web/admin/lib/lang/tr_server_ip_map_list.lng b/interface/web/admin/lib/lang/tr_server_ip_map_list.lng
index 1fedc10b2e..e0ee9a9729 100644
--- a/interface/web/admin/lib/lang/tr_server_ip_map_list.lng
+++ b/interface/web/admin/lib/lang/tr_server_ip_map_list.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['list_head_txt'] = 'IP Mappings';
-$wb['server_id_txt'] = 'Server';
-$wb['source_ip_txt'] = 'Source IP';
-$wb['destination_ip_txt'] = 'Destination IP';
-$wb['active_txt'] = 'Active';
+$wb['list_head_txt'] = 'IP EÅŸleÅŸtirmeleri';
+$wb['server_id_txt'] = 'Sunucu';
+$wb['source_ip_txt'] = 'Kaynak IP';
+$wb['destination_ip_txt'] = 'Hedef IP';
+$wb['active_txt'] = 'Etkin';
 ?>
diff --git a/interface/web/admin/lib/lang/tr_server_list.lng b/interface/web/admin/lib/lang/tr_server_list.lng
index 9f791f78a1..8e22a526c8 100644
--- a/interface/web/admin/lib/lang/tr_server_list.lng
+++ b/interface/web/admin/lib/lang/tr_server_list.lng
@@ -1,12 +1,12 @@
 <?php
 $wb['list_head_txt'] = 'Sunucu';
 $wb['server_name_txt'] = 'Ad';
-$wb['mail_server_txt'] = 'Posta';
+$wb['mail_server_txt'] = 'E-posta';
 $wb['web_server_txt'] = 'Web';
 $wb['dns_server_txt'] = 'DNS';
 $wb['file_server_txt'] = 'Dosya';
 $wb['db_server_txt'] = 'Veritabanı';
-$wb['vserver_server_txt'] = 'SSunucu';
+$wb['vserver_server_txt'] = 'sSunucu';
 $wb['proxy_server_txt'] = 'Vekil Sunucu';
 $wb['firewall_server_txt'] = 'Güvenlik Duvarı';
 $wb['add_new_record_txt'] = 'Sunucu Ekle';
diff --git a/interface/web/admin/lib/lang/tr_server_php.lng b/interface/web/admin/lib/lang/tr_server_php.lng
index 8728444f13..e0437e94b3 100644
--- a/interface/web/admin/lib/lang/tr_server_php.lng
+++ b/interface/web/admin/lib/lang/tr_server_php.lng
@@ -13,5 +13,5 @@ $wb['php_fastcgi_ini_dir_txt'] = 'php.ini Klasörünün Yolu';
 $wb['php_fpm_init_script_txt'] = 'PHP-FPM BaÅŸlatma BetiÄŸinin Yolu';
 $wb['php_fpm_ini_dir_txt'] = 'php.ini Klasörünün Yolu';
 $wb['php_fpm_pool_dir_txt'] = 'PHP-FPM Havuz Klasörünün Yolu';
-$wb['active_txt'] = 'Active';
+$wb['active_txt'] = 'Etkin';
 ?>
diff --git a/interface/web/admin/lib/lang/tr_server_php_list.lng b/interface/web/admin/lib/lang/tr_server_php_list.lng
index dd3d6b730c..06319e9855 100644
--- a/interface/web/admin/lib/lang/tr_server_php_list.lng
+++ b/interface/web/admin/lib/lang/tr_server_php_list.lng
@@ -4,5 +4,5 @@ $wb['server_id_txt'] = 'Sunucu';
 $wb['add_new_record_txt'] = 'PHP Sürümü Ekle';
 $wb['client_id_txt'] = 'Müşteri';
 $wb['name_txt'] = 'PHP Adı';
-$wb['active_txt'] = 'Active';
+$wb['active_txt'] = 'Etkin';
 ?>
diff --git a/interface/web/admin/lib/lang/tr_software_package.lng b/interface/web/admin/lib/lang/tr_software_package.lng
index dfd4981832..addda60195 100644
--- a/interface/web/admin/lib/lang/tr_software_package.lng
+++ b/interface/web/admin/lib/lang/tr_software_package.lng
@@ -2,5 +2,5 @@
 $wb['package_title_txt'] = 'Paket Başlığı';
 $wb['package_key_txt'] = 'Paket Anahtarı';
 $wb['Software Package'] = 'Yazılım Paketi';
-$wb['Modify software package details'] = 'Yazılım paketi ayrıntılarını düzenleyin';
+$wb['Modify software package details'] = 'Yazılım paketi bilgilerini düzenle';
 ?>
diff --git a/interface/web/admin/lib/lang/tr_software_update_list.lng b/interface/web/admin/lib/lang/tr_software_update_list.lng
index 4ee824a6e1..a462d90faa 100644
--- a/interface/web/admin/lib/lang/tr_software_update_list.lng
+++ b/interface/web/admin/lib/lang/tr_software_update_list.lng
@@ -1,6 +1,6 @@
 <?php
 $wb['list_head_txt'] = 'Yazılım Güncellemeleri';
-$wb['server_select_txt'] = 'Sunucu seçin';
+$wb['server_select_txt'] = 'Sunucu Seçin';
 $wb['installed_txt'] = 'Ä°ÅŸlem';
 $wb['update_title_txt'] = 'Güncelleme';
 $wb['version_txt'] = 'Sürüm';
diff --git a/interface/web/admin/lib/lang/tr_system_config.lng b/interface/web/admin/lib/lang/tr_system_config.lng
index c52893f6b4..3ef8e26875 100644
--- a/interface/web/admin/lib/lang/tr_system_config.lng
+++ b/interface/web/admin/lib/lang/tr_system_config.lng
@@ -1,11 +1,11 @@
 <?php
 $wb['system_config_desc_txt'] = '';
-$wb['smtp_missing_admin_mail_txt'] = 'SMTP posta göndermesini kullanmak için yönetici adı ve yönetici e-posta adresini yazmalısınız.';
+$wb['smtp_missing_admin_mail_txt'] = 'SMTP e-posta gönderimini kullanmak için yönetici adı ve yönetici e-posta adresini yazmalısınız.';
 $wb['dashboard_atom_url_admin_txt'] = 'Panel Atom akışının İnternet adresi (yönetici)';
 $wb['dashboard_atom_url_reseller_txt'] = 'Panel Atom akışının İnternet adresi (bayi)';
 $wb['dashboard_atom_url_client_txt'] = 'Panel Atom akışının İnternet adresi (müşteri)';
 $wb['warning'] = 'Bu değerleri değiştirirken dikkatli olun! Sistemde birden fazla müşteri varsa, ön ekleri kaldırmayın.';
-$wb['tab_change_discard_txt'] = 'Sekme değiştirildiğinde değişiklikler yoksayılsın';
+$wb['tab_change_discard_txt'] = 'Sekme değiştirildiğinde değişiklikler yok sayılsın';
 $wb['tab_change_warning_txt'] = 'Sekme değiştirme uyarısı';
 $wb['tab_change_warning_note_txt'] = 'Formlardaki veriler düzenlenirken, kullanıcı bir değişiklik yapmışsa sekme değiştirilmek istendiğinde bir uyarı görüntülenir.';
 $wb['dbname_prefix_txt'] = 'Veritabanı adı ön eki';
@@ -13,8 +13,10 @@ $wb['dbuser_prefix_txt'] = 'Veritabanı kullanıcısı ön eki';
 $wb['shelluser_prefix_txt'] = 'Kabuk kullanıcısı ön eki';
 $wb['webdavuser_prefix_txt'] = 'Webdav kullanıcısı ön eki';
 $wb['ftpuser_prefix_txt'] = 'FTP kullanıcısı ön eki';
-$wb['vhost_subdomains_txt'] = 'Alt alanlar web sitesi ÅŸeklinde oluÅŸturulsun';
-$wb['vhost_subdomains_note_txt'] = 'Sistemde SSunucu alt alan adları varken bu seçenek devre dışı bırakılamaz!';
+$wb['vhost_subdomains_txt'] = 'Etki alanları web sitesi şeklinde oluşturulsun';
+$wb['vhost_subdomains_note_txt'] = 'Sistemde sanal sunucu alt etki alanları varken bu seçenek devre dışı bırakılamaz!';
+$wb['vhost_aliasdomains_txt'] = 'Takma etki alanı web sitesi olarak eklensin';
+$wb['vhost_aliasdomains_note_txt'] = 'Sistemde sanal sunucu takma etki alanları varken bu seçenek devre dışı bırakılamaz!';
 $wb['dbname_prefix_error_regex'] = 'Veritabanı adı ön ekinde izin verilmeyen karakterler var';
 $wb['dbuser_prefix_error_regex'] = 'Veritabanı kullanıcısı ön ekinde izin verilmeyen karakterler var';
 $wb['ftpuser_prefix_error_regex'] = 'FTP kullanıcısı ön ekinde izin verilmeyen karakterler var';
@@ -22,20 +24,23 @@ $wb['shelluser_prefix_error_regex'] = 'Kabuk kullanıcısı ön ekinde izin veri
 $wb['webdavuser_prefix_error_regex'] = 'Webdav kullanıcısı ön ekinde izin verilmeyen karakterler var.';
 $wb['dblist_phpmyadmin_link_txt'] = 'Veritabanı listesinde phpMyAdmin bağlantısı';
 $wb['enable_custom_login_txt'] = 'Özel oturum açma kullanıcı adı kullanılabilsin';
-$wb['mailboxlist_webmail_link_txt'] = 'Posta kutusu listesinde Webmail bağlantısı';
+$wb['mailboxlist_webmail_link_txt'] = 'E-posta kutusu listesinde Webmail bağlantısı';
+$wb['mailbox_show_autoresponder_tab_txt'] = 'E-posta hesabı ayrıntılarında otoyanıtlayıcı sekmesi görüntülensin';
+$wb['mailbox_show_mail_filter_tab_txt'] = 'E-posta hesabı ayrıntılarında e-posta süzgeci sekmesi görüntülensin';
+$wb['mailbox_show_custom_rules_tab_txt'] = 'E-posta hesabı ayrıntılarında isteğe bağlı e-posta süzgeci sekmesi görüntülensin';
 $wb['webmail_url_txt'] = 'Webmail Adresi';
-$wb['mailmailinglist_link_txt'] = 'Posta Listeleri listesinde Posta Listesi bağlantısı';
-$wb['mailmailinglist_url_txt'] = 'Posta Listesi Adresi';
+$wb['mailmailinglist_link_txt'] = 'E-posta Listeleri listesinde E-posta Listesi bağlantısı';
+$wb['mailmailinglist_url_txt'] = 'E-posta Listesi Adresi';
 $wb['phpmyadmin_url_txt'] = 'phpMyAdmin Adresi';
-$wb['use_domain_module_txt'] = 'Alan adı eklemek için alan adı modülü kullanılsın';
-$wb['use_domain_module_hint'] = 'Bu modül kullanıldığında, müşteriler yalnız yöneticinin oluşturduğu alan adlarından birini seçebilir. Alan adı alanını özgürce düzenleyemez. Bu değeri değiştirdikten sonra değişikliklerin geçerli olması için oturumu kapatıp yeniden açmalısınız.';
-$wb['new_domain_txt'] = 'Yeni alan adı oluşturma HTML kodu';
+$wb['use_domain_module_txt'] = 'Etki alanı eklemek için etki alanı modülü kullanılsın';
+$wb['use_domain_module_hint'] = 'Bu modül kullanıldığında, müşteriler yalnız yöneticinin oluşturduğu etki alanlarından birini seçebilir. Etki alanını istediği gibi yazamaz. Bu değeri değiştirdikten sonra değişikliklerin geçerli olması için oturumu kapatıp yeniden açmalısınız.';
+$wb['new_domain_txt'] = 'Yeni etki alanı oluşturma HTML kodu';
 $wb['webftp_url_txt'] = 'WebFTP Adresi';
 $wb['admin_mail_txt'] = 'Yönetici E-posta Adresi';
 $wb['monitor_key_txt'] = 'Ä°zlenecek Kelime';
 $wb['admin_name_txt'] = 'Yönetici Adı';
 $wb['maintenance_mode_txt'] = 'Bakım Kipi';
-$wb['smtp_enabled_txt'] = 'Sistem postaları SMTP ile gönderilsin';
+$wb['smtp_enabled_txt'] = 'Sistem e-postaları SMTP ile gönderilsin';
 $wb['smtp_host_txt'] = 'SMTP Sunucusu';
 $wb['smtp_port_txt'] = 'SMTP Kapısı';
 $wb['smtp_user_txt'] = 'SMTP Kullanıcı Adı';
@@ -46,9 +51,10 @@ $wb['use_combobox_txt'] = 'jQuery Açılan Kutusu Kullanılsın';
 $wb['use_loadindicator_txt'] = 'Yük Göstergesi Kullanılsın';
 $wb['f5_to_reload_js_txt'] = 'Bu değer değiştirildiğinde, web tarayıcının JavaScript kitaplıklarını yeniden yüklemesi için F5 tuşuna basmalı ya da web tarayıcının ön belleğini temizlemelisiniz.';
 $wb['client_username_web_check_disabled_txt'] = 'Müşteri kullanıcı adında \'web\' sözcüğü denetimi devre dışı bırakılsın.';
-$wb['mailbox_show_autoresponder_tab_txt'] = 'Posta hesabı ayrıntılarında otoyanıtlayıcı sekmesi görüntülensin';
-$wb['mailbox_show_mail_filter_tab_txt'] = 'Posta hesabı ayrıntılarında posta süzgeci sekmesi görüntülensin';
-$wb['mailbox_show_custom_rules_tab_txt'] = 'Posta hesabı ayrıntılarında isteğe bağlı posta süzgeci sekmesi görüntülensin';
+$wb['backups_include_into_web_quota_txt'] = 'Yedek dosyaları web kotasına katılsın.';
+$wb['mailbox_show_autoresponder_tab_txt'] = 'E-posta hesabı ayrıntılarında otoyanıtlayıcı sekmesi görüntülensin';
+$wb['mailbox_show_mail_filter_tab_txt'] = 'E-posta hesabı ayrıntılarında e-posta süzgeci sekmesi görüntülensin';
+$wb['mailbox_show_custom_rules_tab_txt'] = 'E-posta hesabı ayrıntılarında isteğe bağlı e-posta süzgeci sekmesi görüntülensin';
 $wb['webmail_url_error_regex'] = 'Webmail adresi geçersiz';
 $wb['phpmyadmin_url_note_txt'] = 'Kod:';
 $wb['webmail_url_note_txt'] = 'Kod:';
@@ -64,30 +70,18 @@ $wb['customer_no_template_error_regex_txt'] = 'Müşteri no kalıbında geçersi
 $wb['customer_no_start_txt'] = 'Müşteri No Başlangıç Değeri';
 $wb['customer_no_counter_txt'] = 'Müşteri No Sayacı';
 $wb['session_timeout_txt'] = 'Oturum Zaman Aşımı (dakika)';
-$wb['session_allow_endless_txt'] = '\\"Oturum açık kalsın\\" kullanılabilsin';
+$wb['session_allow_endless_txt'] = '"Oturum açık kalsın" kullanılabilsin';
 $wb['No'] = 'No';
 $wb['min_password_length_txt'] = 'En Az Parola UzunluÄŸu';
-$wb['min_password_strength_txt'] = 'En Az Parola Güçlüğü';
-$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
-$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
-$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
-$wb['default_mailserver_txt'] = 'Default Mailserver';
-$wb['default_webserver_txt'] = 'Default Webserver';
-$wb['default_dnsserver_txt'] = 'Default DNS Server';
-$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
-$wb['default_dbserver_txt'] = 'Default Database Server';
-$wb['company_name_txt'] = 'Company Name for the page title';
-$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites';
-$wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
-$wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
-$wb['login_link_error_regex'] = 'Invalid Link for Custom Login';
-$wb['ca_name_txt'] = 'Name';
-$wb['ca_issue_txt'] = 'Issue';
-$wb['ca_wildcard_txt'] = 'Use Wildcard';
-$wb['ca_critical_txt'] = 'Strict Check';
-$wb['ca_iodef_txt'] = 'iodef';
-$wb['active_txt'] = 'Aktive';
-$wb['btn_save_txt'] = 'Save';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
+$wb['min_password_strength_txt'] = 'En Az Parola ZorluÄŸu';
+$wb['default_mailserver_txt'] = 'Varsayılan E-posta Sunucusu';
+$wb['default_webserver_txt'] = 'Varsayılan Web Sunucusu';
+$wb['default_dnsserver_txt'] = 'Varsayılan Birincil DNS Sunucusu';
+$wb['default_slave_dnsserver_txt'] = 'Varsayılan İkincil DNS Sunucusu';
+$wb['default_dbserver_txt'] = 'Varsayılan Veritabanı Sunucusu';
+$wb['company_name_txt'] = 'Sayfa başlığı için kurum adı';
+$wb['reseller_can_use_options_txt'] = 'Bayi web siteleri için seçenek sekmesini kullanabilsin';
+$wb['custom_login_text_txt'] = 'Oturum Açma Sayfası Metni';
+$wb['custom_login_link_txt'] = 'Oturum Açma Sayfası Bağlantısı';
+$wb['login_link_error_regex'] = 'Oturum Açma Bağlantısı Geçersiz';
 ?>
diff --git a/interface/web/admin/lib/lang/tr_users.lng b/interface/web/admin/lib/lang/tr_users.lng
index 0029214773..72aa9d1813 100644
--- a/interface/web/admin/lib/lang/tr_users.lng
+++ b/interface/web/admin/lib/lang/tr_users.lng
@@ -1,22 +1,22 @@
 <?php
-$wb['username_txt'] = 'Kullanıcı adı';
+$wb['username_txt'] = 'Kullanıcı Adı';
 $wb['username_err'] = 'Kullanıcı adı çok uzun ya da geçersiz karakterler içeriyor.';
 $wb['username_empty'] = 'Kullanıcı adı boş olamaz.';
 $wb['username_unique'] = 'Bu adla bir kullanıcı zaten var.';
 $wb['passwort_txt'] = 'Parola';
-$wb['password_strength_txt'] = 'Parola Güçlüğü';
+$wb['password_strength_txt'] = 'Parola ZorluÄŸu';
 $wb['modules_txt'] = 'Modül';
 $wb['startmodule_txt'] = 'Başlangıç modülü';
 $wb['app_theme_txt'] = 'Tasarım';
-$wb['typ_txt'] = 'Tip';
+$wb['typ_txt'] = 'Tür';
 $wb['active_txt'] = 'Etkin';
 $wb['language_txt'] = 'Dil';
 $wb['name_txt'] = 'Ad';
 $wb['vorname_txt'] = 'Takma ad';
-$wb['unternehmen_txt'] = 'Kurum';
+$wb['unternehmen_txt'] = 'KuruluÅŸ';
 $wb['strasse_txt'] = 'Adres';
 $wb['ort_txt'] = 'Ä°l';
-$wb['plz_txt'] = 'Posta kodu';
+$wb['plz_txt'] = 'Posta Kodu';
 $wb['land_txt'] = 'Ãœlke';
 $wb['email_txt'] = 'E-posta';
 $wb['url_txt'] = 'Ä°nternet Adresi';
@@ -25,12 +25,12 @@ $wb['fax_txt'] = 'Faks';
 $wb['groups_txt'] = 'Gruplar';
 $wb['default_group_txt'] = 'Varsayılan Grup';
 $wb['startmodule_err'] = 'Başlangıç modülü, modüllerin arasında değil.';
-$wb['generate_password_txt'] = 'Parola OluÅŸtur';
+$wb['generate_password_txt'] = 'Parola Ãœret';
 $wb['repeat_password_txt'] = 'Parola Onayı';
 $wb['password_mismatch_txt'] = 'Parola ile onayı aynı değil.';
 $wb['password_match_txt'] = 'Parola ile onayı aynı.';
-$wb['username_error_collision'] = 'Kullanıcı adı -web- ya da -web- sözcüğünü izleyen bir sayı ile başlayamaz.\\"';
-$wb['client_not_admin_err'] = 'Bir müşteriye ait bir kullanıcının tipi admin olarak atanamaz';
-$wb['lost_password_function_txt'] = 'Forgot password function is available';
-$wb['no_user_insert'] = 'CP-Users of type -user- get added and updated automatically when you add a client or reseller.';
+$wb['username_error_collision'] = 'Kullanıcı adı -web- ya da -web- sözcüğünü izleyen bir sayı ile başlayamaz."';
+$wb['client_not_admin_err'] = 'Bir müşteriye ait bir kullanıcının türü admin olarak atanamaz';
+$wb['lost_password_function_txt'] = 'Parolamı unuttum özelliği kullanılabilir';
+$wb['no_user_insert'] = 'Bir müşteri ya da bayi eklediğinizde -user- türündeki kontrol panosu kullanıcıları otomatik olarak eklenir ve güncellenir .';
 ?>
diff --git a/interface/web/admin/lib/lang/tr_users_list.lng b/interface/web/admin/lib/lang/tr_users_list.lng
index 31dbee7000..182ab3ca7c 100644
--- a/interface/web/admin/lib/lang/tr_users_list.lng
+++ b/interface/web/admin/lib/lang/tr_users_list.lng
@@ -1,6 +1,6 @@
 <?php
 $wb['list_head_txt'] = 'Kullanıcılar';
-$wb['username_txt'] = 'Kullanıcı adı';
+$wb['username_txt'] = 'Kullanıcı Adı';
 $wb['client_id_txt'] = 'Müşteri Kodu';
 $wb['active_txt'] = 'Etkin';
 $wb['groups_txt'] = 'Gruplar';
diff --git a/interface/web/client/lib/lang/br.lng b/interface/web/client/lib/lang/br.lng
index 2228cf3e21..538a3e2e85 100644
--- a/interface/web/client/lib/lang/br.lng
+++ b/interface/web/client/lib/lang/br.lng
@@ -10,20 +10,20 @@ $wb['Limit-Templates'] = 'Gabaritos de limites';
 $wb['Add Reseller'] = 'Adicionar revenda';
 $wb['Edit Reseller'] = 'Editar revenda';
 $wb['Resellers'] = 'Revendas';
-$wb['error_has_clients'] = 'Esta revenda possui clientes. Você deve remover os clientes primeiro.';
+$wb['error_has_clients'] = 'Esta revenda possui clientes associados. Certifique-se de remover os clientes associados a mesma antes de removê-la.';
 $wb['add_additional_template_txt'] = 'Adicionar gabarito personalizado';
 $wb['delete_additional_template_txt'] = 'Remover gabarito personalizado';
-$wb['Messaging'] = 'Círculos';
+$wb['Messaging'] = 'Mensagens';
 $wb['Send email'] = 'Enviar e-mail';
-$wb['Edit Client Circle'] = 'Editar círculo';
+$wb['Edit Client Circle'] = 'Editar círculo de clientes';
 $wb['Domains'] = 'Domínios';
 $wb['domain_txt'] = 'Domínio';
 $wb['client_txt'] = 'Cliente';
-$wb['error_domain_in mailuse'] = 'Este domínio não pode ser removido porque está em uso como um domínio de e-mail.';
-$wb['error_domain_in webuse'] = 'Este domínio não pode ser removido porque está em uso como um domínio de site.';
-$wb['error_client_can_not_add_domain'] = 'Você não pode adicionar um novo domínio.';
-$wb['error_client_group_id_empty'] = 'Você deve selecionar um cliente<br>';
-$wb['error_domain_in dnsuse'] = 'Este domínio não pode ser removido porque está em uso como uma zona dns.';
-$wb['error_domain_in dnsslaveuse'] = 'Este domínio não pode ser removido porque está em uso como uma zona dns secundária.';
-$wb['Email-Templates'] = 'Gabaritos de e-mails';
+$wb['error_domain_in dnsuse'] = 'Este domínio não pode ser removido pois é utilizado em uma zona dns.';
+$wb['error_domain_in dnsslaveuse'] = 'Este domínio não pode ser removido pois é utilizado em uma zona dns secundária.';
+$wb['error_domain_in mailuse'] = 'Este domínio não pode ser removido pois é utilizado como um domínio de e-mail.';
+$wb['error_domain_in webuse'] = 'Este domínio não pode ser removido pois é utilizado como um domínio de site.';
+$wb['error_client_can_not_add_domain'] = 'Você não tem permissão para adicionar novos domínios.';
+$wb['error_client_group_id_empty'] = 'Você deve selecionar um cliente.';
+$wb['Email-Templates'] = 'Gabaritos de e-mail';
 ?>
diff --git a/interface/web/client/lib/lang/br_client.lng b/interface/web/client/lib/lang/br_client.lng
index 992c1ea2ca..c640be54fb 100644
--- a/interface/web/client/lib/lang/br_client.lng
+++ b/interface/web/client/lib/lang/br_client.lng
@@ -1,26 +1,29 @@
 <?php
 $wb['limit_maildomain_txt'] = 'Limite de domínios de e-mail';
-$wb['limit_mailbox_txt'] = 'Limite de caixas postais';
-$wb['limit_mailalias_txt'] = 'Limite de apelidos de domínio de e-mail';
-$wb['limit_mailforward_txt'] = 'Limite de redirecionamentos de e-mail';
-$wb['limit_mailcatchall_txt'] = 'Limite de contas cata tudo';
-$wb['limit_mailrouting_txt'] = 'Limite de transportes de e-mail';
+$wb['limit_mailmailinglist_txt'] = 'Limite de listas de e-mail';
+$wb['limit_mailbox_txt'] = 'Limite de contas de e-mail';
+$wb['limit_mailalias_txt'] = 'Limite de alias de e-mail';
+$wb['limit_mailaliasdomain_txt'] = 'Limite de alias de domínios';
+$wb['limit_mailforward_txt'] = 'Limite de encaminhamentos de e-mail';
+$wb['limit_mailcatchall_txt'] = 'Limite de contas cata-tudo';
+$wb['limit_mailrouting_txt'] = 'Limite de rotas de e-mail';
 $wb['limit_mailfilter_txt'] = 'Limite de filtros de e-mail';
 $wb['limit_fetchmail_txt'] = 'Limite de contas de busca';
-$wb['limit_mailquota_txt'] = 'Cota de e-mail';
-$wb['limit_spamfilter_wblist_txt'] = 'Limite de filtros anti-spam lista branca/negra';
-$wb['limit_spamfilter_user_txt'] = 'Limite de usuários de filtros anti-spam';
+$wb['limit_mailquota_txt'] = 'Cota da conta de e-mail';
+$wb['limit_spamfilter_wblist_txt'] = 'Limite de filtros anti-spam "lista branca/negra"';
+$wb['limit_spamfilter_user_txt'] = 'Limite de filtros anti-spam por conta de e-mail';
 $wb['limit_spamfilter_policy_txt'] = 'Limite de políticas anti-spam';
-$wb['default_mailserver_txt'] = 'Servidor de e-mails padrão';
+$wb['default_mailserver_txt'] = 'Servidor de e-mail padrão';
 $wb['company_name_txt'] = 'Empresa';
 $wb['contact_firstname_txt'] = 'Nome do contato';
-$wb['contact_name_txt'] = 'Sobrenome do contato';
-$wb['username_txt'] = 'Nome do usuário';
+$wb['contact_name_txt'] = 'Contato';
+$wb['username_txt'] = 'Usuário';
 $wb['password_txt'] = 'Senha';
+$wb['password_click_to_set_txt'] = 'Clique para configurar';
 $wb['password_strength_txt'] = 'Dificuldade da senha';
 $wb['language_txt'] = 'Idioma';
 $wb['usertheme_txt'] = 'Tema';
-$wb['street_txt'] = 'Rua';
+$wb['street_txt'] = 'Endereço';
 $wb['zip_txt'] = 'CEP';
 $wb['city_txt'] = 'Cidade';
 $wb['state_txt'] = 'Estado';
@@ -28,177 +31,174 @@ $wb['country_txt'] = 'País';
 $wb['telephone_txt'] = 'Telefone';
 $wb['mobile_txt'] = 'Celular';
 $wb['fax_txt'] = 'Fax';
-$wb['email_txt'] = 'e-mail';
+$wb['email_txt'] = 'e-Mail';
 $wb['internet_txt'] = 'Internet';
-$wb['icq_txt'] = 'Skype/Telegram';
+$wb['icq_txt'] = 'Redes sociais';
 $wb['notes_txt'] = 'Notas';
 $wb['company_txt'] = 'Empresa';
-$wb['title_txt'] = 'Título';
+$wb['title_txt'] = 'Cargo';
 $wb['firstname_txt'] = 'Nome';
 $wb['surname_txt'] = 'Sobrenome';
 $wb['limit_domain_txt'] = 'Limite de domínios';
 $wb['limit_subdomain_txt'] = 'Limite de subdomínios';
-$wb['limit_webquota_txt'] = 'Limite da cota de site';
+$wb['limit_webquota_txt'] = 'Limite da cota de sites';
 $wb['limit_database_txt'] = 'Limite de banco de dados';
+$wb['limit_cron_txt'] = 'Limite de tarefas no cron';
+$wb['limit_cron_type_txt'] = 'Limite de tipos de tarefa no cron (chroot e url implícitas)';
+$wb['limit_cron_frequency_txt'] = 'Tempo de espera entre as execuções';
 $wb['ip_address_txt'] = 'Endereço IP';
 $wb['limit_client_error_notint'] = 'Limite de clientes deve ser um número.';
 $wb['firstname_error_empty'] = 'Nome está em branco.';
 $wb['contact_error_empty'] = 'Contato está em branco.';
-$wb['default_webserver_txt'] = 'Servidor de páginas padrão';
-$wb['limit_web_domain_txt'] = 'Limite de de domínios de site';
-$wb['limit_web_aliasdomain_txt'] = 'Limite de apelidos de domínio';
-$wb['limit_web_subdomain_txt'] = 'Limite de subdomínios';
+$wb['default_webserver_txt'] = 'Servidor web padrão';
+$wb['limit_web_domain_txt'] = 'Limite de domínios de site';
+$wb['limit_web_aliasdomain_txt'] = 'Limite de alias de domínios de site';
+$wb['limit_web_subdomain_txt'] = 'Limite de subdomínios de site';
 $wb['limit_ftp_user_txt'] = 'Limite de usuários ftp';
 $wb['default_dnsserver_txt'] = 'Servidor dns padrão';
 $wb['limit_dns_zone_txt'] = 'Limite de zonas dns';
 $wb['limit_dns_slave_zone_txt'] = 'Limite de zonas dns secundárias';
 $wb['limit_dns_record_txt'] = 'Limite de registros dns';
-$wb['limit_shell_user_txt'] = 'Limite de usuários shell';
+$wb['limit_shell_user_txt'] = 'Limite de usuários do shell';
+$wb['limit_webdav_user_txt'] = 'Limite de usuários webdav';
+$wb['limit_backup_txt'] = 'Função de backup disponível';
 $wb['limit_client_txt'] = 'Limite de clientes';
 $wb['username_error_empty'] = 'Nome do usuário está em branco.';
 $wb['username_error_unique'] = 'O nome do usuário deve ser exclusivo.';
-$wb['limit_maildomain_error_notint'] = 'Limite de contas de e-mail deve ser um número.';
-$wb['limit_mailbox_error_notint'] = 'Limite da contas de e-mail deve ser um número.';
-$wb['limit_mailalias_error_notint'] = 'Limite do apelidos de e-mail deve ser um número.';
-$wb['limit_mailforward_error_notint'] = 'Limite de redirecionamentos de e-mail deve ser um número.';
-$wb['limit_mailcatchall_error_notint'] = 'Limite de contas cata tudo deve ser um número.';
-$wb['limit_mailrouting_error_notint'] = 'Limite de transportes de e-mail deve ser um número.';
-$wb['limit_mailfilter_error_notint'] = 'Limite de filtros de e-mail deve ser um número.';
-$wb['limit_mailfetchmail_error_notint'] = 'Limite de contas de busca deve ser um número.';
-$wb['limit_mailquota_error_notint'] = 'A cota de e-mail deve ser um número.';
-$wb['limit_spamfilter_wblist_error_notint'] = 'Limite de filtros anti-spam lista branca/negra deve ser um número.';
-$wb['limit_spamfilter_user_error_notint'] = 'Limite de filtros anti-spam por usuário deve ser um número.';
-$wb['limit_spamfilter_policy_error_notint'] = 'Limite de políticas de filtros anti-spam deve ser um número.';
-$wb['limit_web_domain_error_notint'] = 'Limite de sites deve ser um número.';
-$wb['limit_web_aliasdomain_error_notint'] = 'Limite de apelidos de domínios deve ser um número.';
-$wb['limit_web_subdomain_error_notint'] = 'Limite de subdomínios deve ser um número.';
-$wb['limit_ftp_user_error_notint'] = 'Limite de usuários ftp deve ser um número.';
-$wb['limit_shell_user_error_notint'] = 'Limite de usuários shell deve ser um número.';
-$wb['limit_dns_zone_error_notint'] = 'Limite de registros dns deve ser um número.';
-$wb['limit_dns_slave_zone_error_notint'] = 'Limite de zonas dns secundárias deve ser um número.';
+$wb['limit_maildomain_error_notint'] = 'O limite de domínios de e-mail deve ser um número.';
+$wb['limit_mailmailinglist_error_notint'] = 'O limite de listas de e-mail deve ser um número.';
+$wb['limit_mailbox_error_notint'] = 'O limite de contas de e-mail deve ser um número.';
+$wb['limit_mailalias_error_notint'] = 'O limite de alias de e-mail deve ser um número.';
+$wb['limit_mailaliasdomain_error_notint'] = 'O limite de alias de domínios de e-mail deve ser um número.';
+$wb['limit_mailforward_error_notint'] = 'O limite de encaminhamentos de e-mail deve ser um número.';
+$wb['limit_mailcatchall_error_notint'] = 'O limite de contas cata-tudo deve ser um número.';
+$wb['limit_mailrouting_error_notint'] = 'O limite de rotas de e-mail deve ser um número.';
+$wb['limit_mailfilter_error_notint'] = 'O limite de filtros de e-mail deve ser um número.';
+$wb['limit_mailfetchmail_error_notint'] = 'O limite de contas de busca deve ser um número.';
+$wb['limit_mailquota_error_notint'] = 'O limite das cotas de e-mail deve ser um número.';
+$wb['limit_spamfilter_wblist_error_notint'] = 'O limite de filtros anti-spam "lista branca/negra" deve ser um número.';
+$wb['limit_spamfilter_user_error_notint'] = 'O limite de filtros anti-spam por conta de e-mail deve ser um número.';
+$wb['limit_spamfilter_policy_error_notint'] = 'O limite de políticas anti-spam deve ser um número.';
+$wb['limit_web_domain_error_notint'] = 'O limite de domínios de site deve ser um número.';
+$wb['limit_web_aliasdomain_error_notint'] = 'O limite de alias de domínios de site deve ser um número.';
+$wb['limit_web_subdomain_error_notint'] = 'O limite de subdomínios de site deve ser um número.';
+$wb['limit_ftp_user_error_notint'] = 'O limite de usuários ftp deve ser um número.';
+$wb['limit_shell_user_error_notint'] = 'O limite de usuários do shell deve ser um número.';
+$wb['limit_webdav_user_error_notint'] = 'O limite de usuários webdav deve ser um número.';
+$wb['limit_dns_zone_error_notint'] = 'O limite de zonas dns deve ser um número.';
+$wb['limit_dns_slave_zone_error_notint'] = 'O limite de zonas dns secundárias deve ser um número.';
+$wb['limit_dns_record_error_notint'] = 'O limite de registros dns deve ser um número.';
 $wb['default_dbserver_txt'] = 'Servidor de banco de dados padrão';
-$wb['limit_database_error_notint'] = 'Limite de banco de dados deve ser um número.';
+$wb['limit_database_error_notint'] = 'O limite de banco de dados deve ser um número.';
+$wb['limit_cron_error_notint'] = 'O limite de tarefas no cron deve ser um número.';
+$wb['limit_cron_error_frequency'] = 'O limite de frequência de tarefas no cron deve ser um número.';
 $wb['username_error_regex'] = 'O nome de usuário contém caracteres inválidos.';
-$wb['template_master_txt'] = 'Gabarito principal';
+$wb['template_master_txt'] = 'Gabarito mestre';
 $wb['template_additional_txt'] = 'Gabarito personalizado';
-$wb['ssh_chroot_txt'] = 'Opções do SSH Chroot';
-$wb['web_php_options_txt'] = 'Opções do PHP';
-$wb['limit_client_error'] = 'O limite de clientes foi alcançado.';
-$wb['limit_cron_txt'] = 'Limite de tarefas no cron.';
-$wb['limit_cron_type_txt'] = 'Limite de tipos de tarefas no cron (em chroot e url completas)';
-$wb['limit_cron_frequency_txt'] = 'Intervalo mínimo entre as execuções';
-$wb['limit_cron_error_notint'] = 'Limite do cron deve ser um número.';
-$wb['limit_cron_error_frequency'] = 'Limite de frequência do cron deve ser um número.';
-$wb['limit_mailaliasdomain_txt'] = 'Limite de apelidos de domínios';
-$wb['limit_mailaliasdomain_error_notint'] = 'Limite de apelidos de domínio deve ser um número.';
-$wb['limit_web_quota_txt'] = 'Cota de site';
-$wb['limit_traffic_quota_txt'] = 'Cota de tráfego';
-$wb['limit_trafficquota_error_notint'] = 'A cota de tráfego dever ser um número.';
-$wb['limit_webdav_user_txt'] = 'Limite de usuários webdav';
-$wb['limit_webdav_user_error_notint'] = 'Limite de usuários webdav deve ser um número.';
-$wb['limit_backup_txt'] = 'Função de backup disponível';
-$wb['customer_no_txt'] = 'Código do cliente';
-$wb['vat_id_txt'] = 'VAT ID';
-$wb['required_fields_txt'] = '*Campos obrigatórios';
-$wb['limit_mailmailinglist_txt'] = 'Limite de listas de e-mail';
-$wb['limit_mailmailinglist_error_notint'] = 'Limite do listas de e-mail deve ser um número.';
-$wb['company_id_txt'] = 'ID da Empresa';
-$wb['limit_openvz_vm_txt'] = 'Limite de servidores virtuais';
-$wb['limit_openvz_vm_template_id_txt'] = 'Forçar gabarito de servidor virtual';
-$wb['limit_openvz_vm_error_notint'] = 'Limite de servidores virtuais deve ser um número.';
-$wb['web_php_options_notempty'] = 'Nenhuma opção PHP selecionada. Selecione ao menos uma opção.';
-$wb['ssh_chroot_notempty'] = 'Nenhuma opção de SSH chroot selecionada. Selecione ao menos uma opção.';
-$wb['username_error_collision'] = 'O usuário não pode ter como iniciais as palavras -web- ou -web- seguida por um número.';
+$wb['active_template_additional_txt'] = 'Ativar gabarito personalizado';
 $wb['add_additional_template_txt'] = 'Adicionar gabarito personalizado';
 $wb['delete_additional_template_txt'] = 'Remover gabarito personalizado';
+$wb['ssh_chroot_txt'] = 'Opções SSH-Chroot';
+$wb['web_php_options_txt'] = 'Opções PHP';
 $wb['limit_cgi_txt'] = 'CGI disponível';
 $wb['limit_ssi_txt'] = 'SSI disponível';
 $wb['limit_perl_txt'] = 'Perl disponível';
 $wb['limit_ruby_txt'] = 'Ruby disponível';
 $wb['limit_python_txt'] = 'Python disponível';
 $wb['force_suexec_txt'] = 'Forçar SuEXEC';
-$wb['limit_hterror_txt'] = 'Custom error docs disponível';
-$wb['limit_wildcard_txt'] = 'Curingas de subdomínios disponíveis';
+$wb['limit_hterror_txt'] = 'Custom errordocs disponível';
+$wb['limit_wildcard_txt'] = 'Curingas de subdomínio disponível';
 $wb['limit_ssl_txt'] = 'SSL disponível';
-$wb['bank_account_number_txt'] = 'Conta corrente no.';
+$wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt disponível';
+$wb['limit_client_error'] = 'O limite de clientes foi alcançado.';
+$wb['limit_web_quota_txt'] = 'Cota de site';
+$wb['limit_traffic_quota_txt'] = 'Cota de tráfego';
+$wb['limit_trafficquota_error_notint'] = 'Cota de tráfego deve ser um número.';
+$wb['customer_no_txt'] = 'Código do cliente.';
+$wb['vat_id_txt'] = 'VAT ID';
+$wb['required_fields_txt'] = '*Campos obrigatórios';
+$wb['company_id_txt'] = 'Código da empresa';
+$wb['limit_openvz_vm_txt'] = 'Limite de máquinas virtuais';
+$wb['limit_openvz_vm_template_id_txt'] = 'Forçar gabarito de máquina virtual';
+$wb['limit_openvz_vm_error_notint'] = 'O limite de máquinas virtuais deve ser um número.';
+$wb['web_php_options_notempty'] = 'Nenhuma opção php selecionada. Selecione ao menos uma opção.';
+$wb['ssh_chroot_notempty'] = 'Nenhuma opção ssh chroot selecionada. Selecione ao menos uma opção.';
+$wb['username_error_collision'] = 'O nome de usuário não pode conter as palavras "web" ou "web" seguida de um número.';
+$wb['bank_account_number_txt'] = 'Conta corrente';
+$wb['bank_account_owner_txt'] = 'Proprietário da conta corrente';
 $wb['bank_code_txt'] = 'Código do banco';
 $wb['bank_name_txt'] = 'Nome do banco';
 $wb['bank_account_iban_txt'] = 'IBAN';
 $wb['bank_account_swift_txt'] = 'BIC/Swift';
-$wb['web_limits_txt'] = 'Limites web';
-$wb['email_limits_txt'] = 'Limites de e-mails';
+$wb['web_limits_txt'] = 'Limites de site';
+$wb['email_limits_txt'] = 'Limites de e-mail';
+$wb['xmpp_limits_txt'] = 'Limites xmpp';
 $wb['database_limits_txt'] = 'Limites de banco de dados';
 $wb['cron_job_limits_txt'] = 'Limites de tarefas no cron';
-$wb['dns_limits_txt'] = 'Limites de DNS';
-$wb['virtualization_limits_txt'] = 'Limites de virtualização';
-$wb['generate_password_txt'] = 'Gerar senha';
-$wb['repeat_password_txt'] = 'Repetir senha';
-$wb['password_mismatch_txt'] = 'A senhas não coincidem.';
-$wb['password_match_txt'] = 'A senhas coincidem.';
-$wb['active_template_additional_txt'] = 'Complementos ativos';
-$wb['bank_account_owner_txt'] = 'Proprietário da conta corrente';
-$wb['email_error_isemail'] = 'Por favor, insira um e-mail válido.';
-$wb['customer_no_error_unique'] = 'O código do cliente deve ser exclusivo (ou em branco).';
+$wb['dns_limits_txt'] = 'Limites de registros dns';
+$wb['virtualization_limits_txt'] = 'Limites de máquinas virtuais';
+$wb['generate_password_txt'] = 'Gerar Senha';
+$wb['repeat_password_txt'] = 'Repetir Senha';
+$wb['password_mismatch_txt'] = 'As senhas não coincidem.';
+$wb['password_match_txt'] = 'As senhas coincidem.';
+$wb['email_error_isemail'] = 'Por favor, insira um endereço de e-mail válido.';
+$wb['customer_no_error_unique'] = 'O código do cliente deve ser exclusivo ou não pode estar está em branco.';
 $wb['paypal_email_error_isemail'] = 'Por favor, insira um e-mail do PayPal válido.';
-$wb['paypal_email_txt'] = 'e-mail do PayPal';
-$wb['err_msg_master_tpl_set'] = 'Todos as configurações de limites personalizadas são ignoradas se qualquer gabarito mestre ou algum gabarito \\"personalizado\\" for selecionado.';
-$wb['aps_limits_txt'] = 'Limites de apps instalados';
-$wb['limit_aps_txt'] = 'Limite de instâncias de apps';
-$wb['limit_aps_error_notint'] = 'Limite de instâncias de apps deve ser um número.';
+$wb['paypal_email_txt'] = 'e-Mail do PayPal';
+$wb['err_msg_master_tpl_set'] = 'Todas as configurações de limites serão ignoradas se for selecionado a opção de gabarito personalizado.';
+$wb['aps_limits_txt'] = 'Limites de instalações de APPs';
+$wb['limit_aps_txt'] = 'Limite de instâncias de APPs';
+$wb['limit_aps_error_notint'] = 'O limite de instâncias de APPs deve ser um número.';
 $wb['default_slave_dnsserver_txt'] = 'Servidor dns secundário padrão';
-$wb['locked_txt'] = 'Bloqueado (web desabilitado)';
-$wb['canceled_txt'] = 'Cancelado (acesso do cliente desabilitado)';
+$wb['locked_txt'] = 'Bloqueado (desabilita todos os sites, etc.)';
+$wb['canceled_txt'] = 'Cancelado (desabilita o acesso do cliente.)';
 $wb['gender_txt'] = 'Título';
 $wb['gender_m_txt'] = 'Sr.';
 $wb['gender_f_txt'] = 'Sra.';
-$wb['added_by_txt'] = 'Cadastrado por';
-$wb['added_date_txt'] = 'Data do cadastro';
-$wb['parent_client_id_txt'] = 'Cliente da revenda';
-$wb['none_txt'] = 'nenhum';
-$wb['email_error_empty'] = 'e-mail está em branco.';
-$wb['xmpp_limits_txt'] = 'Limites XMPP';
 $wb['web_servers_txt'] = 'Servidores web';
-$wb['web_servers_placeholder'] = 'Selecionar servidores web';
-$wb['no_web_server_error'] = 'Ao menos um servidor de páginas deve ser selecionado.';
-$wb['web_servers_used'] = 'O servidor que você está tentando remover para este cliente é usado como um servidor de páginas. Tenha certeza que este servidor não é usado por este cliente antes de removê-lo.';
-$wb['dns_servers_txt'] = 'Servidores dns';
-$wb['dns_servers_placeholder'] = 'Selecionar servidores dns';
-$wb['no_dns_server_error'] = 'Ao menos um servidor dns deve ser selecionado.';
-$wb['dns_servers_used'] = 'O servidor que você está tentando remover para este cliente é usado como um servidor dns. Tenha certeza que este servidor não é usado por este cliente antes de removê-lo.';
-$wb['db_servers_txt'] = 'Servidor de banco de dados';
-$wb['db_servers_placeholder'] = 'Selecione o servidor de banco de dados';
+$wb['web_servers_placeholder'] = 'Selecione os servidores web';
+$wb['no_web_server_error'] = 'Ao menos um servidor web deve ser selecionado.';
+$wb['web_servers_used'] = 'O servidor web que você está tentando remover para este cliente é utilizado pelo mesmo. Certifique-se que este servidor não esteja em uso pelo cliente antes de removê-lo.';
+$wb['dns_servers_txt'] = 'Servidores DNS';
+$wb['dns_servers_placeholder'] = 'Selecione os servidores dns';
+$wb['no_dns_server_error'] = 'Ao menos um servidor DNS deve ser selecionado.';
+$wb['dns_servers_used'] = 'O servidor dns que você está tentando remover para este cliente é utilizado pelo mesmo. Certifique-se que este servidor não esteja em uso pelo cliente antes de removê-lo.';
+$wb['db_servers_txt'] = 'Servidores de banco de dados';
+$wb['db_servers_placeholder'] = 'Selecione os servidores de banco de dados';
 $wb['no_db_server_error'] = 'Ao menos um servidor de banco de dados deve ser selecionado.';
-$wb['db_servers_used'] = 'O servidor que você está tentando remover para este cliente é usado como um servidor de banco de dados. Tenha certeza que este servidor não é usado por este cliente antes de removê-lo.';
+$wb['db_servers_used'] = 'O servidor de banco de dados que você está tentando remover para este cliente é utilizado pelo mesmo. Certifique-se que este servidor não esteja em uso pelo cliente antes de removê-lo.';
 $wb['mail_servers_txt'] = 'Servidores de e-mail';
 $wb['mail_servers_placeholder'] = 'Selecione os servidores de e-mail';
-$wb['no_mail_server_error'] = 'Ao menos um servidor de e-mail deve ser selecionado';
-$wb['mail_servers_used'] = 'O servidor que você está tentando remover para este cliente é usado como um servidor de e-mail. Tenha certeza que este servidor não é usado por este cliente antes de removê-lo.';
+$wb['no_mail_server_error'] = 'Ao menos um servidor de e-mail deve ser selecionado.';
+$wb['mail_servers_used'] = 'O servidor de e-mail que você está tentando remover para este cliente é utilizado pelo mesmo. Certifique-se que este servidor não esteja em uso pelo cliente antes de removê-lo.';
 $wb['xmpp_servers_txt'] = 'Servidores XMPP';
-$wb['xmpp_servers_placeholder'] = 'Selecione os servidores XMPP';
-$wb['no_xmpp_server_error'] = 'Ao menos um servidor XMPP deve ser selecionado.';
-$wb['xmpp_servers_used'] = 'O servidor que você está tentando remover para este cliente é usado como um servidor XMPP. Tenha certeza que este servidor não é usado por este cliente antes de removê-lo.';
-$wb['limit_xmpp_domain_error_notint'] = 'Limite de domínios XMPP deve ser um número.';
-$wb['limit_xmpp_user_error_notint'] = 'Limite de usuários XMPP deve ser um número.';
-$wb['limit_xmpp_domain_txt'] = 'Limite de domínios XMPP';
-$wb['limit_xmpp_user_txt'] = 'Limite de contas XMPP';
-$wb['limit_xmpp_muc_txt'] = 'Chat multiusuário disponível';
+$wb['xmpp_servers_placeholder'] = 'Selecione o(s) servidor(es) xmpp';
+$wb['no_xmpp_server_error'] = 'Ao menos um servidor xmpp deve ser selecionado.';
+$wb['xmpp_servers_used'] = 'O servidor xmpp que você está tentando remover para este cliente é utilizado pelo mesmo. Certifique-se que este servidor não esteja em uso pelo cliente antes de removê-lo.';
+$wb['limit_xmpp_domain_error_notint'] = 'O limite de domínios xmpp deve ser um número.';
+$wb['limit_xmpp_user_error_notint'] = 'O limite de usuários xmpp deve ser um número.';
+$wb['limit_xmpp_domain_txt'] = 'Limite de domínios xmpp';
+$wb['limit_xmpp_user_txt'] = 'Limite de usuários xmpp';
+$wb['limit_xmpp_muc_txt'] = 'Chat multiusuário (MUC) disponível';
 $wb['limit_xmpp_pastebin_txt'] = 'Pastebin para MUC disponível';
-$wb['limit_xmpp_httparchive_txt'] = 'Arquivo HTTP para MUC disponível';
+$wb['limit_xmpp_httparchive_txt'] = 'Arquivos http para MUC disponível';
 $wb['limit_xmpp_anon_txt'] = 'Host anônimo disponível';
-$wb['limit_xmpp_vjud_txt'] = 'Diretório de usuário VJUD disponível';
+$wb['limit_xmpp_vjud_txt'] = 'Diretório de usuários VJUD disponível';
 $wb['limit_xmpp_proxy_txt'] = 'Proxy Bytestream disponível';
 $wb['limit_xmpp_status_txt'] = 'Estado do host disponível';
-$wb['limit_database_quota_txt'] = 'Cota para banco de dados';
-$wb['limit_database_quota_error_notint'] = 'A cota para banco de dados deve ser um número.';
+$wb['added_by_txt'] = 'Cadastrado por';
+$wb['added_date_txt'] = 'Data do cadastro';
+$wb['parent_client_id_txt'] = 'Cliente da revenda';
+$wb['none_txt'] = 'nenhum';
+$wb['limit_database_quota_txt'] = 'Cota do banco de dados';
+$wb['limit_database_quota_error_notint'] = 'O limite da cota de banco de dados deve ser um número.';
+$wb['limit_database_user_txt'] = 'Limite de  usuários do banco de dados';
+$wb['limit_database_user_error_notint'] = 'O limite de usuários do banco de dados deve ser um número.';
 $wb['reseller_txt'] = 'Revenda';
 $wb['btn_save_txt'] = 'Salvar';
 $wb['btn_cancel_txt'] = 'Cancelar';
-$wb['invalid_vat_id'] = 'O VAT ID é inválido.';
-$wb['limit_database_user_txt'] = 'Limite de usuários de banco de dados';
-$wb['limit_database_user_error_notint'] = 'Limite de usuários de banco de dados deve ser um número.';
-$wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt disponível';
-$wb['limit_directive_snippets_txt'] = 'Exibir seleção de configurações do servidor de páginas';
-$wb['password_click_to_set_txt'] = 'Selecionar para configurar';
-$wb['limit_dns_record_error_notint'] = 'O limite de registros dns deve ser um número.';
+$wb['invalid_vat_id'] = 'O ID do VAT é inválido.';
+$wb['email_error_empty'] = 'O e-mail está em branco';
+$wb['limit_directive_snippets_txt'] = 'Exibir configurações de seleção do servidor web';
 $wb['Limits'] = 'Limites';
 ?>
diff --git a/interface/web/client/lib/lang/br_client_circle.lng b/interface/web/client/lib/lang/br_client_circle.lng
index 364172f1ae..6c6cb13271 100644
--- a/interface/web/client/lib/lang/br_client_circle.lng
+++ b/interface/web/client/lib/lang/br_client_circle.lng
@@ -1,6 +1,6 @@
 <?php
-$wb['Client Circle'] = 'Círculo de cliente';
-$wb['Circle'] = 'Círculo';
+$wb['Client Circle'] = 'Círculos de clientes';
+$wb['Circle'] = 'Círculos';
 $wb['circle_txt'] = 'Círculo';
 $wb['circle_name_txt'] = 'Nome do círculo';
 $wb['client_ids_txt'] = 'Clientes/Revendas';
diff --git a/interface/web/client/lib/lang/br_client_circle_list.lng b/interface/web/client/lib/lang/br_client_circle_list.lng
index 857984f892..1c1a43f49a 100644
--- a/interface/web/client/lib/lang/br_client_circle_list.lng
+++ b/interface/web/client/lib/lang/br_client_circle_list.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['list_head_txt'] = 'Círculos de Clientes';
-$wb['circle_id_txt'] = 'ID do Círculo';
-$wb['circle_name_txt'] = 'Nome do Círculo';
+$wb['list_head_txt'] = 'Círculo de clientes';
+$wb['circle_id_txt'] = 'ID do círculo';
+$wb['circle_name_txt'] = 'Nome do círculo';
 $wb['description_txt'] = 'Descrição';
 $wb['add_new_record_txt'] = 'Adicionar novo círculo';
 $wb['filter_txt'] = 'Filtro';
diff --git a/interface/web/client/lib/lang/br_client_del.lng b/interface/web/client/lib/lang/br_client_del.lng
index 6c3e4e668a..880c12c36a 100644
--- a/interface/web/client/lib/lang/br_client_del.lng
+++ b/interface/web/client/lib/lang/br_client_del.lng
@@ -1,6 +1,6 @@
 <?php
 $wb['confirm_action_txt'] = 'Confirmar ação';
-$wb['delete_explanation'] = 'Atenção: está ação removerá todos os objetos associados ao cliente!';
+$wb['delete_explanation'] = 'Esta ação removerá os seguintes registros associados a este cliente.';
 $wb['btn_save_txt'] = 'Remover o cliente';
 $wb['btn_cancel_txt'] = 'Cancelar sem remover o cliente';
 $wb['confirm_client_delete_txt'] = 'Você tem certeza que deseja remover este cliente?';
diff --git a/interface/web/client/lib/lang/br_client_message.lng b/interface/web/client/lib/lang/br_client_message.lng
index 802dcca368..75aa3480c5 100644
--- a/interface/web/client/lib/lang/br_client_message.lng
+++ b/interface/web/client/lib/lang/br_client_message.lng
@@ -1,16 +1,16 @@
 <?php
+$wb['page_head_txt'] = 'Enviar informações do cliente';
 $wb['btn_send_txt'] = 'Enviar e-mail';
 $wb['btn_cancel_txt'] = 'Cancelar';
-$wb['sender_txt'] = 'Remetente';
+$wb['sender_txt'] = 'e-Mail do remetente';
 $wb['subject_txt'] = 'Assunto';
 $wb['message_txt'] = 'Mensagem';
-$wb['form_legend_client_txt'] = 'Enviar mensagem a todos os clientes.';
-$wb['form_legend_admin_txt'] = 'Enviar mensagem a todos clientes e revendas.';
-$wb['sender_invalid_error'] = 'O e-mail do remetente é é inválido.';
-$wb['subject_invalid_error'] = 'O assunto está em branco.';
-$wb['message_invalid_error'] = 'A mensagem está em branco.';
-$wb['email_sent_to_txt'] = 'Enviar e-mail para:';
-$wb['page_head_txt'] = 'Enviar informações aos clientes';
+$wb['form_legend_client_txt'] = 'Enviar e-mail para clientes.';
+$wb['form_legend_admin_txt'] = 'Enviar e-mail para clientes e revendas.';
+$wb['sender_invalid_error'] = 'Remetente inválido.';
+$wb['subject_invalid_error'] = 'Assunto está em branco.';
+$wb['message_invalid_error'] = 'Mensagem está em branco.';
+$wb['email_sent_to_txt'] = 'e-Mail enviado para:';
 $wb['recipient_txt'] = 'Destinatário';
 $wb['all_clients_resellers_txt'] = 'Todos os clientes e revendas';
 $wb['all_clients_txt'] = 'Todos os clientes';
diff --git a/interface/web/client/lib/lang/br_client_message_template.lng b/interface/web/client/lib/lang/br_client_message_template.lng
index eb3c0b9938..8fb0934837 100644
--- a/interface/web/client/lib/lang/br_client_message_template.lng
+++ b/interface/web/client/lib/lang/br_client_message_template.lng
@@ -4,10 +4,10 @@ $wb['template_name_txt'] = 'Nome do gabarito';
 $wb['subject_txt'] = 'Assunto';
 $wb['message_txt'] = 'Mensagem';
 $wb['Email template'] = 'Gabarito do e-mail';
-$wb['Settings'] = 'Configuração';
+$wb['Settings'] = 'Configurações';
 $wb['variables_txt'] = 'Variáveis';
-$wb['variables_description_txt'] = '(As variáveis usuário e senha estão disponíveis apenas em e-mails de boas vindas.)';
-$wb['duplicate_welcome_error'] = 'Disponível apenas para o gabarito padrão de e-mail de boas vindas. Por favor edite o gabarito existente ou adicione um novo gabarito.';
-$wb['subject_error_empty'] = 'Subject is empty';
-$wb['message_error_empty'] = 'Message is empty';
+$wb['variables_description_txt'] = '(Variáveis de usuário e senha só estão disponíveis em e-mail de boas-vindas.)';
+$wb['duplicate_welcome_error'] = 'Só pode existir apenas um gabarito de e-mail de boas-vindas. Edite o modelo existente ao invés de adicionar um novo.';
+$wb['subject_error_empty'] = 'Assunto está em branco.';
+$wb['message_error_empty'] = 'Mensagem está em branco.';
 ?>
diff --git a/interface/web/client/lib/lang/br_client_message_template_list.lng b/interface/web/client/lib/lang/br_client_message_template_list.lng
index 9853a71ad3..3673769354 100644
--- a/interface/web/client/lib/lang/br_client_message_template_list.lng
+++ b/interface/web/client/lib/lang/br_client_message_template_list.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['list_head_txt'] = 'Gabarito de e-mails';
+$wb['list_head_txt'] = 'Gabaritos de e-mail';
 $wb['template_type_txt'] = 'Mensagem de';
 $wb['template_name_txt'] = 'Nome do gabarito';
 ?>
diff --git a/interface/web/client/lib/lang/br_client_template.lng b/interface/web/client/lib/lang/br_client_template.lng
index 4b2ce6555b..c09c622bb2 100644
--- a/interface/web/client/lib/lang/br_client_template.lng
+++ b/interface/web/client/lib/lang/br_client_template.lng
@@ -1,123 +1,126 @@
 <?php
-$wb['limit_client_error_notint'] = 'Limite de clientes não é um número.';
+$wb['template_type_txt'] = 'Tipo de gabarito';
+$wb['template_name_txt'] = 'Nome do gabarito';
+$wb['limit_client_error_notint'] = 'Limite de cliente não é um número.';
+$wb['default_mailserver_txt'] = 'Servidor de e-mail padrão';
 $wb['limit_maildomain_txt'] = 'Limite de domínios de e-mail';
-$wb['limit_mailbox_txt'] = 'Limite de caixas postais';
-$wb['limit_mailalias_txt'] = 'Limite de apelidos de e-mail';
-$wb['limit_mailforward_txt'] = 'Limite de redirecionamentos de e-mail';
-$wb['limit_mailcatchall_txt'] = 'Limite de contas cata tudo';
-$wb['limit_mailrouting_txt'] = 'Limite de transportes de e-mails';
+$wb['limit_mailbox_txt'] = 'Limite de contas de e-mail';
+$wb['limit_mailalias_txt'] = 'Limite de alias de e-mail';
+$wb['limit_mailaliasdomain_txt'] = 'Limite de alias de domínios de e-mail';
+$wb['limit_mailmailinglist_txt'] = 'Limite de listas de e-mail';
+$wb['limit_mailforward_txt'] = 'Limite de encaminhamentos de e-mail';
+$wb['limit_mailcatchall_txt'] = 'Limite de contas cata-tudo';
+$wb['limit_mailrouting_txt'] = 'Limite de rotas de e-mail';
 $wb['limit_mailfilter_txt'] = 'Limite de filtros de e-mail';
 $wb['limit_fetchmail_txt'] = 'Limite de contas de busca';
-$wb['limit_mailquota_txt'] = 'Espaço da caixa postal';
-$wb['limit_spamfilter_wblist_txt'] = 'Limite de filtros anti-spam permitidos lista branca/negra';
-$wb['limit_spamfilter_user_txt'] = 'Limite de usuários de filtros anti-spam';
+$wb['limit_mailquota_txt'] = 'Cota da conta de e-mail';
+$wb['limit_spamfilter_wblist_txt'] = 'Limite de filtros anti-spam "lista branca/negra"';
+$wb['limit_spamfilter_user_txt'] = 'Limite de filtros anti-spam para conta de e-mail';
 $wb['limit_spamfilter_policy_txt'] = 'Limite de políticas anti-spam';
 $wb['limit_domain_txt'] = 'Limite de domínios';
-$wb['limit_subdomain_txt'] = 'Limite de subdomínios';
-$wb['limit_webquota_txt'] = 'Cota de site';
+$wb['limit_subdomain_txt'] = 'Limite de sub-domínios';
+$wb['limit_webquota_txt'] = 'Limite da cota de site';
 $wb['limit_database_txt'] = 'Limite de banco de dados';
+$wb['limit_cron_txt'] = 'Limite de tarefas no cron';
+$wb['limit_cron_type_txt'] = 'Limite de tipos de tarefa no cron (chroot e url implícitas)';
+$wb['limit_cron_frequency_txt'] = 'Tempo de espera entre as execuções';
+$wb['default_webserver_txt'] = 'Servidor web padrão';
 $wb['limit_web_domain_txt'] = 'Limite de domínios de site';
-$wb['limit_web_aliasdomain_txt'] = 'Limite de apelidos de domínio de site';
-$wb['limit_web_subdomain_txt'] = 'Limite de subdomínios de site';
-$wb['limit_ftp_user_txt'] = 'Limite de usuários ftp';
-$wb['limit_dns_zone_txt'] = 'Limite de zonas dns primárias';
+$wb['limit_web_aliasdomain_txt'] = 'Limite de alias de domínios de site';
+$wb['limit_web_subdomain_txt'] = 'Limite de sud-domínios de site';
+$wb['limit_ftp_user_txt'] = 'Limite de usuário FTP';
+$wb['default_dnsserver_txt'] = 'Servidor DNS padrão';
+$wb['limit_dns_zone_txt'] = 'Limite de zonas dns';
+$wb['default_slave_dnsserver_txt'] = 'Servidor DNS secundário';
 $wb['limit_dns_slave_zone_txt'] = 'Limite de zonas dns secundárias';
 $wb['limit_dns_record_txt'] = 'Limite de registros dns';
-$wb['limit_shell_user_txt'] = 'Limite de usuários shell';
+$wb['limit_shell_user_txt'] = 'Limite de usuários do shell';
+$wb['limit_webdav_user_txt'] = 'Limite de usuário Webdav';
+$wb['limit_backup_txt'] = 'Funções de backup disponível';
 $wb['limit_client_txt'] = 'Limite de clientes';
-$wb['limit_maildomain_error_notint'] = 'Limite de e-mails deve ser um número';
-$wb['limit_mailbox_error_notint'] = 'Limite de caixas postais deve ser um número';
-$wb['limit_mailalias_error_notint'] = 'Limite de apelidos de domínio de e-mails deve ser um número';
-$wb['limit_mailforward_error_notint'] = 'Limite de redirecionamentos de e-mail deve ser um número';
-$wb['limit_mailcatchall_error_notint'] = 'Limite de contas cata tudo deve ser um número';
-$wb['limit_mailrouting_error_notint'] = 'Limite de transportes de e-mails deve ser um número';
-$wb['limit_mailfilter_error_notint'] = 'Limite de filtros de e-mails deve ser um número.';
-$wb['limit_mailfetchmail_error_notint'] = 'Limite de contas de busca deve ser um número.';
-$wb['limit_mailquota_error_notint'] = 'Cota de e-mail deve ser um número.';
-$wb['limit_spamfilter_wblist_error_notint'] = 'Limite de filtros anti-spam lista branca/negra deve ser um número';
-$wb['limit_spamfilter_user_error_notint'] = 'Limite de filtros anti-spam deve ser um número.';
-$wb['limit_spamfilter_policy_error_notint'] = 'Limite de políticas anti-spam deve ser um número.';
-$wb['limit_web_domain_error_notint'] = 'Limite de sites deve ser um número';
-$wb['limit_web_aliasdomain_error_notint'] = 'Limite de apelidos de domínio de site deve ser um número';
-$wb['limit_web_subdomain_error_notint'] = 'Limite de subdomínios de site deve ser um número';
-$wb['limit_ftp_user_error_notint'] = 'Limite de contas FTP deve ser um número';
-$wb['limit_shell_user_error_notint'] = 'Limite de contas shell deve ser um número';
-$wb['limit_dns_zone_error_notint'] = 'Limite de zonas DNS primárias deve ser um número';
-$wb['limit_dns_slave_zone_error_notint'] = 'Limite de zonas DNS secundárias deve ser um número.';
-$wb['limit_dns_record_error_notint'] = 'Limite de registros DNS deve ser um número.';
-$wb['limit_database_error_notint'] = 'Limite de banco de dados deve ser um número';
-$wb['error_template_name_empty'] = 'Por favor insira o nome do gabarito';
-$wb['limit_cron_txt'] = 'Limite de tarefas no cron';
-$wb['limit_cron_type_txt'] = 'Limite de tipos de tarefas no cron (em chroot e url completas)';
-$wb['limit_cron_frequency_txt'] = 'Intervalo mínimo entre as execuções';
-$wb['limit_cron_error_notint'] = 'Limite  do cron deve ser um número.';
-$wb['limit_cron_error_frequency'] = 'Limite de frequência do cron deve ser um número.';
-$wb['limit_mailaliasdomain_txt'] = 'Limite de apelidos de domínio de e-mails';
-$wb['limit_mailaliasdomain_error_notint'] = 'Limite de apelidos de domínio de e-mails deve ser um número.';
+$wb['limit_maildomain_error_notint'] = 'O limite de domínios de e-mail deve ser um número.';
+$wb['limit_mailmailinglist_error_notint'] = 'O limite de listas de e-mail deve ser um número.';
+$wb['limit_mailbox_error_notint'] = 'O limite de contas de e-mail deve ser um número.';
+$wb['limit_mailalias_error_notint'] = 'O limite de alias de e-mail deve ser um número.';
+$wb['limit_mailaliasdomain_error_notint'] = 'O limite de alias de domínios deve ser um número.';
+$wb['limit_mailforward_error_notint'] = 'O limite de encaminhamento de e-mails deve ser um número.';
+$wb['limit_mailcatchall_error_notint'] = 'O limite de contas cata-tudo deve ser um número.';
+$wb['limit_mailrouting_error_notint'] = 'O limite de rotas de e-mail deve ser um número.';
+$wb['limit_mailfilter_error_notint'] = 'O limite de filtros de e-mail deve ser um número.';
+$wb['limit_mailfetchmail_error_notint'] = 'O limite de contas de busca deve ser um número.';
+$wb['limit_mailquota_error_notint'] = 'O limite da cota de e-mails deve ser um número.';
+$wb['limit_spamfilter_wblist_error_notint'] = 'O limite de filtros anti-spam "lista branca/negra" deve ser um número.';
+$wb['limit_spamfilter_user_error_notint'] = 'O limite de filtros anti-spam por conta de e-mail deve ser um número.';
+$wb['limit_spamfilter_policy_error_notint'] = 'O limite de políticas anti-spam deve ser um número.';
+$wb['limit_web_domain_error_notint'] = 'O limite de sites deve ser um número.';
+$wb['limit_web_aliasdomain_error_notint'] = 'O limite de alias de domínio para sites deve ser um número.';
+$wb['limit_web_subdomain_error_notint'] = 'O limite de sub-domínios para site deve ser um número.';
+$wb['limit_ftp_user_error_notint'] = 'O limite de usuários ftp deve ser um número.';
+$wb['limit_shell_user_error_notint'] = 'O limite de usuários do shell deve ser um número.';
+$wb['limit_webdav_user_error_notint'] = 'O limite de usuários webdav deve ser um número.';
+$wb['limit_dns_zone_error_notint'] = 'O limite de zonas dns deve ser um número.';
+$wb['limit_dns_slave_zone_error_notint'] = 'O limite de zonas dns secundárias deve ser um número.';
+$wb['limit_dns_record_error_notint'] = 'O limite de registros dns deve ser um número.';
+$wb['default_dbserver_txt'] = 'Servidor de banco de dados padrão';
+$wb['limit_database_txt'] = 'Limite de banco de dados';
+$wb['limit_database_error_notint'] = 'O limite de banco de dados deve ser um número.';
+$wb['limit_cron_error_notint'] = 'O limite de tarefas no cron deve ser um número.';
+$wb['limit_cron_error_frequency'] = 'O limite de execuções no cron deve ser um número.';
+$wb['error_template_name_empty'] = 'Por favor, insira um nome para o gabarito';
 $wb['limit_web_quota_txt'] = 'Cota de site';
-$wb['limit_traffic_quota_txt'] = 'Cota de Tráfego';
-$wb['limit_trafficquota_error_notint'] = 'A cota de tráfego deve ser um número.';
-$wb['template_del_aborted_txt'] = 'Remoção abortada. Ainda existem clientes com o gabarito selecionado.';
-$wb['limit_webdav_user_txt'] = 'Limite de usuários webdav';
-$wb['limit_webdav_user_error_notint'] = 'Limite de usuários webdav deve ser um número.';
-$wb['limit_backup_txt'] = 'Funções de backup disponíveis';
-$wb['limit_mailmailinglist_txt'] = 'Limite de listas de e-mails';
-$wb['limit_mailmailinglist_error_notint'] = 'Limite de listas de e-mails deve ser um número.';
-$wb['limit_openvz_vm_txt'] = 'Limite de servidores virtuais';
-$wb['limit_openvz_vm_template_id_txt'] = 'Forçar gabarito de servidor virtual';
-$wb['limit_openvz_vm_error_notint'] = 'Limite de servidores virtuais deve ser um número.';
-$wb['ssh_chroot_txt'] = 'Opções SSH-Chroot';
+$wb['limit_traffic_quota_txt'] = 'Cota de tráfego';
+$wb['limit_trafficquota_error_notint'] = 'Cota de tráfego deve ser um número.';
+$wb['template_del_aborted_txt'] = 'Remover cancelado. Ainda existe algum cliente com este gabarito em uso.';
+$wb['limit_openvz_vm_txt'] = 'Limite de máquinas virtuais';
+$wb['limit_openvz_vm_template_id_txt'] = 'Forçar gabarito para máquina virtual';
+$wb['limit_openvz_vm_error_notint'] = 'O limite de máquinas virtuais deve ser um número.';
+$wb['ssh_chroot_txt'] = 'Opções de SSH-Chroot';
 $wb['web_php_options_txt'] = 'Opções PHP';
-$wb['template_type_txt'] = 'Tipo de Gabarito';
-$wb['template_name_txt'] = 'Nome do Gabarito';
 $wb['limit_cgi_txt'] = 'CGI disponível';
 $wb['limit_ssi_txt'] = 'SSI disponível';
 $wb['limit_perl_txt'] = 'Perl disponível';
 $wb['limit_ruby_txt'] = 'Ruby disponível';
 $wb['limit_python_txt'] = 'Python disponível';
 $wb['force_suexec_txt'] = 'Forçar SuEXEC';
-$wb['limit_hterror_txt'] = 'Diretório \\"Custom error docs\\" disponível';
-$wb['limit_wildcard_txt'] = 'Curingas de subdomínios disponíveis';
+$wb['limit_hterror_txt'] = 'Custom-error-docs disponível';
+$wb['limit_wildcard_txt'] = 'Curingas de sub-domínio disponível';
 $wb['limit_ssl_txt'] = 'SSL disponível';
-$wb['web_limits_txt'] = 'Limites web';
-$wb['email_limits_txt'] = 'Limites de e-mail';
+$wb['limit_ssl_letsencrypt_txt'] = 'Let';
+$wb['web_limits_txt'] = 'Limites de site';
+$wb['email_limits_txt'] = 'Limites de e-mails';
 $wb['database_limits_txt'] = 'Limites de banco de dados';
-$wb['cron_job_limits_txt'] = 'Limites de tarefas no cron';
+$wb['cron_job_limits_txt'] = 'Limite de tarefas no cron';
 $wb['dns_limits_txt'] = 'Limites de DNS';
 $wb['virtualization_limits_txt'] = 'Limites de virtualização';
-$wb['aps_limits_txt'] = 'Limites de instalações de apps';
-$wb['limit_aps_txt'] = 'Limites de instâncias de apps';
-$wb['limit_aps_error_notint'] = 'Limite de instâncias de apps deve ser um número.';
+$wb['aps_limits_txt'] = 'Limites de instalações de aplicações - APPs';
+$wb['limit_aps_txt'] = 'Limite de instâncias para APPs';
+$wb['limit_aps_error_notint'] = 'O limite de instância para APPs deve ser um número.';
 $wb['limit_domainmodule_txt'] = 'Limites de módulos de domínio';
 $wb['client_limits_txt'] = 'Limites de clientes';
-$wb['default_mailserver_txt'] = 'Servidor de e-mails padrão';
-$wb['default_webserver_txt'] = 'Servidor de páginas padrão';
-$wb['default_dnsserver_txt'] = 'Servidor DNS padrão';
-$wb['default_slave_dnsserver_txt'] = 'Servidor DNS secundário padrão';
-$wb['default_dbserver_txt'] = 'Servidor de banco de dados padrão';
-$wb['limit_database_quota_txt'] = 'Cota para banco de dados';
-$wb['limit_database_quota_error_notint'] = 'Limite da cota para banco de dados deve ser um número.';
-$wb['xmpp_limits_txt'] = 'Limites XMPP';
-$wb['xmpp_servers_txt'] = 'Servidores XMPP';
-$wb['xmpp_servers_placeholder'] = 'Selecionar servidores XMPP';
-$wb['no_xmpp_server_error'] = 'Ao menos um servidor XMPP deve ser selecionado.';
-$wb['xmpp_servers_used'] = 'O servidor que você está tentando remover para este cliente é usado como um servidor XMPP. Tenha certeza que este servidor não é usando por este cliente antes de removê-lo.';
-$wb['limit_xmpp_domain_error_notint'] = 'Limite de domínios XMPP deve ser um número.';
-$wb['limit_xmpp_user_error_notint'] = 'Limite de usuários XMPP deve ser um número.';
-$wb['limit_xmpp_domain_txt'] = 'Limite de domínios XMPP';
-$wb['limit_xmpp_user_txt'] = 'Limite de contas XMPP';
+$wb['limit_database_quota_txt'] = 'Cotas de banco de dados';
+$wb['limit_database_quota_error_notint'] = 'O limite das cotas de banco de dados deve ser um número.';
+$wb['xmpp_limits_txt'] = 'Limites de xmpp';
+$wb['xmpp_servers_txt'] = 'Servidores xmpp';
+$wb['xmpp_servers_placeholder'] = 'Selecione o(s) servidor(es) xmpp';
+$wb['no_xmpp_server_error'] = 'Ao menos um servidor xmpp deve ser selecionado.';
+$wb['xmpp_servers_used'] = 'O servidor que você está tentando remover para este cliente é usado como um servidor xmpp. Garanta que este servidor não é usado por este cliente antes de removê-lo.';
+$wb['limit_xmpp_domain_error_notint'] = 'O limite de domínios xmpp deve ser um número.';
+$wb['limit_xmpp_user_error_notint'] = 'O limite de usuários xmpp deve ser um número.';
+$wb['limit_xmpp_domain_txt'] = 'Limite de domínios xmpp';
+$wb['limit_xmpp_user_txt'] = 'Limite de usuários xmpp';
 $wb['limit_xmpp_muc_txt'] = 'Chat multiusuário disponível';
 $wb['limit_xmpp_pastebin_txt'] = 'Pastebin para MUC disponível';
-$wb['limit_xmpp_httparchive_txt'] = 'Arquivo HTTP para MUC disponível';
+$wb['limit_xmpp_httparchive_txt'] = 'Arquivos http para MUC disponível';
 $wb['limit_xmpp_anon_txt'] = 'Host anônimo disponível';
 $wb['limit_xmpp_vjud_txt'] = 'Diretório de usuário VJUD disponível';
 $wb['limit_xmpp_proxy_txt'] = 'Proxy Bytestream disponível';
 $wb['limit_xmpp_status_txt'] = 'Estado do host disponível';
-$wb['dns_servers_txt'] = 'Servidores DNS';
-$wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt disponível';
-$wb['limit_directive_snippets_txt'] = 'Exibir seleção de configuração do servidor de páginas';
-$wb['limit_database_user_txt'] = 'Limite de usuários de banco de dados';
+$wb['dns_servers_txt'] = 'Servidores dns';
+$wb['limit_directive_snippets_txt'] = 'Exibir seleção de configurações do servidor web';
+$wb['limit_database_user_txt'] = 'Limite de usuários do banco de dados';
 $wb['web_servers_txt'] = 'Servidores web';
+$wb['dns_servers_txt'] = 'Servidores dns';
+$wb['xmpp_servers_txt'] = 'Servidores xmpp';
 $wb['db_servers_txt'] = 'Servidores de banco de dados';
 $wb['mail_servers_txt'] = 'Servidores de e-mail';
 $wb['Limits'] = 'Limites';
diff --git a/interface/web/client/lib/lang/br_client_template_list.lng b/interface/web/client/lib/lang/br_client_template_list.lng
index db73df8efd..47bd2e5779 100644
--- a/interface/web/client/lib/lang/br_client_template_list.lng
+++ b/interface/web/client/lib/lang/br_client_template_list.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['list_head_txt'] = 'Gabarito de limites para clientes';
+$wb['list_head_txt'] = 'Gabaritos de clientes e revendas';
 $wb['template_type_txt'] = 'Tipo';
-$wb['template_name_txt'] = 'Nome do Gabarito';
-$wb['template_id_txt'] = 'ID do Gabarito';
-$wb['sys_groupid_txt'] = 'Reseller';
+$wb['template_name_txt'] = 'Nome do gabarito';
+$wb['template_id_txt'] = 'ID do gabarito';
+$wb['sys_groupid_txt'] = 'Revenda';
 ?>
diff --git a/interface/web/client/lib/lang/br_clients_list.lng b/interface/web/client/lib/lang/br_clients_list.lng
index 7470bd27c4..8016151a9b 100644
--- a/interface/web/client/lib/lang/br_clients_list.lng
+++ b/interface/web/client/lib/lang/br_clients_list.lng
@@ -3,12 +3,12 @@ $wb['list_head_txt'] = 'Clientes';
 $wb['client_id_txt'] = 'ID';
 $wb['company_name_txt'] = 'Empresa';
 $wb['contact_name_txt'] = 'Contato';
+$wb['username_txt'] = 'Usuário';
 $wb['city_txt'] = 'Cidade';
 $wb['country_txt'] = 'País';
 $wb['add_new_record_txt'] = 'Adicionar novo cliente';
-$wb['username_txt'] = 'Usuário';
-$wb['customer_no_txt'] = 'Código do Cliente';
-$wb['locked_txt'] = 'Locked';
-$wb['yes_txt'] = 'Yes';
-$wb['no_txt'] = 'No';
+$wb['customer_no_txt'] = 'Código do cliente';
+$wb['locked_txt'] = 'Bloqueado';
+$wb['yes_txt'] = 'Sim';
+$wb['no_txt'] = 'Não';
 ?>
diff --git a/interface/web/client/lib/lang/br_domain.lng b/interface/web/client/lib/lang/br_domain.lng
index 26c205a56b..988976d2ce 100644
--- a/interface/web/client/lib/lang/br_domain.lng
+++ b/interface/web/client/lib/lang/br_domain.lng
@@ -1,6 +1,6 @@
 <?php
-$wb['domain_error_empty'] = 'Nome do domínio está em branco.';
-$wb['domain_error_unique'] = 'Nome do domínio já existe.';
-$wb['domain_error_regex'] = 'Nome do domínio não é permitido.';
+$wb['domain_error_empty'] = 'O domínio está em branco.';
+$wb['domain_error_unique'] = 'O domínio já existe.';
+$wb['domain_error_regex'] = 'O nome do domínio não é permitido.';
 $wb['Domain'] = 'Domínio';
 ?>
diff --git a/interface/web/client/lib/lang/br_reseller.lng b/interface/web/client/lib/lang/br_reseller.lng
index d90d3b15a2..12a8a2953f 100644
--- a/interface/web/client/lib/lang/br_reseller.lng
+++ b/interface/web/client/lib/lang/br_reseller.lng
@@ -1,26 +1,29 @@
 <?php
-$wb['limit_maildomain_txt'] = 'Limite de domínios de e-mails';
-$wb['limit_mailbox_txt'] = 'Limite de contas de e-mails';
-$wb['limit_mailalias_txt'] = 'Limite de apelidos de domínio de e-mails';
-$wb['limit_mailforward_txt'] = 'Limite de encaminhamentos de e-mails';
-$wb['limit_mailcatchall_txt'] = 'Limite de contas cata tudo';
-$wb['limit_mailrouting_txt'] = 'Limite de transportes de e-mails';
-$wb['limit_mailfilter_txt'] = 'Limite de filtros de e-mails';
-$wb['limit_fetchmail_txt'] = 'Limite de contas de busca ';
-$wb['limit_mailquota_txt'] = 'Cota de e-mail';
-$wb['limit_spamfilter_wblist_txt'] = 'Limite de filtros anti-spam lista branca/negra';
-$wb['limit_spamfilter_user_txt'] = 'Limite de usuários de filtros anti-spam';
+$wb['limit_maildomain_txt'] = 'Limite de domínios de e-mail';
+$wb['limit_mailmailinglist_txt'] = 'Limite de listas de e-mail';
+$wb['limit_mailbox_txt'] = 'Limite de contas de e-mail';
+$wb['limit_mailalias_txt'] = 'Limite de alias de e-mail';
+$wb['limit_mailaliasdomain_txt'] = 'Limite de alias de domínios';
+$wb['limit_mailforward_txt'] = 'Limite de encaminhamentos de e-mail';
+$wb['limit_mailcatchall_txt'] = 'Limite de contas cata-tudo';
+$wb['limit_mailrouting_txt'] = 'Limite de rotas de e-mail';
+$wb['limit_mailfilter_txt'] = 'Limite de filtros de e-mail';
+$wb['limit_fetchmail_txt'] = 'Limite de contas de busca';
+$wb['limit_mailquota_txt'] = 'Cota de contas de e-mail';
+$wb['limit_spamfilter_wblist_txt'] = 'Limite de filtros anti-spam "lista branca/negra"';
+$wb['limit_spamfilter_user_txt'] = 'Limite de filtros anti-spam por usuário';
 $wb['limit_spamfilter_policy_txt'] = 'Limite de políticas anti-spam';
-$wb['default_mailserver_txt'] = 'Servidor de e-mails padrão';
+$wb['default_mailserver_txt'] = 'Servidor de e-mail padrão';
 $wb['company_name_txt'] = 'Empresa';
-$wb['contact_firstname_txt'] = 'Nome do contato';
-$wb['contact_name_txt'] = 'Sobrenome do contato';
+$wb['contact_firstname_txt'] = 'Contato';
+$wb['contact_name_txt'] = 'Nome do contato';
 $wb['username_txt'] = 'Usuário';
 $wb['password_txt'] = 'Senha';
+$wb['password_click_to_set_txt'] = 'Clique para configurar';
 $wb['password_strength_txt'] = 'Dificuldade da senha';
 $wb['language_txt'] = 'Idioma';
 $wb['usertheme_txt'] = 'Tema';
-$wb['street_txt'] = 'Rua';
+$wb['street_txt'] = 'Endereço';
 $wb['zip_txt'] = 'CEP';
 $wb['city_txt'] = 'Cidade';
 $wb['state_txt'] = 'Estado';
@@ -28,180 +31,177 @@ $wb['country_txt'] = 'País';
 $wb['telephone_txt'] = 'Telefone';
 $wb['mobile_txt'] = 'Celular';
 $wb['fax_txt'] = 'Fax';
-$wb['email_txt'] = 'e-mail';
-$wb['internet_txt'] = 'Internet';
-$wb['icq_txt'] = 'Skype/Telegram';
-$wb['notes_txt'] = 'Notas';
+$wb['email_txt'] = 'e-Mail';
+$wb['internet_txt'] = 'Site';
+$wb['icq_txt'] = 'Redes Sociais';
+$wb['notes_txt'] = 'Observações';
 $wb['company_txt'] = 'Empresa';
 $wb['title_txt'] = 'Título';
 $wb['firstname_txt'] = 'Nome';
 $wb['surname_txt'] = 'Sobrenome';
 $wb['limit_domain_txt'] = 'Limite de domínios';
 $wb['limit_subdomain_txt'] = 'Limite de subdomínios';
-$wb['limit_webquota_txt'] = 'Cota de site';
+$wb['limit_webquota_txt'] = 'Cota de sites';
 $wb['limit_database_txt'] = 'Limite de banco de dados';
+$wb['limit_database_user_txt'] = 'Limite de usuários do banco de dados';
 $wb['limit_cron_txt'] = 'Limite de tarefas no cron';
-$wb['limit_cron_type_txt'] = 'Limites de tarefas no cron (em chroot e url completas)';
-$wb['limit_cron_frequency_txt'] = 'Limite de tempo entre as execuções';
+$wb['limit_cron_type_txt'] = 'Limite de tipos de tarefa no cron (chrooted e url implícitas)';
+$wb['limit_cron_frequency_txt'] = 'Tempo de espera entre as execuções';
 $wb['ip_address_txt'] = 'Endereço IP';
-$wb['limit_client_error_notint'] = 'Limite de clientes para revenda deve ser um número.';
+$wb['limit_client_error_notint'] = 'O limite de clientes deve ser um número.';
 $wb['firstname_error_empty'] = 'Nome está em branco.';
 $wb['contact_error_empty'] = 'Contato está em branco.';
-$wb['default_webserver_txt'] = 'Servidor de páginas padrão';
+$wb['default_webserver_txt'] = 'Servidor web padrão';
 $wb['limit_web_domain_txt'] = 'Limite de domínios de site';
-$wb['limit_web_aliasdomain_txt'] = 'Limite de apelidos';
-$wb['limit_web_subdomain_txt'] = 'Limite de subdomínios';
+$wb['limit_web_aliasdomain_txt'] = 'Limite de alias de domínios de site';
+$wb['limit_web_subdomain_txt'] = 'Limite subdomínios de site';
 $wb['limit_ftp_user_txt'] = 'Limite de usuários ftp';
-$wb['default_dnsserver_txt'] = 'Servidor dns Padrão';
-$wb['limit_dns_zone_txt'] = 'Limite de de zonas dns';
+$wb['default_dnsserver_txt'] = 'Servidor dns padrão';
+$wb['limit_dns_zone_txt'] = 'Limite de zonas dns';
 $wb['limit_dns_slave_zone_txt'] = 'Limite de zonas dns secundárias';
 $wb['limit_dns_record_txt'] = 'Limite de registros dns';
-$wb['limit_shell_user_txt'] = 'Limite de usuários shell';
+$wb['limit_shell_user_txt'] = 'Limite de usuários do shell';
+$wb['limit_webdav_user_txt'] = 'Limite de usuários webdav';
+$wb['limit_backup_txt'] = 'Função de backup disponível';
 $wb['limit_client_txt'] = 'Limite de clientes';
-$wb['username_error_empty'] = 'Nome do usuário está em branco.';
-$wb['username_error_unique'] = 'O nome do usuário deve ser exclusivo.';
-$wb['limit_maildomain_error_notint'] = 'Limite de domínios de e-mails deve ser um número.';
-$wb['limit_mailbox_error_notint'] = 'Limite de contas de e-mails deve ser um número.';
-$wb['limit_mailalias_error_notint'] = 'Limite de apelidos de domínio de e-mails deve ser um número.';
-$wb['limit_mailforward_error_notint'] = 'Limite de encaminhamentos de e-mails deve ser um número.';
-$wb['limit_mailcatchall_error_notint'] = 'Limite de contas cata tudo deve ser um número.';
-$wb['limit_mailrouting_error_notint'] = 'Limite de transportes de e-mails deve ser um número.';
-$wb['limit_mailfilter_error_notint'] = 'Limite de filtros de e-mails deve ser um número.';
-$wb['limit_mailfetchmail_error_notint'] = 'Limite de contas de busca deve ser um número.';
-$wb['limit_mailquota_error_notint'] = 'A cota de e-mail deve ser um número.';
-$wb['limit_spamfilter_wblist_error_notint'] = 'Limite de filtros anti-spam lista branca/negra deve ser um número.';
-$wb['limit_spamfilter_user_error_notint'] = 'Limite de usuários de filtros anti-spam deve ser um número.';
-$wb['limit_spamfilter_policy_error_notint'] = 'Limite de políticas anti-spam deve ser um número.';
-$wb['limit_web_domain_error_notint'] = 'Limite de sites deve ser um número.';
-$wb['limit_web_aliasdomain_error_notint'] = 'Limite de apelidos de domínio de site deve ser um número.';
-$wb['limit_web_subdomain_error_notint'] = 'Limite de subdomínios de site deve ser um número.';
-$wb['limit_ftp_user_error_notint'] = 'Limite de usuários ftp deve ser um número.';
-$wb['limit_shell_user_error_notint'] = 'Limite de usuários shell deve ser um número.';
-$wb['limit_dns_zone_error_notint'] = 'Limite de registros dns deve ser um número.';
-$wb['limit_dns_slave_zone_error_notint'] = 'Limite de zonas dns secundárias deve ser um número.';
-$wb['limit_dns_record_error_notint'] = 'Limite de registros dns deve ser um número.';
+$wb['username_error_empty'] = 'Usuário está em branco.';
+$wb['username_error_unique'] = 'O nome de usuário deve ser exclusivo.';
+$wb['limit_maildomain_error_notint'] = 'O limite de domínios de e-mail deve ser um número.';
+$wb['limit_mailmailinglist_error_notint'] = 'O limite de registro de listas de e-mail deve ser um número.';
+$wb['limit_mailbox_error_notint'] = 'O limite de contas de e-mail deve ser um número.';
+$wb['limit_mailalias_error_notint'] = 'O limite de alias de e-mail deve ser um número.';
+$wb['limit_mailforward_error_notint'] = 'O limite de encaminhamentos deve ser um número.';
+$wb['limit_mailcatchall_error_notint'] = 'O limite de contas cata-tudo deve ser um número.';
+$wb['limit_mailrouting_error_notint'] = 'O limite de rotas de e-mail deve ser um número.';
+$wb['limit_mailfilter_error_notint'] = 'O limite de filtros de e-mail deve ser um número.';
+$wb['limit_mailfetchmail_error_notint'] = 'O limite de contas de busca deve ser um número.';
+$wb['limit_mailquota_error_notint'] = 'O limite das cotas de e-mail deve ser um número.';
+$wb['limit_spamfilter_wblist_error_notint'] = 'O limite de filtros anti-spam "lista branca/negra" deve ser um número.';
+$wb['limit_spamfilter_user_error_notint'] = 'O limite de filtros anti-spam por conta de e-mail deve ser um número.';
+$wb['limit_spamfilter_policy_error_notint'] = 'O limite de políticas anti-spam deve ser um número.';
+$wb['limit_web_domain_error_notint'] = 'O limite de sites deve ser um número.';
+$wb['limit_web_aliasdomain_error_notint'] = 'O limite de alias de domínios de site deve ser um número.';
+$wb['limit_web_subdomain_error_notint'] = 'O limite de subdomínios de site deve ser um número.';
+$wb['limit_ftp_user_error_notint'] = 'O limite de usuários ftp deve ser um número.';
+$wb['limit_webdav_user_error_notint'] = 'O limite de usuários webdav deve ser um número.';
+$wb['limit_shell_user_error_notint'] = 'O limite de usuários do shell deve ser um número.';
+$wb['limit_dns_zone_error_notint'] = 'O limite de zonas dns deve ser um número.';
+$wb['limit_dns_slave_zone_error_notint'] = 'O limite de zonas dns secundárias deve ser um número.';
+$wb['limit_dns_record_error_notint'] = 'O limite de registros dns deve ser um número.';
 $wb['default_dbserver_txt'] = 'Servidor de banco de dados padrão';
-$wb['limit_database_error_notint'] = 'Limite de banco de dados deve ser um número.';
-$wb['limit_cron_error_notint'] = 'Limite de tarefas no cron deve ser um número.';
-$wb['limit_cron_error_frequency'] = 'Limite de frequência no cron deve ser um número.';
+$wb['limit_database_error_notint'] = 'O limite de banco de dados deve ser um número.';
+$wb['limit_cron_error_notint'] = 'O limite de tarefas no cron deve ser um número.';
+$wb['limit_cron_error_frequency'] = 'O limite da frequência de execuções no cron deve ser um número.';
 $wb['username_error_regex'] = 'O nome do usuário contém caracteres inválidos.';
-$wb['template_master_txt'] = 'Gabarito mestre';
-$wb['template_additional_txt'] = 'Gabarito personalizado';
-$wb['ssh_chroot_txt'] = 'Opções do Chroot SSH';
-$wb['web_php_options_txt'] = 'Opções do PHP';
-$wb['limit_client_error'] = 'Limite de clientes foi alcançado.';
-$wb['limit_client_error_positive_or_unlimited'] = 'Limite de clientes deve ser > 0';
-$wb['limit_web_quota_txt'] = 'Cota de site';
-$wb['limit_traffic_quota_txt'] = 'Cota de tráfego';
-$wb['limit_trafficquota_error_notint'] = 'A cota de tráfego deve ser um número.';
-$wb['customer_no_txt'] = 'Código do cliente.';
-$wb['vat_id_txt'] = 'VAT ID';
-$wb['required_fields_txt'] = '*Campos obrigatórios';
-$wb['limit_mailmailinglist_txt'] = 'Limite de listas de e-mails';
-$wb['limit_mailmailinglist_error_notint'] = 'Limite de listas de e-mails deve ser um número.';
-$wb['limit_webdav_user_txt'] = 'Limite de usuário webdav';
-$wb['limit_webdav_user_error_notint'] = 'Limite de usuários webdav deve ser um número.';
-$wb['limit_backup_txt'] = 'Função de backup disponível';
-$wb['limit_mailaliasdomain_txt'] = 'Limite de apelidos de domínio de e-mails';
-$wb['limit_openvz_vm_txt'] = 'Limite de servidores virtuais';
-$wb['limit_openvz_vm_template_id_txt'] = 'Forçar gabarito de servidor virtual';
-$wb['limit_openvz_vm_error_notint'] = 'Limite de servidores virtuais deve ser um número.';
-$wb['web_php_options_notempty'] = 'Nenhuma opção do php selecionada. Selecione ao menos uma opção.';
-$wb['ssh_chroot_notempty'] = 'Nenhuma opção do ssh-chroot selecionada. Selecione ao menos uma opção.';
-$wb['username_error_collision'] = 'O nome do usuário não pode iniciar com a palavra -web- ou -web- seguida de um número.';
+$wb['template_master_txt'] = 'Gabarito Mestre';
+$wb['template_additional_txt'] = 'Gabarito Personalizado';
 $wb['add_additional_template_txt'] = 'Adicionar gabarito personalizado';
 $wb['delete_additional_template_txt'] = 'Remover gabarito personalizado';
+$wb['ssh_chroot_txt'] = 'Opções SSH-Chroot';
+$wb['web_php_options_txt'] = 'Opções PHP';
 $wb['limit_cgi_txt'] = 'CGI disponível';
 $wb['limit_ssi_txt'] = 'SSI disponível';
 $wb['limit_perl_txt'] = 'Perl disponível';
 $wb['limit_ruby_txt'] = 'Ruby disponível';
 $wb['limit_python_txt'] = 'Python disponível';
-$wb['force_suexec_txt'] = 'SuEXEC forced';
+$wb['force_suexec_txt'] = 'Forçar SuEXEC';
 $wb['limit_hterror_txt'] = 'Custom error docs disponível';
-$wb['limit_wildcard_txt'] = 'Curingas de subdomínios disponíveis';
+$wb['limit_wildcard_txt'] = 'Curingas de subdomínios disponível';
 $wb['limit_ssl_txt'] = 'SSL disponível';
-$wb['web_limits_txt'] = 'Limites web';
-$wb['email_limits_txt'] = 'Limites de e-mails';
-$wb['database_limits_txt'] = 'Limites de banco de dados';
-$wb['cron_job_limits_txt'] = 'Limites de tarefas no cron';
-$wb['dns_limits_txt'] = 'Limites de dns';
-$wb['virtualization_limits_txt'] = 'Limites de virtualização';
-$wb['generate_password_txt'] = 'Gerar senha';
-$wb['repeat_password_txt'] = 'Repetir senha';
-$wb['password_mismatch_txt'] = 'A senhas não coincidem.';
-$wb['password_match_txt'] = 'A senhas coincidem.';
+$wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt disponível';
+$wb['limit_client_error'] = 'O limite de clientes para esta conta foi alcançado.';
+$wb['limit_client_error_positive_or_unlimited'] = 'O número de clientes deve ser > 0 ou -1 (ilimitado)';
+$wb['limit_web_quota_txt'] = 'Cota web';
+$wb['limit_traffic_quota_txt'] = 'Cota de tráfego';
+$wb['limit_trafficquota_error_notint'] = 'Cota de tráfego deve ser um número.';
+$wb['customer_no_txt'] = 'Código do cliente';
+$wb['vat_id_txt'] = 'VAT ID';
+$wb['required_fields_txt'] = '*Campos obrigatórios';
+$wb['limit_openvz_vm_txt'] = 'Limite de máquinas virtuais';
+$wb['limit_openvz_vm_template_id_txt'] = 'Forçar gabarito para máquina virtual';
+$wb['limit_openvz_vm_error_notint'] = 'O limite de máquinas virtuais deve ser um número.';
+$wb['web_php_options_notempty'] = 'Nenhuma opção PHP selecionado. Selecione ao menos uma opção PHP.';
+$wb['ssh_chroot_notempty'] = 'Nenhuma opção SSH chroot selecionada. Selecione ao menos uma opção SSH chroot.';
+$wb['username_error_collision'] = 'O nome de usuário não pode iniciar com -web- ou -web- seguida de um número.';
+$wb['web_limits_txt'] = 'Limite de site';
+$wb['email_limits_txt'] = 'Limites de e-mail';
+$wb['database_limits_txt'] = 'Limite de banco de dados';
+$wb['cron_job_limits_txt'] = 'Limites de tarefa no Cron';
+$wb['dns_limits_txt'] = 'Limites de DNS';
+$wb['virtualization_limits_txt'] = 'Limites de máquinas virtuais';
+$wb['generate_password_txt'] = 'Gerar Senha';
+$wb['repeat_password_txt'] = 'Repetir Senha';
+$wb['password_mismatch_txt'] = 'As senhas não coincidem.';
+$wb['password_match_txt'] = 'As senhas coincidem.';
 $wb['email_error_isemail'] = 'Por favor, insira um e-mail válido.';
-$wb['customer_no_error_unique'] = 'O código do cliente deve ser exclusivo (ou deixe em branco).';
+$wb['customer_no_error_unique'] = 'O código do cliente deve ser exclusivo e não pode estar está em branco.';
 $wb['paypal_email_error_isemail'] = 'Por favor, insira um e-mail do PayPal válido.';
-$wb['paypal_email_txt'] = 'e-mail do PayPal';
-$wb['company_id_txt'] = 'ID da empresa';
-$wb['bank_account_number_txt'] = 'Conta corrente';
-$wb['bank_account_owner_txt'] = 'Proprietário';
-$wb['bank_code_txt'] = 'Codigo do banco';
+$wb['paypal_email_txt'] = 'e-Mail PayPal';
+$wb['company_id_txt'] = 'Código da Empresa';
+$wb['bank_account_number_txt'] = 'Conta bancária';
+$wb['bank_account_owner_txt'] = 'Proprietário da conta bancária';
+$wb['bank_code_txt'] = 'Código do banco';
 $wb['bank_name_txt'] = 'Nome do banco';
 $wb['bank_account_iban_txt'] = 'IBAN';
 $wb['bank_account_swift_txt'] = 'BIC/Swift';
-$wb['aps_limits_txt'] = 'Limites de instalações de apps';
-$wb['limit_aps_txt'] = 'Limites de instâncias de apps';
-$wb['limit_aps_error_notint'] = 'Limite de instâncias de apps deve ser um número.';
-$wb['default_slave_dnsserver_txt'] = 'Servidor dns secundário padrão';
+$wb['aps_limits_txt'] = 'Limites de instaladores de APPs';
+$wb['limit_aps_txt'] = 'Limite de instâncias de APPs';
+$wb['limit_aps_error_notint'] = 'O limite de instâncias de APPs deve ser um número.';
+$wb['default_slave_dnsserver_txt'] = 'Servidor DNS secundário padrão';
 $wb['locked_txt'] = 'Bloqueado';
 $wb['canceled_txt'] = 'Cancelado';
 $wb['gender_m_txt'] = 'Sr.';
 $wb['gender_f_txt'] = 'Sra.';
 $wb['gender_txt'] = 'Título';
-$wb['customer_no_template_txt'] = 'No. do gabarito do cliente';
-$wb['customer_no_template_error_regex_txt'] = 'O número do gabarito contém caracteres inválidos.';
-$wb['customer_no_start_txt'] = 'Valor inicial do código do cliente';
-$wb['customer_no_counter_txt'] = 'Contador de código do cliente';
-$wb['added_by_txt'] = 'Cadastrado por';
-$wb['added_date_txt'] = 'Data do cadastro';
-$wb['limit_domainmodule_error_notint'] = 'Limite de módulos de domínio deve ser um número.';
-$wb['limit_domainmodule_txt'] = 'Limites de módulos de domínio';
-$wb['client_limits_txt'] = 'Limite de clientes';
-$wb['err_msg_master_tpl_set'] = 'Todas as configurações personalizadas de limites serão ignoradas se um gabarito mestre ou \\"personalizado\\" for selecionado.';
-$wb['btn_save_txt'] = 'Salvar';
-$wb['btn_cancel_txt'] = 'Cancelar';
-$wb['email_error_empty'] = 'e-mail está em branco.';
-$wb['web_servers_txt'] = 'Servidores web';
-$wb['web_servers_placeholder'] = 'Selecionar servidores web';
-$wb['no_web_server_error'] = 'Ao menos um servidor de páginas deve ser selecionado.';
-$wb['web_servers_used'] = 'O servidor que você está tentando remover para este cliente é utilizado como um servidor de páginas. Certifique-se de que este servidor não é usado por este cliente antes de removê-lo.';
-$wb['dns_servers_txt'] = 'Servidores dns';
-$wb['dns_servers_placeholder'] = 'Selecione os servidores dns';
-$wb['no_dns_server_error'] = 'Ao menos um servidor dns deve ser selecionado.';
-$wb['dns_servers_used'] = 'O servidor que você está tentando remover para este cliente é utilizado como um servidor dns. Certifique-se de que este servidor não é usado por este cliente antes de removê-lo.';
-$wb['db_servers_txt'] = 'Servidores de banco de dados';
-$wb['db_servers_placeholder'] = 'Selecione os servidores de banco de dados.';
+$wb['web_servers_txt'] = 'Servidores Web';
+$wb['web_servers_placeholder'] = 'Selecione o(s) servidor(es) web';
+$wb['no_web_server_error'] = 'Ao menos um servidor web deve ser selecionado.';
+$wb['web_servers_used'] = 'O servidor web que você está tentando remover para este cliente é usado pelo mesmo. Certifique-se que este servidor não esteja em uso para este cliente antes de removê-lo.';
+$wb['dns_servers_txt'] = 'Servidor DNS';
+$wb['dns_servers_placeholder'] = 'Selecione os servidores DNS';
+$wb['no_dns_server_error'] = 'Ao menos um servidor DNS deve ser selecionado.';
+$wb['dns_servers_used'] = 'O servidor DNS que você está tentando remover para este cliente é usado pelo mesmo. Certifique-se que este servidor não esteja em uso para este cliente antes de removê-lo.';
+$wb['db_servers_txt'] = 'Servidor de banco de dados';
+$wb['db_servers_placeholder'] = 'Selecione os servidores de banco de dados';
 $wb['no_db_server_error'] = 'Ao menos um servidor de banco de dados deve ser selecionado.';
-$wb['db_servers_used'] = 'O servidor que você está tentando remover para este cliente é utilizado como um servidor de banco de dados. Certifique-se de que este servidor não é usado por este cliente antes de removê-lo.';
-$wb['mail_servers_txt'] = 'Servidores de e-mails';
-$wb['mail_servers_placeholder'] = 'Selecionar servidores de e-mails';
+$wb['db_servers_used'] = 'O servidor de banco de dados que você está tentando remover para este cliente é usado pelo mesmo. Certifique-se que este servidor não esteja em uso para este cliente antes de removê-lo.';
+$wb['mail_servers_txt'] = 'Servidores de e-mail';
+$wb['mail_servers_placeholder'] = 'Selecione os servidores de e-mail';
 $wb['no_mail_server_error'] = 'Ao menos um servidor de e-mail deve ser selecionado.';
-$wb['mail_servers_used'] = 'O servidor que você está tentando remover para este cliente é utilizado como um servidor de e-mails. Certifique-se de que este servidor não é usado por este cliente antes de removê-lo.';
-$wb['xmpp_limits_txt'] = 'Limites XMPP';
-$wb['xmpp_servers_txt'] = 'Servidores XMPP';
-$wb['xmpp_servers_placeholder'] = 'Selecione os servidores XMPP';
-$wb['no_xmpp_server_error'] = 'Ao menos um servidor XMPP deve ser selecionado.';
-$wb['xmpp_servers_used'] = 'O servidor que você está tentando remover para este cliente é utilizado como um servidor xmpp. Certifique-se de que este servidor não é usado por este cliente antes de removê-lo.';
-$wb['limit_xmpp_domain_error_notint'] = 'Limite de domínios xmpp deve ser um número.';
-$wb['limit_xmpp_user_error_notint'] = 'Limite de usuários xmpp deve ser um número.';
+$wb['mail_servers_used'] = 'O servidor de e-mails que você está tentando remover para este cliente é usado pelo mesmo. Certifique-se que este servidor não esteja em uso para este cliente antes de removê-lo.';
+$wb['customer_no_template_txt'] = 'Código do gabarito de clientes';
+$wb['customer_no_template_error_regex_txt'] = 'O código de gabarito de clientes possui caracteres inválidos.';
+$wb['customer_no_start_txt'] = 'Iniciar código de clientes em';
+$wb['customer_no_counter_txt'] = 'Contador de código do cliente';
+$wb['xmpp_limits_txt'] = 'Limites xmpp';
+$wb['xmpp_servers_txt'] = 'Servidores xmpp';
+$wb['xmpp_servers_placeholder'] = 'Selecione os servidores xmpp';
+$wb['no_xmpp_server_error'] = 'Ao menos um servidor xmpp deve ser selecionado.';
+$wb['xmpp_servers_used'] = 'O servidor xmpp que você está tentando remover para este cliente é usado pelo mesmo. Certifique-se que este servidor não esteja em uso para este cliente antes de removê-lo.';
+$wb['limit_xmpp_domain_error_notint'] = 'O limite de domínios xmpp deve ser um número.';
+$wb['limit_xmpp_user_error_notint'] = 'O limite de usuários xmpp deve ser um número.';
 $wb['limit_xmpp_domain_txt'] = 'Limite de domínios xmpp';
 $wb['limit_xmpp_user_txt'] = 'Limite de usuários xmpp';
-$wb['limit_xmpp_muc_txt'] = 'Chat multiusuário disponível';
+$wb['limit_xmpp_muc_txt'] = 'Chat multiusuário (MUC) disponível';
 $wb['limit_xmpp_pastebin_txt'] = 'Pastebin para MUC disponível';
 $wb['limit_xmpp_httparchive_txt'] = 'Arquivo HTTP para MUC disponível';
 $wb['limit_xmpp_anon_txt'] = 'Host anônimo disponível';
 $wb['limit_xmpp_vjud_txt'] = 'Diretório de usuário VJUD disponível';
-$wb['limit_xmpp_proxy_txt'] = 'Proxy bytestream disponível';
+$wb['limit_xmpp_proxy_txt'] = 'Proxy Bytestream disponível';
 $wb['limit_xmpp_status_txt'] = 'Estado do host disponível';
-$wb['invalid_vat_id'] = 'O VAT ID é é inválido.';
-$wb['limit_database_user_txt'] = 'Limite de usuários de banco de dados';
-$wb['limit_database_user_error_notint'] = 'Limite de usuários de banco de dados deve ser um número.';
-$wb['limit_database_quota_txt'] = 'Cota para banco de dados';
-$wb['limit_database_quota_error_notint'] = 'A cota para banco de dados deve ser um número.';
-$wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt disponível';
-$wb['limit_directive_snippets_txt'] = 'Exibir seleção das configurações do servidor de páginas';
-$wb['password_click_to_set_txt'] = 'Configurar';
+$wb['added_by_txt'] = 'Cadastrado por';
+$wb['added_date_txt'] = 'Data do cadastro';
+$wb['limit_domainmodule_error_notint'] = 'Limite de módulos de domínio deve ser um número.';
+$wb['limit_domainmodule_txt'] = 'Limite de módulos de domínio';
+$wb['client_limits_txt'] = 'Limite de clientes';
+$wb['err_msg_master_tpl_set'] = 'Todas as configurações de limites serão ignoradas se qualquer gabarito mestre ou personalizado for selecionado.';
+$wb['invalid_vat_id'] = 'O ID do VAT é inválido.';
+$wb['btn_save_txt'] = 'Salvar';
+$wb['btn_cancel_txt'] = 'Cancelar';
+$wb['email_error_empty'] = 'O endereço de e-mail está em branco.';
+$wb['limit_directive_snippets_txt'] = 'Exibir seleção de configuração do servidor web';
+$wb['limit_database_user_error_notint'] = 'O limite de usuários do banco de dados deve ser um número.';
+$wb['limit_database_quota_txt'] = 'Cota do banco de dados';
+$wb['limit_database_quota_error_notint'] = 'A cota do banco de dados deve ser um número.';
 $wb['Limits'] = 'Limites';
 ?>
diff --git a/interface/web/client/lib/lang/br_resellers_list.lng b/interface/web/client/lib/lang/br_resellers_list.lng
index 5a64358af9..1f67e7f593 100644
--- a/interface/web/client/lib/lang/br_resellers_list.lng
+++ b/interface/web/client/lib/lang/br_resellers_list.lng
@@ -6,6 +6,6 @@ $wb['contact_name_txt'] = 'Contato';
 $wb['city_txt'] = 'Cidade';
 $wb['country_txt'] = 'País';
 $wb['add_new_record_txt'] = 'Adicionar nova revenda';
-$wb['customer_no_txt'] = 'Código do Cliente';
+$wb['customer_no_txt'] = 'Código do cliente';
 $wb['username_txt'] = 'Usuário';
 ?>
diff --git a/interface/web/client/lib/lang/tr.lng b/interface/web/client/lib/lang/tr.lng
index 0f3df4d7a3..cc2e8aa022 100644
--- a/interface/web/client/lib/lang/tr.lng
+++ b/interface/web/client/lib/lang/tr.lng
@@ -16,14 +16,15 @@ $wb['delete_additional_template_txt'] = 'Ek Kalıbı Sil';
 $wb['Messaging'] = 'Ä°letiÅŸim';
 $wb['Send email'] = 'E-posta Gönderimi';
 $wb['Edit Client Circle'] = 'Müşteri Grubu Düzenleme';
-$wb['Domains'] = 'Alan Adları';
-$wb['domain_txt'] = 'Alan Adı';
+$wb['Domains'] = 'Etki Alanları';
+$wb['domain_txt'] = 'Etki Alanı';
 $wb['client_txt'] = 'Müşteri';
-$wb['error_domain_in mailuse'] = 'Bu alan adı e-posta alan adı olarak kullanıldığından silinemez';
-$wb['error_domain_in webuse'] = 'Bu alan adı web alan adı olarak kullanıldığından silinemez';
-$wb['error_client_can_not_add_domain'] = 'Yeni bir alan adı ekleyemezsiniz';
+$wb['error_domain_in dnsuse'] = 'Bu etki alanı birincil DNS bölgesi olarak kullanıldığından silinemez';
+$wb['error_domain_in dnsslaveuse'] = 'Bu etki alanı ikincil DNS bölgesi olarak kullanıldığından silinemez';
+$wb['error_domain_in mailuse'] = 'Bu etki alanı e-posta etki alanı olarak kullanıldığından silinemez';
+$wb['error_domain_in webuse'] = 'Bu etki alanı web etki alanı olarak kullanıldığından silinemez';
+$wb['error_client_can_not_add_domain'] = 'Yeni bir etki alanı ekleyemezsiniz';
+$wb['domain_txt'] = 'Etki Alanı';
 $wb['error_client_group_id_empty'] = 'Bir müşteri seçmelisiniz<br>';
-$wb['error_domain_in dnsuse'] = 'This domain cannot be deleted, because it is in use as dns zone';
-$wb['error_domain_in dnsslaveuse'] = 'This domain cannot be deleted, because it is in use as secondary dns zone';
-$wb['Email-Templates'] = 'Email-Templates';
+$wb['Email-Templates'] = 'E-posta Kalıpları';
 ?>
diff --git a/interface/web/client/lib/lang/tr_client.lng b/interface/web/client/lib/lang/tr_client.lng
index 765d9f1980..f071170966 100644
--- a/interface/web/client/lib/lang/tr_client.lng
+++ b/interface/web/client/lib/lang/tr_client.lng
@@ -1,24 +1,26 @@
 <?php
-$wb['limit_maildomain_txt'] = 'En Fazla E-posta Alan Adı Sayısı';
-$wb['limit_mailmailinglist_txt'] = 'En Fazla Posta Listesi Sayısı';
-$wb['limit_mailbox_txt'] = 'En Fazla Posta Kutusu Sayısı';
+$wb['limit_maildomain_txt'] = 'En Fazla E-posta Etki Alanı Sayısı';
+$wb['limit_mailmailinglist_txt'] = 'En Fazla E-posta Listesi Sayısı';
+$wb['limit_mailbox_txt'] = 'En Fazla E-posta Kutusu Sayısı';
 $wb['limit_mailalias_txt'] = 'En Fazla Takma E-posta Sayısı';
-$wb['limit_mailaliasdomain_txt'] = 'En Fazla Takma Alan Adı Sayısı';
+$wb['limit_mailaliasdomain_txt'] = 'En Fazla Takma Etki Alanı Sayısı';
 $wb['limit_mailforward_txt'] = 'En Fazla E-posta Yönlendirme Sayısı';
 $wb['limit_mailcatchall_txt'] = 'En Fazla Tümünü Al Hesabı Sayısı';
 $wb['limit_mailrouting_txt'] = 'En Fazla E-posta Yöneltici Sayısı';
 $wb['limit_mailfilter_txt'] = 'En Fazla E-posta Süzgeci Sayısı';
-$wb['limit_fetchmail_txt'] = 'En Fazla Posta Alma Hesabı Sayısı';
-$wb['limit_mailquota_txt'] = 'Posta Kutusu Kotası';
-$wb['limit_spamfilter_wblist_txt'] = 'En Fazla Önemsiz Posta Beyaz/Kara Liste Süzgeci Sayısı';
-$wb['limit_spamfilter_user_txt'] = 'En Fazla Önemsiz Posta Süzgeci Kullanıcısı Sayısı';
-$wb['limit_spamfilter_policy_txt'] = 'En Fazla Önemsiz Posta Süzgeci Kuralı Sayısı';
-$wb['default_mailserver_txt'] = 'Varsayılan Posta Sunucusu';
-$wb['company_name_txt'] = 'Kurum Adı';
+$wb['limit_fetchmail_txt'] = 'En Fazla E-posta Alma Hesabı Sayısı';
+$wb['limit_mailquota_txt'] = 'E-posta Kutusu Kotası';
+$wb['limit_spamfilter_wblist_txt'] = 'En Fazla Önemsiz İleti Beyaz/Kara Liste Süzgeci Sayısı';
+$wb['limit_spamfilter_user_txt'] = 'En Fazla Önemsiz İleti Süzgeci Kullanıcısı Sayısı';
+$wb['limit_spamfilter_policy_txt'] = 'En Fazla Önemsiz İleti Süzgeci Kuralı Sayısı';
+$wb['default_mailserver_txt'] = 'Varsayılan E-posta Sunucusu';
+$wb['company_name_txt'] = 'Kuruluş Adı';
+$wb['contact_firstname_txt'] = 'İlgili Adı';
 $wb['contact_name_txt'] = 'İlgili Adı';
 $wb['username_txt'] = 'Kullanıcı Adı';
 $wb['password_txt'] = 'Parola';
-$wb['password_strength_txt'] = 'Parola Güçlüğü';
+$wb['password_click_to_set_txt'] = 'Ayarlamak için tıklayın';
+$wb['password_strength_txt'] = 'Parola ZorluÄŸu';
 $wb['language_txt'] = 'Dil';
 $wb['usertheme_txt'] = 'Tema';
 $wb['street_txt'] = 'Adres';
@@ -33,8 +35,8 @@ $wb['email_txt'] = 'E-posta';
 $wb['internet_txt'] = 'Ä°nternet';
 $wb['icq_txt'] = 'ICQ';
 $wb['notes_txt'] = 'Notlar';
-$wb['company_txt'] = 'Kurum';
-$wb['title_txt'] = 'Ãœnvan';
+$wb['company_txt'] = 'KuruluÅŸ';
+$wb['title_txt'] = 'Unvan';
 $wb['firstname_txt'] = 'Ad';
 $wb['surname_txt'] = 'Soyad';
 $wb['limit_domain_txt'] = 'limit_domain';
@@ -42,16 +44,16 @@ $wb['limit_subdomain_txt'] = 'limit_subdomain';
 $wb['limit_webquota_txt'] = 'limit_webquota';
 $wb['limit_database_txt'] = 'En Fazla Veritabanı Sayısı';
 $wb['limit_cron_txt'] = 'En Fazla Zamanlanmış Görev Sayısı';
-$wb['limit_cron_type_txt'] = 'En Fazla Zamanlanmış Görev Tipi Sayısı (chroot ve tam İnternet adresi uygulama)';
+$wb['limit_cron_type_txt'] = 'En Fazla Zamanlanmış Görev Türü Sayısı (chroot ve tam İnternet adresi uygulama)';
 $wb['limit_cron_frequency_txt'] = 'İki Çalıştırma Arasındaki Süre';
 $wb['ip_address_txt'] = 'ip_address';
 $wb['limit_client_error_notint'] = 'Alt müşteri sınırı bir sayı olmalıdır.';
 $wb['firstname_error_empty'] = 'Ad boÅŸ olamaz.';
 $wb['contact_error_empty'] = 'İlgili adı boş olamaz.';
 $wb['default_webserver_txt'] = 'Varsayılan Web Sunucusu';
-$wb['limit_web_domain_txt'] = 'En Fazla Alan Adı Sayısı';
-$wb['limit_web_aliasdomain_txt'] = 'En Fazla Takma Alan Adı Sayısı';
-$wb['limit_web_subdomain_txt'] = 'En Fazla Alt Alan Adı Sayısı';
+$wb['limit_web_domain_txt'] = 'En Fazla Etki Alanı Sayısı';
+$wb['limit_web_aliasdomain_txt'] = 'En Fazla Takma Etki Alanı Sayısı';
+$wb['limit_web_subdomain_txt'] = 'En Fazla Alt Etki Alanı Sayısı';
 $wb['limit_ftp_user_txt'] = 'En Fazla FTP Kullanıcısı Sayısı';
 $wb['default_dnsserver_txt'] = 'Varsayılan DNS Sunucusu';
 $wb['limit_dns_zone_txt'] = 'En Fazla DNS Bölgesi Sayısı';
@@ -59,32 +61,35 @@ $wb['limit_dns_slave_zone_txt'] = 'En Fazla İkincil DNS Bölgesi Sayısı';
 $wb['limit_dns_record_txt'] = 'En Fazla DNS Kaydı Sayısı';
 $wb['limit_shell_user_txt'] = 'En Fazla Kabuk Kullanıcısı Sayısı';
 $wb['limit_webdav_user_txt'] = 'En Fazla Webdav Kullanıcısı Sayısı';
+$wb['limit_backup_txt'] = 'Yedekleme Özelliği Kullanılsın';
 $wb['limit_client_txt'] = 'En Fazla Müşteri Sayısı';
 $wb['username_error_empty'] = 'Kullanıcı adı boş olamaz.';
 $wb['username_error_unique'] = 'Bu kullanıcı adı zaten var.';
-$wb['limit_maildomain_error_notint'] = 'E-posta alan adı sınırı bir sayı olmalıdır.';
-$wb['limit_mailmailinglist_error_notint'] = 'Posta listesi kaydı sınırı bir sayı olmalıdır.';
-$wb['limit_mailbox_error_notint'] = 'Posta kutusu sınırı bir sayı olmalıdır.';
+$wb['limit_maildomain_error_notint'] = 'E-posta etki alanı sınırı bir sayı olmalıdır.';
+$wb['limit_mailmailinglist_error_notint'] = 'E-posta listesi kaydı sınırı bir sayı olmalıdır.';
+$wb['limit_mailbox_error_notint'] = 'E-posta kutusu sınırı bir sayı olmalıdır.';
 $wb['limit_mailalias_error_notint'] = 'Takma e-posta sınırı bir sayı olmalıdır.';
-$wb['limit_mailaliasdomain_error_notint'] = 'E-posta takma alan adı sınırı bir sayı olmalıdır.';
+$wb['limit_mailaliasdomain_error_notint'] = 'E-posta takma etki alanı sınırı bir sayı olmalıdır.';
 $wb['limit_mailforward_error_notint'] = 'E-posta yönlendirme sınırı bir sayı olmalıdır.';
 $wb['limit_mailcatchall_error_notint'] = 'E-posta tümünü al hesabı sınırı bir sayı olmalıdır.';
 $wb['limit_mailrouting_error_notint'] = 'E-posta yöneltici sınırı bir sayı olmalıdır.';
 $wb['limit_mailfilter_error_notint'] = 'E-posta süzgeci sınırı bir sayı olmalıdır.';
 $wb['limit_mailfetchmail_error_notint'] = 'E-posta alma sınırı bir sayı olmalıdır.';
 $wb['limit_mailquota_error_notint'] = 'E-posta kota sınırı bir sayı olmalıdır.';
-$wb['limit_spamfilter_wblist_error_notint'] = 'Önemsiz posta süzgeci beyaz/kara liste sınırı bir sayı olmalıdır.';
-$wb['limit_spamfilter_user_error_notint'] = 'Önemsiz posta süzgeci kullanıcısı sınırı bir sayı olmalıdır.';
-$wb['limit_spamfilter_policy_error_notint'] = 'Önemsiz posta süzgeci kuralı sınırı bir sayı olmalıdır.';
+$wb['limit_spamfilter_wblist_error_notint'] = 'Önemsiz ileti süzgeci beyaz/kara liste sınırı bir sayı olmalıdır.';
+$wb['limit_spamfilter_user_error_notint'] = 'Önemsiz ileti süzgeci kullanıcısı sınırı bir sayı olmalıdır.';
+$wb['limit_spamfilter_policy_error_notint'] = 'Önemsiz ileti süzgeci kuralı sınırı bir sayı olmalıdır.';
 $wb['limit_web_domain_error_notint'] = 'Web sitesi sınırı bir sayı olmalıdır.';
-$wb['limit_web_aliasdomain_error_notint'] = 'Web sitesi takma alan adı sınırı bir sayı olmalıdır.';
-$wb['limit_web_subdomain_error_notint'] = 'Web sitesi alt alan adı sınırı bir sayı olmalıdır.';
+$wb['limit_web_aliasdomain_error_notint'] = 'Web sitesi takma etki alanı sınırı bir sayı olmalıdır.';
+$wb['limit_web_subdomain_error_notint'] = 'Web sitesi alt etki alanı sınırı bir sayı olmalıdır.';
 $wb['limit_ftp_user_error_notint'] = 'FTP kullanıcısı sınırı bir sayı olmalıdır.';
 $wb['limit_shell_user_error_notint'] = 'Kabuk kullanıcısı sınırı bir sayı olmalıdır.';
 $wb['limit_webdav_user_error_notint'] = 'Webdav kullanıcısı sınırı bir sayı olmalıdır.';
-$wb['limit_dns_zone_error_notint'] = 'DNS kaydı sınırı bir sayı olmalıdır.';
+$wb['limit_dns_zone_error_notint'] = 'Birincil DNS kaydı sınırı bir sayı olmalıdır.';
 $wb['limit_dns_slave_zone_error_notint'] = 'İkincil DNS bölgesi sınırı bir sayı olmalıdır.';
+$wb['limit_dns_record_error_notint'] = 'DNS kaydı sınırı bir sayı olmalıdır.';
 $wb['default_dbserver_txt'] = 'Varsayılan Veritabanı Sunucusu';
+$wb['limit_database_txt'] = 'Veritabanı Sayısı';
 $wb['limit_database_error_notint'] = 'Veritabanı sınırı bir sayı olmalıdır.';
 $wb['limit_cron_error_notint'] = 'Zamanlanmış Görev sınırı bir sayı olmalıdır.';
 $wb['limit_cron_error_frequency'] = 'Zamanlanmış Görev sıklığı sınırı bir sayı olmalıdır.';
@@ -96,15 +101,16 @@ $wb['add_additional_template_txt'] = 'Ek Kalıbı Ekle';
 $wb['delete_additional_template_txt'] = 'Ek Kalıbı Sil';
 $wb['ssh_chroot_txt'] = 'SSH-Chroot Ayarları';
 $wb['web_php_options_txt'] = 'PHP Ayarları';
-$wb['limit_cgi_txt'] = 'CGI Kullanılabilir';
-$wb['limit_ssi_txt'] = 'SSI Kullanılabilir';
-$wb['limit_perl_txt'] = 'Perl Kullanılabilir';
-$wb['limit_ruby_txt'] = 'Ruby Kullanılabilir';
-$wb['limit_python_txt'] = 'Python Kullanılabilir';
-$wb['force_suexec_txt'] = 'SuEXEC Dayatılmış';
-$wb['limit_hterror_txt'] = 'Özel Hata Sayfaları Kullanılabilir';
-$wb['limit_wildcard_txt'] = 'Genel Alt Alan Adı Kullanılabilir';
-$wb['limit_ssl_txt'] = 'SSL Kullanılabilir';
+$wb['limit_cgi_txt'] = 'CGI Kullanılsın';
+$wb['limit_ssi_txt'] = 'SSI Kullanılsın';
+$wb['limit_perl_txt'] = 'Perl Kullanılsın';
+$wb['limit_ruby_txt'] = 'Ruby Kullanılsın';
+$wb['limit_python_txt'] = 'Python Kullanılsın';
+$wb['force_suexec_txt'] = 'SuEXEC Dayatılsın';
+$wb['limit_hterror_txt'] = 'Özel Hata Sayfaları Kullanılsın';
+$wb['limit_wildcard_txt'] = 'Genel Alt Etki Alanı Kullanılsın';
+$wb['limit_ssl_txt'] = 'SSL Kullanılsın';
+$wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt Kullanılsın';
 $wb['limit_client_error'] = 'Hesabınıza ekleyebileceğiniz en fazla müşteri sınırına ulaştınız.';
 $wb['limit_web_quota_txt'] = 'Web Kotası';
 $wb['limit_traffic_quota_txt'] = 'Trafik Kotası';
@@ -127,11 +133,12 @@ $wb['bank_account_iban_txt'] = 'IBAN';
 $wb['bank_account_swift_txt'] = 'BIC / Swift';
 $wb['web_limits_txt'] = 'Web Sınırları';
 $wb['email_limits_txt'] = 'E-posta Sınırları';
+$wb['xmpp_limits_txt'] = 'XMPP Sınırları';
 $wb['database_limits_txt'] = 'Veritabanı Sınırları';
 $wb['cron_job_limits_txt'] = 'Zamanlanmış Görev Sınırları';
 $wb['dns_limits_txt'] = 'DNS Sınırları';
 $wb['virtualization_limits_txt'] = 'Sanallaştırma Sınırları';
-$wb['generate_password_txt'] = 'Parola OluÅŸtur';
+$wb['generate_password_txt'] = 'Parola Ãœret';
 $wb['repeat_password_txt'] = 'Parola Onayı';
 $wb['password_mismatch_txt'] = 'Parola ile onayı aynı değil.';
 $wb['password_match_txt'] = 'Parola ile onayı aynı.';
@@ -139,66 +146,61 @@ $wb['email_error_isemail'] = 'Lütfen geçerli bir e-posta adresi yazın.';
 $wb['customer_no_error_unique'] = 'Müşteri numarası eşsiz (ya da boş) olmalıdır.';
 $wb['paypal_email_error_isemail'] = 'Lütfen geçerli bir PayPal e-posta adresi yazın.';
 $wb['paypal_email_txt'] = 'PayPal E-posta Adresi';
-$wb['err_msg_master_tpl_set'] = '\\"Özel\\" kalıptan başka bir ana kalıp seçilirse, tüm özel sınırlama ayarları yoksayılır.';
+$wb['err_msg_master_tpl_set'] = '"Özel" kalıptan başka bir ana kalıp seçilirse, tüm özel sınırlama ayarları yok sayılır.';
 $wb['aps_limits_txt'] = 'APS Yükleyici Sınırları';
 $wb['limit_aps_txt'] = 'En Fazla APS Kopyası Sayısı';
 $wb['limit_aps_error_notint'] = 'APS kopya sayısı sınırı bir sayı olmalıdır.';
 $wb['default_slave_dnsserver_txt'] = 'Varsayılan İkincil DNS Sunucusu';
 $wb['locked_txt'] = 'Kilitli<br/>(tüm web vb. devre dışı)';
 $wb['canceled_txt'] = 'İptal<br/>(müşteri oturumu devre dışı)';
-$wb['gender_txt'] = 'Ãœnvan';
+$wb['gender_txt'] = 'Unvan';
 $wb['gender_m_txt'] = 'Bay';
 $wb['gender_f_txt'] = 'Bayan';
+$wb['web_servers_txt'] = 'Web Sunucuları';
+$wb['web_servers_placeholder'] = 'Web Sunucularını Seçin';
+$wb['no_web_server_error'] = 'En az bir web sunucusu seçilmelidir.';
+$wb['web_servers_used'] = 'Bu müşteriden kaldırmaya çalıştığınız sunucu bir web sunucusu olarak kullanılıyor. Kaldırmadan önce bu sunucunun bu müşteri tarafından kullanılmadığından emin olun.';
+$wb['dns_servers_txt'] = 'DNS Sunucular';
+$wb['dns_servers_placeholder'] = 'DNS Sunucuları Seçin';
+$wb['no_dns_server_error'] = 'En az bir DNS sunucusu seçilmelidir.';
+$wb['dns_servers_used'] = 'Bu müşteriden kaldırmaya çalıştığınız sunucu bir DNS sunucusu olarak kullanılıyor. Kaldırmadan önce bu sunucunun bu müşteri tarafından kullanılmadığından emin olun';
+$wb['db_servers_txt'] = 'Veritabanı Sunucuları';
+$wb['db_servers_placeholder'] = 'Veritabanı Sunucularını Seçin';
+$wb['no_db_server_error'] = 'En az bir veritabanı sunucusu seçilmelidir.';
+$wb['db_servers_used'] = 'Bu müşteriden kaldırmaya çalıştığınız sunucu bir veritabanı sunucusu olarak kullanılıyor. Kaldırmadan önce bu sunucunun bu müşteri tarafından kullanılmadığından emin olun.';
+$wb['mail_servers_txt'] = 'E-posta Sunucuları';
+$wb['mail_servers_placeholder'] = 'E-posta Sunucularını Seçin';
+$wb['no_mail_server_error'] = 'En az bir e-posta sunucusu seçilmelidir.';
+$wb['mail_servers_used'] = 'Bu müşteriden kaldırmaya çalıştığınız sunucu bir e-posta sunucusu olarak kullanılıyor. Kaldırmadan önce bu sunucunun bu müşteri tarafından kullanılmadığından emin olun.';
+
+$wb['xmpp_servers_txt'] = 'XMPP Sunucular';
+$wb['xmpp_servers_placeholder'] = 'XMPP Sunucuları Seçin';
+$wb['no_xmpp_server_error'] = 'En az bir XMPP sunucusu seçilmelidir.';
+$wb['xmpp_servers_used'] = 'Bu müşteriden kaldırmaya çalıştığınız sunucu bir XMPP sunucusu olarak kullanılıyor. Kaldırmadan önce bu sunucunun bu müşteri tarafından kullanılmadığından emin olun.';
+$wb['limit_xmpp_domain_error_notint'] = 'XMPP etki alanı sınırı bir sayı olmalıdır.';
+$wb['limit_xmpp_user_error_notint'] = 'XMPP kullanıcı sınırı bir sayı olmalıdır.';
+$wb['limit_xmpp_domain_txt'] = 'En Fazla XMPP Etki Alanı Sayısı';
+$wb['limit_xmpp_user_txt'] = 'En Fazla XMPP Hesabı Sayısı';
+$wb['limit_xmpp_muc_txt'] = 'Çok Kullanıcılı Sohbet (ÇKS) Kullanılsın';
+$wb['limit_xmpp_pastebin_txt'] = 'ÇKS için Pastebin Kullanılsın';
+$wb['limit_xmpp_httparchive_txt'] = 'ÇKS için HTTP Arşivi Kullanılsın';
+$wb['limit_xmpp_anon_txt'] = 'Adsız Sunucu Kullanılsın';
+$wb['limit_xmpp_vjud_txt'] = 'VJUD Kullanıcı Klasörü Kullanılsın';
+$wb['limit_xmpp_proxy_txt'] = 'Bytestream Vekil Sunucusu Kullanılsın';
+$wb['limit_xmpp_status_txt'] = 'Durum Sunucusu Kullanılsın';
 $wb['added_by_txt'] = 'Ekleyen';
 $wb['added_date_txt'] = 'EklendiÄŸi Tarih';
 $wb['parent_client_id_txt'] = 'Bayi Müşterisi';
-$wb['none_txt'] = 'yok';
-$wb['contact_firstname_txt'] = 'Contact firstname';
-$wb['password_click_to_set_txt'] = 'Click to set';
-$wb['limit_backup_txt'] = 'Backupfunction available';
-$wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available';
-$wb['xmpp_limits_txt'] = 'XMPP Limits';
-$wb['web_servers_txt'] = 'Webservers';
-$wb['web_servers_placeholder'] = 'Select webservers';
-$wb['no_web_server_error'] = 'At least one webserver must be selected.';
-$wb['web_servers_used'] = 'The server you are trying to remove from this client is used as a webserver. Be sure that this server is not used by this client before you remove it.';
-$wb['dns_servers_txt'] = 'DNS servers';
-$wb['dns_servers_placeholder'] = 'Select DNS servers';
-$wb['no_dns_server_error'] = 'At least one DNS server must be selected.';
-$wb['dns_servers_used'] = 'The server you are trying to remove from this client is used as a DNS server. Be sure that this server is not used by this client before you remove it.';
-$wb['db_servers_txt'] = 'Database servers';
-$wb['db_servers_placeholder'] = 'Select database servers';
-$wb['no_db_server_error'] = 'At least one Database server must be selected.';
-$wb['db_servers_used'] = 'The server you are trying to remove from this client is used as a Database server. Be sure that this server is not used by this client before you remove it.';
-$wb['mail_servers_txt'] = 'Mailservers';
-$wb['mail_servers_placeholder'] = 'Select mailservers';
-$wb['no_mail_server_error'] = 'At least one mailserver must be selected.';
-$wb['mail_servers_used'] = 'The server you are trying to remove from this client is used as a Mailserver. Be sure that this server is not used by this client before you remove it.';
-$wb['xmpp_servers_txt'] = 'XMPP Servers';
-$wb['xmpp_servers_placeholder'] = 'Select XMPP Servers';
-$wb['no_xmpp_server_error'] = 'At least one XMPP Server must be selected.';
-$wb['xmpp_servers_used'] = 'The server you are trying to remove from this client is used as a XMPP Server. Be sure that this server is not used by this client before you remove it.';
-$wb['limit_xmpp_domain_error_notint'] = 'The XMPP domain limit must be a number.';
-$wb['limit_xmpp_user_error_notint'] = 'The XMPP user limit must be a number.';
-$wb['limit_xmpp_domain_txt'] = 'Max. number of XMPP domains';
-$wb['limit_xmpp_user_txt'] = 'Max. number of XMPP accounts';
-$wb['limit_xmpp_muc_txt'] = 'Multiuser chat available';
-$wb['limit_xmpp_pastebin_txt'] = 'Pastebin for MUC available';
-$wb['limit_xmpp_httparchive_txt'] = 'HTTP archive for MUC available';
-$wb['limit_xmpp_anon_txt'] = 'Anonymous host available';
-$wb['limit_xmpp_vjud_txt'] = 'VJUD user directory available';
-$wb['limit_xmpp_proxy_txt'] = 'Bytestream proxy available';
-$wb['limit_xmpp_status_txt'] = 'Status host available';
-$wb['limit_database_quota_txt'] = 'Database quota';
-$wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
-$wb['limit_database_user_txt'] = 'Max. Database users';
-$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
-$wb['reseller_txt'] = 'Reseller';
-$wb['btn_save_txt'] = 'Save';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['invalid_vat_id'] = 'The VAT ID is invalid.';
-$wb['email_error_empty'] = 'Email is empty';
-$wb['limit_directive_snippets_txt'] = 'Show web server config selection';
-$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
-$wb['Limits'] = 'Limits';
+$wb['none_txt'] = 'Yok';
+$wb['limit_database_quota_txt'] = 'Veritabanı Kotası';
+$wb['limit_database_quota_error_notint'] = 'Veritabanı kotası sınırı bir sayı olmalıdır.';
+$wb['limit_database_user_txt'] = 'En Fazla Veritabanı Kullanıcısı Sayısı';
+$wb['limit_database_user_error_notint'] = 'Veritabanı kullanıcı sınırı bir sayı olmalıdır.';
+$wb['reseller_txt'] = 'Bayi';
+$wb['btn_save_txt'] = 'Kaydet';
+$wb['btn_cancel_txt'] = 'Ä°ptal';
+$wb['invalid_vat_id'] = 'Vergi numarası geçersiz.';
+$wb['email_error_empty'] = 'E-posta boÅŸ olamaz.';
+$wb['limit_directive_snippets_txt'] = 'Web Sunucu Yapılandırma Seçimi Görüntülensin';
+$wb['Limits'] = 'Sınırlar';
 ?>
diff --git a/interface/web/client/lib/lang/tr_client_message_template.lng b/interface/web/client/lib/lang/tr_client_message_template.lng
index 885e2afc86..2b2994c557 100644
--- a/interface/web/client/lib/lang/tr_client_message_template.lng
+++ b/interface/web/client/lib/lang/tr_client_message_template.lng
@@ -1,13 +1,13 @@
 <?php
-$wb['template_type_txt'] = 'E-posta tipi';
-$wb['template_name_txt'] = 'Kalıp adı';
+$wb['template_type_txt'] = 'E-posta Türü';
+$wb['template_name_txt'] = 'Kalıp Adı';
 $wb['subject_txt'] = 'Konu';
 $wb['message_txt'] = 'Ä°leti';
-$wb['Email template'] = 'E-posta kalıbı';
+$wb['Email template'] = 'E-posta Kalıbı';
 $wb['Settings'] = 'Ayarlar';
 $wb['variables_txt'] = 'DeÄŸiÅŸkenler';
 $wb['variables_description_txt'] = '(Kullanıcı adı ve parola değişkenleri yalnız hoşgeldiniz e-postalarında kullanılabilir.)';
-$wb['duplicate_welcome_error'] = 'Yalnız bir varsayılan hoşgeldiniz e-postası kalıbı bulunabilir. Lütfen yeni bir tema eklemek yerine varolan temayı düzenlemeyi deneyin.';
-$wb['subject_error_empty'] = 'Subject is empty';
-$wb['message_error_empty'] = 'Message is empty';
+$wb['duplicate_welcome_error'] = 'Yalnız bir varsayılan hoşgeldiniz e-postası kalıbı bulunabilir. Lütfen yeni bir tema eklemek yerine var olan temayı düzenlemeyi deneyin.';
+$wb['subject_error_empty'] = 'Konu boÅŸ olamaz';
+$wb['message_error_empty'] = 'Ä°leti boÅŸ olamaz';
 ?>
diff --git a/interface/web/client/lib/lang/tr_client_message_template_list.lng b/interface/web/client/lib/lang/tr_client_message_template_list.lng
index d0f50c7fea..fb7fd944fe 100644
--- a/interface/web/client/lib/lang/tr_client_message_template_list.lng
+++ b/interface/web/client/lib/lang/tr_client_message_template_list.lng
@@ -1,5 +1,5 @@
 <?php
 $wb['list_head_txt'] = 'E-posta Kalıpları';
-$wb['template_type_txt'] = 'Ä°leti grubu';
-$wb['template_name_txt'] = 'Kalıp adı';
+$wb['template_type_txt'] = 'Ä°leti Grubu';
+$wb['template_name_txt'] = 'Kalıp Adı';
 ?>
diff --git a/interface/web/client/lib/lang/tr_client_template.lng b/interface/web/client/lib/lang/tr_client_template.lng
index da9f19f794..3091176448 100644
--- a/interface/web/client/lib/lang/tr_client_template.lng
+++ b/interface/web/client/lib/lang/tr_client_template.lng
@@ -1,61 +1,68 @@
 <?php
-$wb['template_type_txt'] = 'Kalıp Tipi';
+$wb['template_type_txt'] = 'Kalıp Türü';
 $wb['template_name_txt'] = 'Kalıp Adı';
-$wb['limit_client_error_notint'] = 'Müşteri sınırı bir sayı olmalı.';
-$wb['limit_maildomain_txt'] = 'En Fazla E-posta Alan Adı Sayısı';
-$wb['limit_mailbox_txt'] = 'En Fazla Posta Kutusu Sayısı';
+$wb['limit_client_error_notint'] = 'Müşteri sınırı bir sayı olmalıdır.';
+$wb['default_mailserver_txt'] = 'Varsayılan E-posta Sunucusu';
+$wb['limit_maildomain_txt'] = 'En Fazla E-posta Etki Alanı Sayısı';
+$wb['limit_mailbox_txt'] = 'En Fazla E-posta Kutusu Sayısı';
 $wb['limit_mailalias_txt'] = 'En Fazla Takma E-posta Sayısı';
-$wb['limit_mailaliasdomain_txt'] = 'En Fazla Takma Alan Adı Sayısı';
-$wb['limit_mailmailinglist_txt'] = 'En Fazla Posta Listesi Sayısı';
+$wb['limit_mailaliasdomain_txt'] = 'En Fazla Takma Etki Alanı Sayısı';
+$wb['limit_mailmailinglist_txt'] = 'En Fazla E-posta Listesi Sayısı';
 $wb['limit_mailforward_txt'] = 'En Fazla E-posta Yönlendirici Sayısı';
 $wb['limit_mailcatchall_txt'] = 'En Fazla Tümünü Al Hesabı Sayısı';
 $wb['limit_mailrouting_txt'] = 'En Fazla E-posta Yöneltici Sayısı';
 $wb['limit_mailfilter_txt'] = 'En Fazla E-posta Süzgeci Sayısı';
-$wb['limit_fetchmail_txt'] = 'En Fazla Posta Alma Hesabı Sayısı';
-$wb['limit_mailquota_txt'] = 'Posta Kutusu Kotası';
-$wb['limit_spamfilter_wblist_txt'] = 'En Fazla Önemsiz Posta Beyaz/Kara Liste Süzgeci Sayısı';
-$wb['limit_spamfilter_user_txt'] = 'En Fazla Önemsiz Posta Süzgeci Kullanıcı Sayısı';
-$wb['limit_spamfilter_policy_txt'] = 'En Fazla Önemsiz Posta Süzgeci Kuralı Sayısı';
+$wb['limit_fetchmail_txt'] = 'En Fazla E-posta Alma Hesabı Sayısı';
+$wb['limit_mailquota_txt'] = 'E-posta Kutusu Kotası';
+$wb['limit_spamfilter_wblist_txt'] = 'En Fazla Önemsiz İleti Beyaz/Kara Liste Süzgeci Sayısı';
+$wb['limit_spamfilter_user_txt'] = 'En Fazla Önemsiz İleti Süzgeci Kullanıcı Sayısı';
+$wb['limit_spamfilter_policy_txt'] = 'En Fazla Önemsiz İleti Süzgeci Kuralı Sayısı';
 $wb['limit_domain_txt'] = 'limit_domain';
 $wb['limit_subdomain_txt'] = 'limit_subdomain';
 $wb['limit_webquota_txt'] = 'limit_webquota';
 $wb['limit_database_txt'] = 'En Fazla Veritabanı Sayısı';
 $wb['limit_cron_txt'] = 'En Fazla Zamanlanmış Görev Sayısı';
-$wb['limit_cron_type_txt'] = 'En Fazla Zamanlanmış Görev Tipi (chroot ve tam İnternet adresi uygulanan)';
+$wb['limit_cron_type_txt'] = 'En Fazla Zamanlanmış Görev Türü (chroot ve tam İnternet adresi uygulanan)';
 $wb['limit_cron_frequency_txt'] = 'İki çalıştırma arasındaki süre';
-$wb['limit_web_domain_txt'] = 'En Fazla Alan Adı Sayısı';
-$wb['limit_web_aliasdomain_txt'] = 'En Fazla Takma Alan Adı Sayısı';
-$wb['limit_web_subdomain_txt'] = 'En Fazla Alt Alan Adı Sayısı';
+$wb['default_webserver_txt'] = 'Varsayılan Web Sunucusu';
+$wb['limit_web_domain_txt'] = 'En Fazla Etki Alanı Sayısı';
+$wb['limit_web_aliasdomain_txt'] = 'En Fazla Takma Etki Alanı Sayısı';
+$wb['limit_web_subdomain_txt'] = 'En Fazla Alt Etki Alanı Sayısı';
 $wb['limit_ftp_user_txt'] = 'En Fazla FTP Kullanıcısı Sayısı';
+$wb['default_dnsserver_txt'] = 'Varsayılan Birincil DNS Sunucusu';
 $wb['limit_dns_zone_txt'] = 'En Fazla DNS Bölgesi Sayısı';
-$wb['limit_dns_slave_zone_txt'] = 'En Fazla İkinci DNS Bölgesi Sayısı';
+$wb['default_slave_dnsserver_txt'] = 'Varsayılan İkincil DNS Sunucusu';
+$wb['limit_dns_slave_zone_txt'] = 'En Fazla İkincil DNS Bölgesi Sayısı';
 $wb['limit_dns_record_txt'] = 'En Fazla DNS Kaydı Sayısı';
 $wb['limit_shell_user_txt'] = 'En Fazla Kabuk Kullanıcısı Sayısı';
 $wb['limit_webdav_user_txt'] = 'En Fazla Webdav Kullanıcısı Sayısı';
+$wb['limit_backup_txt'] = 'Yedekleme Özelliği Kullanılsın';
 $wb['limit_client_txt'] = 'En Fazla Müşteri Sayısı';
-$wb['limit_maildomain_error_notint'] = 'E-posta alan adı sınırı bir sayı olmalıdır.';
-$wb['limit_mailmailinglist_error_notint'] = 'Posta listesi kaydı sınırı bir sayı olmalıdır.';
-$wb['limit_mailbox_error_notint'] = 'Posta kutusu sınırı bir sayı olmalıdır.';
+$wb['limit_maildomain_error_notint'] = 'E-posta etki alanı sınırı bir sayı olmalıdır.';
+$wb['limit_mailmailinglist_error_notint'] = 'E-posta listesi kaydı sınırı bir sayı olmalıdır.';
+$wb['limit_mailbox_error_notint'] = 'E-posta kutusu sınırı bir sayı olmalıdır.';
 $wb['limit_mailalias_error_notint'] = 'Takma e-posta sınırı bir sayı olmalıdır.';
-$wb['limit_mailaliasdomain_error_notint'] = 'Takma e-posta alan adı sınırı bir sayı olmalıdır.';
+$wb['limit_mailaliasdomain_error_notint'] = 'Takma e-posta etki alanı sınırı bir sayı olmalıdır.';
 $wb['limit_mailforward_error_notint'] = 'E-posta yönlendirme sınırı bir sayı olmalıdır.';
 $wb['limit_mailcatchall_error_notint'] = 'E-posta tümünü al sınırı bir sayı olmalıdır.';
 $wb['limit_mailrouting_error_notint'] = 'E-posta yöneltici sınırı bir sayı olmalıdır.';
 $wb['limit_mailfilter_error_notint'] = 'E-posta süzgeci sınırı bir sayı olmalıdır.';
-$wb['limit_mailfetchmail_error_notint'] = 'Posta alma sınırı bir sayı olmalıdır.';
+$wb['limit_mailfetchmail_error_notint'] = 'E-posta alma sınırı bir sayı olmalıdır.';
 $wb['limit_mailquota_error_notint'] = 'E-posta kotası sınırı bir sayı olmalıdır.';
-$wb['limit_spamfilter_wblist_error_notint'] = 'Önemsiz posta süzgeci beyaz/kara liste sınırı bir sayı olmalıdır.';
-$wb['limit_spamfilter_user_error_notint'] = 'Önemsiz posta süzgeci kullanıcı sınırı bir sayı olmalıdır.';
-$wb['limit_spamfilter_policy_error_notint'] = 'Önemsiz posta süzgeci kural sınırı bir sayı olmalıdır.';
+$wb['limit_spamfilter_wblist_error_notint'] = 'Önemsiz ileti süzgeci beyaz/kara liste sınırı bir sayı olmalıdır.';
+$wb['limit_spamfilter_user_error_notint'] = 'Önemsiz ileti süzgeci kullanıcı sınırı bir sayı olmalıdır.';
+$wb['limit_spamfilter_policy_error_notint'] = 'Önemsiz ileti süzgeci kural sınırı bir sayı olmalıdır.';
 $wb['limit_web_domain_error_notint'] = 'Web sitesi sınırı bir sayı olmalıdır.';
-$wb['limit_web_aliasdomain_error_notint'] = 'Web sitesi takma alan adı sınırı bir sayı olmalıdır.';
-$wb['limit_web_subdomain_error_notint'] = 'Web sitesi alt alan sınırı bir sayı olmalıdır.';
+$wb['limit_web_aliasdomain_error_notint'] = 'Web sitesi takma etki alanı sınırı bir sayı olmalıdır.';
+$wb['limit_web_subdomain_error_notint'] = 'Web sitesi alt etki alanı sınırı bir sayı olmalıdır.';
 $wb['limit_ftp_user_error_notint'] = 'FTP kullanıcı sınırı bir sayı olmalıdır.';
 $wb['limit_shell_user_error_notint'] = 'Kabuk kullanıcı sınırı bir sayı olmalıdır.';
 $wb['limit_webdav_user_error_notint'] = 'Webdav kullanıcı sınırı bir sayı olmalıdır.';
-$wb['limit_dns_zone_error_notint'] = 'DNS kaydı sınırı bir sayı olmalıdır.';
+$wb['limit_dns_zone_error_notint'] = 'Birincil DNS kaydı sınırı bir sayı olmalıdır.';
 $wb['limit_dns_slave_zone_error_notint'] = 'İkinci DNS bölgesi sınırı bir sayı olmalıdır.';
 $wb['limit_dns_record_error_notint'] = 'DNS kaydı sınırı bir sayı olmalıdır.';
+$wb['default_dbserver_txt'] = 'Varsayılan Veritabanı Sunucusu';
+$wb['limit_database_txt'] = 'En Fazla Veritabanı Sayısı';
 $wb['limit_database_error_notint'] = 'Veritabanı sınırı bir sayı olmalıdır.';
 $wb['limit_cron_error_notint'] = 'Zamanlanmış Görev sınırı bir sayı olmalıdır.';
 $wb['limit_cron_error_frequency'] = 'Zamanlanmış Görev sıklığı sınırı bir sayı olmalıdır.';
@@ -69,15 +76,16 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Dayatılacak Sanal Sunucu Kalıbı';
 $wb['limit_openvz_vm_error_notint'] = 'Sanal sunucu sınırı bir sayı olmalıdır.';
 $wb['ssh_chroot_txt'] = 'SSH-Chroot Ayarları';
 $wb['web_php_options_txt'] = 'PHP Ayarları';
-$wb['limit_cgi_txt'] = 'CGI Kullanılabilir';
-$wb['limit_ssi_txt'] = 'SSI Kullanılabilir';
-$wb['limit_perl_txt'] = 'Perl Kullanılabilir';
-$wb['limit_ruby_txt'] = 'Ruby Kullanılabilir';
-$wb['limit_python_txt'] = 'Python Kullanılabilir';
-$wb['force_suexec_txt'] = 'SuEXEC Dayatılmış';
-$wb['limit_hterror_txt'] = 'Özel Hata Sayfaları Kullanılabilir';
-$wb['limit_wildcard_txt'] = 'Genel Alt Alan Adı Kullanılabilir';
-$wb['limit_ssl_txt'] = 'SSL Kullanılabilir';
+$wb['limit_cgi_txt'] = 'CGI Kullanılsın';
+$wb['limit_ssi_txt'] = 'SSI Kullanılsın';
+$wb['limit_perl_txt'] = 'Perl Kullanılsın';
+$wb['limit_ruby_txt'] = 'Ruby Kullanılsın';
+$wb['limit_python_txt'] = 'Python Kullanılsın';
+$wb['force_suexec_txt'] = 'SuEXEC Dayatılsın';
+$wb['limit_hterror_txt'] = 'Özel Hata Sayfaları Kullanılsın';
+$wb['limit_wildcard_txt'] = 'Genel Alt Etki Alanı Kullanılsın';
+$wb['limit_ssl_txt'] = 'SSL Kullanılsın';
+$wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt Kullanılsın';
 $wb['web_limits_txt'] = 'Web Sınırları';
 $wb['email_limits_txt'] = 'E-posta Sınırları';
 $wb['database_limits_txt'] = 'Veritabanı Sınırları';
@@ -87,38 +95,33 @@ $wb['virtualization_limits_txt'] = 'Sanallaştırma Sınırları';
 $wb['aps_limits_txt'] = 'APS Yükleyici Sınırları';
 $wb['limit_aps_txt'] = 'En fazla APS kopyası sayısı';
 $wb['limit_aps_error_notint'] = 'APS kopyaları sınırı bir sayı olmalıdır.';
-$wb['limit_domainmodule_txt'] = 'Alan Adı Modülü Sınırı';
+$wb['limit_domainmodule_txt'] = 'Etki Alanı Modülü Sınırı';
 $wb['client_limits_txt'] = 'Müşteri Sınırları';
-$wb['default_mailserver_txt'] = 'Default Mailserver';
-$wb['default_webserver_txt'] = 'Default Webserver';
-$wb['default_dnsserver_txt'] = 'Default DNS Server';
-$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
-$wb['limit_backup_txt'] = 'Backupfunction available';
-$wb['default_dbserver_txt'] = 'Default Database Server';
-$wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available';
-$wb['limit_database_quota_txt'] = 'Database quota';
-$wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
-$wb['xmpp_limits_txt'] = 'XMPP Limits';
-$wb['xmpp_servers_txt'] = 'XMPP Servers';
-$wb['xmpp_servers_placeholder'] = 'Select XMPP Servers';
-$wb['no_xmpp_server_error'] = 'At least one XMPP Server must be selected.';
-$wb['xmpp_servers_used'] = 'The server you are trying to remove from this client is used as a XMPP Server. Be sure that this server is not used by this client before you remove it.';
-$wb['limit_xmpp_domain_error_notint'] = 'The XMPP domain limit must be a number.';
-$wb['limit_xmpp_user_error_notint'] = 'The XMPP user limit must be a number.';
-$wb['limit_xmpp_domain_txt'] = 'Max. number of XMPP domains';
-$wb['limit_xmpp_user_txt'] = 'Max. number of XMPP accounts';
-$wb['limit_xmpp_muc_txt'] = 'Multiuser chat available';
-$wb['limit_xmpp_pastebin_txt'] = 'Pastebin for MUC available';
-$wb['limit_xmpp_httparchive_txt'] = 'HTTP archive for MUC available';
-$wb['limit_xmpp_anon_txt'] = 'Anonymous host available';
-$wb['limit_xmpp_vjud_txt'] = 'VJUD user directory available';
-$wb['limit_xmpp_proxy_txt'] = 'Bytestream proxy available';
-$wb['limit_xmpp_status_txt'] = 'Status host available';
-$wb['dns_servers_txt'] = 'DNS servers';
-$wb['limit_directive_snippets_txt'] = 'Show web server config selection';
-$wb['limit_database_user_txt'] = 'Max. Database users';
-$wb['web_servers_txt'] = 'Webservers';
-$wb['db_servers_txt'] = 'Database servers';
-$wb['mail_servers_txt'] = 'Mailservers';
-$wb['Limits'] = 'Limits';
+$wb['limit_database_quota_txt'] = 'Veritabanı Kotası';
+$wb['limit_database_quota_error_notint'] = 'Veritabanı kotası sınırı değeri bir sayı olmalıdır.';
+$wb['xmpp_limits_txt'] = 'XMPP Sınırları';
+$wb['xmpp_servers_txt'] = 'XMPP Sunucuları';
+$wb['xmpp_servers_placeholder'] = 'XMPP Sunucularını Seçin';
+$wb['no_xmpp_server_error'] = 'En az bir XMPP sunucusu seçilmelidir.';
+$wb['xmpp_servers_used'] = 'Bu müşteriden kaldırmaya çalıştığınız sunucu bir XMPP sunucusu olarak kullanılıyor. Kaldırmadan önce bu sunucunun bu müşteri tarafından kullanılmadığından emin olun.';
+$wb['limit_xmpp_domain_error_notint'] = 'XMPP etki alanı sınırı bir sayı olmalıdır.';
+$wb['limit_xmpp_user_error_notint'] = 'XMPP kullanıcı sınırı bir sayı olmalıdır.';
+$wb['limit_xmpp_domain_txt'] = 'En fazla XMPP etki alanı sayısı';
+$wb['limit_xmpp_user_txt'] = 'En fazla XMPP hesabı sayısı';
+$wb['limit_xmpp_muc_txt'] = 'Çok Kullanıcılı Sohbet (ÇKS) Kullanılsın';
+$wb['limit_xmpp_pastebin_txt'] = 'ÇKS için Pastebin Kullanılsın';
+$wb['limit_xmpp_httparchive_txt'] = 'ÇKS için HTTP Arşivi Kullanılsın';
+$wb['limit_xmpp_anon_txt'] = 'Adsız Sunucu Kullanılsın';
+$wb['limit_xmpp_vjud_txt'] = 'VJUD Kullanıcı Klasörü Kullanılsın';
+$wb['limit_xmpp_proxy_txt'] = 'Bytestream Vekil Sunucusu Kullanılsın';
+$wb['limit_xmpp_status_txt'] = 'Durum Sunucusu Kullanılsın';
+$wb['dns_servers_txt'] = 'DNS Sunucular';
+$wb['limit_directive_snippets_txt'] = 'Web Sunucu Yapılandırma Seçimi Görüntülensin';
+$wb['limit_database_user_txt'] = 'En Fazla Veritabanı Kullanıcısı Sayısı';
+$wb['web_servers_txt'] = 'Web Sunucuları';
+$wb['db_servers_txt'] = 'Veritabanı Sunucuları';
+$wb['xmpp_servers_txt'] = 'XMPP Sunucuları';
+$wb['db_servers_txt'] = 'Veritabanı Sunucuları';
+$wb['mail_servers_txt'] = 'E-posta Sunucuları';
+$wb['Limits'] = 'Sınırlar';
 ?>
diff --git a/interface/web/client/lib/lang/tr_client_template_list.lng b/interface/web/client/lib/lang/tr_client_template_list.lng
index fbe35efc9e..cab3f906a4 100644
--- a/interface/web/client/lib/lang/tr_client_template_list.lng
+++ b/interface/web/client/lib/lang/tr_client_template_list.lng
@@ -1,7 +1,7 @@
 <?php
 $wb['list_head_txt'] = 'Müşteri ve Bayi Kalıpları';
-$wb['template_type_txt'] = 'Tip';
-$wb['template_name_txt'] = 'Kalıp adı';
-$wb['template_id_txt'] = 'Kalıp kodu';
-$wb['sys_groupid_txt'] = 'Reseller';
+$wb['template_type_txt'] = 'Tür';
+$wb['template_name_txt'] = 'Kalıp Adı';
+$wb['template_id_txt'] = 'Kalıp Kodu';
+$wb['sys_groupid_txt'] = 'Bayi';
 ?>
diff --git a/interface/web/client/lib/lang/tr_clients_list.lng b/interface/web/client/lib/lang/tr_clients_list.lng
index d59411a3d1..8b13f1c81b 100644
--- a/interface/web/client/lib/lang/tr_clients_list.lng
+++ b/interface/web/client/lib/lang/tr_clients_list.lng
@@ -1,14 +1,14 @@
 <?php
 $wb['list_head_txt'] = 'Müşteriler';
 $wb['client_id_txt'] = 'Kod';
-$wb['company_name_txt'] = 'Kurum Adı';
+$wb['company_name_txt'] = 'Kuruluş Adı';
 $wb['contact_name_txt'] = 'İlgili Adı';
 $wb['username_txt'] = 'Kullanıcı Adı';
 $wb['city_txt'] = 'Ä°l';
 $wb['country_txt'] = 'Ãœlke';
 $wb['add_new_record_txt'] = 'Müşteri Ekle';
 $wb['customer_no_txt'] = 'Müşteri No';
-$wb['locked_txt'] = 'Locked';
-$wb['yes_txt'] = 'Yes';
-$wb['no_txt'] = 'No';
+$wb['locked_txt'] = 'Kilitli';
+$wb['yes_txt'] = 'Evet';
+$wb['no_txt'] = 'Hayır';
 ?>
diff --git a/interface/web/client/lib/lang/tr_domain.lng b/interface/web/client/lib/lang/tr_domain.lng
index ba5dab700d..d0b4e228da 100644
--- a/interface/web/client/lib/lang/tr_domain.lng
+++ b/interface/web/client/lib/lang/tr_domain.lng
@@ -1,6 +1,6 @@
 <?php
-$wb['domain_error_empty'] = 'Alan adı boş olamaz';
-$wb['domain_error_unique'] = 'Aynı alan adı zaten var';
-$wb['domain_error_regex'] = 'Bu alan adına izin verilmiyor';
-$wb['Domain'] = 'Alan Adı';
+$wb['domain_error_empty'] = 'Etki alanı boş olamaz';
+$wb['domain_error_unique'] = 'Aynı etki alanı zaten var';
+$wb['domain_error_regex'] = 'Bu etki alanına izin verilmiyor';
+$wb['Domain'] = 'Etki Alanı';
 ?>
diff --git a/interface/web/client/lib/lang/tr_domain_list.lng b/interface/web/client/lib/lang/tr_domain_list.lng
index d422ef3d5d..8b6f75be84 100644
--- a/interface/web/client/lib/lang/tr_domain_list.lng
+++ b/interface/web/client/lib/lang/tr_domain_list.lng
@@ -1,6 +1,6 @@
 <?php
-$wb['list_head_txt'] = 'Alan Adları';
-$wb['add_new_record_txt'] = 'Alan Adı Ekle';
-$wb['domain_txt'] = 'Alan Adı';
+$wb['list_head_txt'] = 'Etki Alanları';
+$wb['add_new_record_txt'] = 'Etki Alanı Ekle';
+$wb['domain_txt'] = 'Etki Alanı';
 $wb['user_txt'] = 'Müşteri';
 ?>
diff --git a/interface/web/client/lib/lang/tr_reseller.lng b/interface/web/client/lib/lang/tr_reseller.lng
index 4906a894c0..e042301400 100644
--- a/interface/web/client/lib/lang/tr_reseller.lng
+++ b/interface/web/client/lib/lang/tr_reseller.lng
@@ -1,28 +1,30 @@
 <?php
-$wb['limit_maildomain_txt'] = 'En Fazla Alan Adı Sayısı';
-$wb['limit_mailmailinglist_txt'] = 'En Fazla Posta Listesi Sayısı';
-$wb['limit_mailbox_txt'] = 'En Fazla Posta Kutusu Sayısı';
+$wb['limit_maildomain_txt'] = 'En Fazla Etki Alanı Sayısı';
+$wb['limit_mailmailinglist_txt'] = 'En Fazla E-posta Listesi Sayısı';
+$wb['limit_mailbox_txt'] = 'En Fazla E-posta Kutusu Sayısı';
 $wb['limit_mailalias_txt'] = 'En Fazla Takma E-posta Sayısı';
-$wb['limit_mailaliasdomain_txt'] = 'En Fazla Takma Alan Adı Sayısı';
+$wb['limit_mailaliasdomain_txt'] = 'En Fazla Takma Etki Alanı Sayısı';
 $wb['limit_mailforward_txt'] = 'En Fazla E-posta Yönlendirici Sayısı';
 $wb['limit_mailcatchall_txt'] = 'En Fazla E-posta Tümünü Al Hesabı Sayısı';
 $wb['limit_mailrouting_txt'] = 'En Fazla E-posta Yöneltici Sayısı';
 $wb['limit_mailfilter_txt'] = 'En Fazla E-posta Süzgeci Sayısı';
-$wb['limit_fetchmail_txt'] = 'En Fazla Posta Alma Hesabı Sayısı';
-$wb['limit_mailquota_txt'] = 'Posta Kutusu Kotası';
-$wb['limit_spamfilter_wblist_txt'] = 'En Fazla Önemsiz Posta Beyaz/Kara Liste Süzgeci Sayısı';
-$wb['limit_spamfilter_user_txt'] = 'En Fazla Önemsiz Posta Kullanıcısı Sayısı';
-$wb['limit_spamfilter_policy_txt'] = 'En Fazla Önemsiz Posta Kuralı Sayısı';
-$wb['default_mailserver_txt'] = 'Varsayılan Posta Sunucusu';
-$wb['company_name_txt'] = 'Kurum Adı';
+$wb['limit_fetchmail_txt'] = 'En Fazla E-posta Alma Hesabı Sayısı';
+$wb['limit_mailquota_txt'] = 'E-posta Kutusu Kotası';
+$wb['limit_spamfilter_wblist_txt'] = 'En Fazla Önemsiz İleti Beyaz/Kara Liste Süzgeci Sayısı';
+$wb['limit_spamfilter_user_txt'] = 'En Fazla Önemsiz İleti Kullanıcısı Sayısı';
+$wb['limit_spamfilter_policy_txt'] = 'En Fazla Önemsiz İleti Kuralı Sayısı';
+$wb['default_mailserver_txt'] = 'Varsayılan E-posta Sunucusu';
+$wb['company_name_txt'] = 'Kuruluş Adı';
+$wb['contact_firstname_txt'] = 'İlgili Adı';
 $wb['contact_name_txt'] = 'İlgili Adı';
 $wb['username_txt'] = 'Kullanıcı Adı';
 $wb['password_txt'] = 'Parola';
-$wb['password_strength_txt'] = 'Parola Güçlüğü';
+$wb['password_click_to_set_txt'] = 'Ayarlamak için tıklayın';
+$wb['password_strength_txt'] = 'Parola ZorluÄŸu';
 $wb['language_txt'] = 'Dil';
 $wb['usertheme_txt'] = 'Tema';
 $wb['street_txt'] = 'Adres';
-$wb['zip_txt'] = 'Posta kodu';
+$wb['zip_txt'] = 'Posta Kodu';
 $wb['city_txt'] = 'İlçe';
 $wb['state_txt'] = 'Ä°l';
 $wb['country_txt'] = 'Ãœlke';
@@ -33,25 +35,26 @@ $wb['email_txt'] = 'E-posta';
 $wb['internet_txt'] = 'Ä°nternet';
 $wb['icq_txt'] = 'ICQ';
 $wb['notes_txt'] = 'Notlar';
-$wb['company_txt'] = 'Kurum';
-$wb['title_txt'] = 'Ãœnvan';
+$wb['company_txt'] = 'KuruluÅŸ';
+$wb['title_txt'] = 'Unvan';
 $wb['firstname_txt'] = 'Adı';
 $wb['surname_txt'] = 'Soyadı';
 $wb['limit_domain_txt'] = 'limit_domain';
 $wb['limit_subdomain_txt'] = 'limit_subdomain';
 $wb['limit_webquota_txt'] = 'limit_webquota';
 $wb['limit_database_txt'] = 'En Fazla Veritabanı Sayısı';
+$wb['limit_database_user_txt'] = 'En Fazla Veritabanı Kullanıcısı Sayısı';
 $wb['limit_cron_txt'] = 'En Fazla Zamanlanmış Görev Sayısı';
-$wb['limit_cron_type_txt'] = 'En Fazla Zamanlanmış Görev Tipi (chroot ve tam İnternet adresi uygulaması)';
+$wb['limit_cron_type_txt'] = 'En Fazla Zamanlanmış Görev Türü (chroot ve tam İnternet adresi uygulaması)';
 $wb['limit_cron_frequency_txt'] = 'İki Çalıştırma Arasındaki Süre';
 $wb['ip_address_txt'] = 'ip_adresi';
 $wb['limit_client_error_notint'] = 'Alt müşteri sınırı bir sayı olmalıdır.';
 $wb['firstname_error_empty'] = 'Adı boş olamaz.';
 $wb['contact_error_empty'] = 'İlgili adı boş olamaz.';
 $wb['default_webserver_txt'] = 'Varsayılan Web Sunucusu';
-$wb['limit_web_domain_txt'] = 'En Fazla Alan Adı Sayısı';
-$wb['limit_web_aliasdomain_txt'] = 'En Fazla Takma Alan Adı Sayısı';
-$wb['limit_web_subdomain_txt'] = 'En Fazla Alt Alan Adı Sayısı';
+$wb['limit_web_domain_txt'] = 'En Fazla Etki Alanı Sayısı';
+$wb['limit_web_aliasdomain_txt'] = 'En Fazla Takma Etki Alanı Sayısı';
+$wb['limit_web_subdomain_txt'] = 'En Fazla Alt Etki Alanı Sayısı';
 $wb['limit_ftp_user_txt'] = 'En Fazla FTP Kullanıcı Sayısı';
 $wb['default_dnsserver_txt'] = 'Varsayılan DNS Sunucusu';
 $wb['limit_dns_zone_txt'] = 'En Fazla DNS Bölgesi Sayısı';
@@ -59,32 +62,35 @@ $wb['limit_dns_slave_zone_txt'] = 'En Fazla İkincil DNS Bölgesi Sayısı';
 $wb['limit_dns_record_txt'] = 'En Fazla DNS Kaydı Sayısı';
 $wb['limit_shell_user_txt'] = 'En Fazla Kabuk Kullanıcısı Sayısı';
 $wb['limit_webdav_user_txt'] = 'En Fazla Webdav Kullanıcısı Sayısı';
+$wb['limit_backup_txt'] = 'Yedekleme Özelliği Kullanılsın';
 $wb['limit_client_txt'] = 'En Fazla Müşteri Sayısı';
 $wb['username_error_empty'] = 'Kullanıcı adı boş olamaz.';
 $wb['username_error_unique'] = 'Bu kullanıcı adı zaten var.';
-$wb['limit_maildomain_error_notint'] = 'E-posta alan adı sınırı bir sayı olmalıdır.';
-$wb['limit_mailmailinglist_error_notint'] = 'Posta listesi kaydı sınırı bir sayı olmalıdır.';
-$wb['limit_mailbox_error_notint'] = 'Posta kutusu sınırı bir sayı olmalıdır.';
+$wb['limit_maildomain_error_notint'] = 'E-posta etki alanı sınırı bir sayı olmalıdır.';
+$wb['limit_mailmailinglist_error_notint'] = 'E-posta listesi kaydı sınırı bir sayı olmalıdır.';
+$wb['limit_mailbox_error_notint'] = 'E-posta kutusu sınırı bir sayı olmalıdır.';
 $wb['limit_mailalias_error_notint'] = 'Takma e-posta sınırı bir sayı olmalıdır.';
 $wb['limit_mailforward_error_notint'] = 'E-posta yönlendirici sınırı bir sayı olmalıdır.';
 $wb['limit_mailcatchall_error_notint'] = 'E-posta tümünü al hesabı sınırı bir sayı olmalıdır.';
 $wb['limit_mailrouting_error_notint'] = 'E-posta yöneltici sınırı bir sayı olmalıdır.';
 $wb['limit_mailfilter_error_notint'] = 'E-posta süzgeci sınırı bir sayı olmalıdır.';
-$wb['limit_mailfetchmail_error_notint'] = 'Posta alıcısı sınırı bir sayı olmalıdır.';
+$wb['limit_mailfetchmail_error_notint'] = 'E-posta alıcısı sınırı bir sayı olmalıdır.';
 $wb['limit_mailquota_error_notint'] = 'E-posta kota sınırı bir sayı olmalıdır.';
-$wb['limit_spamfilter_wblist_error_notint'] = 'Önemsiz posta beyaz/kara liste süzgeci sınırı bir sayı olmalıdır.';
-$wb['limit_spamfilter_user_error_notint'] = 'Önemsiz posta süzgeci kullanıcısı sınırı bir sayı olmalıdır.';
-$wb['limit_spamfilter_policy_error_notint'] = 'Önemsiz posta süzgeci kuralı sınırı bir sayı olmalıdır.';
+$wb['limit_spamfilter_wblist_error_notint'] = 'Önemsiz ileti beyaz/kara liste süzgeci sınırı bir sayı olmalıdır.';
+$wb['limit_spamfilter_user_error_notint'] = 'Önemsiz ileti süzgeci kullanıcısı sınırı bir sayı olmalıdır.';
+$wb['limit_spamfilter_policy_error_notint'] = 'Önemsiz ileti süzgeci kuralı sınırı bir sayı olmalıdır.';
 $wb['limit_web_domain_error_notint'] = 'Web sitesi sınırı bir sayı olmalıdır.';
-$wb['limit_web_aliasdomain_error_notint'] = 'Web sitesi takma alan adı sınırı bir sayı olmalıdır.';
-$wb['limit_web_subdomain_error_notint'] = 'Web sitesi alt alan adı sınırı bir sayı olmalıdır.';
+$wb['limit_web_aliasdomain_error_notint'] = 'Web sitesi takma etki alanı sınırı bir sayı olmalıdır.';
+$wb['limit_web_subdomain_error_notint'] = 'Web sitesi alt etki alanı sınırı bir sayı olmalıdır.';
 $wb['limit_ftp_user_error_notint'] = 'FTP kullanıcı sınırı bir sayı olmalıdır.';
 $wb['limit_webdav_user_error_notint'] = 'Webdav kullanıcısı sınırı bir sayı olmalıdır.';
 $wb['limit_shell_user_error_notint'] = 'Kabuk kullanıcısı sınırı bir sayı olmalıdır.';
-$wb['limit_dns_zone_error_notint'] = 'DNS bölgesi sınırı bir sayı olmalıdır.';
+$wb['limit_dns_zone_error_notint'] = 'Birincil DNS bölgesi sınırı bir sayı olmalıdır.';
 $wb['limit_dns_slave_zone_error_notint'] = 'İkincil DNS bölgesi sınırı bir sayı olmalıdır.';
 $wb['limit_dns_record_error_notint'] = 'DNS kaydı sınırı bir sayı olmalıdır.';
+$wb['limit_client_error_notint'] = 'Müşteri sınırı bir sayı olmalıdır.';
 $wb['default_dbserver_txt'] = 'Varsayılan Veritabanı Sunucusu';
+$wb['limit_database_txt'] = 'En Fazla Veritabanı Sayısı';
 $wb['limit_database_error_notint'] = 'Veritabanı sınırı bir sayı olmalıdır.';
 $wb['limit_cron_error_notint'] = 'Zamanlanmış görev sınırı bir sayı olmalıdır.';
 $wb['limit_cron_error_frequency'] = 'Zamanlanmış görev sıklığı sınırı bir sayı olmalıdır.';
@@ -95,16 +101,18 @@ $wb['add_additional_template_txt'] = 'Ek Kalıbı Ekle';
 $wb['delete_additional_template_txt'] = 'Ek Kalıbı Sil';
 $wb['ssh_chroot_txt'] = 'SSH-Chroot Ayarları';
 $wb['web_php_options_txt'] = 'PHP Ayarları';
-$wb['limit_cgi_txt'] = 'CGI Kullanılabilir';
-$wb['limit_ssi_txt'] = 'SSI Kullanılabilir';
-$wb['limit_perl_txt'] = 'Perl Kullanılabilir';
-$wb['limit_ruby_txt'] = 'Ruby Kullanılabilir';
-$wb['limit_python_txt'] = 'Python Kullanılabilir';
-$wb['force_suexec_txt'] = 'SuEXEC Dayatılmış';
-$wb['limit_hterror_txt'] = 'Özel Hata Sayfaları Kullanılabilir';
-$wb['limit_wildcard_txt'] = 'Genel Alt Alan Kullanılabilir';
-$wb['limit_ssl_txt'] = 'SSL Kullanılabilir';
+$wb['limit_cgi_txt'] = 'CGI Kullanılsın';
+$wb['limit_ssi_txt'] = 'SSI Kullanılsın';
+$wb['limit_perl_txt'] = 'Perl Kullanılsın';
+$wb['limit_ruby_txt'] = 'Ruby Kullanılsın';
+$wb['limit_python_txt'] = 'Python Kullanılsın';
+$wb['force_suexec_txt'] = 'SuEXEC Dayatılsın';
+$wb['limit_hterror_txt'] = 'Özel Hata Sayfaları Kullanılsın';
+$wb['limit_wildcard_txt'] = 'Genel Alt Etki Alanı Kullanılsın';
+$wb['limit_ssl_txt'] = 'SSL Kullanılsın';
+$wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt Kullanılsın';
 $wb['limit_client_error'] = 'Hesabınıza ekleyebileceğiniz en fazla müşteri sayısına ulaştınız.';
+$wb['limit_client_error_positive_or_unlimited'] = 'Müşteri sayısı > 0 ya da -1 (sınırsız) olmalıdır';
 $wb['limit_web_quota_txt'] = 'Web Kotası';
 $wb['limit_traffic_quota_txt'] = 'Trafik Kotası';
 $wb['limit_trafficquota_error_notint'] = 'Trafik kotası bir sayı olmalıdır.';
@@ -123,7 +131,7 @@ $wb['database_limits_txt'] = 'Veritabanı Sınırları';
 $wb['cron_job_limits_txt'] = 'Zamanlanmış Görev Sınırları';
 $wb['dns_limits_txt'] = 'DNS Sınırları';
 $wb['virtualization_limits_txt'] = 'Sanallaştırma Sınırları';
-$wb['generate_password_txt'] = 'Parola OluÅŸtur';
+$wb['generate_password_txt'] = 'Parola Ãœret';
 $wb['repeat_password_txt'] = 'Parola Onayı';
 $wb['password_mismatch_txt'] = 'Parola ile onayı aynı değil.';
 $wb['password_match_txt'] = 'Parola ile onayı aynı.';
@@ -146,62 +154,58 @@ $wb['locked_txt'] = 'Kilitli';
 $wb['canceled_txt'] = 'Ä°ptal edilmiÅŸ';
 $wb['gender_m_txt'] = 'Bay';
 $wb['gender_f_txt'] = 'Bayan';
-$wb['gender_txt'] = 'Ãœnvan';
+$wb['gender_txt'] = 'Unvan';
+$wb['web_servers_txt'] = 'Web Sunucuları';
+$wb['web_servers_placeholder'] = 'Web Sunucularını Seçin';
+$wb['no_web_server_error'] = 'En az bir web sunucusu seçilmelidir.';
+$wb['web_servers_used'] = 'Bu müşteriden kaldırmaya çalıştığınız sunucu bir web sunucusu olarak kullanılıyor. Kaldırmadan önce bu sunucunun bu müşteri tarafından kullanılmadığından emin olun.';
+$wb['dns_servers_txt'] = 'DNS Sunucular';
+$wb['dns_servers_placeholder'] = 'DNS Sunucuları Seçin';
+$wb['no_dns_server_error'] = 'En az bir DNS sunucusu seçilmelidir.';
+$wb['dns_servers_used'] = 'Bu müşteriden kaldırmaya çalıştığınız sunucu bir DNS sunucusu olarak kullanılıyor. Kaldırmadan önce bu sunucunun bu müşteri tarafından kullanılmadığından emin olun';
+$wb['db_servers_txt'] = 'Veritabanı Sunucuları';
+$wb['db_servers_placeholder'] = 'Veritabanı Sunucularını Seçin';
+$wb['no_db_server_error'] = 'En az bir veritabanı sunucusu seçilmelidir.';
+$wb['db_servers_used'] = 'Bu müşteriden kaldırmaya çalıştığınız sunucu bir veritabanı sunucusu olarak kullanılıyor. Kaldırmadan önce bu sunucunun bu müşteri tarafından kullanılmadığından emin olun.';
+$wb['mail_servers_txt'] = 'E-posta Sunucuları';
+$wb['mail_servers_placeholder'] = 'E-posta Sunucularını Seçin';
+$wb['no_mail_server_error'] = 'En az bir e-posta sunucusu seçilmelidir.';
+$wb['mail_servers_used'] = 'Bu müşteriden kaldırmaya çalıştığınız sunucu bir e-posta sunucusu olarak kullanılıyor. Kaldırmadan önce bu sunucunun bu müşteri tarafından kullanılmadığından emin olun.';
 $wb['customer_no_template_txt'] = 'Müşteri No Kalıbı';
 $wb['customer_no_template_error_regex_txt'] = 'Müşteri no kalıbında geçersiz karakterler var';
 $wb['customer_no_start_txt'] = 'Müşteri No Başlangıç Değeri';
 $wb['customer_no_counter_txt'] = 'Müşteri No Sayacı';
+
+$wb['xmpp_limits_txt'] = 'XMPP Sınırları';
+$wb['xmpp_servers_txt'] = 'XMPP Sunucular';
+$wb['xmpp_servers_placeholder'] = 'XMPP Sunucuları Seçin';
+$wb['no_xmpp_server_error'] = 'En az bir XMPP sunucusu seçilmelidir.';
+$wb['xmpp_servers_used'] = 'Bu müşteriden kaldırmaya çalıştığınız sunucu bir XMPP sunucusu olarak kullanılıyor. Kaldırmadan önce bu sunucunun bu müşteri tarafından kullanılmadığından emin olun.';
+$wb['limit_xmpp_domain_error_notint'] = 'XMPP etki alanı sınırı bir sayı olmalıdır.';
+$wb['limit_xmpp_user_error_notint'] = 'XMPP kullanıcı sınırı bir sayı olmalıdır.';
+$wb['limit_xmpp_domain_txt'] = 'En Fazla XMPP Etki Alanı Sayısı';
+$wb['limit_xmpp_user_txt'] = 'En Fazla XMPP Hesabı Sayısı';
+$wb['limit_xmpp_muc_txt'] = 'Çok Kullanıcılı Sohbet (ÇKS) Kullanılsın';
+$wb['limit_xmpp_pastebin_txt'] = 'ÇKS için Pastebin Kullanılsın';
+$wb['limit_xmpp_httparchive_txt'] = 'ÇKS için HTTP Arşivi Kullanılsın';
+$wb['limit_xmpp_anon_txt'] = 'Adsız Sunucu Kullanılsın';
+$wb['limit_xmpp_vjud_txt'] = 'VJUD Kullanıcı Klasörü Kullanılsın';
+$wb['limit_xmpp_proxy_txt'] = 'Bytestream Vekil Sunucusu Kullanılsın';
+$wb['limit_xmpp_status_txt'] = 'Durum Sunucusu Kullanılsın';
 $wb['added_by_txt'] = 'Ekleyen';
 $wb['added_date_txt'] = 'EklendiÄŸi Tarih';
-$wb['limit_domainmodule_error_notint'] = 'Alan adı modülü sınırı bir sayı olmalıdır.';
-$wb['limit_domainmodule_txt'] = 'Alan Adı Modülü Sınırı';
+$wb['limit_domainmodule_error_notint'] = 'Etki alanı modülü sınırı bir sayı olmalıdır.';
+$wb['limit_domainmodule_txt'] = 'Etki Alanı Modülü Sınırı';
 $wb['client_limits_txt'] = 'Müşteri Sınırları';
-$wb['err_msg_master_tpl_set'] = '\\"Özel\\" kalıptan başka bir ana kalıp seçilirse, tüm özel sınırlama ayarları yoksayılır.';
-$wb['contact_firstname_txt'] = 'Contact firstname';
-$wb['password_click_to_set_txt'] = 'Click to set';
-$wb['limit_database_user_txt'] = 'Max. Database users';
-$wb['limit_backup_txt'] = 'Backupfunction available';
-$wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available';
-$wb['limit_client_error_positive_or_unlimited'] = 'The number of clients must be > 0 or -1 (unlimited)';
-$wb['web_servers_txt'] = 'Webservers';
-$wb['web_servers_placeholder'] = 'Select Webservers';
-$wb['no_web_server_error'] = 'At least one webserver must be selected.';
-$wb['web_servers_used'] = 'The server you are trying to remove from this client is used as a webserver. Be sure that this server is not used by this client before to remove it.';
-$wb['dns_servers_txt'] = 'DNS Server';
-$wb['dns_servers_placeholder'] = 'Select DNS Servers';
-$wb['no_dns_server_error'] = 'At least one DNS server must be selected.';
-$wb['dns_servers_used'] = 'The server you are trying to remove from this client is used as a DNS server. Be sure that this server is not used by this client before to remove it.';
-$wb['db_servers_txt'] = 'Database Server';
-$wb['db_servers_placeholder'] = 'Select Database Servers';
-$wb['no_db_server_error'] = 'At least one Database server must be selected.';
-$wb['db_servers_used'] = 'The server you are trying to remove from this client is used as a Database server. Be sure that this server is not used by this client before to remove it.';
-$wb['mail_servers_txt'] = 'Mailservers';
-$wb['mail_servers_placeholder'] = 'Select Mailservers';
-$wb['no_mail_server_error'] = 'At least one Mailserver must be selected.';
-$wb['mail_servers_used'] = 'The server you are trying to remove from this client is used as a Mailserver. Be sure that this server is not used by this client before to remove it.';
-$wb['xmpp_limits_txt'] = 'XMPP Limits';
-$wb['xmpp_servers_txt'] = 'XMPP Servers';
-$wb['xmpp_servers_placeholder'] = 'Select XMPP Servers';
-$wb['no_xmpp_server_error'] = 'At least one XMPP Server must be selected.';
-$wb['xmpp_servers_used'] = 'The server you are trying to remove from this client is used as a XMPP Server. Be sure that this server is not used by this client before you remove it.';
-$wb['limit_xmpp_domain_error_notint'] = 'The XMPP domain limit must be a number.';
-$wb['limit_xmpp_user_error_notint'] = 'The XMPP user limit must be a number.';
-$wb['limit_xmpp_domain_txt'] = 'Max. number of XMPP domains';
-$wb['limit_xmpp_user_txt'] = 'Max. number of XMPP accounts';
-$wb['limit_xmpp_muc_txt'] = 'Multiuser chat available';
-$wb['limit_xmpp_pastebin_txt'] = 'Pastebin for MUC available';
-$wb['limit_xmpp_httparchive_txt'] = 'HTTP archive for MUC available';
-$wb['limit_xmpp_anon_txt'] = 'Anonymous host available';
-$wb['limit_xmpp_vjud_txt'] = 'VJUD user directory available';
-$wb['limit_xmpp_proxy_txt'] = 'Bytestream proxy available';
-$wb['limit_xmpp_status_txt'] = 'Status host available';
-$wb['invalid_vat_id'] = 'The VAT ID is invalid.';
-$wb['btn_save_txt'] = 'Save';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['email_error_empty'] = 'Email is empty';
-$wb['limit_directive_snippets_txt'] = 'Show web server config selection';
-$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
-$wb['limit_database_quota_txt'] = 'Database quota';
-$wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
-$wb['Limits'] = 'Limits';
+$wb['err_msg_master_tpl_set'] = '"Özel" kalıptan başka bir ana kalıp seçilirse, tüm özel sınırlama ayarları yok sayılır.';
+$wb['invalid_vat_id'] = 'Vergi numarası geçersiz.';
+$wb['btn_save_txt'] = 'Kaydet';
+$wb['btn_cancel_txt'] = 'Ä°ptal';
+$wb['email_error_empty'] = 'E-posta boÅŸ olamaz.';
+$wb['limit_directive_snippets_txt'] = 'Web Sunucu Yapılandırma Seçimi Görüntülensin';
+$wb['limit_database_user_txt'] = 'En Fazla Veritabanı Kullanıcısı Sayısı';
+$wb['limit_database_user_error_notint'] = 'Veritabanı kullanıcı sınırı bir sayı olmalıdır.';
+$wb['limit_database_quota_txt'] = 'Veritabanı Kotası';
+$wb['limit_database_quota_error_notint'] = 'Veritabanı kotası sınırı bir sayı olmalıdır.';
+$wb['Limits'] = 'Sınırlar';
 ?>
diff --git a/interface/web/client/lib/lang/tr_resellers_list.lng b/interface/web/client/lib/lang/tr_resellers_list.lng
index 2cb388b96e..62116103c1 100644
--- a/interface/web/client/lib/lang/tr_resellers_list.lng
+++ b/interface/web/client/lib/lang/tr_resellers_list.lng
@@ -1,7 +1,7 @@
 <?php
 $wb['list_head_txt'] = 'Bayiler';
 $wb['client_id_txt'] = 'Kod';
-$wb['company_name_txt'] = 'Kurum Adı';
+$wb['company_name_txt'] = 'Kuruluş Adı';
 $wb['contact_name_txt'] = 'İlgili Adı';
 $wb['city_txt'] = 'Ä°l';
 $wb['country_txt'] = 'Ãœlke';
diff --git a/interface/web/dashboard/lib/lang/br.lng b/interface/web/dashboard/lib/lang/br.lng
index 05935493bb..4ad7fc9c3c 100644
--- a/interface/web/dashboard/lib/lang/br.lng
+++ b/interface/web/dashboard/lib/lang/br.lng
@@ -1,4 +1,4 @@
 <?php
 $wb['welcome_user_txt'] = 'Bem-vindo %s';
-$wb['available_modules_txt'] = 'Módulos Disponíveis';
+$wb['available_modules_txt'] = 'Módulos disponíveis';
 ?>
diff --git a/interface/web/dashboard/lib/lang/br_dashlet_customer.lng b/interface/web/dashboard/lib/lang/br_dashlet_customer.lng
index 5e73e41ff9..8c110cc29b 100644
--- a/interface/web/dashboard/lib/lang/br_dashlet_customer.lng
+++ b/interface/web/dashboard/lib/lang/br_dashlet_customer.lng
@@ -1,4 +1,4 @@
 <?php
-$wb['customerdata_txt'] = 'Meus Dados';
+$wb['customerdata_txt'] = 'Meus dados';
 $wb['edit_txt'] = 'Editar';
 ?>
diff --git a/interface/web/dashboard/lib/lang/br_dashlet_databasequota.lng b/interface/web/dashboard/lib/lang/br_dashlet_databasequota.lng
index de92eef6bf..9279d2230a 100644
--- a/interface/web/dashboard/lib/lang/br_dashlet_databasequota.lng
+++ b/interface/web/dashboard/lib/lang/br_dashlet_databasequota.lng
@@ -1,6 +1,6 @@
 <?php
-$wb['databasequota_txt'] = 'Cota para banco de dados';
-$wb['database_txt'] = 'Nome do banco de dados';
+$wb['databasequota_txt'] = 'Cota do banco de dados';
+$wb['database_txt'] = 'Banco de dados';
 $wb['used_txt'] = 'Espaço utilizado';
 $wb['quota_txt'] = 'Cota';
 $wb['no_database_accounts_txt'] = 'Nenhum banco de dados encontrado.';
diff --git a/interface/web/dashboard/lib/lang/br_dashlet_invoice_client_settings.lng b/interface/web/dashboard/lib/lang/br_dashlet_invoice_client_settings.lng
index 413177c83d..1ac4ee2fae 100644
--- a/interface/web/dashboard/lib/lang/br_dashlet_invoice_client_settings.lng
+++ b/interface/web/dashboard/lib/lang/br_dashlet_invoice_client_settings.lng
@@ -1,4 +1,4 @@
 <?php
-$wb['invoice_client_settings_txt'] = 'Configuração de Faturas do Cliente';
+$wb['invoice_client_settings_txt'] = 'Configurações de fatura de clientes';
 $wb['edit_txt'] = 'Editar';
 ?>
diff --git a/interface/web/dashboard/lib/lang/br_dashlet_invoices.lng b/interface/web/dashboard/lib/lang/br_dashlet_invoices.lng
index 2a5a0d9bcc..545c6994a6 100644
--- a/interface/web/dashboard/lib/lang/br_dashlet_invoices.lng
+++ b/interface/web/dashboard/lib/lang/br_dashlet_invoices.lng
@@ -1,18 +1,18 @@
 <?php
 $wb['invoices_txt'] = 'Faturas';
-$wb['invoice_no_txt'] = 'No. da Fatura';
+$wb['invoice_no_txt'] = 'No. da fatura';
 $wb['amount_txt'] = 'Quantidade';
 $wb['date_txt'] = 'Data';
 $wb['invoice_status_txt'] = 'Estado';
 $wb['no_invoices_txt'] = 'Nenhuma fatura disponível.';
 $wb['paid_txt'] = 'Pago';
-$wb['unpaid_txt'] = 'Aberto';
+$wb['unpaid_txt'] = 'A pagar';
 $wb['paynow_txt'] = 'pagar agora';
 $wb['proforma_txt'] = 'Proforma';
 $wb['refunded_txt'] = 'Devolvido';
-$wb['not_refunded_txt'] = 'Sem devolução';
+$wb['not_refunded_txt'] = 'Não reembolsado';
 $wb['invoice_type_invoice_txt'] = 'Fatura';
 $wb['invoice_type_proforma_txt'] = 'Proforma';
-$wb['invoice_type_refund_txt'] = 'Devolver';
+$wb['invoice_type_refund_txt'] = 'Reembolso';
 $wb['invoice_type_reminder_txt'] = 'Lembrar';
 ?>
diff --git a/interface/web/dashboard/lib/lang/br_dashlet_limits.lng b/interface/web/dashboard/lib/lang/br_dashlet_limits.lng
index 04c59b8835..72558f5797 100644
--- a/interface/web/dashboard/lib/lang/br_dashlet_limits.lng
+++ b/interface/web/dashboard/lib/lang/br_dashlet_limits.lng
@@ -1,34 +1,34 @@
 <?php
-$wb['limits_txt'] = 'Limites das contas';
+$wb['limits_txt'] = 'Limites de contas';
 $wb['of_txt'] = 'de';
-$wb['unlimited_txt'] = 'ilimitado';
-$wb['limit_maildomain_txt'] = 'Limite de domínios de e-mail';
-$wb['limit_mailbox_txt'] = 'Limite de contas de e-mail';
-$wb['limit_mailalias_txt'] = 'Limite de apelidos de domínio de e-mail';
-$wb['limit_mailaliasdomain_txt'] = 'Limite de subdomínios para e-mail';
-$wb['limit_mailforward_txt'] = 'Limite de redirecionamentos de e-mail';
-$wb['limit_mailcatchall_txt'] = 'Limite de contas cata tudo';
-$wb['limit_mailrouting_txt'] = 'Limite de transporte de e-mail';
-$wb['limit_mailfilter_txt'] = 'Limite de filtros de e-mail';
-$wb['limit_fetchmail_txt'] = 'Limite de contas de busca';
-$wb['limit_spamfilter_wblist_txt'] = 'Limite de filtros anti-spam lista branca/negra';
-$wb['limit_spamfilter_user_txt'] = 'Limite de usuários para filtros anti-spam';
-$wb['limit_spamfilter_policy_txt'] = 'Limite de políticas anti-spam';
-$wb['limit_cron_txt'] = 'Limite de tarefas no cron';
-$wb['limit_web_domain_txt'] = 'Limite de domínios de site';
-$wb['limit_web_aliasdomain_txt'] = 'Limite de apelidos de domínios de site';
-$wb['limit_web_subdomain_txt'] = 'Limite de subdomínios de site';
-$wb['limit_ftp_user_txt'] = 'Limite de contas ftp';
-$wb['limit_dns_zone_txt'] = 'Limite de zonas dns primárias';
-$wb['limit_dns_slave_zone_txt'] = 'Limite de zonas dns secundárias';
-$wb['limit_dns_record_txt'] = 'Limite de registros dns';
-$wb['limit_shell_user_txt'] = 'Limite de usuários shell';
-$wb['limit_webdav_user_txt'] = 'Limite de usuários webdav';
-$wb['limit_client_txt'] = 'Limite de clientes';
-$wb['limit_database_txt'] = 'Limite de banco de dados';
-$wb['limit_mailmailinglist_txt'] = 'Limite de listas de e-mails';
-$wb['limit_domain_txt'] = 'Limite de domínios';
-$wb['limit_mailquota_txt'] = 'Assigned mailbox quota';
-$wb['limit_web_quota_txt'] = 'Assigned web quota';
-$wb['limit_database_quota_txt'] = 'Assigned database quota';
+$wb['unlimited_txt'] = 'Ilimitado';
+$wb['limit_maildomain_txt'] = 'Número de domínios de e-mail';
+$wb['limit_mailmailinglist_txt'] = 'Número de listas de e-mail';
+$wb['limit_mailbox_txt'] = 'Número de contas de e-mail';
+$wb['limit_mailalias_txt'] = 'Número de alias de e-mail';
+$wb['limit_mailaliasdomain_txt'] = 'Número de alias de domínios de e-mail';
+$wb['limit_mailforward_txt'] = 'Número de encaminhamentos de e-mail';
+$wb['limit_mailcatchall_txt'] = 'Número de contas cata-tudo';
+$wb['limit_mailrouting_txt'] = 'Número de rotas de e-mail';
+$wb['limit_mailfilter_txt'] = 'Número de filtros de e-mail';
+$wb['limit_fetchmail_txt'] = 'Número de contas de busca';
+$wb['limit_spamfilter_wblist_txt'] = 'Número de filtros anti-spam "lista branca/negra"';
+$wb['limit_spamfilter_user_txt'] = 'Número de filtros anti-spam';
+$wb['limit_spamfilter_policy_txt'] = 'Número de políticas anti-spam';
+$wb['limit_cron_txt'] = 'Número de tarefas no cron';
+$wb['limit_web_domain_txt'] = 'Número de domínios de site';
+$wb['limit_web_aliasdomain_txt'] = 'Número de alias de domínios de site';
+$wb['limit_web_subdomain_txt'] = 'Número de subdomínios de site';
+$wb['limit_ftp_user_txt'] = 'Número de usuários ftp';
+$wb['limit_dns_zone_txt'] = 'Número de zonas dns';
+$wb['limit_dns_slave_zone_txt'] = 'Número de zonas dns secundárias';
+$wb['limit_dns_record_txt'] = 'Número de registros dns';
+$wb['limit_shell_user_txt'] = 'Número de usuários do shell';
+$wb['limit_webdav_user_txt'] = 'Número de usuários webdav';
+$wb['limit_client_txt'] = 'Número de clientes';
+$wb['limit_database_txt'] = 'Número de banco de dados';
+$wb['limit_domain_txt'] = 'Número de domínios';
+$wb['limit_mailquota_txt'] = 'Cotas atribuídas para contas de e-mail';
+$wb['limit_web_quota_txt'] = 'Cotas atribuídas para sites';
+$wb['limit_database_quota_txt'] = 'Cotas atribuídas para banco de dados';
 ?>
diff --git a/interface/web/dashboard/lib/lang/br_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/br_dashlet_mailquota.lng
index 8aa300dffa..d164a35661 100644
--- a/interface/web/dashboard/lib/lang/br_dashlet_mailquota.lng
+++ b/interface/web/dashboard/lib/lang/br_dashlet_mailquota.lng
@@ -1,6 +1,6 @@
 <?php
-$wb['mailquota_txt'] = 'Cota para contas de e-mail';
-$wb['email_txt'] = 'e-mail';
+$wb['mailquota_txt'] = 'Cota de contas de e-mail';
+$wb['email_txt'] = 'Endereço de e-mail';
 $wb['name_txt'] = 'Nome';
 $wb['used_txt'] = 'Espaço utilizado';
 $wb['quota_txt'] = 'Cota';
diff --git a/interface/web/dashboard/lib/lang/br_dashlet_modules.lng b/interface/web/dashboard/lib/lang/br_dashlet_modules.lng
index 80af885820..905d3d6007 100644
--- a/interface/web/dashboard/lib/lang/br_dashlet_modules.lng
+++ b/interface/web/dashboard/lib/lang/br_dashlet_modules.lng
@@ -1,4 +1,4 @@
 <?php
-$wb['available_modules_txt'] = 'Módulos Disponíveis';
+$wb['available_modules_txt'] = 'Módulos disponíveis';
 $wb['go_to_txt'] = 'Ir para';
 ?>
diff --git a/interface/web/dashboard/lib/lang/br_dashlet_products.lng b/interface/web/dashboard/lib/lang/br_dashlet_products.lng
index 129b144801..c750052ad7 100644
--- a/interface/web/dashboard/lib/lang/br_dashlet_products.lng
+++ b/interface/web/dashboard/lib/lang/br_dashlet_products.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['products_txt'] = 'Meus Produtos';
+$wb['products_txt'] = 'Meus produtos';
 $wb['name_txt'] = 'Nome';
 $wb['price_txt'] = 'Preço';
-$wb['next_payment_date_txt'] = 'Próxima Fatura';
+$wb['next_payment_date_txt'] = 'Próxima fatura';
 $wb['no_products_txt'] = 'Nenhum produto encontrado.';
 $wb['edit_txt'] = 'Editar';
 $wb['cancellation_date_txt'] = 'Cancelado por';
diff --git a/interface/web/dashboard/lib/lang/br_dashlet_quota.lng b/interface/web/dashboard/lib/lang/br_dashlet_quota.lng
index 080e45d4e7..589e3dca3e 100644
--- a/interface/web/dashboard/lib/lang/br_dashlet_quota.lng
+++ b/interface/web/dashboard/lib/lang/br_dashlet_quota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['quota_txt'] = 'Cota para sites';
+$wb['quota_txt'] = 'Cota de site (disco)';
 $wb['domain_txt'] = 'Domínio/Site';
 $wb['used_txt'] = 'Espaço utilizado';
-$wb['hard_txt'] = 'Limite';
+$wb['hard_txt'] = 'Limite para bloqueio';
 $wb['soft_txt'] = 'Limite para alerta';
 $wb['no_sites_txt'] = 'Nenhum site encontrado.';
 ?>
diff --git a/interface/web/dashboard/lib/lang/br_dashlet_shop.lng b/interface/web/dashboard/lib/lang/br_dashlet_shop.lng
index 48847abff4..9fd37d5250 100644
--- a/interface/web/dashboard/lib/lang/br_dashlet_shop.lng
+++ b/interface/web/dashboard/lib/lang/br_dashlet_shop.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['shop_txt'] = 'Pedido';
+$wb['shop_txt'] = 'Ordem';
 $wb['name_txt'] = 'Nome';
 $wb['price_txt'] = 'Preço';
-$wb['setup_fee_txt'] = 'Taxa Inicial';
+$wb['setup_fee_txt'] = 'Taxa criada';
 $wb['no_products_txt'] = 'Nenhum produto encontrado.';
-$wb['order_txt'] = 'Pedir';
+$wb['order_txt'] = 'Ordem';
 ?>
diff --git a/interface/web/dashboard/lib/lang/tr_dashlet_customer.lng b/interface/web/dashboard/lib/lang/tr_dashlet_customer.lng
index 4fe6cb0ef7..4902a83a09 100644
--- a/interface/web/dashboard/lib/lang/tr_dashlet_customer.lng
+++ b/interface/web/dashboard/lib/lang/tr_dashlet_customer.lng
@@ -1,4 +1,4 @@
 <?php
-$wb['customerdata_txt'] = 'My Data';
-$wb['edit_txt'] = 'Edit';
+$wb['customerdata_txt'] = 'Bilgilerim';
+$wb['edit_txt'] = 'Düzenle';
 ?>
diff --git a/interface/web/dashboard/lib/lang/tr_dashlet_databasequota.lng b/interface/web/dashboard/lib/lang/tr_dashlet_databasequota.lng
index bd2402dbf6..d8e8dfb89a 100644
--- a/interface/web/dashboard/lib/lang/tr_dashlet_databasequota.lng
+++ b/interface/web/dashboard/lib/lang/tr_dashlet_databasequota.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['databasequota_txt'] = 'Database Quota';
-$wb['database_txt'] = 'Database Name';
-$wb['used_txt'] = 'Used Space';
-$wb['quota_txt'] = 'Quota';
-$wb['no_database_accounts_txt'] = 'No databases found.';
+$wb['databasequota_txt'] = 'Veritabanı Kotası';
+$wb['database_txt'] = 'Veritabanı Adı';
+$wb['used_txt'] = 'Kullanılan Alan';
+$wb['quota_txt'] = 'Kota';
+$wb['no_database_accounts_txt'] = 'Henüz bir veritabanı yok.';
 ?>
diff --git a/interface/web/dashboard/lib/lang/tr_dashlet_donate.lng b/interface/web/dashboard/lib/lang/tr_dashlet_donate.lng
index e41c374cde..7324cb840d 100644
--- a/interface/web/dashboard/lib/lang/tr_dashlet_donate.lng
+++ b/interface/web/dashboard/lib/lang/tr_dashlet_donate.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['donate_txt'] = 'The ISPConfig Hosting Control Panel is free software. Maybe you are aware, that it takes a lot of time and effort to develop, maintain and support a software project of this complexity. If you want to support the further development of ISPConfig, please consider making a donation. As a bonus you will get a copy of the current ISPConfig Manual.';
-$wb['donate2_txt'] = 'The donation amount can be 5 EUR or more, the amount is chosen during checkout. The payment method is PayPal. You will receive an receipt as PDF from ISPConfig UG.';
-$wb['hide_btn_txt'] = 'Hide';
-$wb['donate_btn_txt'] = 'Support ISPConfig and get the Manual';
-$wb['more_btn_txt'] = 'More';
+$wb['donate_txt'] = 'ISPConfig Hosting Control Panel uygulaması ücretsiz dağıtılmaktadır. Belki bu düzeyde bir yazılımı geliştirmek, güncellemek ve desteklemek için çok fazla zaman ve emek harcandığının farkındasınızdır. ISPConfig uygulamasının geliştirmesine destek olmak için bağış yapmak isteyebilirsiniz.  Hediye olarak ISPConfig kılavuzunu alacaksınız.';
+$wb['donate2_txt'] = 'Bağış tutarı en az 5 EUR ya da ödeme sırasında seçeceğiniz başka bir tutar olabilir. Ödemeleri PayPal üzerinden alıyoruz. PDF alındısında ISPConfig UG yazar.';
+$wb['hide_btn_txt'] = 'Gizle';
+$wb['donate_btn_txt'] = 'ISPConfig uygulamasını destekleyerek kılavuzu edinin';
+$wb['more_btn_txt'] = 'Ayrıntılar';
 ?>
diff --git a/interface/web/dashboard/lib/lang/tr_dashlet_invoice_client_settings.lng b/interface/web/dashboard/lib/lang/tr_dashlet_invoice_client_settings.lng
index 8cae3dfb4f..b6b47cae90 100644
--- a/interface/web/dashboard/lib/lang/tr_dashlet_invoice_client_settings.lng
+++ b/interface/web/dashboard/lib/lang/tr_dashlet_invoice_client_settings.lng
@@ -1,4 +1,4 @@
 <?php
-$wb['invoice_client_settings_txt'] = 'Invoice Client Settings';
-$wb['edit_txt'] = 'Edit';
+$wb['invoice_client_settings_txt'] = 'Müşteri Fatura Ayarları';
+$wb['edit_txt'] = 'Düzenle';
 ?>
diff --git a/interface/web/dashboard/lib/lang/tr_dashlet_invoices.lng b/interface/web/dashboard/lib/lang/tr_dashlet_invoices.lng
index a680daa8f6..db24326749 100644
--- a/interface/web/dashboard/lib/lang/tr_dashlet_invoices.lng
+++ b/interface/web/dashboard/lib/lang/tr_dashlet_invoices.lng
@@ -1,18 +1,18 @@
 <?php
-$wb['invoices_txt'] = 'Invoices';
-$wb['invoice_no_txt'] = 'Invoice No.';
-$wb['amount_txt'] = 'Amount';
-$wb['date_txt'] = 'Date';
-$wb['invoice_status_txt'] = 'Status';
-$wb['no_invoices_txt'] = 'No Invoices available.';
-$wb['paid_txt'] = 'Paid';
-$wb['unpaid_txt'] = 'Unpaid';
-$wb['paynow_txt'] = 'pay now';
-$wb['proforma_txt'] = 'Proforma';
-$wb['refunded_txt'] = 'Refunded';
-$wb['not_refunded_txt'] = 'Not refunded';
-$wb['invoice_type_invoice_txt'] = 'Invoice';
-$wb['invoice_type_proforma_txt'] = 'Proforma';
-$wb['invoice_type_refund_txt'] = 'Refund';
-$wb['invoice_type_reminder_txt'] = 'Reminder';
+$wb['invoices_txt'] = 'Faturalar';
+$wb['invoice_no_txt'] = 'Fatura No';
+$wb['amount_txt'] = 'Tutar';
+$wb['date_txt'] = 'Tarih';
+$wb['invoice_status_txt'] = 'Durum';
+$wb['no_invoices_txt'] = 'Henüz bir fatura yok.';
+$wb['paid_txt'] = 'Ödendi';
+$wb['unpaid_txt'] = 'Ödenmedi';
+$wb['paynow_txt'] = 'Şimdi Öde';
+$wb['proforma_txt'] = 'Teklif';
+$wb['refunded_txt'] = 'Geri Ödendi';
+$wb['not_refunded_txt'] = 'Geri Ödenmedi';
+$wb['invoice_type_invoice_txt'] = 'Fatura';
+$wb['invoice_type_proforma_txt'] = 'Teklif';
+$wb['invoice_type_refund_txt'] = 'Geri Ödeme';
+$wb['invoice_type_reminder_txt'] = 'Anımsatıcı';
 ?>
diff --git a/interface/web/dashboard/lib/lang/tr_dashlet_limits.lng b/interface/web/dashboard/lib/lang/tr_dashlet_limits.lng
index a8869328f9..9fa1fb5b90 100644
--- a/interface/web/dashboard/lib/lang/tr_dashlet_limits.lng
+++ b/interface/web/dashboard/lib/lang/tr_dashlet_limits.lng
@@ -2,33 +2,33 @@
 $wb['limits_txt'] = 'Hesap Sınırları';
 $wb['of_txt'] = '/';
 $wb['unlimited_txt'] = 'Sınırsız';
-$wb['limit_maildomain_txt'] = 'E-posta Alan Adı Sayısı';
-$wb['limit_mailmailinglist_txt'] = 'Posta Listesi Sayısı';
-$wb['limit_mailbox_txt'] = 'Posta Kutusu Sayısı';
+$wb['limit_maildomain_txt'] = 'E-posta Etki Alanı Sayısı';
+$wb['limit_mailmailinglist_txt'] = 'E-posta Listesi Sayısı';
+$wb['limit_mailbox_txt'] = 'E-posta Kutusu Sayısı';
 $wb['limit_mailalias_txt'] = 'Takma E-posta Sayısı';
-$wb['limit_mailaliasdomain_txt'] = 'Takma Alan Adı Sayısı';
+$wb['limit_mailaliasdomain_txt'] = 'Takma Etki Alanı Sayısı';
 $wb['limit_mailforward_txt'] = 'E-posta Yönlendirici Sayısı';
 $wb['limit_mailcatchall_txt'] = 'E-posta Tümünü Al Hesabı Sayısı';
 $wb['limit_mailrouting_txt'] = 'E-posta Yöneltici Sayısı';
 $wb['limit_mailfilter_txt'] = 'E-posta Süzgeci Sayısı';
-$wb['limit_fetchmail_txt'] = 'Posta Alma Hesabı Sayısı';
-$wb['limit_spamfilter_wblist_txt'] = 'Önemsiz Posta Beyaz/Kara Liste Sayısı';
-$wb['limit_spamfilter_user_txt'] = 'Önemsiz Posta Süzgeci Kullanıcı Sayısı';
-$wb['limit_spamfilter_policy_txt'] = 'Önemsiz Posta Kuralı Sayısı';
+$wb['limit_fetchmail_txt'] = 'E-posta Alma Hesabı Sayısı';
+$wb['limit_spamfilter_wblist_txt'] = 'Önemsiz İleti Beyaz/Kara Liste Sayısı';
+$wb['limit_spamfilter_user_txt'] = 'Önemsiz İleti Süzgeci Kullanıcı Sayısı';
+$wb['limit_spamfilter_policy_txt'] = 'Önemsiz İletia Kuralı Sayısı';
 $wb['limit_cron_txt'] = 'Zamanlanmış Görev Sayısı';
-$wb['limit_web_domain_txt'] = 'Web Alan Adı Sayısı';
-$wb['limit_web_aliasdomain_txt'] = 'Web Takma Alan Adı Sayısı';
-$wb['limit_web_subdomain_txt'] = 'Web Alt Alan Adı Sayısı';
+$wb['limit_web_domain_txt'] = 'Web Etki Alanı Sayısı';
+$wb['limit_web_aliasdomain_txt'] = 'Web Takma Etki Alanı Sayısı';
+$wb['limit_web_subdomain_txt'] = 'Web Alt Etki Alanı Sayısı';
 $wb['limit_ftp_user_txt'] = 'FTP Kullanıcı Sayısı';
 $wb['limit_dns_zone_txt'] = 'DNS Bölgesi Sayısı';
-$wb['limit_dns_slave_zone_txt'] = 'İkinci DNS Bölgesi Sayısı';
+$wb['limit_dns_slave_zone_txt'] = 'İkincil DNS Bölgesi Sayısı';
 $wb['limit_dns_record_txt'] = 'DNS Kayıtları Sayısı';
 $wb['limit_shell_user_txt'] = 'Kabuk Kullanıcısı Sayısı';
 $wb['limit_webdav_user_txt'] = 'Webdav Kullanıcı Sayısı';
 $wb['limit_client_txt'] = 'Müşteri Sayısı';
 $wb['limit_database_txt'] = 'Veritabanı Sayısı';
-$wb['limit_domain_txt'] = 'Alan Adı Sayısı';
-$wb['limit_mailquota_txt'] = 'Assigned mailbox quota';
-$wb['limit_web_quota_txt'] = 'Assigned web quota';
-$wb['limit_database_quota_txt'] = 'Assigned database quota';
+$wb['limit_domain_txt'] = 'Etki Alanı Sayısı';
+$wb['limit_mailquota_txt'] = 'E-posta Kutusu Alanı Kotası';
+$wb['limit_web_quota_txt'] = 'Web Sitesi Alanı Kotası';
+$wb['limit_database_quota_txt'] = 'Veritabanı Alanı Kotası';
 ?>
diff --git a/interface/web/dashboard/lib/lang/tr_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/tr_dashlet_mailquota.lng
index bee7e8677f..67888a818e 100644
--- a/interface/web/dashboard/lib/lang/tr_dashlet_mailquota.lng
+++ b/interface/web/dashboard/lib/lang/tr_dashlet_mailquota.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['mailquota_txt'] = 'Posta Kutusu Kotası';
+$wb['mailquota_txt'] = 'E-posta Kutusu Kotası';
 $wb['email_txt'] = 'E-posta Adresi';
 $wb['name_txt'] = 'Ad';
 $wb['used_txt'] = 'Kullanılan Alan';
diff --git a/interface/web/dashboard/lib/lang/tr_dashlet_modules.lng b/interface/web/dashboard/lib/lang/tr_dashlet_modules.lng
index c551510a50..ce75e96210 100644
--- a/interface/web/dashboard/lib/lang/tr_dashlet_modules.lng
+++ b/interface/web/dashboard/lib/lang/tr_dashlet_modules.lng
@@ -1,4 +1,4 @@
 <?php
 $wb['available_modules_txt'] = 'Kullanılabilecek Modüller';
-$wb['go_to_txt'] = 'Go to';
+$wb['go_to_txt'] = '';
 ?>
diff --git a/interface/web/dashboard/lib/lang/tr_dashlet_products.lng b/interface/web/dashboard/lib/lang/tr_dashlet_products.lng
index a69b61d2fb..11aa2e519d 100644
--- a/interface/web/dashboard/lib/lang/tr_dashlet_products.lng
+++ b/interface/web/dashboard/lib/lang/tr_dashlet_products.lng
@@ -1,9 +1,9 @@
 <?php
-$wb['products_txt'] = 'My Products';
-$wb['name_txt'] = 'Name';
-$wb['price_txt'] = 'Price';
-$wb['next_payment_date_txt'] = 'Next Invoice';
-$wb['no_products_txt'] = 'No products found.';
-$wb['edit_txt'] = 'Edit';
-$wb['cancellation_date_txt'] = 'Cancelled by';
+$wb['products_txt'] = 'Ürünlerim';
+$wb['name_txt'] = 'Ad';
+$wb['price_txt'] = 'Fiyat';
+$wb['next_payment_date_txt'] = 'Sonraki Fatura';
+$wb['no_products_txt'] = 'Henüz bir ürün yok.';
+$wb['edit_txt'] = 'Düzenle';
+$wb['cancellation_date_txt'] = 'Ä°ptal eden:';
 ?>
diff --git a/interface/web/dashboard/lib/lang/tr_dashlet_quota.lng b/interface/web/dashboard/lib/lang/tr_dashlet_quota.lng
index 5a757be6f7..c49fcba522 100644
--- a/interface/web/dashboard/lib/lang/tr_dashlet_quota.lng
+++ b/interface/web/dashboard/lib/lang/tr_dashlet_quota.lng
@@ -1,8 +1,8 @@
 <?php
 $wb['quota_txt'] = 'Web Sitesi Disk Kotası';
-$wb['domain_txt'] = 'Alan Adı / Web Sitesi';
+$wb['domain_txt'] = 'Etki Alanı / Web Sitesi';
 $wb['used_txt'] = 'Kullanılan Alan';
-$wb['hard_txt'] = 'Donanım sınırı';
-$wb['soft_txt'] = 'Yazılım sınırı';
+$wb['hard_txt'] = 'Donanım Sınırı';
+$wb['soft_txt'] = 'Yazılım Sınırı';
 $wb['no_sites_txt'] = 'Henüz bir web sitesi yok.';
 ?>
diff --git a/interface/web/dashboard/lib/lang/tr_dashlet_shop.lng b/interface/web/dashboard/lib/lang/tr_dashlet_shop.lng
index 1e0b5361d7..59e629889f 100644
--- a/interface/web/dashboard/lib/lang/tr_dashlet_shop.lng
+++ b/interface/web/dashboard/lib/lang/tr_dashlet_shop.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['shop_txt'] = 'Order';
-$wb['name_txt'] = 'Name';
-$wb['price_txt'] = 'Price';
-$wb['setup_fee_txt'] = 'Setup Fee';
-$wb['no_products_txt'] = 'No products found.';
-$wb['order_txt'] = 'Order';
+$wb['shop_txt'] = 'SipariÅŸ';
+$wb['name_txt'] = 'Ad';
+$wb['price_txt'] = 'Fiyat';
+$wb['setup_fee_txt'] = 'Kurulum Ãœcreti';
+$wb['no_products_txt'] = 'Herhangi bir ürün bulunamadı.';
+$wb['order_txt'] = 'SipariÅŸ';
 ?>
diff --git a/interface/web/dns/lib/lang/br.lng b/interface/web/dns/lib/lang/br.lng
index b45d1575af..9228373fdf 100644
--- a/interface/web/dns/lib/lang/br.lng
+++ b/interface/web/dns/lib/lang/br.lng
@@ -1,4 +1,5 @@
 <?php
+
 $wb['DNS'] = 'DNS';
 $wb['Zones'] = 'Zonas';
 $wb['DNS A'] = 'A';
@@ -9,14 +10,15 @@ $wb['DNS mx'] = 'MX';
 $wb['DNS ns'] = 'NS';
 $wb['DNS ptr'] = 'PTR';
 $wb['DNS RP'] = 'RP';
-$wb['DNS Zone'] = 'Zona';
+$wb['DNS Zone'] = 'ZONA';
 $wb['Records'] = 'Registros';
 $wb['DNS SRV'] = 'SRV';
 $wb['DNS TXT Record'] = 'Registro TXT';
 $wb['DNS TXT'] = 'TXT';
-$wb['DNS Wizard'] = 'Assistente dns';
-$wb['Add DNS Zone'] = 'Adicionar nova zona';
-$wb['Import Zone File'] = 'Importar arquivo de zona';
+$wb['DNS Wizard'] = 'Assistente DNS';
+$wb['Add DNS Zone'] = 'Adicionar zona dns';
 $wb['Templates'] = 'Gabaritos';
+$wb['Secondary DNS'] = 'DNS secundário';
 $wb['Secondary Zones'] = 'Zonas secundárias';
+$wb['Import Zone File'] = 'Importar arquivo de zona';
 ?>
diff --git a/interface/web/dns/lib/lang/br_dns_a.lng b/interface/web/dns/lib/lang/br_dns_a.lng
index 93704528e2..f96cf551e6 100644
--- a/interface/web/dns/lib/lang/br_dns_a.lng
+++ b/interface/web/dns/lib/lang/br_dns_a.lng
@@ -1,17 +1,17 @@
 <?php
 $wb['server_id_txt'] = 'Servidor';
 $wb['zone_txt'] = 'Zona';
-$wb['name_txt'] = 'Nome';
+$wb['name_txt'] = 'Nome do host';
 $wb['type_txt'] = 'Tipo';
 $wb['data_txt'] = 'Endereço IP';
 $wb['ttl_txt'] = 'TTL';
 $wb['active_txt'] = 'Ativo';
-$wb['limit_dns_record_txt'] = 'O limite de zonas dns para esta conta foi alcançado.';
-$wb['no_zone_perm'] = 'Você não tem permissão para adicionar registros a esta zona dns.';
-$wb['name_error_empty'] = 'Nome está em branco.';
-$wb['name_error_regex'] = 'Nome é inválido.';
+$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'] = 'Endereço IP está em branco.';
-$wb['ip_error_wrong'] = 'Endereço IP é inválido.';
-$wb['data_error_duplicate'] = 'Registro A duplicado.';
-$wb['ttl_range_error'] = 'O ttl mínimo são 60 segundos.';
+$wb['ip_error_wrong'] = 'Endereço IP inválido.';
+$wb['data_error_duplicate'] = 'Registro A ou CNAME duplicado.';
+$wb['ttl_range_error'] = 'O TTL mínimo são 60 segundos.';
 ?>
diff --git a/interface/web/dns/lib/lang/br_dns_a_list.lng b/interface/web/dns/lib/lang/br_dns_a_list.lng
index 0abaf5493d..6387c14cbe 100644
--- a/interface/web/dns/lib/lang/br_dns_a_list.lng
+++ b/interface/web/dns/lib/lang/br_dns_a_list.lng
@@ -1,14 +1,14 @@
 <?php
-$wb['list_head_txt'] = 'Registro (A)';
+$wb['list_head_txt'] = 'Registro A';
 $wb['active_txt'] = 'Ativo';
 $wb['server_id_txt'] = 'Servidor';
 $wb['zone_txt'] = 'Zona';
 $wb['name_txt'] = 'Nome';
-$wb['data_txt'] = 'Data';
+$wb['data_txt'] = 'Dados';
 $wb['aux_txt'] = 'Prioridade';
-$wb['type_txt'] = 'Tipo';
 $wb['ttl_txt'] = 'TTL';
-$wb['add_new_record_txt'] = 'Adicionar um novo registro (A)';
+$wb['type_txt'] = 'Tipo';
+$wb['add_new_record_txt'] = 'Adicionar novo registro A';
 $wb['page_txt'] = 'Página';
 $wb['page_of_txt'] = 'de';
 $wb['delete_confirmation'] = 'Tem certeza que deseja remover este registro?';
diff --git a/interface/web/dns/lib/lang/br_dns_aaaa.lng b/interface/web/dns/lib/lang/br_dns_aaaa.lng
index 5f0b463275..1a3cfb2d27 100644
--- a/interface/web/dns/lib/lang/br_dns_aaaa.lng
+++ b/interface/web/dns/lib/lang/br_dns_aaaa.lng
@@ -1,16 +1,16 @@
 <?php
 $wb['server_id_txt'] = 'Servidor';
 $wb['zone_txt'] = 'Zona';
-$wb['name_txt'] = 'Nome';
+$wb['name_txt'] = 'Nome do host';
 $wb['type_txt'] = 'Tipo';
 $wb['data_txt'] = 'Endereço IPv6';
 $wb['ttl_txt'] = 'TTL';
 $wb['active_txt'] = 'Ativo';
-$wb['limit_dns_record_txt'] = 'O limite de zonas dns para esta conta foi alcançado.';
-$wb['no_zone_perm'] = 'Você não tem permissão para adicionar registros a esta zona dns.';
-$wb['name_error_empty'] = 'O nome está em branco.';
-$wb['name_error_regex'] = 'O nome é inválido.';
-$wb['data_error_empty'] = 'Endereço IP está em branco.';
-$wb['ip_error_wrong'] = 'Endereço IP é inválido.';
-$wb['ttl_range_error'] = 'O ttl mínimo são 60 segundos.';
+$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'] = 'Endereço IPv6 está em branco.';
+$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_alias.lng b/interface/web/dns/lib/lang/br_dns_alias.lng
index b303a662ba..46821ee1ae 100644
--- a/interface/web/dns/lib/lang/br_dns_alias.lng
+++ b/interface/web/dns/lib/lang/br_dns_alias.lng
@@ -1,16 +1,16 @@
 <?php
 $wb['server_id_txt'] = 'Servidor';
 $wb['zone_txt'] = 'Zona';
-$wb['name_txt'] = 'Nome';
+$wb['name_txt'] = 'Nome do host';
 $wb['type_txt'] = 'Tipo';
-$wb['data_txt'] = 'Servidor de destino';
+$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 a esta zona dns.';
-$wb['name_error_empty'] = 'O nome está em branco.';
-$wb['name_error_regex'] = 'O nome é inválido.';
-$wb['data_error_empty'] = 'O servidor de destino está em branco.';
-$wb['data_error_regex'] = 'O servidor de destino é inválido.';
-$wb['ttl_range_error'] = 'O ttl mínimo são 60 segundos.';
+$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 formato do alvo do host é inválido.';
+$wb['ttl_range_error'] = 'O TTL mínimo são 60 segundos.';
 ?>
diff --git a/interface/web/dns/lib/lang/br_dns_caa.lng b/interface/web/dns/lib/lang/br_dns_caa.lng
index 973a97ceb6..16bf267862 100644
--- a/interface/web/dns/lib/lang/br_dns_caa.lng
+++ b/interface/web/dns/lib/lang/br_dns_caa.lng
@@ -1,19 +1,19 @@
 <?php
-$wb['ca_list_txt'] = 'Certifiction Authority';
-$wb['ca_domain_txt'] = 'Domain';
-$wb['ca_hostname_txt'] = 'Additional Hostnamen';
-$wb['ca_hostname_note_txt'] = '(Sepearated list with commas - empty for all hostnames)';
-$wb['ca_options_txt'] = 'Additional Options';
-$wb['ca_options_note_txt'] = 'requested by the CA (Sepearated list with commas)';
-$wb['ca_wildcard_txt'] = 'Use Wildcard SSL';
-$wb['ca_critical_txt'] = 'Strict check';
+$wb['ca_list_txt'] = 'Autoridade Certificadora - CA';
+$wb['ca_domain_txt'] = 'Domínio';
+$wb['ca_hostname_txt'] = 'Nome de hosts adicionais';
+$wb['ca_hostname_note_txt'] = '(separado por vírgulas - em branco para todos os hosts)';
+$wb['ca_options_txt'] = 'Opções adicionais';
+$wb['ca_options_note_txt'] = 'solicitado pela CA (lista separado por vírgulas)';
+$wb['ca_wildcard_txt'] = 'Usar curingas SSL';
+$wb['ca_critical_txt'] = 'Verificação estrita';
 $wb['ttl_txt'] = 'TTL';
-$wb['active_txt'] = 'Active';
-$wb['select_txt'] = 'Select Certifiction Authority';
-$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
-$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
-$wb['ca_error_txt'] = 'No Certifiction Authority selected';
-$wb['caa_exists_error'] = 'CAA Record already exists';
-$wb['ca_option_error'] = 'Invalid format for additional options; OPTION=VALUE';
-$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['active_txt'] = 'Ativo';
+$wb['select_txt'] = 'Selecionar autoridade certificadora';
+$wb['no_zone_perm'] = 'Você não tem permissão para adicionar registros dns nesta zona.';
+$wb['limit_dns_record_txt'] = 'O limite de registros dns para esta conta foi alcançado.';
+$wb['ca_error_txt'] = 'Nenhuma autoridade certificadora selecionada.';
+$wb['caa_exists_error'] = 'Registro CAA já existe.';
+$wb['ca_option_error'] = 'Formato inválido para opções adicionais; OPÇÃO=VALOR';
+$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 cbba03cdaf..c4fb0df260 100644
--- a/interface/web/dns/lib/lang/br_dns_cname.lng
+++ b/interface/web/dns/lib/lang/br_dns_cname.lng
@@ -1,17 +1,17 @@
 <?php
 $wb['server_id_txt'] = 'Servidor';
 $wb['zone_txt'] = 'Zona';
-$wb['name_txt'] = 'Nome';
+$wb['name_txt'] = 'Nome do host';
 $wb['type_txt'] = 'Tipo';
-$wb['data_txt'] = 'Nome de destino';
+$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 a esta zona dns.';
-$wb['name_error_empty'] = 'Nome está em branco.';
-$wb['name_error_regex'] = 'Nome é inválido.';
-$wb['data_error_empty'] = 'Nome de destino está em branco.';
-$wb['data_error_regex'] = 'Nome de destino é inválido.';
-$wb['data_error_duplicate'] = 'Registros A ou CNAME duplicados.';
-$wb['ttl_range_error'] = 'O ttl mínimo são 60 segundos.';
+$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'] = 'Registro A ou CNAME duplicado.';
+$wb['ttl_range_error'] = 'O TTL mínimo são 60 segundos.';
 ?>
diff --git a/interface/web/dns/lib/lang/br_dns_dkim.lng b/interface/web/dns/lib/lang/br_dns_dkim.lng
index 1ec851a216..a24976194d 100644
--- a/interface/web/dns/lib/lang/br_dns_dkim.lng
+++ b/interface/web/dns/lib/lang/br_dns_dkim.lng
@@ -1,13 +1,13 @@
 <?php
-$wb['public_key_txt'] = 'Chave pública';
+$wb['public_key_txt'] = 'Chave Pública';
 $wb['ttl_txt'] = 'TTL';
 $wb['active_txt'] = 'Ativo';
-$wb['record_exists_txt'] = 'Registro dns já existe.';
-$wb['dkim_disabled_txt'] = 'DKIM desabilitado para este domínio.';
+$wb['record_exists_txt'] = 'Este registro dns já existe.';
+$wb['dkim_disabled_txt'] = 'Chave DKIM está desabilitada para este domínio de e-mail.';
 $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 a esta zona dns.';
-$wb['ttl_range_error'] = 'O ttl mínimo são 60 segundos.';
+$wb['no_zone_perm'] = 'Você não tem permissão para adicionar registros dns nesta zona.';
+$wb['ttl_range_error'] = 'O TTL mínimo são 60 segundos.';
 $wb['selector_txt'] = 'Seletor DKIM';
-$wb['data_error_empty'] = 'Public-Key missing';
-$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty';
+$wb['data_error_empty'] = 'Chave pública ausente.';
+$wb['dkim_selector_empty_txt'] = 'Seletor DKIM está em branco.';
 ?>
diff --git a/interface/web/dns/lib/lang/br_dns_dmarc.lng b/interface/web/dns/lib/lang/br_dns_dmarc.lng
index 8bb35318f8..bacd3af25f 100644
--- a/interface/web/dns/lib/lang/br_dns_dmarc.lng
+++ b/interface/web/dns/lib/lang/br_dns_dmarc.lng
@@ -1,50 +1,50 @@
 <?php
 $wb['data_txt'] = 'Registro DMARC';
 $wb['domain_txt'] = 'Domínio';
-$wb['dmarc_policy_txt'] = 'Política de recepção de e-mails';
-$wb['dmarc_policy_note_txt'] = 'Como os \\"ISPs\\" devem tratar as mensagens SPF ou DKIM com falha (DMARC).';
-$wb['dmarc_policy_none_txt'] = 'não fazer nada';
+$wb['dmarc_policy_txt'] = 'Política para recepção de e-mails';
+$wb['dmarc_policy_note_txt'] = 'Como os ISPs devem manipular as mensagens que falharam para SPF ou DKIM (DMARC).';
+$wb['dmarc_policy_none_txt'] = 'nenhuma';
 $wb['dmarc_policy_quarantine_txt'] = 'quarentena';
 $wb['dmarc_policy_reject_txt'] = 'rejeitar';
-$wb['dmarc_rua_txt'] = 'Agregrar os dados por endereço';
-$wb['dmarc_rua_note_txt'] = 'Endereços de e-mail para receber relatórios do sistema sobre mensagens com falha e controles DMARC do domínio (separados por espaço em branco)';
-$wb['dmarc_ruf_txt'] = 'Relatório forense de dados por endereço';
-$wb['dmarc_ruf_note_txt'] = 'Endereços de e-mail para receber amostras de mensagens com falha e controles DMARC do domínio (separados por espaço em branco)';
+$wb['dmarc_rua_txt'] = 'Relatório de dados de endereços sumarizado';
+$wb['dmarc_rua_note_txt'] = 'Endereços de e-mail para receber relatórios dos ISPs sobre mensagens de falhas DMARC para este domínio (separado por espaço).';
+$wb['dmarc_ruf_txt'] = 'Endereço para relatório de dados forense';
+$wb['dmarc_ruf_note_txt'] = 'Endereços de e-mail para receber mensagens simples sobre falhas DMARC para este domínio (separado por espaço).';
 $wb['dmarc_fo_txt'] = 'Opções de relatório forense';
-$wb['dmarc_fo0_txt'] = 'Gerar relatórios se todos os mecanismos de autenticação subjacentes deixarem de produzir um resultado DMARC \\"pass\\".';
-$wb['dmarc_fo1_txt'] = 'Gerar relatório se algum mecanismo falhar.';
-$wb['dmarc_fod_txt'] = 'Gerar relatório se assinatura DKIM falhar na verificação.';
-$wb['dmarc_fos_txt'] = 'Gerar relatório se o SPF falhar.';
-$wb['dmarc_adkim_txt'] = 'Parametrização do identificador DKIM';
-$wb['dmarc_adkim_note_txt'] = 'Modo \\"strict\\" exige combinação exata entre o DKIM do domínio e e-mails';
+$wb['dmarc_fo0_txt'] = 'Gerar relatório se todos os mecanismos de autenticação falharem em produzir um resultado \'pass\' do DMARC.';
+$wb['dmarc_fo1_txt'] = 'Gerar relatório se qualquer mecanismo falhar.';
+$wb['dmarc_fod_txt'] = 'Gerar relatório se a assinatura DKIM falhar na verificação.';
+$wb['dmarc_fos_txt'] = 'Gerar relatório se a consulta SPF falhar.';
+$wb['dmarc_adkim_txt'] = 'Alinhamento do identificador DKIM';
+$wb['dmarc_adkim_note_txt'] = '\'strict\' requer combinação exata entre DKIM do domínio e oremetente do e-mail';
 $wb['dmarc_adkim_r_txt'] = 'relaxed';
 $wb['dmarc_adkim_s_txt'] = 'strict';
-$wb['dmarc_aspf_txt'] = 'Parametrização do identificador SPF';
-$wb['dmarc_aspf_note_txt'] = 'Modo \\"strict\\" exige combinação exata entre o SPF do domínio e e-mails';
+$wb['dmarc_aspf_txt'] = 'Alinhamento do identificador SPF';
+$wb['dmarc_aspf_note_txt'] = '\'strict\' requer combinação exata o SPF do domínio e oremetente do e-mail';
 $wb['dmarc_aspf_r_txt'] = 'relaxed';
 $wb['dmarc_aspf_s_txt'] = 'strict';
-$wb['dmarc_rf_txt'] = 'Formatação do relatório';
-$wb['dmarc_rf_afrf_txt'] = 'Falha de autenticação para formatação do relatório';
-$wb['dmarc_rf_iodef_txt'] = 'Formato da descrição de troca objeto de incidentes';
-$wb['dmarc_pct_txt'] = 'Aplicar políticas para este percentual';
-$wb['dmarc_pct_note_txt'] = '% (100 padrão). Percentual de mensagens do domínio que serão verificadas.';
-$wb['dmarc_ri_txt'] = 'Intervalo de relatórios';
-$wb['dmarc_ri_note_txt'] = 'Segundos (padrão=86400). Valor em segundos que os relatórios de agregação serão gerados (86400 representa 1 dia).';
-$wb['dmarc_sp_txt'] = 'Políticas de subdomínio (padrão é o mesmo do domínio).';
+$wb['dmarc_rf_txt'] = 'Formato do Relatório';
+$wb['dmarc_rf_afrf_txt'] = 'Formato do relatório de falhas de autenticação';
+$wb['dmarc_rf_iodef_txt'] = 'Formato da descrição de incidentes de objetos de troca';
+$wb['dmarc_pct_txt'] = 'Aplicar política para este percentual';
+$wb['dmarc_pct_note_txt'] = '% (100 padrão). Percentual de mensagens para este domínio a serem verificadas.';
+$wb['dmarc_ri_txt'] = 'Intervalo de geração do relatório';
+$wb['dmarc_ri_note_txt'] = 'Segundos (padrão=86400). Intervalo, em segundos, para gerar relatórios sumarizados (86400 equivale a 1 dia).';
+$wb['dmarc_sp_txt'] = 'Política para subdomínio (padrão é o mesmo do domínio).';
 $wb['dmarc_sp_same_txt'] = 'mesmo do domínio';
-$wb['dmarc_sp_none_txt'] = 'nenhum';
+$wb['dmarc_sp_none_txt'] = 'nenhuma';
 $wb['dmarc_sp_quarantine_txt'] = 'quarentena';
 $wb['dmarc_sp_reject_txt'] = 'rejeitar';
 $wb['ttl_txt'] = 'TTL';
 $wb['active_txt'] = 'Ativo';
-$wb['dmarc_policy_error_txt'] = 'Somente a política \\"nenhum\\" é permitida para e-mails sem assinatura DKIM.';
+$wb['dmarc_policy_error_txt'] = 'A política \'nenhuma\' é permitida apenas para e-mails sem assinatura DKIM.';
 $wb['dmarc_no_dkim_txt'] = 'Nenhum registro DKIM ativo.';
 $wb['dmarc_no_spf_txt'] = 'Nenhum registro SPF ativo.';
-$wb['dmarc_more_spf_txt'] = 'Mais de um registro SPF ativo.';
-$wb['dmarc_invalid_email_txt'] = 'e-mail é inválido.';
-$wb['dmarc_empty_txt'] = 'Registro DMARC em branco - especifique ao menos um';
-$wb['record_exists_txt'] = 'Registro dns já existe.';
-$wb['limit_dns_record_txt'] = 'O limite de registros dns para esta foi alcançado.';
-$wb['no_zone_perm'] = 'Você não tem permissão para adicionar registros a esta zona dns.';
-$wb['ttl_range_error'] = 'O ttl mínimo são 60 segundos.';
+$wb['dmarc_more_spf_txt'] = 'Existe mais de um registro SPF ativo';
+$wb['dmarc_invalid_email_txt'] = 'Endereço de e-mail inválido';
+$wb['dmarc_empty_txt'] = 'Registro DMARC em branco - especifique ao menos uma opção';
+$wb['record_exists_txt'] = 'Registro dns já existe';
+$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['ttl_range_error'] = 'TTL mínimo são 60 segundos.';
 ?>
diff --git a/interface/web/dns/lib/lang/br_dns_ds.lng b/interface/web/dns/lib/lang/br_dns_ds.lng
index 38b2183ead..843338a943 100644
--- a/interface/web/dns/lib/lang/br_dns_ds.lng
+++ b/interface/web/dns/lib/lang/br_dns_ds.lng
@@ -1,17 +1,18 @@
 <?php
 $wb['server_id_txt'] = 'Servidor';
 $wb['zone_txt'] = 'Zona';
-$wb['name_txt'] = 'Nome';
+$wb['name_txt'] = 'Nome do host';
 $wb['type_txt'] = 'Tipo';
 $wb['data_txt'] = 'Dados';
 $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 a esta zona dns.';
-$wb['name_error_empty'] = 'Nome está em branco.';
-$wb['name_error_regex'] = 'Nome é inválido.';
-$wb['data_error_empty'] = 'Dados está em branco.';
-$wb['data_error_regex'] = 'Dados é inválido.';
-$wb['ttl_range_error'] = 'O ttl mínimo são 60 segundos.';
-$wb['invalid_type_ds'] = 'Registro DS é inválido.';
+$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 campo texto (Text) em branco';
+$wb['data_error_regex'] = 'O campo texto (Text) possui formato inválido.';
+$wb['ttl_range_error'] = 'O TTL mínimo são 60 segundos.';
+$wb['invalid_type_ds'] = 'O registro DS possui formato inválido.';
+
 ?>
diff --git a/interface/web/dns/lib/lang/br_dns_hinfo.lng b/interface/web/dns/lib/lang/br_dns_hinfo.lng
index bf7b7f33d4..e7bdfa2f4c 100644
--- a/interface/web/dns/lib/lang/br_dns_hinfo.lng
+++ b/interface/web/dns/lib/lang/br_dns_hinfo.lng
@@ -1,16 +1,16 @@
 <?php
 $wb['server_id_txt'] = 'Servidor';
 $wb['zone_txt'] = 'Zona';
-$wb['name_txt'] = 'Nome';
+$wb['name_txt'] = 'Nome do host';
 $wb['type_txt'] = 'Tipo';
-$wb['data_txt'] = 'Servidor';
+$wb['data_txt'] = 'Informação do host';
 $wb['ttl_txt'] = 'TTL';
 $wb['active_txt'] = 'Ativo';
-$wb['limit_dns_record_txt'] = 'O limite de zonas dns para esta conta foi alcançado.';
-$wb['no_zone_perm'] = 'Você não tem permissão para adicionar registros a esta zona dns.';
-$wb['name_error_empty'] = 'O nome está em branco.';
-$wb['name_error_regex'] = 'O nome é inválido.';
-$wb['data_error_empty'] = 'Endereço IP está em branco.';
-$wb['data_error_regex'] = 'Endereço IP é inválido.';
-$wb['ttl_range_error'] = 'O ttl mínimo são 60 segundos.';
+$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'] = 'Informação do host está em branco.';
+$wb['data_error_regex'] = 'Informação do host 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_import.lng b/interface/web/dns/lib/lang/br_dns_import.lng
index e26b20a3f3..ffcef7d743 100644
--- a/interface/web/dns/lib/lang/br_dns_import.lng
+++ b/interface/web/dns/lib/lang/br_dns_import.lng
@@ -1,16 +1,16 @@
 <?php
+$wb['zone_file_import_txt'] = 'Importar arquivo de zona';
 $wb['server_id_txt'] = 'Servidor';
 $wb['client_txt'] = 'Cliente';
-$wb['btn_save_txt'] = 'Salvar';
+$wb['btn_save_txt'] = 'Importar arquivo de zona';
 $wb['btn_cancel_txt'] = 'Cancelar';
 $wb['domain_txt'] = 'Domínio';
-$wb['zone_file_successfully_imported_txt'] = 'O arquivo de zona foi importado com sucesso!';
-$wb['error_no_valid_zone_file_txt'] = 'Este arquivo não parece ser um arquivo de zona válido!';
-$wb['zonefile_to_import_txt'] = 'Arquivo de zona';
-$wb['domain_field_desc_txt'] = 'Pode ficar em branco caso o domínio é o mesmo nome do arquivo ou faz parte do conteúdo do mesmo.';
-$wb['title'] = 'Importar arquivos de zonas';
-$wb['no_file_uploaded_error'] = 'Nenhum arquivo de zona importado.';
-$wb['zone_file_import_txt'] = 'Importar arquivo de zona';
-$wb['error_no_server_id'] = 'Nenhum servidor informado.';
-$wb['error_not_allowed_server_id'] = 'O servidor selecionado não tem permissão para esta conta.';
+$wb['zone_file_successfully_imported_txt'] = 'O arquivo de zona dns foi importado com sucesso!';
+$wb['error_no_valid_zone_file_txt'] = 'Aparentemente este não é um arquivo de zona dns válido!';
+$wb['zonefile_to_import_txt'] = 'Arquivo de Zona';
+$wb['domain_field_desc_txt'] = 'Pode ficar em branco caso o domínio seja o mesmo nome do arquivo ou faz parte do conteúdo do mesmo.';
+$wb['title'] = 'Importar arquivo de zona';
+$wb['no_file_uploaded_error'] = 'Nenhum arquivo de zona dns foi carregado.';
+$wb['error_no_server_id'] = 'Nenhum servidor foi informado.';
+$wb['error_not_allowed_server_id'] = 'O servidor selecionado não é permitido nesta conta.';
 ?>
diff --git a/interface/web/dns/lib/lang/br_dns_loc.lng b/interface/web/dns/lib/lang/br_dns_loc.lng
index 838fdcf12b..f84c2af034 100644
--- a/interface/web/dns/lib/lang/br_dns_loc.lng
+++ b/interface/web/dns/lib/lang/br_dns_loc.lng
@@ -1,16 +1,16 @@
 <?php
 $wb['server_id_txt'] = 'Servidor';
 $wb['zone_txt'] = 'Zona';
-$wb['name_txt'] = 'Nome';
+$wb['name_txt'] = 'Nome do host';
 $wb['type_txt'] = 'Tipo';
-$wb['data_txt'] = 'Dados';
+$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'] = 'Upload (pastebin) para MUC';
-$wb['name_error_empty'] = 'Nome está em branco.';
-$wb['name_error_regex'] = 'Nome é inválido.';
-$wb['data_error_empty'] = 'Dados está em branco.';
-$wb['data_error_regex'] = 'Dados é inválido.';
-$wb['ttl_range_error'] = 'O ttl mínimo são 60 segundos.';
+$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/br_dns_mx.lng b/interface/web/dns/lib/lang/br_dns_mx.lng
index 30116f16b2..45b721c1a8 100644
--- a/interface/web/dns/lib/lang/br_dns_mx.lng
+++ b/interface/web/dns/lib/lang/br_dns_mx.lng
@@ -1,18 +1,18 @@
 <?php
 $wb['server_id_txt'] = 'Servidor';
 $wb['zone_txt'] = 'Zona';
-$wb['name_txt'] = 'Nome';
+$wb['name_txt'] = 'Nome do host';
 $wb['type_txt'] = 'Tipo';
-$wb['data_txt'] = 'Nome do servidor de e-mails';
+$wb['data_txt'] = 'Nome do servidor de e-mail';
 $wb['aux_txt'] = 'Prioridade';
 $wb['ttl_txt'] = 'TTL';
 $wb['active_txt'] = 'Ativo';
-$wb['limit_dns_record_txt'] = 'O limite de zonas dns para esta conta foi alcançado.';
-$wb['no_zone_perm'] = 'Você não tem permissão para adicionar registros a esta zona dns.';
-$wb['name_error_empty'] = 'Nome está em branco.';
-$wb['name_error_regex'] = 'Nome é inválido.';
-$wb['data_error_empty'] = 'Nome do servidor de e-mails está em branco.';
-$wb['data_error_regex'] = 'Nome do servidor de e-mails é inválido.';
+$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 nome do servidor de e-mails está em branco.';
+$wb['data_error_regex'] = 'O nome do servidor de e-mails possui formato inválido.';
 $wb['duplicate_mx_record_txt'] = 'Registro MX duplicado.';
-$wb['ttl_range_error'] = 'O ttl minímo são 60 segundos.';
+$wb['ttl_range_error'] = 'O TTL mínimo são 60 segundos.';
 ?>
diff --git a/interface/web/dns/lib/lang/br_dns_ns.lng b/interface/web/dns/lib/lang/br_dns_ns.lng
index 5b3b03a809..d83d0f7b8a 100644
--- a/interface/web/dns/lib/lang/br_dns_ns.lng
+++ b/interface/web/dns/lib/lang/br_dns_ns.lng
@@ -3,14 +3,14 @@ $wb['server_id_txt'] = 'Servidor';
 $wb['zone_txt'] = 'Zona';
 $wb['name_txt'] = 'Zona';
 $wb['type_txt'] = 'Tipo';
-$wb['data_txt'] = 'Servidor de nomes';
+$wb['data_txt'] = 'Nome do servidor';
 $wb['ttl_txt'] = 'TTL';
 $wb['active_txt'] = 'Ativo';
-$wb['limit_dns_record_txt'] = 'O limite de zonas dns para esta conta foi alcançado.';
-$wb['no_zone_perm'] = 'Você não tem permissão para adicionar registros a esta zona dns.';
-$wb['name_error_empty'] = 'Zona está em branco.';
-$wb['name_error_regex'] = 'Zona inválida.';
-$wb['data_error_empty'] = 'Nome está em branco.';
-$wb['data_error_regex'] = 'Nome é inválido.';
-$wb['ttl_range_error'] = 'O ttl mínimo são 60 segundos.';
+$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'] = 'A zona está em branco.';
+$wb['name_error_regex'] = 'A zona possui formato inválido.';
+$wb['data_error_empty'] = 'Nome do servidor está em branco.';
+$wb['data_error_regex'] = 'Nome do servidor 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_ptr.lng b/interface/web/dns/lib/lang/br_dns_ptr.lng
index cfb7eddd7f..b6214a62e8 100644
--- a/interface/web/dns/lib/lang/br_dns_ptr.lng
+++ b/interface/web/dns/lib/lang/br_dns_ptr.lng
@@ -3,14 +3,14 @@ $wb['server_id_txt'] = 'Servidor';
 $wb['zone_txt'] = 'Zona';
 $wb['name_txt'] = 'Nome';
 $wb['type_txt'] = 'Tipo';
-$wb['data_txt'] = 'Nome reverso';
+$wb['data_txt'] = 'Nome canônico para o nome do host';
 $wb['ttl_txt'] = 'TTL';
 $wb['active_txt'] = 'Ativo';
-$wb['limit_dns_record_txt'] = 'O limite de zonas dns para esta conta foi alcançado.';
-$wb['no_zone_perm'] = 'Você não tem permissão para adicionar registros a esta zona dns.';
+$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 está em branco.';
-$wb['name_error_regex'] = 'O nome é inválido.';
-$wb['data_error_empty'] = 'Endereço IP está em branco.';
-$wb['data_error_regex'] = 'Endereço IP é inválido.';
-$wb['ttl_range_error'] = 'O ttl mínimo são 60 segundos.';
+$wb['name_error_regex'] = 'O nome possui formato inválido.';
+$wb['data_error_empty'] = 'O nome canônico está em branco.';
+$wb['data_error_regex'] = 'O nome canônico 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_rp.lng b/interface/web/dns/lib/lang/br_dns_rp.lng
index d8f1cad2a5..4f782fb4a0 100644
--- a/interface/web/dns/lib/lang/br_dns_rp.lng
+++ b/interface/web/dns/lib/lang/br_dns_rp.lng
@@ -1,16 +1,16 @@
 <?php
 $wb['server_id_txt'] = 'Servidor';
 $wb['zone_txt'] = 'Zona';
-$wb['name_txt'] = 'Nome';
+$wb['name_txt'] = 'Nome do host';
 $wb['type_txt'] = 'Tipo';
-$wb['data_txt'] = 'Responsável';
+$wb['data_txt'] = 'Responsável técnico';
 $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 a esta zona dns.';
-$wb['name_error_empty'] = 'Nome está em branco.';
-$wb['name_error_regex'] = 'Nome é inválido.';
-$wb['data_error_empty'] = 'Responsável está em branco.';
-$wb['data_error_regex'] = 'Responsável é inválido.';
-$wb['ttl_range_error'] = 'O ttl mínimo são 60 segundos.';
+$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'] = 'Responsável técnico está em branco.';
+$wb['data_error_regex'] = 'Responsável técnico 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_slave.lng b/interface/web/dns/lib/lang/br_dns_slave.lng
index 336164442c..a71e64c4f2 100644
--- a/interface/web/dns/lib/lang/br_dns_slave.lng
+++ b/interface/web/dns/lib/lang/br_dns_slave.lng
@@ -1,17 +1,17 @@
 <?php
 $wb['server_id_txt'] = 'Servidor';
-$wb['origin_txt'] = 'Zona dns';
-$wb['ns_txt'] = 'NS';
+$wb['origin_txt'] = 'Zona DNS';
+$wb['secondary_zone_txt'] = 'Zona DNS secundária';
+$wb['ns_txt'] = 'NS (Endereço IP)';
 $wb['active_txt'] = 'Ativo';
 $wb['limit_dns_slave_zone_txt'] = 'O limite de zonas dns secundárias para esta conta foi alcançado.';
 $wb['client_txt'] = 'Cliente';
-$wb['xfer_txt'] = 'Permitir transferência da zona para estes IPs (IPs separados por vírgulas)';
+$wb['xfer_txt'] = 'Permitir transferência de zonas para <br />Endereço(s) IP(s) (lista de endereços, separados por vírgula)';
 $wb['server_id_error_empty'] = 'Nenhum servidor selecionado.';
 $wb['origin_error_empty'] = 'Zona está em branco.';
-$wb['origin_error_unique'] = 'Já existe um registro igual para esta zona.';
-$wb['origin_error_regex'] = 'Zona inválida.';
-$wb['ns_error_regex'] = 'Registro NS é inválido.';
+$wb['origin_error_unique'] = 'Já existe este registro dns nesta zona.';
+$wb['origin_error_regex'] = 'Zona possui um formato inválido.';
+$wb['ns_error_regex'] = 'O NS possui formato inválido.';
 $wb['eg_domain_tld'] = 'ex.: dominio.com.br.';
-$wb['ipv4_form_txt'] = 'Separar múltiplos endereços IP por vírgulas';
-$wb['secondary_zone_txt'] = 'Zona dns secundária';
+$wb['ipv4_form_txt'] = 'Separar múltiplos IPs com vírgulas.';
 ?>
diff --git a/interface/web/dns/lib/lang/br_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/br_dns_slave_admin_list.lng
index b691471041..9b4c7e07ef 100644
--- a/interface/web/dns/lib/lang/br_dns_slave_admin_list.lng
+++ b/interface/web/dns/lib/lang/br_dns_slave_admin_list.lng
@@ -1,10 +1,10 @@
 <?php
-$wb['list_head_txt'] = 'Zonas dns secundárias';
+$wb['list_head_txt'] = 'Zonas DNS Secundárias';
 $wb['active_txt'] = 'Ativo';
 $wb['server_id_txt'] = 'Servidor';
 $wb['origin_txt'] = 'Zona';
 $wb['ns_txt'] = 'NS';
-$wb['add_new_record_txt'] = 'Adicionar nova zona';
+$wb['add_new_record_txt'] = 'Adicionar nova zona dns secundária';
 $wb['eg_domain_tld'] = 'ex.: dominio.com.br.';
 $wb['sys_groupid_txt'] = 'Cliente';
 ?>
diff --git a/interface/web/dns/lib/lang/br_dns_slave_list.lng b/interface/web/dns/lib/lang/br_dns_slave_list.lng
index 5ff54311a8..adf14dfdc7 100644
--- a/interface/web/dns/lib/lang/br_dns_slave_list.lng
+++ b/interface/web/dns/lib/lang/br_dns_slave_list.lng
@@ -1,9 +1,9 @@
 <?php
-$wb['list_head_txt'] = 'Zonas dns secundárias';
+$wb['list_head_txt'] = 'Zonas secundárias';
 $wb['active_txt'] = 'Ativo';
 $wb['server_id_txt'] = 'Servidor';
 $wb['origin_txt'] = 'Zona';
 $wb['ns_txt'] = 'NS';
-$wb['add_new_record_txt'] = 'Adicionar nova zona';
+$wb['add_new_record_txt'] = 'Adicionar nova zona dns secundária';
 $wb['eg_domain_tld'] = 'ex.: dominio.com.br.';
 ?>
diff --git a/interface/web/dns/lib/lang/br_dns_soa.lng b/interface/web/dns/lib/lang/br_dns_soa.lng
index fcad62b44d..f5385c4706 100644
--- a/interface/web/dns/lib/lang/br_dns_soa.lng
+++ b/interface/web/dns/lib/lang/br_dns_soa.lng
@@ -2,43 +2,43 @@
 $wb['server_id_txt'] = 'Servidor';
 $wb['origin_txt'] = 'Zona (SOA)';
 $wb['ns_txt'] = 'NS';
-$wb['mbox_txt'] = 'e-mail';
+$wb['mbox_txt'] = 'e-Mail';
 $wb['serial_txt'] = 'Serial';
 $wb['refresh_txt'] = 'Atualizar';
 $wb['retry_txt'] = 'Repetir';
 $wb['expire_txt'] = 'Expirar';
-$wb['minimum_txt'] = 'Minímo';
+$wb['minimum_txt'] = 'Mínimo';
 $wb['ttl_txt'] = 'TTL';
-$wb['xfer_txt'] = 'Permitir transferências de zona para estes IPs (IPs separados por vírgula).';
+$wb['xfer_txt'] = 'Permitir transferências de zonas para <br />Endereço(s) IP(s) (lista de endereços, separados por vírgula)';
 $wb['active_txt'] = 'Ativo';
+$wb['dnssec_info_txt'] = 'O campo DS DNSSEC para o registro';
+$wb['dnssec_wanted_txt'] = 'Zona assinada (DNSSEC)';
+$wb['dnssec_wanted_info'] = 'Ao desativar o DNSSEC as chaves não serão excluídas se o DNSSEC tiver sido ativado anteriormente e as chaves já tiverem sido geradas, mas a zona não será mais entregue no formato assinado posteriormente. Se você usa o PowerDNS, as chaves serão excluídas!';
 $wb['limit_dns_zone_txt'] = 'O limite de zonas dns para esta conta foi alcançado.';
 $wb['client_txt'] = 'Cliente';
-$wb['no_zone_perm'] = 'Você não tem permissão para adicionar registros a esta zona dns.';
-$wb['server_id_error_empty'] = 'Servidor não selecionado.';
+$wb['no_zone_perm'] = 'Você não tem permissão para adicionar registros dns nesta zona.';
+$wb['server_id_error_empty'] = 'Nenhum servidor selecionado';
 $wb['origin_error_empty'] = 'Zona está em branco.';
-$wb['origin_error_unique'] = 'Este registro já existe nesta zona.';
-$wb['origin_error_regex'] = 'Zona inválida.';
-$wb['ns_error_regex'] = 'NS é inválido.';
-$wb['mbox_error_empty'] = 'Endereço de e-mail está em branco.';
-$wb['mbox_error_regex'] = 'Endereço de e-mail é inválido.';
+$wb['origin_error_unique'] = 'Já existe este registro dns nesta zona.';
+$wb['origin_error_regex'] = 'A zona dns possui formato inválido.';
+$wb['ns_error_regex'] = 'O registro NS possui formato inválido.';
+$wb['mbox_error_empty'] = 'O e-mail está em branco.';
+$wb['mbox_error_regex'] = 'O e-mail possui formato inválido.';
 $wb['also_notify_txt'] = 'Também notificar';
-$wb['also_notify_error_regex'] = 'Por favor, insira um endereço IP.';
+$wb['also_notify_error_regex'] = 'Também notificar: Por favor, use um endereço IP.';
+$wb['xfer_error_regex'] = 'Xfer: Por favor use um ou mais endereço(s) IP, separado por vírgula ou use a palavra reservada: any';
 $wb['update_acl_txt'] = 'Atualizar ACL';
 $wb['seconds_txt'] = 'Segundos';
 $wb['eg_domain_tld'] = 'ex.: dominio.com.br';
 $wb['eg_ns1_domain_tld'] = 'ex.: ns1.dominio.com.br';
-$wb['eg_webmaster_domain_tld'] = 'ex.: postmaster@dominio.com.br';
-$wb['The Domain can not be changed. Please ask your Administrator if you want to change the domain name.'] = 'O domínio não pode ser modificado. Por favor, entre em contato com o administrador do sistema se você deseja modificar este domínio.';
-$wb['refresh_range_error'] = 'Tempo mínimo de atualizações (refresh) são 60 segundos.';
-$wb['retry_range_error'] = 'Tempo mínimo de repetições (retry) são 60 segundos.';
-$wb['expire_range_error'] = 'Tempo mínimo para expirar (expire) são 60 segundos.';
-$wb['minimum_range_error'] = 'Tempo mínimo (minimum) são 60 segundos.';
-$wb['ttl_range_error'] = 'O ttl mínimo são 60 segundos.';
-$wb['xfer_error_regex'] = 'Também notificar: Por favor, insira um endereço IP.';
-$wb['dnssec_info_txt'] = 'Registro para DNSSEC (DS-Data)';
-$wb['dnssec_wanted_txt'] = 'Zona assinada (DNSSEC)';
-$wb['dnssec_wanted_info'] = 'Quando desabilitar o DNSSEC as chaves não são eliminadas mas a zona não será disponibilizada assinada. Se você usar o PowerDNS, as chaves serão excluídas!';
-$wb['error_not_allowed_server_id'] = 'O servidor selecionado não tem permissão para esta conta.';
-$wb['soa_cannot_be_changed_txt'] = 'A zona SOA não pode ser modificada. Entre em contato com o administrador para alterar esta zona.';
+$wb['eg_webmaster_domain_tld'] = 'ex.: hostmaster@dominio.com.br';
+$wb['The Domain can not be changed. Please ask your Administrator if you want to change the domain name.'] = 'O domínio não pode ser alterado. Por favor contate o administrador se deseja alterar o domínio.';
+$wb['refresh_range_error'] = 'Intervalo mínimo entre as atualizações são 60 segundos.';
+$wb['retry_range_error'] = 'Intervalo mínimo entre as repetições são 60 segundos.';
+$wb['expire_range_error'] = 'Intervalo mínimo para expirar são 60 segundos.';
+$wb['minimum_range_error'] = 'Intervalo mínimo são 60 segundos.';
+$wb['ttl_range_error'] = 'Intervalo mínimo do TTL são 60 segundos.';
+$wb['error_not_allowed_server_id'] = 'O servidor selecionado não é permitido para esta conta.';
+$wb['soa_cannot_be_changed_txt'] = 'A zona (SOA) não pode ser alterada. Por favor, contate o administrador se deseja alterar esta zona.';
 $wb['configuration_error_txt'] = 'ERRO DE CONFIGURAÇÃO';
 ?>
diff --git a/interface/web/dns/lib/lang/br_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/br_dns_soa_admin_list.lng
index dd3169a830..26e8062d53 100644
--- a/interface/web/dns/lib/lang/br_dns_soa_admin_list.lng
+++ b/interface/web/dns/lib/lang/br_dns_soa_admin_list.lng
@@ -1,11 +1,12 @@
 <?php
-$wb['list_head_txt'] = 'Zonas dns';
+$wb['list_head_txt'] = 'Zonas DNS';
 $wb['active_txt'] = 'Ativo';
 $wb['server_id_txt'] = 'Servidor';
 $wb['origin_txt'] = 'Zona';
 $wb['ns_txt'] = 'NS';
-$wb['mbox_txt'] = 'e-mail';
-$wb['add_new_record_wizard_txt'] = 'Adicionar nova zona dns através do assistente';
-$wb['add_new_record_txt'] = 'Adicionar nova zona dns manualmente';
+$wb['mbox_txt'] = 'e-Mail';
+$wb['add_new_record_wizard_txt'] = 'Adicionar zona dns através do assistente';
+$wb['add_new_record_txt'] = 'Adicionar zona dns manualmente';
+$wb['zone_file_import_txt'] = 'Importar arquivo de zona';
 $wb['sys_groupid_txt'] = 'Cliente';
 ?>
diff --git a/interface/web/dns/lib/lang/br_dns_soa_list.lng b/interface/web/dns/lib/lang/br_dns_soa_list.lng
index ddb24697e3..969df1d2a9 100644
--- a/interface/web/dns/lib/lang/br_dns_soa_list.lng
+++ b/interface/web/dns/lib/lang/br_dns_soa_list.lng
@@ -1,11 +1,10 @@
 <?php
-$wb['list_head_txt'] = 'Zonas dns';
+$wb['list_head_txt'] = 'Zonas DNS';
 $wb['active_txt'] = 'Ativo';
 $wb['server_id_txt'] = 'Servidor';
 $wb['origin_txt'] = 'Zona';
 $wb['ns_txt'] = 'NS';
-$wb['mbox_txt'] = 'e-mail';
-$wb['add_new_record_txt'] = 'Adicionar nova zona dns';
+$wb['mbox_txt'] = 'e-Mail';
 $wb['add_new_record_wizard_txt'] = 'Adicionar nova zona dns através do assistente';
-$wb['import_zone_file_txt'] = 'Importar arquivo de zona';
+$wb['add_new_record_txt'] = 'Adicionar nova zona dns manualmente';
 ?>
diff --git a/interface/web/dns/lib/lang/br_dns_spf.lng b/interface/web/dns/lib/lang/br_dns_spf.lng
index 0c56cd32ed..739e59cf41 100644
--- a/interface/web/dns/lib/lang/br_dns_spf.lng
+++ b/interface/web/dns/lib/lang/br_dns_spf.lng
@@ -1,25 +1,25 @@
 <?php
 $wb['data_txt'] = 'Registro SPF';
 $wb['spf_mechanism_txt'] = 'Mecanismo SPF';
-$wb['spf_mechanism_pass_txt'] = 'Pass - permite e-mail de outros remetentes';
-$wb['spf_mechanism_fail_txt'] = 'Fail - rejeita e-mails de outros remetentes';
+$wb['spf_mechanism_pass_txt'] = 'Pass - permitir e-mails de outros remetentes';
+$wb['spf_mechanism_fail_txt'] = 'Fail - rejeitar e-mails de outros remetentes';
 $wb['spf_mechanism_softfail_txt'] = 'SoftFail - permite e-mails de outros remetentes mas marca os mesmos';
 $wb['spf_mechanism_neutral_txt'] = 'Neutral - não faz nada';
 $wb['spf_mx_txt'] = 'Permite servidores listados como MX enviar e-mail deste domínio';
 $wb['spf_a_txt'] = 'Permite o endereço IP atual do domínio enviar e-mails deste domínio';
 $wb['spf_ip_txt'] = 'Endereço IP adicional no formato CIDR pode entregar ou retransmitir e-mails para este domínio';
-$wb['spf_ip_note_txt'] = '(endereços IPs separados por espaços em branco)';
-$wb['spf_invalid_ip_txt'] = 'Endereço IP é inválido.';
+$wb['spf_ip_note_txt'] = '(endereços IPs separados por espaços)';
+$wb['spf_invalid_ip_txt'] = 'Endereço IP inválido.';
 $wb['spf_hostname_txt'] = 'Qualquer outro servidor pode entregar ou retransmitir e-mails para este domínio';
-$wb['spf_hostname_note_txt'] = '(servidors separados por espaço em branco)';
-$wb['spf_invalid_hostname_txt'] = 'Hospedeiro inválido';
+$wb['spf_hostname_note_txt'] = '(servidores separados por espaço)';
+$wb['spf_invalid_hostname_txt'] = 'O nome do host é inválido.';
 $wb['spf_domain_txt'] = 'Qualquer domínio pode entregar ou retransmitir e-mails para este domínio';
-$wb['spf_domain_note_txt'] = '(domínios separados por espaço em branco)';
-$wb['spf_invalid_domain_txt'] = 'Domínio é inválido.';
+$wb['spf_domain_note_txt'] = '(domínios separados por espaço)';
+$wb['spf_invalid_domain_txt'] = 'O domínio é inválido.';
 $wb['ttl_txt'] = 'TTL';
 $wb['active_txt'] = 'Ativo';
-$wb['record_exists_txt'] = 'Registro DS já existe.';
+$wb['record_exists_txt'] = 'Registro dns já existe.';
 $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 a esta zona dns.';
-$wb['ttl_range_error'] = 'O ttl mínimo são 60 segundos.';
+$wb['no_zone_perm'] = 'Você não tem permissão para adicionar registros dns nesta zona.';
+$wb['ttl_range_error'] = 'O TTL mínimo são 60 segundos.';
 ?>
diff --git a/interface/web/dns/lib/lang/br_dns_srv.lng b/interface/web/dns/lib/lang/br_dns_srv.lng
index fefec736ee..97d2604896 100644
--- a/interface/web/dns/lib/lang/br_dns_srv.lng
+++ b/interface/web/dns/lib/lang/br_dns_srv.lng
@@ -1,20 +1,20 @@
 <?php
 $wb['server_id_txt'] = 'Servidor';
 $wb['zone_txt'] = 'Zona';
-$wb['name_txt'] = 'Nome';
+$wb['name_txt'] = 'Nome do host';
 $wb['type_txt'] = 'Tipo';
 $wb['target_txt'] = 'Alvo';
 $wb['weight_txt'] = 'Peso';
 $wb['port_txt'] = 'Porta';
 $wb['ttl_txt'] = 'TTL';
 $wb['active_txt'] = 'Ativo';
-$wb['limit_dns_record_txt'] = 'O limite de zonas dns para esta conta foi alcançado.';
-$wb['no_zone_perm'] = 'Você não tem permissão para adicionar registros a esta zona dns.';
-$wb['name_error_empty'] = 'Nome está em branco.';
-$wb['name_error_regex'] = 'Nome é inválido.';
-$wb['data_error_empty'] = 'Servidor está em branco.';
-$wb['data_error_regex'] = 'Servidor é inválido.';
-$wb['srv_error_regex'] = 'Registro do servidor é inválido. São necessários 3 textos separados por espaços.';
 $wb['aux_txt'] = 'Prioridade';
-$wb['ttl_range_error'] = 'O ttl mínimo são 60 segundos.';
+$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'] = 'Registro SVR está em branco.';
+$wb['data_error_regex'] = 'Registro SVR possui formato inválido.';
+$wb['srv_error_regex'] = 'O formato do registro SVR é inválido. O registro SVR deve conter 3 cadeias de texto separados por espaços.';
+$wb['ttl_range_error'] = 'O TTL mínimo são 60 segundos.';
 ?>
diff --git a/interface/web/dns/lib/lang/br_dns_template.lng b/interface/web/dns/lib/lang/br_dns_template.lng
index 8b099ceb14..81a8f190ed 100644
--- a/interface/web/dns/lib/lang/br_dns_template.lng
+++ b/interface/web/dns/lib/lang/br_dns_template.lng
@@ -1,7 +1,7 @@
 <?php
 $wb['name_txt'] = 'Nome';
-$wb['fields_txt'] = 'Campos';
+$wb['fields_txt'] = 'O campos';
 $wb['template_txt'] = 'Gabarito';
 $wb['visible_txt'] = 'Visível';
-$wb['placeholder_txt'] = 'Placeholder';
+$wb['placeholder_txt'] = 'Área Reservada';
 ?>
diff --git a/interface/web/dns/lib/lang/br_dns_template_list.lng b/interface/web/dns/lib/lang/br_dns_template_list.lng
index f6455314d6..8ec480d727 100644
--- a/interface/web/dns/lib/lang/br_dns_template_list.lng
+++ b/interface/web/dns/lib/lang/br_dns_template_list.lng
@@ -1,6 +1,6 @@
 <?php
-$wb['list_head_txt'] = 'Assistente de gabaritos dns';
+$wb['list_head_txt'] = 'Gabarito do Assistente DNS';
 $wb['visible_txt'] = 'Visível';
 $wb['name_txt'] = 'Nome';
-$wb['add_new_record_txt'] = 'Adicionar novo gabarito';
+$wb['add_new_record_txt'] = 'Adicionar novo registro';
 ?>
diff --git a/interface/web/dns/lib/lang/br_dns_tlsa.lng b/interface/web/dns/lib/lang/br_dns_tlsa.lng
index 5e1bf2256e..4037ebe595 100644
--- a/interface/web/dns/lib/lang/br_dns_tlsa.lng
+++ b/interface/web/dns/lib/lang/br_dns_tlsa.lng
@@ -1,16 +1,16 @@
 <?php
 $wb['server_id_txt'] = 'Servidor';
 $wb['zone_txt'] = 'Zona';
-$wb['name_txt'] = 'Descritor de serviço';
+$wb['name_txt'] = 'Descritor do serviço';
 $wb['type_txt'] = 'Tipo';
 $wb['data_txt'] = 'Dados TLSA';
 $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 a esta zona dns.';
-$wb['name_error_empty'] = 'Descritor de serviço está em branco.';
-$wb['name_error_regex'] = 'Descritor de serviço é inválido. Formato correto: \\"_&lt;port&gt;._(tcp|udp).&lt;hostname&gt;\\".';
+$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). Correto: _&lt;port&gt;._(tcp|udp).&lt;hostname&gt;';
 $wb['data_error_empty'] = 'Dados TLSA está em branco.';
-$wb['data_error_regex'] = 'Dados TLSA são inválidos. Formato correto: \\"n n n HASH\\".';
-$wb['ttl_range_error'] = 'O ttl mínimo são 60 segundos.';
+$wb['data_error_regex'] = 'Formato dos dados TLSA inválido. Correto: n n n HASH';
+$wb['ttl_range_error'] = 'O TTL mínimo são 60 segundos.';
 ?>
diff --git a/interface/web/dns/lib/lang/br_dns_txt.lng b/interface/web/dns/lib/lang/br_dns_txt.lng
index 356bbfa5f2..641cb9f2e1 100644
--- a/interface/web/dns/lib/lang/br_dns_txt.lng
+++ b/interface/web/dns/lib/lang/br_dns_txt.lng
@@ -1,19 +1,19 @@
 <?php
 $wb['server_id_txt'] = 'Servidor';
 $wb['zone_txt'] = 'Zona';
-$wb['name_txt'] = 'Nome';
+$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 zonas dns para esta conta foi alcançado.';
-$wb['no_zone_perm'] = 'Você não tem permissão para adicionar registros a esta zona dns.';
-$wb['name_error_empty'] = 'Nome está em branco.';
-$wb['name_error_regex'] = 'Nome é inválido.';
-$wb['data_error_empty'] = 'Endereço IP está em branco.';
-$wb['data_error_regex'] = 'Endereço IP é inválido.';
-$wb['ttl_range_error'] = 'O ttl mínimo são 60 segundos.';
-$wb['invalid_type_dkim'] = 'DKIM não permitido. Use o botão DKIM.';
-$wb['invalid_type_dmarc'] = 'DMARC não permitido. Use o botão DMARC.';
-$wb['invalid_type_spf'] = 'SPF não permitido. Use o botão SPF.';
+$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 texto está em branco.';
+$wb['data_error_regex'] = 'O texto é inválido.';
+$wb['ttl_range_error'] = 'O TTL mínimo são 60 segundos.';
+$wb['invalid_type_dkim'] = 'Sem permissão para DKIM. Use o botão DKIM.';
+$wb['invalid_type_dmarc'] = 'Sem permissão para DMARC. Use o botão DMARC.';
+$wb['invalid_type_spf'] = 'Sem permissão para SPF. Use o botão SPF.';
 ?>
diff --git a/interface/web/dns/lib/lang/br_dns_wizard.lng b/interface/web/dns/lib/lang/br_dns_wizard.lng
index 5e20f05593..d132d4646b 100644
--- a/interface/web/dns/lib/lang/br_dns_wizard.lng
+++ b/interface/web/dns/lib/lang/br_dns_wizard.lng
@@ -1,45 +1,45 @@
 <?php
+$wb['list_head_txt'] = 'Assistente de zona dns';
+$wb['list_desc_txt'] = 'Adicionar zona dns através do assistente';
+$wb['dns_zone_txt'] = 'Zona DNS';
 $wb['template_id_txt'] = 'Gabarito';
 $wb['server_id_txt'] = 'Servidor';
 $wb['client_txt'] = 'Cliente';
-$wb['btn_save_txt'] = 'Salvar';
+$wb['btn_save_txt'] = 'Adicionar zona dns';
 $wb['btn_cancel_txt'] = 'Cancelar';
 $wb['domain_txt'] = 'Domínio';
-$wb['email_txt'] = 'e-mail';
+$wb['email_txt'] = 'e-Mail';
+$wb['dkim_txt'] = 'DKIM';
+$wb['dnssec_txt'] = 'Assinar zona (DNSSEC)';
 $wb['ns1_txt'] = 'NS 1';
 $wb['ns2_txt'] = 'NS 2';
 $wb['ip_txt'] = 'Endereço IP';
 $wb['ipv6_txt'] = 'Endereço IPv6';
-$wb['error_origin_empty'] = 'Origem está em branco.';
+$wb['error_origin_empty'] = 'Origin está em branco.';
 $wb['error_ns_empty'] = 'NS está em branco.';
-$wb['error_mbox_empty'] = 'Endereço de e-mail está em branco.';
-$wb['error_refresh_empty'] = 'Atualizar está em branco.';
-$wb['error_retry_empty'] = 'Atualizar está em branco.';
-$wb['error_expire_empty'] = 'Expirar está em branco.';
-$wb['error_minimum_empty'] = 'Minímo está em branco.';
-$wb['error_ttl_empty'] = 'TTL está em branco.';
+$wb['error_mbox_empty'] = 'conta de e-mail (mbox) está em branco.';
+$wb['error_refresh_empty'] = 'Atualizar (refresh) está em branco.';
+$wb['error_retry_empty'] = 'Repetir (retry) está em branco.';
+$wb['error_expire_empty'] = 'Expirar (expire) está em branco.';
+$wb['error_minimum_empty'] = 'Mínimo (minimum) está em branco.';
+$wb['error_ttl_empty'] = 'Tempo (TTL) está em branco.';
 $wb['error_domain_empty'] = 'Domínio está em branco.';
-$wb['error_ip_empty'] = 'IP está em branco.';
-$wb['error_ipv6_empty'] = 'IPv6 está em branco.';
+$wb['error_ip_empty'] = 'Endereço IP está em branco.';
+$wb['error_ipv6_empty'] = 'Endereço IPv6 está em branco.';
 $wb['error_ns1_empty'] = 'NS1 está em branco.';
 $wb['error_ns2_empty'] = 'NS2 está em branco.';
 $wb['error_email_empty'] = 'Endereço de e-mail está em branco.';
-$wb['error_domain_regex'] = 'Domínio contém caracteres inválidos.';
-$wb['error_ns1_regex'] = 'NS1 contém caracteres inválidos.';
-$wb['error_ns2_regex'] = 'NS2 contém caracteres inválidos.';
-$wb['error_email_regex'] = 'Endereço de e-mail é inválido.';
-$wb['dns_zone_txt'] = 'Zona dns';
+$wb['error_domain_regex'] = 'O domínio possui caracteres inválidos.';
+$wb['error_ns1_regex'] = 'NS1 possui caracteres inválidos.';
+$wb['error_ns2_regex'] = 'NS2 possui caracteres inválidos.';
+$wb['error_email_regex'] = 'O endereço de e-mail não possui um endereço válido.';
 $wb['globalsearch_resultslimit_of_txt'] = 'de';
 $wb['globalsearch_resultslimit_results_txt'] = 'resultados';
-$wb['globalsearch_noresults_text_txt'] = 'Sem resultados';
-$wb['globalsearch_noresults_limit_txt'] = '0 resultados';
+$wb['globalsearch_noresults_text_txt'] = 'Sem resultados.';
+$wb['globalsearch_noresults_limit_txt'] = '0 resultado(s)';
 $wb['globalsearch_searchfield_watermark_txt'] = 'Pesquisar';
 $wb['globalsearch_suggestions_text_txt'] = 'Sugestões';
-$wb['list_head_txt'] = 'Assistente de zona dns';
-$wb['list_desc_txt'] = 'Adicionar zona dns através do assistente';
-$wb['dkim_txt'] = 'DKIM ativo';
 $wb['error_no_server_id'] = 'Nenhum servidor selecionado.';
 $wb['error_not_allowed_server_id'] = 'O servidor selecionado não é permitido para esta conta.';
-$wb['dnssec_txt'] = 'Zona assinada (DNSSEC)';
 $wb['limit_dns_zone_txt'] = 'O limite de zonas dns para esta conta foi alcançado.';
 ?>
diff --git a/interface/web/dns/lib/lang/tr.lng b/interface/web/dns/lib/lang/tr.lng
index a101cf7b2b..a291a5af08 100644
--- a/interface/web/dns/lib/lang/tr.lng
+++ b/interface/web/dns/lib/lang/tr.lng
@@ -1,4 +1,5 @@
 <?php
+
 $wb['DNS'] = 'DNS';
 $wb['Zones'] = 'Bölgeler';
 $wb['DNS A'] = 'DNS A';
@@ -17,6 +18,6 @@ $wb['DNS TXT'] = 'DNS TXT';
 $wb['DNS Wizard'] = 'DNS Yardımcısı';
 $wb['Add DNS Zone'] = 'DNS Bölgesi Ekle';
 $wb['Templates'] = 'Kalıplar';
-$wb['Secondary Zones'] = 'İkincil Bölgeler';
-$wb['Import Zone File'] = 'Bölge Dosyası Alma';
+$wb['Secondary Zones'] = 'İkincil DNS Bölgeleri';
+$wb['Import Zone File'] = 'Bölge Dosyası İçe Aktarma';
 ?>
diff --git a/interface/web/dns/lib/lang/tr_dns_a.lng b/interface/web/dns/lib/lang/tr_dns_a.lng
index 0cf1414fd8..905ff04744 100644
--- a/interface/web/dns/lib/lang/tr_dns_a.lng
+++ b/interface/web/dns/lib/lang/tr_dns_a.lng
@@ -2,16 +2,16 @@
 $wb['server_id_txt'] = 'Sunucu';
 $wb['zone_txt'] = 'Bölge';
 $wb['name_txt'] = 'Sunucu Adı';
-$wb['type_txt'] = 'Tip';
+$wb['type_txt'] = 'Tür';
 $wb['data_txt'] = 'IP Adresi';
 $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ölgesi kaydını ekleme izniniz yok.';
+$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['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.';
-$wb['ip_error_wrong'] = 'IP-Address format invalid';
+$wb['ip_error_wrong'] = 'IP adresi biçimi geçersiz';
 ?>
diff --git a/interface/web/dns/lib/lang/tr_dns_a_list.lng b/interface/web/dns/lib/lang/tr_dns_a_list.lng
index 129b32fdb2..61a4e2a7d3 100644
--- a/interface/web/dns/lib/lang/tr_dns_a_list.lng
+++ b/interface/web/dns/lib/lang/tr_dns_a_list.lng
@@ -7,7 +7,7 @@ $wb['name_txt'] = 'Ad';
 $wb['data_txt'] = 'Veri';
 $wb['aux_txt'] = 'Öncelik';
 $wb['ttl_txt'] = 'TTL Süresi';
-$wb['type_txt'] = 'Tip';
+$wb['type_txt'] = 'Tür';
 $wb['add_new_record_txt'] = 'DNS A Kaydı Ekle';
 $wb['page_txt'] = 'Sayfa';
 $wb['page_of_txt'] = '/';
diff --git a/interface/web/dns/lib/lang/tr_dns_aaaa.lng b/interface/web/dns/lib/lang/tr_dns_aaaa.lng
index b0c28aed41..1726f80a8f 100644
--- a/interface/web/dns/lib/lang/tr_dns_aaaa.lng
+++ b/interface/web/dns/lib/lang/tr_dns_aaaa.lng
@@ -2,15 +2,15 @@
 $wb['server_id_txt'] = 'Sunucu';
 $wb['zone_txt'] = 'Bölge';
 $wb['name_txt'] = 'Sunucu Adı';
-$wb['type_txt'] = 'Tip';
+$wb['type_txt'] = 'Tür';
 $wb['data_txt'] = 'IPv6 Adresleri';
 $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ölgesi kaydını ekleme izniniz yok.';
+$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['name_error_regex'] = 'Sunucu adının biçimi geçersiz.';
 $wb['data_error_empty'] = 'IP Adresi boÅŸ olamaz';
+$wb['ip_error_wrong'] = 'IP adresinin biçimi geçersiz';
 $wb['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.';
-$wb['ip_error_wrong'] = 'IP-Address format invalid';
 ?>
diff --git a/interface/web/dns/lib/lang/tr_dns_alias.lng b/interface/web/dns/lib/lang/tr_dns_alias.lng
index 9bd6e72ce6..ce78fcf303 100644
--- a/interface/web/dns/lib/lang/tr_dns_alias.lng
+++ b/interface/web/dns/lib/lang/tr_dns_alias.lng
@@ -2,12 +2,12 @@
 $wb['server_id_txt'] = 'Sunucu';
 $wb['zone_txt'] = 'Bölge';
 $wb['name_txt'] = 'Sunucu Adı';
-$wb['type_txt'] = 'Tip';
+$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ölgesi kaydını ekleme izniniz yok.';
+$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'] = 'Hedef sunucu adı boş olamaz';
diff --git a/interface/web/dns/lib/lang/tr_dns_cname.lng b/interface/web/dns/lib/lang/tr_dns_cname.lng
index 00366b9695..fa9a497e12 100644
--- a/interface/web/dns/lib/lang/tr_dns_cname.lng
+++ b/interface/web/dns/lib/lang/tr_dns_cname.lng
@@ -2,12 +2,12 @@
 $wb['server_id_txt'] = 'Sunucu';
 $wb['zone_txt'] = 'Bölge';
 $wb['name_txt'] = 'Sunucu Adı';
-$wb['type_txt'] = 'Tip';
+$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ölge kaydını ekleme izniniz yok.';
+$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';
diff --git a/interface/web/dns/lib/lang/tr_dns_dkim.lng b/interface/web/dns/lib/lang/tr_dns_dkim.lng
index 4d45fb4fe9..b7ffb1930f 100644
--- a/interface/web/dns/lib/lang/tr_dns_dkim.lng
+++ b/interface/web/dns/lib/lang/tr_dns_dkim.lng
@@ -1,13 +1,13 @@
 <?php
-$wb['public_key_txt'] = 'Public-Key';
-$wb['ttl_txt'] = 'TTL';
-$wb['active_txt'] = 'Active';
-$wb['record_exists_txt'] = 'DNS-Record already exists';
-$wb['dkim_disabled_txt'] = 'DKIM disabled for this mail-domain';
-$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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
-$wb['selector_txt'] = 'DKIM-Selector';
-$wb['data_error_empty'] = 'Public-Key missing';
-$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty';
+$wb['public_key_txt'] = 'Herkese Açık Anahtar';
+$wb['ttl_txt'] = 'TTL Süresi';
+$wb['active_txt'] = 'Etkin';
+$wb['record_exists_txt'] = 'DNS kaydı zaten var';
+$wb['dkim_disabled_txt'] = 'Bu e-posta etki alanı için DKIM devre dışı bırakılmış.';
+$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['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.';
+$wb['selector_txt'] = 'DKIM Seçici';
+$wb['data_error_empty'] = 'Herkese açık anahtar eksik';
+$wb['dkim_selector_empty_txt'] = 'DKIM Seçici boş olamaz';
 ?>
diff --git a/interface/web/dns/lib/lang/tr_dns_dmarc.lng b/interface/web/dns/lib/lang/tr_dns_dmarc.lng
index cf78bb8eed..6e98e94663 100644
--- a/interface/web/dns/lib/lang/tr_dns_dmarc.lng
+++ b/interface/web/dns/lib/lang/tr_dns_dmarc.lng
@@ -1,50 +1,50 @@
 <?php
-$wb['data_txt'] = 'DMARC Record';
-$wb['domain_txt'] = 'Domain';
-$wb['dmarc_policy_txt'] = 'Mail Receiver Policy';
-$wb['dmarc_policy_note_txt'] = 'How ISPs should handle messages that failed SPF or DKIM (DMARC).';
-$wb['dmarc_policy_none_txt'] = 'none';
-$wb['dmarc_policy_quarantine_txt'] = 'quarantine';
-$wb['dmarc_policy_reject_txt'] = 'reject';
-$wb['dmarc_rua_txt'] = 'Aggregate Data Reporting Address';
-$wb['dmarc_rua_note_txt'] = 'Email to receive reports from ISPs aboute messages which failed DMARC checks for the domain (separated by whitespaces).';
-$wb['dmarc_ruf_txt'] = 'Forensic Data Reporting Address';
-$wb['dmarc_ruf_note_txt'] = 'Email to receive sample messages that are failing DMARC checks for the domain (separated by whitespaces).';
-$wb['dmarc_fo_txt'] = 'Forensic reporting options';
-$wb['dmarc_fo0_txt'] = 'Generate reports if all underlying authentication mechanisms fail to produce a DMARC \'pass\' result.';
-$wb['dmarc_fo1_txt'] = 'Generate reports if any mechanisms fail.';
-$wb['dmarc_fod_txt'] = 'Generate report if DKIM signature failed to verify.';
-$wb['dmarc_fos_txt'] = 'Generate report if SPF failed.';
-$wb['dmarc_adkim_txt'] = 'DKIM identifier alignment';
-$wb['dmarc_adkim_note_txt'] = '\'strict\' requires exact matching between DKIM domain and email\'s from';
-$wb['dmarc_adkim_r_txt'] = 'relaxed';
-$wb['dmarc_adkim_s_txt'] = 'strict';
-$wb['dmarc_aspf_txt'] = 'SPF identifier alignment';
-$wb['dmarc_aspf_note_txt'] = '\'strict\' requires exact matching between SPF domain and email\'s from';
-$wb['dmarc_aspf_r_txt'] = 'relaxed';
-$wb['dmarc_aspf_s_txt'] = 'strict';
-$wb['dmarc_rf_txt'] = 'Report Format';
-$wb['dmarc_rf_afrf_txt'] = 'Authentication Failure Reporting Format';
-$wb['dmarc_rf_iodef_txt'] = 'Incident Object Description Exchange Format';
-$wb['dmarc_pct_txt'] = 'Apply Policy to this Percentage';
-$wb['dmarc_pct_note_txt'] = '% (100 default). Messages in percent from the domain you want ISPs to check.';
-$wb['dmarc_ri_txt'] = 'Reporting Interval';
-$wb['dmarc_ri_note_txt'] = 'Seconds (default=86400). The time in seconds that aggregate reports should be generate (86400 represents 1 day).';
-$wb['dmarc_sp_txt'] = 'Subdomain Policy (Defaults to same as domain).';
-$wb['dmarc_sp_same_txt'] = 'same as domain';
-$wb['dmarc_sp_none_txt'] = 'none';
-$wb['dmarc_sp_quarantine_txt'] = 'quarantine';
-$wb['dmarc_sp_reject_txt'] = 'reject';
-$wb['ttl_txt'] = 'TTL';
-$wb['active_txt'] = 'Active';
-$wb['dmarc_policy_error_txt'] = 'Only policy \'none\' is allowed without DKIM-signed emails.';
-$wb['dmarc_no_dkim_txt'] = 'No active DKIM Record.';
-$wb['dmarc_no_spf_txt'] = 'No active SPF Record.';
-$wb['dmarc_more_spf_txt'] = 'More than one active SPF Record';
-$wb['dmarc_invalid_email_txt'] = 'Invalid Email';
-$wb['dmarc_empty_txt'] = 'DMARC Record empty - specify at least one option';
-$wb['record_exists_txt'] = 'DNS-Record already exists';
-$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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['data_txt'] = 'DMARC Kaydı';
+$wb['domain_txt'] = 'Etki Alanı';
+$wb['dmarc_policy_txt'] = 'E-posta Alma Ä°lkesi';
+$wb['dmarc_policy_note_txt'] = 'SPF ya da DKIM (DMARC) doğrulaması yapılamadığında İnternet Hizmeti Sağlayıcıların iletileri nasıl işleyeceği.';
+$wb['dmarc_policy_none_txt'] = 'işlem yapılmasın';
+$wb['dmarc_policy_quarantine_txt'] = 'karantinaya alınsın';
+$wb['dmarc_policy_reject_txt'] = 'reddedilsin';
+$wb['dmarc_rua_txt'] = 'Verilerin BildirileceÄŸi Adres';
+$wb['dmarc_rua_note_txt'] = 'Etki alanı için DMARC doğrulamasını geçemeyen iletiler hakkında İnternet Hizmeti Sağlayıcılardan gelen bildirimlerin alınacağı e-posta adresleri (boşluk ile ayırarak yazın).';
+$wb['dmarc_ruf_txt'] = 'Adli BiliÅŸim Verilerinin BildirileceÄŸi Adres';
+$wb['dmarc_ruf_note_txt'] = 'Etki alanı için DMARC doğrulamasını geçemeyen örnek iletilerin alınacağı e-posta adresleri (boşluk ile ayırarak yazın).';
+$wb['dmarc_fo_txt'] = 'Adli bilişim bildirim seçenekleri';
+$wb['dmarc_fo0_txt'] = 'Belirtilen hiç bir kimlik doğrulama yöntemi bir DMARC  sonucu alamazsa bildirimler üretilsin.';
+$wb['dmarc_fo1_txt'] = 'Yöntemlerden biri doğrulama yapamazsa bildirimler üretilsin.';
+$wb['dmarc_fod_txt'] = 'DKIM imzası doğrulanamazsa bildirim üretilsin.';
+$wb['dmarc_fos_txt'] = 'SPF başarısız olursa bildirim gönderilsin.';
+$wb['dmarc_adkim_txt'] = 'DKIM belirteci deÄŸerlendirmesi';
+$wb['dmarc_adkim_note_txt'] = ' seçeneğinde DKIM etki alanı ile e-postanın geldiği etki alanının bire bir eşleşmesi gerekir';
+$wb['dmarc_adkim_r_txt'] = 'gevÅŸek';
+$wb['dmarc_adkim_s_txt'] = 'sıkı';
+$wb['dmarc_aspf_txt'] = 'SPF belirteci deÄŸerlendirmesi';
+$wb['dmarc_aspf_note_txt'] = ' seçeneğinde SPF etki alanı ile e-postanın geldiği etki alanının bire bir eşleşmesi gerekir';
+$wb['dmarc_aspf_r_txt'] = 'gevÅŸek';
+$wb['dmarc_aspf_s_txt'] = 'sıkı';
+$wb['dmarc_rf_txt'] = 'Bildirim Biçimi';
+$wb['dmarc_rf_afrf_txt'] = 'Kimlik Doğrulama Sorunlarını Bildirme Biçimi';
+$wb['dmarc_rf_iodef_txt'] = 'Olay Nesnesi Açıklama Değişimi Biçimi';
+$wb['dmarc_pct_txt'] = 'İlkenin Uygulanacağı Yüzde';
+$wb['dmarc_pct_note_txt'] = 'İnternet Hizmeti sağlayıcı tarafından denetlenmesini istediğiniz iletilerin yüzdesi (varsayılan %100).';
+$wb['dmarc_ri_txt'] = 'Bildirim Sıklığı';
+$wb['dmarc_ri_note_txt'] = 'Saniye cinsinden bildirim raporlarının üretilme sıklığı (varsayılan değer, bir güne karşılık 86400).';
+$wb['dmarc_sp_txt'] = 'Alt Etki Alanı İlkesi (Varsayılan değerler etki alanı ile aynıdır).';
+$wb['dmarc_sp_same_txt'] = 'etki alanı ile aynı';
+$wb['dmarc_sp_none_txt'] = 'işlem yapılmasın';
+$wb['dmarc_sp_quarantine_txt'] = 'karantiya atılsın';
+$wb['dmarc_sp_reject_txt'] = 'reddedilsin';
+$wb['ttl_txt'] = 'TTL Süresi';
+$wb['active_txt'] = 'Etkin';
+$wb['dmarc_policy_error_txt'] = 'DKIM ile imzalanmış e-postalar için yalnız  ilkesi seçilebilir.';
+$wb['dmarc_no_dkim_txt'] = 'Etkin bir DKIM kaydı yok.';
+$wb['dmarc_no_spf_txt'] = 'Etkin bir SPF kaydı yok.';
+$wb['dmarc_more_spf_txt'] = 'Birden çok etkin SPF kaydı var';
+$wb['dmarc_invalid_email_txt'] = 'E-posta Adresi Geçersiz';
+$wb['dmarc_empty_txt'] = 'DMARC kaydı boş - en az bir seçenek seçin';
+$wb['record_exists_txt'] = 'DNS kaydı zaten var';
+$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['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.';
 ?>
diff --git a/interface/web/dns/lib/lang/tr_dns_ds.lng b/interface/web/dns/lib/lang/tr_dns_ds.lng
index c3622dc5b5..4ab7447d0a 100644
--- a/interface/web/dns/lib/lang/tr_dns_ds.lng
+++ b/interface/web/dns/lib/lang/tr_dns_ds.lng
@@ -1,17 +1,18 @@
 <?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.';
-$wb['invalid_type_ds'] = 'DS-Record has a wrong format.';
+$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ının biçimi hatalı.';
+$wb['data_error_empty'] = 'Metin boÅŸ olamaz';
+$wb['data_error_regex'] = 'Metin biçimi geçersiz';
+$wb['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.';
+$wb['invalid_type_ds'] = 'DS kaydının biçimi hatalı.';
+
 ?>
diff --git a/interface/web/dns/lib/lang/tr_dns_hinfo.lng b/interface/web/dns/lib/lang/tr_dns_hinfo.lng
index 9082420e04..c47718c63c 100644
--- a/interface/web/dns/lib/lang/tr_dns_hinfo.lng
+++ b/interface/web/dns/lib/lang/tr_dns_hinfo.lng
@@ -2,12 +2,12 @@
 $wb['server_id_txt'] = 'Sunucu';
 $wb['zone_txt'] = 'Bölge';
 $wb['name_txt'] = 'Sunucu Adı';
-$wb['type_txt'] = 'Tip';
+$wb['type_txt'] = 'Tür';
 $wb['data_txt'] = 'Sunucu Bilgisi';
 $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ölgesi kaydını ekleme izniniz yok.';
+$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'] = 'Sunucu bilgisi boÅŸ olamaz';
diff --git a/interface/web/dns/lib/lang/tr_dns_import.lng b/interface/web/dns/lib/lang/tr_dns_import.lng
index 64073d2b49..0f95a3131f 100644
--- a/interface/web/dns/lib/lang/tr_dns_import.lng
+++ b/interface/web/dns/lib/lang/tr_dns_import.lng
@@ -1,16 +1,16 @@
 <?php
-$wb['zone_file_import_txt'] = 'Bölge Dosyası Alma';
+$wb['zone_file_import_txt'] = 'Bölge Dosyası İçe Aktarma';
 $wb['server_id_txt'] = 'Sunucu';
 $wb['client_txt'] = 'Müşteri';
-$wb['btn_save_txt'] = 'Bölge Dosyasını Al';
+$wb['btn_save_txt'] = 'Bölge Dosyasını İçe Aktar';
 $wb['btn_cancel_txt'] = 'Geri';
-$wb['domain_txt'] = 'Alan Adı';
-$wb['zone_file_successfully_imported_txt'] = 'Bölge dosyası alındı!';
+$wb['domain_txt'] = 'Etki Alanı';
+$wb['zone_file_successfully_imported_txt'] = 'Bölge dosyası içe aktarıldı!';
 $wb['error_no_valid_zone_file_txt'] = 'Bu bölge dosyası geçersiz görünüyor!';
 $wb['zonefile_to_import_txt'] = 'Bölge Dosyası';
-$wb['domain_field_desc_txt'] = 'Alan adı dosya adında ya da bölge dosyasının içeriğinde bulunuyor ise boş bırakılabilir.';
-$wb['title'] = 'Bölge Dosyalarını Al';
+$wb['domain_field_desc_txt'] = 'Etki alanı dosya adında ya da bölge dosyasının içeriğinde bulunuyor ise boş bırakılabilir.';
+$wb['title'] = 'Bölge Dosyalarını İçe Aktar';
 $wb['no_file_uploaded_error'] = 'Hiçbir bölge dosyası yüklenmedi';
-$wb['error_no_server_id'] = 'No server provided.';
-$wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.';
+$wb['error_no_server_id'] = 'Sunucu belirtilmemiÅŸ.';
+$wb['error_not_allowed_server_id'] = 'Seçilmiş sunucuda bu hesap kullanılamaz.';
 ?>
diff --git a/interface/web/dns/lib/lang/tr_dns_loc.lng b/interface/web/dns/lib/lang/tr_dns_loc.lng
index dc9ad9a006..25350c9aa8 100644
--- a/interface/web/dns/lib/lang/tr_dns_loc.lng
+++ b/interface/web/dns/lib/lang/tr_dns_loc.lng
@@ -1,16 +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.';
+$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/lang/tr_dns_mx.lng b/interface/web/dns/lib/lang/tr_dns_mx.lng
index b3efeab1bb..6f39e991bc 100644
--- a/interface/web/dns/lib/lang/tr_dns_mx.lng
+++ b/interface/web/dns/lib/lang/tr_dns_mx.lng
@@ -2,17 +2,17 @@
 $wb['server_id_txt'] = 'Sunucu';
 $wb['zone_txt'] = 'Bölge';
 $wb['name_txt'] = 'Sunucu Adı';
-$wb['type_txt'] = 'Tip';
-$wb['data_txt'] = 'Posta sunucusu adı';
+$wb['type_txt'] = 'Tür';
+$wb['data_txt'] = 'E-posta Sunucusu Adı';
 $wb['aux_txt'] = 'Öncelik';
 $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ölgesi kaydını ekleme izniniz yok.';
+$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'] = 'Posta sunucusu adı boş olamaz';
-$wb['data_error_regex'] = 'Posta sunucusu adı biçimi geçersiz';
+$wb['data_error_empty'] = 'E-posta sunucusu adı boş olamaz';
+$wb['data_error_regex'] = 'E-posta sunucusu adı biçimi geçersiz';
 $wb['duplicate_mx_record_txt'] = 'Bu MX kaydı zaten var.';
 $wb['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.';
 ?>
diff --git a/interface/web/dns/lib/lang/tr_dns_ns.lng b/interface/web/dns/lib/lang/tr_dns_ns.lng
index 03975af5fa..e32b086091 100644
--- a/interface/web/dns/lib/lang/tr_dns_ns.lng
+++ b/interface/web/dns/lib/lang/tr_dns_ns.lng
@@ -2,12 +2,12 @@
 $wb['server_id_txt'] = 'Sunucu';
 $wb['zone_txt'] = 'Bölge';
 $wb['name_txt'] = 'Bölge';
-$wb['type_txt'] = 'Tip';
+$wb['type_txt'] = 'tür';
 $wb['data_txt'] = 'Ad Sunucusu 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ölgesi kaydını ekleme izniniz yok.';
+$wb['no_zone_perm'] = 'Bu DNS bölgesine kayıt ekleme izniniz yok.';
 $wb['name_error_empty'] = 'Bölge boş olamaz.';
 $wb['name_error_regex'] = 'Bölge biçimi geçersiz.';
 $wb['data_error_empty'] = 'Ad sunucusu boÅŸ olamaz';
diff --git a/interface/web/dns/lib/lang/tr_dns_rp.lng b/interface/web/dns/lib/lang/tr_dns_rp.lng
index 0a01c2dbe8..56c10cb7e4 100644
--- a/interface/web/dns/lib/lang/tr_dns_rp.lng
+++ b/interface/web/dns/lib/lang/tr_dns_rp.lng
@@ -2,12 +2,12 @@
 $wb['server_id_txt'] = 'Sunucu';
 $wb['zone_txt'] = 'Bölge';
 $wb['name_txt'] = 'Sunucu Adı';
-$wb['type_txt'] = 'Tip';
+$wb['type_txt'] = 'Tür';
 $wb['data_txt'] = 'Ä°lgili KiÅŸi';
 $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ölgesi kaydını ekleme izniniz yok.';
+$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'] = 'Ä°lgili kiÅŸi boÅŸ olamaz';
diff --git a/interface/web/dns/lib/lang/tr_dns_slave.lng b/interface/web/dns/lib/lang/tr_dns_slave.lng
index d6c83a92fa..8c83c1591c 100644
--- a/interface/web/dns/lib/lang/tr_dns_slave.lng
+++ b/interface/web/dns/lib/lang/tr_dns_slave.lng
@@ -13,5 +13,5 @@ $wb['origin_error_unique'] = 'Bu bölge için zaten bir kayıt var.';
 $wb['origin_error_regex'] = 'Bölge biçimi geçersiz.';
 $wb['ns_error_regex'] = 'NS biçimi geçersiz.';
 $wb['eg_domain_tld'] = 'Örnek: domain.tld.';
-$wb['ipv4_form_txt'] = 'Separate multiple IPs with commas';
+$wb['ipv4_form_txt'] = 'Birden çok IP adresini virgül ile ayırarak yazın';
 ?>
diff --git a/interface/web/dns/lib/lang/tr_dns_soa.lng b/interface/web/dns/lib/lang/tr_dns_soa.lng
index 02e325e427..fd39de04f5 100644
--- a/interface/web/dns/lib/lang/tr_dns_soa.lng
+++ b/interface/web/dns/lib/lang/tr_dns_soa.lng
@@ -9,11 +9,14 @@ $wb['retry_txt'] = 'Yinelenme';
 $wb['expire_txt'] = 'Sona erme';
 $wb['minimum_txt'] = 'En düşük';
 $wb['ttl_txt'] = 'TTL Süresi';
-$wb['xfer_txt'] = 'Şu IP adreslerine (virgülle ayrılmış)<br />bölge aktarımı yapılabilsin';
+$wb['xfer_txt'] = 'Şu IP adreslerine (virgül ile ayrırak yazın)<br />bölge aktarımı yapılabilsin';
 $wb['active_txt'] = 'Etkin';
+$wb['dnssec_info_txt'] = 'Kayıt defteri için DNSSEC DS verisi';
+$wb['dnssec_wanted_txt'] = 'İmza bölgesi (DNSSEC)';
+$wb['dnssec_wanted_info'] = 'Devre dışı bırakıldığında DNSSEC daha önce etkinleştirilmiş ve anahtarlar üretilmiş ise DNSSEC anahtarları silinir. Ancak bölge bundan sonra imzalanmış biçimde aktarılmaz.';
 $wb['limit_dns_zone_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla DNS bölgesi sayısına ulaştınız.';
 $wb['client_txt'] = 'Müşteri';
-$wb['no_zone_perm'] = 'Bu DNS bölgesi kaydını ekleme izniniz yok.';
+$wb['no_zone_perm'] = 'Bu DNS bölgesine kayıt ekleme izniniz yok.';
 $wb['server_id_error_empty'] = 'Sunucu seçilmemiş';
 $wb['origin_error_empty'] = 'Bölge boş olamaz.';
 $wb['origin_error_unique'] = 'Bu bölge için bir kayıt zaten var.';
@@ -21,24 +24,21 @@ $wb['origin_error_regex'] = 'Bölge biçimi geçersiz.';
 $wb['ns_error_regex'] = 'NS geçersiz formatta.';
 $wb['mbox_error_empty'] = 'E-posta boÅŸ olamaz.';
 $wb['mbox_error_regex'] = 'E-posta biçimi geçersiz.';
-$wb['also_notify_txt'] = 'Ayrıca Bildir';
-$wb['also_notify_error_regex'] = 'Lütfen bir IP adresi kullanın.';
-$wb['xfer_error_regex'] = 'Ayrıca bildir: Lütfen bir IP adresi kullanın.';
+$wb['also_notify_txt'] = 'Ayrıca Bildirilsin';
+$wb['also_notify_error_regex'] = 'Ayrıca Bildirilsin: Lütfen bir IP adresi kullanın.';
+$wb['xfer_error_regex'] = 'Aktarılsın: Bir ya da , ile ayrılmış birkaç IP adresi ya da any sözcüğünü kullanın.';
 $wb['update_acl_txt'] = 'EDL Güncelle';
 $wb['seconds_txt'] = 'Saniye';
 $wb['eg_domain_tld'] = 'Örnek: domain.tld';
 $wb['eg_ns1_domain_tld'] = 'Örnek: ns1.domain.tld';
 $wb['eg_webmaster_domain_tld'] = 'Örnek: webmaster@domain.tld';
-$wb['The Domain can not be changed. Please ask your Administrator if you want to change the domain name.'] = 'Alan adı değiştirilemedi. Lütfen alan adını değiştirmek için sistem yöneticisi ile görüşün.';
+$wb['The Domain can not be changed. Please ask your Administrator if you want to change the domain name.'] = 'Etki alanı değiştirilemedi. Lütfen etki alanını değiştirmek için sistem yöneticisi ile görüşün.';
 $wb['refresh_range_error'] = 'En kısa yenilenme süresi 60 saniyedir.';
 $wb['retry_range_error'] = 'En kısa yinelenme süresi 60 saniyedir.';
 $wb['expire_range_error'] = 'En kısa sona erme süresi 60 saniyedir.';
 $wb['minimum_range_error'] = 'En kısa en kısa süre 60 saniyedir.';
 $wb['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.';
-$wb['dnssec_info_txt'] = 'DNSSEC DS-Data for registry';
-$wb['dnssec_wanted_txt'] = 'Sign zone (DNSSEC)';
-$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delivered in signed format afterwards. If you use PowerDNS, keys WILL be deleted!';
-$wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.';
-$wb['soa_cannot_be_changed_txt'] = 'The Zone (SOA) can not be changed. Please contact your administrator to change the zone.';
-$wb['configuration_error_txt'] = 'CONFIGURATION ERROR';
+$wb['error_not_allowed_server_id'] = 'Seçilmiş sunucuda bu hesap kullanılamaz.';
+$wb['soa_cannot_be_changed_txt'] = 'Bölge (SOA) değiştirilemez. Lütfen bölgeyi değiştirmek için yöneticiniz ile görüşün.';
+$wb['configuration_error_txt'] = 'YAPILANDIRMA SORUNU';
 ?>
diff --git a/interface/web/dns/lib/lang/tr_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/tr_dns_soa_admin_list.lng
index d8e56c17ee..490cdc7b4f 100644
--- a/interface/web/dns/lib/lang/tr_dns_soa_admin_list.lng
+++ b/interface/web/dns/lib/lang/tr_dns_soa_admin_list.lng
@@ -5,7 +5,7 @@ $wb['server_id_txt'] = 'Sunucu';
 $wb['origin_txt'] = 'Bölge';
 $wb['ns_txt'] = 'Ad Sunucusu';
 $wb['mbox_txt'] = 'E-posta';
-$wb['add_new_record_wizard_txt'] = 'Yardımcı ile DNS bölgesi ekle';
+$wb['add_new_record_wizard_txt'] = 'Yardımcı ile DNS Bölgesi Ekle';
 $wb['add_new_record_txt'] = 'El ile DNS Bölgesi Ekle';
 $wb['sys_groupid_txt'] = 'Müşteri';
 ?>
diff --git a/interface/web/dns/lib/lang/tr_dns_soa_list.lng b/interface/web/dns/lib/lang/tr_dns_soa_list.lng
index 8f7ed985ee..831ff6afd7 100644
--- a/interface/web/dns/lib/lang/tr_dns_soa_list.lng
+++ b/interface/web/dns/lib/lang/tr_dns_soa_list.lng
@@ -5,7 +5,7 @@ $wb['server_id_txt'] = 'Sunucu';
 $wb['origin_txt'] = 'Bölge';
 $wb['ns_txt'] = 'Ad Sunucusu';
 $wb['mbox_txt'] = 'E-posta';
-$wb['add_new_record_wizard_txt'] = 'Yardımcı ile DNS bölgesi ekle';
+$wb['add_new_record_wizard_txt'] = 'Yardımcı ile DNS Bölgesi Ekle';
 $wb['add_new_record_txt'] = 'DNS Bölgesi (SOA) Ekle';
-$wb['import_zone_file_txt'] = 'Import Zone File';
+$wb['import_zone_file_txt'] = 'Bölge Dosyasını İçe Aktar';
 ?>
diff --git a/interface/web/dns/lib/lang/tr_dns_spf.lng b/interface/web/dns/lib/lang/tr_dns_spf.lng
index df8d1fe145..40cad402a4 100644
--- a/interface/web/dns/lib/lang/tr_dns_spf.lng
+++ b/interface/web/dns/lib/lang/tr_dns_spf.lng
@@ -1,25 +1,25 @@
 <?php
-$wb['data_txt'] = 'SPF-Record';
-$wb['spf_mechanism_txt'] = 'SPF Mechanism';
-$wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
-$wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
-$wb['spf_mechanism_softfail_txt'] = 'SoftFail - allow mail from other senders but mark the email';
-$wb['spf_mechanism_neutral_txt'] = 'Neutral - do nothing';
-$wb['spf_mx_txt'] = 'Allow servers listed as MX to send email for this domain';
-$wb['spf_a_txt'] = 'Allow current IP address of the domain to send email for this domain';
-$wb['spf_ip_txt'] = 'Additional IP addresses in CIDR format that deliver or relay mail for this domain';
-$wb['spf_ip_note_txt'] = '(Sepearate IPs with whitespaces)';
-$wb['spf_invalid_ip_txt'] = 'Invalid IP-address';
-$wb['spf_hostname_txt'] = 'Any other server hostname that may deliver or relay mail for this domain';
-$wb['spf_hostname_note_txt'] = '(Sepearate hostnames with whitespaces)';
-$wb['spf_invalid_hostname_txt'] = 'Invalid hostname';
-$wb['spf_domain_txt'] = 'Any domains that may deliver or relay mail for this domain';
-$wb['spf_domain_note_txt'] = '(Sepearate domains with whitespaces)';
-$wb['spf_invalid_domain_txt'] = 'Invalid domainname';
-$wb['ttl_txt'] = 'TTL';
-$wb['active_txt'] = 'Active';
-$wb['record_exists_txt'] = 'DNS-Record already exists';
-$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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['data_txt'] = 'SPF Kaydı';
+$wb['spf_mechanism_txt'] = 'SPF Yöntemi';
+$wb['spf_mechanism_pass_txt'] = 'Kabul - Diğer göndericilerden gelen e-postalar kabul edilsin';
+$wb['spf_mechanism_fail_txt'] = 'Red - Diğer göndericilerden gelen e-postalar reddedilsin';
+$wb['spf_mechanism_softfail_txt'] = 'Yazılımsal Red - Diğer göndericilerden gelen e-postalar kabul edilsin ancak e-posta işaretlensin';
+$wb['spf_mechanism_neutral_txt'] = 'Tepkisiz - Hiç bir şey yapılmasın';
+$wb['spf_mx_txt'] = 'MX olarak listelenen sunucular bu etki alanı adına e-posta gönderebilsin';
+$wb['spf_a_txt'] = 'Etki alanının geçerli IP adresleri bu etki alanı adına e-posta gönderebilsin';
+$wb['spf_ip_txt'] = 'CIDR biçiminde, bu etki alanı için e-posta gönderebilecek ya da aktarabilecek IP adresleri';
+$wb['spf_ip_note_txt'] = '(IP adreslerini boşluk ile ayırarak yazın)';
+$wb['spf_invalid_ip_txt'] = 'IP adresi geçersiz';
+$wb['spf_hostname_txt'] = 'Bu etki alanı için e-posta gönderebilecek ya da aktarabilecek diğer sunucuların adları';
+$wb['spf_hostname_note_txt'] = '(Sunucu adlarını boşluk ile ayırarak yazın)';
+$wb['spf_invalid_hostname_txt'] = 'Sunucu adı geçersiz';
+$wb['spf_domain_txt'] = 'Bu etki alanı için e-posta gönderebilecek ya da aktarabilecek etki alanı adları';
+$wb['spf_domain_note_txt'] = '(Etki alanı adlarını boşluk ile ayırarak yazın)';
+$wb['spf_invalid_domain_txt'] = 'Etki alanı adı geçersiz';
+$wb['ttl_txt'] = 'TTL Süresi';
+$wb['active_txt'] = 'Etkin';
+$wb['record_exists_txt'] = 'DNS kaydı zaten var';
+$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['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.';
 ?>
diff --git a/interface/web/dns/lib/lang/tr_dns_srv.lng b/interface/web/dns/lib/lang/tr_dns_srv.lng
index c7ad55a852..8af151db87 100644
--- a/interface/web/dns/lib/lang/tr_dns_srv.lng
+++ b/interface/web/dns/lib/lang/tr_dns_srv.lng
@@ -2,7 +2,7 @@
 $wb['server_id_txt'] = 'Sunucu';
 $wb['zone_txt'] = 'Bölge';
 $wb['name_txt'] = 'Sunucu Adı';
-$wb['type_txt'] = 'Tip';
+$wb['type_txt'] = 'Tür';
 $wb['target_txt'] = 'Hedef';
 $wb['weight_txt'] = 'Ağırlık';
 $wb['port_txt'] = 'Kapı';
@@ -10,7 +10,7 @@ $wb['ttl_txt'] = 'TTL Süresi';
 $wb['active_txt'] = 'Etkin';
 $wb['aux_txt'] = 'Öncelik';
 $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ölgesi kaydını ekleme izniniz yok.';
+$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'] = 'Sunucu kaydı boş olamaz';
diff --git a/interface/web/dns/lib/lang/tr_dns_template.lng b/interface/web/dns/lib/lang/tr_dns_template.lng
index 3ca594f62e..37ba3b5883 100644
--- a/interface/web/dns/lib/lang/tr_dns_template.lng
+++ b/interface/web/dns/lib/lang/tr_dns_template.lng
@@ -3,5 +3,4 @@ $wb['name_txt'] = 'Ad';
 $wb['fields_txt'] = 'Alanlar';
 $wb['template_txt'] = 'Kalıp';
 $wb['visible_txt'] = 'Görünür';
-$wb['placeholder_txt'] = 'Placeholder';
 ?>
diff --git a/interface/web/dns/lib/lang/tr_dns_tlsa.lng b/interface/web/dns/lib/lang/tr_dns_tlsa.lng
index 3b87e2ad59..1fe0310d3a 100644
--- a/interface/web/dns/lib/lang/tr_dns_tlsa.lng
+++ b/interface/web/dns/lib/lang/tr_dns_tlsa.lng
@@ -1,16 +1,16 @@
 <?php
-$wb['server_id_txt'] = 'Server';
-$wb['zone_txt'] = 'Zone';
-$wb['name_txt'] = 'Service-Descriptor';
-$wb['type_txt'] = 'type';
-$wb['data_txt'] = 'TLSA-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. Correct: _&lt;port&gt;._(tcp|udp).&lt;hostname&gt;';
-$wb['data_error_empty'] = 'TLSA-Data empty';
-$wb['data_error_regex'] = 'TLSA dataformat is wrong. Correct: n n n HASH';
-$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['server_id_txt'] = 'Sunucu';
+$wb['zone_txt'] = 'Bölge';
+$wb['name_txt'] = 'Hizmet Belirteci';
+$wb['type_txt'] = 'tür';
+$wb['data_txt'] = 'TLSA Verisi';
+$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ının biçimi hatalı. Doğru biçim: _&lt;kapı&gt;._(tcp|udp).&lt;sunucuadı&gt;';
+$wb['data_error_empty'] = 'TLSA verisi boÅŸ olamaz.';
+$wb['data_error_regex'] = 'TLSA veri biçimi hatalı. Doğru biçim: n n n HASH';
+$wb['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.';
 ?>
diff --git a/interface/web/dns/lib/lang/tr_dns_txt.lng b/interface/web/dns/lib/lang/tr_dns_txt.lng
index 7b77bae7f9..632b1e7b69 100644
--- a/interface/web/dns/lib/lang/tr_dns_txt.lng
+++ b/interface/web/dns/lib/lang/tr_dns_txt.lng
@@ -2,18 +2,18 @@
 $wb['server_id_txt'] = 'Sunucu';
 $wb['zone_txt'] = 'Bölge';
 $wb['name_txt'] = 'Sunucu Adı';
-$wb['type_txt'] = 'Tip';
+$wb['type_txt'] = 'Tür';
 $wb['data_txt'] = 'Metin';
 $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ölgesi kaydını ekleme izniniz yok.';
+$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ÅŸ olamaz';
 $wb['data_error_regex'] = 'Metin biçimi geçersiz';
 $wb['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.';
-$wb['invalid_type_dkim'] = 'DKIM is not allowed. Use the DKIM button';
-$wb['invalid_type_dmarc'] = 'DMARC is not allowed. Use the DMARC button';
-$wb['invalid_type_spf'] = 'SPF is not allowed. Use the SPF button.';
+$wb['invalid_type_dkim'] = 'DKIM yazılamaz. DKIM düğmesini kullanın';
+$wb['invalid_type_dmarc'] = 'DMARC yazılamaz. DMARC düğmesini kullanın';
+$wb['invalid_type_spf'] = 'SPF yazılamaz. SPF düğmesini kullanın.';
 ?>
diff --git a/interface/web/dns/lib/lang/tr_dns_wizard.lng b/interface/web/dns/lib/lang/tr_dns_wizard.lng
index 1a96393914..f0a8b38980 100644
--- a/interface/web/dns/lib/lang/tr_dns_wizard.lng
+++ b/interface/web/dns/lib/lang/tr_dns_wizard.lng
@@ -7,11 +7,14 @@ $wb['server_id_txt'] = 'Sunucu';
 $wb['client_txt'] = 'Müşteri';
 $wb['btn_save_txt'] = 'DNS Kaydı Ekle';
 $wb['btn_cancel_txt'] = 'Geri';
-$wb['domain_txt'] = 'Alan Adı';
+$wb['domain_txt'] = 'Etki Alanı';
 $wb['email_txt'] = 'E-posta';
-$wb['ns1_txt'] = 'Ad Sunucusu 1';
-$wb['ns2_txt'] = 'Ad Sunucusu 2';
+$wb['dkim_txt'] = 'DKIM';
+$wb['dnssec_txt'] = 'İmza bölgesi (DNSSEC)';
+$wb['ns1_txt'] = '1. Ad Sunucusu';
+$wb['ns2_txt'] = '2. Ad Sunucusu';
 $wb['ip_txt'] = 'IP Adresi';
+$wb['ipv6_txt'] = 'IPv6 Adresi';
 $wb['error_origin_empty'] = 'Kaynak boÅŸ olamaz.';
 $wb['error_ns_empty'] = 'Ad sunucusu boÅŸ olamaz.';
 $wb['error_mbox_empty'] = 'Mbox boÅŸ olamaz.';
@@ -20,14 +23,15 @@ $wb['error_retry_empty'] = 'Yinelenme boÅŸ olamaz.';
 $wb['error_expire_empty'] = 'Sona erme boÅŸ olamaz.';
 $wb['error_minimum_empty'] = 'En az boÅŸ olamaz.';
 $wb['error_ttl_empty'] = 'TTL süresi boş olamaz.';
-$wb['error_domain_empty'] = 'Alan adı boş olamaz';
+$wb['error_domain_empty'] = 'Etki alanı boş olamaz';
 $wb['error_ip_empty'] = 'IP boÅŸ olamaz.';
-$wb['error_ns1_empty'] = 'As Sunucusu 1 boÅŸ olamaz.';
-$wb['error_ns2_empty'] = 'Ad Sunucusu 2 boÅŸ olamaz.';
+$wb['error_ipv6_empty'] = 'IPv6 boÅŸ olamaz.';
+$wb['error_ns1_empty'] = '1. Ad Sunucusu boÅŸ olamaz.';
+$wb['error_ns2_empty'] = '2. Ad Sunucusu boÅŸ olamaz.';
 $wb['error_email_empty'] = 'E-posta boÅŸ olamaz.';
-$wb['error_domain_regex'] = 'Alan adında geçersiz karakterler var.';
-$wb['error_ns1_regex'] = 'Ad Sunucusu 1 adında geçersiz karakterler var.';
-$wb['error_ns2_regex'] = 'Ad Sunucusu 2 adında geçersiz karakterler var.';
+$wb['error_domain_regex'] = 'Etki alanı adında geçersiz karakterler var.';
+$wb['error_ns1_regex'] = '1. Ad Sunucusu adında geçersiz karakterler var.';
+$wb['error_ns2_regex'] = '2. Ad Sunucusu adında geçersiz karakterler var.';
 $wb['error_email_regex'] = 'E-posta adresi geçersiz.';
 $wb['globalsearch_resultslimit_of_txt'] = '/';
 $wb['globalsearch_resultslimit_results_txt'] = 'sonuç';
@@ -35,11 +39,7 @@ $wb['globalsearch_noresults_text_txt'] = 'Sonuç yok.';
 $wb['globalsearch_noresults_limit_txt'] = '0 sonuç';
 $wb['globalsearch_searchfield_watermark_txt'] = 'Arama';
 $wb['globalsearch_suggestions_text_txt'] = 'Öneriler';
-$wb['dkim_txt'] = 'DKIM';
-$wb['dnssec_txt'] = 'Sign zone (DNSSEC)';
-$wb['ipv6_txt'] = 'IPv6 Address';
-$wb['error_ipv6_empty'] = 'IPv6 empty.';
-$wb['error_no_server_id'] = 'No server provided.';
-$wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.';
-$wb['limit_dns_zone_txt'] = 'The max. number of DNS zones for your account is reached.';
+$wb['error_no_server_id'] = 'Bir sunucu belirtilmemiÅŸ.';
+$wb['error_not_allowed_server_id'] = 'Seçilmiş sunucuda bu hesap kullanılamaz.';
+$wb['limit_dns_zone_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla DNS bölgesi sayısına ulaştınız.';
 ?>
diff --git a/interface/web/help/lib/lang/br.lng b/interface/web/help/lib/lang/br.lng
index a745e60960..217d3afa14 100644
--- a/interface/web/help/lib/lang/br.lng
+++ b/interface/web/help/lib/lang/br.lng
@@ -1,14 +1,14 @@
 <?php
-$wb['Support Message'] = 'Mensagem do suporte';
+$wb['Support Message'] = 'Mensagem de suporte';
 $wb['Message'] = 'Mensagem';
 $wb['Send message'] = 'Enviar mensagem';
-$wb['View messages'] = 'Visualizar mensagem';
+$wb['View messages'] = 'Visualizar mensagens';
 $wb['Support'] = 'Suporte';
 $wb['About ISPConfig'] = 'Sobre o ISPConfig';
 $wb['Version'] = 'Versão';
-$wb['Frequently Asked Questions'] = 'Perguntas frequentes (FAQ)';
-$wb['FAQ Sections'] = 'Sessões FAQ';
-$wb['Manage Sections'] = 'Gerenciar sessões';
-$wb['Add a Question & Answer Pair'] = 'Adicionar par pergunta/resposta';
-$wb['Manage Questions'] = 'Gerenciar perguntas';
+$wb['Frequently Asked Questions'] = 'Questões Frequentes - FAQ';
+$wb['FAQ Sections'] = 'Seções FAQ';
+$wb['Manage Sections'] = 'Gerenciar seções';
+$wb['Add a Question & Answer Pair'] = 'Adicionar novo par questão/resposta';
+$wb['Manage Questions'] = 'Gerenciar questões';
 ?>
diff --git a/interface/web/help/lib/lang/br_faq_form.lng b/interface/web/help/lib/lang/br_faq_form.lng
index 331268a722..b24ec1c58f 100644
--- a/interface/web/help/lib/lang/br_faq_form.lng
+++ b/interface/web/help/lib/lang/br_faq_form.lng
@@ -1,6 +1,6 @@
 <?php
-$wb['faq_faq_txt'] = 'Perguntas Mais Frequentes (FAQ)';
-$wb['faq_question_txt'] = 'Pergunta';
+$wb['faq_faq_txt'] = 'Questões Frequentes';
+$wb['faq_question_txt'] = 'Questão';
 $wb['faq_answer_txt'] = 'Resposta';
-$wb['faq_section_txt'] = 'Sessão';
+$wb['faq_section_txt'] = 'Seção';
 ?>
diff --git a/interface/web/help/lib/lang/br_faq_manage_questions_list.lng b/interface/web/help/lib/lang/br_faq_manage_questions_list.lng
index 8bda9d7f42..ee9f769d91 100644
--- a/interface/web/help/lib/lang/br_faq_manage_questions_list.lng
+++ b/interface/web/help/lib/lang/br_faq_manage_questions_list.lng
@@ -1,9 +1,9 @@
 <?php
-$wb['faq_question_txt'] = 'Pergunta';
-$wb['faq_section_name_txt'] = 'Sessão';
+$wb['faq_question_txt'] = 'Questão';
+$wb['faq_section_name_txt'] = 'Seção';
 $wb['faq_delete_txt'] = 'Remover';
 $wb['faq_edit_txt'] = 'Editar';
-$wb['faq_sections_txt'] = 'Sessão';
-$wb['faq_faq_questions_txt'] = 'Perguntas frequentes (FAQ)';
-$wb['faq_new_question_txt'] = 'Adicionar par pergunta/resposta';
+$wb['faq_sections_txt'] = 'Seção';
+$wb['faq_faq_questions_txt'] = 'Questões Frequentes';
+$wb['faq_new_question_txt'] = 'Adicionar novo par questão/resposta';
 ?>
diff --git a/interface/web/help/lib/lang/br_faq_sections_form.lng b/interface/web/help/lib/lang/br_faq_sections_form.lng
index f3f9f9f583..2fb709cbd2 100644
--- a/interface/web/help/lib/lang/br_faq_sections_form.lng
+++ b/interface/web/help/lib/lang/br_faq_sections_form.lng
@@ -1,3 +1,3 @@
 <?php
-$wb['faq_section_name_txt'] = 'Nome da Sessão';
+$wb['faq_section_name_txt'] = 'Nome da seção';
 ?>
diff --git a/interface/web/help/lib/lang/br_help_faq_sections_list.lng b/interface/web/help/lib/lang/br_help_faq_sections_list.lng
index f1f549e615..aec81d7b59 100644
--- a/interface/web/help/lib/lang/br_help_faq_sections_list.lng
+++ b/interface/web/help/lib/lang/br_help_faq_sections_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['faq_section_name_txt'] = 'Nome da Sessão';
+$wb['faq_section_name_txt'] = 'Nome da seção';
 $wb['faq_delete_txt'] = 'Remover';
 $wb['faq_edit_txt'] = 'Editar';
-$wb['faq_sections_txt'] = 'Sessões';
-$wb['faq_faq_sections_txt'] = 'Sessões FAQ';
-$wb['faq_new_section_txt'] = 'Adicionar nova sessão';
+$wb['faq_sections_txt'] = 'Seções';
+$wb['faq_faq_sections_txt'] = 'Seções FAQ';
+$wb['faq_new_section_txt'] = 'Adicionar nova seção';
 ?>
diff --git a/interface/web/help/lib/lang/br_support_message.lng b/interface/web/help/lib/lang/br_support_message.lng
index 19ae309a1f..dad8ce7fd5 100644
--- a/interface/web/help/lib/lang/br_support_message.lng
+++ b/interface/web/help/lib/lang/br_support_message.lng
@@ -1,16 +1,16 @@
 <?php
-$wb['recipient_id_txt'] = 'Para';
-$wb['sender_id_txt'] = 'De';
+$wb['recipient_id_txt'] = 'ID do destinatário';
+$wb['sender_id_txt'] = 'ID do remetente';
 $wb['subject_txt'] = 'Assunto';
 $wb['message_txt'] = 'Mensagem';
-$wb['tstamp_txt'] = 'Dados';
+$wb['tstamp_txt'] = 'Data/Hora';
 $wb['reply_txt'] = 'Responder';
 $wb['date_txt'] = 'Data';
-$wb['support_request_subject_txt'] = 'Requisição para Suporte';
-$wb['support_request_txt'] = 'Você tem uma nova requisição para suporte. Por favor, não responda esse e-mail, mas processe a requisição de suporte dentro do ISPConfig.';
-$wb['answer_to_support_request_txt'] = 'Você tem uma nova resposta para requisição de suporte. Por favor, não responda esse e-mail, mas processe a requisição de suporte dentro do ISPConfig.';
-$wb['answer_to_support_request_sent_txt'] = 'Sua resposta para requisição de suporte foi enviada. Por favor, não responda esse e-mail.';
-$wb['support_request_sent_txt'] = 'Sua requisição de suporte foi enviada. Por favor não responda este e-mail.';
-$wb['recipient_or_sender_email_address_not_valid_txt'] = 'A mensagem não foi enviada porque o e-mail do destinatário e/ou remetente não é válido.';
-$wb['subject_is_empty'] = 'Não é permitido o campo \\"Assunto\\" em branco.';
+$wb['support_request_subject_txt'] = 'Requisição de Suporte';
+$wb['support_request_txt'] = 'Você recebeu uma requisição de suporte. Por favor, não responda este e-mail, mas processe a requisição dentro do ISPConfig.';
+$wb['answer_to_support_request_txt'] = 'Você recebeu uma resposta à sua requisição de suporte. Por favor, não responda este e-mail, mas processe a mensagem dentro do ISPConfig.';
+$wb['answer_to_support_request_sent_txt'] = 'Sua resposta à requisição de suporte foi enviada. Por favor, não responda este e-mail.';
+$wb['support_request_sent_txt'] = 'Sua requisição de suporte foi enviada. Por favor, não responda este e-mail.';
+$wb['recipient_or_sender_email_address_not_valid_txt'] = 'A mensagem não pôde ser enviada porque o remetente e/ou destinatário são e-mails inválidos.';
+$wb['subject_is_empty'] = 'O assunto está em branco.';
 ?>
diff --git a/interface/web/help/lib/lang/br_support_message_list.lng b/interface/web/help/lib/lang/br_support_message_list.lng
index 7d888659d8..e4add42b79 100644
--- a/interface/web/help/lib/lang/br_support_message_list.lng
+++ b/interface/web/help/lib/lang/br_support_message_list.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['list_head_txt'] = 'Mensagens do Suporte';
-$wb['sender_id_txt'] = 'De';
+$wb['list_head_txt'] = 'Mensagens de Suporte';
+$wb['sender_id_txt'] = 'Remetente';
 $wb['subject_txt'] = 'Assunto';
-$wb['add_new_record_txt'] = 'Adicionar uma nova mensagem de suporte';
+$wb['add_new_record_txt'] = 'Adicionar nova mensagem de suporte';
 $wb['date_txt'] = 'Data';
 ?>
diff --git a/interface/web/help/lib/lang/tr.lng b/interface/web/help/lib/lang/tr.lng
index 4aeaa0ac0f..c6b0877af5 100644
--- a/interface/web/help/lib/lang/tr.lng
+++ b/interface/web/help/lib/lang/tr.lng
@@ -11,4 +11,5 @@ $wb['FAQ Sections'] = 'SSS Bölümleri';
 $wb['Manage Sections'] = 'Bölüm Yönetimi';
 $wb['Add a Question & Answer Pair'] = 'Soru-Yanıt Ekle';
 $wb['Manage Questions'] = 'Soru Yönetimi';
+
 ?>
diff --git a/interface/web/help/lib/lang/tr_support_message.lng b/interface/web/help/lib/lang/tr_support_message.lng
index fcd785e627..ae60d28a19 100644
--- a/interface/web/help/lib/lang/tr_support_message.lng
+++ b/interface/web/help/lib/lang/tr_support_message.lng
@@ -7,10 +7,10 @@ $wb['tstamp_txt'] = 'Zaman damgası';
 $wb['reply_txt'] = 'Yanıt';
 $wb['date_txt'] = 'Tarih';
 $wb['support_request_subject_txt'] = 'Destek Ä°steÄŸi';
-$wb['support_request_txt'] = 'Bir destek isteğinde bulundunuz. Lütfen bu e-postay yanıtlamayın. Destek isteğinizi ISPConfig üzerinden izleyin.';
+$wb['support_request_txt'] = 'Bir destek isteğinde bulundunuz. Lütfen bu e-postayı yanıtlamayın. Destek isteğinizi ISPConfig üzerinden izleyin.';
 $wb['answer_to_support_request_txt'] = 'Destek isteğiniz yanıtlandı. Lütfen bu e-postayı yanıtlamayın. Destek isteğinizi ISPConfig üzerinden izleyin.';
 $wb['answer_to_support_request_sent_txt'] = 'Destek isteğinize yazdığınız yanıt gönderildi. Lütfen bu e-potayı yanıtlamayın.';
 $wb['support_request_sent_txt'] = 'Destek isteğiniz gönderildi. Lütfen bu e-postayı yanıtlamayın.';
 $wb['recipient_or_sender_email_address_not_valid_txt'] = 'Gönderen ya da alıcı adresi geçersiz olduğundan bu ileti gönderilemedi.';
-$wb['subject_is_empty'] = 'The subject can not be empty.';
+$wb['subject_is_empty'] = 'Konu boÅŸ olamaz.';
 ?>
diff --git a/interface/web/login/lib/lang/br.lng b/interface/web/login/lib/lang/br.lng
index 379b719f4d..9baaf55212 100644
--- a/interface/web/login/lib/lang/br.lng
+++ b/interface/web/login/lib/lang/br.lng
@@ -13,18 +13,18 @@ $wb['user_regex_error'] = 'O nome do usuário contém menos de 1 ou mais de 64 c
 $wb['pw_error_length'] = 'Tamanho da senha não pode ser maior do que 64 caracteres.';
 $wb['username_txt'] = 'Usuário';
 $wb['password_txt'] = 'Senha';
-$wb['login_button_txt'] = 'Entrar';
+$wb['login_button_txt'] = 'Acessar';
 $wb['pw_lost_txt'] = 'Esqueceu a senha?';
 $wb['error_maintenance_mode'] = 'Esta instalação do ISPConfig atualmente está sob manutenção. Nós retornaremos em breve. Obrigado por sua paciência.';
-$wb['login_txt'] = 'Acesso';
+$wb['login_txt'] = 'Acessar';
 $wb['pw_reset_txt'] = 'Redefinir senha';
 $wb['pw_button_txt'] = 'Reenviar senha';
 $wb['email_txt'] = 'E-mail';
-$wb['theme_not_compatible'] = 'O tema escolhido não é compatível com a versão atual do ISPConfig. Por favor, procure por uma nova versão deste tema compatível com ISPConfig.<br />O tema padrão foi configurado automaticamente.';
+$wb['theme_not_compatible'] = 'O tema escolhido não é compatível com a versão atual do ISPConfig. Por favor, procure por uma nova versão deste tema, compatível com ISPConfig.<br />O tema padrão foi configurado automaticamente.';
 $wb['back_txt'] = 'Voltar';
 $wb['email_error'] = 'O e-mail contém caracteres não permitidos ou formato é inválido.';
 $wb['stay_logged_in_txt'] = 'Manter-me conectado';
-$wb['lost_password_function_disabled_txt'] = 'Função de redefinir senha indisponível para este usuário.';
+$wb['lost_password_function_disabled_txt'] = 'Função "redefinir senha" indisponível para este usuário.';
 $wb['pw_reset_act'] = 'Você receberá um link de ativação. Por favor, acesse o link de ativação para confirmar sua nova senha.';
 $wb['pw_reset_act_mail_title'] = 'Confirmar nova senha para o painel de controle ISPConfig';
 $wb['pw_reset_act_mail_msg'] = 'Por favor, confirme se você deseja reiniciar sua senha do painel de controle ISPConfig, acessando o link de ativação: ';
diff --git a/interface/web/login/lib/lang/br_login_as.lng b/interface/web/login/lib/lang/br_login_as.lng
index 5d9fb269b9..72c2c97e40 100644
--- a/interface/web/login/lib/lang/br_login_as.lng
+++ b/interface/web/login/lib/lang/br_login_as.lng
@@ -1,12 +1,12 @@
 <?php
-$wb['login_1_txt'] = 'Você deseja acessar como usuário';
-$wb['login_2_txt'] = 'Para retornar ao administrador, você pode \\"voltar\\" selecionando sair.';
+$wb['login_1_txt'] = 'Gostaria de acessar como cliente?';
+$wb['login_2_txt'] = 'Se confirmar, poderá "voltar" clicando em sair.';
 $wb['btn_yes_txt'] = 'Sim, acessar como cliente';
-$wb['btn_back_txt'] = 'Não, voltar a lista';
+$wb['btn_back_txt'] = 'Não, voltar para a lista';
 $wb['udp_port_help_txt'] = 'Separado por vírgula';
 $wb['active_txt'] = 'Ativo';
-$wb['firewall_error_unique'] = 'Já existe um registro de firewall igual para este servidor.';
-$wb['tcp_ports_error_regex'] = 'Caractere não permitido para atribuição numa porta TCP. Caracteres permitidos são: números, \':\' e \',\'.';
-$wb['udp_ports_error_regex'] = 'Caractere não permitido para atribuição numa porta UDP. Caracteres permitidos são: números, \':\' e \',\'.';
-$wb['login_as_or_logout_txt'] = 'Você deseja acessar novamente como {UTYPE} ou sair?';
+$wb['firewall_error_unique'] = 'Já existe uma regra de firewall idêntica para este servidor.';
+$wb['tcp_ports_error_regex'] = 'Caractere não permitido para porta tcp. Caracteres permitidos são números, ":" e ",".';
+$wb['udp_ports_error_regex'] = 'Caractere não permitido para porta udp. Caracteres permitidos são números, ":" e ",".';
+$wb['login_as_or_logout_txt'] = 'Gostaria de realizar acesso novamente como {UTYPE} ou sair?';
 ?>
diff --git a/interface/web/login/lib/lang/tr.lng b/interface/web/login/lib/lang/tr.lng
index c50ea5c8a2..863a6310d5 100644
--- a/interface/web/login/lib/lang/tr.lng
+++ b/interface/web/login/lib/lang/tr.lng
@@ -3,12 +3,15 @@ $wb['error_user_password_empty'] = 'Kullanıcı adı ya da parola boş';
 $wb['error_user_password_incorrect'] = 'Kullanıcı adı ya da parola hatalı';
 $wb['error_user_blocked'] = 'Kullanıcı engellenmiş.';
 $wb['error_user_too_many_logins'] = 'Fazla sayıda hatalı oturum açmayı denediniz, Lütfen 15 dakika sonra yeniden deneyin.';
-$wb['pass_reset_txt'] = 'Yazdığınız e-posta adresi hesabınızdakine uyarsa, yeni bir parola oluşturularak e-posta adresinize gönderilir.';
+$wb['pass_reset_txt'] = 'Yazdığınız e-posta adresi hesabınızdakine uyarsa, yeni bir parola üretilerek e-posta adresinize gönderilir.';
 $wb['pw_reset'] = 'Parolanız sıfırlandı ve e-posta adresinize gönderildi.';
+$wb['pw_reset_act'] = 'Size bir etkinleştirme bağlantısı gönderildi. Parola isteğinizi onaylamak için bağlantıya tıklayın.';
 $wb['pw_error'] = 'Kullanıcı adı ya da e-posta adresiniz doğru değil.';
 $wb['pw_error_noinput'] = 'Lütfen e-posta adresinizi ya da kullanıcı adınızı yazın.';
 $wb['pw_reset_mail_msg'] = 'ISPConfig 3 Kontrol Paneli parolanız sıfırlandı. Yeni parolanız: ';
 $wb['pw_reset_mail_title'] = 'ISPConfig 3 Kontrol Paneli parolanız sıfırlandı';
+$wb['pw_reset_act_mail_title'] = 'ISPConfig 3 Control Panel parola sıfırlama isteğini onaylayın';
+$wb['pw_reset_act_mail_msg'] = 'Lütfen ISPConfig 3 Control Panel hesabınızın parolasını sıfırlamak için şu bağlantıya tıklayın: ';
 $wb['user_regex_error'] = 'Kullanıcı adınız izin verilmeyen karakterlerden oluşuyor ya da 64 karakterden uzun.';
 $wb['pw_error_length'] = 'Parola 64 karakterden uzun.';
 $wb['email_error'] = 'E-posta adresi izin verilmeyen karakterlerden oluşuyor ya da biçimi hatalı.';
@@ -24,11 +27,8 @@ $wb['back_txt'] = 'Geri';
 $wb['error_maintenance_mode'] = 'ISPConfig bakımda. Kısa bir süre sonra yeniden çalışıyor olacak, sabrınız için teşekkürler.';
 $wb['theme_not_compatible'] = 'Seçilmiş tema geçerli ISPConfig sürümü ile uyumlu değil. Lütfen temanın yeni sürümünü araştırın.<br />Varsayılan tema etkinleştirildi.';
 $wb['stay_logged_in_txt'] = 'Oturumum açık kalsın';
-$wb['pw_reset_act'] = 'You have been sent an activation link. Please visit the link to confirm your password request.';
-$wb['pw_reset_act_mail_title'] = 'Confirm ISPConfig 3 Control panel password reset';
-$wb['pw_reset_act_mail_msg'] = 'Please confirm that your want to reset your ISPConfig 3 control panel account password by visiting the following activation link: ';
-$wb['lost_password_function_disabled_txt'] = 'The lost password function is not available for this user.';
-$wb['lost_password_function_wait_txt'] = 'You cannot request a new password, yet. Please wait a few minutes.';
-$wb['lost_password_function_expired_txt'] = 'This activation link has expired. Please request a new one.';
-$wb['lost_password_function_denied_txt'] = 'This activation link is not valid.';
+$wb['lost_password_function_disabled_txt'] = 'Bu kullanıcı parolamı unuttum özelliğini kullanamaz.';
+$wb['lost_password_function_wait_txt'] = 'Henüz yeni parola isteğinde bulunamazsınız. Lütfen bir kaç dakika bekleyin.';
+$wb['lost_password_function_expired_txt'] = 'Bu etkinleştirme bağlantısının süresi geçmiş. Lütfen yeni bir parola sıfırlama isteğinde bulunun.';
+$wb['lost_password_function_denied_txt'] = 'Bu etkinleştirme bağlantısı geçersiz.';
 ?>
diff --git a/interface/web/login/lib/lang/tr_login_as.lng b/interface/web/login/lib/lang/tr_login_as.lng
index f7f12feeff..8a54a8efd9 100644
--- a/interface/web/login/lib/lang/tr_login_as.lng
+++ b/interface/web/login/lib/lang/tr_login_as.lng
@@ -1,12 +1,13 @@
 <?php
 $wb['login_1_txt'] = 'Bu kullanıcı olarak oturum açmak ister misiniz';
-$wb['login_2_txt'] = '\\"Geri dönmek\\" için oturumu kapat üzerine tıklayın.';
+$wb['login_2_txt'] = 'Oturumu Kapat üzerine tıklayarak "Geri Dönebilirsiniz".';
 $wb['btn_yes_txt'] = 'Evet, Müşteri olarak oturum aç';
 $wb['btn_back_txt'] = 'Hayır, listeye geri dön';
 $wb['udp_port_help_txt'] = 'Virgül ile ayırarak yazın';
 $wb['active_txt'] = 'Etkin';
 $wb['firewall_error_unique'] = 'Bu sunucu için bir güvenlik duvarı kaydı zaten var.';
-$wb['tcp_ports_error_regex'] = 'TCP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, \\":\\" ve \\",\\" karakterleri kullanılabilir.';
-$wb['udp_ports_error_regex'] = 'UDP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, \\":\\" ve \\",\\" karakterleri kullanılabilir.';
-$wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?';
+$wb['active_txt'] = 'Etkin';
+$wb['tcp_ports_error_regex'] = 'TCP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, ":" ve "," karakterleri kullanılabilir.';
+$wb['udp_ports_error_regex'] = 'UDP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, ":" ve "," karakterleri kullanılabilir.';
+$wb['login_as_or_logout_txt'] = '{UTYPE} olarak oturum açmak ya da oturumunuzu kapatmak ister misiniz?';
 ?>
diff --git a/interface/web/mail/lib/lang/br.lng b/interface/web/mail/lib/lang/br.lng
index 972e134bc8..7748342612 100644
--- a/interface/web/mail/lib/lang/br.lng
+++ b/interface/web/mail/lib/lang/br.lng
@@ -1,50 +1,56 @@
 <?php
-$wb['Email Alias'] = 'Apelidos de e-mail';
-$wb['Email Blacklist'] = 'Lista negra';
-$wb['Blacklist'] = 'Lista negra';
-$wb['Mail Content Filter'] = 'Filtro de conteúdo';
+$wb['Email Alias'] = 'Alias de e-mail';
+$wb['Email Blacklist'] = 'Lista Negra';
+$wb['Blacklist'] = 'Lista Negra';
+$wb['Mail Content Filter'] = 'Filtro de conteúdo de e-mail';
 $wb['Filter'] = 'Filtro';
-$wb['Mail Domain'] = 'Domínio';
-$wb['Domain'] = 'Domínios';
-$wb['Email Catchall'] = 'Contas cata tudo';
-$wb['Email Forward'] = 'Encaminhamento';
+$wb['Mail Domain'] = 'Domínio de e-mail';
+$wb['Domain'] = 'Domínio';
+$wb['Email Catchall'] = 'Contas cata-tudo';
+$wb['Email Forward'] = 'Encaminhamento de e-mail';
 $wb['Get Email'] = 'Busca de e-mail';
 $wb['Spamfilter'] = 'Filtro anti-spam';
-$wb['Email Routing'] = 'Transportes';
+$wb['Email Routing'] = 'Rotas de e-mail';
+$wb['Mailing List'] = 'Listas de e-mail';
 $wb['Email transport'] = 'Transportes';
 $wb['Mailbox'] = 'Contas de e-mail';
-$wb['Autoresponder'] = 'Resposta automática';
-$wb['Mail Filter'] = 'Filtros';
+$wb['Autoresponder'] = 'Auto-resposta';
+$wb['Mail Filter'] = 'Filtro de e-mail';
 $wb['Custom Rules'] = 'Regras personalizadas';
-$wb['Email filter'] = 'Filtro';
-$wb['Email Whitelist'] = 'Lista branca';
-$wb['Whitelist'] = 'Lista branca';
-$wb['Spamfilter blacklist'] = 'Filtro anti-spam (lista negra)';
-$wb['Spamfilter Config'] = 'Configuração do filtro anti-spam';
-$wb['Spamfilter policy'] = 'Políticas de filtro anti-spam';
+$wb['Email filter'] = 'Filtro de e-mail';
+$wb['Email Whitelist'] = 'Lista Branca de e-mails';
+$wb['Whitelist'] = 'Lista Branca';
+$wb['Spamfilter blacklist'] = 'Filtros anti-spam - lista negra';
+$wb['Blacklist'] = 'Lista Negra';
+$wb['Spamfilter Config'] = 'Configurações de filtros anti-spam';
+$wb['Servidor'] = 'Servidor';
+$wb['Spamfilter policy'] = 'Políticas de filtros anti-spam';
 $wb['Policy'] = 'Política';
 $wb['Quarantine'] = 'Quarentena';
 $wb['Tag-Level'] = 'Nível de marcação';
 $wb['Other'] = 'Outros';
-$wb['Spamfilter users'] = 'Usuários de filtro anti-spam';
-$wb['Users'] = 'Usuários';
-$wb['Spamfilter Whitelist'] = 'Filtro anti-spam (lista branca)';
-$wb['Email'] = 'e-mail';
-$wb['Email Mailbox'] = 'Contas de e-mail';
+$wb['Spamfilter users'] = 'Contas de e-mail para filtros anti-spam';
+$wb['Users'] = 'Contas de e-mail';
+$wb['Spamfilter Whitelist'] = 'Filtros anti-spam - lista branca';
+$wb['Whitelist'] = 'Lista Branca';
+$wb['Email'] = 'e-Mail';
+$wb['Email Mailbox'] = 'Conta de e-mail';
 $wb['Email Accounts'] = 'Contas de e-mail';
-$wb['User / Domain'] = 'Usuário/domínio';
-$wb['Server Settings'] = 'Configurações do servidor';
-$wb['Fetchmail'] = 'Contas de busca';
-$wb['Mailbox traffic'] = 'Tráfego';
+$wb['User / Domain'] = 'Usuário/Domínio';
+$wb['Server Settings'] = 'Configurações do Servidor';
+$wb['Spamfilter'] = 'Filtros anti-spam';
+$wb['Fetchmail'] = 'Busca de e-mails';
+$wb['XMPP Domain'] = 'Domínios xmpp';
+$wb['XMPP Account'] = 'Contas xmpp';
+$wb['Mailbox traffic'] = 'Tráfego de e-mails';
 $wb['Statistics'] = 'Estatísticas';
-$wb['Postfix Whitelist'] = 'Postfix (lista branca)';
-$wb['Postfix Blacklist'] = 'Postfix (lista negra)';
-$wb['Content Filter'] = 'Filtros de conteúdo';
-$wb['Global Filters'] = 'Filtros globais';
-$wb['Domain Alias'] = 'Apelidos de domínio';
+$wb['Backup Stats'] = 'Estatísticas de backup';
+$wb['Postfix Whitelist'] = 'Lista Branca do Postfix';
+$wb['Postfix Blacklist'] = 'Lista Negra do Postfix';
+$wb['Content Filter'] = 'Filtro de Conteúdo';
+$wb['Global Filters'] = 'Filtros Globais';
+$wb['Domain Alias'] = 'Alias de domínio';
 $wb['Relay Recipients'] = 'Destinatários de retransmissão';
-$wb['Mailbox quota'] = 'Cota para contas de e-mails';
-$wb['Server'] = 'Servidor';
-$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")';
-$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)';
-?>
+$wb['Mailbox quota'] = 'Cota da conta de e-mail';
+$wb['add_header_txt'] = 'Cabeçalho (adicionar "X-Spam: Yes")';
+$wb['rewrite_subject_txt'] = 'Assunto (adicionar "***SPAM***" no início)';
diff --git a/interface/web/mail/lib/lang/br_backup_stats_list.lng b/interface/web/mail/lib/lang/br_backup_stats_list.lng
index 9d07817712..482e913200 100644
--- a/interface/web/mail/lib/lang/br_backup_stats_list.lng
+++ b/interface/web/mail/lib/lang/br_backup_stats_list.lng
@@ -1,9 +1,9 @@
 <?php
-$wb['list_head_txt'] = 'Estatísticas de backup';
+$wb['list_head_txt'] = 'Backup de Estatísticas';
 $wb['active_txt'] = 'Ativo';
-$wb['domain_txt'] = 'e-mail';
-$wb['backup_count_txt'] = 'Contador de backup';
+$wb['domain_txt'] = 'Domínio';
+$wb['backup_count_txt'] = 'Contador de backups';
 $wb['backup_server_txt'] = 'Servidor';
-$wb['backup_interval_txt'] = 'Intervalo/contador';
-$wb['backup_size_txt'] = 'Tamanho';
+$wb['backup_interval_txt'] = 'Intervalo entre backups';
+$wb['backup_size_txt'] = 'Tamanho do backup';
 ?>
diff --git a/interface/web/mail/lib/lang/br_mail_alias.lng b/interface/web/mail/lib/lang/br_mail_alias.lng
index 993dd71d2a..6361957180 100644
--- a/interface/web/mail/lib/lang/br_mail_alias.lng
+++ b/interface/web/mail/lib/lang/br_mail_alias.lng
@@ -1,17 +1,17 @@
 <?php
-$wb['email_txt'] = 'e-mail';
+$wb['email_txt'] = 'Alias de e-mail';
 $wb['destination_txt'] = 'Destino';
 $wb['active_txt'] = 'Ativo';
 $wb['email_error_isemail'] = 'Endereço de e-mail é inválido.';
 $wb['email_error_unique'] = 'Endereço de e-mail duplicado.';
 $wb['no_domain_perm'] = 'Você não tem permissão para este domínio.';
-$wb['destination_error_isemail'] = 'Endereço de destino inválido';
-$wb['limit_mailalias_txt'] = 'O limite de apelidos de domínio para esta conta foi alcançado.';
-$wb['duplicate_mailbox_txt'] = 'Já existe uma conta de e-mail com este endereço.';
+$wb['destination_error_isemail'] = 'Endereço de e-mail de destino é inválido.';
+$wb['limit_mailalias_txt'] = 'O limite de alias de e-mail para esta conta foi alcançado.';
+$wb['duplicate_mailbox_txt'] = 'Já existe um endereço de e-mail idêntico.';
 $wb['domain_txt'] = 'Domínio';
-$wb['duplicate_email_alias_txt'] = 'Este apelido de e-mail já existe.';
-$wb['source_txt'] = 'Apelido';
-$wb['greylisting_txt'] = 'Habilitar greylist';
+$wb['duplicate_email_alias_txt'] = 'Este alias de e-mail já existe.';
+$wb['source_txt'] = 'Alias';
 $wb['send_as_txt'] = 'Enviar como';
-$wb['send_as_exp'] = 'Permite o alvo enviar e-mails usando este endereço como origem';
+$wb['send_as_exp'] = 'Permitir o destino enviar e-mails usando este alias como origem';
+$wb['greylisting_txt'] = 'Habilitar greylist';
 ?>
diff --git a/interface/web/mail/lib/lang/br_mail_alias_list.lng b/interface/web/mail/lib/lang/br_mail_alias_list.lng
index 69fb77a779..5e96f0fb30 100644
--- a/interface/web/mail/lib/lang/br_mail_alias_list.lng
+++ b/interface/web/mail/lib/lang/br_mail_alias_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['list_head_txt'] = 'Apelidos de e-mail';
+$wb['list_head_txt'] = 'Alias de e-mail';
 $wb['active_txt'] = 'Ativo';
-$wb['source_txt'] = 'origem';
+$wb['source_txt'] = 'Origem';
 $wb['destination_txt'] = 'Destino';
-$wb['email_txt'] = 'e-mail';
-$wb['add_new_record_txt'] = 'Adicionar novo apelido';
+$wb['email_txt'] = 'e-Mail';
+$wb['add_new_record_txt'] = 'Adicionar novo alias de e-mail';
 ?>
diff --git a/interface/web/mail/lib/lang/br_mail_aliasdomain.lng b/interface/web/mail/lib/lang/br_mail_aliasdomain.lng
index 68986f536e..a0f4e5067e 100644
--- a/interface/web/mail/lib/lang/br_mail_aliasdomain.lng
+++ b/interface/web/mail/lib/lang/br_mail_aliasdomain.lng
@@ -3,9 +3,9 @@ $wb['source_txt'] = 'Origem';
 $wb['destination_txt'] = 'Destino';
 $wb['active_txt'] = 'Ativo';
 $wb['no_domain_perm'] = 'Você não tem permissão para este domínio.';
-$wb['limit_mailaliasdomain_txt'] = 'O limite de apelidos de domínios para esta conta foi alcançado.';
+$wb['limit_mailaliasdomain_txt'] = 'O limite de alias de domínios para esta conta foi alcançado.';
 $wb['source_destination_identical_txt'] = 'Origem e destino são os mesmos.';
-$wb['source_error_empty'] = 'Origem está em branco.';
-$wb['source_error_unique'] = 'Origem duplicada.';
-$wb['source_error_regex'] = 'Origem inválida.';
+$wb['source_error_empty'] = 'O domínio de origem está em branco.';
+$wb['source_error_unique'] = 'Domínio de origem duplicado.';
+$wb['source_error_regex'] = 'Domínio de origem é inválido.';
 ?>
diff --git a/interface/web/mail/lib/lang/br_mail_aliasdomain_list.lng b/interface/web/mail/lib/lang/br_mail_aliasdomain_list.lng
index 4849c3cb6b..ddf1ea0a96 100644
--- a/interface/web/mail/lib/lang/br_mail_aliasdomain_list.lng
+++ b/interface/web/mail/lib/lang/br_mail_aliasdomain_list.lng
@@ -1,7 +1,8 @@
 <?php
-$wb['list_head_txt'] = 'Apelido de domínio';
+$wb['list_head_txt'] = 'Alias de domínio';
 $wb['active_txt'] = 'Ativo';
 $wb['source_txt'] = 'Origem';
 $wb['destination_txt'] = 'Destino';
-$wb['add_new_record_txt'] = 'Adicionar novo apelido';
+$wb['source_txt'] = 'Origem';
+$wb['add_new_record_txt'] = 'Adicionar novo alias de domínio';
 ?>
diff --git a/interface/web/mail/lib/lang/br_mail_backup_list.lng b/interface/web/mail/lib/lang/br_mail_backup_list.lng
index 8ef31a0769..b8e4f82300 100644
--- a/interface/web/mail/lib/lang/br_mail_backup_list.lng
+++ b/interface/web/mail/lib/lang/br_mail_backup_list.lng
@@ -3,14 +3,14 @@ $wb['list_head_txt'] = 'Backups existentes';
 $wb['date_txt'] = 'Data';
 $wb['backup_type_txt'] = 'Tipo';
 $wb['filename_txt'] = 'Arquivo de backup';
-$wb['restore_backup_txt'] = 'Restaurar backup';
-$wb['restore_info_txt'] = 'Restauração do backup iniciada. Esta ação poderá levar vários minutos para ser concluída. Aguarde.';
-$wb['restore_confirm_txt'] = 'A restauração do backup reescreverá os arquivos existentes das suas caixas postais. Tem certeza que deseja restaurar este backup?';
-$wb['download_pending_txt'] = 'Já existe um download deste backup em execução.';
-$wb['restore_pending_txt'] = 'Já existe uma restauração deste backup em execução.';
-$wb['delete_backup_txt'] = 'Remover backup';
-$wb['delete_info_txt'] = 'Remoção do backup iniciada. Esta ação poderá levar vários minutos para ser concluída. Aguarde.';
-$wb['delete_confirm_txt'] = 'Tem certeza que deseja remover este backup?';
-$wb['delete_pending_txt'] = 'Já existe uma remoção deste backup em execução.';
-$wb['filesize_txt'] = 'Tamanho';
+$wb['restore_backup_txt'] = 'Restaurar';
+$wb['restore_info_txt'] = 'A restauração do backup está em andamento. Esta ação demora vários minutos para concluir.';
+$wb['restore_confirm_txt'] = 'A restauração do backup pode sobrescrever arquivos das contas de e-mail. Você tem certeza que deseja restaurar este backup?';
+$wb['download_pending_txt'] = 'Já existe um download de backup em andamento.';
+$wb['restore_pending_txt'] = 'Já existe uma restauração de backup em andamento.';
+$wb['delete_backup_txt'] = 'Remover Backup';
+$wb['delete_info_txt'] = 'A remoção do backup está em andamento. Esta ação demora vários minutos para concluir.';
+$wb['delete_confirm_txt'] = 'Deseja remover este backup?';
+$wb['delete_pending_txt'] = 'Já existe uma remoção de backup em andamento.';
+$wb['filesize_txt'] = 'Tamanho do arquivo';
 ?>
diff --git a/interface/web/mail/lib/lang/br_mail_blacklist.lng b/interface/web/mail/lib/lang/br_mail_blacklist.lng
index 4c52e77d23..14c323c342 100644
--- a/interface/web/mail/lib/lang/br_mail_blacklist.lng
+++ b/interface/web/mail/lib/lang/br_mail_blacklist.lng
@@ -1,9 +1,9 @@
 <?php
 $wb['server_id_txt'] = 'Servidor';
-$wb['source_txt'] = 'Lista negra';
+$wb['source_txt'] = 'Lista Negra';
 $wb['recipient_txt'] = 'Destinatário';
 $wb['active_txt'] = 'Ativo';
-$wb['source_error_notempty'] = 'Endereço está em branco.';
+$wb['source_error_notempty'] = 'Destinatário está em branco.';
 $wb['type_txt'] = 'Tipo';
 $wb['limit_mailfilter_txt'] = 'O limite de filtros de e-mail para esta conta foi alcançado.';
 ?>
diff --git a/interface/web/mail/lib/lang/br_mail_blacklist_list.lng b/interface/web/mail/lib/lang/br_mail_blacklist_list.lng
index d561cea6b6..319a354016 100644
--- a/interface/web/mail/lib/lang/br_mail_blacklist_list.lng
+++ b/interface/web/mail/lib/lang/br_mail_blacklist_list.lng
@@ -1,10 +1,10 @@
 <?php
-$wb['list_head_txt'] = 'Lista Negra';
+$wb['list_head_txt'] = 'Lista negra';
 $wb['active_txt'] = 'Ativo';
 $wb['server_id_txt'] = 'Servidor';
-$wb['source_txt'] = 'e-mail';
+$wb['source_txt'] = 'Endereço de e-mail';
 $wb['type_txt'] = 'Tipo';
 $wb['recipient_txt'] = 'Destinatário';
-$wb['add_new_record_txt'] = 'Adicionar novo e-mail à lista';
+$wb['add_new_record_txt'] = 'Adicionar novo registro';
 $wb['access_txt'] = 'acesso';
 ?>
diff --git a/interface/web/mail/lib/lang/br_mail_content_filter.lng b/interface/web/mail/lib/lang/br_mail_content_filter.lng
index dc85d4e78e..b0a7c15b12 100644
--- a/interface/web/mail/lib/lang/br_mail_content_filter.lng
+++ b/interface/web/mail/lib/lang/br_mail_content_filter.lng
@@ -1,9 +1,9 @@
 <?php
 $wb['server_id_txt'] = 'Servidor';
 $wb['type_txt'] = 'Filtro';
-$wb['pattern_txt'] = 'Padrão de expressão regular.';
-$wb['data_txt'] = 'Data';
+$wb['pattern_txt'] = 'Padrão da expressão regular';
+$wb['data_txt'] = 'Dados';
 $wb['action_txt'] = 'Ação';
 $wb['active_txt'] = 'Ativo';
-$wb['pattern_error_empty'] = 'Padrão da expressão regular está em branco';
+$wb['pattern_error_empty'] = 'Padrão da expressão regular está em branco.';
 ?>
diff --git a/interface/web/mail/lib/lang/br_mail_content_filter_list.lng b/interface/web/mail/lib/lang/br_mail_content_filter_list.lng
index 4d35bd6352..65674a903d 100644
--- a/interface/web/mail/lib/lang/br_mail_content_filter_list.lng
+++ b/interface/web/mail/lib/lang/br_mail_content_filter_list.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['list_head_txt'] = 'Cabeçalhos postfix e body checks';
+$wb['list_head_txt'] = 'Verificações de cabeçalho e corpo de e-mail - Postfix';
 $wb['active_txt'] = 'Ativo';
 $wb['server_id_txt'] = 'Servidor';
 $wb['pattern_txt'] = 'Padrão';
diff --git a/interface/web/mail/lib/lang/br_mail_domain.lng b/interface/web/mail/lib/lang/br_mail_domain.lng
index 87cdd1287c..0bdb473095 100644
--- a/interface/web/mail/lib/lang/br_mail_domain.lng
+++ b/interface/web/mail/lib/lang/br_mail_domain.lng
@@ -3,21 +3,21 @@ $wb['server_id_txt'] = 'Servidor';
 $wb['domain_txt'] = 'Domínio';
 $wb['type_txt'] = 'Tipo';
 $wb['active_txt'] = 'Ativo';
-$wb['domain_error_empty'] = 'Domínio está em branco.';
-$wb['domain_error_unique'] = 'Domínio duplicado';
-$wb['domain_error_regex'] = 'Nome de domínio inválido';
-$wb['client_txt'] = 'Cliente';
-$wb['limit_maildomain_txt'] = 'O limite de contas de e-mail para este domínio foi alcançado.';
-$wb['policy_txt'] = 'Filtro anti-spam';
-$wb['no_policy'] = '- desabilitado -';
-$wb['dkim_txt'] = 'habilitar DKIM';
+$wb['dkim_txt'] = 'Habilitar DKIM';
 $wb['dkim_private_txt'] = 'Chave privada DKIM';
-$wb['dkim_public_txt'] = 'Somente chave pública/nfor DKIM';
+$wb['dkim_public_txt'] = 'Chave pública DKIMapenas para informação';
 $wb['dkim_generate_txt'] = 'Gerar chave privada DKIM';
 $wb['dkim_dns_txt'] = 'Registro dns';
-$wb['dkim_private_key_error'] = 'Chave privada DKIM inválida';
-$wb['dkim_selector_txt'] = 'Seletor DKIM';
-$wb['dkim_selector_error'] = 'Seletor DKIM é inválido. Use apenas caracteres minúsculos e alfanuméricos (\'az\' ou \'0-9\') até o máximo de 63 caracteres';
-$wb['dkim_settings_txt'] = 'DomainKeys Identified Mail (DKIM)';
+$wb['dkim_private_key_error'] = 'A chave privada DKIM é inválida.';
+$wb['domain_error_empty'] = 'O domínio está em branco.';
+$wb['domain_error_unique'] = 'O domínio está duplicado.';
+$wb['domain_error_regex'] = 'O domínio é inválido.';
+$wb['dkim_settings_txt'] = 'Domínio de e-mail identificado por chaves de domínio (DKIM)';
+$wb['client_txt'] = 'Cliente';
+$wb['limit_maildomain_txt'] = 'O limite de domínios de e-mail para esta conta foi alcançado.';
+$wb['policy_txt'] = 'Filtro anti-spam';
+$wb['no_policy'] = '-desabilitado-';
 $wb['error_not_allowed_server_id'] = 'O servidor selecionado não é permitido para esta conta.';
+$wb['dkim_selector_txt'] = 'Seletor DKIM';
+$wb['dkim_selector_error'] = 'Seletor DKIM é inválido. Utilize apenas caracteres alfanuméricos em minúsculas (a-z ou 0-9) e no máximo 63 caracteres.';
 ?>
diff --git a/interface/web/mail/lib/lang/br_mail_domain_catchall.lng b/interface/web/mail/lib/lang/br_mail_domain_catchall.lng
index 3c4c6a2628..3d4f85af8d 100644
--- a/interface/web/mail/lib/lang/br_mail_domain_catchall.lng
+++ b/interface/web/mail/lib/lang/br_mail_domain_catchall.lng
@@ -1,12 +1,13 @@
 <?php
 $wb['domain_txt'] = 'Domínio';
-$wb['destination_txt'] = 'Destino';
+$wb['destination_txt'] = 'Endereço de e-mail de destino';
 $wb['active_txt'] = 'Ativo';
-$wb['domain_error_unique'] = 'Já existe uma conta cata tudo para este domínio.';
+$wb['domain_error_unique'] = 'Já existe uma conta cata-tudo para este domínio.';
 $wb['no_domain_perm'] = 'Você não tem permissão para este domínio.';
-$wb['domain_error_regex'] = 'O domínio contém caracteres inválidos';
-$wb['limit_mailcatchall_txt'] = 'O limite de contas cata tudo para este domínio foi alcançado.';
+$wb['domain_error_regex'] = 'O domínio é inválido ou contêm caracteres inválidos.';
+$wb['limit_mailcatchall_txt'] = 'O limite de contas cata-tudo para esta conta foi alcançado.';
+$wb['domain_txt'] = 'Domínio';
 $wb['source_txt'] = 'Origem';
-$wb['destination_error_isemail'] = 'Destino não é um e-mail válido.';
-$wb['greylisting_txt'] = 'Enable greylisting';
+$wb['destination_error_isemail'] = 'Endereço de e-mail de destino é inválido.';
+$wb['greylisting_txt'] = 'Habilitar greylist';
 ?>
diff --git a/interface/web/mail/lib/lang/br_mail_domain_catchall_list.lng b/interface/web/mail/lib/lang/br_mail_domain_catchall_list.lng
index 57c1f3a11a..2d5747826c 100644
--- a/interface/web/mail/lib/lang/br_mail_domain_catchall_list.lng
+++ b/interface/web/mail/lib/lang/br_mail_domain_catchall_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['list_head_txt'] = 'Contas cata tudo';
+$wb['list_head_txt'] = 'Conta cata-tudo';
 $wb['active_txt'] = 'Ativo';
-$wb['source_txt'] = 'Origem';
-$wb['destination_txt'] = 'Endereço de destino';
+$wb['source_txt'] = 'origem';
+$wb['destination_txt'] = 'Endereço de e-mail de destino';
 $wb['server_id_txt'] = 'Servidor';
 $wb['domain_txt'] = 'Domínio';
 $wb['add_new_record_txt'] = 'Adicionar nova conta';
diff --git a/interface/web/mail/lib/lang/br_mail_forward.lng b/interface/web/mail/lib/lang/br_mail_forward.lng
index 8f9864638d..5a2400e49b 100644
--- a/interface/web/mail/lib/lang/br_mail_forward.lng
+++ b/interface/web/mail/lib/lang/br_mail_forward.lng
@@ -1,13 +1,13 @@
 <?php
-$wb['email_txt'] = 'e-mail';
-$wb['destination_txt'] = 'e-mail de destino';
+$wb['email_txt'] = 'e-Mail';
+$wb['destination_txt'] = 'Endereço e-mail de destino';
 $wb['active_txt'] = 'Ativo';
-$wb['limit_mailforward_txt'] = 'O limite de encaminhamentos para esta conta foi alcançado.';
-$wb['duplicate_mailbox_txt'] = 'Já existe um e-mail com este endereço.';
+$wb['limit_mailforward_txt'] = 'O limite de encaminhamentos de e-mail para esta conta foi alcançado.';
+$wb['duplicate_mailbox_txt'] = 'Já existe um conta de e-mail idêntica.';
 $wb['domain_txt'] = 'Domínio';
-$wb['source_txt'] = 'Origem';
-$wb['greylisting_txt'] = 'Habilitar greylist';
-$wb['email_error_isemail'] = 'Por favor, insira um e-mail válido.';
+$wb['source_txt'] = 'Endereço de e-mail de origem';
+$wb['email_error_isemail'] = 'Por favor informe um endereço de e-mail válido.';
 $wb['send_as_txt'] = 'Enviar como';
-$wb['send_as_exp'] = 'Permite o alvo enviar e-mails usando este endereço como origem (se o alvo for interno)';
+$wb['send_as_exp'] = 'Permitir o destino enviar e-mails usando este endereço como origem (se o destino for interno)';
+$wb['greylisting_txt'] = 'Habilitar greylist';
 ?>
diff --git a/interface/web/mail/lib/lang/br_mail_forward_list.lng b/interface/web/mail/lib/lang/br_mail_forward_list.lng
index 025ecc00b6..166839e2c9 100644
--- a/interface/web/mail/lib/lang/br_mail_forward_list.lng
+++ b/interface/web/mail/lib/lang/br_mail_forward_list.lng
@@ -2,7 +2,7 @@
 $wb['list_head_txt'] = 'Encaminhamento de e-mail';
 $wb['active_txt'] = 'Ativo';
 $wb['source_txt'] = 'Origem';
-$wb['destination_txt'] = 'Destino';
-$wb['email_txt'] = 'e-mail';
-$wb['add_new_record_txt'] = 'Adicionar novo encaminhamento';
+$wb['destination_txt'] = 'Destinatário';
+$wb['email_txt'] = 'e-Mail';
+$wb['add_new_record_txt'] = 'Adicionar novo encaminhamento de e-mail';
 ?>
diff --git a/interface/web/mail/lib/lang/br_mail_get.lng b/interface/web/mail/lib/lang/br_mail_get.lng
index dc9d2fce87..f3d055f6d8 100644
--- a/interface/web/mail/lib/lang/br_mail_get.lng
+++ b/interface/web/mail/lib/lang/br_mail_get.lng
@@ -1,19 +1,19 @@
 <?php
 $wb['server_id_txt'] = 'Servidor';
 $wb['type_txt'] = 'Tipo';
-$wb['source_server_txt'] = 'Servidor pop3/imap';
+$wb['source_server_txt'] = 'Servidor POP3/IMAP';
 $wb['source_username_txt'] = 'Usuário';
 $wb['source_password_txt'] = 'Senha';
-$wb['source_delete_txt'] = 'Remover mensagens da origem após o recebimento';
+$wb['source_delete_txt'] = 'Remover e-mails após recuperação';
+$wb['source_delete_note_txt'] = 'Verifique primeiro se a recuperação de e-mails funciona antes de ativar esta opção.';
+$wb['source_read_all_txt'] = 'Recuperar todos e-mails (inclusive e-mails lidos)';
 $wb['destination_txt'] = 'Destino';
 $wb['active_txt'] = 'Ativo';
-$wb['limit_fetchmail_txt'] = 'O limite de contas de buscas para esta conta foi alcançado.';
-$wb['source_server_error_isempty'] = 'Servidor está em branco.';
-$wb['source_username_error_isempty'] = 'Usuário está em branco.';
-$wb['source_password_error_isempty'] = 'Senha está em branco.';
-$wb['destination_error_isemail'] = 'Destino não selecionado.';
-$wb['source_server_error_regex'] = 'Servidor pop3/imap não é um domínio válido.';
-$wb['source_read_all_txt'] = 'Receber todos os e-mails (inclusive e-mails lidos)';
-$wb['error_delete_read_all_combination'] = 'Combinação ilegal de opções. Você não pode usar \'Apagar e-mails após recebimento\' = não junto com \'Receber todos os e-mail\' = sim.';
-$wb['source_delete_note_txt'] = 'Por favor, verifique se o e-mail do para recepção está operacional, antes de ativar esta configuração.';
+$wb['limit_fetchmail_txt'] = 'O limite de registros de busca de e-mails para esta conta foi alcançado.';
+$wb['source_server_error_isempty'] = 'O servidor está em branco.';
+$wb['source_username_error_isempty'] = 'O usuário está em branco.';
+$wb['source_password_error_isempty'] = 'A senha está em branco.';
+$wb['destination_error_isemail'] = 'Nenhum destino selecionado.';
+$wb['source_server_error_regex'] = 'O servidor POP3/IMAP é inválido.';
+$wb['error_delete_read_all_combination'] = 'Combinação ilegal nas opções. Não pode ser utilizado "Remover e-mails após recuperação" = "não" e "Recuperar todos e-mail" = "sim".';
 ?>
diff --git a/interface/web/mail/lib/lang/br_mail_get_list.lng b/interface/web/mail/lib/lang/br_mail_get_list.lng
index 07d28d0bd8..84b8bbd33e 100644
--- a/interface/web/mail/lib/lang/br_mail_get_list.lng
+++ b/interface/web/mail/lib/lang/br_mail_get_list.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['list_head_txt'] = 'Busca de mensagens de um servidor POP3/IMAP';
+$wb['list_head_txt'] = 'Busca de e-mails de servidores externos - POP3/IMAP';
 $wb['active_txt'] = 'Ativo';
 $wb['server_id_txt'] = 'Servidor';
 $wb['source_server_txt'] = 'Servidor externo';
diff --git a/interface/web/mail/lib/lang/br_mail_mailinglist.lng b/interface/web/mail/lib/lang/br_mail_mailinglist.lng
index a34dca7f35..87f5bcbb64 100644
--- a/interface/web/mail/lib/lang/br_mail_mailinglist.lng
+++ b/interface/web/mail/lib/lang/br_mail_mailinglist.lng
@@ -1,22 +1,22 @@
 <?php
-$wb['limit_mailmailinglist_txt'] = 'Limite alcançado';
-$wb['domain_error_empty'] = 'Domínio está em branco.';
-$wb['listname_error_empty'] = 'Nome da lista está em branco.';
-$wb['domain_error_regex'] = 'Domínio é inválido.';
-$wb['email_in_use_txt'] = 'e-mail está em uso';
+$wb['mailinglist_txt'] = 'Lista de e-mail';
+$wb['limit_mailmailinglist_txt'] = 'O limite foi alcançado.';
+$wb['domain_error_empty'] = 'O domínio está em branco.';
+$wb['listname_error_empty'] = 'O nome da lista está em branco.';
+$wb['domain_error_regex'] = 'O domínio é inválido.';
+$wb['email_in_use_txt'] = 'O e-mail já está em uso.';
 $wb['no_domain_perm'] = 'Você não tem permissão para este domínio.';
 $wb['password_strength_txt'] = 'Dificuldade da senha';
 $wb['server_id_txt'] = 'Servidor';
 $wb['domain_txt'] = 'Domínio';
-$wb['listname_txt'] = 'Nome da lista';
+$wb['listname_txt'] = 'Lista';
 $wb['client_txt'] = 'Cliente';
-$wb['email_txt'] = 'e-mail';
+$wb['email_txt'] = 'e-Mail';
 $wb['password_txt'] = 'Senha';
-$wb['generate_password_txt'] = 'Gerar senha';
-$wb['repeat_password_txt'] = 'Repetir senha';
-$wb['password_mismatch_txt'] = 'A senhas não coincidem.';
-$wb['password_match_txt'] = 'A senhas coincidem.';
-$wb['listname_error_unique'] = 'Já existe uma lista com o mesmo nome neste servidor. Por favor, insira outro nome.';
+$wb['generate_password_txt'] = 'Gerar Senha';
+$wb['repeat_password_txt'] = 'Repetir Senha';
+$wb['password_mismatch_txt'] = 'As senhas não coincidem.';
+$wb['password_match_txt'] = 'As senhas coincidem.';
+$wb['listname_error_unique'] = 'Já existe uma lista de e-mails idêntica para este servidor. Por favor escolha um nome diferente.';
 $wb['email_error_isemail'] = 'Endereço de e-mail é inválido.';
-$wb['mailinglist_txt'] = 'Lista de e-mails';
 ?>
diff --git a/interface/web/mail/lib/lang/br_mail_mailinglist_list.lng b/interface/web/mail/lib/lang/br_mail_mailinglist_list.lng
index 08fd204fbb..d7dcf02c01 100644
--- a/interface/web/mail/lib/lang/br_mail_mailinglist_list.lng
+++ b/interface/web/mail/lib/lang/br_mail_mailinglist_list.lng
@@ -1,5 +1,5 @@
 <?php
 $wb['list_head_txt'] = 'Lista de e-mails';
 $wb['domain_txt'] = 'Domínio';
-$wb['listname_txt'] = 'Nome';
+$wb['listname_txt'] = 'Nome da lista';
 ?>
diff --git a/interface/web/mail/lib/lang/br_mail_relay_recipient.lng b/interface/web/mail/lib/lang/br_mail_relay_recipient.lng
index 0ce921b1a1..637788ce48 100644
--- a/interface/web/mail/lib/lang/br_mail_relay_recipient.lng
+++ b/interface/web/mail/lib/lang/br_mail_relay_recipient.lng
@@ -3,7 +3,7 @@ $wb['server_id_txt'] = 'Servidor';
 $wb['source_txt'] = 'Destinatário de retransmissão';
 $wb['recipient_txt'] = 'Destinatário';
 $wb['active_txt'] = 'Ativo';
-$wb['source_error_notempty'] = 'Endereço está em branco.';
+$wb['source_error_notempty'] = 'Destinatário de retransmissão está em branco.';
 $wb['type_txt'] = 'Tipo';
-$wb['limit_mailfilter_txt'] = 'O limite de filtros para esta conta foi alcançado.';
+$wb['limit_mailfilter_txt'] = 'O limite de filtros de e-mail para esta conta foi alcançado.';
 ?>
diff --git a/interface/web/mail/lib/lang/br_mail_relay_recipient_list.lng b/interface/web/mail/lib/lang/br_mail_relay_recipient_list.lng
index b6ca775e5e..d96bab59eb 100644
--- a/interface/web/mail/lib/lang/br_mail_relay_recipient_list.lng
+++ b/interface/web/mail/lib/lang/br_mail_relay_recipient_list.lng
@@ -2,8 +2,8 @@
 $wb['list_head_txt'] = 'Destinatários de retransmissão';
 $wb['active_txt'] = 'Ativo';
 $wb['server_id_txt'] = 'Servidor';
-$wb['source_txt'] = 'Remetente';
+$wb['source_txt'] = 'Endereço do destinatário';
 $wb['recipient_txt'] = 'Destinatário';
-$wb['add_new_record_txt'] = 'Adicionar novo destinatário';
+$wb['add_new_record_txt'] = 'Adicionar novo destinatário de retransmissão';
 $wb['access_txt'] = 'acesso';
 ?>
diff --git a/interface/web/mail/lib/lang/br_mail_spamfilter.lng b/interface/web/mail/lib/lang/br_mail_spamfilter.lng
index 3e7201b95d..e38894fde3 100644
--- a/interface/web/mail/lib/lang/br_mail_spamfilter.lng
+++ b/interface/web/mail/lib/lang/br_mail_spamfilter.lng
@@ -1,17 +1,17 @@
 <?php
-$wb['email_txt'] = 'E-mail';
+$wb['email_txt'] = 'e-Mail';
 $wb['spam_rewrite_score_int_txt'] = 'Pontuação de reescrita';
-$wb['spam_redirect_score_int_txt'] = 'Pontuação de redirecionamento';
+$wb['spam_redirect_score_int_txt'] = 'Redirecionar pontuação';
 $wb['spam_delete_score_int_txt'] = 'Remover pontuação';
 $wb['spam_rewrite_subject_txt'] = 'Reescrever assunto';
 $wb['spam_redirect_maildir_txt'] = 'Redirecionar conta de e-mail';
 $wb['active_txt'] = 'Ativo';
-$wb['spam_rewrite_txt'] = 'Reescrever assunto da mensagem depois desta pontuação.';
-$wb['spam_redirect_txt'] = 'Redirecione esta mensagem depois desta pontuação para esta conta de e-mail';
-$wb['spam_delete_txt'] = 'Remover esta mensagem depois desta pontuação.';
-$wb['disable_txt'] = 'Dica: Para desabilitar uma opção de filtro, configure a pontuação como 0.00.';
+$wb['spam_rewrite_txt'] = 'Reescrever assunto do e-mail acima desta pontuação.';
+$wb['spam_redirect_txt'] = 'Redirecionar e-mail acima desta pontuação para a conta de e-mail selecionada.';
+$wb['spam_delete_txt'] = 'Remover e-mail acima desta pontuação.';
+$wb['disable_txt'] = 'Dica: Para desabilitar uma opção de filtragem, configure a pontuação para 0.00';
 $wb['email_error_isemail'] = 'Endereço de e-mail é inválido.';
-$wb['email_error_unique'] = 'Já existem registros iguais de filtros anti-spam para este e-mail.';
-$wb['spam_redirect_maildir_purge_txt'] = 'Remover Maildir depois';
-$wb['days_txt'] = 'Dias';
+$wb['email_error_unique'] = 'Já existe um filtro anti-spam igual para este endereço de e-mail.';
+$wb['spam_redirect_maildir_purge_txt'] = 'Remover diretório de e-mail após';
+$wb['days_txt'] = 'dias.';
 ?>
diff --git a/interface/web/mail/lib/lang/br_mail_spamfilter_list.lng b/interface/web/mail/lib/lang/br_mail_spamfilter_list.lng
index 40c680da72..51044a3bec 100644
--- a/interface/web/mail/lib/lang/br_mail_spamfilter_list.lng
+++ b/interface/web/mail/lib/lang/br_mail_spamfilter_list.lng
@@ -1,8 +1,8 @@
 <?php
 $wb['list_head_txt'] = 'Filtro anti-spam';
 $wb['active_txt'] = 'Ativo';
-$wb['server_id_txt'] = 'Servidor';
-$wb['server_name_txt'] = 'Nome';
-$wb['email_txt'] = 'e-mail';
-$wb['add_new_record_txt'] = 'Adicionar novo filtro anti-spam';
+$wb['server_id_txt'] = 'ID do servidor';
+$wb['server_name_txt'] = 'Nome do servidor';
+$wb['email_txt'] = 'e-Mail';
+$wb['add_new_record_txt'] = 'Adicionar filtro anti-spam';
 ?>
diff --git a/interface/web/mail/lib/lang/br_mail_transport.lng b/interface/web/mail/lib/lang/br_mail_transport.lng
index 7b080493c2..cf59e244bb 100644
--- a/interface/web/mail/lib/lang/br_mail_transport.lng
+++ b/interface/web/mail/lib/lang/br_mail_transport.lng
@@ -3,9 +3,9 @@ $wb['server_id_txt'] = 'Servidor';
 $wb['domain_txt'] = 'Domínio';
 $wb['destination_txt'] = 'Destino';
 $wb['type_txt'] = 'Tipo';
-$wb['mx_txt'] = 'Sem MX lookup';
+$wb['mx_txt'] = 'Sem pesquisa MX';
 $wb['sort_order_txt'] = 'Ordenar por';
 $wb['active_txt'] = 'Ativo';
-$wb['limit_mailrouting_txt'] = 'O limite de transportes para esta conta foi alcançado.';
+$wb['limit_mailrouting_txt'] = 'O limite de rotas de e-mail para esta conta foi alcançado.';
 $wb['transport_txt'] = 'Transporte';
 ?>
diff --git a/interface/web/mail/lib/lang/br_mail_transport_list.lng b/interface/web/mail/lib/lang/br_mail_transport_list.lng
index 1e824b345a..4597742bef 100644
--- a/interface/web/mail/lib/lang/br_mail_transport_list.lng
+++ b/interface/web/mail/lib/lang/br_mail_transport_list.lng
@@ -1,6 +1,6 @@
 <?php
-$wb['list_head_txt'] = 'Transporte de e-mails';
-$wb['active_txt'] = 'Ativa';
+$wb['list_head_txt'] = 'Roteamento avançado de e-mail';
+$wb['active_txt'] = 'Ativo';
 $wb['server_id_txt'] = 'Servidor';
 $wb['domain_txt'] = 'Domínio';
 $wb['transport_txt'] = 'Transporte';
diff --git a/interface/web/mail/lib/lang/br_mail_user.lng b/interface/web/mail/lib/lang/br_mail_user.lng
index f91d40f625..ed6e35ef61 100644
--- a/interface/web/mail/lib/lang/br_mail_user.lng
+++ b/interface/web/mail/lib/lang/br_mail_user.lng
@@ -1,65 +1,65 @@
 <?php
-$wb['custom_mailfilter_txt'] = 'Fórmula de filtro de e-mail';
-$wb['email_txt'] = 'e-mail';
+$wb['custom_mailfilter_txt'] = 'Modelo de filtro de e-mail personalizado';
+$wb['email_txt'] = 'e-Mail';
 $wb['cryptpwd_txt'] = 'Senha';
 $wb['password_strength_txt'] = 'Dificuldade da senha';
 $wb['active_txt'] = 'Ativo';
 $wb['email_error_isemail'] = 'Endereço de e-mail é inválido.';
 $wb['email_error_unique'] = 'Endereço de e-mail duplicado.';
+$wb['autoresponder_subject_txt'] = 'Assunto do e-mail';
+$wb['autoresponder_subject'] = 'Resposta Automática';
 $wb['autoresponder_text_txt'] = 'Texto';
-$wb['autoresponder_txt'] = 'Autoresposta';
-$wb['no_domain_perm'] = 'Sem permissão para este domínio.';
-$wb['error_no_pwd'] = 'Senha está em branco.';
-$wb['quota_error_isint'] = 'O tamanho do e-mail deve ser um número.';
-$wb['quota_txt'] = 'Cota';
+$wb['autoresponder_txt'] = 'Ativo';
+$wb['autoresponder_start_date_txt'] = 'Iniciar em';
+$wb['autoresponder_start_date_ispast'] = 'O campo "Iniciar em" não pode ser menor que a data atual.';
+$wb['autoresponder_end_date_txt'] = 'Terminar em';
+$wb['autoresponder_end_date_isgreater'] = 'O campo "Terminar em" deve ser configurado e não pode ser menor ou igual a data atual.';
+$wb['autoresponder_start_date_is_required'] = 'Data iniciar deve ser configurado quando a opção de auto-resposta estiver habilitada.';
+$wb['no_domain_perm'] = 'Você não tem permissão para este domínio.';
+$wb['error_no_pwd'] = 'A senha está em branco.';
+$wb['quota_error_isint'] = 'O tamanho da conta de e-mail deve ser um número.';
+$wb['quota_txt'] = 'Cota (0 para ilimitado)';
 $wb['server_id_txt'] = 'ID do servidor';
 $wb['password_txt'] = 'Senha';
-$wb['maildir_txt'] = 'Caixa Postal';
+$wb['password_click_to_set_txt'] = 'Clique para configurar';
+$wb['maildir_txt'] = 'Maildir';
 $wb['postfix_txt'] = 'Habilitar recebimento';
 $wb['greylisting_txt'] = 'Habilitar greylist';
 $wb['access_txt'] = 'Habilitar acesso';
-$wb['policy_txt'] = 'Filtro anti-spam';
-$wb['no_policy'] = '- desabilitado -';
+$wb['policy_txt'] = 'Filtros anti-spam';
+$wb['no_policy'] = '-desabilitado-';
 $wb['limit_mailbox_txt'] = 'O limite de contas de e-mail para esta conta foi alcançado.';
-$wb['limit_mailquota_txt'] = 'O espaço em disco disponível para criação de contas de e-mail foi alcançado.';
-$wb['disableimap_txt'] = 'Desabilitar imap';
-$wb['disablepop3_txt'] = 'Desabilitar pop3';
-$wb['duplicate_alias_or_forward_txt'] = 'Já existe um apelido ou encaminhamento com este endereço de e-mail.';
-$wb['quota_error_value'] = 'Valor da cota é inválido. Valores válidos são: 0 para ilimitado ou número > 1';
-$wb['autoresponder_start_date_txt'] = 'Início:';
-$wb['autoresponder_start_date_ispast'] = 'A data de início não pode ser menor que a data atual.';
-$wb['autoresponder_end_date_txt'] = 'Término:';
-$wb['autoresponder_end_date_isgreater'] = 'A data de término não pode ser menor que a data de início.';
-$wb['move_junk_txt'] = 'Mover spam para o diretório junk';
-$wb['name_txt'] = 'Nome real';
+$wb['limit_mailquota_txt'] = 'O limite de tamanho para as contas de e-mails foi alcançado. O espaço disponível em MB é';
+$wb['disablesmtp_txt'] = 'Desabilitar SMTP (envio)';
+$wb['disableimap_txt'] = 'Desabilitar IMAP';
+$wb['disablepop3_txt'] = 'Desabilitar POP3';
+$wb['duplicate_alias_or_forward_txt'] = 'Já existe um alias ou encaminhamento para este endereço de e-mail.';
+$wb['quota_error_value'] = 'Valor da cota é inválido. Valores permitidos são: 0 para ilimitado ou números > 1.';
+$wb['move_junk_txt'] = 'Mover e-mails marcados como spam para o diretório junk.';
+$wb['name_txt'] = 'Nome';
 $wb['name_optional_txt'] = '(Opcional)';
-$wb['autoresponder_active'] = 'Ativar autoresposta';
+$wb['autoresponder_active'] = 'Habilitar auto-resposta';
 $wb['cc_txt'] = 'Enviar cópia para';
-$wb['cc_error_isemail'] = 'O campo \\"Enviar cópia para\\" deve conter um endereço de e-mail válido';
+$wb['sender_cc_txt'] = 'Enviar cópia oculta (BCC) para';
+$wb['cc_error_isemail'] = 'O campo "Enviar cópia para" contém um endereço de e-mail inválido.';
+$wb['sender_cc_error_isemail'] = 'O campo "Enviar cópia oculta para" contém um endereço de e-mail inválido.';
 $wb['domain_txt'] = 'Domínio';
 $wb['now_txt'] = 'Agora';
-$wb['login_error_unique'] = 'O acesso já está em uso.';
-$wb['login_error_regex'] = 'Caracteres válidos são: \'A-Z\', \'a-z\', \'0-9\', \'.\', \'_\' e \'-\'.';
-$wb['login_txt'] = 'Acesso (opcional)';
-$wb['error_login_email_txt'] = 'Este acesso não é permitido. Por favor, insira um usuário diferente ou use o endereço de e-mail.';
-$wb['autoresponder_subject_txt'] = 'Assunto do e-mail';
-$wb['autoresponder_subject'] = 'Resposta de ausência temporária';
-$wb['generate_password_txt'] = 'Gerar senha';
-$wb['repeat_password_txt'] = 'Repetir senha';
-$wb['password_mismatch_txt'] = 'A senhas não coincidem.';
-$wb['password_match_txt'] = 'A senhas coincidem.';
-$wb['email_error_isascii'] = 'Por favor não use caracteres \\"unicode\\" para a senha. Esta ação poderá causar problemas com seu cliente de e-mail (mua).';
-$wb['cc_note_txt'] = '(Múltiplos e-mails separados por vírgulas)';
-$wb['disablesmtp_txt'] = 'Desabilitar smtp (envio)';
-$wb['autoresponder_start_date_is_required'] = 'Data de início deve ser configurada quando \'autoresposta\' é habilitada.';
-$wb['sender_cc_txt'] = 'Enviar cópia para';
-$wb['sender_cc_error_isemail'] = 'O campo \'Enviar cópia para\' não contém um endereço de e-mail válido';
-$wb['backup_interval_txt'] = 'Intervalo de backup';
-$wb['backup_copies_txt'] = 'Limite de cópias do backup';
+$wb['login_error_unique'] = 'O acesso já foi realizado.';
+$wb['login_error_regex'] = 'Caracteres válidos são "A-Z", "a-z", "0-9", ".", "_" e "-".';
+$wb['login_txt'] = 'Acesso';
+$wb['error_login_email_txt'] = 'Este acesso não é permitido. Por favor, forneça um nome de usuário ou endereço de e-mail diferente para acessar.';
+$wb['generate_password_txt'] = 'Gerar Senha';
+$wb['repeat_password_txt'] = 'Repetir Senha';
+$wb['password_mismatch_txt'] = 'As senhas não coincidem.';
+$wb['password_match_txt'] = 'As senhas coincidem.';
+$wb['backup_interval_txt'] = 'Intervalo entre backups';
+$wb['backup_copies_txt'] = 'Número de cópias do backup';
 $wb['no_backup_txt'] = 'Sem backup';
 $wb['daily_backup_txt'] = 'Diário';
 $wb['weekly_backup_txt'] = 'Semanal';
 $wb['monthly_backup_txt'] = 'Mensal';
-$wb['sender_cc_note_txt'] = '(Múltiplos e-mails separados por vírgulas)';
-$wb['password_click_to_set_txt'] = 'Configurar';
+$wb['email_error_isascii'] = 'Por favor, não use caracteres especiais para a senha. Isto poderá causar problemas no cliente de e-mail.';
+$wb['cc_note_txt'] = '(separar múltiplos endereços de e-mails com vírgulas)';
+$wb['sender_cc_note_txt'] = '(separar múltiplos endereços de e-mails com vírgulas)';
 ?>
diff --git a/interface/web/mail/lib/lang/br_mail_user_filter.lng b/interface/web/mail/lib/lang/br_mail_user_filter.lng
index 7dca140cee..54ae96d692 100644
--- a/interface/web/mail/lib/lang/br_mail_user_filter.lng
+++ b/interface/web/mail/lib/lang/br_mail_user_filter.lng
@@ -4,23 +4,23 @@ $wb['action_txt'] = 'Ação';
 $wb['target_txt'] = 'Pasta';
 $wb['active_txt'] = 'Ativo';
 $wb['rulename_error_empty'] = 'Nome está em branco.';
-$wb['searchterm_is_empty'] = 'Termo de busca está em branco.';
+$wb['searchterm_is_empty'] = 'Termo de pesquisa está em branco.';
 $wb['source_txt'] = 'Origem';
-$wb['target_error_regex'] = 'O alvo não pode conter os caracteres: \'a-z\', \'0-9\', \'-\', \'.\', \'_\', e \'{espaço}\'.';
-$wb['limit_mailfilter_txt'] = 'O limite de filtros de e-mail para esta conta foi alcançado.';
+$wb['target_error_regex'] = 'O alvo pode conter apenas os caracteres: "a-z", "0-9", "-", ".", "_", e {espaço}';
+$wb['limit_mailfilter_txt'] = 'O limite de filtros de e-mail foi alcançado.';
 $wb['subject_txt'] = 'Assunto';
 $wb['from_txt'] = 'De';
 $wb['to_txt'] = 'Para';
-$wb['contains_txt'] = 'Contém';
+$wb['contains_txt'] = 'Contêm';
 $wb['is_txt'] = 'é';
-$wb['begins_with_txt'] = 'Começa com';
-$wb['ends_with_txt'] = 'Termina com';
-$wb['delete_txt'] = 'Remover';
+$wb['begins_with_txt'] = 'Iniciando com';
+$wb['ends_with_txt'] = 'Terminando com';
 $wb['move_stop_txt'] = 'Mover para';
+$wb['delete_txt'] = 'Remover';
 $wb['header_txt'] = 'Cabeçalho';
-$wb['size_over_txt'] = 'Tamanho máximo do e-mail (KB)';
-$wb['size_under_txt'] = 'Tamanho mínimo do e-mail (KB)';
-$wb['localpart_txt'] = 'Local';
+$wb['size_over_txt'] = 'Tamanho do e-mail acima de (KB)';
+$wb['size_under_txt'] = 'Tamanho do e-mail abaixo de (KB)';
+$wb['localpart_txt'] = 'Parte local';
 $wb['domain_txt'] = 'Domínio';
 $wb['keep_txt'] = 'Manter';
 $wb['reject_txt'] = 'Rejeitar';
diff --git a/interface/web/mail/lib/lang/br_mail_user_filter_list.lng b/interface/web/mail/lib/lang/br_mail_user_filter_list.lng
index feae1f4bb7..516478f9f6 100644
--- a/interface/web/mail/lib/lang/br_mail_user_filter_list.lng
+++ b/interface/web/mail/lib/lang/br_mail_user_filter_list.lng
@@ -3,5 +3,5 @@ $wb['rulename_txt'] = 'Nome';
 $wb['add_new_record_txt'] = 'Adicionar novo filtro';
 $wb['page_txt'] = 'Página';
 $wb['page_of_txt'] = 'de';
-$wb['delete_confirmation'] = 'Tem certeza que gostaria de remover este filtro?';
+$wb['delete_confirmation'] = 'Você tem certeza que deseja remover este filtro?';
 ?>
diff --git a/interface/web/mail/lib/lang/br_mail_user_stats_list.lng b/interface/web/mail/lib/lang/br_mail_user_stats_list.lng
index 370ce3520f..f0305edac3 100644
--- a/interface/web/mail/lib/lang/br_mail_user_stats_list.lng
+++ b/interface/web/mail/lib/lang/br_mail_user_stats_list.lng
@@ -1,6 +1,6 @@
 <?php
 $wb['list_head_txt'] = 'Tráfego de e-mail';
-$wb['email_txt'] = 'e-mail';
+$wb['email_txt'] = 'e-Mail';
 $wb['this_month_txt'] = 'Este mês';
 $wb['last_month_txt'] = 'Último mês';
 $wb['this_year_txt'] = 'Este ano';
diff --git a/interface/web/mail/lib/lang/br_mail_whitelist.lng b/interface/web/mail/lib/lang/br_mail_whitelist.lng
index 3443387003..4d3eb1e219 100644
--- a/interface/web/mail/lib/lang/br_mail_whitelist.lng
+++ b/interface/web/mail/lib/lang/br_mail_whitelist.lng
@@ -1,9 +1,9 @@
 <?php
 $wb['server_id_txt'] = 'Servidor';
-$wb['source_txt'] = 'Lista Branca';
+$wb['source_txt'] = 'Endereço - lista branca';
 $wb['recipient_txt'] = 'Destinatário';
 $wb['active_txt'] = 'Ativo';
-$wb['source_error_notempty'] = 'Endereço em Branco.';
+$wb['source_error_notempty'] = 'Endereço de e-mail está em branco.';
 $wb['type_txt'] = 'Tipo';
-$wb['limit_mailfilter_txt'] = 'O limite de filtros para esta conta foi alcançado.';
+$wb['limit_mailfilter_txt'] = 'O limite de filtros de e-mail para esta conta foi alcançado.';
 ?>
diff --git a/interface/web/mail/lib/lang/br_mail_whitelist_list.lng b/interface/web/mail/lib/lang/br_mail_whitelist_list.lng
index 40eced2d2c..0c7d3c717d 100644
--- a/interface/web/mail/lib/lang/br_mail_whitelist_list.lng
+++ b/interface/web/mail/lib/lang/br_mail_whitelist_list.lng
@@ -1,10 +1,10 @@
 <?php
-$wb['list_head_txt'] = 'Lista branca';
+$wb['list_head_txt'] = 'Filtros de e-mail - lista branca';
 $wb['active_txt'] = 'Ativo';
 $wb['server_id_txt'] = 'Servidor';
-$wb['source_txt'] = 'e-mails na lista branca';
+$wb['source_txt'] = 'Endereços de e-mail - lista branca';
 $wb['type_txt'] = 'Tipo';
 $wb['recipient_txt'] = 'Destinatário';
-$wb['add_new_record_txt'] = 'Adicionar novo registro à lista';
+$wb['add_new_record_txt'] = 'Adicionar novo registro';
 $wb['access_txt'] = 'acesso';
 ?>
diff --git a/interface/web/mail/lib/lang/br_spamfilter_blacklist.lng b/interface/web/mail/lib/lang/br_spamfilter_blacklist.lng
index df01dd30ba..ec3dc5f66e 100644
--- a/interface/web/mail/lib/lang/br_spamfilter_blacklist.lng
+++ b/interface/web/mail/lib/lang/br_spamfilter_blacklist.lng
@@ -1,11 +1,11 @@
 <?php
 $wb['server_id_txt'] = 'Servidor';
-$wb['wb_txt'] = 'wb';
+$wb['wb_txt'] = 'Lista branca/negra';
 $wb['rid_txt'] = 'Usuário';
-$wb['email_txt'] = 'Endereço de e-mail';
+$wb['email_txt'] = 'e-Mail';
 $wb['priority_txt'] = 'Prioridade';
 $wb['active_txt'] = 'Ativo';
-$wb['limit_spamfilter_wblist_txt'] = 'O limite de registros na lista branca/negra para esta conta foi alcançado.';
+$wb['limit_spamfilter_wblist_txt'] = 'O limite de filtros anti-spam "lista branca ou negra" para esta conta foi alcançado.';
 $wb['10 - highest'] = '10 - alta';
 $wb['5 - medium'] = '5 - média';
 $wb['1 - lowest'] = '1 - baixa';
diff --git a/interface/web/mail/lib/lang/br_spamfilter_blacklist_list.lng b/interface/web/mail/lib/lang/br_spamfilter_blacklist_list.lng
index 527a1b43d9..624cebfc51 100644
--- a/interface/web/mail/lib/lang/br_spamfilter_blacklist_list.lng
+++ b/interface/web/mail/lib/lang/br_spamfilter_blacklist_list.lng
@@ -1,9 +1,9 @@
 <?php
-$wb['list_head_txt'] = 'Filtro anti-spam (lista negra) ';
+$wb['list_head_txt'] = 'Filtro anti-spam - lista negra';
 $wb['active_txt'] = 'Ativo';
 $wb['server_id_txt'] = 'Servidor';
 $wb['priority_txt'] = 'Prioridade';
 $wb['rid_txt'] = 'Usuário';
-$wb['email_txt'] = 'Endereço de e-mail na lista negra';
-$wb['add_new_record_txt'] = 'Adicionar novo registro à lista';
+$wb['email_txt'] = 'Endereço de e-mail - lista negra';
+$wb['add_new_record_txt'] = 'Adicionar novo registro';
 ?>
diff --git a/interface/web/mail/lib/lang/br_spamfilter_config.lng b/interface/web/mail/lib/lang/br_spamfilter_config.lng
index 9a12279a4a..6182e8b788 100644
--- a/interface/web/mail/lib/lang/br_spamfilter_config.lng
+++ b/interface/web/mail/lib/lang/br_spamfilter_config.lng
@@ -1,20 +1,20 @@
 <?php
-$wb['getmail_config_dir_txt'] = 'Caminho de configuração getmail ';
+$wb['getmail_config_dir_txt'] = 'Caminho das configurações do getmail';
 $wb['ip_address_txt'] = 'Endereço IP';
-$wb['netmask_txt'] = 'Máscara de rede';
+$wb['netmask_txt'] = 'Máscara';
 $wb['gateway_txt'] = 'Gateway';
-$wb['hostname_txt'] = 'Nome do servidor';
-$wb['nameservers_txt'] = 'Servidor de nomes';
+$wb['hostname_txt'] = 'Nome do host';
+$wb['nameservers_txt'] = 'Servidor(es) dns';
 $wb['module_txt'] = 'Módulo do servidor';
-$wb['maildir_path_txt'] = 'Caminho do Maildir';
-$wb['homedir_path_txt'] = 'Caminho do Homedir';
-$wb['mailuser_uid_txt'] = 'Usuário de e-mail (UID)';
-$wb['mailuser_gid_txt'] = 'Grupo de e-mail (GID)';
-$wb['mailuser_name_txt'] = 'Nome do usuário de e-mail';
-$wb['mailuser_group_txt'] = 'Grupo do usuário de e-mail';
-$wb['relayhost_txt'] = 'Host Relay';
-$wb['relayhost_user_txt'] = 'Usuário host relay';
-$wb['relayhost_password_txt'] = 'Senha host relay';
-$wb['mailbox_size_limit_txt'] = 'Tamanho da conta de e-mail';
-$wb['message_size_limit_txt'] = 'Tamanho da mensagem';
+$wb['maildir_path_txt'] = 'Caminho do maildir';
+$wb['homedir_path_txt'] = 'Caminho do homedir';
+$wb['mailuser_uid_txt'] = 'UID do mailuser';
+$wb['mailuser_gid_txt'] = 'GID do mailuser';
+$wb['mailuser_name_txt'] = 'Nome do mailuser';
+$wb['mailuser_group_txt'] = 'Grupo do mailuser';
+$wb['relayhost_txt'] = 'Host de retransmissão';
+$wb['relayhost_user_txt'] = 'Usuário de retransmissão';
+$wb['relayhost_password_txt'] = 'Senha do host de retransmissão';
+$wb['mailbox_size_limit_txt'] = 'Limite da conta de e-mail';
+$wb['message_size_limit_txt'] = 'Limite do tamanho da mensagem';
 ?>
diff --git a/interface/web/mail/lib/lang/br_spamfilter_config_list.lng b/interface/web/mail/lib/lang/br_spamfilter_config_list.lng
index 300e210b15..6d4c1cf0e1 100644
--- a/interface/web/mail/lib/lang/br_spamfilter_config_list.lng
+++ b/interface/web/mail/lib/lang/br_spamfilter_config_list.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['list_head_txt'] = 'Configurações do servidor';
+$wb['list_head_txt'] = 'Configuração do Servidor';
 $wb['server_name_txt'] = 'Servidor';
-$wb['server_id_txt'] = 'ID do servidor';
+$wb['server_id_txt'] = 'ID do Servidor';
 ?>
diff --git a/interface/web/mail/lib/lang/br_spamfilter_policy.lng b/interface/web/mail/lib/lang/br_spamfilter_policy.lng
index b5bb69db43..476b27e565 100644
--- a/interface/web/mail/lib/lang/br_spamfilter_policy.lng
+++ b/interface/web/mail/lib/lang/br_spamfilter_policy.lng
@@ -1,51 +1,51 @@
 <?php
-$wb['policy_name_txt'] = 'Nome da regra';
-$wb['virus_lover_txt'] = 'Permitir vírus';
-$wb['spam_lover_txt'] = 'Permitir spam';
-$wb['banned_files_lover_txt'] = 'Permitir arquivos banidos';
-$wb['bad_header_lover_txt'] = 'Permitir cabeçalho inválido';
-$wb['bypass_virus_checks_txt'] = 'Ignorar verificação de vírus';
-$wb['bypass_banned_checks_txt'] = 'Ignorar verificação de arquivos banidos';
-$wb['bypass_header_checks_txt'] = 'Ignorar verificação de cabeçalho inválido';
-$wb['virus_quarantine_to_txt'] = 'Encaminhar o vírus para o e-mail';
-$wb['spam_quarantine_to_txt'] = 'Encaminhar o spam para o e-mail';
+$wb['policy_name_txt'] = 'Nome da política';
+$wb['virus_lover_txt'] = 'Receber vírus';
+$wb['spam_lover_txt'] = 'Receber spam';
+$wb['banned_files_lover_txt'] = 'Receber arquivos banidos';
+$wb['bad_header_lover_txt'] = 'Receber cabeçalho inválido';
+$wb['bypass_virus_checks_txt'] = 'Ignorar verificações de vírus';
+$wb['bypass_banned_checks_txt'] = 'Ignorar verificações de arquivos banidos';
+$wb['bypass_header_checks_txt'] = 'Ignorar verificações de cabeçalho inválido';
+$wb['virus_quarantine_to_txt'] = 'Encaminhar vírus para o e-mail';
+$wb['spam_quarantine_to_txt'] = 'Encaminhar spam para o e-mail';
 $wb['banned_quarantine_to_txt'] = 'Encaminhar arquivos banidos para o e-mail';
 $wb['bad_header_quarantine_to_txt'] = 'Encaminhar cabeçalho inválido para o e-mail';
 $wb['clean_quarantine_to_txt'] = 'Encaminhar mensagens/arquivos em quarentena para o e-mail';
-$wb['other_quarantine_to_txt'] = 'Encaminhar para outro e-mail';
+$wb['other_quarantine_to_txt'] = 'Encaminhar mensagens/arquivos em quarentena para outro e-mail';
 $wb['spam_tag_level_txt'] = 'Nível 1 de marcação anti-spam';
 $wb['spam_tag2_level_txt'] = 'Nível 2 de marcação anti-spam';
 $wb['spam_kill_level_txt'] = 'Nível máximo de marcação anti-spam';
-$wb['spam_dsn_cutoff_level_txt'] = 'Nível de corte de dns anti-spam';
-$wb['spam_quarantine_cutoff_level_txt'] = 'Nível de corte de quarentena anti-spam';
-$wb['spam_modifies_subj_txt'] = 'Modificar assunto de mensagem com spam';
-$wb['spam_subject_tag_txt'] = 'Marcação de assunto spam 1';
-$wb['spam_subject_tag2_txt'] = 'Marcação de assunto spam 2';
-$wb['addr_extension_virus_txt'] = 'Adicionar extensão de vírus';
-$wb['addr_extension_spam_txt'] = 'Adicionar extensão de spam';
-$wb['addr_extension_banned_txt'] = 'Adicionar extensão de arquivos banidos';
-$wb['addr_extension_bad_header_txt'] = 'Adicionar extensão de cabeçalho inválido';
-$wb['warnvirusrecip_txt'] = 'Aviso de destinatário de vírus.';
-$wb['warnbannedrecip_txt'] = 'Aviso de destinatário de arquivos banidos.';
-$wb['warnbadhrecip_txt'] = 'Aviso de destinatário de cabeçalho é inválido.';
+$wb['spam_dsn_cutoff_level_txt'] = 'Nível de corte dsn anti-spam';
+$wb['spam_quarantine_cutoff_level_txt'] = 'Nível de corte para quarentena anti-spam';
+$wb['spam_modifies_subj_txt'] = 'Modificar assunto de mensagens marcadas como spam';
+$wb['spam_subject_tag_txt'] = 'Marcar assunto - SPAM 1';
+$wb['spam_subject_tag2_txt'] = 'Marcar assunto - SPAM 2';
+$wb['addr_extension_virus_txt'] = 'Adicionar extensão caso detecte vírus';
+$wb['addr_extension_spam_txt'] = 'Adicionar extensão caso detecte SPAM';
+$wb['addr_extension_banned_txt'] = 'Adicionar extensão caso detecte arquivo banido';
+$wb['addr_extension_bad_header_txt'] = 'Adicionar extensão caso detecte cabeçalho inválido';
+$wb['warnvirusrecip_txt'] = 'Aviso de vírus para o destinatário';
+$wb['warnbannedrecip_txt'] = 'Aviso de arquivo banido para destinatário';
+$wb['warnbadhrecip_txt'] = 'Aviso cabeçalho inválido para destinatário';
 $wb['newvirus_admin_txt'] = 'Administrador para novo vírus';
 $wb['virus_admin_txt'] = 'Administrador para vírus';
-$wb['banned_admin_txt'] = 'Administrador para arquivos banidos';
-$wb['bad_header_admin_txt'] = 'Administrador para cabeçalhos inválidos';
+$wb['banned_admin_txt'] = 'Administrador para arquivo banido';
+$wb['bad_header_admin_txt'] = 'Administrador para cabeçalho inválido';
 $wb['spam_admin_txt'] = 'Administrador para spam';
-$wb['message_size_limit_txt'] = 'Tamanho máximo da mensagem';
-$wb['banned_rulenames_txt'] = 'Regras de banimento';
-$wb['rspamd_greylisting_txt'] = 'Use greylisting';
-$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level';
-$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level';
-$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method';
-$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level';
-$wb['btn_save_txt'] = 'Save';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['amavis_settings_txt'] = 'Settings';
-$wb['amavis_taglevel_txt'] = 'Tag-Level';
-$wb['amavis_quarantine_txt'] = 'Quarantine';
-$wb['amavis_other_txt'] = 'Other';
-$wb['add_header_txt'] = 'Add header';
-$wb['rewrite_subject_txt'] = 'Rewrite subject';
-?>
+$wb['message_size_limit_txt'] = 'Limite de tamanho da mensagem';
+$wb['banned_rulenames_txt'] = 'Nome da regra para arquivo banido';
+$wb['rspamd_greylisting_txt'] = 'Habilitar greylist';
+$wb['rspamd_spam_greylisting_level_txt'] = 'Nível da greylist';
+$wb['rspamd_spam_tag_level_txt'] = 'Nível da marcação anti-spam';
+$wb['rspamd_spam_tag_method_txt'] = 'Método da marcação anti-spam';
+$wb['rspamd_spam_kill_level_txt'] = 'Nível para rejeição de spam';
+$wb['btn_save_txt'] = 'Salvar';
+$wb['btn_cancel_txt'] = 'Cancelar';
+
+$wb['amavis_settings_txt'] = 'Configurações';
+$wb['amavis_taglevel_txt'] = 'Nível de marcação';
+$wb['amavis_quarantine_txt'] = 'Quarentena';
+$wb['amavis_other_txt'] = 'Outro';
+$wb['add_header_txt'] = 'Adicionar cabeçalho';
+$wb['rewrite_subject_txt'] = 'Reescrever assunto';
diff --git a/interface/web/mail/lib/lang/br_spamfilter_policy_list.lng b/interface/web/mail/lib/lang/br_spamfilter_policy_list.lng
index 38d91f16d8..269862fe99 100644
--- a/interface/web/mail/lib/lang/br_spamfilter_policy_list.lng
+++ b/interface/web/mail/lib/lang/br_spamfilter_policy_list.lng
@@ -1,9 +1,9 @@
 <?php
-$wb['list_head_txt'] = 'Políticas anti-spam';
+$wb['list_head_txt'] = 'Política anti-spam';
 $wb['policy_name_txt'] = 'Nome';
-$wb['virus_lover_txt'] = 'Permitir vírus';
-$wb['spam_lover_txt'] = 'Permitir spam';
-$wb['banned_files_lover_txt'] = 'Permitir arquivos banidos';
-$wb['bad_header_lover_txt'] = 'Permitir cabeçalho inválido';
+$wb['virus_lover_txt'] = 'Receber vírus';
+$wb['spam_lover_txt'] = 'Receber spam';
+$wb['banned_files_lover_txt'] = 'Receber arquivos banidos';
+$wb['bad_header_lover_txt'] = 'Receber cabeçalho inválido';
 $wb['add_new_record_txt'] = 'Adicionar registro';
 ?>
diff --git a/interface/web/mail/lib/lang/br_spamfilter_users.lng b/interface/web/mail/lib/lang/br_spamfilter_users.lng
index 2c33cd3552..3b34351adb 100644
--- a/interface/web/mail/lib/lang/br_spamfilter_users.lng
+++ b/interface/web/mail/lib/lang/br_spamfilter_users.lng
@@ -2,7 +2,7 @@
 $wb['server_id_txt'] = 'Servidor';
 $wb['priority_txt'] = 'Prioridade';
 $wb['policy_id_txt'] = 'Política';
-$wb['email_txt'] = 'e-mail (padrão)';
+$wb['email_txt'] = 'e-Mail (padrão)';
 $wb['fullname_txt'] = 'Nome';
 $wb['local_txt'] = 'Local';
 $wb['email_error_notempty'] = 'Endereço de e-mail está em branco.';
diff --git a/interface/web/mail/lib/lang/br_spamfilter_users_list.lng b/interface/web/mail/lib/lang/br_spamfilter_users_list.lng
index cf1f4900f9..fe3feb25cd 100644
--- a/interface/web/mail/lib/lang/br_spamfilter_users_list.lng
+++ b/interface/web/mail/lib/lang/br_spamfilter_users_list.lng
@@ -1,10 +1,10 @@
 <?php
-$wb['list_head_txt'] = 'Usuários de filtro anti-spam';
+$wb['list_head_txt'] = 'Filtros anti-spam para contas de e-mail';
 $wb['local_txt'] = 'Local';
 $wb['server_id_txt'] = 'Servidor';
 $wb['priority_txt'] = 'Prioridade';
-$wb['policy_id_txt'] = 'Políticas';
+$wb['policy_id_txt'] = 'Política';
 $wb['fullname_txt'] = 'Nome';
-$wb['email_txt'] = 'e-mail';
-$wb['add_new_record_txt'] = 'Adicionar novo usuário';
+$wb['email_txt'] = 'e-Mail';
+$wb['add_new_record_txt'] = 'Adicionar novo filtro';
 ?>
diff --git a/interface/web/mail/lib/lang/br_spamfilter_whitelist.lng b/interface/web/mail/lib/lang/br_spamfilter_whitelist.lng
index 0161d716ae..bcb9491cf0 100644
--- a/interface/web/mail/lib/lang/br_spamfilter_whitelist.lng
+++ b/interface/web/mail/lib/lang/br_spamfilter_whitelist.lng
@@ -1,8 +1,8 @@
 <?php
 $wb['server_id_txt'] = 'Servidor';
-$wb['wb_txt'] = 'wb';
-$wb['rid_txt'] = 'Usuário';
-$wb['email_txt'] = 'e-mail';
+$wb['wb_txt'] = 'Lista branca/negra';
+$wb['rid_txt'] = 'Usário';
+$wb['email_txt'] = 'e-Mail';
 $wb['priority_txt'] = 'Prioridade';
 $wb['active_txt'] = 'Ativo';
 $wb['limit_spamfilter_wblist_txt'] = 'O limite de registros na lista branca/negra para esta conta foi alcançado.';
diff --git a/interface/web/mail/lib/lang/br_spamfilter_whitelist_list.lng b/interface/web/mail/lib/lang/br_spamfilter_whitelist_list.lng
index 8ef65dbfa2..e6d48491ee 100644
--- a/interface/web/mail/lib/lang/br_spamfilter_whitelist_list.lng
+++ b/interface/web/mail/lib/lang/br_spamfilter_whitelist_list.lng
@@ -1,9 +1,9 @@
 <?php
-$wb['list_head_txt'] = 'Lista branca (anti-spam)';
+$wb['list_head_txt'] = 'Filtros anti-spam - Lista Branca';
 $wb['active_txt'] = 'Ativo';
 $wb['server_id_txt'] = 'Servidor';
 $wb['priority_txt'] = 'Prioridade';
 $wb['rid_txt'] = 'Usuário';
-$wb['email_txt'] = 'e-mail na lista branca';
-$wb['add_new_record_txt'] = 'Adicionar novo e-mail';
+$wb['email_txt'] = 'Lista Branca de e-mails';
+$wb['add_new_record_txt'] = 'Adicionar registro';
 ?>
diff --git a/interface/web/mail/lib/lang/br_user_quota_stats_list.lng b/interface/web/mail/lib/lang/br_user_quota_stats_list.lng
index a756443205..ee156b23a7 100755
--- a/interface/web/mail/lib/lang/br_user_quota_stats_list.lng
+++ b/interface/web/mail/lib/lang/br_user_quota_stats_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['list_head_txt'] = 'Cota para contas de e-mail';
+$wb['list_head_txt'] = 'Cota da conta de e-mail';
 $wb['quota_txt'] = 'Cota';
 $wb['name_txt'] = 'Nome';
 $wb['email_txt'] = 'Endereço de e-mail';
 $wb['used_txt'] = 'Espaço utilizado';
-$wb['percentage_txt'] = 'Percentual utilizado %';
+$wb['percentage_txt'] = 'Utilizado %';
 ?>
diff --git a/interface/web/mail/lib/lang/br_xmpp_domain.lng b/interface/web/mail/lib/lang/br_xmpp_domain.lng
index 1a9a42f0c1..1fd96ba132 100644
--- a/interface/web/mail/lib/lang/br_xmpp_domain.lng
+++ b/interface/web/mail/lib/lang/br_xmpp_domain.lng
@@ -5,31 +5,31 @@ $wb['domain_txt'] = 'Domínio';
 $wb['type_txt'] = 'Tipo';
 $wb['active_txt'] = 'Ativo';
 $wb['client_txt'] = 'Cliente';
-$wb['management_method_txt'] = 'Gerenciamento de contas de usuários';
+$wb['management_method_txt'] = 'Gerenciar contas de usuário';
 $wb['public_registration_txt'] = 'Habilitar registro público';
 $wb['registration_url_txt'] = 'URL de registro';
 $wb['registration_message_txt'] = 'Mensagem de registro';
-$wb['domain_admins_txt'] = 'Administradores de domínio (JIDs)';
-$wb['use_pubsub_txt'] = 'Habilitar Pubsub';
-$wb['use_proxy_txt'] = 'Habilitar proxy Bytestream';
+$wb['domain_admins_txt'] = 'Administradores de domínios (JIDs)';
+$wb['use_pubsub_txt'] = 'Habilitar pubsub';
+$wb['use_proxy_txt'] = 'Habilitar proxy bytestream';
 $wb['use_anon_host_txt'] = 'Habilitar host anônimo';
-$wb['use_vjud_txt'] = 'Habilitar diretório de usuário VJUD';
-$wb['vjud_opt_mode_txt'] = 'Modo de operação VJUD';
-$wb['use_muc_host_txt'] = 'Habilitar chats multiusuários';
-$wb['muc_name_txt'] = 'Nome na descoberta do MUC';
-$wb['muc_restrict_room_creation_txt'] = 'Permissão para criar salas de chat';
-$wb['muc_admins_txt'] = 'Administradores de MUC (JIDs)';
-$wb['use_pastebin_txt'] = 'Habilitar Pastebin';
-$wb['pastebin_expire_after_txt'] = 'Colagens expiram após (horas)';
-$wb['pastebin_trigger_txt'] = 'Gatilho Pastebin';
-$wb['use_http_archive_txt'] = 'Habilitar arquivo HTTP em salas de chat';
-$wb['http_archive_show_join_txt'] = 'Exibir mensagens de participação em arquivos';
-$wb['http_archive_show_status_txt'] = 'Exibir estado de mudança em arquivos';
-$wb['use_status_host_txt'] = 'Habilitar estado XML do host';
-$wb['cant_change_domainname_txt'] = 'O nome domínio XMPP existente não pode ser modificado.';
-$wb['about_registration_url_txt'] = 'Link para o página de registro.';
-$wb['about_registration_message_txt'] = 'Descrição sobre seu processo de registro de conta.';
-$wb['no_corresponding_maildomain_txt'] = 'O domínio de e-mail correspondente para gerenciamento de usuário não foi encontrado. Por favor crie o domínio de e-mail primeiro.';
+$wb['use_vjud_txt'] = 'Habilitar diretório de usuário (VJUD)';
+$wb['vjud_opt_mode_txt'] = 'Modo opcional do VJUD';
+$wb['use_muc_host_txt'] = 'Habilitar chat multiusuário (MUC)';
+$wb['muc_name_txt'] = 'Nome no serviço de descoberta do MUC';
+$wb['muc_restrict_room_creation_txt'] = 'Permissão para adicionar salas de chat';
+$wb['muc_admins_txt'] = 'Administradores MUC (JIDs)';
+$wb['use_pastebin_txt'] = 'Habilitar pastebin';
+$wb['pastebin_expire_after_txt'] = 'Patas expira após (horas)';
+$wb['pastebin_trigger_txt'] = 'Desencadear pastebin';
+$wb['use_http_archive_txt'] = 'Habilitar arquivos HTTP em salas de chat';
+$wb['http_archive_show_join_txt'] = 'Exibir mensagens de ingresso no arquivo';
+$wb['http_archive_show_status_txt'] = 'Exibir estado da mudanças no arquivo';
+$wb['use_status_host_txt'] = 'Habilitar estado do XML do host';
+$wb['cant_change_domainname_txt'] = 'O nome existente do domínio xmpp não pode ser alterado.';
+$wb['about_registration_url_txt'] = 'Ligar ao seu formulário de registro.';
+$wb['about_registration_message_txt'] = 'Descrição sobre o processo de registro da sua conta.';
+$wb['no_corresponding_maildomain_txt'] = 'O domínio de e-mail correspondente para gerenciamento de usuários não foi encontrado. Por favor, crie um domínio de e-mail primeiro.';
 $wb['ssl_state_txt'] = 'Estado';
 $wb['ssl_locality_txt'] = 'Cidade';
 $wb['ssl_organisation_txt'] = 'Empresa';
@@ -38,25 +38,25 @@ $wb['ssl_country_txt'] = 'País';
 $wb['ssl_key_txt'] = 'Chave';
 $wb['ssl_request_txt'] = 'Requisição';
 $wb['ssl_cert_txt'] = 'Certificado';
-$wb['ssl_bundle_txt'] = 'Pacote';
+$wb['ssl_bundle_txt'] = 'Agrupar';
 $wb['ssl_action_txt'] = 'Ação';
 $wb['ssl_email_txt'] = 'Endereço de e-mail';
 $wb['ssl_txt'] = 'SSL';
-$wb['error_ssl_state_empty'] = 'Campo \'Estado\' está em branco.';
-$wb['error_ssl_locality_empty'] = 'Campo \'Cidade\' está em branco.';
-$wb['error_ssl_organisation_empty'] = 'Campo \'Empresa\' está em branco.';
-$wb['error_ssl_organisation_unit_empty'] = 'Campo \'Departamento\' está em branco.';
-$wb['error_ssl_country_empty'] = 'Campo \'País\' está em branco.';
-$wb['error_ssl_cert_empty'] = 'Campo \'Certificado\' está em branco.';
-$wb['ssl_state_error_regex'] = 'Campo \'Estado\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.';
-$wb['ssl_locality_error_regex'] = 'Campo \'Cidade\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.';
-$wb['ssl_organisation_error_regex'] = 'Campo \'Empresa\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.';
-$wb['ssl_organistaion_unit_error_regex'] = 'Campo \'Departamento\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.';
-$wb['ssl_country_error_regex'] = 'Campo \'País\' é inválido. São caracteres válidos: \'A-Z\'.';
+$wb['error_ssl_state_empty'] = 'O campo "Estado" está em branco.';
+$wb['error_ssl_locality_empty'] = 'O campo "Cidade" está em branco.';
+$wb['error_ssl_organisation_empty'] = 'O campo "Empresa" está em branco.';
+$wb['error_ssl_organisation_unit_empty'] = 'O campo "Departamento" está em branco.';
+$wb['error_ssl_country_empty'] = 'O campo "País" está em branco.';
+$wb['error_ssl_cert_empty'] = 'O campo "Certificado" está em branco.';
+$wb['ssl_state_error_regex'] = 'Campo "Estado" é inválido. São caracteres válidos: "a-z", "0-9" e ".,-_".';
+$wb['ssl_locality_error_regex'] = 'Campo "Cidade" é inválido. São caracteres válidos: "a-z", "0-9" e ".,-_".';
+$wb['ssl_organisation_error_regex'] = 'Campo "Empresa" é inválido. São caracteres válidos: "a-z", "0-9" e ".,-_".';
+$wb['ssl_organistaion_unit_error_regex'] = 'Campo "Departamento" é inválido. São caracteres válidos: "a-z", "0-9" e ".,-_".';
+$wb['ssl_country_error_regex'] = 'Campo "País" é inválido. São caracteres válidos: "A-Z".';
 $wb['none_txt'] = 'Nenhum';
-$wb['save_certificate_txt'] = 'Salvar certificado';
-$wb['create_certificate_txt'] = 'Adicionar certificado';
-$wb['delete_certificate_txt'] = 'Remover certificado';
-$wb['ssl_error_isemail'] = 'Por favor, insira um e-mail válido para gerar o certificado SSL.';
+$wb['save_certificate_txt'] = 'Salvar Certificado';
+$wb['create_certificate_txt'] = 'Adicionar Certificado';
+$wb['delete_certificate_txt'] = 'Remover Certificado';
+$wb['ssl_error_isemail'] = 'Por favor, insira um endereço de e-mail válido para geração do certificado SSL.';
 $wb['limit_xmppdomain_txt'] = 'O limite de domínios xmpp para esta conta foi alcançado.';
 ?>
diff --git a/interface/web/mail/lib/lang/br_xmpp_domain_list.lng b/interface/web/mail/lib/lang/br_xmpp_domain_list.lng
index ab8f3a9087..e0ff3a6fc6 100644
--- a/interface/web/mail/lib/lang/br_xmpp_domain_list.lng
+++ b/interface/web/mail/lib/lang/br_xmpp_domain_list.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['list_head_txt'] = 'Domínio XMPP';
+$wb['list_head_txt'] = 'Domínios xmpp';
 $wb['server_id_txt'] = 'Servidor';
 $wb['domain_txt'] = 'Domínio';
 $wb['add_new_record_txt'] = 'Adicionar novo domínio';
diff --git a/interface/web/mail/lib/lang/br_xmpp_user.lng b/interface/web/mail/lib/lang/br_xmpp_user.lng
index 8f2306814f..5e7628dab2 100644
--- a/interface/web/mail/lib/lang/br_xmpp_user.lng
+++ b/interface/web/mail/lib/lang/br_xmpp_user.lng
@@ -1,15 +1,15 @@
 <?php
-$wb['list_head_txt'] = 'Usuários XMPP';
+$wb['list_head_txt'] = 'Contas de usuários xmpp';
 $wb['jid_txt'] = 'ID do Jabber';
 $wb['active_txt'] = 'Ativo';
 $wb['cryptpwd_txt'] = 'Senha';
 $wb['password_strength_txt'] = 'Dificuldade da senha';
 $wb['error_no_pwd'] = 'Senha está em branco.';
 $wb['password_txt'] = 'Senha';
-$wb['generate_password_txt'] = 'Gerar senha';
-$wb['repeat_password_txt'] = 'Repetir senha';
-$wb['password_mismatch_txt'] = 'A senhas não coincidem.';
-$wb['password_match_txt'] = 'A senhas coincidem.';
+$wb['generate_password_txt'] = 'Gerar Senha';
+$wb['repeat_password_txt'] = 'Repetir Senha';
+$wb['password_mismatch_txt'] = 'As senhas não coincidem.';
+$wb['password_match_txt'] = 'As senhas coincidem.';
 $wb['no_domain_perm'] = 'Você não tem permissão para este domínio.';
-$wb['limit_xmpp_user_txt'] = 'O limite de usuários xmpp para esta conta foi alcançando.';
+$wb['limit_xmpp_user_txt'] = 'O limite de usuários xmpp para esta conta foi alcançado.';
 ?>
diff --git a/interface/web/mail/lib/lang/br_xmpp_user_list.lng b/interface/web/mail/lib/lang/br_xmpp_user_list.lng
index 13d71a05a8..0aefe11709 100644
--- a/interface/web/mail/lib/lang/br_xmpp_user_list.lng
+++ b/interface/web/mail/lib/lang/br_xmpp_user_list.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['list_head_txt'] = 'Contas de usuário XMPP';
+$wb['list_head_txt'] = 'Contas de usuários xmpp';
 $wb['jid_txt'] = 'ID do Jabber';
 $wb['is_domain_admin_txt'] = 'Administrador do domínio';
 $wb['is_muc_admin_txt'] = 'Administrador MUC';
diff --git a/interface/web/mail/lib/lang/tr.lng b/interface/web/mail/lib/lang/tr.lng
index 4f6f77a38a..52d1868b3e 100644
--- a/interface/web/mail/lib/lang/tr.lng
+++ b/interface/web/mail/lib/lang/tr.lng
@@ -4,47 +4,48 @@ $wb['Email Blacklist'] = 'E-posta Kara Listesi';
 $wb['Blacklist'] = 'Kara Liste';
 $wb['Mail Content Filter'] = 'E-posta İçerik Süzgeci';
 $wb['Filter'] = 'Süzgeç';
-$wb['Mail Domain'] = 'E-posta Alan Adı';
-$wb['Domain'] = 'Alan Adı';
+$wb['Mail Domain'] = 'E-posta Etki Alanı';
+$wb['Domain'] = 'Etki Alanı';
 $wb['Email Catchall'] = 'E-posta Tümünü Alma';
 $wb['Email Forward'] = 'E-posta Yönlendirme';
 $wb['Get Email'] = 'E-posta Al';
-$wb['Spamfilter'] = 'Önemsiz Posta Süzgeci';
+$wb['Spamfilter'] = 'Önemsiz İleti Süzgeci';
 $wb['Email Routing'] = 'E-posta Yöneltme';
 $wb['Email transport'] = 'E-posta Aktarma';
-$wb['Mailbox'] = 'Posta Kutusu';
+$wb['Mailbox'] = 'E-posta Kutusu';
 $wb['Autoresponder'] = 'Otomatik Yanıtlayıcı';
-$wb['Mail Filter'] = 'Posta Süzgeci';
+$wb['Mail Filter'] = 'E-posta Süzgeci';
 $wb['Custom Rules'] = 'Özel Kurallar';
 $wb['Email filter'] = 'E-posta Süzgeci';
 $wb['Email Whitelist'] = 'E-posta Beyaz Listesi';
 $wb['Whitelist'] = 'Beyaz Liste';
-$wb['Spamfilter blacklist'] = 'Önemsiz Posta Süzgeci Kara Listesi';
-$wb['Spamfilter Config'] = 'Önemsiz Posta Süzgeci Ayarları';
+$wb['Spamfilter blacklist'] = 'Önemsiz İleti Süzgeci Kara Listesi';
+$wb['Blacklist'] = 'Kara Liste';
+$wb['Spamfilter Config'] = 'Önemsiz İleti Süzgeci Ayarları';
 $wb['Server'] = 'Sunucu';
-$wb['Spamfilter policy'] = 'Önemsiz Posta Süzgeci Kuralları';
+$wb['Spamfilter policy'] = 'Önemsiz İleti Süzgeci Kuralları';
 $wb['Policy'] = 'Kural';
 $wb['Quarantine'] = 'Karantina';
 $wb['Tag-Level'] = 'Etiket Düzeyi';
 $wb['Other'] = 'DiÄŸer';
-$wb['Spamfilter users'] = 'Önemsiz Posta Süzgeci Kullanıcıları';
+$wb['Spamfilter users'] = 'Önemsiz İleti Süzgeci Kullanıcıları';
 $wb['Users'] = 'Kullanıcılar';
-$wb['Spamfilter Whitelist'] = 'Önemsiz Posta Beyaz Listesi';
+$wb['Spamfilter Whitelist'] = 'Önemsiz İleti Beyaz Listesi';
+$wb['Whitelist'] = 'Beyaz Liste';
 $wb['Email'] = 'E-posta';
 $wb['Email Mailbox'] = 'E-posta Kutusu';
 $wb['Email Accounts'] = 'E-posta Hesapları';
-$wb['User / Domain'] = 'Kullanıcı / Alan Adı';
+$wb['User / Domain'] = 'Kullanıcı / Etki Alanı';
 $wb['Server Settings'] = 'Sunucu Ayarları';
-$wb['Fetchmail'] = 'Posta Alma';
-$wb['Mailbox traffic'] = 'Posta Kutusu TrafiÄŸi';
+$wb['Spamfilter'] = 'Önemsiz İleti Süzgeci';
+$wb['Fetchmail'] = 'E-posta Alma';
+$wb['Mailbox traffic'] = 'E-posta Kutusu TrafiÄŸi';
 $wb['Statistics'] = 'Ä°statistikler';
 $wb['Postfix Whitelist'] = 'Postfix Beyaz Liste';
 $wb['Postfix Blacklist'] = 'Postfix Kara Liste';
 $wb['Content Filter'] = 'İçerik Süzgeci';
 $wb['Global Filters'] = 'Genel Süzgeçler';
-$wb['Domain Alias'] = 'Takma Alan Adı';
+$wb['Domain Alias'] = 'Takma Etki Alanı';
 $wb['Relay Recipients'] = 'Aktarılan Alıcılar';
-$wb['Mailbox quota'] = 'Posta Kutusu Kotası';
-$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")';
-$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)';
+$wb['Mailbox quota'] = 'E-posta Kutusu Kotası';
 ?>
diff --git a/interface/web/mail/lib/lang/tr_backup_stats_list.lng b/interface/web/mail/lib/lang/tr_backup_stats_list.lng
index 79cd6c9a63..125bfc8284 100644
--- a/interface/web/mail/lib/lang/tr_backup_stats_list.lng
+++ b/interface/web/mail/lib/lang/tr_backup_stats_list.lng
@@ -1,9 +1,9 @@
 <?php
-$wb['list_head_txt'] = 'Backup Stats';
-$wb['active_txt'] = 'Active';
-$wb['domain_txt'] = 'Email';
-$wb['backup_count_txt'] = 'Backup count';
-$wb['backup_server_txt'] = 'Server';
-$wb['backup_interval_txt'] = 'Interval / cnt.';
-$wb['backup_size_txt'] = 'Backupsize';
+$wb['list_head_txt'] = 'Yedekleme Ä°statistikleri';
+$wb['active_txt'] = 'Etkin';
+$wb['domain_txt'] = 'E-posta';
+$wb['backup_count_txt'] = 'Yedek Sayısı';
+$wb['backup_server_txt'] = 'Sunucu';
+$wb['backup_interval_txt'] = 'Sıklık / Sayı';
+$wb['backup_size_txt'] = 'Yedek Boyutu';
 ?>
diff --git a/interface/web/mail/lib/lang/tr_mail_alias.lng b/interface/web/mail/lib/lang/tr_mail_alias.lng
index d3fd3f1271..ea440b2e63 100644
--- a/interface/web/mail/lib/lang/tr_mail_alias.lng
+++ b/interface/web/mail/lib/lang/tr_mail_alias.lng
@@ -4,14 +4,14 @@ $wb['destination_txt'] = 'Hedef';
 $wb['active_txt'] = 'Etkin';
 $wb['email_error_isemail'] = 'E-posta adresi geçersiz.';
 $wb['email_error_unique'] = 'Bu e-posta adresi zaten var';
-$wb['no_domain_perm'] = 'Bu alan adı için izniniz yok.';
+$wb['no_domain_perm'] = 'Bu etki alanı için izniniz yok.';
 $wb['destination_error_isemail'] = 'Hedef e-posta adresi geçersiz.';
 $wb['limit_mailalias_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla takma e-posta adresi sayısına ulaştınız.';
-$wb['duplicate_mailbox_txt'] = 'Bu e-posta adresini kullanan bir posta kutusu zaten var';
-$wb['domain_txt'] = 'Alan Adı';
+$wb['duplicate_mailbox_txt'] = 'Bu adresi kullanan bir e-posta kutusu zaten var';
+$wb['domain_txt'] = 'Etki Alanı';
 $wb['duplicate_email_alias_txt'] = 'Bu takma e-posta adresi zaten var.';
 $wb['source_txt'] = 'Takma Ad';
-$wb['send_as_txt'] = 'Send as';
-$wb['send_as_exp'] = 'Allow target to send mail using this alias as origin';
-$wb['greylisting_txt'] = 'Enable greylisting';
+$wb['send_as_txt'] = 'Gönderen';
+$wb['send_as_exp'] = 'Hedef bu adresi kaynak olarak göstererek e-posta gönderebilsin';
+$wb['greylisting_txt'] = 'Gri Liste Kullanılsın';
 ?>
diff --git a/interface/web/mail/lib/lang/tr_mail_aliasdomain.lng b/interface/web/mail/lib/lang/tr_mail_aliasdomain.lng
index d39c6f46a3..f6cd98261b 100644
--- a/interface/web/mail/lib/lang/tr_mail_aliasdomain.lng
+++ b/interface/web/mail/lib/lang/tr_mail_aliasdomain.lng
@@ -2,10 +2,10 @@
 $wb['source_txt'] = 'Kaynak';
 $wb['destination_txt'] = 'Hedef';
 $wb['active_txt'] = 'Etkin';
-$wb['no_domain_perm'] = 'Bu alan adı için izniniz yok.';
-$wb['limit_mailaliasdomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla takma alan adı sayısına ulaştınız.';
-$wb['source_destination_identical_txt'] = 'Kaynak ve Hedef alan adları aynı.';
-$wb['source_error_empty'] = 'Kaynak alan adı boş olamaz.';
-$wb['source_error_unique'] = 'Bu kaynak alan adı zaten var.';
-$wb['source_error_regex'] = 'Kaynak alan adı geçersiz.';
+$wb['no_domain_perm'] = 'Bu etki alanı için izniniz yok.';
+$wb['limit_mailaliasdomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla takma etki alanı sayısına ulaştınız.';
+$wb['source_destination_identical_txt'] = 'Kaynak ve Hedef etki alanları aynı.';
+$wb['source_error_empty'] = 'Kaynak etki alanı boş olamaz.';
+$wb['source_error_unique'] = 'Bu kaynak etki alanı zaten var.';
+$wb['source_error_regex'] = 'Kaynak etki alanı geçersiz.';
 ?>
diff --git a/interface/web/mail/lib/lang/tr_mail_aliasdomain_list.lng b/interface/web/mail/lib/lang/tr_mail_aliasdomain_list.lng
index a6d3dfc3b9..7cbc3aef9e 100644
--- a/interface/web/mail/lib/lang/tr_mail_aliasdomain_list.lng
+++ b/interface/web/mail/lib/lang/tr_mail_aliasdomain_list.lng
@@ -1,7 +1,8 @@
 <?php
-$wb['list_head_txt'] = 'Takma Alan Adı';
+$wb['list_head_txt'] = 'Takma Etki Alanı';
 $wb['active_txt'] = 'Etkin';
 $wb['source_txt'] = 'Kaynak';
 $wb['destination_txt'] = 'Hedef';
-$wb['add_new_record_txt'] = 'Takma Alan Adı Ekle';
+$wb['source_txt'] = 'Kaynak';
+$wb['add_new_record_txt'] = 'Takma Etki Alanı Ekle';
 ?>
diff --git a/interface/web/mail/lib/lang/tr_mail_backup_list.lng b/interface/web/mail/lib/lang/tr_mail_backup_list.lng
index 73286a0737..1a5ae7227b 100644
--- a/interface/web/mail/lib/lang/tr_mail_backup_list.lng
+++ b/interface/web/mail/lib/lang/tr_mail_backup_list.lng
@@ -1,16 +1,16 @@
 <?php
-$wb['list_head_txt'] = 'Existing backups';
-$wb['date_txt'] = 'Date';
-$wb['backup_type_txt'] = 'Type';
-$wb['filename_txt'] = 'Backup file';
-$wb['restore_backup_txt'] = 'Restore';
-$wb['restore_info_txt'] = 'Restore of the backup has been started. This action takes several minutes to be completed.';
-$wb['restore_confirm_txt'] = 'Restoring may overwrite existing files in your mailbox. Do you really want to restore this backup?';
-$wb['download_pending_txt'] = 'There is already a pending backup download job.';
-$wb['restore_pending_txt'] = 'There is already a pending backup restore job.';
-$wb['delete_backup_txt'] = 'Delete Backup';
-$wb['delete_info_txt'] = 'Delete of the backup has been started. This action takes several minutes to be completed.';
-$wb['delete_confirm_txt'] = 'Really delete this backup?';
-$wb['delete_pending_txt'] = 'There is already a pending backup delete job.';
-$wb['filesize_txt'] = 'Filesize';
+$wb['list_head_txt'] = 'Var Olan Yedekler';
+$wb['date_txt'] = 'Tarih';
+$wb['backup_type_txt'] = 'Tür';
+$wb['filename_txt'] = 'Yedek Dosyası';
+$wb['restore_backup_txt'] = 'Geri Yükle';
+$wb['restore_info_txt'] = 'Yedekten geri yükleme işlemi başlatıldı. Bu işlemin tamamlanması bir kaç dakika sürebilir.';
+$wb['restore_confirm_txt'] = 'Geri yükleme işlemi sırasında e-posta kutunuzda var olan iletilerin üzerine yazılabilir. Bu yedeği geri yüklemek istediğinize emin misiniz?';
+$wb['download_pending_txt'] = 'Zaten bekleyen bir yedekleme indirme iÅŸlemi var.';
+$wb['restore_pending_txt'] = 'Zaten bekleyen bir yedek geri yükleme işlemi var.';
+$wb['delete_backup_txt'] = 'YedeÄŸi Sil';
+$wb['delete_info_txt'] = 'Yedeği silme işlemi başlatıldı. Bu işlemin tamamlanması bir kaç dakika sürebilir.';
+$wb['delete_confirm_txt'] = 'Bu yedeÄŸi silmek istediÄŸinize emin misiniz?';
+$wb['delete_pending_txt'] = 'Zaten bekleyen bir yedek silme iÅŸlemi var.';
+$wb['filesize_txt'] = 'Dosya Boyutu';
 ?>
diff --git a/interface/web/mail/lib/lang/tr_mail_blacklist.lng b/interface/web/mail/lib/lang/tr_mail_blacklist.lng
index ecdca0b1a5..381a11fa98 100644
--- a/interface/web/mail/lib/lang/tr_mail_blacklist.lng
+++ b/interface/web/mail/lib/lang/tr_mail_blacklist.lng
@@ -4,6 +4,6 @@ $wb['source_txt'] = 'Kara Listedeki Adres';
 $wb['recipient_txt'] = 'Alıcı';
 $wb['active_txt'] = 'Etkin';
 $wb['source_error_notempty'] = 'Adres boÅŸ olamaz.';
-$wb['type_txt'] = 'Tip';
+$wb['type_txt'] = 'Tür';
 $wb['limit_mailfilter_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla e-posta süzgeci sayısına ulaştınız.';
 ?>
diff --git a/interface/web/mail/lib/lang/tr_mail_blacklist_list.lng b/interface/web/mail/lib/lang/tr_mail_blacklist_list.lng
index b9bf6ff92c..9446569f4f 100644
--- a/interface/web/mail/lib/lang/tr_mail_blacklist_list.lng
+++ b/interface/web/mail/lib/lang/tr_mail_blacklist_list.lng
@@ -3,7 +3,7 @@ $wb['list_head_txt'] = 'E-posta Kara Listesi';
 $wb['active_txt'] = 'Etkin';
 $wb['server_id_txt'] = 'Sunucu';
 $wb['source_txt'] = 'Kara Listedeki Adres';
-$wb['type_txt'] = 'Tip';
+$wb['type_txt'] = 'Tür';
 $wb['recipient_txt'] = 'Alıcı';
 $wb['add_new_record_txt'] = 'Kara Liste Kaydı Ekle';
 $wb['access_txt'] = 'EriÅŸim';
diff --git a/interface/web/mail/lib/lang/tr_mail_content_filter.lng b/interface/web/mail/lib/lang/tr_mail_content_filter.lng
index f13b01a680..df2d4d5c43 100644
--- a/interface/web/mail/lib/lang/tr_mail_content_filter.lng
+++ b/interface/web/mail/lib/lang/tr_mail_content_filter.lng
@@ -1,9 +1,9 @@
 <?php
 $wb['server_id_txt'] = 'Sunucu';
 $wb['type_txt'] = 'Süzgeç';
-$wb['pattern_txt'] = 'Kurallı İfade Deseni';
+$wb['pattern_txt'] = 'Kurallı İfade Örüntüsü';
 $wb['data_txt'] = 'Veri';
 $wb['action_txt'] = 'Ä°ÅŸlem';
 $wb['active_txt'] = 'Etkin';
-$wb['pattern_error_empty'] = 'Desen boÅŸ olamaz.';
+$wb['pattern_error_empty'] = 'Örüntü boş olamaz.';
 ?>
diff --git a/interface/web/mail/lib/lang/tr_mail_domain.lng b/interface/web/mail/lib/lang/tr_mail_domain.lng
index 4ee4aa50fa..3e7d9cc412 100644
--- a/interface/web/mail/lib/lang/tr_mail_domain.lng
+++ b/interface/web/mail/lib/lang/tr_mail_domain.lng
@@ -1,23 +1,23 @@
 <?php
 $wb['server_id_txt'] = 'Sunucu';
-$wb['domain_txt'] = 'Alan Adı';
-$wb['type_txt'] = 'Tip';
+$wb['domain_txt'] = 'Etki Alanı';
+$wb['type_txt'] = 'Tür';
 $wb['active_txt'] = 'Etkin';
-$wb['domain_error_empty'] = 'Alan adı boş olamaz.';
-$wb['domain_error_unique'] = 'Bu alan adı zaten var.';
-$wb['domain_error_regex'] = 'Alan adı geçersiz.';
+$wb['domain_error_empty'] = 'Etki alanı boş olamaz.';
+$wb['domain_error_unique'] = 'Bu etki alanı zaten var.';
+$wb['domain_error_regex'] = 'Etki alanı geçersiz.';
 $wb['client_txt'] = 'Müşteri';
-$wb['limit_maildomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla alan adı sayısına ulaştınız.';
-$wb['policy_txt'] = 'Önemsiz Posta Süzgeci';
+$wb['limit_maildomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla etki alanı sayısına ulaştınız.';
+$wb['policy_txt'] = 'Önemsiz İleti Süzgeci';
 $wb['no_policy'] = '- devre dışı -';
-$wb['dkim_txt'] = 'enable DKIM';
-$wb['dkim_private_txt'] = 'DKIM Private-key';
-$wb['dkim_public_txt'] = 'DKIM Public-key\nfor information only';
-$wb['dkim_generate_txt'] = 'Generate DKIM Private-key';
-$wb['dkim_dns_txt'] = 'DNS-Record';
-$wb['dkim_private_key_error'] = 'Invalid DKIM-Private key';
-$wb['dkim_settings_txt'] = 'DomainKeys Identified Mail (DKIM)';
-$wb['error_not_allowed_server_id'] = 'Chosen server is not allowed for this account.';
-$wb['dkim_selector_txt'] = 'DKIM-Selector';
-$wb['dkim_selector_error'] = 'Invalid DKIM-Selector. Use only lower-case alphanumeric characters (a-z or 0-9) up to 63 chars';
+$wb['dkim_txt'] = 'DKIM Kullanılsın';
+$wb['dkim_private_txt'] = 'Özel DKIM Anahtarı';
+$wb['dkim_public_txt'] = 'Herkese açık DKIM anahtarı' . "\n" . 'yalnız bilgilendirme için';
+$wb['dkim_generate_txt'] = 'Özel DKIM Anahtarı Üret';
+$wb['dkim_dns_txt'] = 'DNS Kaydı';
+$wb['dkim_private_key_error'] = 'Özel DKIM Anahtarı Geçersiz';
+$wb['dkim_settings_txt'] = 'DomainKeys Tanımlı E-posta (DKIM)';
+$wb['error_not_allowed_server_id'] = 'Seçilmiş sunucuda bu hesap kullanılamaz.';
+$wb['dkim_selector_txt'] = 'DKIM Seçici';
+$wb['dkim_selector_error'] = 'DKIM seçici geçersiz. En fazla 63 karakter uzunluğunda, yalnız küçük İngilizce harf ve rakamları kullanın (a-z ya da 0-9)';
 ?>
diff --git a/interface/web/mail/lib/lang/tr_mail_domain_admin_list.lng b/interface/web/mail/lib/lang/tr_mail_domain_admin_list.lng
index 7d56618eef..f6937ab382 100644
--- a/interface/web/mail/lib/lang/tr_mail_domain_admin_list.lng
+++ b/interface/web/mail/lib/lang/tr_mail_domain_admin_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['list_head_txt'] = 'E-posta Alan Adı';
+$wb['list_head_txt'] = 'E-posta Etki Alanı';
 $wb['server_id_txt'] = 'Sunucu';
-$wb['domain_txt'] = 'Alan Adı';
-$wb['add_new_record_txt'] = 'Alan Adı Ekle';
+$wb['domain_txt'] = 'Etki Alanı';
+$wb['add_new_record_txt'] = 'Etki Alanı Ekle';
 $wb['active_txt'] = 'Etkin';
 $wb['sys_groupid_txt'] = 'Müşteri';
 ?>
diff --git a/interface/web/mail/lib/lang/tr_mail_domain_catchall.lng b/interface/web/mail/lib/lang/tr_mail_domain_catchall.lng
index c5f8725a72..bcdf629846 100644
--- a/interface/web/mail/lib/lang/tr_mail_domain_catchall.lng
+++ b/interface/web/mail/lib/lang/tr_mail_domain_catchall.lng
@@ -1,12 +1,12 @@
 <?php
-$wb['domain_txt'] = 'Alan Adı';
+$wb['domain_txt'] = 'Etki Alanı';
 $wb['destination_txt'] = 'Hedef';
 $wb['active_txt'] = 'Etkin';
-$wb['domain_error_unique'] = 'Bu alan adı için zaten bir tümünü al kayıdı var.';
-$wb['no_domain_perm'] = 'Bu alan adı için izniniz yok.';
-$wb['domain_error_regex'] = 'Alan adı geçersiz ya da geçersiz karakterler içeriyor.';
+$wb['domain_error_unique'] = 'Bu etki alanı için zaten bir tümünü al kayıdı var.';
+$wb['no_domain_perm'] = 'Bu etki alanı için izniniz yok.';
+$wb['domain_error_regex'] = 'Etki alanı geçersiz ya da geçersiz karakterler içeriyor.';
 $wb['limit_mailcatchall_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla tümünü al hesabı sayısına ulaştınız.';
+$wb['domain_txt'] = 'Etki Alanı';
 $wb['source_txt'] = 'Kaynak';
 $wb['destination_error_isemail'] = 'Hedef e-posta adresi geçersiz.';
-$wb['greylisting_txt'] = 'Enable greylisting';
 ?>
diff --git a/interface/web/mail/lib/lang/tr_mail_domain_catchall_list.lng b/interface/web/mail/lib/lang/tr_mail_domain_catchall_list.lng
index 596e2dbdae..45a59fe831 100644
--- a/interface/web/mail/lib/lang/tr_mail_domain_catchall_list.lng
+++ b/interface/web/mail/lib/lang/tr_mail_domain_catchall_list.lng
@@ -2,8 +2,8 @@
 $wb['list_head_txt'] = 'E-posta Tümünü Al Hesabı';
 $wb['active_txt'] = 'Etkin';
 $wb['source_txt'] = 'Kaynak';
-$wb['destination_txt'] = 'Hedef e-posta adresi';
+$wb['destination_txt'] = 'Hedef E-posta Adresi';
 $wb['server_id_txt'] = 'Sunucu';
-$wb['domain_txt'] = 'Alan Adı';
+$wb['domain_txt'] = 'Etki Alanı';
 $wb['add_new_record_txt'] = 'Tümünü Al Hesabı Ekle';
 ?>
diff --git a/interface/web/mail/lib/lang/tr_mail_domain_list.lng b/interface/web/mail/lib/lang/tr_mail_domain_list.lng
index 7a4a1f2b64..06a44455eb 100644
--- a/interface/web/mail/lib/lang/tr_mail_domain_list.lng
+++ b/interface/web/mail/lib/lang/tr_mail_domain_list.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['list_head_txt'] = 'E-posta Alan Adı';
+$wb['list_head_txt'] = 'E-posta Etki Alanı';
 $wb['server_id_txt'] = 'Sunucu';
-$wb['domain_txt'] = 'Alan Adı';
-$wb['add_new_record_txt'] = 'Alan Adı Ekle';
+$wb['domain_txt'] = 'Etki Alanı';
+$wb['add_new_record_txt'] = 'Etki Alanı Ekle';
 $wb['active_txt'] = 'Etkin';
 ?>
diff --git a/interface/web/mail/lib/lang/tr_mail_forward.lng b/interface/web/mail/lib/lang/tr_mail_forward.lng
index f96a0e4c07..2352cd945f 100644
--- a/interface/web/mail/lib/lang/tr_mail_forward.lng
+++ b/interface/web/mail/lib/lang/tr_mail_forward.lng
@@ -3,11 +3,11 @@ $wb['email_txt'] = 'E-posta';
 $wb['destination_txt'] = 'Hedef E-posta';
 $wb['active_txt'] = 'Etkin';
 $wb['limit_mailforward_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla e-posta yönlendirme sayısına ulaştınız.';
-$wb['duplicate_mailbox_txt'] = 'Bu e-posta adresini kullanan bir posta kutusu zaten var';
-$wb['domain_txt'] = 'Alan Adı';
+$wb['duplicate_mailbox_txt'] = 'Bu e-posta adresini kullanan bir e-posta kutusu zaten var';
+$wb['domain_txt'] = 'Etki Alanı';
 $wb['source_txt'] = 'Kaynak E-posta';
-$wb['email_error_isemail'] = 'Please enter a valid email address.';
-$wb['send_as_txt'] = 'Send as';
-$wb['send_as_exp'] = 'Allow target to send mail using this address as origin (if target is internal)';
-$wb['greylisting_txt'] = 'Enable greylisting';
+$wb['email_error_isemail'] = 'Lütfen geçerli bir e-posta adresi yazın.';
+$wb['send_as_txt'] = 'Gönderen';
+$wb['send_as_exp'] = 'Hedef bu adresi kaynak olarak göstererek e-posta gönderebilsin (hedef iç kullanıcı ise)';
+$wb['greylisting_txt'] = 'Gri Liste Kullanılsın';
 ?>
diff --git a/interface/web/mail/lib/lang/tr_mail_get.lng b/interface/web/mail/lib/lang/tr_mail_get.lng
index b82b6c8c9a..2ad3434265 100644
--- a/interface/web/mail/lib/lang/tr_mail_get.lng
+++ b/interface/web/mail/lib/lang/tr_mail_get.lng
@@ -1,6 +1,6 @@
 <?php
 $wb['server_id_txt'] = 'Sunucu';
-$wb['type_txt'] = 'Tip';
+$wb['type_txt'] = 'Tür';
 $wb['source_server_txt'] = 'POP3/IMAP Sunucusu';
 $wb['source_username_txt'] = 'Kullanıcı Adı';
 $wb['source_password_txt'] = 'Parola';
@@ -9,11 +9,11 @@ $wb['source_delete_note_txt'] = 'Lütfen bu seçeneği etkinleştirmeden önce,
 $wb['source_read_all_txt'] = 'Tüm e-postalar alınsın (okunmuşlar dahil)';
 $wb['destination_txt'] = 'Hedef';
 $wb['active_txt'] = 'Etkin';
-$wb['limit_fetchmail_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla posta alma kaydı sayısına ulaştınız.';
+$wb['limit_fetchmail_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla e-posta alma kaydı sayısına ulaştınız.';
 $wb['source_server_error_isempty'] = 'Sunucu boÅŸ olamaz.';
 $wb['source_username_error_isempty'] = 'Kullanıcı adı boş olamaz.';
 $wb['source_password_error_isempty'] = 'Parola boÅŸ olamaz.';
 $wb['destination_error_isemail'] = 'Hedef seçilmemiş.';
-$wb['source_server_error_regex'] = 'POP3/IMAP Sunucu alan adı geçersiz.';
-$wb['error_delete_read_all_combination'] = 'Seçenek kombinasyonu geçersiz. You can not use \\"E-postalar alındıktan sonra silinsin\\" = Hayır iken \\"Tüm e-postalar alınsın\\" = Evet olamaz';
+$wb['source_server_error_regex'] = 'POP3/IMAP Sunucu etki alanı geçersiz.';
+$wb['error_delete_read_all_combination'] = 'Seçenek kombinasyonu geçersiz. "E-postalar Alındıktan Sonra Silinsin" seçeneği devre dışı iken "Tüm E-postalar Alınsın" seçeneği etkin olamaz';
 ?>
diff --git a/interface/web/mail/lib/lang/tr_mail_mailinglist.lng b/interface/web/mail/lib/lang/tr_mail_mailinglist.lng
index 17bfab31dc..4bd52db75e 100644
--- a/interface/web/mail/lib/lang/tr_mail_mailinglist.lng
+++ b/interface/web/mail/lib/lang/tr_mail_mailinglist.lng
@@ -1,19 +1,19 @@
 <?php
-$wb['mailinglist_txt'] = 'Posta Listesi';
+$wb['mailinglist_txt'] = 'E-posta Listesi';
 $wb['limit_mailmailinglist_txt'] = 'Sınıra ulaşıldı';
-$wb['domain_error_empty'] = 'Alan adı boş olamaz.';
+$wb['domain_error_empty'] = 'Etki alanı boş olamaz.';
 $wb['listname_error_empty'] = 'Liste adı boş olamaz.';
-$wb['domain_error_regex'] = 'Alan adı geçersiz.';
+$wb['domain_error_regex'] = 'Etki alanı geçersiz.';
 $wb['email_in_use_txt'] = 'E-posta kullanımda';
-$wb['no_domain_perm'] = 'Bu alan adı için izniniz yok.';
-$wb['password_strength_txt'] = 'Parola Güçlüğü';
+$wb['no_domain_perm'] = 'Bu etki alanı için izniniz yok.';
+$wb['password_strength_txt'] = 'Parola ZorluÄŸu';
 $wb['server_id_txt'] = 'Sunucu';
-$wb['domain_txt'] = 'Alan Adı';
+$wb['domain_txt'] = 'Etki Alanı';
 $wb['listname_txt'] = 'Liste Adı';
 $wb['client_txt'] = 'Müşteri';
 $wb['email_txt'] = 'E-posta';
 $wb['password_txt'] = 'Parola';
-$wb['generate_password_txt'] = 'Parola OluÅŸtur';
+$wb['generate_password_txt'] = 'Parola Ãœret';
 $wb['repeat_password_txt'] = 'Parola Onayı';
 $wb['password_mismatch_txt'] = 'Parola ile onayı aynı değil.';
 $wb['password_match_txt'] = 'Parola ile onayı aynı.';
diff --git a/interface/web/mail/lib/lang/tr_mail_mailinglist_list.lng b/interface/web/mail/lib/lang/tr_mail_mailinglist_list.lng
index c605dd2442..8070d1983d 100644
--- a/interface/web/mail/lib/lang/tr_mail_mailinglist_list.lng
+++ b/interface/web/mail/lib/lang/tr_mail_mailinglist_list.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['list_head_txt'] = 'Posta Listesi';
-$wb['domain_txt'] = 'Alan Adı';
+$wb['list_head_txt'] = 'E-posta Listesi';
+$wb['domain_txt'] = 'Etki Alanı';
 $wb['listname_txt'] = 'Liste Adı';
 ?>
diff --git a/interface/web/mail/lib/lang/tr_mail_relay_recipient.lng b/interface/web/mail/lib/lang/tr_mail_relay_recipient.lng
index 90153f8c4d..a7d83620cb 100644
--- a/interface/web/mail/lib/lang/tr_mail_relay_recipient.lng
+++ b/interface/web/mail/lib/lang/tr_mail_relay_recipient.lng
@@ -4,6 +4,6 @@ $wb['source_txt'] = 'Aktarılan Alıcı';
 $wb['recipient_txt'] = 'Alıcı';
 $wb['active_txt'] = 'Etkin';
 $wb['source_error_notempty'] = 'Adres boÅŸ olamaz.';
-$wb['type_txt'] = 'Tip';
+$wb['type_txt'] = 'Tür';
 $wb['limit_mailfilter_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla e-posta süzgeci sayısına ulaştınız.';
 ?>
diff --git a/interface/web/mail/lib/lang/tr_mail_spamfilter.lng b/interface/web/mail/lib/lang/tr_mail_spamfilter.lng
index be63f71200..6a708982f1 100644
--- a/interface/web/mail/lib/lang/tr_mail_spamfilter.lng
+++ b/interface/web/mail/lib/lang/tr_mail_spamfilter.lng
@@ -7,11 +7,11 @@ $wb['spam_rewrite_subject_txt'] = 'Konuyu yeniden yaz';
 $wb['spam_redirect_maildir_txt'] = 'Mail kutusuna yönlendir';
 $wb['active_txt'] = 'Etkin';
 $wb['spam_rewrite_txt'] = 'Bu puanın üzerindeki e-posta konusunu yeniden yaz.';
-$wb['spam_redirect_txt'] = 'Bu puanın üzerindeki e-postayı seçilmiş posta kutusuna yönlendir.';
+$wb['spam_redirect_txt'] = 'Bu puanın üzerindeki e-postayı seçilmiş e-posta kutusuna yönlendir.';
 $wb['spam_delete_txt'] = 'Bu puanın üzerindeki e-postayı sil.';
 $wb['disable_txt'] = 'İpucu: Bir süzgeç seçeneğini devre dışı bırakmak için, puanı 0.00 olarak yazın.';
 $wb['email_error_isemail'] = 'E-posta adresi geçersiz.';
-$wb['email_error_unique'] = 'Bu e-posta adresi için önemiz posta süzgeci kaydı zaten var.';
-$wb['spam_redirect_maildir_purge_txt'] = 'Posta klasörü';
+$wb['email_error_unique'] = 'Bu e-posta adresi için önemiz  e-posta süzgeci kaydı zaten var.';
+$wb['spam_redirect_maildir_purge_txt'] = 'E-posta Klasörü';
 $wb['days_txt'] = ' gün aralıklarla temizlensin.';
 ?>
diff --git a/interface/web/mail/lib/lang/tr_mail_spamfilter_list.lng b/interface/web/mail/lib/lang/tr_mail_spamfilter_list.lng
index 90981ad8fe..6901f541bd 100644
--- a/interface/web/mail/lib/lang/tr_mail_spamfilter_list.lng
+++ b/interface/web/mail/lib/lang/tr_mail_spamfilter_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['list_head_txt'] = 'Önemsiz Posta Süzgeci';
+$wb['list_head_txt'] = 'Önemsiz İleti Süzgeci';
 $wb['active_txt'] = 'Etkin';
 $wb['server_id_txt'] = 'Sunucu';
 $wb['server_name_txt'] = 'server_name';
 $wb['email_txt'] = 'E-posta';
-$wb['add_new_record_txt'] = 'Önemsiz Posta Süzgeci Ekle';
+$wb['add_new_record_txt'] = 'Önemsiz İleti Süzgeci Ekle';
 ?>
diff --git a/interface/web/mail/lib/lang/tr_mail_transport.lng b/interface/web/mail/lib/lang/tr_mail_transport.lng
index f268fd5475..0b41770392 100644
--- a/interface/web/mail/lib/lang/tr_mail_transport.lng
+++ b/interface/web/mail/lib/lang/tr_mail_transport.lng
@@ -1,8 +1,8 @@
 <?php
 $wb['server_id_txt'] = 'Sunucu';
-$wb['domain_txt'] = 'Alan Adı';
+$wb['domain_txt'] = 'Etki Alanı';
 $wb['destination_txt'] = 'Hedef';
-$wb['type_txt'] = 'Tip';
+$wb['type_txt'] = 'Tür';
 $wb['mx_txt'] = 'MX taraması yok';
 $wb['sort_order_txt'] = 'Sıralama';
 $wb['active_txt'] = 'Etkin';
diff --git a/interface/web/mail/lib/lang/tr_mail_transport_list.lng b/interface/web/mail/lib/lang/tr_mail_transport_list.lng
index f9608f64dc..75c5962ece 100644
--- a/interface/web/mail/lib/lang/tr_mail_transport_list.lng
+++ b/interface/web/mail/lib/lang/tr_mail_transport_list.lng
@@ -2,7 +2,7 @@
 $wb['list_head_txt'] = 'Gelişmiş E-posta Yöneltme';
 $wb['active_txt'] = 'Etkin';
 $wb['server_id_txt'] = 'Sunucu';
-$wb['domain_txt'] = 'Alan Adı';
+$wb['domain_txt'] = 'Etki Alanı';
 $wb['transport_txt'] = 'Aktarım';
 $wb['sort_order_txt'] = 'Sıralama';
 $wb['add_new_record_txt'] = 'Yöneltme Ekle';
diff --git a/interface/web/mail/lib/lang/tr_mail_user.lng b/interface/web/mail/lib/lang/tr_mail_user.lng
index 6853b9619d..99e9860396 100644
--- a/interface/web/mail/lib/lang/tr_mail_user.lng
+++ b/interface/web/mail/lib/lang/tr_mail_user.lng
@@ -1,65 +1,65 @@
 <?php
-$wb['custom_mailfilter_txt'] = 'Özel posta süzgeci';
+$wb['custom_mailfilter_txt'] = 'Özel E-posta Süzgeci';
 $wb['email_txt'] = 'E-posta';
 $wb['cryptpwd_txt'] = 'Parola';
-$wb['password_strength_txt'] = 'Parola Güçlüğü';
+$wb['password_strength_txt'] = 'Parola ZorluÄŸu';
 $wb['active_txt'] = 'Etkin';
 $wb['email_error_isemail'] = 'E-posta adresi geçersiz.';
 $wb['email_error_unique'] = 'Bu e-posta adresi zaten var.';
 $wb['autoresponder_subject_txt'] = 'E-posta Konusu';
-$wb['autoresponder_subject'] = 'Ofis dışında yanıtı';
+$wb['autoresponder_subject'] = 'Ofis Dışında Yanıtı';
 $wb['autoresponder_text_txt'] = 'Metin';
 $wb['autoresponder_txt'] = 'Etkin';
 $wb['autoresponder_start_date_txt'] = 'Başlangıç';
 $wb['autoresponder_start_date_ispast'] = 'Başlangıç zamanı geçmişte olamaz.';
 $wb['autoresponder_end_date_txt'] = 'BitiÅŸ';
 $wb['autoresponder_end_date_isgreater'] = 'Bitiş zamanı başlangıç zamanından sonra olmalıdır.';
-$wb['no_domain_perm'] = 'Bu alan adı için izniniz yok.';
+$wb['autoresponder_start_date_is_required'] = 'Otoyanıtlayıcı kullanıldığında başlangıç tarihi belirtilmelidir.';
+$wb['no_domain_perm'] = 'Bu etki alanı için izniniz yok.';
 $wb['error_no_pwd'] = 'Parola boÅŸ olamaz.';
-$wb['quota_error_isint'] = 'Posta kutusunun boyutu bir sayı olmalıdır.';
+$wb['quota_error_isint'] = 'E-posta kutusunun boyutu bir sayı olmalıdır.';
 $wb['quota_txt'] = 'Kota (sınırsız için 0 yazın)';
-$wb['server_id_txt'] = 'Sunucu kodu';
+$wb['server_id_txt'] = 'Sunucu Kodu';
 $wb['password_txt'] = 'Parola';
-$wb['maildir_txt'] = 'Posta Klasörü';
+$wb['password_click_to_set_txt'] = 'Ayarlamak için tıklayın';
+$wb['maildir_txt'] = 'E-posta Klasörü';
 $wb['postfix_txt'] = 'Alım Etkin';
+$wb['greylisting_txt'] = 'Gri Liste Kullanılsın';
 $wb['access_txt'] = 'EriÅŸim Etkin';
-$wb['policy_txt'] = 'Önemsiz Posta Süzgeci';
+$wb['policy_txt'] = 'Önemsiz İleti Süzgeci';
 $wb['no_policy'] = '- devre dışı -';
-$wb['limit_mailbox_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla posta kutusu sayısına ulaştınız.';
-$wb['limit_mailquota_txt'] = 'Posta kutularınız için kullanabileceğiniz en fazla boyuta ulaştınız. Kullanılabilecek alan MB:';
+$wb['limit_mailbox_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla e-posta kutusu sayısına ulaştınız.';
+$wb['limit_mailquota_txt'] = 'E-posta kutularınız için kullanabileceğiniz en fazla boyuta ulaştınız. Kullanılabilecek alan MB:';
 $wb['disablesmtp_txt'] = 'SMTP Kullanılmasın (gönderim)';
 $wb['disableimap_txt'] = 'IMAP Kullanılmasın';
 $wb['disablepop3_txt'] = 'POP3 Kullanılmasın';
 $wb['duplicate_alias_or_forward_txt'] = 'Bu e-posta adresi zaten takma ya da yönlendirilmiş.';
 $wb['quota_error_value'] = 'Kota değeri geçersiz. Değer sınırsız için 0 ya da 1 değerinden büyük olmalı';
-$wb['move_junk_txt'] = 'Önemsiz Epostalar Junk Klasörüne Taşınsın';
+$wb['move_junk_txt'] = 'Önemsiz İletiler Junk Klasörüne Taşınsın';
 $wb['name_txt'] = 'Ad';
 $wb['name_optional_txt'] = '(İsteğe bağlı)';
 $wb['autoresponder_active'] = 'Otoyanıtlayıcı kullanılsın';
 $wb['cc_txt'] = 'Kopyası şuraya gönderilsin';
+$wb['sender_cc_txt'] = 'Gidenin Gizli Kopyası Şuraya Gönderilsin';
 $wb['cc_error_isemail'] = 'Kopyası şuraya gönderilsin alanına geçerli bir e-posta adresi yazılmalı';
-$wb['domain_txt'] = 'Alan Adı';
+$wb['sender_cc_error_isemail'] = 'Gidenin gizli kopyası şuraya gönderilsin alanındaki e-posta adresi geçersiz';
+$wb['domain_txt'] = 'Etki Alanı';
 $wb['now_txt'] = 'Åžimdi';
 $wb['login_error_unique'] = 'Kullanıcı adı zaten var.';
 $wb['login_error_regex'] = 'Kullanılabilecek karakterler: A-Z, a-z, 0-9, ., _ ve -.';
-$wb['login_txt'] = 'Kullanıcı adı (isteğe bağlı)';
+$wb['login_txt'] = 'Kullanıcı Adı (İsteğe Bağlı)';
 $wb['error_login_email_txt'] = 'Bu kullanıcı adı kullanılamaz. Lütfen farklı bir kullanıcı adı yazın ya da e-posta adresini kullanın.';
-$wb['generate_password_txt'] = 'Parola OluÅŸtur';
+$wb['generate_password_txt'] = 'Parola Ãœret';
 $wb['repeat_password_txt'] = 'Parola Onayı';
 $wb['password_mismatch_txt'] = 'Parola ile onayı aynı değil.';
 $wb['password_match_txt'] = 'Parola ile onayı aynı.';
+$wb['backup_interval_txt'] = 'Yedekleme Sıklığı';
+$wb['backup_copies_txt'] = 'Yedek kopyalarının sayısı';
+$wb['no_backup_txt'] = 'Yedek yok';
+$wb['daily_backup_txt'] = 'Günlük';
+$wb['weekly_backup_txt'] = 'Haftalık';
+$wb['monthly_backup_txt'] = 'Aylık';
 $wb['email_error_isascii'] = 'E-posta istemcinizde sorun yaşamamak için lütfen parolanızda dile özel unikod karakterler kullanmayın.';
 $wb['cc_note_txt'] = '(Birden çok e-posta adresini virgül ile ayırarak yazın)';
-$wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.';
-$wb['password_click_to_set_txt'] = 'Click to set';
-$wb['greylisting_txt'] = 'Enable greylisting';
-$wb['sender_cc_txt'] = 'Send outgoing BCC to';
-$wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address';
-$wb['backup_interval_txt'] = 'Backup interval';
-$wb['backup_copies_txt'] = 'Number of backup copies';
-$wb['no_backup_txt'] = 'No backup';
-$wb['daily_backup_txt'] = 'Daily';
-$wb['weekly_backup_txt'] = 'Weekly';
-$wb['monthly_backup_txt'] = 'Monthly';
-$wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)';
+$wb['sender_cc_note_txt'] = '(Birden çok e-posta adresini virgül ile ayırarak yazın)';
 ?>
diff --git a/interface/web/mail/lib/lang/tr_mail_user_filter.lng b/interface/web/mail/lib/lang/tr_mail_user_filter.lng
index 8897a9d18b..ba55be63dc 100644
--- a/interface/web/mail/lib/lang/tr_mail_user_filter.lng
+++ b/interface/web/mail/lib/lang/tr_mail_user_filter.lng
@@ -7,7 +7,7 @@ $wb['rulename_error_empty'] = 'Ad boÅŸ olamaz.';
 $wb['searchterm_is_empty'] = 'Aranacak ifade boÅŸ olamaz.';
 $wb['source_txt'] = 'Kaynak';
 $wb['target_error_regex'] = 'Hedef için yalnız şu karakterler kullanılabilir: a-z, 0-9, -, ., _, ve {boşluk}';
-$wb['limit_mailfilter_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla posta süzgeci sayısına ulaştınız.';
+$wb['limit_mailfilter_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla e-posta süzgeci sayısına ulaştınız.';
 $wb['subject_txt'] = 'Konu';
 $wb['from_txt'] = 'Kimden';
 $wb['to_txt'] = 'Kime';
@@ -25,5 +25,5 @@ $wb['domain_txt'] = 'Etki alanı';
 $wb['keep_txt'] = 'Tut';
 $wb['reject_txt'] = 'Reddet';
 $wb['stop_txt'] = 'Durdur';
-$wb['move_to_txt'] = 'Move to';
+$wb['move_to_txt'] = 'Şuraya Taşı';
 ?>
diff --git a/interface/web/mail/lib/lang/tr_mail_user_list.lng b/interface/web/mail/lib/lang/tr_mail_user_list.lng
index 6310ce4038..66d33becae 100644
--- a/interface/web/mail/lib/lang/tr_mail_user_list.lng
+++ b/interface/web/mail/lib/lang/tr_mail_user_list.lng
@@ -1,11 +1,11 @@
 <?php
-$wb['list_head_txt'] = 'Posta Kutusu';
+$wb['list_head_txt'] = 'E-posta Kutusu';
 $wb['email_txt'] = 'E-posta';
 $wb['autoresponder_txt'] = 'Otomatik Yanıtlayıcı';
-$wb['add_new_record_txt'] = 'Posta Kutusu Ekle';
+$wb['add_new_record_txt'] = 'E-posta Kutusu Ekle';
 $wb['name_txt'] = 'Gerçek Ad';
 $wb['login_txt'] = 'Oturum Aç';
-$wb['postfix_txt'] = 'Receiving';
+$wb['postfix_txt'] = 'Alınıyor';
 $wb['disablesmtp_txt'] = 'SMTP (sending)';
 $wb['disableimap_txt'] = 'IMAP';
 $wb['disablepop3_txt'] = 'POP3';
diff --git a/interface/web/mail/lib/lang/tr_mail_user_stats_list.lng b/interface/web/mail/lib/lang/tr_mail_user_stats_list.lng
index 326f69f698..b28a9f09b9 100644
--- a/interface/web/mail/lib/lang/tr_mail_user_stats_list.lng
+++ b/interface/web/mail/lib/lang/tr_mail_user_stats_list.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['list_head_txt'] = 'Posta TrafiÄŸi';
+$wb['list_head_txt'] = 'E-posta TrafiÄŸi';
 $wb['email_txt'] = 'E-posta';
 $wb['this_month_txt'] = 'Bu ay';
 $wb['last_month_txt'] = 'Geçen ay';
diff --git a/interface/web/mail/lib/lang/tr_mail_whitelist.lng b/interface/web/mail/lib/lang/tr_mail_whitelist.lng
index 84df2143c0..c6272a9ede 100644
--- a/interface/web/mail/lib/lang/tr_mail_whitelist.lng
+++ b/interface/web/mail/lib/lang/tr_mail_whitelist.lng
@@ -4,6 +4,6 @@ $wb['source_txt'] = 'Beyaz Listedeki Adres';
 $wb['recipient_txt'] = 'Alıcı';
 $wb['active_txt'] = 'Etkin';
 $wb['source_error_notempty'] = 'Adres boÅŸ olamaz.';
-$wb['type_txt'] = 'Tip';
+$wb['type_txt'] = 'Tür';
 $wb['limit_mailfilter_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla e-posta süzgeci sayısına ulaştınız.';
 ?>
diff --git a/interface/web/mail/lib/lang/tr_mail_whitelist_list.lng b/interface/web/mail/lib/lang/tr_mail_whitelist_list.lng
index 7809a24fe8..736b395ca0 100644
--- a/interface/web/mail/lib/lang/tr_mail_whitelist_list.lng
+++ b/interface/web/mail/lib/lang/tr_mail_whitelist_list.lng
@@ -3,7 +3,7 @@ $wb['list_head_txt'] = 'E-posta Beyaz Listesi';
 $wb['active_txt'] = 'Etkin';
 $wb['server_id_txt'] = 'Sunucu';
 $wb['source_txt'] = 'Beyaz Listedeki Adres';
-$wb['type_txt'] = 'Tip';
+$wb['type_txt'] = 'Tür';
 $wb['recipient_txt'] = 'Alıcı';
 $wb['add_new_record_txt'] = 'Beyaz Liste Kaydı Ekle';
 $wb['access_txt'] = 'EriÅŸim';
diff --git a/interface/web/mail/lib/lang/tr_spamfilter_blacklist_list.lng b/interface/web/mail/lib/lang/tr_spamfilter_blacklist_list.lng
index 1e0f673474..40e3c5fb14 100644
--- a/interface/web/mail/lib/lang/tr_spamfilter_blacklist_list.lng
+++ b/interface/web/mail/lib/lang/tr_spamfilter_blacklist_list.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['list_head_txt'] = 'Önemsiz Posta Kara Listesi';
+$wb['list_head_txt'] = 'Önemsiz İleti Kara Listesi';
 $wb['active_txt'] = 'Etkin';
 $wb['server_id_txt'] = 'Sunucu';
 $wb['priority_txt'] = 'Öncelik';
diff --git a/interface/web/mail/lib/lang/tr_spamfilter_config.lng b/interface/web/mail/lib/lang/tr_spamfilter_config.lng
index 7ccd927773..93f1417483 100644
--- a/interface/web/mail/lib/lang/tr_spamfilter_config.lng
+++ b/interface/web/mail/lib/lang/tr_spamfilter_config.lng
@@ -6,15 +6,15 @@ $wb['gateway_txt'] = 'Ağ Geçidi';
 $wb['hostname_txt'] = 'Sunucu Adı';
 $wb['nameservers_txt'] = 'Ad Sunucuları';
 $wb['module_txt'] = 'Sunucu Modülü';
-$wb['maildir_path_txt'] = 'Posta Klasörü Yolu';
+$wb['maildir_path_txt'] = 'E-posta Klasörü Yolu';
 $wb['homedir_path_txt'] = 'Kullanıcı Klasörü Yolu';
-$wb['mailuser_uid_txt'] = 'Posta Kullanıcısı UID';
-$wb['mailuser_gid_txt'] = 'Posta Kullanıcısı GID';
-$wb['mailuser_name_txt'] = 'Posta Kullanıcısı Adı';
-$wb['mailuser_group_txt'] = 'Posta Kullanıcısı Grubu';
+$wb['mailuser_uid_txt'] = 'E-posta Kullanıcısı UID';
+$wb['mailuser_gid_txt'] = 'E-posta Kullanıcısı GID';
+$wb['mailuser_name_txt'] = 'E-posta Kullanıcısı Adı';
+$wb['mailuser_group_txt'] = 'E-posta Kullanıcısı Grubu';
 $wb['relayhost_txt'] = 'Aktarım Sunucusu';
 $wb['relayhost_user_txt'] = 'Aktarım Sunucu Kullanıcı Adı';
 $wb['relayhost_password_txt'] = 'Aktarım Sunucu Parolası';
-$wb['mailbox_size_limit_txt'] = 'Posta Kutusu Boyutu';
+$wb['mailbox_size_limit_txt'] = 'E-posta Kutusu Boyutu';
 $wb['message_size_limit_txt'] = 'İleti Boyutu Sınırı';
 ?>
diff --git a/interface/web/mail/lib/lang/tr_spamfilter_config_list.lng b/interface/web/mail/lib/lang/tr_spamfilter_config_list.lng
index 2b6e0b3c18..dc30cf868a 100644
--- a/interface/web/mail/lib/lang/tr_spamfilter_config_list.lng
+++ b/interface/web/mail/lib/lang/tr_spamfilter_config_list.lng
@@ -1,5 +1,5 @@
 <?php
 $wb['list_head_txt'] = 'Sunucu Ayarları';
 $wb['server_name_txt'] = 'Sunucu';
-$wb['server_id_txt'] = 'sunucu_kodu';
+$wb['server_id_txt'] = 'server_id';
 ?>
diff --git a/interface/web/mail/lib/lang/tr_spamfilter_policy.lng b/interface/web/mail/lib/lang/tr_spamfilter_policy.lng
index d7b76496a1..45a52ffc92 100644
--- a/interface/web/mail/lib/lang/tr_spamfilter_policy.lng
+++ b/interface/web/mail/lib/lang/tr_spamfilter_policy.lng
@@ -1,51 +1,38 @@
 <?php
 $wb['policy_name_txt'] = 'Kural Adı';
 $wb['virus_lover_txt'] = 'Virüs Koruması';
-$wb['spam_lover_txt'] = 'Önemsiz Posta Koruması';
-$wb['banned_files_lover_txt'] = 'Yasak Dosya Koruması';
-$wb['bad_header_lover_txt'] = 'Kötü Üstbilgi Koruması';
-$wb['bypass_virus_checks_txt'] = 'Virüs korumasını atla';
-$wb['bypass_banned_checks_txt'] = 'Yasak dosya korumasını atla';
-$wb['bypass_header_checks_txt'] = 'Üstbilgi korumasını atla';
-$wb['virus_quarantine_to_txt'] = 'Virüsü e-postaya ilet';
-$wb['spam_quarantine_to_txt'] = 'Önemsiz postayı e-postaya ilet';
-$wb['banned_quarantine_to_txt'] = 'Yasak dosyaları e-postaya ilet';
-$wb['bad_header_quarantine_to_txt'] = 'Kötü üstbilgiyi e-postaya ilet';
-$wb['clean_quarantine_to_txt'] = 'Temiz postaların iletileceği e-posta';
-$wb['other_quarantine_to_txt'] = 'Diğer postaların iletileceği e-posta';
-$wb['spam_tag_level_txt'] = 'Önemsiz posta etiket düzeyi';
-$wb['spam_tag2_level_txt'] = 'Önemsiz posta etiket2 düzeyi';
-$wb['spam_kill_level_txt'] = 'Önemsiz posta yok etme düzeyi';
-$wb['spam_dsn_cutoff_level_txt'] = 'Önemsiz posta DNS durdurma limiti';
-$wb['spam_quarantine_cutoff_level_txt'] = 'Önemsiz posta karantina durdurma düzeyi';
-$wb['spam_modifies_subj_txt'] = 'Önemsiz posta konu değişikliği';
-$wb['spam_subject_tag_txt'] = 'Önemsiz posta konu etiketi';
-$wb['spam_subject_tag2_txt'] = 'Önemsiz posta konu etiketi2';
-$wb['addr_extension_virus_txt'] = 'Adres Virus eki';
-$wb['addr_extension_spam_txt'] = 'Adres SPAM eki';
-$wb['addr_extension_banned_txt'] = 'Adres Yasak eki';
-$wb['addr_extension_bad_header_txt'] = 'Adres Kötü üstbilfi eki';
-$wb['warnvirusrecip_txt'] = 'Virus alıcısını uyar';
-$wb['warnbannedrecip_txt'] = 'Yasak dosya alıcısını uyar';
-$wb['warnbadhrecip_txt'] = 'Kötü üstbilgi alıcısını uyar';
+$wb['spam_lover_txt'] = 'Önemsiz İleti Koruması';
+$wb['banned_files_lover_txt'] = 'Yasaklanmış Dosya Koruması';
+$wb['bad_header_lover_txt'] = 'Kötü Üst Bilgi Koruması';
+$wb['bypass_virus_checks_txt'] = 'Virüs koruması atlansın';
+$wb['bypass_banned_checks_txt'] = 'Yasaklanmış dosya koruması atlansın';
+$wb['bypass_header_checks_txt'] = 'Üst bilgi koruması atlansın';
+$wb['virus_quarantine_to_txt'] = 'Virüs e-postaya iletilsin';
+$wb['spam_quarantine_to_txt'] = 'Önemsiz ileti e-postaya iletilsin';
+$wb['banned_quarantine_to_txt'] = 'Yasak dosya e-postaya iletilsin';
+$wb['bad_header_quarantine_to_txt'] = 'Kötü üst bilgi e-postaya iletilsin';
+$wb['clean_quarantine_to_txt'] = 'Temiz e-postaların iletileceği e-posta';
+$wb['other_quarantine_to_txt'] = 'Diğer e-postaların iletileceği e-posta';
+$wb['spam_tag_level_txt'] = 'Önemsiz ileti etiket düzeyi';
+$wb['spam_tag2_level_txt'] = 'Önemsiz ileti etiket2 düzeyi';
+$wb['spam_kill_level_txt'] = 'Önemsiz ileti yok etme düzeyi';
+$wb['spam_dsn_cutoff_level_txt'] = 'Önemsiz ileti DNS durdurma limiti';
+$wb['spam_quarantine_cutoff_level_txt'] = 'Önemsiz ileti karantina durdurma düzeyi';
+$wb['spam_modifies_subj_txt'] = 'Önemsiz ileti konu değişikliği';
+$wb['spam_subject_tag_txt'] = 'Önemsiz ileti konu etiketi';
+$wb['spam_subject_tag2_txt'] = 'Önemsiz ileti konu etiketi2';
+$wb['addr_extension_virus_txt'] = 'Adres virus uzantısı';
+$wb['addr_extension_spam_txt'] = 'Adres önemsiz ileti uzantısı';
+$wb['addr_extension_banned_txt'] = 'Adres yasaklanmış uzantısı';
+$wb['addr_extension_bad_header_txt'] = 'Adres kötü üst bilgi uzantısı';
+$wb['warnvirusrecip_txt'] = 'Virus alıcısı uyarılsın';
+$wb['warnbannedrecip_txt'] = 'Yasak dosya alıcısı uyarılsın';
+$wb['warnbadhrecip_txt'] = 'Kötü üst bilgi alıcısı uyarılsın';
 $wb['newvirus_admin_txt'] = 'Yeni virus yönetici';
 $wb['virus_admin_txt'] = 'Virus yönetici';
 $wb['banned_admin_txt'] = 'Yasak dosya yönetici';
-$wb['bad_header_admin_txt'] = 'Kötü üstbilgi yönetici';
-$wb['spam_admin_txt'] = 'Önemsiz posta yönetici';
+$wb['bad_header_admin_txt'] = 'Kötü üst bilgi yönetici';
+$wb['spam_admin_txt'] = 'Önemsiz ileti yönetici';
 $wb['message_size_limit_txt'] = 'İleti boyutu sınırı';
 $wb['banned_rulenames_txt'] = 'Yasak kural adları';
-$wb['rspamd_greylisting_txt'] = 'Use greylisting';
-$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level';
-$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level';
-$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method';
-$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level';
-$wb['btn_save_txt'] = 'Save';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['amavis_settings_txt'] = 'Settings';
-$wb['amavis_taglevel_txt'] = 'Tag-Level';
-$wb['amavis_quarantine_txt'] = 'Quarantine';
-$wb['amavis_other_txt'] = 'Other';
-$wb['add_header_txt'] = 'Add header';
-$wb['rewrite_subject_txt'] = 'Rewrite subject';
 ?>
diff --git a/interface/web/mail/lib/lang/tr_spamfilter_policy_list.lng b/interface/web/mail/lib/lang/tr_spamfilter_policy_list.lng
index 78459c3f23..cb5b9b83af 100644
--- a/interface/web/mail/lib/lang/tr_spamfilter_policy_list.lng
+++ b/interface/web/mail/lib/lang/tr_spamfilter_policy_list.lng
@@ -1,9 +1,9 @@
 <?php
-$wb['list_head_txt'] = 'Önemsiz Posta Süzgeci Kuralları';
+$wb['list_head_txt'] = 'Önemsiz İleti Süzgeci Kuralları';
 $wb['policy_name_txt'] = 'Ad';
 $wb['virus_lover_txt'] = 'Virüs Koruması';
-$wb['spam_lover_txt'] = 'Önemsiz Posta Koruması';
+$wb['spam_lover_txt'] = 'Önemsiz İleti Koruması';
 $wb['banned_files_lover_txt'] = 'Yasaklı Dosya Koruması';
-$wb['bad_header_lover_txt'] = 'Kötü Üstbilgi Koruması';
+$wb['bad_header_lover_txt'] = 'Kötü Üst Bilgi Koruması';
 $wb['add_new_record_txt'] = 'Kural Kaydı Ekle';
 ?>
diff --git a/interface/web/mail/lib/lang/tr_spamfilter_users_list.lng b/interface/web/mail/lib/lang/tr_spamfilter_users_list.lng
index 847c5bdf4f..bee9372cbf 100644
--- a/interface/web/mail/lib/lang/tr_spamfilter_users_list.lng
+++ b/interface/web/mail/lib/lang/tr_spamfilter_users_list.lng
@@ -1,10 +1,10 @@
 <?php
-$wb['list_head_txt'] = 'Önemsiz Posta Süzgeci Kullanıcıları';
+$wb['list_head_txt'] = 'Önemsiz İleti Süzgeci Kullanıcıları';
 $wb['local_txt'] = 'Yerel';
 $wb['server_id_txt'] = 'Sunucu';
 $wb['priority_txt'] = 'Öncelik';
 $wb['policy_id_txt'] = 'Kural';
 $wb['fullname_txt'] = 'Ad';
 $wb['email_txt'] = 'E-posta';
-$wb['add_new_record_txt'] = 'Önemsiz Posta Süzgeci Kullanıcısı Ekle';
+$wb['add_new_record_txt'] = 'Önemsiz İleti Süzgeci Kullanıcısı Ekle';
 ?>
diff --git a/interface/web/mail/lib/lang/tr_spamfilter_whitelist_list.lng b/interface/web/mail/lib/lang/tr_spamfilter_whitelist_list.lng
index c29bf003c5..5e1f95da1c 100644
--- a/interface/web/mail/lib/lang/tr_spamfilter_whitelist_list.lng
+++ b/interface/web/mail/lib/lang/tr_spamfilter_whitelist_list.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['list_head_txt'] = 'Önemsiz Posta Beyaz Listesi';
+$wb['list_head_txt'] = 'Önemsiz İleti Beyaz Listesi';
 $wb['active_txt'] = 'Etkin';
 $wb['server_id_txt'] = 'Sunucu';
 $wb['priority_txt'] = 'Öncelik';
diff --git a/interface/web/mail/lib/lang/tr_user_quota_stats_list.lng b/interface/web/mail/lib/lang/tr_user_quota_stats_list.lng
index d97ab317f6..ecab0f7735 100755
--- a/interface/web/mail/lib/lang/tr_user_quota_stats_list.lng
+++ b/interface/web/mail/lib/lang/tr_user_quota_stats_list.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['list_head_txt'] = 'Posta Kutusu Kotası';
+$wb['list_head_txt'] = 'E-posta Kutusu Kotası';
 $wb['quota_txt'] = 'Kota';
 $wb['name_txt'] = 'Ad';
 $wb['email_txt'] = 'E-posta Adresi';
diff --git a/interface/web/mail/lib/lang/tr_xmpp_domain.lng b/interface/web/mail/lib/lang/tr_xmpp_domain.lng
index 0541203b2e..5c0c1acd05 100644
--- a/interface/web/mail/lib/lang/tr_xmpp_domain.lng
+++ b/interface/web/mail/lib/lang/tr_xmpp_domain.lng
@@ -1,62 +1,62 @@
 <?php
-$wb['server_id_txt'] = 'Server';
-$wb['client_group_id_txt'] = 'Client';
-$wb['domain_txt'] = 'Domain';
-$wb['type_txt'] = 'Type';
-$wb['active_txt'] = 'Active';
-$wb['client_txt'] = 'Client';
-$wb['management_method_txt'] = 'Management of user accounts';
-$wb['public_registration_txt'] = 'Enable public registration';
-$wb['registration_url_txt'] = 'Registration URL';
-$wb['registration_message_txt'] = 'Registration Message';
-$wb['domain_admins_txt'] = 'Domain Admins (JIDs)';
-$wb['use_pubsub_txt'] = 'Enable Pubsub';
-$wb['use_proxy_txt'] = 'Enable Bytestream Proxy';
-$wb['use_anon_host_txt'] = 'Enable Anonymous Host';
-$wb['use_vjud_txt'] = 'Enable VJUD User Directory';
-$wb['vjud_opt_mode_txt'] = 'VJUD Opt Mode';
-$wb['use_muc_host_txt'] = 'Enable Multi User Chatrooms';
-$wb['muc_name_txt'] = 'Name in MUC Service Discovery';
-$wb['muc_restrict_room_creation_txt'] = 'Permission to create chatrooms';
-$wb['muc_admins_txt'] = 'MUC Admins (JIDs)';
-$wb['use_pastebin_txt'] = 'Enable Pastebin';
-$wb['pastebin_expire_after_txt'] = 'Pastes expire after (hours)';
-$wb['pastebin_trigger_txt'] = 'Pastebin trigger';
-$wb['use_http_archive_txt'] = 'Enable HTTP chatroom archive';
-$wb['http_archive_show_join_txt'] = 'Show join messages in archive';
-$wb['http_archive_show_status_txt'] = 'Show status changes in archive';
-$wb['use_status_host_txt'] = 'Enable XML Status host';
-$wb['cant_change_domainname_txt'] = 'The Domain name of existing XMPP domain cannot be changed.';
-$wb['about_registration_url_txt'] = 'Link to your registration form.';
-$wb['about_registration_message_txt'] = 'Description about your account registration process.';
-$wb['no_corresponding_maildomain_txt'] = 'Corresponding mail domain for user management not found. Please create the mail domain first.';
-$wb['ssl_state_txt'] = 'State';
-$wb['ssl_locality_txt'] = 'Locality';
-$wb['ssl_organisation_txt'] = 'Organisation';
-$wb['ssl_organisation_unit_txt'] = 'Organisation Unit';
-$wb['ssl_country_txt'] = 'Country';
-$wb['ssl_key_txt'] = 'SSL Key';
-$wb['ssl_request_txt'] = 'SSL Request';
-$wb['ssl_cert_txt'] = 'SSL Certificate';
-$wb['ssl_bundle_txt'] = 'SSL Bundle';
-$wb['ssl_action_txt'] = 'SSL Action';
-$wb['ssl_email_txt'] = 'Email Address';
-$wb['ssl_txt'] = 'SSL';
-$wb['error_ssl_state_empty'] = 'SSL State is empty.';
-$wb['error_ssl_locality_empty'] = 'SSL Locality is empty.';
-$wb['error_ssl_organisation_empty'] = 'SSL Organisation is empty.';
-$wb['error_ssl_organisation_unit_empty'] = 'SSL Organisation Unit is empty.';
-$wb['error_ssl_country_empty'] = 'SSL Country is empty.';
-$wb['error_ssl_cert_empty'] = 'SSL Certificate field is empty';
-$wb['ssl_state_error_regex'] = 'Invalid SSL State. Valid characters are: a-z, 0-9 and .,-_&äöüÄÖÜ';
-$wb['ssl_locality_error_regex'] = 'Invalid SSL Locality. Valid characters are: a-z, 0-9 and .,-_&äöüÄÖÜ';
-$wb['ssl_organisation_error_regex'] = 'Invalid SSL Organisation. Valid characters are: a-z, 0-9 and .,-_&äöüÄÖÜ';
-$wb['ssl_organistaion_unit_error_regex'] = 'Invalid SSL Organisation Unit. Valid characters are: a-z, 0-9 and .,-_&äöüÄÖÜ';
-$wb['ssl_country_error_regex'] = 'Invalid SSL Country. Valid characters are: A-Z';
-$wb['none_txt'] = 'None';
-$wb['save_certificate_txt'] = 'Save certificate';
-$wb['create_certificate_txt'] = 'Create certificate';
-$wb['delete_certificate_txt'] = 'Delete certificate';
-$wb['ssl_error_isemail'] = 'Please enter a valid email adress for generation of the SSL certificate';
-$wb['limit_xmppdomain_txt'] = 'The max. number of XMPP domains for your account is reached.';
+$wb['server_id_txt'] = 'Sunucu';
+$wb['client_group_id_txt'] = 'Müşteri';
+$wb['domain_txt'] = 'Etki Alanı';
+$wb['type_txt'] = 'Tür';
+$wb['active_txt'] = 'Etkin';
+$wb['client_txt'] = 'Müşteri';
+$wb['management_method_txt'] = 'Kullanıcı Hesabı Yönetimi';
+$wb['public_registration_txt'] = 'Herkes Kayıt Olabilsin';
+$wb['registration_url_txt'] = 'Kayıt Adresi';
+$wb['registration_message_txt'] = 'Kayıt İletisi';
+$wb['domain_admins_txt'] = 'Etki Alanı Yöneticileri (JID)';
+$wb['use_pubsub_txt'] = 'Pubsub Kullanılsın';
+$wb['use_proxy_txt'] = 'Bytestream Vekil Sunucusu Kullanılsın';
+$wb['use_anon_host_txt'] = 'Anonim Sunucu Kullanılsın';
+$wb['use_vjud_txt'] = 'VJUD Kullanıcı Klasörü Kullanılsın';
+$wb['vjud_opt_mode_txt'] = 'VJUD Opt Kipi';
+$wb['use_muc_host_txt'] = 'Çok Kullanıcılı Sohbet Kullanılsın';
+$wb['muc_name_txt'] = 'MUC Hizmet KeÅŸfindeki Ad';
+$wb['muc_restrict_room_creation_txt'] = 'Sohbet Odaları Oluşturma İzni';
+$wb['muc_admins_txt'] = 'MUC Yöneticileri (JID)';
+$wb['use_pastebin_txt'] = 'Pastebin Kullanılsın';
+$wb['pastebin_expire_after_txt'] = 'Yapıştırmaların geçersizlik süresi (saat)';
+$wb['pastebin_trigger_txt'] = 'Pastebin Tetikleyici';
+$wb['use_http_archive_txt'] = 'HTTP Sohbet Odası Arşivi Kullanılsın';
+$wb['http_archive_show_join_txt'] = 'Katılma iletileri arşivde görüntülensin';
+$wb['http_archive_show_status_txt'] = 'Durum değişiklikleri arşivde görüntülensin';
+$wb['use_status_host_txt'] = 'XML Durum Sunucusu Kullanılsın';
+$wb['cant_change_domainname_txt'] = 'Var olan XMPP etki alanının adı değiştirilemez.';
+$wb['about_registration_url_txt'] = 'Kayıt formunuzun bağlantısı.';
+$wb['about_registration_message_txt'] = 'Hesap kaydı işlemi ile ilgili açıklama.';
+$wb['no_corresponding_maildomain_txt'] = 'Kullanıcı yönetimi için uygun e-posta etki alanı bulunamadı. Lütfen önce bir e-posta etki alanı ekleyin.';
+$wb['ssl_state_txt'] = 'Ä°l';
+$wb['ssl_locality_txt'] = 'Konum';
+$wb['ssl_organisation_txt'] = 'KuruluÅŸ';
+$wb['ssl_organisation_unit_txt'] = 'KuruluÅŸ Birimi';
+$wb['ssl_country_txt'] = 'Ãœlke';
+$wb['ssl_key_txt'] = 'SSL Anahtarı';
+$wb['ssl_request_txt'] = 'SSL Ä°steÄŸi';
+$wb['ssl_cert_txt'] = 'SSL Sertifikası';
+$wb['ssl_bundle_txt'] = 'SSL Bağlantısı';
+$wb['ssl_action_txt'] = 'SSL Ä°ÅŸlemi';
+$wb['ssl_email_txt'] = 'E-posta Adresi';
+$wb['ssl_txt'] = 'SSL Süresi';
+$wb['error_ssl_state_empty'] = 'SSL ili boÅŸ olamaz.';
+$wb['error_ssl_locality_empty'] = 'SSL bölgesi boş olamaz.';
+$wb['error_ssl_organisation_empty'] = 'SSL kuruluÅŸu boÅŸ olamaz.';
+$wb['error_ssl_organisation_unit_empty'] = 'SSL kuruluÅŸ birimi boÅŸ olamaz.';
+$wb['error_ssl_country_empty'] = 'SSL ülkesi boş olamaz.';
+$wb['error_ssl_cert_empty'] = 'SSL sertifika alanı boş olamaz.';
+$wb['ssl_state_error_regex'] = 'SSL ili geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ';
+$wb['ssl_locality_error_regex'] = 'SSL bölgesi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ';
+$wb['ssl_organisation_error_regex'] = 'SSL kuruluşu geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ';
+$wb['ssl_organistaion_unit_error_regex'] = 'SSL kuruluşu birimi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ';
+$wb['ssl_country_error_regex'] = 'SSL ülkesi geçersiz. Kullanılabilecek karakterler: A-Z';
+$wb['none_txt'] = 'Yok';
+$wb['save_certificate_txt'] = 'Sertifikayı Kaydet';
+$wb['create_certificate_txt'] = 'Sertifika Ekle';
+$wb['delete_certificate_txt'] = 'Sertifikayı Sil';
+$wb['ssl_error_isemail'] = 'Lütfen SSL sertifikasının oluşturulması için geçerli bir e-posta adresi yazın';
+$wb['limit_xmppdomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla XMPP etki alanı sayısına ulaştınız.';
 ?>
diff --git a/interface/web/mail/lib/lang/tr_xmpp_domain_admin_list.lng b/interface/web/mail/lib/lang/tr_xmpp_domain_admin_list.lng
index af643eab5a..0a0c7abe60 100644
--- a/interface/web/mail/lib/lang/tr_xmpp_domain_admin_list.lng
+++ b/interface/web/mail/lib/lang/tr_xmpp_domain_admin_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['list_head_txt'] = 'XMPP Domain';
-$wb['server_id_txt'] = 'Server';
-$wb['domain_txt'] = 'Domain';
-$wb['add_new_record_txt'] = 'Add new Domain';
-$wb['active_txt'] = 'Active';
-$wb['sys_groupid_txt'] = 'Client';
+$wb['list_head_txt'] = 'XMPP Etki Alanı';
+$wb['server_id_txt'] = 'Sunucu';
+$wb['domain_txt'] = 'Etki Alanı';
+$wb['add_new_record_txt'] = 'Etki Alanı Ekle';
+$wb['active_txt'] = 'Etkin';
+$wb['sys_groupid_txt'] = 'Müşteri';
 ?>
diff --git a/interface/web/mail/lib/lang/tr_xmpp_domain_list.lng b/interface/web/mail/lib/lang/tr_xmpp_domain_list.lng
index ebfebab7d5..50a7d55cd2 100644
--- a/interface/web/mail/lib/lang/tr_xmpp_domain_list.lng
+++ b/interface/web/mail/lib/lang/tr_xmpp_domain_list.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['list_head_txt'] = 'XMPP Domain';
-$wb['server_id_txt'] = 'Server';
-$wb['domain_txt'] = 'Domain';
-$wb['add_new_record_txt'] = 'Add new Domain';
-$wb['active_txt'] = 'Active';
+$wb['list_head_txt'] = 'XMPP Etki Alanı';
+$wb['server_id_txt'] = 'Sunucu';
+$wb['domain_txt'] = 'Etki Alanı';
+$wb['add_new_record_txt'] = 'Etki Alanı Ekle';
+$wb['active_txt'] = 'Etkin';
 ?>
diff --git a/interface/web/mail/lib/lang/tr_xmpp_user.lng b/interface/web/mail/lib/lang/tr_xmpp_user.lng
index 6ab739d98b..c83f1ecef0 100644
--- a/interface/web/mail/lib/lang/tr_xmpp_user.lng
+++ b/interface/web/mail/lib/lang/tr_xmpp_user.lng
@@ -1,15 +1,15 @@
 <?php
-$wb['list_head_txt'] = 'XMPP User Accounts';
-$wb['jid_txt'] = 'Jabber ID';
-$wb['active_txt'] = 'Active';
-$wb['cryptpwd_txt'] = 'Password';
-$wb['password_strength_txt'] = 'Password strength';
-$wb['error_no_pwd'] = 'Password is empty.';
-$wb['password_txt'] = 'Password';
-$wb['generate_password_txt'] = 'Generate Password';
-$wb['repeat_password_txt'] = 'Repeat Password';
-$wb['password_mismatch_txt'] = 'The passwords do not match.';
-$wb['password_match_txt'] = 'The passwords do match.';
-$wb['no_domain_perm'] = 'You have no permission for this domain.';
-$wb['limit_xmpp_user_txt'] = 'The max. number of xmpp accounts for your account is reached.';
+$wb['list_head_txt'] = 'XMPP Kullanıcı Adı';
+$wb['jid_txt'] = 'Jabber Kodu';
+$wb['active_txt'] = 'Etkin';
+$wb['cryptpwd_txt'] = 'Parola';
+$wb['password_strength_txt'] = 'Parola ZorluÄŸu';
+$wb['error_no_pwd'] = 'Paroal boÅŸ olamaz.';
+$wb['password_txt'] = 'Paroal';
+$wb['generate_password_txt'] = 'Parola Ãœret';
+$wb['repeat_password_txt'] = 'Parola Onayı';
+$wb['password_mismatch_txt'] = 'Parola ile onayı aynı değil.';
+$wb['password_match_txt'] = 'Parolalar aynı.';
+$wb['no_domain_perm'] = 'Bu etki alanı için izniniz yok.';
+$wb['limit_xmpp_user_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla XMPP hesabı sayısına ulaştınız.';
 ?>
diff --git a/interface/web/mail/lib/lang/tr_xmpp_user_list.lng b/interface/web/mail/lib/lang/tr_xmpp_user_list.lng
index f2651cb62b..a6af23d15b 100644
--- a/interface/web/mail/lib/lang/tr_xmpp_user_list.lng
+++ b/interface/web/mail/lib/lang/tr_xmpp_user_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['list_head_txt'] = 'XMPP User Accounts';
-$wb['jid_txt'] = 'Jabber ID';
-$wb['is_domain_admin_txt'] = 'Domain admin';
-$wb['is_muc_admin_txt'] = 'MUC admin';
-$wb['add_new_record_txt'] = 'Add new user';
-$wb['active_txt'] = 'Active';
+$wb['list_head_txt'] = 'XMPP Kullanıcı Hesapları';
+$wb['jid_txt'] = 'Jabber Kodu';
+$wb['is_domain_admin_txt'] = 'Etki Alanı Yöneticisi';
+$wb['is_muc_admin_txt'] = 'MUC Yöneticisi';
+$wb['add_new_record_txt'] = 'Kullanıcı Ekle';
+$wb['active_txt'] = 'Etkin';
 ?>
diff --git a/interface/web/mailuser/lib/lang/br.lng b/interface/web/mailuser/lib/lang/br.lng
index 55eca578a4..64f9346808 100644
--- a/interface/web/mailuser/lib/lang/br.lng
+++ b/interface/web/mailuser/lib/lang/br.lng
@@ -1,9 +1,9 @@
 <?php
-$wb['Email Account'] = 'Contas de e-mail';
-$wb['Overview'] = 'Visão geral';
-$wb['Autoresponder'] = 'Resposta automática';
-$wb['Send copy'] = 'Enviar cópia para';
+$wb['Email Account'] = 'Conta de e-mail';
+$wb['Overview'] = 'Visão Geral';
+$wb['Password'] = 'Senha';
+$wb['Autoresponder'] = 'Auto-resposta';
+$wb['Send copy'] = 'Enviar cópia';
 $wb['Spamfilter'] = 'Filtro anti-spam';
 $wb['Email Filters'] = 'Filtros de e-mail';
-$wb['Password'] = 'Senha';
 ?>
diff --git a/interface/web/mailuser/lib/lang/br_index.lng b/interface/web/mailuser/lib/lang/br_index.lng
index eb7d7e1e7e..9be2fbdb2a 100644
--- a/interface/web/mailuser/lib/lang/br_index.lng
+++ b/interface/web/mailuser/lib/lang/br_index.lng
@@ -1,12 +1,12 @@
 <?php
-$wb['page_head_txt'] = 'Configurações de contas de e-mail';
-$wb['page_desc_txt'] = 'Aqui você edita as configurações para as contas de e-mail.';
+$wb['page_head_txt'] = 'Configurações de conta de e-mail';
+$wb['page_desc_txt'] = 'Aqui você pode editar as configurações da conta de e-mail.';
 $wb['email_txt'] = 'Endereço de e-mail';
 $wb['login_txt'] = 'Acesso';
 $wb['server_address_txt'] = 'Endereço do servidor de e-mails';
-$wb['cc_txt'] = 'Enviar cópia para (CC)';
-$wb['quota_txt'] = 'Tamanho da caixa postal';
-$wb['unlimited_txt'] = 'ilimitada';
+$wb['cc_txt'] = 'Enviar cópia oculta (BCC) para';
+$wb['quota_txt'] = 'Cota da conta de e-mail';
+$wb['unlimited_txt'] = 'Ilimitado';
 $wb['mb_txt'] = 'MB';
 $wb['none_txt'] = 'Nenhum';
 ?>
diff --git a/interface/web/mailuser/lib/lang/br_mail_user_autoresponder.lng b/interface/web/mailuser/lib/lang/br_mail_user_autoresponder.lng
index 6e00682a44..9de387d798 100644
--- a/interface/web/mailuser/lib/lang/br_mail_user_autoresponder.lng
+++ b/interface/web/mailuser/lib/lang/br_mail_user_autoresponder.lng
@@ -1,13 +1,13 @@
 <?php
-$wb['mailbox_autoresponder_txt'] = 'Autoresposta';
-$wb['autoresponder_subject'] = 'Resposta de ausência temporária';
+$wb['mailbox_autoresponder_txt'] = 'Auto-resposta';
+$wb['autoresponder_subject'] = 'Resposta automática';
 $wb['autoresponder_text_txt'] = 'Texto';
 $wb['autoresponder_txt'] = 'Ativo';
-$wb['autoresponder_start_date_txt'] = 'Início';
-$wb['autoresponder_start_date_isfuture'] = 'A data de início não pode ser menor que a data atual.';
-$wb['autoresponder_end_date_txt'] = 'Término';
-$wb['autoresponder_end_date_isgreater'] = 'A data de término não pode ser menor que a data de início.';
-$wb['autoresponder_active'] = 'Habilitar autoresposta';
+$wb['autoresponder_start_date_txt'] = 'Iniciar em';
+$wb['autoresponder_start_date_isfuture'] = 'O campo "Iniciar em" não pode ser menor que data atual.';
+$wb['autoresponder_end_date_txt'] = 'Terminar em';
+$wb['autoresponder_end_date_isgreater'] = 'O campo "Terminar em" não pode ser menor que "Iniciar em".';
+$wb['autoresponder_active'] = 'Habilitar auto-resposta';
 $wb['now_txt'] = 'Agora';
 $wb['autoresponder_subject_txt'] = 'Assunto';
 ?>
diff --git a/interface/web/mailuser/lib/lang/br_mail_user_cc.lng b/interface/web/mailuser/lib/lang/br_mail_user_cc.lng
index f6d96f02a3..7a1e9a3d95 100644
--- a/interface/web/mailuser/lib/lang/br_mail_user_cc.lng
+++ b/interface/web/mailuser/lib/lang/br_mail_user_cc.lng
@@ -1,9 +1,9 @@
 <?php
-$wb['mailbox_cc_txt'] = 'Enviar cópia para o e-mail';
+$wb['mailbox_cc_txt'] = 'Enviar cópia para endereço de e-mail';
 $wb['cc_txt'] = 'Enviar cópia para';
-$wb['email_txt'] = 'e-mail';
-$wb['cc_error_isemail'] = 'Endereço de e-mail inválido em \'enviar cópia para\'.';
-$wb['email_is_cc_error'] = 'Endereço de e-mail e -enviar cópia para- não podem ser iguais.';
+$wb['email_txt'] = 'e-Mail';
+$wb['cc_error_isemail'] = 'Endereço de e-mail inválido no campo "Enviar cópia para".';
+$wb['email_is_cc_error'] = 'Endereço de e-mail e "Enviar cópia para" não podem ser os mesmos.';
 $wb['name_optional_txt'] = '(Opcional)';
-$wb['cc_note_txt'] = '(Separar múltiplos e-mails por vírgulas)';
+$wb['cc_note_txt'] = '(separar múltiplos endereços de e-mail com vírgulas)';
 ?>
diff --git a/interface/web/mailuser/lib/lang/br_mail_user_filter.lng b/interface/web/mailuser/lib/lang/br_mail_user_filter.lng
index 37196f5d6c..acefe8be6e 100644
--- a/interface/web/mailuser/lib/lang/br_mail_user_filter.lng
+++ b/interface/web/mailuser/lib/lang/br_mail_user_filter.lng
@@ -5,17 +5,17 @@ $wb['target_txt'] = 'Pasta';
 $wb['active_txt'] = 'Ativo';
 $wb['rulename_error_empty'] = 'Nome está em branco.';
 $wb['searchterm_is_empty'] = 'Termo de pesquisa está em branco.';
-$wb['source_txt'] = 'Fonte';
-$wb['target_error_regex'] = 'O alvo pode conter os seguintes caracteres: \'a-z\', \'0-9\', \'-\', \'.\', \'_\', e \'{espaço}\'.';
-$wb['limit_mailfilter_txt'] = 'O limite de filtros de e-mails para esta conta foi alcançado.';
+$wb['source_txt'] = 'Origem';
+$wb['target_error_regex'] = 'O alvo pode conter apenas estes caracteres: "a-z", "0-9", "-", ".", "_", e "{espaço}".';
+$wb['limit_mailfilter_txt'] = 'O limite de filtros de e-mail para esta conta foi alcançado.';
+$wb['mailbox_filter_txt'] = 'Filtro de conta de e-mail';
 $wb['subject_txt'] = 'Assunto';
 $wb['from_txt'] = 'De';
 $wb['to_txt'] = 'Para';
-$wb['contains_txt'] = 'Contém';
-$wb['is_txt'] = 'É';
+$wb['contains_txt'] = 'Contêm';
+$wb['is_txt'] = 'é';
 $wb['begins_with_txt'] = 'Iniciando com';
-$wb['ends_with_txt'] = 'Terminando com';
+$wb['ends_with_txt'] = 'Finalizando com';
 $wb['move_to_txt'] = 'Mover para';
 $wb['delete_txt'] = 'Remover';
-$wb['mailbox_filter_txt'] = 'Filtro de e-mail';
 ?>
diff --git a/interface/web/mailuser/lib/lang/br_mail_user_filter_list.lng b/interface/web/mailuser/lib/lang/br_mail_user_filter_list.lng
index 5d0f241974..5e13e8c303 100644
--- a/interface/web/mailuser/lib/lang/br_mail_user_filter_list.lng
+++ b/interface/web/mailuser/lib/lang/br_mail_user_filter_list.lng
@@ -4,5 +4,5 @@ $wb['rulename_txt'] = 'Nome';
 $wb['add_new_record_txt'] = 'Adicionar novo filtro';
 $wb['page_txt'] = 'Página';
 $wb['page_of_txt'] = 'de';
-$wb['delete_confirmation'] = 'Você tem certeza que gostaria de remover este filtro de e-mail?';
+$wb['delete_confirmation'] = 'Você tem certeza que deseja remover este filtro de e-mail?';
 ?>
diff --git a/interface/web/mailuser/lib/lang/br_mail_user_password.lng b/interface/web/mailuser/lib/lang/br_mail_user_password.lng
index 154a44cd7b..7a64df748a 100644
--- a/interface/web/mailuser/lib/lang/br_mail_user_password.lng
+++ b/interface/web/mailuser/lib/lang/br_mail_user_password.lng
@@ -1,11 +1,11 @@
 <?php
-$wb['mailbox_password_txt'] = 'Senha da Caixa Postal';
+$wb['mailbox_password_txt'] = 'Senha da conta de e-mail';
 $wb['password_txt'] = 'Senha';
 $wb['password_strength_txt'] = 'Dificuldade da senha';
-$wb['email_txt'] = 'e-mail';
-$wb['generate_password_txt'] = 'Gerar senha';
-$wb['repeat_password_txt'] = 'Repetir senha';
+$wb['email_txt'] = 'e-Mail';
+$wb['generate_password_txt'] = 'Gerar Senha';
+$wb['repeat_password_txt'] = 'Repetir Senha';
 $wb['password_mismatch_txt'] = 'As senhas não coincidem.';
 $wb['password_match_txt'] = 'As senhas coincidem.';
-$wb['password_click_to_set_txt'] = 'Confirmar';
+$wb['password_click_to_set_txt'] = 'Clique para configurar';
 ?>
diff --git a/interface/web/mailuser/lib/lang/br_mail_user_spamfilter.lng b/interface/web/mailuser/lib/lang/br_mail_user_spamfilter.lng
index a4973817a2..eb36922041 100644
--- a/interface/web/mailuser/lib/lang/br_mail_user_spamfilter.lng
+++ b/interface/web/mailuser/lib/lang/br_mail_user_spamfilter.lng
@@ -1,7 +1,7 @@
 <?php
 $wb['mailbox_spamfilter_txt'] = 'Filtros anti-spam';
 $wb['spamfilter_txt'] = 'Filtro anti-spam';
-$wb['email_txt'] = 'e-mail';
+$wb['email_txt'] = 'e-Mail';
 $wb['no_policy'] = '-desabilitado-';
 $wb['policy_txt'] = 'Política';
 ?>
diff --git a/interface/web/mailuser/lib/lang/tr.lng b/interface/web/mailuser/lib/lang/tr.lng
index fa5a7e12ab..c9d03bfff6 100644
--- a/interface/web/mailuser/lib/lang/tr.lng
+++ b/interface/web/mailuser/lib/lang/tr.lng
@@ -4,6 +4,6 @@ $wb['Overview'] = 'Özet';
 $wb['Password'] = 'Parola';
 $wb['Autoresponder'] = 'Otomatik yanıtlayıcı';
 $wb['Send copy'] = 'Kopya gönder';
-$wb['Spamfilter'] = 'Önemsiz posta süzgeci';
+$wb['Spamfilter'] = 'Önemsiz ileti süzgeci';
 $wb['Email Filters'] = 'E-posta Süzgeçleri';
 ?>
diff --git a/interface/web/mailuser/lib/lang/tr_index.lng b/interface/web/mailuser/lib/lang/tr_index.lng
index 4c0c553b79..47e12d6982 100644
--- a/interface/web/mailuser/lib/lang/tr_index.lng
+++ b/interface/web/mailuser/lib/lang/tr_index.lng
@@ -1,11 +1,11 @@
 <?php
-$wb['page_head_txt'] = 'Posta Kutusu Ayarları';
+$wb['page_head_txt'] = 'E-posta Kutusu Ayarları';
 $wb['page_desc_txt'] = 'E-posta hesabı ayarları buradan yapılabilir.';
 $wb['email_txt'] = 'E-posta adresi';
 $wb['login_txt'] = 'Kullanıcı Adı';
-$wb['server_address_txt'] = 'Posta sunucusu adresi';
-$wb['cc_txt'] = 'Kopya adresi (CC)';
-$wb['quota_txt'] = 'Posta kutusu boyutu';
+$wb['server_address_txt'] = 'E-posta Sunucusu Adresi';
+$wb['cc_txt'] = 'Kopya Adresi (CC)';
+$wb['quota_txt'] = 'E-posta Kutusu Boyutu';
 $wb['unlimited_txt'] = 'Sınırsız';
 $wb['mb_txt'] = 'MB';
 $wb['none_txt'] = 'Yok';
diff --git a/interface/web/mailuser/lib/lang/tr_mail_user_filter.lng b/interface/web/mailuser/lib/lang/tr_mail_user_filter.lng
index ac4938d768..57db197901 100644
--- a/interface/web/mailuser/lib/lang/tr_mail_user_filter.lng
+++ b/interface/web/mailuser/lib/lang/tr_mail_user_filter.lng
@@ -7,7 +7,7 @@ $wb['rulename_error_empty'] = 'Ad boÅŸ olamaz.';
 $wb['searchterm_is_empty'] = 'Arama ifadesi boÅŸ olamaz.';
 $wb['source_txt'] = 'Kaynak';
 $wb['target_error_regex'] = 'Hedef için yalnız şu karakterler kullanılabilir: a-z, 0-9, -, ., _, ve {boşluk}';
-$wb['limit_mailfilter_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla önemsiz posta süzgeci sayısı sınırına ulaştınız.';
+$wb['limit_mailfilter_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla önemsiz ileti süzgeci sayısı sınırına ulaştınız.';
 $wb['subject_txt'] = 'Konu';
 $wb['from_txt'] = 'Kimden';
 $wb['to_txt'] = 'Kime';
@@ -17,5 +17,5 @@ $wb['begins_with_txt'] = 'Åžununla baÅŸlayan';
 $wb['ends_with_txt'] = 'Åžununla biten';
 $wb['move_to_txt'] = 'Şuraya taşı';
 $wb['delete_txt'] = 'Sil';
-$wb['mailbox_filter_txt'] = 'Mailbox filter';
+$wb['mailbox_filter_txt'] = 'E-posta kutusu süzgeci';
 ?>
diff --git a/interface/web/mailuser/lib/lang/tr_mail_user_filter_list.lng b/interface/web/mailuser/lib/lang/tr_mail_user_filter_list.lng
index 36bfe6a25c..3a14043e92 100644
--- a/interface/web/mailuser/lib/lang/tr_mail_user_filter_list.lng
+++ b/interface/web/mailuser/lib/lang/tr_mail_user_filter_list.lng
@@ -4,5 +4,5 @@ $wb['rulename_txt'] = 'Ad';
 $wb['add_new_record_txt'] = 'Süzgeç Ekle';
 $wb['page_txt'] = 'Sayfa';
 $wb['page_of_txt'] = '/';
-$wb['delete_confirmation'] = 'Posta süzgecini silmek istediğinize emin misiniz?';
+$wb['delete_confirmation'] = 'E-posta süzgecini silmek istediğinize emin misiniz?';
 ?>
diff --git a/interface/web/mailuser/lib/lang/tr_mail_user_password.lng b/interface/web/mailuser/lib/lang/tr_mail_user_password.lng
index d06ad94bb0..c35319ced1 100644
--- a/interface/web/mailuser/lib/lang/tr_mail_user_password.lng
+++ b/interface/web/mailuser/lib/lang/tr_mail_user_password.lng
@@ -1,11 +1,11 @@
 <?php
-$wb['mailbox_password_txt'] = 'Posta kutusu parolası';
+$wb['mailbox_password_txt'] = 'E-posta kutusu parolası';
 $wb['password_txt'] = 'Parola';
-$wb['password_strength_txt'] = 'Parola Güçlüğü';
+$wb['password_strength_txt'] = 'Parola ZorluÄŸu';
 $wb['email_txt'] = 'E-posta';
-$wb['generate_password_txt'] = 'Parola OluÅŸtur';
+$wb['generate_password_txt'] = 'Parola Ãœret';
 $wb['repeat_password_txt'] = 'Parola Onayı';
 $wb['password_mismatch_txt'] = 'Parola ile onayı aynı değil.';
 $wb['password_match_txt'] = 'Parola ile onayı aynı.';
-$wb['password_click_to_set_txt'] = 'Click to set';
+$wb['password_click_to_set_txt'] = 'Ayarlamak için tıklayın';
 ?>
diff --git a/interface/web/mailuser/lib/lang/tr_mail_user_spamfilter.lng b/interface/web/mailuser/lib/lang/tr_mail_user_spamfilter.lng
index d63f274e49..3426385a2e 100644
--- a/interface/web/mailuser/lib/lang/tr_mail_user_spamfilter.lng
+++ b/interface/web/mailuser/lib/lang/tr_mail_user_spamfilter.lng
@@ -1,6 +1,6 @@
 <?php
-$wb['mailbox_spamfilter_txt'] = 'Önemsiz Posta Süzgeci';
-$wb['spamfilter_txt'] = 'Önemsiz posta süzgeci';
+$wb['mailbox_spamfilter_txt'] = 'Önemsiz İleti Süzgeci';
+$wb['spamfilter_txt'] = 'Önemsiz ileti süzgeci';
 $wb['email_txt'] = 'E-posta';
 $wb['no_policy'] = '- devre dışı -';
 $wb['policy_txt'] = 'Kural';
diff --git a/interface/web/monitor/lib/lang/br.lng b/interface/web/monitor/lib/lang/br.lng
index 72325cc5b3..172891cfd9 100644
--- a/interface/web/monitor/lib/lang/br.lng
+++ b/interface/web/monitor/lib/lang/br.lng
@@ -1,37 +1,39 @@
 <?php
-$wb['Server online since'] = 'Servidor online desde';
+$wb['Server online since'] = 'Servidor on-line desde';
 $wb['Users online'] = 'Usuários on-line';
 $wb['System load 1 minute'] = 'Carga do sistema - 1 min';
 $wb['System load 5 minutes'] = 'Carga do sistema - 5 min';
 $wb['System load 15 minutes'] = 'Carga do sistema - 15 min';
-$wb['Server Load'] = 'Carga do servidor';
-$wb['Disk usage'] = 'Uso do disco';
-$wb['Memory usage'] = 'Uso da memória';
-$wb['no_data_serverload_txt'] = 'Sem registros da carga do servidor disponíveis no momento. Tente novamente mais tarde.';
-$wb['no_data_memusage_txt'] = 'Sem registro uso de memória disponíveis no momento. Tente novamente mais tarde.';
-$wb['no_data_diskusage_txt'] = 'Sem registros sobre o uso dos discos disponíveis no momento. Tente novamente mais tarde.';
-$wb['no_data_cpuinfo_txt'] = 'Sem registros sobre CPU disponíveis no momento. Tente novamente mais tarde.';
-$wb['no_data_services_txt'] = 'Sem registro sobre os serviços disponíveis no momento. Tente novamente mais tarde.';
-$wb['no_data_updates_txt'] = 'Sem atualização de dados disponíveis no momento. Tente novamente mais tarde.';
-$wb['no_data_raid_txt'] = 'Sem registros sobre RAID disponíveis no momento. Tente novamente mais tarde.';
-$wb['no_data_rkhunter_txt'] = 'Sem registros sobre o RKHUNTER disponíveis no momento. Tente novamente mais tarde.';
-$wb['no_data_mailq_txt'] = 'Sem registro sobre a fila de e-mails disponíveis no momento. Tente novamente mais tarde.';
-$wb['no_logdata_txt'] = 'Sem registros de log disponíveis no momento. Tente novamente mais tarde.';
-$wb['Monitoring'] = 'Monitoramento';
+$wb['Server Load'] = 'Carga do Sistema';
+$wb['Disk usage'] = 'Uso do Disco';
+$wb['Memory usage'] = 'Uso da Memória';
+$wb['no_data_serverload_txt'] = 'Nenhum dado sobre o servidor disponível no momento. Por favor, verifique mais tarde.';
+$wb['no_data_memusage_txt'] = 'Nenhum dado sobre uso da memória disponível no momento. Por favor, verifique mais tarde.';
+$wb['no_data_diskusage_txt'] = 'Nenhum dado sobre o uso do disco disponível no momento. Por favor, verifique mais tarde.';
+$wb['no_data_database_size_txt'] = 'Nenhum dado sobre o uso do banco de dados disponível no momento. Por favor, verifique mais tarde.';
+$wb['no_data_cpuinfo_txt'] = 'Nenhum dado sobre a CPU disponível no momento. Por favor, verifique mais tarde.';
+$wb['no_data_services_txt'] = 'Nenhum dado sobre os serviços disponível no momento. Por favor, verifique mais tarde.';
+$wb['no_data_updates_txt'] = 'Nenhum dado sobre atualizações disponível no momento. Por favor, verifique mais tarde.';
+$wb['no_data_raid_txt'] = 'Nenhum dados sobre o RAID disponível no momento. Por favor, verifique mais tarde.';
+$wb['no_data_rkhunter_txt'] = 'Nenhum dado sobre o RKHunter disponível no momento. Por favor, verifique mais tarde.';
+$wb['no_data_mailq_txt'] = 'Nenhum dados sobre as filas de e-mail disponível no momento. Por favor, verifique mais tarde.';
+$wb['no_logdata_txt'] = 'Nenhum dado de log disponível no momento. Por favor, verifique mais tarde.';
+$wb['Monitoring'] = 'Monitorando';
 $wb['Server to Monitor'] = 'Servidor a monitorar';
-$wb['Logfiles'] = 'Arquivos de log';
-$wb['Status of services'] = 'Estado dos serviços';
-$wb['No Refresh'] = 'Não atualize';
+$wb['Logfiles'] = 'Log';
+$wb['Status of services'] = 'Estado dos Serviços';
+$wb['No Refresh'] = 'Não atualizar';
 $wb['minutes'] = 'minutos';
-$wb['Show Overview'] = 'Visão geral';
-$wb['System State (All Servers)'] = 'Estado do Sistema (todos os servidores)';
-$wb['Hardware-Information'] = 'Informação de hardware';
+$wb['Show Overview'] = 'Exibir visão geral';
+$wb['System State (All Servers)'] = 'Estado do Sistema (Todos os servidores)';
+$wb['Hardware-Information'] = 'Informações do Hardware';
 $wb['Show CPU info'] = 'Exibir informações da CPU';
 $wb['Server State'] = 'Estado do Servidor';
 $wb['Show Update State'] = 'Exibir estado atual';
 $wb['Show RAID state'] = 'Exibir estado do RAID';
 $wb['Show Server load'] = 'Exibir carga do servidor';
 $wb['Show Disk usage'] = 'Exibir uso do disco';
+$wb['Show MySQL Database size'] = 'Exibir tamanho do banco de dados mysql';
 $wb['Show Memory usage'] = 'Exibir uso da memória';
 $wb['Show Services'] = 'Exibir serviços';
 $wb['Show Mail-Queue'] = 'Exibir fila de e-mails';
@@ -42,124 +44,123 @@ $wb['Show System-Log'] = 'Exibir log do sistema';
 $wb['Show ISPC Cron-Log'] = 'Exibir log do cron';
 $wb['Show Freshclam-Log'] = 'Exibir log do freshclam';
 $wb['Show Clamav-Log'] = 'Exibir log do clamav';
-$wb['Show ISPConfig-Log'] = 'Exibir log do ispconfig';
+$wb['Show ISPConfig-Log'] = 'Exibir log do ISPConfig';
 $wb['Show RKHunter-Log'] = 'Exibir log do rkhunter';
-$wb['Show Jobqueue'] = 'Exibir fila de trabalho';
+$wb['Show Jobqueue'] = 'Exibir fila de tarefas';
+$wb['Show Data Log History'] = 'Exibir histórico do log';
+$wb['Show fail2ban-Log'] = 'Exibir log do fail2ban';
+$wb['Show MongoDB-Log'] = 'Exibir log do mongodb';
+$wb['Show IPTables'] = 'Exibir regras de firewall';
+$wb['Show OpenVz VE BeanCounter'] = 'Exibir beancounter do openvz';
 $wb['monitor_general_serverstate_txt'] = 'Estado do servidor';
 $wb['monitor_general_systemstate_txt'] = 'Estado do sistema';
-$wb['monitor_diskusage_filesystem_txt'] = 'Sistema de arquivos';
+$wb['monitor_diskusage_filesystem_txt'] = 'Arquivos do sistema';
 $wb['monitor_diskusage_type_txt'] = 'Tipo';
 $wb['monitor_diskusage_size_txt'] = 'Tamanho';
-$wb['monitor_diskusage_used_txt'] = 'Utilizado';
+$wb['monitor_diskusage_used_txt'] = 'Uso';
 $wb['monitor_diskusage_available_txt'] = 'Disponível';
-$wb['monitor_diskusage_usage_txt'] = 'Uso %';
+$wb['monitor_diskusage_usage_txt'] = 'Percentual Utilizado';
 $wb['monitor_diskusage_mounted_txt'] = 'Montado em';
-$wb['monitor_logs_mail_txt'] = 'Log de e-mail';
-$wb['monitor_logs_mailwarn_txt'] = 'Alertas de e-mails';
-$wb['monitor_logs_mailerr_txt'] = 'Erros de e-mails';
-$wb['monitor_logs_messages_txt'] = 'Log do sistema';
-$wb['monitor_logs_ispccron_txt'] = 'Log do cron';
-$wb['monitor_logs_freshclam_txt'] = 'Logo do freshclam';
-$wb['monitor_logs_clamav_txt'] = 'Log do clamav ';
-$wb['monitor_logs_ispc_txt'] = 'Log do ispconfig';
-$wb['monitor_norkhunter_txt'] = 'RKHunter não está instalado, então não existem logs a exibir';
+$wb['monitor_database_name_txt'] = 'Banco de dados';
+$wb['monitor_database_size_txt'] = 'Tamanho';
+$wb['monitor_database_client_txt'] = 'Cliente';
+$wb['monitor_database_domain_txt'] = 'Domínio';
+$wb['monitor_logs_mail_txt'] = 'Log - e-Mails';
+$wb['monitor_logs_mailwarn_txt'] = 'Log - Alertas de e-mail';
+$wb['monitor_logs_mailerr_txt'] = 'Log - Erros de e-mail';
+$wb['monitor_logs_messages_txt'] = 'Log - Mensagens do sistema';
+$wb['monitor_logs_ispccron_txt'] = 'Log - Tarefas no cron';
+$wb['monitor_logs_freshclam_txt'] = 'Log - freshclam';
+$wb['monitor_logs_clamav_txt'] = 'Log - clamav';
+$wb['monitor_logs_ispc_txt'] = 'Log - ISPConfig';
+$wb['monitor_nosupportedraid1_txt'] = 'No momento possuímos suporte para \'mdadm\'ou \'mpt-status\' para monitoramento do RAID.<br> Não encontramos nenhum dos dois neste servidor.<br><br> Isto significa que não podemos oferecer suporte ao seu RAID ainda.';
+$wb['monitor_norkhunter_txt'] = 'O RKHunter não está instalado, desta forma, não existe log';
 $wb['monitor_serverstate_server_txt'] = 'Servidor';
 $wb['monitor_serverstate_kernel_txt'] = 'Kernel';
 $wb['monitor_serverstate_state_txt'] = 'Estado';
-$wb['monitor_serverstate_unknown_txt'] = 'desconhecido(s)';
-$wb['monitor_serverstate_info_txt'] = 'informação(es)';
-$wb['monitor_serverstate_warning_txt'] = 'aviso(s)';
-$wb['monitor_serverstate_critical_txt'] = 'crítico(s)';
-$wb['monitor_serverstate_error_txt'] = 'erro(s)';
+$wb['monitor_serverstate_unknown_txt'] = 'desconhecido';
+$wb['monitor_serverstate_info_txt'] = 'info';
+$wb['monitor_serverstate_warning_txt'] = 'alerta';
+$wb['monitor_serverstate_critical_txt'] = 'crítico';
+$wb['monitor_serverstate_error_txt'] = 'erro';
 $wb['monitor_serverstate_moreinfo_txt'] = 'Mais informações...';
 $wb['monitor_serverstate_more_txt'] = 'Mais...';
-$wb['monitor_serverstate_fclamok_txt'] = 'Definições de anti-vírus OK';
-$wb['monitor_serverstate_fclamoutdated_txt'] = 'Definições de anti-vírus DESATUALIZADAS!';
+$wb['monitor_serverstate_fclamok_txt'] = 'A proteção anti-vírus está ok';
+$wb['monitor_serverstate_fclamoutdated_txt'] = 'A proteção anti-vírus está desatualizada!';
 $wb['monitor_serverstate_fclamunknown_txt'] = 'Freshclam: ???!';
-$wb['monitor_serverstate_hdok_txt'] = 'Disco OK';
-$wb['monitor_serverstate_hdgoingfull_txt'] = 'Disco cheio';
-$wb['monitor_serverstate_hdnearlyfull_txt'] = 'Disco com pouco espaço';
-$wb['monitor_serverstate_hdveryfull_txt'] = 'Disco com espaço insuficiente';
-$wb['monitor_serverstate_hdfull_txt'] = 'Disco sem espaço';
-$wb['monitor_serverstate_hdunknown_txt'] = 'Disco rígido: ???';
+$wb['monitor_serverstate_hdok_txt'] = 'O uso do disco está ok';
+$wb['monitor_serverstate_hdgoingfull_txt'] = 'O uso do disco está moderado';
+$wb['monitor_serverstate_hdnearlyfull_txt'] = 'O uso do disco está próximo do limite';
+$wb['monitor_serverstate_hdveryfull_txt'] = 'O uso do disco está crítico';
+$wb['monitor_serverstate_hdfull_txt'] = 'Não existe mais espaço no disco para uso';
+$wb['monitor_serverstate_hdunknown_txt'] = 'Disco(HDD): ???';
 $wb['monitor_serverstate_listok_txt'] = 'ok';
-$wb['monitor_serverstate_listinfo_txt'] = 'informação';
-$wb['monitor_serverstate_listwarning_txt'] = 'aviso';
+$wb['monitor_serverstate_listinfo_txt'] = 'info';
+$wb['monitor_serverstate_listwarning_txt'] = 'alerta';
 $wb['monitor_serverstate_listcritical_txt'] = 'crítico';
 $wb['monitor_serverstate_listerror_txt'] = 'erro';
 $wb['monitor_serverstate_listunknown_txt'] = 'desconhecido';
-$wb['monitor_serverstate_loadok_txt'] = 'Carga do servidor OK';
-$wb['monitor_serverstate_loadheavy_txt'] = 'Carga do servidor: alta';
-$wb['monitor_serverstate_loadhigh_txt'] = 'Carga do servidor: média';
-$wb['monitor_serverstate_loaghigher_txt'] = 'Carga do servidor: excessiva';
-$wb['monitor_serverstate_loadhighest_txt'] = 'Carga do servidor: extrema';
-$wb['monitor_serverstate_loadunknown_txt'] = 'Carga do servidor: ???';
-$wb['monitor_serverstate_mailqok_txt'] = 'Fila de e-mails OK';
-$wb['monitor_serverstate_mailqheavy_txt'] = 'Fila de e-mails: alta';
-$wb['monitor_serverstate_mailqhigh_txt'] = 'Fila de e-mails: média';
-$wb['monitor_serverstate_mailqhigher_txt'] = 'Fila de e-mails: excessiva';
-$wb['monitor_serverstate_mailqhighest_txt'] = 'Fila de e-mails: extrema';
+$wb['monitor_serverstate_loadok_txt'] = 'A carga do servidor está ok';
+$wb['monitor_serverstate_loadheavy_txt'] = 'O servidor está sob carga média';
+$wb['monitor_serverstate_loadhigh_txt'] = 'O servidor está sob carga alta';
+$wb['monitor_serverstate_loaghigher_txt'] = 'O servidor está sob carga muito alta';
+$wb['monitor_serverstate_loadhighest_txt'] = 'O servidor está sob carga crítica';
+$wb['monitor_serverstate_loadunknown_txt'] = 'Carga do Servidor: ???';
+$wb['monitor_serverstate_mailqok_txt'] = 'A fila de e-mails está ok';
+$wb['monitor_serverstate_mailqheavy_txt'] = 'A fila de e-mails está moderada';
+$wb['monitor_serverstate_mailqhigh_txt'] = 'A fila de e-mails está grande';
+$wb['monitor_serverstate_mailqhigher_txt'] = 'A fila de está muito grande';
+$wb['monitor_serverstate_mailqhighest_txt'] = 'A fila de e-mails está crítica';
 $wb['monitor_serverstate_mailqunknown_txt'] = 'Fila de e-mails: ???';
-$wb['monitor_serverstate_raidok_txt'] = 'RAID OK';
-$wb['monitor_serverstate_raidresync_txt'] = 'RAID em modo RESYNC';
-$wb['monitor_serverstate_raidfault_txt'] = 'RAID possui um disco com falhas. Troque-o o mais rápido possível!';
-$wb['monitor_serverstate_raiderror_txt'] = 'RAID parado.';
-$wb['monitor_serverstate_raidunknown_txt'] = 'RAID: ???';
-$wb['monitor_serverstate_servicesonline_txt'] = 'Todos os serviços necessários estão on-line';
-$wb['monitor_serverstate_servicesoffline_txt'] = 'Um ou mais serviços necessários estão off-line';
+$wb['monitor_serverstate_raidok_txt'] = 'O RAID está ok';
+$wb['monitor_serverstate_raidresync_txt'] = 'O RAID está em modo RESYNC';
+$wb['monitor_serverstate_raidfault_txt'] = 'O RAID possui uma disco com falha. Substitua o mais rápido possível!';
+$wb['monitor_serverstate_raiderror_txt'] = 'O RAID não está funcionando';
+$wb['monitor_serverstate_raidunknown_txt'] = 'Estado do RAID: ???';
+$wb['monitor_serverstate_servicesonline_txt'] = 'Todos os serviços estão on-line';
+$wb['monitor_serverstate_servicesoffline_txt'] = 'Um ou mais serviços estão off-line';
 $wb['monitor_serverstate_servicesunknown_txt'] = 'Serviços: ???';
-$wb['monitor_serverstate_syslogok_txt'] = 'O log do sistema está OK';
-$wb['monitor_serverstate_syslogwarning_txt'] = 'Existem alguns alertas no log do sistema';
-$wb['monitor_serverstate_syslogerror_txt'] = 'Existem erros no log do sistema';
-$wb['monitor_serverstate_syslogunknown_txt'] = 'syslog:???';
-$wb['monitor_serverstate_updatesok_txt'] = 'Sistema atualizado.';
-$wb['monitor_serverstate_updatesneeded_txt'] = 'Um ou mais componentes necessitam de atualização';
-$wb['monitor_serverstate_updatesunknown_txt'] = 'Estado do sistema:???';
+$wb['monitor_serverstate_syslogok_txt'] = 'O log do sistema está ok.';
+$wb['monitor_serverstate_syslogwarning_txt'] = 'Existem algumas mensagens de alerta no log do sistema';
+$wb['monitor_serverstate_syslogerror_txt'] = 'Existem algumas mensagens de erros no log do sistema';
+$wb['monitor_serverstate_syslogunknown_txt'] = 'Log do sistema: ???';
+$wb['monitor_serverstate_updatesok_txt'] = 'O sistema está atualizado.';
+$wb['monitor_serverstate_updatesneeded_txt'] = 'Um ou mais componentes do sistema necessitam atualização';
+$wb['monitor_serverstate_updatesunknown_txt'] = 'Atualizar Sistema: ???';
+$wb['monitor_serverstate_beancounterok_txt'] = 'O beancounter está ok';
+$wb['monitor_serverstate_beancounterinfo_txt'] = 'Existe uma falha de visualização no beancounter';
+$wb['monitor_serverstate_beancounterwarning_txt'] = 'Existe alguma falha no beancounter';
+$wb['monitor_serverstate_beancountercritical_txt'] = 'Existem várias falhas no beancounter';
+$wb['monitor_serverstate_beancountererror_txt'] = 'Existem muitas falhas no beancounter';
 $wb['monitor_services_online_txt'] = 'On-line';
 $wb['monitor_services_offline_txt'] = 'Off-line';
-$wb['monitor_services_web_txt'] = 'Servidor de páginas:';
-$wb['monitor_services_ftp_txt'] = 'Servidor ftp:';
-$wb['monitor_services_smtp_txt'] = 'Servidor smtp:';
-$wb['monitor_services_pop_txt'] = 'Servidor pop:';
-$wb['monitor_services_imap_txt'] = 'Servidor imap:';
-$wb['monitor_services_mydns_txt'] = 'Servidor dns:';
-$wb['monitor_services_mysql_txt'] = 'Servidor mysql:';
-$wb['monitor_settings_datafromdate_txt'] = 'Data de: ';
-$wb['monitor_settings_datetimeformat_txt'] = 'd/m/Y H:i';
-$wb['monitor_settings_refreshsq_txt'] = 'Atualizar sequência:';
+$wb['monitor_services_web_txt'] = 'Servidor WEB:';
+$wb['monitor_services_ftp_txt'] = 'Servidor FTP:';
+$wb['monitor_services_smtp_txt'] = 'Servidor SMTP:';
+$wb['monitor_services_pop_txt'] = 'Servidor POP3:';
+$wb['monitor_services_imap_txt'] = 'Servidor IMAP:';
+$wb['monitor_services_mydns_txt'] = 'Servidor DNS:';
+$wb['monitor_services_mongodb_txt'] = 'Servidor MONGODB:';
+$wb['monitor_services_mysql_txt'] = 'Servidor MYSQL:';
+$wb['monitor_settings_datafromdate_txt'] = 'Dados de: ';
+$wb['monitor_settings_datetimeformat_txt'] = 'd-m-Y H:i';
+$wb['monitor_settings_refreshsq_txt'] = 'Sequência de atualização:';
 $wb['monitor_settings_server_txt'] = 'Servidor';
-$wb['monitor_title_cpuinfo_txt'] = 'Informação da cpu';
-$wb['monitor_title_updatestate_txt'] = 'Atualizar estado';
+$wb['monitor_title_cpuinfo_txt'] = 'Informações de CPU';
+$wb['monitor_title_updatestate_txt'] = 'Atualizar Estado';
 $wb['monitor_title_mailq_txt'] = 'Fila de e-mails';
 $wb['monitor_title_raidstate_txt'] = 'Estado do RAID';
-$wb['monitor_title_rkhunterlog_txt'] = 'Log do RKHunter';
-$wb['monitor_updates_nosupport_txt'] = 'Sua distribuição não suporta este tipo de monitoramento';
+$wb['monitor_title_rkhunterlog_txt'] = 'Log do rkhunter';
 $wb['monitor_title_fail2ban_txt'] = 'Log do fail2ban';
-$wb['monitor_nosupportedraid1_txt'] = 'Até o presente momento, o suporte a mdadm ou mpt-status para monitoramento do RAID não foi encontrado.<br><br>Provavelmente seu servidor não possui recursos de RAID a serem monitorados.';
-$wb['monitor_serverstate_beancounterok_txt'] = 'Beancounter OK';
-$wb['monitor_serverstate_beancounterinfo_txt'] = 'Existem poucas falhas no beancounter';
-$wb['monitor_serverstate_beancounterwarning_txt'] = 'Existem algumas falhas no beancounter';
-$wb['monitor_serverstate_beancountercritical_txt'] = 'Existem falhas críticas no beancounter';
-$wb['monitor_serverstate_beancountererror_txt'] = 'Existem diversas falhas no beancounter';
-$wb['monitor_title_beancounter_txt'] = 'Beancounter openvz ve';
-$wb['monitor_beancounter_nosupport_txt'] = 'Este servidor não é um um contêiner openvz e não contém informações de beancounter.';
-$wb['monitor_title_iptables_txt'] = 'Regras do firewall';
-$wb['Show fail2ban-Log'] = 'Exibir log do fail2ban';
-$wb['Show IPTables'] = 'Exibir regras do firewall';
-$wb['Show OpenVz VE BeanCounter'] = 'Exibir beancounter do openvz';
+$wb['monitor_title_mongodb_txt'] = 'Log do mongodb';
+$wb['monitor_title_iptables_txt'] = 'Regras de Firewall';
+$wb['monitor_title_beancounter_txt'] = 'Beancounter openvz';
+$wb['monitor_updates_nosupport_txt'] = 'Sua distribuição não é suportada por este monitoramento';
+$wb['monitor_beancounter_nosupport_txt'] = 'Este servidor não é um openvz e não possui nenhuma informação do beancounter';
 $wb['Show Monit'] = 'Exibir Monit';
-$wb['no_monit_url_defined_txt'] = 'Nenhuma url do Monit configurada.';
+$wb['no_monit_url_defined_txt'] = 'Nenhuma URL do Monit definida.';
 $wb['no_permissions_to_view_monit_txt'] = 'Você não tem permissão para acessar o Monit.';
 $wb['Show Munin'] = 'Exibir Munin';
-$wb['no_munin_url_defined_txt'] = 'Nenhuma url do Muni configurada.';
+$wb['no_munin_url_defined_txt'] = 'Nenhuma URL do Munin definida.';
 $wb['no_permissions_to_view_munin_txt'] = 'Você não tem permissão para acessar o Munin.';
-$wb['no_data_database_size_txt'] = 'Nenhuma informação de uso do banco de dados disponível no momento. Por favor verifique novamente mais tarde.';
-$wb['monitor_database_name_txt'] = 'Banco de dados';
-$wb['monitor_database_size_txt'] = 'Tamanho';
-$wb['monitor_database_client_txt'] = 'Cliente';
-$wb['monitor_database_domain_txt'] = 'Domínio';
-$wb['Show MongoDB-Log'] = 'Exibir logs do MongoDB';
-$wb['monitor_services_mongodb_txt'] = 'Servidor MongoDB:';
-$wb['monitor_title_mongodb_txt'] = 'Logs do MongoDB';
-$wb['Show Data Log History'] = 'Show Data Log History';
 ?>
diff --git a/interface/web/monitor/lib/lang/br_datalog_list.lng b/interface/web/monitor/lib/lang/br_datalog_list.lng
index e6b2f554c3..8e044daeb7 100644
--- a/interface/web/monitor/lib/lang/br_datalog_list.lng
+++ b/interface/web/monitor/lib/lang/br_datalog_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['list_head_txt'] = 'Fila de trabalho';
+$wb['list_head_txt'] = 'Fila de tarefas';
 $wb['tstamp_txt'] = 'Data';
 $wb['server_id_txt'] = 'Servidor';
 $wb['dbtable_txt'] = 'Tabela do BD';
 $wb['action_txt'] = 'Ação';
-$wb['status_txt'] = 'Situação';
+$wb['status_txt'] = 'Estado';
 ?>
diff --git a/interface/web/monitor/lib/lang/br_dataloghistory_list.lng b/interface/web/monitor/lib/lang/br_dataloghistory_list.lng
index f1ba8c67b8..0a02fda077 100644
--- a/interface/web/monitor/lib/lang/br_dataloghistory_list.lng
+++ b/interface/web/monitor/lib/lang/br_dataloghistory_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['list_head_txt'] = 'Datalog History';
-$wb['tstamp_txt'] = 'Date';
-$wb['server_id_txt'] = 'Server';
-$wb['dbtable_txt'] = 'DB Table';
-$wb['action_txt'] = 'Action';
-$wb['status_txt'] = 'Status';
+$wb['list_head_txt'] = 'Histórico do log';
+$wb['tstamp_txt'] = 'Data';
+$wb['server_id_txt'] = 'Servidor';
+$wb['dbtable_txt'] = 'Tabela do BD';
+$wb['action_txt'] = 'Ação';
+$wb['status_txt'] = 'Estado';
 ?>
diff --git a/interface/web/monitor/lib/lang/br_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/br_dataloghistory_undo.lng
index 0e040a3e77..be544e6119 100644
--- a/interface/web/monitor/lib/lang/br_dataloghistory_undo.lng
+++ b/interface/web/monitor/lib/lang/br_dataloghistory_undo.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['list_head_txt'] = 'Data Log History Entry';
-$wb['success_txt'] = 'Undo successful';
-$wb['error_txt'] = 'Error during undo: Record does not exist anymore';
-$wb['error_undelete_txt'] = 'Error during undelete: Record with primary id already existing.';
-$wb['btn_cancel_txt'] = 'Back';
+$wb['list_head_txt'] = 'Histórico do log';
+$wb['success_txt'] = 'O comando "Desfazer ação" foi realizado com sucesso';
+$wb['error_txt'] = 'Erro durante desfazer ação: O registro não existe mais';
+$wb['error_undelete_txt'] = 'Erro durante a remoção: Registro com ID primário ainda existe.';
+$wb['btn_cancel_txt'] = 'Voltar';
 ?>
diff --git a/interface/web/monitor/lib/lang/br_dataloghistory_view.lng b/interface/web/monitor/lib/lang/br_dataloghistory_view.lng
index df9ddd286f..8354693280 100644
--- a/interface/web/monitor/lib/lang/br_dataloghistory_view.lng
+++ b/interface/web/monitor/lib/lang/br_dataloghistory_view.lng
@@ -1,26 +1,26 @@
 <?php
-$wb['i'] = 'Insert';
-$wb['u'] = 'Update';
-$wb['d'] = 'Delete';
-$wb['list_head_txt'] = 'Data Log History Entry';
+$wb['i'] = 'Inserir';
+$wb['u'] = 'Atualizar';
+$wb['d'] = 'Remover';
+$wb['list_head_txt'] = 'Histórico do log';
 $wb['id_txt'] = 'ID';
-$wb['timestamp_txt'] = 'Timestamp';
-$wb['table_txt'] = 'Table';
-$wb['action_txt'] = 'Action';
-$wb['session_id_txt'] = 'Session ID';
-$wb['fields_txt'] = 'Fields';
-$wb['fields_inserted_txt'] = 'Inserted Fields';
-$wb['fields_updated_txt'] = 'Updated Fields';
-$wb['fields_deleted_txt'] = 'Deleted Fields';
-$wb['no_changes_txt'] = 'No changes (re-sync)';
-$wb['is_diff_txt'] = 'The differences are highlighted';
-$wb['is_diff_inserts_txt'] = 'Insertions';
-$wb['is_diff_deletes_txt'] = 'Deletions';
-$wb['field_txt'] = 'Field';
-$wb['value_txt'] = 'Value';
-$wb['old_txt'] = 'Old';
-$wb['new_txt'] = 'New';
-$wb['btn_cancel_txt'] = 'Back';
-$wb['undo_txt'] = 'Undo action';
-$wb['undo_confirmation_txt'] = 'Do you really want to undo this action?';
+$wb['timestamp_txt'] = 'Data/Hora';
+$wb['table_txt'] = 'Tabela';
+$wb['action_txt'] = 'Ação';
+$wb['session_id_txt'] = 'ID da sessão';
+$wb['fields_txt'] = 'Campos';
+$wb['fields_inserted_txt'] = 'Campos cadastrados';
+$wb['fields_updated_txt'] = 'Atualizar campos';
+$wb['fields_deleted_txt'] = 'Remover campos';
+$wb['no_changes_txt'] = 'Nenhuma alteração (sincronizar)';
+$wb['is_diff_txt'] = 'As diferenças são destacadas';
+$wb['is_diff_inserts_txt'] = 'Inserções';
+$wb['is_diff_deletes_txt'] = 'Remoções';
+$wb['field_txt'] = 'Campo';
+$wb['value_txt'] = 'Valor';
+$wb['old_txt'] = 'Antigo';
+$wb['new_txt'] = 'Novo';
+$wb['btn_cancel_txt'] = 'Voltar';
+$wb['undo_txt'] = 'Desfazer ação';
+$wb['undo_confirmation_txt'] = 'Você realmente deseja desfazer esta ação?';
 ?>
diff --git a/interface/web/monitor/lib/lang/br_syslog_list.lng b/interface/web/monitor/lib/lang/br_syslog_list.lng
index 23f3c6d5da..ca5a373564 100644
--- a/interface/web/monitor/lib/lang/br_syslog_list.lng
+++ b/interface/web/monitor/lib/lang/br_syslog_list.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['list_head_txt'] = 'Log do Painel';
-$wb['tstamp_txt'] = 'Data';
+$wb['list_head_txt'] = 'Log do ISPConfig';
+$wb['tstamp_txt'] = 'Data/hora';
 $wb['server_id_txt'] = 'Servidor';
-$wb['loglevel_txt'] = 'Nível do Log';
+$wb['loglevel_txt'] = 'Nível';
 $wb['message_txt'] = 'Mensagem';
 ?>
diff --git a/interface/web/monitor/lib/lang/tr.lng b/interface/web/monitor/lib/lang/tr.lng
index 005b4d97e2..20a9e8e140 100644
--- a/interface/web/monitor/lib/lang/tr.lng
+++ b/interface/web/monitor/lib/lang/tr.lng
@@ -1,21 +1,22 @@
 <?php
 $wb['Server online since'] = 'Sunucu şu zamandan beri çevrimiçi';
 $wb['Users online'] = 'Çevrimiçi Kullanıcılar';
-$wb['System load 1 minute'] = '1 dakikalık sistem yükü';
-$wb['System load 5 minutes'] = '5 dakikalık sistem yükü';
-$wb['System load 15 minutes'] = '15 dakikalık sistem yükü';
+$wb['System load 1 minute'] = 'Son 1 dakika sistem yükü';
+$wb['System load 5 minutes'] = 'Son 5 dakika sistem yükü';
+$wb['System load 15 minutes'] = 'Son 15 dakika sistem yükü';
 $wb['Server Load'] = 'Sunucu Yükü';
 $wb['Disk usage'] = 'Disk Kullanımı';
 $wb['Memory usage'] = 'Bellek Kullanımı';
 $wb['no_data_serverload_txt'] = 'Henüz sunucu yükü hakkında bir veri yok. Lütfen bir süre sonra yeniden deneyin.';
 $wb['no_data_memusage_txt'] = 'Henüz bellek kullanımı hakkında bir veri yok. Lütfen bir süre sonra yeniden deneyin.';
 $wb['no_data_diskusage_txt'] = 'Henüz disk kullanımı hakkında bir veri yok. Lütfen bir süre sonra yeniden deneyin.';
+$wb['no_data_database_size_txt'] = 'Henüz veritabanı kullanımı ile ilgili bir veri yok. Lütfen daha sonra yeniden deneyin.';
 $wb['no_data_cpuinfo_txt'] = 'Henüz işlemci hakkında bir veri yok. Lütfen bir süre sonra yeniden deneyin.';
 $wb['no_data_services_txt'] = 'Henüz hizmetler hakkında bir veri yok. Lütfen bir süre sonra yeniden deneyin.';
 $wb['no_data_updates_txt'] = 'Henüz güncellemeler hakkında bir veri yok. Lütfen bir süre sonra yeniden deneyin.';
 $wb['no_data_raid_txt'] = 'Henüz RAID hakkında bir veri yok. Lütfen bir süre sonra yeniden deneyin.';
 $wb['no_data_rkhunter_txt'] = 'Henüz RKHunter hakkında bir veri yok. Lütfen bir süre sonra yeniden deneyin.';
-$wb['no_data_mailq_txt'] = 'Henüz posta kuyruğu hakkında bir veri yok. Lütfen bir süre sonra yeniden deneyin.';
+$wb['no_data_mailq_txt'] = 'Henüz e-posta kuyruğu hakkında bir veri yok. Lütfen bir süre sonra yeniden deneyin.';
 $wb['no_logdata_txt'] = 'Henüz bir günlük verisi yok. Lütfen bir süre sonra yeniden deneyin.';
 $wb['Monitoring'] = 'Ä°zleme';
 $wb['Server to Monitor'] = 'Ä°zlenecek Sunucu';
@@ -34,10 +35,10 @@ $wb['Show Server load'] = 'Sistem Yükü';
 $wb['Show Disk usage'] = 'Disk Kullanımı';
 $wb['Show Memory usage'] = 'Bellek Kullanımı';
 $wb['Show Services'] = 'Hizmetler';
-$wb['Show Mail-Queue'] = 'Posta KuyruÄŸu';
-$wb['Show Mail-Log'] = 'Posta Günlüğü';
-$wb['Show Mail warn-Log'] = 'Posta Uyarı Günlüğü';
-$wb['Show Mail err-Log'] = 'Posta Hata Günlüğü';
+$wb['Show Mail-Queue'] = 'E-posta KuyruÄŸu';
+$wb['Show Mail-Log'] = 'E-posta Günlüğü';
+$wb['Show Mail warn-Log'] = 'E-posta Uyarı Günlüğü';
+$wb['Show Mail err-Log'] = 'E-posta Hata Günlüğü';
 $wb['Show System-Log'] = 'Sistem Günlüğü';
 $wb['Show ISPC Cron-Log'] = 'Zamanlı Görev Günlüğü';
 $wb['Show Freshclam-Log'] = 'Freshclam Günlüğü';
@@ -46,27 +47,32 @@ $wb['Show ISPConfig-Log'] = 'ISPConfig Günlüğü';
 $wb['Show RKHunter-Log'] = 'RKHunter Günlüğü';
 $wb['Show Jobqueue'] = 'Ä°ÅŸ KuyruÄŸu';
 $wb['Show fail2ban-Log'] = 'Fail2ban Günlüğü';
-$wb['Show IPTables'] = 'IPTabloları';
+$wb['Show MongoDB-Log'] = 'MongoDB Günlüğünü Görüntüle';
+$wb['Show IPTables'] = 'IPTables Günlüğü';
 $wb['Show OpenVz VE BeanCounter'] = 'OpenVz VE BeanCounter';
 $wb['monitor_general_serverstate_txt'] = 'Sunucu Durumu';
 $wb['monitor_general_systemstate_txt'] = 'Sistem Durumu';
 $wb['monitor_diskusage_filesystem_txt'] = 'Dosya Sistemi';
-$wb['monitor_diskusage_type_txt'] = 'Tip';
+$wb['monitor_diskusage_type_txt'] = 'Tür';
 $wb['monitor_diskusage_size_txt'] = 'Boyut';
 $wb['monitor_diskusage_used_txt'] = 'Kullanılan';
 $wb['monitor_diskusage_available_txt'] = 'Kullanılabilir';
 $wb['monitor_diskusage_usage_txt'] = 'Kullanım%';
 $wb['monitor_diskusage_mounted_txt'] = 'Bağlantı';
-$wb['monitor_logs_mail_txt'] = 'Posta Günlüğü';
-$wb['monitor_logs_mailwarn_txt'] = 'Posta Uyarı Günlüğü';
-$wb['monitor_logs_mailerr_txt'] = 'Posta Hata Günlüğü';
+$wb['monitor_database_name_txt'] = 'Veritabanı';
+$wb['monitor_database_size_txt'] = 'Boyut';
+$wb['monitor_database_client_txt'] = 'Ä°stemci';
+$wb['monitor_database_domain_txt'] = 'Etki Alanı';
+$wb['monitor_logs_mail_txt'] = 'E-posta Günlüğü';
+$wb['monitor_logs_mailwarn_txt'] = 'E-posta Uyarı Günlüğü';
+$wb['monitor_logs_mailerr_txt'] = 'E-posta Hata Günlüğü';
 $wb['monitor_logs_messages_txt'] = 'Sistem İletileri Günlüğü';
 $wb['monitor_logs_ispccron_txt'] = 'ISPConfig Zamanlı Görev Günlüğü';
 $wb['monitor_logs_freshclam_txt'] = 'Freshclam GÜnlüğü';
 $wb['monitor_logs_clamav_txt'] = 'Clamav Günlüğü';
 $wb['monitor_logs_ispc_txt'] = 'ISPConfig Günlüğü';
-$wb['monitor_nosupportedraid1_txt'] = 'Şimdilik RAID durumunu izlemek için mdadm ya da mpt-status destekleniyor.<br>Bunlardan biri sunucunuzda bulunamadı.<br><br>Bu nedenle RAID sürücünüz henüz desteklenemiyor.';
-$wb['monitor_norkhunter_txt'] = 'RKHunter yüklü olmadığından herhangi bir günlük verisi yok';
+$wb['monitor_nosupportedraid1_txt'] = 'Şimdilik RAID durumunu izlemek için  ya da  destekleniyor.<br>Bunlardan biri sunucunuzda bulunamadı.<br><br>Bu nedenle RAID sürücünüz henüz desteklenemiyor.';
+$wb['monitor_norkhunter_txt'] = 'RKHunter kurulu olmadığından herhangi bir günlük verisi yok';
 $wb['monitor_serverstate_server_txt'] = 'Sunucu';
 $wb['monitor_serverstate_kernel_txt'] = 'Kernel';
 $wb['monitor_serverstate_state_txt'] = 'Durum';
@@ -75,7 +81,7 @@ $wb['monitor_serverstate_info_txt'] = 'bilgi';
 $wb['monitor_serverstate_warning_txt'] = 'uyarı';
 $wb['monitor_serverstate_critical_txt'] = 'kritik';
 $wb['monitor_serverstate_error_txt'] = 'hata';
-$wb['monitor_serverstate_moreinfo_txt'] = 'Ayrıntılı bilgi...';
+$wb['monitor_serverstate_moreinfo_txt'] = 'Ayrıntılı bilgiler...';
 $wb['monitor_serverstate_more_txt'] = 'Ayrıntılar...';
 $wb['monitor_serverstate_fclamok_txt'] = 'Virüs koruması sorunsuz';
 $wb['monitor_serverstate_fclamoutdated_txt'] = 'Virüs koruması GÜNCEL DEĞİL!';
@@ -93,17 +99,17 @@ $wb['monitor_serverstate_listcritical_txt'] = 'kritik';
 $wb['monitor_serverstate_listerror_txt'] = 'hata';
 $wb['monitor_serverstate_listunknown_txt'] = 'bilinmiyor';
 $wb['monitor_serverstate_loadok_txt'] = 'Sunucu yükü: Sorunsuz';
-$wb['monitor_serverstate_loadheavy_txt'] = 'Sunucu yükü: Ağır';
+$wb['monitor_serverstate_loadheavy_txt'] = 'Sunucu yükü: Fazla';
 $wb['monitor_serverstate_loadhigh_txt'] = 'Sunucu yükü: Yüksek';
 $wb['monitor_serverstate_loaghigher_txt'] = 'Sunucu yükü: Çok yüksek';
 $wb['monitor_serverstate_loadhighest_txt'] = 'Sunucu yükü: En yüksek';
 $wb['monitor_serverstate_loadunknown_txt'] = 'Sunucu yükü: ???';
-$wb['monitor_serverstate_mailqok_txt'] = 'Posta kuyruğu yükü: Sorunsuz';
-$wb['monitor_serverstate_mailqheavy_txt'] = 'Posta kuyruğu yükü: Ağır';
-$wb['monitor_serverstate_mailqhigh_txt'] = 'Posta kuyruğu yükü: Yüksek';
-$wb['monitor_serverstate_mailqhigher_txt'] = 'Posta kuyruğu yükü: Çok yüksek';
-$wb['monitor_serverstate_mailqhighest_txt'] = 'Posta kuyruğu yükü: En yüksek';
-$wb['monitor_serverstate_mailqunknown_txt'] = 'Posta kuyruğu yükü: ???';
+$wb['monitor_serverstate_mailqok_txt'] = 'E-posta kuyruğu yükü: Sorunsuz';
+$wb['monitor_serverstate_mailqheavy_txt'] = 'E-posta kuyruğu yükü: Fazla';
+$wb['monitor_serverstate_mailqhigh_txt'] = 'E-posta kuyruğu yükü: Yüksek';
+$wb['monitor_serverstate_mailqhigher_txt'] = 'E-posta kuyruğu yükü: Çok yüksek';
+$wb['monitor_serverstate_mailqhighest_txt'] = 'E-posta kuyruğu yükü: En yüksek';
+$wb['monitor_serverstate_mailqunknown_txt'] = 'E-posta kuyruğu yükü: ???';
 $wb['monitor_serverstate_raidok_txt'] = 'RAID sorunsuz';
 $wb['monitor_serverstate_raidresync_txt'] = 'RAID, RESYNC kipinde';
 $wb['monitor_serverstate_raidfault_txt'] = 'RAID dizisinde hatalı bir disk var. Bu diski en kısa sürede değiştirmelisiniz!';
@@ -118,6 +124,7 @@ $wb['monitor_serverstate_syslogerror_txt'] = 'Sistem günlüğünde hatalar var'
 $wb['monitor_serverstate_syslogunknown_txt'] = 'Sistem Günlüğü: ???';
 $wb['monitor_serverstate_updatesok_txt'] = 'Sistem güncel';
 $wb['monitor_serverstate_updatesneeded_txt'] = 'Bir ya da daha fazla bileşenin güncellenmesi gerekiyor';
+$wb['monitor_serverstate_updatesunknown_txt'] = 'Sistem Güncelleme: ???';
 $wb['monitor_serverstate_beancounterok_txt'] = 'Beancounter sorunsuz';
 $wb['monitor_serverstate_beancounterinfo_txt'] = 'Beancounter kayıtlarında az sayıda hata var';
 $wb['monitor_serverstate_beancounterwarning_txt'] = 'Beancounter kayıtlarında ortalama sayıda hata var';
@@ -130,7 +137,8 @@ $wb['monitor_services_ftp_txt'] = 'FTP Sunucu:';
 $wb['monitor_services_smtp_txt'] = 'SMTP Sunucu:';
 $wb['monitor_services_pop_txt'] = 'POP3 Sunucu:';
 $wb['monitor_services_imap_txt'] = 'IMAP Sunucu:';
-$wb['monitor_services_mydns_txt'] = 'myDNS Sunucu:';
+$wb['monitor_services_mydns_txt'] = 'DNS Sunucu:';
+$wb['monitor_services_mongodb_txt'] = 'MongoDB Sunucusu:';
 $wb['monitor_services_mysql_txt'] = 'mySQL Sunucu:';
 $wb['monitor_settings_datafromdate_txt'] = 'Veri tarihi: ';
 $wb['monitor_settings_datetimeformat_txt'] = 'Y-m-d H:i';
@@ -138,10 +146,11 @@ $wb['monitor_settings_refreshsq_txt'] = 'Yenileme Sıklığı:';
 $wb['monitor_settings_server_txt'] = 'Sunucu';
 $wb['monitor_title_cpuinfo_txt'] = 'Ä°ÅŸlemci Bilgileri';
 $wb['monitor_title_updatestate_txt'] = 'Güncellik Durumu';
-$wb['monitor_title_mailq_txt'] = 'Posta KuyruÄŸu';
+$wb['monitor_title_mailq_txt'] = 'E-posta KuyruÄŸu';
 $wb['monitor_title_raidstate_txt'] = 'RAID Durumu';
 $wb['monitor_title_rkhunterlog_txt'] = 'RKHunter Günlüğü';
 $wb['monitor_title_fail2ban_txt'] = 'Fail2Ban Günlüğü';
+$wb['monitor_title_mongodb_txt'] = 'MongoDB Günlüğü';
 $wb['monitor_title_iptables_txt'] = 'IPTables Kuralları';
 $wb['monitor_title_beancounter_txt'] = 'OpenVz VE BeanCounter';
 $wb['monitor_updates_nosupport_txt'] = 'Dağıtımınız, bu izlemeyi desteklemiyor';
@@ -152,14 +161,4 @@ $wb['no_permissions_to_view_monit_txt'] = 'Monit eriÅŸimi izniniz yok.';
 $wb['Show Munin'] = 'Munin Durumu';
 $wb['no_munin_url_defined_txt'] = 'Munin adresi belirtilmemiÅŸ.';
 $wb['no_permissions_to_view_munin_txt'] = 'Munin eriÅŸimi izniniz yok.';
-$wb['no_data_database_size_txt'] = 'No data about the database usage available at the moment. Please check again later.';
-$wb['Show MongoDB-Log'] = 'Show MongoDB-Log';
-$wb['monitor_database_name_txt'] = 'Database';
-$wb['monitor_database_size_txt'] = 'Size';
-$wb['monitor_database_client_txt'] = 'Client';
-$wb['monitor_database_domain_txt'] = 'Domain';
-$wb['monitor_serverstate_updatesunknown_txt'] = 'System Update: ???';
-$wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:';
-$wb['monitor_title_mongodb_txt'] = 'MongoDB Log';
-$wb['Show Data Log History'] = 'Show Data Log History';
 ?>
diff --git a/interface/web/sites/lib/lang/br.lng b/interface/web/sites/lib/lang/br.lng
index 685ce6ed28..8710dc1140 100644
--- a/interface/web/sites/lib/lang/br.lng
+++ b/interface/web/sites/lib/lang/br.lng
@@ -2,34 +2,37 @@
 $wb['Websites'] = 'Sites';
 $wb['Website'] = 'Site';
 $wb['Subdomain'] = 'Subdomínio';
-$wb['Aliasdomain'] = 'Apelido de domínio';
-$wb['Database'] = 'Bancos de dados';
+$wb['Aliasdomain'] = 'Alias de domínio';
+$wb['Database'] = 'Banco de dados';
+$wb['Database User'] = 'Usuários do banco de dados';
 $wb['Web Access'] = 'Acesso web';
 $wb['FTP-User'] = 'Usuários ftp';
 $wb['Webdav-User'] = 'Usuários webdav';
 $wb['Folder'] = 'Pastas protegidas';
-$wb['Folder users'] = 'Usuários de pastas';
+$wb['Folder users'] = 'Usuários de pastas protegidas';
 $wb['Command Line'] = 'Linha de comando';
-$wb['Shell-User'] = 'Usuários shell';
+$wb['Shell-User'] = 'Usuários do shell';
 $wb['Cron Jobs'] = 'Tarefas no cron';
 $wb['Statistics'] = 'Estatísticas';
 $wb['Web traffic'] = 'Tráfego web';
-$wb['Website quota (Harddisk)'] = 'Cota para sites (disco)';
+$wb['FTP traffic'] = 'Tráfego ftp';
+$wb['Website quota (Harddisk)'] = 'Cota de site (disco)';
+$wb['Database quota'] = 'Cota do banco de dados';
+$wb['Backup Stats'] = 'Estatísticas de backups';
 $wb['Cron'] = 'Cron';
 $wb['Stats'] = 'Estatísticas';
 $wb['Shell'] = 'Shell';
 $wb['Webdav'] = 'Webdav';
 $wb['FTP'] = 'FTP';
 $wb['Options'] = 'Opções';
+$wb['Domain'] = 'Domínio';
 $wb['Redirect'] = 'Redirecionamento';
 $wb['SSL'] = 'SSL';
 $wb['Sites'] = 'Sites';
-$wb['Database User'] = 'Usuários';
-$wb['APS Installer'] = 'Instalação de apps';
+$wb['APS Installer'] = 'Instalador de APPs';
 $wb['Available packages'] = 'Pacotes disponíveis';
 $wb['Installed packages'] = 'Pacotes instalados';
 $wb['Update Packagelist'] = 'Atualizar lista de pacotes';
 $wb['Subdomain (Vhost)'] = 'Subdomínio (vhost)';
-$wb['error_proxy_requires_url'] = 'Tipo de redirecionamento \\"proxy\\" exige uma url como caminho do redirecionamento.';
-$wb['Domain'] = 'Domínio';
+$wb['error_proxy_requires_url'] = 'O tipo de redirecionamento "proxy" exige uma URL como caminho de redirecionamento.';
 ?>
diff --git a/interface/web/sites/lib/lang/br_aps.lng b/interface/web/sites/lib/lang/br_aps.lng
index 27e7434359..744c215192 100644
--- a/interface/web/sites/lib/lang/br_aps.lng
+++ b/interface/web/sites/lib/lang/br_aps.lng
@@ -5,59 +5,59 @@ $wb['available_packages_txt'] = 'Pacotes disponíveis';
 $wb['installed_packages_txt'] = 'Pacotes instalados';
 $wb['yes_txt'] = 'Sim';
 $wb['no_txt'] = 'Não';
-$wb['invalid_id_txt'] = 'Nenhuma ID válida inserida.';
+$wb['invalid_id_txt'] = 'Nenhuma ID válida informada.';
 $wb['details_txt'] = 'Detalhes';
 $wb['version_txt'] = 'Versão';
 $wb['category_txt'] = 'Categoria';
-$wb['homepage_txt'] = 'Página';
+$wb['homepage_txt'] = 'Página Inicial';
 $wb['supported_languages_txt'] = 'Idiomas suportados';
 $wb['description_txt'] = 'Descrição';
 $wb['config_script_txt'] = 'Script de configuração';
-$wb['installed_size_txt'] = 'Tamanho após instalação';
+$wb['installed_size_txt'] = 'Tamanho após a instalação';
 $wb['license_txt'] = 'Licença';
-$wb['screenshots_txt'] = 'Telas';
-$wb['changelog_txt'] = 'Log de mudanças';
-$wb['server_requirements_txt'] = 'Requisitos do servidor';
-$wb['php_extensions_txt'] = 'Extensões PHP';
-$wb['php_settings_txt'] = 'Configurações do PHP';
-$wb['supported_php_versions_txt'] = 'Versões do PHP suportadas';
+$wb['screenshots_txt'] = 'Captura de telas';
+$wb['changelog_txt'] = 'Mudanças Recentes';
+$wb['server_requirements_txt'] = 'Requisitos do Servidor';
+$wb['php_extensions_txt'] = 'Extensões php';
+$wb['php_settings_txt'] = 'Configurações php';
+$wb['supported_php_versions_txt'] = 'Versões do php suportadas';
 $wb['database_txt'] = 'Banco de Dados';
 $wb['settings_txt'] = 'Configurações';
-$wb['install_package_txt'] = 'Instalar esse pacote';
+$wb['install_package_txt'] = 'Instalar este pacote';
 $wb['installation_txt'] = 'Instalação';
 $wb['install_location_txt'] = 'Local da instalação';
-$wb['acceptance_txt'] = 'Aceitação';
-$wb['acceptance_text_txt'] = 'Sim, eu li a licença e aceito os termos.';
+$wb['btn_install_txt'] = 'Instalar';
+$wb['btn_cancel_txt'] = 'Cancelar';
+$wb['acceptance_txt'] = 'Aceitar a licença';
+$wb['acceptance_text_txt'] = 'Sim, li e aceito os termos da licença.';
 $wb['install_language_txt'] = 'Idioma da interface';
 $wb['new_database_password_txt'] = 'Nova senha do banco de dados';
 $wb['basic_settings_txt'] = 'Configurações básicas';
-$wb['package_settings_txt'] = 'Configurações do pacote';
-$wb['error_main_domain'] = 'O domínio no caminho da instalação é é inválido.';
-$wb['error_no_main_location'] = 'Você inseriu um caminho inválido para a instalação.';
-$wb['error_inv_main_location'] = 'A pasta informada para a instalação é inválida.';
-$wb['error_license_agreement'] = 'Para continuar é preciso aceitar os termos da licenciamento.';
-$wb['error_no_database_pw'] = 'Você informou uma senha inválida para o banco de dados.';
-$wb['error_short_database_pw'] = 'Por favor, escolha uma senha com maior complexidade para o banco de dados.';
-$wb['error_no_value_for'] = 'O campo \'%s\' não pode ficar está em branco.';
-$wb['error_short_value_for'] = 'O campo \'%s\' exige um valor maior.';
-$wb['error_long_value_for'] = 'O campo \'%s\' exige um valor mais curto.';
-$wb['error_inv_value_for'] = 'Você inseriu um valor inválido para o campo \'%s\'.';
-$wb['error_inv_email_for'] = 'Você inseriu um e-mail inválido para o campo \'%s\'.';
-$wb['error_inv_domain_for'] = 'Você inseriu um domínio inválido para o campo \'%s\'.';
-$wb['error_inv_integer_for'] = 'Você inseriu um número inválido para o campo \'%s\'.';
-$wb['error_inv_float_for'] = 'Você inseriu um número de ponto flutuante inválido para o campo \'%s\'.';
-$wb['error_used_location'] = 'O caminho da instalação contém um pacote de instalação.';
-$wb['installation_task_txt'] = 'Agendamento de instalação';
+$wb['package_settings_txt'] = 'Configurações de pacotes';
+$wb['error_main_domain'] = 'O domínio para a instalação é inválido.';
+$wb['error_no_main_location'] = 'Não foi informado um caminho válido para a instalação.';
+$wb['error_inv_main_location'] = 'Local da pasta de instalação informado é inválido.';
+$wb['error_license_agreement'] = 'Para continuar é necessário aceitar os termos da licença.';
+$wb['error_no_database_pw'] = 'Não foi informado uma senha válida para o banco de dados.';
+$wb['error_short_database_pw'] = 'Por favor informe uma senha do banco de dados com maior complexidade.';
+$wb['error_no_value_for'] = 'O campo "%s" não pode estar está em branco.';
+$wb['error_short_value_for'] = 'O campo "%s" requer um valor de entrada maior.';
+$wb['error_long_value_for'] = 'O campo "%s" requer um valor de entrada menor.';
+$wb['error_inv_value_for'] = 'O valor informado no campo "%s" é inválido.';
+$wb['error_inv_email_for'] = 'O e-mail informado no campo "%s" é inválido.';
+$wb['error_inv_domain_for'] = 'O domínio informado no campo "%s" é inválido.';
+$wb['error_inv_integer_for'] = 'O número informado no campo "%s" é inválido.';
+$wb['error_inv_float_for'] = 'O número de ponto flutuante informado no campo "%s" é inválido.';
+$wb['error_used_location'] = 'O caminho da instalação selecionado já possui uma instalação de pacote.';
+$wb['installation_task_txt'] = 'Instalação agendada';
 $wb['installation_error_txt'] = 'Erro de instalação';
 $wb['installation_success_txt'] = 'Instalado';
-$wb['installation_remove_txt'] = 'Remove agendamento';
-$wb['packagelist_update_finished_txt'] = 'Atualização da lista de pacotes finalizada.';
-$wb['btn_install_txt'] = 'Instalar';
-$wb['btn_cancel_txt'] = 'Cancelar';
-$wb['limit_aps_txt'] = 'O limite de instâncias de apps para esta conta foi alcançado.';
-$wb['generate_password_txt'] = 'Gerar senha';
-$wb['repeat_password_txt'] = 'Repetir senha';
-$wb['password_mismatch_txt'] = 'A senhas não coincidem.';
-$wb['password_match_txt'] = 'A senhas coincidem.';
+$wb['installation_remove_txt'] = 'Remover instalação agendada';
+$wb['packagelist_update_finished_txt'] = 'Lista de APPs atualizada.';
+$wb['limit_aps_txt'] = 'O limite de instâncias de APPs para esta conta foi alcançado.';
+$wb['generate_password_txt'] = 'Gerar Senha';
+$wb['repeat_password_txt'] = 'Repetir Senha';
+$wb['password_mismatch_txt'] = 'As senhas não coincidem.';
+$wb['password_match_txt'] = 'As senhas coincidem.';
 $wb['password_strength_txt'] = 'Dificuldade da senha';
 ?>
diff --git a/interface/web/sites/lib/lang/br_aps_instances_list.lng b/interface/web/sites/lib/lang/br_aps_instances_list.lng
index fb6a2addd8..da5b80d68e 100644
--- a/interface/web/sites/lib/lang/br_aps_instances_list.lng
+++ b/interface/web/sites/lib/lang/br_aps_instances_list.lng
@@ -5,7 +5,7 @@ $wb['version_txt'] = 'Versão';
 $wb['customer_txt'] = 'Cliente';
 $wb['status_txt'] = 'Estado';
 $wb['install_location_txt'] = 'Local da instalação';
-$wb['pkg_delete_confirmation'] = 'Você realmente deseja remover esta instalação?';
+$wb['pkg_delete_confirmation'] = 'Deseja realmente remover esta instalação?';
 $wb['filter_txt'] = 'Pesquisar';
 $wb['delete_txt'] = 'Remover';
 ?>
diff --git a/interface/web/sites/lib/lang/br_aps_packages_list.lng b/interface/web/sites/lib/lang/br_aps_packages_list.lng
index 641d807f52..bbd0e1ad3d 100644
--- a/interface/web/sites/lib/lang/br_aps_packages_list.lng
+++ b/interface/web/sites/lib/lang/br_aps_packages_list.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['list_head_txt'] = 'Pacotes Disponíveis';
+$wb['list_head_txt'] = 'Pacotes disponíveis';
 $wb['name_txt'] = 'Nome';
 $wb['version_txt'] = 'Versão';
 $wb['category_txt'] = 'Categoria';
diff --git a/interface/web/sites/lib/lang/br_aps_update_packagelist.lng b/interface/web/sites/lib/lang/br_aps_update_packagelist.lng
index 8e53fbb6b1..b81640384c 100644
--- a/interface/web/sites/lib/lang/br_aps_update_packagelist.lng
+++ b/interface/web/sites/lib/lang/br_aps_update_packagelist.lng
@@ -1,7 +1,7 @@
 <?php
 $wb['head_txt'] = 'Atualizar lista de pacotes';
-$wb['list_desc_txt'] = 'Lista de pacotes';
+$wb['list_desc_txt'] = '';
 $wb['btn_start_txt'] = 'Atualizar lista de pacotes';
 $wb['btn_cancel_txt'] = 'Cancelar';
-$wb['legend_txt'] = 'Aqui você pode atualizar a lista de pacotes disponíveis. Por favor, observe que este processo poderá levar alguns minutos. Você pode fechar esta página, o processo continuará em segundo plano.';
+$wb['legend_txt'] = 'Aqui é possível atualizar a lista de pacotes disponíveis. Por favor, observe que esta operação pode demorar vários minutos. Você poderá sair dessa página se quiser; o processo continuará a execução em segundo plano.';
 ?>
diff --git a/interface/web/sites/lib/lang/br_backup_stats_list.lng b/interface/web/sites/lib/lang/br_backup_stats_list.lng
index 5f7f2d9ec7..932ad5dba7 100644
--- a/interface/web/sites/lib/lang/br_backup_stats_list.lng
+++ b/interface/web/sites/lib/lang/br_backup_stats_list.lng
@@ -1,10 +1,10 @@
 <?php
-$wb['list_head_txt'] = 'Estatísticas do banco de Dados';
-$wb['database_name_txt'] = 'Nome do banco de dados';
+$wb['list_head_txt'] = 'Estatísticas de backup';
+$wb['database_name_txt'] = 'Banco de Dados';
 $wb['active_txt'] = 'Ativo';
 $wb['domain_txt'] = 'Domínio';
-$wb['backup_count_txt'] = 'Contador de backup';
+$wb['backup_count_txt'] = 'Contador de backups';
 $wb['backup_server_txt'] = 'Servidor';
-$wb['backup_interval_txt'] = 'Intervalo/contador';
-$wb['backup_size_txt'] = 'Tamanho';
+$wb['backup_interval_txt'] = 'Intervalo entre backups';
+$wb['backup_size_txt'] = 'Tamanho do backup';
 ?>
diff --git a/interface/web/sites/lib/lang/br_cron.lng b/interface/web/sites/lib/lang/br_cron.lng
index 2bbadf6d1b..98d98efa25 100644
--- a/interface/web/sites/lib/lang/br_cron.lng
+++ b/interface/web/sites/lib/lang/br_cron.lng
@@ -8,19 +8,19 @@ $wb['run_hour_txt'] = 'Horas';
 $wb['run_mday_txt'] = 'Dias do mês';
 $wb['run_month_txt'] = 'Meses';
 $wb['run_wday_txt'] = 'Dias da semana';
-$wb['command_txt'] = 'Comando a executar (os comandos serão executados via sh ou urls via wget)';
+$wb['command_txt'] = 'Comando a executar (comandos são executados através do sh, urls através do wget)';
 $wb['limit_cron_txt'] = 'O limite de tarefas no cron foi alcançado.';
-$wb['limit_cron_frequency_txt'] = 'A frequência das tarefas no cron ultrapassou o limite permitido.';
-$wb['run_min_error_format'] = 'Formato dos minutos é inválido.';
-$wb['run_hour_error_format'] = 'Formato das horas é inválido.';
-$wb['run_mday_error_format'] = 'Formato dos dias do mês é inválido.';
-$wb['run_month_error_format'] = 'Formato dos meses é inválido.';
-$wb['run_wday_error_format'] = 'Formato dos dias da semana é inválido.';
-$wb['command_error_format'] = 'Formato de comando é inválido. Somente endereços url http/https são permitidos.';
-$wb['unknown_fieldtype_error'] = 'Um tipo desconhecido de campo foi usado.';
-$wb['server_id_error_empty'] = 'O ID do servidor está em branco.';
-$wb['limit_cron_url_txt'] = 'Somente url do cron. Por favor, insira uma url iniciando com \\"http://\\" e um comando do cron.';
-$wb['command_error_empty'] = 'Comando está em branco.';
-$wb['command_hint_txt'] = 'Você poderá usar, por exemplo: \\"/var/www/clients/clientX/webY/meu_script.sh\\" ou \\"http://www.dominio.com.br/path/script.php\\" e também a palavra reservada \\"[web_root]\\" substituído por \\"/var/www/clients/clientX/webY/web\\".';
-$wb['log_output_txt'] = 'Saída do Log';
+$wb['limit_cron_frequency_txt'] = 'O limite de execuções das tarefas no cron foi alcançado.';
+$wb['run_min_error_format'] = 'Formato inválido para minutos.';
+$wb['run_hour_error_format'] = 'Formato inválido para horas.';
+$wb['run_mday_error_format'] = 'Formato inválido para dias do mês.';
+$wb['run_month_error_format'] = 'Formato inválido para meses.';
+$wb['run_wday_error_format'] = 'Formato inválido para dias da semana.';
+$wb['command_error_format'] = 'Comando possui formato inválido. Por favor, observe que em alguns casos somente chamadas http/https são permitidas.';
+$wb['unknown_fieldtype_error'] = 'Um tipo de campo desconhecido foi utilizado.';
+$wb['server_id_error_empty'] = 'O servidor está em branco.';
+$wb['command_hint_txt'] = 'ex.: /var/www/clients/clientX/webY/myscript.sh ou http://www.dominio.com.br/caminho/script.php, você pode utilizar a área reservada [web_root] para substituir /var/www/clients/clientX/webY/web.';
+$wb['log_output_txt'] = 'Gravar saída do log';
+$wb['limit_cron_url_txt'] = 'Somente URL no cron. Por favor insira uma URL iniciando com http:// como um comando no cron.';
+$wb['command_error_empty'] = 'Comando a executar está em branco.';
 ?>
diff --git a/interface/web/sites/lib/lang/br_cron_list.lng b/interface/web/sites/lib/lang/br_cron_list.lng
index 89fe7932f6..31017512d3 100644
--- a/interface/web/sites/lib/lang/br_cron_list.lng
+++ b/interface/web/sites/lib/lang/br_cron_list.lng
@@ -1,10 +1,10 @@
 <?php
-$wb['list_head_txt'] = 'Tarefas no Cron';
-$wb['active_txt'] = 'Ativas';
+$wb['list_head_txt'] = 'Tarefas no cron';
+$wb['active_txt'] = 'Ativo';
 $wb['server_id_txt'] = 'Servidor';
-$wb['run_min_txt'] = 'Minutos';
-$wb['run_hour_txt'] = 'Horas';
-$wb['run_mday_txt'] = 'Dias do mês';
+$wb['run_min_txt'] = 'Minuto';
+$wb['run_hour_txt'] = 'Hora';
+$wb['run_mday_txt'] = 'Dia do mês';
 $wb['run_month_txt'] = 'Mês';
 $wb['run_wday_txt'] = 'Dia da semana';
 $wb['command_txt'] = 'Comando';
diff --git a/interface/web/sites/lib/lang/br_database.lng b/interface/web/sites/lib/lang/br_database.lng
index ac916feef1..3690ee9cf8 100644
--- a/interface/web/sites/lib/lang/br_database.lng
+++ b/interface/web/sites/lib/lang/br_database.lng
@@ -3,47 +3,47 @@ $wb['server_id_txt'] = 'Servidor';
 $wb['type_txt'] = 'Tipo';
 $wb['database_name_txt'] = 'Nome do banco de dados';
 $wb['database_user_txt'] = 'Usuário do banco de dados';
+$wb['database_ro_user_txt'] = 'Usuário somente leitura';
+$wb['optional_txt'] = 'opcional';
 $wb['database_password_txt'] = 'Senha do banco de dados';
 $wb['password_strength_txt'] = 'Dificuldade da senha';
 $wb['database_charset_txt'] = 'Charset do banco de dados';
+$wb['select_dbuser_txt'] = 'Selecionar usuário';
+$wb['no_dbuser_txt'] = 'Nenhum';
 $wb['remote_access_txt'] = 'Acesso Remoto';
+$wb['remote_ips_txt'] = 'Endereços IP para acesso remoto (separado por vírgula ou deixe em branco para <i>qualquer um</i>)';
+$wb['database_remote_error_ips'] = 'Ao menos um endereço IP informado é inválido.';
 $wb['client_txt'] = 'Cliente';
 $wb['active_txt'] = 'Ativo';
+$wb['database_client_differs_txt'] = 'O cliente do site pai e o banco de dados não coincidem.';
 $wb['database_name_error_empty'] = 'Nome do banco de dados está em branco.';
-$wb['database_name_error_unique'] = 'Já existe um banco de dados com este nome no servidor. O nome escolhido deve ser exclusivo.';
-$wb['database_name_error_regex'] = 'Nome do banco de dados é inválido. Só é permitido para o nome do banco os caracteres: \'a-z\', \'A-Z\', \'0-9\' e o \'underscrore\'. Tamanho: 2 - 64 caracteres.';
-$wb['database_user_error_empty'] = 'Nome do usuário do banco de dados está em branco.';
-$wb['database_user_error_unique'] = 'Já existe um usuário do banco de dados com este nome no servidor. O nome escolhido deve ser exclusivo.';
-$wb['database_user_error_regex'] = 'Nome do usuário do banco de dados é inválido. Só é permitido para nome do usuário banco de dados os caracteres: \'a-z\', \'A-Z\', \'0-9\' e o \'underscrore\'. Tamanho: 2 - 64 caracteres.';
-$wb['limit_database_txt'] = 'O limite de bancos de dados permitido para esta conta foi alcançado.';
-$wb['database_name_change_txt'] = 'O nome do banco de dados não pode ser modificado.';
-$wb['database_charset_change_txt'] = 'O charset do banco de dados não pode ser modificado.';
-$wb['remote_ips_txt'] = 'Endereços IP Remotos (separados por vírgula. Em branco para <i>quaisquer IPs</i>)';
-$wb['database_remote_error_ips'] = 'Pelo menos um dos endereços IP informados não é válido.';
-$wb['database_name_error_len'] = 'Nome do banco de dados - {db} - é muito longo. 64 caracteres, incluindo o prefixo, é o limite permitido.';
-$wb['database_user_error_len'] = 'Nome do usuário do banco de dados \'{user}\' é muito longo. 16 caracteres, incluindo o prefixo, é o limite permitido.';
+$wb['database_name_error_unique'] = 'Já existe um banco de dados com este nome no servidor. Para ter um nome exclusivo, por exemplo, insira o domínio como prefixo do nome.';
+$wb['database_name_error_regex'] = 'Nome do banco de dados é inválido. O nome do banco de dados pode conter os seguintes caracteres: a-z, A-Z, 0-9 e underscore. Comprimento 2 - 64 caracteres.';
+$wb['database_user_error_empty'] = 'Usuário do banco de dados está em branco.';
+$wb['database_user_error_unique'] = 'Já existe um usuário de banco de dados com esse nome. Para ter um nome exclusivo, por exemplo, insira o domínio como prefixo do nome.';
+$wb['database_user_error_regex'] = 'Usuário do banco de dados é inválido. O nome do usuário pode conter os seguintes caracteres: a-z, A-Z, 0-9 e underscore. Comprimento: 2 a 16 caracteres.';
+$wb['limit_database_txt'] = 'O limite de banco de dados foi alcançado para esta conta.';
+$wb['database_name_change_txt'] = 'O nome do banco de dados não pode ser alterado.';
+$wb['database_user_missing_txt'] = 'Por favor, selecione um usuário para este banco de dados.';
+$wb['database_charset_change_txt'] = 'O charset do banco de dados não pode ser alterado.';
+$wb['database_name_error_len'] = 'Nome do banco de dados - {db} - muito longo. O comprimento do nome do banco de dados, incluindo o prefixo, são 64 caracteres.';
+$wb['database_user_error_len'] = 'Nome do usuário do banco de dados - {user} - muito longo. O comprimento do nome do usuário, incluindo o prefixo, são 16 caracteres.';
 $wb['parent_domain_id_txt'] = 'Site';
-$wb['database_site_error_empty'] = 'Selecione o \\"site\\" ao qual o banco de dados pertence.';
-$wb['select_site_txt'] = '- Selecionar site -';
+$wb['database_site_error_empty'] = 'Selecione o site ao qual o banco de dados pertence.';
+$wb['select_site_txt'] = '-Selecionar Site-';
 $wb['btn_save_txt'] = 'Salvar';
 $wb['btn_cancel_txt'] = 'Cancelar';
-$wb['generate_password_txt'] = 'Gerar senha';
-$wb['repeat_password_txt'] = 'Repetir senha';
-$wb['password_mismatch_txt'] = 'A senhas não coincidem.';
-$wb['password_match_txt'] = 'A senhas coincidem.';
+$wb['generate_password_txt'] = 'Gerar Senha';
+$wb['repeat_password_txt'] = 'Repetir Senha';
+$wb['password_mismatch_txt'] = 'As senhas não coincidem.';
+$wb['password_match_txt'] = 'As senhas coincidem.';
 $wb['globalsearch_resultslimit_of_txt'] = 'de';
 $wb['globalsearch_resultslimit_results_txt'] = 'resultados';
 $wb['globalsearch_noresults_text_txt'] = 'Sem resultados.';
 $wb['globalsearch_noresults_limit_txt'] = '0 resultados';
 $wb['globalsearch_searchfield_watermark_txt'] = 'Pesquisar';
 $wb['globalsearch_suggestions_text_txt'] = 'Sugestões';
-$wb['database_ro_user_txt'] = 'Usuário do banco de dados somente leitura';
-$wb['optional_txt'] = 'opcional';
-$wb['select_dbuser_txt'] = 'Selecionar o usuário do banco de dados';
-$wb['no_dbuser_txt'] = 'Nenhum';
-$wb['database_client_differs_txt'] = 'O cliente do site e banco de dados não coincidem.';
-$wb['database_user_missing_txt'] = 'Por favor, selecione um usuário do banco de dados para este banco de dados.';
-$wb['limit_database_quota_txt'] = 'Cota para banco de dados';
-$wb['limit_database_quota_error_notint'] = 'O valor da cota para banco de dados deve ser um número positivo.';
-$wb['limit_database_quota_free_txt'] = 'Cota para banco de dados';
+$wb['limit_database_quota_txt'] = 'Cota do banco de dados';
+$wb['limit_database_quota_error_notint'] = 'O limite da cota do banco de dados deve ser um número.';
+$wb['limit_database_quota_free_txt'] = 'Limite da cota do banco de dados disponível';
 ?>
diff --git a/interface/web/sites/lib/lang/br_database_admin_list.lng b/interface/web/sites/lib/lang/br_database_admin_list.lng
index 4f8f6ba611..eef9b6e3fa 100644
--- a/interface/web/sites/lib/lang/br_database_admin_list.lng
+++ b/interface/web/sites/lib/lang/br_database_admin_list.lng
@@ -1,12 +1,12 @@
 <?php
-$wb['list_head_txt'] = 'Banco de dados';
+$wb['list_head_txt'] = 'Banco de Dados';
 $wb['active_txt'] = 'Ativo';
-$wb['remote_access_txt'] = 'Acesso remoto';
+$wb['remote_access_txt'] = 'Acesso Remoto';
+$wb['type_txt'] = 'Tipo';
 $wb['server_id_txt'] = 'Servidor';
 $wb['database_user_txt'] = 'Usuário do banco de dados';
 $wb['database_name_txt'] = 'Nome do banco de dados';
 $wb['add_new_record_txt'] = 'Adicionar novo banco de dados';
 $wb['sys_groupid_txt'] = 'Cliente';
 $wb['parent_domain_id_txt'] = 'Site';
-$wb['type_txt'] = 'Tipo';
 ?>
diff --git a/interface/web/sites/lib/lang/br_database_list.lng b/interface/web/sites/lib/lang/br_database_list.lng
index afb5d36a0d..b3d438e04b 100644
--- a/interface/web/sites/lib/lang/br_database_list.lng
+++ b/interface/web/sites/lib/lang/br_database_list.lng
@@ -1,11 +1,11 @@
 <?php
-$wb['list_head_txt'] = 'Bancos de Dados';
+$wb['list_head_txt'] = 'Banco de Dados';
 $wb['active_txt'] = 'Ativo';
 $wb['remote_access_txt'] = 'Acesso Remoto';
+$wb['type_txt'] = 'Tipo';
 $wb['server_id_txt'] = 'Servidor';
 $wb['database_user_txt'] = 'Usuário do banco de dados';
 $wb['database_name_txt'] = 'Nome do banco de dados';
-$wb['add_new_record_txt'] = 'Adicionar um novo banco de dados';
+$wb['add_new_record_txt'] = 'Adicionar novo registro';
 $wb['parent_domain_id_txt'] = 'Site';
-$wb['type_txt'] = 'Tipo';
 ?>
diff --git a/interface/web/sites/lib/lang/br_database_quota_stats_list.lng b/interface/web/sites/lib/lang/br_database_quota_stats_list.lng
index 90202f115f..41fd305a3a 100644
--- a/interface/web/sites/lib/lang/br_database_quota_stats_list.lng
+++ b/interface/web/sites/lib/lang/br_database_quota_stats_list.lng
@@ -1,9 +1,9 @@
 <?php
-$wb['database_txt'] = 'Banco de dados';
+$wb['database_txt'] = 'Banco de Dados';
 $wb['server_name_txt'] = 'Servidor';
 $wb['client_txt'] = 'Cliente';
-$wb['used_txt'] = 'Espaço utilizado';
+$wb['used_txt'] = 'Espaço Utilizado';
 $wb['quota_txt'] = 'Cota';
-$wb['percentage_txt'] = 'Espaço utilizado em %';
-$wb['list_head_txt'] = 'Cota para banco de dados';
+$wb['percentage_txt'] = 'Espaço Utilizado em %';
+$wb['list_head_txt'] = 'Cota do banco de dados';
 ?>
diff --git a/interface/web/sites/lib/lang/br_database_user.lng b/interface/web/sites/lib/lang/br_database_user.lng
index 59b9fce627..193dbc7406 100644
--- a/interface/web/sites/lib/lang/br_database_user.lng
+++ b/interface/web/sites/lib/lang/br_database_user.lng
@@ -1,25 +1,25 @@
 <?php
-$wb['database_user_txt'] = 'Usuário';
+$wb['database_user_txt'] = 'Usuário do banco de Dados';
 $wb['database_password_txt'] = 'Senha do banco de dados';
 $wb['password_strength_txt'] = 'Dificuldade da senha';
 $wb['client_txt'] = 'Cliente';
 $wb['active_txt'] = 'Ativo';
 $wb['database_user_error_empty'] = 'Usuário do banco de dados está em branco.';
-$wb['database_user_error_unique'] = 'Já existe um usuário do banco de dados com este nome no servidor. Para configurar um nome exclusivo, use como prefixo o domínio para o nome do usuário.';
-$wb['database_user_error_regex'] = 'Usuário do banco de dados inválido! O nome do usuário pode conter os seguintes caracteres: \'\\"a-z\', \'A-Z\', \'0-9\' e o \'underscore\'. Tamanho: 2 - 64 caracteres.';
-$wb['database_user_error_len'] = 'O usuário do banco de dados - {user} - é muito longo. O limite do nome do usuário, incluindo o prefixo, são 16 caracteres.';
+$wb['database_user_error_unique'] = 'Já existe este usuário no servidor. Para ter um nome exclusivo insira um prefixo como o domínio antes do nome.';
+$wb['database_user_error_regex'] = 'Nome do usuário de banco de dados inválido. O nome do usuário deve conter apenas os caracteres: a-z, A-Z, 0-9 e underscore. Comprimento: 2 - 64 caracteres.';
+$wb['database_user_error_len'] = 'Nome do usuário de banco de dados - {user} - muito longo. Comprimento permitido, incluindo o prefixo, não pode ultrapassr 16 caracteres.';
 $wb['btn_save_txt'] = 'Salvar';
 $wb['btn_cancel_txt'] = 'Cancelar';
-$wb['generate_password_txt'] = 'Gerar senha';
-$wb['repeat_password_txt'] = 'Repetir senha';
-$wb['password_mismatch_txt'] = 'A senhas não coincidem.';
-$wb['password_match_txt'] = 'A senhas coincidem.';
+$wb['generate_password_txt'] = 'Gerar Senha';
+$wb['repeat_password_txt'] = 'Repetir Senha';
+$wb['password_mismatch_txt'] = 'As senhas não coincidem.';
+$wb['password_match_txt'] = 'As senhas coincidem.';
 $wb['globalsearch_resultslimit_of_txt'] = 'de';
 $wb['globalsearch_resultslimit_results_txt'] = 'resultados';
 $wb['globalsearch_noresults_text_txt'] = 'Sem resultados.';
-$wb['globalsearch_noresults_limit_txt'] = '0 resultados';
+$wb['globalsearch_noresults_limit_txt'] = '0 resultado(s)';
 $wb['globalsearch_searchfield_watermark_txt'] = 'Pesquisar';
 $wb['globalsearch_suggestions_text_txt'] = 'Sugestões';
-$wb['limit_database_user_txt'] = 'O limite de usuários do banco de dados foi alcançado.';
+$wb['limit_database_user_txt'] = 'O limite de usuários do banco de dados para esta conta foi alcançado.';
 $wb['database_password_error_empty'] = 'Senha do banco de dados está em branco.';
 ?>
diff --git a/interface/web/sites/lib/lang/br_database_user_admin_list.lng b/interface/web/sites/lib/lang/br_database_user_admin_list.lng
index 1d610bd1b0..bb21e97b1c 100644
--- a/interface/web/sites/lib/lang/br_database_user_admin_list.lng
+++ b/interface/web/sites/lib/lang/br_database_user_admin_list.lng
@@ -1,6 +1,6 @@
 <?php
-$wb['list_head_txt'] = 'Usuários';
-$wb['database_user_txt'] = 'Usuário';
+$wb['list_head_txt'] = 'Usuário do banco de dados';
+$wb['database_user_txt'] = 'Nome do usuário';
 $wb['add_new_record_txt'] = 'Adicionar novo usuário';
 $wb['sys_groupid_txt'] = 'Cliente';
 ?>
diff --git a/interface/web/sites/lib/lang/br_database_user_list.lng b/interface/web/sites/lib/lang/br_database_user_list.lng
index 855265e958..d2e4332fc7 100644
--- a/interface/web/sites/lib/lang/br_database_user_list.lng
+++ b/interface/web/sites/lib/lang/br_database_user_list.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['list_head_txt'] = 'Usuários';
-$wb['database_user_txt'] = 'Usuário';
+$wb['list_head_txt'] = 'Usuário do banco de dados';
+$wb['database_user_txt'] = 'Usuário do banco de dados';
 $wb['add_new_record_txt'] = 'Adicionar novo usuário';
 ?>
diff --git a/interface/web/sites/lib/lang/br_ftp_sites_stats_list.lng b/interface/web/sites/lib/lang/br_ftp_sites_stats_list.lng
index 93a02f6c25..e4fabd5959 100644
--- a/interface/web/sites/lib/lang/br_ftp_sites_stats_list.lng
+++ b/interface/web/sites/lib/lang/br_ftp_sites_stats_list.lng
@@ -1,10 +1,10 @@
 <?php
-$wb['list_head_txt'] = 'Tráfego ftp';
+$wb['list_head_txt'] = 'Tráfego FTP';
 $wb['domain_txt'] = 'Domínio';
 $wb['this_month_txt'] = 'Este mês';
 $wb['last_month_txt'] = 'Último mês';
 $wb['this_year_txt'] = 'Este ano';
 $wb['last_year_txt'] = 'Último ano';
 $wb['sum_txt'] = 'Soma (Download + Upload)';
-$wb['in_out_txt'] = 'DL/UL';
+$wb['in_out_txt'] = 'DOWN/UP';
 ?>
diff --git a/interface/web/sites/lib/lang/br_ftp_user.lng b/interface/web/sites/lib/lang/br_ftp_user.lng
index 3df741ed9e..370fe0f366 100644
--- a/interface/web/sites/lib/lang/br_ftp_user.lng
+++ b/interface/web/sites/lib/lang/br_ftp_user.lng
@@ -1,35 +1,36 @@
 <?php
-$wb['uid_txt'] = 'UID';
-$wb['gid_txt'] = 'GID';
+$wb['uid_txt'] = 'ID do usuário (UID)';
+$wb['gid_txt'] = 'ID do grupo (GID)';
 $wb['dir_txt'] = 'Diretório';
 $wb['quota_files_txt'] = 'Cota de arquivos';
 $wb['quota_files_unity_txt'] = 'Arquivos';
-$wb['ul_ratio_txt'] = 'Taxa para upload';
-$wb['dl_ratio_txt'] = 'Taxa para download';
-$wb['ul_bandwidth_txt'] = 'Banda para upload';
-$wb['dl_bandwidth_txt'] = 'Banda para download';
+$wb['ul_ratio_txt'] = 'Taxa de upload';
+$wb['dl_ratio_txt'] = 'Taxa de download';
+$wb['ul_bandwidth_txt'] = 'Banda de upload';
+$wb['dl_bandwidth_txt'] = 'Banda de download';
 $wb['server_id_txt'] = 'Servidor';
 $wb['parent_domain_id_txt'] = 'Site';
 $wb['username_txt'] = 'Usuário';
 $wb['password_txt'] = 'Senha';
 $wb['password_strength_txt'] = 'Dificuldade da senha';
-$wb['quota_size_txt'] = 'Cota de disco';
+$wb['quota_size_txt'] = 'Cota do Disco';
 $wb['active_txt'] = 'Ativo';
-$wb['limit_ftp_user_txt'] = 'o limite de usuários ftp para esta conta foi alcançado.';
-$wb['username_error_empty'] = 'Nome do usuário está em branco.';
+$wb['limit_ftp_user_txt'] = 'O limite de usuários ftp para esta conta foi alcançado.';
+$wb['username_error_empty'] = 'Usuário está em branco.';
 $wb['username_error_unique'] = 'O nome do usuário deve ser exclusivo.';
-$wb['username_error_regex'] = 'O nome do usuário contém caracteres não permitidos.';
+$wb['username_error_regex'] = 'O nome do usuário possui caracteres não permitidos.';
 $wb['quota_size_error_empty'] = 'Cota está em branco.';
+$wb['uid_error_empty'] = 'UID está em branco.';
 $wb['uid_error_empty'] = 'GID está em branco.';
 $wb['directory_error_empty'] = 'Diretório está em branco.';
-$wb['directory_error_notinweb'] = 'O diretório não está dentro do diretório web principal.';
+$wb['directory_error_notinweb'] = 'Diretório não está dentro do diretório web.';
 $wb['parent_domain_id_error_empty'] = 'Nenhum site selecionado.';
-$wb['quota_size_error_regex'] = 'Cota: insira -1 para ilimitado ou um número > 0';
-$wb['dir_dot_error'] = 'Não é permitido \\"..\\" no caminho.';
-$wb['dir_slashdot_error'] = 'Não é permitido \\"./\\" no caminho.';
-$wb['generate_password_txt'] = 'Gerar senha';
-$wb['repeat_password_txt'] = 'Repetir senha';
-$wb['password_mismatch_txt'] = 'A senhas não coincidem.';
-$wb['password_match_txt'] = 'A senhas coincidem.';
-$wb['expires_txt'] = 'Expira em';
+$wb['quota_size_error_regex'] = 'Cota: insira -1 para ilimitado ou um número > 0.';
+$wb['dir_dot_error'] = 'Não é permitido ".." no caminho.';
+$wb['dir_slashdot_error'] = 'Não é permitido "./" no caminho.';
+$wb['generate_password_txt'] = 'Gerar Senha';
+$wb['repeat_password_txt'] = 'Repetir Senha';
+$wb['password_mismatch_txt'] = 'As senhas não coincidem.';
+$wb['password_match_txt'] = 'As senhas coincidem.';
+$wb['expires_txt'] = 'Expirar em';
 ?>
diff --git a/interface/web/sites/lib/lang/br_shell_user.lng b/interface/web/sites/lib/lang/br_shell_user.lng
index 3cbc911ab3..8cd0520554 100644
--- a/interface/web/sites/lib/lang/br_shell_user.lng
+++ b/interface/web/sites/lib/lang/br_shell_user.lng
@@ -1,36 +1,36 @@
 <?php
+$wb['puser_txt'] = 'Usuário web';
+$wb['pgroup_txt'] = 'Grupo web';
 $wb['shell_txt'] = 'Shell';
-$wb['dir_txt'] = 'Diretório';
+$wb['dir_txt'] = 'Diretório Base';
 $wb['server_id_txt'] = 'Servidor';
 $wb['parent_domain_id_txt'] = 'Site';
-$wb['username_txt'] = 'Nome do usuário';
+$wb['username_txt'] = 'Usuário';
 $wb['password_txt'] = 'Senha';
 $wb['password_strength_txt'] = 'Dificuldade da senha';
-$wb['chroot_txt'] = 'Shell enjaulado (chroot)';
+$wb['chroot_txt'] = 'Chroot Shell';
 $wb['quota_size_txt'] = 'Cota';
 $wb['active_txt'] = 'Ativo';
-$wb['username_error_empty'] = 'Nome de usuário está em branco.';
-$wb['username_error_unique'] = 'O nome de usuário deve ser exclusivo.';
-$wb['username_error_regex'] = 'O nome do usuário contém caracteres não permitidos.';
+$wb['username_error_empty'] = 'Nome do usuário está em branco.';
+$wb['username_error_unique'] = 'O nome do usuário deve ser exclusivo.';
+$wb['username_error_regex'] = 'O nome do usuário possui caracteres não permitidos.';
 $wb['quota_size_error_empty'] = 'Cota está em branco.';
 $wb['uid_error_empty'] = 'GID está em branco.';
-$wb['directory_error_empty'] = 'Diretório está em branco.';
-$wb['limit_shell_user_txt'] = 'O limite de usuários shell para esta conta foi alcançado.';
+$wb['directory_error_empty'] = 'O diretório está em branco.';
+$wb['limit_shell_user_txt'] = 'O limite de usuários foi alcançado.';
 $wb['parent_domain_id_error_empty'] = 'Nenhum site selecionado.';
-$wb['puser_txt'] = 'Usuário web';
-$wb['pgroup_txt'] = 'Grupo web';
 $wb['ssh_rsa_txt'] = 'Chave pública SSH-RSA (para acessos baseados em chave)';
-$wb['dir_dot_error'] = 'Não é permitido \\"..\\" no caminho.';
-$wb['dir_slashdot_error'] = 'Não é permitido  \\"./\\" no caminho.';
-$wb['generate_password_txt'] = 'Gerar senha';
-$wb['repeat_password_txt'] = 'Repetir senha';
-$wb['password_mismatch_txt'] = 'A senhas não coincidem.';
-$wb['password_match_txt'] = 'A senhas coincidem.';
-$wb['username_must_not_exceed_32_chars_txt'] = 'O nome do usuário não pode ultrapassar 32 caracteres.';
-$wb['username_not_allowed_txt'] = 'O nome do usuário nao é permitido.';
-$wb['invalid_system_user_or_group_txt'] = 'Usuário ou grupo inválido';
-$wb['directory_error_regex'] = 'Diretório inválido';
-$wb['shell_error_regex'] = 'Shell inválido';
-$wb['invalid_username_txt'] = 'Usuário inválido';
-$wb['directory_error_notinweb'] = 'O diretório deve estar dentro do diretório web principal.';
+$wb['dir_dot_error'] = 'Não é permitido \'..\' no caminho.';
+$wb['dir_slashdot_error'] = 'Não é permitido \'./\' no caminho.';
+$wb['generate_password_txt'] = 'Gerar Senha';
+$wb['repeat_password_txt'] = 'Repetir Senha';
+$wb['password_mismatch_txt'] = 'As senhas não coincidem.';
+$wb['password_match_txt'] = 'As senhas coincidem.';
+$wb['username_must_not_exceed_32_chars_txt'] = 'O nome do usuário não pode exceder 32 caracteres.';
+$wb['username_not_allowed_txt'] = 'O nome do usuário não é permitido.';
+$wb['invalid_system_user_or_group_txt'] = 'Usuário ou grupo inválido.';
+$wb['directory_error_regex'] = 'Diretório inválido.';
+$wb['shell_error_regex'] = 'Shell inválido.';
+$wb['invalid_username_txt'] = 'Usuário inválido.';
+$wb['directory_error_notinweb'] = 'O diretório deve estar dentro do diretório web.';
 ?>
diff --git a/interface/web/sites/lib/lang/br_shell_user_list.lng b/interface/web/sites/lib/lang/br_shell_user_list.lng
index 587c988ccd..21bb3d4dfd 100644
--- a/interface/web/sites/lib/lang/br_shell_user_list.lng
+++ b/interface/web/sites/lib/lang/br_shell_user_list.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['list_head_txt'] = 'Usuário shell';
+$wb['list_head_txt'] = 'Usuário do Shell';
 $wb['active_txt'] = 'Ativo';
 $wb['server_id_txt'] = 'Servidor';
 $wb['parent_domain_id_txt'] = 'Site';
diff --git a/interface/web/sites/lib/lang/br_user_quota_stats_list.lng b/interface/web/sites/lib/lang/br_user_quota_stats_list.lng
index fe41b018dc..d979210483 100644
--- a/interface/web/sites/lib/lang/br_user_quota_stats_list.lng
+++ b/interface/web/sites/lib/lang/br_user_quota_stats_list.lng
@@ -1,9 +1,9 @@
 <?php
-$wb['list_head_txt'] = 'Cota do Disco';
-$wb['domain_txt'] = 'Domínio';
+$wb['list_head_txt'] = 'Cota do disco para site';
+$wb['domain_txt'] = 'Domínio/Site';
 $wb['system_user_txt'] = 'Usuário Linux';
 $wb['used_txt'] = 'Espaço utilizado';
-$wb['hard_txt'] = 'Limite';
+$wb['hard_txt'] = 'Limite para bloqueio';
 $wb['soft_txt'] = 'Limite para alerta';
 $wb['files_txt'] = 'Arquivos simples';
 ?>
diff --git a/interface/web/sites/lib/lang/br_web_aliasdomain.lng b/interface/web/sites/lib/lang/br_web_aliasdomain.lng
index 4acadb2c54..d6142fd374 100644
--- a/interface/web/sites/lib/lang/br_web_aliasdomain.lng
+++ b/interface/web/sites/lib/lang/br_web_aliasdomain.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['domain_txt'] = 'Apelido de domínio';
-$wb['backup_interval_txt'] = 'Intervalo de backup';
-$wb['backup_copies_txt'] = 'Limite de cópias do backup';
+$wb['domain_txt'] = 'Alias de domínio';
+$wb['backup_interval_txt'] = 'Intervalo entre backups';
+$wb['backup_copies_txt'] = 'Número de cópias do backup';
 $wb['ssl_state_txt'] = 'Estado';
 $wb['ssl_locality_txt'] = 'Cidade';
 $wb['ssl_organisation_txt'] = 'Empresa';
@@ -10,64 +10,64 @@ $wb['ssl_country_txt'] = 'País';
 $wb['ssl_key_txt'] = 'Chave';
 $wb['ssl_request_txt'] = 'Requisição';
 $wb['ssl_cert_txt'] = 'Certificado';
-$wb['ssl_bundle_txt'] = 'Pacote';
+$wb['ssl_bundle_txt'] = 'Agrupar';
 $wb['ssl_action_txt'] = 'Ação';
 $wb['ssl_domain_txt'] = 'Domínio';
 $wb['server_id_txt'] = 'Servidor';
-$wb['web_folder_error_regex'] = 'Pasta inválida inserida. Por favor, não use barra \\"/\\".';
+$wb['web_folder_error_regex'] = 'Pasta web é inválida. Por favor não utilize o caractere barra(/).';
 $wb['type_txt'] = 'Tipo';
-$wb['parent_domain_id_txt'] = 'Site pai';
+$wb['parent_domain_id_txt'] = 'Site Pai';
 $wb['redirect_type_txt'] = 'Tipo de redirecionamento';
-$wb['redirect_path_txt'] = 'Caminho do redirecionamento';
+$wb['redirect_path_txt'] = 'Caminho para o redirecionamento';
 $wb['active_txt'] = 'Ativo';
-$wb['document_root_txt'] = 'Pasta personalizada documentroot';
+$wb['document_root_txt'] = 'Documentroot';
 $wb['system_user_txt'] = 'Usuário Linux';
 $wb['system_group_txt'] = 'Grupo Linux';
 $wb['ip_address_txt'] = 'Endereço IPv4';
-$wb['ipv6_address_txt'] = 'Endreço IPv6';
-$wb['vhost_type_txt'] = 'Tipo VHost';
-$wb['hd_quota_txt'] = 'Cota de Disco';
+$wb['ipv6_address_txt'] = 'Endereço IPv6';
+$wb['vhost_type_txt'] = 'Tipo do VHost';
+$wb['hd_quota_txt'] = 'Cota do Disco';
 $wb['traffic_quota_txt'] = 'Cota de Tráfego';
 $wb['cgi_txt'] = 'CGI';
 $wb['ssi_txt'] = 'SSI';
-$wb['errordocs_txt'] = 'Pasta personalizada errordocuments';
+$wb['errordocs_txt'] = 'Proprietário do Error-Documents';
 $wb['subdomain_txt'] = 'Subdomínio automático';
 $wb['ssl_txt'] = 'SSL';
 $wb['suexec_txt'] = 'SuEXEC';
 $wb['php_txt'] = 'PHP';
 $wb['client_txt'] = 'Cliente';
 $wb['limit_web_domain_txt'] = 'O limite de domínios de site para esta conta foi alcançado.';
-$wb['limit_web_aliasdomain_txt'] = 'O limite de apelidos de domínio para esta conta foi alcançado.';
-$wb['limit_web_subdomain_txt'] = 'Limite  subdomínios de site para esta conta foi alcançado.';
+$wb['limit_web_aliasdomain_txt'] = 'O limite de alias de domínios para esta conta foi alcançado.';
+$wb['limit_web_subdomain_txt'] = 'O limite de subdomínios de site para esta conta foi alcançado.';
 $wb['apache_directives_txt'] = 'Diretivas do apache';
-$wb['domain_error_empty'] = 'O domínio está em branco.';
-$wb['domain_error_unique'] = 'Já existe um site, subdomínio ou apelido de domínio com este nome.';
-$wb['domain_error_regex'] = 'Domínio inválido!';
+$wb['domain_error_empty'] = 'O campo "Domínio" está em branco.';
+$wb['domain_error_unique'] = 'Já existe um site, subdomínio ou alias de domínio com este nome.';
+$wb['domain_error_regex'] = 'O campo "Domínio" é inválido.';
 $wb['domain_error_autosub'] = 'Já existe um subdomínio com estas configurações.';
-$wb['hd_quota_error_empty'] = 'Cota de disco é 0 ou está em branco.';
+$wb['hd_quota_error_empty'] = 'Cota do disco é 0 ou está em branco.';
 $wb['traffic_quota_error_empty'] = 'Cota de tráfego está em branco.';
-$wb['error_ssl_state_empty'] = 'Campo \'Estado\' está em branco.';
-$wb['error_ssl_locality_empty'] = 'Campo \'Cidade\' está em branco.';
-$wb['error_ssl_organisation_empty'] = 'Campo \'Empresa\' está em branco.';
-$wb['error_ssl_organisation_unit_empty'] = 'Campo \'Departamento\' está em branco.';
-$wb['error_ssl_country_empty'] = 'Campo \'País\' está em branco.';
-$wb['error_ssl_cert_empty'] = 'Campo \'Certificado\' está em branco.';
+$wb['error_ssl_state_empty'] = 'O campo "Estado" está em branco.';
+$wb['error_ssl_locality_empty'] = 'O campo "Cidade" está em branco.';
+$wb['error_ssl_organisation_empty'] = 'O campo "Empresa" está em branco.';
+$wb['error_ssl_organisation_unit_empty'] = 'O campo "Departamento" está em branco.';
+$wb['error_ssl_country_empty'] = 'O campo "País" está em branco.';
+$wb['error_ssl_cert_empty'] = 'O campo "Certificado" está em branco.';
 $wb['client_group_id_txt'] = 'Cliente';
 $wb['stats_password_txt'] = 'Configurar senha para estatísticas web';
-$wb['allow_override_txt'] = 'Diretiva apache AllowOverride';
-$wb['limit_web_quota_free_txt'] = 'Cota máxima de disco disponível';
-$wb['ssl_state_error_regex'] = 'Campo \'Estado\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.';
-$wb['ssl_locality_error_regex'] = 'Campo \'Cidade\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.';
-$wb['ssl_organisation_error_regex'] = 'Campo \'Empresa\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.';
-$wb['ssl_organistaion_unit_error_regex'] = 'Campo \'Departamento\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.';
-$wb['ssl_country_error_regex'] = 'Campo \'País\' é inválido. São caracteres válidos: \'A-Z\'.';
-$wb['limit_traffic_quota_free_txt'] = 'Cota máxima de tráfego disponível';
-$wb['redirect_error_regex'] = 'Caminho de redirecionamento é inválido. Exemplos de caminhos válidos: \\"/teste/\\" ou \\"http://www.dominio.com.br/teste/\\".';
-$wb['php_open_basedir_txt'] = 'Diretório open_basedir do PHP';
-$wb['traffic_quota_exceeded_txt'] = 'Cota de tráfego excedida';
+$wb['allow_override_txt'] = 'Diretiva Apache AllowOverride';
+$wb['limit_web_quota_free_txt'] = 'Limite da cota de disco disponível';
+$wb['ssl_state_error_regex'] = 'O campo "Estado" é inválido. São caracteres válidos: "a-z", "0-9", ".", "-", e "_".';
+$wb['ssl_locality_error_regex'] = 'O campo "Cidade" é inválido. São caracteres válidos: "a-z", "0-9", ".", "-", e "_".';
+$wb['ssl_organisation_error_regex'] = 'O campo "Empresa" é inválido. São caracteres válidos: "a-z", "0-9", ".", "-", e "_".';
+$wb['ssl_organistaion_unit_error_regex'] = 'O campo "Departamento" é inválido. São caracteres válidos: "a-z", "0-9", ".", "-", e "_".';
+$wb['ssl_country_error_regex'] = 'O campo "País" é inválido. São caracteres válidos: "A-Z".';
+$wb['limit_traffic_quota_free_txt'] = 'Limite da cota de tráfego disponível';
+$wb['redirect_error_regex'] = 'Caminho de redirecionamento inválido. São redirecionamentos válidos, por exemplo, /teste/ ou http://www.dominio.com.br/teste/';
+$wb['php_open_basedir_txt'] = 'Diretório open_basedir do php';
+$wb['traffic_quota_exceeded_txt'] = 'O limite da cota de tráfego foi alcançado.';
 $wb['ruby_txt'] = 'Ruby';
 $wb['stats_user_txt'] = 'Usuário de estatísticas web';
-$wb['stats_type_txt'] = 'Programa de estatísticas web';
+$wb['stats_type_txt'] = 'Sistema de estatísticas web';
 $wb['custom_php_ini_txt'] = 'Configurações personalizadas do php.ini';
 $wb['none_txt'] = 'Nenhum';
 $wb['disabled_txt'] = 'Desabilitado';
@@ -77,39 +77,39 @@ $wb['save_certificate_txt'] = 'Salvar certificado';
 $wb['create_certificate_txt'] = 'Adicionar certificado';
 $wb['delete_certificate_txt'] = 'Remover certificado';
 $wb['nginx_directives_txt'] = 'Diretivas do nginx';
-$wb['seo_redirect_txt'] = 'Redirecionamento SEO';
-$wb['non_www_to_www_txt'] = 'Diretivas Non-www -&gt; www';
-$wb['www_to_non_www_txt'] = 'Diretivas www -&gt; non-www';
-$wb['php_fpm_use_socket_txt'] = 'Usar soquete para o PHP-FPM';
-$wb['error_no_sni_txt'] = 'O SNI para SSL não está ativo neste servidor. Você só pode habilitar um certificado para cada endereço IP.';
+$wb['seo_redirect_txt'] = 'Diretivas SEO';
+$wb['non_www_to_www_txt'] = 'non-www -&gt; www';
+$wb['www_to_non_www_txt'] = 'www -&gt; non-www';
+$wb['php_fpm_use_socket_txt'] = 'Usar socket para php-fpm';
+$wb['error_no_sni_txt'] = 'SNI para SSL não está habilitado neste servidor. Somente poderá ser habilitado um certificado para cada endereço IP.';
 $wb['python_txt'] = 'Python';
 $wb['perl_txt'] = 'Perl';
-$wb['pm_max_children_txt'] = 'Diretiva PHP-FPM pm.max_children';
-$wb['pm_start_servers_txt'] = 'Diretiva PHP-FPM pm.start_servers';
-$wb['pm_min_spare_servers_txt'] = 'Diretiva PHP-FPM pm.min_spare_servers';
-$wb['pm_max_spare_servers_txt'] = 'Diretiva PHP-FPM pm.max_spare_servers';
-$wb['error_php_fpm_pm_settings_txt'] = 'Os valores permitidos para configurações do PHP-FPM pm são: pm.max_children &gt;= pm.max_spare_servers &gt;= pm.start_servers &gt;= pm.min_spare_servers &gt; 0';
-$wb['pm_max_children_error_regex'] = 'O valor do PHP-FPM pm.max_children deve ser um número positivo.';
-$wb['pm_start_servers_error_regex'] = 'O valor do PHP-FPM pm.start_servers deve ser um número positivo.';
-$wb['pm_min_spare_servers_error_regex'] = 'O valor do PHP-FPM pm.min_spare_servers deve ser um número positivo.';
-$wb['pm_max_spare_servers_error_regex'] = 'O valor do PHP-FPM pm.max_spare_servers deve ser um número positivo.';
-$wb['hd_quota_error_regex'] = 'Valor inválido para cota de disco.';
-$wb['traffic_quota_error_regex'] = 'Valor inválido para cota de tráfego.';
-$wb['fastcgi_php_version_txt'] = 'Versão do PHP';
-$wb['pm_txt'] = 'Gerenciador de Processos do PHP-FPM';
-$wb['pm_process_idle_timeout_txt'] = 'Diretiva PHP-FPM pm.process_idle_timeout';
-$wb['pm_max_requests_txt'] = 'Diretiva PHP-FPM pm.max_requests';
-$wb['pm_process_idle_timeout_error_regex'] = 'O valor do PHP-FPM pm.process_idle_timeout deve ser um número positivo.';
-$wb['pm_max_requests_error_regex'] = 'O valor do PHP-FPM pm.max_requests deve ser um inteiro >= 0.';
-$wb['pm_ondemand_hint_txt'] = 'Por favor, observe que você deve ter uma versão do PHP >= 5.3.9 para usar o gerenciador de processos sob demanda. Se você selecionar processos sob demanda usando uma versão antiga do PHP, o PHP não iniciará novamente!';
-$wb['generate_password_txt'] = 'Gerar senha';
-$wb['repeat_password_txt'] = 'Repetir senha';
-$wb['password_mismatch_txt'] = 'A senhas não coincidem.';
-$wb['password_match_txt'] = 'A senhas coincidem.';
-$wb['available_php_directive_snippets_txt'] = 'Diretivas de trechos de código do php disponíveis:';
-$wb['available_apache_directive_snippets_txt'] = 'Diretivas de trechos de código do apache disponíveis:';
-$wb['available_nginx_directive_snippets_txt'] = 'Diretivas de trechos de código do nginx disponíveis:';
+$wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children';
+$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers';
+$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers';
+$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers';
+$wb['error_php_fpm_pm_settings_txt'] = 'Valores das configurações do php-fpm podem ser: pm.max_children &gt;= pm.max_spare_servers &gt;= pm.start_servers &gt;= pm.min_spare_servers &gt; 0';
+$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children deve ter um valor inteiro positivo.';
+$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers deve ter um valor inteiro positivo.';
+$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers deve ter um valor inteiro positivo.';
+$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers deve ter um valor inteiro positivo.';
+$wb['hd_quota_error_regex'] = 'Cota do disco é inválida.';
+$wb['traffic_quota_error_regex'] = 'Cota de tráfego é inválida.';
+$wb['fastcgi_php_version_txt'] = 'Versão do php';
+$wb['pm_txt'] = 'Gerenciador de Processos do php-fpm';
+$wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
+$wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
+$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout deve ter um valor inteiro positivo.';
+$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests deve ter um valor >= 0.';
+$wb['pm_ondemand_hint_txt'] = 'Por favor, observe que é necessário uma versão do php >= 5.3.9 para utilizar o gerenciador de processos por demanda. Se for selecionado por demanda com uma versão inferior do php, o mesmo não iniciará mais!';
+$wb['generate_password_txt'] = 'Gerar Senha';
+$wb['repeat_password_txt'] = 'Repetir Senha';
+$wb['password_mismatch_txt'] = 'As senhas não coincidem.';
+$wb['password_match_txt'] = 'As senhas coincidem.';
+$wb['available_php_directive_snippets_txt'] = 'Diretivas de trecho de código do php disponíveis:';
+$wb['available_apache_directive_snippets_txt'] = 'Diretivas de trecho de código do apache disponíveis:';
+$wb['available_nginx_directive_snippets_txt'] = 'Diretivas de trecho de código do nginx disponíveis:';
 $wb['proxy_directives_txt'] = 'Diretivas do proxy';
 $wb['available_proxy_directive_snippets_txt'] = 'Diretivas de trechos de código do proxy disponíveis:';
-$wb['Domain'] = 'Apelido de domínio';
+$wb['Domain'] = 'Alias de Domínio';
 ?>
diff --git a/interface/web/sites/lib/lang/br_web_aliasdomain_list.lng b/interface/web/sites/lib/lang/br_web_aliasdomain_list.lng
index 153aa33400..770ec725e4 100644
--- a/interface/web/sites/lib/lang/br_web_aliasdomain_list.lng
+++ b/interface/web/sites/lib/lang/br_web_aliasdomain_list.lng
@@ -1,13 +1,13 @@
 <?php
-$wb['list_head_txt'] = 'Apelidos de domínios';
+$wb['list_head_txt'] = 'Alias de Domínio';
 $wb['active_txt'] = 'Ativo';
 $wb['server_id_txt'] = 'Servidor';
 $wb['parent_domain_id_txt'] = 'Site';
-$wb['domain_txt'] = 'Apelido de domínio';
-$wb['add_new_record_txt'] = 'Adicionar novo apelido';
-$wb['domain_error_empty'] = 'Domínio está em branco.';
+$wb['domain_txt'] = 'Alias de Domínio';
+$wb['add_new_record_txt'] = 'Adicionar novo alias de domínio';
+$wb['domain_error_empty'] = 'O domínio está em branco.';
 $wb['domain_error_unique'] = 'O domínio deve ser exclusivo.';
-$wb['domain_error_regex'] = 'Domínio inválido!';
+$wb['domain_error_regex'] = 'O domínio é inválido.';
 $wb['no_redirect_txt'] = 'Sem redirecionamento';
 $wb['no_flag_txt'] = 'Sem marcas';
 $wb['none_txt'] = 'Nenhum';
diff --git a/interface/web/sites/lib/lang/br_web_backup_list.lng b/interface/web/sites/lib/lang/br_web_backup_list.lng
index 137f8bc7e0..82883c1f29 100644
--- a/interface/web/sites/lib/lang/br_web_backup_list.lng
+++ b/interface/web/sites/lib/lang/br_web_backup_list.lng
@@ -3,19 +3,20 @@ $wb['list_head_txt'] = 'Backups existentes';
 $wb['date_txt'] = 'Data';
 $wb['backup_type_txt'] = 'Tipo';
 $wb['filename_txt'] = 'Arquivo de backup';
-$wb['restore_backup_txt'] = 'Restaurar backup';
-$wb['download_backup_txt'] = 'Baixar backup';
-$wb['download_info_txt'] = 'O arquivo de backup estará disponível para download na pasta de backup do site em alguns minutos.';
-$wb['restore_info_txt'] = 'Restauração do backup iniciada. Esta ação poderá levar vários minutos para ser concluída. Aguarde.';
-$wb['restore_confirm_txt'] = 'A restauração do backup reescreverá os arquivos existes do seu site. Tem certeza que deseja restaurar este backup?';
-$wb['download_pending_txt'] = 'Já existe um download deste backup em execução.';
-$wb['restore_pending_txt'] = 'Já existe uma restauração deste backup em execução.';
-$wb['delete_backup_txt'] = 'Remover backup';
-$wb['delete_info_txt'] = 'Remoção do backup iniciada. Esta ação poderá levar vários minutos para ser concluída. Aguarde.';
+$wb['filesize_txt'] = 'Tamanho do arquivo';
+$wb['restore_backup_txt'] = 'Restaurar';
+$wb['download_backup_txt'] = 'Download';
+$wb['download_info_txt'] = 'O arquivo de backup estará disponível para download na pasta de backup dentro de alguns minutos.';
+$wb['restore_info_txt'] = 'Restauração do backup foi iniciada. Esta ação demora vários minutos para concluir.';
+$wb['restore_confirm_txt'] = 'Restaurar arquivo de backup reescreve os arquivos existentes do site. Tem certeza que deseja restaurar este backup?';
+$wb['download_pending_txt'] = 'Já existe um download de backup em andamento.';
+$wb['restore_pending_txt'] = 'Já existe uma restauração de backup em andamento.';
+$wb['delete_backup_txt'] = 'Remover Backup';
+$wb['delete_info_txt'] = 'Remoção de backup foi iniciada. Esta ação demora vários minutos para concluir.';
 $wb['delete_confirm_txt'] = 'Tem certeza que deseja remover este backup?';
-$wb['delete_pending_txt'] = 'Já existe uma remoção deste backup em execução.';
-$wb['backup_type_mysql'] = 'Banco de dados MySQL';
+$wb['delete_pending_txt'] = 'Já existe uma remoção de backup em andamento.';
+$wb['backup_type_mongodb'] = 'MongoDB';
+$wb['backup_type_mysql'] = 'MySQL';
 $wb['backup_type_web'] = 'Arquivos do site';
-$wb['filesize_txt'] = 'Tamanho';
-$wb['backup_type_mongodb'] = 'Banco de dados MongoDB';
+
 ?>
diff --git a/interface/web/sites/lib/lang/br_web_childdomain.lng b/interface/web/sites/lib/lang/br_web_childdomain.lng
index ecff0c2ae8..fbbb40635e 100644
--- a/interface/web/sites/lib/lang/br_web_childdomain.lng
+++ b/interface/web/sites/lib/lang/br_web_childdomain.lng
@@ -4,117 +4,117 @@ $wb['ssl_locality_txt'] = 'Cidade';
 $wb['ssl_organisation_txt'] = 'Empresa';
 $wb['ssl_organisation_unit_txt'] = 'Departamento';
 $wb['ssl_country_txt'] = 'País';
-$wb['ssl_request_txt'] = 'Requisição SSL';
-$wb['ssl_cert_txt'] = 'Certificado SSL';
-$wb['ssl_bundle_txt'] = 'Pacote';
+$wb['ssl_request_txt'] = 'Requisição';
+$wb['ssl_cert_txt'] = 'Certificado';
+$wb['ssl_bundle_txt'] = 'Agrupar';
 $wb['ssl_action_txt'] = 'Ação';
 $wb['server_id_txt'] = 'Servidor';
 $wb['domain_txt'] = 'Domínio';
 $wb['type_txt'] = 'Tipo';
-$wb['parent_domain_id_txt'] = 'Site pai';
+$wb['parent_domain_id_txt'] = 'Site Pai';
 $wb['redirect_type_txt'] = 'Tipo de redirecionamento';
-$wb['redirect_path_txt'] = 'Caminho para redirecionamento';
+$wb['redirect_path_txt'] = 'Caminho para o redirecionamento';
 $wb['active_txt'] = 'Ativo';
 $wb['document_root_txt'] = 'Documentroot';
 $wb['system_user_txt'] = 'Usuário Linux';
 $wb['system_group_txt'] = 'Grupo Linux';
 $wb['ip_address_txt'] = 'Endereço IP';
-$wb['vhost_type_txt'] = 'Tipo de vhost';
-$wb['hd_quota_txt'] = 'Cota de disco';
-$wb['traffic_quota_txt'] = 'Cota de tráfego';
+$wb['vhost_type_txt'] = 'Tipo do VHost';
+$wb['hd_quota_txt'] = 'Cota do Disco';
+$wb['traffic_quota_txt'] = 'Cota de Tráfego';
 $wb['cgi_txt'] = 'CGI';
 $wb['ssi_txt'] = 'SSI';
 $wb['ssl_txt'] = 'SSL';
 $wb['suexec_txt'] = 'SuEXEC';
 $wb['php_txt'] = 'PHP';
 $wb['client_txt'] = 'Cliente';
-$wb['limit_web_domain_txt'] = 'o limite de domínios de site para esta conta foi alcançado.';
-$wb['limit_web_aliasdomain_txt'] = 'O limite de apelidos de domínio de site para esta conta foi alcançado.';
+$wb['limit_web_domain_txt'] = 'O limite de domínios de site para esta conta foi alcançado.';
+$wb['limit_web_aliasdomain_txt'] = 'O limite de alias de domínios para esta conta foi alcançado.';
 $wb['limit_web_subdomain_txt'] = 'O limite de subdomínios de site para esta conta foi alcançado.';
 $wb['apache_directives_txt'] = 'Diretivas do apache';
-$wb['domain_error_empty'] = 'Domínio está em branco.';
-$wb['domain_error_unique'] = 'Já existe apelido de domínio ou subdomínio com este nome.';
-$wb['domain_error_regex'] = 'Nome de domínio é inválido.';
-$wb['host_txt'] = 'Nome do servidor';
-$wb['redirect_error_regex'] = 'Caminho de redirecionamento é inválido. Exemplo de caminho válido: \\"/teste/\\" ou \\"http://www.dominio.com.br/teste/\\".';
+$wb['domain_error_empty'] = 'O domínio está em branco.';
+$wb['domain_error_unique'] = 'Já existe um site, subdomínio ou alias de domínio com este nome.';
+$wb['domain_error_regex'] = 'O domínio é inválido.';
+$wb['domain_error_acme_invalid'] = 'Domínio genérico inválido não permitido.';
+$wb['domain_error_wildcard'] = 'Curingas não são permitidos para subdomínios.';
+$wb['host_txt'] = 'Host';
+$wb['redirect_error_regex'] = 'Caminho de redirecionamento inválido. Redirecionamentos válidos são, por ex.: /teste/ ou http://www.dominio.com.br/teste/';
 $wb['no_redirect_txt'] = 'Sem redirecionamento';
 $wb['no_flag_txt'] = 'Sem marcas';
-$wb['domain_error_wildcard'] = 'Curingas para subdomínios não são permitidos.';
 $wb['proxy_directives_txt'] = 'Diretivas do proxy';
 $wb['available_proxy_directive_snippets_txt'] = 'Diretivas de trechos de código do proxy disponíveis:';
-$wb['error_proxy_requires_url'] = 'O tipo de redirecionamento \\"proxy\\" exige uma url no caminho de redirecionamento.';
-$wb['backup_interval_txt'] = 'Intervalo de backup';
-$wb['backup_copies_txt'] = 'Limite de cópias do backup';
+$wb['error_proxy_requires_url'] = 'O tipo de redirecionamento "proxy" exige uma URL como caminho de redirecionamento.';
+$wb['backup_interval_txt'] = 'Intervalo entre backups';
+$wb['backup_copies_txt'] = 'Número de cópias do backup';
 $wb['ssl_key_txt'] = 'Chave';
-$wb['ssl_domain_txt'] = 'Domínio do SSL';
-$wb['web_folder_error_regex'] = 'Pasta inválida informada. Por favor não use uma barra - \\"/\\".';
+$wb['ssl_domain_txt'] = 'Domínio';
+$wb['web_folder_error_regex'] = 'Pasta web é inválida. Por favor não utilize o caractere barra(/).';
 $wb['ipv6_address_txt'] = 'Endereço IPv6';
-$wb['errordocs_txt'] = 'Pasta personalizada Error-Documents';
+$wb['errordocs_txt'] = 'Proprietário do Error-Documents';
 $wb['subdomain_txt'] = 'Subdomínio automático';
 $wb['domain_error_autosub'] = 'Já existe um subdomínio com estas configurações.';
-$wb['hd_quota_error_empty'] = 'Cota de disco é 0 ou está em branco.';
+$wb['hd_quota_error_empty'] = 'Cota do disco é 0 ou está em branco.';
 $wb['traffic_quota_error_empty'] = 'Cota de tráfego está em branco.';
-$wb['error_ssl_state_empty'] = 'Campo \'Estado\' está em branco.';
-$wb['error_ssl_locality_empty'] = 'Campo \'Cidade\' está em branco.';
-$wb['error_ssl_organisation_empty'] = 'Campo \'Organização\' está em branco.';
-$wb['error_ssl_organisation_unit_empty'] = 'Campo \'Departamento\' está em branco.';
-$wb['error_ssl_country_empty'] = 'Campo \'País\' está em branco.';
-$wb['error_ssl_cert_empty'] = 'Campo \'Certificado\' em branco';
+$wb['error_ssl_state_empty'] = 'O campo "Estado" está em branco.';
+$wb['error_ssl_locality_empty'] = 'O campo "Cidade" está em branco.';
+$wb['error_ssl_organisation_empty'] = 'O campo "Empresa" está em branco.';
+$wb['error_ssl_organisation_unit_empty'] = 'O campo "Departamento" está em branco.';
+$wb['error_ssl_country_empty'] = 'O campo "País" está em branco.';
+$wb['error_ssl_cert_empty'] = 'O campo "Certificado" está em branco.';
 $wb['client_group_id_txt'] = 'Cliente';
 $wb['stats_password_txt'] = 'Configurar senha para estatísticas web';
-$wb['allow_override_txt'] = 'Diretiva apache AllowOverride';
-$wb['limit_web_quota_free_txt'] = 'Cota de disco';
-$wb['ssl_state_error_regex'] = 'Campo \'Estado\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.';
-$wb['ssl_locality_error_regex'] = 'Campo \'Cidade\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.';
-$wb['ssl_organisation_error_regex'] = 'Campo \'Empresa\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.';
-$wb['ssl_organistaion_unit_error_regex'] = 'Campo \'Departamento\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.';
-$wb['ssl_country_error_regex'] = 'Campo \'País\' é inválido. São caracteres válidos: \'A-Z\'.';
-$wb['limit_traffic_quota_free_txt'] = 'Cota de tráfego';
+$wb['allow_override_txt'] = 'Diretiva Apache AllowOverride';
+$wb['limit_web_quota_free_txt'] = 'Limite da cota de disco disponível';
+$wb['ssl_state_error_regex'] = 'O campo "Estado" é inválido. Caracteres válidos são: "a-z", "0-9",".", "-", e "_".';
+$wb['ssl_locality_error_regex'] = 'O campo "Cidade" é inválido. Caracteres válidos são: "a-z", "0-9", ".", "-", e "_".';
+$wb['ssl_organisation_error_regex'] = 'O campo "Empresa" é inválido. Caracteres válidos são: "a-z", "0-9", ".", "-", e "_".';
+$wb['ssl_organistaion_unit_error_regex'] = 'O campo "Departamento" é inválido. Caracteres válidos são: "a-z", "0-9", ".", "-", e "_".';
+$wb['ssl_country_error_regex'] = 'O campo "País" é inválido. Caracteres válidos são: "A-Z".';
+$wb['limit_traffic_quota_free_txt'] = 'Limite da cota de tráfego disponível';
 $wb['php_open_basedir_txt'] = 'Diretório open_basedir do php';
-$wb['traffic_quota_exceeded_txt'] = 'Cota de tráfego alcançada';
+$wb['traffic_quota_exceeded_txt'] = 'O limite da cota de tráfego foi alcançado.';
 $wb['ruby_txt'] = 'Ruby';
-$wb['stats_user_txt'] = 'Usuário para estatísticas web';
-$wb['stats_type_txt'] = 'Programa para estatísticas web';
+$wb['stats_user_txt'] = 'Usuário de estatísticas web';
+$wb['stats_type_txt'] = 'Sistema de estatísticas web';
 $wb['custom_php_ini_txt'] = 'Configurações personalizadas do php.ini';
 $wb['none_txt'] = 'Nenhum';
-$wb['disabled_txt'] = 'Inativo';
+$wb['disabled_txt'] = 'Desabilitado';
 $wb['save_certificate_txt'] = 'Salvar certificado';
 $wb['create_certificate_txt'] = 'Adicionar certificado';
 $wb['delete_certificate_txt'] = 'Remover certificado';
 $wb['nginx_directives_txt'] = 'Diretivas do nginx';
-$wb['seo_redirect_txt'] = 'Redirecionamento SEO';
-$wb['non_www_to_www_txt'] = 'Diretivas Non-www -&gt; www';
-$wb['www_to_non_www_txt'] = 'Diretivas www -&gt; non-www';
-$wb['php_fpm_use_socket_txt'] = 'Usar soquete para PHP-FPM';
-$wb['error_no_sni_txt'] = 'SNI para SSL não está ativo neste servidor. Você só pode ativar um certificado SSL para cada endereço IP.';
+$wb['seo_redirect_txt'] = 'Diretivas SEO';
+$wb['non_www_to_www_txt'] = 'non-www -&gt; www';
+$wb['www_to_non_www_txt'] = 'www -&gt; non-www';
+$wb['php_fpm_use_socket_txt'] = 'Usar socket para php-fpm';
+$wb['error_no_sni_txt'] = 'SNI para SSL não está habilitado neste servidor. Somente poderá ser habilitado um certificado para cada endereço IP.';
 $wb['python_txt'] = 'Python';
 $wb['perl_txt'] = 'Perl';
-$wb['pm_max_children_txt'] = 'Diretiva PHP-FPM pm.max_children';
-$wb['pm_start_servers_txt'] = 'Diretiva PHP-FPM pm.start_servers';
-$wb['pm_min_spare_servers_txt'] = 'Diretiva PHP-FPM pm.min_spare_servers';
-$wb['pm_max_spare_servers_txt'] = 'Diretiva PHP-FPM pm.max_spare_servers';
-$wb['error_php_fpm_pm_settings_txt'] = 'Valores para as configurações do PHP-FPM pm devem obedecer as seguintes condições: pm.max_children &gt;= pm.max_spare_servers &gt;= pm.start_servers &gt;= pm.min_spare_servers &gt; 0';
-$wb['pm_max_children_error_regex'] = 'O valor do PHP-FPM pm.max_children deve ser um número positivo.';
-$wb['pm_start_servers_error_regex'] = 'O valor do PHP-FPM pm.start_servers deve ser um número positivo.';
-$wb['pm_min_spare_servers_error_regex'] = 'O valor do PHP-FPM pm.min_spare_servers deve ser um número positivo.';
-$wb['pm_max_spare_servers_error_regex'] = 'O valor do PHP-FPM pm.max_spare_servers deve ser um número positivo.';
-$wb['hd_quota_error_regex'] = 'Valor da cota de disco é inválido.';
-$wb['traffic_quota_error_regex'] = 'Valor da cota de tráfego é inválido.';
-$wb['fastcgi_php_version_txt'] = 'Versão do PHP';
-$wb['pm_txt'] = 'Gerenciador de Processos do PHP-FPM';
-$wb['pm_process_idle_timeout_txt'] = 'Diretiva PHP-FPM pm.process_idle_timeout';
-$wb['pm_max_requests_txt'] = 'Diretiva PHP-FPM pm.max_requests';
-$wb['pm_process_idle_timeout_error_regex'] = 'O valor do PHP-FPM pm.process_idle_timeout deve ser um número positivo.';
-$wb['pm_max_requests_error_regex'] = 'O valor do PHP-FPM pm.max_requests deve ser um inteiro >= 0.';
-$wb['pm_ondemand_hint_txt'] = 'Por favor, observe que você deve ter uma versão do PHP >= 5.3.9 para usar o gerenciador de processos sob demanda. Se você selecionar processos sob demanda usando uma versão antiga do PHP, o PHP não iniciará novamente!';
-$wb['generate_password_txt'] = 'Gerar senha';
-$wb['repeat_password_txt'] = 'Repetir senha';
-$wb['password_mismatch_txt'] = 'A senhas não coincidem.';
-$wb['password_match_txt'] = 'A senhas coincidem.';
-$wb['available_php_directive_snippets_txt'] = 'Diretivas de trechos de código do php disponíveis:';
-$wb['available_apache_directive_snippets_txt'] = 'Diretivas de trechos de código do apache disponíveis:';
-$wb['available_nginx_directive_snippets_txt'] = 'Diretivas de trechos de código do nginx disponíveis:';
-$wb['Domain'] = 'Apelido de domínio';
-$wb['ssl_letsencrypt_exclude_txt'] = 'Não adicionar certificado Let\'s Encrypt';
-$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.';
+$wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children';
+$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers';
+$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers';
+$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers';
+$wb['error_php_fpm_pm_settings_txt'] = 'Valores das configurações do php-fpm podem ser: pm.max_children &gt;= pm.max_spare_servers &gt;= pm.start_servers &gt;= pm.min_spare_servers &gt; 0';
+$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children deve ter um valor inteiro positivo.';
+$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers deve ter um valor inteiro positivo.';
+$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers deve ter um valor inteiro positivo.';
+$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers deve ter um valor inteiro positivo.';
+$wb['hd_quota_error_regex'] = 'Cota do disco é inválida.';
+$wb['traffic_quota_error_regex'] = 'Cota de tráfego é inválida.';
+$wb['fastcgi_php_version_txt'] = 'Versão do php';
+$wb['pm_txt'] = 'Gerenciador de processos do php-fpm';
+$wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
+$wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
+$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout deve ter um valor inteiro positivo.';
+$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests deve ter um valor >= 0.';
+$wb['pm_ondemand_hint_txt'] = 'Por favor, observe que é necessário uma versão do php >= 5.3.9 para utilizar o gerenciador de processos por demanda. Se for selecionado por demanda com uma versão inferior do php, o mesmo não iniciará mais!';
+$wb['generate_password_txt'] = 'Gerar Senha';
+$wb['repeat_password_txt'] = 'Repetir Senha';
+$wb['password_mismatch_txt'] = 'As senhas não coincidem.';
+$wb['password_match_txt'] = 'As senhas coincidem.';
+$wb['available_php_directive_snippets_txt'] = 'Diretivas de trecho de código do php disponíveis:';
+$wb['available_apache_directive_snippets_txt'] = 'Diretivas de trecho de código do apache disponíveis:';
+$wb['available_nginx_directive_snippets_txt'] = 'Diretivas de trecho de código do nginx disponíveis:';
+$wb['Domain'] = 'Alias de domínio';
+$wb['ssl_letsencrypt_exclude_txt'] = 'Sem certificado Let \'s Encrypt';
 ?>
diff --git a/interface/web/sites/lib/lang/br_web_childdomain_list.lng b/interface/web/sites/lib/lang/br_web_childdomain_list.lng
index 20b559b128..583ae2d360 100644
--- a/interface/web/sites/lib/lang/br_web_childdomain_list.lng
+++ b/interface/web/sites/lib/lang/br_web_childdomain_list.lng
@@ -4,15 +4,15 @@ $wb['active_txt'] = 'Ativo';
 $wb['server_id_txt'] = 'Servidor';
 $wb['parent_domain_id_txt'] = 'Site';
 $wb['domain_txt'] = 'Subdomínio';
-$wb['domain_error_empty'] = 'Domínio está em branco.';
-$wb['domain_error_unique'] = 'O nome do domínio deve ser exclusivo.';
-$wb['domain_error_regex'] = 'Nome do domínio é inválido.';
+$wb['add_new_subdomain_txt'] = 'Adicionar novo subdomínio';
+$wb['add_new_aliasdomain_txt'] = 'Adicionar novo alias de domínio';
+$wb['domain_error_empty'] = 'O domínio está em branco.';
+$wb['domain_error_unique'] = 'O domínio deve ser exclusivo.';
+$wb['domain_error_regex'] = 'O domínio é inválido.';
+$wb['domain_error_acme_invalid'] = 'Domínio genérico inválido não permitido.';
 $wb['no_redirect_txt'] = 'Sem redirecionamento';
 $wb['no_flag_txt'] = 'Sem marcas';
 $wb['none_txt'] = 'Nenhum';
-$wb['add_new_subdomain_txt'] = 'Adicionar novo subdomínio';
-$wb['add_new_aliasdomain_txt'] = 'Adicionar novo apelido';
-$wb['aliasdomain_list_head_txt'] = 'Apelidos de domínios';
+$wb['aliasdomain_list_head_txt'] = 'Alias de domínios';
 $wb['subdomain_list_head_txt'] = 'Subdomínios';
-$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.';
 ?>
diff --git a/interface/web/sites/lib/lang/br_web_domain.lng b/interface/web/sites/lib/lang/br_web_domain.lng
index 662fdb407c..1a2a2b301b 100644
--- a/interface/web/sites/lib/lang/br_web_domain.lng
+++ b/interface/web/sites/lib/lang/br_web_domain.lng
@@ -1,116 +1,115 @@
 <?php
+$wb['backup_interval_txt'] = 'Intervalo entre backups';
+$wb['backup_copies_txt'] = 'Número de cópias do backup';
 $wb['ssl_state_txt'] = 'Estado';
 $wb['ssl_locality_txt'] = 'Cidade';
 $wb['ssl_organisation_txt'] = 'Empresa';
 $wb['ssl_organisation_unit_txt'] = 'Departamento';
 $wb['ssl_country_txt'] = 'País';
+$wb['ssl_key_txt'] = 'Chave';
 $wb['ssl_request_txt'] = 'Requisição';
 $wb['ssl_cert_txt'] = 'Certificado';
-$wb['ssl_bundle_txt'] = 'Pacote';
+$wb['ssl_bundle_txt'] = 'Agrupar';
 $wb['ssl_action_txt'] = 'Ação';
+$wb['ssl_domain_txt'] = 'Domínio';
 $wb['server_id_txt'] = 'Servidor';
 $wb['domain_txt'] = 'Domínio';
+$wb['web_folder_error_regex'] = 'Pasta web é inválida. Por favor não utilize o caractere barra(/).';
 $wb['type_txt'] = 'Tipo';
-$wb['parent_domain_id_txt'] = 'Site pai';
+$wb['parent_domain_id_txt'] = 'Site Pai';
 $wb['redirect_type_txt'] = 'Tipo de redirecionamento';
-$wb['redirect_path_txt'] = 'Caminho do redirecionamento';
+$wb['redirect_path_txt'] = 'Caminho para o redirecionamento';
 $wb['active_txt'] = 'Ativo';
-$wb['document_root_txt'] = 'Diretório Documentroot';
+$wb['document_root_txt'] = 'Documentroot';
 $wb['system_user_txt'] = 'Usuário Linux';
 $wb['system_group_txt'] = 'Grupo Linux';
-$wb['ip_address_txt'] = 'Endereço IP';
-$wb['vhost_type_txt'] = 'Tipo de VHost';
-$wb['hd_quota_txt'] = 'Cota de disco';
-$wb['traffic_quota_txt'] = 'Cota de tráfego';
+$wb['ip_address_txt'] = 'Endereço IPv4';
+$wb['ipv6_address_txt'] = 'Endereço IPv6';
+$wb['vhost_type_txt'] = 'Tipo do VHost';
+$wb['hd_quota_txt'] = 'Cota do Disco';
+$wb['traffic_quota_txt'] = 'Cota de Tráfego';
 $wb['cgi_txt'] = 'CGI';
 $wb['ssi_txt'] = 'SSI';
-$wb['errordocs_txt'] = 'Páginas de erro personalizadas (error-documents)';
+$wb['errordocs_txt'] = 'Proprietário do Error-Documents';
 $wb['subdomain_txt'] = 'Subdomínio automático';
 $wb['ssl_txt'] = 'SSL';
 $wb['suexec_txt'] = 'SuEXEC';
 $wb['php_txt'] = 'PHP';
 $wb['client_txt'] = 'Cliente';
 $wb['limit_web_domain_txt'] = 'O limite de domínios de site para esta conta foi alcançado.';
-$wb['limit_web_aliasdomain_txt'] = 'O limite de apelidos de domínio domínio para esta conta foi alcançado.';
-$wb['limit_web_subdomain_txt'] = 'O limite de subdomínios para esta conta foi alcançado.';
+$wb['limit_web_aliasdomain_txt'] = 'O limite de alias de domínios para esta conta foi alcançado.';
+$wb['limit_web_subdomain_txt'] = 'O limite de subdomínios de site para esta conta foi alcançado.';
 $wb['apache_directives_txt'] = 'Diretivas do apache';
-$wb['domain_error_empty'] = 'Domínio está em branco.';
-$wb['domain_error_unique'] = 'Já existe site, apelido ou subdomínio com este nome';
-$wb['domain_error_regex'] = 'Nome de domínio é inválido.';
-$wb['hd_quota_error_empty'] = 'Cota de disco está em branco.';
+$wb['domain_error_empty'] = 'O campo "Domínio" está em branco.';
+$wb['domain_error_unique'] = 'Já existe um site, subdomínio ou alias de domínio com este nome.';
+$wb['domain_error_regex'] = 'O campo "Domínio" é inválido.';
+$wb['domain_error_autosub'] = 'Já existe um subdomínio com estas configurações.';
+$wb['hd_quota_error_empty'] = 'Cota do disco é 0 ou está em branco.';
 $wb['traffic_quota_error_empty'] = 'Cota de tráfego está em branco.';
-$wb['error_ssl_state_empty'] = 'Campo \'Estado\' está em branco.';
-$wb['error_ssl_locality_empty'] = 'Campo \'Cidade\' está em branco.';
-$wb['error_ssl_organisation_empty'] = 'Campo \'Empresa\' está em branco.';
-$wb['error_ssl_organisation_unit_empty'] = 'Campo \'Departamento\' está em branco.';
-$wb['error_ssl_country_empty'] = 'Campo \'País\' está em branco.';
+$wb['error_ssl_state_empty'] = 'O campo "Estado" está em branco.';
+$wb['error_ssl_locality_empty'] = 'O campo "Cidade" está em branco.';
+$wb['error_ssl_organisation_empty'] = 'o Campo "Empresa" está em branco.';
+$wb['error_ssl_organisation_unit_empty'] = 'O campo "Departamento" está em branco.';
+$wb['error_ssl_country_empty'] = 'O campo "País" está em branco.';
+$wb['error_ssl_cert_empty'] = 'O campo "Certificado" está em branco.';
 $wb['client_group_id_txt'] = 'Cliente';
-$wb['stats_password_txt'] = 'Senha do diretório de estatísticas';
-$wb['ssl_domain_txt'] = 'Domínio';
-$wb['allow_override_txt'] = 'Permitir Sobrescrever';
-$wb['limit_web_quota_free_txt'] = 'Cota máxima de disco disponível';
-$wb['ssl_state_error_regex'] = 'Campo \'Estado\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.';
-$wb['ssl_locality_error_regex'] = 'Campo \'Cidade\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.';
-$wb['ssl_organisation_error_regex'] = 'Campo \'Empresa\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.';
-$wb['ssl_organistaion_unit_error_regex'] = 'Campo \'Departamento\' é inválido. São caracteres válidos: \\"a-z\\", \'0-9\' e \'.,-_\'.';
-$wb['ssl_country_error_regex'] = 'Campo \'País\' é inválido. São caracteres válidos: \'A-Z\'.';
-$wb['limit_traffic_quota_free_txt'] = 'Cota máxima de tráfego disponível';
-$wb['redirect_error_regex'] = 'Caminho de redirecionamento é inválido. Exemplos de caminhos válidos: \\"/teste/\\" ou \\"http://www.dominio.com.br/teste/\\".';
+$wb['stats_password_txt'] = 'Configurar senha para estatísticas web';
+$wb['allow_override_txt'] = 'Diretiva Apache AllowOverride';
+$wb['limit_web_quota_free_txt'] = 'Limite da cota do disco disponível';
+$wb['ssl_locality_error_regex'] = 'O campo "Cidade" é inválido. São caracteres válidos: "a-z", "0-9", ".", "-", e "_".';
+$wb['ssl_organisation_error_regex'] = 'O campo "Empresa" é inválido. São caracteres válidos: "a-z", "0-9", ".", "-", e "_".';
+$wb['ssl_organistaion_unit_error_regex'] = 'O campo "Departamento" é inválido. São caracteres válidos: "a-z", "0-9", ".", "-", e "_".';
+$wb['ssl_country_error_regex'] = 'O campo "País" é inválido. São caracteres válidos: "A-Z".';
+$wb['limit_traffic_quota_free_txt'] = 'Limite da cota de tráfego disponível';
+$wb['redirect_error_regex'] = 'Caminho de redirecionamento inválido. Redirecionamentos válidos são, por ex.: /teste/ ou http://www.dominio.com.br/teste/';
 $wb['php_open_basedir_txt'] = 'Diretório open_basedir do php';
-$wb['traffic_quota_exceeded_txt'] = 'Cota de tráfego excedida';
-$wb['backup_interval_txt'] = 'Intervalo de backup';
-$wb['backup_copies_txt'] = 'Limite de cópias';
+$wb['traffic_quota_exceeded_txt'] = 'O limite da cota de tráfego foi alcançado.';
 $wb['ruby_txt'] = 'Ruby';
-$wb['stats_user_txt'] = 'Usuário para estatísticas web';
-$wb['stats_type_txt'] = 'Tipo de estatísticas web';
-$wb['custom_php_ini_txt'] = 'php.ini personalizado';
-$wb['error_ssl_cert_empty'] = 'Campo \'Certificado\' vazio';
-$wb['none_txt'] = 'Nenhuma';
+$wb['stats_user_txt'] = 'Usuário de estatísticas web';
+$wb['stats_type_txt'] = 'Sistema de estatísticas web';
+$wb['custom_php_ini_txt'] = 'Configurações personalizadas do php.ini';
+$wb['none_txt'] = 'Nenhum';
 $wb['disabled_txt'] = 'Desabilitado';
 $wb['no_redirect_txt'] = 'Sem redirecionamento';
 $wb['no_flag_txt'] = 'Sem marcas';
-$wb['save_certificate_txt'] = 'Salvar certificado';
-$wb['create_certificate_txt'] = 'Adicionar certificado';
-$wb['delete_certificate_txt'] = 'Remover certificado';
-$wb['ipv6_address_txt'] = 'Endereço IPv6';
-$wb['nginx_directives_txt'] = 'Diretivas nginx';
-$wb['seo_redirect_txt'] = 'Redirecionamento SEO';
-$wb['non_www_to_www_txt'] = 'Diretiva Non-www -&gt; www';
-$wb['www_to_non_www_txt'] = 'Diretiva www -&gt; non-www';
-$wb['php_fpm_use_socket_txt'] = 'Usar soquete para PHP-FPM';
-$wb['error_no_sni_txt'] = 'O SNI para SSL não está ativo neste servidor. Você só pode habilitar um certificado para cada endereço IP.';
+$wb['save_certificate_txt'] = 'Salvar Certificado';
+$wb['create_certificate_txt'] = 'Adicionar Certificado';
+$wb['delete_certificate_txt'] = 'Remover Certificado';
+$wb['nginx_directives_txt'] = 'Diretivas do nginx';
+$wb['seo_redirect_txt'] = 'Diretivas SEO';
+$wb['non_www_to_www_txt'] = 'non-www -&gt; www';
+$wb['www_to_non_www_txt'] = 'www -&gt; non-www';
+$wb['php_fpm_use_socket_txt'] = 'Usar socket para php-fpm';
+$wb['error_no_sni_txt'] = 'SNI para SSL não está habilitado neste servidor. Somente poderá ser habilitado um certificado para cada endereço IP.';
 $wb['python_txt'] = 'Python';
-$wb['pm_max_children_txt'] = 'Diretiva PHP-FPM pm.max_children';
-$wb['pm_start_servers_txt'] = 'Diretiva PHP-FPM pm.start_servers';
-$wb['pm_min_spare_servers_txt'] = 'Diretiva PHP-FPM pm.min_spare_servers';
-$wb['pm_max_spare_servers_txt'] = 'Diretiva PHP-FPM pm.max_spare_servers';
-$wb['error_php_fpm_pm_settings_txt'] = 'Valores para as configurações do PHP-FPM pm devem obedecer as seguintes condições: pm.max_children &gt;= pm.max_spare_servers &gt;= pm.start_servers &gt;= pm.min_spare_servers &gt; 0';
-$wb['pm_max_children_error_regex'] = 'O valor do PHP-FPM pm.max_children deve ser um número positivo.';
-$wb['pm_start_servers_error_regex'] = 'O valor do PHP-FPM pm.start_servers deve ser um inteiro positvo.';
-$wb['pm_min_spare_servers_error_regex'] = 'O valor do PHP-FPM pm.min_spare_servers deve ser um número positivo.';
-$wb['pm_max_spare_servers_error_regex'] = 'O valor do PHP-FPM pm.max_spare_servers deve ser um número positivo.';
-$wb['hd_quota_error_regex'] = 'Valor da cota de disco é é inválido.';
-$wb['traffic_quota_error_regex'] = 'Valor da cota de tráfego é é inválido.';
-$wb['ssl_key_txt'] = 'Chave';
 $wb['perl_txt'] = 'Perl';
-$wb['fastcgi_php_version_txt'] = 'Versão do PHP';
-$wb['pm_txt'] = 'Gerenciador de Processos do PHP-FPM';
-$wb['pm_process_idle_timeout_txt'] = 'Diretiva PHP-FPM pm.process_idle_timeout';
-$wb['pm_max_requests_txt'] = 'Diretiva PHP-FPM pm.max_requests';
-$wb['pm_process_idle_timeout_error_regex'] = 'O valor do PHP-FPM pm.process_idle_timeout deve ser um número positivo.';
-$wb['pm_max_requests_error_regex'] = 'O valor do PHP-FPM pm.max_requests deve ser um inteiro >= 0.';
-$wb['pm_ondemand_hint_txt'] = 'Por favor, observe que você deve ter uma versão do PHP >= 5.3.9 para usar o gerenciador de processos sob demanda. Se você selecionar processos sob demanda usando uma versão antiga do PHP, o PHP não iniciará novamente!';
-$wb['generate_password_txt'] = 'Gerar senha';
-$wb['repeat_password_txt'] = 'Repetir senha';
-$wb['password_mismatch_txt'] = 'A senhas não coincidem.';
-$wb['password_match_txt'] = 'A senhas coincidem.';
-$wb['web_folder_error_regex'] = 'Pasta informada é inválida! Por favor não insira barra \\"/\\".';
-$wb['domain_error_autosub'] = 'Já existe um subdomínio com estas configurações.';
-$wb['available_php_directive_snippets_txt'] = 'Diretivas de trechos de código do php:';
-$wb['available_apache_directive_snippets_txt'] = 'Diretivas de trechos de código do apache:';
-$wb['available_nginx_directive_snippets_txt'] = 'Diretivas de trechos de código do nginx:';
+$wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children';
+$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers';
+$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers';
+$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers';
+$wb['error_php_fpm_pm_settings_txt'] = 'Valores das configurações do php-fpm podem ser: pm.max_children &gt;= pm.max_spare_servers &gt;= pm.start_servers &gt;= pm.min_spare_servers &gt; 0';
+$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children deve ter um valor inteiro positivo.';
+$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers deve ter um valor inteiro positivo.';
+$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers deve ter um valor inteiro positivo.';
+$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers deve ter um valor inteiro positivo.';
+$wb['hd_quota_error_regex'] = 'Cota do disco é inválida.';
+$wb['traffic_quota_error_regex'] = 'Cota de tráfego é inválida.';
+$wb['fastcgi_php_version_txt'] = 'Versão do php';
+$wb['pm_txt'] = 'Gerenciador de Processos do php-fpm';
+$wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
+$wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
+$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout deve ter um valor inteiro positivo.';
+$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests deve ter um valor >= 0.';
+$wb['pm_ondemand_hint_txt'] = 'Por favor, observe que é necessário uma versão do php >= 5.3.9 para utilizar o gerenciador de processos por demanda. Se for selecionado por demanda com uma versão inferior do php, o mesmo não iniciará mais!';
+$wb['generate_password_txt'] = 'Gerar Senha';
+$wb['repeat_password_txt'] = 'Repetir Senha';
+$wb['password_mismatch_txt'] = 'As senhas não coincidem.';
+$wb['password_match_txt'] = 'As senhas coincidem.';
+$wb['available_php_directive_snippets_txt'] = 'Diretivas de trecho de código do php disponíveis:';
+$wb['available_apache_directive_snippets_txt'] = 'Diretivas de trecho de código do apache disponíveis:';
+$wb['available_nginx_directive_snippets_txt'] = 'Diretivas de trecho de código do nginx disponíveis:';
 $wb['proxy_directives_txt'] = 'Diretivas do proxy';
-$wb['available_proxy_directive_snippets_txt'] = 'Diretivas de trechos de código do proxy:';
+$wb['available_proxy_directive_snippets_txt'] = 'Diretivas de trechos de código do proxy disponíveis:';
 $wb['no_server_error'] = 'Nenhum servidor selecionado.';
 $wb['no_backup_txt'] = 'Sem backup';
 $wb['daily_backup_txt'] = 'Diário';
@@ -118,20 +117,20 @@ $wb['weekly_backup_txt'] = 'Semanal';
 $wb['monthly_backup_txt'] = 'Mensal';
 $wb['rewrite_rules_txt'] = 'Reescrever Regras';
 $wb['invalid_rewrite_rules_txt'] = 'Regras de reescrita inválidas';
-$wb['allowed_rewrite_rule_directives_txt'] = 'Diretivas Permitidas:';
+$wb['allowed_rewrite_rule_directives_txt'] = 'Diretivas permitidas:';
 $wb['configuration_error_txt'] = 'ERRO DE CONFIGURAÇÃO';
 $wb['variables_txt'] = 'Variáveis';
-$wb['added_by_txt'] = 'Cadastrado por';
+$wb['added_by_txt'] = 'Cadastrador por';
 $wb['added_date_txt'] = 'Data do cadastro';
-$wb['backup_excludes_txt'] = 'Diretórios excluídos';
-$wb['backup_excludes_note_txt'] = '(Separar múltiplos diretórios por vírgula. Exemplo: web/cache/*,web/backup)';
-$wb['backup_excludes_error_regex'] = 'Os diretórios excluídos contém caracteres inválidos!';
+$wb['backup_excludes_txt'] = 'Diretórios Excluídos';
+$wb['backup_excludes_note_txt'] = '(Separar múltiplos diretórios por vírgulas. Exemplo: web/cache/*, web/backup)';
+$wb['backup_excludes_error_regex'] = 'Os diretórios excluídos possuem caracteres inválidos.';
 $wb['invalid_custom_php_ini_settings_txt'] = 'Configurações do php.ini inválidas';
-$wb['invalid_system_user_or_group_txt'] = 'Configurações inválidas para usuário ou grupo do sistema';
-$wb['apache_directive_blocked_error'] = 'Diretiva do apache bloqueada por configurações de segurança:';
-$wb['http_port_txt'] = 'Porta HTTP';
-$wb['https_port_txt'] = 'Porta HTTPS';
-$wb['http_port_error_regex'] = 'Porta HTTP inválida.';
-$wb['https_port_error_regex'] = 'Porta HTTPS inválida.';
-$wb['nginx_directive_blocked_error'] = 'Nginx directive blocked by security settings:';
+$wb['invalid_system_user_or_group_txt'] = 'Usuário ou grupo inválido.';
+$wb['apache_directive_blocked_error'] = 'Diretivas do apache bloqueadas pelas configurações de segurança:';
+$wb['http_port_txt'] = 'Porta http';
+$wb['https_port_txt'] = 'Porta https';
+$wb['http_port_error_regex'] = 'Porta http inválida.';
+$wb['https_port_error_regex'] = 'Porta https inválida.';
+$wb['nginx_directive_blocked_error'] = 'Diretivas do nginx bloqueadas pelas configurações de segurança:';
 ?>
diff --git a/interface/web/sites/lib/lang/br_web_folder.lng b/interface/web/sites/lib/lang/br_web_folder.lng
index 34a3f65b0c..193cb4636f 100644
--- a/interface/web/sites/lib/lang/br_web_folder.lng
+++ b/interface/web/sites/lib/lang/br_web_folder.lng
@@ -4,5 +4,5 @@ $wb['parent_domain_id_txt'] = 'Site';
 $wb['path_txt'] = 'Caminho';
 $wb['active_txt'] = 'Ativo';
 $wb['path_error_regex'] = 'Caminho da pasta é inválido.';
-$wb['error_folder_already_protected_txt'] = 'Já existe um registro para esta pasta.';
+$wb['error_folder_already_protected_txt'] = 'Já existe esta pasta.';
 ?>
diff --git a/interface/web/sites/lib/lang/br_web_folder_user.lng b/interface/web/sites/lib/lang/br_web_folder_user.lng
index dd63d02eec..5dc0354fec 100644
--- a/interface/web/sites/lib/lang/br_web_folder_user.lng
+++ b/interface/web/sites/lib/lang/br_web_folder_user.lng
@@ -1,14 +1,14 @@
 <?php
-$wb['web_folder_id_txt'] = 'Pastas protegidas';
+$wb['web_folder_id_txt'] = 'Pasta';
 $wb['username_txt'] = 'Usuário';
 $wb['password_txt'] = 'Senha';
 $wb['active_txt'] = 'Ativo';
 $wb['folder_error_empty'] = 'Nenhuma pasta selecionada.';
 $wb['password_strength_txt'] = 'Dificuldade da senha';
-$wb['generate_password_txt'] = 'Gerar senha';
-$wb['repeat_password_txt'] = 'Repetir senha';
-$wb['password_mismatch_txt'] = 'A senhas não coincidem.';
-$wb['password_match_txt'] = 'A senhas coincidem.';
+$wb['generate_password_txt'] = 'Gerar Senha';
+$wb['repeat_password_txt'] = 'Repetir Senha';
+$wb['password_mismatch_txt'] = 'As senhas não coincidem.';
+$wb['password_match_txt'] = 'As senhas coincidem.';
 $wb['no_folder_perm'] = 'Você não tem permissão para esta pasta.';
 $wb['error_user_exists_already_txt'] = 'Já existe um registro igual para este usuário.';
 ?>
diff --git a/interface/web/sites/lib/lang/br_web_folder_user_list.lng b/interface/web/sites/lib/lang/br_web_folder_user_list.lng
index e108c219b9..8ad8c48257 100644
--- a/interface/web/sites/lib/lang/br_web_folder_user_list.lng
+++ b/interface/web/sites/lib/lang/br_web_folder_user_list.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['list_head_txt'] = 'Usuários de pastas';
+$wb['list_head_txt'] = 'Usuário de Pasta';
 $wb['active_txt'] = 'Ativo';
-$wb['web_folder_id_txt'] = 'ID da pasta';
+$wb['web_folder_id_txt'] = 'Pasta';
 $wb['username_txt'] = 'Usuário';
 $wb['add_new_record_txt'] = 'Adicionar novo usuário';
 ?>
diff --git a/interface/web/sites/lib/lang/br_web_subdomain.lng b/interface/web/sites/lib/lang/br_web_subdomain.lng
index 0ccc574805..53cb94ab54 100644
--- a/interface/web/sites/lib/lang/br_web_subdomain.lng
+++ b/interface/web/sites/lib/lang/br_web_subdomain.lng
@@ -6,21 +6,21 @@ $wb['ssl_organisation_unit_txt'] = 'Departamento';
 $wb['ssl_country_txt'] = 'País';
 $wb['ssl_request_txt'] = 'Requisição';
 $wb['ssl_cert_txt'] = 'Certificado';
-$wb['ssl_bundle_txt'] = 'Pacote';
+$wb['ssl_bundle_txt'] = 'Agrupar';
 $wb['ssl_action_txt'] = 'Ação';
 $wb['server_id_txt'] = 'Servidor';
 $wb['domain_txt'] = 'Domínio';
 $wb['type_txt'] = 'Tipo';
 $wb['parent_domain_id_txt'] = 'Site Pai';
-$wb['redirect_type_txt'] = 'Tipo do Redirecionamento';
-$wb['redirect_path_txt'] = 'Caminho do Redirecionamento';
+$wb['redirect_type_txt'] = 'Tipo de redirecionamento';
+$wb['redirect_path_txt'] = 'Caminho para o redirecionamento';
 $wb['active_txt'] = 'Ativo';
 $wb['document_root_txt'] = 'Documentroot';
 $wb['system_user_txt'] = 'Usuário Linux';
 $wb['system_group_txt'] = 'Grupo Linux';
 $wb['ip_address_txt'] = 'Endereço IP';
-$wb['vhost_type_txt'] = 'Tipo VHost';
-$wb['hd_quota_txt'] = 'Cota de Disco';
+$wb['vhost_type_txt'] = 'Tipo do VHost';
+$wb['hd_quota_txt'] = 'Cota do Disco';
 $wb['traffic_quota_txt'] = 'Cota de Tráfego';
 $wb['cgi_txt'] = 'CGI';
 $wb['ssi_txt'] = 'SSI';
@@ -29,22 +29,22 @@ $wb['suexec_txt'] = 'SuEXEC';
 $wb['php_txt'] = 'PHP';
 $wb['client_txt'] = 'Cliente';
 $wb['limit_web_domain_txt'] = 'O limite de domínios de site para esta conta foi alcançado.';
-$wb['limit_web_aliasdomain_txt'] = 'O limite de apelidos de domínio para esta conta foi alcançado.';
-$wb['limit_web_subdomain_txt'] = 'O limite de subdomínios para esta conta foi alcançado.';
+$wb['limit_web_aliasdomain_txt'] = 'O limite de alias de domínios para esta conta foi alcançado.';
+$wb['limit_web_subdomain_txt'] = 'O limite de subdomínios de site para esta conta foi alcançado.';
 $wb['apache_directives_txt'] = 'Diretivas do apache';
-$wb['domain_error_empty'] = 'Domínio está em branco.';
-$wb['domain_error_unique'] = 'Já existe apelido de domínio ou subdomínio com este nome.';
-$wb['domain_error_regex'] = 'Nome do domínio é inválido.';
+$wb['domain_error_empty'] = 'O domínio está em branco.';
+$wb['domain_error_unique'] = 'Já existe um site, subdomínio ou alias de domínio com este nome.';
+$wb['domain_error_regex'] = 'O domínio é inválido.';
+$wb['domain_error_wildcard'] = 'Curingas não são permitidos para subdomínios.';
 $wb['host_txt'] = 'Host';
-$wb['redirect_error_regex'] = 'Caminho de redirecionamento é inválido. Exemplo de caminho válido: \\"/teste/\\" ou \\"http://www.dominio.com.br/teste/\\".';
+$wb['redirect_error_regex'] = 'Caminho de redirecionamento inválido. Redirecionamentos válidos são, por ex.: /teste/ ou http://www.dominio.com.br/teste/';
 $wb['no_redirect_txt'] = 'Sem redirecionamento';
 $wb['no_flag_txt'] = 'Sem marcas';
-$wb['domain_error_wildcard'] = 'Curingas de subdomínios não são permitidos.';
 $wb['proxy_directives_txt'] = 'Diretivas do proxy';
 $wb['available_proxy_directive_snippets_txt'] = 'Diretivas de trechos de código do proxy disponíveis:';
-$wb['error_proxy_requires_url'] = 'Tipo de redirecionamento \'proxy\' exige uma URL como caminho de redirecionamento.';
-$wb['http_port_txt'] = 'Porta HTTP';
-$wb['https_port_txt'] = 'Porta HTTPS';
-$wb['http_port_error_regex'] = 'Porta HTTP inválida.';
-$wb['https_port_error_regex'] = 'Porta HTTPS inválida.';
+$wb['error_proxy_requires_url'] = 'O tipo de redirecionamento "proxy" exige uma URL como caminho de redirecionamento.';
+$wb['http_port_txt'] = 'Porta http';
+$wb['https_port_txt'] = 'Porta https';
+$wb['http_port_error_regex'] = 'Porta http inválida.';
+$wb['https_port_error_regex'] = 'Porta https inválida.';
 ?>
diff --git a/interface/web/sites/lib/lang/br_web_vhost_domain.lng b/interface/web/sites/lib/lang/br_web_vhost_domain.lng
index 4c72b1fd88..01a7414a98 100644
--- a/interface/web/sites/lib/lang/br_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/br_web_vhost_domain.lng
@@ -1,116 +1,116 @@
 <?php
+$wb['backup_interval_txt'] = 'Intervalo entre backups';
+$wb['backup_copies_txt'] = 'Número de cópias do backup';
 $wb['ssl_state_txt'] = 'Estado';
 $wb['ssl_locality_txt'] = 'Cidade';
 $wb['ssl_organisation_txt'] = 'Empresa';
 $wb['ssl_organisation_unit_txt'] = 'Departamento';
 $wb['ssl_country_txt'] = 'País';
+$wb['ssl_key_txt'] = 'Chave';
 $wb['ssl_request_txt'] = 'Requisição';
 $wb['ssl_cert_txt'] = 'Certificado';
-$wb['ssl_bundle_txt'] = 'Pacote';
+$wb['ssl_bundle_txt'] = 'Agrupar';
 $wb['ssl_action_txt'] = 'Ação';
+$wb['ssl_domain_txt'] = 'Domínio';
 $wb['server_id_txt'] = 'Servidor';
 $wb['domain_txt'] = 'Domínio';
+$wb['web_folder_error_regex'] = 'Pasta web é inválida. Por favor não utilize o caractere barra(/).';
 $wb['type_txt'] = 'Tipo';
-$wb['parent_domain_id_txt'] = 'Site Parente';
-$wb['redirect_type_txt'] = 'Tipo Redirecionamento';
-$wb['redirect_path_txt'] = 'Caminho do redirecionamento';
+$wb['parent_domain_id_txt'] = 'Site Pai';
+$wb['redirect_type_txt'] = 'Tipo de redirecionamento';
+$wb['redirect_path_txt'] = 'Caminho para o redirecionamento';
 $wb['active_txt'] = 'Ativo';
-$wb['document_root_txt'] = 'Pasta personalizada documentroot';
+$wb['document_root_txt'] = 'Document-root';
 $wb['system_user_txt'] = 'Usuário Linux';
 $wb['system_group_txt'] = 'Grupo Linux';
-$wb['ip_address_txt'] = 'Endereço IP';
-$wb['vhost_type_txt'] = 'Tipo VHost';
-$wb['hd_quota_txt'] = 'Cota de Disco';
+$wb['ip_address_txt'] = 'Endereço IPv4';
+$wb['ipv6_address_txt'] = 'Endereço IPv6';
+$wb['vhost_type_txt'] = 'Tipo do VHost';
+$wb['hd_quota_txt'] = 'Cota do Disco';
 $wb['traffic_quota_txt'] = 'Cota de Tráfego';
 $wb['cgi_txt'] = 'CGI';
 $wb['ssi_txt'] = 'SSI';
-$wb['errordocs_txt'] = 'Pasta personalizada errordocuments';
+$wb['errordocs_txt'] = 'Proprietário do Error-Documents';
 $wb['subdomain_txt'] = 'Subdomínio automático';
 $wb['ssl_txt'] = 'SSL';
-$wb['ssl_letsencrypt_txt'] = 'Let\'s Encrypt';
 $wb['suexec_txt'] = 'SuEXEC';
 $wb['php_txt'] = 'PHP';
 $wb['client_txt'] = 'Cliente';
 $wb['limit_web_domain_txt'] = 'O limite de domínios de site para esta conta foi alcançado.';
-$wb['limit_web_aliasdomain_txt'] = 'O limite de apelidos de domínio de site para esta conta foi alcançado.';
+$wb['limit_web_aliasdomain_txt'] = 'O limite de alias de domínios para esta conta foi alcançado.';
 $wb['limit_web_subdomain_txt'] = 'O limite de subdomínios de site para esta conta foi alcançado.';
 $wb['apache_directives_txt'] = 'Diretivas do apache';
-$wb['domain_error_empty'] = 'Domínio está em branco.';
-$wb['domain_error_unique'] = 'Já existe site, apelido de domínio ou subdomínio com este nome';
-$wb['domain_error_regex'] = 'Nome do domínio é inválido.';
-$wb['hd_quota_error_empty'] = 'Cota de disco está em branco.';
+$wb['domain_error_empty'] = 'O campo "Domínio" está em branco.';
+$wb['domain_error_unique'] = 'Já existe um site, subdomínio ou alias de domínio com este nome.';
+$wb['domain_error_regex'] = 'O campo "Domínio" é inválido.';
+$wb['domain_error_acme_invalid'] = 'Domínio genérico inválido não permitido.';
+$wb['domain_error_autosub'] = 'Já existe um subdomínio com estas configurações.';
+$wb['hd_quota_error_empty'] = 'Cota do disco é 0 ou está em branco.';
 $wb['traffic_quota_error_empty'] = 'Cota de tráfego está em branco.';
-$wb['error_ssl_state_empty'] = 'Campo \'Estado\' está em branco.';
-$wb['error_ssl_locality_empty'] = 'Campo \'Cidade\' está em branco.';
-$wb['error_ssl_organisation_empty'] = 'Campo \'Empresa\' está em branco.';
-$wb['error_ssl_organisation_unit_empty'] = 'Campo \'Departamento\' está em branco.';
-$wb['error_ssl_country_empty'] = 'Campo \'País\' está em branco.';
+$wb['error_ssl_state_empty'] = 'O campo "Estado" está em branco.';
+$wb['error_ssl_locality_empty'] = 'O campo "Cidade" está em branco.';
+$wb['error_ssl_organisation_empty'] = 'O campo "Empresa" está em branco.';
+$wb['error_ssl_organisation_unit_empty'] = 'O campo "Departamento" está em branco.';
+$wb['error_ssl_country_empty'] = 'O campo "País" está em branco.';
+$wb['error_ssl_cert_empty'] = 'O campo "Certificado" está em branco.';
 $wb['client_group_id_txt'] = 'Cliente';
-$wb['stats_password_txt'] = 'Senha do diretório de estatísticas';
-$wb['ssl_domain_txt'] = 'Domínio SSL';
-$wb['allow_override_txt'] = 'Permitir sobrescrever';
-$wb['limit_web_quota_free_txt'] = 'Cota de disco máxima';
-$wb['ssl_state_error_regex'] = 'Campo \'Estado\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.';
-$wb['ssl_locality_error_regex'] = 'Campo \'Cidade\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.';
-$wb['ssl_organisation_error_regex'] = 'Campo \'Empresa\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.';
-$wb['ssl_organistaion_unit_error_regex'] = 'Campo \'Departamento\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.';
-$wb['ssl_country_error_regex'] = 'Campo \'País\' é inválido. São caracteres válidos: \'A-Z\'.';
-$wb['limit_traffic_quota_free_txt'] = 'Limite da cota de tráfego';
-$wb['redirect_error_regex'] = 'Caminho de redirecionamento é inválido. Exemplos de caminhos válidos: \\"/teste\\" ou \\"http://www.dominio.com.br/teste/\\".';
+$wb['stats_password_txt'] = 'Configurar senha para estatísticas web';
+$wb['allow_override_txt'] = 'Diretiva Apache AllowOverride';
+$wb['limit_web_quota_free_txt'] = 'Limite da cota de disco disponível';
+$wb['ssl_state_error_regex'] = 'O campo "Estado" é inválido. São caracteres válidos: "a-z", "0-9", ".", "-", e "_".';
+$wb['ssl_locality_error_regex'] = 'O campo "Cidade" é inválido. São caracteres válidos: "a-z", "0-9", ".", "-", e "_".';
+$wb['ssl_organisation_error_regex'] = 'O campo "Empresa" é inválido. São caracteres válidos: "a-z", "0-9", ".", "-", e "_".';
+$wb['ssl_organistaion_unit_error_regex'] = 'O campo "Departamento" é inválido. São caracteres válidos: "a-z", "0-9", ".", "-", e "_".';
+$wb['ssl_country_error_regex'] = 'O campo "País" é inválido. São caracteres válidos: "A-Z".';
+$wb['limit_traffic_quota_free_txt'] = 'Limite da cota de tráfego disponível';
+$wb['redirect_error_regex'] = 'Caminho de redirecionamento inválido. Redirecionamentos válidos são, por ex.: /teste/ ou http://www.dominio.com.br/teste/';
 $wb['php_open_basedir_txt'] = 'Diretório open_basedir do php';
-$wb['traffic_quota_exceeded_txt'] = 'Cota de tráfego excedida';
-$wb['backup_interval_txt'] = 'Intervalo de backup';
-$wb['backup_copies_txt'] = 'Limite de cópias';
+$wb['traffic_quota_exceeded_txt'] = 'O limite da cota de tráfego foi alcançado.';
 $wb['ruby_txt'] = 'Ruby';
 $wb['stats_user_txt'] = 'Usuário de estatísticas web';
-$wb['stats_type_txt'] = 'Tipo de estatística web';
-$wb['custom_php_ini_txt'] = 'php.ini personalizado';
-$wb['error_ssl_cert_empty'] = 'Campo \'Certificado\' em branco';
-$wb['none_txt'] = 'Nenhuma';
+$wb['stats_type_txt'] = 'Sistema de estatísticas web';
+$wb['custom_php_ini_txt'] = 'Configurações personalizadas do php.ini';
+$wb['none_txt'] = 'Nenhum';
 $wb['disabled_txt'] = 'Desabilitado';
 $wb['no_redirect_txt'] = 'Sem redirecionamento';
 $wb['no_flag_txt'] = 'Sem marcas';
-$wb['save_certificate_txt'] = 'Salvar certificado';
-$wb['create_certificate_txt'] = 'Adicionar certificado';
-$wb['delete_certificate_txt'] = 'Remover certificado';
-$wb['ipv6_address_txt'] = 'Endereço IPv6';
+$wb['save_certificate_txt'] = 'Salvar Certificado';
+$wb['create_certificate_txt'] = 'Adicionar Certificado';
+$wb['delete_certificate_txt'] = 'Remover Certificado';
 $wb['nginx_directives_txt'] = 'Diretivas do nginx';
-$wb['seo_redirect_txt'] = 'Redirecionamento SEO';
-$wb['non_www_to_www_txt'] = 'Diretivas Non-www -&gt; www';
-$wb['www_to_non_www_txt'] = 'Diretivas www -&gt; non-www';
-$wb['php_fpm_use_socket_txt'] = 'Usar soquete para o PHP-FPM';
-$wb['php_fpm_chroot_txt'] = 'Chroot PHP-FPM';
-$wb['error_no_sni_txt'] = 'O SNI para SSL não está ativo neste servidor. Você só pode habilitar um certificado para cada endereço IP.';
+$wb['seo_redirect_txt'] = 'Diretivas SEO';
+$wb['non_www_to_www_txt'] = 'non-www -&gt; www';
+$wb['www_to_non_www_txt'] = 'www -&gt; non-www';
+$wb['php_fpm_use_socket_txt'] = 'Usar socket para php-fpm';
+$wb['php_fpm_chroot_txt'] = 'Chroot php-fpm';
+$wb['error_no_sni_txt'] = 'SNI para SSL não está habilitado neste servidor. Somente poderá ser habilitado um certificado para cada endereço IP.';
 $wb['python_txt'] = 'Python';
-$wb['pm_max_children_txt'] = 'Diretiva PHP-FPM pm.max_children';
-$wb['pm_start_servers_txt'] = 'Diretiva PHP-FPM pm.start_servers';
-$wb['pm_min_spare_servers_txt'] = 'Diretiva PHP-FPM pm.min_spare_servers';
-$wb['pm_max_spare_servers_txt'] = 'Diretiva PHP-FPM pm.max_spare_servers';
-$wb['error_php_fpm_pm_settings_txt'] = 'Valores permitidos para configurações do PHP-FPM pm devem obedecer os critérios: pm.max_children &gt;= pm.max_spare_servers &gt;= pm.start_servers &gt;= pm.min_spare_servers &gt; 0';
-$wb['pm_max_children_error_regex'] = 'O valor do PHP-FPM pm.max_children deve ser um número positivo.';
-$wb['pm_start_servers_error_regex'] = 'O valor do  PHP-FPM pm.start_servers deve ser um número positivo.';
-$wb['pm_min_spare_servers_error_regex'] = 'O valor do PHP-FPM pm.min_spare_servers deve ser um número positivo.';
-$wb['pm_max_spare_servers_error_regex'] = 'O valor do PHP-FPM pm.max_spare_servers deve ser um número positivo.';
-$wb['hd_quota_error_regex'] = 'Valor da cota de disco é inválido.';
-$wb['traffic_quota_error_regex'] = 'Valor da cota de tráfego é inválido.';
-$wb['ssl_key_txt'] = 'Chave';
 $wb['perl_txt'] = 'Perl';
-$wb['fastcgi_php_version_txt'] = 'Versão do PHP';
-$wb['pm_txt'] = 'Gerenciador de processos do PHP-FPM';
-$wb['pm_process_idle_timeout_txt'] = 'Diretiva PHP-FPM pm.process_idle_timeout';
-$wb['pm_max_requests_txt'] = 'Diretiva PHP-FPM pm.max_requests';
-$wb['pm_process_idle_timeout_error_regex'] = 'O valor do PHP-FPM pm.process_idle_timeout deve ser um número positivo.';
-$wb['pm_max_requests_error_regex'] = 'O valor do PHP-FPM pm.max_requests deve ser um inteiro >= 0.';
-$wb['pm_ondemand_hint_txt'] = 'Por favor, observe que você deve ter uma versão do PHP >= 5.3.9 para usar o gerenciador de processos sob demanda. Se você selecionar processos sob demanda usando uma versão antiga do PHP, o PHP não iniciará novamente!';
-$wb['generate_password_txt'] = 'Gerar senha';
-$wb['repeat_password_txt'] = 'Repetir senha';
-$wb['password_mismatch_txt'] = 'A senhas não coincidem.';
-$wb['password_match_txt'] = 'A senhas coincidem.';
-$wb['web_folder_error_regex'] = 'Pasta inválida informada. Por favor não insira barra - \\"\\".';
-$wb['domain_error_autosub'] = 'Já existe um subdomínio com essas configurações.';
-$wb['available_php_directive_snippets_txt'] = 'Diretivas de trechos de código do php disponíveis:';
-$wb['available_apache_directive_snippets_txt'] = 'Diretivas de trechos de código do apache disponíveis:';
-$wb['available_nginx_directive_snippets_txt'] = 'Diretivas de trechos de código do nginx disponíveis:';
+$wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children';
+$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers';
+$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers';
+$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers';
+$wb['error_php_fpm_pm_settings_txt'] = 'Valores das configurações do php-fpm podem ser: pm.max_children &gt;= pm.max_spare_servers &gt;= pm.start_servers &gt;= pm.min_spare_servers &gt; 0';
+$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children deve ter um valor inteiro positivo.';
+$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers deve ter um valor inteiro positivo.';
+$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers deve ter um valor inteiro positivo.';
+$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers deve ter um valor inteiro positivo.';
+$wb['hd_quota_error_regex'] = 'Cota do disco é inválida.';
+$wb['traffic_quota_error_regex'] = 'Cota de tráfego é inválida.';
+$wb['fastcgi_php_version_txt'] = 'Versão do php';
+$wb['pm_txt'] = 'Gerenciador de Processos do php-fpm';
+$wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
+$wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
+$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout deve ter um valor inteiro positivo.';
+$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests deve ter um valor >= 0.';
+$wb['pm_ondemand_hint_txt'] = 'Por favor, observe que é necessário uma versão do php >= 5.3.9 para utilizar o gerenciador de processos por demanda. Se for selecionado por demanda com uma versão inferior do php, o mesmo não iniciará mais!';
+$wb['generate_password_txt'] = 'Gerar Senha';
+$wb['repeat_password_txt'] = 'Repetir Senha';
+$wb['password_mismatch_txt'] = 'As senhas não coincidem.';
+$wb['password_match_txt'] = 'As senhas coincidem.';
+$wb['available_php_directive_snippets_txt'] = 'Diretivas de trecho de código do php disponíveis:';
+$wb['available_apache_directive_snippets_txt'] = 'Diretivas de trecho de código do apache disponíveis:';
+$wb['available_nginx_directive_snippets_txt'] = 'Diretivas de trecho de código do nginx disponíveis:';
 $wb['proxy_directives_txt'] = 'Diretivas do proxy';
 $wb['available_proxy_directive_snippets_txt'] = 'Diretivas de trechos de código do proxy disponíveis:';
 $wb['no_server_error'] = 'Nenhum servidor selecionado.';
@@ -118,39 +118,44 @@ $wb['no_backup_txt'] = 'Sem backup';
 $wb['daily_backup_txt'] = 'Diário';
 $wb['weekly_backup_txt'] = 'Semanal';
 $wb['monthly_backup_txt'] = 'Mensal';
-$wb['rewrite_rules_txt'] = 'Regras de reescrita';
+$wb['rewrite_rules_txt'] = 'Reescrever Regras';
 $wb['invalid_rewrite_rules_txt'] = 'Regras de reescrita inválidas';
 $wb['allowed_rewrite_rule_directives_txt'] = 'Diretivas permitidas:';
 $wb['configuration_error_txt'] = 'ERRO DE CONFIGURAÇÃO';
-$wb['web_folder_txt'] = 'Pasta web';
-$wb['web_folder_invalid_txt'] = 'A pasta web informada é inválida, por favor escolha um nome diferente.';
-$wb['web_folder_unique_txt'] = 'A pasta web informada já existe, por favor escolha um nome diferente.';
-$wb['host_txt'] = 'Nome do servidor';
-$wb['domain_error_wildcard'] = 'Curingas não são permitidos para subdomínios.';
+$wb['server_chosen_not_ok'] = 'O servidor selecionado não é permitido para esta conta.';
 $wb['variables_txt'] = 'Variáveis';
 $wb['added_by_txt'] = 'Cadastrado por';
 $wb['added_date_txt'] = 'Data do cadastro';
-$wb['backup_excludes_txt'] = 'Diretórios excluídos';
-$wb['backup_excludes_note_txt'] = '(Separar múltiplos diretórios por vírgulas. Exemplo: web/cache/*,web/backup)';
-$wb['backup_excludes_error_regex'] = 'Os diretórios excluídos contém caracteres inválidos.';
-$wb['server_chosen_not_ok'] = 'O servidor selecionado não é permitido para esta conta.';
-$wb['subdomain_error_empty'] = 'O campo subdomínio está em branco ou contém caracteres inválidos.';
+$wb['backup_excludes_txt'] = 'Diretórios Excluídos';
+$wb['backup_excludes_note_txt'] = '(Separar múltiplos diretórios por vírgulas. Exemplo: web/cache/*, web/backup)';
+$wb['backup_excludes_error_regex'] = 'Os diretórios excluídos possuem caracteres inválidos.';
+$wb['web_folder_txt'] = 'Pasta web';
+$wb['web_folder_invalid_txt'] = 'A pasta web é inválida, por favor selecione outra.';
+$wb['web_folder_unique_txt'] = 'A pasta web é já está em uso, por favor selecione outra.';
+$wb['host_txt'] = 'Nome do host';
+$wb['domain_error_wildcard'] = 'Curingas não são permitidos para subdomínios.';
+$wb['variables_txt'] = 'Variáveis';
+$wb['backup_excludes_txt'] = 'Diretórios Excluídos';
+$wb['backup_excludes_note_txt'] = '(Separar múltiplos diretórios por vírgulas. Exemplo: web/cache/*, web/backup)';
+$wb['backup_excludes_error_regex'] = 'Os diretórios excluídos possuem caracteres inválidos.';
+$wb['subdomain_error_empty'] = 'O subdomínio está em branco ou possui caracteres inválidos.';
 $wb['btn_save_txt'] = 'Salvar';
 $wb['btn_cancel_txt'] = 'Cancelar';
 $wb['enable_spdy_txt'] = 'Habilitar SPDY/HTTP2';
-$wb['load_client_data_txt'] = 'Carregas detalhes do cliente';
+$wb['load_client_data_txt'] = 'Carregar detalhes do cliente';
 $wb['load_my_data_txt'] = 'Carregar detalhes do contato';
 $wb['reset_client_data_txt'] = 'Limpar dados';
+$wb['document_root_txt'] = 'Document Root';
+$wb['ssl_letsencrypt_txt'] = 'Let\'s Encrypt SSL';
 $wb['rewrite_to_https_txt'] = 'Reescrever HTTP para HTTPS';
 $wb['password_strength_txt'] = 'Dificuldade da senha';
-$wb['directive_snippets_id_txt'] = 'Configurações do servidor de páginas';
-$wb['http_port_txt'] = 'Porta HTTP';
-$wb['https_port_txt'] = 'Porta HTTPS';
-$wb['http_port_error_regex'] = 'Porta HTTP inválida.';
-$wb['https_port_error_regex'] = 'Porta HTTPS inválida.';
+$wb['directive_snippets_id_txt'] = 'Configurações do servidor web';
+$wb['http_port_txt'] = 'Porta http';
+$wb['https_port_txt'] = 'Porta https';
+$wb['http_port_error_regex'] = 'Porta http inválida.';
+$wb['https_port_error_regex'] = 'Porta https inválida.';
 $wb['enable_pagespeed_txt'] = 'Habilitar PageSpeed';
-$wb['log_retention_txt'] = 'Tempo de armazenamenro dos arquivos de log';
-$wb['log_retention_error_regex'] = 'Tempo de armazenamento, em dias (valores permitidos: min. 0 - max. 9999)';
-$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.';
-$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
+$wb['log_retention_txt'] = 'Tempo de retenção do log de arquivos';
+$wb['log_retention_error_regex'] = 'Tempo de retenção em dias (valores permitidos: mínimo 0, máximo 9999)';
+$wb['limit_web_quota_not_0_txt'] = 'Cota de disco não pode ser configurada para 0.';
 ?>
diff --git a/interface/web/sites/lib/lang/br_web_vhost_domain_admin_list.lng b/interface/web/sites/lib/lang/br_web_vhost_domain_admin_list.lng
index 6b1385926d..3c0c7fd01e 100644
--- a/interface/web/sites/lib/lang/br_web_vhost_domain_admin_list.lng
+++ b/interface/web/sites/lib/lang/br_web_vhost_domain_admin_list.lng
@@ -7,8 +7,8 @@ $wb['server_id_txt'] = 'Servidor';
 $wb['domain_txt'] = 'Domínio';
 $wb['add_new_record_txt'] = 'Adicionar novo site';
 $wb['add_new_subdomain_txt'] = 'Adicionar novo subdomínio';
-$wb['add_new_aliasdomain_txt'] = 'Adicionar novo apelido de domínio';
+$wb['add_new_aliasdomain_txt'] = 'Adicionar novo alias de domínio';
 $wb['domain_list_head_txt'] = 'Sites';
-$wb['aliasdomain_list_head_txt'] = 'Apelidos de domínios (vhost)';
+$wb['aliasdomain_list_head_txt'] = 'Alias de domínio (vhost)';
 $wb['subdomain_list_head_txt'] = 'Subdomínios (vhost)';
 ?>
diff --git a/interface/web/sites/lib/lang/br_web_vhost_domain_list.lng b/interface/web/sites/lib/lang/br_web_vhost_domain_list.lng
index e8fb6bfb09..8170afc2d3 100644
--- a/interface/web/sites/lib/lang/br_web_vhost_domain_list.lng
+++ b/interface/web/sites/lib/lang/br_web_vhost_domain_list.lng
@@ -5,10 +5,10 @@ $wb['active_txt'] = 'Ativo';
 $wb['server_id_txt'] = 'Servidor';
 $wb['domain_txt'] = 'Domínio';
 $wb['add_new_record_txt'] = 'Adicionar novo site';
-$wb['parent_domain_id_txt'] = 'Site';
 $wb['add_new_subdomain_txt'] = 'Adicionar novo subdomínio';
-$wb['add_new_aliasdomain_txt'] = 'Adicionar novo apelido';
+$wb['add_new_aliasdomain_txt'] = 'Adicionar novo alias de domínio';
+$wb['parent_domain_id_txt'] = 'Site';
 $wb['domain_list_head_txt'] = 'Sites';
-$wb['aliasdomain_list_head_txt'] = 'Apelidos de domínios (vhost)';
+$wb['aliasdomain_list_head_txt'] = 'Alias de domínio (vhost)';
 $wb['subdomain_list_head_txt'] = 'Subdomínios (vhost)';
 ?>
diff --git a/interface/web/sites/lib/lang/br_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/br_web_vhost_subdomain.lng
index fa6ddad484..390b7402e7 100644
--- a/interface/web/sites/lib/lang/br_web_vhost_subdomain.lng
+++ b/interface/web/sites/lib/lang/br_web_vhost_subdomain.lng
@@ -1,10 +1,10 @@
 <?php
 $wb['parent_domain_id_txt'] = 'Site Pai';
 $wb['web_folder_txt'] = 'Pasta web';
-$wb['web_folder_invalid_txt'] = 'A pasta web informada é inválida, por favor insira um nome diferente.';
-$wb['web_folder_unique_txt'] = 'A pasta web informada já existe, por favor insira um nome diferente.';
-$wb['backup_interval_txt'] = 'Intervalo de backup';
-$wb['backup_copies_txt'] = 'Limite de cópias do backup';
+$wb['web_folder_invalid_txt'] = 'A pasta é escolhida é inválida, por favor escolha outra.';
+$wb['web_folder_unique_txt'] = 'A pasta web escolhida está em uso, por favor escolha outra.';
+$wb['backup_interval_txt'] = 'Intervalo entre backups';
+$wb['backup_copies_txt'] = 'Número de cópias do backup';
 $wb['ssl_state_txt'] = 'Estado';
 $wb['ssl_locality_txt'] = 'Cidade';
 $wb['ssl_organisation_txt'] = 'Empresa';
@@ -13,65 +13,66 @@ $wb['ssl_country_txt'] = 'País';
 $wb['ssl_key_txt'] = 'Chave';
 $wb['ssl_request_txt'] = 'Requisição';
 $wb['ssl_cert_txt'] = 'Certificado';
-$wb['ssl_bundle_txt'] = 'Pacote';
+$wb['ssl_bundle_txt'] = 'Agrupar';
 $wb['ssl_action_txt'] = 'Ação';
 $wb['ssl_domain_txt'] = 'Domínio';
 $wb['server_id_txt'] = 'Servidor';
 $wb['domain_txt'] = 'Domínio';
-$wb['host_txt'] = 'Hostname';
-$wb['web_folder_error_regex'] = 'Pasta informada é inválida. Por favor, não insira barra - \\"/\\".';
+$wb['host_txt'] = 'Nome do host';
+$wb['web_folder_error_regex'] = 'Pasta web é inválida. Por favor não utilize o caractere barra(/).';
 $wb['type_txt'] = 'Tipo';
+$wb['parent_domain_id_txt'] = 'Site Pai';
 $wb['redirect_type_txt'] = 'Tipo de redirecionamento';
-$wb['redirect_path_txt'] = 'Caminho para redirecionamento';
+$wb['redirect_path_txt'] = 'Caminho para o redirecionamento';
 $wb['active_txt'] = 'Ativo';
 $wb['document_root_txt'] = 'Documentroot';
 $wb['system_user_txt'] = 'Usuário Linux';
 $wb['system_group_txt'] = 'Grupo Linux';
 $wb['ip_address_txt'] = 'Endereço IPv4';
 $wb['ipv6_address_txt'] = 'Endereço IPv6';
-$wb['vhost_type_txt'] = 'Tipo vhost';
-$wb['hd_quota_txt'] = 'Cota de Disco';
-$wb['traffic_quota_txt'] = 'Cota de Tráfego';
+$wb['vhost_type_txt'] = 'Tipo do vHost';
+$wb['hd_quota_txt'] = 'Cota de disco';
+$wb['traffic_quota_txt'] = 'Cota de tráfego';
 $wb['cgi_txt'] = 'CGI';
 $wb['ssi_txt'] = 'SSI';
-$wb['errordocs_txt'] = 'Páginas de erro personalizadas (error-documents)';
+$wb['errordocs_txt'] = 'Proprietário do error-documents';
 $wb['subdomain_txt'] = 'Subdomínio automático';
 $wb['ssl_txt'] = 'SSL';
 $wb['suexec_txt'] = 'SuEXEC';
 $wb['php_txt'] = 'PHP';
 $wb['client_txt'] = 'Cliente';
 $wb['limit_web_domain_txt'] = 'O limite de domínios de site para esta conta foi alcançado.';
-$wb['limit_web_aliasdomain_txt'] = 'O limite de apelidos de domínio para esta conta foi alcançado.';
-$wb['limit_web_subdomain_txt'] = 'O limite de subdomínios site para esta conta foi alcançado.';
+$wb['limit_web_aliasdomain_txt'] = 'O limite de alias de domínios para esta conta foi alcançado.';
+$wb['limit_web_subdomain_txt'] = 'O limite de subdomínios de site para esta conta foi alcançado.';
 $wb['apache_directives_txt'] = 'Diretivas do apache';
-$wb['domain_error_empty'] = 'Domínio está em branco.';
-$wb['domain_error_unique'] = 'Já existe um site, apelido de domínio ou subdomínio para este domínio.';
-$wb['domain_error_regex'] = 'Nome do domínio é inválido.';
-$wb['domain_error_wildcard'] = 'Curingas não são permitidos para subdomínios';
-$wb['hd_quota_error_empty'] = 'Valor da cota de disco é 0 ou está em branco.';
-$wb['traffic_quota_error_empty'] = 'Valor da cota de tráfego está em branco.';
-$wb['error_ssl_state_empty'] = 'Campo \'Estado\' está em branco.';
-$wb['error_ssl_locality_empty'] = 'Campo \'Cidade\' está em branco.';
-$wb['error_ssl_organisation_empty'] = 'Campo \'Empresa\' está em branco.';
-$wb['error_ssl_organisation_unit_empty'] = 'Campo \'Departamento\' está em branco.';
-$wb['error_ssl_country_empty'] = 'Campo \'País\' está em branco.';
-$wb['error_ssl_cert_empty'] = 'Campo \'Certificado\' está em branco.';
+$wb['domain_error_empty'] = 'O campo "Domínio" está em branco.';
+$wb['domain_error_unique'] = 'Já existe um site, subdomínio ou alias de domínio com este nome.';
+$wb['domain_error_regex'] = 'O campo "Domínio" é inválido.';
+$wb['domain_error_wildcard'] = 'Curingas não são permitidos para subdomínios.';
+$wb['hd_quota_error_empty'] = 'Cota do disco é 0 ou está em branco.';
+$wb['traffic_quota_error_empty'] = 'Cota de tráfego está em branco.';
+$wb['error_ssl_state_empty'] = 'O campo "Estado" está em branco.';
+$wb['error_ssl_locality_empty'] = 'O campo "Cidade" está em branco.';
+$wb['error_ssl_organisation_empty'] = 'O campo "Empresa" está em branco.';
+$wb['error_ssl_organisation_unit_empty'] = 'O campo "Departamento" está em branco.';
+$wb['error_ssl_country_empty'] = 'O campo "País" está em branco.';
+$wb['error_ssl_cert_empty'] = 'O campo "Certificado" está em branco.';
 $wb['client_group_id_txt'] = 'Cliente';
-$wb['stats_password_txt'] = 'Senha para estatísticas web';
+$wb['stats_password_txt'] = 'Configurar senha para estatísticas web';
 $wb['allow_override_txt'] = 'Diretiva Apache AllowOverride';
-$wb['limit_web_quota_free_txt'] = 'Cota de disco';
-$wb['ssl_state_error_regex'] = 'Campo \'Estado\' é inválido. Caracteres válidos são: \'0-9\' e \\".,-_\\".';
-$wb['ssl_locality_error_regex'] = 'Campo \'Cidade\' é inválido. Caracteres válidos são: \'a-z\', \'0-9\' e \'.,-_\'.';
-$wb['ssl_organisation_error_regex'] = 'Campo \'Empresa\' é inválido. Caracteres válidos são: \'a-z\', \'0-9\' e \'.,-_\'.';
-$wb['ssl_organistaion_unit_error_regex'] = 'Campo \'Departamento\' é inválido. Caracteres válidos são: \'a-z\', \'0-9\' e \'.,-_\'.';
-$wb['ssl_country_error_regex'] = 'Campo \'País\' é inválido. Caracteres válidos são: \'A-Z\'.';
-$wb['limit_traffic_quota_free_txt'] = 'Cota de tráfego';
-$wb['redirect_error_regex'] = 'Caminho de redirecionamento é inválido. Exemplo de caminho válido: \\"/teste/\\" ou \\"http://www.dominio.com.br/teste/\\".';
-$wb['php_open_basedir_txt'] = 'Diretório open_basedir do PHP';
-$wb['traffic_quota_exceeded_txt'] = 'Cota de tráfego excedida';
+$wb['limit_web_quota_free_txt'] = 'Limite disponível da cota de disco';
+$wb['ssl_state_error_regex'] = 'O campo "Estado" é inválido. Caracteres válidos são: "a-z", "0-9", ".", "-", e "_".';
+$wb['ssl_locality_error_regex'] = 'O campo "Cidade" é inválido. Caracteres válidos são: "a-z", "0-9", ".", "-", e "_".';
+$wb['ssl_organisation_error_regex'] = 'O campo "Empresa" é inválido. Caracteres válidos são: "a-z", "0-9", ".", "-", e "_".';
+$wb['ssl_organistaion_unit_error_regex'] = 'O campo "Departamento" é inválido. Caracteres válidos são: "a-z", "0-9", ".", "-", e "_".';
+$wb['ssl_country_error_regex'] = 'O campo "País" é inválido. Caracteres válidos são: "A-Z".';
+$wb['limit_traffic_quota_free_txt'] = 'Limite da cota de tráfego disponível';
+$wb['redirect_error_regex'] = 'Caminho de redirecionamento inválido. Redirecionamentos válidos são, por ex.: /teste/ ou http://www.dominio.com.br/teste/';
+$wb['php_open_basedir_txt'] = 'Diretório open_basedir do php';
+$wb['traffic_quota_exceeded_txt'] = 'O limite da cota de tráfego foi alcançado.';
 $wb['ruby_txt'] = 'Ruby';
-$wb['stats_user_txt'] = 'Usuário para estatísticas web';
-$wb['stats_type_txt'] = 'Programa para estatísticas web';
+$wb['stats_user_txt'] = 'Usuário de estatísticas web';
+$wb['stats_type_txt'] = 'Sistema de estatísticas web';
 $wb['custom_php_ini_txt'] = 'Configurações personalizadas do php.ini';
 $wb['none_txt'] = 'Nenhum';
 $wb['disabled_txt'] = 'Desabilitado';
@@ -81,51 +82,51 @@ $wb['save_certificate_txt'] = 'Salvar certificado';
 $wb['create_certificate_txt'] = 'Adicionar certificado';
 $wb['delete_certificate_txt'] = 'Remover certificado';
 $wb['nginx_directives_txt'] = 'Diretivas do nginx';
-$wb['seo_redirect_txt'] = 'Redirecionamento SEO';
-$wb['non_www_to_www_txt'] = 'Diretivas Non-www -&gt; www';
-$wb['www_to_non_www_txt'] = 'Diretivas www -&gt; non-www';
-$wb['php_fpm_use_socket_txt'] = 'Usar soquete para o PHP-FPM';
-$wb['error_no_sni_txt'] = 'O SNI para SSL não está ativo neste servidor. Você só pode habilitar um certificado para cada endereço IP.';
+$wb['seo_redirect_txt'] = 'Diretivas SEO';
+$wb['non_www_to_www_txt'] = 'non-www -&gt; www';
+$wb['www_to_non_www_txt'] = 'www -&gt; non-www';
+$wb['php_fpm_use_socket_txt'] = 'Usar socket para php-fpm';
+$wb['error_no_sni_txt'] = 'SNI para SSL não está habilitado neste servidor. Somente poderá ser habilitado um certificado para cada endereço IP.';
 $wb['python_txt'] = 'Python';
 $wb['perl_txt'] = 'Perl';
-$wb['pm_max_children_txt'] = 'Diretiva PHP-FPM pm.max_children';
-$wb['pm_start_servers_txt'] = 'Diretiva PHP-FPM pm.start_servers';
-$wb['pm_min_spare_servers_txt'] = 'Diretiva PHP-FPM pm.min_spare_servers';
-$wb['pm_max_spare_servers_txt'] = 'Diretiva PHP-FPM pm.max_spare_servers';
-$wb['error_php_fpm_pm_settings_txt'] = 'Valores permitidos para configurações do PHP-FPM pm devem obedecer os critérios: pm.max_children &gt;= pm.max_spare_servers &gt;= pm.start_servers &gt;= pm.min_spare_servers &gt; 0';
-$wb['pm_max_children_error_regex'] = 'O valor do PHP-FPM pm.max_children deve ser um número positivo.';
-$wb['pm_start_servers_error_regex'] = 'O valor do PHP-FPM pm.start_servers deve ser um número positivo.';
-$wb['pm_min_spare_servers_error_regex'] = 'O valor do PHP-FPM pm.min_spare_servers deve ser um número positivo.';
-$wb['pm_max_spare_servers_error_regex'] = 'O valor do PHP-FPM pm.max_spare_servers deve ser um número positivo.';
-$wb['hd_quota_error_regex'] = 'Valor da cota de disco é inválido.';
-$wb['traffic_quota_error_regex'] = 'Valor da cota de tráfego é inválido.';
-$wb['fastcgi_php_version_txt'] = 'Versão do PHP';
-$wb['pm_txt'] = 'Gerenciador de Processos do PHP-FPM';
-$wb['pm_process_idle_timeout_txt'] = 'Diretiva PHP-FPM pm.process_idle_timeout';
-$wb['pm_max_requests_txt'] = 'Diretiva PHP-FPM pm.max_requests';
-$wb['pm_process_idle_timeout_error_regex'] = 'O valor do PHP-FPM pm.process_idle_timeout deve ser um número positivo.';
-$wb['pm_max_requests_error_regex'] = 'O valor do PHP-FPM pm.max_requests deve ser um inteiro >= 0.';
-$wb['pm_ondemand_hint_txt'] = 'Por favor, observe que você deve ter uma versão do PHP >= 5.3.9 para usar o gerenciador de processos sob demanda. Se você selecionar processos sob demanda usando uma versão antiga do PHP, o PHP não iniciará novamente!';
-$wb['generate_password_txt'] = 'Gerar senha';
-$wb['repeat_password_txt'] = 'Repetir senha';
-$wb['password_mismatch_txt'] = 'A senhas não coincidem.';
-$wb['password_match_txt'] = 'A senhas coincidem.';
-$wb['available_php_directive_snippets_txt'] = 'Diretivas de trechos de código do php disponíveis:';
-$wb['available_apache_directive_snippets_txt'] = 'Diretivas de trechos de código do apache disponíveis:';
-$wb['available_nginx_directive_snippets_txt'] = 'Diretivas de trechos de código do nginx disponíveis:';
-$wb['proxy_directives_txt'] = 'Diretivas do Proxy';
+$wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children';
+$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers';
+$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers';
+$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers';
+$wb['error_php_fpm_pm_settings_txt'] = 'Valores das configurações do php-fpm podem ser: pm.max_children &gt;= pm.max_spare_servers &gt;= pm.start_servers &gt;= pm.min_spare_servers &gt; 0';
+$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children deve ter um valor inteiro positivo.';
+$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers deve ter um valor inteiro positivo.';
+$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers deve ter um valor inteiro positivo.';
+$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers deve ter um valor inteiro positivo.';
+$wb['hd_quota_error_regex'] = 'Cota do disco é inválida.';
+$wb['traffic_quota_error_regex'] = 'Cota de tráfego é inválida.';
+$wb['fastcgi_php_version_txt'] = 'Versão do php';
+$wb['pm_txt'] = 'Gerenciador de Processos do php-fpm';
+$wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
+$wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
+$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout deve ter um valor inteiro positivo.';
+$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests deve ter um valor >= 0.';
+$wb['pm_ondemand_hint_txt'] = 'Por favor, observe que é necessário uma versão do php >= 5.3.9 para utilizar o gerenciador de processos por demanda. Se for selecionado por demanda com uma versão inferior do php, o mesmo não iniciará mais!';
+$wb['generate_password_txt'] = 'Gerar Senha';
+$wb['repeat_password_txt'] = 'Repetir Senha';
+$wb['password_mismatch_txt'] = 'As senhas não coincidem.';
+$wb['password_match_txt'] = 'As senhas coincidem.';
+$wb['available_php_directive_snippets_txt'] = 'Diretivas de trecho de código do php disponíveis:';
+$wb['available_apache_directive_snippets_txt'] = 'Diretivas de trecho de código do apache disponíveis:';
+$wb['available_nginx_directive_snippets_txt'] = 'Diretivas de trecho de código do nginx disponíveis:';
+$wb['proxy_directives_txt'] = 'Diretivas do proxy';
 $wb['available_proxy_directive_snippets_txt'] = 'Diretivas de trechos de código do proxy disponíveis:';
-$wb['rewrite_rules_txt'] = 'Regras de Reescrita';
+$wb['rewrite_rules_txt'] = 'Reescrever regras';
 $wb['invalid_rewrite_rules_txt'] = 'Regras de reescrita inválidas';
-$wb['allowed_rewrite_rule_directives_txt'] = 'Diretivas Permitidas:';
+$wb['allowed_rewrite_rule_directives_txt'] = 'Diretivas permitidas:';
 $wb['configuration_error_txt'] = 'ERRO DE CONFIGURAÇÃO';
 $wb['variables_txt'] = 'Variáveis';
 $wb['backup_excludes_txt'] = 'Diretórios Excluídos';
-$wb['backup_excludes_note_txt'] = '(Separar múltiplos diretórios por vírgulas. Exemplo: \\"web/cache/*,web/backup\\".)';
-$wb['backup_excludes_error_regex'] = 'Os diretórios excluídos contém caracteres inválidos.';
-$wb['subdomain_error_empty'] = 'O campo \\"Subdomínio\\" está em branco ou contém caracteres inválidos.';
-$wb['http_port_txt'] = 'Porta HTTP';
-$wb['https_port_txt'] = 'Porta HTTPS';
-$wb['http_port_error_regex'] = 'Porta HTTP inválida.';
-$wb['https_port_error_regex'] = 'Porta HTTPS inválida.';
+$wb['backup_excludes_note_txt'] = '(Separar múltiplos diretórios por vírgulas. Exemplo: web/cache/*, web/backup)';
+$wb['backup_excludes_error_regex'] = 'Os diretórios excluídos possuem caracteres inválidos.';
+$wb['subdomain_error_empty'] = 'O subdomínio está em branco ou possui caracteres inválidos.';
+$wb['http_port_txt'] = 'Porta http';
+$wb['https_port_txt'] = 'Porta https';
+$wb['http_port_error_regex'] = 'Porta http inválida.';
+$wb['https_port_error_regex'] = 'Porta https inválida.';
 ?>
diff --git a/interface/web/sites/lib/lang/br_webdav_user.lng b/interface/web/sites/lib/lang/br_webdav_user.lng
index 4347f8ae36..485e3a7747 100644
--- a/interface/web/sites/lib/lang/br_webdav_user.lng
+++ b/interface/web/sites/lib/lang/br_webdav_user.lng
@@ -7,15 +7,15 @@ $wb['password_txt'] = 'Senha';
 $wb['password_strength_txt'] = 'Dificuldade da senha';
 $wb['active_txt'] = 'Ativo';
 $wb['limit_webdav_user_txt'] = 'O limite de usuários webdav para esta conta foi alcançado.';
-$wb['username_error_empty'] = 'Usuário está em branco.';
+$wb['username_error_empty'] = 'O nome do usuário está em branco.';
 $wb['username_error_unique'] = 'O nome do usuário deve ser exclusivo.';
-$wb['username_error_regex'] = 'O nome do usuário contém caracteres não permitidos.';
-$wb['directory_error_empty'] = 'Diretório está em branco.';
+$wb['username_error_regex'] = 'O nome de usuário possui caracteres não permitidos.';
+$wb['directory_error_empty'] = 'O diretório está em branco.';
 $wb['parent_domain_id_error_empty'] = 'Nenhum site selecionado.';
-$wb['dir_dot_error'] = 'Não é permitido \\"..\\" no caminho.';
-$wb['dir_slashdot_error'] = 'Não é permitido \\"./\\" no caminho.';
-$wb['generate_password_txt'] = 'Gerar senha';
-$wb['repeat_password_txt'] = 'Repetir senha';
-$wb['password_mismatch_txt'] = 'A senhas não coincidem.';
-$wb['password_match_txt'] = 'A senhas coincidem.';
+$wb['dir_dot_error'] = 'Não é permitido \'..\' no caminho.';
+$wb['dir_slashdot_error'] = 'Não é permitido \'./\' no caminho.';
+$wb['generate_password_txt'] = 'Gerar Senha';
+$wb['repeat_password_txt'] = 'Repetir Senha';
+$wb['password_mismatch_txt'] = 'As senhas não coincidem.';
+$wb['password_match_txt'] = 'As senhas coincidem.';
 ?>
diff --git a/interface/web/sites/lib/lang/tr.lng b/interface/web/sites/lib/lang/tr.lng
index d0570f6c12..b5e7f42e2e 100644
--- a/interface/web/sites/lib/lang/tr.lng
+++ b/interface/web/sites/lib/lang/tr.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['Websites'] = 'Web Sitesi';
+$wb['Websites'] = 'Web Siteleri';
 $wb['Website'] = 'Web Sitesi';
-$wb['Subdomain'] = 'Alt Alan Adı';
-$wb['Aliasdomain'] = 'Başka Alan Adı';
+$wb['Subdomain'] = 'Alt Etki Alanı';
+$wb['Aliasdomain'] = 'Takma Etki Alanı';
 $wb['Database'] = 'Veritabanı';
 $wb['Database User'] = 'Veritabanı Kullanıcıları';
 $wb['Web Access'] = 'Web EriÅŸimi';
@@ -22,7 +22,7 @@ $wb['Shell'] = 'Kabuk';
 $wb['Webdav'] = 'WebDAV';
 $wb['FTP'] = 'FTP';
 $wb['Options'] = 'Ayarlar';
-$wb['Domain'] = 'Alan Adı';
+$wb['Domain'] = 'Etki Alanı';
 $wb['Redirect'] = 'Yönlendirme';
 $wb['SSL'] = 'SSL';
 $wb['Sites'] = 'Siteler';
@@ -30,6 +30,6 @@ $wb['APS Installer'] = 'APS Yükleyici';
 $wb['Available packages'] = 'Kullanılabilecek Paketler';
 $wb['Installed packages'] = 'Yüklü Paketler';
 $wb['Update Packagelist'] = 'Güncelleme Paketi Listesi';
-$wb['Subdomain (Vhost)'] = 'Alt alan adı (SSunucu)';
-$wb['error_proxy_requires_url'] = '\\"Vekil Sunucu\\" yönlendirme tipi için, yönlendirilecek yolu gösteren bir İnternet adresi gereklidir.';
+$wb['Subdomain (Vhost)'] = 'Alt Etki Alanı (Sanal Sunucu)';
+$wb['error_proxy_requires_url'] = '"Vekil Sunucu" yönlendirme türü için, yönlendirilecek yolu gösteren bir İnternet adresi gereklidir.';
 ?>
diff --git a/interface/web/sites/lib/lang/tr_aps.lng b/interface/web/sites/lib/lang/tr_aps.lng
index 1c6ccd49a6..c876629a74 100644
--- a/interface/web/sites/lib/lang/tr_aps.lng
+++ b/interface/web/sites/lib/lang/tr_aps.lng
@@ -34,20 +34,20 @@ $wb['install_language_txt'] = 'Arayüz dili';
 $wb['new_database_password_txt'] = 'Yeni veritabanı parolası';
 $wb['basic_settings_txt'] = 'Temel ayarlar';
 $wb['package_settings_txt'] = 'Paket ayarları';
-$wb['error_main_domain'] = 'Yükleme yolundaki alan adı geçersiz.';
+$wb['error_main_domain'] = 'Yükleme yolundaki etki alanı geçersiz.';
 $wb['error_no_main_location'] = 'Yazdığınız yükleme yolu geçersiz.';
 $wb['error_inv_main_location'] = 'Yazdığınız yükleme konumunu klasörü geçersiz.';
 $wb['error_license_agreement'] = 'Devam etmek için lisans anlaşmasını onaylamalısınız.';
 $wb['error_no_database_pw'] = 'Yazdığınız veritabanı parolası geçersiz.';
 $wb['error_short_database_pw'] = 'Lütfen daha uzun bir veritabanı parolası yazın.';
-$wb['error_no_value_for'] = '\\"%s\\" alanı boş olamaz.';
-$wb['error_short_value_for'] = '\\"%s\\" alanına daha uzun bir değer yazılmalıdır.';
-$wb['error_long_value_for'] = '\\"%s\\" alanına daha kısa bir değer yazılmalıdır.';
-$wb['error_inv_value_for'] = '\\"%s\\" alanına yazılan değer geçersiz.';
-$wb['error_inv_email_for'] = '\\"%s\\" alanına yazılan e-posta adresi geçersiz.';
-$wb['error_inv_domain_for'] = '\\"%s\\" alanına yazılan alan adı geçersiz.';
-$wb['error_inv_integer_for'] = '\\"%s\\" alanına yazılan sayı geçersiz.';
-$wb['error_inv_float_for'] = '\\"%s\\" alanına yazılan küsuratlı sayı geçersiz.';
+$wb['error_no_value_for'] = '"%s" alanı boş olamaz.';
+$wb['error_short_value_for'] = '"%s" alanına daha uzun bir değer yazılmalıdır.';
+$wb['error_long_value_for'] = '"%s" alanına daha kısa bir değer yazılmalıdır.';
+$wb['error_inv_value_for'] = '"%s" alanına yazılan değer geçersiz.';
+$wb['error_inv_email_for'] = '"%s" alanına yazılan e-posta adresi geçersiz.';
+$wb['error_inv_domain_for'] = '"%s" alanına yazılan etki alanı geçersiz.';
+$wb['error_inv_integer_for'] = '"%s" alanına yazılan sayı geçersiz.';
+$wb['error_inv_float_for'] = '"%s" alanına yazılan küsuratlı sayı geçersiz.';
 $wb['error_used_location'] = 'Yükleme yoluna daha önce yüklenmiş bir paket var.';
 $wb['installation_task_txt'] = 'Yükleme planlandı';
 $wb['installation_error_txt'] = 'Yükleme hatası';
@@ -55,9 +55,4 @@ $wb['installation_success_txt'] = 'Yüklendi';
 $wb['installation_remove_txt'] = 'Kaldırma planlandı';
 $wb['packagelist_update_finished_txt'] = 'APS paket listesi güncellendi.';
 $wb['limit_aps_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla APS kopyası sayısına ulaştınız.';
-$wb['generate_password_txt'] = 'Parola OluÅŸtur';
-$wb['repeat_password_txt'] = 'Parola Onayı';
-$wb['password_mismatch_txt'] = 'Parola ile onayı aynı değil.';
-$wb['password_match_txt'] = 'Parola ile onayı aynı.';
-$wb['password_strength_txt'] = 'Parola Güçlüğü';
 ?>
diff --git a/interface/web/sites/lib/lang/tr_aps_instances_list.lng b/interface/web/sites/lib/lang/tr_aps_instances_list.lng
index e8b3532ff4..292c627f85 100644
--- a/interface/web/sites/lib/lang/tr_aps_instances_list.lng
+++ b/interface/web/sites/lib/lang/tr_aps_instances_list.lng
@@ -4,8 +4,8 @@ $wb['name_txt'] = 'Ad';
 $wb['version_txt'] = 'Sürüm';
 $wb['customer_txt'] = 'Müşteri';
 $wb['status_txt'] = 'Durum';
-$wb['install_location_txt'] = 'Yükleme Konumu';
-$wb['pkg_delete_confirmation'] = 'Bu yüklemeyi silmek istediğinize emin misiniz?';
+$wb['install_location_txt'] = 'Kurulum Konumu';
+$wb['pkg_delete_confirmation'] = 'Bu kurulumu silmek istediÄŸinize emin misiniz?';
 $wb['filter_txt'] = 'Arama';
 $wb['delete_txt'] = 'Sil';
 ?>
diff --git a/interface/web/sites/lib/lang/tr_backup_stats_list.lng b/interface/web/sites/lib/lang/tr_backup_stats_list.lng
index 65792aa591..f59fcae70a 100644
--- a/interface/web/sites/lib/lang/tr_backup_stats_list.lng
+++ b/interface/web/sites/lib/lang/tr_backup_stats_list.lng
@@ -1,10 +1,10 @@
 <?php
-$wb['list_head_txt'] = 'Backup Stats';
+$wb['list_head_txt'] = 'Yedekleme Durumu';
 $wb['database_name_txt'] = '';
-$wb['active_txt'] = 'Active';
-$wb['domain_txt'] = 'Domain';
-$wb['backup_count_txt'] = 'Backup count';
-$wb['backup_server_txt'] = 'Server';
-$wb['backup_interval_txt'] = 'Interval / cnt.';
-$wb['backup_size_txt'] = 'Backupsize';
+$wb['active_txt'] = 'Etkin';
+$wb['domain_txt'] = 'Etki Alanı';
+$wb['backup_count_txt'] = 'Yedek sayısı';
+$wb['backup_server_txt'] = 'Sunucu';
+$wb['backup_interval_txt'] = 'Sıklık / Sayı';
+$wb['backup_size_txt'] = 'Yedek Boyutu';
 ?>
diff --git a/interface/web/sites/lib/lang/tr_cron.lng b/interface/web/sites/lib/lang/tr_cron.lng
index f645d76325..d00e6868c7 100644
--- a/interface/web/sites/lib/lang/tr_cron.lng
+++ b/interface/web/sites/lib/lang/tr_cron.lng
@@ -17,10 +17,10 @@ $wb['run_mday_error_format'] = 'Ayın günü biçimi geçersiz.';
 $wb['run_month_error_format'] = 'Ay biçimi geçersiz.';
 $wb['run_wday_error_format'] = 'Haftanın günü biçimi geçersiz.';
 $wb['command_error_format'] = 'Komut biçimi geçersiz. İnternet adreslerinde yalnız http/https kullanılabilir.';
-$wb['unknown_fieldtype_error'] = 'Bilinmeyen bir alan tipi kullanılmış.';
+$wb['unknown_fieldtype_error'] = 'Bilinmeyen bir alan türü kullanılmış.';
 $wb['server_id_error_empty'] = 'Sunucu kodu boÅŸ olamaz.';
+$wb['command_hint_txt'] = 'Örnek: /var/www/clients/musteriX/webY/betigim.sh ya da http://www.etkialanim.com/yol/betik.php, /var/www/clients/musteriX/webY/web yerine [web_root] kodunu kullanabilirsiniz.';
+$wb['log_output_txt'] = 'Günlük çıktısı';
 $wb['limit_cron_url_txt'] = 'Yalnız İnternet adresli zamanlanmış görev kullanılabilir. Lütfen zamanlanmış görev komutu olarak http:// ile başlayan bir İnternet adresi yazın.';
 $wb['command_error_empty'] = 'Komut boÅŸ olamaz.';
-$wb['command_hint_txt'] = 'e.g. /var/www/clients/clientX/webY/myscript.sh or http://www.mydomain.com/path/script.php, you can use [web_root] placeholder that is replaced by /var/www/clients/clientX/webY/web.';
-$wb['log_output_txt'] = 'Log output';
 ?>
diff --git a/interface/web/sites/lib/lang/tr_database.lng b/interface/web/sites/lib/lang/tr_database.lng
index d5d8c7d856..f443bbb620 100644
--- a/interface/web/sites/lib/lang/tr_database.lng
+++ b/interface/web/sites/lib/lang/tr_database.lng
@@ -1,13 +1,13 @@
 <?php
 $wb['server_id_txt'] = 'Sunucu';
-$wb['type_txt'] = 'Tip';
+$wb['type_txt'] = 'Tür';
 $wb['database_name_txt'] = 'Veritabanı Adı';
 $wb['database_user_txt'] = 'Veritabanı Kullanıcısı';
 $wb['database_ro_user_txt'] = 'Salt okunur veritabanı kullanıcısı';
 $wb['optional_txt'] = 'isteğe bağlı';
 $wb['database_password_txt'] = 'Veritabanı Parolası';
-$wb['password_strength_txt'] = 'Parola Güçlüğü';
-$wb['database_charset_txt'] = 'Veritabanı Karakter Seti';
+$wb['password_strength_txt'] = 'Parola ZorluÄŸu';
+$wb['database_charset_txt'] = 'Veritabanı Karakter Kümesi';
 $wb['select_dbuser_txt'] = 'Veritabanı kullanıcısını seçin';
 $wb['no_dbuser_txt'] = 'Yok';
 $wb['remote_access_txt'] = 'Uzaktan EriÅŸim';
@@ -16,34 +16,34 @@ $wb['database_remote_error_ips'] = 'Yazılan IP adreslerinden en az biri hatalı
 $wb['client_txt'] = 'Müşteri';
 $wb['active_txt'] = 'Etkin';
 $wb['database_client_differs_txt'] = 'Web sitesi ve veritabanının ait olduğu müşteriler farklı.';
-$wb['database_name_error_empty'] = 'Veritabanı adı boş.';
-$wb['database_name_error_unique'] = 'Sunucu üzerinde aynı adlı bir veritabanı var. Benzersiz bir ad vermek için, veritabanı adının başına alan adınız gibi bir ek  ekleyebilirsiniz.';
+$wb['database_name_error_empty'] = 'Veritabanı adı boş olamaz.';
+$wb['database_name_error_unique'] = 'Sunucu üzerinde aynı adlı bir veritabanı var. Benzersiz bir ad vermek için, veritabanı adının başına etki alanı adınızı ekleyebilirsiniz.';
 $wb['database_name_error_regex'] = 'Veritabanı adı geçersiz. Veritabanı adı 2-64 uzunluğunda olmalı ve yalnız a-z, A-Z, 0-9 ve alt çizgi(_) karakterlerinden oluşmalıdır.';
-$wb['database_user_error_empty'] = 'Veritabanı kullanıcısı boş olamaz.';
-$wb['database_user_error_unique'] = 'Sunucu üzerinde aynı adlı bir veritabanı kullanıcısı zaten var. Benzersiz bir ad vermek için, örneğin veritabanı kullanıcısı adının başına alan adınızı ekleyebilirsiniz.';
+$wb['database_user_error_empty'] = 'Veritabanı kullanıcı adı boş olamaz.';
+$wb['database_user_error_unique'] = 'Sunucu üzerinde aynı adlı bir veritabanı kullanıcısı zaten var. Benzersiz bir ad vermek için, örneğin veritabanı kullanıcısı adının başına etki alanı adınızı ekleyebilirsiniz.';
 $wb['database_user_error_regex'] = 'Veritabanı kullanıcı adı geçersiz. Veritabanı kullanıcı adı 2-64 uzunluğunda olmalı ve yalnız a-z, A-Z, 0-9 ve alt çizgi(_) karakterlerinden oluşmalıdır.';
-$wb['limit_database_txt'] = 'Ekleyebileceğiniz en fazla veritabanı sayısına ulaştınız.';
+$wb['limit_database_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla veritabanı sayısına ulaştınız.';
 $wb['database_name_change_txt'] = 'Veritabanı adı değiştirilemedi';
 $wb['database_user_missing_txt'] = 'Lütfen bu veritabanı için bir veritabanı kullanıcısı seçin.';
-$wb['database_charset_change_txt'] = 'Veritabanı karakter seti değiştirilemedi';
+$wb['database_charset_change_txt'] = 'Veritabanı karakter kümesi değiştirilemedi';
 $wb['database_name_error_len'] = 'Veritabanı adı - {db} - çok uzun. Veritabanı adı ön ek dahil en fazla 64 karakter olabilir.';
 $wb['database_user_error_len'] = 'Veritabanı kullanıcı adı - {user} - çok uzun. Veritabanı kullanıcı adı ön ek dahil en fazla 16 karakter olabilir.';
-$wb['parent_domain_id_txt'] = 'Site';
+$wb['parent_domain_id_txt'] = 'Web Sitesi';
 $wb['database_site_error_empty'] = 'Veritabanının ait olduğu siteyi seçin.';
 $wb['select_site_txt'] = '- Siteyi Seçin -';
 $wb['btn_save_txt'] = 'Kaydet';
 $wb['btn_cancel_txt'] = 'Geri';
-$wb['generate_password_txt'] = 'Parola OluÅŸtur';
+$wb['generate_password_txt'] = 'Parola Ãœret';
 $wb['repeat_password_txt'] = 'Parola Onayı';
 $wb['password_mismatch_txt'] = 'Parola ile onayı aynı değil.';
 $wb['password_match_txt'] = 'Parola ile onayı aynı.';
 $wb['globalsearch_resultslimit_of_txt'] = '/';
 $wb['globalsearch_resultslimit_results_txt'] = 'sonuç';
-$wb['globalsearch_noresults_text_txt'] = 'Sonuç yok';
+$wb['globalsearch_noresults_text_txt'] = 'Uygun bir sonuç bulunamadı.';
 $wb['globalsearch_noresults_limit_txt'] = '0 sonuç';
 $wb['globalsearch_searchfield_watermark_txt'] = 'Arama';
 $wb['globalsearch_suggestions_text_txt'] = 'Öneriler';
-$wb['limit_database_quota_txt'] = 'Database quota';
-$wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
-$wb['limit_database_quota_free_txt'] = 'Max. available DB quota ';
+$wb['limit_database_quota_txt'] = 'Veritabanı Kotası';
+$wb['limit_database_quota_error_notint'] = 'Veritabanı kotası bir sayı olmalıdır';
+$wb['limit_database_quota_free_txt'] = 'Kullanılabilecek en fazla veritabanı kotası';
 ?>
diff --git a/interface/web/sites/lib/lang/tr_database_admin_list.lng b/interface/web/sites/lib/lang/tr_database_admin_list.lng
index fc92e1957e..e13404415c 100644
--- a/interface/web/sites/lib/lang/tr_database_admin_list.lng
+++ b/interface/web/sites/lib/lang/tr_database_admin_list.lng
@@ -2,11 +2,11 @@
 $wb['list_head_txt'] = 'Veritabanı';
 $wb['active_txt'] = 'Etkin';
 $wb['remote_access_txt'] = 'Uzaktan EriÅŸim';
+$wb['type_txt'] = 'Tür';
 $wb['server_id_txt'] = 'Sunucu';
-$wb['database_user_txt'] = 'Veritabanı kullanıcısı';
-$wb['database_name_txt'] = 'Veritabanı adı';
-$wb['add_new_record_txt'] = 'Veritabanı ekle';
+$wb['database_user_txt'] = 'Veritabanı Kullanıcı Adı';
+$wb['database_name_txt'] = 'Veritabanı Adı';
+$wb['add_new_record_txt'] = 'Veritabanı Ekle';
 $wb['sys_groupid_txt'] = 'Müşteri';
 $wb['parent_domain_id_txt'] = 'Web Sitesi';
-$wb['type_txt'] = 'Type';
 ?>
diff --git a/interface/web/sites/lib/lang/tr_database_list.lng b/interface/web/sites/lib/lang/tr_database_list.lng
index 43ea5f9b6f..591a72af11 100644
--- a/interface/web/sites/lib/lang/tr_database_list.lng
+++ b/interface/web/sites/lib/lang/tr_database_list.lng
@@ -2,10 +2,10 @@
 $wb['list_head_txt'] = 'Veritabanı';
 $wb['active_txt'] = 'Etkin';
 $wb['remote_access_txt'] = 'Uzaktan EriÅŸim';
+$wb['type_txt'] = 'Tür';
 $wb['server_id_txt'] = 'Sunucu';
 $wb['database_user_txt'] = 'Veritabanı Kullanıcısı';
 $wb['database_name_txt'] = 'Veritabanı Adı';
 $wb['add_new_record_txt'] = 'Veritabanı Ekle';
 $wb['parent_domain_id_txt'] = 'Web Sitesi';
-$wb['type_txt'] = 'Type';
 ?>
diff --git a/interface/web/sites/lib/lang/tr_database_quota_stats_list.lng b/interface/web/sites/lib/lang/tr_database_quota_stats_list.lng
index 50f2dcc496..a65174977b 100644
--- a/interface/web/sites/lib/lang/tr_database_quota_stats_list.lng
+++ b/interface/web/sites/lib/lang/tr_database_quota_stats_list.lng
@@ -1,9 +1,9 @@
 <?php
-$wb['database_txt'] = 'Database';
-$wb['server_name_txt'] = 'Server';
-$wb['client_txt'] = 'Client';
-$wb['used_txt'] = 'Used space';
-$wb['quota_txt'] = 'Quota';
-$wb['percentage_txt'] = 'Used in %';
-$wb['list_head_txt'] = 'Database Quota';
+$wb['database_txt'] = 'Veritabanı';
+$wb['server_name_txt'] = 'Sunucu';
+$wb['client_txt'] = 'Müşteri';
+$wb['used_txt'] = 'Kullanılan';
+$wb['quota_txt'] = 'Kota';
+$wb['percentage_txt'] = 'Kullanım Yüzdesi';
+$wb['list_head_txt'] = 'Veritabanı Kotası';
 ?>
diff --git a/interface/web/sites/lib/lang/tr_database_user.lng b/interface/web/sites/lib/lang/tr_database_user.lng
index 785c4ecce4..3f6ba89f49 100644
--- a/interface/web/sites/lib/lang/tr_database_user.lng
+++ b/interface/web/sites/lib/lang/tr_database_user.lng
@@ -1,25 +1,25 @@
 <?php
 $wb['database_user_txt'] = 'Veritabanı Kullanıcısı';
 $wb['database_password_txt'] = 'Veritabanı Parolası';
-$wb['password_strength_txt'] = 'Parola Güçlüğü';
+$wb['password_strength_txt'] = 'Parola ZorluÄŸu';
 $wb['client_txt'] = 'Müşteri';
 $wb['active_txt'] = 'Etkin';
 $wb['database_user_error_empty'] = 'Veritabanı kullanıcısı boş olamaz.';
-$wb['database_user_error_unique'] = 'Sunucuda aynı adlı bir veritabanı kullanıcısı var. Benzersiz bir ad vermek için, kullanıcı adının başına alan adınız gibi bir ek  ekleyebilirsiniz.';
+$wb['database_user_error_unique'] = 'Sunucuda aynı adlı bir veritabanı kullanıcısı var. Benzersiz bir ad vermek için, kullanıcı adının başına etki alanınızı ekleyebilirsiniz.';
 $wb['database_user_error_regex'] = 'Veritabanı kullanıcı adı geçersiz. Veritabanı kullanıcı adı 2-64 uzunluğunda olmalı ve yalnız a-z, A-Z, 0-9 ve alt çizgi(_) karakterlerinden oluşmalıdır.';
 $wb['database_user_error_len'] = 'Veritabanı kullanıcı adı - {user} - çok uzun. Ön ek dahil en uzun veritabanı kullanıcı adı 16 karakter olmalıdır.';
 $wb['btn_save_txt'] = 'Kaydet';
 $wb['btn_cancel_txt'] = 'Geri';
-$wb['generate_password_txt'] = 'Parola OluÅŸtur';
+$wb['generate_password_txt'] = 'Parola Ãœret';
 $wb['repeat_password_txt'] = 'Parola Onayı';
 $wb['password_mismatch_txt'] = 'Parola ile onayı aynı değil.';
 $wb['password_match_txt'] = 'Parola ile onayı aynı.';
 $wb['globalsearch_resultslimit_of_txt'] = '/';
 $wb['globalsearch_resultslimit_results_txt'] = 'sonuç';
-$wb['globalsearch_noresults_text_txt'] = 'Sonuç yok.';
+$wb['globalsearch_noresults_text_txt'] = 'Uygun bir sonuç bulunamadı.';
 $wb['globalsearch_noresults_limit_txt'] = '0 sonuç';
 $wb['globalsearch_searchfield_watermark_txt'] = 'Arama';
 $wb['globalsearch_suggestions_text_txt'] = 'Öneriler';
-$wb['limit_database_user_txt'] = 'The max. number of database users is reached.';
-$wb['database_password_error_empty'] = 'Database password is empty.';
+$wb['limit_database_user_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla veritabanı kullanıcısı sayısına ulaştınız.';
+$wb['database_password_error_empty'] = 'Veritabanı parolası boş.';
 ?>
diff --git a/interface/web/sites/lib/lang/tr_ftp_sites_stats_list.lng b/interface/web/sites/lib/lang/tr_ftp_sites_stats_list.lng
index e44025a715..6d2da369d2 100644
--- a/interface/web/sites/lib/lang/tr_ftp_sites_stats_list.lng
+++ b/interface/web/sites/lib/lang/tr_ftp_sites_stats_list.lng
@@ -1,10 +1,10 @@
 <?php
-$wb['list_head_txt'] = 'FTP traffic';
-$wb['domain_txt'] = 'Domain';
-$wb['this_month_txt'] = 'This month';
-$wb['last_month_txt'] = 'Last month';
-$wb['this_year_txt'] = 'This year';
-$wb['last_year_txt'] = 'Last year';
-$wb['sum_txt'] = 'Sum (Download + Upload)';
-$wb['in_out_txt'] = 'DL/UL';
+$wb['list_head_txt'] = 'FTP TrafiÄŸi';
+$wb['domain_txt'] = 'Etki Alanı';
+$wb['this_month_txt'] = 'Bu ay';
+$wb['last_month_txt'] = 'Geçen ay';
+$wb['this_year_txt'] = 'Bu yıl';
+$wb['last_year_txt'] = 'Geçen yıl';
+$wb['sum_txt'] = 'Toplam (İndirme + Yükleme)';
+$wb['in_out_txt'] = 'İnd/Yük';
 ?>
diff --git a/interface/web/sites/lib/lang/tr_ftp_user.lng b/interface/web/sites/lib/lang/tr_ftp_user.lng
index 665d2ec477..155573595e 100644
--- a/interface/web/sites/lib/lang/tr_ftp_user.lng
+++ b/interface/web/sites/lib/lang/tr_ftp_user.lng
@@ -12,7 +12,7 @@ $wb['server_id_txt'] = 'Sunucu';
 $wb['parent_domain_id_txt'] = 'Web Sitesi';
 $wb['username_txt'] = 'Kullanıcı Adı';
 $wb['password_txt'] = 'Parola';
-$wb['password_strength_txt'] = 'Parola Güçlüğü';
+$wb['password_strength_txt'] = 'Parola ZorluÄŸu';
 $wb['quota_size_txt'] = 'Disk Kotası';
 $wb['active_txt'] = 'Etkin';
 $wb['limit_ftp_user_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla FTP kullanıcısı sayısına ulaştınız.';
@@ -21,15 +21,16 @@ $wb['username_error_unique'] = 'Bu kullanıcı adı zaten var.';
 $wb['username_error_regex'] = 'Kullanıcı adında izin verilmeyen karakterler var.';
 $wb['quota_size_error_empty'] = 'Kota boÅŸ olamaz.';
 $wb['uid_error_empty'] = 'UID boÅŸ olamaz.';
+$wb['gid_error_empty'] = 'GID boÅŸ olamaz.';
 $wb['directory_error_empty'] = 'Klasör boş olamaz.';
 $wb['directory_error_notinweb'] = 'Klasör web kök klasörünün altında bulunmalıdır.';
 $wb['parent_domain_id_error_empty'] = 'Bir web sitesi seçmelisiniz.';
 $wb['quota_size_error_regex'] = 'Kota: Sınırsız olması için -1 sınırlamak için sıfırdan büyük bir rakam yazın';
 $wb['dir_dot_error'] = 'Yol içinde .. kullanılamaz.';
 $wb['dir_slashdot_error'] = 'Yol içinde ./ kullanılamaz.';
-$wb['generate_password_txt'] = 'Parola OluÅŸtur';
+$wb['generate_password_txt'] = 'Parola Ãœret';
 $wb['repeat_password_txt'] = 'Parola Onayı';
 $wb['password_mismatch_txt'] = 'Parola ile onayı aynı değil.';
 $wb['password_match_txt'] = 'Parola ile onayı aynı.';
-$wb['expires_txt'] = 'Expire at';
+$wb['expires_txt'] = 'Sona Erme Zamanı';
 ?>
diff --git a/interface/web/sites/lib/lang/tr_shell_user.lng b/interface/web/sites/lib/lang/tr_shell_user.lng
index 5610d59939..e2aa844843 100644
--- a/interface/web/sites/lib/lang/tr_shell_user.lng
+++ b/interface/web/sites/lib/lang/tr_shell_user.lng
@@ -7,7 +7,7 @@ $wb['server_id_txt'] = 'Sunucu';
 $wb['parent_domain_id_txt'] = 'Web Sitesi';
 $wb['username_txt'] = 'Kullanıcı Adı';
 $wb['password_txt'] = 'Parola';
-$wb['password_strength_txt'] = 'Parola Güçlüğü';
+$wb['password_strength_txt'] = 'Parola ZorluÄŸu';
 $wb['chroot_txt'] = 'Chroot KabuÄŸu';
 $wb['quota_size_txt'] = 'Kota';
 $wb['active_txt'] = 'Etkin';
@@ -22,7 +22,7 @@ $wb['parent_domain_id_error_empty'] = 'Bir web sitesi seçmelisiniz.';
 $wb['ssh_rsa_txt'] = 'SSH-RSA Genel Anahtarı (anahtar ile oturum açmak için)';
 $wb['dir_dot_error'] = 'Yol içinde .. . kullanılamaz.';
 $wb['dir_slashdot_error'] = 'Yol içinde ./ kullanılamaz.';
-$wb['generate_password_txt'] = 'Parola OluÅŸtur';
+$wb['generate_password_txt'] = 'Parola Ãœret';
 $wb['repeat_password_txt'] = 'Parola Onayı';
 $wb['password_mismatch_txt'] = 'Parola ile onayı aynı değil.';
 $wb['password_match_txt'] = 'Parola ile onayı aynı.';
diff --git a/interface/web/sites/lib/lang/tr_shell_user_list.lng b/interface/web/sites/lib/lang/tr_shell_user_list.lng
index b88c7fa748..5c375a232a 100644
--- a/interface/web/sites/lib/lang/tr_shell_user_list.lng
+++ b/interface/web/sites/lib/lang/tr_shell_user_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['list_head_txt'] = 'Shell Kullanıcısı';
+$wb['list_head_txt'] = 'Kabuk Kullanıcısı';
 $wb['active_txt'] = 'Etkin';
 $wb['server_id_txt'] = 'Sunucu';
-$wb['parent_domain_id_txt'] = 'Site';
+$wb['parent_domain_id_txt'] = 'Web Sitesi';
 $wb['username_txt'] = 'Kullanıcı Adı';
-$wb['add_new_record_txt'] = 'Shell Kullanıcısı Ekle';
+$wb['add_new_record_txt'] = 'Kabuk Kullanıcısı Ekle';
 ?>
diff --git a/interface/web/sites/lib/lang/tr_user_quota_stats_list.lng b/interface/web/sites/lib/lang/tr_user_quota_stats_list.lng
index 82103410fe..be7712fd46 100644
--- a/interface/web/sites/lib/lang/tr_user_quota_stats_list.lng
+++ b/interface/web/sites/lib/lang/tr_user_quota_stats_list.lng
@@ -1,6 +1,6 @@
 <?php
 $wb['list_head_txt'] = 'Web Sitesi Disk Kotası';
-$wb['domain_txt'] = 'Alan Adı / Web Sitesi';
+$wb['domain_txt'] = 'Etki Alanı / Web Sitesi';
 $wb['system_user_txt'] = 'Linux Kullanıcısı';
 $wb['used_txt'] = 'Kullanılan Alan';
 $wb['hard_txt'] = 'Donanım Sınırı';
diff --git a/interface/web/sites/lib/lang/tr_web_aliasdomain.lng b/interface/web/sites/lib/lang/tr_web_aliasdomain.lng
index 7e4c0b7c51..d7ded7849a 100644
--- a/interface/web/sites/lib/lang/tr_web_aliasdomain.lng
+++ b/interface/web/sites/lib/lang/tr_web_aliasdomain.lng
@@ -1,10 +1,10 @@
 <?php
-$wb['domain_txt'] = 'Takma Alan Adı';
+$wb['domain_txt'] = 'Takma Etki Alanı';
 $wb['backup_interval_txt'] = 'Yedekleme Sıklığı';
 $wb['backup_copies_txt'] = 'Yedek Kopyası Sayısı';
 $wb['ssl_state_txt'] = 'Ä°l';
 $wb['ssl_locality_txt'] = 'Bölge';
-$wb['ssl_organisation_txt'] = 'Kurum';
+$wb['ssl_organisation_txt'] = 'KuruluÅŸ';
 $wb['ssl_organisation_unit_txt'] = 'Birim';
 $wb['ssl_country_txt'] = 'Ãœlke';
 $wb['ssl_key_txt'] = 'SSL Anahtarı';
@@ -12,12 +12,12 @@ $wb['ssl_request_txt'] = 'SSL Ä°steÄŸi';
 $wb['ssl_cert_txt'] = 'SSL Sertifikası';
 $wb['ssl_bundle_txt'] = 'SSL Yığını';
 $wb['ssl_action_txt'] = 'SSL Ä°ÅŸlemi';
-$wb['ssl_domain_txt'] = 'SSL Alan Adı';
+$wb['ssl_domain_txt'] = 'SSL Etki Alanı';
 $wb['server_id_txt'] = 'Sunucu';
 $wb['web_folder_error_regex'] = 'Yazdığınız klasör geçersiz. / karakterini yazmayın.';
-$wb['type_txt'] = 'Tip';
+$wb['type_txt'] = 'Tür';
 $wb['parent_domain_id_txt'] = 'Ãœst Web Sitesi';
-$wb['redirect_type_txt'] = 'Yönlendirme Tipi';
+$wb['redirect_type_txt'] = 'Yönlendirme Türü';
 $wb['redirect_path_txt'] = 'Yönlendirme Yolu';
 $wb['active_txt'] = 'Etkin';
 $wb['document_root_txt'] = 'Kök Klasör';
@@ -25,30 +25,30 @@ $wb['system_user_txt'] = 'Linux Kullanıcısı';
 $wb['system_group_txt'] = 'Linux Grubu';
 $wb['ip_address_txt'] = 'IPv4 Adresi';
 $wb['ipv6_address_txt'] = 'IPv6 Adresi';
-$wb['vhost_type_txt'] = 'SSunucu Tipi';
+$wb['vhost_type_txt'] = 'Sanal Sunucu Türü';
 $wb['hd_quota_txt'] = 'Disk Kotası';
 $wb['traffic_quota_txt'] = 'Trafik Kotası';
 $wb['cgi_txt'] = 'CGI';
 $wb['ssi_txt'] = 'SSI';
 $wb['errordocs_txt'] = 'Özel Hata Sayfaları';
-$wb['subdomain_txt'] = 'Otomatik Alt Alan';
+$wb['subdomain_txt'] = 'Otomatik Alt Etki Alanı';
 $wb['ssl_txt'] = 'SSL';
 $wb['suexec_txt'] = 'SuEXEC';
 $wb['php_txt'] = 'PHP';
 $wb['client_txt'] = 'Müşteri';
-$wb['limit_web_domain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla alan adı sayısına ulaştınız.';
-$wb['limit_web_aliasdomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla başka alan adı sayısına ulaştınız.';
-$wb['limit_web_subdomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla alt alan adı sayısına ulaştınız.';
+$wb['limit_web_domain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla etki alanı sayısına ulaştınız.';
+$wb['limit_web_aliasdomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla takma etki alanı sayısına ulaştınız.';
+$wb['limit_web_subdomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla alt etki alanı sayısına ulaştınız.';
 $wb['apache_directives_txt'] = 'Apache Yönergeleri';
-$wb['domain_error_empty'] = 'Alan adı boş olamaz.';
-$wb['domain_error_unique'] = 'Aynı adlı bir web sitesi ya da alt/başka alan adı var.';
-$wb['domain_error_regex'] = 'Alan adı geçersiz.';
-$wb['domain_error_autosub'] = 'Aynı ayarlara sahip bir alt alan adı zaten var.';
+$wb['domain_error_empty'] = 'Etki alanı boş olamaz.';
+$wb['domain_error_unique'] = 'Aynı adlı bir web sitesi ya da alt/takma etki alanı var.';
+$wb['domain_error_regex'] = 'Etki alanı geçersiz.';
+$wb['domain_error_autosub'] = 'Aynı ayarlara sahip bir alt etki alanı zaten var.';
 $wb['hd_quota_error_empty'] = 'Disk kotası 0 ya da boş olamaz.';
 $wb['traffic_quota_error_empty'] = 'Trafik kotası boş olamaz.';
-$wb['error_ssl_state_empty'] = 'SSL ÅŸehri boÅŸ olamaz.';
+$wb['error_ssl_state_empty'] = 'SSL ili boÅŸ olamaz.';
 $wb['error_ssl_locality_empty'] = 'SSL bölgesi boş olamaz.';
-$wb['error_ssl_organisation_empty'] = 'SSL kurumu boÅŸ olamaz.';
+$wb['error_ssl_organisation_empty'] = 'SSL kuruluÅŸu boÅŸ olamaz.';
 $wb['error_ssl_organisation_unit_empty'] = 'SSL birimi boÅŸ olamaz.';
 $wb['error_ssl_country_empty'] = 'SSL ülkesi boş olamaz.';
 $wb['error_ssl_cert_empty'] = 'SSL sertifikası alanı boş olamaz';
@@ -56,31 +56,31 @@ $wb['client_group_id_txt'] = 'Müşteri';
 $wb['stats_password_txt'] = 'Web İstatistikleri Parolası';
 $wb['allow_override_txt'] = 'Apache AllowOverride';
 $wb['limit_web_quota_free_txt'] = 'Kullanılabilecek En Fazla Disk Kotası';
-$wb['ssl_state_error_regex'] = 'SSL şehri geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_';
-$wb['ssl_locality_error_regex'] = 'SSL bölgesi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_';
-$wb['ssl_organisation_error_regex'] = 'SSL kurumu geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_';
-$wb['ssl_organistaion_unit_error_regex'] = 'SSL birimi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_';
+$wb['ssl_state_error_regex'] = 'SSL ili geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ';
+$wb['ssl_locality_error_regex'] = 'SSL bölgesi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ';
+$wb['ssl_organisation_error_regex'] = 'SSL kuruluşu geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ';
+$wb['ssl_organistaion_unit_error_regex'] = 'SSL kuruluşu birimi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ';
 $wb['ssl_country_error_regex'] = 'SSL ülkesi geçersiz. Kullanılabilecek karakterler: A-Z';
 $wb['limit_traffic_quota_free_txt'] = 'Kullanılabilecek en fazla trafik kotası';
 $wb['redirect_error_regex'] = 'Yönlendirme yolu geçersiz. Geçerli örnekler: /test/ ya da http://www.domain.tld/test/';
 $wb['php_open_basedir_txt'] = 'PHP open_basedir';
 $wb['traffic_quota_exceeded_txt'] = 'Trafik kotası aşıldı';
 $wb['ruby_txt'] = 'Ruby';
-$wb['stats_user_txt'] = 'Web istatistikleri kullanıcı adı';
-$wb['stats_type_txt'] = 'Web istatistikleri yazılımı';
-$wb['custom_php_ini_txt'] = 'Özel php.ini ayarları';
+$wb['stats_user_txt'] = 'Web İstatistikleri Kullanıcı Adı';
+$wb['stats_type_txt'] = 'Web İstatistikleri Uygulaması';
+$wb['custom_php_ini_txt'] = 'Özel php.ini Ayarları';
 $wb['none_txt'] = 'Yok';
 $wb['disabled_txt'] = 'Devre dışı';
 $wb['no_redirect_txt'] = 'Yönlendirme yok';
 $wb['no_flag_txt'] = 'Ä°ÅŸaret yok';
-$wb['save_certificate_txt'] = 'Sertifikayı kaydet';
-$wb['create_certificate_txt'] = 'Sertifika ekle';
-$wb['delete_certificate_txt'] = 'Sertifikayı sil';
+$wb['save_certificate_txt'] = 'Sertifikayı Kaydet';
+$wb['create_certificate_txt'] = 'Sertifika Ekle';
+$wb['delete_certificate_txt'] = 'Sertifikayı Sil';
 $wb['nginx_directives_txt'] = 'nginx Yönergeleri';
 $wb['seo_redirect_txt'] = 'AMD Yönlendirme';
 $wb['non_www_to_www_txt'] = 'Non-www -&gt; www';
 $wb['www_to_non_www_txt'] = 'www -&gt; non-www';
-$wb['php_fpm_use_socket_txt'] = 'PHP-FPM İçin Soket Kullanılsın';
+$wb['php_fpm_use_socket_txt'] = 'PHP-FPM Soketi';
 $wb['error_no_sni_txt'] = 'Bu sunucuda SSL için SNI etkinleştirilmemiş. Bir IP adresi için yalnız bir SSL sertifikası etkinleştirebilirsiniz.';
 $wb['python_txt'] = 'Python';
 $wb['perl_txt'] = 'Perl';
@@ -102,14 +102,14 @@ $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
 $wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout değeri pozitif bir tamsayı olmalıdır.';
 $wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests değeri sıfır ya da pozitif bir tamsayı olmalıdır.';
 $wb['pm_ondemand_hint_txt'] = 'İsteğe bağlı işlem yöneticisini kullanabilmek için PHP Sürümünüz >= 5.3.9 olmalıdır. Daha önceki bir PHP sürümü için ondemand özelliğini seçerseniz, PHP başlatılamaz!';
-$wb['generate_password_txt'] = 'Parola OluÅŸtur';
+$wb['generate_password_txt'] = 'Parola Ãœret';
 $wb['repeat_password_txt'] = 'Parola Onayı';
 $wb['password_mismatch_txt'] = 'Parola ile onayı aynı değil.';
 $wb['password_match_txt'] = 'Parola ile onayı aynı.';
-$wb['available_php_directive_snippets_txt'] = 'Kullanılabilecek PHP Yönerge Parçaları:';
-$wb['available_apache_directive_snippets_txt'] = 'Kullanılabilecek Apache Yönerge Parçaları:';
-$wb['available_nginx_directive_snippets_txt'] = 'Kullanılabilecek nginx Yönerge Parçaları:';
+$wb['available_php_directive_snippets_txt'] = 'Kullanılabilecek PHP Yönerge Kod Parçaları:';
+$wb['available_apache_directive_snippets_txt'] = 'Kullanılabilecek Apache Yönerge Kod Parçaları:';
+$wb['available_nginx_directive_snippets_txt'] = 'Kullanılabilecek nginx Yönerge Kod Parçaları:';
 $wb['proxy_directives_txt'] = 'Vekil Sunucu Yönergeleri';
-$wb['available_proxy_directive_snippets_txt'] = 'Kullanılabilecek Vekil Sunucu Yönerge Parçaları:';
-$wb['Domain'] = 'Başka alan adı';
+$wb['available_proxy_directive_snippets_txt'] = 'Kullanılabilecek Vekil Sunucu Yönerge Kod Parçaları:';
+$wb['Domain'] = 'Takma Etki Alanı';
 ?>
diff --git a/interface/web/sites/lib/lang/tr_web_aliasdomain_list.lng b/interface/web/sites/lib/lang/tr_web_aliasdomain_list.lng
index b7acfd099a..e4dcaacbe7 100644
--- a/interface/web/sites/lib/lang/tr_web_aliasdomain_list.lng
+++ b/interface/web/sites/lib/lang/tr_web_aliasdomain_list.lng
@@ -1,14 +1,14 @@
 <?php
-$wb['list_head_txt'] = 'Takma Alan Adı';
+$wb['list_head_txt'] = 'Takma Etki Alanı Adı';
 $wb['active_txt'] = 'Etkin';
 $wb['server_id_txt'] = 'Sunucu';
-$wb['parent_domain_id_txt'] = 'Web Sitesi';
-$wb['domain_txt'] = 'Takma Alan Adı';
-$wb['add_new_record_txt'] = 'Takma Alan Adı Ekle';
-$wb['domain_error_empty'] = 'Alan adı boş olamaz.';
-$wb['domain_error_unique'] = 'Aynı alan adı zaten var.';
-$wb['domain_error_regex'] = 'Alan adı geçersiz.';
+$wb['parent_domain_id_txt'] = 'Web SitesÅŸ';
+$wb['domain_txt'] = 'Takma Etki Alanı Adı';
+$wb['add_new_record_txt'] = 'Yeni takma etki alanı adı ekle';
+$wb['domain_error_empty'] = 'Etki alanı adı boş olamaz.';
+$wb['domain_error_unique'] = 'Etki alanı adı eşsiz olmalıdır.';
+$wb['domain_error_regex'] = 'Etki alanı adı geçersiz.';
 $wb['no_redirect_txt'] = 'Yönlendirme yok';
 $wb['no_flag_txt'] = 'Ä°ÅŸaret yok';
-$wb['none_txt'] = 'Yok';
+$wb['none_txt'] = 'Hiçbiri';
 ?>
diff --git a/interface/web/sites/lib/lang/tr_web_backup_list.lng b/interface/web/sites/lib/lang/tr_web_backup_list.lng
index c9bc16ae78..31aea494ca 100644
--- a/interface/web/sites/lib/lang/tr_web_backup_list.lng
+++ b/interface/web/sites/lib/lang/tr_web_backup_list.lng
@@ -1,8 +1,9 @@
 <?php
 $wb['list_head_txt'] = 'Alınmış Yedekler';
 $wb['date_txt'] = 'Tarih';
-$wb['backup_type_txt'] = 'Tip';
+$wb['backup_type_txt'] = 'Tür';
 $wb['filename_txt'] = 'Yedek Dosyası';
+$wb['filesize_txt'] = 'Dosya Boyutu';
 $wb['restore_backup_txt'] = 'Geri Yükle';
 $wb['download_backup_txt'] = 'Ä°ndir';
 $wb['download_info_txt'] = 'Yedek dosyası bir kaç dakika içinde web sitesinin backup klasörü altında indirilmeye hazır olacak.';
@@ -10,12 +11,12 @@ $wb['restore_info_txt'] = 'Yedeğin geri yüklenmesine başlandı. Bu işlemin t
 $wb['restore_confirm_txt'] = 'Geri yükleme işlemi web sitenizde bulunan dosyaların üzerine yazar. Bu yedeği geri yüklemek istediğinize emin misiniz?';
 $wb['download_pending_txt'] = 'Zaten bekleyen bir yedek indirme iÅŸlemi var.';
 $wb['restore_pending_txt'] = 'Zaten bekleyen bir yedek geri yükleme işlemi var.';
+$wb['delete_backup_txt'] = 'YedeÄŸi Sil';
+$wb['delete_info_txt'] = 'Yedeğin silinmesine başlandı. Bu işlemin tamamlanması bir kaç dakika sürebilir.';
+$wb['delete_confirm_txt'] = 'Gerçekten bu yedeği silmek istediğinize emin misiniz?';
+$wb['delete_pending_txt'] = 'Bekleyen bir yedek silme iÅŸlemi var.';
+$wb['backup_type_mongodb'] = 'MongoDB Veritabanı';
 $wb['backup_type_mysql'] = 'MySQL Veritabanı';
 $wb['backup_type_web'] = 'Web sitesi dosyaları';
-$wb['filesize_txt'] = 'Filesize';
-$wb['delete_backup_txt'] = 'Delete Backup';
-$wb['delete_info_txt'] = 'Delete of the backup has been started. This action takes several minutes to be completed.';
-$wb['delete_confirm_txt'] = 'Really delete this backup?';
-$wb['delete_pending_txt'] = 'There is already a pending backup delete job.';
-$wb['backup_type_mongodb'] = 'MongoDB Database';
+
 ?>
diff --git a/interface/web/sites/lib/lang/tr_web_childdomain.lng b/interface/web/sites/lib/lang/tr_web_childdomain.lng
index e11c6a92b5..235e870117 100644
--- a/interface/web/sites/lib/lang/tr_web_childdomain.lng
+++ b/interface/web/sites/lib/lang/tr_web_childdomain.lng
@@ -1,26 +1,26 @@
 <?php
-$wb['ssl_state_txt'] = 'Mevki';
-$wb['ssl_locality_txt'] = 'Semt';
-$wb['ssl_organisation_txt'] = 'Organizasyon';
-$wb['ssl_organisation_unit_txt'] = 'Organizasyon Unitesi';
+$wb['ssl_state_txt'] = 'Ä°l';
+$wb['ssl_locality_txt'] = 'Bölge';
+$wb['ssl_organisation_txt'] = 'KuruluÅŸ';
+$wb['ssl_organisation_unit_txt'] = 'KuruluÅŸ Birimi';
 $wb['ssl_country_txt'] = 'Ãœlke';
 $wb['ssl_request_txt'] = 'SSL Ä°steÄŸi';
 $wb['ssl_cert_txt'] = 'SSL Sertifikası';
 $wb['ssl_bundle_txt'] = 'SSL Yığını';
-$wb['ssl_action_txt'] = 'SSL Eylemi';
+$wb['ssl_action_txt'] = 'SSL Ä°ÅŸlemi';
 $wb['server_id_txt'] = 'Sunucu';
-$wb['domain_txt'] = 'Domain';
-$wb['type_txt'] = 'Çeşit';
-$wb['parent_domain_id_txt'] = 'Ana Website';
-$wb['redirect_type_txt'] = 'Yönlendirme Çeşidi';
+$wb['domain_txt'] = 'Etki Alanı';
+$wb['type_txt'] = 'Tür';
+$wb['parent_domain_id_txt'] = 'Ana Web Sitesi';
+$wb['redirect_type_txt'] = 'Yönlendirme Türü';
 $wb['redirect_path_txt'] = 'Yönlendirme Yolu';
-$wb['active_txt'] = 'Aktif';
-$wb['document_root_txt'] = 'Documentroot';
+$wb['active_txt'] = 'Etkin';
+$wb['document_root_txt'] = 'Belge Kök Klasörü';
 $wb['system_user_txt'] = 'Linux Kullanıcısı';
 $wb['system_group_txt'] = 'Linux Grubu';
 $wb['ip_address_txt'] = 'IP Adresleri';
-$wb['vhost_type_txt'] = 'VHost Çeşidi';
-$wb['hd_quota_txt'] = 'Harddisk Kotası';
+$wb['vhost_type_txt'] = 'VHost Türü';
+$wb['hd_quota_txt'] = 'Sabit Disk Kotası';
 $wb['traffic_quota_txt'] = 'Trafik Kotası';
 $wb['cgi_txt'] = 'CGI';
 $wb['ssi_txt'] = 'SSI';
@@ -28,93 +28,93 @@ $wb['ssl_txt'] = 'SSL';
 $wb['suexec_txt'] = 'SuEXEC';
 $wb['php_txt'] = 'PHP';
 $wb['client_txt'] = 'Müşteri';
-$wb['limit_web_domain_txt'] = 'Hesabınızdaki max. web domaini sayısına ulaştınız.';
-$wb['limit_web_aliasdomain_txt'] = 'Hesabınızdaki max. aliasdomain sayısına ulaştınız.';
-$wb['limit_web_subdomain_txt'] = 'Hesabınızdaki max. web subdomain sayısına ulaştınız.';
-$wb['apache_directives_txt'] = 'Apache direktifleri';
-$wb['domain_error_empty'] = 'Domain boÅŸ.';
-$wb['domain_error_unique'] = 'Bu isimde websitesi veya sub / aliasdomain zaten var.';
-$wb['domain_error_regex'] = 'Domain ismi geçersiz.';
-$wb['host_txt'] = 'Host';
-$wb['redirect_error_regex'] = 'Geçersiz yönlendirme yolu. Geçerli yönlendirmeler örneğin: /test/ veya http://www.domain.tld/test/';
-$wb['no_redirect_txt'] = 'No redirect';
-$wb['no_flag_txt'] = 'No flag';
-$wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
-$wb['proxy_directives_txt'] = 'Proxy Directives';
-$wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
-$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
-$wb['backup_interval_txt'] = 'Backup interval';
-$wb['backup_copies_txt'] = 'Number of backup copies';
-$wb['ssl_key_txt'] = 'SSL Key';
-$wb['ssl_domain_txt'] = 'SSL Domain';
-$wb['web_folder_error_regex'] = 'Invalid folder entered. Please do not enter a slash.';
-$wb['ipv6_address_txt'] = 'IPv6-Address';
-$wb['errordocs_txt'] = 'Own Error-Documents';
-$wb['subdomain_txt'] = 'Auto-Subdomain';
-$wb['domain_error_autosub'] = 'There is already a subdomain with these settings.';
-$wb['hd_quota_error_empty'] = 'Harddisk quota is 0 or empty.';
-$wb['traffic_quota_error_empty'] = 'Traffic quota is empty.';
-$wb['error_ssl_state_empty'] = 'SSL State is empty.';
-$wb['error_ssl_locality_empty'] = 'SSL Locality is empty.';
-$wb['error_ssl_organisation_empty'] = 'SSL Organisation is empty.';
-$wb['error_ssl_organisation_unit_empty'] = 'SSL Organisation Unit is empty.';
-$wb['error_ssl_country_empty'] = 'SSL Country is empty.';
-$wb['error_ssl_cert_empty'] = 'SSL Certificate field is empty';
-$wb['client_group_id_txt'] = 'Client';
-$wb['stats_password_txt'] = 'Set Webstatistics password';
+$wb['limit_web_domain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla etki alanı sayısına ulaştınız.';
+$wb['limit_web_aliasdomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla takma etki alanı sayısına ulaştınız.';
+$wb['limit_web_subdomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla alt etki alanı sayısına ulaştınız.';
+$wb['apache_directives_txt'] = 'Apache Yönergeleri';
+$wb['domain_error_empty'] = 'Etki alanı boş olamaz.';
+$wb['domain_error_unique'] = 'Aynı adlı bir web sitesi ya da alt / takma etki alanı zaten var.';
+$wb['domain_error_regex'] = 'Etki alanı adı geçersiz.';
+$wb['domain_error_acme_invalid'] = 'acme.invalid etki alanı adı kullanılamaz.';
+$wb['domain_error_wildcard'] = 'Genel alt etki alanları kullanılamaz.';
+$wb['host_txt'] = 'Sunucu';
+$wb['redirect_error_regex'] = 'Yönlendirme yolu geçersiz. Örnek yönlendirmeler: /test/ ya da http://www.domain.tld/test/';
+$wb['no_redirect_txt'] = 'Yönlendirme Yok';
+$wb['no_flag_txt'] = 'Ä°ÅŸaret Yok';
+$wb['proxy_directives_txt'] = 'Vekil Sunucu Yönergeleri';
+$wb['available_proxy_directive_snippets_txt'] = 'Kullanılabilecek Vekil Sunucu Yönerge Kod Parçaları:';
+$wb['error_proxy_requires_url'] = '"Vekil Sunucu" yönlendirme türü için yönlendirilecek yol olarak kullanılacak bir adres gereklidir.';
+$wb['backup_interval_txt'] = 'Yedekleme Sıklığı';
+$wb['backup_copies_txt'] = 'Yedek Sayısı';
+$wb['ssl_key_txt'] = 'SSL Anahtarı';
+$wb['ssl_domain_txt'] = 'SSL Etki Alanı';
+$wb['web_folder_error_regex'] = 'Yazılan klasör geçersiz. Lütfen bölü karakterini yazmayın.';
+$wb['ipv6_address_txt'] = 'IPv6-Adresi';
+$wb['errordocs_txt'] = 'Özel Hata Sayfaları';
+$wb['subdomain_txt'] = 'Otomatik Alt Etki Alanı';
+$wb['domain_error_autosub'] = 'Aynı ayarları kullanan bir alt etki alanı zaten var.';
+$wb['hd_quota_error_empty'] = 'Sabit disk kotası 0 ya da boş.';
+$wb['traffic_quota_error_empty'] = 'Trafik kotası boş olamaz.';
+$wb['error_ssl_state_empty'] = 'SSL ili boÅŸ olamaz.';
+$wb['error_ssl_locality_empty'] = 'SSL bölgesi boş olamaz.';
+$wb['error_ssl_organisation_empty'] = 'SSL kuruluÅŸu boÅŸ olamaz.';
+$wb['error_ssl_organisation_unit_empty'] = 'SSL kuruluÅŸ birimi boÅŸ olamaz.';
+$wb['error_ssl_country_empty'] = 'SSL ülkesi boş olamaz.';
+$wb['error_ssl_cert_empty'] = 'SSL sertifika alanı boş olamaz.';
+$wb['client_group_id_txt'] = 'Müşteri';
+$wb['stats_password_txt'] = 'Web İstatistikleri Parolası';
 $wb['allow_override_txt'] = 'Apache AllowOverride';
-$wb['limit_web_quota_free_txt'] = 'Max. available Harddisk Quota';
-$wb['ssl_state_error_regex'] = 'Invalid SSL State. Valid characters are: a-z, 0-9 and .,-_';
-$wb['ssl_locality_error_regex'] = 'Invalid SSL Locality. Valid characters are: a-z, 0-9 and .,-_';
-$wb['ssl_organisation_error_regex'] = 'Invalid SSL Organisation. Valid characters are: a-z, 0-9 and .,-_';
-$wb['ssl_organistaion_unit_error_regex'] = 'Invalid SSL Organisation Unit. Valid characters are: a-z, 0-9 and .,-_';
-$wb['ssl_country_error_regex'] = 'Invalid SSL Country. Valid characters are: A-Z';
-$wb['limit_traffic_quota_free_txt'] = 'Max. available Traffic Quota';
+$wb['limit_web_quota_free_txt'] = 'Kullanılabilecek en fazla sabit disk kotası';
+$wb['ssl_state_error_regex'] = 'SSL ili geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ';
+$wb['ssl_locality_error_regex'] = 'SSL bölgesi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ';
+$wb['ssl_organisation_error_regex'] = 'SSL kuruluşu geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ';
+$wb['ssl_organistaion_unit_error_regex'] = 'SSL kuruluşu birimi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ';
+$wb['ssl_country_error_regex'] = 'SSL ülkesi geçersiz. Kullanılabilecek karakterler: A-Z';
+$wb['limit_traffic_quota_free_txt'] = 'Kullanılabilecek en fazla trafik kotası';
 $wb['php_open_basedir_txt'] = 'PHP open_basedir';
-$wb['traffic_quota_exceeded_txt'] = 'Traffic quota exceeded';
+$wb['traffic_quota_exceeded_txt'] = 'Trafik kotası aşıldı';
 $wb['ruby_txt'] = 'Ruby';
-$wb['stats_user_txt'] = 'Webstatistics username';
-$wb['stats_type_txt'] = 'Webstatistics program';
-$wb['custom_php_ini_txt'] = 'Custom php.ini settings';
-$wb['none_txt'] = 'None';
-$wb['disabled_txt'] = 'Disabled';
-$wb['save_certificate_txt'] = 'Save certificate';
-$wb['create_certificate_txt'] = 'Create certificate';
-$wb['delete_certificate_txt'] = 'Delete certificate';
-$wb['nginx_directives_txt'] = 'nginx Directives';
-$wb['seo_redirect_txt'] = 'SEO Redirect';
+$wb['stats_user_txt'] = 'Web İstatistikleri Kullanıcı Adı';
+$wb['stats_type_txt'] = 'Web İstatistikleri Uygulaması';
+$wb['custom_php_ini_txt'] = 'Özel php.ini Ayarları';
+$wb['none_txt'] = 'Yok';
+$wb['disabled_txt'] = 'Devre Dışı';
+$wb['save_certificate_txt'] = 'Sertifikayı Kaydet';
+$wb['create_certificate_txt'] = 'Sertifika Ekle';
+$wb['delete_certificate_txt'] = 'Sertifikayı Sil';
+$wb['nginx_directives_txt'] = 'nginx Yönergeleri';
+$wb['seo_redirect_txt'] = 'AMD Yönlendirme';
 $wb['non_www_to_www_txt'] = 'Non-www -&gt; www';
 $wb['www_to_non_www_txt'] = 'www -&gt; non-www';
-$wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM';
-$wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.';
+$wb['php_fpm_use_socket_txt'] = 'PHP-FPM Soketi';
+$wb['error_no_sni_txt'] = 'Bu sunucu üzerinde SSL için SNI etkinleştirilmemiş. Bir IP adresi için yalnız bir SSL sertifikası kullanılabilir.';
 $wb['python_txt'] = 'Python';
 $wb['perl_txt'] = 'Perl';
 $wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children';
 $wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers';
 $wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers';
 $wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers';
-$wb['error_php_fpm_pm_settings_txt'] = 'Values of PHP-FPM pm settings must be as follows: pm.max_children &gt;= pm.max_spare_servers &gt;= pm.start_servers &gt;= pm.min_spare_servers &gt; 0';
-$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children must be a positive integer value.';
-$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers must be a positive integer value.';
-$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be a positive integer value.';
-$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.';
-$wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.';
-$wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
-$wb['fastcgi_php_version_txt'] = 'PHP Version';
-$wb['pm_txt'] = 'PHP-FPM Process Manager';
+$wb['error_php_fpm_pm_settings_txt'] = 'Values of PHP-FPM pm ayarları şu şekilde olmalıdır: pm.max_children &gt;= pm.max_spare_servers &gt;= pm.start_servers &gt;= pm.min_spare_servers &gt; 0';
+$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children değeri pozitif bir tamsayı olmalıdır.';
+$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers değeri pozitif bir tamsayı olmalıdır.';
+$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers değeri pozitif bir tamsayı olmalıdır.';
+$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers değeri pozitif bir tamsayı olmalıdır.';
+$wb['hd_quota_error_regex'] = 'Sabit disk kotası geçersiz.';
+$wb['traffic_quota_error_regex'] = 'Trafik kotası geçersiz.';
+$wb['fastcgi_php_version_txt'] = 'PHP Sürümü';
+$wb['pm_txt'] = 'PHP-FPM İşlem Yönetimi';
 $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
 $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
-$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout must be a positive integer value.';
-$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests must be an integer value >= 0.';
-$wb['pm_ondemand_hint_txt'] = 'Please note that you must have PHP version >= 5.3.9 in order to use the ondemand process manager. If you select ondemand for an older PHP version, PHP will not start anymore!';
-$wb['generate_password_txt'] = 'Generate Password';
-$wb['repeat_password_txt'] = 'Repeat Password';
-$wb['password_mismatch_txt'] = 'The passwords do not match.';
-$wb['password_match_txt'] = 'The passwords do match.';
-$wb['available_php_directive_snippets_txt'] = 'Available PHP Directive Snippets:';
-$wb['available_apache_directive_snippets_txt'] = 'Available Apache Directive Snippets:';
-$wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snippets:';
-$wb['Domain'] = 'Aliasdomain';
-$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.';
-$wb['ssl_letsencrypt_exclude_txt'] = 'Don\'t add to Let\'s Encrypt certificate';
+$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout değeri pozitif bir tamsayı olmalıdır.';
+$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests değeri pozitif bir tamsayı olmalıdır >= 0.';
+$wb['pm_ondemand_hint_txt'] = 'Ondemand işlem yönetimini kullanabilmek için PHP sürümünüz >= 5.3.9 olmalıdır. Daha eski bir PHP sürümü için ondemand seçilirse PHP çalışmaya başlayamaz!';
+$wb['generate_password_txt'] = 'Parola Ãœret';
+$wb['repeat_password_txt'] = 'Parola Onayı';
+$wb['password_mismatch_txt'] = 'Parola ve onayı aynı değil';
+$wb['password_match_txt'] = 'Parola ve onayı aynı değil.';
+$wb['available_php_directive_snippets_txt'] = 'Kullanılabilecek PHP Yönerge Kod Parçaları:';
+$wb['available_apache_directive_snippets_txt'] = 'Kullanılabilecek Apache Yönerge Kod Parçaları:';
+$wb['available_nginx_directive_snippets_txt'] = 'Kullanılabilecek nginx Yönerge Kod Parçaları:';
+$wb['Domain'] = 'Takma Etki Alanı Adı';
+$wb['ssl_letsencrypt_exclude_txt'] = 'Let\'s Encrypt sertifikası eklenmesin';
 ?>
diff --git a/interface/web/sites/lib/lang/tr_web_childdomain_list.lng b/interface/web/sites/lib/lang/tr_web_childdomain_list.lng
index 26b3acc9e9..33127c84cf 100644
--- a/interface/web/sites/lib/lang/tr_web_childdomain_list.lng
+++ b/interface/web/sites/lib/lang/tr_web_childdomain_list.lng
@@ -1,18 +1,18 @@
 <?php
-$wb['list_head_txt'] = 'Takma Alan Adı';
+$wb['list_head_txt'] = 'Takma Etki Alanı';
 $wb['active_txt'] = 'Etkin';
 $wb['server_id_txt'] = 'Sunucu';
 $wb['parent_domain_id_txt'] = 'Web Sitesi';
-$wb['domain_txt'] = 'Takma Alan Adı';
-$wb['domain_error_empty'] = 'Alan adı boş olamaz.';
-$wb['domain_error_unique'] = 'Aynı alan adı zaten var.';
-$wb['domain_error_regex'] = 'Alan adı geçersiz.';
+$wb['domain_txt'] = 'Takma Etki Alanı';
+$wb['add_new_subdomain_txt'] = 'Alt Etki Alanı Ekle';
+$wb['add_new_aliasdomain_txt'] = 'Takma Etki Alanı Ekle';
+$wb['domain_error_empty'] = 'Etki alanı boş olamaz.';
+$wb['domain_error_unique'] = 'Aynı etki alanı zaten var.';
+$wb['domain_error_regex'] = 'Etki alanı geçersiz.';
+$wb['domain_error_acme_invalid'] = 'acme.invalid etki alanı adı kullanılamaz.';
 $wb['no_redirect_txt'] = 'Yönlendirme yok';
 $wb['no_flag_txt'] = 'Ä°ÅŸaret yok';
 $wb['none_txt'] = 'Yok';
-$wb['add_new_subdomain_txt'] = 'Add new Subdomain';
-$wb['add_new_aliasdomain_txt'] = 'Add new Aliasdomain';
-$wb['aliasdomain_list_head_txt'] = 'Aliasdomains';
-$wb['subdomain_list_head_txt'] = 'Subdomains';
-$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.';
+$wb['aliasdomain_list_head_txt'] = 'Takma Etki Alanları';
+$wb['subdomain_list_head_txt'] = 'Alt Etki Alanları';
 ?>
diff --git a/interface/web/sites/lib/lang/tr_web_directive_snippets.lng b/interface/web/sites/lib/lang/tr_web_directive_snippets.lng
index d2590e53cf..a4380942e6 100644
--- a/interface/web/sites/lib/lang/tr_web_directive_snippets.lng
+++ b/interface/web/sites/lib/lang/tr_web_directive_snippets.lng
@@ -1,3 +1,3 @@
 <?php
-$wb['directive_snippets_id_txt'] = 'Desired configuration';
+$wb['directive_snippets_id_txt'] = 'İstenilen Yapılandırma';
 ?>
diff --git a/interface/web/sites/lib/lang/tr_web_domain.lng b/interface/web/sites/lib/lang/tr_web_domain.lng
index c97ce73778..65db621f56 100644
--- a/interface/web/sites/lib/lang/tr_web_domain.lng
+++ b/interface/web/sites/lib/lang/tr_web_domain.lng
@@ -3,7 +3,7 @@ $wb['backup_interval_txt'] = 'Yedekleme Sıklığı';
 $wb['backup_copies_txt'] = 'Yedek Kopyası Sayısı';
 $wb['ssl_state_txt'] = 'Ä°l';
 $wb['ssl_locality_txt'] = 'Bölge';
-$wb['ssl_organisation_txt'] = 'Kurum';
+$wb['ssl_organisation_txt'] = 'KuruluÅŸ';
 $wb['ssl_organisation_unit_txt'] = 'Birim';
 $wb['ssl_country_txt'] = 'Ãœlke';
 $wb['ssl_key_txt'] = 'SSL Anahtarı';
@@ -11,13 +11,13 @@ $wb['ssl_request_txt'] = 'SSL Ä°steÄŸi';
 $wb['ssl_cert_txt'] = 'SSL Sertifikası';
 $wb['ssl_bundle_txt'] = 'SSL Yığını';
 $wb['ssl_action_txt'] = 'SSL Ä°ÅŸlemi';
-$wb['ssl_domain_txt'] = 'SSL Alan Adı';
+$wb['ssl_domain_txt'] = 'SSL Etki Alanı';
 $wb['server_id_txt'] = 'Sunucu';
-$wb['domain_txt'] = 'Alan Adı';
-$wb['web_folder_error_regex'] = 'Yazdığınız klasör geçersiz. Lütfen / karakterini yazmayın.';
-$wb['type_txt'] = 'Tip';
+$wb['domain_txt'] = 'Etki Alanı';
+$wb['web_folder_error_regex'] = 'Yazdığınız klasör geçersiz. Lütfen bölü karakterini yazmayın.';
+$wb['type_txt'] = 'Tür';
 $wb['parent_domain_id_txt'] = 'Ãœst Web Sitesi';
-$wb['redirect_type_txt'] = 'Yönlendirme Tipi';
+$wb['redirect_type_txt'] = 'Yönlendirme Türü';
 $wb['redirect_path_txt'] = 'Yönlendirme Yolu';
 $wb['active_txt'] = 'Etkin';
 $wb['document_root_txt'] = 'Kök Klasör';
@@ -25,62 +25,62 @@ $wb['system_user_txt'] = 'Linux Kullanıcısı';
 $wb['system_group_txt'] = 'Linux Grubu';
 $wb['ip_address_txt'] = 'IPv4 Adresi';
 $wb['ipv6_address_txt'] = 'IPv6 Adresi';
-$wb['vhost_type_txt'] = 'SSunucu Tipi';
+$wb['vhost_type_txt'] = 'Sanal Sunucu Türü';
 $wb['hd_quota_txt'] = 'Disk Kotası';
 $wb['traffic_quota_txt'] = 'Trafik Kotası';
 $wb['cgi_txt'] = 'CGI';
 $wb['ssi_txt'] = 'SSI';
 $wb['errordocs_txt'] = 'Özel Hata Sayfaları';
-$wb['subdomain_txt'] = 'Otomatik Alt Alan';
+$wb['subdomain_txt'] = 'Otomatik Alt Etki Alanı';
 $wb['ssl_txt'] = 'SSL';
 $wb['suexec_txt'] = 'SuEXEC';
 $wb['php_txt'] = 'PHP';
 $wb['client_txt'] = 'Müşteri';
-$wb['limit_web_domain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla alan adı sayısına ulaştınız.';
-$wb['limit_web_aliasdomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla başka alan adı sayısına ulaştınız.';
-$wb['limit_web_subdomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla alt alan adı sayısına ulaştınız.';
+$wb['limit_web_domain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla etki alanı sayısına ulaştınız.';
+$wb['limit_web_aliasdomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla takma etki alanı sayısına ulaştınız.';
+$wb['limit_web_subdomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla alt etki alanı sayısına ulaştınız.';
 $wb['apache_directives_txt'] = 'Apache Yönergeleri';
-$wb['domain_error_empty'] = 'Alan adı boş olamaz.';
-$wb['domain_error_unique'] = 'Aynı adlı bir web sitesi ya da alt/başka alan adı var.';
-$wb['domain_error_regex'] = 'Alan adı geçersiz.';
-$wb['domain_error_autosub'] = 'Aynı ayarlara sahip bir alt alan adı zaten var.';
+$wb['domain_error_empty'] = 'Etki alanı boş olamaz.';
+$wb['domain_error_unique'] = 'Aynı adlı bir web sitesi ya da alt/takma etki alanı var.';
+$wb['domain_error_regex'] = 'Etki alanı geçersiz.';
+$wb['domain_error_autosub'] = 'Aynı ayarlara sahip bir alt etki alanı zaten var.';
 $wb['hd_quota_error_empty'] = 'Disk kotası 0 ya da boş olamaz.';
 $wb['traffic_quota_error_empty'] = 'Trafik kotası boş olamaz.';
-$wb['error_ssl_state_empty'] = 'SSL ÅŸehri boÅŸ olamaz.';
+$wb['error_ssl_state_empty'] = 'SSL ili boÅŸ olamaz.';
 $wb['error_ssl_locality_empty'] = 'SSL bölgesi boş olamaz.';
-$wb['error_ssl_organisation_empty'] = 'SSL kurumu boÅŸ olamaz.';
+$wb['error_ssl_organisation_empty'] = 'SSL kuruluÅŸu boÅŸ olamaz.';
 $wb['error_ssl_organisation_unit_empty'] = 'SSL birimi boÅŸ olamaz.';
 $wb['error_ssl_country_empty'] = 'SSL ülkesi boş olamaz.';
 $wb['error_ssl_cert_empty'] = 'SSL sertifikası alanı boş olamaz';
 $wb['client_group_id_txt'] = 'Müşteri';
-$wb['stats_password_txt'] = 'Web istatistikleri parolası';
+$wb['stats_password_txt'] = 'Web İstatistikleri Parolası';
 $wb['allow_override_txt'] = 'Apache AllowOverride';
 $wb['limit_web_quota_free_txt'] = 'Kullanılabilecek en fazla disk kotası';
-$wb['ssl_state_error_regex'] = 'SSL şehri geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ';
+$wb['ssl_state_error_regex'] = 'SSL ili geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ';
 $wb['ssl_locality_error_regex'] = 'SSL bölgesi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ';
-$wb['ssl_organisation_error_regex'] = 'SSL kurumu geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ';
-$wb['ssl_organistaion_unit_error_regex'] = 'SSL birimi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ';
+$wb['ssl_organisation_error_regex'] = 'SSL kuruluşu geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ';
+$wb['ssl_organistaion_unit_error_regex'] = 'SSL kuruluşu birimi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ';
 $wb['ssl_country_error_regex'] = 'SSL ülkesi geçersiz. Kullanılabilecek karakterler: A-Z';
 $wb['limit_traffic_quota_free_txt'] = 'Kullanılabilecek en fazla trafik kotası';
-$wb['redirect_error_regex'] = 'Yönlendirme yolu geçersiz. Geçerli örnekler: /test/ ya da http://www.domain.tld/test/';
+$wb['redirect_error_regex'] = 'Yönlendirme yolu geçersiz. Örnekler: /test/ ya da http://www.domain.tld/test/';
 $wb['php_open_basedir_txt'] = 'PHP open_basedir';
 $wb['traffic_quota_exceeded_txt'] = 'Trafik kotası aşıldı';
 $wb['ruby_txt'] = 'Ruby';
-$wb['stats_user_txt'] = 'Web istatistikleri kullanıcı adı';
-$wb['stats_type_txt'] = 'Web istatistikleri yazılımı';
-$wb['custom_php_ini_txt'] = 'Özel php.ini ayarları';
+$wb['stats_user_txt'] = 'Web İstatistikleri Kullanıcı Adı';
+$wb['stats_type_txt'] = 'Web İstatistikleri Uygulaması';
+$wb['custom_php_ini_txt'] = 'Özel php.ini Ayarları';
 $wb['none_txt'] = 'Yok';
 $wb['disabled_txt'] = 'Devre Dışı';
 $wb['no_redirect_txt'] = 'Yönlendirme yok';
 $wb['no_flag_txt'] = 'Ä°ÅŸaret yok';
-$wb['save_certificate_txt'] = 'Sertifikayı kaydet';
-$wb['create_certificate_txt'] = 'Sertifika ekle';
-$wb['delete_certificate_txt'] = 'Sertifikayı sil';
+$wb['save_certificate_txt'] = 'Sertifikayı Kaydet';
+$wb['create_certificate_txt'] = 'Sertifika Ekle';
+$wb['delete_certificate_txt'] = 'Sertifikayı Sil';
 $wb['nginx_directives_txt'] = 'nginx Yönergeleri';
 $wb['seo_redirect_txt'] = 'AMD Yönlendirme';
 $wb['non_www_to_www_txt'] = 'Non-www -&gt; www';
 $wb['www_to_non_www_txt'] = 'www -&gt; non-www';
-$wb['php_fpm_use_socket_txt'] = 'PHP-FPM İçin Soket Kullanılsın';
+$wb['php_fpm_use_socket_txt'] = 'PHP-FPM Soketi';
 $wb['error_no_sni_txt'] = 'Bu sunucuda SSL için SNI etkinleştirilmemiş. Bir IP adresi için yalnız bir SSL sertifikası etkinleştirebilirsiniz.';
 $wb['python_txt'] = 'Python';
 $wb['perl_txt'] = 'Perl';
@@ -102,15 +102,15 @@ $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
 $wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout değeri pozitif bir tamsayı olmalıdır.';
 $wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests değeri sıfır ya da pozitif bir tamsayı olmalıdır.';
 $wb['pm_ondemand_hint_txt'] = 'İsteğe bağlı işlem yöneticisini kullanabilmek için PHP Sürümünüz >= 5.3.9 olmalıdır. Daha önceki bir PHP sürümü için ondemand özelliğini seçerseniz, PHP başlatılamaz!';
-$wb['generate_password_txt'] = 'Parola OluÅŸtur';
+$wb['generate_password_txt'] = 'Parola Ãœret';
 $wb['repeat_password_txt'] = 'Parola Onayı';
 $wb['password_mismatch_txt'] = 'Parola ile onayı aynı değil.';
 $wb['password_match_txt'] = 'Parola ile onayı aynı.';
-$wb['available_php_directive_snippets_txt'] = 'Kullanılabilecek PHP Yönerge Parçaları:';
-$wb['available_apache_directive_snippets_txt'] = 'Kullanılabilecek Apache Yönerge Parçaları:';
-$wb['available_nginx_directive_snippets_txt'] = 'Kullanılabilecek nginx Yönerge Parçaları:';
+$wb['available_php_directive_snippets_txt'] = 'Kullanılabilecek PHP Yönerge Kod Parçaları:';
+$wb['available_apache_directive_snippets_txt'] = 'Kullanılabilecek Apache Yönerge Kod Parçaları:';
+$wb['available_nginx_directive_snippets_txt'] = 'Kullanılabilecek nginx Yönerge Kod Parçaları:';
 $wb['proxy_directives_txt'] = 'Vekil Sunucu Yönergeleri';
-$wb['available_proxy_directive_snippets_txt'] = 'Kullanılabilecek Vekil Sunucu Yönerge Parçaları:';
+$wb['available_proxy_directive_snippets_txt'] = 'Kullanılabilecek Vekil Sunucu Yönerge Kod Parçaları:';
 $wb['no_server_error'] = 'Bir sunucu seçmelisiniz.';
 $wb['no_backup_txt'] = 'Yedek alınmasın';
 $wb['daily_backup_txt'] = 'Günlük';
@@ -122,16 +122,16 @@ $wb['allowed_rewrite_rule_directives_txt'] = 'Kullanılabilecek Yönergeler:';
 $wb['configuration_error_txt'] = 'AYAR HATASI';
 $wb['variables_txt'] = 'DeÄŸiÅŸkenler';
 $wb['added_by_txt'] = 'Ekleyen';
-$wb['added_date_txt'] = 'EklendiÄŸi tarih';
+$wb['added_date_txt'] = 'Eklenme Tarihi';
 $wb['backup_excludes_txt'] = 'Katılmayacak Klasörler';
 $wb['backup_excludes_note_txt'] = '(Klasörleri virgül ile ayırarak yazın. Örnek: web/cache/*,web/backup)';
 $wb['backup_excludes_error_regex'] = 'Katılmayacak klasörlerde geçersiz karakterler bulunuyor.';
 $wb['invalid_custom_php_ini_settings_txt'] = 'php.ini ayarları geçersiz';
 $wb['invalid_system_user_or_group_txt'] = 'Sistem kullanıcısı ya da grubu geçersiz';
 $wb['apache_directive_blocked_error'] = 'Apache yönergesi güvenlik ayarları tarafından engellenmiş:';
-$wb['http_port_txt'] = 'HTTP Port';
-$wb['https_port_txt'] = 'HTTPS Port';
-$wb['http_port_error_regex'] = 'HTTP Port invalid.';
-$wb['https_port_error_regex'] = 'HTTPS Port invalid.';
-$wb['nginx_directive_blocked_error'] = 'Nginx directive blocked by security settings:';
+$wb['http_port_txt'] = 'HTTP Kapı Numarası';
+$wb['https_port_txt'] = 'HTTPS Kapı Numarası';
+$wb['http_port_error_regex'] = 'HTTP kapı numarası geçersiz.';
+$wb['https_port_error_regex'] = 'HTTPS kapı numarası geçersiz.';
+$wb['nginx_directive_blocked_error'] = 'nginx yönergesi güvenlik ayarları tarafından engellendi:';
 ?>
diff --git a/interface/web/sites/lib/lang/tr_web_domain_admin_list.lng b/interface/web/sites/lib/lang/tr_web_domain_admin_list.lng
index f86967d0d4..487c6a087c 100644
--- a/interface/web/sites/lib/lang/tr_web_domain_admin_list.lng
+++ b/interface/web/sites/lib/lang/tr_web_domain_admin_list.lng
@@ -4,6 +4,6 @@ $wb['list_head_txt'] = 'Web Siteleri';
 $wb['domain_id_txt'] = 'Kod';
 $wb['active_txt'] = 'Etkin';
 $wb['server_id_txt'] = 'Sunucu';
-$wb['domain_txt'] = 'Alan Adı';
+$wb['domain_txt'] = 'Etki Alanı';
 $wb['add_new_record_txt'] = 'Web Sitesi Ekle';
 ?>
diff --git a/interface/web/sites/lib/lang/tr_web_domain_list.lng b/interface/web/sites/lib/lang/tr_web_domain_list.lng
index a2320b5dcd..fbfa573470 100644
--- a/interface/web/sites/lib/lang/tr_web_domain_list.lng
+++ b/interface/web/sites/lib/lang/tr_web_domain_list.lng
@@ -3,6 +3,6 @@ $wb['list_head_txt'] = 'Web Siteleri';
 $wb['domain_id_txt'] = 'Kod';
 $wb['active_txt'] = 'Etkin';
 $wb['server_id_txt'] = 'Sunucu';
-$wb['domain_txt'] = 'Alan Adı';
+$wb['domain_txt'] = 'Etki Alanı';
 $wb['add_new_record_txt'] = 'Web Sitesi Ekle';
 ?>
diff --git a/interface/web/sites/lib/lang/tr_web_folder_user.lng b/interface/web/sites/lib/lang/tr_web_folder_user.lng
index a0479ee0d1..afbe01cab1 100644
--- a/interface/web/sites/lib/lang/tr_web_folder_user.lng
+++ b/interface/web/sites/lib/lang/tr_web_folder_user.lng
@@ -4,8 +4,8 @@ $wb['username_txt'] = 'Kullanıcı Adı';
 $wb['password_txt'] = 'Parola';
 $wb['active_txt'] = 'Etkin';
 $wb['folder_error_empty'] = 'Bir web klasörü seçilmemiş.';
-$wb['password_strength_txt'] = 'Parola Güçlüğü';
-$wb['generate_password_txt'] = 'Parola OluÅŸtur';
+$wb['password_strength_txt'] = 'Parola ZorluÄŸu';
+$wb['generate_password_txt'] = 'Parola Ãœret';
 $wb['repeat_password_txt'] = 'Parola Onayı';
 $wb['password_mismatch_txt'] = 'Parola ile onayı aynı değil.';
 $wb['password_match_txt'] = 'Parola ile onayı aynı.';
diff --git a/interface/web/sites/lib/lang/tr_web_sites_stats_list.lng b/interface/web/sites/lib/lang/tr_web_sites_stats_list.lng
index 4fbdef871d..685fc22fc6 100644
--- a/interface/web/sites/lib/lang/tr_web_sites_stats_list.lng
+++ b/interface/web/sites/lib/lang/tr_web_sites_stats_list.lng
@@ -1,6 +1,6 @@
 <?php
 $wb['list_head_txt'] = 'Web TrafiÄŸi';
-$wb['domain_txt'] = 'Alan Adı';
+$wb['domain_txt'] = 'Etki Alanı';
 $wb['this_month_txt'] = 'Bu ay';
 $wb['last_month_txt'] = 'Geçen ay';
 $wb['this_year_txt'] = 'Bu yıl';
diff --git a/interface/web/sites/lib/lang/tr_web_subdomain.lng b/interface/web/sites/lib/lang/tr_web_subdomain.lng
index 188b257589..7d1cdcc5c0 100644
--- a/interface/web/sites/lib/lang/tr_web_subdomain.lng
+++ b/interface/web/sites/lib/lang/tr_web_subdomain.lng
@@ -1,7 +1,7 @@
 <?php
 $wb['ssl_state_txt'] = 'Ä°l';
 $wb['ssl_locality_txt'] = 'Bölge';
-$wb['ssl_organisation_txt'] = 'Kurum';
+$wb['ssl_organisation_txt'] = 'KuruluÅŸ';
 $wb['ssl_organisation_unit_txt'] = 'Birim';
 $wb['ssl_country_txt'] = 'Ãœlke';
 $wb['ssl_request_txt'] = 'SSL Ä°steÄŸi';
@@ -9,17 +9,17 @@ $wb['ssl_cert_txt'] = 'SSL Sertifikası';
 $wb['ssl_bundle_txt'] = 'SSL Yığını';
 $wb['ssl_action_txt'] = 'SSL Ä°ÅŸlemi';
 $wb['server_id_txt'] = 'Sunucu';
-$wb['domain_txt'] = 'Alan Adı';
-$wb['type_txt'] = 'Tip';
+$wb['domain_txt'] = 'Etki Alanı';
+$wb['type_txt'] = 'Tür';
 $wb['parent_domain_id_txt'] = 'Ãœst Web Sitesi';
-$wb['redirect_type_txt'] = 'Yönlendirme Tipi';
+$wb['redirect_type_txt'] = 'Yönlendirme Türü';
 $wb['redirect_path_txt'] = 'Yönlendirme Yolu';
 $wb['active_txt'] = 'Etkin';
 $wb['document_root_txt'] = 'Kök Klasör';
 $wb['system_user_txt'] = 'Linux Kullanıcısı';
 $wb['system_group_txt'] = 'Linux Grubu';
 $wb['ip_address_txt'] = 'IP Adresi';
-$wb['vhost_type_txt'] = 'SSunucu Tipi';
+$wb['vhost_type_txt'] = 'Sanal Sunucu Türü';
 $wb['hd_quota_txt'] = 'Disk Kotası';
 $wb['traffic_quota_txt'] = 'Trafik Kotası';
 $wb['cgi_txt'] = 'CGI';
@@ -28,23 +28,23 @@ $wb['ssl_txt'] = 'SSL';
 $wb['suexec_txt'] = 'SuEXEC';
 $wb['php_txt'] = 'PHP';
 $wb['client_txt'] = 'Müşteri';
-$wb['limit_web_domain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla alan adı sayısına ulaştınız.';
-$wb['limit_web_aliasdomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla başka alan adı sayısına ulaştınız.';
-$wb['limit_web_subdomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla alt alan adı sayısına ulaştınız.';
+$wb['limit_web_domain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla etki alanı sayısına ulaştınız.';
+$wb['limit_web_aliasdomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla takma etki alanı sayısına ulaştınız.';
+$wb['limit_web_subdomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla alt etki alanı sayısına ulaştınız.';
 $wb['apache_directives_txt'] = 'Apache Yönergeleri';
-$wb['domain_error_empty'] = 'Alan adı boş olamaz.';
-$wb['domain_error_unique'] = 'Aynı adlı bir web sitesi ya da alt/başka alan adı var.';
-$wb['domain_error_regex'] = 'Alan adı geçersiz.';
-$wb['domain_error_wildcard'] = 'Genel karakterler içeren alt alan adları kullanılamaz.';
+$wb['domain_error_empty'] = 'Etki alanı boş olamaz.';
+$wb['domain_error_unique'] = 'Aynı adlı bir web sitesi ya da alt/takma etki alanı var.';
+$wb['domain_error_regex'] = 'Etki alanı geçersiz.';
+$wb['domain_error_wildcard'] = 'Genel karakterler içeren alt etki alanları kullanılamaz.';
 $wb['host_txt'] = 'Sunucu';
-$wb['redirect_error_regex'] = 'Yönlendirme yolu geçersiz. Geçerli örnekler: /test/ ya da http://www.domain.tld/test/';
+$wb['redirect_error_regex'] = 'Yönlendirme yolu geçersiz. Örnekler: /test/ ya da http://www.domain.tld/test/';
 $wb['no_redirect_txt'] = 'Yönlendirme yok';
 $wb['no_flag_txt'] = 'Ä°ÅŸaret yok';
 $wb['proxy_directives_txt'] = 'Vekil Sunucu Yönergeleri';
-$wb['available_proxy_directive_snippets_txt'] = 'Kullanılabilecek Vekil Sunucu Yönerge Parçaları:';
-$wb['error_proxy_requires_url'] = '\\"Vekil Sunucu\\" yönlendirme tipi için, yönlendirilecek yolu gösteren bir İnternet adresi gereklidir.';
-$wb['http_port_txt'] = 'HTTP Port';
-$wb['https_port_txt'] = 'HTTPS Port';
-$wb['http_port_error_regex'] = 'HTTP Port invalid.';
-$wb['https_port_error_regex'] = 'HTTPS Port invalid.';
+$wb['available_proxy_directive_snippets_txt'] = 'Kullanılabilecek Vekil Sunucu Yönerge Kod Parçaları:';
+$wb['error_proxy_requires_url'] = '"Vekil Sunucu" yönlendirme türü için, yönlendirilecek yolu gösteren bir İnternet adresi gereklidir.';
+$wb['http_port_txt'] = 'HTTP Kapı Numarası';
+$wb['https_port_txt'] = 'HTTPS Kapı Numarası';
+$wb['http_port_error_regex'] = 'HTTP kapı numarası geçersiz.';
+$wb['https_port_error_regex'] = 'HTTPS kapı numarası geçersiz.';
 ?>
diff --git a/interface/web/sites/lib/lang/tr_web_subdomain_list.lng b/interface/web/sites/lib/lang/tr_web_subdomain_list.lng
index 8155af64b3..6527242e2d 100644
--- a/interface/web/sites/lib/lang/tr_web_subdomain_list.lng
+++ b/interface/web/sites/lib/lang/tr_web_subdomain_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['list_head_txt'] = 'Alt Alan Adları';
+$wb['list_head_txt'] = 'Alt Etki Alanları';
 $wb['active_txt'] = 'Etkin';
 $wb['server_id_txt'] = 'Sunucu';
 $wb['parent_domain_id_txt'] = 'Web Sitesi';
-$wb['domain_txt'] = 'Alt Alan Adı';
-$wb['add_new_record_txt'] = 'Alt Alan Ekle';
+$wb['domain_txt'] = 'Alt Etki Alanı';
+$wb['add_new_record_txt'] = 'Alt Etki Alanı Ekle';
 ?>
diff --git a/interface/web/sites/lib/lang/tr_web_vhost_domain.lng b/interface/web/sites/lib/lang/tr_web_vhost_domain.lng
index 2e9384fee4..4cfe808bfb 100644
--- a/interface/web/sites/lib/lang/tr_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/tr_web_vhost_domain.lng
@@ -3,7 +3,7 @@ $wb['backup_interval_txt'] = 'Yedekleme Sıklığı';
 $wb['backup_copies_txt'] = 'Yedek Kopyası Sayısı';
 $wb['ssl_state_txt'] = 'Ä°l';
 $wb['ssl_locality_txt'] = 'Bölge';
-$wb['ssl_organisation_txt'] = 'Kurum';
+$wb['ssl_organisation_txt'] = 'KuruluÅŸ';
 $wb['ssl_organisation_unit_txt'] = 'Birim';
 $wb['ssl_country_txt'] = 'Ãœlke';
 $wb['ssl_key_txt'] = 'SSL Anahtarı';
@@ -11,13 +11,13 @@ $wb['ssl_request_txt'] = 'SSL Ä°steÄŸi';
 $wb['ssl_cert_txt'] = 'SSL Sertifikası';
 $wb['ssl_bundle_txt'] = 'SSL Yığını';
 $wb['ssl_action_txt'] = 'SSL Ä°ÅŸlemi';
-$wb['ssl_domain_txt'] = 'SSL Alan Adı';
+$wb['ssl_domain_txt'] = 'SSL Etki Alanı';
 $wb['server_id_txt'] = 'Sunucu';
-$wb['domain_txt'] = 'Alan Adı';
+$wb['domain_txt'] = 'Etki Alanı';
 $wb['web_folder_error_regex'] = 'Yazdığınız klasör geçersiz. Lütfen / karakterini yazmayın.';
-$wb['type_txt'] = 'Tip';
+$wb['type_txt'] = 'Tür';
 $wb['parent_domain_id_txt'] = 'Ãœst Web Sitesi';
-$wb['redirect_type_txt'] = 'Yönlendirme Tipi';
+$wb['redirect_type_txt'] = 'Yönlendirme Türü';
 $wb['redirect_path_txt'] = 'Yönlendirme Yolu';
 $wb['active_txt'] = 'Etkin';
 $wb['document_root_txt'] = 'Kök Klasör';
@@ -25,63 +25,63 @@ $wb['system_user_txt'] = 'Linux Kullanıcısı';
 $wb['system_group_txt'] = 'Linux Grubu';
 $wb['ip_address_txt'] = 'IPv4 Adresi';
 $wb['ipv6_address_txt'] = 'IPv6 Adresi';
-$wb['vhost_type_txt'] = 'SSunucu Tipi';
+$wb['vhost_type_txt'] = 'Sanal Sunucu Türü';
 $wb['hd_quota_txt'] = 'Disk Kotası';
 $wb['traffic_quota_txt'] = 'Trafik Kotası';
 $wb['cgi_txt'] = 'CGI';
 $wb['ssi_txt'] = 'SSI';
 $wb['errordocs_txt'] = 'Özel Hata Sayfaları';
-$wb['subdomain_txt'] = 'Otomatik Alt Alan';
+$wb['subdomain_txt'] = 'Otomatik Alt Etki Alanı';
 $wb['ssl_txt'] = 'SSL';
 $wb['suexec_txt'] = 'SuEXEC';
 $wb['php_txt'] = 'PHP';
 $wb['client_txt'] = 'Müşteri';
-$wb['limit_web_domain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla alan adı sayısına ulaştınız.';
-$wb['limit_web_aliasdomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla başka alan adı sayısına ulaştınız.';
-$wb['limit_web_subdomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla alt alan adı sayısına ulaştınız.';
+$wb['limit_web_domain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla etki alanı sayısına ulaştınız.';
+$wb['limit_web_aliasdomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla takma etki alanı sayısına ulaştınız.';
+$wb['limit_web_subdomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla alt etki alanı sayısına ulaştınız.';
 $wb['apache_directives_txt'] = 'Apache Yönergeleri';
-$wb['domain_error_empty'] = 'Alan adı boş olamaz.';
-$wb['domain_error_unique'] = 'Aynı adlı bir web sitesi ya da alt/başka alan adı var.';
-$wb['domain_error_regex'] = 'Alan adı geçersiz.';
-$wb['domain_error_autosub'] = 'Aynı ayarlara sahip bir alt alan adı zaten var.';
+$wb['domain_error_empty'] = 'Etki alanı boş olamaz.';
+$wb['domain_error_unique'] = 'Aynı adlı bir web sitesi ya da alt/takma etki alanı var.';
+$wb['domain_error_regex'] = 'Etki alanı geçersiz.';
+$wb['domain_error_acme_invalid'] = 'acme.invalid etki alanı adı kullanılamaz.';
+$wb['domain_error_autosub'] = 'Aynı ayarlara sahip bir alt etki alanı zaten var.';
 $wb['hd_quota_error_empty'] = 'Disk kotası 0 ya da boş olamaz.';
 $wb['traffic_quota_error_empty'] = 'Trafik kotası boş olamaz.';
-$wb['error_ssl_state_empty'] = 'SSL ÅŸehri boÅŸ olamaz.';
+$wb['error_ssl_state_empty'] = 'SSL ili boÅŸ olamaz.';
 $wb['error_ssl_locality_empty'] = 'SSL bölgesi boş olamaz.';
-$wb['error_ssl_organisation_empty'] = 'SSL kurumu boÅŸ olamaz.';
+$wb['error_ssl_organisation_empty'] = 'SSL kuruluÅŸu boÅŸ olamaz.';
 $wb['error_ssl_organisation_unit_empty'] = 'SSL birimi boÅŸ olamaz.';
 $wb['error_ssl_country_empty'] = 'SSL ülkesi boş olamaz.';
 $wb['error_ssl_cert_empty'] = 'SSL sertifikası alanı boş olamaz';
 $wb['client_group_id_txt'] = 'Müşteri';
-$wb['stats_password_txt'] = 'Web istatistikleri parolası';
+$wb['stats_password_txt'] = 'Web İstatistikleri Parolası';
 $wb['allow_override_txt'] = 'Apache AllowOverride';
 $wb['limit_web_quota_free_txt'] = 'Kullanılabilecek en fazla disk kotası';
-$wb['ssl_state_error_regex'] = 'SSL şehri geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ';
+$wb['ssl_state_error_regex'] = 'SSL ili geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ';
 $wb['ssl_locality_error_regex'] = 'SSL bölgesi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ';
-$wb['ssl_organisation_error_regex'] = 'SSL kurumu geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ';
-$wb['ssl_organistaion_unit_error_regex'] = 'SSL birimi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ';
+$wb['ssl_organisation_error_regex'] = 'SSL kuruluşu geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ';
+$wb['ssl_organistaion_unit_error_regex'] = 'SSL kuruluşu birimi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ';
 $wb['ssl_country_error_regex'] = 'SSL ülkesi geçersiz. Kullanılabilecek karakterler: A-Z';
 $wb['limit_traffic_quota_free_txt'] = 'Kullanılabilecek en fazla trafik kotası';
 $wb['redirect_error_regex'] = 'Yönlendirme yolu geçersiz. Geçerli örnekler: /test/ ya da http://www.domain.tld/test/';
 $wb['php_open_basedir_txt'] = 'PHP open_basedir';
 $wb['traffic_quota_exceeded_txt'] = 'Trafik kotası aşıldı';
 $wb['ruby_txt'] = 'Ruby';
-$wb['stats_user_txt'] = 'Web istatistikleri kullanıcı adı';
-$wb['stats_type_txt'] = 'Web istatistikleri yazılımı';
-$wb['custom_php_ini_txt'] = 'Özel php.ini ayarları';
+$wb['stats_user_txt'] = 'Web İstatistikleri Kullanıcı Adı';
+$wb['stats_type_txt'] = 'Web İstatistikleri Uygulaması';
+$wb['custom_php_ini_txt'] = 'Özel php.ini Ayarları';
 $wb['none_txt'] = 'Yok';
 $wb['disabled_txt'] = 'Devre Dışı';
 $wb['no_redirect_txt'] = 'Yönlendirme yok';
 $wb['no_flag_txt'] = 'Ä°ÅŸaret yok';
-$wb['save_certificate_txt'] = 'Sertifikayı kaydet';
-$wb['create_certificate_txt'] = 'Sertifika ekle';
-$wb['delete_certificate_txt'] = 'Sertifikayı sil';
+$wb['save_certificate_txt'] = 'Sertifikayı Kaydet';
+$wb['create_certificate_txt'] = 'Sertifika Ekle';
+$wb['delete_certificate_txt'] = 'Sertifikayı Sil';
 $wb['nginx_directives_txt'] = 'nginx Yönergeleri';
 $wb['seo_redirect_txt'] = 'AMD Yönlendirme';
 $wb['non_www_to_www_txt'] = 'Non-www -&gt; www';
 $wb['www_to_non_www_txt'] = 'www -&gt; non-www';
-$wb['php_fpm_use_socket_txt'] = 'PHP-FPM İçin Soket Kullanılsın';
-$wb['php_fpm_chroot_txt'] = 'Chroot PHP-FPM';
+$wb['php_fpm_use_socket_txt'] = 'PHP-FPM Soketi';
 $wb['error_no_sni_txt'] = 'Bu sunucuda SSL için SNI etkinleştirilmemiş. Bir IP adresi için yalnız bir SSL sertifikası etkinleştirebilirsiniz.';
 $wb['python_txt'] = 'Python';
 $wb['perl_txt'] = 'Perl';
@@ -103,15 +103,15 @@ $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
 $wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout değeri pozitif bir tamsayı olmalıdır.';
 $wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests değeri sıfır ya da pozitif bir tamsayı olmalıdır.';
 $wb['pm_ondemand_hint_txt'] = 'İsteğe bağlı işlem yöneticisini kullanabilmek için PHP Sürümünüz >= 5.3.9 olmalıdır. Daha önceki bir PHP sürümü için ondemand özelliğini seçerseniz, PHP başlatılamaz!';
-$wb['generate_password_txt'] = 'Parola OluÅŸtur';
+$wb['generate_password_txt'] = 'Parola Ãœret';
 $wb['repeat_password_txt'] = 'Parola Onayı';
 $wb['password_mismatch_txt'] = 'Parola ile onayı aynı değil.';
 $wb['password_match_txt'] = 'Parola ile onayı aynı.';
-$wb['available_php_directive_snippets_txt'] = 'Kullanılabilecek PHP Yönerge Parçaları:';
-$wb['available_apache_directive_snippets_txt'] = 'Kullanılabilecek Apache Yönerge Parçaları:';
-$wb['available_nginx_directive_snippets_txt'] = 'Kullanılabilecek nginx Yönerge Parçaları:';
+$wb['available_php_directive_snippets_txt'] = 'Kullanılabilecek PHP Yönerge Kod Parçaları:';
+$wb['available_apache_directive_snippets_txt'] = 'Kullanılabilecek Apache Yönerge Kod Parçaları:';
+$wb['available_nginx_directive_snippets_txt'] = 'Kullanılabilecek nginx Yönerge Kod Parçaları:';
 $wb['proxy_directives_txt'] = 'Vekil Sunucu Yönergeleri';
-$wb['available_proxy_directive_snippets_txt'] = 'Kullanılabilecek Vekil Sunucu Yönerge Parçaları:';
+$wb['available_proxy_directive_snippets_txt'] = 'Kullanılabilecek Vekil Sunucu Yönerge Kod Parçaları:';
 $wb['no_server_error'] = 'Bir sunucu seçmelisiniz.';
 $wb['no_backup_txt'] = 'Yedek alınmasın';
 $wb['daily_backup_txt'] = 'Günlük';
@@ -121,36 +121,39 @@ $wb['rewrite_rules_txt'] = 'Yeniden Yazma Kuralları';
 $wb['invalid_rewrite_rules_txt'] = 'Yeniden Yazma Kuralları Geçersiz';
 $wb['allowed_rewrite_rule_directives_txt'] = 'Kullanılabilecek Yönergeler:';
 $wb['configuration_error_txt'] = 'AYAR HATASI';
+$wb['server_chosen_not_ok'] = 'Seçilmiş sunucuda bu hesap kullanılamıyor.';
 $wb['variables_txt'] = 'DeÄŸiÅŸkenler';
 $wb['added_by_txt'] = 'Ekleyen';
-$wb['added_date_txt'] = 'EklendiÄŸi tarih';
+$wb['added_date_txt'] = 'Eklenme Tarihi';
 $wb['backup_excludes_txt'] = 'Katılmayacak Klasörler';
 $wb['backup_excludes_note_txt'] = '(Klasörleri virgül ile ayırarak yazın. Örnek: web/cache/*,web/backup)';
 $wb['backup_excludes_error_regex'] = 'Katılmayacak klasörlerde geçersiz karakterler bulunuyor.';
-$wb['server_chosen_not_ok'] = 'The selected server is not allowed for this account.';
-$wb['web_folder_txt'] = 'Web folder';
-$wb['web_folder_invalid_txt'] = 'The web folder is invalid, please choose a different one.';
-$wb['web_folder_unique_txt'] = 'The web folder is already used, please choose a different one.';
-$wb['host_txt'] = 'Hostname';
-$wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
-$wb['subdomain_error_empty'] = 'The subdommain field is empty or contains invalid characters.';
-$wb['btn_save_txt'] = 'Save';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['enable_spdy_txt'] = 'Enable SPDY/HTTP2';
-$wb['load_client_data_txt'] = 'Load client details';
-$wb['load_my_data_txt'] = 'Load my contact details';
-$wb['reset_client_data_txt'] = 'Reset data';
-$wb['ssl_letsencrypt_txt'] = 'Let\'s Encrypt SSL';
-$wb['rewrite_to_https_txt'] = 'Rewrite HTTP to HTTPS';
-$wb['password_strength_txt'] = 'Password strength';
-$wb['directive_snippets_id_txt'] = 'Web server config';
-$wb['http_port_txt'] = 'HTTP Port';
-$wb['https_port_txt'] = 'HTTPS Port';
-$wb['http_port_error_regex'] = 'HTTP Port invalid.';
-$wb['https_port_error_regex'] = 'HTTPS Port invalid.';
-$wb['enable_pagespeed_txt'] = 'Enable PageSpeed';
-$wb['log_retention_txt'] = 'Logfiles retention time';
-$wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)';
-$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.';
-$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
+$wb['web_folder_txt'] = 'Web klasörü';
+$wb['web_folder_invalid_txt'] = 'Web klasörü geçersiz, lütfen başka bir klasör seçin.';
+$wb['web_folder_unique_txt'] = 'Web klasörü zaten kullanılıyor, lütfen başka bir klasör seçin.';
+$wb['host_txt'] = 'Sunucu adı';
+$wb['domain_error_wildcard'] = 'Genel alt etki alanları kullanılamaz.';
+$wb['variables_txt'] = 'DeÄŸiÅŸkenler';
+$wb['backup_excludes_txt'] = 'Katılmayacak Klasörler';
+$wb['backup_excludes_note_txt'] = '(Klasörleri virgül ile ayırarak yazın. Örnek: web/cache/*,web/backup)';
+$wb['backup_excludes_error_regex'] = 'Katılmayacak klasörlerde geçersiz karakterler bulunuyor.';
+$wb['subdomain_error_empty'] = 'Alt etki alanı boş ya da geçersiz karakterler içeriyor.';
+$wb['btn_save_txt'] = 'Kaydet';
+$wb['btn_cancel_txt'] = 'Ä°ptal';
+$wb['enable_spdy_txt'] = 'SPDY kullanılsın';
+$wb['load_client_data_txt'] = 'Müşteri Bilgilerini Yükle';
+$wb['load_my_data_txt'] = 'Profil Bilgilerimi Yükle';
+$wb['reset_client_data_txt'] = 'Verileri Sıfırla';
+$wb['document_root_txt'] = 'Belge Kök Klasörü';
+$wb['ssl_letsencrypt_txt'] = 'Let';
+$wb['rewrite_to_https_txt'] = 'HTTP, HTTPS Yönlendirme';
+$wb['password_strength_txt'] = 'Parola ZorluÄŸu';
+$wb['directive_snippets_id_txt'] = 'Web Sunucu Yapılandırması';
+$wb['http_port_txt'] = 'HTTP Kapı Numarası';
+$wb['https_port_txt'] = 'HTTPS Kapı Numarası';
+$wb['http_port_error_regex'] = 'HTTP kapı numarası geçersiz.';
+$wb['https_port_error_regex'] = 'HTTPS kapı numarası geçersiz.';
+$wb['enable_pagespeed_txt'] = 'PageSpeed Kullanılsın';
+$wb['log_retention_txt'] = 'Günlük Dosyalarının Silinme Sıklığı';
+$wb['log_retention_error_regex'] = 'Gün cinsinden günlük dosyalarının silinme sıklığı (En küçük: 0 - En büyük: 9999)';
 ?>
diff --git a/interface/web/sites/lib/lang/tr_web_vhost_domain_admin_list.lng b/interface/web/sites/lib/lang/tr_web_vhost_domain_admin_list.lng
index 4f07fd8588..423e956234 100644
--- a/interface/web/sites/lib/lang/tr_web_vhost_domain_admin_list.lng
+++ b/interface/web/sites/lib/lang/tr_web_vhost_domain_admin_list.lng
@@ -1,14 +1,14 @@
 <?php
-$wb['sys_groupid_txt'] = 'Client';
-$wb['list_head_txt'] = 'Websites';
-$wb['domain_id_txt'] = 'ID';
-$wb['active_txt'] = 'Active';
-$wb['server_id_txt'] = 'Server';
-$wb['domain_txt'] = 'Domain';
-$wb['add_new_record_txt'] = 'Add new website';
-$wb['add_new_subdomain_txt'] = 'Add new subdomain';
-$wb['add_new_aliasdomain_txt'] = 'Add new aliasdomain';
-$wb['domain_list_head_txt'] = 'Websites';
-$wb['aliasdomain_list_head_txt'] = 'Aliasdomains (Vhost)';
-$wb['subdomain_list_head_txt'] = 'Subdomains (Vhost)';
+$wb['sys_groupid_txt'] = 'Müşteri';
+$wb['list_head_txt'] = 'Web Siteleri';
+$wb['domain_id_txt'] = 'Kod';
+$wb['active_txt'] = 'Etkin';
+$wb['server_id_txt'] = 'Sunucu';
+$wb['domain_txt'] = 'Etki Alanı';
+$wb['add_new_record_txt'] = 'Web Sitesi Ekle';
+$wb['add_new_subdomain_txt'] = 'Alt Etki Alanı Ekle';
+$wb['add_new_aliasdomain_txt'] = 'Takma Etki Alanı Ekle';
+$wb['domain_list_head_txt'] = 'Web Siteleri';
+$wb['aliasdomain_list_head_txt'] = 'Takma Etki Alanları (Sanal Sunucu)';
+$wb['subdomain_list_head_txt'] = 'Alt Etki Alanları (Sanal Sunucu)';
 ?>
diff --git a/interface/web/sites/lib/lang/tr_web_vhost_domain_list.lng b/interface/web/sites/lib/lang/tr_web_vhost_domain_list.lng
index b7df7ed9d0..061afec494 100644
--- a/interface/web/sites/lib/lang/tr_web_vhost_domain_list.lng
+++ b/interface/web/sites/lib/lang/tr_web_vhost_domain_list.lng
@@ -3,12 +3,12 @@ $wb['list_head_txt'] = 'Web Siteleri';
 $wb['domain_id_txt'] = 'Kod';
 $wb['active_txt'] = 'Etkin';
 $wb['server_id_txt'] = 'Sunucu';
-$wb['parent_domain_id_txt'] = 'Website';
-$wb['domain_txt'] = 'Alan Adı';
+$wb['domain_txt'] = 'Etki Alanı';
 $wb['add_new_record_txt'] = 'Web Sitesi Ekle';
-$wb['add_new_subdomain_txt'] = 'Add new subdomain';
-$wb['add_new_aliasdomain_txt'] = 'Add new aliasdomain';
-$wb['domain_list_head_txt'] = 'Websites';
-$wb['aliasdomain_list_head_txt'] = 'Aliasdomains (Vhost)';
-$wb['subdomain_list_head_txt'] = 'Subdomains (Vhost)';
+$wb['add_new_subdomain_txt'] = 'Alt Etki Alanı Ekle';
+$wb['add_new_aliasdomain_txt'] = 'Takma Etki Alanı Ekle';
+$wb['parent_domain_id_txt'] = 'Web Sitesi';
+$wb['domain_list_head_txt'] = 'Web Siteleri';
+$wb['aliasdomain_list_head_txt'] = 'Takma Etki Alanları (Sanal Sunucu)';
+$wb['subdomain_list_head_txt'] = 'Alt Etki Alanı Adları (Sanal Sunucu)';
 ?>
diff --git a/interface/web/sites/lib/lang/tr_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/tr_web_vhost_subdomain.lng
index 2bbcfb661c..a24883881f 100644
--- a/interface/web/sites/lib/lang/tr_web_vhost_subdomain.lng
+++ b/interface/web/sites/lib/lang/tr_web_vhost_subdomain.lng
@@ -7,7 +7,7 @@ $wb['backup_interval_txt'] = 'Yedekleme Sıklığı';
 $wb['backup_copies_txt'] = 'Yedek Kopyası Sayısı';
 $wb['ssl_state_txt'] = 'Ä°l';
 $wb['ssl_locality_txt'] = 'Bölge';
-$wb['ssl_organisation_txt'] = 'Kurum';
+$wb['ssl_organisation_txt'] = 'KuruluÅŸ';
 $wb['ssl_organisation_unit_txt'] = 'Birim';
 $wb['ssl_country_txt'] = 'Ãœlke';
 $wb['ssl_key_txt'] = 'SSL Anahtarı';
@@ -15,13 +15,14 @@ $wb['ssl_request_txt'] = 'SSL Ä°steÄŸi';
 $wb['ssl_cert_txt'] = 'SSL Sertifikası';
 $wb['ssl_bundle_txt'] = 'SSL Yığını';
 $wb['ssl_action_txt'] = 'SSL Ä°ÅŸlemi';
-$wb['ssl_domain_txt'] = 'SSL Alan Adı';
+$wb['ssl_domain_txt'] = 'SSL Etki Alanı';
 $wb['server_id_txt'] = 'Sunucu';
-$wb['domain_txt'] = 'Alan Adı';
+$wb['domain_txt'] = 'Etki Alanı';
 $wb['host_txt'] = 'Sunucu Adı';
 $wb['web_folder_error_regex'] = 'Yazılan klasör geçersiz. Lütfen / karakteri kullanmadan yazın.';
-$wb['type_txt'] = 'Tip';
-$wb['redirect_type_txt'] = 'Yönlendirme Tipi';
+$wb['type_txt'] = 'Tür';
+$wb['parent_domain_id_txt'] = 'Ãœst Web Sitesi';
+$wb['redirect_type_txt'] = 'Yönlendirme Türü';
 $wb['redirect_path_txt'] = 'Yönlendirme Yolu';
 $wb['active_txt'] = 'Etkin';
 $wb['document_root_txt'] = 'Kök Klasör';
@@ -29,30 +30,30 @@ $wb['system_user_txt'] = 'Linux Kullanıcısı';
 $wb['system_group_txt'] = 'Linux Grubu';
 $wb['ip_address_txt'] = 'IPv4 Adresi';
 $wb['ipv6_address_txt'] = 'IPv6 Adresi';
-$wb['vhost_type_txt'] = 'SSunucu Tipi';
+$wb['vhost_type_txt'] = 'Sanal Sunucu Türü';
 $wb['hd_quota_txt'] = 'Disk Kotası';
 $wb['traffic_quota_txt'] = 'Trafik Kotası';
 $wb['cgi_txt'] = 'CGI';
 $wb['ssi_txt'] = 'SSI';
 $wb['errordocs_txt'] = 'Özel Hata Sayfaları';
-$wb['subdomain_txt'] = 'Otomatik Alt Alan';
+$wb['subdomain_txt'] = 'Otomatik Alt Etki Alanı';
 $wb['ssl_txt'] = 'SSL';
 $wb['suexec_txt'] = 'SuEXEC';
 $wb['php_txt'] = 'PHP';
 $wb['client_txt'] = 'Müşteri';
-$wb['limit_web_domain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla alan adı sayısına ulaştınız.';
-$wb['limit_web_aliasdomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla başka alan adı sayısına ulaştınız.';
-$wb['limit_web_subdomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla alt alan adı sayısına ulaştınız.';
+$wb['limit_web_domain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla etki alanı sayısına ulaştınız.';
+$wb['limit_web_aliasdomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla takma etki alanı sayısına ulaştınız.';
+$wb['limit_web_subdomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla alt etki alanı sayısına ulaştınız.';
 $wb['apache_directives_txt'] = 'Apache Yönergeleri';
-$wb['domain_error_empty'] = 'Alan adı boş olamaz.';
-$wb['domain_error_unique'] = 'Aynı adlı bir web sitesi ya da alt/başka alan adı var.';
-$wb['domain_error_regex'] = 'Alan adı geçersiz.';
-$wb['domain_error_wildcard'] = 'Genel karakterler içeren alt alan adları kullanılamaz.';
+$wb['domain_error_empty'] = 'Etki alanı boş olamaz.';
+$wb['domain_error_unique'] = 'Aynı adlı bir web sitesi ya da alt/takma etki alanı var.';
+$wb['domain_error_regex'] = 'Etki alanı geçersiz.';
+$wb['domain_error_wildcard'] = 'Genel karakterler içeren alt etki alanları kullanılamaz.';
 $wb['hd_quota_error_empty'] = 'Disk kotası 0 ya da boş olamaz.';
 $wb['traffic_quota_error_empty'] = 'Trafik kotası boş olamaz.';
-$wb['error_ssl_state_empty'] = 'SSL ÅŸehri boÅŸ olamaz.';
+$wb['error_ssl_state_empty'] = 'SSL ili boÅŸ olamaz.';
 $wb['error_ssl_locality_empty'] = 'SSL bölgesi boş olamaz.';
-$wb['error_ssl_organisation_empty'] = 'SSL kurumu boÅŸ olamaz.';
+$wb['error_ssl_organisation_empty'] = 'SSL kuruluÅŸu boÅŸ olamaz.';
 $wb['error_ssl_organisation_unit_empty'] = 'SSL birimi boÅŸ olamaz.';
 $wb['error_ssl_country_empty'] = 'SSL ülkesi boş olamaz.';
 $wb['error_ssl_cert_empty'] = 'SSL sertifikası alanı boş olamaz';
@@ -60,31 +61,31 @@ $wb['client_group_id_txt'] = 'Müşteri';
 $wb['stats_password_txt'] = 'Web istatistikleri parolasını ayarla';
 $wb['allow_override_txt'] = 'Apache AllowOverride';
 $wb['limit_web_quota_free_txt'] = 'Kullanılabilecek en fazla disk kotası';
-$wb['ssl_state_error_regex'] = 'SSL şehri geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_';
-$wb['ssl_locality_error_regex'] = 'SSL bölgesi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_';
-$wb['ssl_organisation_error_regex'] = 'SSL kurumu geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_';
-$wb['ssl_organistaion_unit_error_regex'] = 'SSL birimi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_';
+$wb['ssl_state_error_regex'] = 'SSL ili geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ';
+$wb['ssl_locality_error_regex'] = 'SSL bölgesi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ';
+$wb['ssl_organisation_error_regex'] = 'SSL kuruluşu geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ';
+$wb['ssl_organistaion_unit_error_regex'] = 'SSL kuruluşu birimi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ';
 $wb['ssl_country_error_regex'] = 'SSL ülkesi geçersiz. Kullanılabilecek karakterler: A-Z';
 $wb['limit_traffic_quota_free_txt'] = 'Kullanılabilecek en fazla trafik kotası';
 $wb['redirect_error_regex'] = 'Yönlendirme yolu geçersiz. Geçerli örnekler: /test/ ya da http://www.domain.tld/test/';
 $wb['php_open_basedir_txt'] = 'PHP open_basedir';
 $wb['traffic_quota_exceeded_txt'] = 'Trafik kotası aşıldı';
 $wb['ruby_txt'] = 'Ruby';
-$wb['stats_user_txt'] = 'Web istatistikleri kullanıcı adı';
-$wb['stats_type_txt'] = 'Web istatistikleri yazılımı';
-$wb['custom_php_ini_txt'] = 'Özel php.ini ayarları';
+$wb['stats_user_txt'] = 'Web İstatistikleri Kullanıcı Adı';
+$wb['stats_type_txt'] = 'Web İstatistikleri Uygulaması';
+$wb['custom_php_ini_txt'] = 'Özel php.ini Ayarları';
 $wb['none_txt'] = 'Yok';
 $wb['disabled_txt'] = 'Devre Dışı';
 $wb['no_redirect_txt'] = 'Yönlendirme yok';
 $wb['no_flag_txt'] = 'Ä°ÅŸaret yok';
-$wb['save_certificate_txt'] = 'Sertifikayı kaydet';
-$wb['create_certificate_txt'] = 'Sertifika ekle';
-$wb['delete_certificate_txt'] = 'Sertifikayı sil';
+$wb['save_certificate_txt'] = 'Sertifikayı Kaydet';
+$wb['create_certificate_txt'] = 'Sertifika Ekle';
+$wb['delete_certificate_txt'] = 'Sertifikayı Sil';
 $wb['nginx_directives_txt'] = 'nginx Yönergeleri';
 $wb['seo_redirect_txt'] = 'AMD Yönlendirme';
 $wb['non_www_to_www_txt'] = 'Non-www -&gt; www';
 $wb['www_to_non_www_txt'] = 'www -&gt; non-www';
-$wb['php_fpm_use_socket_txt'] = 'PHP-FPM İçin Soket Kullanılsın';
+$wb['php_fpm_use_socket_txt'] = 'PHP-FPM Soketi';
 $wb['error_no_sni_txt'] = 'Bu sunucuda SSL için SNI etkinleştirilmemiş. Bir IP adresi için yalnız bir SSL sertifikası etkinleştirebilirsiniz.';
 $wb['python_txt'] = 'Python';
 $wb['perl_txt'] = 'Perl';
@@ -106,26 +107,26 @@ $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
 $wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout değeri pozitif bir tamsayı olmalıdır.';
 $wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests değeri sıfır ya da pozitif bir tamsayı olmalıdır.';
 $wb['pm_ondemand_hint_txt'] = 'İsteğe bağlı işlem yöneticisini kullanabilmek için PHP Sürümünüz >= 5.3.9 olmalıdır. Daha önceki bir PHP sürümü için ondemand özelliğini seçerseniz, PHP başlatılamaz!';
-$wb['generate_password_txt'] = 'Parola OluÅŸtur';
+$wb['generate_password_txt'] = 'Parola Ãœret';
 $wb['repeat_password_txt'] = 'Parola Onayı';
 $wb['password_mismatch_txt'] = 'Parola ile onayı aynı değil.';
 $wb['password_match_txt'] = 'Parola ile onayı aynı.';
-$wb['available_php_directive_snippets_txt'] = 'Kullanılabilecek PHP Yönerge Parçaları:';
-$wb['available_apache_directive_snippets_txt'] = 'Kullanılabilecek Apache Yönerge Parçaları:';
-$wb['available_nginx_directive_snippets_txt'] = 'Kullanılabilecek nginx Yönerge Parçaları:';
+$wb['available_php_directive_snippets_txt'] = 'Kullanılabilecek PHP Yönerge Kod Parçaları:';
+$wb['available_apache_directive_snippets_txt'] = 'Kullanılabilecek Apache Yönerge Kod Parçaları:';
+$wb['available_nginx_directive_snippets_txt'] = 'Kullanılabilecek nginx Yönerge Kod Parçaları:';
 $wb['proxy_directives_txt'] = 'Vekil Sunucu Yönergeleri';
-$wb['available_proxy_directive_snippets_txt'] = 'Kullanılabilecek Vekil Sunucu Yönerge Parçaları:';
+$wb['available_proxy_directive_snippets_txt'] = 'Kullanılabilecek Vekil Sunucu Yönerge Kod Parçaları:';
 $wb['rewrite_rules_txt'] = 'Yeniden Yazma Kuralları';
 $wb['invalid_rewrite_rules_txt'] = 'Yeniden Yazma Kuralları Geçersiz';
 $wb['allowed_rewrite_rule_directives_txt'] = 'Kullanılabilecek Yönergeler:';
-$wb['configuration_error_txt'] = 'CONFIGURATION ERROR';
+$wb['configuration_error_txt'] = 'YAPILANDIRMA HATASI';
 $wb['variables_txt'] = 'DeÄŸiÅŸkenler';
 $wb['backup_excludes_txt'] = 'Katılmayacak Klasörler';
 $wb['backup_excludes_note_txt'] = '(Klasörleri virgül ile ayırarak yazın. Örnek: web/cache/*,web/backup)';
 $wb['backup_excludes_error_regex'] = 'Katılmayacak klasörlerde geçersiz karakterler bulunuyor.';
-$wb['subdomain_error_empty'] = 'Alt alan adı boş ya da geçersiz karakterler içeriyor.';
-$wb['http_port_txt'] = 'HTTP Port';
-$wb['https_port_txt'] = 'HTTPS Port';
-$wb['http_port_error_regex'] = 'HTTP Port invalid.';
-$wb['https_port_error_regex'] = 'HTTPS Port invalid.';
+$wb['subdomain_error_empty'] = 'Alt etki alanı boş ya da geçersiz karakterler içeriyor.';
+$wb['http_port_txt'] = 'HTTP Kapı Numarası';
+$wb['https_port_txt'] = 'HTTPS Kapı Numarası';
+$wb['http_port_error_regex'] = 'HTTP kapı numarası geçersiz.';
+$wb['https_port_error_regex'] = 'HTTPS kapı numarası geçersiz.';
 ?>
diff --git a/interface/web/sites/lib/lang/tr_web_vhost_subdomain_list.lng b/interface/web/sites/lib/lang/tr_web_vhost_subdomain_list.lng
index bc7e7622c2..6527242e2d 100644
--- a/interface/web/sites/lib/lang/tr_web_vhost_subdomain_list.lng
+++ b/interface/web/sites/lib/lang/tr_web_vhost_subdomain_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['list_head_txt'] = 'Alt Alanlar';
+$wb['list_head_txt'] = 'Alt Etki Alanları';
 $wb['active_txt'] = 'Etkin';
 $wb['server_id_txt'] = 'Sunucu';
 $wb['parent_domain_id_txt'] = 'Web Sitesi';
-$wb['domain_txt'] = 'Alt Alan Adı';
-$wb['add_new_record_txt'] = 'Alt alan ekle';
+$wb['domain_txt'] = 'Alt Etki Alanı';
+$wb['add_new_record_txt'] = 'Alt Etki Alanı Ekle';
 ?>
diff --git a/interface/web/sites/lib/lang/tr_webdav_user.lng b/interface/web/sites/lib/lang/tr_webdav_user.lng
index e592f052c4..c80088da95 100644
--- a/interface/web/sites/lib/lang/tr_webdav_user.lng
+++ b/interface/web/sites/lib/lang/tr_webdav_user.lng
@@ -4,7 +4,7 @@ $wb['server_id_txt'] = 'Sunucu';
 $wb['parent_domain_id_txt'] = 'Web Sitesi';
 $wb['username_txt'] = 'Kullanıcı Adı';
 $wb['password_txt'] = 'Parola';
-$wb['password_strength_txt'] = 'Parola Güçlüğü';
+$wb['password_strength_txt'] = 'Parola ZorluÄŸu';
 $wb['active_txt'] = 'Etkin';
 $wb['limit_webdav_user_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla webdav kullanıcısı sayısına ulaştınız.';
 $wb['username_error_empty'] = 'Kullanıcı adı boş olamaz.';
@@ -14,7 +14,7 @@ $wb['directory_error_empty'] = 'Klasör boş olamaz.';
 $wb['parent_domain_id_error_empty'] = 'Bir web sitesi seçmelisiniz.';
 $wb['dir_dot_error'] = 'Yol içinde .. kullanılamaz.';
 $wb['dir_slashdot_error'] = 'Yol içinde ./ kullanılamaz.';
-$wb['generate_password_txt'] = 'Parola OluÅŸtur';
+$wb['generate_password_txt'] = 'Parola Ãœret';
 $wb['repeat_password_txt'] = 'Parola Onayı';
 $wb['password_mismatch_txt'] = 'Parola ile onayı aynı değil.';
 $wb['password_match_txt'] = 'Parola ile onayı aynı.';
diff --git a/interface/web/strengthmeter/lib/lang/br_strengthmeter.lng b/interface/web/strengthmeter/lib/lang/br_strengthmeter.lng
index 172646f212..2b2fb51f9a 100644
--- a/interface/web/strengthmeter/lib/lang/br_strengthmeter.lng
+++ b/interface/web/strengthmeter/lib/lang/br_strengthmeter.lng
@@ -2,7 +2,7 @@
 $wb['password_strength_0_txt'] = 'Muito curta';
 $wb['password_strength_1_txt'] = 'Fraca';
 $wb['password_strength_2_txt'] = 'Razoável';
-$wb['password_strength_3_txt'] = 'Bom';
+$wb['password_strength_3_txt'] = 'Boa';
 $wb['password_strength_4_txt'] = 'Forte';
-$wb['password_strength_5_txt'] = 'Muito Forte';
+$wb['password_strength_5_txt'] = 'Muito forte';
 ?>
diff --git a/interface/web/tools/lib/lang/br.lng b/interface/web/tools/lib/lang/br.lng
index 3000e972fc..1c11472165 100644
--- a/interface/web/tools/lib/lang/br.lng
+++ b/interface/web/tools/lib/lang/br.lng
@@ -1,13 +1,13 @@
 <?php
-$wb['User Settings'] = 'Configurações do usuário';
+$wb['User Settings'] = 'Configurações de usuários';
 $wb['Settings'] = 'Configurações';
 $wb['ISPConfig Tools'] = 'Ferramentas';
+$wb['Interface'] = 'Interface';
 $wb['Password and Language'] = 'Senha e Idioma';
-$wb['ispconfig_tools_note'] = 'Este módulo permite você alterar a senha e o idioma e sincronizar os registros dns.';
+$wb['ispconfig_tools_note'] = 'Este módulo permite alterar a senha e idioma e iniciar a sincronização de registros dns.';
+$wb['Sync Tools'] = 'Sincronização';
 $wb['Resync'] = 'Sincronizar';
-$wb['Sync Tools'] = 'Sincronismo';
 $wb['Import'] = 'Importar';
-$wb['ISPConfig 3 mail'] = 'ISPConfig 3';
-$wb['PDNS Tupa'] = 'Tupa PowerDNS';
-$wb['Interface'] = 'Interface';
+$wb['ISPConfig 3 mail'] = 'e-Mails do ISPConfig';
+$wb['PDNS Tupa'] = 'PowerDNS';
 ?>
diff --git a/interface/web/tools/lib/lang/br_import_ispconfig.lng b/interface/web/tools/lib/lang/br_import_ispconfig.lng
index 8124d13f10..d77242b483 100644
--- a/interface/web/tools/lib/lang/br_import_ispconfig.lng
+++ b/interface/web/tools/lib/lang/br_import_ispconfig.lng
@@ -1,23 +1,23 @@
 <?php
 $wb['head_txt'] = 'Importar configuração de e-mail do ISPConfig 3';
-$wb['legend_txt'] = 'Detalhes da conexão do servidor remoto';
-$wb['legend2_txt'] = 'Importar domínio de e-mails';
+$wb['legend_txt'] = 'Detalhes da conexão remota do servidor';
+$wb['legend2_txt'] = 'Importar domínio de e-mail';
 $wb['resync_sites_txt'] = 'Sincronizar sites';
 $wb['resync_ftp_txt'] = 'Sincronizar usuários ftp';
-$wb['resync_shell_txt'] = 'Sincronizar usuários shell';
-$wb['resync_cron_txt'] = 'Sincronizar tarefas na cron';
-$wb['resync_db_txt'] = 'Sincronizar configurações de usuários do banco de dados';
-$wb['resync_mailbox_txt'] = 'Sincronizar e-mails';
+$wb['resync_shell_txt'] = 'Sincronizar usuários do shell';
+$wb['resync_cron_txt'] = 'Sincronizar tarefas no cron';
+$wb['resync_db_txt'] = 'Sincronizar configurações do cliente de banco de dados';
+$wb['resync_mailbox_txt'] = 'Sincronizar contas de e-mail';
 $wb['resync_dns_txt'] = 'Sincronizar registros dns';
 $wb['btn_start_txt'] = 'Iniciar importação';
-$wb['btn_connect_txt'] = 'Conectar no servidor remoto';
+$wb['btn_connect_txt'] = 'Conectar ao servidor remoto';
 $wb['btn_cancel_txt'] = 'Cancelar';
 $wb['client_group_id_txt'] = 'Cliente local';
-$wb['mail_domain_txt'] = 'Domínio de e-mails remoto';
-$wb['import_mailbox_txt'] = 'Importar e-mails';
-$wb['import_aliasdomain_txt'] = 'Importar apelidos de domínio';
-$wb['import_alias_txt'] = 'Importar apelidos de e-mails';
-$wb['import_forward_txt'] = 'Importar encaminhamentos de e-mails';
-$wb['import_user_filter_txt'] = 'Importar filtros de e-mail de usuários';
+$wb['mail_domain_txt'] = 'Domínio de e-mail remoto';
+$wb['import_mailbox_txt'] = 'Importar contas de e-mail';
+$wb['import_aliasdomain_txt'] = 'Importar alias de domínios';
+$wb['import_alias_txt'] = 'Importar alias de e-mail';
+$wb['import_forward_txt'] = 'Importar encaminhamentos de e-mail';
+$wb['import_user_filter_txt'] = 'Importar filtros de e-mail';
 $wb['import_spamfilter_txt'] = 'Importar filtros anti-spam';
 ?>
diff --git a/interface/web/tools/lib/lang/br_import_vpopmail.lng b/interface/web/tools/lib/lang/br_import_vpopmail.lng
index 55bc0bf238..c18b0b6810 100644
--- a/interface/web/tools/lib/lang/br_import_vpopmail.lng
+++ b/interface/web/tools/lib/lang/br_import_vpopmail.lng
@@ -1,7 +1,8 @@
 <?php
-$wb['head_txt'] = 'Importar configuração de e-mail do vpopmail';
-$wb['legend_txt'] = 'Detalhes da conexão do servidor de banco de dados remoto';
-$wb['btn_start_txt'] = 'Iniciar importação';
-$wb['btn_connect_txt'] = 'Conectar servidor remoto';
+$wb['head_txt'] = 'Importar configurações de e-mail do vpopmail';
+$wb['legend_txt'] = 'Detalhes da conexão remota do servidor de banco de dados';
+$wb['btn_start_txt'] = 'Iniciar Importação';
+$wb['btn_connect_txt'] = 'Conectar ao servidor remoto';
 $wb['btn_cancel_txt'] = 'Cancelar';
+
 ?>
diff --git a/interface/web/tools/lib/lang/br_index.lng b/interface/web/tools/lib/lang/br_index.lng
index 437e1f01c3..bbb7085209 100644
--- a/interface/web/tools/lib/lang/br_index.lng
+++ b/interface/web/tools/lib/lang/br_index.lng
@@ -1,4 +1,4 @@
 <?php
-$wb['page_head_txt'] = 'Ferramentas';
+$wb['page_head_txt'] = 'Ferramentas do ISPConfig';
 $wb['page_desc_txt'] = 'Alterar configurações de usuário';
 ?>
diff --git a/interface/web/tools/lib/lang/br_interface.lng b/interface/web/tools/lib/lang/br_interface.lng
index 45341060c5..95677c4b59 100644
--- a/interface/web/tools/lib/lang/br_interface.lng
+++ b/interface/web/tools/lib/lang/br_interface.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['interface_head_txt'] = 'Configurações da interface';
-$wb['interface_desc_txt'] = 'Alterar interface';
+$wb['interface_head_txt'] = 'Configurações da Interface';
+$wb['interface_desc_txt'] = 'Alterar a interface';
 $wb['language_txt'] = 'Idioma';
-$wb['startmodule_txt'] = 'Módulo inicial';
+$wb['startmodule_txt'] = 'Módulo Inicial';
 $wb['app_theme_txt'] = 'Tema';
 ?>
diff --git a/interface/web/tools/lib/lang/br_resync.lng b/interface/web/tools/lib/lang/br_resync.lng
index bf854b33b3..160a35dd0c 100644
--- a/interface/web/tools/lib/lang/br_resync.lng
+++ b/interface/web/tools/lib/lang/br_resync.lng
@@ -1,53 +1,53 @@
 <?php
-$wb['head_txt'] = 'Sincronismo';
-$wb['legend_txt'] = 'Sincronizar';
+$wb['head_txt'] = 'Ferramentas de Sincronização';
+$wb['legend_txt'] = 'Sincronização';
 $wb['resync_all_txt'] = 'Todos os serviços';
 $wb['resync_sites_txt'] = 'Sites';
-$wb['resync_ftp_txt'] = 'Contas ftp';
+$wb['resync_ftp_txt'] = 'Contas FTP';
 $wb['resync_webdav_txt'] = 'Usuários webdav';
-$wb['resync_shell_txt'] = 'Usuários shell';
+$wb['resync_shell_txt'] = 'Usuários do shell';
 $wb['resync_cron_txt'] = 'Tarefas no cron';
-$wb['resync_db_txt'] = 'Configurações de banco de dados de clientes';
-$wb['resync_mailbox_txt'] = 'e-mails';
-$wb['resync_mail_txt'] = 'Domínio de e-mails';
+$wb['resync_db_txt'] = 'Configurações do banco de dados de clientes';
+$wb['resync_mailbox_txt'] = 'Contas de e-mail';
+$wb['resync_mail_txt'] = 'Domínios de e-mail';
 $wb['resync_mailfilter_txt'] = 'Filtros de e-mail';
 $wb['resync_mailinglist_txt'] = 'Listas de e-mail';
 $wb['resync_dns_txt'] = 'Registros dns';
-$wb['resync_vserver_txt'] = 'Servidores virtuais';
+$wb['resync_vserver_txt'] = 'Máquinas virtuais';
 $wb['resync_client_txt'] = 'Clientes e revendas';
 $wb['all_active_txt'] = 'Todos os servidores ativos';
 $wb['all_active_mail_txt'] = 'Todos os servidores de e-mail ativos';
 $wb['all_active_web_txt'] = 'Todos os servidores web ativos';
 $wb['all_active_dns_txt'] = 'Todos os servidores dns ativos';
-$wb['all_active_file_txt'] = 'Todos servidores ftp ativos';
+$wb['all_active_file_txt'] = 'Todos os servidores ftp ativos';
 $wb['all_active_db_txt'] = 'Todos os servidores de banco de dados ativos';
-$wb['all_active_vserver_txt'] = 'Todos servidores virtuais ativos';
-$wb['do_sites_txt'] = 'Sites sincronizados';
-$wb['do_ftp_txt'] = 'Usuários ftp sincronizados';
-$wb['do_webdav_txt'] = 'Usuários webdav sincronizados';
-$wb['do_shell_txt'] = 'Usuários shell sincronizados';
-$wb['do_cron_txt'] = 'Tarefas no cron sincronizadas';
-$wb['do_db_user_txt'] = 'Usuários de banco de dados sincronizados';
-$wb['do_db_txt'] = 'Banco de dados sincronizados';
-$wb['do_mail_txt'] = 'Domínio de e-mails sincronizados';
-$wb['do_mailbox_txt'] = 'Contas de e-mail sincronizadas';
-$wb['do_mail_alias_txt'] = 'Apelidos de e-mail sincronizados';
-$wb['do_mail_access_txt'] = 'Usuários remotos de e-mail sincronizados';
-$wb['do_mail_contentfilter_txt'] = 'Filtros de e-mail sincronizados';
-$wb['do_mail_userfilter_txt'] = 'Filtros de e-mail de usuários sincronizados';
-$wb['do_mailinglist_txt'] = 'Listas de e-mail sincronizadas';
-$wb['do_dns_txt'] = 'Zonas dns sincronizadas';
-$wb['do_vserver_txt'] = 'Servidores virtuais sincronizados';
-$wb['do_clients_txt'] = 'Clientes e revendas sincronizados';
-$wb['no_results_txt'] = 'Não encontrado';
+$wb['all_active_vserver_txt'] = 'Todos as máquinas virtuais ativas';
+$wb['do_sites_txt'] = 'Sites sincronizados.';
+$wb['do_ftp_txt'] = 'Usuários ftp sincronizados.';
+$wb['do_webdav_txt'] = 'Usuários webdav sincronizados.';
+$wb['do_shell_txt'] = 'Usuários do shell sincronizados.';
+$wb['do_cron_txt'] = 'Tarefas no cron sincronizadas.';
+$wb['do_db_user_txt'] = 'Usuários do banco de dados sincronizados.';
+$wb['do_db_txt'] = 'Banco de dados sincronizados.';
+$wb['do_mail_txt'] = 'Domínios de e-mal sincronizados.';
+$wb['do_mailbox_txt'] = 'Contas de e-mail sincronizadas.';
+$wb['do_mail_alias_txt'] = 'Alias de domínios de e-mail sincronizados.';
+$wb['do_mail_access_txt'] = 'Acessos de e-mail sincronizados.';
+$wb['do_mail_contentfilter_txt'] = 'Filtros de conteúdo de e-mail sincronizados.';
+$wb['do_mail_userfilter_txt'] = 'Filtros de e-mail sincronizados.';
+$wb['do_mailinglist_txt'] = 'Listas de e-mail sincronizadas.';
+$wb['do_dns_txt'] = 'Zonas DNS sincronizadas.';
+$wb['do_vserver_txt'] = 'Máquinas virtuais sincronizados.';
+$wb['do_clients_txt'] = 'Clientes e revendas sincronizados.';
+$wb['no_results_txt'] = 'Nada foi encontrado.';
 $wb['btn_start_txt'] = 'Iniciar';
 $wb['btn_cancel_txt'] = 'Cancelar';
-$wb['do_mail_spamfilter_policy_txt'] = 'Políticas anti-spam sincronizadas';
-$wb['do_mail_spamfilter_txt'] = 'Filtros anti-spam sincronizados';
-$wb['do_mailget_txt'] = 'Contas de busca de e-mail sincronizadas';
-$wb['resync_mailget_txt'] = 'Contas de busca de e-mails';
-$wb['resync_mailtransport_txt'] = 'E-Mail Transport';
-$wb['resync_mailrelay_txt'] = 'E-Mail Relay';
-$wb['do_mailtransport_txt'] = 'Resynced Mailtransport';
-$wb['do_mailrelay_txt'] = 'Resynced Mailrelay';
+$wb['do_mail_spamfilter_policy_txt'] = 'Sincronizar políticas anti-spam';
+$wb['do_mail_spamfilter_txt'] = 'Políticas anti-spam sincronizadas.';
+$wb['do_mailget_txt'] = 'Contas de busca sincronizadas.';
+$wb['resync_mailget_txt'] = 'Sincronizar contas de busca.';
+$wb['resync_mailtransport_txt'] = 'Sincronizar transportes de e-mail';
+$wb['resync_mailrelay_txt'] = 'Sincronizar retransmissão de e-mail';
+$wb['do_mailtransport_txt'] = 'Transportes de e-mail sincronizados.';
+$wb['do_mailrelay_txt'] = 'Retransmissões de e-mail sincronizados.';
 ?>
diff --git a/interface/web/tools/lib/lang/br_tpl_default.lng b/interface/web/tools/lib/lang/br_tpl_default.lng
index 1e09eea22c..30ae32b17a 100644
--- a/interface/web/tools/lib/lang/br_tpl_default.lng
+++ b/interface/web/tools/lib/lang/br_tpl_default.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['list_head_txt'] = 'Configurações do tema padrão';
+$wb['list_head_txt'] = 'Configuração padrão de temas';
 $wb['list_desc_txt'] = 'Alterar opções específicas do tema padrão';
-$wb['no_settings_txt'] = 'Não existem configurações para o tema padrão.';
+$wb['no_settings_txt'] = 'Não existe configurações para o tema padrão.';
 $wb['btn_start_txt'] = 'Salvar';
 $wb['btn_cancel_txt'] = 'Voltar';
 ?>
diff --git a/interface/web/tools/lib/lang/br_usersettings.lng b/interface/web/tools/lib/lang/br_usersettings.lng
index 8fccd26852..cb3ae2dc4f 100644
--- a/interface/web/tools/lib/lang/br_usersettings.lng
+++ b/interface/web/tools/lib/lang/br_usersettings.lng
@@ -2,11 +2,11 @@
 $wb['password_txt'] = 'Senha';
 $wb['password_strength_txt'] = 'Dificuldade da senha';
 $wb['language_txt'] = 'Idioma';
-$wb['password_mismatch'] = 'As senhas não coincidem';
-$wb['Form to edit the user password and language.'] = 'Alterar idioma e senha';
+$wb['password_mismatch'] = 'A senha e confirmação da senha não coincidem.';
+$wb['Form to edit the user password and language.'] = 'Editar senha e idioma do usuário';
 $wb['Settings'] = 'Configurações';
-$wb['generate_password_txt'] = 'Gerar senha';
-$wb['repeat_password_txt'] = 'Repetir senha';
-$wb['password_mismatch_txt'] = 'A senhas não coincidem.';
-$wb['password_match_txt'] = 'A senhas coincidem.';
+$wb['generate_password_txt'] = 'Gerar Senha';
+$wb['repeat_password_txt'] = 'Repetir Senha';
+$wb['password_mismatch_txt'] = 'As senhas não coincidem.';
+$wb['password_match_txt'] = 'As senhas coincidem.';
 ?>
diff --git a/interface/web/tools/lib/lang/tr.lng b/interface/web/tools/lib/lang/tr.lng
index 5782a862cf..6115b8a7a3 100644
--- a/interface/web/tools/lib/lang/tr.lng
+++ b/interface/web/tools/lib/lang/tr.lng
@@ -4,10 +4,10 @@ $wb['Settings'] = 'Ayarlar';
 $wb['ISPConfig Tools'] = 'ISPConfig Araçları';
 $wb['Interface'] = 'Arayüz';
 $wb['Password and Language'] = 'Parola ve Dil';
-$wb['ispconfig_tools_note'] = 'Bu modül parola ve dilin değiştirilmesini sağlayarak DNS kayıtları eşleştirmesini başlatır.';
-$wb['Sync Tools'] = 'Eşleştirme Araçları';
-$wb['Resync'] = 'EÅŸleÅŸtirme';
-$wb['Import'] = 'Al';
-$wb['ISPConfig 3 mail'] = 'ISPConfig 3 postası';
+$wb['ispconfig_tools_note'] = 'Bu modül parola ve dilin değiştirilmesini sağlayarak DNS kayıtları eşitlemesini başlatır.';
+$wb['Sync Tools'] = 'Eşitleme Araçları';
+$wb['Resync'] = 'EÅŸitleme';
+$wb['Import'] = 'İçe Aktar';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 E-postaları';
 $wb['PDNS Tupa'] = 'PowerDNS Tupa Yöneticisi';
 ?>
diff --git a/interface/web/tools/lib/lang/tr_import_ispconfig.lng b/interface/web/tools/lib/lang/tr_import_ispconfig.lng
index 7aec6bd470..67c98edbe7 100644
--- a/interface/web/tools/lib/lang/tr_import_ispconfig.lng
+++ b/interface/web/tools/lib/lang/tr_import_ispconfig.lng
@@ -1,23 +1,24 @@
 <?php
-$wb['head_txt'] = 'ISPConfig 3 E-posta Ayarları Alma';
-$wb['legend_txt'] = 'Uzak sunucu bağlantı bilgileri';
-$wb['legend2_txt'] = 'E-posta alan adı alınsın';
-$wb['resync_sites_txt'] = 'Web siteleri eÅŸleÅŸtirilsin';
-$wb['resync_ftp_txt'] = 'FTP kullanıcıları eşleştirilsin';
-$wb['resync_shell_txt'] = 'Kabuk kullanıcıları eşleştirilsin';
-$wb['resync_cron_txt'] = 'Zamanlanmış görevler eşleştirilsin';
-$wb['resync_db_txt'] = 'Müşteri veritabanı ayarları eşleştirilsin';
-$wb['resync_mailbox_txt'] = 'Posta kutuları eşleştirilsin';
-$wb['resync_dns_txt'] = 'DNS kayıtları eşleştirilsin';
-$wb['btn_start_txt'] = 'Almayı Başlat';
+$wb['head_txt'] = 'ISPConfig 3 E-posta Ayarlarını İçe Aktarma';
+$wb['legend_txt'] = 'Uzak Sunucu Bağlantı Bilgileri';
+$wb['legend2_txt'] = 'E-posta etki alanı içe aktarılsın';
+$wb['resync_sites_txt'] = 'Web Siteleri EÅŸitlensin';
+$wb['resync_ftp_txt'] = 'FTP Kullanıcıları Eşitlensin';
+$wb['resync_shell_txt'] = 'Kabuk Kullanıcıları Eşitlensin';
+$wb['resync_cron_txt'] = 'Zamanlanmış Görevler Eşitlensin';
+$wb['resync_db_txt'] = 'Müşteri Veritabanı Ayarları Eşitlensin';
+$wb['resync_mailbox_txt'] = 'E-posta Kutuları Eşitlensin';
+$wb['resync_dns_txt'] = 'DNS Kayıtları Eşitlensin';
+$wb['btn_start_txt'] = 'İçe Aktarmayı Başlat';
 $wb['btn_connect_txt'] = 'Uzak Sunucuya BaÄŸlan';
 $wb['btn_cancel_txt'] = 'Geri';
 $wb['client_group_id_txt'] = 'Yerel Müşteri';
-$wb['mail_domain_txt'] = 'Uzak e-posta alan adı';
-$wb['import_mailbox_txt'] = 'Posta kutusunu al';
-$wb['import_aliasdomain_txt'] = 'Takma alan adını al';
-$wb['import_alias_txt'] = 'Takma e-postayı al';
-$wb['import_forward_txt'] = 'Yönlendirmeyi al';
-$wb['import_user_filter_txt'] = 'Kullanıcı süzgecini al';
-$wb['import_spamfilter_txt'] = 'Önemsiz posta süzgecini al';
+$wb['mail_domain_txt'] = 'Uzak E-posta Etki Alanı';
+$wb['import_mailbox_txt'] = 'E-posta Kutusu İçe Aktarılsın';
+$wb['import_aliasdomain_txt'] = 'Takma Etki Alanı İçe Aktarılsın';
+$wb['import_alias_txt'] = 'Takma E-posta İçe Aktarılsın';
+$wb['import_forward_txt'] = 'Yönlendirme İçe Aktarılsın';
+$wb['import_user_filter_txt'] = 'Kullanıcı Süzgeci İçe Aktarılsın';
+$wb['import_spamfilter_txt'] = 'Önemsiz İleti Süzgeci İçe Aktarılsın';
+
 ?>
diff --git a/interface/web/tools/lib/lang/tr_import_vpopmail.lng b/interface/web/tools/lib/lang/tr_import_vpopmail.lng
index 66fe56da1c..f0c05ea741 100644
--- a/interface/web/tools/lib/lang/tr_import_vpopmail.lng
+++ b/interface/web/tools/lib/lang/tr_import_vpopmail.lng
@@ -1,7 +1,8 @@
 <?php
-$wb['head_txt'] = 'Import email configuration from Vpopmail';
-$wb['legend_txt'] = 'Remote database server connection details';
-$wb['btn_start_txt'] = 'Start Import';
-$wb['btn_connect_txt'] = 'Connect to remote server';
-$wb['btn_cancel_txt'] = 'Cancel';
+$wb['head_txt'] = 'Vpopmail e-posta yapılandırmasını içe aktar';
+$wb['legend_txt'] = 'Uzak veritabanı sunucusu bağlantı bilgileri';
+$wb['btn_start_txt'] = 'İçe Aktarmayı Başlat';
+$wb['btn_connect_txt'] = 'Uzak Sunucuya BaÄŸlan';
+$wb['btn_cancel_txt'] = 'Ä°ptal';
+
 ?>
diff --git a/interface/web/tools/lib/lang/tr_index.lng b/interface/web/tools/lib/lang/tr_index.lng
index d8ea10cf55..6d9a6c361c 100644
--- a/interface/web/tools/lib/lang/tr_index.lng
+++ b/interface/web/tools/lib/lang/tr_index.lng
@@ -1,4 +1,4 @@
 <?php
 $wb['page_head_txt'] = 'ISPConfig Araçları';
-$wb['page_desc_txt'] = 'Kullanıcı ayarlarını değiştirme';
+$wb['page_desc_txt'] = 'Kullanıcı Ayarlarını Değiştirme';
 ?>
diff --git a/interface/web/tools/lib/lang/tr_interface.lng b/interface/web/tools/lib/lang/tr_interface.lng
index 2ff88a976e..2384c71107 100644
--- a/interface/web/tools/lib/lang/tr_interface.lng
+++ b/interface/web/tools/lib/lang/tr_interface.lng
@@ -1,6 +1,6 @@
 <?php
 $wb['interface_head_txt'] = 'Arayüz Ayarları';
-$wb['interface_desc_txt'] = 'Arayüzü düzenleyin';
+$wb['interface_desc_txt'] = 'Arayüzü Düzenle';
 $wb['language_txt'] = 'Dil';
 $wb['startmodule_txt'] = 'Başlangıç modülü';
 $wb['app_theme_txt'] = 'Tasarım';
diff --git a/interface/web/tools/lib/lang/tr_resync.lng b/interface/web/tools/lib/lang/tr_resync.lng
index 71ebb0dda2..7cdfa91b9e 100644
--- a/interface/web/tools/lib/lang/tr_resync.lng
+++ b/interface/web/tools/lib/lang/tr_resync.lng
@@ -1,53 +1,53 @@
 <?php
-$wb['head_txt'] = 'Eşleştirme Aracı';
-$wb['legend_txt'] = 'EÅŸleÅŸtirme';
-$wb['resync_sites_txt'] = 'Web siteleri eÅŸleÅŸtirilsin';
-$wb['resync_ftp_txt'] = 'FTP kullanıcıları eşleştirilsin';
-$wb['resync_shell_txt'] = 'Kabuk kullanıcıları eşleştirilsin';
-$wb['resync_cron_txt'] = 'Zamanlanmış görevler eşleştirilsin';
-$wb['resync_db_txt'] = 'Müşteri veritabanı ayarları eşleştirilsin';
-$wb['resync_mailbox_txt'] = 'Posta kutuları eşleştirilsin';
-$wb['resync_dns_txt'] = 'DNS kayıtları eşleştirilsin';
-$wb['resync_client_txt'] = 'Müşteri kayıtları eşleştirilsin';
-$wb['btn_start_txt'] = 'EÅŸleÅŸtir';
+$wb['head_txt'] = 'Eşitleme Aracı';
+$wb['legend_txt'] = 'EÅŸitleme';
+$wb['resync_all_txt'] = 'Tüm Hizmetler';
+$wb['resync_sites_txt'] = 'Web Siteleri EÅŸitlensin';
+$wb['resync_ftp_txt'] = 'FTP Kullanıcıları Eşitlensin';
+$wb['resync_webdav_txt'] = 'WebDAV Kullanıcıları';
+$wb['resync_shell_txt'] = 'Kabuk Kullanıcıları Eşitlensin';
+$wb['resync_cron_txt'] = 'Zamanlanmış Görevler Eşitlensin';
+$wb['resync_db_txt'] = 'Müşteri Veritabanı Ayarları Eşitlensin';
+$wb['resync_mailbox_txt'] = 'E-posta Kutuları Eşitlensin';
+$wb['resync_mail_txt'] = 'E-posta Etki Alanları';
+$wb['resync_mailfilter_txt'] = 'E-posta Süzgeci';
+$wb['resync_mailinglist_txt'] = 'E-posta Listesi';
+$wb['resync_dns_txt'] = 'DNS Kayıtları Eşitlensin';
+$wb['resync_vserver_txt'] = 'sSunucu';
+$wb['resync_client_txt'] = 'Müşteri Kayıtları Eşitlensin';
+$wb['all_active_txt'] = 'Tüm Etkin Sunucular';
+$wb['all_active_mail_txt'] = 'Tüm Etkin E-posta Sunucuları';
+$wb['all_active_web_txt'] = 'Tüm Etkin Web Sunucuları';
+$wb['all_active_dns_txt'] = 'Tüm Etkin DNS Sunucuları';
+$wb['all_active_file_txt'] = 'Tüm Etkin Dosya Sunucuları';
+$wb['all_active_db_txt'] = 'Tüm Etkin Veritabanı Sunucuları';
+$wb['all_active_vserver_txt'] = 'Tüm Etkin Sanal Sunucular';
+$wb['do_sites_txt'] = 'EÅŸitlenen Web Sitesi';
+$wb['do_ftp_txt'] = 'Eşitlenen FTP Kullanıcısı';
+$wb['do_webdav_txt'] = 'Eşitlenen WebDav Kullanıcısı';
+$wb['do_shell_txt'] = 'Eşitlenen Kabuk Kullanıcısı';
+$wb['do_cron_txt'] = 'Eşitlenen Zamanlanmış Görev';
+$wb['do_db_user_txt'] = 'Eşitlenen Veritabanı Kullanıcısı';
+$wb['do_db_txt'] = 'Eşitlenen Veritabanı';
+$wb['do_mail_txt'] = 'Eşitlenen E-posta Etki Alanı';
+$wb['do_mailbox_txt'] = 'EÅŸitlenen E-posta Kutusu';
+$wb['do_mail_alias_txt'] = 'EÅŸitlenen Takma Ad';
+$wb['do_mail_access_txt'] = 'EÅŸitlenen E-posta EriÅŸimi';
+$wb['do_mail_contentfilter_txt'] = 'Eşitlenen İçerik Süzgeci';
+$wb['do_mail_userfilter_txt'] = 'Eşitlenen E-posta Kullanıcı Süzgeci';
+$wb['do_mailinglist_txt'] = 'EÅŸitlenen E-posta Listesi';
+$wb['do_dns_txt'] = 'Eşitlenen DNS Bölgesi';
+$wb['do_vserver_txt'] = 'EÅŸitlenen Sanal Sunucu';
+$wb['do_clients_txt'] = 'Eşitlenen Müşteri ve Bayiler';
+$wb['no_results_txt'] = 'Herhangi bir şey bulunamadı';
+$wb['btn_start_txt'] = 'EÅŸitle';
 $wb['btn_cancel_txt'] = 'Geri';
-$wb['resync_all_txt'] = 'All services';
-$wb['resync_webdav_txt'] = 'WebDAV-Users';
-$wb['resync_mail_txt'] = 'Maildomains';
-$wb['resync_mailfilter_txt'] = 'Mailfilter';
-$wb['resync_mailinglist_txt'] = 'Mailinglist';
-$wb['resync_vserver_txt'] = 'vServer';
-$wb['all_active_txt'] = 'All active server';
-$wb['all_active_mail_txt'] = 'All active Mail-Server';
-$wb['all_active_web_txt'] = 'All active Web-Server';
-$wb['all_active_dns_txt'] = 'All active DNS-Server';
-$wb['all_active_file_txt'] = 'All active File-Server';
-$wb['all_active_db_txt'] = 'All active Database-Server';
-$wb['all_active_vserver_txt'] = 'All active vServer';
-$wb['do_sites_txt'] = 'Resynced Website';
-$wb['do_ftp_txt'] = 'Resynced FTP user';
-$wb['do_webdav_txt'] = 'Resynced WebDav user';
-$wb['do_shell_txt'] = 'Resynced Shell user';
-$wb['do_cron_txt'] = 'Resynced Cronjob';
-$wb['do_db_user_txt'] = 'Resynced Database User';
-$wb['do_db_txt'] = 'Resynced Database';
-$wb['do_mail_txt'] = 'Resynced Maildomain';
-$wb['do_mailbox_txt'] = 'Resynced Mailbox';
-$wb['do_mail_alias_txt'] = 'Resynced Alias';
-$wb['do_mail_access_txt'] = 'Resynced Mail access';
-$wb['do_mail_contentfilter_txt'] = 'Resynced Content Filter';
-$wb['do_mail_userfilter_txt'] = 'Resynced Mail User Filter';
-$wb['do_mailinglist_txt'] = 'Resynced Mailinglist';
-$wb['do_dns_txt'] = 'Resynced DNS zone';
-$wb['do_vserver_txt'] = 'Resynced vServer';
-$wb['do_clients_txt'] = 'Resynced clients and reseller';
-$wb['no_results_txt'] = 'Nothing found';
-$wb['do_mail_spamfilter_policy_txt'] = 'Resynced Spamfilter Policies';
-$wb['do_mail_spamfilter_txt'] = 'Resynced Spamfilter';
-$wb['do_mailget_txt'] = 'Resynced Fetchmail';
+$wb['do_mail_spamfilter_policy_txt'] = 'Eşitlenen Önemsiz İleti Süzgeci İlkeleri';
+$wb['do_mail_spamfilter_txt'] = 'Eşitlenen Önemsiz İleti Süzgeci';
+$wb['do_mailget_txt'] = 'EÅŸitlenen Fetchmail';
 $wb['resync_mailget_txt'] = 'Fetchmail';
-$wb['resync_mailtransport_txt'] = 'E-Mail Transport';
-$wb['resync_mailrelay_txt'] = 'E-Mail Relay';
-$wb['do_mailtransport_txt'] = 'Resynced Mailtransport';
-$wb['do_mailrelay_txt'] = 'Resynced Mailrelay';
+$wb['resync_mailtransport_txt'] = 'E-posta Gönderici';
+$wb['resync_mailrelay_txt'] = 'E-posta Aktarıcı';
+$wb['do_mailtransport_txt'] = 'E-posta Gönderici Eşitlendi';
+$wb['do_mailrelay_txt'] = 'E-posta Aktarıcı Eşitlendi';
 ?>
diff --git a/interface/web/tools/lib/lang/tr_usersettings.lng b/interface/web/tools/lib/lang/tr_usersettings.lng
index 60c7679b9f..fa2eff63d7 100644
--- a/interface/web/tools/lib/lang/tr_usersettings.lng
+++ b/interface/web/tools/lib/lang/tr_usersettings.lng
@@ -1,12 +1,12 @@
 <?php
-$wb['password_strength_txt'] = 'Parola Güçlüğü';
+$wb['password_txt'] = 'Parola';
+$wb['password_strength_txt'] = 'Parola ZorluÄŸu';
 $wb['language_txt'] = 'Dil';
 $wb['password_mismatch'] = 'Parola ile onayı aynı değil.';
 $wb['Form to edit the user password and language.'] = 'Parola ve dil ayarlarını değiştirme formu.';
 $wb['Settings'] = 'Ayarlar';
-$wb['generate_password_txt'] = 'Parola OluÅŸtur';
+$wb['generate_password_txt'] = 'Parola Ãœret';
 $wb['repeat_password_txt'] = 'Parola Onayı';
 $wb['password_mismatch_txt'] = 'Parola ile onayı aynı değil.';
 $wb['password_match_txt'] = 'Parola ile onayı aynı.';
-$wb['password_txt'] = 'Password';
 ?>
diff --git a/interface/web/vm/lib/lang/br.lng b/interface/web/vm/lib/lang/br.lng
index 513a018bf5..ae59107a78 100644
--- a/interface/web/vm/lib/lang/br.lng
+++ b/interface/web/vm/lib/lang/br.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['Virtual Servers'] = 'Servidores virtuais';
-$wb['OS Templates'] = 'Gabaritos do SO';
-$wb['VM Templates'] = 'Gabaritos de máquina virtual';
+$wb['Virtual Servers'] = 'Máquinas virtuais';
+$wb['OS Templates'] = 'Gabaritos de SO';
+$wb['VM Templates'] = 'Gabaritos de VM';
 $wb['IP addresses'] = 'Endereço IP';
 $wb['OpenVZ'] = 'OpenVZ';
 ?>
diff --git a/interface/web/vm/lib/lang/br_openvz_action.lng b/interface/web/vm/lib/lang/br_openvz_action.lng
index a301f51d0e..cc191c14e9 100644
--- a/interface/web/vm/lib/lang/br_openvz_action.lng
+++ b/interface/web/vm/lib/lang/br_openvz_action.lng
@@ -1,16 +1,16 @@
 <?php
-$wb['head_txt'] = 'Ações do servidor virtual para máquinas virtuais:';
+$wb['head_txt'] = 'Ações do virtualizador:';
 $wb['start_txt'] = 'Iniciar máquina virtual';
 $wb['stop_txt'] = 'Parar máquina virtual';
 $wb['restart_txt'] = 'Reiniciar máquina virtual';
-$wb['ostemplate_txt'] = 'Adicionar gabarito de SO';
-$wb['ostemplate_desc_txt'] = '(exemplo: debian-6.0-i386-custom)';
+$wb['ostemplate_txt'] = 'Adicionar gabarito de sistema operacional';
+$wb['ostemplate_desc_txt'] = '(exemplo: debian-9.0-amd64-custom)';
 $wb['btn_save_txt'] = 'Executar ação selecionada';
 $wb['btn_cancel_txt'] = 'Cancelar';
-$wb['start_exec_txt'] = 'O comando -iniciar- foi enviado ao servidor servidor de máquinas virtuais. Espere alguns minutos até que a máquina virtual seja iniciada.';
-$wb['stop_exec_txt'] = 'O comando -parar- foi enviado ao servidor servidor de máquinas virtuais. Espere alguns minutos até que a máquina virtual pare.';
-$wb['restart_exec_txt'] = 'O comando -reiniciar- foi enviado ao servidor servidor de máquinas virtuais. Espere alguns minutos até que a máquina virtual seja reiniciada.';
-$wb['ostemplate_name_error'] = 'O gabarito de SO contém caracteres não permitidos.';
-$wb['ostemplate_name_unique_error'] = 'Já existe um gabarito de SO com este nome.';
-$wb['ostemplate_exec_txt'] = 'O comando -criar máquina virtual- foi enviado ao servidor servidor de máquinas virtuais. Espere alguns minutos até que a máquina virtual seja criada.';
+$wb['start_exec_txt'] = 'O comando "Iniciar" foi enviado para o virtualizador. Aguarde alguns instantes para a máquina virtual carregar.';
+$wb['stop_exec_txt'] = 'O comando "Parar" foi enviado para o virtualizador. Aguarde alguns instantes para a máquina virtual parar.';
+$wb['restart_exec_txt'] = 'O comando "Reiniciar" foi enviando para o virtualizador. Aguarde alguns instantes para a máquina virtual reiniciar.';
+$wb['ostemplate_name_error'] = 'O gabarito de sistema operacional contém caracteres não permitidos.';
+$wb['ostemplate_name_unique_error'] = 'Já existe um gabarito de sistema operacional com o mesmo nome.';
+$wb['ostemplate_exec_txt'] = 'O comando "Adicionar gabarito de SO" foi enviado para o virtualizador. Aguarde alguns instantes para o gabarito ser adicionado.';
 ?>
diff --git a/interface/web/vm/lib/lang/br_openvz_ip.lng b/interface/web/vm/lib/lang/br_openvz_ip.lng
index 61fbd6ed68..612c391c94 100644
--- a/interface/web/vm/lib/lang/br_openvz_ip.lng
+++ b/interface/web/vm/lib/lang/br_openvz_ip.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['server_id_txt'] = 'Servidor servidor';
+$wb['server_id_txt'] = 'Virtualizador';
 $wb['ip_address_txt'] = 'Endereço IP';
-$wb['vm_id_txt'] = 'Servidor virtual';
-$wb['reserved_txt'] = 'Reservedo';
+$wb['vm_id_txt'] = 'Máquina virtual';
+$wb['reserved_txt'] = 'Reservado';
 $wb['ip_error_wrong'] = 'Por favor, insira um endereço IPv4 válido.';
 $wb['ip_error_unique'] = 'O endereço IP já existe.';
 $wb['IP address'] = 'Endereço IP';
diff --git a/interface/web/vm/lib/lang/br_openvz_ip_list.lng b/interface/web/vm/lib/lang/br_openvz_ip_list.lng
index 99ddfbc7d8..f9a9f33622 100644
--- a/interface/web/vm/lib/lang/br_openvz_ip_list.lng
+++ b/interface/web/vm/lib/lang/br_openvz_ip_list.lng
@@ -1,7 +1,7 @@
 <?php
 $wb['list_head_txt'] = 'Endereço IP do OpenVZ';
 $wb['server_id_txt'] = 'Servidor';
+$wb['vm_id_txt'] = 'VM';
 $wb['ip_address_txt'] = 'Endereço IP';
 $wb['reserved_txt'] = 'Reservado';
-$wb['vm_id_txt'] = 'VPS';
 ?>
diff --git a/interface/web/vm/lib/lang/br_openvz_ostemplate.lng b/interface/web/vm/lib/lang/br_openvz_ostemplate.lng
index edce912056..ea76c915b7 100644
--- a/interface/web/vm/lib/lang/br_openvz_ostemplate.lng
+++ b/interface/web/vm/lib/lang/br_openvz_ostemplate.lng
@@ -1,11 +1,11 @@
 <?php
 $wb['template_name_txt'] = 'Nome do gabarito';
-$wb['template_file_txt'] = 'Arquivo do gabarito';
-$wb['server_id_txt'] = 'Servidor';
+$wb['template_file_txt'] = 'Nome do arquivo';
+$wb['server_id_txt'] = 'Virtualizador';
 $wb['allservers_txt'] = 'Disponível em todos os servidores';
 $wb['active_txt'] = 'Ativo';
 $wb['description_txt'] = 'Descrição';
 $wb['template_name_error_empty'] = 'Nome do gabarito está em branco.';
-$wb['template_file_error_empty'] = 'Nome o arquivo do gabarito está em branco.';
+$wb['template_file_error_empty'] = 'Nome do arquivo está em branco.';
 $wb['Template'] = 'Gabarito';
 ?>
diff --git a/interface/web/vm/lib/lang/br_openvz_ostemplate_list.lng b/interface/web/vm/lib/lang/br_openvz_ostemplate_list.lng
index 04e94a889d..9e60baf179 100644
--- a/interface/web/vm/lib/lang/br_openvz_ostemplate_list.lng
+++ b/interface/web/vm/lib/lang/br_openvz_ostemplate_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['list_head_txt'] = 'Gabarito do SO openVZ';
+$wb['list_head_txt'] = 'Gabarito de sistema operacional';
 $wb['active_txt'] = 'Ativo';
-$wb['template_name_txt'] = 'Nome';
-$wb['server_id_txt'] = 'Servidor';
+$wb['template_name_txt'] = 'Nome do gabarito';
+$wb['server_id_txt'] = 'Virtualizador';
 $wb['allservers_txt'] = 'Disponível em todos os servidores';
 $wb['ostemplate_id_txt'] = 'ID';
 ?>
diff --git a/interface/web/vm/lib/lang/br_openvz_template.lng b/interface/web/vm/lib/lang/br_openvz_template.lng
index 4190a31f9c..23d4c9b6af 100644
--- a/interface/web/vm/lib/lang/br_openvz_template.lng
+++ b/interface/web/vm/lib/lang/br_openvz_template.lng
@@ -1,97 +1,97 @@
 <?php
-$wb['numproc_txt'] = 'Nº de Processadores';
-$wb['numtcpsock_txt'] = 'Nº de soquetes TCP';
-$wb['numothersock_txt'] = 'Nº de outros soquetes';
-$wb['vmguarpages_txt'] = 'Páginas de guarda';
-$wb['kmemsize_txt'] = 'Kmemsize';
-$wb['tcpsndbuf_txt'] = 'Tcpsndbuf';
-$wb['tcprcvbuf_txt'] = 'Tcprcvbuf';
-$wb['othersockbuf_txt'] = 'Othersockbuf';
-$wb['dgramrcvbuf_txt'] = 'Dgramrcvbuf';
-$wb['oomguarpages_txt'] = 'Oomguarpages';
-$wb['privvmpages_txt'] = 'Privvmpages';
-$wb['lockedpages_txt'] = 'Lockedpages';
-$wb['shmpages_txt'] = 'Shmpages';
-$wb['physpages_txt'] = 'Physpages';
-$wb['numfile_txt'] = 'Numfile';
-$wb['avnumproc_txt'] = 'Avnumproc';
-$wb['numflock_txt'] = 'Numflock';
-$wb['numpty_txt'] = 'Numpty';
-$wb['numsiginfo_txt'] = 'Numsiginfo';
-$wb['dcachesize_txt'] = 'Dcachesize';
-$wb['numiptent_txt'] = 'Numiptent';
-$wb['swappages_txt'] = 'Swappages';
-$wb['hostname_txt'] = 'Nome do servidor';
-$wb['nameserver_txt'] = 'Servidor(es) de nome';
-$wb['nameserver_desc_txt'] = '(separado por espaços em branco)';
+$wb['numproc_txt'] = 'Número de Processadores';
+$wb['numtcpsock_txt'] = 'Número de sockets tcp';
+$wb['numothersock_txt'] = '(numothersock)';
+$wb['vmguarpages_txt'] = 'Páginas de guarda da vm (vmguardpages)';
+$wb['kmemsize_txt'] = 'Tamanho da memória (Kmemsize)';
+$wb['tcpsndbuf_txt'] = 'Buffers tcp de envio (tcpsndbuf)';
+$wb['tcprcvbuf_txt'] = 'Buffers tcp de recepção (tcprcvbuf)';
+$wb['othersockbuf_txt'] = 'Outros buffers (othersockbuf)';
+$wb['dgramrcvbuf_txt'] = 'Buffers datagrama de envio (dgramrcvbuf)';
+$wb['oomguarpages_txt'] = '(oomguarpages)';
+$wb['privvmpages_txt'] = 'Tamanho da memória alocada para aplicações, em páginas (privvmpages)';
+$wb['lockedpages_txt'] = 'Páginas bloqueadas (lockedpages)';
+$wb['shmpages_txt'] = '(Shmpages)';
+$wb['physpages_txt'] = '(Physpages)';
+$wb['numfile_txt'] = 'Número de arquivos';
+$wb['avnumproc_txt'] = 'Média de processadores';
+$wb['numflock_txt'] = 'Número de arquivos bloqueados (numflock)';
+$wb['numpty_txt'] = 'Número de PTY (numpty)';
+$wb['numsiginfo_txt'] = 'Número de siginfo (informações de geração de sinal)';
+$wb['dcachesize_txt'] = 'Tamanho do cache (dcachesize)';
+$wb['numiptent_txt'] = 'Número de endereços IP (numiptent)';
+$wb['swappages_txt'] = 'Páginas de troca (swappages)';
+$wb['hostname_txt'] = 'Nome do host';
+$wb['nameserver_txt'] = 'Servidor(es) dns';
+$wb['nameserver_desc_txt'] = '(separado por espaço)';
 $wb['capability_txt'] = 'Capacidade';
 $wb['template_name_txt'] = 'Nome do gabarito';
-$wb['diskspace_txt'] = 'Espaço em disco';
+$wb['diskspace_txt'] = 'Espaço do disco';
 $wb['ram_txt'] = 'RAM (garantida)';
 $wb['ram_burst_txt'] = 'RAM (rajada)';
-$wb['cpu_units_txt'] = 'Unidades de CPU';
-$wb['cpu_num_txt'] = 'Cores de CPU';
-$wb['cpu_limit_txt'] = 'Limite de CPU %';
+$wb['cpu_units_txt'] = 'Número de cores da CPU';
+$wb['cpu_num_txt'] = 'Número de CPUs';
+$wb['cpu_limit_txt'] = 'Limite da CPU %';
 $wb['io_priority_txt'] = 'Prioridade de E/S';
 $wb['active_txt'] = 'Ativo';
 $wb['description_txt'] = 'Descrição';
-$wb['numproc_desc_txt'] = 'Número de processos e tarefas.';
-$wb['numtcpsock_desc_txt'] = 'Número de soquetes TCP.';
-$wb['numothersock_desc_txt'] = 'Número de soquetes não TCP.';
-$wb['vmguarpages_desc_txt'] = 'Alocação de memória garantida, em páginas.';
-$wb['kmemsize_desc_txt'] = 'Tamanho da memória sem swap no kernel, alocada para processos neste contêiner.';
-$wb['tcpsndbuf_desc_txt'] = 'Tamanho total de buffers TCP enviados.';
-$wb['tcprcvbuf_desc_txt'] = 'Tamanho total de buffers TCP recebidos.';
-$wb['othersockbuf_desc_txt'] = 'Tamanho total de soquetes de UNIX-domain UDP e outros protocolos de datagrama que enviam buffers..';
-$wb['dgramrcvbuf_desc_txt'] = 'Receber buffers de UDP e outros protocolos de datagrama.';
-$wb['oomguarpages_desc_txt'] = 'A garantia de memória para o caso de rajadas é superior à reserva (out-of-memory), em páginas.';
+$wb['numproc_desc_txt'] = 'Número de processos e threads.';
+$wb['numtcpsock_desc_txt'] = 'Número de sockets tcp.';
+$wb['numothersock_desc_txt'] = 'Número de outros sockets.';
+$wb['vmguarpages_desc_txt'] = 'Garantia de alocação de memória, em páginas.';
+$wb['kmemsize_desc_txt'] = 'Tamanho da memória do kernel não cambiável, alocada para processos neste contêiner.';
+$wb['tcpsndbuf_desc_txt'] = 'Tamanho de buffers de envio tcp.';
+$wb['tcprcvbuf_desc_txt'] = 'Tamanho de buffers de recepção tcp.';
+$wb['othersockbuf_desc_txt'] = 'Tamanho de buffers de socket de domínio unix, udp e outros buffers de envio de protocolos de datagrama.';
+$wb['dgramrcvbuf_desc_txt'] = 'Tamanho de buffers de recepção udp e outros protocolos de datagrama.';
+$wb['oomguarpages_desc_txt'] = 'Quantidade garantida de memória para o caso da memória estar "com excesso de reserva" (garantia de eliminação de falta de memória), em páginas.';
 $wb['privvmpages_desc_txt'] = 'Limite de alocação de memória, em páginas.';
-$wb['lockedpages_desc_txt'] = 'Páginas de processo não tem permissão para troca (páginas bloqueadas por mlock(2)).';
-$wb['shmpages_desc_txt'] = 'Tamanho total da memória compartilhada (IPC, mapeamentos anônimos compartilhados e objetos tmpfs), em páginas.';
-$wb['physpages_desc_txt'] = 'Número total de páginas de RAM, usada pelos processos.';
+$wb['lockedpages_desc_txt'] = 'Páginas de processos que não podem ser trocadas (páginas bloqueadas por mlock(2)).';
+$wb['shmpages_desc_txt'] = 'Tamanho da memória compartilhada (ISPC, mapeamentos anônimos compartilhados e objetos tmpfs), em páginas.';
+$wb['physpages_desc_txt'] = 'Número total de páginas RAM usadas pelos processos';
 $wb['numfile_desc_txt'] = 'Número de arquivos abertos.';
 $wb['numflock_desc_txt'] = 'Número de arquivos bloqueados.';
-$wb['numpty_desc_txt'] = 'Número de pseudo terminais.';
-$wb['numsiginfo_desc_txt'] = 'Número de estruturas de siginfo.';
-$wb['dcachesize_desc_txt'] = 'Tamanho total de dentry e estruturas inode bloqueados na memória.';
-$wb['numiptent_desc_txt'] = 'Número de entradas no firewall (Filtros de pacotes IP).';
-$wb['swappages_desc_txt'] = 'Quantidade de área de troca a ser exibida no container.';
-$wb['create_dns_txt'] = 'Adicionar dns para servidor';
-$wb['template_name_error_empty'] = 'Nome do gabarito está em branco.';
-$wb['diskspace_error_empty'] = 'Espaço do disco está em branco.';
+$wb['numpty_desc_txt'] = 'Número de pseudo-terminais (tty).';
+$wb['numsiginfo_desc_txt'] = 'Número de estruturas siginfo.';
+$wb['dcachesize_desc_txt'] = 'Tamanho de estruturas dentry e inode bloqueadas na memória.';
+$wb['numiptent_desc_txt'] = 'Número total de entradas NETFILTER (filtragem de pacotes IP).';
+$wb['swappages_desc_txt'] = 'Quantidade de espaço de troca a ser exibido no contêiner.';
+$wb['create_dns_txt'] = 'Adicionar dns para o nome do host';
+$wb['template_name_error_empty'] = 'O nome do gabarito está em branco.';
+$wb['diskspace_error_empty'] = 'O tamanho do disco está em branco.';
 $wb['ram_error_empty'] = 'RAM (garantida) está em branco.';
 $wb['ram_burst_error_empty'] = 'RAM (rajada) está em branco.';
-$wb['cpu_units_error_empty'] = 'Unidades de CPU está em branco.';
-$wb['cpu_num_error_empty'] = 'Cores de CPU está em branco.';
-$wb['cpu_limit_error_empty'] = 'CPU limit % está em branco.';
+$wb['cpu_units_error_empty'] = 'Número de cores da CPU está em branco.';
+$wb['cpu_num_error_empty'] = 'Número de CPU está em branco.';
+$wb['cpu_limit_error_empty'] = 'Limite da CPU está em branco.';
 $wb['io_priority_error_empty'] = 'Prioridade de E/S está em branco.';
-$wb['template_nameserver_error_empty'] = 'Servidor(es) de nome está em branco.';
-$wb['numproc_error_empty'] = 'N° de processadores está em branco.';
-$wb['numtcpsock_error_empty'] = 'N° de soquetes TCP está em branco.';
-$wb['numothersock_error_empty'] = 'N° de outros soquetes está em branco.';
-$wb['vmguarpages_error_empty'] = 'Páginas de guarda está em branco.';
+$wb['template_nameserver_error_empty'] = 'Servidor(es) dns está em branco.';
+$wb['numproc_error_empty'] = 'Número de processadores está em branco.';
+$wb['numtcpsock_error_empty'] = 'Número de sockets tcp está em branco.';
+$wb['numothersock_error_empty'] = 'Número de outros sockets está em branco.';
+$wb['vmguarpages_error_empty'] = 'Página de guarda da vm está em branco.';
 $wb['kmemsize_error_empty'] = 'Kmemsize está em branco.';
-$wb['tcpsndbuf_error_empty'] = 'Tcpsndbuf está em branco.';
-$wb['tcprcvbuf_error_empty'] = 'Tcprcvbuf está em branco.';
-$wb['othersockbuf_error_empty'] = 'Othersockbuf está em branco.';
-$wb['dgramrcvbuf_error_empty'] = 'Dgramrcvbuf está em branco.';
+$wb['tcpsndbuf_error_empty'] = 'Tamanho de buffers de envio tcp está em branco.';
+$wb['tcprcvbuf_error_empty'] = 'Tamanho de buffers de recepção está em branco.';
+$wb['othersockbuf_error_empty'] = 'Tamanho de outros buffers de socket está em branco.';
+$wb['dgramrcvbuf_error_empty'] = 'Tamanho de buffers de recepção udp e outros protocolos de datagrama está em branco.';
 $wb['oomguarpages_error_empty'] = 'Oomguarpages está em branco.';
-$wb['privvmpages_error_empty'] = 'Privvmpages está em branco.';
+$wb['privvmpages_error_empty'] = 'Tamanho da memória alocada para aplicações, em páginas, está em branco.';
 $wb['lockedpages_error_empty'] = 'Lockedpages está em branco.';
 $wb['shmpages_error_empty'] = 'Shmpages está em branco.';
 $wb['physpages_error_empty'] = 'Physpages está em branco.';
-$wb['numfile_error_empty'] = 'Numfile está em branco.';
-$wb['avnumproc_error_empty'] = 'Avnumproc está em branco.';
-$wb['numflock_error_empty'] = 'Numflock está em branco.';
-$wb['numpty_error_empty'] = 'Numpty está em branco.';
-$wb['numsiginfo_error_empty'] = 'Numsiginfo está em branco.';
-$wb['dcachesize_error_empty'] = 'Dcachesize está em branco.';
-$wb['numiptent_error_empty'] = 'Numiptent está em branco.';
-$wb['swappages_error_empty'] = 'Swappages está em branco.';
+$wb['numfile_error_empty'] = 'Número de arquivos está em branco.';
+$wb['avnumproc_error_empty'] = 'Média de processadores está em branco.';
+$wb['numflock_error_empty'] = 'Número de arquivos bloqueados está em branco.';
+$wb['numpty_error_empty'] = 'Número de pseudo-terminais está em branco.';
+$wb['numsiginfo_error_empty'] = 'Número de informações siginfo está em branco.';
+$wb['dcachesize_error_empty'] = 'Tamanho do cache está em branco.';
+$wb['numiptent_error_empty'] = 'Número de entradas NETFILTER está em branco.';
+$wb['swappages_error_empty'] = 'Páginas de troca está em branco.';
 $wb['Template'] = 'Gabarito';
 $wb['Advanced'] = 'Avançado';
 $wb['features_txt'] = 'Recursos';
-$wb['iptables_txt'] = 'Firewall';
+$wb['iptables_txt'] = 'Firewall (iptables)';
 $wb['custom_txt'] = 'Configurações personalizadas';
-$wb['custom_error'] = 'Não permitido em configurações personalizadas: ';
+$wb['custom_error'] = 'Não permitido nas configurações personalizadas: ';
 ?>
diff --git a/interface/web/vm/lib/lang/br_openvz_template_list.lng b/interface/web/vm/lib/lang/br_openvz_template_list.lng
index 390869859a..00d1b648d8 100644
--- a/interface/web/vm/lib/lang/br_openvz_template_list.lng
+++ b/interface/web/vm/lib/lang/br_openvz_template_list.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['list_head_txt'] = 'Gabarito de máquina virtual OpenVZ';
+$wb['list_head_txt'] = 'Gabarito de máquina virtual';
 $wb['active_txt'] = 'Ativo';
-$wb['template_name_txt'] = 'Nome do Gabarito';
+$wb['template_name_txt'] = 'Nome do gabarito';
 ?>
diff --git a/interface/web/vm/lib/lang/br_openvz_vm.lng b/interface/web/vm/lib/lang/br_openvz_vm.lng
index 04794daf86..a8176e7688 100644
--- a/interface/web/vm/lib/lang/br_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/br_openvz_vm.lng
@@ -1,45 +1,46 @@
 <?php
-$wb['diskspace_txt'] = 'Espaço em disco';
+$wb['diskspace_txt'] = 'Espaço no disco';
 $wb['ram_txt'] = 'RAM (garantida)';
 $wb['ram_burst_txt'] = 'RAM (rajada)';
-$wb['cpu_units_txt'] = 'Unidades de CPU(s)';
-$wb['cpu_num_txt'] = 'Quantidade de CPU(s)';
-$wb['cpu_limit_txt'] = 'Limite de CPU(s)';
-$wb['io_priority_txt'] = 'Prioridade de E/S';
-$wb['nameserver_txt'] = 'Servidor(es) de nome';
-$wb['nameserver_desc_txt'] = '(separado por espaços em branco)';
+$wb['cpu_units_txt'] = 'Número de cores da CPU';
+$wb['cpu_num_txt'] = 'Número de CPU';
+$wb['cpu_limit_txt'] = 'Limite de CPU (%)';
+$wb['io_priority_txt'] = 'prioridade de E/S';
+$wb['nameserver_txt'] = 'Servidor(es) dns';
+$wb['nameserver_desc_txt'] = '(separados por espaço)';
 $wb['capability_txt'] = 'Capacidade';
-$wb['server_id_txt'] = 'Servidor servidor';
-$wb['ostemplate_id_txt'] = 'Gabarito do SO';
+$wb['server_id_txt'] = 'Virtualizador';
+$wb['ostemplate_id_txt'] = 'Gabarito de sistema operacional';
 $wb['template_id_txt'] = 'Gabarito';
 $wb['ip_address_txt'] = 'Endereço IP';
-$wb['hostname_txt'] = 'Servidor';
+$wb['hostname_txt'] = 'Nome do host';
 $wb['vm_password_txt'] = 'Senha da máquina virtual';
 $wb['start_boot_txt'] = 'Iniciar no boot';
 $wb['active_txt'] = 'Ativo';
 $wb['description_txt'] = 'Descrição';
 $wb['client_group_id_txt'] = 'Cliente';
 $wb['veid_txt'] = 'VEID';
-$wb['create_dns_txt'] = 'Adicionar DNS para servidor';
+$wb['create_dns_txt'] = 'Adicionar dns para a máquina virtual';
 $wb['active_until_date_txt'] = 'Ativo até a data';
 $wb['ip_address_error_empty'] = 'Endereço IP está em branco.';
-$wb['hostname_error_empty'] = 'Nome do servidor está em branco.';
+$wb['hostname_error_empty'] = 'Nome do host está em branco.';
 $wb['vm_password_error_empty'] = 'Senha da máquina virtual está em branco.';
 $wb['veid_error_empty'] = 'VEID está em branco.';
-$wb['veid_error_unique'] = 'VEID não existe.';
-$wb['diskspace_error_empty'] = 'Espaço em disco está em branco.';
+$wb['veid_error_unique'] = 'VEID já existe.';
+$wb['diskspace_error_empty'] = 'Espaço do disco está em branco.';
 $wb['ram_error_empty'] = 'RAM (garantida) está em branco.';
 $wb['ram_burst_error_empty'] = 'RAM (rajada) está em branco.';
-$wb['cpu_units_error_empty'] = 'Unidade de CPU(s) está em branco.';
-$wb['cpu_num_error_empty'] = 'Quantidade de CPU(s) está em branco.';
-$wb['cpu_limit_error_empty'] = 'Limite de CPU(s) está em branco.';
+$wb['cpu_units_error_empty'] = 'Número de cores da CPU está em branco.';
+$wb['cpu_num_error_empty'] = 'Número de CPU está em branco.';
+$wb['cpu_limit_error_empty'] = 'Limite de CPU está em branco.';
 $wb['io_priority_error_empty'] = 'Prioridade de E/S está em branco.';
-$wb['template_nameserver_error_empty'] = 'Servidor(es) de nome está em branco.';
-$wb['Virtual server'] = 'Servidor virtual';
+$wb['template_nameserver_error_empty'] = 'Servidor(es) dns está em branco.';
+$wb['Virtual server'] = 'Máquina Virtual';
 $wb['Advanced'] = 'Avançado';
+$wb['Additional IP'] = 'Endereço IP adicional';
 $wb['features_txt'] = 'Recursos';
 $wb['iptables_txt'] = 'Firewall';
 $wb['custom_txt'] = 'Configurações personalizadas';
-$wb['bootorder_txt'] = 'Prioridade do boot';
-$wb['bootorder_error_notpositive'] = 'Somente números positivos podem ser configurados na prioridade do boot.';
+$wb['bootorder_txt'] = 'Ordem da prioridade do boot';
+$wb['bootorder_error_notpositive'] = 'São permitidos apenas números inteiros, > 0, na ordem da prioridade do boot.';
 ?>
diff --git a/interface/web/vm/lib/lang/br_openvz_vm_list.lng b/interface/web/vm/lib/lang/br_openvz_vm_list.lng
index 03d510f2f7..c907c710ea 100644
--- a/interface/web/vm/lib/lang/br_openvz_vm_list.lng
+++ b/interface/web/vm/lib/lang/br_openvz_vm_list.lng
@@ -1,10 +1,10 @@
 <?php
-$wb['list_head_txt'] = 'Servidor virtual';
+$wb['list_head_txt'] = 'Máquina virtual';
 $wb['active_txt'] = 'Ativo';
-$wb['server_id_txt'] = 'ID do servidor';
+$wb['server_id_txt'] = 'Virtualizador';
 $wb['ostemplate_id_txt'] = 'Gabarito do SO';
 $wb['template_id_txt'] = 'Gabarito';
-$wb['hostname_txt'] = 'Servidor';
+$wb['hostname_txt'] = 'Nome do host';
 $wb['ip_address_txt'] = 'Endereço IP';
 $wb['veid_txt'] = 'VEID';
 ?>
diff --git a/interface/web/vm/lib/lang/tr.lng b/interface/web/vm/lib/lang/tr.lng
index 82599dd038..23bca66851 100644
--- a/interface/web/vm/lib/lang/tr.lng
+++ b/interface/web/vm/lib/lang/tr.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['Virtual Servers'] = 'Sanal Sunucular';
-$wb['OS Templates'] = 'OS Kalıpları';
-$wb['VM Templates'] = 'VM Kalıpları';
+$wb['Virtual Servers'] = 'sSunucular';
+$wb['OS Templates'] = 'İşletim Sistemi Kalıpları';
+$wb['VM Templates'] = 'Sanal Makine Kalıpları';
 $wb['IP addresses'] = 'IP Adresleri';
 $wb['OpenVZ'] = 'OpenVZ';
 ?>
diff --git a/interface/web/vm/lib/lang/tr_openvz_action.lng b/interface/web/vm/lib/lang/tr_openvz_action.lng
index 29759e0266..8e2a3652d2 100644
--- a/interface/web/vm/lib/lang/tr_openvz_action.lng
+++ b/interface/web/vm/lib/lang/tr_openvz_action.lng
@@ -1,16 +1,17 @@
 <?php
-$wb['head_txt'] = 'VM Sanal Sunucu Ä°ÅŸlemleri:';
+$wb['head_txt'] = 'Sanal Makine Sanal Sunucu Ä°ÅŸlemleri:';
 $wb['start_txt'] = 'Sanal sunucuyu baÅŸlat';
 $wb['stop_txt'] = 'Sanal sunucuyu durdur';
 $wb['restart_txt'] = 'Sanal sunucuyu yeniden baÅŸlat';
-$wb['ostemplate_txt'] = 'OS Kalıbı Oluştur';
+$wb['ostemplate_txt'] = 'İşletim Sistemi Kalıbı Ekle';
 $wb['ostemplate_desc_txt'] = '(örnek: debian-6.0-i386-custom)';
 $wb['btn_save_txt'] = 'Seçilmiş işlemi yürüt';
 $wb['btn_cancel_txt'] = 'Geri';
-$wb['start_exec_txt'] = 'VM sunucusuna başlatma komutu gönderildi. VM başlatılana kadar bir dakika geçebilir.';
-$wb['stop_exec_txt'] = 'VM sunucusuna durdurma komutu gönderildi. VM durdurulana kadar bir dakika geçebilir.';
-$wb['restart_exec_txt'] = 'VM sunucusuna yeniden başlatma komutu gönderildi. VM yeniden başlatılana kadar bir dakika geçebilir.';
-$wb['ostemplate_name_error'] = 'OS kalıbı adında izin verilmeyen karakterler var.';
+$wb['start_exec_txt'] = 'Sanal makine sunucusuna başlatma komutu gönderildi. Sanal makine başlatılana kadar bir dakika geçebilir.';
+$wb['stop_exec_txt'] = 'Sanal makine sunucusuna durdurma komutu gönderildi. Sanal makine durdurulana kadar bir dakika geçebilir.';
+$wb['restart_exec_txt'] = 'Sanal makine sunucusuna yeniden başlatma komutu gönderildi. Sanal makine yeniden başlatılana kadar bir dakika geçebilir.';
+$wb['ostemplate_name_error'] = 'İşletim sistemi kalıbı adında izin verilmeyen karakterler var.';
 $wb['ostemplate_name_unique_error'] = 'Aynı adlı bir işletim sistemi kalıbı zaten var.';
-$wb['ostemplate_exec_txt'] = 'VM sunucusuna işletim sistemi kalıbı oluşturma komutu gönderildi. İşletim sistemi kalıbının oluşturulması bir kaç dakika alabilir.';
+$wb['ostemplate_exec_txt'] = 'Sanal makine sunucusuna işletim sistemi kalıbı oluşturma komutu gönderildi. İşletim sistemi kalıbının oluşturulması bir kaç dakika alabilir.';
+
 ?>
diff --git a/interface/web/vm/lib/lang/tr_openvz_ip.lng b/interface/web/vm/lib/lang/tr_openvz_ip.lng
index 637a70f2ea..e24b354bae 100644
--- a/interface/web/vm/lib/lang/tr_openvz_ip.lng
+++ b/interface/web/vm/lib/lang/tr_openvz_ip.lng
@@ -1,7 +1,7 @@
 <?php
 $wb['server_id_txt'] = 'Sunucu';
 $wb['ip_address_txt'] = 'IP Adresi';
-$wb['vm_id_txt'] = 'Sanal Sunucu';
+$wb['vm_id_txt'] = 'sSunucu';
 $wb['reserved_txt'] = 'Ayrılmış';
 $wb['ip_error_wrong'] = 'Lütfen geçerli bir IPv4 adresi yazın.';
 $wb['ip_error_unique'] = 'Bu IP adresi zaten var.';
diff --git a/interface/web/vm/lib/lang/tr_openvz_ostemplate_list.lng b/interface/web/vm/lib/lang/tr_openvz_ostemplate_list.lng
index bf5923aed1..3a4a10fdaa 100644
--- a/interface/web/vm/lib/lang/tr_openvz_ostemplate_list.lng
+++ b/interface/web/vm/lib/lang/tr_openvz_ostemplate_list.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['list_head_txt'] = 'OpenVZ OS Kalıbı';
+$wb['list_head_txt'] = 'OpenVZ İşletim Sistemi Kalıbı';
 $wb['active_txt'] = 'Etkin';
 $wb['template_name_txt'] = 'Kalıp Adı';
 $wb['server_id_txt'] = 'Sunucu';
diff --git a/interface/web/vm/lib/lang/tr_openvz_template.lng b/interface/web/vm/lib/lang/tr_openvz_template.lng
index fb1452e885..7768d0bae6 100644
--- a/interface/web/vm/lib/lang/tr_openvz_template.lng
+++ b/interface/web/vm/lib/lang/tr_openvz_template.lng
@@ -2,11 +2,11 @@
 $wb['numproc_txt'] = 'İşlemci Sayısı';
 $wb['numtcpsock_txt'] = 'TCP Soket Sayısı';
 $wb['numothersock_txt'] = 'Diğer Soket Sayısı';
-$wb['vmguarpages_txt'] = 'VM Koruma Sayfası';
+$wb['vmguarpages_txt'] = 'Sanal Makine Koruma Sayfası';
 $wb['kmemsize_txt'] = 'Kmemsize';
-$wb['tcpsndbuf_txt'] = 'TCP Gönderme Arabelleği';
-$wb['tcprcvbuf_txt'] = 'TCP Alma ArabelleÄŸi';
-$wb['othersockbuf_txt'] = 'DiÄŸer Soket ArabelleÄŸi';
+$wb['tcpsndbuf_txt'] = 'TCP Gönderme Ara Belleği';
+$wb['tcprcvbuf_txt'] = 'TCP Alma Ara BelleÄŸi';
+$wb['othersockbuf_txt'] = 'DiÄŸer Soket Ara BelleÄŸi';
 $wb['dgramrcvbuf_txt'] = 'Dgramrcvbuf';
 $wb['oomguarpages_txt'] = 'Oomguarpages';
 $wb['privvmpages_txt'] = 'Privvmpages';
@@ -40,11 +40,11 @@ $wb['numtcpsock_desc_txt'] = 'TCP soketi sayısı.';
 $wb['numothersock_desc_txt'] = 'TCP olmayan soket sayısı.';
 $wb['vmguarpages_desc_txt'] = 'Sayfa cinsinden garantili ayrılan bellek.';
 $wb['kmemsize_desc_txt'] = 'Bu taşıyıcıdaki işlemler için takas edilemez kernel belleğinin boyutu.';
-$wb['tcpsndbuf_desc_txt'] = 'TCP gönderme arabelleğinin toplam boyutu.';
-$wb['tcprcvbuf_desc_txt'] = 'TCP alma arabelleÄŸinin toplam boyutu.';
-$wb['othersockbuf_desc_txt'] = 'UNIX alan adı soket arabelleğinin toplam boyutu, UDP ve diğer datagram iletişim kuralları gönderme ara bellekleri.';
+$wb['tcpsndbuf_desc_txt'] = 'TCP gönderme ara belleğinin toplam boyutu.';
+$wb['tcprcvbuf_desc_txt'] = 'TCP alma ara belleÄŸinin toplam boyutu.';
+$wb['othersockbuf_desc_txt'] = 'UNIX etki alanı soket ara belleğinin toplam boyutu, UDP ve diğer datagram iletişim kuralları gönderme ara bellekleri.';
 $wb['dgramrcvbuf_desc_txt'] = 'UDP ve diğer datagram iletişim kuralları alma ara bellekleri.';
-$wb['oomguarpages_desc_txt'] = 'Bellek sayfası cinsinden, bellek taşması durumlarında garanti edilen bellek miktarı\\" (bellek bitti boşaltma garantisi).';
+$wb['oomguarpages_desc_txt'] = 'Bellek sayfası cinsinden, "bellek taşması" durumlarında garanti edilen bellek miktarı (bellek bitti boşaltma garantisi).';
 $wb['privvmpages_desc_txt'] = 'Bellek sayfası cinsinden ayrılacak bellek sınırı.';
 $wb['lockedpages_desc_txt'] = 'İşlem sayfaları takasına izin verilmez (mlock(2) ile kilitlenmiş sayfalar).';
 $wb['shmpages_desc_txt'] = 'Bellek sayfası cinsinden, paylaşılan belleğin toplam boyutu (IPC, paylaşılan anonim haritalama ve tmpfs nesneleri).';
@@ -90,8 +90,8 @@ $wb['numiptent_error_empty'] = 'Numiptent boÅŸ olamaz.';
 $wb['swappages_error_empty'] = 'Swappages boÅŸ olamaz.';
 $wb['Template'] = 'Kalıp';
 $wb['Advanced'] = 'GeliÅŸmiÅŸ';
-$wb['features_txt'] = 'Features';
+$wb['features_txt'] = 'Özellikle';
 $wb['iptables_txt'] = 'IP Tables';
-$wb['custom_txt'] = 'Custom settings';
-$wb['custom_error'] = 'Not allowed in Custom settings: ';
+$wb['custom_txt'] = 'Özel Ayarlar';
+$wb['custom_error'] = 'Özel ayarlarda izin verilmiyor: ';
 ?>
diff --git a/interface/web/vm/lib/lang/tr_openvz_vm.lng b/interface/web/vm/lib/lang/tr_openvz_vm.lng
index fad86d9f3a..7c2977cda9 100644
--- a/interface/web/vm/lib/lang/tr_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/tr_openvz_vm.lng
@@ -10,21 +10,21 @@ $wb['nameserver_txt'] = 'Ad Sunucuları';
 $wb['nameserver_desc_txt'] = '(boşluk ile ayırarak)';
 $wb['capability_txt'] = 'Yeterlilik';
 $wb['server_id_txt'] = 'Sunucu';
-$wb['ostemplate_id_txt'] = 'OS Kalıbı';
+$wb['ostemplate_id_txt'] = 'İşletim Sistemi Kalıbı';
 $wb['template_id_txt'] = 'Kalıp';
 $wb['ip_address_txt'] = 'IP Adresi';
 $wb['hostname_txt'] = 'Sunucu Adı';
-$wb['vm_password_txt'] = 'VM Parolası';
-$wb['start_boot_txt'] = 'Açılışta başlat';
+$wb['vm_password_txt'] = 'Sanal Makine Parolası';
+$wb['start_boot_txt'] = 'Açılışta Başlatılsın';
 $wb['active_txt'] = 'Etkin';
 $wb['description_txt'] = 'Açıklama';
 $wb['client_group_id_txt'] = 'Müşteri';
 $wb['veid_txt'] = 'VEID';
 $wb['create_dns_txt'] = 'Sunucu için DNS oluştur';
-$wb['active_until_date_txt'] = 'Åžu tarihe kadar etkin';
+$wb['active_until_date_txt'] = 'Åžu Tarihe Kadar Etkin';
 $wb['ip_address_error_empty'] = 'IP adresi boÅŸ olamaz.';
 $wb['hostname_error_empty'] = 'Sunucu adı boş olamaz.';
-$wb['vm_password_error_empty'] = 'VM parolası boş olamaz.';
+$wb['vm_password_error_empty'] = 'Sanal makine parolası boş olamaz.';
 $wb['veid_error_empty'] = 'VEID boÅŸ olamaz.';
 $wb['veid_error_unique'] = 'VEID zaten var.';
 $wb['diskspace_error_empty'] = 'Disk alanı boş olamaz.';
@@ -35,11 +35,11 @@ $wb['cpu_num_error_empty'] = 'İşlemci sayısı boş olamaz.';
 $wb['cpu_limit_error_empty'] = 'İşlemci sınırı boş olamaz.';
 $wb['io_priority_error_empty'] = 'G/Ç önceliği boş olamaz.';
 $wb['template_nameserver_error_empty'] = 'Ad sunucuları boş olamaz.';
-$wb['Virtual server'] = 'Sanal sunucu';
+$wb['Virtual server'] = 'sSunucu';
 $wb['Advanced'] = 'GeliÅŸmiÅŸ';
-$wb['features_txt'] = 'Features';
+$wb['features_txt'] = 'Özellikler';
 $wb['iptables_txt'] = 'IP Tables';
-$wb['custom_txt'] = 'Custom settings';
-$wb['bootorder_txt'] = 'Boot order priority';
-$wb['bootorder_error_notpositive'] = 'Only positive integers are allowed for Boot order priority';
+$wb['custom_txt'] = 'Özel Ayarlar';
+$wb['bootorder_txt'] = 'Başlatma Önceliği';
+$wb['bootorder_error_notpositive'] = 'Başlatma önceliği değeri yalnız pozitif bir tamsayı olabilir';
 ?>
diff --git a/interface/web/vm/lib/lang/tr_openvz_vm_list.lng b/interface/web/vm/lib/lang/tr_openvz_vm_list.lng
index 1a4ed0e7b9..e188f60464 100644
--- a/interface/web/vm/lib/lang/tr_openvz_vm_list.lng
+++ b/interface/web/vm/lib/lang/tr_openvz_vm_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['list_head_txt'] = 'Sanal Sunucu';
+$wb['list_head_txt'] = 'sSunucu';
 $wb['active_txt'] = 'Etkin';
 $wb['server_id_txt'] = 'Sunucu';
-$wb['ostemplate_id_txt'] = 'OS Kalıbı';
+$wb['ostemplate_id_txt'] = 'İşl. Sis. Kalıbı';
 $wb['template_id_txt'] = 'Kalıp';
 $wb['hostname_txt'] = 'Sunucu Adı';
 $wb['ip_address_txt'] = 'IP Adresi';
-- 
GitLab


From 2f0d607b5e26ed98be084c4977bcd2c1d4219d19 Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Fri, 11 Oct 2019 16:53:03 +0200
Subject: [PATCH 073/242] Fixed #5424 Unable to change passwd or user of admin

---
 interface/web/admin/form/users.tform.php | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/interface/web/admin/form/users.tform.php b/interface/web/admin/form/users.tform.php
index b7f00b4eef..be77122b10 100644
--- a/interface/web/admin/form/users.tform.php
+++ b/interface/web/admin/form/users.tform.php
@@ -218,12 +218,6 @@ $form['tabs']['users'] = array (
 		'app_theme' => array (
 			'datatype' => 'VARCHAR',
 			'formtype' => 'RADIO',
-			'validators' => array (  0 => array (    'type' => 'NOTEMPTY',
-					'errmsg'=> 'app_theme_empty'),
-				1 => array (    'type' => 'REGEX',
-					'regex' => '/^[a-z0-9\_]{0,64}$/',
-					'errmsg'=> 'app_theme_regex'),
-			),
 			'regex'  => '',
 			'errmsg' => '',
 			'default' => 'default',
-- 
GitLab


From 04b0eb24cbe282017bdddb7ac5b4d6386563fa29 Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Fri, 11 Oct 2019 16:56:43 +0200
Subject: [PATCH 074/242] Fixed #5425 Valid delete requests blocked by CSRF
 check

---
 interface/lib/classes/plugin_listview.inc.php      | 8 ++++++++
 interface/web/admin/templates/remote_user_list.htm | 2 +-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/interface/lib/classes/plugin_listview.inc.php b/interface/lib/classes/plugin_listview.inc.php
index bd0aa0e160..ced308b2e5 100644
--- a/interface/lib/classes/plugin_listview.inc.php
+++ b/interface/lib/classes/plugin_listview.inc.php
@@ -123,6 +123,10 @@ class plugin_listview extends plugin_base {
 		$lng_file = "lib/lang/".$app->functions->check_language($_SESSION["s"]["language"])."_".$app->listform->listDef['name']."_list.lng";
 		include $lng_file;
 		$listTpl->setVar($wb);
+		
+		$csrf_token = $app->auth->csrf_token_get($app->listform->listDef['name']);
+		$_csrf_id = $csrf_token['csrf_id'];
+		$_csrf_key = $csrf_token['csrf_key'];
 
 
 		// Get the data
@@ -157,6 +161,10 @@ class plugin_listview extends plugin_base {
 				// The variable "id" contains always the index field
 				$rec["id"] = $rec[$idx_key];
 				$rec["delete_confirmation"] = $wb['delete_confirmation'];
+				
+				// CSRF Token
+				$rec["csrf_id"] = $_csrf_id;
+				$rec["csrf_key"] = $_csrf_key;
 
 				$records_new[] = $rec;
 			}
diff --git a/interface/web/admin/templates/remote_user_list.htm b/interface/web/admin/templates/remote_user_list.htm
index de65c64536..7189dc20df 100644
--- a/interface/web/admin/templates/remote_user_list.htm
+++ b/interface/web/admin/templates/remote_user_list.htm
@@ -33,7 +33,7 @@
                             <td><a href="#" data-load-content="admin/remote_user_edit.php?id={tmpl_var name='remote_userid'}">{tmpl_var name="remote_userid"}</a></td>
                             <td><a href="#" data-load-content="admin/remote_user_edit.php?id={tmpl_var name='remote_userid'}">{tmpl_var name="remote_username"}</a></td>
                             <td class="text-right">
-                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/remote_user_del.php?id={tmpl_var name='remote_userid'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                                <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/remote_user_del.php?id={tmpl_var name='remote_userid'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
-- 
GitLab


From 92d734f89346e5a1c0e430c063658d1d7b560653 Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Mon, 14 Oct 2019 12:22:41 +0200
Subject: [PATCH 075/242] Improved Symlink option Apache vhost.conf.master

---
 server/conf/vhost.conf.master | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/server/conf/vhost.conf.master b/server/conf/vhost.conf.master
index 75f6a72e87..0982a3cf41 100644
--- a/server/conf/vhost.conf.master
+++ b/server/conf/vhost.conf.master
@@ -93,7 +93,7 @@
 				<FilesMatch ".+\.ph(p[345]?|t|tml)$">
 						SetHandler None
 				</FilesMatch>
-				Options +FollowSymLinks
+				Options +SymlinksIfOwnerMatch
 				AllowOverride <tmpl_var name='allow_override'>
 				<tmpl_if name='apache_version' op='>' value='2.2' format='version'>
 				Require all granted
@@ -125,7 +125,7 @@
 				<FilesMatch ".+\.ph(p[345]?|t|tml)$">
 						SetHandler None
 				</FilesMatch>
-				Options +FollowSymLinks
+				Options +SymlinksIfOwnerMatch
 				AllowOverride <tmpl_var name='allow_override'>
 				<tmpl_if name='apache_version' op='>' value='2.2' format='version'>
 				Require all granted
-- 
GitLab


From 5d261ed7063964baada64f08faf0bca99d71bc90 Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Mon, 14 Oct 2019 13:35:43 +0200
Subject: [PATCH 076/242] PHP compatibility changes (array definitions) in
 PowerDNS Plugin.

---
 server/plugins-available/powerdns_plugin.inc.php | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/server/plugins-available/powerdns_plugin.inc.php b/server/plugins-available/powerdns_plugin.inc.php
index 2e44e014d5..7ab23ec549 100644
--- a/server/plugins-available/powerdns_plugin.inc.php
+++ b/server/plugins-available/powerdns_plugin.inc.php
@@ -536,14 +536,14 @@ class powerdns_plugin {
 		$log[] = sprintf("\r\n%s %s", date('c'), 'Running set-nsec3 command...');
 		exec($cmd_set_nsec3, $log);
 
-		$pubkeys = [];
+		$pubkeys = array();
 		$cmd_show_zone = sprintf('%s show-zone %s 2>&1', $pdns_pdnssec, $zone);
 		$log[] = sprintf("\r\n%s %s", date('c'), 'Running show-zone command...');
 		exec($cmd_show_zone, $pubkeys);
 
 		$log = array_merge($log, $pubkeys);
 
-		$dnssec_info = array_merge($this->format_dnssec_pubkeys($pubkeys), ['', '== Raw log ============================'], $log);
+		$dnssec_info = array_merge($this->format_dnssec_pubkeys($pubkeys), array('', '== Raw log ============================'), $log);
 		$dnssec_info = implode("\r\n", $dnssec_info);
 
 		if ($app->dbmaster !== $app->db) {
@@ -553,7 +553,7 @@ class powerdns_plugin {
 	}
 
 	function format_dnssec_pubkeys($lines) {
-		$formatted = [];
+		$formatted = array();
 
 		// We don't care about the first two lines about presigning and NSEC
 		array_shift($lines);
@@ -574,7 +574,7 @@ class powerdns_plugin {
 					$key_type = $matches_key_type[1];
 
 					// We only care about the KSK or CSK
-					if (!in_array($key_type, ['KSK', 'CSK'], true)) {
+					if (!in_array($key_type, array('KSK', 'CSK'), true)) {
 						break;
 					}
 
@@ -677,7 +677,7 @@ class powerdns_plugin {
 		exec($cmd_disable_dnssec, $log);
 
 
-		$dnssec_info = array_merge(['== Raw log ============================'], $log);
+		$dnssec_info = array_merge(array('== Raw log ============================'), $log);
 		$dnssec_info = implode("\r\n", $dnssec_info);
 
 		if ($app->dbmaster !== $app->db) {
-- 
GitLab


From 7d41f01a2c3a4f6d4c9ae6751add7bae97bf3a12 Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Wed, 16 Oct 2019 17:09:24 +0200
Subject: [PATCH 077/242] Fixed #5429 Wrong class variable in
 server/lib/classes/db_mysql.inc.php LINE 275

---
 interface/lib/classes/db_mysql.inc.php | 2 +-
 server/lib/classes/db_mysql.inc.php    | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/interface/lib/classes/db_mysql.inc.php b/interface/lib/classes/db_mysql.inc.php
index 227fab73fa..9c7269e568 100644
--- a/interface/lib/classes/db_mysql.inc.php
+++ b/interface/lib/classes/db_mysql.inc.php
@@ -272,7 +272,7 @@ class db
 				if(!is_object($this->_iConnId)) {
 					$this->_iConnId = mysqli_init();
 				}
-				if(!mysqli_real_connect($this->_isConnId, $this->dbHost, $this->dbUser, $this->dbPass, $this->dbName, (int)$this->dbPort, NULL, $this->dbClientFlags)) {
+				if(!mysqli_real_connect($this->_iConnId, $this->dbHost, $this->dbUser, $this->dbPass, $this->dbName, (int)$this->dbPort, NULL, $this->dbClientFlags)) {
 					if(mysqli_connect_errno() == '111') {
 						// server is not available
 						if($try > 9) {
diff --git a/server/lib/classes/db_mysql.inc.php b/server/lib/classes/db_mysql.inc.php
index 227fab73fa..9c7269e568 100644
--- a/server/lib/classes/db_mysql.inc.php
+++ b/server/lib/classes/db_mysql.inc.php
@@ -272,7 +272,7 @@ class db
 				if(!is_object($this->_iConnId)) {
 					$this->_iConnId = mysqli_init();
 				}
-				if(!mysqli_real_connect($this->_isConnId, $this->dbHost, $this->dbUser, $this->dbPass, $this->dbName, (int)$this->dbPort, NULL, $this->dbClientFlags)) {
+				if(!mysqli_real_connect($this->_iConnId, $this->dbHost, $this->dbUser, $this->dbPass, $this->dbName, (int)$this->dbPort, NULL, $this->dbClientFlags)) {
 					if(mysqli_connect_errno() == '111') {
 						// server is not available
 						if($try > 9) {
-- 
GitLab


From 2fc824fe37ff504636a00d0a9171ba0045004795 Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Wed, 16 Oct 2019 17:10:12 +0200
Subject: [PATCH 078/242] Changed PHP syntax in monitor_tools.inc.php for PHP
 5.3 compatibility.

---
 server/lib/classes/monitor_tools.inc.php | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/server/lib/classes/monitor_tools.inc.php b/server/lib/classes/monitor_tools.inc.php
index b2bd5ede30..d8d325fe60 100644
--- a/server/lib/classes/monitor_tools.inc.php
+++ b/server/lib/classes/monitor_tools.inc.php
@@ -254,7 +254,7 @@ class monitor_tools {
             preg_match_all('/NAME=\"([\w ]+)\"/m', $content, $name);
             preg_match_all('/VERSION_ID=\"([0-9]{1,2})\.?([0-9]{0,2})\.?([0-9]*).$/m', $content, $version);
 			$distname = is_array($name) ? $name[1][0] : 'openSUSE';
-			$distver = is_array($version) ? implode('.', array_filter([$version[1][0],$version[2][0],$version[3][0]],'strlen')) : 'Unknown';
+			$distver = is_array($version) ? implode('.', array_filter(array($version[1][0],$version[2][0],$version[3][0]),'strlen')) : 'Unknown';
 			$distid = 'opensuse112';
 			$distbaseid = 'opensuse';
 		}  else {
@@ -309,7 +309,7 @@ class monitor_tools {
 		} elseif(stristr($content, 'CentOS Linux release 7')) {
 			preg_match_all('/([0-9]{1,2})\.?([0-9]{0,2})\.?([0-9]*)/', $content, $version);
 			$distname = 'CentOS';
-			$distver = is_array($version)? implode('.', array_filter([$version[1][0],$version[2][0],$version[3][0]],'strlen')) :'Unknown';
+			$distver = is_array($version)? implode('.', array_filter(array($version[1][0],$version[2][0],$version[3][0]),'strlen')) :'Unknown';
 			$distbaseid = 'fedora';
 			$var=explode(" ", $content);
 			$var=explode(".", $var[3]);
-- 
GitLab


From 9d1d86244a7fc64c317f1b52ab1c5e46fd8ed9e4 Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Wed, 23 Oct 2019 08:35:02 +0200
Subject: [PATCH 079/242] Changed version file download URL in
 ispconfig_update.php to https.

---
 server/scripts/ispconfig_update.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/server/scripts/ispconfig_update.php b/server/scripts/ispconfig_update.php
index 0c2d3789e8..2c77607b65 100644
--- a/server/scripts/ispconfig_update.php
+++ b/server/scripts/ispconfig_update.php
@@ -91,7 +91,7 @@ echo "Please choose the update method. For production systems select 'stable'. \
 $method = simple_query('Select update method', array('stable', 'git-stable', 'git-master'), 'stable');
 
 if($method == 'stable') {
-	$new_version = @file_get_contents('http://www.ispconfig.org/downloads/ispconfig3_version.txt') or die('Unable to retrieve version file.');
+	$new_version = @file_get_contents('https://www.ispconfig.org/downloads/ispconfig3_version.txt') or die('Unable to retrieve version file.');
 	$new_version = trim($new_version);
 	if(version_compare($new_version, ISPC_APP_VERSION, '>')) {
 		passthru('/usr/local/ispconfig/server/scripts/update_stable.sh');
-- 
GitLab


From b047ebde79ffd12b1628cd2127b75e007ca51cbd Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Wed, 23 Oct 2019 08:36:05 +0200
Subject: [PATCH 080/242] Changed link to ispconfig download to https.

---
 interface/web/dashboard/dashboard.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/interface/web/dashboard/dashboard.php b/interface/web/dashboard/dashboard.php
index 5426ba9572..005c364aa5 100644
--- a/interface/web/dashboard/dashboard.php
+++ b/interface/web/dashboard/dashboard.php
@@ -149,7 +149,7 @@ if($_SESSION["s"]["user"]["typ"] == 'admin') {
 		$info[] = array('info_msg' => '<p>There is a new Version of ISPConfig 3 available!</p>' .
 			'<p>This Version: <b>' . $v1 . '</b></p>' .
 			'<p>New Version : <b>' . $v2 .  '</b></p>' .
-			'<p><a href="http://www.ispconfig.org/ispconfig-3/download" target="ISPC">See more...</a></p>');
+			'<p><a href="https://www.ispconfig.org/ispconfig-3/download" target="ISPC">See more...</a></p>');
 	}
 }
 
-- 
GitLab


From f0bfe454941703b2954c78fe96f736bb06a21f60 Mon Sep 17 00:00:00 2001
From: Florian Schaal <info@schaal-24.de>
Date: Mon, 4 Nov 2019 15:17:20 +0100
Subject: [PATCH 081/242] show ips only with vhost = y and  show
 directive_snippets for the admin even if they are set to customer_viewable =
 'n'

---
 interface/web/sites/web_vhost_domain_edit.php | 20 +++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)

diff --git a/interface/web/sites/web_vhost_domain_edit.php b/interface/web/sites/web_vhost_domain_edit.php
index 86deb5b2a5..52b44acc79 100644
--- a/interface/web/sites/web_vhost_domain_edit.php
+++ b/interface/web/sites/web_vhost_domain_edit.php
@@ -206,7 +206,7 @@ class page_action extends tform_actions {
 			}
 			
 			//* Fill the IPv4 select field with the IP addresses that are allowed for this client on the current server
-			$sql = "SELECT ip_address FROM server_ip WHERE server_id = ? AND ip_type = 'IPv4' AND (client_id = 0 OR client_id=".$_SESSION['s']['user']['client_id'].")";
+			$sql = "SELECT ip_address FROM server_ip WHERE server_id = ? AND ip_type = 'IPv4' AND virtualhost = 'y' AND (client_id = 0 OR client_id=".$_SESSION['s']['user']['client_id'].")";
 			$ips = $app->db->queryAllRecords($sql, $server_id);
 			$ip_select = ($web_config[$server_id]['enable_ip_wildcard'] == 'y')?"<option value='*'>*</option>":"";
 			//if(!in_array($this->dataRecord["ip_address"], $ips)) $ip_select .= "<option value='".$this->dataRecord["ip_address"]."' SELECTED>".$this->dataRecord["ip_address"]."</option>\r\n";
@@ -222,7 +222,7 @@ class page_action extends tform_actions {
 			unset($ips);
 
 			//* Fill the IPv6 select field with the IP addresses that are allowed for this client
-			$sql = "SELECT ip_address FROM server_ip WHERE server_id = ? AND ip_type = 'IPv6' AND (client_id = 0 OR client_id=?)";
+			$sql = "SELECT ip_address FROM server_ip WHERE server_id = ? AND ip_type = 'IPv6' AND virtualhost = 'y' AND (client_id = 0 OR client_id=?)";
 			$ips = $app->db->queryAllRecords($sql, $server_id, $_SESSION['s']['user']['client_id']);
 			//$ip_select = ($web_config[$server_id]['enable_ip_wildcard'] == 'y')?"<option value='*'>*</option>":"";
 			//$ip_select = "";
@@ -352,7 +352,7 @@ class page_action extends tform_actions {
 			}
 			
 			//* Fill the IPv4 select field with the IP addresses that are allowed for this client
-			$sql = "SELECT ip_address FROM server_ip WHERE server_id = ? AND ip_type = 'IPv4' AND (client_id = 0 OR client_id=?)";
+			$sql = "SELECT ip_address FROM server_ip WHERE server_id = ? AND ip_type = 'IPv4' AND virtualhost = 'y' AND (client_id = 0 OR client_id=?)";
 			$ips = $app->db->queryAllRecords($sql, $server_id, $_SESSION['s']['user']['client_id']);
 			$ip_select = ($web_config[$server_id]['enable_ip_wildcard'] == 'y')?"<option value='*'>*</option>":"";
 			//if(!in_array($this->dataRecord["ip_address"], $ips)) $ip_select .= "<option value='".$this->dataRecord["ip_address"]."' SELECTED>".$this->dataRecord["ip_address"]."</option>\r\n";
@@ -368,7 +368,7 @@ class page_action extends tform_actions {
 			unset($ips);
 
 			//* Fill the IPv6 select field with the IP addresses that are allowed for this client
-			$sql = "SELECT ip_address FROM server_ip WHERE server_id = ? AND ip_type = 'IPv6' AND (client_id = 0 OR client_id=?)";
+			$sql = "SELECT ip_address FROM server_ip WHERE server_id = ? AND ip_type = 'IPv6' AND virtualhost = 'y' AND (client_id = 0 OR client_id=?)";
 			$ips = $app->db->queryAllRecords($sql, $server_id, $_SESSION['s']['user']['client_id']);
 			$ip_select = "<option value=''></option>";
 			//$ip_select = "";
@@ -549,7 +549,7 @@ class page_action extends tform_actions {
 			}
 
 			//* Fill the IPv4 select field
-			$sql = "SELECT ip_address FROM server_ip WHERE ip_type = 'IPv4' AND server_id = ?";
+			$sql = "SELECT ip_address FROM server_ip WHERE ip_type = 'IPv4' AND virtualhost = 'y' AND server_id = ?";
 			$ips = $app->db->queryAllRecords($sql, $server_id);
 			$ip_select = ($web_config['enable_ip_wildcard'] == 'y')?"<option value='*'>*</option>":"";
 			//$ip_select = "";
@@ -564,7 +564,7 @@ class page_action extends tform_actions {
 			unset($ips);
 
 			//* Fill the IPv6 select field
-			$sql = "SELECT ip_address FROM server_ip WHERE ip_type = 'IPv6' AND server_id = ?";
+			$sql = "SELECT ip_address FROM server_ip WHERE ip_type = 'IPv6' AND virtualhost = 'y' AND server_id = ?";
 			$ips = $app->db->queryAllRecords($sql, $server_id);
 			$ip_select = "<option value=''></option>";
 			//$ip_select = "";
@@ -863,8 +863,12 @@ class page_action extends tform_actions {
 			}
 			$directive_snippets_id_select .= '</optgroup>';
 		}
-		
-		$directive_snippets = $app->db->queryAllRecords("SELECT directive_snippets_id, name FROM directive_snippets WHERE customer_viewable = 'y' AND active = 'y' AND master_directive_snippets_id = 0 AND type = ? ORDER BY name ASC", $server_type);
+
+		if($is_admin) {
+			$directive_snippets = $app->db->queryAllRecords("SELECT directive_snippets_id, name FROM directive_snippets WHERE active = 'y' AND master_directive_snippets_id = 0 AND type = ? ORDER BY name ASC", $server_type);
+		} else {
+			$directive_snippets = $app->db->queryAllRecords("SELECT directive_snippets_id, name FROM directive_snippets WHERE customer_viewable = 'y' AND active = 'y' AND master_directive_snippets_id = 0 AND type = ? ORDER BY name ASC", $server_type);
+		}
 		if(is_array($directive_snippets) && !empty($directive_snippets)){
 			$directive_snippets_id_select .= '<optgroup label="'.$app->tform->wordbook["select_directive_snippet_txt"].'">';
 			foreach($directive_snippets as $directive_snippet){
-- 
GitLab


From db4158a2c8a7e917dc3e2cad756f5e2b1419a74b Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Wed, 13 Nov 2019 13:51:45 +0100
Subject: [PATCH 082/242] - Table sys_log clean-up not deleting entries with
 server_id 0, fixes #5450

---
 server/lib/classes/cron.d/200-logfiles.inc.php | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/server/lib/classes/cron.d/200-logfiles.inc.php b/server/lib/classes/cron.d/200-logfiles.inc.php
index b229c76a8a..e2d9e9bb9e 100644
--- a/server/lib/classes/cron.d/200-logfiles.inc.php
+++ b/server/lib/classes/cron.d/200-logfiles.inc.php
@@ -240,6 +240,18 @@ class cronjob_logfiles extends cronjob {
              */
 			$sql = "DELETE FROM sys_log WHERE tstamp < ? AND server_id != 0";
 			$app->dbmaster->query($sql, $tstamp);
+			
+			/*
+			 * now delete those entries without a linked datalog entry (datalog_id = 0)
+			 */
+			$sql = "DELETE FROM sys_log WHERE tstamp < ? AND server_id = 0 AND datalog_id = 0";
+			$app->dbmaster->query($sql, $tstamp);
+
+			/*
+			 * now delete those entries with a linked datalog entry (datalog_id != 0) only if older than 30 days
+			 */
+			$sql = "DELETE FROM sys_log WHERE tstamp < ? AND server_id = 0 AND datalog_id != 0";
+			$app->dbmaster->query($sql, $tstamp - (3600 * 24 * 23));
 
 			/*
              * Delete all remote-actions "done" and older than 7 days
-- 
GitLab


From 746e79db393f22b03fdd408cc086eecc084f1991 Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Tue, 19 Nov 2019 21:34:03 +0100
Subject: [PATCH 083/242] - backported acme.sh support from master branch,
 fixes #5461

---
 .../classes/cron.d/900-letsencrypt.inc.php    |  25 +-
 server/lib/classes/letsencrypt.inc.php        | 215 +++++++++++++-----
 server/lib/classes/system.inc.php             |   5 +-
 3 files changed, 180 insertions(+), 65 deletions(-)

diff --git a/server/lib/classes/cron.d/900-letsencrypt.inc.php b/server/lib/classes/cron.d/900-letsencrypt.inc.php
index 3e2c9190c6..b0f6f39c51 100644
--- a/server/lib/classes/cron.d/900-letsencrypt.inc.php
+++ b/server/lib/classes/cron.d/900-letsencrypt.inc.php
@@ -35,8 +35,6 @@ class cronjob_letsencrypt extends cronjob {
 
 	/* this function is optional if it contains no custom code */
 	public function onPrepare() {
-		global $app;
-
 		parent::onPrepare();
 	}
 
@@ -52,10 +50,19 @@ class cronjob_letsencrypt extends cronjob {
 		global $app, $conf;
 		
 		$server_config = $app->getconf->get_server_config($conf['server_id'], 'server');
-		if(!isset($server_config['migration_mode']) || $server_config['migration_mode'] != 'y') {
-			$letsencrypt = explode("\n", shell_exec('which letsencrypt certbot /root/.local/share/letsencrypt/bin/letsencrypt /opt/eff.org/certbot/venv/bin/certbot'));
-			$letsencrypt = reset($letsencrypt);
-			if(is_executable($letsencrypt)) {
+		if(!isset($server_config['migration_mode']) || $server_config['migration_mode'] != 'y') {			
+			$acme = $app->letsencrypt->get_acme_script();
+			if($acme) {
+				// skip letsencrypt
+				parent::onRunJob();
+				return;
+			}
+			
+			$letsencrypt = $app->letsencrypt->get_certbot_script();
+			if($letsencrypt) {
+				$ret = null;
+				$val = 0;
+				$matches = array();
 				$version = exec($letsencrypt . ' --version  2>&1', $ret, $val);
 				if(preg_match('/^(\S+|\w+)\s+(\d+(\.\d+)+)$/', $version, $matches)) {
 					$type = strtolower($matches[1]);
@@ -86,11 +93,7 @@ class cronjob_letsencrypt extends cronjob {
 
 	/* this function is optional if it contains no custom code */
 	public function onAfterRun() {
-		global $app;
-
 		parent::onAfterRun();
 	}
 
-}
-
-?>
+}
\ No newline at end of file
diff --git a/server/lib/classes/letsencrypt.inc.php b/server/lib/classes/letsencrypt.inc.php
index 62080e29b4..291ee41b12 100644
--- a/server/lib/classes/letsencrypt.inc.php
+++ b/server/lib/classes/letsencrypt.inc.php
@@ -37,15 +37,136 @@ class letsencrypt {
 	 */
 	private $base_path = '/etc/letsencrypt';
 	private $renew_config_path = '/etc/letsencrypt/renewal';
-
+	private $certbot_use_certcommand = false;
 
 	public function __construct(){
 
 	}
+	
+	public function get_acme_script() {
+		$acme = explode("\n", shell_exec('which /usr/local/ispconfig/server/scripts/acme.sh /root/.acme.sh/acme.sh'));
+		$acme = reset($acme);
+		if(is_executable($acme)) {
+			return $acme;
+		} else {
+			return false;
+		}
+	}
+	
+	public function get_acme_command($domains, $key_file, $bundle_file, $cert_file) {
+		
+		$letsencrypt = $this->get_acme_script();
+		
+		$cmd = '';
+		// generate cli format
+		foreach($domains as $domain) {
+			$cmd .= (string) " -d " . $domain;
+		}
+		
+		if($cmd == '') {
+			return false;
+		}
+		
+		$cmd = 'R=0 ; C=0 ; ' . $letsencrypt . ' --issue ' . $cmd . ' -w /usr/local/ispconfig/interface/acme ; R=$? ; if [[ $R -eq 0 || $R -eq 2 ]] ; then ' . $letsencrypt . ' --install-cert ' . $cmd . ' --key-file ' . escapeshellarg($key_file) . ' --fullchain-file ' . escapeshellarg($bundle_file) . ' --cert-file ' . escapeshellarg($cert_file) . ' --reloadcmd ' . escapeshellarg($this->get_reload_command()) . '; C=$? ; fi ; if [[ $C -eq 0 ]] ; then exit $R ; else exit $C  ; fi';
+		
+		return $cmd;
+	}
+	
+	public function get_certbot_script() {
+		$letsencrypt = explode("\n", shell_exec('which letsencrypt certbot /root/.local/share/letsencrypt/bin/letsencrypt /opt/eff.org/certbot/venv/bin/certbot'));
+		$letsencrypt = reset($letsencrypt);
+		if(is_executable($letsencrypt)) {
+			return $letsencrypt;
+		} else {
+			return false;
+		}
+	}
 
+	private function install_acme() {
+		$install_cmd = 'wget -O -  https://get.acme.sh | sh';
+		$ret = null;
+		$val = 0;
+		exec($install_cmd . ' 2>&1', $ret, $val);
+		
+		return ($val == 0 ? true : false);
+	}
+	
+	private function get_reload_command() {
+		global $app, $conf;
+		
+		$web_config = $app->getconf->get_server_config($conf['server_id'], 'web');
+
+		$daemon = '';
+		switch ($web_config['server_type']) {
+			case 'nginx':
+				$daemon = $web_config['server_type'];
+				break;
+			default:
+				if(is_file($conf['init_scripts'] . '/' . 'httpd24-httpd') || is_dir('/opt/rh/httpd24/root/etc/httpd')) {
+					$daemon = 'httpd24-httpd';
+				} elseif(is_file($conf['init_scripts'] . '/' . 'httpd') || is_dir('/etc/httpd')) {
+					$daemon = 'httpd';
+				} else {
+					$daemon = 'apache2';
+				}
+		}
+
+		$cmd = $app->system->getinitcommand($daemon, 'force-reload');
+		return $cmd;
+	}
+	
+	public function get_certbot_command($domains) {
+		global $app;
+		
+		$letsencrypt = $this->get_certbot_script();
+		
+		$cmd = '';
+		// generate cli format
+		foreach($domains as $domain) {
+			$cmd .= (string) " --domains " . $domain;
+		}
+		
+		if($cmd == '') {
+			return false;
+		}
+		
+		$matches = array();
+		$ret = null;
+		$val = 0;
+		
+		$letsencrypt_version = exec($letsencrypt . ' --version  2>&1', $ret, $val);
+		if(preg_match('/^(\S+|\w+)\s+(\d+(\.\d+)+)$/', $letsencrypt_version, $matches)) {
+			$letsencrypt_version = $matches[2];
+		}
+		if (version_compare($letsencrypt_version, '0.22', '>=')) {
+			$acme_version = 'https://acme-v02.api.letsencrypt.org/directory';
+		} else {
+			$acme_version = 'https://acme-v01.api.letsencrypt.org/directory';
+		}
+		if (version_compare($letsencrypt_version, '0.30', '>=')) {
+			$app->log("LE version is " . $letsencrypt_version . ", so using certificates command", LOGLEVEL_DEBUG);
+			$this->certbot_use_certcommand = true;
+			$webroot_map = array();
+			for($i = 0; $i < count($domains); $i++) {
+				$webroot_map[$domains[$i]] = '/usr/local/ispconfig/interface/acme';
+			}
+			$webroot_args = "--webroot-map " . escapeshellarg(str_replace(array("\r", "\n"), '', json_encode($webroot_map)));
+		} else {
+			$webroot_args = "$cmd --webroot-path /usr/local/ispconfig/interface/acme";
+		}
+		
+		$cmd = $letsencrypt . " certonly -n --text --agree-tos --expand --authenticator webroot --server $acme_version --rsa-key-size 4096 --email postmaster@$domain $cmd --webroot-path /usr/local/ispconfig/interface/acme";
+		
+		return $cmd;
+	}
+	
 	public function get_letsencrypt_certificate_paths($domains = array()) {
 		global $app;
 		
+		if($this->get_acme_script()) {
+			return false;
+		}
+		
 		if(empty($domains)) return false;
 		if(!is_dir($this->renew_config_path)) return false;
 		
@@ -133,9 +254,13 @@ class letsencrypt {
 	}
 	
 	private function get_ssl_domain($data) {
-		$domain = $data['new']['ssl_domain'];
-		if(!$domain) $domain = $data['new']['domain'];
+		global $app;
 		
+		$domain = $data['new']['ssl_domain'];
+		if(!$domain) {
+			$domain = $data['new']['domain'];
+		}
+
 		if($data['new']['ssl'] == 'y' && $data['new']['ssl_letsencrypt'] == 'y') {
 			$domain = $data['new']['domain'];
 			if(substr($domain, 0, 2) === '*.') {
@@ -149,8 +274,6 @@ class letsencrypt {
 	}
 	
 	public function get_website_certificate_paths($data) {
-		global $app;
-		
 		$ssl_dir = $data['new']['document_root'].'/ssl';
 		$domain = $this->get_ssl_domain($data);
 		
@@ -183,11 +306,17 @@ class letsencrypt {
 		$web_config = $app->getconf->get_server_config($conf['server_id'], 'web');
 		$server_config = $app->getconf->get_server_config($conf['server_id'], 'server');
 		
+		$use_acme = false;
+		if($this->get_acme_script()) {
+			$use_acme = true;
+		} elseif(!$this->get_certbot_script()) {
+			// acme and le missing
+			$this->install_acme();
+		}
+		
 		$tmp = $app->letsencrypt->get_website_certificate_paths($data);
 		$domain = $tmp['domain'];
 		$key_file = $tmp['key'];
-		$key_file2 = $tmp['key2'];
-		$csr_file = $tmp['csr'];
 		$crt_file = $tmp['crt'];
 		$bundle_file = $tmp['bundle'];
 		
@@ -256,66 +385,50 @@ class letsencrypt {
 			$app->log("There were " . $le_domain_count . " domains in the domain list. LE only supports 100, so we strip the rest.", LOGLEVEL_WARN);
 		}
 
-		// generate cli format
-		foreach($temp_domains as $temp_domain) {
-			$cli_domain_arg .= (string) " --domains " . $temp_domain;
-		}
-
 		// unset useless data
 		unset($subdomains);
 		unset($aliasdomains);
 		
-		$letsencrypt_use_certcommand = false;
+		$this->certbot_use_certcommand = false;
 		$letsencrypt_cmd = '';
-		$letsencrypt = false;
-		$success = false;
-		
-		$letsencrypt = explode("\n", shell_exec('which letsencrypt certbot /root/.local/share/letsencrypt/bin/letsencrypt /opt/eff.org/certbot/venv/bin/certbot'));
-		$letsencrypt = reset($letsencrypt);
-		if(!is_executable($letsencrypt)) {
-			$letsencrypt = false;
+		$allow_return_codes = null;
+		if($use_acme) {
+			$letsencrypt_cmd = $this->get_acme_command($temp_domains, $key_file, $bundle_file, $crt_file);
+			$allow_return_codes = array(2);
+		} else {
+			$letsencrypt_cmd = $this->get_certbot_command($temp_domains);
 		}
-		if(!empty($cli_domain_arg)) {
+		
+		$success = false;
+		if($letsencrypt_cmd) {
 			if(!isset($server_config['migration_mode']) || $server_config['migration_mode'] != 'y') {
 				$app->log("Create Let's Encrypt SSL Cert for: $domain", LOGLEVEL_DEBUG);
 				$app->log("Let's Encrypt SSL Cert domains: $cli_domain_arg", LOGLEVEL_DEBUG);
-			
-				if($letsencrypt) {
-				    $letsencrypt_version = exec($letsencrypt . ' --version  2>&1', $ret, $val);
-                    if(preg_match('/^(\S+|\w+)\s+(\d+(\.\d+)+)$/', $letsencrypt_version, $matches)) {
-                        $letsencrypt_version = $matches[2];
-                    }
-                    if (version_compare($letsencrypt_version, '0.22', '>=')) {
-                        $acme_version = 'https://acme-v02.api.letsencrypt.org/directory';
-                    } else {
-                        $acme_version = 'https://acme-v01.api.letsencrypt.org/directory';
-                    }
-					if (version_compare($letsencrypt_version, '0.30', '>=')) {
-						$app->log("LE version is " . $letsencrypt_version . ", so using certificates command", LOGLEVEL_DEBUG);
-						$letsencrypt_use_certcommand = true;
-						$webroot_map = array();
-						for($i = 0; $i < count($temp_domains); $i++) {
-							$webroot_map[$temp_domains[$i]] = '/usr/local/ispconfig/interface/acme';
-						}
-						$webroot_args = "--webroot-map " . escapeshellarg(str_replace(array("\r", "\n"), '', json_encode($webroot_map)));
-					} else {
-						$webroot_args = "$cli_domain_arg --webroot-path /usr/local/ispconfig/interface/acme";
-					}
-					
-                    $letsencrypt_cmd = $letsencrypt . " certonly -n --text --agree-tos --expand --authenticator webroot --server $acme_version --rsa-key-size 4096 --email postmaster@$domain $webroot_args";
-					$success = $app->system->_exec($letsencrypt_cmd);
-				}
+
+				$success = $app->system->_exec($letsencrypt_cmd, $allow_return_codes);
 			} else {
 				$app->log("Migration mode active, skipping Let's Encrypt SSL Cert creation for: $domain", LOGLEVEL_DEBUG);
 				$success = true;
 			}
 		}
+
+		if($use_acme === true) {
+			if(!$success) {
+				$app->log('Let\'s Encrypt SSL Cert for: ' . $domain . ' could not be issued.', LOGLEVEL_WARN);
+				$app->log($letsencrypt_cmd, LOGLEVEL_WARN);
+				return false;
+			} else {
+				return true;
+			}
+		}
+		
 		$le_files = array();
-		if($letsencrypt_use_certcommand === true && $letsencrypt) {
-			$letsencrypt_cmd = $letsencrypt . " certificates " . $cli_domain_arg;
+		if($this->certbot_use_certcommand === true && $letsencrypt_cmd) {
+			$letsencrypt_cmd = $letsencrypt_cmd . " certificates " . $cli_domain_arg;
 			$output = explode("\n", shell_exec($letsencrypt_cmd . " 2>/dev/null | grep -v '^\$'"));
 			$le_path = '';
 			$skip_to_next = true;
+			$matches = null;
 			foreach($output as $outline) {
 				$outline = trim($outline);
 				$app->log("LE CERT OUTPUT: " . $outline, LOGLEVEL_DEBUG);
@@ -415,6 +528,4 @@ class letsencrypt {
 			return false;
 		}
 	}
-}
-
-?>
+}
\ No newline at end of file
diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php
index 3db57c510f..551e4e4853 100644
--- a/server/lib/classes/system.inc.php
+++ b/server/lib/classes/system.inc.php
@@ -1742,13 +1742,14 @@ class system{
 
 	}
 	
-	function _exec($command) {
+	function _exec($command, $allow_return_codes = null) {
 		global $app;
 		$out = array();
 		$ret = 0;
 		$app->log('exec: '.$command, LOGLEVEL_DEBUG);
 		exec($command, $out, $ret);
-		if($ret != 0) return false;
+		if(is_array($allow_return_codes) && in_array($ret, $allow_return_codes)) return true;
+		elseif($ret != 0) return false;
 		else return true;
 	}
 
-- 
GitLab


From 58708d959ca14762b4280c42348b5f9b85cc809c Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Fri, 22 Nov 2019 13:20:06 +0100
Subject: [PATCH 084/242] - added list id to mail filter options

---
 interface/lib/classes/remote.d/server.inc.php           | 4 +---
 interface/web/mail/form/mail_user_filter.tform.php      | 2 +-
 interface/web/mail/lib/lang/ar_mail_user_filter.lng     | 1 +
 interface/web/mail/lib/lang/ca_mail_user_filter.lng     | 1 +
 interface/web/mail/lib/lang/dk_mail_user_filter.lng     | 1 +
 interface/web/mail/lib/lang/en_mail_user_filter.lng     | 1 +
 interface/web/mail/lib/lang/es_mail_user_filter.lng     | 1 +
 interface/web/mail/lib/lang/fi_mail_user_filter.lng     | 1 +
 interface/web/mail/lib/lang/fr_mail_user_filter.lng     | 1 +
 interface/web/mail/lib/lang/id_mail_user_filter.lng     | 1 +
 interface/web/mail/lib/lang/ja_mail_user_filter.lng     | 1 +
 interface/web/mail/lib/lang/pt_mail_user_filter.lng     | 1 +
 interface/web/mail/lib/lang/ro_mail_user_filter.lng     | 1 +
 interface/web/mail/lib/lang/sk_mail_user_filter.lng     | 1 +
 interface/web/mailuser/form/mail_user_filter.tform.php  | 2 +-
 interface/web/mailuser/lib/lang/ar_mail_user_filter.lng | 1 +
 interface/web/mailuser/lib/lang/bg_mail_user_filter.lng | 1 +
 interface/web/mailuser/lib/lang/ca_mail_user_filter.lng | 1 +
 interface/web/mailuser/lib/lang/dk_mail_user_filter.lng | 1 +
 interface/web/mailuser/lib/lang/el_mail_user_filter.lng | 1 +
 interface/web/mailuser/lib/lang/en_mail_user_filter.lng | 1 +
 interface/web/mailuser/lib/lang/es_mail_user_filter.lng | 1 +
 interface/web/mailuser/lib/lang/fi_mail_user_filter.lng | 1 +
 interface/web/mailuser/lib/lang/hu_mail_user_filter.lng | 1 +
 interface/web/mailuser/lib/lang/id_mail_user_filter.lng | 1 +
 interface/web/mailuser/lib/lang/ja_mail_user_filter.lng | 1 +
 interface/web/mailuser/lib/lang/pl_mail_user_filter.lng | 1 +
 interface/web/mailuser/lib/lang/pt_mail_user_filter.lng | 1 +
 interface/web/mailuser/lib/lang/ro_mail_user_filter.lng | 1 +
 interface/web/mailuser/lib/lang/sk_mail_user_filter.lng | 1 +
 30 files changed, 30 insertions(+), 5 deletions(-)

diff --git a/interface/lib/classes/remote.d/server.inc.php b/interface/lib/classes/remote.d/server.inc.php
index 4962cb4c59..77649d1bb4 100644
--- a/interface/lib/classes/remote.d/server.inc.php
+++ b/interface/lib/classes/remote.d/server.inc.php
@@ -288,6 +288,4 @@ class remoting_server extends remoting {
 			return false;
 		}
 	}
-}
-
-?>
+}
\ No newline at end of file
diff --git a/interface/web/mail/form/mail_user_filter.tform.php b/interface/web/mail/form/mail_user_filter.tform.php
index c1134c5e41..be5fba3ed7 100644
--- a/interface/web/mail/form/mail_user_filter.tform.php
+++ b/interface/web/mail/form/mail_user_filter.tform.php
@@ -88,7 +88,7 @@ $form["tabs"]['filter'] = array (
 			'datatype' => 'VARCHAR',
 			'formtype' => 'SELECT',
 			'default' => '',
-			'value'  => array('Subject' => 'subject_txt', 'From'=>'from_txt', 'To'=>'to_txt')
+			'value'  => array('Subject' => 'subject_txt', 'From'=>'from_txt', 'To'=>'to_txt', 'List-Id'=>'list_id_txt')
 		),
 		'op' => array (
 			'datatype' => 'VARCHAR',
diff --git a/interface/web/mail/lib/lang/ar_mail_user_filter.lng b/interface/web/mail/lib/lang/ar_mail_user_filter.lng
index b5d31b589c..9a15472e88 100644
--- a/interface/web/mail/lib/lang/ar_mail_user_filter.lng
+++ b/interface/web/mail/lib/lang/ar_mail_user_filter.lng
@@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.';
 $wb['subject_txt'] = 'Subject';
 $wb['from_txt'] = 'From';
 $wb['to_txt'] = 'To';
+$wb['list_id_txt'] = 'List ID';
 $wb['contains_txt'] = 'Contains';
 $wb['is_txt'] = 'Is';
 $wb['begins_with_txt'] = 'Begins with';
diff --git a/interface/web/mail/lib/lang/ca_mail_user_filter.lng b/interface/web/mail/lib/lang/ca_mail_user_filter.lng
index 14b80ee07b..8744b2ab79 100644
--- a/interface/web/mail/lib/lang/ca_mail_user_filter.lng
+++ b/interface/web/mail/lib/lang/ca_mail_user_filter.lng
@@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'Le nombre max de filtres courriel est atteint.';
 $wb['subject_txt'] = 'Sujet';
 $wb['from_txt'] = 'De';
 $wb['to_txt'] = 'Pour';
+$wb['list_id_txt'] = 'List ID';
 $wb['contains_txt'] = 'Contient';
 $wb['is_txt'] = 'Est';
 $wb['begins_with_txt'] = 'Commence par';
diff --git a/interface/web/mail/lib/lang/dk_mail_user_filter.lng b/interface/web/mail/lib/lang/dk_mail_user_filter.lng
index d43af17ffb..ef8be2a0c9 100644
--- a/interface/web/mail/lib/lang/dk_mail_user_filter.lng
+++ b/interface/web/mail/lib/lang/dk_mail_user_filter.lng
@@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'Max. antal af mailfiltere er nået.';
 $wb['subject_txt'] = 'Emne';
 $wb['from_txt'] = 'Fra';
 $wb['to_txt'] = 'Til';
+$wb['list_id_txt'] = 'List ID';
 $wb['contains_txt'] = 'Indeholder';
 $wb['is_txt'] = 'Er';
 $wb['begins_with_txt'] = 'Begynder med';
diff --git a/interface/web/mail/lib/lang/en_mail_user_filter.lng b/interface/web/mail/lib/lang/en_mail_user_filter.lng
index e78f808efa..462ee6d936 100644
--- a/interface/web/mail/lib/lang/en_mail_user_filter.lng
+++ b/interface/web/mail/lib/lang/en_mail_user_filter.lng
@@ -11,6 +11,7 @@ $wb["limit_mailfilter_txt"] = 'The max. number of mailfilters is reached.';
 $wb['subject_txt'] = 'Subject';
 $wb['from_txt'] = 'From';
 $wb['to_txt'] = 'To';
+$wb['list_id_txt'] = 'List ID';
 $wb['contains_txt'] = 'Contains';
 $wb['is_txt'] = 'Is';
 $wb['begins_with_txt'] = 'Begins with';
diff --git a/interface/web/mail/lib/lang/es_mail_user_filter.lng b/interface/web/mail/lib/lang/es_mail_user_filter.lng
index 94100ef7a3..ed221d5cb3 100755
--- a/interface/web/mail/lib/lang/es_mail_user_filter.lng
+++ b/interface/web/mail/lib/lang/es_mail_user_filter.lng
@@ -25,5 +25,6 @@ $wb['subject_txt'] = 'Asunto';
 $wb['target_error_regex'] = 'El destino solo puede contener los siguientes caracteres: a-z, 0-9, -, ., _, y {espacio}';
 $wb['target_txt'] = 'Carpeta';
 $wb['to_txt'] = 'Para';
+$wb['list_id_txt'] = 'List ID';
 $wb['move_to_txt'] = 'Move to';
 ?>
diff --git a/interface/web/mail/lib/lang/fi_mail_user_filter.lng b/interface/web/mail/lib/lang/fi_mail_user_filter.lng
index 1a4e7218a2..1238dc86fd 100755
--- a/interface/web/mail/lib/lang/fi_mail_user_filter.lng
+++ b/interface/web/mail/lib/lang/fi_mail_user_filter.lng
@@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.';
 $wb['subject_txt'] = 'Subject';
 $wb['from_txt'] = 'From';
 $wb['to_txt'] = 'To';
+$wb['list_id_txt'] = 'List ID';
 $wb['contains_txt'] = 'Contains';
 $wb['is_txt'] = 'Is';
 $wb['begins_with_txt'] = 'Begins with';
diff --git a/interface/web/mail/lib/lang/fr_mail_user_filter.lng b/interface/web/mail/lib/lang/fr_mail_user_filter.lng
index 49c5076d95..b5cacf2e98 100644
--- a/interface/web/mail/lib/lang/fr_mail_user_filter.lng
+++ b/interface/web/mail/lib/lang/fr_mail_user_filter.lng
@@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'Le nombre max de filtres e-mail est atteint.';
 $wb['subject_txt'] = 'Sujet';
 $wb['from_txt'] = 'De';
 $wb['to_txt'] = 'Pour';
+$wb['list_id_txt'] = 'List ID';
 $wb['contains_txt'] = 'Contient';
 $wb['is_txt'] = 'Est';
 $wb['begins_with_txt'] = 'Commence par';
diff --git a/interface/web/mail/lib/lang/id_mail_user_filter.lng b/interface/web/mail/lib/lang/id_mail_user_filter.lng
index 0def30d1a8..93f45979f3 100644
--- a/interface/web/mail/lib/lang/id_mail_user_filter.lng
+++ b/interface/web/mail/lib/lang/id_mail_user_filter.lng
@@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.';
 $wb['subject_txt'] = 'Subject';
 $wb['from_txt'] = 'From';
 $wb['to_txt'] = 'To';
+$wb['list_id_txt'] = 'List ID';
 $wb['contains_txt'] = 'Contains';
 $wb['is_txt'] = 'Is';
 $wb['begins_with_txt'] = 'Begins with';
diff --git a/interface/web/mail/lib/lang/ja_mail_user_filter.lng b/interface/web/mail/lib/lang/ja_mail_user_filter.lng
index 847640fee4..8ee3801cc8 100644
--- a/interface/web/mail/lib/lang/ja_mail_user_filter.lng
+++ b/interface/web/mail/lib/lang/ja_mail_user_filter.lng
@@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.';
 $wb['subject_txt'] = 'Subject';
 $wb['from_txt'] = 'From';
 $wb['to_txt'] = 'To';
+$wb['list_id_txt'] = 'List ID';
 $wb['contains_txt'] = 'Contains';
 $wb['is_txt'] = 'Is';
 $wb['begins_with_txt'] = 'Begins with';
diff --git a/interface/web/mail/lib/lang/pt_mail_user_filter.lng b/interface/web/mail/lib/lang/pt_mail_user_filter.lng
index 42a7481d70..906c27ecd2 100644
--- a/interface/web/mail/lib/lang/pt_mail_user_filter.lng
+++ b/interface/web/mail/lib/lang/pt_mail_user_filter.lng
@@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.';
 $wb['subject_txt'] = 'Subject';
 $wb['from_txt'] = 'From';
 $wb['to_txt'] = 'To';
+$wb['list_id_txt'] = 'List ID';
 $wb['contains_txt'] = 'Contains';
 $wb['is_txt'] = 'Is';
 $wb['begins_with_txt'] = 'Begins with';
diff --git a/interface/web/mail/lib/lang/ro_mail_user_filter.lng b/interface/web/mail/lib/lang/ro_mail_user_filter.lng
index 7c5c72ad72..22435d9e91 100644
--- a/interface/web/mail/lib/lang/ro_mail_user_filter.lng
+++ b/interface/web/mail/lib/lang/ro_mail_user_filter.lng
@@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.';
 $wb['subject_txt'] = 'Subject';
 $wb['from_txt'] = 'From';
 $wb['to_txt'] = 'To';
+$wb['list_id_txt'] = 'List ID';
 $wb['contains_txt'] = 'Contains';
 $wb['is_txt'] = 'Is';
 $wb['begins_with_txt'] = 'Begins with';
diff --git a/interface/web/mail/lib/lang/sk_mail_user_filter.lng b/interface/web/mail/lib/lang/sk_mail_user_filter.lng
index 20904653c6..7546cd6afa 100644
--- a/interface/web/mail/lib/lang/sk_mail_user_filter.lng
+++ b/interface/web/mail/lib/lang/sk_mail_user_filter.lng
@@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.';
 $wb['subject_txt'] = 'Subject';
 $wb['from_txt'] = 'From';
 $wb['to_txt'] = 'To';
+$wb['list_id_txt'] = 'List ID';
 $wb['contains_txt'] = 'Contains';
 $wb['is_txt'] = 'Is';
 $wb['begins_with_txt'] = 'Begins with';
diff --git a/interface/web/mailuser/form/mail_user_filter.tform.php b/interface/web/mailuser/form/mail_user_filter.tform.php
index adf7716317..9fdd8bdfc0 100644
--- a/interface/web/mailuser/form/mail_user_filter.tform.php
+++ b/interface/web/mailuser/form/mail_user_filter.tform.php
@@ -83,7 +83,7 @@ $form["tabs"]['filter'] = array (
 			'datatype' => 'VARCHAR',
 			'formtype' => 'SELECT',
 			'default' => '',
-			'value'  => array('Subject' => 'subject_txt', 'From'=>'from_txt', 'To'=>'to_txt')
+			'value'  => array('Subject' => 'subject_txt', 'From'=>'from_txt', 'To'=>'to_txt', 'List-Id'=>'list_id_txt')
 		),
 		'op' => array (
 			'datatype' => 'VARCHAR',
diff --git a/interface/web/mailuser/lib/lang/ar_mail_user_filter.lng b/interface/web/mailuser/lib/lang/ar_mail_user_filter.lng
index 4069a15351..9ac4be357e 100644
--- a/interface/web/mailuser/lib/lang/ar_mail_user_filter.lng
+++ b/interface/web/mailuser/lib/lang/ar_mail_user_filter.lng
@@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.';
 $wb['subject_txt'] = 'Subject';
 $wb['from_txt'] = 'From';
 $wb['to_txt'] = 'To';
+$wb['list_id_txt'] = 'List ID';
 $wb['contains_txt'] = 'Contains';
 $wb['is_txt'] = 'Is';
 $wb['begins_with_txt'] = 'Begins with';
diff --git a/interface/web/mailuser/lib/lang/bg_mail_user_filter.lng b/interface/web/mailuser/lib/lang/bg_mail_user_filter.lng
index 4069a15351..9ac4be357e 100644
--- a/interface/web/mailuser/lib/lang/bg_mail_user_filter.lng
+++ b/interface/web/mailuser/lib/lang/bg_mail_user_filter.lng
@@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.';
 $wb['subject_txt'] = 'Subject';
 $wb['from_txt'] = 'From';
 $wb['to_txt'] = 'To';
+$wb['list_id_txt'] = 'List ID';
 $wb['contains_txt'] = 'Contains';
 $wb['is_txt'] = 'Is';
 $wb['begins_with_txt'] = 'Begins with';
diff --git a/interface/web/mailuser/lib/lang/ca_mail_user_filter.lng b/interface/web/mailuser/lib/lang/ca_mail_user_filter.lng
index 4069a15351..9ac4be357e 100644
--- a/interface/web/mailuser/lib/lang/ca_mail_user_filter.lng
+++ b/interface/web/mailuser/lib/lang/ca_mail_user_filter.lng
@@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.';
 $wb['subject_txt'] = 'Subject';
 $wb['from_txt'] = 'From';
 $wb['to_txt'] = 'To';
+$wb['list_id_txt'] = 'List ID';
 $wb['contains_txt'] = 'Contains';
 $wb['is_txt'] = 'Is';
 $wb['begins_with_txt'] = 'Begins with';
diff --git a/interface/web/mailuser/lib/lang/dk_mail_user_filter.lng b/interface/web/mailuser/lib/lang/dk_mail_user_filter.lng
index e164d54bb2..0a92f580a1 100644
--- a/interface/web/mailuser/lib/lang/dk_mail_user_filter.lng
+++ b/interface/web/mailuser/lib/lang/dk_mail_user_filter.lng
@@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'Max. antal af mailfiltere er nået.';
 $wb['subject_txt'] = 'Emne';
 $wb['from_txt'] = 'Fra';
 $wb['to_txt'] = 'Til';
+$wb['list_id_txt'] = 'List ID';
 $wb['contains_txt'] = 'Indeholder';
 $wb['is_txt'] = 'Er';
 $wb['begins_with_txt'] = 'Begynder med';
diff --git a/interface/web/mailuser/lib/lang/el_mail_user_filter.lng b/interface/web/mailuser/lib/lang/el_mail_user_filter.lng
index 4069a15351..9ac4be357e 100644
--- a/interface/web/mailuser/lib/lang/el_mail_user_filter.lng
+++ b/interface/web/mailuser/lib/lang/el_mail_user_filter.lng
@@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.';
 $wb['subject_txt'] = 'Subject';
 $wb['from_txt'] = 'From';
 $wb['to_txt'] = 'To';
+$wb['list_id_txt'] = 'List ID';
 $wb['contains_txt'] = 'Contains';
 $wb['is_txt'] = 'Is';
 $wb['begins_with_txt'] = 'Begins with';
diff --git a/interface/web/mailuser/lib/lang/en_mail_user_filter.lng b/interface/web/mailuser/lib/lang/en_mail_user_filter.lng
index 23451b74db..c26150ba1d 100644
--- a/interface/web/mailuser/lib/lang/en_mail_user_filter.lng
+++ b/interface/web/mailuser/lib/lang/en_mail_user_filter.lng
@@ -12,6 +12,7 @@ $wb['mailbox_filter_txt'] = 'Mailbox filter';
 $wb['subject_txt'] = 'Subject';
 $wb['from_txt'] = 'From';
 $wb['to_txt'] = 'To';
+$wb['list_id_txt'] = 'List ID';
 $wb['contains_txt'] = 'Contains';
 $wb['is_txt'] = 'Is';
 $wb['begins_with_txt'] = 'Begins with';
diff --git a/interface/web/mailuser/lib/lang/es_mail_user_filter.lng b/interface/web/mailuser/lib/lang/es_mail_user_filter.lng
index 426ad1ad01..b8a19359f5 100755
--- a/interface/web/mailuser/lib/lang/es_mail_user_filter.lng
+++ b/interface/web/mailuser/lib/lang/es_mail_user_filter.lng
@@ -17,5 +17,6 @@ $wb['subject_txt'] = 'Asunto';
 $wb['target_error_regex'] = 'La carpeta solo debe contener estos caracteres: a-z, 0-9, -, ., _, y {espacio}';
 $wb['target_txt'] = 'Carpeta';
 $wb['to_txt'] = 'Para';
+$wb['list_id_txt'] = 'List ID';
 $wb['mailbox_filter_txt'] = 'Mailbox filter';
 ?>
diff --git a/interface/web/mailuser/lib/lang/fi_mail_user_filter.lng b/interface/web/mailuser/lib/lang/fi_mail_user_filter.lng
index 4069a15351..9ac4be357e 100644
--- a/interface/web/mailuser/lib/lang/fi_mail_user_filter.lng
+++ b/interface/web/mailuser/lib/lang/fi_mail_user_filter.lng
@@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.';
 $wb['subject_txt'] = 'Subject';
 $wb['from_txt'] = 'From';
 $wb['to_txt'] = 'To';
+$wb['list_id_txt'] = 'List ID';
 $wb['contains_txt'] = 'Contains';
 $wb['is_txt'] = 'Is';
 $wb['begins_with_txt'] = 'Begins with';
diff --git a/interface/web/mailuser/lib/lang/hu_mail_user_filter.lng b/interface/web/mailuser/lib/lang/hu_mail_user_filter.lng
index 4069a15351..9ac4be357e 100644
--- a/interface/web/mailuser/lib/lang/hu_mail_user_filter.lng
+++ b/interface/web/mailuser/lib/lang/hu_mail_user_filter.lng
@@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.';
 $wb['subject_txt'] = 'Subject';
 $wb['from_txt'] = 'From';
 $wb['to_txt'] = 'To';
+$wb['list_id_txt'] = 'List ID';
 $wb['contains_txt'] = 'Contains';
 $wb['is_txt'] = 'Is';
 $wb['begins_with_txt'] = 'Begins with';
diff --git a/interface/web/mailuser/lib/lang/id_mail_user_filter.lng b/interface/web/mailuser/lib/lang/id_mail_user_filter.lng
index 4069a15351..9ac4be357e 100644
--- a/interface/web/mailuser/lib/lang/id_mail_user_filter.lng
+++ b/interface/web/mailuser/lib/lang/id_mail_user_filter.lng
@@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.';
 $wb['subject_txt'] = 'Subject';
 $wb['from_txt'] = 'From';
 $wb['to_txt'] = 'To';
+$wb['list_id_txt'] = 'List ID';
 $wb['contains_txt'] = 'Contains';
 $wb['is_txt'] = 'Is';
 $wb['begins_with_txt'] = 'Begins with';
diff --git a/interface/web/mailuser/lib/lang/ja_mail_user_filter.lng b/interface/web/mailuser/lib/lang/ja_mail_user_filter.lng
index 4069a15351..9ac4be357e 100644
--- a/interface/web/mailuser/lib/lang/ja_mail_user_filter.lng
+++ b/interface/web/mailuser/lib/lang/ja_mail_user_filter.lng
@@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.';
 $wb['subject_txt'] = 'Subject';
 $wb['from_txt'] = 'From';
 $wb['to_txt'] = 'To';
+$wb['list_id_txt'] = 'List ID';
 $wb['contains_txt'] = 'Contains';
 $wb['is_txt'] = 'Is';
 $wb['begins_with_txt'] = 'Begins with';
diff --git a/interface/web/mailuser/lib/lang/pl_mail_user_filter.lng b/interface/web/mailuser/lib/lang/pl_mail_user_filter.lng
index 4069a15351..9ac4be357e 100644
--- a/interface/web/mailuser/lib/lang/pl_mail_user_filter.lng
+++ b/interface/web/mailuser/lib/lang/pl_mail_user_filter.lng
@@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.';
 $wb['subject_txt'] = 'Subject';
 $wb['from_txt'] = 'From';
 $wb['to_txt'] = 'To';
+$wb['list_id_txt'] = 'List ID';
 $wb['contains_txt'] = 'Contains';
 $wb['is_txt'] = 'Is';
 $wb['begins_with_txt'] = 'Begins with';
diff --git a/interface/web/mailuser/lib/lang/pt_mail_user_filter.lng b/interface/web/mailuser/lib/lang/pt_mail_user_filter.lng
index 4069a15351..9ac4be357e 100644
--- a/interface/web/mailuser/lib/lang/pt_mail_user_filter.lng
+++ b/interface/web/mailuser/lib/lang/pt_mail_user_filter.lng
@@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.';
 $wb['subject_txt'] = 'Subject';
 $wb['from_txt'] = 'From';
 $wb['to_txt'] = 'To';
+$wb['list_id_txt'] = 'List ID';
 $wb['contains_txt'] = 'Contains';
 $wb['is_txt'] = 'Is';
 $wb['begins_with_txt'] = 'Begins with';
diff --git a/interface/web/mailuser/lib/lang/ro_mail_user_filter.lng b/interface/web/mailuser/lib/lang/ro_mail_user_filter.lng
index 4069a15351..9ac4be357e 100644
--- a/interface/web/mailuser/lib/lang/ro_mail_user_filter.lng
+++ b/interface/web/mailuser/lib/lang/ro_mail_user_filter.lng
@@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.';
 $wb['subject_txt'] = 'Subject';
 $wb['from_txt'] = 'From';
 $wb['to_txt'] = 'To';
+$wb['list_id_txt'] = 'List ID';
 $wb['contains_txt'] = 'Contains';
 $wb['is_txt'] = 'Is';
 $wb['begins_with_txt'] = 'Begins with';
diff --git a/interface/web/mailuser/lib/lang/sk_mail_user_filter.lng b/interface/web/mailuser/lib/lang/sk_mail_user_filter.lng
index 4069a15351..9ac4be357e 100644
--- a/interface/web/mailuser/lib/lang/sk_mail_user_filter.lng
+++ b/interface/web/mailuser/lib/lang/sk_mail_user_filter.lng
@@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.';
 $wb['subject_txt'] = 'Subject';
 $wb['from_txt'] = 'From';
 $wb['to_txt'] = 'To';
+$wb['list_id_txt'] = 'List ID';
 $wb['contains_txt'] = 'Contains';
 $wb['is_txt'] = 'Is';
 $wb['begins_with_txt'] = 'Begins with';
-- 
GitLab


From 141aec78b1ee07ff099d708ee5f34df5121b366f Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Fri, 22 Nov 2019 15:04:54 +0100
Subject: [PATCH 085/242] - fixed using fullchain instead of two files on
 acme.sh and apache > 2.4.8

---
 server/lib/classes/letsencrypt.inc.php | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/server/lib/classes/letsencrypt.inc.php b/server/lib/classes/letsencrypt.inc.php
index 291ee41b12..f60ad040e7 100644
--- a/server/lib/classes/letsencrypt.inc.php
+++ b/server/lib/classes/letsencrypt.inc.php
@@ -53,7 +53,8 @@ class letsencrypt {
 		}
 	}
 	
-	public function get_acme_command($domains, $key_file, $bundle_file, $cert_file) {
+	public function get_acme_command($domains, $key_file, $bundle_file, $cert_file, $server_type = 'apache') {
+		global $app;
 		
 		$letsencrypt = $this->get_acme_script();
 		
@@ -66,8 +67,14 @@ class letsencrypt {
 		if($cmd == '') {
 			return false;
 		}
+
+		if($server_type != 'apache' || version_compare($app->system->getapacheversion(true), '2.4.8', '>=')) {
+			$cert_arg = '--fullchain-file ' . escapeshellarg($cert_file);
+		} else {
+			$cert_arg = '--fullchain-file ' . escapeshellarg($bundle_file) . ' --cert-file ' . escapeshellarg($cert_file);
+		}
 		
-		$cmd = 'R=0 ; C=0 ; ' . $letsencrypt . ' --issue ' . $cmd . ' -w /usr/local/ispconfig/interface/acme ; R=$? ; if [[ $R -eq 0 || $R -eq 2 ]] ; then ' . $letsencrypt . ' --install-cert ' . $cmd . ' --key-file ' . escapeshellarg($key_file) . ' --fullchain-file ' . escapeshellarg($bundle_file) . ' --cert-file ' . escapeshellarg($cert_file) . ' --reloadcmd ' . escapeshellarg($this->get_reload_command()) . '; C=$? ; fi ; if [[ $C -eq 0 ]] ; then exit $R ; else exit $C  ; fi';
+		$cmd = 'R=0 ; C=0 ; ' . $letsencrypt . ' --issue ' . $cmd . ' -w /usr/local/ispconfig/interface/acme ; R=$? ; if [[ $R -eq 0 || $R -eq 2 ]] ; then ' . $letsencrypt . ' --install-cert ' . $cmd . ' --key-file ' . escapeshellarg($key_file) . ' ' . $cert_arg . ' --reloadcmd ' . escapeshellarg($this->get_reload_command()) . '; C=$? ; fi ; if [[ $C -eq 0 ]] ; then exit $R ; else exit $C  ; fi';
 		
 		return $cmd;
 	}
@@ -393,7 +400,7 @@ class letsencrypt {
 		$letsencrypt_cmd = '';
 		$allow_return_codes = null;
 		if($use_acme) {
-			$letsencrypt_cmd = $this->get_acme_command($temp_domains, $key_file, $bundle_file, $crt_file);
+			$letsencrypt_cmd = $this->get_acme_command($temp_domains, $key_file, $bundle_file, $crt_file, $server_type);
 			$allow_return_codes = array(2);
 		} else {
 			$letsencrypt_cmd = $this->get_certbot_command($temp_domains);
-- 
GitLab


From 26009352ab78589458b85a8ab4f585b7847e9b1e Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Fri, 22 Nov 2019 19:35:30 +0100
Subject: [PATCH 086/242] - fixed typo (amavis instead of amavisd), fixes #5453

---
 install/lib/installer_base.lib.php                     | 2 +-
 install/lib/update.lib.php                             | 2 +-
 server/plugins-available/postfix_server_plugin.inc.php | 3 +--
 3 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php
index 4f72c6920b..513858ca68 100644
--- a/install/lib/installer_base.lib.php
+++ b/install/lib/installer_base.lib.php
@@ -326,7 +326,7 @@ class installer_base {
 		$tpl_ini_array['web']['php_ini_path_cgi'] = $conf['apache']['php_ini_path_cgi'];
 		$tpl_ini_array['mail']['pop3_imap_daemon'] = ($conf['dovecot']['installed'] == true)?'dovecot':'courier';
 		$tpl_ini_array['mail']['mail_filter_syntax'] = ($conf['dovecot']['installed'] == true)?'sieve':'maildrop';
-		$tpl_ini_array['mail']['content_filter'] = @($conf['rspamd']['installed']) ? 'rspamd' : 'amavis';
+		$tpl_ini_array['mail']['content_filter'] = @($conf['rspamd']['installed']) ? 'rspamd' : 'amavisd';
 		$tpl_ini_array['mail']['rspamd_available'] = @($conf['rspamd']['installed']) ? 'y' : 'n';
 		$tpl_ini_array['dns']['bind_user'] = $conf['bind']['bind_user'];
 		$tpl_ini_array['dns']['bind_group'] = $conf['bind']['bind_group'];
diff --git a/install/lib/update.lib.php b/install/lib/update.lib.php
index 9deb8ca10e..4dcb31cff1 100644
--- a/install/lib/update.lib.php
+++ b/install/lib/update.lib.php
@@ -336,7 +336,7 @@ function updateDbAndIni() {
 	$tpl_ini_array['mail']['pop3_imap_daemon'] = ($conf['dovecot']['installed'] == true)?'dovecot':'courier';
 	$tpl_ini_array['mail']['mail_filter_syntax'] = ($conf['dovecot']['installed'] == true)?'sieve':'maildrop';
 	// do not switch to rspamd automatically!
-	// $tpl_ini_array['mail']['content_filter'] = @($conf['rspamd']['installed']) ? 'rspamd' : 'amavis';
+	// $tpl_ini_array['mail']['content_filter'] = @($conf['rspamd']['installed']) ? 'rspamd' : 'amavisd';
 	$tpl_ini_array['mail']['rspamd_available'] = @($conf['rspamd']['installed']) ? 'y' : 'n';
 	$tpl_ini_array['dns']['bind_user'] = $conf['bind']['bind_user'];
 	$tpl_ini_array['dns']['bind_group'] = $conf['bind']['bind_group'];
diff --git a/server/plugins-available/postfix_server_plugin.inc.php b/server/plugins-available/postfix_server_plugin.inc.php
index 77ac689077..ad48e3dee8 100644
--- a/server/plugins-available/postfix_server_plugin.inc.php
+++ b/server/plugins-available/postfix_server_plugin.inc.php
@@ -215,8 +215,7 @@ class postfix_server_plugin {
 				fclose($fpp);
 				fclose($fps);
 				unset($dkim_domains);
-			}	
-			if($mail_config['content_filter'] == 'amavisd'){
+			} else {
 				exec("postconf -X 'smtpd_milters'");
 				exec("postconf -X 'milter_protocol'");
 				exec("postconf -X 'milter_mail_macros'");
-- 
GitLab


From eac89bb002ac68ae832cd0642e4f5c882709dcaf Mon Sep 17 00:00:00 2001
From: Jason Townsend <jason.townsend@inbox.com>
Date: Sat, 23 Nov 2019 17:15:28 +0000
Subject: [PATCH 087/242] Added proxy protocol feature:

Added Global Setting to Server config tab to
  - Enable & Disable the feature
  - Set the Proxy HTTP & HTTPS Ports

Added Per site level switch to enable and disable feature (Located in the Web Tab under the advanced section)

Added Apache2 and Nginx vhost updates to enable proxy_protocol on the listen lines

Added New database column to web_domain called "proxy_protocol" to enable site level config (Patch file Added upd_0089.sql)

Updated the Base Table SQL file to include "proxy_protocol" field
---
 install/sql/incremental/upd_0089.sql          |  6 +++++
 install/sql/ispconfig3.sql                    |  1 +
 .../web/admin/form/server_config.tform.php    | 22 +++++++++++++++++++
 .../web/admin/lib/lang/ar_server_config.lng   |  3 +++
 .../web/admin/lib/lang/bg_server_config.lng   |  3 +++
 .../web/admin/lib/lang/br_server_config.lng   |  3 +++
 .../web/admin/lib/lang/ca_server_config.lng   |  3 +++
 .../web/admin/lib/lang/cz_server_config.lng   |  3 +++
 .../web/admin/lib/lang/de_server_config.lng   |  3 +++
 .../web/admin/lib/lang/dk_server_config.lng   |  3 +++
 .../web/admin/lib/lang/el_server_config.lng   |  3 +++
 .../web/admin/lib/lang/es_server_config.lng   |  3 +++
 .../web/admin/lib/lang/fi_server_config.lng   |  3 +++
 .../web/admin/lib/lang/fr_server_config.lng   |  3 +++
 .../web/admin/lib/lang/hr_server_config.lng   |  3 +++
 .../web/admin/lib/lang/hu_server_config.lng   |  3 +++
 .../web/admin/lib/lang/id_server_config.lng   |  3 +++
 .../web/admin/lib/lang/it_server_config.lng   |  3 +++
 .../web/admin/lib/lang/ja_server_config.lng   |  3 +++
 .../web/admin/lib/lang/nl_server_config.lng   |  3 +++
 .../web/admin/lib/lang/pl_server_config.lng   |  3 +++
 .../web/admin/lib/lang/pt_server_config.lng   |  3 +++
 .../web/admin/lib/lang/ro_server_config.lng   |  3 +++
 .../web/admin/lib/lang/ru_server_config.lng   |  3 +++
 .../web/admin/lib/lang/se_server_config.lng   |  3 +++
 .../web/admin/lib/lang/sk_server_config.lng   |  3 +++
 .../web/admin/lib/lang/tr_server_config.lng   |  3 +++
 .../templates/server_config_web_edit.htm      | 14 ++++++++++++
 .../web/sites/form/web_vhost_domain.tform.php |  6 +++++
 .../sites/lib/lang/ar_web_vhost_domain.lng    |  1 +
 .../sites/lib/lang/bg_web_vhost_domain.lng    |  1 +
 .../sites/lib/lang/br_web_vhost_domain.lng    |  1 +
 .../sites/lib/lang/ca_web_vhost_domain.lng    |  1 +
 .../sites/lib/lang/cz_web_vhost_domain.lng    |  1 +
 .../sites/lib/lang/de_web_vhost_domain.lng    |  1 +
 .../sites/lib/lang/dk_web_vhost_domain.lng    |  1 +
 .../sites/lib/lang/el_web_vhost_domain.lng    |  1 +
 .../sites/lib/lang/en_web_vhost_domain.lng    |  1 +
 .../sites/lib/lang/es_web_vhost_domain.lng    |  1 +
 .../sites/lib/lang/fi_web_vhost_domain.lng    |  1 +
 .../sites/lib/lang/fr_web_vhost_domain.lng    |  1 +
 .../sites/lib/lang/hr_web_vhost_domain.lng    |  1 +
 .../sites/lib/lang/hu_web_vhost_domain.lng    |  1 +
 .../sites/lib/lang/id_web_vhost_domain.lng    |  1 +
 .../sites/lib/lang/it_web_vhost_domain.lng    |  1 +
 .../sites/lib/lang/ja_web_vhost_domain.lng    |  1 +
 .../sites/lib/lang/nl_web_vhost_domain.lng    |  1 +
 .../sites/lib/lang/pl_web_vhost_domain.lng    |  1 +
 .../sites/lib/lang/pt_web_vhost_domain.lng    |  1 +
 .../sites/lib/lang/ro_web_vhost_domain.lng    |  1 +
 .../sites/lib/lang/ru_web_vhost_domain.lng    |  1 +
 .../sites/lib/lang/se_web_vhost_domain.lng    |  1 +
 .../sites/lib/lang/sk_web_vhost_domain.lng    |  1 +
 .../templates/web_vhost_domain_advanced.htm   |  8 ++++++-
 server/conf/nginx_vhost.conf.master           | 10 +++++++++
 server/conf/vhost.conf.master                 | 13 +++++++++++
 .../plugins-available/apache2_plugin.inc.php  | 20 +++++++++++++++++
 server/plugins-available/nginx_plugin.inc.php |  9 ++++++++
 58 files changed, 204 insertions(+), 1 deletion(-)
 create mode 100644 install/sql/incremental/upd_0089.sql

diff --git a/install/sql/incremental/upd_0089.sql b/install/sql/incremental/upd_0089.sql
new file mode 100644
index 0000000000..5c676788d6
--- /dev/null
+++ b/install/sql/incremental/upd_0089.sql
@@ -0,0 +1,6 @@
+-- add new proxy_protocol column
+ALTER TABLE `web_domain`
+    ADD COLUMN `proxy_protocol` ENUM('n','y') NOT NULL DEFAULT 'y' AFTER `log_retention`;
+
+-- Update old entrys
+UPDATE `web_domain` SET `proxy_protocol` = 'y';
diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql
index 18b3ef57eb..6998257046 100644
--- a/install/sql/ispconfig3.sql
+++ b/install/sql/ispconfig3.sql
@@ -2071,6 +2071,7 @@ CREATE TABLE `web_domain` (
   `https_port` int(11) unsigned NOT NULL DEFAULT '443',
   `folder_directive_snippets` text,
   `log_retention` int(11) NOT NULL DEFAULT '10',
+  `proxy_protocol` enum('n','y') NOT NULL default 'y',
   PRIMARY KEY  (`domain_id`),
   UNIQUE KEY `serverdomain` (  `server_id` , `ip_address`,  `domain` )
 ) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php
index 2663cdd0e0..ef3676f05d 100644
--- a/interface/web/admin/form/server_config.tform.php
+++ b/interface/web/admin/form/server_config.tform.php
@@ -820,6 +820,28 @@ $form["tabs"]['web'] = array(
 			'default' => 'n',
 			'value' => array(0 => 'n',1 => 'y')
 		),
+		'vhost_proxy_protocol_enabled' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'CHECKBOX',
+			'default' => 'n',
+			'value' => array(0 => 'n',1 => 'y')
+		),
+		'vhost_proxy_protocol_http_port' => array(
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'default' => '880',
+			'value' => '',
+			'width' => '40',
+			'maxlength' => '255'
+		),
+		'vhost_proxy_protocol_https_port' => array(
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'default' => '8443',
+			'value' => '',
+			'width' => '40',
+			'maxlength' => '255'
+		),
 		'vhost_conf_dir' => array(
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
diff --git a/interface/web/admin/lib/lang/ar_server_config.lng b/interface/web/admin/lib/lang/ar_server_config.lng
index bccdcc42c0..4a48ea19ce 100644
--- a/interface/web/admin/lib/lang/ar_server_config.lng
+++ b/interface/web/admin/lib/lang/ar_server_config.lng
@@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter';
 $wb['rspamd_url_txt'] = 'Rspamd URL';
 $wb['rspamd_user_txt'] = 'Rspamd User';
 $wb['rspamd_password_txt'] = 'Rspamd Password';
+$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol';
+$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port';
+$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port';
 ?>
diff --git a/interface/web/admin/lib/lang/bg_server_config.lng b/interface/web/admin/lib/lang/bg_server_config.lng
index 39531461c3..1e39776aac 100644
--- a/interface/web/admin/lib/lang/bg_server_config.lng
+++ b/interface/web/admin/lib/lang/bg_server_config.lng
@@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter';
 $wb['rspamd_url_txt'] = 'Rspamd URL';
 $wb['rspamd_user_txt'] = 'Rspamd User';
 $wb['rspamd_password_txt'] = 'Rspamd Password';
+$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol';
+$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port';
+$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port';
 ?>
diff --git a/interface/web/admin/lib/lang/br_server_config.lng b/interface/web/admin/lib/lang/br_server_config.lng
index f57a2310f2..be7da0ceca 100644
--- a/interface/web/admin/lib/lang/br_server_config.lng
+++ b/interface/web/admin/lib/lang/br_server_config.lng
@@ -301,3 +301,6 @@ $wb['content_filter_txt'] = 'Filtro de conteúdo';
 $wb['rspamd_url_txt'] = 'URL do rspamd';
 $wb['rspamd_user_txt'] = 'Usuário do rspamd';
 $wb['rspamd_password_txt'] = 'Senha do rspamd';
+$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol';
+$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port';
+$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port';
diff --git a/interface/web/admin/lib/lang/ca_server_config.lng b/interface/web/admin/lib/lang/ca_server_config.lng
index 14f0b91d3b..9bcd747c84 100644
--- a/interface/web/admin/lib/lang/ca_server_config.lng
+++ b/interface/web/admin/lib/lang/ca_server_config.lng
@@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter';
 $wb['rspamd_url_txt'] = 'Rspamd URL';
 $wb['rspamd_user_txt'] = 'Rspamd User';
 $wb['rspamd_password_txt'] = 'Rspamd Password';
+$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol';
+$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port';
+$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port';
 ?>
diff --git a/interface/web/admin/lib/lang/cz_server_config.lng b/interface/web/admin/lib/lang/cz_server_config.lng
index a97d78b8eb..218742e5cf 100644
--- a/interface/web/admin/lib/lang/cz_server_config.lng
+++ b/interface/web/admin/lib/lang/cz_server_config.lng
@@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter';
 $wb['rspamd_url_txt'] = 'Rspamd URL';
 $wb['rspamd_user_txt'] = 'Rspamd User';
 $wb['rspamd_password_txt'] = 'Rspamd Password';
+$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol';
+$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port';
+$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port';
 ?>
diff --git a/interface/web/admin/lib/lang/de_server_config.lng b/interface/web/admin/lib/lang/de_server_config.lng
index 960381e7c1..792d5de9bc 100644
--- a/interface/web/admin/lib/lang/de_server_config.lng
+++ b/interface/web/admin/lib/lang/de_server_config.lng
@@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content-Filter';
 $wb['rspamd_url_txt'] = 'Rspamd-URL';
 $wb['rspamd_user_txt'] = 'Rspamd-Benutzer';
 $wb['rspamd_password_txt'] = 'Rspamd-Passwort';
+$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol';
+$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port';
+$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port';
 ?>
diff --git a/interface/web/admin/lib/lang/dk_server_config.lng b/interface/web/admin/lib/lang/dk_server_config.lng
index 73e7ef1bfd..4dfd608667 100644
--- a/interface/web/admin/lib/lang/dk_server_config.lng
+++ b/interface/web/admin/lib/lang/dk_server_config.lng
@@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter';
 $wb['rspamd_url_txt'] = 'Rspamd URL';
 $wb['rspamd_user_txt'] = 'Rspamd User';
 $wb['rspamd_password_txt'] = 'Rspamd Password';
+$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol';
+$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port';
+$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port';
 ?>
diff --git a/interface/web/admin/lib/lang/el_server_config.lng b/interface/web/admin/lib/lang/el_server_config.lng
index 84992261bb..5e7a7071d4 100644
--- a/interface/web/admin/lib/lang/el_server_config.lng
+++ b/interface/web/admin/lib/lang/el_server_config.lng
@@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter';
 $wb['rspamd_url_txt'] = 'Rspamd URL';
 $wb['rspamd_user_txt'] = 'Rspamd User';
 $wb['rspamd_password_txt'] = 'Rspamd Password';
+$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol';
+$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port';
+$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port';
 ?>
diff --git a/interface/web/admin/lib/lang/es_server_config.lng b/interface/web/admin/lib/lang/es_server_config.lng
index 01350367ae..e8164da4a0 100755
--- a/interface/web/admin/lib/lang/es_server_config.lng
+++ b/interface/web/admin/lib/lang/es_server_config.lng
@@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter';
 $wb['rspamd_url_txt'] = 'Rspamd URL';
 $wb['rspamd_user_txt'] = 'Rspamd User';
 $wb['rspamd_password_txt'] = 'Rspamd Password';
+$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol';
+$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port';
+$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port';
 ?>
diff --git a/interface/web/admin/lib/lang/fi_server_config.lng b/interface/web/admin/lib/lang/fi_server_config.lng
index 6caf643abe..94af4c8e0e 100755
--- a/interface/web/admin/lib/lang/fi_server_config.lng
+++ b/interface/web/admin/lib/lang/fi_server_config.lng
@@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter';
 $wb['rspamd_url_txt'] = 'Rspamd URL';
 $wb['rspamd_user_txt'] = 'Rspamd User';
 $wb['rspamd_password_txt'] = 'Rspamd Password';
+$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol';
+$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port';
+$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port';
 ?>
diff --git a/interface/web/admin/lib/lang/fr_server_config.lng b/interface/web/admin/lib/lang/fr_server_config.lng
index 25f7375688..3586fd5d60 100644
--- a/interface/web/admin/lib/lang/fr_server_config.lng
+++ b/interface/web/admin/lib/lang/fr_server_config.lng
@@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter';
 $wb['rspamd_url_txt'] = 'Rspamd URL';
 $wb['rspamd_user_txt'] = 'Rspamd User';
 $wb['rspamd_password_txt'] = 'Rspamd Password';
+$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol';
+$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port';
+$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port';
 ?>
diff --git a/interface/web/admin/lib/lang/hr_server_config.lng b/interface/web/admin/lib/lang/hr_server_config.lng
index faf08f4201..f233aec832 100644
--- a/interface/web/admin/lib/lang/hr_server_config.lng
+++ b/interface/web/admin/lib/lang/hr_server_config.lng
@@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter';
 $wb['rspamd_url_txt'] = 'Rspamd URL';
 $wb['rspamd_user_txt'] = 'Rspamd User';
 $wb['rspamd_password_txt'] = 'Rspamd Password';
+$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol';
+$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port';
+$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port';
 ?>
diff --git a/interface/web/admin/lib/lang/hu_server_config.lng b/interface/web/admin/lib/lang/hu_server_config.lng
index 6347afb7da..1df1da23ce 100644
--- a/interface/web/admin/lib/lang/hu_server_config.lng
+++ b/interface/web/admin/lib/lang/hu_server_config.lng
@@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter';
 $wb['rspamd_url_txt'] = 'Rspamd URL';
 $wb['rspamd_user_txt'] = 'Rspamd User';
 $wb['rspamd_password_txt'] = 'Rspamd Password';
+$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol';
+$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port';
+$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port';
 ?>
diff --git a/interface/web/admin/lib/lang/id_server_config.lng b/interface/web/admin/lib/lang/id_server_config.lng
index 9a28dff300..4d99bd6323 100644
--- a/interface/web/admin/lib/lang/id_server_config.lng
+++ b/interface/web/admin/lib/lang/id_server_config.lng
@@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter';
 $wb['rspamd_url_txt'] = 'Rspamd URL';
 $wb['rspamd_user_txt'] = 'Rspamd User';
 $wb['rspamd_password_txt'] = 'Rspamd Password';
+$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol';
+$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port';
+$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port';
 ?>
diff --git a/interface/web/admin/lib/lang/it_server_config.lng b/interface/web/admin/lib/lang/it_server_config.lng
index 3dc37a3c1d..21b8461529 100644
--- a/interface/web/admin/lib/lang/it_server_config.lng
+++ b/interface/web/admin/lib/lang/it_server_config.lng
@@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter';
 $wb['rspamd_url_txt'] = 'Rspamd URL';
 $wb['rspamd_user_txt'] = 'Rspamd User';
 $wb['rspamd_password_txt'] = 'Rspamd Password';
+$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol';
+$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port';
+$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port';
 ?>
diff --git a/interface/web/admin/lib/lang/ja_server_config.lng b/interface/web/admin/lib/lang/ja_server_config.lng
index 72bef72c4b..1241b89e59 100644
--- a/interface/web/admin/lib/lang/ja_server_config.lng
+++ b/interface/web/admin/lib/lang/ja_server_config.lng
@@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter';
 $wb['rspamd_url_txt'] = 'Rspamd URL';
 $wb['rspamd_user_txt'] = 'Rspamd User';
 $wb['rspamd_password_txt'] = 'Rspamd Password';
+$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol';
+$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port';
+$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port';
 ?>
diff --git a/interface/web/admin/lib/lang/nl_server_config.lng b/interface/web/admin/lib/lang/nl_server_config.lng
index 2884f304ec..4ac525328b 100644
--- a/interface/web/admin/lib/lang/nl_server_config.lng
+++ b/interface/web/admin/lib/lang/nl_server_config.lng
@@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter';
 $wb['rspamd_url_txt'] = 'Rspamd URL';
 $wb['rspamd_user_txt'] = 'Rspamd User';
 $wb['rspamd_password_txt'] = 'Rspamd Password';
+$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol';
+$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port';
+$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port';
 ?>
diff --git a/interface/web/admin/lib/lang/pl_server_config.lng b/interface/web/admin/lib/lang/pl_server_config.lng
index 29cb94e96c..45876422e0 100644
--- a/interface/web/admin/lib/lang/pl_server_config.lng
+++ b/interface/web/admin/lib/lang/pl_server_config.lng
@@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter';
 $wb['rspamd_url_txt'] = 'Rspamd URL';
 $wb['rspamd_user_txt'] = 'Rspamd User';
 $wb['rspamd_password_txt'] = 'Rspamd Password';
+$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol';
+$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port';
+$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port';
 ?>
diff --git a/interface/web/admin/lib/lang/pt_server_config.lng b/interface/web/admin/lib/lang/pt_server_config.lng
index 3703c759ed..7f29d9b161 100644
--- a/interface/web/admin/lib/lang/pt_server_config.lng
+++ b/interface/web/admin/lib/lang/pt_server_config.lng
@@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter';
 $wb['rspamd_url_txt'] = 'Rspamd URL';
 $wb['rspamd_user_txt'] = 'Rspamd User';
 $wb['rspamd_password_txt'] = 'Rspamd Password';
+$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol';
+$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port';
+$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port';
 ?>
diff --git a/interface/web/admin/lib/lang/ro_server_config.lng b/interface/web/admin/lib/lang/ro_server_config.lng
index 3251476126..1a3a2df2dc 100644
--- a/interface/web/admin/lib/lang/ro_server_config.lng
+++ b/interface/web/admin/lib/lang/ro_server_config.lng
@@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter';
 $wb['rspamd_url_txt'] = 'Rspamd URL';
 $wb['rspamd_user_txt'] = 'Rspamd User';
 $wb['rspamd_password_txt'] = 'Rspamd Password';
+$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol';
+$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port';
+$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port';
 ?>
diff --git a/interface/web/admin/lib/lang/ru_server_config.lng b/interface/web/admin/lib/lang/ru_server_config.lng
index b2f0b407d6..1352fa9930 100644
--- a/interface/web/admin/lib/lang/ru_server_config.lng
+++ b/interface/web/admin/lib/lang/ru_server_config.lng
@@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter';
 $wb['rspamd_url_txt'] = 'Rspamd URL';
 $wb['rspamd_user_txt'] = 'Rspamd User';
 $wb['rspamd_password_txt'] = 'Rspamd Password';
+$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol';
+$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port';
+$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port';
 ?>
diff --git a/interface/web/admin/lib/lang/se_server_config.lng b/interface/web/admin/lib/lang/se_server_config.lng
index 1103baa4d2..d2363b624a 100644
--- a/interface/web/admin/lib/lang/se_server_config.lng
+++ b/interface/web/admin/lib/lang/se_server_config.lng
@@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter';
 $wb['rspamd_url_txt'] = 'Rspamd URL';
 $wb['rspamd_user_txt'] = 'Rspamd User';
 $wb['rspamd_password_txt'] = 'Rspamd Password';
+$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol';
+$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port';
+$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port';
 ?>
diff --git a/interface/web/admin/lib/lang/sk_server_config.lng b/interface/web/admin/lib/lang/sk_server_config.lng
index 125e0b1ea2..6c272fc17a 100644
--- a/interface/web/admin/lib/lang/sk_server_config.lng
+++ b/interface/web/admin/lib/lang/sk_server_config.lng
@@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter';
 $wb['rspamd_url_txt'] = 'Rspamd URL';
 $wb['rspamd_user_txt'] = 'Rspamd User';
 $wb['rspamd_password_txt'] = 'Rspamd Password';
+$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol';
+$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port';
+$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port';
 ?>
diff --git a/interface/web/admin/lib/lang/tr_server_config.lng b/interface/web/admin/lib/lang/tr_server_config.lng
index 3b63e881f9..27058881dc 100644
--- a/interface/web/admin/lib/lang/tr_server_config.lng
+++ b/interface/web/admin/lib/lang/tr_server_config.lng
@@ -294,4 +294,7 @@ $wb['log_retention_txt'] = 'Günlük Tutma Süresi (Gün)';
 $wb['log_retention_error_ispositive'] = 'Günlük tutma süresi 0 değerinden büyük bir sayı olmalıdır';
 $wb['php_default_name_txt'] = 'Varsayılan PHP Sürümü Açıklaması';
 $wb['php_default_name_error_empty'] = 'Varsayılan PHP sürümü açıklaması boş olamaz';
+$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol';
+$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port';
+$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port';
 ?>
diff --git a/interface/web/admin/templates/server_config_web_edit.htm b/interface/web/admin/templates/server_config_web_edit.htm
index eb285bbc07..4d11850ebc 100644
--- a/interface/web/admin/templates/server_config_web_edit.htm
+++ b/interface/web/admin/templates/server_config_web_edit.htm
@@ -54,6 +54,20 @@
 				{tmpl_var name='vhost_rewrite_v6'}
 			</div>
 		</div>
+        <div class="form-group">
+            <label for="vhost_proxy_protocol_enabled" class="col-sm-3 control-label">{tmpl_var name='vhost_proxy_protocol_enabled_txt'}</label>
+            <div class="col-sm-9">
+                {tmpl_var name='vhost_proxy_protocol_enabled'}
+            </div>
+        </div>
+        <div class="form-group">
+            <label for="vhost_proxy_protocol_http_port" class="col-sm-3 control-label">{tmpl_var name='vhost_proxy_protocol_http_port_txt'}</label>
+            <div class="col-sm-9"><input type="text" name="vhost_proxy_protocol_http_port" id="vhost_proxy_protocol_http_port" value="{tmpl_var name='vhost_proxy_protocol_http_port'}" class="form-control"/></div>
+        </div>
+        <div class="form-group">
+            <label for="vhost_proxy_protocol_https_port" class="col-sm-3 control-label">{tmpl_var name='vhost_proxy_protocol_https_port_txt'}</label>
+            <div class="col-sm-9"><input type="text" name="vhost_proxy_protocol_https_port" id="vhost_proxy_protocol_https_port" value="{tmpl_var name='vhost_proxy_protocol_https_port'}" class="form-control"/></div>
+        </div>
             <div class="form-group apache">
                 <label for="vhost_conf_dir" class="col-sm-3 control-label">{tmpl_var name='vhost_conf_dir_txt'}</label>
                 <div class="col-sm-9"><input type="text" name="vhost_conf_dir" id="vhost_conf_dir" value="{tmpl_var name='vhost_conf_dir'}" class="form-control" /></div></div>
diff --git a/interface/web/sites/form/web_vhost_domain.tform.php b/interface/web/sites/form/web_vhost_domain.tform.php
index 838445e361..8b5a36441a 100644
--- a/interface/web/sites/form/web_vhost_domain.tform.php
+++ b/interface/web/sites/form/web_vhost_domain.tform.php
@@ -766,6 +766,12 @@ if($_SESSION["s"]["user"]["typ"] == 'admin'
 				'width'  => '30',
 				'maxlength' => '255'
 			),
+			'proxy_protocol' => array (
+				'datatype' => 'VARCHAR',
+				'formtype' => 'CHECKBOX',
+				'default' => 'y',
+				'value' => array(0 => 'n',1 => 'y')
+			),
 			'php_fpm_use_socket' => array (
 				'datatype' => 'VARCHAR',
 				'formtype' => 'CHECKBOX',
diff --git a/interface/web/sites/lib/lang/ar_web_vhost_domain.lng b/interface/web/sites/lib/lang/ar_web_vhost_domain.lng
index f208ab3f36..33e3609253 100644
--- a/interface/web/sites/lib/lang/ar_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/ar_web_vhost_domain.lng
@@ -153,4 +153,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed';
 $wb['log_retention_txt'] = 'Logfiles retention time';
 $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
+$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
 ?>
diff --git a/interface/web/sites/lib/lang/bg_web_vhost_domain.lng b/interface/web/sites/lib/lang/bg_web_vhost_domain.lng
index a84d915230..07732b9df1 100644
--- a/interface/web/sites/lib/lang/bg_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/bg_web_vhost_domain.lng
@@ -153,4 +153,5 @@ $wb['log_retention_txt'] = 'Logfiles retention time';
 $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)';
 $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
+$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
 ?>
diff --git a/interface/web/sites/lib/lang/br_web_vhost_domain.lng b/interface/web/sites/lib/lang/br_web_vhost_domain.lng
index 01a7414a98..38869d7201 100644
--- a/interface/web/sites/lib/lang/br_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/br_web_vhost_domain.lng
@@ -158,4 +158,5 @@ $wb['enable_pagespeed_txt'] = 'Habilitar PageSpeed';
 $wb['log_retention_txt'] = 'Tempo de retenção do log de arquivos';
 $wb['log_retention_error_regex'] = 'Tempo de retenção em dias (valores permitidos: mínimo 0, máximo 9999)';
 $wb['limit_web_quota_not_0_txt'] = 'Cota de disco não pode ser configurada para 0.';
+$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
 ?>
diff --git a/interface/web/sites/lib/lang/ca_web_vhost_domain.lng b/interface/web/sites/lib/lang/ca_web_vhost_domain.lng
index aae2f46339..ea6592e0a4 100644
--- a/interface/web/sites/lib/lang/ca_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/ca_web_vhost_domain.lng
@@ -153,4 +153,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed';
 $wb['log_retention_txt'] = 'Logfiles retention time';
 $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
+$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
 ?>
diff --git a/interface/web/sites/lib/lang/cz_web_vhost_domain.lng b/interface/web/sites/lib/lang/cz_web_vhost_domain.lng
index deaa3269c4..ae70021b23 100644
--- a/interface/web/sites/lib/lang/cz_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/cz_web_vhost_domain.lng
@@ -153,4 +153,5 @@ $wb['log_retention_txt'] = 'Logfiles retention time';
 $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)';
 $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
+$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
 ?>
diff --git a/interface/web/sites/lib/lang/de_web_vhost_domain.lng b/interface/web/sites/lib/lang/de_web_vhost_domain.lng
index d95b6d47e4..bc56b403d2 100644
--- a/interface/web/sites/lib/lang/de_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/de_web_vhost_domain.lng
@@ -153,4 +153,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed';
 $wb['log_retention_txt'] = 'Log-Dateien Aufbewahrungszeit';
 $wb['log_retention_error_regex'] = 'Aufbewahrungszeit in Tagen (Erlaubte Werte: min. 0 - max. 9999)';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota kann nicht 0 sein.';
+$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
 ?>
diff --git a/interface/web/sites/lib/lang/dk_web_vhost_domain.lng b/interface/web/sites/lib/lang/dk_web_vhost_domain.lng
index aae2f46339..ea6592e0a4 100644
--- a/interface/web/sites/lib/lang/dk_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/dk_web_vhost_domain.lng
@@ -153,4 +153,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed';
 $wb['log_retention_txt'] = 'Logfiles retention time';
 $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
+$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
 ?>
diff --git a/interface/web/sites/lib/lang/el_web_vhost_domain.lng b/interface/web/sites/lib/lang/el_web_vhost_domain.lng
index 0ea2c2a796..0dd4ec4a3f 100644
--- a/interface/web/sites/lib/lang/el_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/el_web_vhost_domain.lng
@@ -153,4 +153,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed';
 $wb['log_retention_txt'] = 'Logfiles retention time';
 $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
+$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
 ?>
diff --git a/interface/web/sites/lib/lang/en_web_vhost_domain.lng b/interface/web/sites/lib/lang/en_web_vhost_domain.lng
index ae546e1c4d..ce67090685 100644
--- a/interface/web/sites/lib/lang/en_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/en_web_vhost_domain.lng
@@ -158,4 +158,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed';
 $wb['log_retention_txt'] = 'Logfiles retention time';
 $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
+$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
 ?>
diff --git a/interface/web/sites/lib/lang/es_web_vhost_domain.lng b/interface/web/sites/lib/lang/es_web_vhost_domain.lng
index f98c02db15..31eacbda72 100644
--- a/interface/web/sites/lib/lang/es_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/es_web_vhost_domain.lng
@@ -153,4 +153,5 @@ $wb['log_retention_txt'] = 'Logfiles retention time';
 $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)';
 $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
+$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
 ?>
diff --git a/interface/web/sites/lib/lang/fi_web_vhost_domain.lng b/interface/web/sites/lib/lang/fi_web_vhost_domain.lng
index c7c4a14432..48bbe91304 100644
--- a/interface/web/sites/lib/lang/fi_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/fi_web_vhost_domain.lng
@@ -153,4 +153,5 @@ $wb['log_retention_txt'] = 'Logfiles retention time';
 $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)';
 $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
+$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
 ?>
diff --git a/interface/web/sites/lib/lang/fr_web_vhost_domain.lng b/interface/web/sites/lib/lang/fr_web_vhost_domain.lng
index 931c00a533..ece6d134e3 100644
--- a/interface/web/sites/lib/lang/fr_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/fr_web_vhost_domain.lng
@@ -153,4 +153,5 @@ $wb['log_retention_txt'] = 'Logfiles retention time';
 $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)';
 $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
+$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
 ?>
diff --git a/interface/web/sites/lib/lang/hr_web_vhost_domain.lng b/interface/web/sites/lib/lang/hr_web_vhost_domain.lng
index 7842d770b4..e0ad832ad0 100644
--- a/interface/web/sites/lib/lang/hr_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/hr_web_vhost_domain.lng
@@ -153,4 +153,5 @@ $wb['log_retention_txt'] = 'Logfiles retention time';
 $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)';
 $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
+$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
 ?>
diff --git a/interface/web/sites/lib/lang/hu_web_vhost_domain.lng b/interface/web/sites/lib/lang/hu_web_vhost_domain.lng
index a40a4b62a5..7c7a653007 100644
--- a/interface/web/sites/lib/lang/hu_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/hu_web_vhost_domain.lng
@@ -153,4 +153,5 @@ $wb['log_retention_txt'] = 'Logfiles retention time';
 $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)';
 $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
+$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
 ?>
diff --git a/interface/web/sites/lib/lang/id_web_vhost_domain.lng b/interface/web/sites/lib/lang/id_web_vhost_domain.lng
index 617e7fe769..7e61328ed9 100644
--- a/interface/web/sites/lib/lang/id_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/id_web_vhost_domain.lng
@@ -153,4 +153,5 @@ $wb['log_retention_txt'] = 'Logfiles retention time';
 $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)';
 $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
+$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
 ?>
diff --git a/interface/web/sites/lib/lang/it_web_vhost_domain.lng b/interface/web/sites/lib/lang/it_web_vhost_domain.lng
index 9fbca551a3..194704d185 100644
--- a/interface/web/sites/lib/lang/it_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/it_web_vhost_domain.lng
@@ -153,4 +153,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed';
 $wb['log_retention_txt'] = 'Logfiles retention time';
 $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
+$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
 ?>
diff --git a/interface/web/sites/lib/lang/ja_web_vhost_domain.lng b/interface/web/sites/lib/lang/ja_web_vhost_domain.lng
index 0efd971187..3d22555524 100644
--- a/interface/web/sites/lib/lang/ja_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/ja_web_vhost_domain.lng
@@ -153,4 +153,5 @@ $wb['log_retention_txt'] = 'Logfiles retention time';
 $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)';
 $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
+$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
 ?>
diff --git a/interface/web/sites/lib/lang/nl_web_vhost_domain.lng b/interface/web/sites/lib/lang/nl_web_vhost_domain.lng
index dd007d549f..e0b580d96f 100644
--- a/interface/web/sites/lib/lang/nl_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/nl_web_vhost_domain.lng
@@ -153,4 +153,5 @@ $wb['log_retention_txt'] = 'Logfiles retention time';
 $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)';
 $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
+$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
 ?>
diff --git a/interface/web/sites/lib/lang/pl_web_vhost_domain.lng b/interface/web/sites/lib/lang/pl_web_vhost_domain.lng
index 8a426b0a1a..f136e2c1c6 100644
--- a/interface/web/sites/lib/lang/pl_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/pl_web_vhost_domain.lng
@@ -153,4 +153,5 @@ $wb['log_retention_txt'] = 'Logfiles retention time';
 $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)';
 $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
+$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
 ?>
diff --git a/interface/web/sites/lib/lang/pt_web_vhost_domain.lng b/interface/web/sites/lib/lang/pt_web_vhost_domain.lng
index 170f2feb04..08689a0cd9 100644
--- a/interface/web/sites/lib/lang/pt_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/pt_web_vhost_domain.lng
@@ -153,4 +153,5 @@ $wb['log_retention_txt'] = 'Logfiles retention time';
 $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)';
 $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
+$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
 ?>
diff --git a/interface/web/sites/lib/lang/ro_web_vhost_domain.lng b/interface/web/sites/lib/lang/ro_web_vhost_domain.lng
index 046c2c71a6..9b799d1d80 100644
--- a/interface/web/sites/lib/lang/ro_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/ro_web_vhost_domain.lng
@@ -153,4 +153,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed';
 $wb['log_retention_txt'] = 'Logfiles retention time';
 $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
+$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
 ?>
diff --git a/interface/web/sites/lib/lang/ru_web_vhost_domain.lng b/interface/web/sites/lib/lang/ru_web_vhost_domain.lng
index e87af3b654..dcc6b04710 100644
--- a/interface/web/sites/lib/lang/ru_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/ru_web_vhost_domain.lng
@@ -153,4 +153,5 @@ $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.';
 $wb['log_retention_txt'] = 'Logfiles retention time';
 $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
+$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
 ?>
diff --git a/interface/web/sites/lib/lang/se_web_vhost_domain.lng b/interface/web/sites/lib/lang/se_web_vhost_domain.lng
index 1a2572b950..22959a1bb0 100644
--- a/interface/web/sites/lib/lang/se_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/se_web_vhost_domain.lng
@@ -153,4 +153,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed';
 $wb['log_retention_txt'] = 'Logfiles retention time';
 $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
+$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
 ?>
diff --git a/interface/web/sites/lib/lang/sk_web_vhost_domain.lng b/interface/web/sites/lib/lang/sk_web_vhost_domain.lng
index 17e60da6e6..a688adac64 100644
--- a/interface/web/sites/lib/lang/sk_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/sk_web_vhost_domain.lng
@@ -153,4 +153,5 @@ $wb['log_retention_txt'] = 'Logfiles retention time';
 $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)';
 $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
+$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
 ?>
diff --git a/interface/web/sites/templates/web_vhost_domain_advanced.htm b/interface/web/sites/templates/web_vhost_domain_advanced.htm
index 0b5ddfbd8b..11f95d9cbd 100644
--- a/interface/web/sites/templates/web_vhost_domain_advanced.htm
+++ b/interface/web/sites/templates/web_vhost_domain_advanced.htm
@@ -49,7 +49,13 @@
 			<div class="form-group nginx">
                 <label for="https_port" class="col-sm-3 control-label">{tmpl_var name='https_port_txt'}</label>
                 <div class="col-sm-9"><input name="https_port" id="https_port" value="{tmpl_var name='https_port'}" type="text" class="form-control" /></div>
-            </div>	
+            </div>
+            <div class="form-group">
+                <label class="col-sm-3 control-label">{tmpl_var name='proxy_protocol_txt'}</label>
+                <div class="col-sm-9">
+                    {tmpl_var name='proxy_protocol'}
+                </div>
+            </div>
             <div class="phpfpm">
                 <div class="form-group">
                     <label class="col-sm-3 control-label">{tmpl_var name='php_fpm_use_socket_txt'}</label>
diff --git a/server/conf/nginx_vhost.conf.master b/server/conf/nginx_vhost.conf.master
index b1db61fe1c..e45226d943 100644
--- a/server/conf/nginx_vhost.conf.master
+++ b/server/conf/nginx_vhost.conf.master
@@ -1,5 +1,10 @@
 server {
         listen <tmpl_var name='ip_address'>:<tmpl_var name='http_port'>;
+<tmpl_if name='proxy_protocol' op='==' value='y'>
+<tmpl_if name='proxy_protocol_http' op='>' value='0'>
+        listen <tmpl_var name='ip_address'>:<tmpl_var name='proxy_protocol_http'> proxy_protocol;
+</tmpl_if>
+</tmpl_if>
 <tmpl_if name='ipv6_enabled'>
         listen [<tmpl_var name='ipv6_address'>]:<tmpl_var name='http_port'>;
 </tmpl_if>
@@ -8,6 +13,11 @@ server {
 </tmpl_if>
 <tmpl_if name='ssl_enabled'>
         listen <tmpl_var name='ip_address'>:<tmpl_var name='https_port'> ssl{tmpl_if name='enable_http2' op='==' value='y'} http2{/tmpl_if}{tmpl_if name='enable_spdy' op='==' value='y'} spdy{/tmpl_if};
+<tmpl_if name='proxy_protocol' op='==' value='y'>
+<tmpl_if name='proxy_protocol_https' op='>' value='0'>
+        listen <tmpl_var name='ip_address'>:<tmpl_var name='proxy_protocol_https'> ssl proxy_protocol;
+</tmpl_if>
+</tmpl_if>
 		ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 		# ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
 		# ssl_prefer_server_ciphers on;
diff --git a/server/conf/vhost.conf.master b/server/conf/vhost.conf.master
index 0982a3cf41..47d3cef5b1 100644
--- a/server/conf/vhost.conf.master
+++ b/server/conf/vhost.conf.master
@@ -12,6 +12,19 @@
 
 <tmpl_loop name='vhosts'>
 <VirtualHost {tmpl_var name='ip_address'}:{tmpl_var name='port'}>
+
+<tmpl_if name='proxy_protocol' op='==' value='y'>
+<tmpl_if name='apache_version' op='>=' value='2.4.30' format='version'>
+	<IfModule mod_remoteip.c>
+		RemoteIPProxyProtocol On
+	</IfModule>
+	</tmpl_else>
+	<IfModule mod_proxy_protocol.c>
+		ProxyProtocol On
+	</IfModule>
+</tmpl_if>
+</tmpl_if>
+
 <tmpl_hook name='apache2_vhost:vhost_header'>
 <tmpl_if name='php' op='==' value='suphp'>
 		DocumentRoot <tmpl_var name='web_document_root'>
diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php
index 59e97629cb..f0da9e62e0 100644
--- a/server/plugins-available/apache2_plugin.inc.php
+++ b/server/plugins-available/apache2_plugin.inc.php
@@ -1675,6 +1675,16 @@ class apache2_plugin {
 		if(count($rewrite_rules) > 0)  $tmp_vhost_arr = $tmp_vhost_arr + array('redirects' => $rewrite_rules);
 		if(count($alias_seo_redirects) > 0) $tmp_vhost_arr = $tmp_vhost_arr + array('alias_seo_redirects' => $alias_seo_redirects);
 		$vhosts[] = $tmp_vhost_arr;
+
+		//if proxy protocol is enabled we need to add a new port to lsiten to
+		if($web_config['vhost_proxy_protocol_enabled'] == 'y' && $data['new']['proxy_protocol'] == 'y'){
+			if((int)$web_config['vhost_proxy_protocol_http_port'] > 0) {
+				$tmp_vhost_arr['port']           = (int)$web_config['vhost_proxy_protocol_http_port'];
+				$tmp_vhost_arr['proxy_protocol'] = $data['new']['proxy_protocol'];
+				$vhosts[]                        = $tmp_vhost_arr;
+			}
+		}
+
 		unset($tmp_vhost_arr);
 
 		//* Add vhost for ipv4 IP with SSL
@@ -1689,6 +1699,16 @@ class apache2_plugin {
 			}
 			if(count($ipv4_ssl_alias_seo_redirects) > 0) $tmp_vhost_arr = $tmp_vhost_arr + array('alias_seo_redirects' => $ipv4_ssl_alias_seo_redirects);
 			$vhosts[] = $tmp_vhost_arr;
+
+			//if proxy protocol is enabled we need to add a new port to lsiten to
+			if($web_config['vhost_proxy_protocol_enabled'] == 'y' && $data['new']['proxy_protocol'] == 'y'){
+				if((int)$web_config['vhost_proxy_protocol_https_port'] > 0) {
+					$tmp_vhost_arr['port']           = (int)$web_config['vhost_proxy_protocol_https_port'];
+					$tmp_vhost_arr['proxy_protocol'] = $data['new']['proxy_protocol'];
+					$vhosts[]                        = $tmp_vhost_arr;
+				}
+			}
+
 			unset($tmp_vhost_arr, $ipv4_ssl_alias_seo_redirects);
 			$app->log('Enable SSL for: '.$domain, LOGLEVEL_DEBUG);
 		}
diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php
index a8a3c3bf16..79cb017161 100644
--- a/server/plugins-available/nginx_plugin.inc.php
+++ b/server/plugins-available/nginx_plugin.inc.php
@@ -1519,6 +1519,15 @@ class nginx_plugin {
 			}
 			unset($tmp_output, $tmp_retval);
 		}
+
+		//proxy protocol settings
+		if($web_config['vhost_proxy_protocol_enabled'] == "y"){
+			$vhost_data['proxy_protocol'] = $data['new']['proxy_protocol'];
+			$vhost_data['proxy_protocol_http'] = (int)$web_config['vhost_proxy_protocol_http_port'];
+			$vhost_data['proxy_protocol_https'] = (int)$web_config['vhost_proxy_protocol_https_port'];
+		}else{
+			$vhost_data['proxy_protocol'] = "n";
+		}
 		
 		// set logging variable
 		$vhost_data['logging'] = $web_config['logging'];
-- 
GitLab


From 21559a634d07ba29c42b8d6b5c293161117fca96 Mon Sep 17 00:00:00 2001
From: Jason Townsend <jason.townsend@inbox.com>
Date: Sat, 23 Nov 2019 18:05:43 +0000
Subject: [PATCH 088/242] Added Missed patch edit, and correct the vhost loop
 Change the name from proxy_protocol to use_proxy_protocol in vhost file due
 to site level overriding the check

tested both on apache2 and nginx with haproxy load balancer on TCP Mode
---
 interface/web/admin/lib/lang/en_server_config.lng | 3 +++
 server/conf/nginx_vhost.conf.master               | 4 ++--
 server/conf/vhost.conf.master                     | 3 +--
 server/plugins-available/apache2_plugin.inc.php   | 4 ++--
 server/plugins-available/nginx_plugin.inc.php     | 4 ++--
 5 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng
index 0ba3638a0a..9282cb4bd2 100644
--- a/interface/web/admin/lib/lang/en_server_config.lng
+++ b/interface/web/admin/lib/lang/en_server_config.lng
@@ -301,3 +301,6 @@ $wb['content_filter_txt'] = 'Content Filter';
 $wb['rspamd_url_txt'] = 'Rspamd URL';
 $wb['rspamd_user_txt'] = 'Rspamd User';
 $wb['rspamd_password_txt'] = 'Rspamd Password';
+$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol';
+$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port';
+$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port';
diff --git a/server/conf/nginx_vhost.conf.master b/server/conf/nginx_vhost.conf.master
index e45226d943..4487e4e450 100644
--- a/server/conf/nginx_vhost.conf.master
+++ b/server/conf/nginx_vhost.conf.master
@@ -1,6 +1,6 @@
 server {
         listen <tmpl_var name='ip_address'>:<tmpl_var name='http_port'>;
-<tmpl_if name='proxy_protocol' op='==' value='y'>
+<tmpl_if name='use_proxy_protocol' op='==' value='y'>
 <tmpl_if name='proxy_protocol_http' op='>' value='0'>
         listen <tmpl_var name='ip_address'>:<tmpl_var name='proxy_protocol_http'> proxy_protocol;
 </tmpl_if>
@@ -13,7 +13,7 @@ server {
 </tmpl_if>
 <tmpl_if name='ssl_enabled'>
         listen <tmpl_var name='ip_address'>:<tmpl_var name='https_port'> ssl{tmpl_if name='enable_http2' op='==' value='y'} http2{/tmpl_if}{tmpl_if name='enable_spdy' op='==' value='y'} spdy{/tmpl_if};
-<tmpl_if name='proxy_protocol' op='==' value='y'>
+<tmpl_if name='use_proxy_protocol' op='==' value='y'>
 <tmpl_if name='proxy_protocol_https' op='>' value='0'>
         listen <tmpl_var name='ip_address'>:<tmpl_var name='proxy_protocol_https'> ssl proxy_protocol;
 </tmpl_if>
diff --git a/server/conf/vhost.conf.master b/server/conf/vhost.conf.master
index 47d3cef5b1..ab6cebe4d0 100644
--- a/server/conf/vhost.conf.master
+++ b/server/conf/vhost.conf.master
@@ -12,8 +12,7 @@
 
 <tmpl_loop name='vhosts'>
 <VirtualHost {tmpl_var name='ip_address'}:{tmpl_var name='port'}>
-
-<tmpl_if name='proxy_protocol' op='==' value='y'>
+<tmpl_if name='use_proxy_protocol' op='==' value='y'>
 <tmpl_if name='apache_version' op='>=' value='2.4.30' format='version'>
 	<IfModule mod_remoteip.c>
 		RemoteIPProxyProtocol On
diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php
index f0da9e62e0..5e80be9740 100644
--- a/server/plugins-available/apache2_plugin.inc.php
+++ b/server/plugins-available/apache2_plugin.inc.php
@@ -1680,7 +1680,7 @@ class apache2_plugin {
 		if($web_config['vhost_proxy_protocol_enabled'] == 'y' && $data['new']['proxy_protocol'] == 'y'){
 			if((int)$web_config['vhost_proxy_protocol_http_port'] > 0) {
 				$tmp_vhost_arr['port']           = (int)$web_config['vhost_proxy_protocol_http_port'];
-				$tmp_vhost_arr['proxy_protocol'] = $data['new']['proxy_protocol'];
+				$tmp_vhost_arr['use_proxy_protocol'] = $data['new']['proxy_protocol'];
 				$vhosts[]                        = $tmp_vhost_arr;
 			}
 		}
@@ -1704,7 +1704,7 @@ class apache2_plugin {
 			if($web_config['vhost_proxy_protocol_enabled'] == 'y' && $data['new']['proxy_protocol'] == 'y'){
 				if((int)$web_config['vhost_proxy_protocol_https_port'] > 0) {
 					$tmp_vhost_arr['port']           = (int)$web_config['vhost_proxy_protocol_https_port'];
-					$tmp_vhost_arr['proxy_protocol'] = $data['new']['proxy_protocol'];
+					$tmp_vhost_arr['use_proxy_protocol'] = $data['new']['proxy_protocol'];
 					$vhosts[]                        = $tmp_vhost_arr;
 				}
 			}
diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php
index 79cb017161..ef9300e5dc 100644
--- a/server/plugins-available/nginx_plugin.inc.php
+++ b/server/plugins-available/nginx_plugin.inc.php
@@ -1522,11 +1522,11 @@ class nginx_plugin {
 
 		//proxy protocol settings
 		if($web_config['vhost_proxy_protocol_enabled'] == "y"){
-			$vhost_data['proxy_protocol'] = $data['new']['proxy_protocol'];
+			$vhost_data['use_proxy_protocol'] = $data['new']['proxy_protocol'];
 			$vhost_data['proxy_protocol_http'] = (int)$web_config['vhost_proxy_protocol_http_port'];
 			$vhost_data['proxy_protocol_https'] = (int)$web_config['vhost_proxy_protocol_https_port'];
 		}else{
-			$vhost_data['proxy_protocol'] = "n";
+			$vhost_data['use_proxy_protocol'] = "n";
 		}
 		
 		// set logging variable
-- 
GitLab


From b92c60a87f96648f1db88669a66c7eebd0a147f0 Mon Sep 17 00:00:00 2001
From: Ales Seifert <seifert@alesak.net>
Date: Sun, 24 Nov 2019 15:29:26 +1100
Subject: [PATCH 089/242] FIXES bug mysql-virtual_outgoing_bcc.cf table is not
 configured with correct DB server host when postfix configuration is updated
 during ISPConfig installation or update

---
 install/tpl/mysql-virtual_outgoing_bcc.cf        | 2 +-
 install/tpl/mysql-virtual_outgoing_bcc.cf.master | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/install/tpl/mysql-virtual_outgoing_bcc.cf b/install/tpl/mysql-virtual_outgoing_bcc.cf
index dfeb04b553..78fca41a2f 100644
--- a/install/tpl/mysql-virtual_outgoing_bcc.cf
+++ b/install/tpl/mysql-virtual_outgoing_bcc.cf
@@ -5,4 +5,4 @@ table = mail_user
 select_field = sender_cc
 where_field = email
 additional_conditions = and postfix = 'y' and disabledeliver = 'n' and disables$
-hosts = 127.0.0.1
\ No newline at end of file
+hosts = {mysql_server_ip}
\ No newline at end of file
diff --git a/install/tpl/mysql-virtual_outgoing_bcc.cf.master b/install/tpl/mysql-virtual_outgoing_bcc.cf.master
index af062f66b2..53afa53106 100644
--- a/install/tpl/mysql-virtual_outgoing_bcc.cf.master
+++ b/install/tpl/mysql-virtual_outgoing_bcc.cf.master
@@ -5,4 +5,4 @@ table = mail_user
 select_field = sender_cc
 where_field = email
 additional_conditions = and postfix = 'y' and disabledeliver = 'n' and disablesmtp = 'n' and sender_cc != ''
-hosts = 127.0.0.1
\ No newline at end of file
+hosts = {mysql_server_ip}
\ No newline at end of file
-- 
GitLab


From 6661b222a9a47f3b7d8efba3e3bca2763b9d49a2 Mon Sep 17 00:00:00 2001
From: Webslice <webslice@bixels.nl>
Date: Wed, 30 Oct 2019 13:08:20 +0100
Subject: [PATCH 090/242] #5428 ignore custom directives if forced https

---
 server/conf/vhost.conf.master | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/server/conf/vhost.conf.master b/server/conf/vhost.conf.master
index 0982a3cf41..d95d810ad3 100644
--- a/server/conf/vhost.conf.master
+++ b/server/conf/vhost.conf.master
@@ -529,7 +529,16 @@
 			# WEBDAV END
 		</IfModule>
 
-<tmpl_var name='apache_directives'>
+<tmpl_if name='ssl_enabled'>
+	<tmpl_var name='apache_directives'>
+<tmpl_else>
+	<tmpl_if name='rewrite_to_https' op='==' value='y'>
+		# skipping apache_directives, as that will be handled by the ssl vhost
+	<tmpl_else>
+		<tmpl_var name='apache_directives'>
+	</tmpl_if>
+</tmpl_if>
+
 <tmpl_hook name='apache2_vhost:vhost_footer'>
 </VirtualHost>
 
-- 
GitLab


From 89e4ff3334430812d423fdc5b5e7cfea83997125 Mon Sep 17 00:00:00 2001
From: Webslice <webslice@bixels.nl>
Date: Tue, 22 Oct 2019 20:42:54 +0200
Subject: [PATCH 091/242] #5387 boyscout: wrap ProxyFCGISetEnvIf in appropriate
 IfVersion

---
 server/conf/vhost.conf.master | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/server/conf/vhost.conf.master b/server/conf/vhost.conf.master
index 0982a3cf41..312be41b52 100644
--- a/server/conf/vhost.conf.master
+++ b/server/conf/vhost.conf.master
@@ -379,10 +379,12 @@
 		</IfModule>
 		<IfModule mod_proxy_fcgi.c>
 <tmpl_if name='php_fpm_chroot' op='==' value='y'>
-			ProxyFCGISetEnvIf "true" DOCUMENT_ROOT "<tmpl_var name='php_fpm_chroot_web_folder'>"
-			ProxyFCGISetEnvIf "true" CONTEXT_DOCUMENT_ROOT "%{reqenv:DOCUMENT_ROOT}"
-			ProxyFCGISetEnvIf "true" HOME "%{reqenv:DOCUMENT_ROOT}"
-			ProxyFCGISetEnvIf "true" SCRIPT_FILENAME "%{reqenv:DOCUMENT_ROOT}%{reqenv:SCRIPT_NAME}"
+			<IfVersion >= 2.4.26>
+				ProxyFCGISetEnvIf "true" DOCUMENT_ROOT "<tmpl_var name='php_fpm_chroot_web_folder'>"
+				ProxyFCGISetEnvIf "true" CONTEXT_DOCUMENT_ROOT "%{reqenv:DOCUMENT_ROOT}"
+				ProxyFCGISetEnvIf "true" HOME "%{reqenv:DOCUMENT_ROOT}"
+				ProxyFCGISetEnvIf "true" SCRIPT_FILENAME "%{reqenv:DOCUMENT_ROOT}%{reqenv:SCRIPT_NAME}"
+			</IfVersion>
 </tmpl_if>
 <tmpl_if name='use_tcp'>
 			#ProxyPassMatch ^/(.*\.php[345]?(/.*)?)$ fcgi://127.0.0.1:<tmpl_var name='fpm_port'><tmpl_var name='web_document_root'>/$1
-- 
GitLab


From b2d8559a5323977f7e77d75d634de3babfd4bd11 Mon Sep 17 00:00:00 2001
From: Webslice <webslice@bixels.nl>
Date: Tue, 22 Oct 2019 22:01:32 +0200
Subject: [PATCH 092/242] #5387 make apache init script overridable in server
 config

---
 install/tpl/server.ini.master                            | 1 +
 install/update.php                                       | 9 ++++++++-
 interface/lib/classes/IDS/Config/Config.ini.php          | 1 +
 interface/web/admin/form/server_config.tform.php         | 8 ++++++++
 interface/web/admin/lib/lang/ar_server_config.lng        | 2 ++
 interface/web/admin/lib/lang/bg_server_config.lng        | 2 ++
 interface/web/admin/lib/lang/br_server_config.lng        | 2 ++
 interface/web/admin/lib/lang/ca_server_config.lng        | 2 ++
 interface/web/admin/lib/lang/cz_server_config.lng        | 2 ++
 interface/web/admin/lib/lang/de_server_config.lng        | 2 ++
 interface/web/admin/lib/lang/dk_server_config.lng        | 2 ++
 interface/web/admin/lib/lang/el_server_config.lng        | 2 ++
 interface/web/admin/lib/lang/en_server_config.lng        | 2 ++
 interface/web/admin/lib/lang/es_server_config.lng        | 2 ++
 interface/web/admin/lib/lang/fi_server_config.lng        | 2 ++
 interface/web/admin/lib/lang/fr_server_config.lng        | 2 ++
 interface/web/admin/lib/lang/hr_server_config.lng        | 2 ++
 interface/web/admin/lib/lang/hu_server_config.lng        | 2 ++
 interface/web/admin/lib/lang/id_server_config.lng        | 2 ++
 interface/web/admin/lib/lang/it_server_config.lng        | 2 ++
 interface/web/admin/lib/lang/ja_server_config.lng        | 2 ++
 interface/web/admin/lib/lang/nl_server_config.lng        | 2 ++
 interface/web/admin/lib/lang/pl_server_config.lng        | 2 ++
 interface/web/admin/lib/lang/pt_server_config.lng        | 2 ++
 interface/web/admin/lib/lang/ro_server_config.lng        | 2 ++
 interface/web/admin/lib/lang/ru_server_config.lng        | 2 ++
 interface/web/admin/lib/lang/se_server_config.lng        | 2 ++
 interface/web/admin/lib/lang/sk_server_config.lng        | 2 ++
 interface/web/admin/lib/lang/tr_server_config.lng        | 2 ++
 interface/web/admin/templates/server_config_web_edit.htm | 3 +++
 security/ids.whitelist                                   | 1 +
 server/mods-available/web_module.inc.php                 | 4 +++-
 32 files changed, 75 insertions(+), 2 deletions(-)

diff --git a/install/tpl/server.ini.master b/install/tpl/server.ini.master
index 36f157d8e6..3786fc2ca3 100644
--- a/install/tpl/server.ini.master
+++ b/install/tpl/server.ini.master
@@ -72,6 +72,7 @@ website_symlinks_rel=n
 network_filesystem=n
 vhost_conf_dir=/etc/apache2/sites-available
 vhost_conf_enabled_dir=/etc/apache2/sites-enabled
+apache_init_script=
 nginx_vhost_conf_dir=/etc/nginx/sites-available
 nginx_vhost_conf_enabled_dir=/etc/nginx/sites-enabled
 security_level=20
diff --git a/install/update.php b/install/update.php
index 11570aa666..3b3cf969ef 100644
--- a/install/update.php
+++ b/install/update.php
@@ -567,7 +567,14 @@ if($reconfigure_services_answer == 'yes') {
 		if($conf['mailman']['installed'] == true && $conf['mailman']['init_script'] != '') system('nohup '.$inst->getinitcommand($conf['mailman']['init_script'], 'restart').' >/dev/null 2>&1 &');
 	}
 	if($conf['services']['web'] || $inst->install_ispconfig_interface) {
-		if($conf['webserver']['server_type'] == 'apache' && $conf['apache']['init_script'] != '') system($inst->getinitcommand($conf['apache']['init_script'], 'restart'));
+		if($conf['webserver']['server_type'] == 'apache') {
+			// If user has configured a custom Apache init script, use that. Otherwise use the default auto-detected init script
+			if(!empty($conf['server_config']['web']['apache_init_script'])) {
+				system($inst->getinitcommand($conf['server_config']['web']['apache_init_script'], 'restart'));
+			} elseif(!empty($conf['apache']['init_script'])) {
+				system($inst->getinitcommand($conf['apache']['init_script'], 'restart'));
+			}
+		}
 		//* Reload is enough for nginx
 		if($conf['webserver']['server_type'] == 'nginx'){
 			if($conf['nginx']['php_fpm_init_script'] != '') system($inst->getinitcommand($conf['nginx']['php_fpm_init_script'], 'reload'));
diff --git a/interface/lib/classes/IDS/Config/Config.ini.php b/interface/lib/classes/IDS/Config/Config.ini.php
index 080055298d..19af5d59bd 100644
--- a/interface/lib/classes/IDS/Config/Config.ini.php
+++ b/interface/lib/classes/IDS/Config/Config.ini.php
@@ -47,6 +47,7 @@
 	; exceptions[]    = POST.website_symlinks
 	; exceptions[]    = POST.vhost_conf_dir
 	; exceptions[]    = POST.vhost_conf_enabled_dir
+	; exceptions[]    = POST.apache_init_script
 	; exceptions[]    = POST.nginx_vhost_conf_dir
 	; exceptions[]    = POST.nginx_vhost_conf_enabled_dir
 	; exceptions[]    = POST.php_open_basedir
diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php
index 2663cdd0e0..0e02b8525b 100644
--- a/interface/web/admin/form/server_config.tform.php
+++ b/interface/web/admin/form/server_config.tform.php
@@ -848,6 +848,14 @@ $form["tabs"]['web'] = array(
 			'width' => '40',
 			'maxlength' => '255'
 		),
+		'apache_init_script' => array(
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'default' => '',
+			'value' => '',
+			'width' => '40',
+			'maxlength' => '255'
+		),
 		'nginx_enable_pagespeed' => array (
 			'datatype' => 'VARCHAR',
 			'formtype' => 'CHECKBOX',
diff --git a/interface/web/admin/lib/lang/ar_server_config.lng b/interface/web/admin/lib/lang/ar_server_config.lng
index bccdcc42c0..dec2b56c8e 100644
--- a/interface/web/admin/lib/lang/ar_server_config.lng
+++ b/interface/web/admin/lib/lang/ar_server_config.lng
@@ -9,6 +9,8 @@ $wb['website_symlinks_rel_txt'] = 'Make relative symlinks';
 $wb['website_basedir_txt'] = 'Website basedir';
 $wb['vhost_conf_dir_txt'] = 'Vhost config dir';
 $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config enabled dir';
+$wb['apache_init_script_txt'] = 'Apache init script';
+$wb['apache_init_script_note_txt'] = 'Leaving this empty will auto-detect the Apache init script';
 $wb['getmail_config_dir_txt'] = 'Getmail config dir';
 $wb['fastcgi_starter_path_txt'] = 'FastCGI starter path';
 $wb['fastcgi_starter_script_txt'] = 'FastCGI starter script';
diff --git a/interface/web/admin/lib/lang/bg_server_config.lng b/interface/web/admin/lib/lang/bg_server_config.lng
index 39531461c3..186462720e 100644
--- a/interface/web/admin/lib/lang/bg_server_config.lng
+++ b/interface/web/admin/lib/lang/bg_server_config.lng
@@ -7,6 +7,8 @@ $wb['website_symlinks_txt'] = 'Website symlinks';
 $wb['website_symlinks_rel_txt'] = 'Make relative symlinks';
 $wb['vhost_conf_dir_txt'] = 'Vhost config dir';
 $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config enabled dir';
+$wb['apache_init_script_txt'] = 'Apache init скрипт';
+$wb['apache_init_script_note_txt'] = 'Оставянето на това празно ще открие автоматично скрипта за Apache init';
 $wb['getmail_config_dir_txt'] = 'Getmail config dir';
 $wb['fastcgi_starter_path_txt'] = 'FastCGI starter path';
 $wb['fastcgi_starter_script_txt'] = 'FastCGI starter script';
diff --git a/interface/web/admin/lib/lang/br_server_config.lng b/interface/web/admin/lib/lang/br_server_config.lng
index f57a2310f2..25cb1a3a3d 100644
--- a/interface/web/admin/lib/lang/br_server_config.lng
+++ b/interface/web/admin/lib/lang/br_server_config.lng
@@ -19,6 +19,8 @@ $wb['website_autoalias_txt'] = 'Auto alias - site';
 $wb['website_autoalias_note_txt'] = 'Área reservada:';
 $wb['vhost_conf_dir_txt'] = 'Diretório de configuração vhost';
 $wb['vhost_conf_enabled_dir_txt'] = 'Diretório de configuração vhost habilitado';
+$wb['apache_init_script_txt'] = 'Script de inicialização do Apache';
+$wb['apache_init_script_note_txt'] = 'Deixando esta vontade vazio detectar automaticamente o script de inicialização do Apache';
 $wb['getmail_config_dir_txt'] = 'Diretório de configuração do getmail';
 $wb['fastcgi_starter_path_txt'] = 'Caminho de inicialização do FastCGI';
 $wb['fastcgi_starter_script_txt'] = 'Script de inicialização do FastCGI';
diff --git a/interface/web/admin/lib/lang/ca_server_config.lng b/interface/web/admin/lib/lang/ca_server_config.lng
index 14f0b91d3b..f0d79a89f9 100644
--- a/interface/web/admin/lib/lang/ca_server_config.lng
+++ b/interface/web/admin/lib/lang/ca_server_config.lng
@@ -19,6 +19,8 @@ $wb['website_autoalias_txt'] = 'Website auto alias';
 $wb['website_autoalias_note_txt'] = 'Placeholders:';
 $wb['vhost_conf_dir_txt'] = 'Vhost config dir';
 $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config enabled dir';
+$wb['apache_init_script_txt'] = 'Apache init script';
+$wb['apache_init_script_note_txt'] = 'Leaving this empty will auto-detect the Apache init script';
 $wb['getmail_config_dir_txt'] = 'Getmail config dir';
 $wb['fastcgi_starter_path_txt'] = 'FastCGI starter path';
 $wb['fastcgi_starter_script_txt'] = 'FastCGI starter script';
diff --git a/interface/web/admin/lib/lang/cz_server_config.lng b/interface/web/admin/lib/lang/cz_server_config.lng
index a97d78b8eb..100694c625 100644
--- a/interface/web/admin/lib/lang/cz_server_config.lng
+++ b/interface/web/admin/lib/lang/cz_server_config.lng
@@ -9,6 +9,8 @@ $wb['website_symlinks_rel_txt'] = 'Make relative symlinks';
 $wb['website_basedir_txt'] = 'Website config adresář';
 $wb['vhost_conf_dir_txt'] = 'Vhost config adresář';
 $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config enabled adresář';
+$wb['apache_init_script_txt'] = 'Inicializační skript Apache';
+$wb['apache_init_script_note_txt'] = 'Ponecháte-li toto prázdné, automaticky detekuje iniciační skript Apache';
 $wb['getmail_config_dir_txt'] = 'Getmail složka pro konfigurace';
 $wb['fastcgi_starter_path_txt'] = 'FastCGI starter cesta';
 $wb['fastcgi_starter_script_txt'] = 'FastCGI starter skript';
diff --git a/interface/web/admin/lib/lang/de_server_config.lng b/interface/web/admin/lib/lang/de_server_config.lng
index 960381e7c1..d7f21fc473 100644
--- a/interface/web/admin/lib/lang/de_server_config.lng
+++ b/interface/web/admin/lib/lang/de_server_config.lng
@@ -8,6 +8,8 @@ $wb['website_symlinks_txt'] = 'Webseiten Symlinks';
 $wb['website_symlinks_rel_txt'] = 'Erstelle relative Symlinks';
 $wb['vhost_conf_dir_txt'] = 'vHost Konfigurationsverzeichnis';
 $wb['vhost_conf_enabled_dir_txt'] = 'vHost config enabled dir';
+$wb['apache_init_script_txt'] = 'Apache-Init-Skript';
+$wb['apache_init_script_note_txt'] = 'Wenn Sie dieses Feld leer lassen, wird das Apache-Init-Skript automatisch erkannt';
 $wb['getmail_config_dir_txt'] = 'Getmail Konfigurationsverzeichnis';
 $wb['fastcgi_starter_path_txt'] = 'FastCGI Starter Pfad';
 $wb['fastcgi_starter_script_txt'] = 'FastCGI Starter Script';
diff --git a/interface/web/admin/lib/lang/dk_server_config.lng b/interface/web/admin/lib/lang/dk_server_config.lng
index 73e7ef1bfd..2a8c13e143 100644
--- a/interface/web/admin/lib/lang/dk_server_config.lng
+++ b/interface/web/admin/lib/lang/dk_server_config.lng
@@ -19,6 +19,8 @@ $wb['website_autoalias_txt'] = 'Webside auto alias';
 $wb['website_autoalias_note_txt'] = 'Pladsholdere:';
 $wb['vhost_conf_dir_txt'] = 'Vhost config dir';
 $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config enabled dir';
+$wb['apache_init_script_txt'] = 'Apache init script';
+$wb['apache_init_script_note_txt'] = 'Forlader denne tomme vilje automatisk registrering Apache init-script';
 $wb['getmail_config_dir_txt'] = 'Getmail config dir';
 $wb['fastcgi_starter_path_txt'] = 'FastCGI starter path';
 $wb['fastcgi_starter_script_txt'] = 'FastCGI starter script';
diff --git a/interface/web/admin/lib/lang/el_server_config.lng b/interface/web/admin/lib/lang/el_server_config.lng
index 84992261bb..60d3564e13 100644
--- a/interface/web/admin/lib/lang/el_server_config.lng
+++ b/interface/web/admin/lib/lang/el_server_config.lng
@@ -9,6 +9,8 @@ $wb['website_symlinks_rel_txt'] = 'Δημιουργία σχετικών symlink
 $wb['website_basedir_txt'] = 'Βασικός φάκελος Website';
 $wb['vhost_conf_dir_txt'] = 'Φάκελος ρυθμίσεων Vhost';
 $wb['vhost_conf_enabled_dir_txt'] = 'Φάκελος ρυθμίσεων (ενεργών) Vhost';
+$wb['apache_init_script_txt'] = 'Apache script init';
+$wb['apache_init_script_note_txt'] = 'Εάν αφήσετε αυτό το κενό, θα ανιχνευθεί αυτόματα το σενάριο εισαγωγής Apache';
 $wb['getmail_config_dir_txt'] = 'Φάκελος ρυθμίσεων Getmail';
 $wb['fastcgi_starter_path_txt'] = 'Διαδρομή εκκίνησης FastCGI';
 $wb['fastcgi_starter_script_txt'] = 'Script εκκίνησης FastCGI';
diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng
index 0ba3638a0a..82c847f88d 100644
--- a/interface/web/admin/lib/lang/en_server_config.lng
+++ b/interface/web/admin/lib/lang/en_server_config.lng
@@ -19,6 +19,8 @@ $wb["website_autoalias_txt"] = 'Website auto alias';
 $wb["website_autoalias_note_txt"] = 'Placeholders:';
 $wb["vhost_conf_dir_txt"] = 'Vhost config dir';
 $wb["vhost_conf_enabled_dir_txt"] = 'Vhost config enabled dir';
+$wb["apache_init_script_txt"] = 'Apache init script';
+$wb["apache_init_script_note_txt"] = 'Leaving this empty will auto-detect the Apache init script';
 $wb["getmail_config_dir_txt"] = 'Getmail config dir';
 $wb["fastcgi_starter_path_txt"] = 'FastCGI starter path';
 $wb["fastcgi_starter_script_txt"] = 'FastCGI starter script';
diff --git a/interface/web/admin/lib/lang/es_server_config.lng b/interface/web/admin/lib/lang/es_server_config.lng
index 01350367ae..04333c60a3 100755
--- a/interface/web/admin/lib/lang/es_server_config.lng
+++ b/interface/web/admin/lib/lang/es_server_config.lng
@@ -2,6 +2,8 @@
 $wb['add_web_users_to_sshusers_group_txt'] = 'Añadir usuarios web al grupo -sshusers-';
 $wb['admin_notify_events_txt'] = 'Enviar correo al administrador a partir de siguiente nivel';
 $wb['apache_group_error_empty'] = 'El grupo de Apache está vacío.';
+$wb['apache_init_script_note_txt'] = 'Dejar esto vacío detectará automáticamente el script de inicio de Apache';
+$wb['apache_init_script_txt'] = 'Apache init script';
 $wb['apache_user_error_empty'] = 'El usuario de Apache está vacío.';
 $wb['apps_vhost_enabled_txt'] = 'Host virtual de aplicaciones habilitado';
 $wb['apps_vhost_ip_error_empty'] = 'La IP para el host virtual de las aplicaciones está vacía.';
diff --git a/interface/web/admin/lib/lang/fi_server_config.lng b/interface/web/admin/lib/lang/fi_server_config.lng
index 6caf643abe..c471b4c11b 100755
--- a/interface/web/admin/lib/lang/fi_server_config.lng
+++ b/interface/web/admin/lib/lang/fi_server_config.lng
@@ -7,6 +7,8 @@ $wb['website_symlinks_txt'] = 'Verkkotunnuksen symmetriset linkit';
 $wb['website_symlinks_rel_txt'] = 'Make relative symlinks';
 $wb['vhost_conf_dir_txt'] = 'Virtuaalipalvelimen asetuskansio';
 $wb['vhost_conf_enabled_dir_txt'] = 'Virtuaalipalvelimen käyttöönottokansio';
+$wb['apache_init_script_txt'] = 'Apache-aloituskomentosarja';
+$wb['apache_init_script_note_txt'] = 'Jätä tämä tyhjä tunnistaa Apache-aloitusohjelman automaattisesti';
 $wb['getmail_config_dir_txt'] = 'Getmail-asetuskansio';
 $wb['fastcgi_starter_path_txt'] = 'FastCGI:n käynnistyspolku';
 $wb['fastcgi_starter_script_txt'] = 'FastCGI:n käynnistysskripti';
diff --git a/interface/web/admin/lib/lang/fr_server_config.lng b/interface/web/admin/lib/lang/fr_server_config.lng
index 25f7375688..b7741efefc 100644
--- a/interface/web/admin/lib/lang/fr_server_config.lng
+++ b/interface/web/admin/lib/lang/fr_server_config.lng
@@ -7,6 +7,8 @@ $wb['website_symlinks_txt'] = 'Liens symboliques du site web';
 $wb['website_symlinks_rel_txt'] = 'Make relative symlinks';
 $wb['vhost_conf_dir_txt'] = 'Répertoire de configuration des VHosts';
 $wb['vhost_conf_enabled_dir_txt'] = 'Répertoire de configuration des VHosts actifs';
+$wb['apache_init_script_txt'] = 'Script d\'initiation Apache';
+$wb['apache_init_script_note_txt'] = 'Si vous laissez ce champ vide, le script init Apache sera automatiquement détecté.';
 $wb['getmail_config_dir_txt'] = 'Répertoire de configuration de Getmail';
 $wb['fastcgi_starter_path_txt'] = 'Chemin du lanceur de FastCGI';
 $wb['fastcgi_starter_script_txt'] = 'Script lanceur de FastCGI';
diff --git a/interface/web/admin/lib/lang/hr_server_config.lng b/interface/web/admin/lib/lang/hr_server_config.lng
index faf08f4201..d1da411eec 100644
--- a/interface/web/admin/lib/lang/hr_server_config.lng
+++ b/interface/web/admin/lib/lang/hr_server_config.lng
@@ -8,6 +8,8 @@ $wb['website_symlinks_txt'] = 'Symlinkovi Web stranice';
 $wb['website_basedir_txt'] = 'Bazni direktorij Web stranice';
 $wb['vhost_conf_dir_txt'] = 'Vhost konfiguracijski direktorij';
 $wb['vhost_conf_enabled_dir_txt'] = 'Vhost dozvoljeni konfiguracijski direktorij';
+$wb['apache_init_script_txt'] = 'Apache init skripta';
+$wb['apache_init_script_note_txt'] = 'Ostavite ovo prazno automatski će otkriti skriptu Apache init';
 $wb['getmail_config_dir_txt'] = 'Getmail konfiguracijski direktorij';
 $wb['fastcgi_starter_path_txt'] = 'Put do FastCGI-a';
 $wb['fastcgi_starter_script_txt'] = 'FastCGI početna skripta';
diff --git a/interface/web/admin/lib/lang/hu_server_config.lng b/interface/web/admin/lib/lang/hu_server_config.lng
index 6347afb7da..f07dc1a7dd 100644
--- a/interface/web/admin/lib/lang/hu_server_config.lng
+++ b/interface/web/admin/lib/lang/hu_server_config.lng
@@ -7,6 +7,8 @@ $wb['website_symlinks_txt'] = 'Website symlinks';
 $wb['website_symlinks_rel_txt'] = 'Make relative symlinks';
 $wb['vhost_conf_dir_txt'] = 'Vhost config dir';
 $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config enabled dir';
+$wb['apache_init_script_txt'] = 'Apache init parancsfájl';
+$wb['apache_init_script_note_txt'] = 'Ha üresen hagyja, az automatikusan felismeri az Apache init parancsfájlját';
 $wb['getmail_config_dir_txt'] = 'Getmail config dir';
 $wb['fastcgi_starter_path_txt'] = 'FastCGI starter path';
 $wb['fastcgi_starter_script_txt'] = 'FastCGI starter script';
diff --git a/interface/web/admin/lib/lang/id_server_config.lng b/interface/web/admin/lib/lang/id_server_config.lng
index 9a28dff300..71e060c0ea 100644
--- a/interface/web/admin/lib/lang/id_server_config.lng
+++ b/interface/web/admin/lib/lang/id_server_config.lng
@@ -9,6 +9,8 @@ $wb['website_symlinks_rel_txt'] = 'Make relative symlinks';
 $wb['website_basedir_txt'] = 'Basedir Situs web';
 $wb['vhost_conf_dir_txt'] = 'Direktori konfigurasi vhost';
 $wb['vhost_conf_enabled_dir_txt'] = 'Direktori konfigurasi vhost yang aktif';
+$wb['apache_init_script_txt'] = 'Skrip init Apache';
+$wb['apache_init_script_note_txt'] = 'Membiarkan ini kosong akan secara otomatis mendeteksi skrip init Apache';
 $wb['getmail_config_dir_txt'] = 'Direktori konfigurasi getmail';
 $wb['fastcgi_starter_path_txt'] = 'Path pemicu FastCGI';
 $wb['fastcgi_starter_script_txt'] = 'Skrip pemicu FastCGI';
diff --git a/interface/web/admin/lib/lang/it_server_config.lng b/interface/web/admin/lib/lang/it_server_config.lng
index 3dc37a3c1d..b853e1f4ab 100644
--- a/interface/web/admin/lib/lang/it_server_config.lng
+++ b/interface/web/admin/lib/lang/it_server_config.lng
@@ -6,6 +6,8 @@ $wb['website_path_txt'] = 'Percorso Sito Web';
 $wb['website_symlinks_txt'] = 'Sito Web symlinks';
 $wb['vhost_conf_dir_txt'] = 'Vhost config dir';
 $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config dir abilitata';
+$wb['apache_init_script_txt'] = 'Apache init script';
+$wb['apache_init_script_note_txt'] = 'Lasciare questo vuoto rileverà automaticamente lo script init di Apache';
 $wb['getmail_config_dir_txt'] = 'Getmail config dir';
 $wb['fastcgi_starter_path_txt'] = 'Percorso FastCGI starter';
 $wb['fastcgi_starter_script_txt'] = 'FastCGI starter script';
diff --git a/interface/web/admin/lib/lang/ja_server_config.lng b/interface/web/admin/lib/lang/ja_server_config.lng
index 72bef72c4b..efaff2df6c 100644
--- a/interface/web/admin/lib/lang/ja_server_config.lng
+++ b/interface/web/admin/lib/lang/ja_server_config.lng
@@ -9,6 +9,8 @@ $wb['website_symlinks_rel_txt'] = 'Make relative symlinks';
 $wb['website_basedir_txt'] = 'ウェブサイトのベースディレクトリ';
 $wb['vhost_conf_dir_txt'] = 'バーチャルホスト設定ディレクトリ';
 $wb['vhost_conf_enabled_dir_txt'] = 'バーチャルホスト設定ディレクトリ(有効)';
+$wb['apache_init_script_txt'] = 'Apache initスクリプト';
+$wb['apache_init_script_note_txt'] = 'これを空のままにすると、Apache initスクリプトが自動検出されます';
 $wb['getmail_config_dir_txt'] = 'Getmail 設定ディレクトリ';
 $wb['fastcgi_starter_path_txt'] = 'FastCGIスターターのパス';
 $wb['fastcgi_starter_script_txt'] = 'FastCGIスタータースクリプト';
diff --git a/interface/web/admin/lib/lang/nl_server_config.lng b/interface/web/admin/lib/lang/nl_server_config.lng
index 2884f304ec..e081fd79ea 100644
--- a/interface/web/admin/lib/lang/nl_server_config.lng
+++ b/interface/web/admin/lib/lang/nl_server_config.lng
@@ -9,6 +9,8 @@ $wb['website_symlinks_rel_txt'] = 'Maak relative symlinks';
 $wb['website_basedir_txt'] = 'Website basedir';
 $wb['vhost_conf_dir_txt'] = 'Vhost config dir';
 $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config enabled dir';
+$wb['apache_init_script_txt'] = 'Apache init script';
+$wb['apache_init_script_note_txt'] = 'Als u dit leeg laat, wordt het Apache init-script automatisch gedetecteerd';
 $wb['getmail_config_dir_txt'] = 'Getmail config dir';
 $wb['fastcgi_starter_path_txt'] = 'FastCGI starter pad';
 $wb['fastcgi_starter_script_txt'] = 'FastCGI starter script';
diff --git a/interface/web/admin/lib/lang/pl_server_config.lng b/interface/web/admin/lib/lang/pl_server_config.lng
index 29cb94e96c..68ad88c95a 100644
--- a/interface/web/admin/lib/lang/pl_server_config.lng
+++ b/interface/web/admin/lib/lang/pl_server_config.lng
@@ -9,6 +9,8 @@ $wb['website_symlinks_rel_txt'] = 'Twórz linki relatywne';
 $wb['website_basedir_txt'] = 'Ścieżka bazowa strony WWW';
 $wb['vhost_conf_dir_txt'] = 'Ścieżka do konfiguracyji wirtualnego serwera';
 $wb['vhost_conf_enabled_dir_txt'] = 'Ścieżka do aktywnej konfiguracyji Vhost';
+$wb['apache_init_script_txt'] = 'Skrypt inicjujÄ…cy Apache';
+$wb['apache_init_script_note_txt'] = 'Pozostawienie tego pustego spowoduje automatyczne wykrycie skryptu inicjujÄ…cego Apache';
 $wb['getmail_config_dir_txt'] = 'Ścieżka do konfiguracyji Getmail';
 $wb['fastcgi_starter_path_txt'] = 'Adres startowy FastCGI';
 $wb['fastcgi_starter_script_txt'] = 'Startowy skrypt FastCGI';
diff --git a/interface/web/admin/lib/lang/pt_server_config.lng b/interface/web/admin/lib/lang/pt_server_config.lng
index 3703c759ed..8639ad3a8b 100644
--- a/interface/web/admin/lib/lang/pt_server_config.lng
+++ b/interface/web/admin/lib/lang/pt_server_config.lng
@@ -8,6 +8,8 @@ $wb['website_symlinks_rel_txt'] = 'Make relative symlinks';
 $wb['website_basedir_txt'] = 'Website basedir: pasta base ';
 $wb['vhost_conf_dir_txt'] = 'Vhost config dir';
 $wb['vhost_conf_enabled_dir_txt'] = 'Vhost pasta de configuração activo';
+$wb['apache_init_script_txt'] = 'Script de inicialização do Apache';
+$wb['apache_init_script_note_txt'] = 'Deixando esta vontade vazio detectar automaticamente o script de inicialização do Apache';
 $wb['getmail_config_dir_txt'] = 'Getmail config dir';
 $wb['fastcgi_starter_path_txt'] = 'FastCGI: Pasta inicial';
 $wb['fastcgi_starter_script_txt'] = 'FastCGI: Script inicial';
diff --git a/interface/web/admin/lib/lang/ro_server_config.lng b/interface/web/admin/lib/lang/ro_server_config.lng
index 3251476126..4292ee008f 100644
--- a/interface/web/admin/lib/lang/ro_server_config.lng
+++ b/interface/web/admin/lib/lang/ro_server_config.lng
@@ -8,6 +8,8 @@ $wb['website_symlinks_rel_txt'] = 'Make relative symlinks';
 $wb['website_basedir_txt'] = 'Website basedir';
 $wb['vhost_conf_dir_txt'] = 'Vhost config dir';
 $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config enabled dir';
+$wb['apache_init_script_txt'] = 'Scriptul Apache init';
+$wb['apache_init_script_note_txt'] = 'Lăsând acest gol, va detecta automat scriptul inițial Apache';
 $wb['getmail_config_dir_txt'] = 'Getmail config dir';
 $wb['fastcgi_starter_path_txt'] = 'FastCGI starter path';
 $wb['fastcgi_starter_script_txt'] = 'FastCGI starter script';
diff --git a/interface/web/admin/lib/lang/ru_server_config.lng b/interface/web/admin/lib/lang/ru_server_config.lng
index b2f0b407d6..43468ce757 100644
--- a/interface/web/admin/lib/lang/ru_server_config.lng
+++ b/interface/web/admin/lib/lang/ru_server_config.lng
@@ -6,6 +6,8 @@ $wb['website_path_txt'] = 'Путь к web-сайту';
 $wb['website_symlinks_txt'] = 'Симлинки Web-сайта';
 $wb['vhost_conf_dir_txt'] = 'Каталог config Vhost';
 $wb['vhost_conf_enabled_dir_txt'] = 'Каталог Vhost conf enabled';
+$wb['apache_init_script_txt'] = 'Apache init script';
+$wb['apache_init_script_note_txt'] = 'Если оставить это поле пустым, будет автоматически обнаружен скрипт инициализации Apache.';
 $wb['getmail_config_dir_txt'] = 'Папка конфига Getmail';
 $wb['fastcgi_starter_path_txt'] = 'Стартовый путь FastCGI';
 $wb['fastcgi_starter_script_txt'] = 'Стартовый скрипт FastCGI';
diff --git a/interface/web/admin/lib/lang/se_server_config.lng b/interface/web/admin/lib/lang/se_server_config.lng
index 1103baa4d2..baf3c16e6f 100644
--- a/interface/web/admin/lib/lang/se_server_config.lng
+++ b/interface/web/admin/lib/lang/se_server_config.lng
@@ -7,6 +7,8 @@ $wb['website_symlinks_txt'] = 'Website symlinks';
 $wb['website_symlinks_rel_txt'] = 'Make relative symlinks';
 $wb['vhost_conf_dir_txt'] = 'Vhost config dir';
 $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config enabled dir';
+$wb['apache_init_script_txt'] = 'Apache init-skript';
+$wb['apache_init_script_note_txt'] = 'Om du lämnar detta tomt kommer det automatiskt att upptäcka Apache-init-skriptet';
 $wb['getmail_config_dir_txt'] = 'Getmail config dir';
 $wb['fastcgi_starter_path_txt'] = 'FastCGI starter path';
 $wb['fastcgi_starter_script_txt'] = 'FastCGI starter script';
diff --git a/interface/web/admin/lib/lang/sk_server_config.lng b/interface/web/admin/lib/lang/sk_server_config.lng
index 125e0b1ea2..4eaacc4b59 100644
--- a/interface/web/admin/lib/lang/sk_server_config.lng
+++ b/interface/web/admin/lib/lang/sk_server_config.lng
@@ -9,6 +9,8 @@ $wb['website_symlinks_rel_txt'] = 'Make relative symlinks';
 $wb['website_basedir_txt'] = 'Website základny adresár';
 $wb['vhost_conf_dir_txt'] = 'Vhost konfig adresár';
 $wb['vhost_conf_enabled_dir_txt'] = 'Vhost konfig odblokovaný adresár';
+$wb['apache_init_script_txt'] = 'Inicializačný skript Apache';
+$wb['apache_init_script_note_txt'] = 'Ak ponecháte toto pole prázdne, automaticky zistí iniciačný skript Apache';
 $wb['getmail_config_dir_txt'] = 'Getmail konfig adresár';
 $wb['fastcgi_starter_path_txt'] = 'FastCGI starter cesta';
 $wb['fastcgi_starter_script_txt'] = 'FastCGI starter skript';
diff --git a/interface/web/admin/lib/lang/tr_server_config.lng b/interface/web/admin/lib/lang/tr_server_config.lng
index 3b63e881f9..a5ca5adfff 100644
--- a/interface/web/admin/lib/lang/tr_server_config.lng
+++ b/interface/web/admin/lib/lang/tr_server_config.lng
@@ -19,6 +19,8 @@ $wb['website_autoalias_txt'] = 'Otomatik Web Sitesi Takma Adı';
 $wb['website_autoalias_note_txt'] = 'Kodlar:';
 $wb['vhost_conf_dir_txt'] = 'Sanal Sunucu Ayarları Klasörü';
 $wb['vhost_conf_enabled_dir_txt'] = 'Etkin Sanal Sunucu Ayarları Klasörü';
+$wb['apache_init_script_txt'] = 'Apache init betiÄŸi';
+$wb['apache_init_script_note_txt'] = 'Bu değerin boş bırakılması Apache init betiğini otomatik olarak algılar';
 $wb['getmail_config_dir_txt'] = 'Getmail Ayarları Klasörü';
 $wb['fastcgi_starter_path_txt'] = 'FastCGI Başlatıcı Yolu';
 $wb['fastcgi_starter_script_txt'] = 'FastCGI Başlatıcı Betiği';
diff --git a/interface/web/admin/templates/server_config_web_edit.htm b/interface/web/admin/templates/server_config_web_edit.htm
index eb285bbc07..97dc0557fc 100644
--- a/interface/web/admin/templates/server_config_web_edit.htm
+++ b/interface/web/admin/templates/server_config_web_edit.htm
@@ -60,6 +60,9 @@
             <div class="form-group apache">
                 <label for="vhost_conf_enabled_dir" class="col-sm-3 control-label">{tmpl_var name='vhost_conf_enabled_dir_txt'}</label>
                 <div class="col-sm-9"><input type="text" name="vhost_conf_enabled_dir" id="vhost_conf_enabled_dir" value="{tmpl_var name='vhost_conf_enabled_dir'}" class="form-control" /></div></div>
+            <div class="form-group apache">
+                <label for="apache_init_script" class="col-sm-3 control-label">{tmpl_var name='apache_init_script_txt'}</label>
+                <div class="col-sm-9"><input type="text" name="apache_init_script" id="apache_init_script" value="{tmpl_var name='apache_init_script'}" class="form-control" />{tmpl_var name='apache_init_script_note_txt'}</div></div>
             <div class="form-group nginx">
                 <label for="nginx_enable_pagespeed" class="col-sm-3 control-label">{tmpl_var name='nginx_enable_pagespeed_txt'}</label>
                 <div class="col-sm-9">{tmpl_var name='nginx_enable_pagespeed'}</div></div>
diff --git a/security/ids.whitelist b/security/ids.whitelist
index a9b045e15f..6a953f45cf 100644
--- a/security/ids.whitelist
+++ b/security/ids.whitelist
@@ -7,6 +7,7 @@ admin:/admin/server_config_edit.php:POST.website_path
 admin:/admin/server_config_edit.php:POST.website_symlinks
 admin:/admin/server_config_edit.php:POST.vhost_conf_dir
 admin:/admin/server_config_edit.php:POST.vhost_conf_enabled_dir
+admin:/admin/server_config_edit.php:POST.apache_init_script
 admin:/admin/server_config_edit.php:POST.nginx_vhost_conf_dir
 admin:/admin/server_config_edit.php:POST.nginx_vhost_conf_enabled_dir
 admin:/admin/server_config_edit.php:POST.php_open_basedir
diff --git a/server/mods-available/web_module.inc.php b/server/mods-available/web_module.inc.php
index aecec10579..02f31510c2 100644
--- a/server/mods-available/web_module.inc.php
+++ b/server/mods-available/web_module.inc.php
@@ -203,7 +203,9 @@ class web_module {
 			$daemon = $web_config['server_type'];
 			break;
 		default:
-			if(is_file($conf['init_scripts'] . '/' . 'httpd') || is_dir('/etc/httpd')) {
+			if (!empty($web_config['apache_init_script'])) {
+				$daemon = $web_config['apache_init_script'];
+			} elseif(is_file($conf['init_scripts'] . '/' . 'httpd') || is_dir('/etc/httpd')) {
 				$daemon = 'httpd';
 			} else {
 				$daemon = 'apache2';
-- 
GitLab


From 215570809d0a5246a0dac783373720efc1c56a59 Mon Sep 17 00:00:00 2001
From: Webslice <webslice@bixels.nl>
Date: Wed, 27 Nov 2019 15:43:14 +0100
Subject: [PATCH 093/242] #5387 add regex check to apache init script form
 input

---
 interface/web/admin/form/server_config.tform.php  | 4 ++++
 interface/web/admin/lib/lang/ar_server_config.lng | 1 +
 interface/web/admin/lib/lang/bg_server_config.lng | 1 +
 interface/web/admin/lib/lang/br_server_config.lng | 1 +
 interface/web/admin/lib/lang/ca_server_config.lng | 1 +
 interface/web/admin/lib/lang/cz_server_config.lng | 1 +
 interface/web/admin/lib/lang/de_server_config.lng | 1 +
 interface/web/admin/lib/lang/dk_server_config.lng | 1 +
 interface/web/admin/lib/lang/el_server_config.lng | 1 +
 interface/web/admin/lib/lang/en_server_config.lng | 1 +
 interface/web/admin/lib/lang/es_server_config.lng | 1 +
 interface/web/admin/lib/lang/fi_server_config.lng | 1 +
 interface/web/admin/lib/lang/fr_server_config.lng | 1 +
 interface/web/admin/lib/lang/hr_server_config.lng | 1 +
 interface/web/admin/lib/lang/hu_server_config.lng | 1 +
 interface/web/admin/lib/lang/id_server_config.lng | 1 +
 interface/web/admin/lib/lang/it_server_config.lng | 1 +
 interface/web/admin/lib/lang/ja_server_config.lng | 1 +
 interface/web/admin/lib/lang/nl_server_config.lng | 1 +
 interface/web/admin/lib/lang/pl_server_config.lng | 1 +
 interface/web/admin/lib/lang/pt_server_config.lng | 1 +
 interface/web/admin/lib/lang/ro_server_config.lng | 1 +
 interface/web/admin/lib/lang/ru_server_config.lng | 1 +
 interface/web/admin/lib/lang/se_server_config.lng | 1 +
 interface/web/admin/lib/lang/sk_server_config.lng | 1 +
 interface/web/admin/lib/lang/tr_server_config.lng | 1 +
 26 files changed, 29 insertions(+)

diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php
index 0e02b8525b..c6022e6bc2 100644
--- a/interface/web/admin/form/server_config.tform.php
+++ b/interface/web/admin/form/server_config.tform.php
@@ -852,6 +852,10 @@ $form["tabs"]['web'] = array(
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
+			'validators' => array(	0 => array('type' => 'REGEX',
+										'regex' => '/^(|[a-zA-Z0-9\.\-\_]{1,128})$/',
+										'errmsg' => 'apache_init_script_error_regex'),
+			),
 			'value' => '',
 			'width' => '40',
 			'maxlength' => '255'
diff --git a/interface/web/admin/lib/lang/ar_server_config.lng b/interface/web/admin/lib/lang/ar_server_config.lng
index dec2b56c8e..f271e007d3 100644
--- a/interface/web/admin/lib/lang/ar_server_config.lng
+++ b/interface/web/admin/lib/lang/ar_server_config.lng
@@ -11,6 +11,7 @@ $wb['vhost_conf_dir_txt'] = 'Vhost config dir';
 $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config enabled dir';
 $wb['apache_init_script_txt'] = 'Apache init script';
 $wb['apache_init_script_note_txt'] = 'Leaving this empty will auto-detect the Apache init script';
+$wb['apache_init_script_error_regex'] = 'Invalid apache init script.';
 $wb['getmail_config_dir_txt'] = 'Getmail config dir';
 $wb['fastcgi_starter_path_txt'] = 'FastCGI starter path';
 $wb['fastcgi_starter_script_txt'] = 'FastCGI starter script';
diff --git a/interface/web/admin/lib/lang/bg_server_config.lng b/interface/web/admin/lib/lang/bg_server_config.lng
index 186462720e..46c77fe794 100644
--- a/interface/web/admin/lib/lang/bg_server_config.lng
+++ b/interface/web/admin/lib/lang/bg_server_config.lng
@@ -9,6 +9,7 @@ $wb['vhost_conf_dir_txt'] = 'Vhost config dir';
 $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config enabled dir';
 $wb['apache_init_script_txt'] = 'Apache init скрипт';
 $wb['apache_init_script_note_txt'] = 'Оставянето на това празно ще открие автоматично скрипта за Apache init';
+$wb['apache_init_script_error_regex'] = 'Невалиден Apache скрипт за задействане.';
 $wb['getmail_config_dir_txt'] = 'Getmail config dir';
 $wb['fastcgi_starter_path_txt'] = 'FastCGI starter path';
 $wb['fastcgi_starter_script_txt'] = 'FastCGI starter script';
diff --git a/interface/web/admin/lib/lang/br_server_config.lng b/interface/web/admin/lib/lang/br_server_config.lng
index 25cb1a3a3d..c12a1a7dad 100644
--- a/interface/web/admin/lib/lang/br_server_config.lng
+++ b/interface/web/admin/lib/lang/br_server_config.lng
@@ -21,6 +21,7 @@ $wb['vhost_conf_dir_txt'] = 'Diretório de configuração vhost';
 $wb['vhost_conf_enabled_dir_txt'] = 'Diretório de configuração vhost habilitado';
 $wb['apache_init_script_txt'] = 'Script de inicialização do Apache';
 $wb['apache_init_script_note_txt'] = 'Deixando esta vontade vazio detectar automaticamente o script de inicialização do Apache';
+$wb["apache_init_script_error_regex"] = 'Script de inicialização do Apache inválido.';
 $wb['getmail_config_dir_txt'] = 'Diretório de configuração do getmail';
 $wb['fastcgi_starter_path_txt'] = 'Caminho de inicialização do FastCGI';
 $wb['fastcgi_starter_script_txt'] = 'Script de inicialização do FastCGI';
diff --git a/interface/web/admin/lib/lang/ca_server_config.lng b/interface/web/admin/lib/lang/ca_server_config.lng
index f0d79a89f9..1dac17eda5 100644
--- a/interface/web/admin/lib/lang/ca_server_config.lng
+++ b/interface/web/admin/lib/lang/ca_server_config.lng
@@ -21,6 +21,7 @@ $wb['vhost_conf_dir_txt'] = 'Vhost config dir';
 $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config enabled dir';
 $wb['apache_init_script_txt'] = 'Apache init script';
 $wb['apache_init_script_note_txt'] = 'Leaving this empty will auto-detect the Apache init script';
+$wb['apache_init_script_error_regex'] = 'Invalid Apache init script.';
 $wb['getmail_config_dir_txt'] = 'Getmail config dir';
 $wb['fastcgi_starter_path_txt'] = 'FastCGI starter path';
 $wb['fastcgi_starter_script_txt'] = 'FastCGI starter script';
diff --git a/interface/web/admin/lib/lang/cz_server_config.lng b/interface/web/admin/lib/lang/cz_server_config.lng
index 100694c625..2b42cf6691 100644
--- a/interface/web/admin/lib/lang/cz_server_config.lng
+++ b/interface/web/admin/lib/lang/cz_server_config.lng
@@ -11,6 +11,7 @@ $wb['vhost_conf_dir_txt'] = 'Vhost config adresář';
 $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config enabled adresář';
 $wb['apache_init_script_txt'] = 'Inicializační skript Apache';
 $wb['apache_init_script_note_txt'] = 'Ponecháte-li toto prázdné, automaticky detekuje iniciační skript Apache';
+$wb['apache_init_script_error_regex'] = 'Neplatný iniciační skript Apache.';
 $wb['getmail_config_dir_txt'] = 'Getmail složka pro konfigurace';
 $wb['fastcgi_starter_path_txt'] = 'FastCGI starter cesta';
 $wb['fastcgi_starter_script_txt'] = 'FastCGI starter skript';
diff --git a/interface/web/admin/lib/lang/de_server_config.lng b/interface/web/admin/lib/lang/de_server_config.lng
index d7f21fc473..9e0ce6f48f 100644
--- a/interface/web/admin/lib/lang/de_server_config.lng
+++ b/interface/web/admin/lib/lang/de_server_config.lng
@@ -10,6 +10,7 @@ $wb['vhost_conf_dir_txt'] = 'vHost Konfigurationsverzeichnis';
 $wb['vhost_conf_enabled_dir_txt'] = 'vHost config enabled dir';
 $wb['apache_init_script_txt'] = 'Apache-Init-Skript';
 $wb['apache_init_script_note_txt'] = 'Wenn Sie dieses Feld leer lassen, wird das Apache-Init-Skript automatisch erkannt';
+$wb['apache_init_script_error_regex'] = 'Ungültiges Apache-Init-Skript.';
 $wb['getmail_config_dir_txt'] = 'Getmail Konfigurationsverzeichnis';
 $wb['fastcgi_starter_path_txt'] = 'FastCGI Starter Pfad';
 $wb['fastcgi_starter_script_txt'] = 'FastCGI Starter Script';
diff --git a/interface/web/admin/lib/lang/dk_server_config.lng b/interface/web/admin/lib/lang/dk_server_config.lng
index 2a8c13e143..e6d5eaa289 100644
--- a/interface/web/admin/lib/lang/dk_server_config.lng
+++ b/interface/web/admin/lib/lang/dk_server_config.lng
@@ -21,6 +21,7 @@ $wb['vhost_conf_dir_txt'] = 'Vhost config dir';
 $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config enabled dir';
 $wb['apache_init_script_txt'] = 'Apache init script';
 $wb['apache_init_script_note_txt'] = 'Forlader denne tomme vilje automatisk registrering Apache init-script';
+$wb['apache_init_script_error_regex'] = 'Ugyldigt Apache init-script.';
 $wb['getmail_config_dir_txt'] = 'Getmail config dir';
 $wb['fastcgi_starter_path_txt'] = 'FastCGI starter path';
 $wb['fastcgi_starter_script_txt'] = 'FastCGI starter script';
diff --git a/interface/web/admin/lib/lang/el_server_config.lng b/interface/web/admin/lib/lang/el_server_config.lng
index 60d3564e13..394ba2bde9 100644
--- a/interface/web/admin/lib/lang/el_server_config.lng
+++ b/interface/web/admin/lib/lang/el_server_config.lng
@@ -11,6 +11,7 @@ $wb['vhost_conf_dir_txt'] = 'Φάκελος ρυθμίσεων Vhost';
 $wb['vhost_conf_enabled_dir_txt'] = 'Φάκελος ρυθμίσεων (ενεργών) Vhost';
 $wb['apache_init_script_txt'] = 'Apache script init';
 $wb['apache_init_script_note_txt'] = 'Εάν αφήσετε αυτό το κενό, θα ανιχνευθεί αυτόματα το σενάριο εισαγωγής Apache';
+$wb['apache_init_script_error_regex'] = 'Μη έγκυρη δέσμη ενεργειών Apache.';
 $wb['getmail_config_dir_txt'] = 'Φάκελος ρυθμίσεων Getmail';
 $wb['fastcgi_starter_path_txt'] = 'Διαδρομή εκκίνησης FastCGI';
 $wb['fastcgi_starter_script_txt'] = 'Script εκκίνησης FastCGI';
diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng
index 82c847f88d..1d2bf74ec9 100644
--- a/interface/web/admin/lib/lang/en_server_config.lng
+++ b/interface/web/admin/lib/lang/en_server_config.lng
@@ -21,6 +21,7 @@ $wb["vhost_conf_dir_txt"] = 'Vhost config dir';
 $wb["vhost_conf_enabled_dir_txt"] = 'Vhost config enabled dir';
 $wb["apache_init_script_txt"] = 'Apache init script';
 $wb["apache_init_script_note_txt"] = 'Leaving this empty will auto-detect the Apache init script';
+$wb["apache_init_script_error_regex"] = 'Invalid Apache init script.';
 $wb["getmail_config_dir_txt"] = 'Getmail config dir';
 $wb["fastcgi_starter_path_txt"] = 'FastCGI starter path';
 $wb["fastcgi_starter_script_txt"] = 'FastCGI starter script';
diff --git a/interface/web/admin/lib/lang/es_server_config.lng b/interface/web/admin/lib/lang/es_server_config.lng
index 04333c60a3..08c80ec80e 100755
--- a/interface/web/admin/lib/lang/es_server_config.lng
+++ b/interface/web/admin/lib/lang/es_server_config.lng
@@ -4,6 +4,7 @@ $wb['admin_notify_events_txt'] = 'Enviar correo al administrador a partir de sig
 $wb['apache_group_error_empty'] = 'El grupo de Apache está vacío.';
 $wb['apache_init_script_note_txt'] = 'Dejar esto vacío detectará automáticamente el script de inicio de Apache';
 $wb['apache_init_script_txt'] = 'Apache init script';
+$wb['apache_init_script_error_regex'] = 'Guión de inicio Apache no válido.';
 $wb['apache_user_error_empty'] = 'El usuario de Apache está vacío.';
 $wb['apps_vhost_enabled_txt'] = 'Host virtual de aplicaciones habilitado';
 $wb['apps_vhost_ip_error_empty'] = 'La IP para el host virtual de las aplicaciones está vacía.';
diff --git a/interface/web/admin/lib/lang/fi_server_config.lng b/interface/web/admin/lib/lang/fi_server_config.lng
index c471b4c11b..b81f77ac08 100755
--- a/interface/web/admin/lib/lang/fi_server_config.lng
+++ b/interface/web/admin/lib/lang/fi_server_config.lng
@@ -9,6 +9,7 @@ $wb['vhost_conf_dir_txt'] = 'Virtuaalipalvelimen asetuskansio';
 $wb['vhost_conf_enabled_dir_txt'] = 'Virtuaalipalvelimen käyttöönottokansio';
 $wb['apache_init_script_txt'] = 'Apache-aloituskomentosarja';
 $wb['apache_init_script_note_txt'] = 'Jätä tämä tyhjä tunnistaa Apache-aloitusohjelman automaattisesti';
+$wb['apache_init_script_error_regex'] = 'Virheellinen Apache-aloituskomentosarja.';
 $wb['getmail_config_dir_txt'] = 'Getmail-asetuskansio';
 $wb['fastcgi_starter_path_txt'] = 'FastCGI:n käynnistyspolku';
 $wb['fastcgi_starter_script_txt'] = 'FastCGI:n käynnistysskripti';
diff --git a/interface/web/admin/lib/lang/fr_server_config.lng b/interface/web/admin/lib/lang/fr_server_config.lng
index b7741efefc..705c376a29 100644
--- a/interface/web/admin/lib/lang/fr_server_config.lng
+++ b/interface/web/admin/lib/lang/fr_server_config.lng
@@ -9,6 +9,7 @@ $wb['vhost_conf_dir_txt'] = 'Répertoire de configuration des VHosts';
 $wb['vhost_conf_enabled_dir_txt'] = 'Répertoire de configuration des VHosts actifs';
 $wb['apache_init_script_txt'] = 'Script d\'initiation Apache';
 $wb['apache_init_script_note_txt'] = 'Si vous laissez ce champ vide, le script init Apache sera automatiquement détecté.';
+$wb['apache_init_script_error_regex'] = 'Script d\'initialisation Apache non valide.';
 $wb['getmail_config_dir_txt'] = 'Répertoire de configuration de Getmail';
 $wb['fastcgi_starter_path_txt'] = 'Chemin du lanceur de FastCGI';
 $wb['fastcgi_starter_script_txt'] = 'Script lanceur de FastCGI';
diff --git a/interface/web/admin/lib/lang/hr_server_config.lng b/interface/web/admin/lib/lang/hr_server_config.lng
index d1da411eec..609d9ab889 100644
--- a/interface/web/admin/lib/lang/hr_server_config.lng
+++ b/interface/web/admin/lib/lang/hr_server_config.lng
@@ -10,6 +10,7 @@ $wb['vhost_conf_dir_txt'] = 'Vhost konfiguracijski direktorij';
 $wb['vhost_conf_enabled_dir_txt'] = 'Vhost dozvoljeni konfiguracijski direktorij';
 $wb['apache_init_script_txt'] = 'Apache init skripta';
 $wb['apache_init_script_note_txt'] = 'Ostavite ovo prazno automatski će otkriti skriptu Apache init';
+$wb['apache_init_script_error_regex'] = 'Nevažeća skripta Apache init.';
 $wb['getmail_config_dir_txt'] = 'Getmail konfiguracijski direktorij';
 $wb['fastcgi_starter_path_txt'] = 'Put do FastCGI-a';
 $wb['fastcgi_starter_script_txt'] = 'FastCGI početna skripta';
diff --git a/interface/web/admin/lib/lang/hu_server_config.lng b/interface/web/admin/lib/lang/hu_server_config.lng
index f07dc1a7dd..0bd058a5bc 100644
--- a/interface/web/admin/lib/lang/hu_server_config.lng
+++ b/interface/web/admin/lib/lang/hu_server_config.lng
@@ -9,6 +9,7 @@ $wb['vhost_conf_dir_txt'] = 'Vhost config dir';
 $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config enabled dir';
 $wb['apache_init_script_txt'] = 'Apache init parancsfájl';
 $wb['apache_init_script_note_txt'] = 'Ha üresen hagyja, az automatikusan felismeri az Apache init parancsfájlját';
+$wb['apache_init_script_error_regex'] = 'Érvénytelen Apache init parancsfájl.';
 $wb['getmail_config_dir_txt'] = 'Getmail config dir';
 $wb['fastcgi_starter_path_txt'] = 'FastCGI starter path';
 $wb['fastcgi_starter_script_txt'] = 'FastCGI starter script';
diff --git a/interface/web/admin/lib/lang/id_server_config.lng b/interface/web/admin/lib/lang/id_server_config.lng
index 71e060c0ea..e4c1e47ce5 100644
--- a/interface/web/admin/lib/lang/id_server_config.lng
+++ b/interface/web/admin/lib/lang/id_server_config.lng
@@ -11,6 +11,7 @@ $wb['vhost_conf_dir_txt'] = 'Direktori konfigurasi vhost';
 $wb['vhost_conf_enabled_dir_txt'] = 'Direktori konfigurasi vhost yang aktif';
 $wb['apache_init_script_txt'] = 'Skrip init Apache';
 $wb['apache_init_script_note_txt'] = 'Membiarkan ini kosong akan secara otomatis mendeteksi skrip init Apache';
+$wb['apache_init_script_error_regex'] = 'Skrip init Apache tidak valid.';
 $wb['getmail_config_dir_txt'] = 'Direktori konfigurasi getmail';
 $wb['fastcgi_starter_path_txt'] = 'Path pemicu FastCGI';
 $wb['fastcgi_starter_script_txt'] = 'Skrip pemicu FastCGI';
diff --git a/interface/web/admin/lib/lang/it_server_config.lng b/interface/web/admin/lib/lang/it_server_config.lng
index b853e1f4ab..2d7d9e9ddb 100644
--- a/interface/web/admin/lib/lang/it_server_config.lng
+++ b/interface/web/admin/lib/lang/it_server_config.lng
@@ -8,6 +8,7 @@ $wb['vhost_conf_dir_txt'] = 'Vhost config dir';
 $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config dir abilitata';
 $wb['apache_init_script_txt'] = 'Apache init script';
 $wb['apache_init_script_note_txt'] = 'Lasciare questo vuoto rileverà automaticamente lo script init di Apache';
+$wb['apache_init_script_error_regex'] = 'Script init Apache non valido.';
 $wb['getmail_config_dir_txt'] = 'Getmail config dir';
 $wb['fastcgi_starter_path_txt'] = 'Percorso FastCGI starter';
 $wb['fastcgi_starter_script_txt'] = 'FastCGI starter script';
diff --git a/interface/web/admin/lib/lang/ja_server_config.lng b/interface/web/admin/lib/lang/ja_server_config.lng
index efaff2df6c..4d1d362502 100644
--- a/interface/web/admin/lib/lang/ja_server_config.lng
+++ b/interface/web/admin/lib/lang/ja_server_config.lng
@@ -11,6 +11,7 @@ $wb['vhost_conf_dir_txt'] = 'バーチャルホスト設定ディレクトリ';
 $wb['vhost_conf_enabled_dir_txt'] = 'バーチャルホスト設定ディレクトリ(有効)';
 $wb['apache_init_script_txt'] = 'Apache initスクリプト';
 $wb['apache_init_script_note_txt'] = 'これを空のままにすると、Apache initスクリプトが自動検出されます';
+$wb['apache_init_script_error_regex'] = '無効なApache initスクリプト。';
 $wb['getmail_config_dir_txt'] = 'Getmail 設定ディレクトリ';
 $wb['fastcgi_starter_path_txt'] = 'FastCGIスターターのパス';
 $wb['fastcgi_starter_script_txt'] = 'FastCGIスタータースクリプト';
diff --git a/interface/web/admin/lib/lang/nl_server_config.lng b/interface/web/admin/lib/lang/nl_server_config.lng
index e081fd79ea..542add696b 100644
--- a/interface/web/admin/lib/lang/nl_server_config.lng
+++ b/interface/web/admin/lib/lang/nl_server_config.lng
@@ -11,6 +11,7 @@ $wb['vhost_conf_dir_txt'] = 'Vhost config dir';
 $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config enabled dir';
 $wb['apache_init_script_txt'] = 'Apache init script';
 $wb['apache_init_script_note_txt'] = 'Als u dit leeg laat, wordt het Apache init-script automatisch gedetecteerd';
+$wb['apache_init_script_error_regex'] = 'Ongeldig Apache init-script.';
 $wb['getmail_config_dir_txt'] = 'Getmail config dir';
 $wb['fastcgi_starter_path_txt'] = 'FastCGI starter pad';
 $wb['fastcgi_starter_script_txt'] = 'FastCGI starter script';
diff --git a/interface/web/admin/lib/lang/pl_server_config.lng b/interface/web/admin/lib/lang/pl_server_config.lng
index 68ad88c95a..61509f30cf 100644
--- a/interface/web/admin/lib/lang/pl_server_config.lng
+++ b/interface/web/admin/lib/lang/pl_server_config.lng
@@ -11,6 +11,7 @@ $wb['vhost_conf_dir_txt'] = 'Ścieżka do konfiguracyji wirtualnego serwera';
 $wb['vhost_conf_enabled_dir_txt'] = 'Ścieżka do aktywnej konfiguracyji Vhost';
 $wb['apache_init_script_txt'] = 'Skrypt inicjujÄ…cy Apache';
 $wb['apache_init_script_note_txt'] = 'Pozostawienie tego pustego spowoduje automatyczne wykrycie skryptu inicjujÄ…cego Apache';
+$wb['apache_init_script_error_regex'] = 'Niepoprawny skrypt inicjujÄ…cy Apache.';
 $wb['getmail_config_dir_txt'] = 'Ścieżka do konfiguracyji Getmail';
 $wb['fastcgi_starter_path_txt'] = 'Adres startowy FastCGI';
 $wb['fastcgi_starter_script_txt'] = 'Startowy skrypt FastCGI';
diff --git a/interface/web/admin/lib/lang/pt_server_config.lng b/interface/web/admin/lib/lang/pt_server_config.lng
index 8639ad3a8b..98bf41a283 100644
--- a/interface/web/admin/lib/lang/pt_server_config.lng
+++ b/interface/web/admin/lib/lang/pt_server_config.lng
@@ -10,6 +10,7 @@ $wb['vhost_conf_dir_txt'] = 'Vhost config dir';
 $wb['vhost_conf_enabled_dir_txt'] = 'Vhost pasta de configuração activo';
 $wb['apache_init_script_txt'] = 'Script de inicialização do Apache';
 $wb['apache_init_script_note_txt'] = 'Deixando esta vontade vazio detectar automaticamente o script de inicialização do Apache';
+$wb['apache_init_script_error_regex'] = 'Script de inicialização do Apache inválido.';
 $wb['getmail_config_dir_txt'] = 'Getmail config dir';
 $wb['fastcgi_starter_path_txt'] = 'FastCGI: Pasta inicial';
 $wb['fastcgi_starter_script_txt'] = 'FastCGI: Script inicial';
diff --git a/interface/web/admin/lib/lang/ro_server_config.lng b/interface/web/admin/lib/lang/ro_server_config.lng
index 4292ee008f..27926c44a8 100644
--- a/interface/web/admin/lib/lang/ro_server_config.lng
+++ b/interface/web/admin/lib/lang/ro_server_config.lng
@@ -10,6 +10,7 @@ $wb['vhost_conf_dir_txt'] = 'Vhost config dir';
 $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config enabled dir';
 $wb['apache_init_script_txt'] = 'Scriptul Apache init';
 $wb['apache_init_script_note_txt'] = 'Lăsând acest gol, va detecta automat scriptul inițial Apache';
+$wb['apache_init_script_error_regex'] = 'Scriptul inițial de Apache nevalid.';
 $wb['getmail_config_dir_txt'] = 'Getmail config dir';
 $wb['fastcgi_starter_path_txt'] = 'FastCGI starter path';
 $wb['fastcgi_starter_script_txt'] = 'FastCGI starter script';
diff --git a/interface/web/admin/lib/lang/ru_server_config.lng b/interface/web/admin/lib/lang/ru_server_config.lng
index 43468ce757..db17e9ac5a 100644
--- a/interface/web/admin/lib/lang/ru_server_config.lng
+++ b/interface/web/admin/lib/lang/ru_server_config.lng
@@ -8,6 +8,7 @@ $wb['vhost_conf_dir_txt'] = 'Каталог config Vhost';
 $wb['vhost_conf_enabled_dir_txt'] = 'Каталог Vhost conf enabled';
 $wb['apache_init_script_txt'] = 'Apache init script';
 $wb['apache_init_script_note_txt'] = 'Если оставить это поле пустым, будет автоматически обнаружен скрипт инициализации Apache.';
+$wb['apache_init_script_error_regex'] = 'Недопустимый скрипт инициализации Apache.';
 $wb['getmail_config_dir_txt'] = 'Папка конфига Getmail';
 $wb['fastcgi_starter_path_txt'] = 'Стартовый путь FastCGI';
 $wb['fastcgi_starter_script_txt'] = 'Стартовый скрипт FastCGI';
diff --git a/interface/web/admin/lib/lang/se_server_config.lng b/interface/web/admin/lib/lang/se_server_config.lng
index baf3c16e6f..afaac77796 100644
--- a/interface/web/admin/lib/lang/se_server_config.lng
+++ b/interface/web/admin/lib/lang/se_server_config.lng
@@ -9,6 +9,7 @@ $wb['vhost_conf_dir_txt'] = 'Vhost config dir';
 $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config enabled dir';
 $wb['apache_init_script_txt'] = 'Apache init-skript';
 $wb['apache_init_script_note_txt'] = 'Om du lämnar detta tomt kommer det automatiskt att upptäcka Apache-init-skriptet';
+$wb['apache_init_script_error_regex'] = 'Ogiltigt Apache-init-skript.';
 $wb['getmail_config_dir_txt'] = 'Getmail config dir';
 $wb['fastcgi_starter_path_txt'] = 'FastCGI starter path';
 $wb['fastcgi_starter_script_txt'] = 'FastCGI starter script';
diff --git a/interface/web/admin/lib/lang/sk_server_config.lng b/interface/web/admin/lib/lang/sk_server_config.lng
index 4eaacc4b59..f97bc7f86f 100644
--- a/interface/web/admin/lib/lang/sk_server_config.lng
+++ b/interface/web/admin/lib/lang/sk_server_config.lng
@@ -11,6 +11,7 @@ $wb['vhost_conf_dir_txt'] = 'Vhost konfig adresár';
 $wb['vhost_conf_enabled_dir_txt'] = 'Vhost konfig odblokovaný adresár';
 $wb['apache_init_script_txt'] = 'Inicializačný skript Apache';
 $wb['apache_init_script_note_txt'] = 'Ak ponecháte toto pole prázdne, automaticky zistí iniciačný skript Apache';
+$wb['apache_init_script_error_regex'] = 'Neplatný iniciačný skript Apache.';
 $wb['getmail_config_dir_txt'] = 'Getmail konfig adresár';
 $wb['fastcgi_starter_path_txt'] = 'FastCGI starter cesta';
 $wb['fastcgi_starter_script_txt'] = 'FastCGI starter skript';
diff --git a/interface/web/admin/lib/lang/tr_server_config.lng b/interface/web/admin/lib/lang/tr_server_config.lng
index a5ca5adfff..7d664b6947 100644
--- a/interface/web/admin/lib/lang/tr_server_config.lng
+++ b/interface/web/admin/lib/lang/tr_server_config.lng
@@ -21,6 +21,7 @@ $wb['vhost_conf_dir_txt'] = 'Sanal Sunucu Ayarları Klasörü';
 $wb['vhost_conf_enabled_dir_txt'] = 'Etkin Sanal Sunucu Ayarları Klasörü';
 $wb['apache_init_script_txt'] = 'Apache init betiÄŸi';
 $wb['apache_init_script_note_txt'] = 'Bu değerin boş bırakılması Apache init betiğini otomatik olarak algılar';
+$wb['apache_init_script_error_regex'] = 'Geçersiz Apache init betiği.';
 $wb['getmail_config_dir_txt'] = 'Getmail Ayarları Klasörü';
 $wb['fastcgi_starter_path_txt'] = 'FastCGI Başlatıcı Yolu';
 $wb['fastcgi_starter_script_txt'] = 'FastCGI Başlatıcı Betiği';
-- 
GitLab


From 8f069999ce0cab99d24ee88f324e73f92bffd29f Mon Sep 17 00:00:00 2001
From: Ales Seifert <seifert@alesak.net>
Date: Thu, 28 Nov 2019 21:27:03 +1100
Subject: [PATCH 094/242] added update status check for Redhat based distros

---
 .../cron.d/100-monitor_system_update.inc.php  | 24 ++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)

diff --git a/server/lib/classes/cron.d/100-monitor_system_update.inc.php b/server/lib/classes/cron.d/100-monitor_system_update.inc.php
index bc4f521073..3d4ebf408e 100644
--- a/server/lib/classes/cron.d/100-monitor_system_update.inc.php
+++ b/server/lib/classes/cron.d/100-monitor_system_update.inc.php
@@ -159,7 +159,29 @@ class cronjob_monitor_system_update extends cronjob {
 			 * Fetch the output
 			 */
 			$data['output'] = shell_exec('zypper lu');
-		} else {
+		} elseif(file_exists('/etc/redhat-release')) {
+			/*
+			 * update and find the upgrade.
+			 * if there is any output, then there is a needed update
+			 */
+			$aptData = shell_exec('yum -q list updates');
+			if ($aptData == '') {
+				/* There is nothing to update! */
+				$state = 'ok';
+			} else {
+				/*
+				 * There is something to update! this is in most cases not critical, so we can
+				 * do a system-update once a month or so...
+				 */
+				$state = 'info';
+			}
+
+			/*
+			 * Fetch the output
+			 */
+			$data['output'] = shell_exec('yum -q list updates');
+            
+        } else {
 			/*
 			 * It is not Debian/Ubuntu, so there is no data and no state
 			 *
-- 
GitLab


From 81768b88aff964c18444e4f6cd0d38b5d9b12666 Mon Sep 17 00:00:00 2001
From: Michael Seevogel <git_projects@michaelseevogel.de>
Date: Fri, 29 Nov 2019 11:52:12 +0100
Subject: [PATCH 095/242] use dnf as default package manager whenever possible

---
 .../cron.d/100-monitor_system_update.inc.php  | 52 +++++++++++--------
 1 file changed, 31 insertions(+), 21 deletions(-)

diff --git a/server/lib/classes/cron.d/100-monitor_system_update.inc.php b/server/lib/classes/cron.d/100-monitor_system_update.inc.php
index 3d4ebf408e..34f944fa67 100644
--- a/server/lib/classes/cron.d/100-monitor_system_update.inc.php
+++ b/server/lib/classes/cron.d/100-monitor_system_update.inc.php
@@ -160,28 +160,38 @@ class cronjob_monitor_system_update extends cronjob {
 			 */
 			$data['output'] = shell_exec('zypper lu');
 		} elseif(file_exists('/etc/redhat-release')) {
-			/*
-			 * update and find the upgrade.
-			 * if there is any output, then there is a needed update
-			 */
-			$aptData = shell_exec('yum -q list updates');
-			if ($aptData == '') {
-				/* There is nothing to update! */
-				$state = 'ok';
-			} else {
-				/*
-				 * There is something to update! this is in most cases not critical, so we can
-				 * do a system-update once a month or so...
-				 */
-				$state = 'info';
-			}
-
-			/*
-			 * Fetch the output
-			 */
-			$data['output'] = shell_exec('yum -q list updates');
+                        /*
+                         * update and find the upgrade.
+                         * if there is any output, then there is a needed update
+                         */
+
+			/* try to figure out the default package manager first */
+                        if(file_exists('/usr/bin/dnf') && (is_link('/usr/bin/yum'))) {
+                                $rhPkgMgr = 'dnf';
+                        } elseif(file_exists('/usr/bin/dnf') && (!file_exists('/usr/bin/yum')) || (!is_link('/usr/bin/yum'))) {
+                                $rhPkgMgr = 'dnf';
+                        } else {
+                                $rhPkgMgr = 'yum';
+                        }
+
+                        $aptData = shell_exec($rhPkgMgr. ' -q list updates');
+                        if ($aptData == '') {
+                                /* There is nothing to update! */
+                                $state = 'ok';
+                        } else {
+                                /*
+                                 * There is something to update! this is in most cases not critical, so we can
+                                 * do a system-update once a month or so...
+                                 */
+                                $state = 'info';
+                        }
+
+                        /*
+                         * Fetch the output
+                         */
+                        $data['output'] = shell_exec($rhPkgMgr. ' -q list updates');
             
-        } else {
+	        } else {
 			/*
 			 * It is not Debian/Ubuntu, so there is no data and no state
 			 *
-- 
GitLab


From 1abf95299b76dc55e238054731e1e1e193a04989 Mon Sep 17 00:00:00 2001
From: Michael Seevogel <git_projects@michaelseevogel.de>
Date: Fri, 29 Nov 2019 11:56:20 +0100
Subject: [PATCH 096/242] added CentOS 8 detection to monitoring tools

---
 server/lib/classes/monitor_tools.inc.php | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/server/lib/classes/monitor_tools.inc.php b/server/lib/classes/monitor_tools.inc.php
index d8d325fe60..aba19df7a4 100644
--- a/server/lib/classes/monitor_tools.inc.php
+++ b/server/lib/classes/monitor_tools.inc.php
@@ -319,6 +319,14 @@ class monitor_tools {
 			} else {
 				$distid = 'centos72';
 			}
+                } elseif(stristr($content, 'CentOS Linux release 8')) {
+                        preg_match_all('/([0-9]{1,2})\.?([0-9]{0,2})\.?([0-9]*)/', $content, $version);
+                        $distname = 'CentOS';
+                        $distver = is_array($version)? implode('.', array_filter(array($version[1][0],$version[2][0],$version[3][0]),'strlen')) :'Unknown';
+                        $distbaseid = 'fedora';
+                        $var=explode(" ", $content);
+                        $var=explode(".", $var[3]);
+                        $var=$var[0].".".$var[1];
 		} else {
 			$distname = 'Redhat';
 			$distver = 'Unknown';
-- 
GitLab


From f6553cd855fcd2a52f5a522e5335277400485fd8 Mon Sep 17 00:00:00 2001
From: Michael Seevogel <git_projects@michaelseevogel.de>
Date: Fri, 29 Nov 2019 12:05:43 +0100
Subject: [PATCH 097/242] added CentOS 8 detection to installer

---
 install/lib/install.lib.php | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/install/lib/install.lib.php b/install/lib/install.lib.php
index 1e49e025ca..02ebba2850 100644
--- a/install/lib/install.lib.php
+++ b/install/lib/install.lib.php
@@ -341,6 +341,15 @@ function get_distname() {
 				$distid = 'centos72';
 			}
 			swriteln("Operating System: CentOS $var\n");
+                } elseif(stristr($content, 'CentOS Linux release 8')) {
+                        $distname = 'CentOS';
+                        $distver = 'Unknown';
+                        $distbaseid = 'fedora';
+			$distid = 'centos80';
+                        $var=explode(" ", $content);
+                        $var=explode(".", $var[3]);
+                        $var=$var[0].".".$var[1];
+                        swriteln("Operating System: CentOS $var\n");
 		} else {
 			$distname = 'Redhat';
 			$distver = 'Unknown';
-- 
GitLab


From 1d10294cee99e75cadebb6eff02160632f482c56 Mon Sep 17 00:00:00 2001
From: Florian Schaal <info@schaal-24.de>
Date: Fri, 29 Nov 2019 14:00:48 +0100
Subject: [PATCH 098/242] Test webserver configuration on restart was not shown
 for nginx

---
 interface/web/admin/lib/lang/ar_server_config.lng        | 2 +-
 interface/web/admin/lib/lang/bg_server_config.lng        | 2 +-
 interface/web/admin/lib/lang/ca_server_config.lng        | 2 +-
 interface/web/admin/lib/lang/en_server_config.lng        | 2 +-
 interface/web/admin/lib/lang/fi_server_config.lng        | 2 +-
 interface/web/admin/lib/lang/hu_server_config.lng        | 2 +-
 interface/web/admin/lib/lang/ja_server_config.lng        | 2 +-
 interface/web/admin/lib/lang/pt_server_config.lng        | 2 +-
 interface/web/admin/lib/lang/ro_server_config.lng        | 2 +-
 interface/web/admin/lib/lang/se_server_config.lng        | 2 +-
 interface/web/admin/lib/lang/sk_server_config.lng        | 2 +-
 interface/web/admin/templates/server_config_web_edit.htm | 2 +-
 12 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/interface/web/admin/lib/lang/ar_server_config.lng b/interface/web/admin/lib/lang/ar_server_config.lng
index f271e007d3..24a1a41933 100644
--- a/interface/web/admin/lib/lang/ar_server_config.lng
+++ b/interface/web/admin/lib/lang/ar_server_config.lng
@@ -84,7 +84,7 @@ $wb['backup_dir_txt'] = 'Backup directory';
 $wb['named_conf_local_path_txt'] = 'BIND named.conf.local path';
 $wb['php_ini_path_cgi_txt'] = 'CGI php.ini path';
 $wb['php_ini_path_apache_txt'] = 'Apache php.ini path';
-$wb['check_apache_config_txt'] = 'Test apache configuration on restart';
+$wb['check_apache_config_txt'] = 'Test webserver configuration on restart';
 $wb['CA_path_txt'] = 'CA Path';
 $wb['CA_pass_txt'] = 'CA passphrase';
 $wb['ufw_enable_txt'] = 'Enable';
diff --git a/interface/web/admin/lib/lang/bg_server_config.lng b/interface/web/admin/lib/lang/bg_server_config.lng
index 46c77fe794..aa4385b8ae 100644
--- a/interface/web/admin/lib/lang/bg_server_config.lng
+++ b/interface/web/admin/lib/lang/bg_server_config.lng
@@ -84,7 +84,7 @@ $wb['backup_dir_txt'] = 'Директория за бекъп';
 $wb['named_conf_local_path_txt'] = 'BIND named.conf.local path';
 $wb['php_ini_path_cgi_txt'] = 'CGI php.ini path';
 $wb['php_ini_path_apache_txt'] = 'Apache php.ini path';
-$wb['check_apache_config_txt'] = 'Test apache configuration on restart';
+$wb['check_apache_config_txt'] = 'Test webserver configuration on restart';
 $wb['ufw_enable_txt'] = 'Enable';
 $wb['ufw_manage_builtins_txt'] = 'Manage Builtin Rules';
 $wb['ufw_ipv6_txt'] = 'Enable IPv6';
diff --git a/interface/web/admin/lib/lang/ca_server_config.lng b/interface/web/admin/lib/lang/ca_server_config.lng
index 1dac17eda5..40f02fb637 100644
--- a/interface/web/admin/lib/lang/ca_server_config.lng
+++ b/interface/web/admin/lib/lang/ca_server_config.lng
@@ -96,7 +96,7 @@ $wb['backup_dir_txt'] = 'Backup directory';
 $wb['named_conf_local_path_txt'] = 'BIND named.conf.local path';
 $wb['php_ini_path_cgi_txt'] = 'CGI php.ini path';
 $wb['php_ini_path_apache_txt'] = 'Apache php.ini path';
-$wb['check_apache_config_txt'] = 'Test apache configuration on restart';
+$wb['check_apache_config_txt'] = 'Test webserver configuration on restart';
 $wb['network_config_warning_txt'] = 'The network configuration option is only available for Debian and Ubuntu Servers. Do not enable this option if your network interface is not eth0.';
 $wb['CA_path_txt'] = 'CA Path';
 $wb['CA_pass_txt'] = 'CA passphrase';
diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng
index 1d2bf74ec9..b8c9166d43 100644
--- a/interface/web/admin/lib/lang/en_server_config.lng
+++ b/interface/web/admin/lib/lang/en_server_config.lng
@@ -97,7 +97,7 @@ $wb["backup_tmp_txt"] = 'Backup tmp directory for zip';
 $wb["named_conf_local_path_txt"] = 'BIND named.conf.local path';
 $wb["php_ini_path_cgi_txt"] = 'CGI php.ini path';
 $wb["php_ini_path_apache_txt"] = 'Apache php.ini path';
-$wb["check_apache_config_txt"] = 'Test apache configuration on restart';
+$wb["check_apache_config_txt"] = 'Test webserver configuration on restart';
 $wb["network_config_warning_txt"] = 'The network configuration option is only available for Debian and Ubuntu Servers. Do not enable this option if your network interface is not eth0.';
 $wb["CA_path_txt"] = 'CA Path';
 $wb["CA_pass_txt"] = 'CA passphrase';
diff --git a/interface/web/admin/lib/lang/fi_server_config.lng b/interface/web/admin/lib/lang/fi_server_config.lng
index b81f77ac08..85b994a72e 100755
--- a/interface/web/admin/lib/lang/fi_server_config.lng
+++ b/interface/web/admin/lib/lang/fi_server_config.lng
@@ -84,7 +84,7 @@ $wb['backup_dir_txt'] = 'Backup directory';
 $wb['named_conf_local_path_txt'] = 'BIND named.conf.local path';
 $wb['php_ini_path_cgi_txt'] = 'CGI php.ini path';
 $wb['php_ini_path_apache_txt'] = 'Apache php.ini path';
-$wb['check_apache_config_txt'] = 'Test apache configuration on restart';
+$wb['check_apache_config_txt'] = 'Test webserver configuration on restart';
 $wb['CA_path_txt'] = 'CA Path';
 $wb['CA_pass_txt'] = 'CA passphrase';
 $wb['ufw_enable_txt'] = 'Enable';
diff --git a/interface/web/admin/lib/lang/hu_server_config.lng b/interface/web/admin/lib/lang/hu_server_config.lng
index 0bd058a5bc..52533a2c78 100644
--- a/interface/web/admin/lib/lang/hu_server_config.lng
+++ b/interface/web/admin/lib/lang/hu_server_config.lng
@@ -84,7 +84,7 @@ $wb['backup_dir_txt'] = 'Mentés könyvtára';
 $wb['named_conf_local_path_txt'] = 'BIND named.conf.local path';
 $wb['php_ini_path_cgi_txt'] = 'CGI php.ini path';
 $wb['php_ini_path_apache_txt'] = 'Apache php.ini path';
-$wb['check_apache_config_txt'] = 'Test apache configuration on restart';
+$wb['check_apache_config_txt'] = 'Test webserver configuration on restart';
 $wb['network_config_warning_txt'] = 'The network configuration option is only available for Debian and Ubuntu Servers. Do not enable this option if your network interface is not eth0.';
 $wb['CA_path_txt'] = 'CA Path';
 $wb['CA_pass_txt'] = 'CA passphrase';
diff --git a/interface/web/admin/lib/lang/ja_server_config.lng b/interface/web/admin/lib/lang/ja_server_config.lng
index 4d1d362502..6cd157154a 100644
--- a/interface/web/admin/lib/lang/ja_server_config.lng
+++ b/interface/web/admin/lib/lang/ja_server_config.lng
@@ -84,7 +84,7 @@ $wb['backup_dir_txt'] = 'Backup directory';
 $wb['named_conf_local_path_txt'] = 'BIND named.conf.local path';
 $wb['php_ini_path_cgi_txt'] = 'CGI php.ini path';
 $wb['php_ini_path_apache_txt'] = 'Apache php.ini path';
-$wb['check_apache_config_txt'] = 'Test apache configuration on restart';
+$wb['check_apache_config_txt'] = 'Test webserver configuration on restart';
 $wb['ufw_enable_txt'] = 'Enable';
 $wb['ufw_manage_builtins_txt'] = 'Manage Builtin Rules';
 $wb['ufw_ipv6_txt'] = 'Enable IPv6';
diff --git a/interface/web/admin/lib/lang/pt_server_config.lng b/interface/web/admin/lib/lang/pt_server_config.lng
index 98bf41a283..fabd1d61cc 100644
--- a/interface/web/admin/lib/lang/pt_server_config.lng
+++ b/interface/web/admin/lib/lang/pt_server_config.lng
@@ -84,7 +84,7 @@ $wb['backup_dir_txt'] = 'Backup directory';
 $wb['named_conf_local_path_txt'] = 'BIND named.conf.local path';
 $wb['php_ini_path_cgi_txt'] = 'CGI php.ini path';
 $wb['php_ini_path_apache_txt'] = 'Apache php.ini path';
-$wb['check_apache_config_txt'] = 'Test apache configuration on restart';
+$wb['check_apache_config_txt'] = 'Test webserver configuration on restart';
 $wb['CA_path_txt'] = 'CA Path';
 $wb['CA_pass_txt'] = 'CA passphrase';
 $wb['ufw_enable_txt'] = 'Enable';
diff --git a/interface/web/admin/lib/lang/ro_server_config.lng b/interface/web/admin/lib/lang/ro_server_config.lng
index 27926c44a8..b5a1a18759 100644
--- a/interface/web/admin/lib/lang/ro_server_config.lng
+++ b/interface/web/admin/lib/lang/ro_server_config.lng
@@ -84,7 +84,7 @@ $wb['backup_dir_txt'] = 'Backup directory';
 $wb['named_conf_local_path_txt'] = 'BIND named.conf.local path';
 $wb['php_ini_path_cgi_txt'] = 'CGI php.ini path';
 $wb['php_ini_path_apache_txt'] = 'Apache php.ini path';
-$wb['check_apache_config_txt'] = 'Test apache configuration on restart';
+$wb['check_apache_config_txt'] = 'Test webserver configuration on restart';
 $wb['ufw_enable_txt'] = 'Enable';
 $wb['ufw_manage_builtins_txt'] = 'Manage Builtin Rules';
 $wb['ufw_ipv6_txt'] = 'Enable IPv6';
diff --git a/interface/web/admin/lib/lang/se_server_config.lng b/interface/web/admin/lib/lang/se_server_config.lng
index afaac77796..92b55336f0 100644
--- a/interface/web/admin/lib/lang/se_server_config.lng
+++ b/interface/web/admin/lib/lang/se_server_config.lng
@@ -84,7 +84,7 @@ $wb['backup_dir_txt'] = 'Backup directory';
 $wb['named_conf_local_path_txt'] = 'BIND named.conf.local path';
 $wb['php_ini_path_cgi_txt'] = 'CGI php.ini path';
 $wb['php_ini_path_apache_txt'] = 'Apache php.ini path';
-$wb['check_apache_config_txt'] = 'Test apache configuration on restart';
+$wb['check_apache_config_txt'] = 'Test webserver configuration on restart';
 $wb['ufw_enable_txt'] = 'Enable';
 $wb['ufw_manage_builtins_txt'] = 'Manage Builtin Rules';
 $wb['ufw_ipv6_txt'] = 'Enable IPv6';
diff --git a/interface/web/admin/lib/lang/sk_server_config.lng b/interface/web/admin/lib/lang/sk_server_config.lng
index f97bc7f86f..801a4fece1 100644
--- a/interface/web/admin/lib/lang/sk_server_config.lng
+++ b/interface/web/admin/lib/lang/sk_server_config.lng
@@ -84,7 +84,7 @@ $wb['backup_dir_txt'] = 'Backup directory';
 $wb['named_conf_local_path_txt'] = 'BIND named.conf.local path';
 $wb['php_ini_path_cgi_txt'] = 'CGI php.ini path';
 $wb['php_ini_path_apache_txt'] = 'Apache php.ini path';
-$wb['check_apache_config_txt'] = 'Test apache configuration on restart';
+$wb['check_apache_config_txt'] = 'Test webserver configuration on restart';
 $wb['ufw_enable_txt'] = 'Enable';
 $wb['ufw_manage_builtins_txt'] = 'Manage Builtin Rules';
 $wb['ufw_ipv6_txt'] = 'Enable IPv6';
diff --git a/interface/web/admin/templates/server_config_web_edit.htm b/interface/web/admin/templates/server_config_web_edit.htm
index 97dc0557fc..05042bac85 100644
--- a/interface/web/admin/templates/server_config_web_edit.htm
+++ b/interface/web/admin/templates/server_config_web_edit.htm
@@ -78,7 +78,7 @@
                         {tmpl_var name='security_level'}
                     </select></div>
             </div>
-            <div class="form-group apache">
+            <div class="form-group">
                 <label class="col-sm-3 control-label">{tmpl_var name='check_apache_config_txt'}</label>
                 <div class="col-sm-9">
                     {tmpl_var name='check_apache_config'}
-- 
GitLab


From 1477f12bdbbf2df77fa6e9abf5773745954b226e Mon Sep 17 00:00:00 2001
From: Michael Seevogel <git_projects@michaelseevogel.de>
Date: Sat, 30 Nov 2019 13:50:25 +0100
Subject: [PATCH 099/242] added missing dist files

---
 install/dist/conf/centos80.conf.php | 224 ++++++++++++++++++++++++++++
 install/dist/lib/centos80.lib.php   |  40 +++++
 2 files changed, 264 insertions(+)
 create mode 100644 install/dist/conf/centos80.conf.php
 create mode 100644 install/dist/lib/centos80.lib.php

diff --git a/install/dist/conf/centos80.conf.php b/install/dist/conf/centos80.conf.php
new file mode 100644
index 0000000000..04257d4dfe
--- /dev/null
+++ b/install/dist/conf/centos80.conf.php
@@ -0,0 +1,224 @@
+<?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.
+*/
+
+//***  Fedora 9 default settings
+
+//* Main
+$conf['language'] = 'en';
+$conf['distname'] = 'centos80';
+$conf['hostname'] = 'server1.domain.tld'; // Full hostname
+$conf['ispconfig_install_dir'] = '/usr/local/ispconfig';
+$conf['ispconfig_config_dir'] = '/usr/local/ispconfig';
+$conf['ispconfig_log_priority'] = 2;  // 0 = Debug, 1 = Warning, 2 = Error
+$conf['ispconfig_log_dir'] = '/var/log/ispconfig';
+$conf['server_id'] = 1;
+$conf['init_scripts'] = '/etc/init.d';
+$conf['runlevel'] = '/etc';
+$conf['shells'] = '/etc/shells';
+$conf['pam'] = '/etc/pam.d';
+
+//* Services provided by this server, this selection will be overridden by the expert mode
+$conf['services']['mail'] = true;
+$conf['services']['web'] = true;
+$conf['services']['dns'] = true;
+$conf['services']['file'] = true;
+$conf['services']['db'] = true;
+$conf['services']['vserver'] = true;
+
+//* MySQL
+$conf['mysql']['installed'] = false; // will be detected automatically during installation
+$conf['mysql']['init_script'] = 'mariadb';
+$conf['mysql']['host'] = 'localhost';
+$conf['mysql']['ip'] = '127.0.0.1';
+$conf['mysql']['port'] = '3306';
+$conf['mysql']['database'] = 'dbispconfig';
+$conf['mysql']['admin_user'] = 'root';
+$conf['mysql']['admin_password'] = '';
+$conf['mysql']['charset'] = 'utf8';
+$conf['mysql']['ispconfig_user'] = 'ispconfig';
+$conf['mysql']['ispconfig_password'] = md5(uniqid(rand()));
+$conf['mysql']['master_slave_setup'] = 'n';
+$conf['mysql']['master_host'] = '';
+$conf['mysql']['master_database'] = 'dbispconfig';
+$conf['mysql']['master_admin_user'] = 'root';
+$conf['mysql']['master_admin_password'] = '';
+$conf['mysql']['master_ispconfig_user'] = '';
+$conf['mysql']['master_ispconfig_password'] = md5(uniqid(rand()));
+
+//* Apache
+$conf['apache']['installed'] = false; // will be detected automatically during installation
+$conf['apache']['user'] = 'apache';
+$conf['apache']['group'] = 'apache';
+$conf['apache']['init_script'] = 'httpd';
+$conf['apache']['version'] = '2.2';
+$conf['apache']['vhost_conf_dir'] = '/etc/httpd/conf/sites-available';
+$conf['apache']['vhost_conf_enabled_dir'] = '/etc/httpd/conf/sites-enabled';
+$conf['apache']['vhost_port'] = '8080';
+$conf['apache']['php_ini_path_apache'] = '/etc/php.ini';
+$conf['apache']['php_ini_path_cgi'] = '/etc/php.ini';
+
+//* Website base settings
+$conf['web']['website_basedir'] = '/var/www';
+$conf['web']['website_path'] = '/var/www/clients/client[client_id]/web[website_id]';
+$conf['web']['website_symlinks'] = '/var/www/[website_domain]/:/var/www/clients/client[client_id]/[website_domain]/';
+
+//* Apps base settings
+$conf['web']['apps_vhost_ip'] = '_default_';
+$conf['web']['apps_vhost_port'] = '8081';
+$conf['web']['apps_vhost_servername'] = '';
+$conf['web']['apps_vhost_user'] = 'ispapps';
+$conf['web']['apps_vhost_group'] = 'ispapps';
+
+//* Fastcgi
+$conf['fastcgi']['fastcgi_phpini_path'] = '/etc/';
+$conf['fastcgi']['fastcgi_starter_path'] = '/var/www/php-fcgi-scripts/[system_user]/';
+$conf['fastcgi']['fastcgi_bin'] = '/usr/bin/php-cgi';
+
+//* Postfix
+$conf['postfix']['installed'] = false; // will be detected automatically during installation
+$conf['postfix']['config_dir'] = '/etc/postfix';
+$conf['postfix']['init_script'] = 'postfix';
+$conf['postfix']['user'] = 'postfix';
+$conf['postfix']['group'] = 'postfix';
+$conf['postfix']['vmail_userid'] = '5000';
+$conf['postfix']['vmail_username'] = 'vmail';
+$conf['postfix']['vmail_groupid'] = '5000';
+$conf['postfix']['vmail_groupname'] = 'vmail';
+$conf['postfix']['vmail_mailbox_base'] = '/var/vmail';
+
+//* Mailman
+$conf['mailman']['installed'] = false; // will be detected automatically during installation
+$conf['mailman']['config_dir'] = '/etc/mailman';
+$conf['mailman']['init_script'] = 'mailman';
+
+//* Getmail
+$conf['getmail']['installed'] = false; // will be detected automatically during installation
+$conf['getmail']['config_dir'] = '/etc/getmail';
+$conf['getmail']['program'] = '/usr/bin/getmail';
+
+//* Courier
+$conf['courier']['installed'] = false; // will be detected automatically during installation
+$conf['courier']['config_dir'] = '/etc/authlib';
+$conf['courier']['courier-authdaemon'] = 'courier-authlib';
+$conf['courier']['courier-imap'] = 'courier-imap';
+$conf['courier']['courier-imap-ssl'] = '';
+$conf['courier']['courier-pop'] = '';
+$conf['courier']['courier-pop-ssl'] = '';
+
+//* Dovecot
+$conf['dovecot']['installed'] = false; // will be detected automatically during installation
+$conf['dovecot']['config_dir'] = '/etc/dovecot';
+$conf['dovecot']['init_script'] = 'dovecot';
+
+//* SASL
+$conf['saslauthd']['installed'] = false; // will be detected automatically during installation
+$conf['saslauthd']['config'] = '/etc/sysconfig/saslauthd';
+$conf['saslauthd']['init_script'] = 'saslauthd';
+
+//* Amavisd
+$conf['amavis']['installed'] = false; // will be detected automatically during installation
+$conf['amavis']['config_dir'] = '/etc/amavisd';
+$conf['amavis']['init_script'] = 'amavisd';
+
+//* Rspamd
+$conf['rspamd']['installed'] = false; // will be detected automatically during installation
+$conf['rspamd']['config_dir'] = '/etc/rspamd';
+$conf['rspamd']['init_script'] = 'rspamd';
+
+//* ClamAV
+$conf['clamav']['installed'] = false; // will be detected automatically during installation
+$conf['clamav']['init_script'] = 'clamd@amavisd';
+
+//* Pureftpd
+$conf['pureftpd']['installed'] = false; // will be detected automatically during installation
+$conf['pureftpd']['config_dir'] = '/etc/pure-ftpd';
+$conf['pureftpd']['init_script'] = 'pure-ftpd';
+
+//* MyDNS
+$conf['mydns']['installed'] = false; // will be detected automatically during installation
+$conf['mydns']['config_dir'] = '/etc';
+$conf['mydns']['init_script'] = 'mydns';
+
+//* PowerDNS
+$conf['powerdns']['installed'] = false; // will be detected automatically during installation
+$conf['powerdns']['database'] = 'powerdns';
+$conf["powerdns"]["config_dir"] = '/etc/powerdns/pdns.d';
+$conf['powerdns']['init_script'] = 'pdns';
+
+//* BIND DNS Server
+$conf['bind']['installed'] = false; // will be detected automatically during installation
+$conf['bind']['bind_user'] = 'named';
+$conf['bind']['bind_group'] = 'named';
+$conf['bind']['bind_zonefiles_dir'] = '/var/named';
+$conf['bind']['named_conf_path'] = '/etc/named.conf';
+$conf['bind']['named_conf_local_path'] = '/etc/named.conf.local';
+$conf['bind']['init_script'] = 'named';
+
+//* Jailkit
+$conf['jailkit']['installed'] = false; // will be detected automatically during installation
+$conf['jailkit']['config_dir'] = '/etc/jailkit';
+$conf['jailkit']['jk_init'] = 'jk_init.ini';
+$conf['jailkit']['jk_chrootsh'] = 'jk_chrootsh.ini';
+$conf['jailkit']['jailkit_chroot_app_programs'] = '/usr/bin/groups /usr/bin/id /usr/bin/dircolors /bin/basename /usr/bin/dirname /usr/bin/nano';
+$conf['jailkit']['jailkit_chroot_cron_programs'] = '/usr/bin/php /usr/bin/perl /usr/share/perl /usr/share/php';
+
+//* Squid
+$conf['squid']['installed'] = false; // will be detected automatically during installation
+$conf['squid']['config_dir'] = '/etc/squid';
+$conf['squid']['init_script'] = 'squid';
+
+//* Nginx
+$conf['nginx']['installed'] = false; // will be detected automatically during installation
+$conf['nginx']['user'] = 'nginx';
+$conf['nginx']['group'] = 'nginx';
+$conf['nginx']['config_dir'] = '/etc/nginx';
+$conf['nginx']['vhost_conf_dir'] = '/etc/nginx/sites-available';
+$conf['nginx']['vhost_conf_enabled_dir'] = '/etc/nginx/sites-enabled';
+$conf['nginx']['init_script'] = 'nginx';
+$conf['nginx']['vhost_port'] = '8080';
+$conf['nginx']['cgi_socket'] = '/var/run/fcgiwrap.socket';
+$conf['nginx']['php_fpm_init_script'] = 'php-fpm';
+$conf['nginx']['php_fpm_ini_path'] = '/etc/php.ini';
+$conf['nginx']['php_fpm_pool_dir'] = '/etc/php-fpm.d';
+$conf['nginx']['php_fpm_start_port'] = 9010;
+$conf['nginx']['php_fpm_socket_dir'] = '/var/lib/php5-fpm';
+
+//* vlogger
+$conf['vlogger']['config_dir'] = '/etc';
+
+//* cron
+$conf['cron']['init_script'] = 'crond';
+$conf['cron']['crontab_dir'] = '/etc/cron.d';
+$conf['cron']['wget'] = '/usr/bin/wget';
+
+//* OpenVZ
+$conf['openvz']['installed'] = false;
+
+?>
diff --git a/install/dist/lib/centos80.lib.php b/install/dist/lib/centos80.lib.php
new file mode 100644
index 0000000000..3dcd7494d3
--- /dev/null
+++ b/install/dist/lib/centos80.lib.php
@@ -0,0 +1,40 @@
+<?php
+
+/*
+Copyright (c) 2014, Till Brehm, ISPConfig UG
+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.
+*/
+
+require_once realpath(dirname(__FILE__)) . '/centos_base.lib.php';
+
+class installer extends installer_centos {
+
+	protected $clamav_socket = '/var/run/clamd.amavisd/clamd.sock';
+	
+	// everything else is inherited from installer_centos class
+}
+
+?>
-- 
GitLab


From fe83d4b7eb40dd0ad317623b213e4d45d1d2a271 Mon Sep 17 00:00:00 2001
From: Herman van Rink <rink@initfour.nl>
Date: Sat, 30 Nov 2019 22:09:26 +0100
Subject: [PATCH 100/242] Filter aliasdomains like the form does for API

Functions mail_user_update and mail_user_add
---
 interface/lib/classes/remote.d/mail.inc.php | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/interface/lib/classes/remote.d/mail.inc.php b/interface/lib/classes/remote.d/mail.inc.php
index 477743dfc3..771698e9dc 100644
--- a/interface/lib/classes/remote.d/mail.inc.php
+++ b/interface/lib/classes/remote.d/mail.inc.php
@@ -208,9 +208,9 @@ class remoting_mail extends remoting {
 
 		//* Check if mail domain exists
 		$email_parts = explode('@', $params['email']);
-		$tmp = $app->db->queryOneRecord("SELECT domain FROM mail_domain WHERE domain = ?", $email_parts[1]);
+		$tmp = $app->db->queryOneRecord("SELECT domain FROM mail_domain WHERE domain = ? AND domain NOT IN (SELECT SUBSTR(source,2) FROM mail_forwarding WHERE type = 'aliasdomain')", $email_parts[1]);
 		if($tmp['domain'] != $email_parts[1]) {
-			throw new SoapFault('mail_domain_does_not_exist', 'Mail domain - '.$email_parts[1].' - does not exist.');
+			throw new SoapFault('mail_domain_does_not_exist', 'Mail domain - '.$email_parts[1].' - does not exist as primary.');
 			return false;
 		}
 
@@ -234,11 +234,11 @@ class remoting_mail extends remoting {
 			return false;
 		}
 
-		//* Check if mail domain exists
+		//* Check if mail domain exists, and is not used as aliasdomain
 		$email_parts = explode('@', $params['email']);
-		$tmp = $app->db->queryOneRecord("SELECT domain FROM mail_domain WHERE domain = ?", $email_parts[1]);
+		$tmp = $app->db->queryOneRecord("SELECT domain FROM mail_domain WHERE domain = ? AND domain NOT IN (SELECT SUBSTR(source,2) FROM mail_forwarding WHERE type = 'aliasdomain')", $email_parts[1]);
 		if($tmp['domain'] != $email_parts[1]) {
-			throw new SoapFault('mail_domain_does_not_exist', 'Mail domain - '.$email_parts[1].' - does not exist.');
+			throw new SoapFault('mail_domain_does_not_exist', 'Mail domain - '.$email_parts[1].' - does not exist as primary.');
 			return false;
 		}
 
-- 
GitLab


From 8c9f7aa33482877a605170085bc9c7ed8dce2f06 Mon Sep 17 00:00:00 2001
From: Webslice <webslice@bixels.nl>
Date: Mon, 2 Dec 2019 10:32:16 +0100
Subject: [PATCH 101/242] Fix APS installer limits check

---
 interface/web/sites/aps_install_package.php | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/interface/web/sites/aps_install_package.php b/interface/web/sites/aps_install_package.php
index 1a38190a9f..04b815bb2d 100644
--- a/interface/web/sites/aps_install_package.php
+++ b/interface/web/sites/aps_install_package.php
@@ -49,8 +49,8 @@ $app->load_language_file('web/sites/'.$lngfile);
 
 // we will check only users, not admins
 if($_SESSION["s"]["user"]["typ"] == 'user') {
-	$app->tform->formDef['db_table_idx'] = 'client_id';
-	$app->tform->formDef['db_table'] = 'client';
+	$app->tform->formDef['db_table_idx'] = 'id';
+	$app->tform->formDef['db_table'] = 'aps_instances';
 	if(!$app->tform->checkClientLimit('limit_aps')) {
 		$app->error($app->lng("limit_aps_txt"));
 	}
-- 
GitLab


From 2d4fb14e565384cac469ae7ebf20a623a34da8b7 Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Tue, 3 Dec 2019 14:57:44 +0100
Subject: [PATCH 102/242] - fixed problem with invalid mail addresses in
 white/blacklists

---
 .../plugins-available/rspamd_plugin.inc.php   | 202 ++++++++++++------
 1 file changed, 137 insertions(+), 65 deletions(-)

diff --git a/server/plugins-available/rspamd_plugin.inc.php b/server/plugins-available/rspamd_plugin.inc.php
index f6bb5d5a8e..cfb0979eb5 100644
--- a/server/plugins-available/rspamd_plugin.inc.php
+++ b/server/plugins-available/rspamd_plugin.inc.php
@@ -46,6 +46,59 @@ class rspamd_plugin {
 		}
 	}
 
+	private function isValidEmail($email) {
+		$atIndex = strrpos($email, '@');
+		if($atIndex === false) {
+			return false;
+		}
+
+		$domain = substr($email, $atIndex + 1);
+		$local = substr($email, 0, $atIndex);
+		$localLen = strlen($local);
+		$domainLen = strlen($domain);
+		if($localLen > 64) {
+			return false;
+		} elseif($domainLen < 1 || $domainLen > 255) {
+			return false;
+		} elseif(substr($local, 0, 1) == '.' || substr($local, -1, 1) == '.') {
+			return false; // first or last sign is dot
+		} elseif(strpos($local, '..') !== false) {
+			return false; // two dots not allowed
+		} elseif(!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain)) {
+			return false; // invalid character
+		} elseif(strpos($domain, '..') !== false) {
+			return false; // two dots not allowed
+		} elseif(!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/', str_replace("\\\\", "", $local))) {
+			// character not valid in local part unless
+			// local part is quoted
+			if(!preg_match('/^"(\\\\"|[^"])+"$/', str_replace("\\\\", "", $local))) {
+				return false;
+			}
+		}
+
+		$domain_array = explode('.', $domain);
+		for($i = 0; $i < count($domain_array); $i++) {
+			if(!preg_match("/^(([A-Za-z0-9!#$%&'*+\/=?^_`{|}~-][A-Za-z0-9!#$%&'*+\/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$/", $domain_array[$i])) {
+				return false;
+			}
+		}
+
+		if(!preg_match("/^\[?[0-9\.]+\]?$/", $domain)) {
+			$domain_array = explode('.', $domain);
+			if(count($domain_array) < 2) {
+				return false; // Not enough parts to domain
+			}
+
+			for($i = 0; $i < count($domain_array); $i++) {
+				if(!preg_match("/^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$/", $domain_array[$i])) {
+					return false;
+				}
+			}
+		}
+
+		return true;
+	}
+	
 	/*
 	 	This function is called when the plugin is loaded
 	*/
@@ -190,62 +243,69 @@ class rspamd_plugin {
 				$app->system->mkdirpath($this->users_config_dir);
 			}
 			
-			$app->load('tpl');
-			
-			$tpl = new tpl();
-			$tpl->newTemplate('rspamd_users.inc.conf.master');
-			
-			$tpl->setVar('record_identifier', 'ispc_' . $type . '_' . $entry_id);
-			$tpl->setVar('priority', $settings_priority);
-			
-			if($type === 'spamfilter_user') {
-				if($data[$use_data]['local'] === 'Y') {
+			if(!$this->isValidEmail($app->functions->idn_encode($email_address))) {
+				if(is_file($settings_file)) {
+					unlink($settings_file);
+				}
+			} else {
+
+				$app->load('tpl');
+
+				$tpl = new tpl();
+				$tpl->newTemplate('rspamd_users.inc.conf.master');
+
+				$tpl->setVar('record_identifier', 'ispc_' . $type . '_' . $entry_id);
+				$tpl->setVar('priority', $settings_priority);
+
+				if($type === 'spamfilter_user') {
+					if($data[$use_data]['local'] === 'Y') {
+						$tpl->setVar('to_email', $app->functions->idn_encode($email_address));
+					} else {
+						$tpl->setVar('from_email', $app->functions->idn_encode($email_address));
+					}
+					$spamfilter = $data[$use_data];
+				} else {
 					$tpl->setVar('to_email', $app->functions->idn_encode($email_address));
+
+					// need to get matching spamfilter user if any
+					$spamfilter = $app->db->queryOneRecord('SELECT * FROM spamfilter_users WHERE `email` = ?', $email_address);
+				}
+
+				if(!isset($policy['rspamd_spam_tag_level'])) {
+					$policy['rspamd_spam_tag_level'] = 6.0;
+				}
+				if(!isset($policy['rspamd_spam_tag_method'])) {
+					$policy['rspamd_spam_tag_method'] = 'add_header';
+				}
+				if(!isset($policy['rspamd_spam_kill_level'])) {
+					$policy['rspamd_spam_kill_level'] = 15.0;
+				}
+				if(!isset($policy['rspamd_virus_kill_level'])) {
+					$policy['rspamd_virus_kill_level'] = floatval($policy['rspamd_spam_kill_level']) + 1000;
+				}
+
+				$tpl->setVar('rspamd_spam_tag_level', floatval($policy['rspamd_spam_tag_level']));
+				$tpl->setVar('rspamd_spam_tag_method', floatval($policy['rspamd_spam_tag_method']));
+				$tpl->setVar('rspamd_spam_kill_level', floatval($policy['rspamd_spam_kill_level']));
+				$tpl->setVar('rspamd_virus_kill_level', floatval($policy['rspamd_spam_kill_level']) + 1000);
+
+				if(isset($policy['spam_lover']) && $policy['spam_lover'] == 'Y') {
+					$tpl->setVar('spam_lover', true);
+				}
+				if(isset($policy['virus_lover']) && $policy['virus_lover'] == 'Y') {
+					$tpl->setVar('virus_lover', true);
+				}
+
+				$tpl->setVar('greylisting', $greylisting);
+
+				if(isset($policy['rspamd_spam_greylisting_level'])) {
+					$tpl->setVar('greylisting_level', floatval($policy['rspamd_spam_greylisting_level']));
 				} else {
-					$tpl->setVar('from_email', $app->functions->idn_encode($email_address));
+					$tpl->setVar('greylisting_level', 0.1);
 				}
-				$spamfilter = $data[$use_data];
-			} else {
-				$tpl->setVar('to_email', $app->functions->idn_encode($email_address));
-				
-				// need to get matching spamfilter user if any
-				$spamfilter = $app->db->queryOneRecord('SELECT * FROM spamfilter_users WHERE `email` = ?', $email_address);
-			}
-			
-			if(!isset($policy['rspamd_spam_tag_level'])) {
-				$policy['rspamd_spam_tag_level'] = 6.0;
-			}
-			if(!isset($policy['rspamd_spam_tag_method'])) {
-				$policy['rspamd_spam_tag_method'] = 'add_header';
-			}
-			if(!isset($policy['rspamd_spam_kill_level'])) {
-				$policy['rspamd_spam_kill_level'] = 15.0;
-			}
-			if(!isset($policy['rspamd_virus_kill_level'])) {
-				$policy['rspamd_virus_kill_level'] = floatval($policy['rspamd_spam_kill_level']) + 1000;
-			}
-			
-			$tpl->setVar('rspamd_spam_tag_level', floatval($policy['rspamd_spam_tag_level']));
-			$tpl->setVar('rspamd_spam_tag_method', floatval($policy['rspamd_spam_tag_method']));
-			$tpl->setVar('rspamd_spam_kill_level', floatval($policy['rspamd_spam_kill_level']));
-			$tpl->setVar('rspamd_virus_kill_level', floatval($policy['rspamd_spam_kill_level']) + 1000);
-			
-			if(isset($policy['spam_lover']) && $policy['spam_lover'] == 'Y') {
-				$tpl->setVar('spam_lover', true);
-			}
-			if(isset($policy['virus_lover']) && $policy['virus_lover'] == 'Y') {
-				$tpl->setVar('virus_lover', true);
-			}
-			
-			$tpl->setVar('greylisting', $greylisting);
 
-			if(isset($policy['rspamd_spam_greylisting_level'])) {
-				$tpl->setVar('greylisting_level', floatval($policy['rspamd_spam_greylisting_level']));
-			} else {
-				$tpl->setVar('greylisting_level', 0.1);
+				$app->system->file_put_contents($settings_file, $tpl->grab());
 			}
-
-			$app->system->file_put_contents($settings_file, $tpl->grab());
 		}
 
 		if($mail_config['content_filter'] == 'rspamd'){
@@ -318,20 +378,32 @@ class rspamd_plugin {
 						$filter_rcpt = substr($filter_rcpt, 1);
 					}
 				}
-				
-				$tpl = new tpl();
-				$tpl->newTemplate('rspamd_wblist.inc.conf.master');
-				$tpl->setVar('list_scope', ($global_filter ? 'global' : 'spamfilter'));
-				$tpl->setVar('record_id', $record_id);
-				// we need to add 10 to priority to avoid mailbox/domain spamfilter settings overriding white/blacklists
-				$tpl->setVar('priority', intval($data['new']['priority']) + ($global_filter ? 10 : 20));
-				$tpl->setVar('from', $filter_from);
-				$tpl->setVar('recipient', $filter_rcpt);
-				$tpl->setVar('hostname', $filter['hostname']);
-				$tpl->setVar('ip', $filter['ip']);
-				$tpl->setVar('wblist', $filter['wb']);
-		
-				$app->system->file_put_contents($wblist_file, $tpl->grab());
+
+				if(!$this->isValidEmail($filter_from)) {
+					$filter_from = '';
+				}
+				if(!$this->isValidEmail($filter_rcpt)) {
+					$filter_rcpt = '';
+				}
+				if(($global_filter === true && !$filter_from && !$filter_rcpt) || ($global_filter === false && (!$filter_from || !$filter_rcpt))) {
+					if(is_file($wblist_file)) {
+						unlink($wblist_file);
+					}
+				} else {
+					$tpl = new tpl();
+					$tpl->newTemplate('rspamd_wblist.inc.conf.master');
+					$tpl->setVar('list_scope', ($global_filter ? 'global' : 'spamfilter'));
+					$tpl->setVar('record_id', $record_id);
+					// we need to add 10 to priority to avoid mailbox/domain spamfilter settings overriding white/blacklists
+					$tpl->setVar('priority', intval($data['new']['priority']) + ($global_filter ? 10 : 20));
+					$tpl->setVar('from', $filter_from);
+					$tpl->setVar('recipient', $filter_rcpt);
+					$tpl->setVar('hostname', $filter['hostname']);
+					$tpl->setVar('ip', $filter['ip']);
+					$tpl->setVar('wblist', $filter['wb']);
+
+					$app->system->file_put_contents($wblist_file, $tpl->grab());
+				}
 			} elseif(is_file($wblist_file)) {
 				unlink($wblist_file);
 			}
-- 
GitLab


From 06a08d81e53607e47baf9e1e5555f7861890ea97 Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Tue, 3 Dec 2019 15:05:36 +0100
Subject: [PATCH 103/242] - added missing allow domain only for previous commit

---
 server/plugins-available/rspamd_plugin.inc.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/server/plugins-available/rspamd_plugin.inc.php b/server/plugins-available/rspamd_plugin.inc.php
index cfb0979eb5..212cb2c21c 100644
--- a/server/plugins-available/rspamd_plugin.inc.php
+++ b/server/plugins-available/rspamd_plugin.inc.php
@@ -68,7 +68,7 @@ class rspamd_plugin {
 			return false; // invalid character
 		} elseif(strpos($domain, '..') !== false) {
 			return false; // two dots not allowed
-		} elseif(!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/', str_replace("\\\\", "", $local))) {
+		} elseif($local && !preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/', str_replace("\\\\", "", $local))) {
 			// character not valid in local part unless
 			// local part is quoted
 			if(!preg_match('/^"(\\\\"|[^"])+"$/', str_replace("\\\\", "", $local))) {
-- 
GitLab


From f8317f75d4e3a7569c64555f7b42da7eaaed432f Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Mon, 9 Dec 2019 16:15:22 +0100
Subject: [PATCH 104/242] Fixed csrf issue when deleting an invoice draft

---
 server/lib/classes/aps_installer.inc.php | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/server/lib/classes/aps_installer.inc.php b/server/lib/classes/aps_installer.inc.php
index 922f32e612..70b77a3a7e 100644
--- a/server/lib/classes/aps_installer.inc.php
+++ b/server/lib/classes/aps_installer.inc.php
@@ -550,10 +550,21 @@ class ApsInstaller extends ApsBase
 			foreach($this->putenv as $var) {
 				putenv($var);
 			}
+			
+			$tmpi = "<?php\n\n";
+			foreach($this->putenv as $var) {
+				$tmpi .= "putenv('".$var."');\n";
+			}
+			$tmpi .= "chdir('".$this->local_installpath.'install_scripts/'."');\n";
+			$tmpi .= 'exec("php '.$this->local_installpath.'install_scripts/'.$cfgscript.' install");';
+			
+			$app->system->file_put_contents($this->local_installpath.'install_scripts/ispinstall.php', $tmpi);
+			exec('php '.$this->local_installpath.'install_scripts/ispinstall.php');
+			die();
 
 			$shell_retcode = true;
 			$shell_ret = array();
-			$app->system->exec_safe('php ? install 2>&1', $this->local_installpath.'install_scripts/'.$cfgscript);
+			//$app->system->exec_safe('sudo -u ? php ? install 2>&1', $this->file_owner_user, $this->local_installpath.'install_scripts/'.$cfgscript);
 			$shell_ret = $app->system->last_exec_out();
 			$shell_retcode = $app->system->last_exec_retcode();
 			$shell_ret = array_filter($shell_ret);
-- 
GitLab


From 2bdc1c8ac9246692f53d94691d36d6485d0aafa4 Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Mon, 9 Dec 2019 16:22:30 +0100
Subject: [PATCH 105/242] Revert "Fixed csrf issue when deleting an invoice
 draft"

This reverts commit f8317f75d4e3a7569c64555f7b42da7eaaed432f
---
 server/lib/classes/aps_installer.inc.php | 13 +------------
 1 file changed, 1 insertion(+), 12 deletions(-)

diff --git a/server/lib/classes/aps_installer.inc.php b/server/lib/classes/aps_installer.inc.php
index 70b77a3a7e..922f32e612 100644
--- a/server/lib/classes/aps_installer.inc.php
+++ b/server/lib/classes/aps_installer.inc.php
@@ -550,21 +550,10 @@ class ApsInstaller extends ApsBase
 			foreach($this->putenv as $var) {
 				putenv($var);
 			}
-			
-			$tmpi = "<?php\n\n";
-			foreach($this->putenv as $var) {
-				$tmpi .= "putenv('".$var."');\n";
-			}
-			$tmpi .= "chdir('".$this->local_installpath.'install_scripts/'."');\n";
-			$tmpi .= 'exec("php '.$this->local_installpath.'install_scripts/'.$cfgscript.' install");';
-			
-			$app->system->file_put_contents($this->local_installpath.'install_scripts/ispinstall.php', $tmpi);
-			exec('php '.$this->local_installpath.'install_scripts/ispinstall.php');
-			die();
 
 			$shell_retcode = true;
 			$shell_ret = array();
-			//$app->system->exec_safe('sudo -u ? php ? install 2>&1', $this->file_owner_user, $this->local_installpath.'install_scripts/'.$cfgscript);
+			$app->system->exec_safe('php ? install 2>&1', $this->local_installpath.'install_scripts/'.$cfgscript);
 			$shell_ret = $app->system->last_exec_out();
 			$shell_retcode = $app->system->last_exec_retcode();
 			$shell_ret = array_filter($shell_ret);
-- 
GitLab


From c83ce3f6b4f9007125675184e562d072892cab96 Mon Sep 17 00:00:00 2001
From: Florian Schaal <info@schaal-24.de>
Date: Mon, 9 Dec 2019 18:22:38 +0100
Subject: [PATCH 106/242] add {WEBROOT} to php-directive-snippets

---
 interface/web/admin/templates/directive_snippets_edit.htm | 5 +++--
 interface/web/sites/web_vhost_domain_edit.php             | 2 +-
 server/plugins-available/apache2_plugin.inc.php           | 1 +
 server/plugins-available/nginx_plugin.inc.php             | 1 +
 4 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/interface/web/admin/templates/directive_snippets_edit.htm b/interface/web/admin/templates/directive_snippets_edit.htm
index 72eb82369c..657d0ad1ef 100644
--- a/interface/web/admin/templates/directive_snippets_edit.htm
+++ b/interface/web/admin/templates/directive_snippets_edit.htm
@@ -19,7 +19,8 @@
                 <label for="snippet" class="col-sm-3 control-label">{tmpl_var name='snippet_txt'}</label>
                 <tmpl_if name='is_master'><div class="col-sm-9 col-text"><pre>{tmpl_var name='snippet'}</pre></div></tmpl_else><div class="col-sm-9"><textarea class="form-control" name="snippet" id="snippet" rows='10' cols='50'>{tmpl_var name='snippet'}</textarea>
                 &nbsp; Nginx {tmpl_var name='variables_txt'}: <a href="javascript:void(0);" class="addPlaceholder">{DOCROOT}</a>, <a href="javascript:void(0);" class="addPlaceholder">{FASTCGIPASS}</a>, <a href="javascript:void(0);" class="addPlaceholder">{PHPFALLBACKFASTCGIPASS}</a><br />
-				&nbsp; Apache {tmpl_var name='variables_txt'}: <a href="javascript:void(0);" class="addPlaceholder">{DOCROOT}</a>, <a href="javascript:void(0);" class="addPlaceholder">{DOCROOT_CLIENT}</a>
+				&nbsp; Apache {tmpl_var name='variables_txt'}: <a href="javascript:void(0);" class="addPlaceholder">{DOCROOT}</a>, <a href="javascript:void(0);" class="addPlaceholder">{DOCROOT_CLIENT}</a> <br />
+				&nbsp; PHP {tmpl_var name='variables_txt'}: <a href="javascript:void(0);" class="addPlaceholder">{WEBROOT}</a>
 				</div></tmpl_if>
             </div>
             <tmpl_if name='is_master'></tmpl_else>
@@ -81,4 +82,4 @@
         }
     });
 			
-</script>
\ No newline at end of file
+</script>
diff --git a/interface/web/sites/web_vhost_domain_edit.php b/interface/web/sites/web_vhost_domain_edit.php
index 52b44acc79..459af39670 100644
--- a/interface/web/sites/web_vhost_domain_edit.php
+++ b/interface/web/sites/web_vhost_domain_edit.php
@@ -1310,7 +1310,7 @@ class page_action extends tform_actions {
 					// value inside ''
 					if(preg_match('@^\s*;*\s*[a-zA-Z0-9._]*\s*=\s*\'.*\'\s*;*\s*$@', $custom_php_ini_settings_line)) continue;
 					// everything else
-					if(preg_match('@^\s*;*\s*[a-zA-Z0-9._]*\s*=\s*[-a-zA-Z0-9~&=_\@/,.#\s\|]*\s*;*\s*$@', $custom_php_ini_settings_line)) continue;
+					if(preg_match('@^\s*;*\s*[a-zA-Z0-9._]*\s*=\s*[-a-zA-Z0-9~&=_\@/,.#\{\}\s\|]*\s*;*\s*$@', $custom_php_ini_settings_line)) continue;
 					$custom_php_ini_settings_are_valid = false;
 					break;
 				}
diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php
index 59e97629cb..db0778ce88 100644
--- a/server/plugins-available/apache2_plugin.inc.php
+++ b/server/plugins-available/apache2_plugin.inc.php
@@ -3149,6 +3149,7 @@ class apache2_plugin {
 			$custom_php_ini_settings = str_replace("\r", "\n", $custom_php_ini_settings);
 			$ini_settings = explode("\n", $custom_php_ini_settings);
 			if(is_array($ini_settings) && !empty($ini_settings)){
+				$ini_settings = str_replace('{DOCROOT}', $data['new']['document_root'], $ini_settings);
 				foreach($ini_settings as $ini_setting){
 					$ini_setting = trim($ini_setting);
 					if(substr($ini_setting, 0, 1) == ';') continue;
diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php
index a8a3c3bf16..a26a96896f 100644
--- a/server/plugins-available/nginx_plugin.inc.php
+++ b/server/plugins-available/nginx_plugin.inc.php
@@ -2778,6 +2778,7 @@ class nginx_plugin {
 			$custom_php_ini_settings = str_replace("\r", "\n", $custom_php_ini_settings);
 			$ini_settings = explode("\n", $custom_php_ini_settings);
 			if(is_array($ini_settings) && !empty($ini_settings)){
+				$ini_settings = str_replace('{WEBROOT}', $data['new']['document_root'].'/web', $ini_settings);
 				foreach($ini_settings as $ini_setting){
 					$ini_setting = trim($ini_setting);
 					if(substr($ini_setting, 0, 1) == ';') continue;
-- 
GitLab


From 9584fb94d5842177c698eb8e91e650f24e0655a5 Mon Sep 17 00:00:00 2001
From: Florian Schaal <info@schaal-24.de>
Date: Mon, 9 Dec 2019 18:24:49 +0100
Subject: [PATCH 107/242] fix last commit for apache

---
 server/plugins-available/apache2_plugin.inc.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php
index db0778ce88..08730bee8e 100644
--- a/server/plugins-available/apache2_plugin.inc.php
+++ b/server/plugins-available/apache2_plugin.inc.php
@@ -3149,7 +3149,7 @@ class apache2_plugin {
 			$custom_php_ini_settings = str_replace("\r", "\n", $custom_php_ini_settings);
 			$ini_settings = explode("\n", $custom_php_ini_settings);
 			if(is_array($ini_settings) && !empty($ini_settings)){
-				$ini_settings = str_replace('{DOCROOT}', $data['new']['document_root'], $ini_settings);
+				$ini_settings = str_replace('{WEBROOT}', $data['new']['document_root'].'/web', $ini_settings);
 				foreach($ini_settings as $ini_setting){
 					$ini_setting = trim($ini_setting);
 					if(substr($ini_setting, 0, 1) == ';') continue;
-- 
GitLab


From 20225e7b238c13c99ed71510089d103c6da84142 Mon Sep 17 00:00:00 2001
From: Webslice <webslice@bixels.nl>
Date: Thu, 12 Dec 2019 09:02:15 +0100
Subject: [PATCH 108/242] Prevent conflicting APS install paths

---
 interface/lib/classes/aps_guicontroller.inc.php | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/interface/lib/classes/aps_guicontroller.inc.php b/interface/lib/classes/aps_guicontroller.inc.php
index 8a764a9c5c..8e4c17af79 100644
--- a/interface/lib/classes/aps_guicontroller.inc.php
+++ b/interface/lib/classes/aps_guicontroller.inc.php
@@ -637,11 +637,27 @@ class ApsGUIController extends ApsBase
 						// The location might be empty but the DB return must not be false!
 						if($location_for_domain) $used_path .= $location_for_domain['value'];
 
+						// If user is trying to install into exactly the same path, give an error
 						if($new_path == $used_path)
 						{
 							$temp_errstr = $app->lng('error_used_location');
 							break;
 						}
+
+						// If the new path is _below_ an existing path, give an error because the
+						// installation will delete the files of the existing APS installation
+						if (mb_substr($used_path, 0, mb_strlen($new_path)) === $new_path) {
+							$temp_errstr = $app->lng('error_used_location');
+							break;
+						}
+
+						// If the new path is _within_ an existing path, give an error. Even if
+						// installation would proceed fine in theory, deleting the "lower" package
+						// in the future would also inadvertedly delete the "nested" package
+						if (mb_substr($new_path, 0, mb_strlen($used_path)) === $used_path) {
+							$temp_errstr = $app->lng('error_used_location');
+							break;
+						}
 					}
 				}
 			}
-- 
GitLab


From 044e403a3b24d94d0d0e3d859595c57dd7481da8 Mon Sep 17 00:00:00 2001
From: Florian Schaal <info@schaal-24.de>
Date: Sat, 14 Dec 2019 13:41:20 +0100
Subject: [PATCH 109/242] update dovecot.conf (move mail_plugins -  Global
 setting mail_plugins won't change the setting inside an earlier filter)

---
 install/tpl/debian_dovecot2.conf.master | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/install/tpl/debian_dovecot2.conf.master b/install/tpl/debian_dovecot2.conf.master
index cfe3bd0182..e1929b188d 100644
--- a/install/tpl/debian_dovecot2.conf.master
+++ b/install/tpl/debian_dovecot2.conf.master
@@ -9,6 +9,7 @@ ssl_cert = </etc/postfix/smtpd.cert
 ssl_key = </etc/postfix/smtpd.key
 ssl_protocols = !SSLv2 !SSLv3
 mail_max_userip_connections = 100
+mail_plugins = $mail_plugins quota
 passdb {
   args = /etc/dovecot/dovecot-sql.conf
   driver = sql
@@ -65,7 +66,6 @@ protocol lmtp {
   mail_plugins = quota sieve
 }
 
-mail_plugins = $mail_plugins quota
 
 #2.3+ service stats {
 #2.3+     unix_listener stats-reader {
-- 
GitLab


From 605e7b1dfdf75ff9597e784eff5eeade62cfdc36 Mon Sep 17 00:00:00 2001
From: Herman van Rink <rink@initfour.nl>
Date: Fri, 2 Aug 2019 22:33:27 +0200
Subject: [PATCH 110/242] Add additional option to frontend, #5325

---
 interface/web/mail/form/mail_user_filter.tform.php | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/interface/web/mail/form/mail_user_filter.tform.php b/interface/web/mail/form/mail_user_filter.tform.php
index be5fba3ed7..b1370ecaa1 100644
--- a/interface/web/mail/form/mail_user_filter.tform.php
+++ b/interface/web/mail/form/mail_user_filter.tform.php
@@ -88,13 +88,14 @@ $form["tabs"]['filter'] = array (
 			'datatype' => 'VARCHAR',
 			'formtype' => 'SELECT',
 			'default' => '',
-			'value'  => array('Subject' => 'subject_txt', 'From'=>'from_txt', 'To'=>'to_txt', 'List-Id'=>'list_id_txt')
+			'value'  => array('Subject' => 'subject_txt', 'From'=>'from_txt', 'To'=>'to_txt', 'List-Id'=>'list_id_txt', 'Header' => 'header_txt', 'Size' => 'size_over_txt')
 		),
 		'op' => array (
 			'datatype' => 'VARCHAR',
 			'formtype' => 'SELECT',
 			'default' => '',
-			'value'  => array('contains'=>'contains_txt', 'is' => 'is_txt', 'begins'=>'begins_with_txt', 'ends'=>'ends_with_txt')
+			//'value'  => array('contains'=>'contains_txt','is' => 'Is','begins'=>'Begins with','ends'=>'Ends with')
+			'value'  => array('contains'=>'contains_txt', 'is' => 'is_txt', 'begins'=>'begins_with_txt', 'ends'=>'ends_with_txt', 'localpart' => 'localpart_txt', 'domain' => 'domain_txt')
 		),
 		'searchterm' => array (
 			'datatype' => 'VARCHAR',
@@ -115,7 +116,7 @@ $form["tabs"]['filter'] = array (
 			'datatype' => 'VARCHAR',
 			'formtype' => 'SELECT',
 			'default' => '',
-			'value'  => array('move' => 'move_to_txt', 'delete'=>'delete_txt')
+			'value'  => array('move' => 'move_to_txt', 'delete'=>'delete_txt', 'keep' => 'keep_txt', 'reject' => 'reject_txt')
 		),
 		'target' => array (
 			'datatype' => 'VARCHAR',
-- 
GitLab


From 30fdcaa46a6037019216beee7cecba064025e2cc Mon Sep 17 00:00:00 2001
From: Herman van Rink <rink@initfour.nl>
Date: Thu, 14 Nov 2019 12:30:10 +0100
Subject: [PATCH 111/242] Update reference to renamed plugin

---
 interface/lib/classes/remote.d/sites.inc.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/interface/lib/classes/remote.d/sites.inc.php b/interface/lib/classes/remote.d/sites.inc.php
index 59c2e371f3..d90b90bd89 100644
--- a/interface/lib/classes/remote.d/sites.inc.php
+++ b/interface/lib/classes/remote.d/sites.inc.php
@@ -423,7 +423,7 @@ class remoting_sites extends remoting {
 			$params['client_group_id'] = $rec['groupid'];
 		}
 
-		//* Set a few params to "not empty" values which get overwritten by the sites_web_domain_plugin
+		//* Set a few params to "not empty" values which get overwritten by the sites_web_vhost_domain_plugin
 		if($params['document_root'] == '') $params['document_root'] = '-';
 		if($params['system_user'] == '') $params['system_user'] = '-';
 		if($params['system_group'] == '') $params['system_group'] = '-';
-- 
GitLab


From d8826462719152f83a57602b41f7f3b3c47a3d06 Mon Sep 17 00:00:00 2001
From: Herman van Rink <rink@initfour.nl>
Date: Sat, 30 Nov 2019 22:11:38 +0100
Subject: [PATCH 112/242] typo

---
 interface/lib/plugins/mail_user_filter_plugin.inc.php | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/interface/lib/plugins/mail_user_filter_plugin.inc.php b/interface/lib/plugins/mail_user_filter_plugin.inc.php
index 26c0b02b83..ccf58b853c 100644
--- a/interface/lib/plugins/mail_user_filter_plugin.inc.php
+++ b/interface/lib/plugins/mail_user_filter_plugin.inc.php
@@ -80,7 +80,7 @@ class mail_user_filter_plugin {
 			}
 		}
 
-		// We did not found our rule, so we add it now as first rule.
+		// We did not find our rule, so we add it now as first rule.
 		if($found == false && $page_form->dataRecord["active"] == 'y') {
 			$new_rule = $this->mail_user_filter_get_rule($page_form);
 			$out = $new_rule . $out;
@@ -92,7 +92,7 @@ class mail_user_filter_plugin {
 	}
 
 	/*
-	 *	Remove the rendered filter from custom_mailfilter when a mail_user_filter is deleted
+	 *	Remove the rendered filter from custom_mailfilter when a mail_user_filter is deleted.
 	 */
 	function mail_user_filter_del($event_name, $page_form) {
 		global $app, $conf;
-- 
GitLab


From 13da3ecd1d2359a2e884c9507961a505e6b540a7 Mon Sep 17 00:00:00 2001
From: Herman van Rink <rink@initfour.nl>
Date: Tue, 24 Dec 2019 09:43:05 +0100
Subject: [PATCH 113/242] Document _ispconfig_pw_crypted parameter

---
 remoting_client/API-docs/mail_user_add.html    | 1 +
 remoting_client/API-docs/mail_user_update.html | 1 +
 2 files changed, 2 insertions(+)

diff --git a/remoting_client/API-docs/mail_user_add.html b/remoting_client/API-docs/mail_user_add.html
index 88ab952e6a..a893e24e3f 100644
--- a/remoting_client/API-docs/mail_user_add.html
+++ b/remoting_client/API-docs/mail_user_add.html
@@ -25,6 +25,7 @@
 <p class="margin"> email&nbsp;&nbsp;(<span class="paratype">varchar(255)</span>)</p>
 <p class="margin"> login&nbsp;&nbsp;(<span class="paratype">varchar(255)</span>)</p>
 <p class="margin"> password&nbsp;&nbsp;(<span class="paratype">varchar(255)</span>)</p>
+<p class="margin"> _ispconfig_pw_crypted&nbsp;&nbsp;(<span class="paratype">int(11)</span>) Set to 1 to indicate that the password is already crypted.</p>
 <p class="margin"> name&nbsp;&nbsp;(<span class="paratype">varchar(255)</span>)</p>
 <p class="margin"> uid&nbsp;&nbsp;(<span class="paratype">int(11)</span>)</p>
 <p class="margin"> gid&nbsp;&nbsp;(<span class="paratype">int(11)</span>)</p>
diff --git a/remoting_client/API-docs/mail_user_update.html b/remoting_client/API-docs/mail_user_update.html
index 46d23dacf9..1f46858473 100644
--- a/remoting_client/API-docs/mail_user_update.html
+++ b/remoting_client/API-docs/mail_user_update.html
@@ -24,6 +24,7 @@
 <p class="margin"> server_id&nbsp;&nbsp;(<span class="paratype">int(11)</span>)</p>
 <p class="margin"> email&nbsp;&nbsp;(<span class="paratype">varchar(255)</span>)</p>
 <p class="margin"> password&nbsp;&nbsp;(<span class="paratype">varchar(255)</span>)</p>
+<p class="margin"> _ispconfig_pw_crypted&nbsp;&nbsp;(<span class="paratype">int(11)</span>) Set to 1 to indicate that the password is already crypted.</p>
 <p class="margin"> name&nbsp;&nbsp;(<span class="paratype">varchar(255)</span>)</p>
 <p class="margin"> uid&nbsp;&nbsp;(<span class="paratype">int(11)</span>)</p>
 <p class="margin"> gid&nbsp;&nbsp;(<span class="paratype">int(11)</span>)</p>
-- 
GitLab


From 91d3122279481debf00a0c9e95818e24dd9dee79 Mon Sep 17 00:00:00 2001
From: Herman van Rink <rink@initfour.nl>
Date: Tue, 24 Dec 2019 09:44:00 +0100
Subject: [PATCH 114/242] fix syntax error

---
 remoting_client/API-docs/mail_user_update.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/remoting_client/API-docs/mail_user_update.html b/remoting_client/API-docs/mail_user_update.html
index 1f46858473..8cb900fb40 100644
--- a/remoting_client/API-docs/mail_user_update.html
+++ b/remoting_client/API-docs/mail_user_update.html
@@ -12,7 +12,7 @@
 
   </style></head>
 
-<body style="color: rgb(0, 0, 0); alink="#804080" link="#804080" vlink="#603060">
+<body style="color: rgb(0, 0, 0);" alink="#804080" link="#804080" vlink="#603060">
 <div style="padding:40px">
 <h1>mail_user_update(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$primary_id</span>, <span class="var">$params</span>);</h1>
 <br>
-- 
GitLab


From 00260e643ae681ecd74f3169da54eab6c43f8acd Mon Sep 17 00:00:00 2001
From: Herman van Rink <rink@initfour.nl>
Date: Tue, 24 Dec 2019 09:50:54 +0100
Subject: [PATCH 115/242] Add Dutch email template

---
 server/conf/mail/welcome_email_nl.txt | 4 ++++
 1 file changed, 4 insertions(+)
 create mode 100644 server/conf/mail/welcome_email_nl.txt

diff --git a/server/conf/mail/welcome_email_nl.txt b/server/conf/mail/welcome_email_nl.txt
new file mode 100644
index 0000000000..cd4baf4815
--- /dev/null
+++ b/server/conf/mail/welcome_email_nl.txt
@@ -0,0 +1,4 @@
+From: ISPConfig <postmaster@localhost.localdomain>
+Subject: Welkom in uw nieuwe account.
+
+Welkom in uw nieuwe email account. Uw webmaster.
-- 
GitLab


From d8d70b33cf3de5444ea5580e234bf1f511ad50c0 Mon Sep 17 00:00:00 2001
From: Herman van Rink <rink@initfour.nl>
Date: Mon, 30 Dec 2019 12:18:33 +0100
Subject: [PATCH 116/242] Use translated string instead of untranslated string
 unlimited #5476

---
 interface/lib/classes/quota_lib.inc.php      | 12 ++++++------
 interface/web/mail/user_quota_stats.php      |  2 +-
 interface/web/sites/database_quota_stats.php |  2 +-
 interface/web/sites/user_quota_stats.php     | 12 ++++++------
 4 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/interface/lib/classes/quota_lib.inc.php b/interface/lib/classes/quota_lib.inc.php
index 3946b216dd..3bae97f046 100644
--- a/interface/lib/classes/quota_lib.inc.php
+++ b/interface/lib/classes/quota_lib.inc.php
@@ -71,11 +71,11 @@ class quota_lib {
 						$sites[$i]['hard'] .= ' KB';
 					}
 			
-					if($sites[$i]['soft'] == " KB") $sites[$i]['soft'] = $app->lng('unlimited');
-					if($sites[$i]['hard'] == " KB") $sites[$i]['hard'] = $app->lng('unlimited');
+					if($sites[$i]['soft'] == " KB") $sites[$i]['soft'] = $app->lng('unlimited_txt');
+					if($sites[$i]['hard'] == " KB") $sites[$i]['hard'] = $app->lng('unlimited_txt');
 					
-					if($sites[$i]['soft'] == '0 B' || $sites[$i]['soft'] == '0 KB' || $sites[$i]['soft'] == '0') $sites[$i]['soft'] = $app->lng('unlimited');
-					if($sites[$i]['hard'] == '0 B' || $sites[$i]['hard'] == '0 KB' || $sites[$i]['hard'] == '0') $sites[$i]['hard'] = $app->lng('unlimited');
+					if($sites[$i]['soft'] == '0 B' || $sites[$i]['soft'] == '0 KB' || $sites[$i]['soft'] == '0') $sites[$i]['soft'] = $app->lng('unlimited_txt');
+					if($sites[$i]['hard'] == '0 B' || $sites[$i]['hard'] == '0 KB' || $sites[$i]['hard'] == '0') $sites[$i]['hard'] = $app->lng('unlimited_txt');
 					
 					/*
 					 if(!strstr($sites[$i]['used'],'M') && !strstr($sites[$i]['used'],'K')) $sites[$i]['used'].= ' B';
@@ -266,7 +266,7 @@ class quota_lib {
 					if($used_ratio >= 1) $emails[$i]['display_colour'] = '#cc0000';
 			
 					if($emails[$i]['quota'] == 0){
-						$emails[$i]['quota'] = $app->lng('unlimited');
+						$emails[$i]['quota'] = $app->lng('unlimited_txt');
 					} else {
                                                $emails[$i]['quota'] = round($emails[$i]['quota'] / 1048576, 1).' MB';
 					}
@@ -327,7 +327,7 @@ class quota_lib {
 					if($used_ratio >= 1) $databases[$i]['display_colour'] = '#cc0000';
 						
 					if($databases[$i]['database_quota'] == 0){
-						$databases[$i]['database_quota'] = $app->lng('unlimited');
+						$databases[$i]['database_quota'] = $app->lng('unlimited_txt');
 					} else {
 						$databases[$i]['database_quota'] = $databases[$i]['database_quota'] . ' MB';
 					}
diff --git a/interface/web/mail/user_quota_stats.php b/interface/web/mail/user_quota_stats.php
index 90a92558fa..9699acafda 100644
--- a/interface/web/mail/user_quota_stats.php
+++ b/interface/web/mail/user_quota_stats.php
@@ -52,7 +52,7 @@ class list_action extends listform_actions {
 		if (!is_numeric($rec['used'])) $rec['used']=$rec['used'][1];
 
 		if($rec['quota'] == 0){
-			$rec['quota'] = $app->lng('unlimited');
+			$rec['quota'] = $app->lng('unlimited_txt');
 			$rec['percentage'] = '';
 			$rec['percentage_sort'] = 0;
 		} else {
diff --git a/interface/web/sites/database_quota_stats.php b/interface/web/sites/database_quota_stats.php
index 5f550cf8d1..4e960bce27 100644
--- a/interface/web/sites/database_quota_stats.php
+++ b/interface/web/sites/database_quota_stats.php
@@ -72,7 +72,7 @@ class list_action extends listform_actions {
 			$rec['quota'] = $monitor_data[$rec['server_id'].'.'.$database_name]['quota'];
 
 			if($rec['quota'] == 0){
-				$rec['quota'] = $app->lng('unlimited');
+				$rec['quota'] = $app->lng('unlimited_txt');
 				$rec['percentage'] = '';
 			} else {
 				if ($rec['used'] > 0 ) $rec['percentage'] = round(100 * intval($rec['used']) / ( intval($rec['quota'])*1024*1024) ).'%';
diff --git a/interface/web/sites/user_quota_stats.php b/interface/web/sites/user_quota_stats.php
index 9c93008076..8c641eede9 100644
--- a/interface/web/sites/user_quota_stats.php
+++ b/interface/web/sites/user_quota_stats.php
@@ -63,8 +63,8 @@ class list_action extends listform_actions {
 		$rec['used']=$app->functions->formatBytes($rec['used']*1024);
 		$rec['soft']=$app->functions->formatBytes($rec['soft']*1024);
 		$rec['hard']=$app->functions->formatBytes($rec['hard']*1024);
-		if($rec['soft'] == "NAN") $rec['soft'] = $app->lng('unlimited');
-		if($rec['hard'] == "NAN") $rec['hard'] = $app->lng('unlimited');
+		if($rec['soft'] == "NAN") $rec['soft'] = $app->lng('unlimited_txt');
+		if($rec['hard'] == "NAN") $rec['hard'] = $app->lng('unlimited_txt');
 /*
 		if($rec['used'] > 1024) {
 			$rec['used'] = round($rec['used'] / 1024, 2).' MB';
@@ -84,8 +84,8 @@ class list_action extends listform_actions {
 			$rec['hard'] .= ' KB';
 		}
 
-		if($rec['soft'] == " KB") $rec['soft'] = $app->lng('unlimited');
-		if($rec['hard'] == " KB") $rec['hard'] = $app->lng('unlimited');
+		if($rec['soft'] == " KB") $rec['soft'] = $app->lng('unlimited_txt');
+		if($rec['hard'] == " KB") $rec['hard'] = $app->lng('unlimited_txt');
 */
 
 		/*
@@ -94,8 +94,8 @@ class list_action extends listform_actions {
 		if(!strstr($rec['hard'],'M') && !strstr($rec['hard'],'K')) $rec['hard'].= ' B';
 		*/
 /*
-		if($rec['soft'] == '0 B' || $rec['soft'] == '0 KB' || $rec['soft'] == '0') $rec['soft'] = $app->lng('unlimited');
-		if($rec['hard'] == '0 B' || $rec['hard'] == '0 KB' || $rec['hard'] == '0') $rec['hard'] = $app->lng('unlimited');
+		if($rec['soft'] == '0 B' || $rec['soft'] == '0 KB' || $rec['soft'] == '0') $rec['soft'] = $app->lng('unlimited_txt');
+		if($rec['hard'] == '0 B' || $rec['hard'] == '0 KB' || $rec['hard'] == '0') $rec['hard'] = $app->lng('unlimited_txt');
 */
 		//* The variable "id" contains always the index variable
 		$rec['id'] = $rec[$this->idx_key];
-- 
GitLab


From b7dc74dc5344167f8217732e7986d779cad0da4f Mon Sep 17 00:00:00 2001
From: Herman van Rink <rink@initfour.nl>
Date: Tue, 31 Dec 2019 15:46:30 +0100
Subject: [PATCH 117/242] Move unlimited_txt string to global scope #5476

---
 interface/lib/lang/ar.lng                              | 1 +
 interface/lib/lang/bg.lng                              | 1 +
 interface/lib/lang/br.lng                              | 1 +
 interface/lib/lang/ca.lng                              | 1 +
 interface/lib/lang/cz.lng                              | 1 +
 interface/lib/lang/de.lng                              | 1 +
 interface/lib/lang/dk.lng                              | 1 +
 interface/lib/lang/el.lng                              | 1 +
 interface/lib/lang/en.lng                              | 3 ++-
 interface/lib/lang/es.lng                              | 1 +
 interface/lib/lang/fi.lng                              | 1 +
 interface/lib/lang/fr.lng                              | 1 +
 interface/lib/lang/hr.lng                              | 1 +
 interface/lib/lang/hu.lng                              | 1 +
 interface/lib/lang/id.lng                              | 1 +
 interface/lib/lang/it.lng                              | 1 +
 interface/lib/lang/ja.lng                              | 1 +
 interface/lib/lang/nl.lng                              | 1 +
 interface/lib/lang/pl.lng                              | 1 +
 interface/lib/lang/pt.lng                              | 1 +
 interface/lib/lang/ro.lng                              | 1 +
 interface/lib/lang/ru.lng                              | 1 +
 interface/lib/lang/se.lng                              | 1 +
 interface/lib/lang/sk.lng                              | 1 +
 interface/lib/lang/tr.lng                              | 1 +
 interface/web/dashboard/lib/lang/ar_dashlet_limits.lng | 1 -
 interface/web/dashboard/lib/lang/bg_dashlet_limits.lng | 1 -
 interface/web/dashboard/lib/lang/br_dashlet_limits.lng | 1 -
 interface/web/dashboard/lib/lang/ca_dashlet_limits.lng | 1 -
 interface/web/dashboard/lib/lang/cz_dashlet_limits.lng | 1 -
 interface/web/dashboard/lib/lang/de_dashlet_limits.lng | 1 -
 interface/web/dashboard/lib/lang/dk_dashlet_limits.lng | 1 -
 interface/web/dashboard/lib/lang/el_dashlet_limits.lng | 1 -
 interface/web/dashboard/lib/lang/en_dashlet_limits.lng | 1 -
 interface/web/dashboard/lib/lang/es_dashlet_limits.lng | 1 -
 interface/web/dashboard/lib/lang/fi_dashlet_limits.lng | 1 -
 interface/web/dashboard/lib/lang/fr_dashlet_limits.lng | 1 -
 interface/web/dashboard/lib/lang/hr_dashlet_limits.lng | 1 -
 interface/web/dashboard/lib/lang/hu_dashlet_limits.lng | 1 -
 interface/web/dashboard/lib/lang/id_dashlet_limits.lng | 1 -
 interface/web/dashboard/lib/lang/it_dashlet_limits.lng | 1 -
 interface/web/dashboard/lib/lang/ja_dashlet_limits.lng | 1 -
 interface/web/dashboard/lib/lang/nl_dashlet_limits.lng | 1 -
 interface/web/dashboard/lib/lang/pl_dashlet_limits.lng | 1 -
 interface/web/dashboard/lib/lang/pt_dashlet_limits.lng | 1 -
 interface/web/dashboard/lib/lang/ro_dashlet_limits.lng | 1 -
 interface/web/dashboard/lib/lang/ru_dashlet_limits.lng | 1 -
 interface/web/dashboard/lib/lang/se_dashlet_limits.lng | 1 -
 interface/web/dashboard/lib/lang/sk_dashlet_limits.lng | 1 -
 interface/web/dashboard/lib/lang/tr_dashlet_limits.lng | 1 -
 50 files changed, 26 insertions(+), 26 deletions(-)

diff --git a/interface/lib/lang/ar.lng b/interface/lib/lang/ar.lng
index 25dd920831..f8fd2b5a50 100644
--- a/interface/lib/lang/ar.lng
+++ b/interface/lib/lang/ar.lng
@@ -158,4 +158,5 @@ $wb['datalog_status_d_xmpp_domain'] = 'Delete XMPP domain';
 $wb['datalog_status_i_xmpp_user'] = 'Create XMPP user';
 $wb['datalog_status_u_xmpp_user'] = 'Update XMPP user';
 $wb['datalog_status_d_xmpp_user'] = 'Delete XMPP user';
+$wb['unlimited_txt'] = 'Unlimited';
 ?>
diff --git a/interface/lib/lang/bg.lng b/interface/lib/lang/bg.lng
index ff1e39fe34..049807e66d 100644
--- a/interface/lib/lang/bg.lng
+++ b/interface/lib/lang/bg.lng
@@ -158,4 +158,5 @@ $wb['datalog_status_d_xmpp_domain'] = 'Delete XMPP domain';
 $wb['datalog_status_i_xmpp_user'] = 'Create XMPP user';
 $wb['datalog_status_u_xmpp_user'] = 'Update XMPP user';
 $wb['datalog_status_d_xmpp_user'] = 'Delete XMPP user';
+$wb['unlimited_txt'] = 'Неограничен';
 ?>
diff --git a/interface/lib/lang/br.lng b/interface/lib/lang/br.lng
index 60a0dcf910..3bab13ab3a 100644
--- a/interface/lib/lang/br.lng
+++ b/interface/lib/lang/br.lng
@@ -158,4 +158,5 @@ $wb['security_check1_txt'] = 'Verifique as permissões de segurança:';
 $wb['security_check2_txt'] = 'falhou.';
 $wb['select_directive_snippet_txt'] = 'Diretiva de trechos de código';
 $wb['select_master_directive_snippet_txt'] = 'Diretiva mestre de trechos de código';
+$wb['unlimited_txt'] = 'Ilimitado';
 ?>
diff --git a/interface/lib/lang/ca.lng b/interface/lib/lang/ca.lng
index c39cd0db27..6d48482cfc 100644
--- a/interface/lib/lang/ca.lng
+++ b/interface/lib/lang/ca.lng
@@ -158,4 +158,5 @@ $wb['datalog_status_d_xmpp_domain'] = 'Delete XMPP domain';
 $wb['datalog_status_i_xmpp_user'] = 'Create XMPP user';
 $wb['datalog_status_u_xmpp_user'] = 'Update XMPP user';
 $wb['datalog_status_d_xmpp_user'] = 'Delete XMPP user';
+$wb['unlimited_txt'] = 'Illimité';
 ?>
diff --git a/interface/lib/lang/cz.lng b/interface/lib/lang/cz.lng
index eeb0819292..93eeb671e5 100644
--- a/interface/lib/lang/cz.lng
+++ b/interface/lib/lang/cz.lng
@@ -158,4 +158,5 @@ $wb['datalog_status_d_xmpp_domain'] = 'Smazat XMPP doménu';
 $wb['datalog_status_i_xmpp_user'] = 'Vytvořit XMPP uživatele';
 $wb['datalog_status_u_xmpp_user'] = 'Aktualizovat XMPP uživatele';
 $wb['datalog_status_d_xmpp_user'] = 'Smazat XMPP uživatele';
+$wb['unlimited_txt'] = 'neomezeno';
 ?>
diff --git a/interface/lib/lang/de.lng b/interface/lib/lang/de.lng
index 61551ceeab..54091c1417 100644
--- a/interface/lib/lang/de.lng
+++ b/interface/lib/lang/de.lng
@@ -158,4 +158,5 @@ $wb['security_check1_txt'] = 'Sicherheitsüberprüfung für:';
 $wb['security_check2_txt'] = 'fehlgeschlagen.';
 $wb['select_directive_snippet_txt'] = 'Direktiven Schnipsel';
 $wb['select_master_directive_snippet_txt'] = 'Master Direktiven Schnipsel';
+$wb['unlimited_txt'] = 'unlimitiert';
 ?>
diff --git a/interface/lib/lang/dk.lng b/interface/lib/lang/dk.lng
index 798d2ccd45..cbb9fc5efd 100644
--- a/interface/lib/lang/dk.lng
+++ b/interface/lib/lang/dk.lng
@@ -158,4 +158,5 @@ $wb['datalog_status_d_xmpp_domain'] = 'Delete XMPP domain';
 $wb['datalog_status_i_xmpp_user'] = 'Create XMPP user';
 $wb['datalog_status_u_xmpp_user'] = 'Update XMPP user';
 $wb['datalog_status_d_xmpp_user'] = 'Delete XMPP user';
+$wb['unlimited_txt'] = 'Ubegrænset';
 ?>
diff --git a/interface/lib/lang/el.lng b/interface/lib/lang/el.lng
index 382bf4a758..3e6c60c90f 100644
--- a/interface/lib/lang/el.lng
+++ b/interface/lib/lang/el.lng
@@ -158,4 +158,5 @@ $wb['datalog_status_d_xmpp_domain'] = 'Delete XMPP domain';
 $wb['datalog_status_i_xmpp_user'] = 'Create XMPP user';
 $wb['datalog_status_u_xmpp_user'] = 'Update XMPP user';
 $wb['datalog_status_d_xmpp_user'] = 'Delete XMPP user';
+$wb['unlimited_txt'] = 'Απεριόριστα';
 ?>
diff --git a/interface/lib/lang/en.lng b/interface/lib/lang/en.lng
index 66f4ee3811..b5b2ebcdae 100644
--- a/interface/lib/lang/en.lng
+++ b/interface/lib/lang/en.lng
@@ -159,4 +159,5 @@ $wb['security_check1_txt'] = 'Check for security permission:';
 $wb['security_check2_txt'] = 'failed.';
 $wb['select_directive_snippet_txt'] = 'Directive Snippets';
 $wb['select_master_directive_snippet_txt'] = 'Master Directive Snippets';
-?>
\ No newline at end of file
+$wb['unlimited_txt'] = "Unlimited";
+?>
diff --git a/interface/lib/lang/es.lng b/interface/lib/lang/es.lng
index 3b1bae0b46..b78499f800 100644
--- a/interface/lib/lang/es.lng
+++ b/interface/lib/lang/es.lng
@@ -158,4 +158,5 @@ $wb['datalog_status_d_xmpp_domain'] = 'Delete XMPP domain';
 $wb['datalog_status_i_xmpp_user'] = 'Create XMPP user';
 $wb['datalog_status_u_xmpp_user'] = 'Update XMPP user';
 $wb['datalog_status_d_xmpp_user'] = 'Delete XMPP user';
+$wb['unlimited_txt'] = 'Ilimitado';
 ?>
diff --git a/interface/lib/lang/fi.lng b/interface/lib/lang/fi.lng
index d4c23ca777..27749510bb 100755
--- a/interface/lib/lang/fi.lng
+++ b/interface/lib/lang/fi.lng
@@ -158,4 +158,5 @@ $wb['datalog_status_d_xmpp_domain'] = 'Delete XMPP domain';
 $wb['datalog_status_i_xmpp_user'] = 'Create XMPP user';
 $wb['datalog_status_u_xmpp_user'] = 'Update XMPP user';
 $wb['datalog_status_d_xmpp_user'] = 'Delete XMPP user';
+$wb['unlimited_txt'] = 'Unlimited';
 ?>
diff --git a/interface/lib/lang/fr.lng b/interface/lib/lang/fr.lng
index 3e9bfa8daa..c302b32faa 100644
--- a/interface/lib/lang/fr.lng
+++ b/interface/lib/lang/fr.lng
@@ -158,4 +158,5 @@ $wb['datalog_status_d_xmpp_domain'] = 'Delete XMPP domain';
 $wb['datalog_status_i_xmpp_user'] = 'Create XMPP user';
 $wb['datalog_status_u_xmpp_user'] = 'Update XMPP user';
 $wb['datalog_status_d_xmpp_user'] = 'Delete XMPP user';
+$wb['unlimited_txt'] = 'Illimité';
 ?>
diff --git a/interface/lib/lang/hr.lng b/interface/lib/lang/hr.lng
index 310371be47..3be5dc7e16 100644
--- a/interface/lib/lang/hr.lng
+++ b/interface/lib/lang/hr.lng
@@ -158,4 +158,5 @@ $wb['datalog_status_d_xmpp_domain'] = 'Delete XMPP domain';
 $wb['datalog_status_i_xmpp_user'] = 'Create XMPP user';
 $wb['datalog_status_u_xmpp_user'] = 'Update XMPP user';
 $wb['datalog_status_d_xmpp_user'] = 'Delete XMPP user';
+$wb['unlimited_txt'] = 'neograničeno';
 ?>
diff --git a/interface/lib/lang/hu.lng b/interface/lib/lang/hu.lng
index dd4cce79b3..3fc91bd600 100644
--- a/interface/lib/lang/hu.lng
+++ b/interface/lib/lang/hu.lng
@@ -158,4 +158,5 @@ $wb['datalog_status_d_xmpp_domain'] = 'Delete XMPP domain';
 $wb['datalog_status_i_xmpp_user'] = 'Create XMPP user';
 $wb['datalog_status_u_xmpp_user'] = 'Update XMPP user';
 $wb['datalog_status_d_xmpp_user'] = 'Delete XMPP user';
+$wb['unlimited_txt'] = 'Korlátlan';
 ?>
diff --git a/interface/lib/lang/id.lng b/interface/lib/lang/id.lng
index bd90fd5a1b..13fbff1a08 100644
--- a/interface/lib/lang/id.lng
+++ b/interface/lib/lang/id.lng
@@ -158,4 +158,5 @@ $wb['datalog_status_d_xmpp_domain'] = 'Delete XMPP domain';
 $wb['datalog_status_i_xmpp_user'] = 'Create XMPP user';
 $wb['datalog_status_u_xmpp_user'] = 'Update XMPP user';
 $wb['datalog_status_d_xmpp_user'] = 'Delete XMPP user';
+$wb['unlimited_txt'] = 'Tak terbatas';
 ?>
diff --git a/interface/lib/lang/it.lng b/interface/lib/lang/it.lng
index 33d16c3d5f..4a85a58e09 100644
--- a/interface/lib/lang/it.lng
+++ b/interface/lib/lang/it.lng
@@ -158,4 +158,5 @@ $wb['datalog_status_d_xmpp_domain'] = 'Delete XMPP domain';
 $wb['datalog_status_i_xmpp_user'] = 'Create XMPP user';
 $wb['datalog_status_u_xmpp_user'] = 'Update XMPP user';
 $wb['datalog_status_d_xmpp_user'] = 'Delete XMPP user';
+$wb['unlimited_txt'] = 'illimitati';
 ?>
diff --git a/interface/lib/lang/ja.lng b/interface/lib/lang/ja.lng
index 2a56e77399..bb1290173c 100644
--- a/interface/lib/lang/ja.lng
+++ b/interface/lib/lang/ja.lng
@@ -158,4 +158,5 @@ $wb['datalog_status_d_xmpp_domain'] = 'Delete XMPP domain';
 $wb['datalog_status_i_xmpp_user'] = 'Create XMPP user';
 $wb['datalog_status_u_xmpp_user'] = 'Update XMPP user';
 $wb['datalog_status_d_xmpp_user'] = 'Delete XMPP user';
+$wb['unlimited_txt'] = 'Unlimited';
 ?>
diff --git a/interface/lib/lang/nl.lng b/interface/lib/lang/nl.lng
index 888f9c0200..a733142d49 100644
--- a/interface/lib/lang/nl.lng
+++ b/interface/lib/lang/nl.lng
@@ -158,4 +158,5 @@ $wb['datalog_status_d_xmpp_domain'] = 'Delete XMPP domain';
 $wb['datalog_status_i_xmpp_user'] = 'Create XMPP user';
 $wb['datalog_status_u_xmpp_user'] = 'Update XMPP user';
 $wb['datalog_status_d_xmpp_user'] = 'Delete XMPP user';
+$wb['unlimited_txt'] = 'Ongelimiteerd';
 ?>
diff --git a/interface/lib/lang/pl.lng b/interface/lib/lang/pl.lng
index b5b62c816d..ffbac09ef4 100644
--- a/interface/lib/lang/pl.lng
+++ b/interface/lib/lang/pl.lng
@@ -158,4 +158,5 @@ $wb['datalog_status_d_xmpp_domain'] = 'Delete XMPP domain';
 $wb['datalog_status_i_xmpp_user'] = 'Create XMPP user';
 $wb['datalog_status_u_xmpp_user'] = 'Update XMPP user';
 $wb['datalog_status_d_xmpp_user'] = 'Delete XMPP user';
+$wb['unlimited_txt'] = 'nielimitowane';
 ?>
diff --git a/interface/lib/lang/pt.lng b/interface/lib/lang/pt.lng
index 7845520a5b..195da8e619 100644
--- a/interface/lib/lang/pt.lng
+++ b/interface/lib/lang/pt.lng
@@ -158,4 +158,5 @@ $wb['datalog_status_d_xmpp_domain'] = 'Delete XMPP domain';
 $wb['datalog_status_i_xmpp_user'] = 'Create XMPP user';
 $wb['datalog_status_u_xmpp_user'] = 'Update XMPP user';
 $wb['datalog_status_d_xmpp_user'] = 'Delete XMPP user';
+$wb['unlimited_txt'] = 'Unlimited';
 ?>
diff --git a/interface/lib/lang/ro.lng b/interface/lib/lang/ro.lng
index 613f2377a1..1365a54172 100644
--- a/interface/lib/lang/ro.lng
+++ b/interface/lib/lang/ro.lng
@@ -158,4 +158,5 @@ $wb['datalog_status_d_xmpp_domain'] = 'Delete XMPP domain';
 $wb['datalog_status_i_xmpp_user'] = 'Create XMPP user';
 $wb['datalog_status_u_xmpp_user'] = 'Update XMPP user';
 $wb['datalog_status_d_xmpp_user'] = 'Delete XMPP user';
+$wb['unlimited_txt'] = 'Unlimited';
 ?>
diff --git a/interface/lib/lang/ru.lng b/interface/lib/lang/ru.lng
index e5e8ce6278..19cdcf8a04 100644
--- a/interface/lib/lang/ru.lng
+++ b/interface/lib/lang/ru.lng
@@ -158,4 +158,5 @@ $wb['datalog_status_d_xmpp_domain'] = 'Удалить  домен XMPP';
 $wb['datalog_status_i_xmpp_user'] = 'Создать пользователя XMPP';
 $wb['datalog_status_u_xmpp_user'] = 'Обновить пользователя XMPP';
 $wb['datalog_status_d_xmpp_user'] = 'Удалить пользователя XMPP';
+$wb['unlimited_txt'] = 'Безлимитный';
 ?>
diff --git a/interface/lib/lang/se.lng b/interface/lib/lang/se.lng
index b6767144df..2d3146f033 100644
--- a/interface/lib/lang/se.lng
+++ b/interface/lib/lang/se.lng
@@ -158,4 +158,5 @@ $wb['datalog_status_d_xmpp_domain'] = 'Delete XMPP domain';
 $wb['datalog_status_i_xmpp_user'] = 'Create XMPP user';
 $wb['datalog_status_u_xmpp_user'] = 'Update XMPP user';
 $wb['datalog_status_d_xmpp_user'] = 'Delete XMPP user';
+$wb['unlimited_txt'] = 'Obegränsat';
 ?>
diff --git a/interface/lib/lang/sk.lng b/interface/lib/lang/sk.lng
index 6b4ef7676f..ece15b3a22 100644
--- a/interface/lib/lang/sk.lng
+++ b/interface/lib/lang/sk.lng
@@ -158,4 +158,5 @@ $wb['datalog_status_d_xmpp_domain'] = 'Delete XMPP domain';
 $wb['datalog_status_i_xmpp_user'] = 'Create XMPP user';
 $wb['datalog_status_u_xmpp_user'] = 'Update XMPP user';
 $wb['datalog_status_d_xmpp_user'] = 'Delete XMPP user';
+$wb['unlimited_txt'] = 'Unlimited';
 ?>
diff --git a/interface/lib/lang/tr.lng b/interface/lib/lang/tr.lng
index cf4491ad5d..31e5f2fbef 100644
--- a/interface/lib/lang/tr.lng
+++ b/interface/lib/lang/tr.lng
@@ -159,4 +159,5 @@ $wb['security_check1_txt'] = 'Güvenlik iznini denetle:';
 $wb['security_check2_txt'] = 'başarısız.';
 $wb['select_directive_snippet_txt'] = 'Yönerge Kod Parçaları';
 $wb['select_master_directive_snippet_txt'] = 'Ana Komut Parçaları';
+$wb['unlimited_txt'] = 'Sınırsız';
 ?>
diff --git a/interface/web/dashboard/lib/lang/ar_dashlet_limits.lng b/interface/web/dashboard/lib/lang/ar_dashlet_limits.lng
index 6ec82aad5b..b15261dfc4 100644
--- a/interface/web/dashboard/lib/lang/ar_dashlet_limits.lng
+++ b/interface/web/dashboard/lib/lang/ar_dashlet_limits.lng
@@ -1,7 +1,6 @@
 <?php
 $wb['limits_txt'] = 'Account limits';
 $wb['of_txt'] = 'of';
-$wb['unlimited_txt'] = 'Unlimited';
 $wb['limit_maildomain_txt'] = 'Number of email domains';
 $wb['limit_mailbox_txt'] = 'Number of mailboxes';
 $wb['limit_mailalias_txt'] = 'Number of email aliases';
diff --git a/interface/web/dashboard/lib/lang/bg_dashlet_limits.lng b/interface/web/dashboard/lib/lang/bg_dashlet_limits.lng
index dad751aaf0..961e6825df 100644
--- a/interface/web/dashboard/lib/lang/bg_dashlet_limits.lng
+++ b/interface/web/dashboard/lib/lang/bg_dashlet_limits.lng
@@ -1,7 +1,6 @@
 <?php
 $wb['limits_txt'] = 'Акаунт ограничения';
 $wb['of_txt'] = 'на';
-$wb['unlimited_txt'] = 'Неограничен';
 $wb['limit_maildomain_txt'] = 'Брой на email домейни';
 $wb['limit_mailbox_txt'] = 'Брой на пощенските кутии';
 $wb['limit_mailalias_txt'] = 'Брой на email псевдоними';
diff --git a/interface/web/dashboard/lib/lang/br_dashlet_limits.lng b/interface/web/dashboard/lib/lang/br_dashlet_limits.lng
index 72558f5797..739c7e4445 100644
--- a/interface/web/dashboard/lib/lang/br_dashlet_limits.lng
+++ b/interface/web/dashboard/lib/lang/br_dashlet_limits.lng
@@ -1,7 +1,6 @@
 <?php
 $wb['limits_txt'] = 'Limites de contas';
 $wb['of_txt'] = 'de';
-$wb['unlimited_txt'] = 'Ilimitado';
 $wb['limit_maildomain_txt'] = 'Número de domínios de e-mail';
 $wb['limit_mailmailinglist_txt'] = 'Número de listas de e-mail';
 $wb['limit_mailbox_txt'] = 'Número de contas de e-mail';
diff --git a/interface/web/dashboard/lib/lang/ca_dashlet_limits.lng b/interface/web/dashboard/lib/lang/ca_dashlet_limits.lng
index f482b47e38..ae78112c85 100644
--- a/interface/web/dashboard/lib/lang/ca_dashlet_limits.lng
+++ b/interface/web/dashboard/lib/lang/ca_dashlet_limits.lng
@@ -1,7 +1,6 @@
 <?php
 $wb['limits_txt'] = 'Limites du compte';
 $wb['of_txt'] = 'sur';
-$wb['unlimited_txt'] = 'Illimité';
 $wb['limit_maildomain_txt'] = 'Nombre de domaines courriel';
 $wb['limit_mailmailinglist_txt'] = 'Nombre de mailing lists';
 $wb['limit_mailbox_txt'] = 'Nombre de boites courriel';
diff --git a/interface/web/dashboard/lib/lang/cz_dashlet_limits.lng b/interface/web/dashboard/lib/lang/cz_dashlet_limits.lng
index a7aecc4a53..d93dd87761 100644
--- a/interface/web/dashboard/lib/lang/cz_dashlet_limits.lng
+++ b/interface/web/dashboard/lib/lang/cz_dashlet_limits.lng
@@ -1,7 +1,6 @@
 <?php
 $wb['limits_txt'] = 'Limity účtů';
 $wb['of_txt'] = 'z';
-$wb['unlimited_txt'] = 'neomezeno';
 $wb['limit_maildomain_txt'] = 'Počet e-mailových domén';
 $wb['limit_mailbox_txt'] = 'Počet e-mailových schránek';
 $wb['limit_mailalias_txt'] = 'Počet e-mailových přezdívek';
diff --git a/interface/web/dashboard/lib/lang/de_dashlet_limits.lng b/interface/web/dashboard/lib/lang/de_dashlet_limits.lng
index 335c17ca85..22e87237d5 100644
--- a/interface/web/dashboard/lib/lang/de_dashlet_limits.lng
+++ b/interface/web/dashboard/lib/lang/de_dashlet_limits.lng
@@ -1,7 +1,6 @@
 <?php
 $wb['limits_txt'] = 'Kontobeschränkungen';
 $wb['of_txt'] = 'von';
-$wb['unlimited_txt'] = 'unlimitiert';
 $wb['limit_maildomain_txt'] = 'Anzahl der E-Mail Domains';
 $wb['limit_mailbox_txt'] = 'Anzahl der E-Mail Konten';
 $wb['limit_mailalias_txt'] = 'Anzahl der E-Mail Aliase';
diff --git a/interface/web/dashboard/lib/lang/dk_dashlet_limits.lng b/interface/web/dashboard/lib/lang/dk_dashlet_limits.lng
index eb128750b2..402aa722f5 100644
--- a/interface/web/dashboard/lib/lang/dk_dashlet_limits.lng
+++ b/interface/web/dashboard/lib/lang/dk_dashlet_limits.lng
@@ -1,7 +1,6 @@
 <?php
 $wb['limits_txt'] = 'Konto begrænsninger';
 $wb['of_txt'] = 'af';
-$wb['unlimited_txt'] = 'Ubegrænset';
 $wb['limit_maildomain_txt'] = 'Antal af e-mail domæner';
 $wb['limit_mailmailinglist_txt'] = 'Antal af mail-lister';
 $wb['limit_mailbox_txt'] = 'Antal af mail-bokse';
diff --git a/interface/web/dashboard/lib/lang/el_dashlet_limits.lng b/interface/web/dashboard/lib/lang/el_dashlet_limits.lng
index dac3b55623..f51c1da1b5 100644
--- a/interface/web/dashboard/lib/lang/el_dashlet_limits.lng
+++ b/interface/web/dashboard/lib/lang/el_dashlet_limits.lng
@@ -1,7 +1,6 @@
 <?php
 $wb['limits_txt'] = 'Όρια Λογαριασμών';
 $wb['of_txt'] = 'από';
-$wb['unlimited_txt'] = 'Απεριόριστα';
 $wb['limit_maildomain_txt'] = 'Αριθμός email domains';
 $wb['limit_mailbox_txt'] = 'Αριθμός θυρίδων';
 $wb['limit_mailalias_txt'] = 'Αριθμός ψευδωνύμων email';
diff --git a/interface/web/dashboard/lib/lang/en_dashlet_limits.lng b/interface/web/dashboard/lib/lang/en_dashlet_limits.lng
index 5d504c8e9b..d30977799f 100644
--- a/interface/web/dashboard/lib/lang/en_dashlet_limits.lng
+++ b/interface/web/dashboard/lib/lang/en_dashlet_limits.lng
@@ -1,7 +1,6 @@
 <?php
 $wb['limits_txt'] = "Account limits";
 $wb['of_txt'] = "of";
-$wb['unlimited_txt'] = "Unlimited";
 $wb['limit_maildomain_txt'] = "Number of email domains";
 $wb['limit_mailmailinglist_txt'] = "Number of mailing lists";
 $wb['limit_mailbox_txt'] = "Number of mailboxes";
diff --git a/interface/web/dashboard/lib/lang/es_dashlet_limits.lng b/interface/web/dashboard/lib/lang/es_dashlet_limits.lng
index da6cd6b513..d56d17c661 100755
--- a/interface/web/dashboard/lib/lang/es_dashlet_limits.lng
+++ b/interface/web/dashboard/lib/lang/es_dashlet_limits.lng
@@ -27,7 +27,6 @@ $wb['limit_web_subdomain_txt'] = 'Cantidad de sub-dominios';
 $wb['limit_webdav_user_txt'] = 'Cantidad de usuarios Webdav';
 $wb['limits_txt'] = 'Límites de la cuenta';
 $wb['of_txt'] = 'de';
-$wb['unlimited_txt'] = 'Ilimitado';
 $wb['limit_mailquota_txt'] = 'Assigned mailbox quota';
 $wb['limit_web_quota_txt'] = 'Assigned web quota';
 $wb['limit_database_quota_txt'] = 'Assigned database quota';
diff --git a/interface/web/dashboard/lib/lang/fi_dashlet_limits.lng b/interface/web/dashboard/lib/lang/fi_dashlet_limits.lng
index 6ec82aad5b..b15261dfc4 100644
--- a/interface/web/dashboard/lib/lang/fi_dashlet_limits.lng
+++ b/interface/web/dashboard/lib/lang/fi_dashlet_limits.lng
@@ -1,7 +1,6 @@
 <?php
 $wb['limits_txt'] = 'Account limits';
 $wb['of_txt'] = 'of';
-$wb['unlimited_txt'] = 'Unlimited';
 $wb['limit_maildomain_txt'] = 'Number of email domains';
 $wb['limit_mailbox_txt'] = 'Number of mailboxes';
 $wb['limit_mailalias_txt'] = 'Number of email aliases';
diff --git a/interface/web/dashboard/lib/lang/fr_dashlet_limits.lng b/interface/web/dashboard/lib/lang/fr_dashlet_limits.lng
index 525249f6d4..fa5043ab85 100644
--- a/interface/web/dashboard/lib/lang/fr_dashlet_limits.lng
+++ b/interface/web/dashboard/lib/lang/fr_dashlet_limits.lng
@@ -1,7 +1,6 @@
 <?php
 $wb['limits_txt'] = 'Limites du compte';
 $wb['of_txt'] = 'sur';
-$wb['unlimited_txt'] = 'Illimité';
 $wb['limit_maildomain_txt'] = 'Nombre de domaines e-mail';
 $wb['limit_mailmailinglist_txt'] = 'Nombre de liste de distribution';
 $wb['limit_mailbox_txt'] = 'Nombre de boîtes aux lettres';
diff --git a/interface/web/dashboard/lib/lang/hr_dashlet_limits.lng b/interface/web/dashboard/lib/lang/hr_dashlet_limits.lng
index 1a3db42a24..2aa1792f91 100644
--- a/interface/web/dashboard/lib/lang/hr_dashlet_limits.lng
+++ b/interface/web/dashboard/lib/lang/hr_dashlet_limits.lng
@@ -1,7 +1,6 @@
 <?php
 $wb['limits_txt'] = 'Ograničenja';
 $wb['of_txt'] = 'od';
-$wb['unlimited_txt'] = 'neograničeno';
 $wb['limit_maildomain_txt'] = 'Mail domene';
 $wb['limit_mailbox_txt'] = 'Mailboxi';
 $wb['limit_mailalias_txt'] = 'Mail aliasi';
diff --git a/interface/web/dashboard/lib/lang/hu_dashlet_limits.lng b/interface/web/dashboard/lib/lang/hu_dashlet_limits.lng
index 13c5a4e450..76498eed86 100644
--- a/interface/web/dashboard/lib/lang/hu_dashlet_limits.lng
+++ b/interface/web/dashboard/lib/lang/hu_dashlet_limits.lng
@@ -1,7 +1,6 @@
 <?php
 $wb['limits_txt'] = 'Account limits';
 $wb['of_txt'] = '-';
-$wb['unlimited_txt'] = 'Korlátlan';
 $wb['limit_maildomain_txt'] = 'Email domainek száma';
 $wb['limit_mailbox_txt'] = 'Mailbox-ok száma';
 $wb['limit_mailalias_txt'] = 'Email aliasok száma';
diff --git a/interface/web/dashboard/lib/lang/id_dashlet_limits.lng b/interface/web/dashboard/lib/lang/id_dashlet_limits.lng
index 8079b742b7..94a64e226f 100644
--- a/interface/web/dashboard/lib/lang/id_dashlet_limits.lng
+++ b/interface/web/dashboard/lib/lang/id_dashlet_limits.lng
@@ -1,7 +1,6 @@
 <?php
 $wb['limits_txt'] = 'Batasan Akun';
 $wb['of_txt'] = 'dari';
-$wb['unlimited_txt'] = 'Tak terbatas';
 $wb['limit_maildomain_txt'] = 'Jumlah domain email';
 $wb['limit_mailbox_txt'] = 'Jumlah mailbox';
 $wb['limit_mailalias_txt'] = 'Jumlah alias email';
diff --git a/interface/web/dashboard/lib/lang/it_dashlet_limits.lng b/interface/web/dashboard/lib/lang/it_dashlet_limits.lng
index a1a2000edf..dd83e1ad58 100644
--- a/interface/web/dashboard/lib/lang/it_dashlet_limits.lng
+++ b/interface/web/dashboard/lib/lang/it_dashlet_limits.lng
@@ -1,7 +1,6 @@
 <?php
 $wb['limits_txt'] = 'Sintesi account';
 $wb['of_txt'] = 'su';
-$wb['unlimited_txt'] = 'illimitati';
 $wb['limit_maildomain_txt'] = 'Domini email';
 $wb['limit_mailbox_txt'] = 'Caselle email';
 $wb['limit_mailalias_txt'] = 'Alias di email';
diff --git a/interface/web/dashboard/lib/lang/ja_dashlet_limits.lng b/interface/web/dashboard/lib/lang/ja_dashlet_limits.lng
index 6ec82aad5b..b15261dfc4 100644
--- a/interface/web/dashboard/lib/lang/ja_dashlet_limits.lng
+++ b/interface/web/dashboard/lib/lang/ja_dashlet_limits.lng
@@ -1,7 +1,6 @@
 <?php
 $wb['limits_txt'] = 'Account limits';
 $wb['of_txt'] = 'of';
-$wb['unlimited_txt'] = 'Unlimited';
 $wb['limit_maildomain_txt'] = 'Number of email domains';
 $wb['limit_mailbox_txt'] = 'Number of mailboxes';
 $wb['limit_mailalias_txt'] = 'Number of email aliases';
diff --git a/interface/web/dashboard/lib/lang/nl_dashlet_limits.lng b/interface/web/dashboard/lib/lang/nl_dashlet_limits.lng
index 10d1e82837..35a2b9e0be 100644
--- a/interface/web/dashboard/lib/lang/nl_dashlet_limits.lng
+++ b/interface/web/dashboard/lib/lang/nl_dashlet_limits.lng
@@ -1,7 +1,6 @@
 <?php
 $wb['limits_txt'] = 'Account limieten';
 $wb['of_txt'] = 'van';
-$wb['unlimited_txt'] = 'Ongelimiteerd';
 $wb['limit_maildomain_txt'] = 'Aantal email domeinen';
 $wb['limit_mailbox_txt'] = 'Aantal mailboxes';
 $wb['limit_mailalias_txt'] = 'Aantal e-mail aliassen';
diff --git a/interface/web/dashboard/lib/lang/pl_dashlet_limits.lng b/interface/web/dashboard/lib/lang/pl_dashlet_limits.lng
index 4d5b971469..5513b32551 100644
--- a/interface/web/dashboard/lib/lang/pl_dashlet_limits.lng
+++ b/interface/web/dashboard/lib/lang/pl_dashlet_limits.lng
@@ -1,7 +1,6 @@
 <?php
 $wb['limits_txt'] = 'Limity konta';
 $wb['of_txt'] = 'z';
-$wb['unlimited_txt'] = 'nielimitowane';
 $wb['limit_maildomain_txt'] = 'Liczba domen e-mail';
 $wb['limit_mailbox_txt'] = 'Liczba skrzynek pocztowych';
 $wb['limit_mailalias_txt'] = 'Liczba aliasów e-mail';
diff --git a/interface/web/dashboard/lib/lang/pt_dashlet_limits.lng b/interface/web/dashboard/lib/lang/pt_dashlet_limits.lng
index 6ec82aad5b..b15261dfc4 100644
--- a/interface/web/dashboard/lib/lang/pt_dashlet_limits.lng
+++ b/interface/web/dashboard/lib/lang/pt_dashlet_limits.lng
@@ -1,7 +1,6 @@
 <?php
 $wb['limits_txt'] = 'Account limits';
 $wb['of_txt'] = 'of';
-$wb['unlimited_txt'] = 'Unlimited';
 $wb['limit_maildomain_txt'] = 'Number of email domains';
 $wb['limit_mailbox_txt'] = 'Number of mailboxes';
 $wb['limit_mailalias_txt'] = 'Number of email aliases';
diff --git a/interface/web/dashboard/lib/lang/ro_dashlet_limits.lng b/interface/web/dashboard/lib/lang/ro_dashlet_limits.lng
index 6ec82aad5b..b15261dfc4 100644
--- a/interface/web/dashboard/lib/lang/ro_dashlet_limits.lng
+++ b/interface/web/dashboard/lib/lang/ro_dashlet_limits.lng
@@ -1,7 +1,6 @@
 <?php
 $wb['limits_txt'] = 'Account limits';
 $wb['of_txt'] = 'of';
-$wb['unlimited_txt'] = 'Unlimited';
 $wb['limit_maildomain_txt'] = 'Number of email domains';
 $wb['limit_mailbox_txt'] = 'Number of mailboxes';
 $wb['limit_mailalias_txt'] = 'Number of email aliases';
diff --git a/interface/web/dashboard/lib/lang/ru_dashlet_limits.lng b/interface/web/dashboard/lib/lang/ru_dashlet_limits.lng
index 19295b65e3..9e77f43d8d 100644
--- a/interface/web/dashboard/lib/lang/ru_dashlet_limits.lng
+++ b/interface/web/dashboard/lib/lang/ru_dashlet_limits.lng
@@ -1,7 +1,6 @@
 <?php
 $wb['limits_txt'] = 'Лимиты учётной записи';
 $wb['of_txt'] = 'из';
-$wb['unlimited_txt'] = 'Безлимитный';
 $wb['limit_maildomain_txt'] = 'Количество почтовых аккаунтов';
 $wb['limit_mailbox_txt'] = 'Количество почтовых ящиков';
 $wb['limit_mailalias_txt'] = 'Количество алиасов почты';
diff --git a/interface/web/dashboard/lib/lang/se_dashlet_limits.lng b/interface/web/dashboard/lib/lang/se_dashlet_limits.lng
index d1f38b1b0d..f02f83bffd 100644
--- a/interface/web/dashboard/lib/lang/se_dashlet_limits.lng
+++ b/interface/web/dashboard/lib/lang/se_dashlet_limits.lng
@@ -1,7 +1,6 @@
 <?php
 $wb['limits_txt'] = 'Kontogränser';
 $wb['of_txt'] = 'av';
-$wb['unlimited_txt'] = 'Obegränsat';
 $wb['limit_maildomain_txt'] = 'Antal epostdomäner';
 $wb['limit_mailbox_txt'] = 'Antal epostkonton';
 $wb['limit_mailalias_txt'] = 'Antal epostalias';
diff --git a/interface/web/dashboard/lib/lang/sk_dashlet_limits.lng b/interface/web/dashboard/lib/lang/sk_dashlet_limits.lng
index 6ec82aad5b..b15261dfc4 100644
--- a/interface/web/dashboard/lib/lang/sk_dashlet_limits.lng
+++ b/interface/web/dashboard/lib/lang/sk_dashlet_limits.lng
@@ -1,7 +1,6 @@
 <?php
 $wb['limits_txt'] = 'Account limits';
 $wb['of_txt'] = 'of';
-$wb['unlimited_txt'] = 'Unlimited';
 $wb['limit_maildomain_txt'] = 'Number of email domains';
 $wb['limit_mailbox_txt'] = 'Number of mailboxes';
 $wb['limit_mailalias_txt'] = 'Number of email aliases';
diff --git a/interface/web/dashboard/lib/lang/tr_dashlet_limits.lng b/interface/web/dashboard/lib/lang/tr_dashlet_limits.lng
index 9fa1fb5b90..6a4a6a0d24 100644
--- a/interface/web/dashboard/lib/lang/tr_dashlet_limits.lng
+++ b/interface/web/dashboard/lib/lang/tr_dashlet_limits.lng
@@ -1,7 +1,6 @@
 <?php
 $wb['limits_txt'] = 'Hesap Sınırları';
 $wb['of_txt'] = '/';
-$wb['unlimited_txt'] = 'Sınırsız';
 $wb['limit_maildomain_txt'] = 'E-posta Etki Alanı Sayısı';
 $wb['limit_mailmailinglist_txt'] = 'E-posta Listesi Sayısı';
 $wb['limit_mailbox_txt'] = 'E-posta Kutusu Sayısı';
-- 
GitLab


From a6c847e030c316b988b06c3d9d05ad0c449f2924 Mon Sep 17 00:00:00 2001
From: Florian Schaal <info@schaal-24.de>
Date: Fri, 3 Jan 2020 14:40:30 +0100
Subject: [PATCH 118/242] add ipv6-addresses for ispconfig slave-users on the
 master-server (#5493)

---
 install/lib/installer_base.lib.php | 180 +++++++++++++++++------------
 1 file changed, 104 insertions(+), 76 deletions(-)

diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php
index 513858ca68..0cf2ee23e7 100644
--- a/install/lib/installer_base.lib.php
+++ b/install/lib/installer_base.lib.php
@@ -409,80 +409,92 @@ class installer_base {
 
 
 	}
-	
+
+	public function get_host_ips() {
+		$out = array();
+		exec('hostname --all-ip-addresses', $ret, $val);
+		if($val == 0) {
+			if(is_array($ret) && !empty($ret)){
+				$temp = (explode(' ', $ret[0]));
+				foreach($temp as $ip) {
+					$out[] = $ip;
+				}
+			}
+		}
+
+		return $out;
+	}
+
 	public function detect_ips(){
 		global $conf;
+			
+		$output = $this->get_host_ips();
 
-		exec("ip addr show | awk '/global/ { print $2 }' | cut -d '/' -f 1", $output, $retval);
-		
-		if($retval == 0){
-			if(is_array($output) && !empty($output)){
-				foreach($output as $line){
-					$line = trim($line);
-					$ip_type = '';
-					if (filter_var($line, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
-						$ip_type = 'IPv4';
-					}
-					if (filter_var($line, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
-						$ip_type = 'IPv6';
-					}
-					if($ip_type == '') continue;
-					if($this->db->dbHost != $this->dbmaster->dbHost){
-						$this->dbmaster->query('INSERT INTO server_ip (
-							sys_userid, sys_groupid, sys_perm_user, sys_perm_group,
-							sys_perm_other, server_id, client_id, ip_type, ip_address,
-							virtualhost, virtualhost_port
-						) VALUES (
-							1,
-							1,
-							"riud",
-							"riud",
-							"",
-							?,
-							0,
-							?,
-							?,
-							"y",
-							"80,443"
-						)', $conf['server_id'], $ip_type, $line);
-						$server_ip_id = $this->dbmaster->insertID();
-						$this->db->query('INSERT INTO server_ip (
-							server_php_id, sys_userid, sys_groupid, sys_perm_user, sys_perm_group,
-							sys_perm_other, server_id, client_id, ip_type, ip_address,
-							virtualhost, virtualhost_port
-						) VALUES (
-							?,
-							1,
-							1,
-							"riud",
-							"riud",
-							"",
-							?,
-							0,
-							?,
-							?,
-							"y",
-							"80,443"
-						)', $server_ip_id, $conf['server_id'], $ip_type, $line);
-					} else {
-						$this->db->query('INSERT INTO server_ip (
-							sys_userid, sys_groupid, sys_perm_user, sys_perm_group,
-							sys_perm_other, server_id, client_id, ip_type, ip_address,
-							virtualhost, virtualhost_port
-						) VALUES (
-							1,
-							1,
-							"riud",
-							"riud",
-							"",
-							?,
-							0,
-							?,
-							?,
-							"y",
-							"80,443"
-						)', $conf['server_id'], $ip_type, $line);
-					}
+		if(is_array($output) && !empty($output)){
+			foreach($output as $line){
+				$ip_type = '';
+				if (filter_var($line, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
+					$ip_type = 'IPv4';
+				}
+				if (filter_var($line, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
+					$ip_type = 'IPv6';
+				}
+				if($ip_type == '') continue;
+				if($this->db->dbHost != $this->dbmaster->dbHost){
+					$this->dbmaster->query('INSERT INTO server_ip (
+						sys_userid, sys_groupid, sys_perm_user, sys_perm_group,
+						sys_perm_other, server_id, client_id, ip_type, ip_address,
+						virtualhost, virtualhost_port
+					) VALUES (
+						1,
+						1,
+						"riud",
+						"riud",
+						"",
+						?,
+						0,
+						?,
+						?,
+						"y",
+						"80,443"
+					)', $conf['server_id'], $ip_type, $line);
+					$server_ip_id = $this->dbmaster->insertID();
+					$this->db->query('INSERT INTO server_ip (
+						server_php_id, sys_userid, sys_groupid, sys_perm_user, sys_perm_group,
+						sys_perm_other, server_id, client_id, ip_type, ip_address,
+						virtualhost, virtualhost_port
+					) VALUES (
+						?,
+						1,
+						1,
+						"riud",
+						"riud",
+						"",
+						?,
+						0,
+						?,
+						?,
+						"y",
+						"80,443"
+					)', $server_ip_id, $conf['server_id'], $ip_type, $line);
+				} else {
+					$this->db->query('INSERT INTO server_ip (
+						sys_userid, sys_groupid, sys_perm_user, sys_perm_group,
+						sys_perm_other, server_id, client_id, ip_type, ip_address,
+						virtualhost, virtualhost_port
+					) VALUES (
+						1,
+						1,
+						"riud",
+						"riud",
+						"",
+						?,
+						0,
+						?,
+						?,
+						"y",
+						"80,443"
+					)', $conf['server_id'], $ip_type, $line);
 				}
 			}
 		}
@@ -509,15 +521,23 @@ class installer_base {
 
 			//* insert the ispconfig user in the remote server
 			$from_host = $conf['hostname'];
-			$from_ip = gethostbyname($conf['hostname']);
-
 			$hosts[$from_host]['user'] = $conf['mysql']['master_ispconfig_user'];
 			$hosts[$from_host]['db'] = $conf['mysql']['master_database'];
 			$hosts[$from_host]['pwd'] = $conf['mysql']['master_ispconfig_password'];
 
-			$hosts[$from_ip]['user'] = $conf['mysql']['master_ispconfig_user'];
-			$hosts[$from_ip]['db'] = $conf['mysql']['master_database'];
-			$hosts[$from_ip]['pwd'] = $conf['mysql']['master_ispconfig_password'];
+			$host_ips = $this->get_host_ips();
+			if(is_arary($host_ips) && !empty($host_ips)) {
+				foreach($host_ips as $ip) {
+					$hosts[$ip]['user'] = $conf['mysql']['master_ispconfig_user'];
+					$hosts[$ip]['db'] = $conf['mysql']['master_database'];
+					$hosts[$ip]['pwd'] = $conf['mysql']['master_ispconfig_password'];
+				}
+			} else {
+				$from_ip = gethostbyname($conf['hostname']);
+				$hosts[$from_ip]['user'] = $conf['mysql']['master_ispconfig_user'];
+				$hosts[$from_ip]['db'] = $conf['mysql']['master_database'];
+				$hosts[$from_ip]['pwd'] = $conf['mysql']['master_ispconfig_password'];
+			}
 		} else{
 			/*
 			 * it is NOT a master-slave - Setup so we have to find out all clients and their
@@ -696,6 +716,14 @@ class installer_base {
 					$this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage);
 				}
 
+				$query = "GRANT SELECT, INSERT, UPDATE ON ?? TO ?@?";
+				if ($verbose){
+					echo $query ."\n";
+				}
+				if(!$this->dbmaster->query($query, $value['db'] . '.managed_php', $value['user'], $host)) {
+					$this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage);
+				}
+
 			}
 
 		}
-- 
GitLab


From 2d03b4525a9574736c0f9312e7024d3652ac2b8c Mon Sep 17 00:00:00 2001
From: Florian Schaal <info@schaal-24.de>
Date: Fri, 3 Jan 2020 14:43:54 +0100
Subject: [PATCH 119/242] remove code from last commit

---
 install/lib/installer_base.lib.php | 8 --------
 1 file changed, 8 deletions(-)

diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php
index 0cf2ee23e7..94ffd5703f 100644
--- a/install/lib/installer_base.lib.php
+++ b/install/lib/installer_base.lib.php
@@ -716,14 +716,6 @@ class installer_base {
 					$this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage);
 				}
 
-				$query = "GRANT SELECT, INSERT, UPDATE ON ?? TO ?@?";
-				if ($verbose){
-					echo $query ."\n";
-				}
-				if(!$this->dbmaster->query($query, $value['db'] . '.managed_php', $value['user'], $host)) {
-					$this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage);
-				}
-
 			}
 
 		}
-- 
GitLab


From a08a29104365e40418ef7b5261f71cdec56adce1 Mon Sep 17 00:00:00 2001
From: Florian Schaal <info@schaal-24.de>
Date: Tue, 7 Jan 2020 08:11:00 +0100
Subject: [PATCH 120/242] BUG - Cleanup website tmp directories (#5434)

---
 server/lib/classes/cron.d/200-logfiles.inc.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/server/lib/classes/cron.d/200-logfiles.inc.php b/server/lib/classes/cron.d/200-logfiles.inc.php
index e2d9e9bb9e..203d3c0bda 100644
--- a/server/lib/classes/cron.d/200-logfiles.inc.php
+++ b/server/lib/classes/cron.d/200-logfiles.inc.php
@@ -217,7 +217,7 @@ class cronjob_logfiles extends cronjob {
 			foreach($records as $rec){
 				$tmp_path = realpath($rec['document_root'].'/tmp');
 				if($tmp_path != '' && strlen($tmp_path) > 10 && is_dir($tmp_path) && $app->system->is_user($rec['system_user'])){
-					exec("cd ?; find . -mtime +1 -name 'sess_*' | grep -v -w .no_delete | xargs rm > /dev/null 2> /dev/null", $tmp_path);
+					$app->system->exec_safe("cd ?; find . -mtime +1 -name 'sess_*' | grep -v -w .no_delete | xargs rm > /dev/null 2> /dev/null", $tmp_path);
 				}
 			}
 		}
-- 
GitLab


From 4b281bf70d5668769eda440bceeb4fb01d376a4d Mon Sep 17 00:00:00 2001
From: Herman van Rink <rink@initfour.nl>
Date: Tue, 14 Jan 2020 10:56:48 +0100
Subject: [PATCH 121/242] Fix exec to exec_safe to make placeholder work again,
 #5434 #5510

---
 server/lib/classes/cron.d/200-logfiles.inc.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/server/lib/classes/cron.d/200-logfiles.inc.php b/server/lib/classes/cron.d/200-logfiles.inc.php
index e2d9e9bb9e..203d3c0bda 100644
--- a/server/lib/classes/cron.d/200-logfiles.inc.php
+++ b/server/lib/classes/cron.d/200-logfiles.inc.php
@@ -217,7 +217,7 @@ class cronjob_logfiles extends cronjob {
 			foreach($records as $rec){
 				$tmp_path = realpath($rec['document_root'].'/tmp');
 				if($tmp_path != '' && strlen($tmp_path) > 10 && is_dir($tmp_path) && $app->system->is_user($rec['system_user'])){
-					exec("cd ?; find . -mtime +1 -name 'sess_*' | grep -v -w .no_delete | xargs rm > /dev/null 2> /dev/null", $tmp_path);
+					$app->system->exec_safe("cd ?; find . -mtime +1 -name 'sess_*' | grep -v -w .no_delete | xargs rm > /dev/null 2> /dev/null", $tmp_path);
 				}
 			}
 		}
-- 
GitLab


From 88fd29a6c91f226ca4a2ffca536f30e80588ea59 Mon Sep 17 00:00:00 2001
From: Silviu CHINGARU <silviuchingaru@yahoo.com>
Date: Thu, 16 Jan 2020 21:32:07 +0200
Subject: [PATCH 122/242] Fixes ispconfig/ispconfig3#5513 - right exposing tag
 method to template.

---
 .../plugins-available/rspamd_plugin.inc.php   | 56 +++++++++----------
 1 file changed, 28 insertions(+), 28 deletions(-)

diff --git a/server/plugins-available/rspamd_plugin.inc.php b/server/plugins-available/rspamd_plugin.inc.php
index 212cb2c21c..4812deb683 100644
--- a/server/plugins-available/rspamd_plugin.inc.php
+++ b/server/plugins-available/rspamd_plugin.inc.php
@@ -33,7 +33,7 @@ class rspamd_plugin {
 	var $plugin_name = 'rspamd_plugin';
 	var $class_name  = 'rspamd_plugin';
 	var $users_config_dir = '/etc/rspamd/local.d/users/';
-	
+
 	//* This function is called during ispconfig installation to determine
 	//  if a symlink shall be created for this plugin.
 	function onInstall() {
@@ -98,7 +98,7 @@ class rspamd_plugin {
 
 		return true;
 	}
-	
+
 	/*
 	 	This function is called when the plugin is loaded
 	*/
@@ -114,17 +114,17 @@ class rspamd_plugin {
 		$app->plugins->registerEvent('spamfilter_wblist_insert', $this->plugin_name, 'spamfilter_wblist_insert');
 		$app->plugins->registerEvent('spamfilter_wblist_update', $this->plugin_name, 'spamfilter_wblist_update');
 		$app->plugins->registerEvent('spamfilter_wblist_delete', $this->plugin_name, 'spamfilter_wblist_delete');
-		
+
 		//* global mail access filters
 		$app->plugins->registerEvent('mail_access_insert', $this->plugin_name, 'spamfilter_wblist_insert');
 		$app->plugins->registerEvent('mail_access_update', $this->plugin_name, 'spamfilter_wblist_update');
 		$app->plugins->registerEvent('mail_access_delete', $this->plugin_name, 'spamfilter_wblist_delete');
-		
+
 		//* server ip
 		$app->plugins->registerEvent('server_ip_insert', $this->plugin_name, 'server_ip');
 		$app->plugins->registerEvent('server_ip_update', $this->plugin_name, 'server_ip');
 		$app->plugins->registerEvent('server_ip_delete', $this->plugin_name, 'server_ip');
-		
+
 		//* spamfilter_users
 		$app->plugins->registerEvent('spamfilter_users_insert', $this->plugin_name, 'user_settings_update');
 		$app->plugins->registerEvent('spamfilter_users_update', $this->plugin_name, 'user_settings_update');
@@ -141,11 +141,11 @@ class rspamd_plugin {
 
 	function user_settings_update($event_name, $data) {
 		global $app, $conf;
-		
+
 		if(!is_dir('/etc/rspamd')) {
 			return;
 		}
-		
+
 		$use_data = 'new';
 		if(substr($event_name, -7) === '_delete') {
 			$mode = 'delete';
@@ -159,7 +159,7 @@ class rspamd_plugin {
 		// get the config
 		$app->uses('getconf,system,functions');
 		$mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail');
-		
+
 		$type = false;
 		$identifier = false;
 		$entry_id = false;
@@ -180,7 +180,7 @@ class rspamd_plugin {
 			$app->log('Invalid event name for rspamd_plugin: ' . $event_name, LOGLEVEL_WARN);
 			return;
 		}
-		
+
 		$is_domain = false;
 		$email_address = $data[$use_data][$identifier];
 		$settings_name =  $email_address;
@@ -199,13 +199,13 @@ class rspamd_plugin {
 			$email_address = '@' . $email_address;
 			$is_domain = true;
 		}
-		
+
 		if($settings_name == '') {
 			// missing settings file name
 			$app->log('Empty rspamd identifier in rspamd_plugin from identifier: ' . $use_data . '/' . $identifier, LOGLEVEL_WARN);
 			return;
 		}
-		
+
 		$settings_file = $this->users_config_dir . str_replace('@', '_', $settings_name) . '.conf';
 		//$app->log('Settings file for rspamd is ' . $settings_file, LOGLEVEL_WARN);
 		if($mode === 'delete') {
@@ -219,11 +219,11 @@ class rspamd_plugin {
 			} elseif($is_domain === true) {
 				$settings_priority = 18;
 			}
-			
+
 			// get policy for entry
 			if($type === 'spamfilter_user') {
 				$policy = $app->db->queryOneRecord("SELECT * FROM spamfilter_policy WHERE id = ?", intval($data['new']['policy_id']));
-				
+
 				$check = $app->db->queryOneRecord('SELECT `greylisting` FROM `mail_user` WHERE `server_id` = ? AND `email` = ? UNION SELECT `greylisting` FROM `mail_forwarding` WHERE `server_id` = ? AND `source` = ? ORDER BY (`greylisting` = ?) DESC', $conf['server_id'], $email_address, $conf['server_id'], $email_address, 'y');
 				if($check) {
 					$greylisting = $check['greylisting'];
@@ -233,16 +233,16 @@ class rspamd_plugin {
 			} else {
 				$search_for_policy[] = $email_address;
 				$search_for_policy[] = substr($email_address, strpos($email_address, '@'));
-				
+
 				$policy = $app->db->queryOneRecord("SELECT p.* FROM spamfilter_users as u INNER JOIN spamfilter_policy as p ON (p.id = u.policy_id) WHERE u.server_id = ? AND u.email IN ? ORDER BY u.priority DESC", $conf['server_id'], $search_for_policy);
-				
+
 				$greylisting = $data[$use_data]['greylisting'];
 			}
-			
+
 			if(!is_dir($this->users_config_dir)){
 				$app->system->mkdirpath($this->users_config_dir);
 			}
-			
+
 			if(!$this->isValidEmail($app->functions->idn_encode($email_address))) {
 				if(is_file($settings_file)) {
 					unlink($settings_file);
@@ -285,7 +285,7 @@ class rspamd_plugin {
 				}
 
 				$tpl->setVar('rspamd_spam_tag_level', floatval($policy['rspamd_spam_tag_level']));
-				$tpl->setVar('rspamd_spam_tag_method', floatval($policy['rspamd_spam_tag_method']));
+				$tpl->setVar('rspamd_spam_tag_method', $policy['rspamd_spam_tag_method']);
 				$tpl->setVar('rspamd_spam_kill_level', floatval($policy['rspamd_spam_kill_level']));
 				$tpl->setVar('rspamd_virus_kill_level', floatval($policy['rspamd_spam_kill_level']) + 1000);
 
@@ -324,7 +324,7 @@ class rspamd_plugin {
 
 		$app->uses('getconf,system,functions');
 		$mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail');
-		
+
 		if(is_dir('/etc/rspamd')) {
 			$global_filter = false;
 			//* Create the config file
@@ -354,12 +354,12 @@ class rspamd_plugin {
 					);
 				}
 			}
-		
+
 			if($data['new']['active'] == 'y' && is_array($filter) && !empty($filter)){
 				if(!is_dir($this->users_config_dir)){
 					$app->system->mkdirpath($this->users_config_dir);
 				}
-		
+
 				$app->load('tpl');
 
 				$filter_from = $filter['from'];
@@ -407,13 +407,13 @@ class rspamd_plugin {
 			} elseif(is_file($wblist_file)) {
 				unlink($wblist_file);
 			}
-			
+
 			if($mail_config['content_filter'] == 'rspamd' && is_file('/etc/init.d/rspamd')) {
 				$app->services->restartServiceDelayed('rspamd', 'reload');
 			}
 		}
 	}
-	
+
 	function spamfilter_wblist_delete($event_name, $data) {
 		global $app, $conf;
 
@@ -439,17 +439,17 @@ class rspamd_plugin {
 
 	function server_ip($event_name, $data) {
 		global $app, $conf;
- 
+
 		// get the config
 		$app->uses("getconf,system");
 		$app->load('tpl');
 
 		$mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail');
-		
+
 		if(is_dir('/etc/rspamd')) {
 			$tpl = new tpl();
 			$tpl->newTemplate('rspamd_users.conf.master');
-				
+
 			$whitelist_ips = array();
 			$ips = $app->db->queryAllRecords("SELECT * FROM server_ip WHERE server_id = ?", $conf['server_id']);
 			if(is_array($ips) && !empty($ips)){
@@ -459,13 +459,13 @@ class rspamd_plugin {
 			}
 			$tpl->setLoop('whitelist_ips', $whitelist_ips);
 			$app->system->file_put_contents('/etc/rspamd/local.d/users.conf', $tpl->grab());
-				
+
 			if($mail_config['content_filter'] == 'rspamd'){
 				$app->services->restartServiceDelayed('rspamd', 'reload');
 			}
 		}
 	}
-	
+
 	private function _is_valid_ip_address($ip) {
 		if(function_exists('filter_var')) {
 			if(!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_IPV6)) {
-- 
GitLab


From dfe37d7241403e12f8d62d6e26a9044cc8594f80 Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Fri, 17 Jan 2020 15:04:49 +0100
Subject: [PATCH 123/242] Fixed #5515 API client_template_additional_get always
 return just one template

---
 interface/lib/classes/remote.d/client.inc.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/interface/lib/classes/remote.d/client.inc.php b/interface/lib/classes/remote.d/client.inc.php
index e07e227e60..1457bf569a 100644
--- a/interface/lib/classes/remote.d/client.inc.php
+++ b/interface/lib/classes/remote.d/client.inc.php
@@ -257,7 +257,7 @@ class remoting_client extends remoting {
 
 		if(@is_numeric($client_id)) {
 			$sql = "SELECT * FROM `client_template_assigned` WHERE `client_id` = ?";
-			return $app->db->queryOneRecord($sql, $client_id);
+			return $app->db->queryAllRecords($sql, $client_id);
 		} else {
 			throw new SoapFault('The ID must be an integer.');
 			return array();
-- 
GitLab


From a5cdc4751b17e972f47d98a496a9d6176c399148 Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Wed, 22 Jan 2020 10:56:47 +0100
Subject: [PATCH 124/242] - merged request !945 to stable

---
 interface/web/dashboard/lib/lang/it.lng       |  1 +
 .../lib/lang/it_dashlet_customer.lng          |  4 ++--
 .../lib/lang/it_dashlet_databasequota.lng     |  8 +++----
 .../dashboard/lib/lang/it_dashlet_limits.lng  | 24 +++++++++----------
 .../lib/lang/it_dashlet_mailquota.lng         | 10 ++++----
 .../dashboard/lib/lang/it_dashlet_modules.lng |  2 +-
 .../dashboard/lib/lang/it_dashlet_quota.lng   | 12 +++++-----
 interface/web/login/lib/lang/it.lng           | 20 ++++++++--------
 8 files changed, 41 insertions(+), 40 deletions(-)

diff --git a/interface/web/dashboard/lib/lang/it.lng b/interface/web/dashboard/lib/lang/it.lng
index db8858aafd..6a22e7cf5e 100644
--- a/interface/web/dashboard/lib/lang/it.lng
+++ b/interface/web/dashboard/lib/lang/it.lng
@@ -1,4 +1,5 @@
 <?php
 $wb['welcome_user_txt'] = 'Buongiorno %s';
 $wb['available_modules_txt'] = 'Moduli disponibili';
+$wb['last_login_ip'] = "Ultimo login %s da %s";
 ?>
diff --git a/interface/web/dashboard/lib/lang/it_dashlet_customer.lng b/interface/web/dashboard/lib/lang/it_dashlet_customer.lng
index 4fe6cb0ef7..bb6c2c5a6d 100644
--- a/interface/web/dashboard/lib/lang/it_dashlet_customer.lng
+++ b/interface/web/dashboard/lib/lang/it_dashlet_customer.lng
@@ -1,4 +1,4 @@
 <?php
-$wb['customerdata_txt'] = 'My Data';
-$wb['edit_txt'] = 'Edit';
+$wb['customerdata_txt'] = 'I miei dati';
+$wb['edit_txt'] = 'Modifica';
 ?>
diff --git a/interface/web/dashboard/lib/lang/it_dashlet_databasequota.lng b/interface/web/dashboard/lib/lang/it_dashlet_databasequota.lng
index bd2402dbf6..61ab6d9b21 100644
--- a/interface/web/dashboard/lib/lang/it_dashlet_databasequota.lng
+++ b/interface/web/dashboard/lib/lang/it_dashlet_databasequota.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['databasequota_txt'] = 'Database Quota';
-$wb['database_txt'] = 'Database Name';
-$wb['used_txt'] = 'Used Space';
+$wb['databasequota_txt'] = 'Quota Database';
+$wb['database_txt'] = 'Nome Database';
+$wb['used_txt'] = 'Spazio Usato';
 $wb['quota_txt'] = 'Quota';
-$wb['no_database_accounts_txt'] = 'No databases found.';
+$wb['no_database_accounts_txt'] = 'Nessun database trovato.';
 ?>
diff --git a/interface/web/dashboard/lib/lang/it_dashlet_limits.lng b/interface/web/dashboard/lib/lang/it_dashlet_limits.lng
index dd83e1ad58..895f619864 100644
--- a/interface/web/dashboard/lib/lang/it_dashlet_limits.lng
+++ b/interface/web/dashboard/lib/lang/it_dashlet_limits.lng
@@ -1,14 +1,14 @@
 <?php
 $wb['limits_txt'] = 'Sintesi account';
 $wb['of_txt'] = 'su';
-$wb['limit_maildomain_txt'] = 'Domini email';
-$wb['limit_mailbox_txt'] = 'Caselle email';
-$wb['limit_mailalias_txt'] = 'Alias di email';
+$wb['limit_maildomain_txt'] = 'Domini e-mail';
+$wb['limit_mailbox_txt'] = 'Caselle e-mail';
+$wb['limit_mailalias_txt'] = 'Alias di e-mail';
 $wb['limit_mailaliasdomain_txt'] = 'Alias di domini';
-$wb['limit_mailforward_txt'] = 'Inoltro email';
-$wb['limit_mailcatchall_txt'] = 'Account catchall email';
-$wb['limit_mailrouting_txt'] = 'Instradamento email';
-$wb['limit_mailfilter_txt'] = 'Filtri email';
+$wb['limit_mailforward_txt'] = 'Inoltro e-mail';
+$wb['limit_mailcatchall_txt'] = 'Account catchall e-mail';
+$wb['limit_mailrouting_txt'] = 'Instradamento e-mail';
+$wb['limit_mailfilter_txt'] = 'Filtri e-mail';
 $wb['limit_fetchmail_txt'] = 'Account fetchmail';
 $wb['limit_spamfilter_wblist_txt'] = 'Filtri spamfilter white / blacklist';
 $wb['limit_spamfilter_user_txt'] = 'Utenti spamfilter';
@@ -25,9 +25,9 @@ $wb['limit_shell_user_txt'] = 'Utenti Shell';
 $wb['limit_webdav_user_txt'] = 'Utenti Webdav';
 $wb['limit_client_txt'] = 'Client';
 $wb['limit_database_txt'] = 'Database';
-$wb['limit_mailmailinglist_txt'] = 'Number of mailing lists';
-$wb['limit_domain_txt'] = 'Number of Domains';
-$wb['limit_mailquota_txt'] = 'Assigned mailbox quota';
-$wb['limit_web_quota_txt'] = 'Assigned web quota';
-$wb['limit_database_quota_txt'] = 'Assigned database quota';
+$wb['limit_mailmailinglist_txt'] = 'Numero mailing-list';
+$wb['limit_domain_txt'] = 'Numero domini';
+$wb['limit_mailquota_txt'] = 'Quota mailbox assegnata';
+$wb['limit_web_quota_txt'] = 'Quota web assegnata';
+$wb['limit_database_quota_txt'] = 'Quota database assegnata';
 ?>
diff --git a/interface/web/dashboard/lib/lang/it_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/it_dashlet_mailquota.lng
index 1ab1e66658..daaaa67f49 100644
--- a/interface/web/dashboard/lib/lang/it_dashlet_mailquota.lng
+++ b/interface/web/dashboard/lib/lang/it_dashlet_mailquota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['mailquota_txt'] = 'Mailbox Quota';
-$wb['email_txt'] = 'Email Address';
-$wb['name_txt'] = 'Name';
-$wb['used_txt'] = 'Used Space';
+$wb['mailquota_txt'] = 'Quota Mailbox';
+$wb['email_txt'] = 'Indirizzo e-mail';
+$wb['name_txt'] = 'Nome';
+$wb['used_txt'] = 'Spazio Usato';
 $wb['quota_txt'] = 'Quota';
-$wb['no_email_accounts_txt'] = 'No email accounts found.';
+$wb['no_email_accounts_txt'] = 'Nessun account e-mail trovato.';
 ?>
diff --git a/interface/web/dashboard/lib/lang/it_dashlet_modules.lng b/interface/web/dashboard/lib/lang/it_dashlet_modules.lng
index 69d5c07997..a80b302092 100644
--- a/interface/web/dashboard/lib/lang/it_dashlet_modules.lng
+++ b/interface/web/dashboard/lib/lang/it_dashlet_modules.lng
@@ -1,4 +1,4 @@
 <?php
 $wb['available_modules_txt'] = 'Moduli disponibili';
-$wb['go_to_txt'] = 'Go to';
+$wb['go_to_txt'] = 'Vai a';
 ?>
diff --git a/interface/web/dashboard/lib/lang/it_dashlet_quota.lng b/interface/web/dashboard/lib/lang/it_dashlet_quota.lng
index de7b5a8936..63799d2ee3 100644
--- a/interface/web/dashboard/lib/lang/it_dashlet_quota.lng
+++ b/interface/web/dashboard/lib/lang/it_dashlet_quota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['quota_txt'] = 'Website Harddisk Quota';
-$wb['domain_txt'] = 'Domain / Website';
-$wb['used_txt'] = 'Used space';
-$wb['hard_txt'] = 'Hard limit';
-$wb['soft_txt'] = 'Soft limit';
-$wb['no_sites_txt'] = 'No web sites found.';
+$wb['quota_txt'] = 'Quota disco domini';
+$wb['domain_txt'] = 'Dominio';
+$wb['used_txt'] = 'Spazio usato';
+$wb['hard_txt'] = 'Limite (forzato)';
+$wb['soft_txt'] = 'Limite';
+$wb['no_sites_txt'] = 'Nessun dominio trovato.';
 ?>
diff --git a/interface/web/login/lib/lang/it.lng b/interface/web/login/lib/lang/it.lng
index 017d60df78..6d23aa0ccb 100644
--- a/interface/web/login/lib/lang/it.lng
+++ b/interface/web/login/lib/lang/it.lng
@@ -2,32 +2,32 @@
 $wb['error_user_password_empty'] = 'Nome utente o password vuoti.';
 $wb['error_user_password_incorrect'] = 'Nome utente o password errati.';
 $wb['error_user_blocked'] = 'Utente bloccato.';
-$wb['error_user_too_many_logins'] = 'Troppi tentativi errati di login. Riprovare tra 15 minuti';
+$wb['error_user_too_many_logins'] = 'Troppi tentativi errati di login. Riprovare tra 15 minuti.';
 $wb['pass_reset_txt'] = 'Una nuova password sarà  generata e spedita alla tua email se lemail inserita corrisponde a quella delle impostazioni dellutente.';
 $wb['pw_reset'] = 'La password è stata reimpostata e spedita al tuo indirizzo mail.';
-$wb['pw_error'] = 'Nome utente o email non corrispondenti.';
-$wb['pw_error_noinput'] = 'Inserisci nome utente e indirizzo email.';
-$wb['pw_reset_mail_msg'] = 'La password nel tuo pannello di controllo ISPConfig 3 è stata reimpostata. La nuova password è: ';
-$wb['pw_reset_mail_title'] = 'Password del pannello di controllo ISPConfig 3 reimpostata.';
+$wb['pw_error'] = 'Nome utente o e-mail non corrispondenti.';
+$wb['pw_error_noinput'] = 'Inserisci nome utente e indirizzo e-mail.';
+$wb['pw_reset_mail_msg'] = 'La password nel tuo pannello di controllo è stata reimpostata. La nuova password è: ';
+$wb['pw_reset_mail_title'] = 'Password del pannello di controllo reimpostata.';
 $wb['user_regex_error'] = 'Nome utente contenente caratteri non permessi oppure più lungo di 64 caratteri.';
 $wb['pw_error_length'] = 'Lunghezza password maggiore di 64 caratteri.';
 $wb['username_txt'] = 'Nome utente';
 $wb['password_txt'] = 'Password';
 $wb['login_button_txt'] = 'Accedi';
 $wb['pw_lost_txt'] = 'Password smarrita';
-$wb['error_maintenance_mode'] = 'Il pannello di controllo ISPConfig è in manutenzione. Saremo online tra breve. Grazie per la collaborazione.';
+$wb['error_maintenance_mode'] = 'Il pannello di controllo è in manutenzione.';
 $wb['login_txt'] = 'Accedi';
 $wb['pw_reset_txt'] = 'Password reset';
 $wb['pw_button_txt'] = 'Invia password';
-$wb['email_txt'] = 'Email';
-$wb['theme_not_compatible'] = 'Il tema selezionato non è compatibile con questa versione del pannello ISPConfig. Verificare esistenza di una nuova versione del tema.<br />Il tema di default è stato attivato automaticamente.';
+$wb['email_txt'] = 'E-mail';
+$wb['theme_not_compatible'] = 'Il tema selezionato non è compatibile con questa versione del pannello. Verificare esistenza di una nuova versione del tema.<br />Il tema di default è stato attivato automaticamente.';
 $wb['back_txt'] = 'Indietro';
 $wb['email_error'] = 'Email contiene caratteri non autorizzati o un formato non valido.';
 $wb['stay_logged_in_txt'] = 'Ricordami';
 $wb['lost_password_function_disabled_txt'] = 'The lost password function is not available for this user.';
 $wb['pw_reset_act'] = 'You have been sent an activation link. Please visit the link to confirm your password request.';
-$wb['pw_reset_act_mail_title'] = 'Confirm ISPConfig 3 Control panel password reset';
-$wb['pw_reset_act_mail_msg'] = 'Please confirm that your want to reset your ISPConfig 3 control panel account password by visiting the following activation link: ';
+$wb['pw_reset_act_mail_title'] = 'Conferma reset password';
+$wb['pw_reset_act_mail_msg'] = 'Per confermare il reset della password si prega di visitare questo link: ';
 $wb['lost_password_function_wait_txt'] = 'You cannot request a new password, yet. Please wait a few minutes.';
 $wb['lost_password_function_expired_txt'] = 'This activation link has expired. Please request a new one.';
 $wb['lost_password_function_denied_txt'] = 'This activation link is not valid.';
-- 
GitLab


From 0e59b84685f12dd7d0440d53390427da1267121c Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Fri, 24 Jan 2020 09:59:39 +0100
Subject: [PATCH 125/242] Fixed Typo in installer

---
 install/lib/installer_base.lib.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php
index 94ffd5703f..346b62b9ab 100644
--- a/install/lib/installer_base.lib.php
+++ b/install/lib/installer_base.lib.php
@@ -526,7 +526,7 @@ class installer_base {
 			$hosts[$from_host]['pwd'] = $conf['mysql']['master_ispconfig_password'];
 
 			$host_ips = $this->get_host_ips();
-			if(is_arary($host_ips) && !empty($host_ips)) {
+			if(is_array($host_ips) && !empty($host_ips)) {
 				foreach($host_ips as $ip) {
 					$hosts[$ip]['user'] = $conf['mysql']['master_ispconfig_user'];
 					$hosts[$ip]['db'] = $conf['mysql']['master_database'];
-- 
GitLab


From f3065bc8f710619303123c7af16b05f056c5cda5 Mon Sep 17 00:00:00 2001
From: Xaver Maierhofer <xwissen@xwissen.info>
Date: Fri, 24 Jan 2020 10:18:53 +0100
Subject: [PATCH 126/242] Show 0 & -1 as unlimited in database stats

---
 interface/web/sites/database_quota_stats.php | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/interface/web/sites/database_quota_stats.php b/interface/web/sites/database_quota_stats.php
index 4e960bce27..03431a6ded 100644
--- a/interface/web/sites/database_quota_stats.php
+++ b/interface/web/sites/database_quota_stats.php
@@ -37,7 +37,7 @@ if(is_array($tmp_rec)) {
 			} else {
 				$temp['username'] = 'admin';
 			}
-			
+
 			if(is_array($temp) && !empty($temp)) {
 				$monitor_data[$server_id.'.'.$db_name]['database_name'] = $data['database_name'];
 				$monitor_data[$server_id.'.'.$db_name]['client'] = isset($temp['username']) ? $temp['username'] : '';
@@ -61,7 +61,7 @@ class list_action extends listform_actions {
 		$rec['bgcolor'] = $this->DataRowColor;
 
 		$database_name = $rec['database_name'];
-		
+
 		if(!empty($monitor_data[$rec['server_id'].'.'.$database_name])){
 			$rec['database'] = $monitor_data[$rec['server_id'].'.'.$database_name]['database_name'];
 			$rec['client'] = $monitor_data[$rec['server_id'].'.'.$database_name]['client'];
@@ -71,7 +71,7 @@ class list_action extends listform_actions {
 			$rec['used'] = $monitor_data[$rec['server_id'].'.'.$database_name]['used'];
 			$rec['quota'] = $monitor_data[$rec['server_id'].'.'.$database_name]['quota'];
 
-			if($rec['quota'] == 0){
+			if($rec['quota'] <= 0){
 				$rec['quota'] = $app->lng('unlimited_txt');
 				$rec['percentage'] = '';
 			} else {
-- 
GitLab


From a64c9c806330edfb0785a193fd2e0cea70d1bbdf Mon Sep 17 00:00:00 2001
From: Xaver Maierhofer <xwissen@xwissen.info>
Date: Fri, 24 Jan 2020 10:19:52 +0100
Subject: [PATCH 127/242] Sort list quota correct

---
 interface/lib/classes/listform_actions.inc.php | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/interface/lib/classes/listform_actions.inc.php b/interface/lib/classes/listform_actions.inc.php
index 4a463fe015..097b41fc0d 100644
--- a/interface/lib/classes/listform_actions.inc.php
+++ b/interface/lib/classes/listform_actions.inc.php
@@ -39,6 +39,7 @@ class listform_actions {
 	private $sortKeys;
 
 	private function _sort($aOne, $aTwo) {
+		$suffixes=array('k' => 1, 'M' => 1024, 'G' => 1048576, 'T' => 1099511627776);
 		if(!is_array($aOne) || !is_array($aTwo)) return 0;
 
 		if(!is_array($this->sortKeys)) $this->sortKeys = array($this->sortKeys);
@@ -49,6 +50,15 @@ class listform_actions {
 			}
 			$a = $aOne[$sKey];
 			$b = $aTwo[$sKey];
+
+			if(preg_match('/(\d+\.?\d*) ([kMGT])B/', $a, $match)) {
+				$a = $match[1] * $suffixes[$match[2]];
+			}
+
+			if(preg_match('/(\d+\.?\d*) ([kMGT])B/', $b, $match)) {
+				$b = $match[1]  * $suffixes[$match[2]];
+			}
+
 			if(is_string($a)) $a = strtolower($a);
 			if(is_string($b)) $b = strtolower($b);
 			if($a < $b) return $sDir == 'DESC' ? 1 : -1;
@@ -129,7 +139,7 @@ class listform_actions {
 
 		// Getting Datasets from DB
 		$records = $app->db->queryAllRecords($this->getQueryString($php_sort));
-		
+
 		$csrf_token = $app->auth->csrf_token_get($app->listform->listDef['name']);
 		$_csrf_id = $csrf_token['csrf_id'];
 		$_csrf_key = $csrf_token['csrf_key'];
-- 
GitLab


From d77fdaa724830384065f1c7dbabf9240b3459b1f Mon Sep 17 00:00:00 2001
From: Florian Schaal <info@schaal-24.de>
Date: Fri, 24 Jan 2020 12:29:13 +0100
Subject: [PATCH 128/242] Add conf-custom support for security_settings.ini
 (Fixes #5480)

---
 install/lib/installer_base.lib.php            | 23 +++++--------------
 .../tpl/security_settings.ini.master          |  0
 2 files changed, 6 insertions(+), 17 deletions(-)
 rename security/security_settings.ini => install/tpl/security_settings.ini.master (100%)

diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php
index 346b62b9ab..e5ac1428d8 100644
--- a/install/lib/installer_base.lib.php
+++ b/install/lib/installer_base.lib.php
@@ -2478,24 +2478,13 @@ class installer_base {
 		//* copy the ISPConfig security part
 		$command = 'cp -rf ../security '.$install_dir;
 		caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
-		
-		//* Apply changed security_settings.ini values to new security_settings.ini file
-		if(is_file('/usr/local/ispconfig/security/security_settings.ini~')) {
-			$security_settings_old = ini_to_array(file_get_contents('/usr/local/ispconfig/security/security_settings.ini~'));
-			$security_settings_new = ini_to_array(file_get_contents('/usr/local/ispconfig/security/security_settings.ini'));
-			if(is_array($security_settings_new) && is_array($security_settings_old)) {
-				foreach($security_settings_new as $section => $sval) {
-					if(is_array($sval)) {
-						foreach($sval as $key => $val) {
-							if(isset($security_settings_old[$section]) && isset($security_settings_old[$section][$key])) {
-								$security_settings_new[$section][$key] = $security_settings_old[$section][$key];
-							}
-						}
-					}
-				}
-				file_put_contents('/usr/local/ispconfig/security/security_settings.ini',array_to_ini($security_settings_new));
-			}
+	
+		$configfile = 'security_settings.ini';
+		if(is_file($install_dir.'/security/'.$configfile)) {
+			copy($install_dir.'/security/'.$configfile, $install_dir.'/security/'.$configfile.'~');
 		}
+		$content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master');
+		wf($install_dir.'/security/'.$configfile, $content);	
 
 		//* Create a symlink, so ISPConfig is accessible via web
 		// Replaced by a separate vhost definition for port 8080
diff --git a/security/security_settings.ini b/install/tpl/security_settings.ini.master
similarity index 100%
rename from security/security_settings.ini
rename to install/tpl/security_settings.ini.master
-- 
GitLab


From 8238d0400fd80f57426b875fcfede2731ffddb4d Mon Sep 17 00:00:00 2001
From: Herman van Rink <rink@initfour.nl>
Date: Mon, 27 Jan 2020 11:07:13 +0100
Subject: [PATCH 129/242] Workaround to set app_module context to mail, #5448

---
 interface/web/mail/mail_user_edit.php | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/interface/web/mail/mail_user_edit.php b/interface/web/mail/mail_user_edit.php
index 263b98ef31..d291367d11 100644
--- a/interface/web/mail/mail_user_edit.php
+++ b/interface/web/mail/mail_user_edit.php
@@ -70,6 +70,9 @@ class page_action extends tform_actions {
 	function onShowEnd() {
 		global $app, $conf;
 
+		// Workaround for #5448, accessed via link on quota dashlet.
+		$app->tpl->setVar('app_module', 'mail');
+
 		$email = $this->dataRecord["email"];
 		$email_parts = explode("@", $email);
 		$app->tpl->setVar("email_local_part", $email_parts[0]);
-- 
GitLab


From 080c722a11bded37d6d66d9872a2161d0ec4a25f Mon Sep 17 00:00:00 2001
From: Xaver Maierhofer <xwissen@xwissen.info>
Date: Tue, 28 Jan 2020 10:30:52 +0100
Subject: [PATCH 130/242] Do not index and follow

---
 interface/web/themes/default/templates/main.tpl.htm | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/interface/web/themes/default/templates/main.tpl.htm b/interface/web/themes/default/templates/main.tpl.htm
index 15aa44e148..0cdd2f89b3 100644
--- a/interface/web/themes/default/templates/main.tpl.htm
+++ b/interface/web/themes/default/templates/main.tpl.htm
@@ -8,7 +8,7 @@
   <meta name='viewport' content='width=device-width, user-scalable=yes'>
   <meta name='description' lang='en' content='' />
   <meta name='keywords' lang='en' content='' />
-  <meta name='robots' content='index, follow' />
+  <meta name='robots' content='noindex, nofollow' />
 
   <link rel='stylesheet' href='themes/<tmpl_var name='current_theme'>/assets/stylesheets/bootstrap.min.css' />
   <link rel='stylesheet' href='themes/<tmpl_var name='current_theme'>/assets/stylesheets/fonts.min.css' />
@@ -123,15 +123,15 @@
   <script>
   <!--
 	//$('.ttip').tipsy({live: true, gravity: 'ne', html: true});
-	
+
 	ISPConfig.tabChangeDiscard = '<tmpl_var name="tabchange_discard_enabled">';
 	ISPConfig.tabChangeWarning = '<tmpl_var name="tabchange_warning_enabled">';
 	ISPConfig.tabChangeWarningTxt = '<tmpl_var name="global_tabchange_warning_txt">';
 	ISPConfig.tabChangeDiscardTxt = '<tmpl_var name="global_tabchange_discard_txt">';
-	
+
 	<tmpl_if name="use_loadindicator" value="y">ISPConfig.setOption('useLoadIndicator', true);</tmpl_if>
 	<tmpl_if name="use_combobox" value="y">ISPConfig.setOption('useComboBox', true);</tmpl_if>
-	
+
 	$(document).ready(function() {
 		$('#globalsearch').ispconfigSearch({
 			dataSrc: '/dashboard/ajax_get_json.php?type=globalsearch',
-- 
GitLab


From 34d9a7f9f901c3d0a6ddb59263a77a1a4e46b8db Mon Sep 17 00:00:00 2001
From: Xaver Maierhofer <xwissen@xwissen.info>
Date: Tue, 28 Jan 2020 10:31:36 +0100
Subject: [PATCH 131/242] Search for name in mailbox quota

---
 interface/web/mail/templates/user_quota_stats_list.htm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/interface/web/mail/templates/user_quota_stats_list.htm b/interface/web/mail/templates/user_quota_stats_list.htm
index 4b4b831aab..99690d6a33 100644
--- a/interface/web/mail/templates/user_quota_stats_list.htm
+++ b/interface/web/mail/templates/user_quota_stats_list.htm
@@ -17,7 +17,7 @@
                     </tr>
                     <tr>
                         <td><input class="form-control" type="text" name="search_email" value="{tmpl_var name='search_email'}" /></td>
-                        <td><input class="form-control" type="text" name="search_system_user" value="{tmpl_var name='search_name'}" /></td>
+                        <td><input class="form-control" type="text" name="search_name" value="{tmpl_var name='search_name'}" /></td>
                         <td>&nbsp;</td>
                         <td>&nbsp;</td>
                         <td>&nbsp;</td>
@@ -50,5 +50,5 @@
                 </tfoot>
             </table>
 </div>
-        
+
     </div>
-- 
GitLab


From e6c3be53645de21666a6dd62d04b076fb3252d9d Mon Sep 17 00:00:00 2001
From: Xaver Maierhofer <xwissen@xwissen.info>
Date: Tue, 28 Jan 2020 10:32:41 +0100
Subject: [PATCH 132/242] Fix column sorting foer mailbox quota

---
 interface/web/mail/list/user_quota_stats.list.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/interface/web/mail/list/user_quota_stats.list.php b/interface/web/mail/list/user_quota_stats.list.php
index e8faae3634..1ba9fc6702 100644
--- a/interface/web/mail/list/user_quota_stats.list.php
+++ b/interface/web/mail/list/user_quota_stats.list.php
@@ -41,7 +41,7 @@ $liste["paging_tpl"]  = "templates/paging.tpl.htm";
 $liste["auth"]    = "yes";
 
 // mark columns for php sorting (no real mySQL columns)
-$liste["phpsort"] = array('used_sort', 'percentage_sort');
+$liste["phpsort"] = array('used', 'percentage');
 
 /*****************************************************
 * Suchfelder
-- 
GitLab


From 25ceb4434f43640bd6ae63427a861f2c5a04e63e Mon Sep 17 00:00:00 2001
From: Florian Schaal <info@schaal-24.de>
Date: Fri, 7 Feb 2020 07:09:25 +0100
Subject: [PATCH 133/242] update

---
 interface/lib/classes/listform_actions.inc.php            | 1 +
 .../web/sites/templates/web_vhost_domain_admin_list.htm   | 8 +++++++-
 interface/web/sites/templates/web_vhost_domain_list.htm   | 8 +++++++-
 3 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/interface/lib/classes/listform_actions.inc.php b/interface/lib/classes/listform_actions.inc.php
index 097b41fc0d..ccfb91de1f 100644
--- a/interface/lib/classes/listform_actions.inc.php
+++ b/interface/lib/classes/listform_actions.inc.php
@@ -189,6 +189,7 @@ class listform_actions {
 		//* substitute value for select fields
 		if(is_array($app->listform->listDef['item']) && count($app->listform->listDef['item']) > 0) {
 			foreach($app->listform->listDef['item'] as $field) {
+				if($rec['active'] == 'n') $rec['warn_inactive'] = 'y';
 				$key = $field['field'];
 				if(isset($field['formtype']) && $field['formtype'] == 'SELECT') {
 					if(strtolower($rec[$key]) == 'y' or strtolower($rec[$key]) == 'n') {
diff --git a/interface/web/sites/templates/web_vhost_domain_admin_list.htm b/interface/web/sites/templates/web_vhost_domain_admin_list.htm
index 1ab14300d0..ddea17d706 100644
--- a/interface/web/sites/templates/web_vhost_domain_admin_list.htm
+++ b/interface/web/sites/templates/web_vhost_domain_admin_list.htm
@@ -37,8 +37,14 @@
                 </thead>
                 <tbody>
                 <tmpl_loop name="records">
-                    <tr>
+						<tr <tmpl_if name="site_error"> class="danger" </tmpl_if> <tmpl_if name="warn_inactive"> class="danger" </tmpl_if> >
                     	<tmpl_if name="vhostdomain_type" value="domain"><td><a href="#" data-load-content="sites/web_vhost_domain_edit.php?id={tmpl_var name='id'}&type={tmpl_var name='vhostdomain_type'}">{tmpl_var name="domain_id"}</a></td></tmpl_if>
+<tmpl_if name="site_error">
+&nbsp;
+<a href="#" data-toggle="tooltip" title="{tmpl_var name="site_error"}">
+<span class="glyphicon glyphicon-warning-sign"></span></a>
+</tmpl_if>
+</a></td></tmpl_if>
                         <td><a href="#" data-load-content="sites/web_vhost_domain_edit.php?id={tmpl_var name='id'}&type={tmpl_var name='vhostdomain_type'}">{tmpl_var name="active"}</a></td>
                         <tmpl_if name="vhostdomain_type" value="domain"><td><a href="#" data-load-content="sites/web_vhost_domain_edit.php?id={tmpl_var name='id'}&type={tmpl_var name='vhostdomain_type'}">{tmpl_var name="sys_groupid"}</a></td></tmpl_if>
                         <td><a href="#" data-load-content="sites/web_vhost_domain_edit.php?id={tmpl_var name='id'}&type={tmpl_var name='vhostdomain_type'}">{tmpl_var name="server_id"}</a></td>
diff --git a/interface/web/sites/templates/web_vhost_domain_list.htm b/interface/web/sites/templates/web_vhost_domain_list.htm
index 105dac9399..8ef06f3151 100644
--- a/interface/web/sites/templates/web_vhost_domain_list.htm
+++ b/interface/web/sites/templates/web_vhost_domain_list.htm
@@ -52,8 +52,14 @@
                 </thead>
                 <tbody>
                 <tmpl_loop name="records">
-                    <tr>
+					<tr <tmpl_if name="site_error"> class="danger" </tmpl_if> <tmpl_if name="warn_inactive"> class="danger" </tmpl_if> >
                     	<tmpl_if name="vhostdomain_type" value="domain"><td><a href="#" data-load-content="sites/web_vhost_domain_edit.php?id={tmpl_var name='id'}&type={tmpl_var name='vhostdomain_type'}">{tmpl_var name="domain_id"}</a></td></tmpl_if>
+<tmpl_if name="site_error">
+&nbsp;
+<a href="#" data-toggle="tooltip" title="{tmpl_var name="site_error"}">
+<span class="glyphicon glyphicon-warning-sign"></span></a>
+</tmpl_if>
+</a></td></tmpl_if>
                         <td><a href="#" data-load-content="sites/web_vhost_domain_edit.php?id={tmpl_var name='id'}&type={tmpl_var name='vhostdomain_type'}">{tmpl_var name="active"}</a></td>
                         <td><a href="#" data-load-content="sites/web_vhost_domain_edit.php?id={tmpl_var name='id'}&type={tmpl_var name='vhostdomain_type'}" data-toggle="tooltip" data-placement="bottom" title="{tmpl_var name='server_id'}">{tmpl_var name="server_id"}</a></td>
 						<tmpl_if name="vhostdomain_type" op="!=" value="domain"><td><a href="#" data-load-content="sites/web_vhost_aliasdomain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="parent_domain_id"}</a></td></tmpl_if>
-- 
GitLab


From ea14e05154352880b0a8b7300f68420bd8570b90 Mon Sep 17 00:00:00 2001
From: Florian Schaal <info@schaal-24.de>
Date: Fri, 7 Feb 2020 07:11:46 +0100
Subject: [PATCH 134/242] "highlight" inactive web-domains

---
 .../web/sites/templates/web_vhost_domain_admin_list.htm   | 8 +-------
 interface/web/sites/templates/web_vhost_domain_list.htm   | 8 +-------
 2 files changed, 2 insertions(+), 14 deletions(-)

diff --git a/interface/web/sites/templates/web_vhost_domain_admin_list.htm b/interface/web/sites/templates/web_vhost_domain_admin_list.htm
index ddea17d706..9bd98ddada 100644
--- a/interface/web/sites/templates/web_vhost_domain_admin_list.htm
+++ b/interface/web/sites/templates/web_vhost_domain_admin_list.htm
@@ -37,14 +37,8 @@
                 </thead>
                 <tbody>
                 <tmpl_loop name="records">
-						<tr <tmpl_if name="site_error"> class="danger" </tmpl_if> <tmpl_if name="warn_inactive"> class="danger" </tmpl_if> >
+						<tr <tmpl_if name="warn_inactive"> class="danger" </tmpl_if> >
                     	<tmpl_if name="vhostdomain_type" value="domain"><td><a href="#" data-load-content="sites/web_vhost_domain_edit.php?id={tmpl_var name='id'}&type={tmpl_var name='vhostdomain_type'}">{tmpl_var name="domain_id"}</a></td></tmpl_if>
-<tmpl_if name="site_error">
-&nbsp;
-<a href="#" data-toggle="tooltip" title="{tmpl_var name="site_error"}">
-<span class="glyphicon glyphicon-warning-sign"></span></a>
-</tmpl_if>
-</a></td></tmpl_if>
                         <td><a href="#" data-load-content="sites/web_vhost_domain_edit.php?id={tmpl_var name='id'}&type={tmpl_var name='vhostdomain_type'}">{tmpl_var name="active"}</a></td>
                         <tmpl_if name="vhostdomain_type" value="domain"><td><a href="#" data-load-content="sites/web_vhost_domain_edit.php?id={tmpl_var name='id'}&type={tmpl_var name='vhostdomain_type'}">{tmpl_var name="sys_groupid"}</a></td></tmpl_if>
                         <td><a href="#" data-load-content="sites/web_vhost_domain_edit.php?id={tmpl_var name='id'}&type={tmpl_var name='vhostdomain_type'}">{tmpl_var name="server_id"}</a></td>
diff --git a/interface/web/sites/templates/web_vhost_domain_list.htm b/interface/web/sites/templates/web_vhost_domain_list.htm
index 8ef06f3151..99738858f2 100644
--- a/interface/web/sites/templates/web_vhost_domain_list.htm
+++ b/interface/web/sites/templates/web_vhost_domain_list.htm
@@ -52,14 +52,8 @@
                 </thead>
                 <tbody>
                 <tmpl_loop name="records">
-					<tr <tmpl_if name="site_error"> class="danger" </tmpl_if> <tmpl_if name="warn_inactive"> class="danger" </tmpl_if> >
+					<tr <tmpl_if name="warn_inactive"> class="danger" </tmpl_if> >
                     	<tmpl_if name="vhostdomain_type" value="domain"><td><a href="#" data-load-content="sites/web_vhost_domain_edit.php?id={tmpl_var name='id'}&type={tmpl_var name='vhostdomain_type'}">{tmpl_var name="domain_id"}</a></td></tmpl_if>
-<tmpl_if name="site_error">
-&nbsp;
-<a href="#" data-toggle="tooltip" title="{tmpl_var name="site_error"}">
-<span class="glyphicon glyphicon-warning-sign"></span></a>
-</tmpl_if>
-</a></td></tmpl_if>
                         <td><a href="#" data-load-content="sites/web_vhost_domain_edit.php?id={tmpl_var name='id'}&type={tmpl_var name='vhostdomain_type'}">{tmpl_var name="active"}</a></td>
                         <td><a href="#" data-load-content="sites/web_vhost_domain_edit.php?id={tmpl_var name='id'}&type={tmpl_var name='vhostdomain_type'}" data-toggle="tooltip" data-placement="bottom" title="{tmpl_var name='server_id'}">{tmpl_var name="server_id"}</a></td>
 						<tmpl_if name="vhostdomain_type" op="!=" value="domain"><td><a href="#" data-load-content="sites/web_vhost_aliasdomain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="parent_domain_id"}</a></td></tmpl_if>
-- 
GitLab


From e91e34aa3a5f8524e26fdc0988d9020509cff7ea Mon Sep 17 00:00:00 2001
From: Florian Schaal <info@schaal-24.de>
Date: Tue, 11 Feb 2020 17:11:52 +0100
Subject: [PATCH 135/242] add check before delete an additional php-version

---
 .../web/admin/lib/lang/de_server_php.lng      |  1 +
 .../web/admin/lib/lang/en_server_php.lng      |  1 +
 interface/web/admin/server_php_del.php        | 36 +++++++++++++++++--
 3 files changed, 36 insertions(+), 2 deletions(-)

diff --git a/interface/web/admin/lib/lang/de_server_php.lng b/interface/web/admin/lib/lang/de_server_php.lng
index 67dad7064a..4eb9065ba3 100644
--- a/interface/web/admin/lib/lang/de_server_php.lng
+++ b/interface/web/admin/lib/lang/de_server_php.lng
@@ -14,4 +14,5 @@ $wb['php_fpm_init_script_txt'] = 'Pfad zum PHP-FPM Init Script';
 $wb['php_fpm_ini_dir_txt'] = 'Pfad zum php.ini Verzeichnis';
 $wb['php_fpm_pool_dir_txt'] = 'Pfad zum PHP-FPM Pool Verzeichnis';
 $wb['active_txt'] = 'Aktiv';
+$wb['php_in_use_error'] = 'Diese PHP-Version wird noch benutzt.';
 ?>
diff --git a/interface/web/admin/lib/lang/en_server_php.lng b/interface/web/admin/lib/lang/en_server_php.lng
index 179a8fc357..6ae160b648 100644
--- a/interface/web/admin/lib/lang/en_server_php.lng
+++ b/interface/web/admin/lib/lang/en_server_php.lng
@@ -14,4 +14,5 @@ $wb['php_fpm_init_script_txt'] = 'Path to the PHP-FPM init script';
 $wb['php_fpm_ini_dir_txt'] = 'Path to the php.ini directory';
 $wb['php_fpm_pool_dir_txt'] = 'Path to the PHP-FPM pool directory';
 $wb['active_txt'] = 'Active';
+$wb['php_in_use_error'] = 'This PHP-Version is in use.';
 ?>
diff --git a/interface/web/admin/server_php_del.php b/interface/web/admin/server_php_del.php
index 6848eea8d4..f160c1b2d9 100644
--- a/interface/web/admin/server_php_del.php
+++ b/interface/web/admin/server_php_del.php
@@ -46,7 +46,39 @@ require_once '../../lib/app.inc.php';
 $app->auth->check_module_permissions('admin');
 $app->auth->check_security_permissions('admin_allow_server_php');
 
-$app->uses("tform_actions");
-$app->tform_actions->onDelete();
+$app->uses('tpl,tform,tform_actions');
+$app->load('tform_actions');
+
+class page_action extends tform_actions {
+
+	function onBeforeDelete() {
+		global $app; $conf;
+
+		$check = array();
+
+		// fastcgi
+		if(!empty(trim($this->dataRecord['php_fastcgi_binary']))) $check[] = trim($this->dataRecord['php_fastcgi_binary']);
+		if(!empty(trim($this->dataRecord['php_fastcgi_ini_dir']))) $check[] = trim($this->dataRecord['php_fastcgi_ini_dir']);
+		if(!empty($check)) $fastcgi_check = implode(':', $check);
+		unset($check);
+
+		// fpm
+		if(!empty(trim($this->dataRecord['php_fpm_init_script']))) $check[] = trim($this->dataRecord['php_fpm_init_script']);
+		if(!empty(trim($this->dataRecord['php_fpm_ini_dir']))) $check[] = trim($this->dataRecord['php_fpm_ini_dir']);
+		if(!empty(trim($this->dataRecord['php_fpm_pool_dir']))) $check[] = trim($this->dataRecord['php_fpm_pool_dir']);
+		if(!empty($check)) $fpm_check = implode(':', $check);
+
+ 		$sql = 'SELECT domain_id FROM web_domain WHERE server_id = ? AND fastcgi_php_version LIKE ?';
+ 		if(isset($fastcgi_check)) $web_domains_fastcgi = $app->db->queryAllRecords($sql, $this->dataRecord['server_id'], '%:'.$fastcgi_check);
+		if(isset($fpm_check)) $web_domains_fpm = $app->db->queryAllRecords($sql, $this->dataRecord['server_id'], '%:'.$fpm_check);
+
+		if(!empty($webdomains_fastcgi) || !empty($web_domains_fpm))	$app->error($app->tform->lng('php_in_use_error'));
+
+	}
+
+}
+
+$page = new page_action;
+$page->onDelete();
 
 ?>
-- 
GitLab


From 49499f7cc90f0b82a63c611661af1c818d7bdd94 Mon Sep 17 00:00:00 2001
From: Webslice <webslice@bixels.nl>
Date: Thu, 13 Feb 2020 13:21:04 +0100
Subject: [PATCH 136/242] #4617 dont trigger tab change alert when loading php
 vhost domain config

---
 interface/web/sites/templates/web_vhost_domain_edit.htm | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/interface/web/sites/templates/web_vhost_domain_edit.htm b/interface/web/sites/templates/web_vhost_domain_edit.htm
index 149d430887..8b1bd6e155 100644
--- a/interface/web/sites/templates/web_vhost_domain_edit.htm
+++ b/interface/web/sites/templates/web_vhost_domain_edit.htm
@@ -391,10 +391,6 @@
             }
             if(noFormChange) {
                 ISPConfig.resetFormChanged();
-                jQuery('#php').addClass('no-page-form-change').change();
-                jQuery('#php').removeClass('no-page-form-change');
-            } else {
-                jQuery('#php').change();
             }
         });
     }
-- 
GitLab


From dec8b545a0dadb66fec55eb6945ec940e955f13b Mon Sep 17 00:00:00 2001
From: Herman van Rink <rink@initfour.nl>
Date: Tue, 18 Feb 2020 20:32:21 +0100
Subject: [PATCH 137/242] Document allow_send_ase and greylisting, #5536

---
 remoting_client/API-docs/mail_alias_add.html    | 2 ++
 remoting_client/API-docs/mail_alias_update.html | 2 ++
 2 files changed, 4 insertions(+)

diff --git a/remoting_client/API-docs/mail_alias_add.html b/remoting_client/API-docs/mail_alias_add.html
index 0e87abd8fc..101d3bfef8 100644
--- a/remoting_client/API-docs/mail_alias_add.html
+++ b/remoting_client/API-docs/mail_alias_add.html
@@ -24,6 +24,8 @@
 <p class="margin"> destination&nbsp;&nbsp;(<span class="paratype">text</span>)</p>
 <p class="margin"> type&nbsp;&nbsp;(<span class="paratype">enum('alias','aliasdomain','forward','catchall')</span>)</p>
 <p class="margin"> active&nbsp;&nbsp;(<span class="paratype">enum('n','y')</span>)</p>
+<p class="margin"> allow_send_ase&nbsp;&nbsp;(<span class="paratype">enum('n','y')</span>)</p>
+<p class="margin"> greylisting&nbsp;&nbsp;(<span class="paratype">enum('n','y')</span>)</p>
 <p class="headgrp">Output: </p> 
 <p class="margin"> Returns the ID of the newly added mail alias.</p>
 <!--<b>Output:</b> 
diff --git a/remoting_client/API-docs/mail_alias_update.html b/remoting_client/API-docs/mail_alias_update.html
index 0a2c689074..f4d960a059 100644
--- a/remoting_client/API-docs/mail_alias_update.html
+++ b/remoting_client/API-docs/mail_alias_update.html
@@ -24,6 +24,8 @@
 <p class="margin"> destination&nbsp;&nbsp;(<span class="paratype">text</span>)</p>
 <p class="margin"> type&nbsp;&nbsp;(<span class="paratype">enum('alias','aliasdomain','forward','catchall')</span>)</p>
 <p class="margin"> active&nbsp;&nbsp;(<span class="paratype">enum('n','y')</span>)</p>
+<p class="margin"> allow_send_ase&nbsp;&nbsp;(<span class="paratype">enum('n','y')</span>)</p>
+<p class="margin"> greylisting&nbsp;&nbsp;(<span class="paratype">enum('n','y')</span>)</p>
 <b>Output: </b> 
 <p class="margin"> Returns the number of affected rows.</p>
 <!--<b>Output:</b> 
-- 
GitLab


From 7fca6989ca04cb29274e57e5cac811d3ba5c9cc1 Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Fri, 21 Feb 2020 15:16:01 +0100
Subject: [PATCH 138/242] - fixes #5541

---
 interface/lib/app.inc.php | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/interface/lib/app.inc.php b/interface/lib/app.inc.php
index e341a57943..e817fcbd44 100755
--- a/interface/lib/app.inc.php
+++ b/interface/lib/app.inc.php
@@ -356,8 +356,8 @@ class app {
 			$forwarded_host = (isset($_SERVER['HTTP_X_FORWARDED_HOST']) ? $_SERVER['HTTP_X_FORWARDED_HOST'] : null );
 			if($forwarded_host !== null && $forwarded_host !== $cookie_domain) {
 				// Just check for complete domain name and not auto subdomains
-				$sql = "SELECT domain_id from web_domain where domain = '$forwarded_host'";
-				$recs = $this->db->queryOneRecord($sql);
+				$sql = "SELECT domain_id from web_domain where domain = ?";
+				$recs = $this->db->queryOneRecord($sql, $forwarded_host);
 				if($recs !== null) {
 					$cookie_domain = $forwarded_host;
 				}
-- 
GitLab


From cf593c7db0254ef82b7a01fee652b8a91720ac08 Mon Sep 17 00:00:00 2001
From: Herman van Rink <rink@initfour.nl>
Date: Wed, 26 Feb 2020 21:32:11 +0100
Subject: [PATCH 139/242] Show harddisk and database quota dashlet only when
 user has access

---
 interface/lib/classes/auth.inc.php            | 36 ++++++++++++-------
 .../web/dashboard/dashlets/databasequota.php  |  3 ++
 interface/web/dashboard/dashlets/quota.php    |  3 ++
 3 files changed, 29 insertions(+), 13 deletions(-)

diff --git a/interface/lib/classes/auth.inc.php b/interface/lib/classes/auth.inc.php
index 2075c7b90d..5daabd50b3 100644
--- a/interface/lib/classes/auth.inc.php
+++ b/interface/lib/classes/auth.inc.php
@@ -141,12 +141,18 @@ class auth {
 		}
 	}
 
-	public function check_module_permissions($module) {
+
+       /**
+        * Check that the user has access to the given module.
+        *
+        * @return boolean
+        */
+       public function verify_module_permissions($module)  {
 		// Check if the current user has the permissions to access this module
 		$module = trim(preg_replace('@\s+@', '', $module));
 		$user_modules = explode(',',$_SESSION["s"]["user"]["modules"]);
+               $can_use_module = false;
 		if(strpos($module, ',') !== false){
-			$can_use_module = false;
 			$tmp_modules = explode(',', $module);
 			if(is_array($tmp_modules) && !empty($tmp_modules)){
 				foreach($tmp_modules as $tmp_module){
@@ -158,17 +164,21 @@ class auth {
 					}
 				}
 			}
-			if(!$can_use_module){
-				// echo "LOGIN_REDIRECT:/index.php";
-				header("Location: /index.php");
-				exit;
-			}
-		} else {
-			if(!in_array($module,$user_modules)) {
-				// echo "LOGIN_REDIRECT:/index.php";
-				header("Location: /index.php");
-				exit;
-			}
+               }
+               elseif(in_array($module,$user_modules)) {
+                       $can_use_module = true;
+               }
+               return $can_use_module;
+       }
+
+       /**
+        * Check that the user has access to the given module, redirect and exit on failure.
+        */
+       public function check_module_permissions($module)  {
+               if(!$this->verify_module_permissions($module)) {
+                       // echo "LOGIN_REDIRECT:/index.php";
+                       header("Location: /index.php");
+                       exit;
 		}
 	}
 	
diff --git a/interface/web/dashboard/dashlets/databasequota.php b/interface/web/dashboard/dashlets/databasequota.php
index 6439cdee12..d8c131702f 100644
--- a/interface/web/dashboard/dashlets/databasequota.php
+++ b/interface/web/dashboard/dashlets/databasequota.php
@@ -7,6 +7,9 @@ class dashlet_databasequota {
 
 		//* Loading Template
 		$app->uses('tpl,quota_lib');
+               if (!$app->auth->verify_module_permissions('sites')) {
+                       return;
+               }
 
 		$tpl = new tpl;
 		$tpl->newTemplate("dashlets/templates/databasequota.htm");
diff --git a/interface/web/dashboard/dashlets/quota.php b/interface/web/dashboard/dashlets/quota.php
index 6ff975b623..dfb82d5c24 100644
--- a/interface/web/dashboard/dashlets/quota.php
+++ b/interface/web/dashboard/dashlets/quota.php
@@ -7,6 +7,9 @@ class dashlet_quota {
 
 		//* Loading Template
 		$app->uses('tpl,quota_lib');
+               if (!$app->auth->verify_module_permissions('sites')) {
+                       return;
+               }
 
 		$tpl = new tpl;
 		$tpl->newTemplate("dashlets/templates/quota.htm");
-- 
GitLab


From 9be213cf0374ef0d5c7aad3a56c80586fc9e71fc Mon Sep 17 00:00:00 2001
From: Herman van Rink <rink@initfour.nl>
Date: Wed, 26 Feb 2020 21:55:22 +0100
Subject: [PATCH 140/242] Check permission to the mail instead of the sites
 module

---
 interface/web/mail/backup_stats.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/interface/web/mail/backup_stats.php b/interface/web/mail/backup_stats.php
index 1317326573..0bf0ceae0b 100644
--- a/interface/web/mail/backup_stats.php
+++ b/interface/web/mail/backup_stats.php
@@ -9,7 +9,7 @@ $list_def_file = 'list/backup_stats.list.php';
 ******************************************/
 
 //* Check permissions for module
-$app->auth->check_module_permissions('sites');
+$app->auth->check_module_permissions('mail');
 
 $app->load('listform_actions','functions');
 
-- 
GitLab


From e82b879172f077f4c36066fa0ac9d98b4ec4d2e1 Mon Sep 17 00:00:00 2001
From: Herman van Rink <rink@initfour.nl>
Date: Wed, 26 Feb 2020 22:09:45 +0100
Subject: [PATCH 141/242] Check the Backupfunction available setting when
 showing Backup Stats

---
 interface/web/mail/lib/module.conf.php  | 13 +++++++------
 interface/web/sites/lib/module.conf.php | 14 ++++++++------
 2 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/interface/web/mail/lib/module.conf.php b/interface/web/mail/lib/module.conf.php
index 6466f614c6..cc100cd7d2 100644
--- a/interface/web/mail/lib/module.conf.php
+++ b/interface/web/mail/lib/module.conf.php
@@ -189,12 +189,13 @@ $items[] = array( 'title'  => 'Mailbox traffic',
 	'target'  => 'content',
 	'link' => 'mail/mail_user_stats.php',
 	'html_id' => 'mail_user_stats');
-$items[] = array (
-    'title'   => 'Backup Stats',
-    'target'  => 'content',
-    'link'    => 'mail/backup_stats.php',
-    'html_id' => 'backup_stats');
-
+if($app->auth->get_client_limit($userid, 'backup') == 'y') {
+        $items[] = array (
+            'title'   => 'Backup Stats',
+            'target'  => 'content',
+            'link'    => 'mail/backup_stats.php',
+            'html_id' => 'backup_stats');
+}
 
 $module['nav'][] = array( 'title' => 'Statistics',
 	'open'  => 1,
diff --git a/interface/web/sites/lib/module.conf.php b/interface/web/sites/lib/module.conf.php
index c37f3b7437..a9aefad967 100644
--- a/interface/web/sites/lib/module.conf.php
+++ b/interface/web/sites/lib/module.conf.php
@@ -209,12 +209,14 @@ $items[] = array(   'title'   => 'Database quota',
 	'link'    => 'sites/database_quota_stats.php',
 	'html_id' => 'databse_quota_stats');
 
-$items[] = array (
-	'title'   => 'Backup Stats',
-	'target'  => 'content',
-	'link'    => 'sites/backup_stats.php',
-	'html_id' => 'backup_stats'
-);
+if($app->auth->get_client_limit($userid, 'backup') == 'y') {
+        $items[] = array (
+                'title'   => 'Backup Stats',
+                'target'  => 'content',
+                'link'    => 'sites/backup_stats.php',
+                'html_id' => 'backup_stats'
+        );
+}
 
 $module['nav'][] = array(   'title' => 'Statistics',
 	'open'  => 1,
-- 
GitLab


From c1dba41d0e20f530742bd851adfb91311fc3ae93 Mon Sep 17 00:00:00 2001
From: Webslice <4052-webslice@users.noreply.git.ispconfig.org>
Date: Thu, 27 Feb 2020 11:15:35 +0100
Subject: [PATCH 142/242] Relative paths for login-as functionality

---
 interface/web/login/login_as.php                                | 2 +-
 interface/web/login/logout.php                                  | 2 +-
 interface/web/themes/default/assets/javascripts/ispconfig.js    | 2 +-
 .../web/themes/default/assets/javascripts/ispconfig.min.js      | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/interface/web/login/login_as.php b/interface/web/login/login_as.php
index 4c2fb33393..67d5858ff6 100644
--- a/interface/web/login/login_as.php
+++ b/interface/web/login/login_as.php
@@ -96,7 +96,7 @@ echo '
 	<input type="hidden" name="s_pg" value="dashboard" />
 	<input type="hidden" name="login_as" value="1" />
     <div class="wf_actions buttons">
-      <button class="btn btn-default formbutton-success" type="button" value="'.$wb['btn_yes_txt'].'" data-submit-form="pageForm" data-form-action="/login/index.php"><span>'.$wb['btn_yes_txt'].'</span></button>
+      <button class="btn btn-default formbutton-success" type="button" value="'.$wb['btn_yes_txt'].'" data-submit-form="pageForm" data-form-action="login/index.php"><span>'.$wb['btn_yes_txt'].'</span></button>
       <button class="btn btn-default formbutton-default" value="'.$wb['btn_back_txt'].'" data-load-content="'.$backlink.'"><span>'.$wb['btn_back_txt'].'</span></button>
     </div>
 ';
diff --git a/interface/web/login/logout.php b/interface/web/login/logout.php
index dadd871bab..fa60fba632 100644
--- a/interface/web/login/logout.php
+++ b/interface/web/login/logout.php
@@ -54,7 +54,7 @@ if ((isset($_SESSION['s_old']) && ($_SESSION['s_old']['user']['typ'] == 'admin'
 		<input type="hidden" name="s_pg" value="index" />
 		<input type="hidden" name="login_as" value="1" />
 	    <div class="wf_actions buttons">
-	      <button class="btn btn-default formbutton-success" type="button" value="Yes, re-login as ' . $utype . '" data-submit-form="pageForm" data-form-action="/login/index.php"><span>Yes, re-login as ' . $utype . '</span></button>
+	      <button class="btn btn-default formbutton-success" type="button" value="Yes, re-login as ' . $utype . '" data-submit-form="pageForm" data-form-action="login/index.php"><span>Yes, re-login as ' . $utype . '</span></button>
 	      <button class="btn btn-default formbutton-default" type="button" value="No, logout" data-load-content="login/logout.php?l=1"><span>No, logout</span></button>
 	    </div>
 	';
diff --git a/interface/web/themes/default/assets/javascripts/ispconfig.js b/interface/web/themes/default/assets/javascripts/ispconfig.js
index 5f797af328..70e3a903a6 100644
--- a/interface/web/themes/default/assets/javascripts/ispconfig.js
+++ b/interface/web/themes/default/assets/javascripts/ispconfig.js
@@ -172,7 +172,7 @@ var ISPConfig = {
 						ISPConfig.loadContent(parts[1]);
 					} else if (jqXHR.responseText.indexOf('LOGIN_REDIRECT:') > -1) {
 						// Go to the login page
-						document.location.href = '/index.php';
+						document.location.href = './index.php';
 					} else {
 						$('#pageContent').html(jqXHR.responseText);
 						ISPConfig.onAfterContentLoad(target, $('#'+formname).serialize());
diff --git a/interface/web/themes/default/assets/javascripts/ispconfig.min.js b/interface/web/themes/default/assets/javascripts/ispconfig.min.js
index 76af49d1dc..e118b994b0 100644
--- a/interface/web/themes/default/assets/javascripts/ispconfig.min.js
+++ b/interface/web/themes/default/assets/javascripts/ispconfig.min.js
@@ -1 +1 @@
-var ISPConfig={pageFormChanged:!1,tabChangeWarningTxt:"",tabChangeDiscardTxt:"",tabChangeWarning:!1,tabChangeDiscard:!1,requestsRunning:0,indicatorCompleted:!1,registeredHooks:new Array,new_tpl_add_id:0,dataLogTimer:0,options:{useLoadIndicator:!1,useComboBox:!1},setOption:function(a,b){ISPConfig.options[a]=b},setOptions:function(a){$.extend(ISPConfig.options,a)},reportError:function(){},registerHook:function(a,b){ISPConfig.registeredHooks[a]||(ISPConfig.registeredHooks[a]=new Array);var c=ISPConfig.registeredHooks[a].length;ISPConfig.registeredHooks[a][c]=b},callHook:function(a,b){if(ISPConfig.registeredHooks[a])for(var c=0;c<ISPConfig.registeredHooks[a].length;c++){var d=ISPConfig.registeredHooks[a][c];d(a,b)}},resetFormChanged:function(){ISPConfig.pageFormChanged=!1},showLoadIndicator:function(){if(document.body.style.cursor="wait",1==ISPConfig.options.useLoadIndicator&&(ISPConfig.requestsRunning+=1,ISPConfig.requestsRunning<2)){var a=$("#ajaxloader");a.length<1&&(a=$('<div id="ajaxloader" style="display: none;"></div>'),a.appendTo("body"));var b=$("#content");if(b.length<1)return;ISPConfig.indicatorCompleted=!1;var c=b.offset().left+150,d=b.offset().top+150;a.css({left:c,top:d}).fadeIn("fast",function(){ISPConfig.indicatorCompleted=!0,ISPConfig.requestsRunning<1&&$(this).fadeOut("fast",function(){$(this).hide()})})}},hideLoadIndicator:function(){document.body.style.cursor="",ISPConfig.requestsRunning-=1,ISPConfig.requestsRunning<1&&(ISPConfig.requestsRunning=0,1==ISPConfig.indicatorCompleted&&$("#ajaxloader").fadeOut("fast",function(){$("#ajaxloader").hide()}))},onAfterSideNavLoaded:function(){1==ISPConfig.options.useComboBox&&$("#sidebar").find("select:not(.chosen-select)").select2({placeholder:"",width:"element",selectOnBlur:!0,allowClear:!0})},onAfterContentLoad:function(a,b){b=b?"&"+b:"",1==ISPConfig.options.useComboBox&&$("#pageContent").find("select:not(.chosen-select)").select2({placeholder:"",width:"element",selectOnBlur:!0,allowClear:!0,formatResult:function(a){return a.id&&$(a.element).parent().hasClass("flags")?'<span class="flags flag-'+a.id.toLowerCase()+'">'+a.text+"</span>":a.text},formatSelection:function(a){return a.id&&$(a.element).parent().hasClass("flags")?'<span class="flags flag-'+a.id.toLowerCase()+'">'+a.text+"</span>":a.text}}).on("change",function(){$("#pageForm .table #Filter").length>0&&$("#pageForm .table #Filter").trigger("click")}),$('input[data-input-element="date"]').datetimepicker({language:"en",todayHighlight:!0,todayBtn:"linked",bootcssVer:3,fontAwesome:!0,autoclose:!0,minView:"month"}),$('input[data-input-element="datetime"]').datetimepicker({language:"en",todayHighlight:!0,todayBtn:"linked",bootcssVer:3,fontAwesome:!0,autoclose:!0}),$('[data-toggle="tooltip"]').tooltip({}),$('input[type="password"]').each(function(){$(this).prop("readonly",!0).tooltip({title:"Click to set",placement:"left"})}),$('input[type="password"]').on("click focus",function(){$(this).prop("readonly",!1),$(this).tooltip("destroy")}),ISPConfig.callHook("onAfterContentLoad",{url:a,data:b})},submitForm:function(a,b,c){var d=arguments[3];if(c||(c=!1),!c||window.confirm(c)){$.ajax({type:"POST",url:b,data:$("#"+a).serialize(),dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(c,e,f){if(d&&alert(d),f.responseText.indexOf("HEADER_REDIRECT:")>-1){var g=f.responseText.split(":");ISPConfig.loadContent(g[1])}else f.responseText.indexOf("LOGIN_REDIRECT:")>-1?document.location.href="/index.php":($("#pageContent").html(f.responseText),ISPConfig.onAfterContentLoad(b,$("#"+a).serialize()),ISPConfig.pageFormChanged=!1);clearTimeout(dataLogTimer),ISPConfig.dataLogNotification(),ISPConfig.hideLoadIndicator()},error:function(a){ISPConfig.hideLoadIndicator();a.responseText.split(":");ISPConfig.reportError("Ajax Request was not successful. 111")}})}},submitUploadForm:function(a,b){var c=function(a){var b,c=a.contentWindow.document.body.innerHTML;try{b=JSON.parse(c)}catch(d){b=c}var e=$("<div></div>").html(b),f="",g=e.find("#OKMsg").html();g&&(f='<div id="OKMsg">'+g+"</div>");var h=e.find("#errorMsg").html();h&&(f=f+'<div id="errorMsg">'+h+"</div>");var i=e.find('input[name="_csrf_key"]').val(),j=e.find('input[name="_csrf_id"]').val();return f=f+'<input type="hidden" name="_csrf_id" value="'+j+'" /><input type="hidden" name="_csrf_key" value="'+i+'" />'},d="ajaxUploader-iframe-"+Math.round((new Date).getTime()/1e3);$("body").append('<iframe width="0" height="0" style="display:none;" name="'+d+'" id="'+d+'"/>'),$("#"+d).load(function(){var a=c(this);$("#errorMsg").remove(),$("#OKMsg").remove(),$('input[name="_csrf_key"]').remove(),$('input[name="_csrf_id"]').remove(),$('input[name="id"]').before(a),$(this).remove()}),$('input[type="file"]').closest("form").attr({target:d,action:b}).submit()},capp:function(a,b){$.ajax({type:"GET",url:"capp.php",data:"mod="+a+(void 0!=b?"&redirect="+b:""),dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(a,b,c){if(""!=c.responseText)if(c.responseText.indexOf("HEADER_REDIRECT:")>-1){var d=c.responseText.split(":");ISPConfig.loadContent(d[1])}else if(c.responseText.indexOf("URL_REDIRECT:")>-1){var e=c.responseText.substr(c.responseText.indexOf("URL_REDIRECT:")+"URL_REDIRECT:".length);document.location.href=e}ISPConfig.loadMenus(),ISPConfig.hideLoadIndicator()},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful."+a)}})},loadContent:function(a){{var b=arguments[1];$.ajax({type:"GET",url:a,data:b?b:null,dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(c,d,e){if(e.responseText.indexOf("HEADER_REDIRECT:")>-1){var f=e.responseText.split(":");ISPConfig.loadContent(f[1])}else if(e.responseText.indexOf("URL_REDIRECT:")>-1){var g=e.responseText.substr(e.responseText.indexOf("URL_REDIRECT:")+"URL_REDIRECT:".length);document.location.href=g}else $("#pageContent").html(e.responseText),ISPConfig.onAfterContentLoad(a,b?b:null),ISPConfig.pageFormChanged=!1;clearTimeout(dataLogTimer),ISPConfig.dataLogNotification(),ISPConfig.hideLoadIndicator()},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful. 113")}})}},loadContentRefresh:function(a){if($("#refreshinterval").val()>0){{$.ajax({type:"GET",url:a,data:"refresh="+document.getElementById("refreshinterval").value,dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(b,c,d){ISPConfig.hideLoadIndicator(),$("#pageContent").html(d.responseText),ISPConfig.onAfterContentLoad(a,"refresh="+document.getElementById("refreshinterval").value),ISPConfig.pageFormChanged=!1},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful."+a)}})}setTimeout("ISPConfig.loadContentRefresh('"+a+"&refresh="+document.getElementById("refreshinterval").value+"')",1e3*document.getElementById("refreshinterval").value*60)}},loadInitContent:function(){var a=$("#pageContent").attr("data-startpage");a||(a="dashboard/dashboard.php");$.ajax({type:"GET",url:a,data:"",dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(a,b,c){if(c.responseText.indexOf("HEADER_REDIRECT:")>-1){var d=c.responseText.split(":");ISPConfig.loadContent(d[1])}else $("#pageContent").html(c.responseText),ISPConfig.onAfterContentLoad("dashboard/dashboard.php",""),ISPConfig.pageFormChanged=!1;ISPConfig.hideLoadIndicator()},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful. 114")}});ISPConfig.loadMenus(),ISPConfig.keepalive(),ISPConfig.dataLogNotification(),setTimeout(function(){try{$("form#pageForm").find('input[name="username"]').focus()}catch(a){}},1e3)},loadMenus:function(){$.ajax({type:"GET",url:"nav.php",data:"nav=side",dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(a,b,c){ISPConfig.hideLoadIndicator(),$("#sidebar").html(c.responseText),ISPConfig.onAfterSideNavLoaded(),ISPConfig.loadPushyMenu()},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful. 115")}}),$.ajax({type:"GET",url:"nav.php",data:"nav=top",dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(a,b,c){ISPConfig.hideLoadIndicator(),$("#topnav-container").html(c.responseText),ISPConfig.loadPushyMenu()},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful. 116")}})},changeTab:function(a,b,c){if(ISPConfig.requestsRunning>0)return console.log("tab change interrupted, request still running."),!1;document.pageForm.next_tab.value=a;var d=$("form#pageForm").find('[name="id"]'),e=null;if(d.length>0&&(e=d.val()),"y"!=ISPConfig.tabChangeDiscard||c)if(e&&"y"==ISPConfig.tabChangeWarning&&1==ISPConfig.pageFormChanged)if(window.confirm(ISPConfig.tabChangeWarningTxt))ISPConfig.submitForm("pageForm",b);else{var f=a;e?ISPConfig.loadContent(b,{next_tab:f,id:e}):ISPConfig.loadContent(b,{next_tab:f})}else ISPConfig.submitForm("pageForm",b);else{if(!(d.length<1||e)||0!=ISPConfig.pageFormChanged&&!window.confirm(ISPConfig.tabChangeDiscardTxt))return!1;var f=a;e?ISPConfig.loadContent(b,{next_tab:f,id:e}):ISPConfig.loadContent(b,{next_tab:f})}},confirm_action:function(a,b){window.confirm(b)&&ISPConfig.loadContent(a)},loadContentInto:function(a,b){$.ajax({type:"GET",url:b,dataType:"html",beforeSend:function(){},success:function(b,c,d){$("#"+a).html(d.responseText)},error:function(){ISPConfig.reportError("Ajax Request was not successful. 118")}})},loadOptionInto:function(a,b,c){$.ajax({type:"GET",url:b,dataType:"html",beforeSend:function(){},success:function(d,e,f){var g=f.responseText,h=g.split("#");el=document.getElementById(a),el.innerHTML="";for(var i=0;i<h.length;++i){var j=document.createElement("option");j.appendChild(document.createTextNode(h[i])),j.value=h[i],el.appendChild(j)}"undefined"!=typeof c&&c(a,b)},error:function(){ISPConfig.reportError("Ajax Request was not successful. 119")}})},keepalive:function(){$.ajax({type:"GET",url:"keepalive.php",dataType:"html",success:function(){setTimeout(function(){ISPConfig.keepalive()},1e6)},error:function(){ISPConfig.reportError("Session expired. Please login again.")}})},dataLogNotification:function(){console.log(ISPConfig.options);$.ajax({type:"GET",url:"datalogstatus.php",dataType:"json",success:function(a){var d=[];$.each(a.entries,function(a,b){d.push("<li><strong>"+b.text+":</strong> "+b.count+"</li>")}),a.count>0?($(".modal-body").html(d.join("")),$(".notification_text").text(a.count),$(".notification").css("display",""),dataLogTimer=setTimeout(function(){ISPConfig.dataLogNotification()},2e3)):($(".notification").css("display","none"),$(".modal-body").html(""),$("#datalogModal").modal("hide"),dataLogTimer=setTimeout(function(){ISPConfig.dataLogNotification()},5e3))},error:function(){ISPConfig.reportError("Notification not loading, aborting."),$(".notification").css("display","none")}})},addAdditionalTemplate:function(){var a=$("#template_additional").val(),b=$("#tpl_add_select").val().split("|",2),c=b[0],d=b[1];if(c>0){var e=a.split("/");ISPConfig.new_tpl_add_id+=1;var f=$('<a href="#"><span class="glyphicon glyphicon-remove-circle" aria-hidden="true"></span></a>').attr("class","btn btn-danger btn-xs").click(function(a){a.preventDefault(),ISPConfig.delAdditionalTemplate($(this).parent().attr("rel"))});e[e.length]="n"+ISPConfig.new_tpl_add_id+":"+c,$("<li>"+d+"</li>").attr("rel","n"+ISPConfig.new_tpl_add_id).append(f).appendTo("#template_additional_list ul"),$("#template_additional").val(e.join("/")),alert("additional template "+d+" added to customer")}else alert("no additional template selcted")},delAdditionalTemplate:function(a){var b=$("#template_additional").val();if(a){var c=$("#template_additional_list ul").find('li[rel="'+a+'"]').eq(0),d=c.text();c.remove();for(var e=b.split("/"),f=new Array,g=0;g<e.length;g++){var h=e[g].split(":",2);(2!=h.length||h[0]!=a)&&(f[f.length]=e[g])}$("#template_additional").val(f.join("/")),alert("additional template "+d+" deleted from customer")}else if(""!=b){var i=document.getElementById("tpl_add_select").value.split("|",2),j=i[0],d=i[1];$("#template_additional_list ul").find("li:not([rel])").each(function(){var a=$(this).text();return a==d?($(this).remove(),!1):this});var f=b,k=new RegExp("(^|/)"+j+"(/|$)");f=f.replace(k,""),f=f.replace("//","/"),$("#template_additional").val(f),alert("additional template "+d+" deleted from customer")}else alert("no additional template selcted")}};$(document).on("change",function(a){var b=a.target.localName;$("#pageForm .table #Filter").length>0&&"select"==b&&(a.preventDefault(),$("#pageForm .table #Filter").trigger("click")),("select"==b||"input"==b||"textarea"==b)&&0==$(a.target).hasClass("no-page-form-change")&&(ISPConfig.pageFormChanged=!0)});var $page=$("html, body");$(document).on("click","a[data-load-content],button[data-load-content]",function(a){if(a.preventDefault(),ISPConfig.requestsRunning>0)return void console.log("preventing click because there is still a request running.");$page.on("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()}),$page.animate({scrollTop:0},1e3,function(){$page.off("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()})});var b=$(this).attr("data-load-content");return b?void ISPConfig.loadContent(b):this}),$(document).on("click","a[data-capp],button[data-capp]",function(a){if(a.preventDefault(),ISPConfig.requestsRunning>0)return void console.log("preventing click because there is still a request running.");$page.on("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()}),$page.animate({scrollTop:0},1e3,function(){$page.off("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()})});var b=$(this).attr("data-capp");return b?void ISPConfig.capp(b):this}),$(document).on("click","a[data-submit-form],button[data-submit-form]",function(a){if(a.preventDefault(),ISPConfig.requestsRunning>0)return void console.log("preventing click because there is still a request running.");$page.on("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()}),$page.animate({scrollTop:0},1e3,function(){$page.off("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()})});var b=$(this),c=b.attr("data-form-action"),d=b.attr("data-submit-form");"true"==b.attr("data-form-upload")?ISPConfig.submitUploadForm(d,c):ISPConfig.submitForm(d,c)}),$(document).bind("keypress",function(a){"13"==a.which&&$("#pageForm .table #Filter").length>0&&0==$(a.target).hasClass("ui-autocomplete-input")&&(a.preventDefault(),$("#pageForm .table #Filter").trigger("click")),"13"==a.which&&$(".tab-content button.formbutton-success").length>0&&"textarea"!=a.target.localName&&$(a.target).is(":input")&&(a.preventDefault(),$(".tab-content button.formbutton-success").not("[disabled='disabled']").trigger("click"))}),$(document).on("click","th[data-column]",function(){var b=$(this),c=b.attr("data-column");if(!c)return this;if($("#pageForm .table #Filter").length>0&&"false"!=b.attr("data-sortable")){var d=$("#Filter"),e=d.attr("data-form-action"),f=d.attr("data-submit-form"),g=b.attr("data-ordered"),h="?";e.indexOf("?")>=0&&(h="&"),e=e+h+"orderby="+c,ISPConfig.submitForm(f,e),$(document).ajaxComplete(function(){var a=$('#pageForm .table th[data-column="'+c+'"]');a.parent().children("th[data-column]").removeAttr("data-ordered"),g&&"asc"==g?a.attr("data-ordered","desc"):a.attr("data-ordered","asc")})}}),$(document).on("click",".addPlaceholder",function(){var a=$(this).text(),b=$(this).siblings(":input");b.insertAtCaret(a)}),$(document).on("click",".addPlaceholderContent",function(){var a=$(this).find(".addPlaceholderContent").text(),b=$(this).siblings(":input");b.insertAtCaret(a)}),$(document).on("click","[data-check-fields] > input[type='checkbox']",function(){if($(this).is(":checked"))for(var a=$(this).parent().attr("data-check-fields"),b=a.split(/,/),c=0;c<b.length;c++){var d=b[c];$('input[type="checkbox"][name="'+d+'"]').prop("checked",!0)}}),$(document).on("click","[data-uncheck-fields] > input[type='checkbox']",function(){if(0==$(this).is(":checked"))for(var a=$(this).parent().attr("data-uncheck-fields"),b=a.split(/,/),c=0;c<b.length;c++){var d=b[c];$('input[type="checkbox"][name="'+d+'"]').prop("checked",!1)}}),$(document).on("ready",function(){$.fn.extend({insertAtCaret:function(a){return this.each(function(){if(document.selection)this.focus(),sel=document.selection.createRange(),sel.text=a,this.focus();else if(this.selectionStart||"0"==this.selectionStart){var c=this.selectionStart,d=this.selectionEnd,e=this.scrollTop;this.value=this.value.substring(0,c)+a+this.value.substring(d,this.value.length),this.focus(),this.selectionStart=c+a.length,this.selectionEnd=c+a.length,this.scrollTop=e}else this.value+=a,this.focus()})}}),$(".progress .progress-bar").css("width",function(){return $(this).attr("aria-valuenow")+"%"}),ISPConfig.loadInitContent(),$("#searchform").submit(function(a){a.preventDefault()}),$("#pageForm").submit(function(a){$("#pageForm .table #Filter").length>0&&a.preventDefault()}),$.fn.setCursorPosition=function(a){var b=$(this).get(0);if(b.setSelectionRange)b.setSelectionRange(a,a);else if(b.createTextRange){var c=b.createTextRange();c.collapse(!0),a<0&&(a=$(this).val().length+a),c.moveEnd("character",a),c.moveStart("character",a),c.select()}},$.fn.getCursorPosition=function(){var a=0,b=$(this).get(0);if("number"===typeof b.selectionStart)a="backward"==b.selectionDirection?b.selectionStart:b.selectionEnd;else if(document.selection){this.focus();var c=document.selection.createRange();c.moveStart("character",-b.value.length),a=c.text.length}return a}});
\ No newline at end of file
+var ISPConfig={pageFormChanged:!1,tabChangeWarningTxt:"",tabChangeDiscardTxt:"",tabChangeWarning:!1,tabChangeDiscard:!1,requestsRunning:0,indicatorCompleted:!1,registeredHooks:new Array,new_tpl_add_id:0,dataLogTimer:0,options:{useLoadIndicator:!1,useComboBox:!1},setOption:function(a,b){ISPConfig.options[a]=b},setOptions:function(a){$.extend(ISPConfig.options,a)},reportError:function(){},registerHook:function(a,b){ISPConfig.registeredHooks[a]||(ISPConfig.registeredHooks[a]=new Array);var c=ISPConfig.registeredHooks[a].length;ISPConfig.registeredHooks[a][c]=b},callHook:function(a,b){if(ISPConfig.registeredHooks[a])for(var c=0;c<ISPConfig.registeredHooks[a].length;c++){var d=ISPConfig.registeredHooks[a][c];d(a,b)}},resetFormChanged:function(){ISPConfig.pageFormChanged=!1},showLoadIndicator:function(){if(document.body.style.cursor="wait",1==ISPConfig.options.useLoadIndicator&&(ISPConfig.requestsRunning+=1,ISPConfig.requestsRunning<2)){var a=$("#ajaxloader");a.length<1&&(a=$('<div id="ajaxloader" style="display: none;"></div>'),a.appendTo("body"));var b=$("#content");if(b.length<1)return;ISPConfig.indicatorCompleted=!1;var c=b.offset().left+150,d=b.offset().top+150;a.css({left:c,top:d}).fadeIn("fast",function(){ISPConfig.indicatorCompleted=!0,ISPConfig.requestsRunning<1&&$(this).fadeOut("fast",function(){$(this).hide()})})}},hideLoadIndicator:function(){document.body.style.cursor="",ISPConfig.requestsRunning-=1,ISPConfig.requestsRunning<1&&(ISPConfig.requestsRunning=0,1==ISPConfig.indicatorCompleted&&$("#ajaxloader").fadeOut("fast",function(){$("#ajaxloader").hide()}))},onAfterSideNavLoaded:function(){1==ISPConfig.options.useComboBox&&$("#sidebar").find("select:not(.chosen-select)").select2({placeholder:"",width:"element",selectOnBlur:!0,allowClear:!0})},onAfterContentLoad:function(a,b){b=b?"&"+b:"",1==ISPConfig.options.useComboBox&&$("#pageContent").find("select:not(.chosen-select)").select2({placeholder:"",width:"element",selectOnBlur:!0,allowClear:!0,formatResult:function(a){return a.id&&$(a.element).parent().hasClass("flags")?'<span class="flags flag-'+a.id.toLowerCase()+'">'+a.text+"</span>":a.text},formatSelection:function(a){return a.id&&$(a.element).parent().hasClass("flags")?'<span class="flags flag-'+a.id.toLowerCase()+'">'+a.text+"</span>":a.text}}).on("change",function(){$("#pageForm .table #Filter").length>0&&$("#pageForm .table #Filter").trigger("click")}),$('input[data-input-element="date"]').datetimepicker({language:"en",todayHighlight:!0,todayBtn:"linked",bootcssVer:3,fontAwesome:!0,autoclose:!0,minView:"month"}),$('input[data-input-element="datetime"]').datetimepicker({language:"en",todayHighlight:!0,todayBtn:"linked",bootcssVer:3,fontAwesome:!0,autoclose:!0}),$('[data-toggle="tooltip"]').tooltip({}),$('input[type="password"]').each(function(){$(this).prop("readonly",!0).tooltip({title:"Click to set",placement:"left"})}),$('input[type="password"]').on("click focus",function(){$(this).prop("readonly",!1),$(this).tooltip("destroy")}),ISPConfig.callHook("onAfterContentLoad",{url:a,data:b})},submitForm:function(a,b,c){var d=arguments[3];if(c||(c=!1),!c||window.confirm(c)){$.ajax({type:"POST",url:b,data:$("#"+a).serialize(),dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(c,e,f){if(d&&alert(d),f.responseText.indexOf("HEADER_REDIRECT:")>-1){var g=f.responseText.split(":");ISPConfig.loadContent(g[1])}else f.responseText.indexOf("LOGIN_REDIRECT:")>-1?document.location.href="./index.php":($("#pageContent").html(f.responseText),ISPConfig.onAfterContentLoad(b,$("#"+a).serialize()),ISPConfig.pageFormChanged=!1);clearTimeout(dataLogTimer),ISPConfig.dataLogNotification(),ISPConfig.hideLoadIndicator()},error:function(a){ISPConfig.hideLoadIndicator();a.responseText.split(":");ISPConfig.reportError("Ajax Request was not successful. 111")}})}},submitUploadForm:function(a,b){var c=function(a){var b,c=a.contentWindow.document.body.innerHTML;try{b=JSON.parse(c)}catch(d){b=c}var e=$("<div></div>").html(b),f="",g=e.find("#OKMsg").html();g&&(f='<div id="OKMsg">'+g+"</div>");var h=e.find("#errorMsg").html();h&&(f=f+'<div id="errorMsg">'+h+"</div>");var i=e.find('input[name="_csrf_key"]').val(),j=e.find('input[name="_csrf_id"]').val();return f=f+'<input type="hidden" name="_csrf_id" value="'+j+'" /><input type="hidden" name="_csrf_key" value="'+i+'" />'},d="ajaxUploader-iframe-"+Math.round((new Date).getTime()/1e3);$("body").append('<iframe width="0" height="0" style="display:none;" name="'+d+'" id="'+d+'"/>'),$("#"+d).load(function(){var a=c(this);$("#errorMsg").remove(),$("#OKMsg").remove(),$('input[name="_csrf_key"]').remove(),$('input[name="_csrf_id"]').remove(),$('input[name="id"]').before(a),$(this).remove()}),$('input[type="file"]').closest("form").attr({target:d,action:b}).submit()},capp:function(a,b){$.ajax({type:"GET",url:"capp.php",data:"mod="+a+(void 0!=b?"&redirect="+b:""),dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(a,b,c){if(""!=c.responseText)if(c.responseText.indexOf("HEADER_REDIRECT:")>-1){var d=c.responseText.split(":");ISPConfig.loadContent(d[1])}else if(c.responseText.indexOf("URL_REDIRECT:")>-1){var e=c.responseText.substr(c.responseText.indexOf("URL_REDIRECT:")+"URL_REDIRECT:".length);document.location.href=e}ISPConfig.loadMenus(),ISPConfig.hideLoadIndicator()},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful."+a)}})},loadContent:function(a){{var b=arguments[1];$.ajax({type:"GET",url:a,data:b?b:null,dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(c,d,e){if(e.responseText.indexOf("HEADER_REDIRECT:")>-1){var f=e.responseText.split(":");ISPConfig.loadContent(f[1])}else if(e.responseText.indexOf("URL_REDIRECT:")>-1){var g=e.responseText.substr(e.responseText.indexOf("URL_REDIRECT:")+"URL_REDIRECT:".length);document.location.href=g}else $("#pageContent").html(e.responseText),ISPConfig.onAfterContentLoad(a,b?b:null),ISPConfig.pageFormChanged=!1;clearTimeout(dataLogTimer),ISPConfig.dataLogNotification(),ISPConfig.hideLoadIndicator()},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful. 113")}})}},loadContentRefresh:function(a){if($("#refreshinterval").val()>0){{$.ajax({type:"GET",url:a,data:"refresh="+document.getElementById("refreshinterval").value,dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(b,c,d){ISPConfig.hideLoadIndicator(),$("#pageContent").html(d.responseText),ISPConfig.onAfterContentLoad(a,"refresh="+document.getElementById("refreshinterval").value),ISPConfig.pageFormChanged=!1},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful."+a)}})}setTimeout("ISPConfig.loadContentRefresh('"+a+"&refresh="+document.getElementById("refreshinterval").value+"')",1e3*document.getElementById("refreshinterval").value*60)}},loadInitContent:function(){var a=$("#pageContent").attr("data-startpage");a||(a="dashboard/dashboard.php");$.ajax({type:"GET",url:a,data:"",dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(a,b,c){if(c.responseText.indexOf("HEADER_REDIRECT:")>-1){var d=c.responseText.split(":");ISPConfig.loadContent(d[1])}else $("#pageContent").html(c.responseText),ISPConfig.onAfterContentLoad("dashboard/dashboard.php",""),ISPConfig.pageFormChanged=!1;ISPConfig.hideLoadIndicator()},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful. 114")}});ISPConfig.loadMenus(),ISPConfig.keepalive(),ISPConfig.dataLogNotification(),setTimeout(function(){try{$("form#pageForm").find('input[name="username"]').focus()}catch(a){}},1e3)},loadMenus:function(){$.ajax({type:"GET",url:"nav.php",data:"nav=side",dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(a,b,c){ISPConfig.hideLoadIndicator(),$("#sidebar").html(c.responseText),ISPConfig.onAfterSideNavLoaded(),ISPConfig.loadPushyMenu()},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful. 115")}}),$.ajax({type:"GET",url:"nav.php",data:"nav=top",dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(a,b,c){ISPConfig.hideLoadIndicator(),$("#topnav-container").html(c.responseText),ISPConfig.loadPushyMenu()},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful. 116")}})},changeTab:function(a,b,c){if(ISPConfig.requestsRunning>0)return console.log("tab change interrupted, request still running."),!1;document.pageForm.next_tab.value=a;var d=$("form#pageForm").find('[name="id"]'),e=null;if(d.length>0&&(e=d.val()),"y"!=ISPConfig.tabChangeDiscard||c)if(e&&"y"==ISPConfig.tabChangeWarning&&1==ISPConfig.pageFormChanged)if(window.confirm(ISPConfig.tabChangeWarningTxt))ISPConfig.submitForm("pageForm",b);else{var f=a;e?ISPConfig.loadContent(b,{next_tab:f,id:e}):ISPConfig.loadContent(b,{next_tab:f})}else ISPConfig.submitForm("pageForm",b);else{if(!(d.length<1||e)||0!=ISPConfig.pageFormChanged&&!window.confirm(ISPConfig.tabChangeDiscardTxt))return!1;var f=a;e?ISPConfig.loadContent(b,{next_tab:f,id:e}):ISPConfig.loadContent(b,{next_tab:f})}},confirm_action:function(a,b){window.confirm(b)&&ISPConfig.loadContent(a)},loadContentInto:function(a,b){$.ajax({type:"GET",url:b,dataType:"html",beforeSend:function(){},success:function(b,c,d){$("#"+a).html(d.responseText)},error:function(){ISPConfig.reportError("Ajax Request was not successful. 118")}})},loadOptionInto:function(a,b,c){$.ajax({type:"GET",url:b,dataType:"html",beforeSend:function(){},success:function(d,e,f){var g=f.responseText,h=g.split("#");el=document.getElementById(a),el.innerHTML="";for(var i=0;i<h.length;++i){var j=document.createElement("option");j.appendChild(document.createTextNode(h[i])),j.value=h[i],el.appendChild(j)}"undefined"!=typeof c&&c(a,b)},error:function(){ISPConfig.reportError("Ajax Request was not successful. 119")}})},keepalive:function(){$.ajax({type:"GET",url:"keepalive.php",dataType:"html",success:function(){setTimeout(function(){ISPConfig.keepalive()},1e6)},error:function(){ISPConfig.reportError("Session expired. Please login again.")}})},dataLogNotification:function(){console.log(ISPConfig.options);$.ajax({type:"GET",url:"datalogstatus.php",dataType:"json",success:function(a){var d=[];$.each(a.entries,function(a,b){d.push("<li><strong>"+b.text+":</strong> "+b.count+"</li>")}),a.count>0?($(".modal-body").html(d.join("")),$(".notification_text").text(a.count),$(".notification").css("display",""),dataLogTimer=setTimeout(function(){ISPConfig.dataLogNotification()},2e3)):($(".notification").css("display","none"),$(".modal-body").html(""),$("#datalogModal").modal("hide"),dataLogTimer=setTimeout(function(){ISPConfig.dataLogNotification()},5e3))},error:function(){ISPConfig.reportError("Notification not loading, aborting."),$(".notification").css("display","none")}})},addAdditionalTemplate:function(){var a=$("#template_additional").val(),b=$("#tpl_add_select").val().split("|",2),c=b[0],d=b[1];if(c>0){var e=a.split("/");ISPConfig.new_tpl_add_id+=1;var f=$('<a href="#"><span class="glyphicon glyphicon-remove-circle" aria-hidden="true"></span></a>').attr("class","btn btn-danger btn-xs").click(function(a){a.preventDefault(),ISPConfig.delAdditionalTemplate($(this).parent().attr("rel"))});e[e.length]="n"+ISPConfig.new_tpl_add_id+":"+c,$("<li>"+d+"</li>").attr("rel","n"+ISPConfig.new_tpl_add_id).append(f).appendTo("#template_additional_list ul"),$("#template_additional").val(e.join("/")),alert("additional template "+d+" added to customer")}else alert("no additional template selcted")},delAdditionalTemplate:function(a){var b=$("#template_additional").val();if(a){var c=$("#template_additional_list ul").find('li[rel="'+a+'"]').eq(0),d=c.text();c.remove();for(var e=b.split("/"),f=new Array,g=0;g<e.length;g++){var h=e[g].split(":",2);(2!=h.length||h[0]!=a)&&(f[f.length]=e[g])}$("#template_additional").val(f.join("/")),alert("additional template "+d+" deleted from customer")}else if(""!=b){var i=document.getElementById("tpl_add_select").value.split("|",2),j=i[0],d=i[1];$("#template_additional_list ul").find("li:not([rel])").each(function(){var a=$(this).text();return a==d?($(this).remove(),!1):this});var f=b,k=new RegExp("(^|/)"+j+"(/|$)");f=f.replace(k,""),f=f.replace("//","/"),$("#template_additional").val(f),alert("additional template "+d+" deleted from customer")}else alert("no additional template selcted")}};$(document).on("change",function(a){var b=a.target.localName;$("#pageForm .table #Filter").length>0&&"select"==b&&(a.preventDefault(),$("#pageForm .table #Filter").trigger("click")),("select"==b||"input"==b||"textarea"==b)&&0==$(a.target).hasClass("no-page-form-change")&&(ISPConfig.pageFormChanged=!0)});var $page=$("html, body");$(document).on("click","a[data-load-content],button[data-load-content]",function(a){if(a.preventDefault(),ISPConfig.requestsRunning>0)return void console.log("preventing click because there is still a request running.");$page.on("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()}),$page.animate({scrollTop:0},1e3,function(){$page.off("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()})});var b=$(this).attr("data-load-content");return b?void ISPConfig.loadContent(b):this}),$(document).on("click","a[data-capp],button[data-capp]",function(a){if(a.preventDefault(),ISPConfig.requestsRunning>0)return void console.log("preventing click because there is still a request running.");$page.on("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()}),$page.animate({scrollTop:0},1e3,function(){$page.off("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()})});var b=$(this).attr("data-capp");return b?void ISPConfig.capp(b):this}),$(document).on("click","a[data-submit-form],button[data-submit-form]",function(a){if(a.preventDefault(),ISPConfig.requestsRunning>0)return void console.log("preventing click because there is still a request running.");$page.on("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()}),$page.animate({scrollTop:0},1e3,function(){$page.off("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()})});var b=$(this),c=b.attr("data-form-action"),d=b.attr("data-submit-form");"true"==b.attr("data-form-upload")?ISPConfig.submitUploadForm(d,c):ISPConfig.submitForm(d,c)}),$(document).bind("keypress",function(a){"13"==a.which&&$("#pageForm .table #Filter").length>0&&0==$(a.target).hasClass("ui-autocomplete-input")&&(a.preventDefault(),$("#pageForm .table #Filter").trigger("click")),"13"==a.which&&$(".tab-content button.formbutton-success").length>0&&"textarea"!=a.target.localName&&$(a.target).is(":input")&&(a.preventDefault(),$(".tab-content button.formbutton-success").not("[disabled='disabled']").trigger("click"))}),$(document).on("click","th[data-column]",function(){var b=$(this),c=b.attr("data-column");if(!c)return this;if($("#pageForm .table #Filter").length>0&&"false"!=b.attr("data-sortable")){var d=$("#Filter"),e=d.attr("data-form-action"),f=d.attr("data-submit-form"),g=b.attr("data-ordered"),h="?";e.indexOf("?")>=0&&(h="&"),e=e+h+"orderby="+c,ISPConfig.submitForm(f,e),$(document).ajaxComplete(function(){var a=$('#pageForm .table th[data-column="'+c+'"]');a.parent().children("th[data-column]").removeAttr("data-ordered"),g&&"asc"==g?a.attr("data-ordered","desc"):a.attr("data-ordered","asc")})}}),$(document).on("click",".addPlaceholder",function(){var a=$(this).text(),b=$(this).siblings(":input");b.insertAtCaret(a)}),$(document).on("click",".addPlaceholderContent",function(){var a=$(this).find(".addPlaceholderContent").text(),b=$(this).siblings(":input");b.insertAtCaret(a)}),$(document).on("click","[data-check-fields] > input[type='checkbox']",function(){if($(this).is(":checked"))for(var a=$(this).parent().attr("data-check-fields"),b=a.split(/,/),c=0;c<b.length;c++){var d=b[c];$('input[type="checkbox"][name="'+d+'"]').prop("checked",!0)}}),$(document).on("click","[data-uncheck-fields] > input[type='checkbox']",function(){if(0==$(this).is(":checked"))for(var a=$(this).parent().attr("data-uncheck-fields"),b=a.split(/,/),c=0;c<b.length;c++){var d=b[c];$('input[type="checkbox"][name="'+d+'"]').prop("checked",!1)}}),$(document).on("ready",function(){$.fn.extend({insertAtCaret:function(a){return this.each(function(){if(document.selection)this.focus(),sel=document.selection.createRange(),sel.text=a,this.focus();else if(this.selectionStart||"0"==this.selectionStart){var c=this.selectionStart,d=this.selectionEnd,e=this.scrollTop;this.value=this.value.substring(0,c)+a+this.value.substring(d,this.value.length),this.focus(),this.selectionStart=c+a.length,this.selectionEnd=c+a.length,this.scrollTop=e}else this.value+=a,this.focus()})}}),$(".progress .progress-bar").css("width",function(){return $(this).attr("aria-valuenow")+"%"}),ISPConfig.loadInitContent(),$("#searchform").submit(function(a){a.preventDefault()}),$("#pageForm").submit(function(a){$("#pageForm .table #Filter").length>0&&a.preventDefault()}),$.fn.setCursorPosition=function(a){var b=$(this).get(0);if(b.setSelectionRange)b.setSelectionRange(a,a);else if(b.createTextRange){var c=b.createTextRange();c.collapse(!0),a<0&&(a=$(this).val().length+a),c.moveEnd("character",a),c.moveStart("character",a),c.select()}},$.fn.getCursorPosition=function(){var a=0,b=$(this).get(0);if("number"===typeof b.selectionStart)a="backward"==b.selectionDirection?b.selectionStart:b.selectionEnd;else if(document.selection){this.focus();var c=document.selection.createRange();c.moveStart("character",-b.value.length),a=c.text.length}return a}});
\ No newline at end of file
-- 
GitLab


From 9735af1965c849160b9425ef3507810f8c4b5bbd Mon Sep 17 00:00:00 2001
From: Xaver Maierhofer <xwissen@xwissen.info>
Date: Thu, 27 Feb 2020 11:19:06 +0100
Subject: [PATCH 143/242] Switch to recommanded CI container

---
 .gitlab-ci.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 736fbc3083..2ee654e1f2 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -8,7 +8,7 @@ stages:
 
 syntax:lint:
   stage: syntax
-  image: bobey/docker-gitlab-ci-runner-php7
+  image: edbizarro/gitlab-ci-pipeline-php:7.2
   allow_failure: false
   only:
     - schedules
-- 
GitLab


From 51309b175a675bd5472e49f74e4ee3cc5bfe50d8 Mon Sep 17 00:00:00 2001
From: Xaver Maierhofer <xwissen@xwissen.info>
Date: Thu, 27 Feb 2020 11:20:54 +0100
Subject: [PATCH 144/242] Add favicon, app, color & tile

---
 interface/web/favicon.ico                     | Bin 18478 -> 0 bytes
 .../assets/favicon/android-chrome-192x192.png | Bin 0 -> 729 bytes
 .../assets/favicon/android-chrome-512x512.png | Bin 0 -> 1673 bytes
 .../assets/favicon/apple-touch-icon.png       | Bin 0 -> 619 bytes
 .../default/assets/favicon/browserconfig.xml  |   9 +++++++++
 .../default/assets/favicon/favicon-16x16.png  | Bin 0 -> 259 bytes
 .../default/assets/favicon/favicon-32x32.png  | Bin 0 -> 309 bytes
 .../themes/default/assets/favicon/favicon.ico | Bin 0 -> 15086 bytes
 .../default/assets/favicon/mstile-150x150.png | Bin 0 -> 606 bytes
 .../assets/favicon/safari-pinned-tab.svg      |   1 +
 .../default/assets/favicon/site.webmanifest   |  18 ++++++++++++++++++
 .../web/themes/default/templates/main.tpl.htm |  10 ++++++++++
 .../default/templates/main_login.tpl.htm      |  11 ++++++++++-
 13 files changed, 48 insertions(+), 1 deletion(-)
 delete mode 100644 interface/web/favicon.ico
 create mode 100644 interface/web/themes/default/assets/favicon/android-chrome-192x192.png
 create mode 100644 interface/web/themes/default/assets/favicon/android-chrome-512x512.png
 create mode 100644 interface/web/themes/default/assets/favicon/apple-touch-icon.png
 create mode 100644 interface/web/themes/default/assets/favicon/browserconfig.xml
 create mode 100644 interface/web/themes/default/assets/favicon/favicon-16x16.png
 create mode 100644 interface/web/themes/default/assets/favicon/favicon-32x32.png
 create mode 100644 interface/web/themes/default/assets/favicon/favicon.ico
 create mode 100644 interface/web/themes/default/assets/favicon/mstile-150x150.png
 create mode 100644 interface/web/themes/default/assets/favicon/safari-pinned-tab.svg
 create mode 100644 interface/web/themes/default/assets/favicon/site.webmanifest

diff --git a/interface/web/favicon.ico b/interface/web/favicon.ico
deleted file mode 100644
index dc71b5320c890943e4aba52d80689deb58c6b39e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 18478
zcmZ^LWl&pP*EUkTxVyVM6c0|JXt3f^+@U~mcPQ=-0RjYfm*Q5S#frPT+nf8D`F?&A
zIg?~2d(GNs@3k&DCra&$JUS`~Dhvz^x}t)N2K1Qr-wPQL`YsCVvIRXLnthg+fqDP$
zQP5SE4E+YlT~S3AX#tT4kCiPvEUga)h6+YeMoP;o=cLQq*FeYn;$6%$Q?}SJO>lIX
z&B>*61%=vWi{3|J1eF@A;KfKu53Mw`JFEr$Gcz5+a=2unVnGVPIp?RC1ur$4V&~v9
z%Tn6TYW;Vcy|exM;V#d;_?-_cN#u;T+tXg|duy4(`)lW-({6d!Ic^)VIf=Zka#JJ3
z!n9U9|Gy8kj9aIW-pjEZVKi1CP|GK;tQ>5_L?4gkZkKh?T$MLq_qVEU{p?d-;v88O
z0vd<4v!M%hWEfxsfr=!QYM1i1l0#-~9V60^swLzK@uKJ$Wc0ORukL1LHt_wI>vE9C
zS=)Ym-RUAbl@lztv4tHI795^zX=_QWjA%UAHn5kEmq;$${Rh>vFwMOj+8`xf7?MGH
zgbu{Fdwah5AfPNqz+^JJ#W^SCs<PJ@P7w=_FkKC3C~vtdG!#oA|EpXnI$8-EAoUU4
zhGmk4C?DTAx8$8M75{yC`TOje|IbLdhA=El#lzR<${NVST!rKIJA*KLZ<g3|uxxa{
zv}9%xQ;y%A@3(1hO!J{wq+lgEzH|_?a2y>Bb0UtY>Jz7|{-2eV0Z8u3Vv`-IgG0xq
zD5sEo6+v)-?{2D9z9@pqi!oyvg09=XQ7vIP3w!m(>v>PuZ*wq=TBu}#&7e687+hq7
z3I^}>V*h3gVx)&`Z~owD-Zj(5&=@<pzq!A?7$U8yGu^gjo4Z-3AN&lsNKH5P-@DcP
zv-XaD)g1C?(Mz_owbcnG^eHjHH_K()4hx{BOH@`sg&0{igaeSm+|c-A@J9@jZDr`%
zLaPoIZoz~5Bho-EoCAF=TZ{^+PJ`{A@sA&G;Jv8)KVJ3(?54^;e>p_(N*`OnAn5(q
zh8BQnAmDxFz7}vQ5B+N+^+*s4azQOqU+594MupcrGbK&)shOStJUqkeEA)v7ISzth
z?yDo8B_>^|PYksA=C!+vU-h*G^(Tx^$<9Dc=he;UvXaenv;XqUfBbTo1*$^CNjLO|
z=e3%W*Tf$iN5hUTDD>yU$Cn*`ZPNe*1cXmPV1KmFbz?I0em6jTLT4M7g^9qV+*q=r
z+}`N(Lk^-XeRvw@l<+`;bvW17Yd*mYi=XqUw$!7Xu$XXNX@<P^6N>*9$I1884@BVd
zJnOGPrap@tHvjkZds<yvAlge*&c+7zGGl1IVms<rBkr5;bTZlDL2*|X=J0ozTDFKc
zSlnTkOVNaMBj0#_J0sW+8qpDa?5~@IMqYhHg$#KDS0l8npvC4_L6FUwnclZTo2(2_
zlqGQ`B4X8Nr=Hi(s{^kX9&{|9a9lSeS1PxM7X*Ifi8NSx;%b&n0f4{~#@~FY@l*b&
zsAhxPPuc$A=Vjxat`9JZJjCYn<p4ev`rJA-yf6!z@RW^q3Xj{kl=OrmOHW>n_PLUI
z!oLgoug;&xn>`T>5+vUG`!W3vwmtRI9-TloQ-UhIX-f1NJf%T*cNkAkPhk6%PW!&#
zFwE|!BeVfjmV5yd*pzfaaf+DIDZyCf*F3R~j87g68mM$QhMI>*Bvb@*iVWst=miCQ
z<z#uuKGd19>Kgii$6gsA716@NVLrC;(jqfHbX>-{`VN%2#-rXY-`SGoXV24R%e<4j
zd^Yc!-}r>9zSqO=q^+y<6U-o+=;&yiy$Ru%Ha9Dr1V$-lI#A`wN{dy_b_U^Oj`!c1
z2wu_e%NhM@dy^flGU_K*Qf%cFHXGrj65$}55)BtrO+_p<An?m>xo^H*ZSz=H8ap){
zqxjML{eAYy%6i!T4<SfNnH9{!?ZMfZ$x{7$QBMsa7AHO-Yr4eUqKKXKL882N4rk~C
zVl7^;i@{Jlds%mPR#6eaex<bHk;>=(`&K(gG|fnf$m3kTwh2+@?)~chcJ`N>4pos_
zm~YcYTHs?*#t+xFcBE~0?O%U;<OT-|$;zU9;QHZ?Vm_4i;1p?HsaABc1J8ii#o$7g
z@cP^_LPVgU)ZT$q>yQ9}(7xQg8UGx;p`}mYFzVcBUvcVL6=9B}kn-M1l$gTqf5vbY
zmXwl8a@m$s2lA7s%sCq-z$3L=+t>`(`@YX6<4h+HZhh(rxDvd%aW~hy>qnw^*d1ro
zh?pD03wOORiTORF_8Pcdo(}yvPQ<w&bu@YU&X0PSmSRECN||h>w3X>hnvU+V2X`}D
zotfz6nb@8IUsg>kWw4%{Y=u5?zK%WJOH|QsRVFK|c}r+2B`xi>zSMG<Qq}cZRX2^@
zr+Me^SBXnn>IW1q=2Rsf4_h%!(7d|7erOSsyZcR@!!v9=+2H^hM<y0rkR%WxGe}&(
zUKd~JdatJ0Y5kuojfXIMADp$F9WS_&QJg8Xv$3Vj>SV2pT{(-7JT&<D$KW=%^1u)m
zS#&gNq-{~3cv|d(;nD(vcbX=$qA5$zcDrucXBvtDJ_pn!X1N67;lI_S*ui19x5-9M
zHa5%NV8}q-7;S=RKp~`(HBc4|j#f;z%@n8((gMQ-x-Xk8KnBP}=i`olh${m=NGQPq
zs6zYG*pHW5Y7pl5Fi+Nv?*x%Bs)VW0{g#6fYMs{4CKl^FFj=BoJ8NpJl<n+rlS!rl
z>K^th)D#PK_7UzwMYUX)4EZ>=Jelm&qn^VwKT9=Gl;?hV7;L$a&($+CGt2+sgVq~X
zsx$$CsdlRc2zyx^?>ltIfM5f>@t9cIlzBYQ^t7~6s6vq^j0B(WJj_-w;1ZF54}!?h
z-OkAGRu2*J2e-=cx{?3m!gQ{6?iagS7z{FNML|9-i39H=e0X^H;_U1e?m8Eic8cL<
z`>jhN$Tkm`iH25+3=<iD)!{vAM0*O)y95jlN^ZA5d?B(KH~N5cIV7t$PmKNM_7+d^
zFbz5duTjaf8`~-Jl&|JpSfXfnDe384K6hGX+!Azi>rS;+PDqEbshAoMoN(Ho9DX;N
z<4#VJa;xyd@3D(`o{@PSI|aC@%YlPn&<NN_px->6X9{1>&MWwzedg?%ha6wh18UpK
z%95W0uJheJDEeIJ4Oih?^9H#bmhZ^=+}yIhCON&8q%6rFR4J(<&Wy6@gF$NASpb-J
zkcPfK3}7>wwT7M`2Hw~9a_c@{B*{V4<+2+U4<C<C`1wS!99+W+U1LJ-tw=CHpqf??
zm?ben68O?XK3v)&IJw7O3BNw}w8T3t>gFZXM8aLWH_^6H3^{HL_5#lFAni~0Y}j4z
zO|lYIOa~m6mMx1Vl=l98dlNtFd8b%j!F(zVg7}M05AcxRot^f3bctH`M^J8Gy|Q2V
za$Sf9-HdeClrwG0KZVsap=!EB$9&eS-$8|uRUh<}13NIXw5<Dgz-@gBw3#EBY0QBo
zA>wM-2*srLk}<|b{v`4&T-y_NH}K4@GDku*;v3NFL5f|wH`Qg5hxJm1MZ*vpjfJPg
z+>KtL0!?j}7|uHE#nbULr7M{gO08J3V#7(xz3an_xPj{IpThym41#A&ckJ5=z~rts
z&5X%o7AvJ>;vd&i%dkKvNzDqPb`a0&$&wcE4~*+*68(aKkcNW@cBbI@i|x<ipyGIi
za`4tbX{1zO6q||R>Z?%vc)JIuSr#J5=H(s?<UAvGT$NKY_rr|j7x=P|7Vzo;={nOM
zN~nP^PoMR%e0zy;BriNS{R1Y%V2Rd+<0B653&DJgzPpodrEvEsO~i?folK;C6|Ua(
zhGjGD3_p?n@hCRRW+JJqqsU<PMu;Y5>Vgx9#@S8;&0e>##_1<)Y(Nb{&s2LJseGyi
z29M7e)@dmiHQZ)yF4^?{%z;d_m2i%)+I{(<EU|p0wl9l!ziS`%vy}7OV@%YqBtC(>
zUlERvpVQd7P-WH80*yIzoqr348ygxMdG9X0LMqv@0en_G@GobD@1U{{+=c6dQ$_fs
zyfwbpS2>uN-sBBM?7);i=1UP1S)(xhk}>#%j1A%e1`CnD_`pM|CNB>xfiY<uUH*Lv
zO~+opJS?mCy{)sdZmWAeN3MM<m<)pM;QE5#SH1Ga!Kner+u9OKwWhmg&`^=B*>=BS
zDQBq3?;fy(1_oPvl*OLN_7q<*epffEBkGl4gGRdQ{2XaLx?mh&TeDpr6J+@M>L+?L
z!#Qd(n~^3R&_juGaB?!xOuo)O{p0d&08OP(aFI+-h2A=gDsg7OU0S1p2swk>9J2o7
zSBE#<vK!5o_nE~U9~1NFIjde;2o9YzhRY&+@7?+FU_Dv0ld-D&uoT<)iCfM@<YU}G
z_b4Fp9u0P`?3wUWVx+oOPD!g!6qcHfMCLK11K%(Kc8eE{pz}gvu52BT^z1$uGaYNq
z%*0bihp{K%h*~mfN>?{6WM4{WK{5|>S22pvnvU}Xn?g1O`{i6w0e>)L2*3s^W<td!
zEh}U~r4ru|`CX=+=X*8UYMDvNr;?nNb-A>_KAv!lA_Q)LfKkcGU;UkyJ@lGf5kNL3
zL_?T@_KRFqc_v!n9#Y>XKh-E9+rl1^f?zECk}PQCy!EibEaersBmCz*2r8P`fPV&R
z&O1Sg!N<Gl`F3-BbsuD&&sJ5c^lwpN{QMAc6o+bq8!d>fIl^NPL+!nJo;+cSk+MLA
zhi|1g5Am*2Jfp2He_;M_b~V1GL{L0E?W|{lgxeY$Gp?>QdLvkp>qbi0fB4L~f4_sC
zn4lWYf!;tV9UX}dPfAeJ<n-=Jvj;jkc?7r0b*&}(#|}oKRMVi+<1ytx_0(-9Ha0on
zhabwa*i?8yAl8)B$46CYL2EmEN+>$!#tXAUMH8VUVQw|@+Pr5kFhDOc_CNH#JGC3Q
z7M&%=g}u3b1i91}=kZ7Mt;;BHo6Kb@57lq}@iIVwH6M<Hmz+!Sru`jno@)I56g7@M
z@Dh+_$z%7Ij|vI+$vkmX_Xd;5-2=VW$%#=U3!~m&n)GW6`NquVT0z9g)lucNnI1#9
z>C5`w-ribb)pl)fl145<@YB;MGVBinX_(PqA|MdoI*X))s4Vi3#KR-`p%+O)iYF6p
z2UszmC{MtyfAh_pdzhZH=Vj*@z?A=C^m<w>eBaw*mOvxeMo%bSWQ6Q#<3Y;PIN37y
z2Qj+D!~T(JtO9al0g`~f0Y3n_B!yS52z{7lJWXu&KxpVS&9Xe1;g6=edKxBh8Hsh?
zfZBR<zEv$NThMK1#8jF0dKqH45+FW%O9pbHVt|V!<|PQs00jkF@O%*kaTm4+%g}^l
z1<%gH@u^t8w4(SPq^W9XYljyxrCaeF4eaN78o4gA!y5Tsjv9w}ZH**;7jX1~KMXQ`
zY_pa7i9;LJ3m;;pE0gEerAWsV9SnMQt^i132XpuF@o%IAHrX#Fr)I`pr<i8Y)6<7d
z<oO9SpYBMaQXEQ6hZHV%`LL>rUy>@%Ir9=<H{^u=d&5<wK`KcBM#It5@4_7Pg{cmD
zNYdc-E!NSK3D1uA1}b`cM?=nF$HrM7XV~-i5+eeBy}kNygv_5qGwXh;u#?Uj{VY4J
zS!2+4MbB-%XP`U)qQV}iH%LOjDKfuZ8fUJT#eO8EgCj0UM|L+H@L<C#ut6=gEQQ9N
z;=1g7{JL+kRB!c}Cv$CBWzK${FZEXp=f$Mo^4OgAVdE%dwZqzBNl{f*Fx+%QNFaXu
z=NC-piw%l+GGV-MLjT5qfMZg|;_iW2-Dm(l^4OT1)X(YdX)SHHKE;BfqDU=MIO-3U
z^vqBQ1N^xKZQ=<&^`>Wn?mAc@tu*5Q5W6n==OzKQbu~5VK|%f!|ETEWk16PhvaXxz
zp=Y#qGLOiLzGlccz2t8#$)8I2a4GRJtLw^X>|Y7SEq+k)sBDwT290y}Agj#PlQ8?<
z+*^6wwK00_9Y!p+y3nhrklHw|4aSp`F1CBHi+s1A09a=2*<}r_=T?2fL}Q~K)HPgC
zWY9#WR@1_lMaH8ib^Yl76nu3>qk-UpC#$Bd9SC9_+(vP1y)@U-j+a7q@%C)F?nrb#
zD8=&&q~uHSH|*^E2`>X*T=)&OFzI(Ifv{Tz6AdXFFsx=pBg{X#ai4xX;_G?wXuak5
zyu1Emm<`G2(7?}}hB7>vV^3;@%|~ZPyHSj34GrFQ$noY`e_h9UdTg`yZkrv9l17Pi
z^wVx#<|ce6TzCju8XI#O6=??e!UhMJ&!dlwt;IlFyQSfy_HtU@-eZ`s7HnfmehnGQ
zbZu|p33c{MUGAP9M(P@~w;MNyf~&RO*YJO%=52l#$)Yf4s;j9ffT_aNeBVcOKFz9H
zqe+f`zjl4u&mOZE7A!MHhUL+nl#?_yrH**POHtbBjhcU)qzgQvnB$Y6D;>5>X9ty+
zTSroQJUEM}iak0Led^_#^ouw5y?ETu|6xgY>?X>i948yqlcMIhi9tOADhXYEwC1d=
z;*;gUmR5gJ3k6r;;p4jv+)~nJvPmNE`jwV;F_P^k@!aB5GeN4W@1-fS)-{26iKnnX
zf}*BuK#~F8H0v@LB#n0^GQi+enqcO)b_%qstQ7TuwlwJ#YFUQjmkGYfgwKaAqx6JO
zEW%TAzwoy?LZ0I7zde^r1%908d&gOCzg529b3w3aAivX^=<0nLTy0Sd16k=x-mQ5c
zbVI;VTosHdW!3@~R#oL3J6$lU1a^X|s_t8c(H4qi7x+;79AFyu*<fU55@A#pf~|d!
z)rl5RH!iOlC@ioP(EF}RoH)YNUMSUOwCU4Dgv>x{O3ZJ^JrpmP16&fD?HGi{zOeZC
zme>Jfbjfv#O+JLGqTM-bYirK^hXMo61mf2dytF)Pf@H#`wf(|YkmD!LPzzZq5*~tm
zl=mSeDRp&NZbNAxf~6%h9+1n?fM3Vh%?<guX?ItwCtL9R$b9Uu{b4KSbFUwcjH$z_
z3>a*S-A}nsOO!GR;ITHC8HZ<4eu(+_MS3G-_dW1K!J{;g3t)nv_S#`X5^&g#@j2b7
zw_LqA{O0XDAOGciGG_7@%+Nij+-(aE{kpA7KU(#K%`s;cQ&k4ujdijG<3oB8HXKl?
zMH8&>$OV>yl2Vd&dpMXSB^|$rg#{fw*?awu;B!MksjH<_(Ca@0LIdEP_H70<P`Kf!
zcZ|Uj8JbbcbVD>rFjaUF3vyvWg%UxLwTvNRybomJCyb4j+vEPeat}?vW$IvLM!)fk
z*(2u1frp&!MK=8#qoG)0v6A~1k7MmTzdiMUnN>{E&b0+APGZNu`wC;uNUG1Jp;#QD
zz1N)z2`mf8R|!ah%-I-hOdMZ|5JHM~cM+Jt0P}4;NY`B&7weWNb*By?N2mSSZx-jv
zUxev+_};1^x>Yuxpee?cmHl;)1&|uUJYvMv|A1;tDI4KZ6f*a?OQvNie0+`+psU?%
zew%hd8S}D5i22VZYmd-yVXr7=ZT#WVJmTg}z~Nu7+q4*kq$RXxiRtQE`>z(tEI9WB
z&{?)7-g5-Ly%~LYdqV1_+<sI*sH>W}d6+g@d&uckh5zf0FAFSZy52UpMNfXXh>%e9
zezXoXiN+eMgpyBx7N#WLvrh01&^SA<0K-u|s9V8aqJ2#ZtI8@W@L(Dy4wc6N<*Xwl
z?$HRkd6~8^h*I7cE?4o-lXucsOZ~_h{rT@NK><7;ubtS(%{KepDj*aR(4;!9>c3q?
zteX=-dww&by_mWT&tHeFpoQ9gbgJx7EUSBWPoD4g_>kiwgwe;}FUJS$7Zw}@DW`k1
z3Z*zDA*se=V;VO%-^z*j!@oMc(m^>tq`x)B<Zg!hD_MKKuh7i2;9Ioi>roR)bZ4>F
zv?nGdY2Z;av8z1lb7ff4CL%M3oTnwWV_B<XN7X*x;^@6Hgt+n*G9U|6)jEjWbbKMI
z@;QG!J%u6?KV+cFWGHo44?5}J>)DuTGa@-I=M!m<_Ak$r47y_&fgwou+?Gcl$)NlP
z()f3H%BbSOXhif%i(GRl9%5Sa454^=Jw;e3aY+mtLts4h@_24}dn8e3KAa{K5U@@r
ziw(s|JWg*u8A2{B0AzQSLb?M>78)dcqn!@RMh+~{Z<%rLnMBOgeOZP?l%KQcXt=67
zsB50<@Ww4{+mtGEJ6-37l77<UnT?tInhyUO6D7JY+_g0`_YTqVKjN}cFJip)TT(gO
z=MxRzU6@I&vq)fMcDcMEJ#Zq+d_SPej5O85NZVD@%8^+BK0TpB`E1?J9aI9&w&3n=
z3O-;lRVvL#eF8f3zFKUiV3Tka>v|eqjp8HCXoZawWOo`gQw*MWmA1JT%z8FfQ6Z1D
z&Yt;&s>dbnni<!1Kg@sMvW8mN#&<fe_jtXpWM*Nt3Y(WZEqPh<0(deGumJR`cI76E
zCd@TK!-dk%Qc7$qu*}Y6NUDfI0~`N3pNYE``hI?HtU6{v4zd)cOXi013(7-7jSgfh
z#jWLZ8H{Dv33hb2pOm=b%PLT__NMhym&(17Q)9INGJL?nf1|$T{b%yl9F{lf!9Bq-
z0qirwvBVju_M&Nap6h-+uSqr}>(~5$d_l@KWJ#&D|1EZ(yUVIapE5~=fe*(`3wbL~
zdG~B$)>%V~@JRPO{x2Wwhp7qXY8{XaHLq2^Jn(rPgqDB1uFwRASpe=eW9jiq%t}T|
zk>&Fwk?~|L+(0E0eqY=bn9G7`@W*%~oIn+T{FvTr9Pcclf8^50PT0dRfBo)X@6bRt
z{t|ovnjpTt+czHK7>BPdmnR~4EJQ)fcYpq%Uk5dyp`un)=N^bmxU6DQ*eZEV*SpU1
z2&)LRR@t^irApp8vh=0605wBU;C{QOzf4c_cKyb^nz!jT&%efWi{irxW<Gj523czA
z38#TT4y}+FC@|!=Tb^#VU*c&c(QDh!v&=`+p2t-$FM^!`k*kQlx*O#j$uh^W=KnaV
z@cf{~1!n>T^3&nV8aNTzKnYgDg=9RsZ3SlakohDo+g#oV8l27eHHG)7{q@BHX-*l(
ztk$9eCK_aa0G8rNh_&-lfWuEvFtXO>IM4GcfXQ2*8#NVFNri`VNoPK+UFY{qP?Az?
zsMGZQWYK*dn10^nxwNjEb}2nh@&Ra34r=peg!Tez1T1rW#viW7tn$3~LKoD%L@X9f
zfLhAS#4)3s7CeWGDHXg544T$iNh<5W4<WuR*eSGPjacBo@Rzlck$by(zP<3DFRr?@
ziSV>=i77O$N<`^2B6sP}$U$m@ROMF*5xcEt`?;m4G3DjuB^5Rz8ueaRJDHRJHFvyG
z_y4X}YV^~*_f5)+7@YSZhN71bB9tsdu(cTE%QmVRGh9Gq?$5|leghUIH;j}Ds!zh|
z)G~=8c!s!I;aoB&DIckBrl*58(q&87kfaoL)*|#i!qK<OqSA1ch7^vGzq_f04R531
z4=1Lir6elh&(79s!klOGSng$!iwFq7|MOgbHRe^h76I9~zCG@9dDvor)xMrO+HBUz
zr$dXWg&)|HMT-kCPW0#Rmm`=*LUQuciCj+#0Mnp5f28H;$<ybb*L45~8n+fUru{Ab
zLYZmILK3i_jDS4L{TIqS-|{uGB=azED^q6nWC(x;V!FbST0C3;CUJ0J2V?yc@;HhG
zwyfUWCS-yh(bv@_BA|3r#7Cx<=H{z|;&H{Y=LYdVBE&32)U|gfOG^T#fB_9=O9vL<
z2o%}2Lg@6cq_;$tAH}r~+;$6+Oc#S@kj6cC2HrAK$Yh_H<bzPxImh0}{XV&rZ*j*#
zRTG-S{olAR&NwIme|9go!B9a79_h}`DwqE?q(ZCDY^B*%4V^@74T^vh#Gk%CJrB$i
z9+P9@$8Pl7;W8-yV+?J*y(ol-Vk8W}!<S}=U3WN&JU!B*+GBkCL>6!1PQms2#U?S>
z&viE$Jr#@$r8NPUehpk?G$<R<&oPaE=Ko^HR6vQ-%4P?bJ_KmKk4mWF$DZ%WH#Q^A
z%W7&E$)0@_k^eU&m9Ed-$+Dg%uS<o)N>enH7qIEAHw-8$qd|OBkQw_;dOE<12kzUw
zIGmTFzi>MU!+}H~0g$&)$j9p&$b)nZ%-6fcGQN?F*S8)NU1#vwZ2g4Ym5x~Ue(>xm
z?C4<qZzT09)-`msKIEDMq^&uCNsay^s(d^d9P{Dv_=9|X*~42JjjMQKz>Bp%RvEh1
z2B|sc$Qp8bEdfAHBWLXUhh_b*LhjC#@#YO)mydh`0v``wJ;)AsHrHRnA&@CgdM&Pg
zyPs!E4Gmo&5I22k=SJ_Fz*HVLlIl~?L<WQ$m+o;`m9o5FqMtI9GHJx7URT-jIL)E4
zsR>cdP*Pgjq2zu)0rtE5_v?+T_oy$vUW)1`p7>hMI0P-#;H>9pu)a>&9K8ALAuPj}
zoM;E{18(-n0wh<S!Z8tX4Ye@%zZOBLlhlBEn`?sa=eB*<WKhoQXL~z}^p5~TLop~P
z_1f4%>7^r$zzAE_<<la>&!4P=OfB)_V5Tn=Vxt9Ic<}i<=pOL9#*<0Qdsl(Xer{;;
zWVwxW!J};_39X`{f@1dh`0#LhGa_I-2;L`TEx$`!y{hzFu6%=zeR%cn-+A?~B5jJu
zj>`>JEldifM7$u>aaWqG<6KnyC9DuNx@<uQP*W57v|HOrz3kG&wDoySjo{<}=6jl$
zkA58+?!qmUX8Am{9hTs<+Wxlj)o|PsoYUyBwz8bn{C8gY2*$<o^JiXev8mQeTrL%f
zW2w3MIXIS%mWWr@JkymfPu`jK?6J1}&fUk&{m-J!_G?3HT|Q7%aGcXPX;MAm?(ONB
zSM=@xzOnISkPlrhfkN8U6d}!$LGr(K`LC?S;j7O95$Cap+?OLnI0uJG*5e}*2NN5+
zV~!_YlIFnw=LL9vDzCKbtuqYW;;eTORokVMa4C<C|Bmr;Dg6EINWA%NxM#NeN|op|
z;$W?rm@(OOz7wI7Un>b(lIjEA{d>2gS<|>2|7AdXq9E9iVM?FKT#**jECwL(kM9F*
zzQywV;mPu!P*WlVfb+nT)%4pdRQ>ppO)Nl5&FE(p{rB%)x~&}}DWJBo>ow5YZdK(r
z^ph5UxP!=`J9~DCCr@Eg+UQytrPZ^TgxPbK#NG&4N0D+7Nu!9ip%`X$MPNINA=Qn5
zY_|g;?`E;tgB1yrLK1m2RmTXbqZCKPzM_|)=l!_ChL({~n=B~#IbbF6jG!eJ4zlGF
z_yTHcBOd3`q;kv=_nX4~+FV7N=-{S`BuxJ`ud!L6Yj%dqhLuU@{{G%JTcBDt;a3G2
zKfzpmh_A<O#<so_D$ppCO$*7`E3Ik$$p@pm5pH{A^Q4eRR-@D_R)gL$I)WKNAo#30
z`@%j(-EB`^d?~{A_%A!zCoe4O4R9s24LMMko{gHb2`LMB7lMvHT(5j|bo4M`B`!~s
zNrfG=*-ill%`FOL=8AZlWN9lQyKFbwG*GO!d#om6cRe^I=hSz(>+5F;Ec{XNHbPGG
z%44&$v4Pe`R{By)JUl#eA`D~+VKwZw-C!D3#t*45SpgoLU6U&fPMSd^lcffUgJz#*
zuhp>dm~m(WEA7VRN*s7???eIR0#3_=n*$MQczw@np3JGK_|R1cWoMvbM&D4J9k)ty
zc=(UE_4j9z(O|mfU7FAyorKfYgRC#++jLo;XT9}R0P2)utBH*FhrLNB_t*z?p<k{_
zf;P4`OLd;hjZr<$WR{&+6H^vE_N(oQ&CP~%NeCqxzlexe@|$ar`GCX%S}>XL&j<fn
z1)l%1sA$m9=}Se&Xm`feIdQ^^WMjcahtlEpH+jR)dN5}TXRDCDmf{0}n@5$LrA0-)
z3g?_+CRhL5RO|h_dKgvw{Ky0DJ&oxzm9Y|zkqb@q-Y}W47hY{#f5b-Nk}fU%i?!5~
z?Y-43<M6US{>z`sxJ{A6BD~uXz%MA6&CV`D0jbQc|ANd-$#i~xZvNb?a<bS>yi%u7
zs`N82II+&zFu=0+1PhCdPzxD4&+q|W0$(Fgz!5NVUH5Rd;_j^GoE<nF#UXhrq-r1V
zSdtnUow3{<^{1ifJz!^%S^z@Y_B6)E#-K2G)+QOBHSgQ$a_Ylpiv`yehn7SI29y@p
zm|+h*pvhNg)vDxNY5uI7plK|Tm@AT9%T}qYzT*KcfctgqU;lQSZ~j<mPPKz3+3)Qo
zQ-c5F672`Hz!FmnYdeR{I6<SbY7fFgWfI^VHh?y{PSJ`@d3=b^fo-m@kxY4RXk?Kn
zJkCbXf=3|SbazV7-hO3whBpE3ZR3ClJrpZ8;Qclw|C&N{yyzvz4I8I@0U`w(t#yzN
zN66*LUkpZF@H?xCuTS}@_{rhw#ZC1ZY9uk$W58vYzuM&t$h6>5beE8%<Up6b<WE<V
z`ANNrqdHjOWNl(~jbXpSfw=qBFrD{)us3P<rLy9Bn8oSXKkRF>y^H7h+TBsBi>7~-
z%~k=H8EPL1GE|XhY&!e)+Wx1?xFzcq>2BuFAH`3(LvDT31M0!K-J+t0o9&z0F26mN
z={4qrZytDHv|x*YJ(!CZ71KDBVu;gxP&PEWOqo{ONNNF`$~0T7pzu@@jMnPFPM4%O
zHkFsUuZdow0>$}?e<6lZmYG^Qsv9xJFEmjWG?f*|VAhME_+Rc?Dt$bsC(%N05D3cA
zG2`s~eCYP#FM#uDqm3KoQvGh+S<Cj@NBO~giQV~86~Wb#yBl4d;MS$<!9M`C6#js~
z_sZ$l>SGcF1ZGsU7$znKgy+!*;j6UWnp21k36#uDS$pSow$}j6mOnp=pc#ANHx<Av
za5=|)%-e+j+jhmDb^b&Ru`yG$b^)GH?OF{nN~o-=P*Nw~Nu#Ptyb_WAtr-o+6Mui~
zVMtUis$fy7b&4x`s$6AKa`X`ds*hMGL&XCs$saSTxkE07pFYK3Y+PAd@DK-Ts}ZaQ
zyazPqMEh`QxatStr^?2N=S2?ta3pK!!R261;LzkCWn$`5_{a-`yg3N%^$>cAfIMGP
z=@{por$Q1oNf7fA`z9^mdS6`E?;K8^4p)U<Ux{$^$q*P@4dPn-lYZ+MOyjDG_Csg;
zx*(d-SEZDxA4zfiw6j#^`vz*^xW$VhU9a(8MWqkS^zFfcX#dqN=1;{kY(OJ&A^X#9
z&AFpk1)<-E-9`kvS~h)m%|b{=Lnu}pV1_Ex8b+P@gCZ3IUPuutwYk4uNhlSfnng+G
zLMLn>Gq+;U&)AMPcs}1vr}}R*Xa!@iX?=@532DavLRRNOs1Z605d>!pPUEcVx@r%~
z)xx&yz%X3ENmhC4YorP!xJi1bMWy#vG`^8?voL~!DtVNOzQdfm?I6A9MQ??<`-YM3
zoT&DT<RJgTKhY_Vt_INQ%I&#%`*K-nC?)}b>sTT{s{TiCO(74WBZWy2A}{)cbj0Fw
zuaooBlfvgdNBPk&TaFZB6i#=(;`eQw7Cr%OPWPM;%mk7Q2^YM{T|3SJ<PA6jo!M2f
zz<ouG7RtRsB+6bsbjgz|QOn=2_wQbdq`*9T;Zs3U%6R+r?uzr|Op2zN319q3m3ew@
z*kS@s%ZXH-ZQ^ePbew!qL4U85;W?9GnH9Bx$&PliO)9APiZ%Pw7aWua+g*h0W+yq1
z@?k7&$k-TR;d%`;>vfo9KU6fiKa$GcE_~r<j|dKiv$eBZsxwD|9H*gB*Ffd>&IkcV
z1K}c{_1MPF%DyK@Y3V39)<73?EyYsQQLrt;`#?+YZMZe_^o8kF?8`#QaUziz$@T`U
z)-Xe<WX-;+!m(}#q8L!-QP1kx_!BY<jam@$kBHwH2FRH`fOv>qMtB%b)v0BcK!sLx
z*0O%q_Y)}N=6V77Z|L>hDd#S`zNhrdZFv-G3Zy+e))}mj!G}xb*Ry+dTtx$3N*d02
z4Y{+Wh^awd9))2kPUb#aiP*C?JeHZ$N6kfy8h`Sx+MibqQxvH9n--^7ECHUH5{>lr
zSsbw*kIofD;bBEjQouP^g;LZ^HL;+*JqCjXc0z!Wn9p5j1e9{}Tdv+iI@hRuD}^|M
zwNmhVs{pW?TWa${VWaDB6#D8ed57aR%(SztH%+O0e&v9JT8DWHoU%$Zbj6@R$7!VP
zi>%Z^G&JVy?*i)OfW#4#k9@IqvW2MiB5<wlhSCWY8R2n7Ob6WP<L=Pjvg8MVe^N!I
z74nt3)N5VOD))H?q{6By(z@nhvZ|*8^=rLh5E+;B&J$^IbpDKbzhF<%6%Ax2Y`AJl
zPK0MaHkLI)Ys|JIQW!>D_{IBi3l0an6{FfH%18_Fs5h6u10nux=>!W@qXHf4O+pp$
zx{P?6B|HKGbwi+v<{XBos&+ZcdA6|IR0yd+)uF_r&i&%9A^hJSK>-3zX0{jR3wA1X
zQ2%@=VAA*{K>1<bDiOjvl0F8De_K<MIcFknEk_{kSwML_V*2mRUqXyH5-lLHuG=Ix
zYM|1X)<^@eG~e(NjUJ4OojDqZBXswu7Pf!fF2@EjwP4fw<9We8S6E&ic?tY;a^VM2
z2UzP&=8C-cK{=aT0p~8(-u7b18O^XqJ`R8lk*Ev>lt%db0du{`?66cXj#ma3{YM)1
zI}4ieh0*bbe=PiSA}A`wXw5c^8DSP@0tO<@YFxZkMO*>~uNAcrDNn_Hy3<3JB@i;y
ziTcI&aR7raJ>2He85l=79Zx=~a2S`QVc_vsZ=Zd=@$h!e%ymeFq^g6J6)jy$`wgb`
zt7IFT^4~%i4fy2q7r`WSTsPPm7?w-~#-qmUC0*_EYKuWW5+8k+_LsU1u1bK+4_`QA
zI}Zc~^|)c-XU%-s&oX!Sv6A$bjz(s9U@o#m(xEHk1&=r{gJCXZJXvaxoi0el#f5u&
zD51Ebf_OSPHH)DpN7(J`3Y}ED=hV5&yzj|hWm1Eczz4Mz4+{mB7bo~BCY|SUWnG$G
z0ex0Yx+#V4iaKd%!;P27XT{m))yQwqWEYm<gOH>=jP_}%4wvbuW!o49`v+|1XEJ8t
z88`=g1m!uXQAg~e%@=9CkqqiTArkraQN&YV+uNuV>&OOnK?H*hrKq;~E?Xng2bqUj
z37C<I#rKl0s(yRONhK!e+&+oSl}RnR`%?Ci2L~@T2(bZ!y#Mg%qYlDIyc7j`?ROn6
ztc-r|7Qb8>Z`r$0!3Y-Toom<0dPlLxpR)YvP6Qq*zv}Ikl$3~hzwxQ4Oe!$Tvqrn_
z#u7Vm8k{rLo<XYEUd%0bodSDkS|#|~O@6pUhp)Ux)sNToH%vrci|L9WB;G~lr-n^U
zEa-n3#;zKO0OWqyB$S&le#k;=T!zCe&*9A<rEKT-xu`A}6TXuszpv7p@Z&Aqiyrpi
zAx2ZtgqyU~)IS>d^Y341N~|{C=@?Y{<yf!XRCPi#fEI%8l^L~d+hyKfvx{r+loFG2
z6@~o3{W%T)>j}(9Ub9)6%@8RDRk?yO-Y8Je%0h_uhGg?TQYXEMLwtb*QBK}<X^n<1
z&~HL*bR=42Gq?-D)Tf~+%qad;Wusp!<84B~k3Z+m%+6ZsdSjiHoee9juin{$4)Oe;
z>p4H4Q={-G%7sl;fxJhD2ez6lc|($*(bmg6r$sP@CyvuZ2pFfXW2LPe?NmnO6bo!~
zqV#ek2#*c@!s(0r$xy0{QE01QTxW(bRw<qD%eNt8zc(R1Af!r$?D1v$_dbmMCZ`Mz
zB;eeR1AoAsiIcUozCH=sk-|^z8VZ{aA(W9p<|wK}Z0#hdLv;~TU}7~8+>%kZA-<IS
z>n~P#Dx@Sk6HhvF;wE~nMe#ltIhXutZ2=Oqcb@2Jy^f^cmu7aQ@{!>4DD_7^Y$6D1
zEa>IG()>clO&|roTwhNb9|XwqYd^GuD(G;y10LknXWXHgU}EJg?li;e_<lCHU~rW(
zK>zl_?3BO;-&ERs_XXA%)wnVNh2a<fknhvAmhVN{3(PkP(Qj{y#)D<9wEjAflXnLS
z(MXXEV;>az7CQNVFFz`FQ&aNA(C7)IH}-4o>V)dH%s^{TE_nR^k~bd;HMA1H+8U^<
z(YAdBL@Eg1vxNq43%R@B(TGLae7d<Krh@9hlcKltnth*Y?e9dbE~f+h7nn2geDs4o
zJS{Cv+Y2^eH(W0~WAlj#V-@Mk--bMye5W7V)cQ^0@ctNpxS7Q9g)TBbLNY}b_<4kK
za~D_pIuTHO$P_<Y=#Vkvd3wI`HTfvx>lk?O$HgUMKaBeBS~3SrKAtQw7FE2sA}jOh
zu-=Q}Rb4DKlS3_E7ot(7%QyFyKP5Fad7*Zh`%RWV*<#b;^v=28K^G!WQ-zV}8(%H*
zOZlBJ0%|eKSo!N)0#k;VAWnYt15kRx)PGtPF=Xt`ZR*AQ8)8ihVcA?hElZ#{%1U*o
zZ7ER2aCTm3AX#I|&ej%G(wZ^$+x#aE+c?U%bs4{sNHSWj?h#2`bpD{W9;9@?d{&AC
z(~R%m&DF=hmossewYFv$c6_G|UH_WHZ}$d&{I^=PqQf9Z+vN4LpI<f2AgYOgWE+c6
zi)3*tI65ofnfdZ5-2Pleu8;&y^(IHTIfv2=x#$Ak<|Ljr(qz?}aM4;J$Dm2{*R|u5
z>*sN|Y{42o`==XkWNO0G<)&nddT2v3{FE$cA0Z=3@R3V?r?mjp-17HNX^aADOQ|()
zF!*QWV4D`OkH?TjUPnVWqo}kL-=wjqJbgN=$@&p$Ps`_P{X$xMmczAazkw+UFPX}b
zk*=kvlBqPA;2*8c%_7m7iOwzqUm&-WW4%a?V~gxtd*Sz8UZl^L=R@!*sD!aSC?#e6
zbw$j_pNv4z$$vXxu58){*2U6p+>xIkhTHMw!Q`8omK!%)xhvQ1)U?0jPM7*ALN`j>
z@U5g<#gcHWxm*GRLCoCpax|7%EcgduzS~sTxOR>I(gxj#4eZ~Z`FVrDB2oBQMC(}A
z3FY#VDY1kj%C)%2Uk%^b%IXm9Ds$4VVlV!U)LCnZ!Au;U0ra&6I6P)j8~4ry9?G`H
z#u6m_Hze1LETPFWlrSIaob2_euC4|bF+tH#q&0^aCx7_Hb%LShu2D=@w`g1#(Ffp}
zf$ZfbkBUSjxcrU44_c0-HSwXuFB;bur8bMT&am;nRo=fuFFQQly;u64-a=6p6lA?W
zya<OjB(ubErzTadO)on64zHh0jtCzv?R2myeAE7nj>twSKx@a)rHt58L&%vtDi<+J
zVbAAADi6zwI(t|tzWUF1-uMQj;$)xAZT`lv@zmvWUk*7|*Zdlif+NBglgM4L9mEpw
zDLcvP4e?n&@}EzUxE=w=_!wlze1!uD1S&8u^}NGK;(HP1`J9!GYghlEUauqrbyl0K
zs_Wdlgg#JGfnd*>XNYQ8Q~WOmVxO+osT~-RQn9&BGb3r=z6By=ew0UG%N-)U&`kfZ
zp)~plcY+M)<6zjcGwyTWz58)TCHwFHg8P9bc(UH3+Qb&KysW=o*g}qj;`ej<cAwmb
z`@jUF#MjxiV)Ah~$hXz(6Ue66h6NDl(4kyjF;vfnK_QA9iK6j|5Ng;Pt%qI|Ahfq?
z`kvG2@L#8QPY4+Ef#v5gF-`mu#=!I(qpERvI8Cd<YBd!swaK+hZ%05ID9fMW^aSX=
zqQ2oF?(AOceR=G8QUR5WPipL<GS|Evovp6Kmy$zit|e}_y%)hiQcMcba!VfKqa)Iv
zIQHYWlV;!Xo*xRweCVBOKk-G#hp^oH%Z^&+AGM<@KwaJ-P`LXi6(1iF$?77ZeGUV!
zsjCGepGngXI}WhN@$KyiXw2uZ^Cf{{VI=g?1uqT8MK|X8Bj=BqAWZqY^BlyOr_W9p
z8Q8EBy~oG2i*tmqjZlDTPh7nw;aggL8W3M5Mk)xg$%4+XE%hLJ1P1x+^Yc^2;tW<O
z%|Daul$JC0H{tRWlWcq{C-TTb>_;YD8ZRf9bem$Nl~>_-c|$*PvDGejcXud6bT+g!
z@_VJnv|qaFFQ~n^9A`#4j?c<UKy4*d(~RCI0^|aKrCUz#oWBHDb1;LjxvlhiX=*>l
zt9C_2rGy7He%z6inDuCAX&4Ao(atmOE^2PN)x`X`T7Ek{22!!hvYHaLO2zs&v$h7g
zzj2@As>6;tccaIB!g9bJ%U{siWXO9{&bKe)ovsUTOGZ|o+;ysED;@L@B_TNyb}b1x
zJ9Cue18Gd%JUv}vcK_k18>T74s}ixZ6{iV(5H28K4welgL1-T;uUY-F30(NVz=;cM
zr8dEgs{f72M0c;i$PBUnzHClmc+}`67Rl}-r--FdKXqv94QEG(s@Kr?P+aBrsT}XK
zV=5<6*AnUT15v>CpkiR}$H}dNwXHfyeEtF@3K{=CE_+18kFz$s$Esn+hY?xmzEB7<
zP;YO>&E5f+9vni%AQO^wa*_Z<+8`j{r&j9pybMMeAqj;+&&aPnXn+^Of;4dOFWFCu
zD(3To@0r2$={qpd{ce2Kco;O<)Iz@l4+`7{rYB1J?p`&5dJ}_F!{vv@-<as5T?ZW4
z*^eVurs7C-PV@MW#R6~u{sol{ni9SbT*(Zo0IHYLXq-CHxTItWOkmzOjStPcvkU3p
zs2q|Mvu`jnZrsa+y~>g1YMEG+zRAP)--E&VD5gsoml@%tY|nfyTQbm1X`ok<1Pg6S
zcpu>R2b`{*bKoIF|G)Jv1=|BR@2X;|UiifTSn;qYk=*HgNp+n@ToM&qMNH>K?q)rm
zU|%y6+Iu+6cRBGfL;LJbLD#NT-HN>A<;<bFT7tCV&T+A}-g0l^ku#{ZqO6SZ`^AP7
zgGyE?R)0^Six|#H=ynjQZ+XeS=?bKW+Nbp(@`7>rQ~YP+d?|T(%3?WuE2KJUbs&NY
zFeDIi#yQFS0hg3?v8jPxmoYf(df#}l@yG3F@2^;tl{xOUXI0gPG#gTqoa*=-9J5gs
zsJq6`h@-#KWg3&c-OCXXgo}6COhPE~Odql)ZklvTG=~W0%=44?#b3Ict51^|w{*Hv
z?H6m?9qvvLs0}V(pYM5XX7N%?$Y*6}7QTv7lw)n?#rcQeC<aVMI7{l!`Hqk+&?nb%
zDaWYe|B|M81Rv!ehd?$z;mE36+uIjZ*f6G9qRDPXyG?gpWTvtjF9&p<N>rG<7PS8e
z*Gef1(kf(WEn$)~z)o4a^GHfJ#1CTHa;8M!yCQoih9Te%(90j=>uro|A9aYg=*Zl!
z60`#t+y%6E@G=&^9xv3`LIGzVCBAGM)WgSF=Xp-?UtWvA8EKS-(+dW}h^dh0uQbDE
zEYN0I+p{eq1qXOpeA?AT%p#AE8)MTaFSDufTMI!XaNLCs3{qcLQ-yXz@!JPfQ$0uE
z()-Sf{>xiDRTACxN-$V%?hPiEL(R7w6_4p{)&Z~cyuHvr85@=fP5F$UW<z04A}xed
z=$o8!@h(yld~Po`(%ML?deeNuzTwqwb8~Y0+I%>A<=sT4+ZmdMt7gEvWRZg^X)=Qf
zs&e9InnLuewly*qsak_JaNq|+od`+%FlbQm$Axw*rKJdMmDrC4{6wnmWIY_s+t_pF
zS~@y)mg53}zr(2os|+5u(zb2xk)1*h$300&ltLjAC|Zmk3^d4!)$sBB_G*~D-s3{Z
zPLu_TdC@eDN<`mV8(m4_VEFp6WEXK8t4A_OZrYN7#1WB@BpmU#R52fc+}JzJG~<^o
z$U@1E8TEmqgl`5?x`e`~+`e1U_I4y^!}IBn$1*sn@YSW@kdu9N8Q`mPsLk>l#Y$g$
zl@mkWegsuXiv7P<VP&j;#o%SP;gvmXBs=2r=zTG&k{oPYXBU?oGufX{2aHS)z3kX=
zDN#2^h^o#bnc_ThQ#OJ;KT%A0UOQO;!)six3n5aw7p4lMmBi^UL`>`5)lIj3iH^@-
zM+4sP6SP^QTkvG8<cG1-BwBNzHcnBU*}3GQICqA%_7<k#*1vUrHI#mYdgXMF&Y2*U
zPYxU2reX$Ae=R=L+YpY`ssRqTta<<O?7|5V*)nPR`}eKm=M@gM33S1Su_zdQ$FE2T
z;3-O^$zpgB*=pR6r<}~3mLfitH49hU-IB>md0{@48$eZf$nSA*cpXl3yssO9w)Xd=
z8e=g*@sKGF3f<<M?(Y9Cj#y2Ow}z-8O40XT{}YustRB36IX%}1i^^$6g-zx`OHC2i
zir>B*W38$4e;wjtdVcIUf7`oeoc)W9a2&t9tO}D4tE*PPD-OcR7E9>oe9sNoju<SN
z5S9Oj#3Ip75yr-sxM^kCq%;45O@zm+n|XQQaqYhxphQUE4~TWfyztsd@9DIwE*dG7
z^l@^+#1yT~$;+b<T|ncLv#yN*(8Elld3xgu#S7k`!MPYpXi6{ejVWmcF;9rqt6^9D
zJ!$QHdtzDhGB;cdc^O^x40vW_T%N*)|1Y*SxHH5IJe|zEnHjJh^UH7m+`{PjqpV~S
zF|G4Ngl(1eIoG^xM$qHOwS8$zd0(vex;1AZll^-bXjgQ1H<>NZC$=NA)BSv=k2$7+
zb?WEmC)(;OY-ng0G`*Yst5^#E%?VNDt5;rZU<Oo3g=#G8d0;RP9&j`hz+A_ctvqzY
z4}|$cYPWFtbX+NIeEvHGsU^T)$bl@;X!9PV%#0J?0FbmS1=ThR#p~<K{qFe}reTnT
z8JEc$Q3%f=EjeM3z`3updr#EBz&9V*oIIz|cl~X^Qr=&;P~KxT#t|x_h~S)(qv*Aq
zH4V7!v3UWIcjd<G(Xz9%E2=9?sq_MEmIwR)^N3)5z(~W)-+v0ySV$F$k8$v6&5O99
zgKpxQ++ZfBixm$;<vGf*gX3`%Jq%I-$E{MrcRWB7U;zozbHC;jaSKm|9aoyMm+*lP
zk16<bj9GcK(&p*96frOp3Eo?L_BWp{a$Kek!<MF{F)zCFN$<<9Xk~8NFaa&+PEwkN
z(XF7*y+DG@S9uNpx9g5(Ce)aq5O{bS3WGPS)6-KgjoDTH!0lG)0#s@j!>Hp&V$AO8
z-LIaqK^8Pa50|?s>19{G;6AlX&_G)C%ELAqC(=1#4L!~fzr@QXW(4^HY4cEf185Jv
zx25kKR@)jiO4S$jH8_Um5;Rg!Ya=(YOojd}>*HmqGQ3S@+fM*dgKLiHbwr@RxVhyg
z&fF28=sCRcQp0|0$9S32n%8y{t=nGCb1Rm?xsc=Ucyblx46dO5{*<0c7mJWP-yZSw
zoqhS=z%7?JEtW4*Qe-MR4Ts}YP~__HEYbSr4?j?AW9zurX7w%!^XJoeJ!khZL`2?V
zY1B06Hst8YwSq|%rlJBRE>n@*ug@p){m(u;6X2bR&*KsMu3Rn}Q8FT{2Zn9@YT6?_
zs|UV$I3F>mT!#aDi#K59@7?ic<E7Tfa#M}xME?8QaL}>g0=uK5<F|jUE_nEa=9vOu
zP>~(>Hcj~6_s3)L4|X|nRCxX8<PqJAy@5S8Q1eg6<E!R0btzJ0HK6r#z*X{j{Gy}z
z08bbMyapS~p@DF&@=Hw)i1WVX5LAQrTl^aqPUNS}Au3ASpKWwM{0El^A?vI0fIpi`
zMijN9*#@+O>j9;uyJZ75>lG>QFVmDKKQ%bu>W2B)Df}PQ^}p)>#CiI`OB946LZT(l
zn_l>MT{0LWnffKWvH5g!lrbNraG5#u`=O!d>viN8GcnV++pec4x6l+%_^qp?52fvZ
zExUCYVqS)hWki4IodR0_yDvbILu}4r%-uu%OeXeq#%R~{1Q~)jB}?QE5sFj`t9SSG
z6j~r^>oIF}wK3^llkjf+_fxyv2CJTZY}w6E%*-~9j-bZI*l6`#T@bD{WQ5%Zx7>Bu
zEhrTW-1U5SJ-Ds9`KY;e*A8jEIqPt8B0p@-sU6Y~J<o^briW;hvL2)xMe%r#{iGoG
zo_aP(7F3|!%^d#sV63evwN|{4D!OiEx*Jh={_1LXY>asf?u>(43MKySdT#-!2RRmQ
zy`D0ymg>FHs1A-Ne~y00Z88sJVT(`<e7>XHsFTm{bs>{%4DlIN^>=-SB>#@bg*%>V
zZ<p=GQR!_9b4lqpyTSDLD*wL##RfY0S&QUYG05EIocE!SVVa1HpGSpZfam4~KmGAP
zkLUU<j6A1`|G&L+jg8}~;`r~(K4Kfk4pkonsq4H@t5O7%szs54qe5HJmk=riMAdHy
zM5GE;DWXV#r6!~VMXeeqilR0`;zNoMB2Mb0jcA)FCMtE@N7{raHORZv-mOwA+4nql
z?&ZVGK4x8l?W`X)^OLOcj>o&#@?Yot=iGDe?C(h?f3%PV&{pvL^E;B2ifj;(b6P20
zdF3_Udg~n!&v=(g*0e?CU2ii!k!IjPT~s1+XMg{;X)PF;4YP|_O8pezhPD`8h7i5)
zTM&y+708s-*Lc2qcW5D&*H$ck<dTMpx)-VHdwq&PQE86m9ZD*opTCrn$wwZ7D_#h&
z7}&RO`-D=ljlgMu6DLma#^2unpjfiV7n&oNPgA5Smu)7}6AT;}#C07&(n`_0bLW#+
z+%0=KW-P3ydwNzPazDTq+oKSV5!rZ0LnN}GDGf?BrP<zjv6?y)%zA;eR$?&CDd`V{
zl7g4>HpQT*UMhBWey<N&vUF*&@Z591`7joX-T{mNy#D$yLqmT<YcR_e`9k?Jk*Z9o
zWHXUYb8z5rRa7a%pm+D~E&rJ7vCmjoF5C+kS49o3jv7S1@Fj>u>ZUv3rJ8+HwE?ew
zcPQ1!<VP^^uM_Rod%XRxqS746S>%KBe}l^w$yCi;uxr=0Nv-AUB63m$-hA_IUVHU8
zN-0d!A(t<Elgmx%uUvLWXFO3kUcdjpqS0vYv(IjMe?G=NV_|9N1xUmr-aq^^D{HAv
zOv@8Zz&kY*L>p6~)nLp65zIoAsz)k6{S{oz;cSzrv>qsSc7FTO(b1OgJ+PSAyZ5(Q
z!)U)7I0nL*GiNw@^sgwTuuO-1-b8#`na_LaFP%v<aNsbGV*|#yN`<dI^Gx5^e2sZF
z9_xC5?ucKEyL2fimIe`tFR-eim!>pWOOaODk5m?-swIW`G)>OcyqL2n1k>N2i_4ck
zv{WNiGrM>96_jefSA>HA=g+^-;EOL&sVFSFLN;3_pD$yYHtBT6k5o1yayk-mH}2W9
zb$mX@JL5XmUEST^M`UeR)L_lBC`^8Y+;SUKoO)DhIEoqcP2M>x;Kiist+bkw{w}(j
z!K~G6)L$qjlRxOYaG_;;4SW(989C;xUcK^99UWJF7UY&}_7a&)hR>~A3wUib=}d-0
zhX%228;}vL-8)-d{G1N65!OwJY?yQutCvOSR4x<?$n}XpDM6a%1;vkOV%3YHVp@KM
z-h_tqhoAm3j$$xpVFpFjUrZ){*tbOP{$|SAvuE|GQ$vStzkP!N^yYGT#>dB5w{9&L
zKAPmv!9gr<5y^4ecD}i1&r=r{Vw^J;);%j$oK^5+4e^w%xUoG-EHi<$wZrl*q-Mx1
zFA_C+sOr(K{|w7Ql&0F(T{WO%mdnd|D_Bw2`qz)AQa?ZT39nPNg5lwzW4GSgn>GyY
zDHMvv*jSSH-aCV3*=Wu0uem1n-5oo&&gpiLmqY&dB~#hn)3ZsSA7Ew7;K5I~6Eh6>
z%5AV}P5th#@mQ;(n}H5euO+gs6b-yvb{Hz!jeXs&X#JDTsZ`4rl`a)FZF=H9F#aII
z3c%G`ez|McmTe0?u360$9?fP?o$T)ZDkAF&N;BzdZj47DJr21ne5w<1oSJtMztcg?
zrqoz{@`IoHDq3^AU^7w*Sf`wZ2Om$RUTDQ1ywn&T9y-5%{rdeNal??u`un%;U+6Kx
zEF%_pyBo)%(Gj2rykhA$y4nEH(I{MfEp&81B!af<UaB_bqg5bEU33*kvKEuUKJI^t
z)(>n>rDn9IEo9-DwXncj>Fh=#C-9#dadUf&ySkRu-qd?cjG$w2?^UIOR-SOGY0lA#
z;gZAKr3y}PGWper>wf344?bvFk5I_`aYe!cZ*K<R2oMLjHfC^lR~y&)%fKP%w5#8j
zmFAr3FkEz+r)L~3@~hI=*!Dj7@5@j^7ByEaEP&r7689tWN1*md(L_AL4ec?miyE}~
zpHftCq2lsy+hx?Od|bWYoM`><=2U8=72^t7I9ehs@Se*oS|0?uX7THn1hy19J9qxS
zRMM9^EfW^N(}~2IipW0v`NU~Z6xe6SVo&~JbadXU!y$7=ON9l{2S&%LRgZ|)j{;x*
zm`gNp8m;$NVDA&D)PhuoL*|y23#*Z*5{b_nhH*1W^<WrzL+cNf$jP6Ljb-NYb3;Nx
sLPA19LPA19LPA19LPA19LZ-ui0LIXwjHdLZDgXcg07*qoM6N<$f)AYhpa1{>

diff --git a/interface/web/themes/default/assets/favicon/android-chrome-192x192.png b/interface/web/themes/default/assets/favicon/android-chrome-192x192.png
new file mode 100644
index 0000000000000000000000000000000000000000..fd24a98743b0457c88874bffdc136ed0e99401a5
GIT binary patch
literal 729
zcmeAS@N?(olHy`uVBq!ia0vp^2SAvG8AvYpRA>UE)B}7%TzxVN&+>{w&`}i~IJ<A^
zEC>RM02!~JN2UX{aF+!61v4CYsV^|EV#@ibncJ17g)=ZPg?YL-hE&{oduyZrZ3mI#
zAKMKUzMXdL?WL2w3!25ZFFdo3>CFNL=5EJ{5)qfeP93tpurYi4KW;l0n>+h2*spRf
zm}8OtuzXMW%D3;W*<RXh(tmDzN>H&yz=>m_edLDvTCJNuOEwt&`%s+IYMh>F`tMn1
z=!>sT9Qz`sR;hl7ORvd3#&50>#`NazAGO*IS-mCt2W~ZWyqJ9N$F&rflEoZ1=Dm~M
zv`yjGHJSUfTyh0%ro8lP+^QJ+f~mHvv{CY9Up{xP!g_|!VFuzKN)>LjGM`ZS{v#Ub
zSq$(``@zrtP4BG^Y>rR0X9P<(?3bwcxYmc0gYQ(3?1PhkXFGg3wf<#7<~*yrl^dBq
zoC`T#kg@pR@t7yypLj(ubIqK8r@Hq*&pi(YwQQzePRHfaGMNRuWdEI%YUsRjadNDA
zg3!vt#%hI3-%oeH%j})wF#ky3gu9lFJxBN?o~~q`QD32I!706t^~S`VEhnueoKKH?
zA#|v8K}}OmmyO=9>;t=x8h`L`+OeAX=Z;(IeQ{hieOV4BarYjzT|XYX|B-0IYMcL;
zZEvrByXfj{uJyM?7f8A0RPT>u6#2v~5&nw3M67tmONQvLbGaOh4W6xKwiEamW+b0r
z*L`c-+r66GW7+rpcD!8^$KrHt@u6h)SwH@AU)k5f`XRpa^AuK@S9RXCX_ikI-*_5G
z3O|_lQh$fF;&-{i_X6Lmr>N&Ne7Cbys*{&|{C=67L&43eKN^akgrfYuoRj-0`bK`c
sMXQ{z@FzV9yE?AF4ZwI;YzgSDW8Nh&+dd?@(GV2Up00i_>zopr02^6E1poj5

literal 0
HcmV?d00001

diff --git a/interface/web/themes/default/assets/favicon/android-chrome-512x512.png b/interface/web/themes/default/assets/favicon/android-chrome-512x512.png
new file mode 100644
index 0000000000000000000000000000000000000000..c4d9ad1e03c2471a88f883de17c129555e906774
GIT binary patch
literal 1673
zcmdT>Yc$k(82<hLb74nB7;>9Q)O2x4hm_l2+l^c%#$|8};b?P-9mys7BO6I8EmMqb
zvfGe~IcjrDCdwryVKpRXT#7DY-5V1-yB|9HWl#HcpAYZ*ocDd+bKdhjnN*j9iUchJ
z06@{<&^|W+U>Su079(qT&$c#M)22Gn_B(wSEl^Y!D5?n*i84~@>TxlzKt^Ph=~Jj9
zlgY)nxwwPLU<bBYvtFd9zwDmqu+N?r_j2-;z-`1)6CE}-2qnQ!EVkzR>J-^f)CMd!
zvZ9R1w6cf3maHV=y9-k6Iz;k*W$4sYF==_T0W_ZRHRx}r+YUYM9qkO69bVOQ?unrs
z$>V<RkLZe8y7`#i-w<ZHQsRBiMBmMpRDf+eMmZuRO_5elj*Z%pbNmiVCsj2wuMp$3
z3P6s(z@=}8S@I>;pf>;ar%N|FPC?cgMP-dMu(C?qeTbXi+z_PlAoET_p_RB%lmAAI
zX93;k@*8#d619o*^)HlC!_vTO){j`PZ_|L;s>1Z~XsH{02o_d7y4a>pHsjU94{xWW
zA3-~r;-?dYC8ko$or?_5g^y>$Z>KcQ5vSvoUk<{y7Eqlpza@0Us|n;WpABl`DGEJ_
zoQ$#ii^!!+rf&Nvt7BmUxw0}zK7(d)LatmFqc8x1MnP`f^$0Xm6*%pxQZfa6O9YQb
zqy9#SdDhL1z;j0uu5^VfCrj!70thx}uO(=MRjHS-;lDgR0k{6U%yh2kdWWQ{`5%hD
zvILs<<y#+a6;2-L)<fK~=dYd7gC`sd7XZbmXs{oz>~KwHt^Vgf`T^b^{-ACO@mx8&
zd;=<K14lqVq!8xL-vwilDirjAw;W}5C-^BnQC=O9JfQ>sG+fT7x4>h-@Ru-^3$A$Y
z-NJ7)kjl#t{+VG@D;L>@W-^EMFy`(Yb>t(vj#bS?w9(2a<FOzlI7$oYU3uz2_lRDH
zoLE(CQZ8U)r;`m;W{j6s?5wrKpN~s61f!D?JRCx=7Vk=#G=F~7lGJIN8%PV|48$tP
zFFT5vS|rT$IA-2gHrkDxTxz3du$l%pu9!`v@%9kK?M62^LjD{3KAXM9Wm%7!0mJT~
z-@&<*(!`FAw`Z+!o-NRA2I4eYv+kHYwY-8I$#)M3(g>I5#mC9En_58lko($r4NV=0
zm$cbXoJI~?OLg&i;6Uu#@m!u$H5xnPZlKZR3}S7)ol^(pgq@Ez0TUxe$(naM;ea~p
z*I%E$HKz(g31d{m6KDb51P)u+aFkdo^JOMP6qX-IxCiywtspqO08+{p)i8RlK$27E
zL{+W_dIEn1Z)dB!7PsY+cIGjNnm=Qy+;a_K(^aqCh8On}v%#LbMT4)5(^lVfCN<Ti
zcHzH7&cTvz)(0DfgP7xX_r@$ht>U%b_1ISEivXAsOc}|pFKyTK+NI1$f)7FHxCRaa
z;=Le2ueh@wP!euMj^M};-x4i08F<|cy%S02=Gcu>?cJ=yf+;0ha&yJF(ChSPY-It-
zzttKltsySVM|lg<(UNvxKF+CdrwVpYyjP<!*DUS9_3B`*?gECSjQYtG$5{I_iJaW5
zz%#yRt}}U7o^w=nx*Av7hdmt$Z7u)1MrJ1_JI4kl;wavjWG^(88SrsEfAK`c(y~G6
zm=9&vCYcpCh;M&og^EP_A3l*9gj+a)a9k0rwF&Lq!U=-or1QGEs(jIJi1`axJpMh8
zZDk%$$J&%o)@E@S$KYzINtZ{Bdv9+#uG?ySyTXL_Y6wn3Xqoaet9?$VK5KRfZQyE<
zDa%#qJw7u*`CL)$LeJHaVXJYrukFz3AQh<&QROQrs#}GEE{D*IiJ>8XIq$IFWncN;
HfYd($pD1^)

literal 0
HcmV?d00001

diff --git a/interface/web/themes/default/assets/favicon/apple-touch-icon.png b/interface/web/themes/default/assets/favicon/apple-touch-icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..713b3d50d1aaa8f4421ffb898b8d7310e2ee97c1
GIT binary patch
literal 619
zcmV-x0+juUP)<h;3K|Lk000e1NJLTq006WA006WE0{{R3&*K{b0000aP)t-s|NsBZ
z4He*PZ`3h2k(iy&79R1w!1vtU=7)><@9^oCna|SHDhvw400064Nkl<ZXx{DG&r8B!
z9LMps$X~Z@45X6=VR}l#q|V(s&5>szNa{2QDv!~j=rk<)<;991`v)TW=c2j9AJ5|+
zzk3E&pZBeUFYIyqDt=WIgb+dqA%qY@{E|m|<eC%Z*jagpoLzAEa(r0})uzimjb|-n
z>pZ$;g{6%;=SgR^(AC&<$_h^#>{oJElTe;XXJydL6Ny<eXq|QaC1l8&$+|}7rO;Z3
zK`+RmGYoo84!z2!OH0IxfpmsCj~}C>PeFqQ4H`6P(4aws1`Yae)9p{Mj|k}NEw63R
zph1J4F}mHO-=mw??yq<&$Q=vT?EgPW@9%6NZLf(|+V>x+dXKRJY4I$(>(fEssS>^k
zHtJ%uN?F8=J(BtTHDwE7c1CID9wJ$!?sx|2H1ooIp)5<>5xT;pTN?31)X@_fD^59)
zjbU2n%mvEMr#4LII8%V~wDlpn>hLDa-SoEY4$wxIKfO-MluP7?w$CR`#+xVMjfT~~
zMG_^im4+fG{|@u+zWeW7MTvl(wzxm>BcQK(E9^=X^u%rLjMLROcCS`wnzn+LLQ^hh
zRd_s2T}p^vq|jm`wnDm<g;w^okBEoVwYi+bP7`OFz=`CEb2IqUgYHmAa?nq6%shGA
zKNP7y>k+UgJ#Vw%C?UE%xZri!koRtg5JCtcgb+gip)cAGy>82Ec;o;8002ovPDHLk
FV1i>tFuMQ%

literal 0
HcmV?d00001

diff --git a/interface/web/themes/default/assets/favicon/browserconfig.xml b/interface/web/themes/default/assets/favicon/browserconfig.xml
new file mode 100644
index 0000000000..d0076c46ca
--- /dev/null
+++ b/interface/web/themes/default/assets/favicon/browserconfig.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<browserconfig>
+    <msapplication>
+        <tile>
+            <square150x150logo src="/themes/default/assets/favicon/mstile-150x150.png"/>
+            <TileColor>#cc151c</TileColor>
+        </tile>
+    </msapplication>
+</browserconfig>
diff --git a/interface/web/themes/default/assets/favicon/favicon-16x16.png b/interface/web/themes/default/assets/favicon/favicon-16x16.png
new file mode 100644
index 0000000000000000000000000000000000000000..6877b0cf7cb185bcd9031c22eeabcd06a7d75175
GIT binary patch
literal 259
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!S%6Q7>nU-$v%I1}bdFnihqEVy
z?UPvuVF1aQ^{sF=gfXdiQs`QbOrQxuB|(0{LXUc7m{-kbxb}zJf4kH1@{m*BUS7w6
zvRR%kjv*4^rRQ(+wHR=?UUc?$%+mk$-`@H~Mw8k)^D?K5h58S=78pH?XfjOn<~)($
z`E!|8I)@!o^ZdlS*CklwJ}oTLV>8<2ndkOG({u8ZS-HlgKOVXH-r4Z(uwc>8{m})i
gd;gWoweS1G;GDr``Di20M4+t<p00i_>zopr03Whk5C8xG

literal 0
HcmV?d00001

diff --git a/interface/web/themes/default/assets/favicon/favicon-32x32.png b/interface/web/themes/default/assets/favicon/favicon-32x32.png
new file mode 100644
index 0000000000000000000000000000000000000000..562f38a8669e4e568002f000b5804f9496bde006
GIT binary patch
literal 309
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dy#sNMdu4j2gL5N2L$^dhHG7ArD
z89+o%NGSmsQ`>v`rp^MPX|un^w5tNO3zP);1^@HEDe+D>j)7zET)V>TlXI?`IbR3L
zE%bD846!(Uck)4@!wMWO*BP1?Wd8e~UF~^kW#6|8^M0+{R~S&XQ2u~F%j`v~Hatn~
zQg=?(dC>FJas%UoS?WJ3d(Xs8_~&O)U#E2=`Tp&o8~u;D6+2dJ75j21WU5BIw6x~J
zXVT0(^VdYKVQ6Tc<IWJGolw>^tHa|-)Z{xB53~f6!dI;|sNSX7P`**#ZRK2nJN!4r
n)$d(;Z)CPQ|BV0coliLJ^2AsdE3tV39n0Y9>gTe~DWM4fY3qBB

literal 0
HcmV?d00001

diff --git a/interface/web/themes/default/assets/favicon/favicon.ico b/interface/web/themes/default/assets/favicon/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..13554cb35355c7a7eee489693006c26041312d25
GIT binary patch
literal 15086
zcmeHOF;5gh6n=;i8if!vArS5gh*pXwiiwG+g&m=>CU%(El914Fg`rUj5=>Msp~T1^
zK&!(Fl^9}&g&~#{#L7?**6-V$IcLXNZ|`n*ImmAE-P@g=dGCAQ%+B6DQKU`UWn@HP
zi}H3@<d%pOi|V>t<OkZiVR`?_S&?~kxPm?yB98&K`^QjV^3Pm>T!CDH+czp5Ngzul
z$#>x5)&#H&tS5xo;lk$SwDVBh$=gc-d+<4tW)AQ_n*wiBi@mhw0lY5(+bQ#BF3V}m
z0d;|I&T&Yuf!?j1rV#c=-|JkbN#_v3pU(p4r6DMv_MC2~!C!IYzEefBYgPG-<j*{8
zM9quRg3sq_hT#5dugR+ZxJN$r9v#|inV;%s`!UyfmglQlWALJuuGr){%YLw253RzT
zJgV;ioJa9zPJUlld;Pic&7#fM)O>bp@Fyp(Et}h3Q~P1P`)Qybb)GP}tF^Hl;^N}^
zZyS9%_d`D8Hlq60({A%N)_;|UzrRqMFkjcYcfS8#FD={wep^`6vC_6m4|}cW{L>a*
z`Oo$D*Z&&Ue+U`L&-WCc<%ZWkd2*kyagz9F#nlxj3H@DuvuexvXQi||&MDR3{_e(W
z=l2J<D%rK3QvG9p|H)2icccjY^Y!DFEAiF{{ZHfiS+##-waT^sTe9}=FV0D;!hT-K
z)Ba9s_i5#8)*o7_{!@=u)ZVXIz_L!q>w3l?U*Dh(QLS@vv-9f{K_09rvxd@&Ah%Hc
zGx3c&cbF@XE08M?QvuIEL}J@RkvR|je~A>7?V{Zk=?GcR^RMBU7Tu+zOQZsOu3e-A
zd!Y><I0geFcVRn7WEXZfrq%sZwu)lalz0aI6<XxO`~>-thDRM@TK=6@5x56b|4yqL
z7x{7G6u5cqV`sfcDoK2=7zfJ0W}PS(`o3IkhKGv14|~)g$hogk4j9Y48;z~UO*ays
z^NrZ=0p?GT3+EyZI8Mhe*NV?roGTmfF$qj5jNA94uF>Dr&5v*QWlZuy-#*n}=b41n
zxzkP?TJl=^Cr8FMwKB&wecs=@^__WJ@lC&`PDkvY6jWa0)L6wY)3?fBbD$RHIoB37
z@$r0q>8S?u(Cu-oo?pi2VT_r?xsGYteZ~lS2b}S5T9r317d(PI^u1;*VlziGu0C(c
z_|$;NI)7@+IW*CX?s{xo{dNDOZ5}_~`cGPS?Jw8Ab@j*GuwFNrGD7b>#4_JOdN0nz
zs`ugaF>zqtQ|jH!cM^5scabc>SmX9P+T82YJlA_cZjWDqpq^lSmfHL>!x2giM}>nq
z&pVhaiEMyr1(k$K0S$v=f5Gb-@Jkr*(FO<Yo^`NJ!LmdVsMaa)f6dZ99^U`ZIW+jG
z#|7T|U;MtFul;y_-T^xiSfSr29~kop_zCb?U$MZpL*Riqp4Y&F0>|jFx=mX>o-t-r
ze~x85`lYRf6_um*rN{d1&*olDEWTL$Ov`>YsNd-IjWdQ$j7uyqCv&`+qw5@Fm}_Xf
zo;${HjWOF?<IVfE&eIrA-f>~Y-@!H4T|Llq$F=aSLClb^>sg7@7H6Jn%|lT8L_HL>
YP@;4mBk+`tqHau#S)jiX>Zp3$ACgKrHvj+t

literal 0
HcmV?d00001

diff --git a/interface/web/themes/default/assets/favicon/mstile-150x150.png b/interface/web/themes/default/assets/favicon/mstile-150x150.png
new file mode 100644
index 0000000000000000000000000000000000000000..83fcba69390f17f68b5dde4969858fb3d9d28292
GIT binary patch
literal 606
zcmeAS@N?(olHy`uVBq!ia0y~yVB`Z~7G|JG*Ze2bfRsdlPl&5eX5oKq;GWa7D?l~u
zB|(0{3{N&G7$x#JSSM@+n(@xl#WAGf*4tZq{SP@vG<@`CDf`K>I;mwV+g(Ma;-3Q7
zmUUFmp78toQUwl{h1d7(HT(6)jQ!B$*Gpq+{563_!odUis6BgU&$hZGdAfS8OR2`}
zz;`cF4$Vt(Q_XC<#(R>_zOaoi=3w8G(~7$ko~Cv69nd_K967n#;B$!VR;L{Pwc$y!
zXG3HcMzrgN9ACTftrgoL*~9BrF4wVQ`W(+SpU>*Wf@U<LPek@{Sjwd8<KOnrD22%X
z^E#fkY-0WK&k9Co_A2l5vHGHN?#1!n|4#UBN&D+#mDGEv?75Kr?wt{5K7M`kU?RtP
z&faIs7EX?AzbUh`?vkRp`@8JNtd=h_x=SVQ8E44X9}#`6F_ZUNxV!8^^=pY04;6o<
z{jb=~5h<nX@#Wdw@{W6_1C<xE7V=xEOi$kH+_SF#?%$FSSygGHzOPaCFFE9@y&{%c
zcP!leS|j&g&DRjSZ?a-KX7(Ta-pMXL>sN7NZ}RWht&2)(<|Xe}&Y638%MHW+&vM!>
z?b%Bg$4}^6y<F+w?0M6tJf736v!g0<XWH_|uh<H8OJgbxw9f~*KmGJFXIYMB>@7v!
x^HJ?pKmX3SQ82|-{_(ZSV1Gt<v>-E%?PK5zS<O-^Szrqi_H^}gS?83{1OO7c6D<G$

literal 0
HcmV?d00001

diff --git a/interface/web/themes/default/assets/favicon/safari-pinned-tab.svg b/interface/web/themes/default/assets/favicon/safari-pinned-tab.svg
new file mode 100644
index 0000000000..12238ebc5b
--- /dev/null
+++ b/interface/web/themes/default/assets/favicon/safari-pinned-tab.svg
@@ -0,0 +1 @@
+<svg version="1" xmlns="http://www.w3.org/2000/svg" width="1422.667" height="1422.667" viewBox="0 0 1067.000000 1067.000000"><path d="M92.9 141.4c-.2.2-2.8.7-5.8 1.1-19.1 2.4-41.8 14.2-57.7 30.1C22 180 13 191.6 13 193.8c0 .5-.8 2-1.9 3.3-1.9 2.5-8.4 19-9.8 25C.9 224 .5 329.7.5 457v231.5l2.7 8.5c9.4 29.1 29.3 51.5 57.2 64.5 8.4 3.9 18.1 7.3 23.1 8 1.1.2 4.5.6 7.5 1.1 3 .4 144.4.8 314.3.8l308.7.1.1 8c0 4.4.2 9.3.3 10.8.1 1.6-.2 3.1-.6 3.3-.5.3-.6 1-.2 1.5.3.5.5 6.2.4 12.7-.1 6.4-.1 12.6-.1 13.7 0 2-.5 2-147.2 1.8-81-.2-163.5-.3-183.4-.3h-36.2l-.3-13.7-.3-13.7-52-.1c-28.6 0-52.4.1-53 .2-2 .6-.8 40.4 1.5 49.3.5 1.9 1.1 4.6 1.4 6 1 5.1 7.9 21.6 9.5 23 .3.3 1.7 2.5 3 5 1.4 2.5 3 5 3.5 5.6.6.6 2.5 2.8 4.1 4.9 2.8 3.6 10.7 11.7 13.7 14 .7.6 3.1 2.5 5.3 4.2 3.8 3 6.7 4.8 16.2 9.8 4.1 2.2 16.2 6.7 21.8 8 3 .8 4.1.9 12.5 2.1 4.9.6 385 1.2 386.3.6.5-.2 3.2-.6 6-.8 6.4-.4 15.5-2.5 22.4-5.2 2.9-1.1 5.4-1.7 5.7-1.4.4.3.6 0 .6-.6 0-.7.3-1.1.8-1 1 .3 10.5-4.6 16.5-8.6 6.7-4.5 14.5-11.2 18.8-16.1 1.9-2.2 4.1-4.7 4.9-5.6 7.4-8.5 16.5-26.4 19.5-38.3 1.8-7.6 2-8.5 3-14.2.6-3.8.7-70 .1-73.9-.1-1.1-.6-4.5-1.1-7.5-.4-3-1.4-7.2-2.1-9.2-.7-2.1-1.3-3.9-1.3-4.1 0-.1-.4-1.5-1-3-.6-1.6-1.1-3-1.1-3.2 0-2.8-11.6-22.7-17-29-10-11.7-26.4-24-39.7-29.5-4.2-1.8-8.3-3.3-9.2-3.5-.9-.3-4.2-1.1-7.3-2-3.2-.8-9.2-1.9-13.5-2.3-4.3-.4-146.1-.7-315-.7H103l-.1-6.5c0-7.6 0-407.7.1-413.2v-3.6h855v8.1c.4 71.1 0 414.1-.4 414.5-.3.3-19.1.5-41.6.5-22.6 0-41.3.4-41.5.8-.4.5-.7 62.4-.5 98.4v5l46.8-.1c38.4 0 55.5-.6 60.2-1.9.3-.1 1.9-.5 3.5-.9 25-6.1 48-22 62.2-43.1 6.1-8.9 10-16.9 13.2-27 2.9-9.1 3.6-11.9 4.8-21 .8-6.5.9-436.1 0-444-1-9.5-1.4-11.5-4.6-21-2.6-8-4.5-12-10.7-23-3.2-5.6-10.1-14-16.5-19.8-8.3-7.6-8.9-8.1-12.4-10.3-1.6-1-3.2-2.1-3.5-2.4-2.8-2.9-22.1-11.5-30.5-13.6-1.6-.4-3.4-.8-4-1-.5-.1-2.3-.6-4-1-2.9-.9-884.8-1.8-885.6-1z"/><path d="M240.3 539.6c.2 1.3.1 2.7-.3 2.9-.4.2-.5 1.7-.3 3.2.8 5.6.8 7.8 0 9-.4.6-.4 1.4.2 1.7.6.4.6 1.8.1 3.6-.5 1.7-.5 3 0 3s.5 1.3 0 2.9c-.4 1.6-.6 3.2-.4 3.4.9.9 1 11.8.2 12.3-.5.3-.5 1-.1 1.7.8 1.3 1.1 5.7.3 5.7-.3 0-.5 1.8-.5 4s.2 4 .5 4 .5 1.1.5 2.5-.4 2.5-.8 2.5-.3.8.2 1.8.6 2.4.1 3.3c-.5.8-.5 2.1 0 2.8.4.8.4 2.6 0 4.2-.5 1.5-.6 3-.4 3.2.9.9 1 11.8.2 12.3-.5.3-.5 1-.1 1.7.9 1.4 1.1 5.7.2 5.7-.3 0-.3 1.7 0 3.7l.6 3.8 53 .1c50.2.1 56.5-.2 55-2.6-.3-.5-.5-3-.5-5.7 0-6.2 0-13.8-.2-16.1 0-.9 0-3.1.1-4.7.2-6.6.2-8.1.2-9.3-.1-.6-.1-1.8-.2-2.5 0-.6.1-3.9.2-7.3.1-3.3 0-6.5-.4-7-.3-.6-.2-2.6.2-4.6.5-2 .5-4.2.1-4.9-.5-.7-.4-2.3 0-3.5.5-1.3.5-2.6.1-2.9-.8-.4-.5-6.3.4-9.1.2-.6-.1-1.7-.5-2.5-.5-.7-.5-1.8.1-2.5s.6-1.5.1-1.8c-.8-.5-.5-8.5.4-9.5.2-.2-.1-1.1-.6-2.1-.6-1-.6-3 0-4.8.7-2.5.5-3.2-.8-3.6-.9-.3-25.5-.5-54.6-.5h-52.8l.5 2.5z"/></svg>
\ No newline at end of file
diff --git a/interface/web/themes/default/assets/favicon/site.webmanifest b/interface/web/themes/default/assets/favicon/site.webmanifest
new file mode 100644
index 0000000000..a94d9f4b4a
--- /dev/null
+++ b/interface/web/themes/default/assets/favicon/site.webmanifest
@@ -0,0 +1,18 @@
+{
+    "name": "ISPConfig",
+    "short_name": "ISPConfig",
+    "icons": [
+        {
+            "src": "/themes/default/assets/favicon/android-chrome-192x192.png",
+            "sizes": "192x192",
+            "type": "image/png"
+        },
+        {
+            "src": "/themes/default/assets/favicon/android-chrome-512x512.png",
+            "sizes": "512x512",
+            "type": "image/png"
+        }
+    ],
+    "theme_color": "#cc151c",
+    "background_color": "#cc151c"
+}
diff --git a/interface/web/themes/default/templates/main.tpl.htm b/interface/web/themes/default/templates/main.tpl.htm
index 0cdd2f89b3..b49e6cd61d 100644
--- a/interface/web/themes/default/templates/main.tpl.htm
+++ b/interface/web/themes/default/templates/main.tpl.htm
@@ -10,6 +10,16 @@
   <meta name='keywords' lang='en' content='' />
   <meta name='robots' content='noindex, nofollow' />
 
+  <link rel='apple-touch-icon' sizes='180x180' href='/themes/<tmpl_var name='current_theme'>/assets/favicon/apple-touch-icon.png'>
+  <link rel='icon' type='image/png' sizes='32x32' href='/themes/<tmpl_var name='current_theme'>/assets/favicon/favicon-32x32.png'>
+  <link rel='icon' type='image/png' sizes='16x16' href='/themes/<tmpl_var name='current_theme'>/assets/favicon/favicon-16x16.png'>
+  <link rel='manifest' href='/themes/<tmpl_var name='current_theme'>/assets/favicon/site.webmanifest'>
+  <link rel='mask-icon' href='/themes/<tmpl_var name='current_theme'>/assets/favicon/safari-pinned-tab.svg' color='#cc151c'>
+  <link rel='shortcut icon' href='/themes/<tmpl_var name='current_theme'>/assets/favicon/favicon.ico'>
+  <meta name='msapplication-TileColor' content='#cc151c'>
+  <meta name='msapplication-config' content='/themes/<tmpl_var name='current_theme'>/assets/favicon/browserconfig.xml'>
+  <meta name='theme-color' content='#cc151c'>
+
   <link rel='stylesheet' href='themes/<tmpl_var name='current_theme'>/assets/stylesheets/bootstrap.min.css' />
   <link rel='stylesheet' href='themes/<tmpl_var name='current_theme'>/assets/stylesheets/fonts.min.css' />
   <link rel='stylesheet' href='themes/<tmpl_var name='current_theme'>/assets/stylesheets/ispconfig.css' />
diff --git a/interface/web/themes/default/templates/main_login.tpl.htm b/interface/web/themes/default/templates/main_login.tpl.htm
index 11042f02af..c52e9071f2 100644
--- a/interface/web/themes/default/templates/main_login.tpl.htm
+++ b/interface/web/themes/default/templates/main_login.tpl.htm
@@ -8,7 +8,16 @@
   <meta name='viewport' content='width=device-width, user-scalable=yes'>
   <meta name='description' lang='en' content='' />
   <meta name='keywords' lang='en' content='' />
-  <meta name='robots' content='index, follow' />
+
+ <link rel='apple-touch-icon' sizes='180x180' href='/themes/<tmpl_var name='current_theme'>/assets/favicon/apple-touch-icon.png'>
+ <link rel='icon' type='image/png' sizes='32x32' href='/themes/<tmpl_var name='current_theme'>/assets/favicon/favicon-32x32.png'>
+ <link rel='icon' type='image/png' sizes='16x16' href='/themes/<tmpl_var name='current_theme'>/assets/favicon/favicon-16x16.png'>
+ <link rel='manifest' href='/themes/<tmpl_var name='current_theme'>/assets/favicon/site.webmanifest'>
+ <link rel='mask-icon' href='/themes/<tmpl_var name='current_theme'>/assets/favicon/safari-pinned-tab.svg' color='#cc151c'>
+ <link rel='shortcut icon' href='/themes/<tmpl_var name='current_theme'>/assets/favicon/favicon.ico'>
+ <meta name='msapplication-TileColor' content='#cc151c'>
+ <meta name='msapplication-config' content='/themes/<tmpl_var name='current_theme'>/assets/favicon/browserconfig.xml'>
+ <meta name='theme-color' content='#cc151c'>
 
   <link rel='stylesheet' href='../themes/<tmpl_var name='current_theme'>/assets/stylesheets/bootstrap.min.css' />
   <link rel='stylesheet' href='../themes/<tmpl_var name='current_theme'>/assets/stylesheets/fonts.min.css' />
-- 
GitLab


From 9f38e0599bc56f54cbf9a4159194c8eb82fb2a46 Mon Sep 17 00:00:00 2001
From: Webslice <4052-webslice@users.noreply.git.ispconfig.org>
Date: Thu, 27 Feb 2020 13:12:06 +0100
Subject: [PATCH 145/242] Allow hostname in SPF wizard

---
 interface/web/dns/dns_spf_edit.php           | 38 ++++++++++++++------
 interface/web/dns/dns_txt_edit.php           | 15 ++++++++
 interface/web/dns/form/dns_spf.tform.php     |  2 +-
 interface/web/dns/lib/lang/ar_dns_spf.lng    |  4 +++
 interface/web/dns/lib/lang/bg_dns_spf.lng    |  4 +++
 interface/web/dns/lib/lang/br_dns_spf.lng    |  4 +++
 interface/web/dns/lib/lang/ca_dns_spf.lng    |  4 +++
 interface/web/dns/lib/lang/cz_dns_spf.lng    |  4 +++
 interface/web/dns/lib/lang/de_dns_spf.lng    |  4 +++
 interface/web/dns/lib/lang/dk_dns_spf.lng    |  4 +++
 interface/web/dns/lib/lang/el_dns_spf.lng    |  4 +++
 interface/web/dns/lib/lang/en_dns_spf.lng    |  5 ++-
 interface/web/dns/lib/lang/es_dns_spf.lng    |  4 +++
 interface/web/dns/lib/lang/fi_dns_spf.lng    |  4 +++
 interface/web/dns/lib/lang/fr_dns_spf.lng    |  4 +++
 interface/web/dns/lib/lang/hr_dns_spf.lng    |  4 +++
 interface/web/dns/lib/lang/hu_dns_spf.lng    |  4 +++
 interface/web/dns/lib/lang/id_dns_spf.lng    |  4 +++
 interface/web/dns/lib/lang/it_dns_spf.lng    |  4 +++
 interface/web/dns/lib/lang/ja_dns_spf.lng    |  4 +++
 interface/web/dns/lib/lang/nl_dns_spf.lng    |  4 +++
 interface/web/dns/lib/lang/pl_dns_spf.lng    |  4 +++
 interface/web/dns/lib/lang/pt_dns_spf.lng    |  4 +++
 interface/web/dns/lib/lang/ro_dns_spf.lng    |  4 +++
 interface/web/dns/lib/lang/ru_dns_spf.lng    |  4 +++
 interface/web/dns/lib/lang/se_dns_spf.lng    |  4 +++
 interface/web/dns/lib/lang/sk_dns_spf.lng    |  4 +++
 interface/web/dns/lib/lang/tr_dns_spf.lng    |  4 +++
 interface/web/dns/templates/dns_spf_edit.htm |  6 +++-
 29 files changed, 148 insertions(+), 14 deletions(-)

diff --git a/interface/web/dns/dns_spf_edit.php b/interface/web/dns/dns_spf_edit.php
index 94096662a1..70f39e44eb 100644
--- a/interface/web/dns/dns_spf_edit.php
+++ b/interface/web/dns/dns_spf_edit.php
@@ -72,13 +72,16 @@ class page_action extends tform_actions {
 	}
 
 	function onShowEnd() {
-		global $app, $conf;
+		global $app;
+
+		$id = $app->functions->intval($_GET['id']);
 
-		$zone = $app->functions->intval($_GET['zone']);
+		// if there is no existing SPF record, assume we want a new active record
+		$app->tpl->setVar('active', 'CHECKED');
 
 		//* check for an existing spf-record
-		$sql = "SELECT data, active FROM dns_rr WHERE data LIKE 'v=spf1%' AND zone = ? AND " . $app->tform->getAuthSQL('r');
-		$rec = $app->db->queryOneRecord($sql, $zone);
+		$sql = "SELECT data, active FROM dns_rr WHERE id = ? AND " . $app->tform->getAuthSQL('r');
+		$rec = $app->db->queryOneRecord($sql, $id);
 		if ( isset($rec) && !empty($rec) ) {
 			$this->id = 1;
 			$old_data = strtolower($rec['data']);
@@ -132,7 +135,6 @@ class page_action extends tform_actions {
 	function onSubmit() {
 		global $app, $conf;
 
-
 		// Get the parent soa record of the domain
 		$soa = $app->db->queryOneRecord("SELECT * FROM dns_soa WHERE id = ? AND " . $app->tform->getAuthSQL('r'), $app->functions->intval($_POST["zone"]));
 
@@ -153,8 +155,27 @@ class page_action extends tform_actions {
 				}
 			}
 		} // end if user is not admin
+		
+		// Check that the record does not yet exist
+		$existing_records = $app->db->queryAllRecords("SELECT id FROM dns_rr WHERE id != ? AND zone = ? AND name = ? AND type = 'TXT'", $this->dataRecord['id'], $_POST['zone'], $_POST['name']);
+		if (!empty($existing_records)) {
+			if (count($existing_records) > 1) {
+				$multiple_existing_records_error_txt = $app->tform->wordbook['spf_record_exists_multiple_txt'];
+				$multiple_existing_records_error_txt = str_replace('{hostname}', $_POST['name'], $multiple_existing_records_error_txt);
+
+				$app->error($multiple_existing_records_error_txt);
+			}
 
-		//create spf-record
+			$existing_record = array_pop($existing_records);
+			
+			$existing_record_error_txt = $app->tform->wordbook['spf_record_exists_txt'];
+			$existing_record_error_txt = str_replace('{hostname}', $_POST['name'], $existing_record_error_txt);
+			$existing_record_error_txt = str_replace('{existing_record_id}', $existing_record['id'], $existing_record_error_txt);
+
+			$app->error($existing_record_error_txt);
+		}
+
+		// Create spf-record
 		if (!empty($this->dataRecord['spf_mx'])) {
 			$spf_record[] = 'mx';
 		}
@@ -217,7 +238,6 @@ class page_action extends tform_actions {
 		else $this->dataRecord['data'] = 'v=spf1 ' . $this->dataRecord['spf_mechanism'] . 'all';
 		unset($temp);
 
-		$this->dataRecord['name'] = $soa['origin'];
 		if (isset($this->dataRecord['active'])) $this->dataRecord['active'] = 'Y';
 		
 		// Set the server ID of the rr record to the same server ID as the parent record.
@@ -228,10 +248,6 @@ class page_action extends tform_actions {
 		$this->dataRecord["serial"] = $app->validate_dns->increase_serial($soa["serial"]);
 		$this->dataRecord["stamp"] = date('Y-m-d H:i:s');
 
-		// always update an existing entry
-		$check=$app->db->queryOneRecord("SELECT * FROM dns_rr WHERE zone = ? AND type = ? AND data LIKE 'v=spf1%' AND name = ?", $this->dataRecord["zone"], $this->dataRecord["type"], $this->dataRecord['name']);
-		$this->id = $check['id'];
-
 		if (!isset($this->dataRecord['active'])) $this->dataRecord['active'] = 'N';
 
 		parent::onSubmit();
diff --git a/interface/web/dns/dns_txt_edit.php b/interface/web/dns/dns_txt_edit.php
index 8f61d2bfe7..6d518e19d5 100644
--- a/interface/web/dns/dns_txt_edit.php
+++ b/interface/web/dns/dns_txt_edit.php
@@ -44,7 +44,22 @@ require_once './dns_edit_base.php';
 
 // Loading classes
 class page_action extends dns_page_action {
+	function onLoad() {
+		parent::onLoad();
+		
+		// The SPF wizard has a button to edit a record as TXT. We need this to prevent a redirect loop.
+		if (!empty($_GET['edit_raw'])) {
+			return;
+		}
 
+		// Redirect to SPF wizard if we detect a SPF record
+		if (!empty($this->dataRecord['data'])) {
+			if ('v=spf1' === mb_substr($this->dataRecord['data'], 0, 6)) {
+				header(sprintf('Location: dns_spf_edit.php?id=%d', $this->dataRecord['id']));
+				exit;
+			}
+		}
+	}
 }
 
 $page = new page_action;
diff --git a/interface/web/dns/form/dns_spf.tform.php b/interface/web/dns/form/dns_spf.tform.php
index 62b6b5283b..53081b7cca 100644
--- a/interface/web/dns/form/dns_spf.tform.php
+++ b/interface/web/dns/form/dns_spf.tform.php
@@ -86,7 +86,7 @@ $form["tabs"]['dns'] = array (
 					'type' => 'TOLOWER')
 			),
 			'validators' => array (  0 => array ( 'type' => 'REGEX',
-					'regex' => '/^[a-zA-Z0-9\.\-\_]{0,255}$/',
+					'regex' => '/^(\*\.|[a-zA-Z0-9\.\-\_]){0,255}$/',
 					'errmsg'=> 'name_error_regex'),
 			),
 			'default' => '',
diff --git a/interface/web/dns/lib/lang/ar_dns_spf.lng b/interface/web/dns/lib/lang/ar_dns_spf.lng
index df8d1fe145..09720321b2 100644
--- a/interface/web/dns/lib/lang/ar_dns_spf.lng
+++ b/interface/web/dns/lib/lang/ar_dns_spf.lng
@@ -1,5 +1,6 @@
 <?php
 $wb['data_txt'] = 'SPF-Record';
+$wb['name_txt'] = 'Hostname';
 $wb['spf_mechanism_txt'] = 'SPF Mechanism';
 $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
 $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
@@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname';
 $wb['ttl_txt'] = 'TTL';
 $wb['active_txt'] = 'Active';
 $wb['record_exists_txt'] = 'DNS-Record already exists';
+$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?';
+$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.';
 $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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/bg_dns_spf.lng b/interface/web/dns/lib/lang/bg_dns_spf.lng
index df8d1fe145..09720321b2 100644
--- a/interface/web/dns/lib/lang/bg_dns_spf.lng
+++ b/interface/web/dns/lib/lang/bg_dns_spf.lng
@@ -1,5 +1,6 @@
 <?php
 $wb['data_txt'] = 'SPF-Record';
+$wb['name_txt'] = 'Hostname';
 $wb['spf_mechanism_txt'] = 'SPF Mechanism';
 $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
 $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
@@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname';
 $wb['ttl_txt'] = 'TTL';
 $wb['active_txt'] = 'Active';
 $wb['record_exists_txt'] = 'DNS-Record already exists';
+$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?';
+$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.';
 $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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/br_dns_spf.lng b/interface/web/dns/lib/lang/br_dns_spf.lng
index 739e59cf41..bbf571c3b7 100644
--- a/interface/web/dns/lib/lang/br_dns_spf.lng
+++ b/interface/web/dns/lib/lang/br_dns_spf.lng
@@ -1,5 +1,6 @@
 <?php
 $wb['data_txt'] = 'Registro SPF';
+$wb['name_txt'] = 'Hostname';
 $wb['spf_mechanism_txt'] = 'Mecanismo SPF';
 $wb['spf_mechanism_pass_txt'] = 'Pass - permitir e-mails de outros remetentes';
 $wb['spf_mechanism_fail_txt'] = 'Fail - rejeitar e-mails de outros remetentes';
@@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'O domínio é inválido.';
 $wb['ttl_txt'] = 'TTL';
 $wb['active_txt'] = 'Ativo';
 $wb['record_exists_txt'] = 'Registro dns já existe.';
+$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?';
+$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.';
 $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['ttl_range_error'] = 'O TTL mínimo são 60 segundos.';
+$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/ca_dns_spf.lng b/interface/web/dns/lib/lang/ca_dns_spf.lng
index df8d1fe145..09720321b2 100644
--- a/interface/web/dns/lib/lang/ca_dns_spf.lng
+++ b/interface/web/dns/lib/lang/ca_dns_spf.lng
@@ -1,5 +1,6 @@
 <?php
 $wb['data_txt'] = 'SPF-Record';
+$wb['name_txt'] = 'Hostname';
 $wb['spf_mechanism_txt'] = 'SPF Mechanism';
 $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
 $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
@@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname';
 $wb['ttl_txt'] = 'TTL';
 $wb['active_txt'] = 'Active';
 $wb['record_exists_txt'] = 'DNS-Record already exists';
+$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?';
+$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.';
 $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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/cz_dns_spf.lng b/interface/web/dns/lib/lang/cz_dns_spf.lng
index 3086454c34..a5691ee340 100644
--- a/interface/web/dns/lib/lang/cz_dns_spf.lng
+++ b/interface/web/dns/lib/lang/cz_dns_spf.lng
@@ -1,5 +1,6 @@
 <?php
 $wb['data_txt'] = 'SPF Záznam';
+$wb['name_txt'] = 'Hostname';
 $wb['spf_mechanism_txt'] = 'SPF Mechanismus';
 $wb['spf_mechanism_pass_txt'] = 'Přijmout - přijímat e-mail od ostatních odesílatelů';
 $wb['spf_mechanism_fail_txt'] = 'Odmítat - odmítnout e-mail od ostatních odesílatelů';
@@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Neplatné doménové jméno';
 $wb['ttl_txt'] = 'TTL';
 $wb['active_txt'] = 'Aktivní';
 $wb['record_exists_txt'] = 'DNS záznam již existuje';
+$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?';
+$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.';
 $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['ttl_range_error'] = 'Min. TTL doba je 60 sekund.';
+$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/de_dns_spf.lng b/interface/web/dns/lib/lang/de_dns_spf.lng
index aec5595ad3..a4f0f7827f 100644
--- a/interface/web/dns/lib/lang/de_dns_spf.lng
+++ b/interface/web/dns/lib/lang/de_dns_spf.lng
@@ -1,5 +1,6 @@
 <?php
 $wb['data_txt'] = 'SPF Record';
+$wb['name_txt'] = 'Hostname';
 $wb['spf_mechanism_txt'] = 'SPF Mechanismus';
 $wb['spf_mechanism_pass_txt'] = 'Pass - Mails von anderen Sendern zulassen';
 $wb['spf_mechanism_fail_txt'] = 'Fail - Mails von anderen Sendern abweisen';
@@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Ungültiger Domainname';
 $wb['ttl_txt'] = 'TTL';
 $wb['active_txt'] = 'Aktiv';
 $wb['record_exists_txt'] = 'DNS-Eintrag existiert bereits';
+$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?';
+$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.';
 $wb['ttl_range_error'] = 'Min. TTL time ist 60 Sekunden.';
 $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['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/dk_dns_spf.lng b/interface/web/dns/lib/lang/dk_dns_spf.lng
index df8d1fe145..09720321b2 100644
--- a/interface/web/dns/lib/lang/dk_dns_spf.lng
+++ b/interface/web/dns/lib/lang/dk_dns_spf.lng
@@ -1,5 +1,6 @@
 <?php
 $wb['data_txt'] = 'SPF-Record';
+$wb['name_txt'] = 'Hostname';
 $wb['spf_mechanism_txt'] = 'SPF Mechanism';
 $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
 $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
@@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname';
 $wb['ttl_txt'] = 'TTL';
 $wb['active_txt'] = 'Active';
 $wb['record_exists_txt'] = 'DNS-Record already exists';
+$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?';
+$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.';
 $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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/el_dns_spf.lng b/interface/web/dns/lib/lang/el_dns_spf.lng
index df8d1fe145..09720321b2 100644
--- a/interface/web/dns/lib/lang/el_dns_spf.lng
+++ b/interface/web/dns/lib/lang/el_dns_spf.lng
@@ -1,5 +1,6 @@
 <?php
 $wb['data_txt'] = 'SPF-Record';
+$wb['name_txt'] = 'Hostname';
 $wb['spf_mechanism_txt'] = 'SPF Mechanism';
 $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
 $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
@@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname';
 $wb['ttl_txt'] = 'TTL';
 $wb['active_txt'] = 'Active';
 $wb['record_exists_txt'] = 'DNS-Record already exists';
+$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?';
+$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.';
 $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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/en_dns_spf.lng b/interface/web/dns/lib/lang/en_dns_spf.lng
index 7ac24dd227..455b5ce0ab 100644
--- a/interface/web/dns/lib/lang/en_dns_spf.lng
+++ b/interface/web/dns/lib/lang/en_dns_spf.lng
@@ -2,6 +2,7 @@
 
 <?php
 $wb['data_txt'] = 'SPF-Record';
+$wb['name_txt'] = 'Hostname';
 $wb['spf_mechanism_txt'] = 'SPF Mechanism';
 $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
 $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
@@ -21,8 +22,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname';
 $wb["ttl_txt"] = 'TTL';
 $wb["active_txt"] = 'Active';
 $wb["record_exists_txt"] = 'DNS-Record already exists';
+$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?';
+$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.';
 $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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
-
diff --git a/interface/web/dns/lib/lang/es_dns_spf.lng b/interface/web/dns/lib/lang/es_dns_spf.lng
index e4094672bb..353134aded 100755
--- a/interface/web/dns/lib/lang/es_dns_spf.lng
+++ b/interface/web/dns/lib/lang/es_dns_spf.lng
@@ -1,9 +1,12 @@
 <?php
 $wb['active_txt'] = 'Habilitado';
+$wb['name_txt'] = 'Hostname';
 $wb['data_txt'] = 'Registro SPF';
 $wb['limit_dns_record_txt'] = 'Ha alcanzado el número máx. de registros DNS permitidos para su cuenta.';
 $wb['no_zone_perm'] = 'Usted no tiene permisos para agregar un registro a esta zona DNS.';
 $wb['record_exists_txt'] = 'El registro DNS ya existe';
+$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?';
+$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.';
 $wb['spf_a_txt'] = 'Permitir a la dirección IP actual del dominio enviar correo electrónico para este dominio';
 $wb['spf_domain_note_txt'] = '(dominios separados por espacios en blanco)';
 $wb['spf_domain_txt'] = 'Cualquier dominio que pueda entregar o retransmitir correo para este dominio';
@@ -22,4 +25,5 @@ $wb['spf_mechanism_txt'] = 'Mecanismo SPF';
 $wb['spf_mx_txt'] = 'Permite a los servidores configurados como MX enviar correos desde este dominio';
 $wb['ttl_range_error'] = 'El tiempo mín. de TTL es 60 segundos.';
 $wb['ttl_txt'] = 'TTL';
+$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/fi_dns_spf.lng b/interface/web/dns/lib/lang/fi_dns_spf.lng
index df8d1fe145..09720321b2 100644
--- a/interface/web/dns/lib/lang/fi_dns_spf.lng
+++ b/interface/web/dns/lib/lang/fi_dns_spf.lng
@@ -1,5 +1,6 @@
 <?php
 $wb['data_txt'] = 'SPF-Record';
+$wb['name_txt'] = 'Hostname';
 $wb['spf_mechanism_txt'] = 'SPF Mechanism';
 $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
 $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
@@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname';
 $wb['ttl_txt'] = 'TTL';
 $wb['active_txt'] = 'Active';
 $wb['record_exists_txt'] = 'DNS-Record already exists';
+$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?';
+$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.';
 $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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/fr_dns_spf.lng b/interface/web/dns/lib/lang/fr_dns_spf.lng
index df8d1fe145..09720321b2 100644
--- a/interface/web/dns/lib/lang/fr_dns_spf.lng
+++ b/interface/web/dns/lib/lang/fr_dns_spf.lng
@@ -1,5 +1,6 @@
 <?php
 $wb['data_txt'] = 'SPF-Record';
+$wb['name_txt'] = 'Hostname';
 $wb['spf_mechanism_txt'] = 'SPF Mechanism';
 $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
 $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
@@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname';
 $wb['ttl_txt'] = 'TTL';
 $wb['active_txt'] = 'Active';
 $wb['record_exists_txt'] = 'DNS-Record already exists';
+$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?';
+$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.';
 $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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/hr_dns_spf.lng b/interface/web/dns/lib/lang/hr_dns_spf.lng
index df8d1fe145..09720321b2 100644
--- a/interface/web/dns/lib/lang/hr_dns_spf.lng
+++ b/interface/web/dns/lib/lang/hr_dns_spf.lng
@@ -1,5 +1,6 @@
 <?php
 $wb['data_txt'] = 'SPF-Record';
+$wb['name_txt'] = 'Hostname';
 $wb['spf_mechanism_txt'] = 'SPF Mechanism';
 $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
 $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
@@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname';
 $wb['ttl_txt'] = 'TTL';
 $wb['active_txt'] = 'Active';
 $wb['record_exists_txt'] = 'DNS-Record already exists';
+$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?';
+$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.';
 $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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/hu_dns_spf.lng b/interface/web/dns/lib/lang/hu_dns_spf.lng
index df8d1fe145..09720321b2 100644
--- a/interface/web/dns/lib/lang/hu_dns_spf.lng
+++ b/interface/web/dns/lib/lang/hu_dns_spf.lng
@@ -1,5 +1,6 @@
 <?php
 $wb['data_txt'] = 'SPF-Record';
+$wb['name_txt'] = 'Hostname';
 $wb['spf_mechanism_txt'] = 'SPF Mechanism';
 $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
 $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
@@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname';
 $wb['ttl_txt'] = 'TTL';
 $wb['active_txt'] = 'Active';
 $wb['record_exists_txt'] = 'DNS-Record already exists';
+$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?';
+$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.';
 $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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/id_dns_spf.lng b/interface/web/dns/lib/lang/id_dns_spf.lng
index df8d1fe145..09720321b2 100644
--- a/interface/web/dns/lib/lang/id_dns_spf.lng
+++ b/interface/web/dns/lib/lang/id_dns_spf.lng
@@ -1,5 +1,6 @@
 <?php
 $wb['data_txt'] = 'SPF-Record';
+$wb['name_txt'] = 'Hostname';
 $wb['spf_mechanism_txt'] = 'SPF Mechanism';
 $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
 $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
@@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname';
 $wb['ttl_txt'] = 'TTL';
 $wb['active_txt'] = 'Active';
 $wb['record_exists_txt'] = 'DNS-Record already exists';
+$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?';
+$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.';
 $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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/it_dns_spf.lng b/interface/web/dns/lib/lang/it_dns_spf.lng
index df8d1fe145..09720321b2 100644
--- a/interface/web/dns/lib/lang/it_dns_spf.lng
+++ b/interface/web/dns/lib/lang/it_dns_spf.lng
@@ -1,5 +1,6 @@
 <?php
 $wb['data_txt'] = 'SPF-Record';
+$wb['name_txt'] = 'Hostname';
 $wb['spf_mechanism_txt'] = 'SPF Mechanism';
 $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
 $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
@@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname';
 $wb['ttl_txt'] = 'TTL';
 $wb['active_txt'] = 'Active';
 $wb['record_exists_txt'] = 'DNS-Record already exists';
+$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?';
+$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.';
 $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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/ja_dns_spf.lng b/interface/web/dns/lib/lang/ja_dns_spf.lng
index df8d1fe145..09720321b2 100644
--- a/interface/web/dns/lib/lang/ja_dns_spf.lng
+++ b/interface/web/dns/lib/lang/ja_dns_spf.lng
@@ -1,5 +1,6 @@
 <?php
 $wb['data_txt'] = 'SPF-Record';
+$wb['name_txt'] = 'Hostname';
 $wb['spf_mechanism_txt'] = 'SPF Mechanism';
 $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
 $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
@@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname';
 $wb['ttl_txt'] = 'TTL';
 $wb['active_txt'] = 'Active';
 $wb['record_exists_txt'] = 'DNS-Record already exists';
+$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?';
+$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.';
 $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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/nl_dns_spf.lng b/interface/web/dns/lib/lang/nl_dns_spf.lng
index df8d1fe145..09720321b2 100644
--- a/interface/web/dns/lib/lang/nl_dns_spf.lng
+++ b/interface/web/dns/lib/lang/nl_dns_spf.lng
@@ -1,5 +1,6 @@
 <?php
 $wb['data_txt'] = 'SPF-Record';
+$wb['name_txt'] = 'Hostname';
 $wb['spf_mechanism_txt'] = 'SPF Mechanism';
 $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
 $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
@@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname';
 $wb['ttl_txt'] = 'TTL';
 $wb['active_txt'] = 'Active';
 $wb['record_exists_txt'] = 'DNS-Record already exists';
+$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?';
+$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.';
 $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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/pl_dns_spf.lng b/interface/web/dns/lib/lang/pl_dns_spf.lng
index df8d1fe145..09720321b2 100644
--- a/interface/web/dns/lib/lang/pl_dns_spf.lng
+++ b/interface/web/dns/lib/lang/pl_dns_spf.lng
@@ -1,5 +1,6 @@
 <?php
 $wb['data_txt'] = 'SPF-Record';
+$wb['name_txt'] = 'Hostname';
 $wb['spf_mechanism_txt'] = 'SPF Mechanism';
 $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
 $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
@@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname';
 $wb['ttl_txt'] = 'TTL';
 $wb['active_txt'] = 'Active';
 $wb['record_exists_txt'] = 'DNS-Record already exists';
+$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?';
+$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.';
 $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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/pt_dns_spf.lng b/interface/web/dns/lib/lang/pt_dns_spf.lng
index df8d1fe145..09720321b2 100644
--- a/interface/web/dns/lib/lang/pt_dns_spf.lng
+++ b/interface/web/dns/lib/lang/pt_dns_spf.lng
@@ -1,5 +1,6 @@
 <?php
 $wb['data_txt'] = 'SPF-Record';
+$wb['name_txt'] = 'Hostname';
 $wb['spf_mechanism_txt'] = 'SPF Mechanism';
 $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
 $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
@@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname';
 $wb['ttl_txt'] = 'TTL';
 $wb['active_txt'] = 'Active';
 $wb['record_exists_txt'] = 'DNS-Record already exists';
+$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?';
+$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.';
 $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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/ro_dns_spf.lng b/interface/web/dns/lib/lang/ro_dns_spf.lng
index df8d1fe145..09720321b2 100644
--- a/interface/web/dns/lib/lang/ro_dns_spf.lng
+++ b/interface/web/dns/lib/lang/ro_dns_spf.lng
@@ -1,5 +1,6 @@
 <?php
 $wb['data_txt'] = 'SPF-Record';
+$wb['name_txt'] = 'Hostname';
 $wb['spf_mechanism_txt'] = 'SPF Mechanism';
 $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
 $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
@@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname';
 $wb['ttl_txt'] = 'TTL';
 $wb['active_txt'] = 'Active';
 $wb['record_exists_txt'] = 'DNS-Record already exists';
+$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?';
+$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.';
 $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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/ru_dns_spf.lng b/interface/web/dns/lib/lang/ru_dns_spf.lng
index cc4b4b087b..a0e77b41b1 100644
--- a/interface/web/dns/lib/lang/ru_dns_spf.lng
+++ b/interface/web/dns/lib/lang/ru_dns_spf.lng
@@ -1,5 +1,6 @@
 <?php
 $wb['data_txt'] = 'SPF-запись';
+$wb['name_txt'] = 'Hostname';
 $wb['spf_mechanism_txt'] = 'Механизм SPF';
 $wb['spf_mechanism_pass_txt'] = 'Pass - разрешить почту от других отправителей';
 $wb['spf_mechanism_fail_txt'] = 'Fail - отклонить почту от других отправителей';
@@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Недопустимое доменное им
 $wb['ttl_txt'] = 'TTL';
 $wb['active_txt'] = 'Активно';
 $wb['record_exists_txt'] = 'DNS-запись уже существует';
+$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?';
+$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.';
 $wb['limit_dns_record_txt'] = 'Макс. количество DNS-записей для вашей учетной записи достигнуто.';
 $wb['no_zone_perm'] = 'У Вас нет прав добавлять эту запись.';
 $wb['ttl_range_error'] = 'Мин. время <b>TTL</b> 60 секунд.';
+$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/se_dns_spf.lng b/interface/web/dns/lib/lang/se_dns_spf.lng
index df8d1fe145..09720321b2 100644
--- a/interface/web/dns/lib/lang/se_dns_spf.lng
+++ b/interface/web/dns/lib/lang/se_dns_spf.lng
@@ -1,5 +1,6 @@
 <?php
 $wb['data_txt'] = 'SPF-Record';
+$wb['name_txt'] = 'Hostname';
 $wb['spf_mechanism_txt'] = 'SPF Mechanism';
 $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
 $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
@@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname';
 $wb['ttl_txt'] = 'TTL';
 $wb['active_txt'] = 'Active';
 $wb['record_exists_txt'] = 'DNS-Record already exists';
+$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?';
+$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.';
 $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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/sk_dns_spf.lng b/interface/web/dns/lib/lang/sk_dns_spf.lng
index df8d1fe145..09720321b2 100644
--- a/interface/web/dns/lib/lang/sk_dns_spf.lng
+++ b/interface/web/dns/lib/lang/sk_dns_spf.lng
@@ -1,5 +1,6 @@
 <?php
 $wb['data_txt'] = 'SPF-Record';
+$wb['name_txt'] = 'Hostname';
 $wb['spf_mechanism_txt'] = 'SPF Mechanism';
 $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
 $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
@@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname';
 $wb['ttl_txt'] = 'TTL';
 $wb['active_txt'] = 'Active';
 $wb['record_exists_txt'] = 'DNS-Record already exists';
+$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?';
+$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.';
 $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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/tr_dns_spf.lng b/interface/web/dns/lib/lang/tr_dns_spf.lng
index 40cad402a4..2683560275 100644
--- a/interface/web/dns/lib/lang/tr_dns_spf.lng
+++ b/interface/web/dns/lib/lang/tr_dns_spf.lng
@@ -1,5 +1,6 @@
 <?php
 $wb['data_txt'] = 'SPF Kaydı';
+$wb['name_txt'] = 'Hostname';
 $wb['spf_mechanism_txt'] = 'SPF Yöntemi';
 $wb['spf_mechanism_pass_txt'] = 'Kabul - Diğer göndericilerden gelen e-postalar kabul edilsin';
 $wb['spf_mechanism_fail_txt'] = 'Red - Diğer göndericilerden gelen e-postalar reddedilsin';
@@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Etki alanı adı geçersiz';
 $wb['ttl_txt'] = 'TTL Süresi';
 $wb['active_txt'] = 'Etkin';
 $wb['record_exists_txt'] = 'DNS kaydı zaten var';
+$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?';
+$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.';
 $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['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.';
+$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/templates/dns_spf_edit.htm b/interface/web/dns/templates/dns_spf_edit.htm
index 3c34b37a41..fc7400d620 100644
--- a/interface/web/dns/templates/dns_spf_edit.htm
+++ b/interface/web/dns/templates/dns_spf_edit.htm
@@ -5,6 +5,10 @@
 
 
         
+            <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'}" readonly class="form-control" /></div></div>
@@ -52,11 +56,11 @@
         <input type="hidden" name="id" value="{tmpl_var name='id'}">
         <input type="hidden" name="zone" value="{tmpl_var name='zone'}" id="zone">
         <input type="hidden" name="type" value="{tmpl_var name='type'}">
-        <input type="hidden" name="name" value="{tmpl_var name='name'}">
             </div>
             
         <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_spf_edit.php">{tmpl_var name='btn_save_txt'}</button>
+            <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_edit_as_txt_record_txt'}" data-load-content="dns/dns_txt_edit.php?id={tmpl_var name='id'}&zone={tmpl_var name='zone'}&edit_raw=1">{tmpl_var name='btn_edit_as_txt_record_txt'}</button>
             <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="dns/dns_soa_edit.php?id={tmpl_var name='zone'}">{tmpl_var name='btn_cancel_txt'}</button>
         </div></div>
 
-- 
GitLab


From 53e799ec7ca60eb2a9b54cc0a82672645fedc094 Mon Sep 17 00:00:00 2001
From: Webslice <4052-webslice@users.noreply.git.ispconfig.org>
Date: Mon, 2 Mar 2020 10:19:16 +0100
Subject: [PATCH 146/242] Add CSRF key and token to FAQ delete links

---
 interface/web/help/templates/faq_manage_questions_list.htm | 2 +-
 interface/web/help/templates/help_faq_sections_list.htm    | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/interface/web/help/templates/faq_manage_questions_list.htm b/interface/web/help/templates/faq_manage_questions_list.htm
index a29d0f06d0..9b54e7d4ff 100644
--- a/interface/web/help/templates/faq_manage_questions_list.htm
+++ b/interface/web/help/templates/faq_manage_questions_list.htm
@@ -24,7 +24,7 @@
                         <td width="60%">{tmpl_var name='hf_question'}</td>
                         <td width="30%">{tmpl_var name='hf_section'}</td>
                         <td class="text-right" width="5%">
-                            <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('help/faq_delete.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                            <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('help/faq_delete.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                         </td>
                         <td class="text-right" width="5%">
                             <a class="btn btn-default formbutton-default formbutton-narrow" data-load-content="help/faq_edit.php?id={tmpl_var name='id'}"><span class="icon icon-edit"></span></a>
diff --git a/interface/web/help/templates/help_faq_sections_list.htm b/interface/web/help/templates/help_faq_sections_list.htm
index 5a3733aa0b..1d0ef16443 100644
--- a/interface/web/help/templates/help_faq_sections_list.htm
+++ b/interface/web/help/templates/help_faq_sections_list.htm
@@ -26,7 +26,7 @@
                     <tr>
                         <td><b>{tmpl_var name='hfs_name'}</b></td>
                         <td class="text-right">
-                            <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('help/faq_sections_delete.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+                            <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('help/faq_sections_delete.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                         </td>
                         <td class="text-right">
                             <a class="btn btn-default formbutton-default formbutton-narrow" data-load-content="help/faq_sections_edit.php?id={tmpl_var name='id'}"><span class="icon icon-edit"></span></a>
-- 
GitLab


From 3d4981e3c275aa9ba24a590b791d8cc69282a3ee Mon Sep 17 00:00:00 2001
From: Webslice <4052-webslice@users.noreply.git.ispconfig.org>
Date: Mon, 2 Mar 2020 10:21:21 +0100
Subject: [PATCH 147/242] #5545 pw reset is always english

---
 interface/web/login/password_reset.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/interface/web/login/password_reset.php b/interface/web/login/password_reset.php
index 02c71f2948..1550ae8af2 100644
--- a/interface/web/login/password_reset.php
+++ b/interface/web/login/password_reset.php
@@ -43,7 +43,7 @@ $app->tpl->setInclude('content_tpl', 'templates/password_reset.htm');
 
 $app->tpl_defaults();
 
-include ISPC_ROOT_PATH.'/web/login/lib/lang/'.$app->functions->check_language($_SESSION['s']['language']).'.lng';
+include ISPC_ROOT_PATH.'/web/login/lib/lang/'.$app->functions->check_language($conf['language']).'.lng';
 $app->tpl->setVar($wb);
 $continue = true;
 
-- 
GitLab


From 8cb829063dd053d70c93b03be32070a496eff1db Mon Sep 17 00:00:00 2001
From: Webslice <4052-webslice@users.noreply.git.ispconfig.org>
Date: Mon, 2 Mar 2020 10:21:57 +0100
Subject: [PATCH 148/242] Fix php warning when adding empty spf

---
 interface/web/dns/dns_spf_edit.php | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/interface/web/dns/dns_spf_edit.php b/interface/web/dns/dns_spf_edit.php
index 70f39e44eb..ee043d284f 100644
--- a/interface/web/dns/dns_spf_edit.php
+++ b/interface/web/dns/dns_spf_edit.php
@@ -176,6 +176,8 @@ class page_action extends tform_actions {
 		}
 
 		// Create spf-record
+		$spf_record = [];
+
 		if (!empty($this->dataRecord['spf_mx'])) {
 			$spf_record[] = 'mx';
 		}
-- 
GitLab


From ebdc1c772416eb89177a855bf939fb56e78b3e69 Mon Sep 17 00:00:00 2001
From: Webslice <4052-webslice@users.noreply.git.ispconfig.org>
Date: Mon, 2 Mar 2020 15:34:50 +0100
Subject: [PATCH 149/242] Fix SPF multiple records validation

---
 interface/web/dns/dns_spf_edit.php | 17 +++++++++++------
 interface/web/dns/dns_txt_edit.php |  2 +-
 2 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/interface/web/dns/dns_spf_edit.php b/interface/web/dns/dns_spf_edit.php
index ee043d284f..1c632d2d12 100644
--- a/interface/web/dns/dns_spf_edit.php
+++ b/interface/web/dns/dns_spf_edit.php
@@ -157,7 +157,7 @@ class page_action extends tform_actions {
 		} // end if user is not admin
 		
 		// Check that the record does not yet exist
-		$existing_records = $app->db->queryAllRecords("SELECT id FROM dns_rr WHERE id != ? AND zone = ? AND name = ? AND type = 'TXT'", $this->dataRecord['id'], $_POST['zone'], $_POST['name']);
+		$existing_records = $app->db->queryAllRecords("SELECT id FROM dns_rr WHERE zone = ? AND name = ? AND type = 'TXT' AND data LIKE 'v=spf1%'", $_POST['zone'], $_POST['name']);
 		if (!empty($existing_records)) {
 			if (count($existing_records) > 1) {
 				$multiple_existing_records_error_txt = $app->tform->wordbook['spf_record_exists_multiple_txt'];
@@ -166,13 +166,18 @@ class page_action extends tform_actions {
 				$app->error($multiple_existing_records_error_txt);
 			}
 
+			// If there is just one existing record, three things can be going on:
+			// - if we are adding a new record, show a warning that it already exists and offer to edit it
+			// - if we are editing an existing record and changing its 'name' field to one that is already existing, also show the warning
+			// - otherwise we are just editing the existing the record, so there is no need for a warning
 			$existing_record = array_pop($existing_records);
-			
-			$existing_record_error_txt = $app->tform->wordbook['spf_record_exists_txt'];
-			$existing_record_error_txt = str_replace('{hostname}', $_POST['name'], $existing_record_error_txt);
-			$existing_record_error_txt = str_replace('{existing_record_id}', $existing_record['id'], $existing_record_error_txt);
+			if (empty($this->dataRecord['id']) || ($this->dataRecord['id'] !== $existing_record['id'])) {
+				$existing_record_error_txt = $app->tform->wordbook['spf_record_exists_txt'];
+				$existing_record_error_txt = str_replace('{hostname}', $_POST['name'], $existing_record_error_txt);
+				$existing_record_error_txt = str_replace('{existing_record_id}', $existing_record['id'], $existing_record_error_txt);
 
-			$app->error($existing_record_error_txt);
+				$app->error($existing_record_error_txt);
+			}
 		}
 
 		// Create spf-record
diff --git a/interface/web/dns/dns_txt_edit.php b/interface/web/dns/dns_txt_edit.php
index 6d518e19d5..7caa27d040 100644
--- a/interface/web/dns/dns_txt_edit.php
+++ b/interface/web/dns/dns_txt_edit.php
@@ -53,7 +53,7 @@ class page_action extends dns_page_action {
 		}
 
 		// Redirect to SPF wizard if we detect a SPF record
-		if (!empty($this->dataRecord['data'])) {
+		if ('GET' === $_SERVER['REQUEST_METHOD'] && !empty($this->dataRecord['data'])) {
 			if ('v=spf1' === mb_substr($this->dataRecord['data'], 0, 6)) {
 				header(sprintf('Location: dns_spf_edit.php?id=%d', $this->dataRecord['id']));
 				exit;
-- 
GitLab


From 37534873db85372e4ec0c5415964bce58c49279f Mon Sep 17 00:00:00 2001
From: Webslice <4052-webslice@users.noreply.git.ispconfig.org>
Date: Mon, 2 Mar 2020 15:38:50 +0100
Subject: [PATCH 150/242] Hide default php version

---
 install/tpl/server.ini.master                 |  1 +
 .../web/admin/form/server_config.tform.php    |  6 ++
 .../web/admin/lib/lang/ar_server_config.lng   |  1 +
 .../web/admin/lib/lang/bg_server_config.lng   |  1 +
 .../web/admin/lib/lang/br_server_config.lng   |  1 +
 .../web/admin/lib/lang/ca_server_config.lng   |  1 +
 .../web/admin/lib/lang/cz_server_config.lng   |  1 +
 .../web/admin/lib/lang/de_server_config.lng   |  1 +
 .../web/admin/lib/lang/dk_server_config.lng   |  1 +
 .../web/admin/lib/lang/el_server_config.lng   |  1 +
 .../web/admin/lib/lang/en_server_config.lng   |  1 +
 .../web/admin/lib/lang/es_server_config.lng   |  1 +
 .../web/admin/lib/lang/fi_server_config.lng   |  1 +
 .../web/admin/lib/lang/fr_server_config.lng   |  1 +
 .../web/admin/lib/lang/hr_server_config.lng   |  1 +
 .../web/admin/lib/lang/hu_server_config.lng   |  1 +
 .../web/admin/lib/lang/id_server_config.lng   |  1 +
 .../web/admin/lib/lang/it_server_config.lng   |  1 +
 .../web/admin/lib/lang/ja_server_config.lng   |  1 +
 .../web/admin/lib/lang/nl_server_config.lng   |  1 +
 .../web/admin/lib/lang/pl_server_config.lng   |  1 +
 .../web/admin/lib/lang/pt_server_config.lng   |  1 +
 .../web/admin/lib/lang/ro_server_config.lng   |  1 +
 .../web/admin/lib/lang/ru_server_config.lng   |  1 +
 .../web/admin/lib/lang/se_server_config.lng   |  1 +
 .../web/admin/lib/lang/sk_server_config.lng   |  1 +
 .../web/admin/lib/lang/tr_server_config.lng   |  1 +
 .../templates/server_config_web_edit.htm      |  8 ++-
 interface/web/sites/ajax_get_json.php         |  4 +-
 .../sites/lib/lang/ar_web_vhost_domain.lng    |  2 +
 .../sites/lib/lang/bg_web_vhost_domain.lng    |  2 +
 .../sites/lib/lang/br_web_vhost_domain.lng    |  2 +
 .../sites/lib/lang/ca_web_vhost_domain.lng    |  2 +
 .../sites/lib/lang/cz_web_vhost_domain.lng    |  2 +
 .../sites/lib/lang/de_web_vhost_domain.lng    |  2 +
 .../sites/lib/lang/dk_web_vhost_domain.lng    |  2 +
 .../sites/lib/lang/el_web_vhost_domain.lng    |  2 +
 .../sites/lib/lang/en_web_vhost_domain.lng    |  2 +
 .../sites/lib/lang/es_web_vhost_domain.lng    |  2 +
 .../sites/lib/lang/fi_web_vhost_domain.lng    |  2 +
 .../sites/lib/lang/fr_web_vhost_domain.lng    |  2 +
 .../sites/lib/lang/hr_web_vhost_domain.lng    |  2 +
 .../sites/lib/lang/hu_web_vhost_domain.lng    |  2 +
 .../sites/lib/lang/id_web_vhost_domain.lng    |  2 +
 .../sites/lib/lang/it_web_vhost_domain.lng    |  2 +
 .../sites/lib/lang/ja_web_vhost_domain.lng    |  2 +
 .../sites/lib/lang/nl_web_vhost_domain.lng    |  2 +
 .../sites/lib/lang/pl_web_vhost_domain.lng    |  2 +
 .../sites/lib/lang/pt_web_vhost_domain.lng    |  2 +
 .../sites/lib/lang/ro_web_vhost_domain.lng    |  2 +
 .../sites/lib/lang/ru_web_vhost_domain.lng    |  2 +
 .../sites/lib/lang/se_web_vhost_domain.lng    |  2 +
 .../sites/lib/lang/sk_web_vhost_domain.lng    |  2 +
 .../sites/lib/lang/tr_web_vhost_domain.lng    |  2 +
 .../sites/templates/web_vhost_domain_edit.htm |  3 +
 interface/web/sites/web_vhost_domain_edit.php | 55 ++++++++++++++++++-
 56 files changed, 147 insertions(+), 5 deletions(-)

diff --git a/install/tpl/server.ini.master b/install/tpl/server.ini.master
index 3786fc2ca3..45a5644392 100644
--- a/install/tpl/server.ini.master
+++ b/install/tpl/server.ini.master
@@ -105,6 +105,7 @@ php_fpm_ini_path=/etc/php5/fpm/php.ini
 php_fpm_pool_dir=/etc/php5/fpm/pool.d
 php_fpm_start_port=9010
 php_fpm_socket_dir=/var/lib/php5-fpm
+php_default_hide=n
 php_default_name=Default
 set_folder_permissions_on_update=n
 add_web_users_to_sshusers_group=y
diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php
index c6022e6bc2..30dc11601c 100644
--- a/interface/web/admin/form/server_config.tform.php
+++ b/interface/web/admin/form/server_config.tform.php
@@ -1129,6 +1129,12 @@ $form["tabs"]['web'] = array(
 			'width' => '40',
 			'maxlength' => '255'
 		),
+		'php_default_hide' => array(
+			'datatype' => 'VARCHAR',
+			'formtype' => 'CHECKBOX',
+			'default' => 'n',
+			'value' => array(0 => 'n', 1 => 'y')
+		),
 		'php_default_name' => array(
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
diff --git a/interface/web/admin/lib/lang/ar_server_config.lng b/interface/web/admin/lib/lang/ar_server_config.lng
index 24a1a41933..a855abaddf 100644
--- a/interface/web/admin/lib/lang/ar_server_config.lng
+++ b/interface/web/admin/lib/lang/ar_server_config.lng
@@ -295,6 +295,7 @@ $wb['logging_txt'] = 'Store website access and error logs';
 $wb['logging_desc_txt'] = 'Use Tools > Resync to apply changes to existing sites. For Apache, access and error log can be anonymized. For nginx, only the access log is anonymized, the error log will contain IP addresses.';
 $wb['log_retention_txt'] = 'Log retention (days)';
 $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0';
+$wb['php_default_hide_txt'] = 'Hide Default PHP-Version in selectbox';
 $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
diff --git a/interface/web/admin/lib/lang/bg_server_config.lng b/interface/web/admin/lib/lang/bg_server_config.lng
index aa4385b8ae..fd2c842654 100644
--- a/interface/web/admin/lib/lang/bg_server_config.lng
+++ b/interface/web/admin/lib/lang/bg_server_config.lng
@@ -295,6 +295,7 @@ $wb['logging_txt'] = 'Store website access and error logs';
 $wb['logging_desc_txt'] = 'Use Tools > Resync to apply changes to existing sites. For Apache, access and error log can be anonymized. For nginx, only the access log is anonymized, the error log will contain IP addresses.';
 $wb['log_retention_txt'] = 'Log retention (days)';
 $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0';
+$wb['php_default_hide_txt'] = 'Hide Default PHP-Version in selectbox';
 $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
diff --git a/interface/web/admin/lib/lang/br_server_config.lng b/interface/web/admin/lib/lang/br_server_config.lng
index c12a1a7dad..5be35952e4 100644
--- a/interface/web/admin/lib/lang/br_server_config.lng
+++ b/interface/web/admin/lib/lang/br_server_config.lng
@@ -296,6 +296,7 @@ $wb['logging_txt'] = 'Gravar logs de acesso e erros de sites';
 $wb['logging_desc_txt'] = 'Usar Ferramentas > Sicronizar para aplicar mudanças em sites existentes. Para o Apache, os logs de acesso e erros podem ser anonimizados. Para o nginx, apenas o log de acesso é anonimizado, o log de erros conterá endereços IP.';
 $wb['log_retention_txt'] = 'Tempo de retenção do log (dias)';
 $wb['log_retention_error_ispositive'] = 'O tempo de retenção do log deve ser um número > 0.';
+$wb['php_default_hide_txt'] = 'Hide Default PHP-Version in selectbox';
 $wb['php_default_name_txt'] = 'Descrição da versão padrão do php';
 $wb['php_default_name_error_empty'] = 'A descrição da versão padrão do php está em branco.';
 $wb['error_mailbox_message_size_txt'] = 'O tamanho da cota da conta de e-mail deve ser maior ou igual o tamanho da cota de mensagens.';
diff --git a/interface/web/admin/lib/lang/ca_server_config.lng b/interface/web/admin/lib/lang/ca_server_config.lng
index 40f02fb637..c7bf8fb6e6 100644
--- a/interface/web/admin/lib/lang/ca_server_config.lng
+++ b/interface/web/admin/lib/lang/ca_server_config.lng
@@ -295,6 +295,7 @@ $wb['logging_txt'] = 'Store website access and error logs';
 $wb['logging_desc_txt'] = 'Use Tools > Resync to apply changes to existing sites. For Apache, access and error log can be anonymized. For nginx, only the access log is anonymized, the error log will contain IP addresses.';
 $wb['log_retention_txt'] = 'Log retention (days)';
 $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0';
+$wb['php_default_hide_txt'] = 'Hide Default PHP-Version in selectbox';
 $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
diff --git a/interface/web/admin/lib/lang/cz_server_config.lng b/interface/web/admin/lib/lang/cz_server_config.lng
index 2b42cf6691..4b363ce3f5 100644
--- a/interface/web/admin/lib/lang/cz_server_config.lng
+++ b/interface/web/admin/lib/lang/cz_server_config.lng
@@ -295,6 +295,7 @@ $wb['logging_txt'] = 'Store website access and error logs';
 $wb['logging_desc_txt'] = 'Use Tools > Resync to apply changes to existing sites. For Apache, access and error log can be anonymized. For nginx, only the access log is anonymized, the error log will contain IP addresses.';
 $wb['log_retention_txt'] = 'Log retention (days)';
 $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0';
+$wb['php_default_hide_txt'] = 'Hide Default PHP-Version in selectbox';
 $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
diff --git a/interface/web/admin/lib/lang/de_server_config.lng b/interface/web/admin/lib/lang/de_server_config.lng
index 9e0ce6f48f..2bd71ed3b9 100644
--- a/interface/web/admin/lib/lang/de_server_config.lng
+++ b/interface/web/admin/lib/lang/de_server_config.lng
@@ -295,6 +295,7 @@ $wb['logging_txt'] = 'Store website access and error logs';
 $wb['logging_desc_txt'] = 'Use Tools > Resync to apply changes to existing sites. For Apache, access and error log can be anonymized. For nginx, only the access log is anonymized, the error log will contain IP addresses.';
 $wb['log_retention_txt'] = 'Log retention (days)';
 $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0';
+$wb['php_default_hide_txt'] = 'Hide Default PHP-Version in selectbox';
 $wb['php_default_name_txt'] = 'Beschreibung Standard PHP';
 $wb['php_default_name_error_empty'] = 'Beschreibung Standard PHP ist leer.';
 $wb['error_mailbox_message_size_txt'] = 'Mailboxgröße muss gleich oder größer als max. Nachrichtengröße sein.';
diff --git a/interface/web/admin/lib/lang/dk_server_config.lng b/interface/web/admin/lib/lang/dk_server_config.lng
index e6d5eaa289..52da85b76e 100644
--- a/interface/web/admin/lib/lang/dk_server_config.lng
+++ b/interface/web/admin/lib/lang/dk_server_config.lng
@@ -295,6 +295,7 @@ $wb['logging_txt'] = 'Store website access and error logs';
 $wb['logging_desc_txt'] = 'Use Tools > Resync to apply changes to existing sites. For Apache, access and error log can be anonymized. For nginx, only the access log is anonymized, the error log will contain IP addresses.';
 $wb['log_retention_txt'] = 'Log retention (days)';
 $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0';
+$wb['php_default_hide_txt'] = 'Hide Default PHP-Version in selectbox';
 $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
diff --git a/interface/web/admin/lib/lang/el_server_config.lng b/interface/web/admin/lib/lang/el_server_config.lng
index 394ba2bde9..7a8f97097f 100644
--- a/interface/web/admin/lib/lang/el_server_config.lng
+++ b/interface/web/admin/lib/lang/el_server_config.lng
@@ -295,6 +295,7 @@ $wb['logging_txt'] = 'Store website access and error logs';
 $wb['logging_desc_txt'] = 'Use Tools > Resync to apply changes to existing sites. For Apache, access and error log can be anonymized. For nginx, only the access log is anonymized, the error log will contain IP addresses.';
 $wb['log_retention_txt'] = 'Log retention (days)';
 $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0';
+$wb['php_default_hide_txt'] = 'Hide Default PHP-Version in selectbox';
 $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng
index b8c9166d43..1d3eac33cb 100644
--- a/interface/web/admin/lib/lang/en_server_config.lng
+++ b/interface/web/admin/lib/lang/en_server_config.lng
@@ -296,6 +296,7 @@ $wb['logging_txt'] = 'Store website access and error logs';
 $wb['logging_desc_txt'] = 'Use Tools > Resync to apply changes to existing sites. For Apache, access and error log can be anonymized. For nginx, only the access log is anonymized, the error log will contain IP addresses.';
 $wb['log_retention_txt'] = 'Log retention (days)';
 $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0';
+$wb['php_default_hide_txt'] = 'Hide Default PHP-Version in selectbox';
 $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
diff --git a/interface/web/admin/lib/lang/es_server_config.lng b/interface/web/admin/lib/lang/es_server_config.lng
index 08c80ec80e..90b1f50ac0 100755
--- a/interface/web/admin/lib/lang/es_server_config.lng
+++ b/interface/web/admin/lib/lang/es_server_config.lng
@@ -295,6 +295,7 @@ $wb['logging_txt'] = 'Store website access and error logs';
 $wb['logging_desc_txt'] = 'Use Tools > Resync to apply changes to existing sites. For Apache, access and error log can be anonymized. For nginx, only the access log is anonymized, the error log will contain IP addresses.';
 $wb['log_retention_txt'] = 'Log retention (days)';
 $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0';
+$wb['php_default_hide_txt'] = 'Hide Default PHP-Version in selectbox';
 $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
diff --git a/interface/web/admin/lib/lang/fi_server_config.lng b/interface/web/admin/lib/lang/fi_server_config.lng
index 85b994a72e..2a4eac40ee 100755
--- a/interface/web/admin/lib/lang/fi_server_config.lng
+++ b/interface/web/admin/lib/lang/fi_server_config.lng
@@ -295,6 +295,7 @@ $wb['logging_txt'] = 'Store website access and error logs';
 $wb['logging_desc_txt'] = 'Use Tools > Resync to apply changes to existing sites. For Apache, access and error log can be anonymized. For nginx, only the access log is anonymized, the error log will contain IP addresses.';
 $wb['log_retention_txt'] = 'Log retention (days)';
 $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0';
+$wb['php_default_hide_txt'] = 'Hide Default PHP-Version in selectbox';
 $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
diff --git a/interface/web/admin/lib/lang/fr_server_config.lng b/interface/web/admin/lib/lang/fr_server_config.lng
index 705c376a29..e9091f4bce 100644
--- a/interface/web/admin/lib/lang/fr_server_config.lng
+++ b/interface/web/admin/lib/lang/fr_server_config.lng
@@ -295,6 +295,7 @@ $wb['logging_txt'] = 'Store website access and error logs';
 $wb['logging_desc_txt'] = 'Use Tools > Resync to apply changes to existing sites. For Apache, access and error log can be anonymized. For nginx, only the access log is anonymized, the error log will contain IP addresses.';
 $wb['log_retention_txt'] = 'Log retention (days)';
 $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0';
+$wb['php_default_hide_txt'] = 'Hide Default PHP-Version in selectbox';
 $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
diff --git a/interface/web/admin/lib/lang/hr_server_config.lng b/interface/web/admin/lib/lang/hr_server_config.lng
index 609d9ab889..379f3f317a 100644
--- a/interface/web/admin/lib/lang/hr_server_config.lng
+++ b/interface/web/admin/lib/lang/hr_server_config.lng
@@ -295,6 +295,7 @@ $wb['logging_txt'] = 'Store website access and error logs';
 $wb['logging_desc_txt'] = 'Use Tools > Resync to apply changes to existing sites. For Apache, access and error log can be anonymized. For nginx, only the access log is anonymized, the error log will contain IP addresses.';
 $wb['log_retention_txt'] = 'Log retention (days)';
 $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0';
+$wb['php_default_hide_txt'] = 'Hide Default PHP-Version in selectbox';
 $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
diff --git a/interface/web/admin/lib/lang/hu_server_config.lng b/interface/web/admin/lib/lang/hu_server_config.lng
index 52533a2c78..9e5fa5e278 100644
--- a/interface/web/admin/lib/lang/hu_server_config.lng
+++ b/interface/web/admin/lib/lang/hu_server_config.lng
@@ -295,6 +295,7 @@ $wb['logging_txt'] = 'Store website access and error logs';
 $wb['logging_desc_txt'] = 'Use Tools > Resync to apply changes to existing sites. For Apache, access and error log can be anonymized. For nginx, only the access log is anonymized, the error log will contain IP addresses.';
 $wb['log_retention_txt'] = 'Log retention (days)';
 $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0';
+$wb['php_default_hide_txt'] = 'Hide Default PHP-Version in selectbox';
 $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
diff --git a/interface/web/admin/lib/lang/id_server_config.lng b/interface/web/admin/lib/lang/id_server_config.lng
index e4c1e47ce5..b201d79269 100644
--- a/interface/web/admin/lib/lang/id_server_config.lng
+++ b/interface/web/admin/lib/lang/id_server_config.lng
@@ -295,6 +295,7 @@ $wb['logging_txt'] = 'Store website access and error logs';
 $wb['logging_desc_txt'] = 'Use Tools > Resync to apply changes to existing sites. For Apache, access and error log can be anonymized. For nginx, only the access log is anonymized, the error log will contain IP addresses.';
 $wb['log_retention_txt'] = 'Log retention (days)';
 $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0';
+$wb['php_default_hide_txt'] = 'Hide Default PHP-Version in selectbox';
 $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
diff --git a/interface/web/admin/lib/lang/it_server_config.lng b/interface/web/admin/lib/lang/it_server_config.lng
index 2d7d9e9ddb..a4e3a64a4c 100644
--- a/interface/web/admin/lib/lang/it_server_config.lng
+++ b/interface/web/admin/lib/lang/it_server_config.lng
@@ -295,6 +295,7 @@ $wb['logging_txt'] = 'Store website access and error logs';
 $wb['logging_desc_txt'] = 'Use Tools > Resync to apply changes to existing sites. For Apache, access and error log can be anonymized. For nginx, only the access log is anonymized, the error log will contain IP addresses.';
 $wb['log_retention_txt'] = 'Log retention (days)';
 $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0';
+$wb['php_default_hide_txt'] = 'Hide Default PHP-Version in selectbox';
 $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
diff --git a/interface/web/admin/lib/lang/ja_server_config.lng b/interface/web/admin/lib/lang/ja_server_config.lng
index 6cd157154a..e0484786c2 100644
--- a/interface/web/admin/lib/lang/ja_server_config.lng
+++ b/interface/web/admin/lib/lang/ja_server_config.lng
@@ -295,6 +295,7 @@ $wb['logging_txt'] = 'Store website access and error logs';
 $wb['logging_desc_txt'] = 'Use Tools > Resync to apply changes to existing sites. For Apache, access and error log can be anonymized. For nginx, only the access log is anonymized, the error log will contain IP addresses.';
 $wb['log_retention_txt'] = 'Log retention (days)';
 $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0';
+$wb['php_default_hide_txt'] = 'Hide Default PHP-Version in selectbox';
 $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
diff --git a/interface/web/admin/lib/lang/nl_server_config.lng b/interface/web/admin/lib/lang/nl_server_config.lng
index 542add696b..a514926d53 100644
--- a/interface/web/admin/lib/lang/nl_server_config.lng
+++ b/interface/web/admin/lib/lang/nl_server_config.lng
@@ -295,6 +295,7 @@ $wb['logging_txt'] = 'Store website access and error logs';
 $wb['logging_desc_txt'] = 'Use Tools > Resync to apply changes to existing sites. For Apache, access and error log can be anonymized. For nginx, only the access log is anonymized, the error log will contain IP addresses.';
 $wb['log_retention_txt'] = 'Log retention (days)';
 $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0';
+$wb['php_default_hide_txt'] = 'Hide Default PHP-Version in selectbox';
 $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
diff --git a/interface/web/admin/lib/lang/pl_server_config.lng b/interface/web/admin/lib/lang/pl_server_config.lng
index 61509f30cf..d825718726 100644
--- a/interface/web/admin/lib/lang/pl_server_config.lng
+++ b/interface/web/admin/lib/lang/pl_server_config.lng
@@ -295,6 +295,7 @@ $wb['logging_txt'] = 'Store website access and error logs';
 $wb['logging_desc_txt'] = 'Use Tools > Resync to apply changes to existing sites. For Apache, access and error log can be anonymized. For nginx, only the access log is anonymized, the error log will contain IP addresses.';
 $wb['log_retention_txt'] = 'Log retention (days)';
 $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0';
+$wb['php_default_hide_txt'] = 'Hide Default PHP-Version in selectbox';
 $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
diff --git a/interface/web/admin/lib/lang/pt_server_config.lng b/interface/web/admin/lib/lang/pt_server_config.lng
index fabd1d61cc..1b4772908c 100644
--- a/interface/web/admin/lib/lang/pt_server_config.lng
+++ b/interface/web/admin/lib/lang/pt_server_config.lng
@@ -295,6 +295,7 @@ $wb['logging_txt'] = 'Store website access and error logs';
 $wb['logging_desc_txt'] = 'Use Tools > Resync to apply changes to existing sites. For Apache, access and error log can be anonymized. For nginx, only the access log is anonymized, the error log will contain IP addresses.';
 $wb['log_retention_txt'] = 'Log retention (days)';
 $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0';
+$wb['php_default_hide_txt'] = 'Hide Default PHP-Version in selectbox';
 $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
diff --git a/interface/web/admin/lib/lang/ro_server_config.lng b/interface/web/admin/lib/lang/ro_server_config.lng
index b5a1a18759..a0371719e0 100644
--- a/interface/web/admin/lib/lang/ro_server_config.lng
+++ b/interface/web/admin/lib/lang/ro_server_config.lng
@@ -295,6 +295,7 @@ $wb['logging_txt'] = 'Store website access and error logs';
 $wb['logging_desc_txt'] = 'Use Tools > Resync to apply changes to existing sites. For Apache, access and error log can be anonymized. For nginx, only the access log is anonymized, the error log will contain IP addresses.';
 $wb['log_retention_txt'] = 'Log retention (days)';
 $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0';
+$wb['php_default_hide_txt'] = 'Hide Default PHP-Version in selectbox';
 $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
diff --git a/interface/web/admin/lib/lang/ru_server_config.lng b/interface/web/admin/lib/lang/ru_server_config.lng
index db17e9ac5a..0e96ff297e 100644
--- a/interface/web/admin/lib/lang/ru_server_config.lng
+++ b/interface/web/admin/lib/lang/ru_server_config.lng
@@ -295,6 +295,7 @@ $wb['logging_txt'] = 'Store website access and error logs';
 $wb['logging_desc_txt'] = 'Use Tools > Resync to apply changes to existing sites. For Apache, access and error log can be anonymized. For nginx, only the access log is anonymized, the error log will contain IP addresses.';
 $wb['log_retention_txt'] = 'Log retention (days)';
 $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0';
+$wb['php_default_hide_txt'] = 'Hide Default PHP-Version in selectbox';
 $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
diff --git a/interface/web/admin/lib/lang/se_server_config.lng b/interface/web/admin/lib/lang/se_server_config.lng
index 92b55336f0..c9aba33e2f 100644
--- a/interface/web/admin/lib/lang/se_server_config.lng
+++ b/interface/web/admin/lib/lang/se_server_config.lng
@@ -295,6 +295,7 @@ $wb['logging_txt'] = 'Store website access and error logs';
 $wb['logging_desc_txt'] = 'Use Tools > Resync to apply changes to existing sites. For Apache, access and error log can be anonymized. For nginx, only the access log is anonymized, the error log will contain IP addresses.';
 $wb['log_retention_txt'] = 'Log retention (days)';
 $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0';
+$wb['php_default_hide_txt'] = 'Hide Default PHP-Version in selectbox';
 $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
diff --git a/interface/web/admin/lib/lang/sk_server_config.lng b/interface/web/admin/lib/lang/sk_server_config.lng
index 801a4fece1..f2799dcabe 100644
--- a/interface/web/admin/lib/lang/sk_server_config.lng
+++ b/interface/web/admin/lib/lang/sk_server_config.lng
@@ -295,6 +295,7 @@ $wb['logging_txt'] = 'Store website access and error logs';
 $wb['logging_desc_txt'] = 'Use Tools > Resync to apply changes to existing sites. For Apache, access and error log can be anonymized. For nginx, only the access log is anonymized, the error log will contain IP addresses.';
 $wb['log_retention_txt'] = 'Log retention (days)';
 $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0';
+$wb['php_default_hide_txt'] = 'Hide Default PHP-Version in selectbox';
 $wb['php_default_name_txt'] = 'Description Default PHP-Version';
 $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty';
 $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size';
diff --git a/interface/web/admin/lib/lang/tr_server_config.lng b/interface/web/admin/lib/lang/tr_server_config.lng
index 7d664b6947..f343964750 100644
--- a/interface/web/admin/lib/lang/tr_server_config.lng
+++ b/interface/web/admin/lib/lang/tr_server_config.lng
@@ -295,6 +295,7 @@ $wb['logging_txt'] = 'Web Sitesi Erişim ve Hata Günlükleri Kaydedilsin';
 $wb['logging_desc_txt'] = 'Değişiklikleri var olan sitelere uygulamak için Araçlar > Yeniden Eşitle komutunu kullanın. Apache için, erişim ve hata günlükleri anonimleştirilebilir. nginx için, only erişim günlüğü anonimleştirilebilir, hata günlüğüne IP adresleri kaydedilir.';
 $wb['log_retention_txt'] = 'Günlük Tutma Süresi (Gün)';
 $wb['log_retention_error_ispositive'] = 'Günlük tutma süresi 0 değerinden büyük bir sayı olmalıdır';
+$wb['php_default_hide_txt'] = 'Hide Default PHP-Version in selectbox';
 $wb['php_default_name_txt'] = 'Varsayılan PHP Sürümü Açıklaması';
 $wb['php_default_name_error_empty'] = 'Varsayılan PHP sürümü açıklaması boş olamaz';
 ?>
diff --git a/interface/web/admin/templates/server_config_web_edit.htm b/interface/web/admin/templates/server_config_web_edit.htm
index 05042bac85..48c3b8bcbc 100644
--- a/interface/web/admin/templates/server_config_web_edit.htm
+++ b/interface/web/admin/templates/server_config_web_edit.htm
@@ -258,7 +258,13 @@
     </div>
     <div id="collapsePHP" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingPHP">
       <div class="panel-body">
-	  <!-- Begin content -->
+      <!-- Begin content -->
+                <div class="form-group">
+                    <label class="col-sm-3 control-label">{tmpl_var name='php_default_hide_txt'}</label>
+                    <div class="col-sm-9">
+                        {tmpl_var name='php_default_hide'}
+                    </div>
+                </div>
 				<div class="form-group">
                     <label for="php_default_name" class="col-sm-3 control-label">{tmpl_var name='php_default_name_txt'}</label>
                     <div class="col-sm-9"><input type="text" name="php_default_name" id="php_default_name" value="{tmpl_var name='php_default_name'}" class="form-control" /></div></div>
diff --git a/interface/web/sites/ajax_get_json.php b/interface/web/sites/ajax_get_json.php
index 494f274f10..298fbdb019 100644
--- a/interface/web/sites/ajax_get_json.php
+++ b/interface/web/sites/ajax_get_json.php
@@ -97,7 +97,9 @@ if($type == 'getphpfastcgi'){
 	} elseif($php_type == 'fast-cgi'){
 		$php_records = $app->db->queryAllRecords("SELECT * FROM server_php WHERE php_fastcgi_binary != '' AND php_fastcgi_ini_dir != '' AND server_id = ? AND active = 'y'".$sql_where, $server_id);
 	}
-	$php_records[]=array('name' => $app->functions->htmlentities($web_config['php_default_name']));
+	if (empty($web_config['php_default_hide']) || 'n' === $web_config['php_default_hide']) {
+		$php_records[]=array('name' => $app->functions->htmlentities($web_config['php_default_name']));
+	}
 	uasort($php_records, 'sort_php');
 	$php_select = "";
 	if(is_array($php_records) && !empty($php_records)) {
diff --git a/interface/web/sites/lib/lang/ar_web_vhost_domain.lng b/interface/web/sites/lib/lang/ar_web_vhost_domain.lng
index f208ab3f36..35c1d80928 100644
--- a/interface/web/sites/lib/lang/ar_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/ar_web_vhost_domain.lng
@@ -97,6 +97,8 @@ $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
 $wb['ssl_key_txt'] = 'SSL Key';
 $wb['perl_txt'] = 'Perl';
 $wb['fastcgi_php_version_txt'] = 'PHP Version';
+$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.';
+$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.';
 $wb['pm_txt'] = 'PHP-FPM Process Manager';
 $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
 $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
diff --git a/interface/web/sites/lib/lang/bg_web_vhost_domain.lng b/interface/web/sites/lib/lang/bg_web_vhost_domain.lng
index a84d915230..a3742c7b8b 100644
--- a/interface/web/sites/lib/lang/bg_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/bg_web_vhost_domain.lng
@@ -94,6 +94,8 @@ $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be
 $wb['hd_quota_error_regex'] = 'квотата за дисковото пространство е грешна.';
 $wb['traffic_quota_error_regex'] = 'Трафик квота е грешна.';
 $wb['fastcgi_php_version_txt'] = 'PHP Version';
+$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.';
+$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.';
 $wb['pm_txt'] = 'PHP-FPM Process Manager';
 $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
 $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
diff --git a/interface/web/sites/lib/lang/br_web_vhost_domain.lng b/interface/web/sites/lib/lang/br_web_vhost_domain.lng
index 01a7414a98..8a89cb5b20 100644
--- a/interface/web/sites/lib/lang/br_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/br_web_vhost_domain.lng
@@ -98,6 +98,8 @@ $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers deve ter
 $wb['hd_quota_error_regex'] = 'Cota do disco é inválida.';
 $wb['traffic_quota_error_regex'] = 'Cota de tráfego é inválida.';
 $wb['fastcgi_php_version_txt'] = 'Versão do php';
+$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.';
+$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.';
 $wb['pm_txt'] = 'Gerenciador de Processos do php-fpm';
 $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
 $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
diff --git a/interface/web/sites/lib/lang/ca_web_vhost_domain.lng b/interface/web/sites/lib/lang/ca_web_vhost_domain.lng
index aae2f46339..5dcb4216ff 100644
--- a/interface/web/sites/lib/lang/ca_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/ca_web_vhost_domain.lng
@@ -98,6 +98,8 @@ $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be
 $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.';
 $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
 $wb['fastcgi_php_version_txt'] = 'PHP Version';
+$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.';
+$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.';
 $wb['pm_txt'] = 'PHP-FPM Process Manager';
 $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
 $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
diff --git a/interface/web/sites/lib/lang/cz_web_vhost_domain.lng b/interface/web/sites/lib/lang/cz_web_vhost_domain.lng
index deaa3269c4..1bf4e87453 100644
--- a/interface/web/sites/lib/lang/cz_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/cz_web_vhost_domain.lng
@@ -100,6 +100,8 @@ $wb['traffic_quota_error_regex'] = 'Traffik kvóta je neplatná.';
 $wb['ssl_key_txt'] = 'SSL klíč';
 $wb['perl_txt'] = 'Perl';
 $wb['fastcgi_php_version_txt'] = 'Výběr PHP verze';
+$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.';
+$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.';
 $wb['pm_txt'] = 'PHP-FPM Process Manager';
 $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
 $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
diff --git a/interface/web/sites/lib/lang/de_web_vhost_domain.lng b/interface/web/sites/lib/lang/de_web_vhost_domain.lng
index d95b6d47e4..037535b9a5 100644
--- a/interface/web/sites/lib/lang/de_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/de_web_vhost_domain.lng
@@ -99,6 +99,8 @@ $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers muß ein
 $wb['hd_quota_error_regex'] = 'Speicherplatzbeschränkung ist ungültig.';
 $wb['traffic_quota_error_regex'] = 'Transfervolumenbeschränkung ist ungültig.';
 $wb['fastcgi_php_version_txt'] = 'PHP Version';
+$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.';
+$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.';
 $wb['pm_txt'] = 'PHP-FPM FastCGI Prozess Manager';
 $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
 $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
diff --git a/interface/web/sites/lib/lang/dk_web_vhost_domain.lng b/interface/web/sites/lib/lang/dk_web_vhost_domain.lng
index aae2f46339..5dcb4216ff 100644
--- a/interface/web/sites/lib/lang/dk_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/dk_web_vhost_domain.lng
@@ -98,6 +98,8 @@ $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be
 $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.';
 $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
 $wb['fastcgi_php_version_txt'] = 'PHP Version';
+$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.';
+$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.';
 $wb['pm_txt'] = 'PHP-FPM Process Manager';
 $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
 $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
diff --git a/interface/web/sites/lib/lang/el_web_vhost_domain.lng b/interface/web/sites/lib/lang/el_web_vhost_domain.lng
index 0ea2c2a796..61f90bb828 100644
--- a/interface/web/sites/lib/lang/el_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/el_web_vhost_domain.lng
@@ -97,6 +97,8 @@ $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
 $wb['ssl_key_txt'] = 'SSL Key';
 $wb['perl_txt'] = 'Perl';
 $wb['fastcgi_php_version_txt'] = 'PHP Version';
+$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.';
+$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.';
 $wb['pm_txt'] = 'PHP-FPM Process Manager';
 $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
 $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
diff --git a/interface/web/sites/lib/lang/en_web_vhost_domain.lng b/interface/web/sites/lib/lang/en_web_vhost_domain.lng
index ae546e1c4d..3ebccaa78e 100644
--- a/interface/web/sites/lib/lang/en_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/en_web_vhost_domain.lng
@@ -98,6 +98,8 @@ $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be
 $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.';
 $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
 $wb['fastcgi_php_version_txt'] = 'PHP Version';
+$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.';
+$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.';
 $wb['pm_txt'] = 'PHP-FPM Process Manager';
 $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
 $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
diff --git a/interface/web/sites/lib/lang/es_web_vhost_domain.lng b/interface/web/sites/lib/lang/es_web_vhost_domain.lng
index f98c02db15..659f50fd65 100644
--- a/interface/web/sites/lib/lang/es_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/es_web_vhost_domain.lng
@@ -97,6 +97,8 @@ $wb['perl_txt'] = 'Perl';
 $wb['hd_quota_error_regex'] = 'Cuota de disco no es válida.';
 $wb['traffic_quota_error_regex'] = 'Cuota de tráfico no es válida.';
 $wb['fastcgi_php_version_txt'] = 'Versión de PHP';
+$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.';
+$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.';
 $wb['pm_txt'] = 'PHP-FPM Gestor de Procesos';
 $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
 $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
diff --git a/interface/web/sites/lib/lang/fi_web_vhost_domain.lng b/interface/web/sites/lib/lang/fi_web_vhost_domain.lng
index c7c4a14432..6a3fe8c197 100644
--- a/interface/web/sites/lib/lang/fi_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/fi_web_vhost_domain.lng
@@ -96,6 +96,8 @@ $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
 $wb['ssl_key_txt'] = 'SSL Key';
 $wb['perl_txt'] = 'Perl';
 $wb['fastcgi_php_version_txt'] = 'PHP Version';
+$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.';
+$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.';
 $wb['pm_txt'] = 'PHP-FPM Process Manager';
 $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
 $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
diff --git a/interface/web/sites/lib/lang/fr_web_vhost_domain.lng b/interface/web/sites/lib/lang/fr_web_vhost_domain.lng
index 931c00a533..73502d2916 100644
--- a/interface/web/sites/lib/lang/fr_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/fr_web_vhost_domain.lng
@@ -96,6 +96,8 @@ $wb['traffic_quota_error_regex'] = 'Le quota de trafic est invalide.';
 $wb['ssl_key_txt'] = 'Clé SSL';
 $wb['perl_txt'] = 'Perl';
 $wb['fastcgi_php_version_txt'] = 'Version de PHP';
+$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.';
+$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.';
 $wb['pm_txt'] = 'Manager de process PHP-FPM';
 $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
 $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
diff --git a/interface/web/sites/lib/lang/hr_web_vhost_domain.lng b/interface/web/sites/lib/lang/hr_web_vhost_domain.lng
index 7842d770b4..1595a2cecb 100644
--- a/interface/web/sites/lib/lang/hr_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/hr_web_vhost_domain.lng
@@ -96,6 +96,8 @@ $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
 $wb['ssl_key_txt'] = 'SSL Key';
 $wb['perl_txt'] = 'Perl';
 $wb['fastcgi_php_version_txt'] = 'PHP Version';
+$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.';
+$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.';
 $wb['pm_txt'] = 'PHP-FPM Process Manager';
 $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
 $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
diff --git a/interface/web/sites/lib/lang/hu_web_vhost_domain.lng b/interface/web/sites/lib/lang/hu_web_vhost_domain.lng
index a40a4b62a5..04ff11f952 100644
--- a/interface/web/sites/lib/lang/hu_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/hu_web_vhost_domain.lng
@@ -96,6 +96,8 @@ $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
 $wb['ssl_key_txt'] = 'SSL Key';
 $wb['perl_txt'] = 'Perl';
 $wb['fastcgi_php_version_txt'] = 'PHP Version';
+$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.';
+$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.';
 $wb['pm_txt'] = 'PHP-FPM Process Manager';
 $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
 $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
diff --git a/interface/web/sites/lib/lang/id_web_vhost_domain.lng b/interface/web/sites/lib/lang/id_web_vhost_domain.lng
index 617e7fe769..4ea200465b 100644
--- a/interface/web/sites/lib/lang/id_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/id_web_vhost_domain.lng
@@ -96,6 +96,8 @@ $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
 $wb['ssl_key_txt'] = 'SSL Key';
 $wb['perl_txt'] = 'Perl';
 $wb['fastcgi_php_version_txt'] = 'PHP Version';
+$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.';
+$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.';
 $wb['pm_txt'] = 'PHP-FPM Process Manager';
 $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
 $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
diff --git a/interface/web/sites/lib/lang/it_web_vhost_domain.lng b/interface/web/sites/lib/lang/it_web_vhost_domain.lng
index 9fbca551a3..43ff80b44b 100644
--- a/interface/web/sites/lib/lang/it_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/it_web_vhost_domain.lng
@@ -97,6 +97,8 @@ $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
 $wb['ssl_key_txt'] = 'SSL Key';
 $wb['perl_txt'] = 'Perl';
 $wb['fastcgi_php_version_txt'] = 'PHP Version';
+$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.';
+$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.';
 $wb['pm_txt'] = 'PHP-FPM Process Manager';
 $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
 $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
diff --git a/interface/web/sites/lib/lang/ja_web_vhost_domain.lng b/interface/web/sites/lib/lang/ja_web_vhost_domain.lng
index 0efd971187..7c8736dc6b 100644
--- a/interface/web/sites/lib/lang/ja_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/ja_web_vhost_domain.lng
@@ -96,6 +96,8 @@ $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
 $wb['ssl_key_txt'] = 'SSL Key';
 $wb['perl_txt'] = 'Perl';
 $wb['fastcgi_php_version_txt'] = 'PHP Version';
+$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.';
+$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.';
 $wb['pm_txt'] = 'PHP-FPM Process Manager';
 $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
 $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
diff --git a/interface/web/sites/lib/lang/nl_web_vhost_domain.lng b/interface/web/sites/lib/lang/nl_web_vhost_domain.lng
index dd007d549f..bc4139d44c 100644
--- a/interface/web/sites/lib/lang/nl_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/nl_web_vhost_domain.lng
@@ -96,6 +96,8 @@ $wb['traffic_quota_error_regex'] = 'Traffic quota is niet correct.';
 $wb['ssl_key_txt'] = 'SSL Key';
 $wb['perl_txt'] = 'Perl';
 $wb['fastcgi_php_version_txt'] = 'PHP Versie';
+$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.';
+$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.';
 $wb['pm_txt'] = 'PHP-FPM Process Manager';
 $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
 $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
diff --git a/interface/web/sites/lib/lang/pl_web_vhost_domain.lng b/interface/web/sites/lib/lang/pl_web_vhost_domain.lng
index 8a426b0a1a..1b0afea1a3 100644
--- a/interface/web/sites/lib/lang/pl_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/pl_web_vhost_domain.lng
@@ -98,6 +98,8 @@ $wb['web_folder_error_regex'] = 'Wprowadzono nieprawidłowy katalog. Proszę nie
 $wb['domain_error_autosub'] = 'Istnieje już subdomena z tymi ustawieniami.';
 $wb['perl_txt'] = 'Perl';
 $wb['fastcgi_php_version_txt'] = 'Wersja PHP';
+$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.';
+$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.';
 $wb['pm_txt'] = 'PHP-FPM Process Manager';
 $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
 $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
diff --git a/interface/web/sites/lib/lang/pt_web_vhost_domain.lng b/interface/web/sites/lib/lang/pt_web_vhost_domain.lng
index 170f2feb04..0f4c1c0080 100644
--- a/interface/web/sites/lib/lang/pt_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/pt_web_vhost_domain.lng
@@ -96,6 +96,8 @@ $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
 $wb['ssl_key_txt'] = 'SSL Key';
 $wb['perl_txt'] = 'Perl';
 $wb['fastcgi_php_version_txt'] = 'PHP Version';
+$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.';
+$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.';
 $wb['pm_txt'] = 'PHP-FPM Process Manager';
 $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
 $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
diff --git a/interface/web/sites/lib/lang/ro_web_vhost_domain.lng b/interface/web/sites/lib/lang/ro_web_vhost_domain.lng
index 046c2c71a6..6badcdfb67 100644
--- a/interface/web/sites/lib/lang/ro_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/ro_web_vhost_domain.lng
@@ -97,6 +97,8 @@ $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
 $wb['ssl_key_txt'] = 'SSL Key';
 $wb['perl_txt'] = 'Perl';
 $wb['fastcgi_php_version_txt'] = 'PHP Version';
+$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.';
+$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.';
 $wb['pm_txt'] = 'PHP-FPM Process Manager';
 $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
 $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
diff --git a/interface/web/sites/lib/lang/ru_web_vhost_domain.lng b/interface/web/sites/lib/lang/ru_web_vhost_domain.lng
index e87af3b654..f2b8dadad5 100644
--- a/interface/web/sites/lib/lang/ru_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/ru_web_vhost_domain.lng
@@ -96,6 +96,8 @@ $wb['traffic_quota_error_regex'] = 'Некорректная квота траф
 $wb['ssl_key_txt'] = 'SSL-ключ';
 $wb['perl_txt'] = 'Perl';
 $wb['fastcgi_php_version_txt'] = 'Версия PHP';
+$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.';
+$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.';
 $wb['pm_txt'] = 'Менеджер процессов PHP-FPM';
 $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
 $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
diff --git a/interface/web/sites/lib/lang/se_web_vhost_domain.lng b/interface/web/sites/lib/lang/se_web_vhost_domain.lng
index 1a2572b950..f612e60ccf 100644
--- a/interface/web/sites/lib/lang/se_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/se_web_vhost_domain.lng
@@ -97,6 +97,8 @@ $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
 $wb['ssl_key_txt'] = 'SSL Key';
 $wb['perl_txt'] = 'Perl';
 $wb['fastcgi_php_version_txt'] = 'PHP Version';
+$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.';
+$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.';
 $wb['pm_txt'] = 'PHP-FPM Process Manager';
 $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
 $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
diff --git a/interface/web/sites/lib/lang/sk_web_vhost_domain.lng b/interface/web/sites/lib/lang/sk_web_vhost_domain.lng
index 17e60da6e6..0c6bc30d96 100644
--- a/interface/web/sites/lib/lang/sk_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/sk_web_vhost_domain.lng
@@ -96,6 +96,8 @@ $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
 $wb['ssl_key_txt'] = 'SSL Key';
 $wb['perl_txt'] = 'Perl';
 $wb['fastcgi_php_version_txt'] = 'PHP Version';
+$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.';
+$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.';
 $wb['pm_txt'] = 'PHP-FPM Process Manager';
 $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
 $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
diff --git a/interface/web/sites/lib/lang/tr_web_vhost_domain.lng b/interface/web/sites/lib/lang/tr_web_vhost_domain.lng
index 4cfe808bfb..a190375c37 100644
--- a/interface/web/sites/lib/lang/tr_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/tr_web_vhost_domain.lng
@@ -97,6 +97,8 @@ $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers deÄŸeri
 $wb['hd_quota_error_regex'] = 'Disk kotası geçersiz.';
 $wb['traffic_quota_error_regex'] = 'Trafik kotası geçersiz.';
 $wb['fastcgi_php_version_txt'] = 'PHP Sürümü';
+$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.';
+$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.';
 $wb['pm_txt'] = 'PHP-FPM İşlem Yöneticisi';
 $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
 $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
diff --git a/interface/web/sites/templates/web_vhost_domain_edit.htm b/interface/web/sites/templates/web_vhost_domain_edit.htm
index 149d430887..46235e09c2 100644
--- a/interface/web/sites/templates/web_vhost_domain_edit.htm
+++ b/interface/web/sites/templates/web_vhost_domain_edit.htm
@@ -230,6 +230,9 @@
                 <div class="col-sm-9"><select name="fastcgi_php_version" id="fastcgi_php_version" class="form-control">
                     {tmpl_var name='fastcgi_php_version'}
                 </select></div>
+                <tmpl_if name="fastcgi_php_version_default_hidden_warning_confirmed">
+                    <input type="hidden" id="fastcgi_php_version_default_hidden_warning_confirmed" name="fastcgi_php_version_default_hidden_warning_confirmed" value="{tmpl_var name='fastcgi_php_version_default_hidden_warning_confirmed'}" />
+                </tmpl_if>
             </div>
             <tmpl_if name="limit_directive_snippets" op="==" value="y"><div class="form-group">
 				<label for="directive_snippets_id" class="col-sm-3 control-label">{tmpl_var name='directive_snippets_id_txt'}</label>
diff --git a/interface/web/sites/web_vhost_domain_edit.php b/interface/web/sites/web_vhost_domain_edit.php
index 459af39670..7f0cd697e9 100644
--- a/interface/web/sites/web_vhost_domain_edit.php
+++ b/interface/web/sites/web_vhost_domain_edit.php
@@ -257,7 +257,9 @@ class page_action extends tform_actions {
 					$php_records = $app->db->queryAllRecords("SELECT * FROM server_php WHERE php_fastcgi_binary != '' AND php_fastcgi_ini_dir != '' AND server_id = ? AND (client_id = 0 OR client_id=?) AND active = 'y'", $parent_domain['server_id'], $_SESSION['s']['user']['client_id']);
 				}
 			}
-			$php_select = "<option value=''>".$app->functions->htmlentities($web_config['php_default_name'])."</option>";
+			if (empty($web_config['php_default_hide']) || 'n' === $web_config['php_default_hide']) {
+				$php_select = "<option value=''>".$app->functions->htmlentities($web_config['php_default_name'])."</option>";
+			}
 			if(is_array($php_records) && !empty($php_records)) {
 				foreach( $php_records as $php_record) {
 					if($this->dataRecord['php'] == 'php-fpm' || ($this->dataRecord['php'] == 'hhvm' && $server_type == 'nginx')){
@@ -403,7 +405,9 @@ class page_action extends tform_actions {
 					$php_records = $app->db->queryAllRecords("SELECT * FROM server_php WHERE php_fastcgi_binary != '' AND php_fastcgi_ini_dir != '' AND server_id = ? AND (client_id = 0 OR client_id=?) AND active = 'y'", $parent_domain['server_id'], $_SESSION['s']['user']['client_id']);
 				}
 			}
-			$php_select = "<option value=''>".$app->functions->htmlentities($web_config['php_default_name'])."</option>";
+			if (empty($web_config['php_default_hide']) || 'n' === $web_config['php_default_hide']) {
+				$php_select = "<option value=''>".$app->functions->htmlentities($web_config['php_default_name'])."</option>";
+			}
 			if(is_array($php_records) && !empty($php_records)) {
 				foreach( $php_records as $php_record) {
 					if($this->dataRecord['php'] == 'php-fpm' || ($this->dataRecord['php'] == 'hhvm' && $server_type == 'nginx')){
@@ -623,7 +627,9 @@ class page_action extends tform_actions {
 					$php_records = $app->db->queryAllRecords("SELECT * FROM server_php WHERE php_fastcgi_binary != '' AND php_fastcgi_ini_dir != '' AND server_id = ? AND active = 'y'", $parent_domain['server_id']);
 				}
 			}
-			$php_select = "<option value=''>".$app->functions->htmlentities($web_config['php_default_name'])."</option>";
+			if (empty($web_config['php_default_hide']) || 'n' === $web_config['php_default_hide']) {
+				$php_select = "<option value=''>".$app->functions->htmlentities($web_config['php_default_name'])."</option>";
+			}
 			if(is_array($php_records) && !empty($php_records)) {
 				foreach( $php_records as $php_record) {
 					if($this->dataRecord['php'] == 'php-fpm' || ($this->dataRecord['php'] == 'hhvm' && $server_type == 'nginx')){
@@ -1375,6 +1381,8 @@ class page_action extends tform_actions {
 			}
 		}
 		
+		$this->validateDefaultFastcgiPhpVersion();
+		
 		parent::onSubmit();
 	}
 	
@@ -1539,6 +1547,47 @@ class page_action extends tform_actions {
 
 		if(isset($this->dataRecord['folder_directive_snippets'])) $app->db->query("UPDATE web_domain SET folder_directive_snippets = ? WHERE domain_id = ?", $this->dataRecord['folder_directive_snippets'], $this->id);
 	}
+	
+	function validateDefaultFastcgiPhpVersion() {
+		global $app;
+
+		// If PHP is not enabled, we don't need to validate the default PHP version
+		if (empty($this->dataRecord['php']) || 'no' === $this->dataRecord['php']) {
+			return;
+		}
+
+		// If the default PHP version is not hidden, we don't need to do any additional validation
+		$app->uses('getconf');
+		$web_config = $app->getconf->get_server_config($this->dataRecord['server_id'], 'web');
+		if (empty($web_config['php_default_hide']) || 'n' === $web_config['php_default_hide']) {
+			return;
+		}
+
+		// The default PHP version is indicated by an empty string, so if the default PHP version is hidden
+		// then an empty string is not a valid PHP version.
+		if (empty($this->dataRecord['fastcgi_php_version'])) {
+			$app->tform->errorMessage .= sprintf('%s<br>', $app->tform->lng('fastcgi_php_version_invalid_txt'));
+			return;
+		}
+		
+		// If the default PHP version is now hidden but this vhost was using it, we don't want to implicitly
+		// switch the user to some random Additional PHP version. So we show a warning instead.
+		$old_fastcgi_php_version = null;
+		if ($this->id > 0) {
+			$existing = $app->db->queryOneRecord('SELECT fastcgi_php_version FROM web_domain WHERE domain_id = ?', $this->id);
+			$old_fastcgi_php_version = $existing['fastcgi_php_version'];
+		}
+
+		if ('' === $old_fastcgi_php_version) {
+			// Warning was already shown, user confirmed the new PHP version
+			if (!empty($_POST['fastcgi_php_version_default_hidden_warning_confirmed'])) {
+				return;
+			}
+
+			$app->tform->errorMessage .= sprintf('%s<br>', $app->tform->lng('fastcgi_php_version_default_hidden_warning_txt'));
+			$app->tpl->setVar('fastcgi_php_version_default_hidden_warning_confirmed', 1);
+		}
+	}
 }
 
 $page = new page_action;
-- 
GitLab


From df09183d8914e3298dc3fea988dd068a0ddf74c6 Mon Sep 17 00:00:00 2001
From: Herman van Rink <rink@initfour.nl>
Date: Tue, 3 Mar 2020 13:55:42 +0100
Subject: [PATCH 151/242] Do not add redirection when the command already does
 that itself.

---
 server/plugins-available/cron_plugin.inc.php | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/server/plugins-available/cron_plugin.inc.php b/server/plugins-available/cron_plugin.inc.php
index af4e24d974..4c1e07c65f 100644
--- a/server/plugins-available/cron_plugin.inc.php
+++ b/server/plugins-available/cron_plugin.inc.php
@@ -259,7 +259,13 @@ class cron_plugin {
 
 					$command .= "\t";
 					//if($job['type'] != 'chrooted' && substr($job['command'], 0, 1) != "/") $command .= $this->parent_domain['document_root'].'/';
-					$command .= $job['command'] . " " . $log_target;
+
+					$command .= $job['command'];
+
+					// Add a default log target when no redirection is included in the command.
+					if (!preg_match('/>/', $job['command'])) {
+						$command .= " " . $log_target;
+					}
 				}
 
 				if($job['type'] == 'chrooted') {
-- 
GitLab


From b450032f620376b80379659c0fef0523bcb9d0a2 Mon Sep 17 00:00:00 2001
From: Florian Schaal <info@schaal-24.de>
Date: Tue, 3 Mar 2020 15:09:33 +0100
Subject: [PATCH 152/242] disable change the name of an additional-version
 which is still in use

---
 .../web/admin/lib/lang/de_server_php.lng      |  1 +
 .../web/admin/lib/lang/en_server_php.lng      |  1 +
 interface/web/admin/server_php_edit.php       | 28 +++++++++++++++++++
 3 files changed, 30 insertions(+)

diff --git a/interface/web/admin/lib/lang/de_server_php.lng b/interface/web/admin/lib/lang/de_server_php.lng
index 4eb9065ba3..f43e79b4af 100644
--- a/interface/web/admin/lib/lang/de_server_php.lng
+++ b/interface/web/admin/lib/lang/de_server_php.lng
@@ -15,4 +15,5 @@ $wb['php_fpm_ini_dir_txt'] = 'Pfad zum php.ini Verzeichnis';
 $wb['php_fpm_pool_dir_txt'] = 'Pfad zum PHP-FPM Pool Verzeichnis';
 $wb['active_txt'] = 'Aktiv';
 $wb['php_in_use_error'] = 'Diese PHP-Version wird noch benutzt.';
+$wb['php_name_in_use_error'] = 'Der Name kann nicht geändert werden.';
 ?>
diff --git a/interface/web/admin/lib/lang/en_server_php.lng b/interface/web/admin/lib/lang/en_server_php.lng
index 6ae160b648..9d322804bb 100644
--- a/interface/web/admin/lib/lang/en_server_php.lng
+++ b/interface/web/admin/lib/lang/en_server_php.lng
@@ -15,4 +15,5 @@ $wb['php_fpm_ini_dir_txt'] = 'Path to the php.ini directory';
 $wb['php_fpm_pool_dir_txt'] = 'Path to the PHP-FPM pool directory';
 $wb['active_txt'] = 'Active';
 $wb['php_in_use_error'] = 'This PHP-Version is in use.';
+$wb['php_name_in_use_error'] = 'The name can not be changed.';
 ?>
diff --git a/interface/web/admin/server_php_edit.php b/interface/web/admin/server_php_edit.php
index 12aacf60b9..c200b25bae 100644
--- a/interface/web/admin/server_php_edit.php
+++ b/interface/web/admin/server_php_edit.php
@@ -50,7 +50,35 @@ $app->uses('tpl,tform,tform_actions');
 $app->load('tform_actions');
 
 class page_action extends tform_actions {
+	function onSubmit() {
+		global $app;
+
+		if(isset($this->id) && $this->id > 0 && $app->tform->getCurrentTab() == 'php_name') {
+			$rec = $app->db->queryOneRecord('SELECT * FROM server_php WHERE server_php_id = ?', $this->id);
+			if($rec['name'] != $this->dataRecord['name']) {
+				$check = array();
+				// fastcgi
+				if($rec['php_fastcgi_binary'] != '') $check[] = $rec['php_fastcgi_binary'];
+				if($rec['php_fastcgi_ini_dir'] != '') $check[] = $rec['php_fastcgi_ini_dir'];
+				if(!empty($check)) $fastcgi_check = implode(':', $check);
+				unset($check);
+				// fpm
+				if($rec['php_fpm_init_script'] != '') $check[] = $rec['php_fpm_init_script'];
+				if($rec['php_fpm_ini_dir'] != '') $check[] = $rec['php_fpm_ini_dir'];
+				if($rec['php_fpm_pool_dir'] != '') $check[] = $rec['php_fpm_pool_dir'];
+				if(!empty($check)) $fpm_check = implode(':', $check);
+
+ 				$sql = 'SELECT domain_id FROM web_domain WHERE server_id = ? AND fastcgi_php_version LIKE ?';
+		 		if(isset($fastcgi_check)) $web_domains_fastcgi = $app->db->queryAllRecords($sql, $this->dataRecord['server_id'], '%:'.$fastcgi_check);
+				if(isset($fpm_check)) $web_domains_fpm = $app->db->queryAllRecords($sql, $this->dataRecord['server_id'], '%:'.$fpm_check);
+
+				if(!empty($webdomains_fastcgi) || !empty($web_domains_fpm))	$app->error($app->tform->lng('php_in_use_error').' '.$app->tform->lng('php_name_in_use_error'));
+			}
+		}
 
+		parent::onSubmit();
+
+	}
 	function onBeforeUpdate() {
 		global $app, $conf;
 
-- 
GitLab


From 814cfb8183935e412dd9988ccda2971ac236fb37 Mon Sep 17 00:00:00 2001
From: Webslice <4052-webslice@users.noreply.git.ispconfig.org>
Date: Wed, 4 Mar 2020 08:25:18 +0100
Subject: [PATCH 153/242] Fix spf name error regex translation

---
 interface/web/dns/lib/lang/ar_dns_spf.lng | 1 +
 interface/web/dns/lib/lang/bg_dns_spf.lng | 1 +
 interface/web/dns/lib/lang/br_dns_spf.lng | 1 +
 interface/web/dns/lib/lang/ca_dns_spf.lng | 1 +
 interface/web/dns/lib/lang/cz_dns_spf.lng | 1 +
 interface/web/dns/lib/lang/de_dns_spf.lng | 1 +
 interface/web/dns/lib/lang/dk_dns_spf.lng | 1 +
 interface/web/dns/lib/lang/el_dns_spf.lng | 1 +
 interface/web/dns/lib/lang/en_dns_spf.lng | 1 +
 interface/web/dns/lib/lang/es_dns_spf.lng | 1 +
 interface/web/dns/lib/lang/fi_dns_spf.lng | 1 +
 interface/web/dns/lib/lang/fr_dns_spf.lng | 1 +
 interface/web/dns/lib/lang/hr_dns_spf.lng | 1 +
 interface/web/dns/lib/lang/hu_dns_spf.lng | 1 +
 interface/web/dns/lib/lang/id_dns_spf.lng | 1 +
 interface/web/dns/lib/lang/it_dns_spf.lng | 1 +
 interface/web/dns/lib/lang/ja_dns_spf.lng | 1 +
 interface/web/dns/lib/lang/nl_dns_spf.lng | 1 +
 interface/web/dns/lib/lang/pl_dns_spf.lng | 1 +
 interface/web/dns/lib/lang/pt_dns_spf.lng | 1 +
 interface/web/dns/lib/lang/ro_dns_spf.lng | 1 +
 interface/web/dns/lib/lang/ru_dns_spf.lng | 1 +
 interface/web/dns/lib/lang/se_dns_spf.lng | 1 +
 interface/web/dns/lib/lang/sk_dns_spf.lng | 1 +
 interface/web/dns/lib/lang/tr_dns_spf.lng | 1 +
 25 files changed, 25 insertions(+)

diff --git a/interface/web/dns/lib/lang/ar_dns_spf.lng b/interface/web/dns/lib/lang/ar_dns_spf.lng
index 09720321b2..0cbf77862f 100644
--- a/interface/web/dns/lib/lang/ar_dns_spf.lng
+++ b/interface/web/dns/lib/lang/ar_dns_spf.lng
@@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname
 $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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
 $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/bg_dns_spf.lng b/interface/web/dns/lib/lang/bg_dns_spf.lng
index 09720321b2..0cbf77862f 100644
--- a/interface/web/dns/lib/lang/bg_dns_spf.lng
+++ b/interface/web/dns/lib/lang/bg_dns_spf.lng
@@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname
 $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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
 $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/br_dns_spf.lng b/interface/web/dns/lib/lang/br_dns_spf.lng
index bbf571c3b7..13722f6696 100644
--- a/interface/web/dns/lib/lang/br_dns_spf.lng
+++ b/interface/web/dns/lib/lang/br_dns_spf.lng
@@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname
 $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['ttl_range_error'] = 'O TTL mínimo são 60 segundos.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
 $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/ca_dns_spf.lng b/interface/web/dns/lib/lang/ca_dns_spf.lng
index 09720321b2..0cbf77862f 100644
--- a/interface/web/dns/lib/lang/ca_dns_spf.lng
+++ b/interface/web/dns/lib/lang/ca_dns_spf.lng
@@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname
 $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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
 $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/cz_dns_spf.lng b/interface/web/dns/lib/lang/cz_dns_spf.lng
index a5691ee340..637d0ca767 100644
--- a/interface/web/dns/lib/lang/cz_dns_spf.lng
+++ b/interface/web/dns/lib/lang/cz_dns_spf.lng
@@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname
 $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['ttl_range_error'] = 'Min. TTL doba je 60 sekund.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
 $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/de_dns_spf.lng b/interface/web/dns/lib/lang/de_dns_spf.lng
index a4f0f7827f..9bf5e676ec 100644
--- a/interface/web/dns/lib/lang/de_dns_spf.lng
+++ b/interface/web/dns/lib/lang/de_dns_spf.lng
@@ -23,6 +23,7 @@ $wb['record_exists_txt'] = 'DNS-Eintrag existiert bereits';
 $wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?';
 $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.';
 $wb['ttl_range_error'] = 'Min. TTL time ist 60 Sekunden.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
 $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['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
diff --git a/interface/web/dns/lib/lang/dk_dns_spf.lng b/interface/web/dns/lib/lang/dk_dns_spf.lng
index 09720321b2..0cbf77862f 100644
--- a/interface/web/dns/lib/lang/dk_dns_spf.lng
+++ b/interface/web/dns/lib/lang/dk_dns_spf.lng
@@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname
 $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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
 $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/el_dns_spf.lng b/interface/web/dns/lib/lang/el_dns_spf.lng
index 09720321b2..0cbf77862f 100644
--- a/interface/web/dns/lib/lang/el_dns_spf.lng
+++ b/interface/web/dns/lib/lang/el_dns_spf.lng
@@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname
 $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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
 $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/en_dns_spf.lng b/interface/web/dns/lib/lang/en_dns_spf.lng
index 455b5ce0ab..2518d4f51f 100644
--- a/interface/web/dns/lib/lang/en_dns_spf.lng
+++ b/interface/web/dns/lib/lang/en_dns_spf.lng
@@ -27,5 +27,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname
 $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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
 $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/es_dns_spf.lng b/interface/web/dns/lib/lang/es_dns_spf.lng
index 353134aded..62c60654f0 100755
--- a/interface/web/dns/lib/lang/es_dns_spf.lng
+++ b/interface/web/dns/lib/lang/es_dns_spf.lng
@@ -25,5 +25,6 @@ $wb['spf_mechanism_txt'] = 'Mecanismo SPF';
 $wb['spf_mx_txt'] = 'Permite a los servidores configurados como MX enviar correos desde este dominio';
 $wb['ttl_range_error'] = 'El tiempo mín. de TTL es 60 segundos.';
 $wb['ttl_txt'] = 'TTL';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
 $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/fi_dns_spf.lng b/interface/web/dns/lib/lang/fi_dns_spf.lng
index 09720321b2..0cbf77862f 100644
--- a/interface/web/dns/lib/lang/fi_dns_spf.lng
+++ b/interface/web/dns/lib/lang/fi_dns_spf.lng
@@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname
 $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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
 $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/fr_dns_spf.lng b/interface/web/dns/lib/lang/fr_dns_spf.lng
index 09720321b2..0cbf77862f 100644
--- a/interface/web/dns/lib/lang/fr_dns_spf.lng
+++ b/interface/web/dns/lib/lang/fr_dns_spf.lng
@@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname
 $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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
 $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/hr_dns_spf.lng b/interface/web/dns/lib/lang/hr_dns_spf.lng
index 09720321b2..0cbf77862f 100644
--- a/interface/web/dns/lib/lang/hr_dns_spf.lng
+++ b/interface/web/dns/lib/lang/hr_dns_spf.lng
@@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname
 $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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
 $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/hu_dns_spf.lng b/interface/web/dns/lib/lang/hu_dns_spf.lng
index 09720321b2..0cbf77862f 100644
--- a/interface/web/dns/lib/lang/hu_dns_spf.lng
+++ b/interface/web/dns/lib/lang/hu_dns_spf.lng
@@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname
 $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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
 $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/id_dns_spf.lng b/interface/web/dns/lib/lang/id_dns_spf.lng
index 09720321b2..0cbf77862f 100644
--- a/interface/web/dns/lib/lang/id_dns_spf.lng
+++ b/interface/web/dns/lib/lang/id_dns_spf.lng
@@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname
 $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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
 $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/it_dns_spf.lng b/interface/web/dns/lib/lang/it_dns_spf.lng
index 09720321b2..0cbf77862f 100644
--- a/interface/web/dns/lib/lang/it_dns_spf.lng
+++ b/interface/web/dns/lib/lang/it_dns_spf.lng
@@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname
 $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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
 $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/ja_dns_spf.lng b/interface/web/dns/lib/lang/ja_dns_spf.lng
index 09720321b2..0cbf77862f 100644
--- a/interface/web/dns/lib/lang/ja_dns_spf.lng
+++ b/interface/web/dns/lib/lang/ja_dns_spf.lng
@@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname
 $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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
 $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/nl_dns_spf.lng b/interface/web/dns/lib/lang/nl_dns_spf.lng
index 09720321b2..0cbf77862f 100644
--- a/interface/web/dns/lib/lang/nl_dns_spf.lng
+++ b/interface/web/dns/lib/lang/nl_dns_spf.lng
@@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname
 $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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
 $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/pl_dns_spf.lng b/interface/web/dns/lib/lang/pl_dns_spf.lng
index 09720321b2..0cbf77862f 100644
--- a/interface/web/dns/lib/lang/pl_dns_spf.lng
+++ b/interface/web/dns/lib/lang/pl_dns_spf.lng
@@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname
 $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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
 $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/pt_dns_spf.lng b/interface/web/dns/lib/lang/pt_dns_spf.lng
index 09720321b2..0cbf77862f 100644
--- a/interface/web/dns/lib/lang/pt_dns_spf.lng
+++ b/interface/web/dns/lib/lang/pt_dns_spf.lng
@@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname
 $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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
 $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/ro_dns_spf.lng b/interface/web/dns/lib/lang/ro_dns_spf.lng
index 09720321b2..0cbf77862f 100644
--- a/interface/web/dns/lib/lang/ro_dns_spf.lng
+++ b/interface/web/dns/lib/lang/ro_dns_spf.lng
@@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname
 $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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
 $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/ru_dns_spf.lng b/interface/web/dns/lib/lang/ru_dns_spf.lng
index a0e77b41b1..2d69c49a32 100644
--- a/interface/web/dns/lib/lang/ru_dns_spf.lng
+++ b/interface/web/dns/lib/lang/ru_dns_spf.lng
@@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname
 $wb['limit_dns_record_txt'] = 'Макс. количество DNS-записей для вашей учетной записи достигнуто.';
 $wb['no_zone_perm'] = 'У Вас нет прав добавлять эту запись.';
 $wb['ttl_range_error'] = 'Мин. время <b>TTL</b> 60 секунд.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
 $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/se_dns_spf.lng b/interface/web/dns/lib/lang/se_dns_spf.lng
index 09720321b2..0cbf77862f 100644
--- a/interface/web/dns/lib/lang/se_dns_spf.lng
+++ b/interface/web/dns/lib/lang/se_dns_spf.lng
@@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname
 $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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
 $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/sk_dns_spf.lng b/interface/web/dns/lib/lang/sk_dns_spf.lng
index 09720321b2..0cbf77862f 100644
--- a/interface/web/dns/lib/lang/sk_dns_spf.lng
+++ b/interface/web/dns/lib/lang/sk_dns_spf.lng
@@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname
 $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['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
 $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
diff --git a/interface/web/dns/lib/lang/tr_dns_spf.lng b/interface/web/dns/lib/lang/tr_dns_spf.lng
index 2683560275..5ca1e470e3 100644
--- a/interface/web/dns/lib/lang/tr_dns_spf.lng
+++ b/interface/web/dns/lib/lang/tr_dns_spf.lng
@@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname
 $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['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
 $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record';
 ?>
-- 
GitLab


From fa5f136581e3b5d25f01c9d662632095c865be72 Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Wed, 4 Mar 2020 09:42:16 +0100
Subject: [PATCH 154/242] Update nginx_plugin.inc.php (add port check for
 proxy)

---
 server/plugins-available/nginx_plugin.inc.php | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php
index ef9300e5dc..ca14daf791 100644
--- a/server/plugins-available/nginx_plugin.inc.php
+++ b/server/plugins-available/nginx_plugin.inc.php
@@ -1522,9 +1522,13 @@ class nginx_plugin {
 
 		//proxy protocol settings
 		if($web_config['vhost_proxy_protocol_enabled'] == "y"){
-			$vhost_data['use_proxy_protocol'] = $data['new']['proxy_protocol'];
-			$vhost_data['proxy_protocol_http'] = (int)$web_config['vhost_proxy_protocol_http_port'];
-			$vhost_data['proxy_protocol_https'] = (int)$web_config['vhost_proxy_protocol_https_port'];
+		    if((int)$web_config['vhost_proxy_protocol_https_port'] > 0) {
+			    $vhost_data['use_proxy_protocol'] = $data['new']['proxy_protocol'];
+			    $vhost_data['proxy_protocol_http'] = (int)$web_config['vhost_proxy_protocol_http_port'];
+			    $vhost_data['proxy_protocol_https'] = (int)$web_config['vhost_proxy_protocol_https_port'];
+		    } else {
+		        $vhost_data['use_proxy_protocol'] = "n";
+		    }
 		}else{
 			$vhost_data['use_proxy_protocol'] = "n";
 		}
-- 
GitLab


From bc713be21b3d12ec93fb9c2f93f9558431dd930d Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Wed, 4 Mar 2020 09:53:01 +0100
Subject: [PATCH 155/242] Update upd_0089.sql - we do not allow merges into
 upd_xxx files.

---
 install/sql/incremental/upd_0089.sql | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/install/sql/incremental/upd_0089.sql b/install/sql/incremental/upd_0089.sql
index 5c676788d6..e69de29bb2 100644
--- a/install/sql/incremental/upd_0089.sql
+++ b/install/sql/incremental/upd_0089.sql
@@ -1,6 +0,0 @@
--- add new proxy_protocol column
-ALTER TABLE `web_domain`
-    ADD COLUMN `proxy_protocol` ENUM('n','y') NOT NULL DEFAULT 'y' AFTER `log_retention`;
-
--- Update old entrys
-UPDATE `web_domain` SET `proxy_protocol` = 'y';
-- 
GitLab


From 54302cf5cbcc6e401f12b4953c6d48d5a8cd30ea Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Wed, 4 Mar 2020 09:55:07 +0100
Subject: [PATCH 156/242] Delete upd_0089.sql

---
 install/sql/incremental/upd_0089.sql | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 install/sql/incremental/upd_0089.sql

diff --git a/install/sql/incremental/upd_0089.sql b/install/sql/incremental/upd_0089.sql
deleted file mode 100644
index e69de29bb2..0000000000
-- 
GitLab


From c97f8313d37c412cf122fa2a9515c59f65fbb170 Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Wed, 4 Mar 2020 09:55:23 +0100
Subject: [PATCH 157/242] Update upd_dev_collection.sql

---
 install/sql/incremental/upd_dev_collection.sql | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql
index e69de29bb2..872fe77073 100644
--- a/install/sql/incremental/upd_dev_collection.sql
+++ b/install/sql/incremental/upd_dev_collection.sql
@@ -0,0 +1,3 @@
+-- add new proxy_protocol column
+ALTER TABLE `web_domain`
+    ADD COLUMN `proxy_protocol` ENUM('n','y') NOT NULL DEFAULT 'y' AFTER `log_retention`;
-- 
GitLab


From c100d85de43979252ec9b3e1474f9f53dcba468b Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Wed, 4 Mar 2020 09:55:33 +0100
Subject: [PATCH 158/242] Update upd_dev_collection.sql

---
 install/sql/incremental/upd_dev_collection.sql | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql
index 872fe77073..29ba602bf8 100644
--- a/install/sql/incremental/upd_dev_collection.sql
+++ b/install/sql/incremental/upd_dev_collection.sql
@@ -1,3 +1,3 @@
 -- add new proxy_protocol column
 ALTER TABLE `web_domain`
-    ADD COLUMN `proxy_protocol` ENUM('n','y') NOT NULL DEFAULT 'y' AFTER `log_retention`;
+    ADD COLUMN `proxy_protocol` ENUM('n','y') NOT NULL DEFAULT 'n' AFTER `log_retention`;
-- 
GitLab


From 2597d721df00ef5ce2de5da5a51e508077cf73d8 Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Wed, 4 Mar 2020 09:56:57 +0100
Subject: [PATCH 159/242] Update ispconfig3.sql

---
 install/sql/ispconfig3.sql | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql
index 6998257046..bfef9733e5 100644
--- a/install/sql/ispconfig3.sql
+++ b/install/sql/ispconfig3.sql
@@ -2071,7 +2071,7 @@ CREATE TABLE `web_domain` (
   `https_port` int(11) unsigned NOT NULL DEFAULT '443',
   `folder_directive_snippets` text,
   `log_retention` int(11) NOT NULL DEFAULT '10',
-  `proxy_protocol` enum('n','y') NOT NULL default 'y',
+  `proxy_protocol` enum('n','y') NOT NULL default 'n',
   PRIMARY KEY  (`domain_id`),
   UNIQUE KEY `serverdomain` (  `server_id` , `ip_address`,  `domain` )
 ) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
-- 
GitLab


From 03ed8666876866851cb662e52b19903ef1da13ad Mon Sep 17 00:00:00 2001
From: Herman van Rink <rink@initfour.nl>
Date: Wed, 4 Mar 2020 17:13:04 +0100
Subject: [PATCH 160/242] Revert earlier, just default log_target to empty
 string, cron discards the output anyway.

---
 server/plugins-available/cron_plugin.inc.php | 10 ++--------
 1 file changed, 2 insertions(+), 8 deletions(-)

diff --git a/server/plugins-available/cron_plugin.inc.php b/server/plugins-available/cron_plugin.inc.php
index 4c1e07c65f..dac261832f 100644
--- a/server/plugins-available/cron_plugin.inc.php
+++ b/server/plugins-available/cron_plugin.inc.php
@@ -224,7 +224,7 @@ class cron_plugin {
 					$command = str_replace(" ", "", $job['run_min']) . "\t" . str_replace(" ", "", $job['run_hour']) . "\t" . str_replace(" ", "", $job['run_mday']) . "\t" . str_replace(" ", "", $job['run_month']) . "\t" . str_replace(" ", "", $job['run_wday']);
 				}
 				
-				$log_target = ">/dev/null 2>&1";
+				$log_target = "";
 				$log_wget_target = '/dev/null';
 				$log_root = '';
 				if($job['log'] == 'y') {
@@ -259,13 +259,7 @@ class cron_plugin {
 
 					$command .= "\t";
 					//if($job['type'] != 'chrooted' && substr($job['command'], 0, 1) != "/") $command .= $this->parent_domain['document_root'].'/';
-
-					$command .= $job['command'];
-
-					// Add a default log target when no redirection is included in the command.
-					if (!preg_match('/>/', $job['command'])) {
-						$command .= " " . $log_target;
-					}
+					$command .= $job['command'] . " " . $log_target;
 				}
 
 				if($job['type'] == 'chrooted') {
-- 
GitLab


From b88ffe44c55616b721e465fc21cb0e12b8b69de8 Mon Sep 17 00:00:00 2001
From: Xaver Maierhofer <xaver.maierhofer@xwissen.info>
Date: Sat, 7 Mar 2020 22:25:50 +0100
Subject: [PATCH 161/242] Disable stats button if stats are none

---
 .../sites/templates/web_vhost_domain_admin_list.htm    | 10 +++++-----
 .../web/sites/templates/web_vhost_domain_list.htm      | 10 +++++-----
 2 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/interface/web/sites/templates/web_vhost_domain_admin_list.htm b/interface/web/sites/templates/web_vhost_domain_admin_list.htm
index 1ab14300d0..20be5a359f 100644
--- a/interface/web/sites/templates/web_vhost_domain_admin_list.htm
+++ b/interface/web/sites/templates/web_vhost_domain_admin_list.htm
@@ -4,12 +4,12 @@
 
 
         <p class="fieldset-legend">{tmpl_var name="toolsarea_head_txt"}</p>
-            
+
                 <button class="btn btn-default formbutton-success" type="button" data-load-content="sites/web_vhost_domain_edit.php?type={tmpl_var name='vhostdomain_type'}"><tmpl_if name='vhostdomain_type' op='==' value='domain'>{tmpl_var name="add_new_record_txt"}</tmpl_if><tmpl_if name='vhostdomain_type' op='==' value='subdomain'>{tmpl_var name="add_new_subdomain_txt"}</tmpl_if><tmpl_if name='vhostdomain_type' op='==' value='aliasdomain'>{tmpl_var name="add_new_aliasdomain_txt"}</tmpl_if></button>
-            
-        
 
-    
+
+
+
         <p class="fieldset-legend"><tmpl_var name="list_head_txt"></p>
             <div class="table-wrapper marginTop15">
 <table class="table">
@@ -46,7 +46,7 @@
                         <td><a href="#" data-load-content="sites/web_vhost_domain_edit.php?id={tmpl_var name='id'}&type={tmpl_var name='vhostdomain_type'}" data-toggle="tooltip" data-placement="bottom" title="{tmpl_var name='domain'}">{tmpl_var name="domain"}</a></td>
                         <td class="text-right">
 							<a href="http://{tmpl_var name="domain"}" target="_blank" class="btn btn-default formbutton-default formbutton-narrow"><span class="icon icon-link"></span></a>
-							<a href="http://{tmpl_var name="domain"}/stats/" target="_blank" class="btn btn-default formbutton-default formbutton-narrow"><span class="glyphicon glyphicon-signal"></span></a>
+							<a href="http://{tmpl_var name="domain"}/stats/" target="_blank" class="btn btn-default formbutton-default formbutton-narrow"<tmpl_if name='stats_type' op='==' value=''> disabled</tmpl_if>><span class="glyphicon glyphicon-signal"></span></a>
                             <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/web_vhost_domain_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                         </td>
                     </tr>
diff --git a/interface/web/sites/templates/web_vhost_domain_list.htm b/interface/web/sites/templates/web_vhost_domain_list.htm
index 105dac9399..4cdde852a3 100644
--- a/interface/web/sites/templates/web_vhost_domain_list.htm
+++ b/interface/web/sites/templates/web_vhost_domain_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="sites/web_vhost_domain_edit.php?type={tmpl_var name='vhostdomain_type'}"><tmpl_if name='vhostdomain_type' op='==' value='domain'>{tmpl_var name="add_new_record_txt"}</tmpl_if><tmpl_if name='vhostdomain_type' op='==' value='subdomain'>{tmpl_var name="add_new_subdomain_txt"}</tmpl_if><tmpl_if name='vhostdomain_type' op='==' value='aliasdomain'>{tmpl_var name="add_new_aliasdomain_txt"}</tmpl_if></button>
-            
-        
 
-    
+
+
+
         <p class="fieldset-legend"><tmpl_var name="list_head_txt"></p>
             <div class="table-wrapper marginTop15">
 <table class="table">
@@ -60,7 +60,7 @@
                         <td><a href="#" data-load-content="sites/web_vhost_domain_edit.php?id={tmpl_var name='id'}&type={tmpl_var name='vhostdomain_type'}" data-toggle="tooltip" data-placement="bottom" title="{tmpl_var name='domain'}">{tmpl_var name="domain"}</a></td>
                         <td class="text-right">
 							<a href="http://{tmpl_var name="domain"}" target="_blank" class="btn btn-default formbutton-default formbutton-narrow"><span class="icon icon-link"></span></button>
-                            <a href="http://{tmpl_var name="domain"}/stats/" target="_blank" class="btn btn-default formbutton-default formbutton-narrow"><span class="glyphicon glyphicon-signal"></span></a>
+                            <a href="http://{tmpl_var name="domain"}/stats/" target="_blank" class="btn btn-default formbutton-default formbutton-narrow"<tmpl_if name='stats_type' op='==' value=''> disabled</tmpl_if>><span class="glyphicon glyphicon-signal"></span></a>
 							<a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/web_vhost_domain_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></button>
                         </td>
                     </tr>
-- 
GitLab


From 8400a46c2a61124a77dcf434207d9160c7c0d8fc Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Fri, 20 Mar 2020 18:57:25 +0100
Subject: [PATCH 162/242] - escape database name on GRANT

---
 .../mysql_clientdb_plugin.inc.php             | 24 ++++++++++---------
 1 file changed, 13 insertions(+), 11 deletions(-)

diff --git a/server/plugins-available/mysql_clientdb_plugin.inc.php b/server/plugins-available/mysql_clientdb_plugin.inc.php
index a26129eed9..72f602f9da 100644
--- a/server/plugins-available/mysql_clientdb_plugin.inc.php
+++ b/server/plugins-available/mysql_clientdb_plugin.inc.php
@@ -108,9 +108,9 @@ class mysql_clientdb_plugin {
 						$result->free();
 				}
 		}
-		
+
 		$app->log("Calling $action for $database_name with access $user_access_mode and hosts " . implode(', ', $host_list), LOGLEVEL_DEBUG);
-		
+
 		// loop through hostlist
 		foreach($host_list as $db_host) {
 			$db_host = trim($db_host);
@@ -137,22 +137,24 @@ class mysql_clientdb_plugin {
 				$app->log("Invalid host " . $db_host . " for GRANT to " . $database_name, LOGLEVEL_DEBUG);
 				continue;
 			}
-			
+
 			$grants = 'ALL PRIVILEGES';
 			if($user_access_mode == 'r') $grants = 'SELECT';
 			elseif($user_access_mode == 'rd') $grants = 'SELECT, DELETE, ALTER, DROP';
-			
+
+			$database_name = str_replace('_', '\\_', $link->escape_string($database_name));
+
 			if($action == 'GRANT') {
 				if($user_access_mode == 'r' || $user_access_mode == 'rd') {
-					if(!$link->query("REVOKE ALL PRIVILEGES ON `".$link->escape_string($database_name)."`.* FROM '".$link->escape_string($database_user)."'@'$db_host'")) $success = false;
-					$app->log("REVOKE ALL PRIVILEGES ON `".$link->escape_string($database_name)."`.* FROM '".$link->escape_string($database_user)."'@'$db_host' success? " . ($success ? 'yes' : 'no'), LOGLEVEL_DEBUG);
+					if(!$link->query("REVOKE ALL PRIVILEGES ON `".$database_name."`.* FROM '".$link->escape_string($database_user)."'@'$db_host'")) $success = false;
+					$app->log("REVOKE ALL PRIVILEGES ON `".$database_name."`.* FROM '".$link->escape_string($database_user)."'@'$db_host' success? " . ($success ? 'yes' : 'no'), LOGLEVEL_DEBUG);
 					$success = true;
 				}
-				
-				if(!$link->query("GRANT " . $grants . " ON `".$link->escape_string($database_name)."`.* TO '".$link->escape_string($database_user)."'@'$db_host' IDENTIFIED BY PASSWORD '".$link->escape_string($database_password)."'")) $success = false;
-				$app->log("GRANT " . $grants . " ON `".$link->escape_string($database_name)."`.* TO '".$link->escape_string($database_user)."'@'$db_host' IDENTIFIED BY PASSWORD '".$link->escape_string($database_password)."' success? " . ($success ? 'yes' : 'no'), LOGLEVEL_DEBUG);
+
+				if(!$link->query("GRANT " . $grants . " ON `".$database_name."`.* TO '".$link->escape_string($database_user)."'@'$db_host' IDENTIFIED BY PASSWORD '".$link->escape_string($database_password)."'")) $success = false;
+				$app->log("GRANT " . $grants . " ON `".$database_name."`.* TO '".$link->escape_string($database_user)."'@'$db_host' IDENTIFIED BY PASSWORD '".$link->escape_string($database_password)."' success? " . ($success ? 'yes' : 'no'), LOGLEVEL_DEBUG);
 			} elseif($action == 'REVOKE') {
-				if(!$link->query("REVOKE ALL PRIVILEGES ON `".$link->escape_string($database_name)."`.* FROM '".$link->escape_string($database_user)."'@'$db_host'")) $success = false;
+				if(!$link->query("REVOKE ALL PRIVILEGES ON `".$database_name."`.* FROM '".$link->escape_string($database_user)."'@'$db_host'")) $success = false;
 			} elseif($action == 'DROP') {
 				if(!$link->query("DROP USER '".$link->escape_string($database_user)."'@'$db_host'")) $success = false;
 			} elseif($action == 'RENAME') {
@@ -293,7 +295,7 @@ class mysql_clientdb_plugin {
 				$app->log('Unable to connect to the database: '.$link->connect_error, LOGLEVEL_ERROR);
 				return;
 			}
-			
+
 			// check if the database exists
 			if($data['new']['database_name'] == $data['old']['database_name']) {
 				$result = $link->query("SHOW DATABASES LIKE '".$link->escape_string($data['new']['database_name'])."'");
-- 
GitLab


From df33e63a635034bd2925ef3ca73a94f8593529eb Mon Sep 17 00:00:00 2001
From: Ramil Valitov <ramilvalitov@gmail.com>
Date: Tue, 24 Mar 2020 02:45:09 +0300
Subject: [PATCH 163/242] [add] make zip file in a single command

---
 server/lib/classes/cron.d/500-backup.inc.php | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/server/lib/classes/cron.d/500-backup.inc.php b/server/lib/classes/cron.d/500-backup.inc.php
index f261daf468..a499918d69 100644
--- a/server/lib/classes/cron.d/500-backup.inc.php
+++ b/server/lib/classes/cron.d/500-backup.inc.php
@@ -127,9 +127,7 @@ class cronjob_backup extends cronjob {
 							if($backup_mode == 'userzip') {
 								//* Create a .zip backup as web user and include also files owned by apache / nginx user
 								$web_backup_file = 'web'.$web_id.'_'.date('Y-m-d_H-i').'.zip';
-								$app->system->exec_safe('cd ? && sudo -u ? find . -group ? -print 2> /dev/null | zip -b ? --exclude=./backup\*'.$backup_excludes.' --symlinks ? -@', $web_path, $web_user, $web_group, $backup_tmp, $web_backup_dir.'/'.$web_backup_file);
-								$retval = $app->system->last_exec_retcode();
-								if($retval == 0 || $retval == 12) $app->system->exec_safe('cd ? && sudo -u ? find . -user ? -print 2> /dev/null | zip -b ? --exclude=./backup\*'.$backup_excludes.' --update --symlinks ? -@', $web_path, $web_user, $http_server_user, $backup_tmp, $web_backup_dir.'/'.$web_backup_file);
+								$app->system->exec_safe('cd ? && sudo -u ? find . -group ? -or -user ? -print 2> /dev/null | zip -b ? --exclude=./backup\*'.$backup_excludes.' --symlinks ? -@', $web_path, $web_user, $web_group, $http_server_user, $backup_tmp, $web_backup_dir.'/'.$web_backup_file);
 								$retval = $app->system->last_exec_retcode();
 							} else {
 								//* Create a tar.gz backup as root user
-- 
GitLab


From b72e5ec3563e73bfac4ea8e61603096517310128 Mon Sep 17 00:00:00 2001
From: Webslice <4052-webslice@users.noreply.git.ispconfig.org>
Date: Thu, 26 Mar 2020 17:46:59 +0100
Subject: [PATCH 164/242] Feature/add api example system config get

---
 interface/lib/classes/remote.d/admin.inc.php  |  7 ++-
 remoting_client/API-docs/navigation.html      |  1 +
 .../API-docs/system_config_get.html           | 29 +++++++++++
 .../examples/system_config_get.php            | 48 +++++++++++++++++++
 4 files changed, 81 insertions(+), 4 deletions(-)
 create mode 100644 remoting_client/API-docs/system_config_get.html
 create mode 100644 remoting_client/examples/system_config_get.php

diff --git a/interface/lib/classes/remote.d/admin.inc.php b/interface/lib/classes/remote.d/admin.inc.php
index 793f9ed339..479b991b7b 100644
--- a/interface/lib/classes/remote.d/admin.inc.php
+++ b/interface/lib/classes/remote.d/admin.inc.php
@@ -131,11 +131,10 @@ class remoting_admin extends remoting {
 	/**
 	 Get the values of the system configuration
 	 @param int session id
-	 @param string  section of the config field in the table. Could be 'web', 'dns', 'mail', 'dns', 'cron', etc
-	 @param string key of the option that you want to set
-	 @param string option value that you want to set
+	 @param string section of the config field in the table. Could be 'web', 'dns', 'mail', 'dns', 'cron', etc
+	 @param string|null key of the option that you want to get 
 	 */
-	public function system_config_get($session_id, $section, $key) {
+	public function system_config_get($session_id, $section, $key = null) {
 		global $app;
 		if(!$this->checkPerm($session_id, 'system_config_get')) {
 			throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.');
diff --git a/remoting_client/API-docs/navigation.html b/remoting_client/API-docs/navigation.html
index 5168122f28..d8c296801b 100644
--- a/remoting_client/API-docs/navigation.html
+++ b/remoting_client/API-docs/navigation.html
@@ -245,6 +245,7 @@
 <p><a href="sites_web_subdomain_delete.html" target="content">sites_web_subdomain_delete</a></p>
 <p><a href="sites_web_subdomain_get.html" target="content">sites_web_subdomain_get</a></p>
 <p><a href="sites_web_subdomain_update.html" target="content">sites_web_subdomain_update</a></p>
+<p><a href="system_config_get.html" target="content">system_config_get</a></p>
 
 <p><a href=""></a></p>
 <p></p>
diff --git a/remoting_client/API-docs/system_config_get.html b/remoting_client/API-docs/system_config_get.html
new file mode 100644
index 0000000000..7d73c974a3
--- /dev/null
+++ b/remoting_client/API-docs/system_config_get.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><title>ISPCOnfig 3 remote API documentation</title>
+
+
+
+
+
+  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+  <link rel="stylesheet" type="text/css" href="definitionen.css">
+  <style type="text/css">
+  </style></head>
+
+<body>
+<div style="padding:40px">
+<h1>system_config_get(<span class="var">$session_id</span>, <span class="var">$section</span>, <span class="var">$key</span> ='');</h1>
+<br>
+<b>Description: </b>
+<p class="margin"> Returns system config by section and optional key</p><br>
+<b>Input Variables: </b>
+<p class="margin"> <span class="var">$session_id</span>, <span class="var">$section</span>, <span class="var">$key</span> =''</p>
+<b>Parameters (in <span class="var">$params</span>): </b>
+<p class="margin"> None.</p>
+<b>Output: </b>
+<p class="margin"> Returns an array with the system config's section values, or a string with the value if a specific config key was requested.</p>
+<!--<b>Output:</b>
+<p style="margin-left:100px">Gives a record of </p> -->
+</div>
+
+</body></html>
diff --git a/remoting_client/examples/system_config_get.php b/remoting_client/examples/system_config_get.php
new file mode 100644
index 0000000000..f5d3d47f7b
--- /dev/null
+++ b/remoting_client/examples/system_config_get.php
@@ -0,0 +1,48 @@
+<?php
+
+require 'soap_config.php';
+
+$context = stream_context_create([
+    'ssl' => [
+        // set some SSL/TLS specific options
+        'verify_peer' => false,
+        'verify_peer_name' => false,
+        'allow_self_signed' => true
+    ]
+]);
+
+
+$client = new SoapClient(null, array('location' => $soap_location,
+		'uri'      => $soap_uri,
+		'trace' => 1,
+		'exceptions' => 1,
+		'stream_context' => $context));
+
+
+try {
+	if($session_id = $client->login($username, $password)) {
+		echo 'Logged successfull. Session ID:'.$session_id.'<br />';
+	}
+
+	//* Set the function parameters.
+	$server_id = 1;
+
+	$result = $client->system_config_get($session_id, 'misc');
+	print_r($result);
+	echo "<br>";
+
+	$result = $client->system_config_get($session_id, 'misc', 'maintenance_mode');
+	print_r($result);
+	echo "<br>";
+
+	if($client->logout($session_id)) {
+		echo 'Logged out.<br />';
+	}
+
+
+} catch (SoapFault $e) {
+	echo $client->__getLastResponse();
+	die('SOAP Error: '.$e->getMessage());
+}
+
+?>
-- 
GitLab


From 3336bba7ac3ad67fbe0643d4858eb01e20163f9e Mon Sep 17 00:00:00 2001
From: Webslice <webslice@bixels.nl>
Date: Sat, 28 Mar 2020 16:09:23 +0100
Subject: [PATCH 165/242] Load remoting classes from modules

---
 interface/lib/classes/json_handler.inc.php    | 40 +---------
 .../lib/classes/remoting_handler_base.inc.php | 75 +++++++++++++++++++
 interface/lib/classes/rest_handler.inc.php    | 40 +---------
 interface/lib/classes/soap_handler.inc.php    | 40 +---------
 interface/web/remote/index.php                |  2 +-
 interface/web/remote/json.php                 |  2 +-
 interface/web/remote/rest.php                 |  2 +-
 7 files changed, 81 insertions(+), 120 deletions(-)
 create mode 100644 interface/lib/classes/remoting_handler_base.inc.php

diff --git a/interface/lib/classes/json_handler.inc.php b/interface/lib/classes/json_handler.inc.php
index de8dd5ba0d..fb0811d314 100644
--- a/interface/lib/classes/json_handler.inc.php
+++ b/interface/lib/classes/json_handler.inc.php
@@ -30,45 +30,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 
 
-class ISPConfigJSONHandler {
-	private $methods = array();
-	private $classes = array();
-
-	public function __construct() {
-		global $app;
-
-		// load main remoting file
-		$app->load('remoting');
-
-		// load all remote classes and get their methods
-		$dir = dirname(realpath(__FILE__)) . '/remote.d';
-		$d = opendir($dir);
-		while($f = readdir($d)) {
-			if($f == '.' || $f == '..') continue;
-			if(!is_file($dir . '/' . $f) || substr($f, strrpos($f, '.')) != '.php') continue;
-
-			$name = substr($f, 0, strpos($f, '.'));
-
-			include $dir . '/' . $f;
-			$class_name = 'remoting_' . $name;
-			if(class_exists($class_name, false)) {
-				$this->classes[$class_name] = new $class_name();
-				foreach(get_class_methods($this->classes[$class_name]) as $method) {
-					$this->methods[$method] = $class_name;
-				}
-			}
-		}
-		closedir($d);
-
-		// add main methods
-		$this->methods['login'] = 'remoting';
-		$this->methods['logout'] = 'remoting';
-		$this->methods['get_function_list'] = 'remoting';
-
-		// create main class
-		$this->classes['remoting'] = new remoting(array_keys($this->methods));
-	}
-
+class ISPConfigJSONHandler extends ISPConfigRemotingHandlerBase {
 	private function _return_json($code, $message, $data = false) {
 		$ret = new stdClass;
 		$ret->code = $code;
diff --git a/interface/lib/classes/remoting_handler_base.inc.php b/interface/lib/classes/remoting_handler_base.inc.php
new file mode 100644
index 0000000000..6393959df8
--- /dev/null
+++ b/interface/lib/classes/remoting_handler_base.inc.php
@@ -0,0 +1,75 @@
+<?php
+
+/*
+Copyright (c) 2020, ISPConfig
+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.
+*/
+
+class ISPConfigRemotingHandlerBase
+{
+	protected $methods = array();
+	protected $classes = array();
+
+	public function __construct()
+	{
+		global $app;
+
+		// load main remoting file
+		$app->load('remoting');
+
+		// load all remoting classes and get their methods
+		$this->load_remoting_classes(realpath(__DIR__) . '/remote.d/*.inc.php');
+
+		// load all remoting classes from modules
+		$this->load_remoting_classes(realpath(__DIR__) . '/../../web/*/lib/classes/remote.d/*.inc.php');
+
+		// add main methods
+		$this->methods['login'] = 'remoting';
+		$this->methods['logout'] = 'remoting';
+		$this->methods['get_function_list'] = 'remoting';
+
+		// create main class
+		$this->classes['remoting'] = new remoting(array_keys($this->methods));
+	}
+
+	private function load_remoting_classes($glob_pattern)
+	{
+		$files = glob($glob_pattern);
+
+		foreach ($files as $file) {
+			$name = str_replace('.inc.php', '', basename($file));
+			$class_name = 'remoting_' . $name;
+
+			include_once $file;
+			if(class_exists($class_name, false)) {
+				$this->classes[$class_name] = new $class_name();
+				foreach(get_class_methods($this->classes[$class_name]) as $method) {
+					$this->methods[$method] = $class_name;
+				}
+			}
+		}
+	}
+}
diff --git a/interface/lib/classes/rest_handler.inc.php b/interface/lib/classes/rest_handler.inc.php
index ceaa7c63be..ae3e443d48 100644
--- a/interface/lib/classes/rest_handler.inc.php
+++ b/interface/lib/classes/rest_handler.inc.php
@@ -30,46 +30,8 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 
 
-class ISPConfigRESTHandler {
-	private $methods = array();
-	private $classes = array();
-	
+class ISPConfigRESTHandler extends ISPConfigRemotingHandlerBase {
 	private $api_version = 1;
-	
-	public function __construct() {
-		global $app;
-
-		// load main remoting file
-		$app->load('remoting');
-
-		// load all remote classes and get their methods
-		$dir = dirname(realpath(__FILE__)) . '/remote.d';
-		$d = opendir($dir);
-		while($f = readdir($d)) {
-			if($f == '.' || $f == '..') continue;
-			if(!is_file($dir . '/' . $f) || substr($f, strrpos($f, '.')) != '.php') continue;
-
-			$name = substr($f, 0, strpos($f, '.'));
-
-			include $dir . '/' . $f;
-			$class_name = 'remoting_' . $name;
-			if(class_exists($class_name, false)) {
-				$this->classes[$class_name] = new $class_name();
-				foreach(get_class_methods($this->classes[$class_name]) as $method) {
-					$this->methods[$method] = $class_name;
-				}
-			}
-		}
-		closedir($d);
-
-		// add main methods
-		$this->methods['login'] = 'remoting';
-		$this->methods['logout'] = 'remoting';
-		$this->methods['get_function_list'] = 'remoting';
-
-		// create main class
-		$this->classes['remoting'] = new remoting(array_keys($this->methods));
-	}
 
 	private function _return_error($code, $codename, $message) {
 		header('HTTP/1.1 ' . $code . ' ' . $codename);
diff --git a/interface/lib/classes/soap_handler.inc.php b/interface/lib/classes/soap_handler.inc.php
index 704e21b20b..16693e12c9 100644
--- a/interface/lib/classes/soap_handler.inc.php
+++ b/interface/lib/classes/soap_handler.inc.php
@@ -30,45 +30,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 
 
-class ISPConfigSoapHandler {
-	private $methods = array();
-	private $classes = array();
-
-	public function __construct() {
-		global $app;
-
-		// load main remoting file
-		$app->load('remoting');
-
-		// load all remote classes and get their methods
-		$dir = dirname(realpath(__FILE__)) . '/remote.d';
-		$d = opendir($dir);
-		while($f = readdir($d)) {
-			if($f == '.' || $f == '..') continue;
-			if(!is_file($dir . '/' . $f) || substr($f, strrpos($f, '.')) != '.php') continue;
-
-			$name = substr($f, 0, strpos($f, '.'));
-
-			include_once $dir . '/' . $f;
-			$class_name = 'remoting_' . $name;
-			if(class_exists($class_name, false)) {
-				$this->classes[$class_name] = new $class_name();
-				foreach(get_class_methods($this->classes[$class_name]) as $method) {
-					$this->methods[$method] = $class_name;
-				}
-			}
-		}
-		closedir($d);
-
-		// add main methods
-		$this->methods['login'] = 'remoting';
-		$this->methods['logout'] = 'remoting';
-		$this->methods['get_function_list'] = 'remoting';
-
-		// create main class
-		$this->classes['remoting'] = new remoting(array_keys($this->methods));
-	}
-
+class ISPConfigSoapHandler extends ISPConfigRemotingHandlerBase {
 	public function __call($method, $params) {
 		if(array_key_exists($method, $this->methods) == false) {
 			throw new SoapFault('invalid_method', 'Method ' . $method . ' does not exist');
diff --git a/interface/web/remote/index.php b/interface/web/remote/index.php
index 670a9db13b..6352dfe504 100644
--- a/interface/web/remote/index.php
+++ b/interface/web/remote/index.php
@@ -8,7 +8,7 @@ require_once '../../lib/app.inc.php';
 
 if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.');
 
-$app->load('soap_handler,getconf');
+$app->load('remoting_handler_base,soap_handler,getconf');
 
 $security_config = $app->getconf->get_security_config('permissions');
 if($security_config['remote_api_allowed'] != 'yes') die('Remote API is disabled in security settings.');
diff --git a/interface/web/remote/json.php b/interface/web/remote/json.php
index 926a995395..d6eb8dcbc1 100644
--- a/interface/web/remote/json.php
+++ b/interface/web/remote/json.php
@@ -8,7 +8,7 @@ require_once '../../lib/app.inc.php';
 
 if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.');
 
-$app->load('json_handler,getconf');
+$app->load('remoting_handler_base,json_handler,getconf');
 
 $security_config = $app->getconf->get_security_config('permissions');
 if($security_config['remote_api_allowed'] != 'yes') die('Remote API is disabled in security settings.');
diff --git a/interface/web/remote/rest.php b/interface/web/remote/rest.php
index 4f202c6eee..381fd42655 100644
--- a/interface/web/remote/rest.php
+++ b/interface/web/remote/rest.php
@@ -6,7 +6,7 @@ require_once '../../lib/config.inc.php';
 $conf['start_session'] = false;
 require_once '../../lib/app.inc.php';
 
-$app->load('rest_handler,getconf');
+$app->load('remoting_handler_base,rest_handler,getconf');
 
 $security_config = $app->getconf->get_security_config('permissions');
 if($security_config['remote_api_allowed'] != 'yes') die('Remote API is disabled in security settings.');
-- 
GitLab


From aa1eed46b3d03746640a73db6df7d163ba036df3 Mon Sep 17 00:00:00 2001
From: Ramil Valitov <ramilvalitov@gmail.com>
Date: Mon, 30 Mar 2020 12:41:39 +0200
Subject: [PATCH 166/242] Feature/backup copies

---
 interface/web/mail/form/mail_user.tform.php         | 2 +-
 interface/web/sites/form/web_vhost_domain.tform.php | 2 +-
 server/lib/classes/cron.d/500-backup.inc.php        | 9 +++++++--
 server/lib/classes/cron.d/500-backup_mail.inc.php   | 7 ++++++-
 4 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/interface/web/mail/form/mail_user.tform.php b/interface/web/mail/form/mail_user.tform.php
index da386f5844..0efc7f3d6b 100644
--- a/interface/web/mail/form/mail_user.tform.php
+++ b/interface/web/mail/form/mail_user.tform.php
@@ -469,7 +469,7 @@ if ($backup_available) {
 				'datatype'      => 'INTEGER',
 				'formtype'      => 'SELECT',
 				'default'       => '',
-				'value'         => array('1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9', '10' => '10')
+				'value'			=> array('1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9', '10' => '10', '15' => '15', '20' => '20', '30' => '30')
 			),
 		##################################
 		# END Datatable fields
diff --git a/interface/web/sites/form/web_vhost_domain.tform.php b/interface/web/sites/form/web_vhost_domain.tform.php
index 8b5a36441a..5c3057f685 100644
--- a/interface/web/sites/form/web_vhost_domain.tform.php
+++ b/interface/web/sites/form/web_vhost_domain.tform.php
@@ -668,7 +668,7 @@ if ($backup_available) {
 				'datatype' => 'INTEGER',
 				'formtype' => 'SELECT',
 				'default' => '',
-				'value'  => array('1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9', '10' => '10')
+				'value'  => array('1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9', '10' => '10', '15' => '15', '20' => '20', '30' => '30')
 			),
 			'backup_excludes' => array (
 				'datatype' => 'VARCHAR',
diff --git a/server/lib/classes/cron.d/500-backup.inc.php b/server/lib/classes/cron.d/500-backup.inc.php
index f261daf468..b68dd3b8e1 100644
--- a/server/lib/classes/cron.d/500-backup.inc.php
+++ b/server/lib/classes/cron.d/500-backup.inc.php
@@ -33,6 +33,11 @@ class cronjob_backup extends cronjob {
 	// job schedule
 	protected $_schedule = '0 0 * * *';
 
+	/**
+	 * The maximum number of backups that ISPConfig can store.
+	 */
+	const max_backups = 30;
+
 	/* this function is optional if it contains no custom code */
 	public function onPrepare() {
 		global $app;
@@ -177,7 +182,7 @@ class cronjob_backup extends cronjob {
 
 							rsort($files);
 
-							for ($n = $backup_copies; $n <= 10; $n++) {
+							for ($n = $backup_copies; $n <= self::max_backups; $n++) {
 								if(isset($files[$n]) && is_file($web_backup_dir.'/'.$files[$n])) {
 									$sql = "DELETE FROM web_backup WHERE server_id = ? AND parent_domain_id = ? AND filename = ?";
 									$app->db->query($sql, $conf['server_id'], $web_id, $files[$n]);
@@ -306,7 +311,7 @@ class cronjob_backup extends cronjob {
 							reset($files);
 							foreach($files as $db_name => $filelist) {
 								rsort($filelist);
-								for ($n = $backup_copies; $n <= 10; $n++) {
+								for ($n = $backup_copies; $n <= self::max_backups; $n++) {
 									if(isset($filelist[$n]) && is_file($db_backup_dir.'/'.$filelist[$n])) {
 										$sql = "DELETE FROM web_backup WHERE server_id = ? AND parent_domain_id = ? AND filename = ?";
 										$app->db->query($sql, $conf['server_id'], $web_id, $filelist[$n]);
diff --git a/server/lib/classes/cron.d/500-backup_mail.inc.php b/server/lib/classes/cron.d/500-backup_mail.inc.php
index 234f02771d..2b1fd58177 100644
--- a/server/lib/classes/cron.d/500-backup_mail.inc.php
+++ b/server/lib/classes/cron.d/500-backup_mail.inc.php
@@ -33,6 +33,11 @@ class cronjob_backup_mail extends cronjob {
 	protected $_schedule = '0 0 * * *';
 	private $tmp_backup_dir = '';
 
+	/**
+	 * The maximum number of backups that ISPConfig can store.
+	 */
+	const max_backups = 30;
+
 	/* this function is optional if it contains no custom code */
 	public function onPrepare() {
 		global $app;
@@ -204,7 +209,7 @@ class cronjob_backup_mail extends cronjob {
 						}
 						$dir_handle->close();
 						rsort($files);
-						for ($n = $backup_copies; $n <= 10; $n++) {
+						for ($n = $backup_copies; $n <= self::max_backups; $n++) {
 							if(isset($files[$n]) && is_file($mail_backup_dir.'/'.$files[$n])) {
 								unlink($mail_backup_dir.'/'.$files[$n]);
 								$sql = "DELETE FROM mail_backup WHERE server_id = ? AND parent_domain_id = ? AND filename = ?";
-- 
GitLab


From f4393490ffb793c91b0d060ff591848fe5f245cc Mon Sep 17 00:00:00 2001
From: Webslice <4052-webslice@users.noreply.git.ispconfig.org>
Date: Mon, 30 Mar 2020 12:43:40 +0200
Subject: [PATCH 167/242] Exclude IP's from maintenance

---
 CONTRIBUTING.md                                  |  2 +-
 install/tpl/system.ini.master                    |  1 +
 interface/lib/app.inc.php                        | 16 ++++++++++++++++
 interface/lib/classes/remoting.inc.php           |  4 +---
 interface/web/admin/form/system_config.tform.php | 14 ++++++++++++++
 .../web/admin/lib/lang/ar_system_config.lng      |  2 ++
 .../web/admin/lib/lang/bg_system_config.lng      |  2 ++
 .../web/admin/lib/lang/br_system_config.lng      |  2 ++
 .../web/admin/lib/lang/ca_system_config.lng      |  2 ++
 .../web/admin/lib/lang/cz_system_config.lng      |  2 ++
 .../web/admin/lib/lang/de_system_config.lng      |  2 ++
 .../web/admin/lib/lang/dk_system_config.lng      |  2 ++
 .../web/admin/lib/lang/el_system_config.lng      |  2 ++
 .../web/admin/lib/lang/en_system_config.lng      |  2 ++
 .../web/admin/lib/lang/es_system_config.lng      |  2 ++
 .../web/admin/lib/lang/fi_system_config.lng      |  2 ++
 .../web/admin/lib/lang/fr_system_config.lng      |  2 ++
 .../web/admin/lib/lang/hr_system_config.lng      |  2 ++
 .../web/admin/lib/lang/hu_system_config.lng      |  2 ++
 .../web/admin/lib/lang/id_system_config.lng      |  2 ++
 .../web/admin/lib/lang/it_system_config.lng      |  2 ++
 .../web/admin/lib/lang/ja_system_config.lng      |  2 ++
 .../web/admin/lib/lang/nl_system_config.lng      |  2 ++
 .../web/admin/lib/lang/pl_system_config.lng      |  2 ++
 .../web/admin/lib/lang/pt_system_config.lng      |  2 ++
 .../web/admin/lib/lang/ro_system_config.lng      |  2 ++
 .../web/admin/lib/lang/ru_system_config.lng      |  2 ++
 .../web/admin/lib/lang/se_system_config.lng      |  2 ++
 .../web/admin/lib/lang/sk_system_config.lng      |  2 ++
 .../web/admin/lib/lang/tr_system_config.lng      |  2 ++
 .../admin/templates/system_config_misc_edit.htm  |  6 ++++++
 interface/web/login/index.php                    |  5 ++---
 32 files changed, 91 insertions(+), 7 deletions(-)

diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index f6c528479a..d8eac80ebd 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -123,4 +123,4 @@ $web_config = $app->getconf->get_server_config($server_id,'web');
 
 # Learn about the form validators
 There are form validators in interface/lib/classes/tform.inc.php to make validating forms easier.
-Read about: REGEX,UNIQUE,NOTEMPTY,ISEMAIL,ISINT,ISPOSITIVE,ISIPV4,CUSTOM
+Read about: REGEX,UNIQUE,NOTEMPTY,ISEMAIL,ISINT,ISPOSITIVE,ISIPV4,ISIPV6,ISIP,CUSTOM
diff --git a/install/tpl/system.ini.master b/install/tpl/system.ini.master
index c916a62547..4df1a877dc 100644
--- a/install/tpl/system.ini.master
+++ b/install/tpl/system.ini.master
@@ -55,6 +55,7 @@ tab_change_warning=n
 use_loadindicator=y
 use_combobox=y
 maintenance_mode=n
+maintenance_mode_exclude_ips=
 admin_dashlets_left=
 admin_dashlets_right=
 reseller_dashlets_left=
diff --git a/interface/lib/app.inc.php b/interface/lib/app.inc.php
index e817fcbd44..be6c15666c 100755
--- a/interface/lib/app.inc.php
+++ b/interface/lib/app.inc.php
@@ -333,6 +333,22 @@ class app {
 		$this->tpl->setVar('globalsearch_noresults_limit_txt', $this->lng('globalsearch_noresults_limit_txt'));
 		$this->tpl->setVar('globalsearch_searchfield_watermark_txt', $this->lng('globalsearch_searchfield_watermark_txt'));
 	}
+
+	public function is_under_maintenance() {
+		$system_config_misc = $this->getconf->get_global_config('misc');
+		$maintenance_mode = 'n';
+		$maintenance_mode_exclude_ips = [];
+
+		if (!empty($system_config_misc['maintenance_mode'])) {
+			$maintenance_mode = $system_config_misc['maintenance_mode'];
+		}
+
+		if (!empty($system_config_misc['maintenance_mode_exclude_ips'])) {
+			$maintenance_mode_exclude_ips = array_map('trim', explode(',', $system_config_misc['maintenance_mode_exclude_ips']));
+		}
+
+		return 'y' === $maintenance_mode && !in_array($_SERVER['REMOTE_ADDR'], $maintenance_mode_exclude_ips);
+	}
 	
 	private function get_cookie_domain() {
 		$sec_config = $this->getconf->get_security_config('permissions');
diff --git a/interface/lib/classes/remoting.inc.php b/interface/lib/classes/remoting.inc.php
index e1fc1ada86..47aa517de8 100644
--- a/interface/lib/classes/remoting.inc.php
+++ b/interface/lib/classes/remoting.inc.php
@@ -72,9 +72,7 @@ class remoting {
 		global $app, $conf;
 
 		// Maintenance mode
-		$app->uses('ini_parser,getconf');
-		$server_config_array = $app->getconf->get_global_config('misc');
-		if($server_config_array['maintenance_mode'] == 'y'){
+		if($app->is_under_maintenance()){
 			throw new SoapFault('maintenance_mode', 'This ISPConfig installation is currently under maintenance. We should be back shortly. Thank you for your patience.');
 			return false;
 		}
diff --git a/interface/web/admin/form/system_config.tform.php b/interface/web/admin/form/system_config.tform.php
index cb37cbefdd..d1b0a793e7 100644
--- a/interface/web/admin/form/system_config.tform.php
+++ b/interface/web/admin/form/system_config.tform.php
@@ -606,6 +606,20 @@ $form["tabs"]['misc'] = array (
 			'default' => 'n',
 			'value'  => array(0 => 'n', 1 => 'y')
 		),
+		'maintenance_mode_exclude_ips' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'validators' => array(
+				 0 => array (
+					'type' => 'ISIP',
+					'allowempty' => true,
+					'separator' => ',',
+					'errmsg'=> 'maintenance_mode_exclude_ips_error_isip'
+				),
+			),
+			'default' => '',
+			'value'  => ''
+		),
 		'admin_dashlets_left' => array (
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
diff --git a/interface/web/admin/lib/lang/ar_system_config.lng b/interface/web/admin/lib/lang/ar_system_config.lng
index 0a830014d8..4ea9a68919 100644
--- a/interface/web/admin/lib/lang/ar_system_config.lng
+++ b/interface/web/admin/lib/lang/ar_system_config.lng
@@ -29,6 +29,8 @@ $wb['admin_mail_txt'] = 'Administrators e-mail';
 $wb['monitor_key_txt'] = 'Monitor keyword';
 $wb['admin_name_txt'] = 'Administrators name';
 $wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
 $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
 $wb['smtp_host_txt'] = 'SMTP host';
 $wb['smtp_port_txt'] = 'SMTP port';
diff --git a/interface/web/admin/lib/lang/bg_system_config.lng b/interface/web/admin/lib/lang/bg_system_config.lng
index 130cb596aa..1ea00be94f 100644
--- a/interface/web/admin/lib/lang/bg_system_config.lng
+++ b/interface/web/admin/lib/lang/bg_system_config.lng
@@ -29,6 +29,8 @@ $wb['admin_mail_txt'] = 'Администраторски емаил';
 $wb['admin_name_txt'] = 'Администраторски имена';
 $wb['system_config_desc_txt'] = '';
 $wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
 $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
 $wb['smtp_host_txt'] = 'SMTP host';
 $wb['smtp_port_txt'] = 'SMTP port';
diff --git a/interface/web/admin/lib/lang/br_system_config.lng b/interface/web/admin/lib/lang/br_system_config.lng
index 98bd4c9614..f1feae4768 100644
--- a/interface/web/admin/lib/lang/br_system_config.lng
+++ b/interface/web/admin/lib/lang/br_system_config.lng
@@ -40,6 +40,8 @@ $wb['admin_mail_txt'] = 'Administrador(es) de e-mails';
 $wb['monitor_key_txt'] = 'Palavras reservadas a monitorar';
 $wb['admin_name_txt'] = 'Nome do administrador';
 $wb['maintenance_mode_txt'] = 'Modo manutenção';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
 $wb['smtp_enabled_txt'] = 'Usar SMTP para enviar e-mails do sistema';
 $wb['smtp_host_txt'] = 'Host SMTP';
 $wb['smtp_port_txt'] = 'Porta SMTP';
diff --git a/interface/web/admin/lib/lang/ca_system_config.lng b/interface/web/admin/lib/lang/ca_system_config.lng
index cc3c11c6c5..d9dfcfaa66 100644
--- a/interface/web/admin/lib/lang/ca_system_config.lng
+++ b/interface/web/admin/lib/lang/ca_system_config.lng
@@ -40,6 +40,8 @@ $wb['admin_mail_txt'] = 'Administrator\'s e-mail';
 $wb['monitor_key_txt'] = 'Monitor keyword';
 $wb['admin_name_txt'] = 'Administrator\'s name';
 $wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
 $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
 $wb['smtp_host_txt'] = 'SMTP host';
 $wb['smtp_port_txt'] = 'SMTP port';
diff --git a/interface/web/admin/lib/lang/cz_system_config.lng b/interface/web/admin/lib/lang/cz_system_config.lng
index 3660e1b689..e85b8ab9a5 100644
--- a/interface/web/admin/lib/lang/cz_system_config.lng
+++ b/interface/web/admin/lib/lang/cz_system_config.lng
@@ -29,6 +29,8 @@ $wb['mailmailinglist_link_txt'] = 'Ikonový odkaz na aplikaci E-mailových konfe
 $wb['mailmailinglist_url_txt'] = 'E-mailové konference URL';
 $wb['monitor_key_txt'] = 'Monitor keyword';
 $wb['maintenance_mode_txt'] = 'Režim údržby';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
 $wb['smtp_enabled_txt'] = 'Použít (zvolit) SMTP server pro zasílání systémových mailů';
 $wb['smtp_host_txt'] = 'SMTP host';
 $wb['smtp_port_txt'] = 'SMTP port';
diff --git a/interface/web/admin/lib/lang/de_system_config.lng b/interface/web/admin/lib/lang/de_system_config.lng
index 76910e1db3..21169ddf08 100644
--- a/interface/web/admin/lib/lang/de_system_config.lng
+++ b/interface/web/admin/lib/lang/de_system_config.lng
@@ -37,6 +37,8 @@ $wb['admin_mail_txt'] = 'Administrator E-Mail';
 $wb['monitor_key_txt'] = 'ISPConfig Monitor App Passwort';
 $wb['admin_name_txt'] = 'Name des Administrators';
 $wb['maintenance_mode_txt'] = 'Wartungsmodus';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
 $wb['smtp_enabled_txt'] = 'SMTP zum System E-Mailversand nutzen';
 $wb['smtp_host_txt'] = 'SMTP Server';
 $wb['smtp_port_txt'] = 'SMTP Port';
diff --git a/interface/web/admin/lib/lang/dk_system_config.lng b/interface/web/admin/lib/lang/dk_system_config.lng
index 26b0fe7e78..eb725ac519 100644
--- a/interface/web/admin/lib/lang/dk_system_config.lng
+++ b/interface/web/admin/lib/lang/dk_system_config.lng
@@ -35,6 +35,8 @@ $wb['admin_mail_txt'] = 'Administratorer e-mail';
 $wb['monitor_key_txt'] = 'Monitor nøgleord';
 $wb['admin_name_txt'] = 'Administratorer navn';
 $wb['maintenance_mode_txt'] = 'Vedligeholdelsestilstand';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
 $wb['smtp_enabled_txt'] = 'Brug SMTP for at sende system mails';
 $wb['smtp_host_txt'] = 'SMTP host';
 $wb['smtp_port_txt'] = 'SMTP port';
diff --git a/interface/web/admin/lib/lang/el_system_config.lng b/interface/web/admin/lib/lang/el_system_config.lng
index 640d6f00a9..583bef7d39 100644
--- a/interface/web/admin/lib/lang/el_system_config.lng
+++ b/interface/web/admin/lib/lang/el_system_config.lng
@@ -29,6 +29,8 @@ $wb['admin_mail_txt'] = 'e-mail Διαχειριστών';
 $wb['monitor_key_txt'] = 'Monitor keyword';
 $wb['admin_name_txt'] = 'Όνομα Administrator';
 $wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
 $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
 $wb['smtp_host_txt'] = 'SMTP host';
 $wb['smtp_port_txt'] = 'SMTP θύρα';
diff --git a/interface/web/admin/lib/lang/en_system_config.lng b/interface/web/admin/lib/lang/en_system_config.lng
index ef34493c9d..f43603f6b6 100644
--- a/interface/web/admin/lib/lang/en_system_config.lng
+++ b/interface/web/admin/lib/lang/en_system_config.lng
@@ -40,6 +40,8 @@ $wb['admin_mail_txt'] = 'Administrator\'s e-mail';
 $wb["monitor_key_txt"] = 'Monitor keyword';
 $wb['admin_name_txt'] = 'Administrator\'s name';
 $wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
 $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
 $wb['smtp_host_txt'] = 'SMTP host';
 $wb['smtp_port_txt'] = 'SMTP port';
diff --git a/interface/web/admin/lib/lang/es_system_config.lng b/interface/web/admin/lib/lang/es_system_config.lng
index 043c52cfdd..f788117fd4 100755
--- a/interface/web/admin/lib/lang/es_system_config.lng
+++ b/interface/web/admin/lib/lang/es_system_config.lng
@@ -40,6 +40,8 @@ $wb['mailboxlist_webmail_link_txt'] = 'Vinculo a correo web en la lista de buzon
 $wb['mailmailinglist_link_txt'] = 'Vínculo a la lista de correos en la lista de la Lista de correos';
 $wb['mailmailinglist_url_txt'] = 'URL a la lista de correos';
 $wb['maintenance_mode_txt'] = 'Modo de mantenimiento';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
 $wb['min_password_length_txt'] = 'Longitud mínima de la contraseña';
 $wb['min_password_strength_txt'] = 'Fortaleza mínima de la contraseña';
 $wb['monitor_key_txt'] = 'Palabra clave del Monitor';
diff --git a/interface/web/admin/lib/lang/fi_system_config.lng b/interface/web/admin/lib/lang/fi_system_config.lng
index c0972c49d8..9def05e14a 100644
--- a/interface/web/admin/lib/lang/fi_system_config.lng
+++ b/interface/web/admin/lib/lang/fi_system_config.lng
@@ -29,6 +29,8 @@ $wb['admin_mail_txt'] = 'Administrators e-mail';
 $wb['monitor_key_txt'] = 'Monitor keyword';
 $wb['admin_name_txt'] = 'Administrators name';
 $wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
 $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
 $wb['smtp_host_txt'] = 'SMTP host';
 $wb['smtp_port_txt'] = 'SMTP port';
diff --git a/interface/web/admin/lib/lang/fr_system_config.lng b/interface/web/admin/lib/lang/fr_system_config.lng
index 18f0dbbed4..7150804aaf 100644
--- a/interface/web/admin/lib/lang/fr_system_config.lng
+++ b/interface/web/admin/lib/lang/fr_system_config.lng
@@ -29,6 +29,8 @@ $wb['admin_mail_txt'] = 'E-mail de l’administrateur';
 $wb['monitor_key_txt'] = 'Mot-clé du moniteur';
 $wb['admin_name_txt'] = 'Nom des administrateurs';
 $wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
 $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
 $wb['smtp_host_txt'] = 'SMTP host';
 $wb['smtp_port_txt'] = 'SMTP port';
diff --git a/interface/web/admin/lib/lang/hr_system_config.lng b/interface/web/admin/lib/lang/hr_system_config.lng
index a7735647b1..21b7953035 100644
--- a/interface/web/admin/lib/lang/hr_system_config.lng
+++ b/interface/web/admin/lib/lang/hr_system_config.lng
@@ -29,6 +29,8 @@ $wb['mailmailinglist_url_txt'] = 'URL mailing liste';
 $wb['admin_mail_txt'] = 'e-mail administratora';
 $wb['admin_name_txt'] = 'Ime administratora';
 $wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
 $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
 $wb['smtp_host_txt'] = 'SMTP host';
 $wb['smtp_port_txt'] = 'SMTP port';
diff --git a/interface/web/admin/lib/lang/hu_system_config.lng b/interface/web/admin/lib/lang/hu_system_config.lng
index cee497fe19..8ef0acdeae 100644
--- a/interface/web/admin/lib/lang/hu_system_config.lng
+++ b/interface/web/admin/lib/lang/hu_system_config.lng
@@ -29,6 +29,8 @@ $wb['admin_name_txt'] = 'Administrators name';
 $wb['enable_custom_login_txt'] = 'Allow custom login name';
 $wb['monitor_key_txt'] = 'Monitor keyword';
 $wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
 $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
 $wb['smtp_host_txt'] = 'SMTP host';
 $wb['smtp_port_txt'] = 'SMTP port';
diff --git a/interface/web/admin/lib/lang/id_system_config.lng b/interface/web/admin/lib/lang/id_system_config.lng
index 344185b84d..5e76d45bf7 100644
--- a/interface/web/admin/lib/lang/id_system_config.lng
+++ b/interface/web/admin/lib/lang/id_system_config.lng
@@ -29,6 +29,8 @@ $wb['admin_mail_txt'] = 'Administrators e-mail';
 $wb['monitor_key_txt'] = 'Monitor keyword';
 $wb['admin_name_txt'] = 'Administrators name';
 $wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
 $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
 $wb['smtp_host_txt'] = 'SMTP host';
 $wb['smtp_port_txt'] = 'SMTP port';
diff --git a/interface/web/admin/lib/lang/it_system_config.lng b/interface/web/admin/lib/lang/it_system_config.lng
index 311b7c957c..85464c3739 100644
--- a/interface/web/admin/lib/lang/it_system_config.lng
+++ b/interface/web/admin/lib/lang/it_system_config.lng
@@ -29,6 +29,8 @@ $wb['mailmailinglist_url_txt'] = 'Mailing list URL';
 $wb['admin_mail_txt'] = 'Administrators e-mail';
 $wb['admin_name_txt'] = 'Administrators name';
 $wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
 $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
 $wb['smtp_host_txt'] = 'SMTP host';
 $wb['smtp_port_txt'] = 'SMTP port';
diff --git a/interface/web/admin/lib/lang/ja_system_config.lng b/interface/web/admin/lib/lang/ja_system_config.lng
index aa5cc6a7a3..744db787b8 100644
--- a/interface/web/admin/lib/lang/ja_system_config.lng
+++ b/interface/web/admin/lib/lang/ja_system_config.lng
@@ -29,6 +29,8 @@ $wb['admin_mail_txt'] = 'Administrators e-mail';
 $wb['monitor_key_txt'] = 'Monitor keyword';
 $wb['admin_name_txt'] = 'Administrators name';
 $wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
 $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
 $wb['smtp_host_txt'] = 'SMTP host';
 $wb['smtp_port_txt'] = 'SMTP port';
diff --git a/interface/web/admin/lib/lang/nl_system_config.lng b/interface/web/admin/lib/lang/nl_system_config.lng
index 44a58b7646..f4b778d337 100644
--- a/interface/web/admin/lib/lang/nl_system_config.lng
+++ b/interface/web/admin/lib/lang/nl_system_config.lng
@@ -32,6 +32,8 @@ $wb['admin_mail_txt'] = 'Administrators e-mail';
 $wb['monitor_key_txt'] = 'Monitor keyword';
 $wb['admin_name_txt'] = 'Administrators name';
 $wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
 $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
 $wb['smtp_host_txt'] = 'SMTP host';
 $wb['smtp_port_txt'] = 'SMTP port';
diff --git a/interface/web/admin/lib/lang/pl_system_config.lng b/interface/web/admin/lib/lang/pl_system_config.lng
index a809251ec1..95bf2f6ffc 100644
--- a/interface/web/admin/lib/lang/pl_system_config.lng
+++ b/interface/web/admin/lib/lang/pl_system_config.lng
@@ -37,6 +37,8 @@ $wb['vhost_subdomains_note_txt'] = 'Nie możesz wyłączyć tego tak długo jak
 $wb['vhost_aliasdomains_txt'] = 'Twórz aliasdomeny jako strony web';
 $wb['vhost_aliasdomains_note_txt'] = 'Nie możesz wyłączyć tego tak długo jak istnieją w systemie vhosty aliasdomen.';
 $wb['maintenance_mode_txt'] = 'Tryb serwisowy';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
 $wb['smtp_enabled_txt'] = 'Używaj SMTP do wysyłania powiadomień systemowych';
 $wb['smtp_host_txt'] = 'Host SMTP';
 $wb['smtp_port_txt'] = 'Port SMTP';
diff --git a/interface/web/admin/lib/lang/pt_system_config.lng b/interface/web/admin/lib/lang/pt_system_config.lng
index 6fc26344c0..faaebeca2a 100644
--- a/interface/web/admin/lib/lang/pt_system_config.lng
+++ b/interface/web/admin/lib/lang/pt_system_config.lng
@@ -29,6 +29,8 @@ $wb['admin_mail_txt'] = 'Administrators e-mail';
 $wb['monitor_key_txt'] = 'Monitor keyword';
 $wb['admin_name_txt'] = 'Administrators name';
 $wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
 $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
 $wb['smtp_host_txt'] = 'SMTP host';
 $wb['smtp_port_txt'] = 'SMTP port';
diff --git a/interface/web/admin/lib/lang/ro_system_config.lng b/interface/web/admin/lib/lang/ro_system_config.lng
index 2a39a454e8..e6ed186de7 100644
--- a/interface/web/admin/lib/lang/ro_system_config.lng
+++ b/interface/web/admin/lib/lang/ro_system_config.lng
@@ -29,6 +29,8 @@ $wb['admin_mail_txt'] = 'Administrators e-mail';
 $wb['monitor_key_txt'] = 'Monitor keyword';
 $wb['admin_name_txt'] = 'Administrators name';
 $wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
 $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
 $wb['smtp_host_txt'] = 'SMTP host';
 $wb['smtp_port_txt'] = 'SMTP port';
diff --git a/interface/web/admin/lib/lang/ru_system_config.lng b/interface/web/admin/lib/lang/ru_system_config.lng
index baed497b0e..792628d492 100644
--- a/interface/web/admin/lib/lang/ru_system_config.lng
+++ b/interface/web/admin/lib/lang/ru_system_config.lng
@@ -29,6 +29,8 @@ $wb['mailmailinglist_url_txt'] = 'URL почтовой рассылки';
 $wb['admin_mail_txt'] = 'E-mail администратора';
 $wb['admin_name_txt'] = 'Имя администратора';
 $wb['maintenance_mode_txt'] = 'Режим технического бслуживания';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
 $wb['smtp_enabled_txt'] = 'Использовать SMTP для отправки системных сообщений';
 $wb['smtp_host_txt'] = 'Хост SMTP';
 $wb['smtp_port_txt'] = 'Порт SMTP';
diff --git a/interface/web/admin/lib/lang/se_system_config.lng b/interface/web/admin/lib/lang/se_system_config.lng
index 74ae16734f..8f6c9a63f0 100644
--- a/interface/web/admin/lib/lang/se_system_config.lng
+++ b/interface/web/admin/lib/lang/se_system_config.lng
@@ -29,6 +29,8 @@ $wb['admin_mail_txt'] = 'Administratörens epostadress';
 $wb['monitor_key_txt'] = 'Bevakning nyckelord';
 $wb['admin_name_txt'] = 'Administratörens namn';
 $wb['maintenance_mode_txt'] = 'Underhållsläge';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
 $wb['smtp_enabled_txt'] = 'Använd SMTP för att skicka systemmail';
 $wb['smtp_host_txt'] = 'SMTP-värd';
 $wb['smtp_port_txt'] = 'SMTP-port';
diff --git a/interface/web/admin/lib/lang/sk_system_config.lng b/interface/web/admin/lib/lang/sk_system_config.lng
index 90418e87d5..2ea9666db5 100644
--- a/interface/web/admin/lib/lang/sk_system_config.lng
+++ b/interface/web/admin/lib/lang/sk_system_config.lng
@@ -29,6 +29,8 @@ $wb['admin_mail_txt'] = 'Administrators e-mail';
 $wb['monitor_key_txt'] = 'Monitor keyword';
 $wb['admin_name_txt'] = 'Administrators name';
 $wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
 $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
 $wb['smtp_host_txt'] = 'SMTP host';
 $wb['smtp_port_txt'] = 'SMTP port';
diff --git a/interface/web/admin/lib/lang/tr_system_config.lng b/interface/web/admin/lib/lang/tr_system_config.lng
index 3ef8e26875..0ccf846c1c 100644
--- a/interface/web/admin/lib/lang/tr_system_config.lng
+++ b/interface/web/admin/lib/lang/tr_system_config.lng
@@ -40,6 +40,8 @@ $wb['admin_mail_txt'] = 'Yönetici E-posta Adresi';
 $wb['monitor_key_txt'] = 'Ä°zlenecek Kelime';
 $wb['admin_name_txt'] = 'Yönetici Adı';
 $wb['maintenance_mode_txt'] = 'Bakım Kipi';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
 $wb['smtp_enabled_txt'] = 'Sistem e-postaları SMTP ile gönderilsin';
 $wb['smtp_host_txt'] = 'SMTP Sunucusu';
 $wb['smtp_port_txt'] = 'SMTP Kapısı';
diff --git a/interface/web/admin/templates/system_config_misc_edit.htm b/interface/web/admin/templates/system_config_misc_edit.htm
index 45bdfcd275..00debd66dc 100644
--- a/interface/web/admin/templates/system_config_misc_edit.htm
+++ b/interface/web/admin/templates/system_config_misc_edit.htm
@@ -113,6 +113,12 @@
                     {tmpl_var name='maintenance_mode'}
                 </div>
             </div>
+            <div class="form-group">
+                <label class="col-sm-3 control-label">{tmpl_var name='maintenance_mode_exclude_ips_txt'}</label>
+                <div class="col-sm-9">
+                    <input type="text" name="maintenance_mode_exclude_ips" id="maintenance_mode_exclude_ips" value="{tmpl_var name='maintenance_mode_exclude_ips'}" class="form-control" />
+                </div>
+            </div>
 			
 			<tmpl_if name="msg">
                 <div id="OKMsg"><p><tmpl_var name="msg"></p></div>
diff --git a/interface/web/login/index.php b/interface/web/login/index.php
index 47030e438d..b5d5abc27b 100644
--- a/interface/web/login/index.php
+++ b/interface/web/login/index.php
@@ -48,9 +48,8 @@ $app->load_language_file('web/login/lib/lang/'.$conf["language"].'.lng');
 // Maintenance mode
 $maintenance_mode = false;
 $maintenance_mode_error = '';
-$app->uses('ini_parser,getconf');
 $server_config_array = $app->getconf->get_global_config('misc');
-if($server_config_array['maintenance_mode'] == 'y'){
+if($app->is_under_maintenance()) {
 	$maintenance_mode = true;
 	$maintenance_mode_error = $app->lng('error_maintenance_mode');
 }
@@ -208,7 +207,7 @@ if(count($_POST) > 0) {
 			if($user) {
 				if($user['active'] == 1) {
 					// Maintenance mode - allow logins only when maintenance mode is off or if the user is admin
-					if(!$maintenance_mode || $user['typ'] == 'admin'){
+					if(!$app->is_under_maintenance() || $user['typ'] == 'admin'){
 						
 						// User login right, so attempts can be deleted
 						$sql = "DELETE FROM `attempts_login` WHERE `ip`=?";
-- 
GitLab


From 5f969095a6e47b63f26a24de18878d65b7783a01 Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Mon, 30 Mar 2020 13:12:03 +0200
Subject: [PATCH 168/242] - manually ported merge request !963

---
 .../plugins-available/apache2_plugin.inc.php  | 103 ++++++++++--------
 server/plugins-available/nginx_plugin.inc.php |  95 ++++++++--------
 2 files changed, 108 insertions(+), 90 deletions(-)

diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php
index a40e902e2d..06b2afce9a 100644
--- a/server/plugins-available/apache2_plugin.inc.php
+++ b/server/plugins-available/apache2_plugin.inc.php
@@ -73,7 +73,7 @@ class apache2_plugin {
 		$app->plugins->registerEvent('server_ip_insert', $this->plugin_name, 'server_ip');
 		$app->plugins->registerEvent('server_ip_update', $this->plugin_name, 'server_ip');
 		$app->plugins->registerEvent('server_ip_delete', $this->plugin_name, 'server_ip');
-		
+
 		$app->plugins->registerEvent('server_insert', $this->plugin_name, 'server_ip');
 		$app->plugins->registerEvent('server_update', $this->plugin_name, 'server_ip');
 
@@ -97,14 +97,14 @@ class apache2_plugin {
 
 	private function get_master_php_ini_content($web_data) {
 		global $app, $conf;
-		
+
 		$app->uses('getconf');
 		$web_config = $app->getconf->get_server_config($conf['server_id'], 'web');
 		$fastcgi_config = $app->getconf->get_server_config($conf['server_id'], 'fastcgi');
-		
+
 		$php_ini_content = '';
 		$master_php_ini_path = '';
-		
+
 		if($web_data['php'] == 'mod') {
 			$master_php_ini_path = $web_config['php_ini_path_apache'];
 		} else {
@@ -135,7 +135,7 @@ class apache2_plugin {
 				}
 			}
 		}
-		
+
 		// Resolve inconsistant path settings
 		if($master_php_ini_path != '' && is_dir($master_php_ini_path) && is_file($master_php_ini_path.'/php.ini')) {
 			$master_php_ini_path .= '/php.ini';
@@ -145,7 +145,7 @@ class apache2_plugin {
 		if($master_php_ini_path != '' && substr($master_php_ini_path, -7) == 'php.ini' && is_file($master_php_ini_path)) {
 			$php_ini_content .= $app->system->file_get_contents($master_php_ini_path)."\n";
 		}
-		
+
 		return $php_ini_content;
 	}
 
@@ -200,11 +200,11 @@ class apache2_plugin {
 				$custom_php_ini_dir .= '_' . $web_folder;
 			}
 			if(!is_dir($web_config['website_basedir'].'/conf')) $app->system->mkdir($web_config['website_basedir'].'/conf');
-			
+
 			if(!is_dir($custom_php_ini_dir)) $app->system->mkdir($custom_php_ini_dir);
-			
+
 			$php_ini_content = $this->get_master_php_ini_content($web_data);
-			
+
 			if(intval($web_data['directive_snippets_id']) > 0){
 				$snippet = $app->db->queryOneRecord("SELECT * FROM directive_snippets WHERE directive_snippets_id = ? AND type = 'apache' AND active = 'y' AND customer_viewable = 'y'", intval($web_data['directive_snippets_id']));
 				if(isset($snippet['required_php_snippets']) && trim($snippet['required_php_snippets']) != ''){
@@ -223,7 +223,7 @@ class apache2_plugin {
 					}
 				}
 			}
-		
+
 			$php_ini_content .= str_replace("\r", '', trim($web_data['custom_php_ini']));
 			$app->system->file_put_contents($custom_php_ini_dir.'/php.ini', $php_ini_content);
 			$app->log('Info: rewrote custom php.ini for web ' . $web_data['domain_id'] . ' (' . $web_data['domain'] . ').', LOGLEVEL_DEBUG);
@@ -329,8 +329,16 @@ class apache2_plugin {
         [ req_attributes ]
         ";//challengePassword              = A challenge password";
 
+			$ext_cnf = "
+        subjectAltName         = @alt_names
+
+        [alt_names]
+        DNS.1                  = .$domain";
+
 			$ssl_cnf_file = $ssl_dir.'/openssl.conf';
 			$app->system->file_put_contents($ssl_cnf_file, $ssl_cnf);
+			$ssl_ext_file = $ssl_dir.'/v3.ext';
+			$app->system->file_put_contents($ssl_ext_file, $ext_cnf);
 
 			$rand_file = $rand_file;
 			$key_file2 = $key_file2;
@@ -356,10 +364,10 @@ class apache2_plugin {
 
 				if(file_exists($web_config['CA_path'].'/openssl.cnf'))
 				{
-					$app->system->exec_safe("openssl ca -batch -out ? -config ? -passin pass:? -in ?", $openssl_cmd_crt_file, $web_config['CA_path']."/openssl.cnf", $web_config['CA_pass'], $openssl_cmd_csr_file);
+					$app->system->exec_safe("openssl ca -batch -out ? -config ? -passin pass:? -in ? -extfile ?", $openssl_cmd_crt_file, $web_config['CA_path']."/openssl.cnf", $web_config['CA_pass'], $openssl_cmd_csr_file, $ssl_ext_file);
 					$app->log("Creating CA-signed SSL Cert for: $domain", LOGLEVEL_DEBUG);
 					if(filesize($crt_file) == 0 || !file_exists($crt_file)) {
-						$app->log("CA-Certificate signing failed.  openssl ca -out $openssl_cmd_crt_file -config " . $web_config['CA_path'] . "/openssl.cnf -passin pass:" . $web_config['CA_pass'] . " -in $openssl_cmd_csr_file", LOGLEVEL_ERROR);
+						$app->log("CA-Certificate signing failed.  openssl ca -out $openssl_cmd_crt_file -config " . $web_config['CA_path'] . "/openssl.cnf -passin pass:" . $web_config['CA_pass'] . " -in $openssl_cmd_csr_file -extfile $ssl_ext_file", LOGLEVEL_ERROR);
 					}
 				};
 				if (@filesize($crt_file)==0 || !file_exists($crt_file)){
@@ -373,6 +381,7 @@ class apache2_plugin {
 			$app->system->chmod($key_file, 0400);
 			@$app->system->unlink($config_file);
 			@$app->system->unlink($rand_file);
+			@$app->system->unlink($ssl_ext_file);
 			$ssl_request = $app->system->file_get_contents($csr_file);
 			$ssl_cert = $app->system->file_get_contents($crt_file);
 			$ssl_key = $app->system->file_get_contents($key_file);
@@ -383,15 +392,15 @@ class apache2_plugin {
 			$app->dbmaster->query("UPDATE web_domain SET ssl_request = ?, ssl_cert = ?, ssl_key = ? WHERE domain = ?", $ssl_request, $ssl_cert, $ssl_key, $data['new']['domain']);
 			$app->dbmaster->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ?", $data['new']['domain']);
 		}
-		
+
 		//* Check that the SSL key is not password protected
 		if($data["new"]["ssl_action"] == 'save') {
 			if(stristr($data["new"]["ssl_key"],'Proc-Type: 4,ENCRYPTED')) {
 				$data["new"]["ssl_action"] = '';
-			
+
 				$app->log('SSL Certificate not saved. The SSL key is encrypted.', LOGLEVEL_WARN);
 				$app->dbmaster->datalogError('SSL Certificate not saved. The SSL key is encrypted.');
-			
+
 				/* Update the DB of the (local) Server */
 				$app->db->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ?", $data['new']['domain']);
 
@@ -399,7 +408,7 @@ class apache2_plugin {
 				$app->dbmaster->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ?", $data['new']['domain']);
 			}
 		}
-		
+
 		//* and check that SSL cert does not contain subdomain of domain acme.invalid
 		if($data["new"]["ssl_action"] == 'save') {
 			$tmp = array();
@@ -409,10 +418,10 @@ class apache2_plugin {
 			$crt_data = implode("\n",$tmp);
 			if(stristr($crt_data,'.acme.invalid')) {
 				$data["new"]["ssl_action"] = '';
-			
+
 				$app->log('SSL Certificate not saved. The SSL cert contains domain acme.invalid.', LOGLEVEL_WARN);
 				$app->dbmaster->datalogError('SSL Certificate not saved. The SSL cert contains domain acme.invalid.');
-			
+
 				/* Update the DB of the (local) Server */
 				$app->db->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ?", $data['new']['domain']);
 
@@ -570,7 +579,7 @@ class apache2_plugin {
 			$web_folder = $data['new']['web_folder'];
 			$log_folder .= '/' . $subdomain_host;
 			unset($tmp);
-			
+
 			if(isset($data['old']['parent_domain_id'])) {
 				// old one
 				$tmp = $app->db->queryOneRecord('SELECT `domain` FROM web_domain WHERE domain_id = ?', $data['old']['parent_domain_id']);
@@ -666,7 +675,7 @@ class apache2_plugin {
 					$app->system->rename($data['new']['document_root'], $data['new']['document_root'].'_bak_'.date('Y_m_d_H_i_s'));
 					$app->log('Renaming existing directory in new docroot location. mv '.$data['new']['document_root'].' '.$data['new']['document_root'].'_bak_'.date('Y_m_d_H_i_s'), LOGLEVEL_DEBUG);
 				}
-				
+
 				//* Unmount the old log directory bfore we move the log dir
 				$app->system->exec_safe('umount ?', $data['old']['document_root'].'/log');
 
@@ -702,9 +711,9 @@ class apache2_plugin {
 			$fstab_line = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$old_log_folder.'    none    bind,nobootwait';
 			$app->system->removeLine('/etc/fstab', $fstab_line);
 			*/
-			
+
 			$fstab_line_old = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$old_log_folder.'    none    bind';
-			
+
 			if($web_config['network_filesystem'] == 'y') {
 				$fstab_line = '/var/log/ispconfig/httpd/'.$data['new']['domain'].' '.$data['new']['document_root'].'/'.$log_folder.'    none    bind,nofail,_netdev    0 0';
 				$app->system->replaceLine('/etc/fstab', $fstab_line_old, $fstab_line, 0, 1);
@@ -712,9 +721,9 @@ class apache2_plugin {
 				$fstab_line = '/var/log/ispconfig/httpd/'.$data['new']['domain'].' '.$data['new']['document_root'].'/'.$log_folder.'    none    bind,nofail    0 0';
 				$app->system->replaceLine('/etc/fstab', $fstab_line_old, $fstab_line, 0, 1);
 			}
-			
+
 			$app->system->exec_safe('mount --bind ? ?', '/var/log/ispconfig/httpd/'.$data['new']['domain'], $data['new']['document_root'].'/'.$log_folder);
-			
+
 		}
 
 		//print_r($data);
@@ -729,7 +738,7 @@ class apache2_plugin {
 		if(!is_dir($data['new']['document_root'].'/cgi-bin')) $app->system->mkdirpath($data['new']['document_root'].'/cgi-bin');
 		if(!is_dir($data['new']['document_root'].'/tmp')) $app->system->mkdirpath($data['new']['document_root'].'/tmp');
 		if(!is_dir($data['new']['document_root'].'/webdav')) $app->system->mkdirpath($data['new']['document_root'].'/webdav');
-		
+
 		if(!is_dir($data['new']['document_root'].'/.ssh')) {
 			$app->system->mkdirpath($data['new']['document_root'].'/.ssh');
 			$app->system->chmod($data['new']['document_root'].'/.ssh', 0700);
@@ -1115,10 +1124,10 @@ class apache2_plugin {
 		if(trim($data['new']['custom_php_ini']) != '') {
 			$has_custom_php_ini = true;
 			if(!is_dir($custom_php_ini_dir)) $app->system->mkdirpath($custom_php_ini_dir);
-			
+
 			$php_ini_content = $this->get_master_php_ini_content($data['new']);
 			$php_ini_content .= str_replace("\r", '', trim($data['new']['custom_php_ini']));
-			
+
 			if(intval($data['new']['directive_snippets_id']) > 0){
 				$snippet = $app->db->queryOneRecord("SELECT * FROM directive_snippets WHERE directive_snippets_id = ? AND type = 'apache' AND active = 'y' AND customer_viewable = 'y'", intval($data['new']['directive_snippets_id']));
 				if(isset($snippet['required_php_snippets']) && trim($snippet['required_php_snippets']) != ''){
@@ -1137,7 +1146,7 @@ class apache2_plugin {
 					}
 				}
 			}
-		
+
 			$app->system->file_put_contents($custom_php_ini_dir.'/php.ini', $php_ini_content);
 		} else {
 			$has_custom_php_ini = false;
@@ -1179,7 +1188,7 @@ class apache2_plugin {
 			'{DOCROOT_CLIENT}' => $vhost_data['web_document_root']
 		);
 		$vhost_data['apache_directives'] = strtr($vhost_data['apache_directives'], $trans);
-		
+
 		$app->uses('letsencrypt');
 		// Check if a SSL cert exists
 		$tmp = $app->letsencrypt->get_website_certificate_paths($data);
@@ -1190,7 +1199,7 @@ class apache2_plugin {
 		$crt_file = $tmp['crt'];
 		$bundle_file = $tmp['bundle'];
 		unset($tmp);
-		
+
 		$data['new']['ssl_domain'] = $domain;
 		$vhost_data['ssl_domain'] = $domain;
 		$vhost_data['ssl_crt_file'] = $crt_file;
@@ -1222,7 +1231,7 @@ class apache2_plugin {
 				$app->dbmaster->query("UPDATE web_domain SET `ssl` = ?, `ssl_letsencrypt` = ? WHERE `domain` = ? AND `server_id` = ?", $data['new']['ssl'], 'n', $data['new']['domain'], $conf['server_id']);
  			}
 		}
-		
+
 		// Use separate bundle file only for apache versions < 2.4.8
 		if(@is_file($bundle_file) && version_compare($app->system->getapacheversion(true), '2.4.8', '<')) $vhost_data['has_bundle_cert'] = 1;
 
@@ -1425,7 +1434,7 @@ class apache2_plugin {
 		} else {
 			$tpl->setVar('alias', '');
 		}
-		
+
 		if (count($rewrite_wildcard_rules) > 0) $rewrite_rules = array_merge($rewrite_rules, $rewrite_wildcard_rules); // Append wildcard rules to the end of rules
 
 		if(count($rewrite_rules) > 0 || $vhost_data['seo_redirect_enabled'] > 0 || count($alias_seo_redirects) > 0 || $data['new']['rewrite_to_https'] == 'y') {
@@ -1568,7 +1577,7 @@ class apache2_plugin {
 		$pool_name = 'web'.$data['new']['domain_id'];
 		$socket_dir = $web_config['php_fpm_socket_dir'];
 		if(substr($socket_dir, -1) != '/') $socket_dir .= '/';
-		
+
 		if($data['new']['php_fpm_use_socket'] == 'y'){
 			$use_tcp = 0;
 			$use_socket = 1;
@@ -2051,9 +2060,9 @@ class apache2_plugin {
 			} else {
 				$app->system->exec_safe('umount ? 2>/dev/null', $data['old']['document_root'].'/'.$log_folder);
 			}
-			
+
 			// remove letsencrypt if it exists (renew will always fail otherwise)
-			
+
 			$old_domain = $data['old']['domain'];
 			if(substr($old_domain, 0, 2) === '*.') {
 				// wildcard domain not yet supported by letsencrypt!
@@ -2588,7 +2597,7 @@ class apache2_plugin {
 			$app->system->chown($new_folder_path.'.htaccess', $website['system_user']);
 			$app->system->chgrp($new_folder_path.'.htaccess', $website['system_group']);
 			$app->log('Created/modified file '.$new_folder_path.'.htaccess', LOGLEVEL_DEBUG);
-			
+
 			//* Create empty .htpasswd file, if it does not exist
 			if(!is_file($folder_path.'.htpasswd')) {
 				$app->system->touch($new_folder_path.'.htpasswd');
@@ -2964,7 +2973,7 @@ class apache2_plugin {
 
 	private function hhvm_update($data, $web_config) {
 		global $app, $conf;
-		
+
 		if(file_exists($conf['rootpath'] . '/conf-custom/hhvm_starter.master')) {
 			$content = file_get_contents($conf['rootpath'] . '/conf-custom/hhvm_starter.master');
 		} else {
@@ -2975,7 +2984,7 @@ class apache2_plugin {
 		} else {
 			$monit_content = file_get_contents($conf['rootpath'] . '/conf/hhvm_monit.master');
 		}
-		
+
 		if($data['new']['php'] == 'hhvm' && $data['old']['php'] != 'hhvm' || ($data['new']['php'] == 'hhvm' && isset($data['old']['custom_php_ini']) && $data['new']['custom_php_ini'] != $data['old']['custom_php_ini'])) {
 
 			// Custom php.ini settings
@@ -3012,14 +3021,14 @@ class apache2_plugin {
 			$app->system->exec_safe('chmod +x ? >/dev/null 2>&1', '/etc/init.d/hhvm_' . $data['new']['system_user']);
 			$app->system->exec_safe('/usr/sbin/update-rc.d ? defaults >/dev/null 2>&1', 'hhvm_' . $data['new']['system_user']);
 			$app->system->exec_safe('? restart >/dev/null 2>&1', '/etc/init.d/hhvm_' . $data['new']['system_user']);
-			
+
 			if(is_dir('/etc/monit/conf.d')){
 				$monit_content = str_replace('{SYSTEM_USER}', $data['new']['system_user'], $monit_content);
 				file_put_contents('/etc/monit/conf.d/00-hhvm_' . $data['new']['system_user'], $monit_content);
 				if(is_file('/etc/monit/conf.d/hhvm_' . $data['new']['system_user'])) unlink('/etc/monit/conf.d/hhvm_' . $data['new']['system_user']);
 				exec('/etc/init.d/monit restart >/dev/null 2>&1');
 			}
-			
+
  		} elseif($data['new']['php'] != 'hhvm' && $data['old']['php'] == 'hhvm') {
 			if($data['old']['system_user'] != ''){
 				$app->system->exec_safe('? stop >/dev/null 2>&1', '/etc/init.d/hhvm_' . $data['old']['system_user']);
@@ -3027,7 +3036,7 @@ class apache2_plugin {
 				unlink('/etc/init.d/hhvm_' . $data['old']['system_user']);
 				if(is_file('/etc/hhvm/'.$data['old']['system_user'].'.ini')) unlink('/etc/hhvm/'.$data['old']['system_user'].'.ini');
 			}
-			
+
 			if(is_file('/etc/monit/conf.d/hhvm_' . $data['old']['system_user']) || is_file('/etc/monit/conf.d/00-hhvm_' . $data['old']['system_user'])){
 				if(is_file('/etc/monit/conf.d/hhvm_' . $data['old']['system_user'])){
 					unlink('/etc/monit/conf.d/hhvm_' . $data['old']['system_user']);
@@ -3066,7 +3075,7 @@ class apache2_plugin {
 
 		$app->uses("getconf");
 		$web_config = $app->getconf->get_server_config($conf["server_id"], 'web');
-		
+
 		$php_fpm_reload_mode = ($web_config['php_fpm_reload_mode'] == 'reload')?'reload':'restart';
 
 		if($data['new']['php'] != 'php-fpm'){
@@ -3089,7 +3098,7 @@ class apache2_plugin {
 		$tpl = new tpl();
 		$tpl->newTemplate('php_fpm_pool.conf.master');
 		$tpl->setVar('apache_version', $app->system->getapacheversion());
-		
+
 		if($data['new']['php_fpm_use_socket'] == 'y'){
 			$use_tcp = 0;
 			$use_socket = 1;
@@ -3142,7 +3151,7 @@ class apache2_plugin {
 		// Custom php.ini settings
 		$final_php_ini_settings = array();
 		$custom_php_ini_settings = trim($data['new']['custom_php_ini']);
-		
+
 		if(intval($data['new']['directive_snippets_id']) > 0){
 			$snippet = $app->db->queryOneRecord("SELECT * FROM directive_snippets WHERE directive_snippets_id = ? AND type = 'apache' AND active = 'y' AND customer_viewable = 'y'", intval($data['new']['directive_snippets_id']));
 			if(isset($snippet['required_php_snippets']) && trim($snippet['required_php_snippets']) != ''){
@@ -3161,7 +3170,7 @@ class apache2_plugin {
 				}
 			}
 		}
-		
+
 		$custom_session_save_path = false;
 		if($custom_php_ini_settings != ''){
 			// Make sure we only have Unix linebreaks
@@ -3249,10 +3258,10 @@ class apache2_plugin {
 	//* Delete the PHP-FPM pool configuration file
 	private function php_fpm_pool_delete ($data, $web_config) {
 		global $app, $conf;
-		
+
 		$app->uses("getconf");
 		$web_config = $app->getconf->get_server_config($conf["server_id"], 'web');
-		
+
 		$php_fpm_reload_mode = ($web_config['php_fpm_reload_mode'] == 'reload')?'reload':'restart';
 
 		if(trim($data['old']['fastcgi_php_version']) != '' && $data['old']['php'] == 'php-fpm'){
diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php
index cd4b736fa4..c1262f69eb 100644
--- a/server/plugins-available/nginx_plugin.inc.php
+++ b/server/plugins-available/nginx_plugin.inc.php
@@ -166,8 +166,16 @@ class nginx_plugin {
         [ req_attributes ]
         ";//challengePassword              = A challenge password";
 
+			$ext_cnf = "
+        subjectAltName         = @alt_names
+
+        [alt_names]
+        DNS.1                  = .$domain";
+
 			$ssl_cnf_file = $ssl_dir.'/openssl.conf';
 			$app->system->file_put_contents($ssl_cnf_file, $ssl_cnf);
+			$ssl_ext_file = $ssl_dir.'/v3.ext';
+			$app->system->file_put_contents($ssl_ext_file, $ext_cnf);
 
 			$rand_file = $rand_file;
 			$key_file2 = $key_file2;
@@ -193,9 +201,9 @@ class nginx_plugin {
 
 				if(file_exists($web_config['CA_path'].'/openssl.cnf'))
 				{
-					$app->system->exec_safe("openssl ca -batch -out ? -config ? -passin pass:? -in ?", $openssl_cmd_crt_file, $web_config['CA_path']."/openssl.cnf", $web_config['CA_pass'], $openssl_cmd_csr_file);
+					$app->system->exec_safe("openssl ca -batch -out ? -config ? -passin pass:? -in ? -extfile ?", $openssl_cmd_crt_file, $web_config['CA_path']."/openssl.cnf", $web_config['CA_pass'], $openssl_cmd_csr_file, $ssl_ext_file);
 					$app->log("Creating CA-signed SSL Cert for: $domain", LOGLEVEL_DEBUG);
-					if (filesize($crt_file)==0 || !file_exists($crt_file)) $app->log("CA-Certificate signing failed.  openssl ca -out $openssl_cmd_crt_file -config ".$web_config['CA_path']."/openssl.cnf -passin pass:".$web_config['CA_pass']." -in $openssl_cmd_csr_file", LOGLEVEL_ERROR);
+					if (filesize($crt_file)==0 || !file_exists($crt_file)) $app->log("CA-Certificate signing failed.  openssl ca -out $openssl_cmd_crt_file -config ".$web_config['CA_path']."/openssl.cnf -passin pass:".$web_config['CA_pass']." -in $openssl_cmd_csr_file -extfile $ssl_ext_file", LOGLEVEL_ERROR);
 				};
 				if (@filesize($crt_file)==0 || !file_exists($crt_file)){
 					$app->system->exec_safe("openssl req -x509 -passin pass:? -passout pass:? -key ? -in ? -out ? -days ? -config ?", $ssl_password, $ssl_password, $openssl_cmd_key_file2, $openssl_cmd_csr_file, $openssl_cmd_crt_file, $ssl_days, $config_file);
@@ -208,6 +216,7 @@ class nginx_plugin {
 			$app->system->chmod($key_file, 0400);
 			@$app->system->unlink($config_file);
 			@$app->system->unlink($rand_file);
+			@$app->system->unlink($ssl_ext_file);
 			$ssl_request = $app->system->file_get_contents($csr_file);
 			$ssl_cert = $app->system->file_get_contents($crt_file);
 			$ssl_key = $app->system->file_get_contents($key_file);
@@ -218,15 +227,15 @@ class nginx_plugin {
 			$app->dbmaster->query("UPDATE web_domain SET ssl_request = ?, ssl_cert = ?, ssl_key = ? WHERE domain = ?", $ssl_request, $ssl_cert, $ssl_key, $data['new']['domain']);
 			$app->dbmaster->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ?", $data['new']['domain']);
 		}
-		
+
 		//* Check that the SSL key is not password protected
 		if($data["new"]["ssl_action"] == 'save') {
 			if(stristr($data["new"]["ssl_key"],'Proc-Type: 4,ENCRYPTED')) {
 				$data["new"]["ssl_action"] = '';
-			
+
 				$app->log('SSL Certificate not saved. The SSL key is encrypted.', LOGLEVEL_WARN);
 				$app->dbmaster->datalogError('SSL Certificate not saved. The SSL key is encrypted.');
-			
+
 				/* Update the DB of the (local) Server */
 				$app->db->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ?", $data['new']['domain']);
 
@@ -234,7 +243,7 @@ class nginx_plugin {
 				$app->dbmaster->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ?", $data['new']['domain']);
 			}
 		}
-		
+
 		//* and check that SSL cert does not contain subdomain of domain acme.invalid
 		if($data["new"]["ssl_action"] == 'save') {
 			$tmp = array();
@@ -244,10 +253,10 @@ class nginx_plugin {
 			$crt_data = implode("\n",$tmp);
 			if(stristr($crt_data,'.acme.invalid')) {
 				$data["new"]["ssl_action"] = '';
-			
+
 				$app->log('SSL Certificate not saved. The SSL cert contains domain acme.invalid.', LOGLEVEL_WARN);
 				$app->dbmaster->datalogError('SSL Certificate not saved. The SSL cert contains domain acme.invalid.');
-			
+
 				/* Update the DB of the (local) Server */
 				$app->db->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ?", $data['new']['domain']);
 
@@ -400,7 +409,7 @@ class nginx_plugin {
 				if(substr($data['new']['web_folder'],-1) == '/') $data['new']['web_folder'] = substr($data['new']['web_folder'],0,-1);
 			}
 			$web_folder .= '/'.$data['new']['web_folder'];
-			
+
 			if($data['old']['web_folder'] != ''){
 				if(substr($data['old']['web_folder'],0,1) == '/') $data['old']['web_folder'] = substr($data['old']['web_folder'],1);
 				if(substr($data['old']['web_folder'],-1) == '/') $data['old']['web_folder'] = substr($data['old']['web_folder'],0,-1);
@@ -415,7 +424,7 @@ class nginx_plugin {
 			$web_folder = $data['new']['web_folder'];
 			$log_folder .= '/' . $subdomain_host;
 			unset($tmp);
-			
+
 			if(isset($data['old']['parent_domain_id'])) {
 				// old one
 				$tmp = $app->db->queryOneRecord('SELECT `domain` FROM web_domain WHERE domain_id = ?', $data['old']['parent_domain_id']);
@@ -508,7 +517,7 @@ class nginx_plugin {
 					$app->system->rename($data['new']['document_root'], $data['new']['document_root'].'_bak_'.date('Y_m_d_H_i_s'));
 					$app->log('Renaming existing directory in new docroot location. mv '.$data['new']['document_root'].' '.$data['new']['document_root'].'_bak_'.date('Y_m_d_H_i_s'), LOGLEVEL_DEBUG);
 				}
-				
+
 				//* Unmount the old log directory bfore we move the log dir
 				$app->system->exec_safe('umount ?', $old_dir.'/log');
 
@@ -544,9 +553,9 @@ class nginx_plugin {
 			$fstab_line = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$old_log_folder.'    none    bind,nobootwait';
 			$app->system->removeLine('/etc/fstab', $fstab_line);
 			*/
-			
+
 			$fstab_line_old = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$old_log_folder.'    none    bind';
-			
+
 			if($web_config['network_filesystem'] == 'y') {
 				$fstab_line = '/var/log/ispconfig/httpd/'.$data['new']['domain'].' '.$data['new']['document_root'].'/'.$log_folder.'    none    bind,nofail,_netdev    0 0';
 				$app->system->replaceLine('/etc/fstab', $fstab_line_old, $fstab_line, 0, 1);
@@ -554,7 +563,7 @@ class nginx_plugin {
 				$fstab_line = '/var/log/ispconfig/httpd/'.$data['new']['domain'].' '.$data['new']['document_root'].'/'.$log_folder.'    none    bind,nofail    0 0';
 				$app->system->replaceLine('/etc/fstab', $fstab_line_old, $fstab_line, 0, 1);
 			}
-			
+
 			$app->system->exec_safe('mount --bind ? ?', '/var/log/ispconfig/httpd/'.$data['new']['domain'], $data['new']['document_root'].'/'.$log_folder);
 
 		}
@@ -570,14 +579,14 @@ class nginx_plugin {
 		if(!is_dir($data['new']['document_root'].'/ssl')) $app->system->mkdirpath($data['new']['document_root'].'/ssl');
 		if(!is_dir($data['new']['document_root'].'/cgi-bin')) $app->system->mkdirpath($data['new']['document_root'].'/cgi-bin');
 		if(!is_dir($data['new']['document_root'].'/tmp')) $app->system->mkdirpath($data['new']['document_root'].'/tmp');
-		
+
 		if(!is_dir($data['new']['document_root'].'/.ssh')) {
 			$app->system->mkdirpath($data['new']['document_root'].'/.ssh');
 			$app->system->chmod($data['new']['document_root'].'/.ssh', 0700);
 			$app->system->chown($data['new']['document_root'].'/.ssh', $username);
 			$app->system->chgrp($data['new']['document_root'].'/.ssh', $groupname);
 		}
-		
+
 		//* Create the new private directory
 		if(!is_dir($data['new']['document_root'].'/private')) {
 			$app->system->mkdirpath($data['new']['document_root'].'/private');
@@ -691,7 +700,7 @@ class nginx_plugin {
 				}
 				$app->system->exec_safe('chmod -R a+r ?', $error_page_path);
 			}
-			
+
 			//* Copy the web skeleton files only when there is no index.ph or index.html file yet
 			if(!file_exists($data['new']['document_root'].'/'.$web_folder.'/index.html') && !file_exists($data['new']['document_root'].'/'.$web_folder.'/index.php')) {
 				if (file_exists($conf['rootpath'] . '/conf-custom/index/standard_index.html_'.substr($conf['language'], 0, 2))) {
@@ -853,7 +862,7 @@ class nginx_plugin {
 				//$app->system->chgrp($data['new']['document_root'].'/webdav',$groupname);
 				$app->system->chown($data['new']['document_root'].'/private', $username);
 				$app->system->chgrp($data['new']['document_root'].'/private', $groupname);
-				
+
 				if($web_folder != 'web'){
 					$app->system->chown($data['new']['document_root'].'/'.$web_folder, $username);
 					$app->system->chgrp($data['new']['document_root'].'/'.$web_folder, $groupname);
@@ -900,7 +909,7 @@ class nginx_plugin {
 				}
 				//$app->system->chown($data['new']['document_root'].'/webdav',$username);
 				//$app->system->chgrp($data['new']['document_root'].'/webdav',$groupname);
-				
+
 				if($web_folder != 'web'){
 					$app->system->chown($data['new']['document_root'].'/'.$web_folder, $username);
 					$app->system->chgrp($data['new']['document_root'].'/'.$web_folder, $groupname);
@@ -941,7 +950,7 @@ class nginx_plugin {
 			$app->system->chown('/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log', 'root');
 			$app->system->chgrp('/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log', 'root');
 		}
-		
+
 
 		//* Create the vhost config file
 		$app->load('tpl');
@@ -1185,31 +1194,31 @@ class nginx_plugin {
 			$nginx_directives = $data['new']['nginx_directives'];
 //			$vhost_data['enable_pagespeed'] = false;
 		}
-		
+
 		// folder_directive_snippets
 		if(trim($data['new']['folder_directive_snippets']) != ''){
 			$data['new']['folder_directive_snippets'] = trim($data['new']['folder_directive_snippets']);
 			$data['new']['folder_directive_snippets'] = str_replace("\r\n", "\n", $data['new']['folder_directive_snippets']);
 			$data['new']['folder_directive_snippets'] = str_replace("\r", "\n", $data['new']['folder_directive_snippets']);
 			$folder_directive_snippets_lines = explode("\n", $data['new']['folder_directive_snippets']);
-			
+
 			if(is_array($folder_directive_snippets_lines) && !empty($folder_directive_snippets_lines)){
 				foreach($folder_directive_snippets_lines as $folder_directive_snippets_line){
 					list($folder_directive_snippets_folder, $folder_directive_snippets_snippets_id) = explode(':', $folder_directive_snippets_line);
-					
+
 					$folder_directive_snippets_folder = trim($folder_directive_snippets_folder);
 					$folder_directive_snippets_snippets_id = trim($folder_directive_snippets_snippets_id);
-					
+
 					if($folder_directive_snippets_folder  != '' && intval($folder_directive_snippets_snippets_id) > 0 && preg_match('@^((?!(.*\.\.)|(.*\./)|(.*//))[^/][\w/_\.\-]{1,100})?$@', $folder_directive_snippets_folder)){
 						if(substr($folder_directive_snippets_folder, -1) != '/') $folder_directive_snippets_folder .= '/';
 						if(substr($folder_directive_snippets_folder, 0, 1) == '/') $folder_directive_snippets_folder = substr($folder_directive_snippets_folder, 1);
-						
+
 						$master_snippet = $app->db->queryOneRecord("SELECT * FROM directive_snippets WHERE directive_snippets_id = ? AND type = 'nginx' AND active = 'y' AND customer_viewable = 'y'", intval($folder_directive_snippets_snippets_id));
 						if(isset($master_snippet['snippet'])){
 							$folder_directive_snippets_trans = array('{FOLDER}' => $folder_directive_snippets_folder, '{FOLDERMD5}' => md5($folder_directive_snippets_folder));
 							$master_snippet['snippet'] = strtr($master_snippet['snippet'], $folder_directive_snippets_trans);
 							$nginx_directives .= "\n\n".$master_snippet['snippet'];
-							
+
 							// create folder it it does not exist
 							if(!is_dir($data['new']['document_root'].'/' . $web_folder.$folder_directive_snippets_folder)){
 								$app->system->mkdirpath($data['new']['document_root'].'/' . $web_folder.$folder_directive_snippets_folder);
@@ -1221,7 +1230,7 @@ class nginx_plugin {
 				}
 			}
 		}
-		
+
 		// use vLib for template logic
 		if(trim($nginx_directives) != '') {
 			$nginx_directives_new = '';
@@ -1238,7 +1247,7 @@ class nginx_plugin {
 			if($nginx_directives_new != '') $nginx_directives = $nginx_directives_new;
 			unset($nginx_directives_new);
 		}
-		
+
 		// Make sure we only have Unix linebreaks
 		$nginx_directives = str_replace("\r\n", "\n", $nginx_directives);
 		$nginx_directives = str_replace("\r", "\n", $nginx_directives);
@@ -1507,7 +1516,7 @@ class nginx_plugin {
 					'use_proxy' => ($data['new']['redirect_type'] == 'proxy' ? true:false));
 			}
 		}
-		
+
 		// http2 or spdy?
 		$vhost_data['enable_http2']  = 'n';
 		if($vhost_data['enable_spdy'] == 'y'){
@@ -1532,7 +1541,7 @@ class nginx_plugin {
 		}else{
 			$vhost_data['use_proxy_protocol'] = "n";
 		}
-		
+
 		// set logging variable
 		$vhost_data['logging'] = $web_config['logging'];
 
@@ -1811,7 +1820,7 @@ class nginx_plugin {
 		} elseif($data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias') {
 			$stats_web_folder = $data['new']['web_folder'];
 		}
-		
+
 		//* Create basic http auth for website statistics
 		$tpl->setVar('stats_auth_passwd_file', $data['new']['document_root']."/" . $stats_web_folder . "/stats/.htpasswd_stats");
 
@@ -2072,9 +2081,9 @@ class nginx_plugin {
 			} else {
 				$app->system->exec_safe('umount ? 2>/dev/null', $data['old']['document_root'].'/'.$log_folder);
 			}
-			
+
 			// remove letsencrypt if it exists (renew will always fail otherwise)
-			
+
 			$old_domain = $data['old']['domain'];
 			if(substr($old_domain, 0, 2) === '*.') {
 				// wildcard domain not yet supported by letsencrypt!
@@ -2572,7 +2581,7 @@ class nginx_plugin {
 
 	private function hhvm_update($data, $web_config) {
 		global $app, $conf;
-		
+
 		if(file_exists($conf['rootpath'] . '/conf-custom/hhvm_starter.master')) {
 			$content = file_get_contents($conf['rootpath'] . '/conf-custom/hhvm_starter.master');
 		} else {
@@ -2583,7 +2592,7 @@ class nginx_plugin {
 		} else {
 			$monit_content = file_get_contents($conf['rootpath'] . '/conf/hhvm_monit.master');
 		}
-		
+
 		if($data['new']['php'] == 'hhvm' && $data['old']['php'] != 'hhvm' || ($data['new']['php'] == 'hhvm' && isset($data['old']['custom_php_ini']) && isset($data['new']['custom_php_ini']) && $data['new']['custom_php_ini'] != $data['old']['custom_php_ini'])) {
 
 			// Custom php.ini settings
@@ -2620,14 +2629,14 @@ class nginx_plugin {
 			$app->system->exec_safe('chmod +x ? >/dev/null 2>&1', '/etc/init.d/hhvm_' . $data['new']['system_user']);
 			$app->system->exec_safe('/usr/sbin/update-rc.d ? defaults >/dev/null 2>&1', 'hhvm_' . $data['new']['system_user']);
 			$app->system->exec_safe('/etc/init.d/hhvm_' . $data['new']['system_user'] . ' restart >/dev/null 2>&1');
-			
+
 			if(is_dir('/etc/monit/conf.d')){
 				$monit_content = str_replace('{SYSTEM_USER}', $data['new']['system_user'], $monit_content);
 				file_put_contents('/etc/monit/conf.d/00-hhvm_' . $data['new']['system_user'], $monit_content);
 				if(is_file('/etc/monit/conf.d/hhvm_' . $data['new']['system_user'])) unlink('/etc/monit/conf.d/hhvm_' . $data['new']['system_user']);
 				exec('/etc/init.d/monit restart >/dev/null 2>&1');
 			}
-			
+
  		} elseif($data['new']['php'] != 'hhvm' && $data['old']['php'] == 'hhvm') {
 			if($data['old']['system_user'] != ''){
 				exec('/etc/init.d/hhvm_' . $data['old']['system_user'] . ' stop >/dev/null 2>&1');
@@ -2635,7 +2644,7 @@ class nginx_plugin {
 				unlink('/etc/init.d/hhvm_' . $data['old']['system_user']);
 				if(is_file('/etc/hhvm/'.$data['old']['system_user'].'.ini')) unlink('/etc/hhvm/'.$data['old']['system_user'].'.ini');
 			}
-			
+
 			if(is_file('/etc/monit/conf.d/hhvm_' . $data['old']['system_user']) || is_file('/etc/monit/conf.d/00-hhvm_' . $data['old']['system_user'])){
 				if(is_file('/etc/monit/conf.d/hhvm_' . $data['old']['system_user'])){
 					unlink('/etc/monit/conf.d/hhvm_' . $data['old']['system_user']);
@@ -2653,7 +2662,7 @@ class nginx_plugin {
 		global $app, $conf;
 		$pool_dir = trim($pool_dir);
 		$rh_releasefiles = array('/etc/centos-release', '/etc/redhat-release');
-		
+
 		// HHVM => PHP-FPM-Fallback
 		if($data['new']['php'] == 'php-fpm' || $data['new']['php'] == 'hhvm'){
 			if(trim($data['new']['fastcgi_php_version']) != ''){
@@ -2714,7 +2723,7 @@ class nginx_plugin {
 		$tpl->setVar('fpm_pool', $pool_name);
 		$tpl->setVar('fpm_port', $web_config['php_fpm_start_port'] + $data['new']['domain_id'] - 1);
 		$tpl->setVar('fpm_user', $data['new']['system_user']);
-		
+
 		//Red Hat workaround for group ownership of socket files
 		foreach($rh_releasefiles as $rh_file) {
 			if(file_exists($rh_file) && (filesize($rh_file) > 0)) {
@@ -2731,7 +2740,7 @@ class nginx_plugin {
 			}
 			break;
 		}
-		
+
 		$tpl->setVar('fpm_listen_user', $data['new']['system_user']);
 		$tpl->setVar('fpm_domain', $data['new']['domain']);
 		$tpl->setVar('pm', $data['new']['pm']);
@@ -2764,7 +2773,7 @@ class nginx_plugin {
 		// Custom php.ini settings
 		$final_php_ini_settings = array();
 		$custom_php_ini_settings = trim($data['new']['custom_php_ini']);
-		
+
 		if(intval($data['new']['directive_snippets_id']) > 0){
 			$snippet = $app->db->queryOneRecord("SELECT * FROM directive_snippets WHERE directive_snippets_id = ? AND type = 'nginx' AND active = 'y' AND customer_viewable = 'y'", intval($data['new']['directive_snippets_id']));
 			if(isset($snippet['required_php_snippets']) && trim($snippet['required_php_snippets']) != ''){
@@ -2783,7 +2792,7 @@ class nginx_plugin {
 				}
 			}
 		}
-		
+
 		$custom_session_save_path = false;
 		if($custom_php_ini_settings != ''){
 			// Make sure we only have Unix linebreaks
-- 
GitLab


From c7053681c50cbd636e26fe6d7148f0eeceffeca4 Mon Sep 17 00:00:00 2001
From: Brian <brano@mxhosting.eu>
Date: Thu, 2 Apr 2020 13:05:42 +0200
Subject: [PATCH 169/242] Update php_fpm_pool.conf.master - removed
 php_admin_value[cgi.fix_pathinfo] = 0 which cause in fpm chroot errors:
 Access to the script has been denied (see security.limit_extensions). This
 settings is obsolete for newer PHP version. More info:
 https://www.howtoforge.com/community/threads/php-fpm-chroot-with-cgi-fix_pathinfo-0-causes-access-to-the-script-has-been-denied.84071/

---
 server/conf/php_fpm_pool.conf.master | 1 -
 1 file changed, 1 deletion(-)

diff --git a/server/conf/php_fpm_pool.conf.master b/server/conf/php_fpm_pool.conf.master
index fb5c4b44d9..88b9e2b639 100644
--- a/server/conf/php_fpm_pool.conf.master
+++ b/server/conf/php_fpm_pool.conf.master
@@ -30,7 +30,6 @@ chdir = /
 <tmpl_if name='php_fpm_chroot'>
 chroot = <tmpl_var name='php_fpm_chroot_dir'>
 php_admin_value[doc_root] = <tmpl_var name='php_fpm_chroot_web_folder'>
-php_admin_value[cgi.fix_pathinfo] = 0
 </tmpl_if>
 
 env[HOSTNAME] = $HOSTNAME
-- 
GitLab


From d617e5cc75661c645a123b5415dbdc4ba1052874 Mon Sep 17 00:00:00 2001
From: Webslice <webslice@bixels.nl>
Date: Tue, 7 Apr 2020 07:29:17 +0200
Subject: [PATCH 170/242] Don't use short array syntax

---
 interface/web/dns/dns_spf_edit.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/interface/web/dns/dns_spf_edit.php b/interface/web/dns/dns_spf_edit.php
index 1c632d2d12..20626ba159 100644
--- a/interface/web/dns/dns_spf_edit.php
+++ b/interface/web/dns/dns_spf_edit.php
@@ -181,7 +181,7 @@ class page_action extends tform_actions {
 		}
 
 		// Create spf-record
-		$spf_record = [];
+		$spf_record = array();
 
 		if (!empty($this->dataRecord['spf_mx'])) {
 			$spf_record[] = 'mx';
-- 
GitLab


From c9145d36689d4d79203819835d8630bd89560c00 Mon Sep 17 00:00:00 2001
From: Webslice <webslice@bixels.nl>
Date: Tue, 7 Apr 2020 13:06:23 +0200
Subject: [PATCH 171/242] Reconfigure incron if the PHP version changes

---
 .../z_php_fpm_incron_reload_plugin.inc.php         | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/server/plugins-available/z_php_fpm_incron_reload_plugin.inc.php b/server/plugins-available/z_php_fpm_incron_reload_plugin.inc.php
index f88cbe9c0b..5a643a660a 100644
--- a/server/plugins-available/z_php_fpm_incron_reload_plugin.inc.php
+++ b/server/plugins-available/z_php_fpm_incron_reload_plugin.inc.php
@@ -45,8 +45,8 @@ class z_php_fpm_incron_reload_plugin {
 	function incronUpdate($eventName, $data) {
 		global $app;
 
-		if ($data['new']['document_root'] === $data['old']['document_root']) {
-			$app->log('Document root unchanged. Not updating incron configuration.', LOGLEVEL_DEBUG);
+		if ($this->documentRootUnchanged($data) && $this->phpVersionUnchanged($data)) {
+			$app->log('Document root and PHP version unchanged. Not updating incron configuration.', LOGLEVEL_DEBUG);
 
 			return;
 		}
@@ -59,6 +59,16 @@ class z_php_fpm_incron_reload_plugin {
 		$this->teardown($data['old']);
 	}
 
+	private function documentRootUnchanged($data)
+	{
+		return $data['new']['document_root'] === $data['old']['document_root'];
+	}
+
+	private function phpVersionUnchanged($data)
+	{
+		return $data['new']['fastcgi_php_version'] === $data['old']['fastcgi_php_version'];
+	}
+
 	private function setup($data)
 	{
 		$triggerFile = $this->getTriggerFilePath($data['document_root']);
-- 
GitLab


From b9cd2f66469144c7581a79e400c6c07d3d5c900c Mon Sep 17 00:00:00 2001
From: Webslice <webslice@bixels.nl>
Date: Thu, 9 Apr 2020 20:00:37 +0200
Subject: [PATCH 172/242] Allow updating sys_user.modules through remoting

---
 interface/lib/classes/remoting_lib.inc.php | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/interface/lib/classes/remoting_lib.inc.php b/interface/lib/classes/remoting_lib.inc.php
index 62ccd506c8..6f310284dc 100644
--- a/interface/lib/classes/remoting_lib.inc.php
+++ b/interface/lib/classes/remoting_lib.inc.php
@@ -309,6 +309,7 @@ class remoting_lib extends tform_base {
 		$username = $params["username"];
 		$clear_password = $params["password"];
 		$language = $params['language'];
+		$modules = $params['modules'];
 		$client_id = $app->functions->intval($client_id);
 
 		if(!isset($params['_ispconfig_pw_crypted']) || $params['_ispconfig_pw_crypted'] != 1) $password = $app->auth->crypt_password(stripslashes($clear_password));
@@ -327,8 +328,14 @@ class remoting_lib extends tform_base {
 			$params[] = $language;
 		}
 
+		$modulesstring = '';
+		if (!empty($modules)) {
+			$modulesstring = ', modules = ?';
+			$params[] = $modules;
+		}
+
 		$params[] = $client_id;
-		$sql = "UPDATE sys_user set username = ? $pwstring $langstring WHERE client_id = ?";
+		$sql = "UPDATE sys_user set username = ? $pwstring $langstring $modulesstring WHERE client_id = ?";
 		$app->db->query($sql, true, $params);
 	}
 
-- 
GitLab


From 4e7be391c8db3b1489565163e6c38d2c3b0dc01d Mon Sep 17 00:00:00 2001
From: Herman van Rink <rink@initfour.nl>
Date: Wed, 5 Feb 2020 10:58:16 +0100
Subject: [PATCH 173/242] Remove duplicate example, see
 remoting_client/examples/sites_database_add.php

---
 .../examples/soap-database-add.php            | 47 -------------------
 1 file changed, 47 deletions(-)
 delete mode 100644 remoting_client/examples/soap-database-add.php

diff --git a/remoting_client/examples/soap-database-add.php b/remoting_client/examples/soap-database-add.php
deleted file mode 100644
index 5ff7e4b79d..0000000000
--- a/remoting_client/examples/soap-database-add.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-
-$username = 'admin';
-$password = 'admin';
-
-$soap_location = 'http://localhost:8080/remote/index.php';
-$soap_uri = 'http://localhost:8080/remote/';
-
-$client = new SoapClient(null, array('location' => $soap_location,
-		'uri'      => $soap_uri));
-try {
-	if($session_id = $client->login($username, $password)) {
-		echo "Logged:".$session_id."<br />\n";
-	}
-
-	$database_type = 'mysql'; //Only mysql type avaliable more types coming soon.
-	$database_name = 'yourdbname';
-	$database_username = 'yourusername';
-	$database_password = 'yourpassword';
-	$database_charset = ''; // blank = db default, latin1 or utf8
-	$database_remoteips = ''; //remote ip´s separated by commas
-
-	$params = array(
-		'server_id' => 1,
-		'type' => $database_type,
-		'database_name' => $database_name,
-		'database_user' => $database_username,
-		'database_password' => $database_password,
-		'database_charset' =>  $database_charset,
-		'remote_access' => 'n', // n disabled - y enabled
-		'active' => 'y', // n disabled - y enabled
-		'remote_ips' => $database_remoteips
-	);
-
-	$client_id = 1;
-	$database_id = $client->sites_database_add($session_id, $client_id, $params);
-
-	if($client->logout($session_id)) {
-		echo "Logout.<br />\n";
-	}
-
-
-} catch (SoapFault $e) {
-	die('Error: '.$e->getMessage());
-}
-
-?>
-- 
GitLab


From 3639beb862626007b23faf58f83ae4ad82979eb4 Mon Sep 17 00:00:00 2001
From: Herman van Rink <rink@initfour.nl>
Date: Fri, 7 Feb 2020 21:31:51 +0100
Subject: [PATCH 174/242] Add a space for log readablilty

In the example belog failed and PHP were joined without a space ...

"Database connection failedPHP Warning:  mysqli_real_connect()"
---
 server/lib/classes/db_mysql.inc.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/server/lib/classes/db_mysql.inc.php b/server/lib/classes/db_mysql.inc.php
index 9c7269e568..4bbc84e3f9 100644
--- a/server/lib/classes/db_mysql.inc.php
+++ b/server/lib/classes/db_mysql.inc.php
@@ -559,7 +559,7 @@ class db
 		} elseif(is_object($app) && method_exists($app, 'log') && $bNoLog == false) {
 			$app->log($sErrormsg . $sAddMsg . ' -> ' . $mysql_errno . ' (' . $mysql_error . ')', LOGLEVEL_WARN, false);
 		} elseif(php_sapi_name() == 'cli') {
-			echo $sErrormsg . $sAddMsg;
+			echo $sErrormsg . ' ' . $sAddMsg;
 		}
 	}
 
-- 
GitLab


From f36aaf2b8e715efccb621e7dd2bc05b5f03b914a Mon Sep 17 00:00:00 2001
From: Herman van Rink <rink@initfour.nl>
Date: Fri, 28 Feb 2020 22:46:06 +0100
Subject: [PATCH 175/242] typo

---
 CONTRIBUTING.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index d8eac80ebd..b515c5348d 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -12,7 +12,7 @@ The master branch is used for code (mostly new features) that shall go into the
 * Magic quotes is gone, get used to it now. config = magic_quotes_gpc() Everything must be quoted
 * Don't use ereg, split and other old function -> gone in PHP 5.4
 * Don't use features that are not supported in PHP 5.3, for compatibility with LTS OS releases, ISPConfig must support PHP 5.3+
-* Don't use shorttags. A Shorttag is <? and that is confusing with <?xml -> always usw <?php
+* Don't use shorttags. A Shorttag is <? and that is confusing with <?xml -> always use <?php
 * Don't use namespaces
 * Column names in database tables and database table names are in lowercase
 * Classes for the interface are located in interface/lib/classes/ and loaded with $app->uses() or $app->load() functions.
-- 
GitLab


From dc97fec3865f8a4b70ff2d38420e77dbd12e2c4e Mon Sep 17 00:00:00 2001
From: Herman van Rink <rink@initfour.nl>
Date: Thu, 12 Mar 2020 16:26:55 +0100
Subject: [PATCH 176/242] Rename command to cron_line, as it's not a command

---
 server/plugins-available/cron_plugin.inc.php | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/server/plugins-available/cron_plugin.inc.php b/server/plugins-available/cron_plugin.inc.php
index af4e24d974..e6c197ea20 100644
--- a/server/plugins-available/cron_plugin.inc.php
+++ b/server/plugins-available/cron_plugin.inc.php
@@ -219,9 +219,9 @@ class cron_plugin {
 		if($cron_jobs && count($cron_jobs) > 0) {
 			foreach($cron_jobs as $job) {
 				if($job['run_month'] == '@reboot') {
-					$command = "@reboot";
+					$cron_line = "@reboot";
 				} else {
-					$command = str_replace(" ", "", $job['run_min']) . "\t" . str_replace(" ", "", $job['run_hour']) . "\t" . str_replace(" ", "", $job['run_mday']) . "\t" . str_replace(" ", "", $job['run_month']) . "\t" . str_replace(" ", "", $job['run_wday']);
+					$cron_line = str_replace(" ", "", $job['run_min']) . "\t" . str_replace(" ", "", $job['run_hour']) . "\t" . str_replace(" ", "", $job['run_mday']) . "\t" . str_replace(" ", "", $job['run_month']) . "\t" . str_replace(" ", "", $job['run_wday']);
 				}
 				
 				$log_target = ">/dev/null 2>&1";
@@ -235,9 +235,9 @@ class cron_plugin {
 					$log_wget_target = $log_root . '/cron_wget.log';
 				}
 				
-				$command .= "\t{$this->parent_domain['system_user']}"; //* running as user
+				$cron_line .= "\t{$this->parent_domain['system_user']}"; //* running as user
 				if($job['type'] == 'url') {
-					$command .= "\t{$cron_config['wget']} --no-check-certificate --user-agent='Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0' -q -t 1 -T 7200 -O " . $log_wget_target . " " . escapeshellarg($job['command']) . " " . $log_target;
+					$cron_line .= "\t{$cron_config['wget']} --no-check-certificate --user-agent='Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0' -q -t 1 -T 7200 -O " . $log_wget_target . " " . escapeshellarg($job['command']) . " " . $log_target;
 				} else {
 					if(strpos($job['command'], "\n") !== false || strpos($job['command'], "\r") !== false || strpos($job['command'], chr(0)) !== false) {
 						$app->log("Insecure Cron job SKIPPED: " . $job['command'], LOGLEVEL_WARN);
@@ -257,16 +257,16 @@ class cron_plugin {
 					$web_root .= '/web';
 					$job['command'] = str_replace('[web_root]', $web_root, $job['command']);
 
-					$command .= "\t";
-					//if($job['type'] != 'chrooted' && substr($job['command'], 0, 1) != "/") $command .= $this->parent_domain['document_root'].'/';
-					$command .= $job['command'] . " " . $log_target;
+					$cron_line .= "\t";
+					//if($job['type'] != 'chrooted' && substr($job['command'], 0, 1) != "/") $cron_line .= $this->parent_domain['document_root'].'/';
+					$cron_line .= $job['command'] . " " . $log_target;
 				}
 
 				if($job['type'] == 'chrooted') {
-					$chr_cron_content .= $command . " #{$job['domain']}\n";
+					$chr_cron_content .= $cron_line . " #{$job['domain']}\n";
 					$chr_cmd_count++;
 				} else {
-					$cron_content .= $command . " #{$job['domain']}\n";
+					$cron_content .= $cron_line . " #{$job['domain']}\n";
 					$cmd_count++;
 				}
 			}
-- 
GitLab


From 5d8daf272fea34554a9cac40dfa69b7d6aadd690 Mon Sep 17 00:00:00 2001
From: Herman van Rink <rink@initfour.nl>
Date: Sun, 26 Apr 2020 16:29:25 +0200
Subject: [PATCH 177/242] Document _ispconfig_pw_crypted parameter

---
 remoting_client/API-docs/client_update.html | 1 +
 1 file changed, 1 insertion(+)

diff --git a/remoting_client/API-docs/client_update.html b/remoting_client/API-docs/client_update.html
index 80a689b596..9cbdcd2f33 100644
--- a/remoting_client/API-docs/client_update.html
+++ b/remoting_client/API-docs/client_update.html
@@ -74,6 +74,7 @@
 <p class="margin"> parent_client_id&nbsp;&nbsp;(<span class="paratype">int(11)</span>)</p>
 <p class="margin"> username&nbsp;&nbsp;(<span class="paratype">varchar(64)</span>)</p>
 <p class="margin"> password&nbsp;&nbsp;(<span class="paratype">varchar(64)</span>)</p>
+<p class="margin"> _ispconfig_pw_crypted&nbsp;&nbsp;(<span class="paratype">int(11)</span>) Set to 1 to indicate that the password is already crypted.</p>
 <p class="margin"> language&nbsp;&nbsp;(<span class="paratype">char(2)</span>)</p>
 <p class="margin"> usertheme&nbsp;&nbsp;(<span class="paratype">varchar(32)</span>)</p>
 <p class="margin"> template_master&nbsp;&nbsp;(<span class="paratype">int(11)</span>)</p>
-- 
GitLab


From 211b496acbba8bf3e7d2113c9dc5ce23eb9de5e1 Mon Sep 17 00:00:00 2001
From: Herman van Rink <rink@initfour.nl>
Date: Tue, 28 Apr 2020 09:10:30 +0200
Subject: [PATCH 178/242] Add API docs for mail_relay_recipient functions,
 #3200

---
 .../API-docs/mail_relay_recipient_add.html    | 31 +++++++++++++++++++
 .../API-docs/mail_relay_recipient_delete.html | 29 +++++++++++++++++
 .../API-docs/mail_relay_recipient_get.html    | 29 +++++++++++++++++
 .../API-docs/mail_relay_recipient_update.html | 31 +++++++++++++++++++
 remoting_client/API-docs/navigation.html      |  4 +++
 5 files changed, 124 insertions(+)
 create mode 100644 remoting_client/API-docs/mail_relay_recipient_add.html
 create mode 100644 remoting_client/API-docs/mail_relay_recipient_delete.html
 create mode 100644 remoting_client/API-docs/mail_relay_recipient_get.html
 create mode 100644 remoting_client/API-docs/mail_relay_recipient_update.html

diff --git a/remoting_client/API-docs/mail_relay_recipient_add.html b/remoting_client/API-docs/mail_relay_recipient_add.html
new file mode 100644
index 0000000000..5e4c2cdfd5
--- /dev/null
+++ b/remoting_client/API-docs/mail_relay_recipient_add.html
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><title>ISPCOnfig 3 remote API documentation</title>
+
+  
+
+  
+  
+  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+  <link rel="stylesheet" type="text/css" href="definitionen.css">
+  <style type="text/css">
+  </style></head>
+
+<body>
+<div style="padding:40px">
+<h1>mail_relay_recipient_add(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$params</span>);</h1>
+<br>
+<p class="headgrp">Description: </p>
+<p class="margin"> Adds a new relay recipient.</p><br>
+<p class="headgrp">Input Variables: </p>
+<p class="margin"> <span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$params</span></p>
+<p class="headgrp">Parameters (in <span class="var">$params</span>): </p>
+<p class="margin"> server_id&nbsp;&nbsp;(<span class="paratype">int(11)</span>)</p>
+<p class="margin"> source&nbsp;&nbsp;Recipient address (<span class="paratype">varchar(255)</span>)</p>
+<p class="margin"> active&nbsp;&nbsp;(<span class="paratype">enum('n','y')</span>)</p>
+<p class="headgrp">Output: </p>
+<p class="margin"> Returns the ID of the newly added recordd</p>
+<!--<b>Output:</b> 
+<p style="margin-left:100px">Gives a record of </p> -->
+</div>
+
+</body></html>
diff --git a/remoting_client/API-docs/mail_relay_recipient_delete.html b/remoting_client/API-docs/mail_relay_recipient_delete.html
new file mode 100644
index 0000000000..ea765a9e12
--- /dev/null
+++ b/remoting_client/API-docs/mail_relay_recipient_delete.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><title>ISPCOnfig 3 remote API documentation</title>
+
+  
+
+  
+  
+  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+  <link rel="stylesheet" type="text/css" href="definitionen.css">
+  <style type="text/css">
+  </style></head>
+
+<body>
+<div style="padding:40px">
+<h1>mail_relay_recipient_delete(<span class="var">$session_id</span>, <span class="var">$primary_id</span>);</h1>
+<br>
+<p class="headgrp">Description: </p>
+<p class="margin"> Deletes a relay recipient.</p><br>
+<p class="headgrp">Input Variables: </p> 
+<p class="margin"> <span class="var">$session_id</span>, <span class="var">$primary_id</span></p>
+<p class="headgrp">Parameters (in <span class="var">$params</span>): </p>
+<p class="margin">None</p>
+<p class="headgrp">Output: </p> 
+<p class="margin"> Returns the number of deleted records.</p>
+<!--<b>Output:</b> 
+<p style="margin-left:100px">Gives a record of </p> -->
+</div>
+
+</body></html>
diff --git a/remoting_client/API-docs/mail_relay_recipient_get.html b/remoting_client/API-docs/mail_relay_recipient_get.html
new file mode 100644
index 0000000000..a1540e24d9
--- /dev/null
+++ b/remoting_client/API-docs/mail_relay_recipient_get.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><title>ISPCOnfig 3 remote API documentation</title>
+
+  
+
+  
+  
+  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+  <link rel="stylesheet" type="text/css" href="definitionen.css">
+  <style type="text/css">
+  </style></head>
+
+<body>
+<div style="padding:40px">
+<h1>mail_relay_recipient_get(<span class="var">$session_id</span>, <span class="var">$primary_id</span>);</h1>
+<br>
+<p class="headgrp">Description: </p>
+<p class="margin"> Retrieves information about a relay recipient.</p><br>
+<p class="headgrp">Input Variables: </p>
+<p class="margin"> <span class="var">$session_id</span>, <span class="var">$primary_id</span></p>
+<p class="headgrp">Parameters (in <span class="var">$params</span>): </p>
+<p class="margin"> None</p>
+<p class="headgrp">Output: </p>
+<p class="margin"> Returns all fields and values of the chosen relay recipient.</p>
+<!--<b>Output:</b> 
+<p style="margin-left:100px">Gives a record of </p> -->
+</div>
+
+</body></html>
diff --git a/remoting_client/API-docs/mail_relay_recipient_update.html b/remoting_client/API-docs/mail_relay_recipient_update.html
new file mode 100644
index 0000000000..417ef40eeb
--- /dev/null
+++ b/remoting_client/API-docs/mail_relay_recipient_update.html
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><title>ISPCOnfig 3 remote API documentation</title>
+
+  
+
+  
+  
+  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+  <link rel="stylesheet" type="text/css" href="definitionen.css">
+  <style type="text/css">
+  </style></head>
+
+<body>
+<div style="padding:40px">
+<h1>mail_relay_recipient_update(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$primary_id</span>, <span class="var">$params</span>);</h1>
+<br>
+<b>Description: </b>
+<p class="margin"> Updates a relay recipient.</p><br>
+<b>Input Variables: </b>
+<p class="margin"> <span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$primary_id</span>, <span class="var">$params</span></p>
+<b>Parameters (in <span class="var">$params</span>): </b>
+<p class="margin"> server_id&nbsp;&nbsp;(<span class="paratype">int(11)</span>)</p>
+<p class="margin"> source&nbsp;&nbsp;Recipient address (<span class="paratype">varchar(255)</span>)</p>
+<p class="margin"> active&nbsp;&nbsp;(<span class="paratype">enum('n','y')</span>)</p>
+<b>Output: </b> 
+<p class="margin"> Returns the number of affected rows.</p>
+<!--<b>Output:</b> 
+<p style="margin-left:100px">Gives a record of </p> -->
+</div>
+
+</body></html>
diff --git a/remoting_client/API-docs/navigation.html b/remoting_client/API-docs/navigation.html
index d8c296801b..02b5876b3d 100644
--- a/remoting_client/API-docs/navigation.html
+++ b/remoting_client/API-docs/navigation.html
@@ -161,6 +161,10 @@
 <p><a href="mail_transport_delete.html" target="content">mail_transport_delete</a></p>
 <p><a href="mail_transport_get.html" target="content">mail_transport_get</a></p>
 <p><a href="mail_transport_update.html" target="content">mail_transport_update</a></p>
+<p><a href="mail_relay_recipient_add.html" target="content">mail_relay_recipient_add</a></p>
+<p><a href="mail_relay_recipient_delete.html" target="content">mail_relay_recipient_delete</a></p>
+<p><a href="mail_relay_recipient_get.html" target="content">mail_relay_recipient_get</a></p>
+<p><a href="mail_relay_recipient_update.html" target="content">mail_relay_recipient_update</a></p>
 <p><a href="mail_user_add.html" target="content">mail_user_add</a></p>
 <p><a href="mail_user_delete.html" target="content">mail_user_delete</a></p>
 <p><a href="mail_user_get.html" target="content">mail_user_get</a></p>
-- 
GitLab


From 39710604eeede260eba7862727c60ceca183a3d8 Mon Sep 17 00:00:00 2001
From: Jesse Norell <jesse@kci.net>
Date: Wed, 14 Aug 2019 23:22:00 +0200
Subject: [PATCH 179/242] Example csv import email script.

---
 .../examples/ispc-import-csv-email.php        | 305 ++++++++++++++++++
 1 file changed, 305 insertions(+)
 create mode 100644 remoting_client/examples/ispc-import-csv-email.php

diff --git a/remoting_client/examples/ispc-import-csv-email.php b/remoting_client/examples/ispc-import-csv-email.php
new file mode 100644
index 0000000000..407ba1635c
--- /dev/null
+++ b/remoting_client/examples/ispc-import-csv-email.php
@@ -0,0 +1,305 @@
+#!/usr/bin/php
+<?php
+#
+# ispc-import-csv-email.php: import email accounts from csv into ispconfig
+#
+
+# ISPConfig remote api params
+$remote_user = 'importer';
+$remote_pass = 'apipassword';
+$remote_url = 'https://yourserver.com:8080/remote/json.php';
+
+# CSV file
+$csv_file="/home/migrations/test.csv";
+
+
+# csv file format (first line is header names, column order does not matter):
+#
+# "email","password","quota","name","cc","bcc","move_junk","autoresponder","autoresponder_text","virus_lover","spam_lover"
+# "api_standard@apitest.com","insecure","150","API User Insert: Standard Mailbox","","","yes","no","this is vacation text, although vacation is not enabled","N","N"
+# "api_no_spambox@apitest.com","insecure","150","API User Insert: Mailbox with move_junk off","","","no","no","this is vacation text, although vacation is not enabled","N","N"
+# "api_vacation@apitest.com","insecure","150","API User Insert: Mailbox with vacation","","","yes","yes","this is vacation text, with vacation enabled","N","N"
+# "api_forward@apitest.com","insecure","150","API User Insert: Mail Forward","your-test-addr@test.com","","no","no","this is vacation text, although vacation is not enabled","N","N"
+# "api_both1@apitest.com","insecure","150","API User Insert: Mailbox with forward via cc","your-test-addr@test.com","","yes","no","this is vacation text, although vacation is not enabled","N","N"
+# "api_both2@apitest.com","insecure","150","API User Insert: Mailbox with forward via bcc","","your-test-addr@test.com","yes","no","this is vacation text, although vacation is not enabled","N","N"
+# "api_virus_lover@apitest.com","insecure","150","API User Insert: Mailbox with virus_lover","","","yes","no","","Y","N"
+# "api_spam_lover@apitest.com","insecure","150","API User Insert: Mailbox with spam_lover","","","yes","no","","N","Y"
+# "api_both_lover@apitest.com","insecure","150","API User Insert: Mailbox with virus_lover and spam_lover","","","yes","no","","Y","Y"
+
+
+/**
+ * Call REST endpoint.
+ */
+function restCall( $method, $data ) {
+	global $remote_url;
+	
+	if(!is_array($data)) return false;
+	$json = json_encode($data);
+	
+	$curl = curl_init();
+	curl_setopt($curl, CURLOPT_POST, 1);
+
+	if($data) curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
+
+	// needed for self-signed cert
+	curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
+	//curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
+	// end of needed for self-signed cert
+	
+	curl_setopt($curl, CURLOPT_URL, $remote_url . '?' . $method);
+	curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
+	
+	$result = curl_exec($curl);
+	curl_close($curl);
+
+	return $result;
+}
+
+$session_id = '';
+
+/**
+ * Logout of active session and die with message.
+ */
+function session_die( $msg ) {
+	global $session_id;
+
+	if ( isset( $session_id ) && $session_id ) {
+		$result = restCall( 'logout', [ 'session_id' => $session_id ] );
+		$result || die( "$msg\nAdditionally, could not get logout result, session id $session_id may now be abandoned.\n" );
+	}
+
+	die( "$msg\n" );
+}
+
+/**
+ * Make api call, checking for errors and return 'response' from the decoded data.  Opens session if required.
+ */
+function apiCall( ...$args ) {
+	global $remote_user, $remote_pass, $session_id;
+
+	// login to remote api and obtain session id if needed
+	if ( ! ( isset( $session_id ) && $session_id ) ) {
+		$result = restCall( 'login', [ 'username' => $remote_user, 'password' => $remote_pass, 'client_login' => false, ] );
+
+		if ( $result ) {
+			$result = json_decode( $result, true );
+			if ( ! $result ) {
+				die( "Error: unable to login to remote api (json_decode failed)\n" );
+			}
+
+			if ( isset( $result['response'] ) ) {
+				$session_id = $result['response'];
+			} else {
+				die( "Error: failed to obtain session id from remote api login\n" );
+			}
+		}
+	}
+
+	$rest_args = func_get_args();
+	$method = array_shift( $rest_args );
+
+	$result = restCall( $method, array_merge( [ 'session_id' => $session_id, ], ...$rest_args ) );
+
+	if ( $result ) $data = json_decode( $result, true );
+	else session_die( "Could not get $method result" );
+
+	if ( isset( $data['code'] ) && 'ok' != $data['code'] ) {
+		$msg = "$method returned " . $data['code']
+		     . ( isset( $data['message'] ) ? ": " . $data['message'] . "\n" : "\n" );
+		session_die( $msg );
+	}
+
+	return ( isset( $data['response'] ) ? $data['response'] : $data );
+}
+
+if ( ! file_exists( "$csv_file" ) ) {
+	die( "CSV file ($csv_file) not found.\n" );
+}
+
+// get all mail policies
+$mail_policies = apiCall( 'mail_policy_get', [ 'primary_id' => [] ] );
+if ( ! $mail_policies ) {
+	session_die( "Error: could not look up mail policies\n" );
+}
+
+// get all spamfilter_user settings
+$mail_spamfilter_users = apiCall( 'mail_spamfilter_user_get', [ 'primary_id' => [] ] );
+if ( ! $mail_spamfilter_users ) {
+	session_die( "Error: could not look up mail spamfilter users\n" );
+}
+
+$mail_domains = [];
+
+// Read csv file, map rows and loop through them
+$rows   = array_map( 'str_getcsv', file( $csv_file ) );
+$header = array_shift( $rows );
+$email_idx = array_search( 'email', $header );
+if ( $email_idx === FALSE ) {
+	session_die( "Error in csv file: 'email' field not found.\n" );
+}
+$csv    = [];
+foreach( $rows as $row ) {
+	$email = $row[$email_idx];
+	$domain = substr( $email, strpos( $email, '@' ) + 1 );
+
+	if ( is_array( $row ) && count( $header ) == count( $row ) ) {
+		$csv[$email] = array_combine( $header, $row );
+	} else {
+		print "Error in csv file: problem parsing email '$email'\n";
+		continue;
+	}
+
+	// look up mail_domain record for this domain
+	if ( ! isset( $mail_domains[$domain] ) ) {
+		$data = apiCall( 'mail_domain_get_by_domain', [ 'domain' => $domain ] );
+
+		if ( is_array( $data ) && isset( $data[0] ) ) {
+
+			// unset these (large and don't need them)
+			unset( $data[0]['dkim'] );
+			unset( $data[0]['dkim_selector'] );
+			unset( $data[0]['dkim_public'] );
+			unset( $data[0]['dkim_private'] );
+
+			$mail_domains[$domain] = $data[0];
+
+			foreach ( $mail_spamfilter_users as $msu ) {
+				if ( $msu['email'] == "@$domain" && $msu['server_id'] == $mail_domains[$domain]['server_id'] ) {
+					$mail_domains[$domain]['spamfilter_policy_id'] = $msu['policy_id'];
+				}
+			}
+		} else {
+			$mail_domains[$domain] = [ 'domain_id' => -1, 'domain' => $domain, ];
+			print( "Error: mail_domain $domain does not exist, you must create it first.\n" );
+		}
+	}
+}
+
+// dump manually created account to compare values
+//$data = apiCall( 'mail_user_get', [ 'primary_id' => [ 'email' => 'manual@apitest.com' ] ] );
+//var_dump( $data, true );
+
+foreach ( $csv as $record ) {
+	$email = $record['email'];
+	$addr = substr( $email, 0, strpos( $email, '@' ) );
+	$domain = substr( $email, strpos( $email, '@' ) + 1 );
+
+	// ensure we have mail_domain info
+	if ( ! isset( $mail_domains[$domain] ) || -1 == $mail_domains[$domain]['domain_id'] ) {
+		print "Config for domain $domain not available, cannot add email $email.\n";
+		continue;
+	}
+
+	// skip if email already exists
+	$data = apiCall( 'mail_user_get', [ 'primary_id' => [ 'email' => $email ] ] );
+	if ( is_array( $data ) && isset( $data[0] ) && isset( $data[0]['mailuser_id'] ) ) {
+		print "Email $email already exists, skipping.\n";
+		continue;
+	}
+
+	// get client_id for this sys_userid
+	if ( isset( $mail_domains[$domain]['client_id'] ) ) {
+		$client_id = $mail_domains[$domain]['client_id'];
+	} else {
+		$client_id = apiCall( 'client_get_id', [ 'sys_userid' => $mail_domains[$domain]['sys_userid'] ] );
+		if ( ! $client_id ) {
+			print "Error: unable to determine client_id for $domain (sys_userid is " . $mail_domains[$domain]['sys_userid'] . "),\n";
+			print "cannot create mailbox for Email $email\n";
+			continue;
+		}
+		$mail_domains[$domain]['client_id'] = $client_id;
+	}
+
+	// mail_user_add parameters for this email
+	$params = [ 'params' => [
+			'server_id' => $mail_domains[$domain]['server_id'],
+			'email' => $email,
+			'login' => $email,
+			'password' => $record['password'],
+			'name' => $record['name'],
+			'uid' => 5000,
+			'gid' => 5000,
+			'maildir' => "/var/vmail/$domain/$addr",
+			'quota' => $record['quota'] * 1024 * 1024,
+			'cc' => implode( ',', array_filter( [ $record['cc'], $record['bcc'] ] ) ),
+			'homedir' => "/var/vmail/",
+			'autoresponder' => ( preg_match( '/^y/i', $record['autoresponder'] ) ? 'y' : 'n' ),
+			'autoresponder_start_date' => date( 'Y-m-d H:i:s' ),
+			'autoresponder_end_date' => date( '2024-m-d H:i:s' ),
+			'autoresponder_text' => $record['autoresponder_text'],
+			'move_junk' => ( preg_match( '/^y/i', $record['move_junk'] ) ? 'y' : 'n' ),
+			'custom_mailfilter' => "",
+			'postfix' => 'y',
+			'access' => 'y',
+		//	'disableimap' => 'n',
+		//	'disablepop3' => 'n',
+		//	'disabledeliver' => 'n',
+		//	'disablesmtp' => 'n',
+			],
+		];
+
+	// add mail user
+	$data = apiCall( 'mail_user_add', [ 'client_id' => $client_id ], $params );
+
+	if ( ! $data ) {
+		print "mail_user_add may have a problem inserting $email\n";
+		continue;
+	}
+
+	//$data = apiCall( 'mail_user_get', [ 'primary_id' => [ 'email' => $email ] ] );
+	//var_dump( $data, true );
+
+	// determine mail policy
+	$spam_lover = ( preg_match( '/^y/i', $record['move_junk'] ) ? $record['spam_lover'] : 'N' );
+	$virus_lover = $record['virus_lover'];
+	$spamfilter_policy_id = null;
+
+	// check domain's policy settings for bypass_spam_checks == 'N' and matching spam_lover/virus_lover,
+	// if a match, we're done
+	if ( isset( $mail_domains[$domain]['spamfilter_policy_id'] ) ) {
+		foreach ( $mail_policies as $policy ) {
+			if ( $policy['id'] == $mail_domains[$domain]['spamfilter_policy_id'] ) {
+				if ( 'N' == $policy['bypass_spam_checks'] && $policy['spam_lover'] == $spam_lover && $policy['virus_lover'] == $virus_lover ) {
+					$spamfilter_policy_id = $policy['id'];
+				}
+			}
+		}
+	}
+	// if domain's policy doesn't match, loop through all policies to find a match and insert it
+	if ( null === $spamfilter_policy_id ) {
+		foreach ( $mail_policies as $policy ) {
+			if ( 'Y' == $policy['bypass_spam_checks'] ) {
+				continue;
+			}
+			if ( $policy['spam_lover'] == $spam_lover && $policy['virus_lover'] == $virus_lover ) {
+				$spamfilter_policy_id = $policy['id'];
+
+				// mail_spamfilter_user entry for this user / policy_id
+				$params = [ 'params' => [
+						'server_id' => $mail_domains[$domain]['server_id'],
+						'priority' => "10",
+						'policy_id' => $policy['id'],
+						'email' => $email,
+						'fullname' => $email,
+						'local' => "Y",
+						],
+					];
+
+				$data = apiCall( 'mail_spamfilter_user_add', [ 'client_id' => $client_id ], $params );
+
+				// either we inserted a spamfilter_user or it failed,
+				// either way, on to the next email
+				continue 2;
+			}
+		}
+	}
+}
+
+
+// logout so session id is cleaned up
+if ( isset( $session_id ) && $session_id ) {
+	$result = restCall( 'logout', [ 'session_id' => $session_id ] );
+	$result || die( "Could not get logout result, session id $session_id may now be abandoned.\n" );
+}
+
+exit();
-- 
GitLab


From 6c638517508cf2e0ee1f4245e85c4c7633dd3782 Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Mon, 4 May 2020 17:30:42 +0200
Subject: [PATCH 180/242] - fix wrong certbot command, fixes #5610

---
 server/lib/classes/letsencrypt.inc.php | 137 +++++++++++++------------
 1 file changed, 72 insertions(+), 65 deletions(-)

diff --git a/server/lib/classes/letsencrypt.inc.php b/server/lib/classes/letsencrypt.inc.php
index f60ad040e7..4e9bb74e13 100644
--- a/server/lib/classes/letsencrypt.inc.php
+++ b/server/lib/classes/letsencrypt.inc.php
@@ -42,7 +42,7 @@ class letsencrypt {
 	public function __construct(){
 
 	}
-	
+
 	public function get_acme_script() {
 		$acme = explode("\n", shell_exec('which /usr/local/ispconfig/server/scripts/acme.sh /root/.acme.sh/acme.sh'));
 		$acme = reset($acme);
@@ -52,18 +52,18 @@ class letsencrypt {
 			return false;
 		}
 	}
-	
+
 	public function get_acme_command($domains, $key_file, $bundle_file, $cert_file, $server_type = 'apache') {
 		global $app;
-		
+
 		$letsencrypt = $this->get_acme_script();
-		
+
 		$cmd = '';
 		// generate cli format
 		foreach($domains as $domain) {
 			$cmd .= (string) " -d " . $domain;
 		}
-		
+
 		if($cmd == '') {
 			return false;
 		}
@@ -73,12 +73,12 @@ class letsencrypt {
 		} else {
 			$cert_arg = '--fullchain-file ' . escapeshellarg($bundle_file) . ' --cert-file ' . escapeshellarg($cert_file);
 		}
-		
+
 		$cmd = 'R=0 ; C=0 ; ' . $letsencrypt . ' --issue ' . $cmd . ' -w /usr/local/ispconfig/interface/acme ; R=$? ; if [[ $R -eq 0 || $R -eq 2 ]] ; then ' . $letsencrypt . ' --install-cert ' . $cmd . ' --key-file ' . escapeshellarg($key_file) . ' ' . $cert_arg . ' --reloadcmd ' . escapeshellarg($this->get_reload_command()) . '; C=$? ; fi ; if [[ $C -eq 0 ]] ; then exit $R ; else exit $C  ; fi';
-		
+
 		return $cmd;
 	}
-	
+
 	public function get_certbot_script() {
 		$letsencrypt = explode("\n", shell_exec('which letsencrypt certbot /root/.local/share/letsencrypt/bin/letsencrypt /opt/eff.org/certbot/venv/bin/certbot'));
 		$letsencrypt = reset($letsencrypt);
@@ -94,13 +94,13 @@ class letsencrypt {
 		$ret = null;
 		$val = 0;
 		exec($install_cmd . ' 2>&1', $ret, $val);
-		
+
 		return ($val == 0 ? true : false);
 	}
-	
+
 	private function get_reload_command() {
 		global $app, $conf;
-		
+
 		$web_config = $app->getconf->get_server_config($conf['server_id'], 'web');
 
 		$daemon = '';
@@ -121,26 +121,26 @@ class letsencrypt {
 		$cmd = $app->system->getinitcommand($daemon, 'force-reload');
 		return $cmd;
 	}
-	
+
 	public function get_certbot_command($domains) {
 		global $app;
-		
+
 		$letsencrypt = $this->get_certbot_script();
-		
+
 		$cmd = '';
 		// generate cli format
 		foreach($domains as $domain) {
 			$cmd .= (string) " --domains " . $domain;
 		}
-		
+
 		if($cmd == '') {
 			return false;
 		}
-		
+
 		$matches = array();
 		$ret = null;
 		$val = 0;
-		
+
 		$letsencrypt_version = exec($letsencrypt . ' --version  2>&1', $ret, $val);
 		if(preg_match('/^(\S+|\w+)\s+(\d+(\.\d+)+)$/', $letsencrypt_version, $matches)) {
 			$letsencrypt_version = $matches[2];
@@ -161,39 +161,39 @@ class letsencrypt {
 		} else {
 			$webroot_args = "$cmd --webroot-path /usr/local/ispconfig/interface/acme";
 		}
-		
+
 		$cmd = $letsencrypt . " certonly -n --text --agree-tos --expand --authenticator webroot --server $acme_version --rsa-key-size 4096 --email postmaster@$domain $cmd --webroot-path /usr/local/ispconfig/interface/acme";
-		
+
 		return $cmd;
 	}
-	
+
 	public function get_letsencrypt_certificate_paths($domains = array()) {
 		global $app;
-		
+
 		if($this->get_acme_script()) {
 			return false;
 		}
-		
+
 		if(empty($domains)) return false;
 		if(!is_dir($this->renew_config_path)) return false;
-		
+
 		$dir = opendir($this->renew_config_path);
 		if(!$dir) return false;
-		
+
 		$path_scores = array();
-		
+
 		$main_domain = reset($domains);
 		sort($domains);
 		$min_diff = false;
-		
+
 		while($file = readdir($dir)) {
 			if($file === '.' || $file === '..' || substr($file, -5) !== '.conf')  continue;
 			$file_path = $this->renew_config_path . '/' . $file;
 			if(!is_file($file_path) || !is_readable($file_path)) continue;
-			
+
 			$fp = fopen($file_path, 'r');
 			if(!$fp) continue;
-			
+
 			$path_scores[$file_path] = array(
 				'domains' => array(),
 				'diff' => 0,
@@ -211,26 +211,26 @@ class letsencrypt {
 				if($line === '') continue;
 				elseif(!$in_list) {
 					if($line == '[[webroot_map]]') $in_list = true;
-					
+
 					$tmp = explode('=', $line, 2);
 					if(count($tmp) != 2) continue;
 					$key = trim($tmp[0]);
 					if($key == 'cert' || $key == 'privkey' || $key == 'chain' || $key == 'fullchain') {
 						$path_scores[$file_path]['cert_paths'][$key] = trim($tmp[1]);
 					}
-					
+
 					continue;
 				}
-				
+
 				$tmp = explode('=', $line, 2);
 				if(count($tmp) != 2) continue;
-				
+
 				$domain = trim($tmp[0]);
 				if($domain == $main_domain) $path_scores[$file_path]['has_main_domain'] = true;
 				$path_scores[$file_path]['domains'][] = $domain;
 			}
 			fclose($fp);
-			
+
 			sort($path_scores[$file_path]['domains']);
 			if(count(array_intersect($domains, $path_scores[$file_path]['domains'])) < 1) {
 				$path_scores[$file_path]['diff'] = false;
@@ -238,13 +238,13 @@ class letsencrypt {
 				// give higher diff value to missing domains than to those that are too much in there
 				$path_scores[$file_path]['diff'] = (count(array_diff($domains, $path_scores[$file_path]['domains'])) * 1.5) + count(array_diff($path_scores[$file_path]['domains'], $domains));
 			}
-			 
+
 			if($min_diff === false || $path_scores[$file_path]['diff'] < $min_diff) $min_diff = $path_scores[$file_path]['diff'];
 		}
 		closedir($dir);
 
 		if($min_diff === false) return false;
-		
+
 		$cert_paths = false;
 		$used_path = false;
 		foreach($path_scores as $path => $data) {
@@ -254,15 +254,15 @@ class letsencrypt {
 				if($data['has_main_domain'] == true) break;
 			}
 		}
-		
+
 		$app->log("Let's Encrypt Cert config path is: " . ($used_path ? $used_path : "not found") . ".", LOGLEVEL_DEBUG);
-		
+
 		return $cert_paths;
 	}
-	
+
 	private function get_ssl_domain($data) {
 		global $app;
-		
+
 		$domain = $data['new']['ssl_domain'];
 		if(!$domain) {
 			$domain = $data['new']['domain'];
@@ -276,14 +276,14 @@ class letsencrypt {
 				$domain = substr($domain, 2);
 			}
 		}
-		
+
 		return $domain;
 	}
-	
+
 	public function get_website_certificate_paths($data) {
 		$ssl_dir = $data['new']['document_root'].'/ssl';
 		$domain = $this->get_ssl_domain($data);
-		
+
 		$cert_paths = array(
 			'domain' => $domain,
 			'key' => $ssl_dir.'/'.$domain.'.key',
@@ -292,7 +292,7 @@ class letsencrypt {
 			'crt' => $ssl_dir.'/'.$domain.'.crt',
 			'bundle' => $ssl_dir.'/'.$domain.'.bundle'
 		);
-		
+
 		if($data['new']['ssl'] == 'y' && $data['new']['ssl_letsencrypt'] == 'y') {
 			$cert_paths = array(
 				'domain' => $domain,
@@ -302,17 +302,17 @@ class letsencrypt {
 				'bundle' => $ssl_dir.'/'.$domain.'-le.bundle'
 			);
 		}
-		
+
 		return $cert_paths;
 	}
-	
+
 	public function request_certificates($data, $server_type = 'apache') {
 		global $app, $conf;
-		
+
 		$app->uses('getconf');
 		$web_config = $app->getconf->get_server_config($conf['server_id'], 'web');
 		$server_config = $app->getconf->get_server_config($conf['server_id'], 'server');
-		
+
 		$use_acme = false;
 		if($this->get_acme_script()) {
 			$use_acme = true;
@@ -320,13 +320,13 @@ class letsencrypt {
 			// acme and le missing
 			$this->install_acme();
 		}
-		
+
 		$tmp = $app->letsencrypt->get_website_certificate_paths($data);
 		$domain = $tmp['domain'];
 		$key_file = $tmp['key'];
 		$crt_file = $tmp['crt'];
 		$bundle_file = $tmp['bundle'];
-		
+
 		// default values
 		$temp_domains = array($domain);
 		$cli_domain_arg = '';
@@ -345,7 +345,7 @@ class letsencrypt {
 				$temp_domains[] = $subdomain['domain'];
 			}
 		}
-		
+
 		//* then, add alias domain if we have
 		$aliasdomains = $app->db->queryAllRecords('SELECT domain,subdomain FROM web_domain WHERE parent_domain_id = '.intval($data['new']['domain_id'])." AND active = 'y' AND type = 'alias' AND ssl_letsencrypt_exclude != 'y'");
 		if(is_array($aliasdomains)) {
@@ -395,7 +395,7 @@ class letsencrypt {
 		// unset useless data
 		unset($subdomains);
 		unset($aliasdomains);
-		
+
 		$this->certbot_use_certcommand = false;
 		$letsencrypt_cmd = '';
 		$allow_return_codes = null;
@@ -405,7 +405,7 @@ class letsencrypt {
 		} else {
 			$letsencrypt_cmd = $this->get_certbot_command($temp_domains);
 		}
-		
+
 		$success = false;
 		if($letsencrypt_cmd) {
 			if(!isset($server_config['migration_mode']) || $server_config['migration_mode'] != 'y') {
@@ -428,10 +428,17 @@ class letsencrypt {
 				return true;
 			}
 		}
-		
+
 		$le_files = array();
 		if($this->certbot_use_certcommand === true && $letsencrypt_cmd) {
-			$letsencrypt_cmd = $letsencrypt_cmd . " certificates " . $cli_domain_arg;
+			$cli_domain_arg = '';
+			// generate cli format
+			foreach($temp_domains as $temp_domain) {
+				$cli_domain_arg .= (string) " --domains " . $temp_domain;
+			}
+
+
+			$letsencrypt_cmd = $this->get_certbot_script() . " certificates " . $cli_domain_arg;
 			$output = explode("\n", shell_exec($letsencrypt_cmd . " 2>/dev/null | grep -v '^\$'"));
 			$le_path = '';
 			$skip_to_next = true;
@@ -439,18 +446,18 @@ class letsencrypt {
 			foreach($output as $outline) {
 				$outline = trim($outline);
 				$app->log("LE CERT OUTPUT: " . $outline, LOGLEVEL_DEBUG);
-				
+
 				if($skip_to_next === true && !preg_match('/^\s*Certificate Name/', $outline)) {
 					continue;
 				}
 				$skip_to_next = false;
-				
+
 				if(preg_match('/^\s*Expiry.*?VALID:\s+\D/', $outline)) {
 					$app->log("Found LE path is expired or invalid: " . $matches[1], LOGLEVEL_DEBUG);
 					$skip_to_next = true;
 					continue;
 				}
-				
+
 				if(preg_match('/^\s*Certificate Path:\s*(\/.*?)\s*$/', $outline, $matches)) {
 					$app->log("Found LE path: " . $matches[1], LOGLEVEL_DEBUG);
 					$le_path = dirname($matches[1]);
@@ -461,7 +468,7 @@ class letsencrypt {
 					}
 				}
 			}
-			
+
 			if($le_path) {
 				$le_files = array(
 					'privkey' => $le_path . '/privkey.pem',
@@ -475,32 +482,32 @@ class letsencrypt {
 			$le_files = $this->get_letsencrypt_certificate_paths($temp_domains);
 		}
 		unset($temp_domains);
-		
+
 		if($server_type != 'apache' || version_compare($app->system->getapacheversion(true), '2.4.8', '>=')) {
 			$crt_tmp_file = $le_files['fullchain'];
 		} else {
 			$crt_tmp_file = $le_files['cert'];
 		}
-		
+
 		$key_tmp_file = $le_files['privkey'];
 		$bundle_tmp_file = $le_files['chain'];
-		
+
 		if(!$success) {
 			// error issuing cert
 			$app->log('Let\'s Encrypt SSL Cert for: ' . $domain . ' could not be issued.', LOGLEVEL_WARN);
 			$app->log($letsencrypt_cmd, LOGLEVEL_WARN);
-			
+
 			// if cert already exists, dont remove it. Ex. expired/misstyped/noDnsYet alias domain, api down...
 			if(!file_exists($crt_tmp_file)) {
 				return false;
 			}
 		}
-			
+
 		//* check is been correctly created
 		if(file_exists($crt_tmp_file)) {
 			$app->log("Let's Encrypt Cert file: $crt_tmp_file exists.", LOGLEVEL_DEBUG);
 			$date = date("YmdHis");
-			
+
 			//* TODO: check if is a symlink, if target same keep it, either remove it
 			if(is_file($key_file)) {
 				$app->system->copy($key_file, $key_file.'.old.'.$date);
@@ -528,7 +535,7 @@ class letsencrypt {
 
 			if(@is_link($bundle_file)) $app->system->unlink($bundle_file);
 			if(@file_exists($bundle_tmp_file)) $app->system->exec_safe("ln -s ? ?", $bundle_tmp_file, $bundle_file);
-			
+
 			return true;
 		} else {
 			$app->log("Let's Encrypt Cert file: $crt_tmp_file does not exist.", LOGLEVEL_DEBUG);
-- 
GitLab


From 5c33920813b14afc30efd0a1ff26302e036097cc Mon Sep 17 00:00:00 2001
From: Herman van Rink <rink@initfour.nl>
Date: Tue, 5 May 2020 21:29:07 +0200
Subject: [PATCH 181/242] typo

---
 interface/lib/classes/listform_actions.inc.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/interface/lib/classes/listform_actions.inc.php b/interface/lib/classes/listform_actions.inc.php
index 097b41fc0d..e0ffb628ee 100644
--- a/interface/lib/classes/listform_actions.inc.php
+++ b/interface/lib/classes/listform_actions.inc.php
@@ -192,7 +192,7 @@ class listform_actions {
 				$key = $field['field'];
 				if(isset($field['formtype']) && $field['formtype'] == 'SELECT') {
 					if(strtolower($rec[$key]) == 'y' or strtolower($rec[$key]) == 'n') {
-						// Set a additional image variable for bolean fields
+						// Set a additional image variable for boolean fields
 						$rec['_'.$key.'_'] = (strtolower($rec[$key]) == 'y')?'x16/tick_circle.png':'x16/cross_circle.png';
 					}
 					//* substitute value for select field
-- 
GitLab


From 955a242135ef8b896bd1ec2df63062114f19b56d Mon Sep 17 00:00:00 2001
From: Herman van Rink <rink@initfour.nl>
Date: Mon, 11 May 2020 08:46:46 +0200
Subject: [PATCH 182/242] Include CA certs in jailkit chroot, fixes #4878

---
 install/dist/tpl/gentoo/jk_init.ini.master | 2 ++
 install/tpl/jk_init.ini.master             | 2 ++
 2 files changed, 4 insertions(+)

diff --git a/install/dist/tpl/gentoo/jk_init.ini.master b/install/dist/tpl/gentoo/jk_init.ini.master
index a2ff3a1951..6e11d05fd5 100644
--- a/install/dist/tpl/gentoo/jk_init.ini.master
+++ b/install/dist/tpl/gentoo/jk_init.ini.master
@@ -99,6 +99,8 @@ directories = /etc/joe, /etc/terminfo, /usr/share/vim, /usr/share/terminfo, /usr
 comment = several internet utilities like wget, ftp, rsync, scp, ssh
 executables = /usr/bin/wget, /usr/bin/lynx, /usr/bin/ftp, /usr/bin/host, /usr/bin/rsync, /usr/bin/smbclient
 includesections = netbasics, ssh, sftp, scp
+directories = /etc/ssl/certs/
+regularfiles = /usr/lib/ssl/certs
 
 [apacheutils]
 comment = htpasswd utility
diff --git a/install/tpl/jk_init.ini.master b/install/tpl/jk_init.ini.master
index d34332b72e..469e655a31 100644
--- a/install/tpl/jk_init.ini.master
+++ b/install/tpl/jk_init.ini.master
@@ -96,6 +96,8 @@ directories = /etc/joe, /etc/terminfo, /usr/share/vim, /usr/share/terminfo, /lib
 comment = several internet utilities like wget, ftp, rsync, scp, ssh
 executables = /usr/bin/wget, /usr/bin/lynx, /usr/bin/ftp, /usr/bin/host, /usr/bin/rsync, /usr/bin/smbclient
 includesections = netbasics, ssh, sftp, scp
+directories = /etc/ssl/certs/
+regularfiles = /usr/lib/ssl/certs
 
 [apacheutils]
 comment = htpasswd utility
-- 
GitLab


From 1811e6496b1253332959dfd9d52624aed11f1e31 Mon Sep 17 00:00:00 2001
From: Branislav Viest <info@branoviest.com>
Date: Fri, 15 May 2020 17:32:02 +0200
Subject: [PATCH 183/242] Fixed error 404 when PHP-FPM is used and PHP script
 is not exists.

---
 server/conf/vhost.conf.master | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/server/conf/vhost.conf.master b/server/conf/vhost.conf.master
index bec2cedef2..f6ad4b830f 100644
--- a/server/conf/vhost.conf.master
+++ b/server/conf/vhost.conf.master
@@ -372,12 +372,16 @@
 			    </Directory>
 				<Directory {tmpl_var name='web_document_root_www'}>
 					<FilesMatch "\.php[345]?$">
-						SetHandler php-fcgi
+						<If "-f '%{REQUEST_FILENAME}'">
+							SetHandler php-fcgi
+						</If>
 					</FilesMatch>
 				</Directory>
 				<Directory {tmpl_var name='web_document_root'}>
 					<FilesMatch "\.php[345]?$">
-						SetHandler php-fcgi
+						<If "-f '%{REQUEST_FILENAME}'">
+							SetHandler php-fcgi
+						</If>
 					</FilesMatch>
 				</Directory>
                 Action php-fcgi /php-fcgi virtual
@@ -402,7 +406,9 @@
 			#ProxyPassMatch ^/(.*\.php[345]?(/.*)?)$ fcgi://127.0.0.1:<tmpl_var name='fpm_port'><tmpl_var name='web_document_root'>/$1
 			<Directory {tmpl_var name='web_document_root'}>
 				<FilesMatch "\.php[345]?$">
+					<If "-f '%{REQUEST_FILENAME}'">
 						SetHandler "proxy:fcgi://127.0.0.1:<tmpl_var name='fpm_port'>"
+					</If>
 				</FilesMatch>
 			</Directory>
 </tmpl_if>
@@ -410,7 +416,9 @@
 			#ProxyPassMatch ^/(.*\.php[345]?(/.*)?)$ unix://<tmpl_var name='fpm_socket'>|fcgi://localhost/<tmpl_var name='web_document_root'>/$1
 			<Directory {tmpl_var name='web_document_root'}>
 				<FilesMatch "\.php[345]?$">
+					<If "-f '%{REQUEST_FILENAME}'">
 						SetHandler "proxy:unix:<tmpl_var name='fpm_socket'>|fcgi://localhost"
+					</If>
 				</FilesMatch>
 			</Directory>
 </tmpl_if>
-- 
GitLab


From 57acfd0d27d2e3399c7c377cd1221e2ece13d5bb Mon Sep 17 00:00:00 2001
From: Herman van Rink <rink@initfour.nl>
Date: Fri, 15 May 2020 20:29:09 +0200
Subject: [PATCH 184/242] Translation files should not have exec permission

---
 interface/lib/lang/fi.lng                                         | 0
 interface/web/admin/lib/lang/es.lng                               | 0
 interface/web/admin/lib/lang/es_directive_snippets.lng            | 0
 interface/web/admin/lib/lang/es_directive_snippets_list.lng       | 0
 interface/web/admin/lib/lang/es_firewall.lng                      | 0
 interface/web/admin/lib/lang/es_firewall_list.lng                 | 0
 interface/web/admin/lib/lang/es_groups.lng                        | 0
 interface/web/admin/lib/lang/es_groups_list.lng                   | 0
 interface/web/admin/lib/lang/es_iptables.lng                      | 0
 interface/web/admin/lib/lang/es_iptables_list.lng                 | 0
 interface/web/admin/lib/lang/es_language_add.lng                  | 0
 interface/web/admin/lib/lang/es_language_complete.lng             | 0
 interface/web/admin/lib/lang/es_language_edit.lng                 | 0
 interface/web/admin/lib/lang/es_language_export.lng               | 0
 interface/web/admin/lib/lang/es_language_import.lng               | 0
 interface/web/admin/lib/lang/es_language_list.lng                 | 0
 interface/web/admin/lib/lang/es_package_install.lng               | 0
 interface/web/admin/lib/lang/es_remote_action.lng                 | 0
 interface/web/admin/lib/lang/es_remote_user.lng                   | 0
 interface/web/admin/lib/lang/es_remote_user_list.lng              | 0
 interface/web/admin/lib/lang/es_server.lng                        | 0
 interface/web/admin/lib/lang/es_server_config.lng                 | 0
 interface/web/admin/lib/lang/es_server_config_list.lng            | 0
 interface/web/admin/lib/lang/es_server_ip.lng                     | 0
 interface/web/admin/lib/lang/es_server_ip_list.lng                | 0
 interface/web/admin/lib/lang/es_server_ip_map.lng                 | 0
 interface/web/admin/lib/lang/es_server_ip_map_list.lng            | 0
 interface/web/admin/lib/lang/es_server_list.lng                   | 0
 interface/web/admin/lib/lang/es_server_php.lng                    | 0
 interface/web/admin/lib/lang/es_server_php_list.lng               | 0
 interface/web/admin/lib/lang/es_software_package.lng              | 0
 interface/web/admin/lib/lang/es_software_package_install.lng      | 0
 interface/web/admin/lib/lang/es_software_package_list.lng         | 0
 interface/web/admin/lib/lang/es_software_repo.lng                 | 0
 interface/web/admin/lib/lang/es_software_repo_list.lng            | 0
 interface/web/admin/lib/lang/es_software_update_list.lng          | 0
 interface/web/admin/lib/lang/es_system_config.lng                 | 0
 interface/web/admin/lib/lang/es_tpl_default_admin.lng             | 0
 interface/web/admin/lib/lang/es_users.lng                         | 0
 interface/web/admin/lib/lang/es_users_list.lng                    | 0
 interface/web/admin/lib/lang/fi.lng                               | 0
 interface/web/admin/lib/lang/fi_firewall.lng                      | 0
 interface/web/admin/lib/lang/fi_firewall_list.lng                 | 0
 interface/web/admin/lib/lang/fi_groups.lng                        | 0
 interface/web/admin/lib/lang/fi_groups_list.lng                   | 0
 interface/web/admin/lib/lang/fi_language_add.lng                  | 0
 interface/web/admin/lib/lang/fi_language_complete.lng             | 0
 interface/web/admin/lib/lang/fi_language_edit.lng                 | 0
 interface/web/admin/lib/lang/fi_language_export.lng               | 0
 interface/web/admin/lib/lang/fi_language_import.lng               | 0
 interface/web/admin/lib/lang/fi_language_list.lng                 | 0
 interface/web/admin/lib/lang/fi_server.lng                        | 0
 interface/web/admin/lib/lang/fi_server_config.lng                 | 0
 interface/web/admin/lib/lang/fi_server_config_list.lng            | 0
 interface/web/admin/lib/lang/fi_server_ip.lng                     | 0
 interface/web/admin/lib/lang/fi_server_ip_list.lng                | 0
 interface/web/admin/lib/lang/fi_server_list.lng                   | 0
 interface/web/admin/lib/lang/fi_software_package_list.lng         | 0
 interface/web/admin/lib/lang/fi_software_repo.lng                 | 0
 interface/web/admin/lib/lang/fi_software_repo_list.lng            | 0
 interface/web/admin/lib/lang/fi_software_update_list.lng          | 0
 interface/web/admin/lib/lang/fi_users.lng                         | 0
 interface/web/admin/lib/lang/fi_users_list.lng                    | 0
 interface/web/client/lib/lang/en_resellers_list.lng               | 0
 interface/web/client/lib/lang/es.lng                              | 0
 interface/web/client/lib/lang/es_client.lng                       | 0
 interface/web/client/lib/lang/es_client_circle.lng                | 0
 interface/web/client/lib/lang/es_client_circle_list.lng           | 0
 interface/web/client/lib/lang/es_client_del.lng                   | 0
 interface/web/client/lib/lang/es_client_message.lng               | 0
 interface/web/client/lib/lang/es_client_message_template.lng      | 0
 interface/web/client/lib/lang/es_client_message_template_list.lng | 0
 interface/web/client/lib/lang/es_client_template.lng              | 0
 interface/web/client/lib/lang/es_client_template_list.lng         | 0
 interface/web/client/lib/lang/es_clients_list.lng                 | 0
 interface/web/client/lib/lang/es_domain.lng                       | 0
 interface/web/client/lib/lang/es_domain_list.lng                  | 0
 interface/web/client/lib/lang/es_reseller.lng                     | 0
 interface/web/client/lib/lang/fi.lng                              | 0
 interface/web/client/lib/lang/fi_client.lng                       | 0
 interface/web/client/lib/lang/fi_client_template.lng              | 0
 interface/web/client/lib/lang/fi_client_template_list.lng         | 0
 interface/web/client/lib/lang/fi_clients_list.lng                 | 0
 interface/web/dashboard/lib/lang/es.lng                           | 0
 interface/web/dashboard/lib/lang/es_dashlet_customer.lng          | 0
 .../web/dashboard/lib/lang/es_dashlet_invoice_client_settings.lng | 0
 interface/web/dashboard/lib/lang/es_dashlet_invoices.lng          | 0
 interface/web/dashboard/lib/lang/es_dashlet_limits.lng            | 0
 interface/web/dashboard/lib/lang/es_dashlet_mailquota.lng         | 0
 interface/web/dashboard/lib/lang/es_dashlet_modules.lng           | 0
 interface/web/dashboard/lib/lang/es_dashlet_products.lng          | 0
 interface/web/dashboard/lib/lang/es_dashlet_quota.lng             | 0
 interface/web/dashboard/lib/lang/es_dashlet_shop.lng              | 0
 interface/web/dns/lib/lang/es.lng                                 | 0
 interface/web/dns/lib/lang/es_dns_a.lng                           | 0
 interface/web/dns/lib/lang/es_dns_a_list.lng                      | 0
 interface/web/dns/lib/lang/es_dns_aaaa.lng                        | 0
 interface/web/dns/lib/lang/es_dns_alias.lng                       | 0
 interface/web/dns/lib/lang/es_dns_cname.lng                       | 0
 interface/web/dns/lib/lang/es_dns_dkim.lng                        | 0
 interface/web/dns/lib/lang/es_dns_dmarc.lng                       | 0
 interface/web/dns/lib/lang/es_dns_ds.lng                          | 0
 interface/web/dns/lib/lang/es_dns_hinfo.lng                       | 0
 interface/web/dns/lib/lang/es_dns_import.lng                      | 0
 interface/web/dns/lib/lang/es_dns_loc.lng                         | 0
 interface/web/dns/lib/lang/es_dns_mx.lng                          | 0
 interface/web/dns/lib/lang/es_dns_ns.lng                          | 0
 interface/web/dns/lib/lang/es_dns_ptr.lng                         | 0
 interface/web/dns/lib/lang/es_dns_rp.lng                          | 0
 interface/web/dns/lib/lang/es_dns_slave_admin_list.lng            | 0
 interface/web/dns/lib/lang/es_dns_slave_list.lng                  | 0
 interface/web/dns/lib/lang/es_dns_soa.lng                         | 0
 interface/web/dns/lib/lang/es_dns_soa_admin_list.lng              | 0
 interface/web/dns/lib/lang/es_dns_soa_list.lng                    | 0
 interface/web/dns/lib/lang/es_dns_spf.lng                         | 0
 interface/web/dns/lib/lang/es_dns_srv.lng                         | 0
 interface/web/dns/lib/lang/es_dns_template.lng                    | 0
 interface/web/dns/lib/lang/es_dns_template_list.lng               | 0
 interface/web/dns/lib/lang/es_dns_tlsa.lng                        | 0
 interface/web/dns/lib/lang/es_dns_txt.lng                         | 0
 interface/web/dns/lib/lang/es_dns_wizard.lng                      | 0
 interface/web/dns/lib/lang/fi.lng                                 | 0
 interface/web/dns/lib/lang/fi_dns_a.lng                           | 0
 interface/web/dns/lib/lang/fi_dns_a_list.lng                      | 0
 interface/web/dns/lib/lang/fi_dns_alias.lng                       | 0
 interface/web/dns/lib/lang/fi_dns_cname.lng                       | 0
 interface/web/dns/lib/lang/fi_dns_hinfo.lng                       | 0
 interface/web/dns/lib/lang/fi_dns_mx.lng                          | 0
 interface/web/dns/lib/lang/fi_dns_ns.lng                          | 0
 interface/web/dns/lib/lang/fi_dns_ptr.lng                         | 0
 interface/web/dns/lib/lang/fi_dns_rp.lng                          | 0
 interface/web/dns/lib/lang/fi_dns_soa.lng                         | 0
 interface/web/dns/lib/lang/fi_dns_soa_list.lng                    | 0
 interface/web/dns/lib/lang/fi_dns_srv.lng                         | 0
 interface/web/dns/lib/lang/fi_dns_template.lng                    | 0
 interface/web/dns/lib/lang/fi_dns_template_list.lng               | 0
 interface/web/dns/lib/lang/fi_dns_txt.lng                         | 0
 interface/web/dns/lib/lang/fi_dns_wizard.lng                      | 0
 interface/web/help/lib/lang/es.lng                                | 0
 interface/web/help/lib/lang/es_faq_form.lng                       | 0
 interface/web/help/lib/lang/es_faq_manage_questions_list.lng      | 0
 interface/web/help/lib/lang/es_faq_sections_form.lng              | 0
 interface/web/help/lib/lang/es_help_faq_list.lng                  | 0
 interface/web/help/lib/lang/es_help_faq_sections_list.lng         | 0
 interface/web/help/lib/lang/es_support_message.lng                | 0
 interface/web/help/lib/lang/es_support_message_list.lng           | 0
 interface/web/help/lib/lang/fi.lng                                | 0
 interface/web/help/lib/lang/fi_support_message.lng                | 0
 interface/web/help/lib/lang/fi_support_message_list.lng           | 0
 interface/web/login/lib/lang/es.lng                               | 0
 interface/web/login/lib/lang/es_login_as.lng                      | 0
 interface/web/login/lib/lang/fi.lng                               | 0
 interface/web/mail/lib/lang/ar_user_quota_stats_list.lng          | 0
 interface/web/mail/lib/lang/bg_user_quota_stats_list.lng          | 0
 interface/web/mail/lib/lang/br_user_quota_stats_list.lng          | 0
 interface/web/mail/lib/lang/cz_user_quota_stats_list.lng          | 0
 interface/web/mail/lib/lang/de_user_quota_stats_list.lng          | 0
 interface/web/mail/lib/lang/el_user_quota_stats_list.lng          | 0
 interface/web/mail/lib/lang/en_user_quota_stats_list.lng          | 0
 interface/web/mail/lib/lang/es.lng                                | 0
 interface/web/mail/lib/lang/es_backup_stats_list.lng              | 0
 interface/web/mail/lib/lang/es_mail_alias.lng                     | 0
 interface/web/mail/lib/lang/es_mail_alias_list.lng                | 0
 interface/web/mail/lib/lang/es_mail_aliasdomain.lng               | 0
 interface/web/mail/lib/lang/es_mail_aliasdomain_list.lng          | 0
 interface/web/mail/lib/lang/es_mail_backup_list.lng               | 0
 interface/web/mail/lib/lang/es_mail_blacklist.lng                 | 0
 interface/web/mail/lib/lang/es_mail_blacklist_list.lng            | 0
 interface/web/mail/lib/lang/es_mail_content_filter.lng            | 0
 interface/web/mail/lib/lang/es_mail_content_filter_list.lng       | 0
 interface/web/mail/lib/lang/es_mail_domain.lng                    | 0
 interface/web/mail/lib/lang/es_mail_domain_admin_list.lng         | 0
 interface/web/mail/lib/lang/es_mail_domain_catchall.lng           | 0
 interface/web/mail/lib/lang/es_mail_domain_catchall_list.lng      | 0
 interface/web/mail/lib/lang/es_mail_domain_list.lng               | 0
 interface/web/mail/lib/lang/es_mail_forward.lng                   | 0
 interface/web/mail/lib/lang/es_mail_forward_list.lng              | 0
 interface/web/mail/lib/lang/es_mail_get.lng                       | 0
 interface/web/mail/lib/lang/es_mail_get_list.lng                  | 0
 interface/web/mail/lib/lang/es_mail_mailinglist.lng               | 0
 interface/web/mail/lib/lang/es_mail_mailinglist_list.lng          | 0
 interface/web/mail/lib/lang/es_mail_relay_recipient.lng           | 0
 interface/web/mail/lib/lang/es_mail_relay_recipient_list.lng      | 0
 interface/web/mail/lib/lang/es_mail_spamfilter.lng                | 0
 interface/web/mail/lib/lang/es_mail_spamfilter_list.lng           | 0
 interface/web/mail/lib/lang/es_mail_transport.lng                 | 0
 interface/web/mail/lib/lang/es_mail_transport_list.lng            | 0
 interface/web/mail/lib/lang/es_mail_user.lng                      | 0
 interface/web/mail/lib/lang/es_mail_user_filter.lng               | 0
 interface/web/mail/lib/lang/es_mail_user_filter_list.lng          | 0
 interface/web/mail/lib/lang/es_mail_user_list.lng                 | 0
 interface/web/mail/lib/lang/es_mail_user_stats_list.lng           | 0
 interface/web/mail/lib/lang/es_mail_whitelist_list.lng            | 0
 interface/web/mail/lib/lang/es_spamfilter_blacklist.lng           | 0
 interface/web/mail/lib/lang/es_spamfilter_blacklist_list.lng      | 0
 interface/web/mail/lib/lang/es_spamfilter_config.lng              | 0
 interface/web/mail/lib/lang/es_spamfilter_config_list.lng         | 0
 interface/web/mail/lib/lang/es_spamfilter_policy.lng              | 0
 interface/web/mail/lib/lang/es_spamfilter_policy_list.lng         | 0
 interface/web/mail/lib/lang/es_spamfilter_users.lng               | 0
 interface/web/mail/lib/lang/es_spamfilter_users_list.lng          | 0
 interface/web/mail/lib/lang/es_spamfilter_whitelist.lng           | 0
 interface/web/mail/lib/lang/es_spamfilter_whitelist_list.lng      | 0
 interface/web/mail/lib/lang/es_user_quota_stats_list.lng          | 0
 interface/web/mail/lib/lang/es_xmpp_domain.lng                    | 0
 interface/web/mail/lib/lang/es_xmpp_domain_admin_list.lng         | 0
 interface/web/mail/lib/lang/es_xmpp_domain_list.lng               | 0
 interface/web/mail/lib/lang/es_xmpp_user.lng                      | 0
 interface/web/mail/lib/lang/es_xmpp_user_list.lng                 | 0
 interface/web/mail/lib/lang/fi.lng                                | 0
 interface/web/mail/lib/lang/fi_mail_alias.lng                     | 0
 interface/web/mail/lib/lang/fi_mail_alias_list.lng                | 0
 interface/web/mail/lib/lang/fi_mail_blacklist.lng                 | 0
 interface/web/mail/lib/lang/fi_mail_blacklist_list.lng            | 0
 interface/web/mail/lib/lang/fi_mail_content_filter.lng            | 0
 interface/web/mail/lib/lang/fi_mail_content_filter_list.lng       | 0
 interface/web/mail/lib/lang/fi_mail_domain.lng                    | 0
 interface/web/mail/lib/lang/fi_mail_domain_catchall.lng           | 0
 interface/web/mail/lib/lang/fi_mail_domain_catchall_list.lng      | 0
 interface/web/mail/lib/lang/fi_mail_domain_list.lng               | 0
 interface/web/mail/lib/lang/fi_mail_forward.lng                   | 0
 interface/web/mail/lib/lang/fi_mail_forward_list.lng              | 0
 interface/web/mail/lib/lang/fi_mail_get.lng                       | 0
 interface/web/mail/lib/lang/fi_mail_get_list.lng                  | 0
 interface/web/mail/lib/lang/fi_mail_spamfilter.lng                | 0
 interface/web/mail/lib/lang/fi_mail_spamfilter_list.lng           | 0
 interface/web/mail/lib/lang/fi_mail_transport.lng                 | 0
 interface/web/mail/lib/lang/fi_mail_transport_list.lng            | 0
 interface/web/mail/lib/lang/fi_mail_user.lng                      | 0
 interface/web/mail/lib/lang/fi_mail_user_filter.lng               | 0
 interface/web/mail/lib/lang/fi_mail_user_filter_list.lng          | 0
 interface/web/mail/lib/lang/fi_mail_user_list.lng                 | 0
 interface/web/mail/lib/lang/fi_mail_user_stats_list.lng           | 0
 interface/web/mail/lib/lang/fi_mail_whitelist.lng                 | 0
 interface/web/mail/lib/lang/fi_mail_whitelist_list.lng            | 0
 interface/web/mail/lib/lang/fi_spamfilter_blacklist.lng           | 0
 interface/web/mail/lib/lang/fi_spamfilter_blacklist_list.lng      | 0
 interface/web/mail/lib/lang/fi_spamfilter_config.lng              | 0
 interface/web/mail/lib/lang/fi_spamfilter_config_list.lng         | 0
 interface/web/mail/lib/lang/fi_spamfilter_policy.lng              | 0
 interface/web/mail/lib/lang/fi_spamfilter_policy_list.lng         | 0
 interface/web/mail/lib/lang/fi_spamfilter_users.lng               | 0
 interface/web/mail/lib/lang/fi_spamfilter_users_list.lng          | 0
 interface/web/mail/lib/lang/fi_spamfilter_whitelist.lng           | 0
 interface/web/mail/lib/lang/fi_spamfilter_whitelist_list.lng      | 0
 interface/web/mail/lib/lang/fi_user_quota_stats_list.lng          | 0
 interface/web/mail/lib/lang/fr_user_quota_stats_list.lng          | 0
 interface/web/mail/lib/lang/hu_user_quota_stats_list.lng          | 0
 interface/web/mail/lib/lang/id_user_quota_stats_list.lng          | 0
 interface/web/mail/lib/lang/it_user_quota_stats_list.lng          | 0
 interface/web/mail/lib/lang/ja_user_quota_stats_list.lng          | 0
 interface/web/mail/lib/lang/nl_user_quota_stats_list.lng          | 0
 interface/web/mail/lib/lang/pl_user_quota_stats_list.lng          | 0
 interface/web/mail/lib/lang/pt_user_quota_stats_list.lng          | 0
 interface/web/mail/lib/lang/ro_user_quota_stats_list.lng          | 0
 interface/web/mail/lib/lang/ru_user_quota_stats_list.lng          | 0
 interface/web/mail/lib/lang/se_user_quota_stats_list.lng          | 0
 interface/web/mail/lib/lang/sk_user_quota_stats_list.lng          | 0
 interface/web/mail/lib/lang/tr_user_quota_stats_list.lng          | 0
 interface/web/mailuser/lib/lang/es.lng                            | 0
 interface/web/mailuser/lib/lang/es_index.lng                      | 0
 interface/web/mailuser/lib/lang/es_mail_user_autoresponder.lng    | 0
 interface/web/mailuser/lib/lang/es_mail_user_cc.lng               | 0
 interface/web/mailuser/lib/lang/es_mail_user_filter.lng           | 0
 interface/web/mailuser/lib/lang/es_mail_user_filter_list.lng      | 0
 interface/web/mailuser/lib/lang/es_mail_user_password.lng         | 0
 interface/web/mailuser/lib/lang/es_mail_user_spamfilter.lng       | 0
 interface/web/monitor/lib/lang/es.lng                             | 0
 interface/web/monitor/lib/lang/es_datalog_list.lng                | 0
 interface/web/monitor/lib/lang/es_syslog_list.lng                 | 0
 interface/web/monitor/lib/lang/fi.lng                             | 0
 interface/web/monitor/lib/lang/fi_datalog_list.lng                | 0
 interface/web/monitor/lib/lang/fi_syslog_list.lng                 | 0
 interface/web/sites/lib/lang/es.lng                               | 0
 interface/web/sites/lib/lang/es_aps.lng                           | 0
 interface/web/sites/lib/lang/es_aps_instances_list.lng            | 0
 interface/web/sites/lib/lang/es_aps_packages_list.lng             | 0
 interface/web/sites/lib/lang/es_aps_update_packagelist.lng        | 0
 interface/web/sites/lib/lang/es_backup_stats_list.lng             | 0
 interface/web/sites/lib/lang/es_cron.lng                          | 0
 interface/web/sites/lib/lang/es_cron_list.lng                     | 0
 interface/web/sites/lib/lang/es_database.lng                      | 0
 interface/web/sites/lib/lang/fi.lng                               | 0
 interface/web/sites/lib/lang/fi_database.lng                      | 0
 interface/web/sites/lib/lang/fi_database_list.lng                 | 0
 interface/web/sites/lib/lang/fi_ftp_user.lng                      | 0
 interface/web/sites/lib/lang/fi_ftp_user_list.lng                 | 0
 interface/web/sites/lib/lang/fi_shell_user.lng                    | 0
 interface/web/sites/lib/lang/fi_shell_user_list.lng               | 0
 interface/web/sites/lib/lang/fi_web_childdomain.lng               | 0
 interface/web/sites/lib/lang/fi_web_childdomain_list.lng          | 0
 interface/web/sites/lib/lang/fi_web_sites_stats_list.lng          | 0
 interface/web/sites/lib/lang/fi_web_vhost_domain_list.lng         | 0
 interface/web/strengthmeter/lib/lang/bg_strengthmeter.lng         | 0
 interface/web/strengthmeter/lib/lang/fi_strengthmeter.lng         | 0
 interface/web/tools/lib/lang/fi.lng                               | 0
 interface/web/tools/lib/lang/fi_usersettings.lng                  | 0
 297 files changed, 0 insertions(+), 0 deletions(-)
 mode change 100755 => 100644 interface/lib/lang/fi.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/es.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/es_directive_snippets.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/es_directive_snippets_list.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/es_firewall.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/es_firewall_list.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/es_groups.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/es_groups_list.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/es_iptables.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/es_iptables_list.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/es_language_add.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/es_language_complete.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/es_language_edit.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/es_language_export.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/es_language_import.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/es_language_list.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/es_package_install.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/es_remote_action.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/es_remote_user.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/es_remote_user_list.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/es_server.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/es_server_config.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/es_server_config_list.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/es_server_ip.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/es_server_ip_list.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/es_server_ip_map.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/es_server_ip_map_list.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/es_server_list.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/es_server_php.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/es_server_php_list.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/es_software_package.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/es_software_package_install.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/es_software_package_list.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/es_software_repo.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/es_software_repo_list.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/es_software_update_list.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/es_system_config.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/es_tpl_default_admin.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/es_users.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/es_users_list.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/fi.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/fi_firewall.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/fi_firewall_list.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/fi_groups.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/fi_groups_list.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/fi_language_add.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/fi_language_complete.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/fi_language_edit.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/fi_language_export.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/fi_language_import.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/fi_language_list.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/fi_server.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/fi_server_config.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/fi_server_config_list.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/fi_server_ip.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/fi_server_ip_list.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/fi_server_list.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/fi_software_package_list.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/fi_software_repo.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/fi_software_repo_list.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/fi_software_update_list.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/fi_users.lng
 mode change 100755 => 100644 interface/web/admin/lib/lang/fi_users_list.lng
 mode change 100755 => 100644 interface/web/client/lib/lang/en_resellers_list.lng
 mode change 100755 => 100644 interface/web/client/lib/lang/es.lng
 mode change 100755 => 100644 interface/web/client/lib/lang/es_client.lng
 mode change 100755 => 100644 interface/web/client/lib/lang/es_client_circle.lng
 mode change 100755 => 100644 interface/web/client/lib/lang/es_client_circle_list.lng
 mode change 100755 => 100644 interface/web/client/lib/lang/es_client_del.lng
 mode change 100755 => 100644 interface/web/client/lib/lang/es_client_message.lng
 mode change 100755 => 100644 interface/web/client/lib/lang/es_client_message_template.lng
 mode change 100755 => 100644 interface/web/client/lib/lang/es_client_message_template_list.lng
 mode change 100755 => 100644 interface/web/client/lib/lang/es_client_template.lng
 mode change 100755 => 100644 interface/web/client/lib/lang/es_client_template_list.lng
 mode change 100755 => 100644 interface/web/client/lib/lang/es_clients_list.lng
 mode change 100755 => 100644 interface/web/client/lib/lang/es_domain.lng
 mode change 100755 => 100644 interface/web/client/lib/lang/es_domain_list.lng
 mode change 100755 => 100644 interface/web/client/lib/lang/es_reseller.lng
 mode change 100755 => 100644 interface/web/client/lib/lang/fi.lng
 mode change 100755 => 100644 interface/web/client/lib/lang/fi_client.lng
 mode change 100755 => 100644 interface/web/client/lib/lang/fi_client_template.lng
 mode change 100755 => 100644 interface/web/client/lib/lang/fi_client_template_list.lng
 mode change 100755 => 100644 interface/web/client/lib/lang/fi_clients_list.lng
 mode change 100755 => 100644 interface/web/dashboard/lib/lang/es.lng
 mode change 100755 => 100644 interface/web/dashboard/lib/lang/es_dashlet_customer.lng
 mode change 100755 => 100644 interface/web/dashboard/lib/lang/es_dashlet_invoice_client_settings.lng
 mode change 100755 => 100644 interface/web/dashboard/lib/lang/es_dashlet_invoices.lng
 mode change 100755 => 100644 interface/web/dashboard/lib/lang/es_dashlet_limits.lng
 mode change 100755 => 100644 interface/web/dashboard/lib/lang/es_dashlet_mailquota.lng
 mode change 100755 => 100644 interface/web/dashboard/lib/lang/es_dashlet_modules.lng
 mode change 100755 => 100644 interface/web/dashboard/lib/lang/es_dashlet_products.lng
 mode change 100755 => 100644 interface/web/dashboard/lib/lang/es_dashlet_quota.lng
 mode change 100755 => 100644 interface/web/dashboard/lib/lang/es_dashlet_shop.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/es.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_a.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_a_list.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_aaaa.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_alias.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_cname.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_dkim.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_dmarc.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_ds.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_hinfo.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_import.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_loc.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_mx.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_ns.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_ptr.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_rp.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_slave_admin_list.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_slave_list.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_soa.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_soa_admin_list.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_soa_list.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_spf.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_srv.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_template.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_template_list.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_tlsa.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_txt.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_wizard.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/fi.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/fi_dns_a.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/fi_dns_a_list.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/fi_dns_alias.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/fi_dns_cname.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/fi_dns_hinfo.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/fi_dns_mx.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/fi_dns_ns.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/fi_dns_ptr.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/fi_dns_rp.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/fi_dns_soa.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/fi_dns_soa_list.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/fi_dns_srv.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/fi_dns_template.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/fi_dns_template_list.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/fi_dns_txt.lng
 mode change 100755 => 100644 interface/web/dns/lib/lang/fi_dns_wizard.lng
 mode change 100755 => 100644 interface/web/help/lib/lang/es.lng
 mode change 100755 => 100644 interface/web/help/lib/lang/es_faq_form.lng
 mode change 100755 => 100644 interface/web/help/lib/lang/es_faq_manage_questions_list.lng
 mode change 100755 => 100644 interface/web/help/lib/lang/es_faq_sections_form.lng
 mode change 100755 => 100644 interface/web/help/lib/lang/es_help_faq_list.lng
 mode change 100755 => 100644 interface/web/help/lib/lang/es_help_faq_sections_list.lng
 mode change 100755 => 100644 interface/web/help/lib/lang/es_support_message.lng
 mode change 100755 => 100644 interface/web/help/lib/lang/es_support_message_list.lng
 mode change 100755 => 100644 interface/web/help/lib/lang/fi.lng
 mode change 100755 => 100644 interface/web/help/lib/lang/fi_support_message.lng
 mode change 100755 => 100644 interface/web/help/lib/lang/fi_support_message_list.lng
 mode change 100755 => 100644 interface/web/login/lib/lang/es.lng
 mode change 100755 => 100644 interface/web/login/lib/lang/es_login_as.lng
 mode change 100755 => 100644 interface/web/login/lib/lang/fi.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/ar_user_quota_stats_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/bg_user_quota_stats_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/br_user_quota_stats_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/cz_user_quota_stats_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/de_user_quota_stats_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/el_user_quota_stats_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/en_user_quota_stats_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_backup_stats_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_alias.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_alias_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_aliasdomain.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_aliasdomain_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_backup_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_blacklist.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_blacklist_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_content_filter.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_content_filter_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_domain.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_domain_admin_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_domain_catchall.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_domain_catchall_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_domain_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_forward.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_forward_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_get.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_get_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_mailinglist.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_mailinglist_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_relay_recipient.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_relay_recipient_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_spamfilter.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_spamfilter_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_transport.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_transport_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_user.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_user_filter.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_user_filter_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_user_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_user_stats_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_whitelist_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_spamfilter_blacklist.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_spamfilter_blacklist_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_spamfilter_config.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_spamfilter_config_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_spamfilter_policy.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_spamfilter_policy_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_spamfilter_users.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_spamfilter_users_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_spamfilter_whitelist.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_spamfilter_whitelist_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_user_quota_stats_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_xmpp_domain.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_xmpp_domain_admin_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_xmpp_domain_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_xmpp_user.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/es_xmpp_user_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/fi.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_alias.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_alias_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_blacklist.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_blacklist_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_content_filter.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_content_filter_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_domain.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_domain_catchall.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_domain_catchall_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_domain_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_forward.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_forward_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_get.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_get_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_spamfilter.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_spamfilter_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_transport.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_transport_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_user.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_user_filter.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_user_filter_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_user_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_user_stats_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_whitelist.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_whitelist_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/fi_spamfilter_blacklist.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/fi_spamfilter_blacklist_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/fi_spamfilter_config.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/fi_spamfilter_config_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/fi_spamfilter_policy.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/fi_spamfilter_policy_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/fi_spamfilter_users.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/fi_spamfilter_users_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/fi_spamfilter_whitelist.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/fi_spamfilter_whitelist_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/fi_user_quota_stats_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/fr_user_quota_stats_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/hu_user_quota_stats_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/id_user_quota_stats_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/it_user_quota_stats_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/ja_user_quota_stats_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/nl_user_quota_stats_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/pl_user_quota_stats_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/pt_user_quota_stats_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/ro_user_quota_stats_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/ru_user_quota_stats_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/se_user_quota_stats_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/sk_user_quota_stats_list.lng
 mode change 100755 => 100644 interface/web/mail/lib/lang/tr_user_quota_stats_list.lng
 mode change 100755 => 100644 interface/web/mailuser/lib/lang/es.lng
 mode change 100755 => 100644 interface/web/mailuser/lib/lang/es_index.lng
 mode change 100755 => 100644 interface/web/mailuser/lib/lang/es_mail_user_autoresponder.lng
 mode change 100755 => 100644 interface/web/mailuser/lib/lang/es_mail_user_cc.lng
 mode change 100755 => 100644 interface/web/mailuser/lib/lang/es_mail_user_filter.lng
 mode change 100755 => 100644 interface/web/mailuser/lib/lang/es_mail_user_filter_list.lng
 mode change 100755 => 100644 interface/web/mailuser/lib/lang/es_mail_user_password.lng
 mode change 100755 => 100644 interface/web/mailuser/lib/lang/es_mail_user_spamfilter.lng
 mode change 100755 => 100644 interface/web/monitor/lib/lang/es.lng
 mode change 100755 => 100644 interface/web/monitor/lib/lang/es_datalog_list.lng
 mode change 100755 => 100644 interface/web/monitor/lib/lang/es_syslog_list.lng
 mode change 100755 => 100644 interface/web/monitor/lib/lang/fi.lng
 mode change 100755 => 100644 interface/web/monitor/lib/lang/fi_datalog_list.lng
 mode change 100755 => 100644 interface/web/monitor/lib/lang/fi_syslog_list.lng
 mode change 100755 => 100644 interface/web/sites/lib/lang/es.lng
 mode change 100755 => 100644 interface/web/sites/lib/lang/es_aps.lng
 mode change 100755 => 100644 interface/web/sites/lib/lang/es_aps_instances_list.lng
 mode change 100755 => 100644 interface/web/sites/lib/lang/es_aps_packages_list.lng
 mode change 100755 => 100644 interface/web/sites/lib/lang/es_aps_update_packagelist.lng
 mode change 100755 => 100644 interface/web/sites/lib/lang/es_backup_stats_list.lng
 mode change 100755 => 100644 interface/web/sites/lib/lang/es_cron.lng
 mode change 100755 => 100644 interface/web/sites/lib/lang/es_cron_list.lng
 mode change 100755 => 100644 interface/web/sites/lib/lang/es_database.lng
 mode change 100755 => 100644 interface/web/sites/lib/lang/fi.lng
 mode change 100755 => 100644 interface/web/sites/lib/lang/fi_database.lng
 mode change 100755 => 100644 interface/web/sites/lib/lang/fi_database_list.lng
 mode change 100755 => 100644 interface/web/sites/lib/lang/fi_ftp_user.lng
 mode change 100755 => 100644 interface/web/sites/lib/lang/fi_ftp_user_list.lng
 mode change 100755 => 100644 interface/web/sites/lib/lang/fi_shell_user.lng
 mode change 100755 => 100644 interface/web/sites/lib/lang/fi_shell_user_list.lng
 mode change 100755 => 100644 interface/web/sites/lib/lang/fi_web_childdomain.lng
 mode change 100755 => 100644 interface/web/sites/lib/lang/fi_web_childdomain_list.lng
 mode change 100755 => 100644 interface/web/sites/lib/lang/fi_web_sites_stats_list.lng
 mode change 100755 => 100644 interface/web/sites/lib/lang/fi_web_vhost_domain_list.lng
 mode change 100755 => 100644 interface/web/strengthmeter/lib/lang/bg_strengthmeter.lng
 mode change 100755 => 100644 interface/web/strengthmeter/lib/lang/fi_strengthmeter.lng
 mode change 100755 => 100644 interface/web/tools/lib/lang/fi.lng
 mode change 100755 => 100644 interface/web/tools/lib/lang/fi_usersettings.lng

diff --git a/interface/lib/lang/fi.lng b/interface/lib/lang/fi.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/es.lng b/interface/web/admin/lib/lang/es.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/es_directive_snippets.lng b/interface/web/admin/lib/lang/es_directive_snippets.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/es_directive_snippets_list.lng b/interface/web/admin/lib/lang/es_directive_snippets_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/es_firewall.lng b/interface/web/admin/lib/lang/es_firewall.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/es_firewall_list.lng b/interface/web/admin/lib/lang/es_firewall_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/es_groups.lng b/interface/web/admin/lib/lang/es_groups.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/es_groups_list.lng b/interface/web/admin/lib/lang/es_groups_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/es_iptables.lng b/interface/web/admin/lib/lang/es_iptables.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/es_iptables_list.lng b/interface/web/admin/lib/lang/es_iptables_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/es_language_add.lng b/interface/web/admin/lib/lang/es_language_add.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/es_language_complete.lng b/interface/web/admin/lib/lang/es_language_complete.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/es_language_edit.lng b/interface/web/admin/lib/lang/es_language_edit.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/es_language_export.lng b/interface/web/admin/lib/lang/es_language_export.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/es_language_import.lng b/interface/web/admin/lib/lang/es_language_import.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/es_language_list.lng b/interface/web/admin/lib/lang/es_language_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/es_package_install.lng b/interface/web/admin/lib/lang/es_package_install.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/es_remote_action.lng b/interface/web/admin/lib/lang/es_remote_action.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/es_remote_user.lng b/interface/web/admin/lib/lang/es_remote_user.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/es_remote_user_list.lng b/interface/web/admin/lib/lang/es_remote_user_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/es_server.lng b/interface/web/admin/lib/lang/es_server.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/es_server_config.lng b/interface/web/admin/lib/lang/es_server_config.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/es_server_config_list.lng b/interface/web/admin/lib/lang/es_server_config_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/es_server_ip.lng b/interface/web/admin/lib/lang/es_server_ip.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/es_server_ip_list.lng b/interface/web/admin/lib/lang/es_server_ip_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/es_server_ip_map.lng b/interface/web/admin/lib/lang/es_server_ip_map.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/es_server_ip_map_list.lng b/interface/web/admin/lib/lang/es_server_ip_map_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/es_server_list.lng b/interface/web/admin/lib/lang/es_server_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/es_server_php.lng b/interface/web/admin/lib/lang/es_server_php.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/es_server_php_list.lng b/interface/web/admin/lib/lang/es_server_php_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/es_software_package.lng b/interface/web/admin/lib/lang/es_software_package.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/es_software_package_install.lng b/interface/web/admin/lib/lang/es_software_package_install.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/es_software_package_list.lng b/interface/web/admin/lib/lang/es_software_package_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/es_software_repo.lng b/interface/web/admin/lib/lang/es_software_repo.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/es_software_repo_list.lng b/interface/web/admin/lib/lang/es_software_repo_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/es_software_update_list.lng b/interface/web/admin/lib/lang/es_software_update_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/es_system_config.lng b/interface/web/admin/lib/lang/es_system_config.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/es_tpl_default_admin.lng b/interface/web/admin/lib/lang/es_tpl_default_admin.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/es_users.lng b/interface/web/admin/lib/lang/es_users.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/es_users_list.lng b/interface/web/admin/lib/lang/es_users_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/fi.lng b/interface/web/admin/lib/lang/fi.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/fi_firewall.lng b/interface/web/admin/lib/lang/fi_firewall.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/fi_firewall_list.lng b/interface/web/admin/lib/lang/fi_firewall_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/fi_groups.lng b/interface/web/admin/lib/lang/fi_groups.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/fi_groups_list.lng b/interface/web/admin/lib/lang/fi_groups_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/fi_language_add.lng b/interface/web/admin/lib/lang/fi_language_add.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/fi_language_complete.lng b/interface/web/admin/lib/lang/fi_language_complete.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/fi_language_edit.lng b/interface/web/admin/lib/lang/fi_language_edit.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/fi_language_export.lng b/interface/web/admin/lib/lang/fi_language_export.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/fi_language_import.lng b/interface/web/admin/lib/lang/fi_language_import.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/fi_language_list.lng b/interface/web/admin/lib/lang/fi_language_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/fi_server.lng b/interface/web/admin/lib/lang/fi_server.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/fi_server_config.lng b/interface/web/admin/lib/lang/fi_server_config.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/fi_server_config_list.lng b/interface/web/admin/lib/lang/fi_server_config_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/fi_server_ip.lng b/interface/web/admin/lib/lang/fi_server_ip.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/fi_server_ip_list.lng b/interface/web/admin/lib/lang/fi_server_ip_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/fi_server_list.lng b/interface/web/admin/lib/lang/fi_server_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/fi_software_package_list.lng b/interface/web/admin/lib/lang/fi_software_package_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/fi_software_repo.lng b/interface/web/admin/lib/lang/fi_software_repo.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/fi_software_repo_list.lng b/interface/web/admin/lib/lang/fi_software_repo_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/fi_software_update_list.lng b/interface/web/admin/lib/lang/fi_software_update_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/fi_users.lng b/interface/web/admin/lib/lang/fi_users.lng
old mode 100755
new mode 100644
diff --git a/interface/web/admin/lib/lang/fi_users_list.lng b/interface/web/admin/lib/lang/fi_users_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/client/lib/lang/en_resellers_list.lng b/interface/web/client/lib/lang/en_resellers_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/client/lib/lang/es.lng b/interface/web/client/lib/lang/es.lng
old mode 100755
new mode 100644
diff --git a/interface/web/client/lib/lang/es_client.lng b/interface/web/client/lib/lang/es_client.lng
old mode 100755
new mode 100644
diff --git a/interface/web/client/lib/lang/es_client_circle.lng b/interface/web/client/lib/lang/es_client_circle.lng
old mode 100755
new mode 100644
diff --git a/interface/web/client/lib/lang/es_client_circle_list.lng b/interface/web/client/lib/lang/es_client_circle_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/client/lib/lang/es_client_del.lng b/interface/web/client/lib/lang/es_client_del.lng
old mode 100755
new mode 100644
diff --git a/interface/web/client/lib/lang/es_client_message.lng b/interface/web/client/lib/lang/es_client_message.lng
old mode 100755
new mode 100644
diff --git a/interface/web/client/lib/lang/es_client_message_template.lng b/interface/web/client/lib/lang/es_client_message_template.lng
old mode 100755
new mode 100644
diff --git a/interface/web/client/lib/lang/es_client_message_template_list.lng b/interface/web/client/lib/lang/es_client_message_template_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/client/lib/lang/es_client_template.lng b/interface/web/client/lib/lang/es_client_template.lng
old mode 100755
new mode 100644
diff --git a/interface/web/client/lib/lang/es_client_template_list.lng b/interface/web/client/lib/lang/es_client_template_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/client/lib/lang/es_clients_list.lng b/interface/web/client/lib/lang/es_clients_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/client/lib/lang/es_domain.lng b/interface/web/client/lib/lang/es_domain.lng
old mode 100755
new mode 100644
diff --git a/interface/web/client/lib/lang/es_domain_list.lng b/interface/web/client/lib/lang/es_domain_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/client/lib/lang/es_reseller.lng b/interface/web/client/lib/lang/es_reseller.lng
old mode 100755
new mode 100644
diff --git a/interface/web/client/lib/lang/fi.lng b/interface/web/client/lib/lang/fi.lng
old mode 100755
new mode 100644
diff --git a/interface/web/client/lib/lang/fi_client.lng b/interface/web/client/lib/lang/fi_client.lng
old mode 100755
new mode 100644
diff --git a/interface/web/client/lib/lang/fi_client_template.lng b/interface/web/client/lib/lang/fi_client_template.lng
old mode 100755
new mode 100644
diff --git a/interface/web/client/lib/lang/fi_client_template_list.lng b/interface/web/client/lib/lang/fi_client_template_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/client/lib/lang/fi_clients_list.lng b/interface/web/client/lib/lang/fi_clients_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dashboard/lib/lang/es.lng b/interface/web/dashboard/lib/lang/es.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dashboard/lib/lang/es_dashlet_customer.lng b/interface/web/dashboard/lib/lang/es_dashlet_customer.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dashboard/lib/lang/es_dashlet_invoice_client_settings.lng b/interface/web/dashboard/lib/lang/es_dashlet_invoice_client_settings.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dashboard/lib/lang/es_dashlet_invoices.lng b/interface/web/dashboard/lib/lang/es_dashlet_invoices.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dashboard/lib/lang/es_dashlet_limits.lng b/interface/web/dashboard/lib/lang/es_dashlet_limits.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dashboard/lib/lang/es_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/es_dashlet_mailquota.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dashboard/lib/lang/es_dashlet_modules.lng b/interface/web/dashboard/lib/lang/es_dashlet_modules.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dashboard/lib/lang/es_dashlet_products.lng b/interface/web/dashboard/lib/lang/es_dashlet_products.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dashboard/lib/lang/es_dashlet_quota.lng b/interface/web/dashboard/lib/lang/es_dashlet_quota.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dashboard/lib/lang/es_dashlet_shop.lng b/interface/web/dashboard/lib/lang/es_dashlet_shop.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/es.lng b/interface/web/dns/lib/lang/es.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/es_dns_a.lng b/interface/web/dns/lib/lang/es_dns_a.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/es_dns_a_list.lng b/interface/web/dns/lib/lang/es_dns_a_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/es_dns_aaaa.lng b/interface/web/dns/lib/lang/es_dns_aaaa.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/es_dns_alias.lng b/interface/web/dns/lib/lang/es_dns_alias.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/es_dns_cname.lng b/interface/web/dns/lib/lang/es_dns_cname.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/es_dns_dkim.lng b/interface/web/dns/lib/lang/es_dns_dkim.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/es_dns_dmarc.lng b/interface/web/dns/lib/lang/es_dns_dmarc.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/es_dns_ds.lng b/interface/web/dns/lib/lang/es_dns_ds.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/es_dns_hinfo.lng b/interface/web/dns/lib/lang/es_dns_hinfo.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/es_dns_import.lng b/interface/web/dns/lib/lang/es_dns_import.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/es_dns_loc.lng b/interface/web/dns/lib/lang/es_dns_loc.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/es_dns_mx.lng b/interface/web/dns/lib/lang/es_dns_mx.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/es_dns_ns.lng b/interface/web/dns/lib/lang/es_dns_ns.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/es_dns_ptr.lng b/interface/web/dns/lib/lang/es_dns_ptr.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/es_dns_rp.lng b/interface/web/dns/lib/lang/es_dns_rp.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/es_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/es_dns_slave_admin_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/es_dns_slave_list.lng b/interface/web/dns/lib/lang/es_dns_slave_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/es_dns_soa.lng b/interface/web/dns/lib/lang/es_dns_soa.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/es_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/es_dns_soa_admin_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/es_dns_soa_list.lng b/interface/web/dns/lib/lang/es_dns_soa_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/es_dns_spf.lng b/interface/web/dns/lib/lang/es_dns_spf.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/es_dns_srv.lng b/interface/web/dns/lib/lang/es_dns_srv.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/es_dns_template.lng b/interface/web/dns/lib/lang/es_dns_template.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/es_dns_template_list.lng b/interface/web/dns/lib/lang/es_dns_template_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/es_dns_tlsa.lng b/interface/web/dns/lib/lang/es_dns_tlsa.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/es_dns_txt.lng b/interface/web/dns/lib/lang/es_dns_txt.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/es_dns_wizard.lng b/interface/web/dns/lib/lang/es_dns_wizard.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/fi.lng b/interface/web/dns/lib/lang/fi.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/fi_dns_a.lng b/interface/web/dns/lib/lang/fi_dns_a.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/fi_dns_a_list.lng b/interface/web/dns/lib/lang/fi_dns_a_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/fi_dns_alias.lng b/interface/web/dns/lib/lang/fi_dns_alias.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/fi_dns_cname.lng b/interface/web/dns/lib/lang/fi_dns_cname.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/fi_dns_hinfo.lng b/interface/web/dns/lib/lang/fi_dns_hinfo.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/fi_dns_mx.lng b/interface/web/dns/lib/lang/fi_dns_mx.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/fi_dns_ns.lng b/interface/web/dns/lib/lang/fi_dns_ns.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/fi_dns_ptr.lng b/interface/web/dns/lib/lang/fi_dns_ptr.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/fi_dns_rp.lng b/interface/web/dns/lib/lang/fi_dns_rp.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/fi_dns_soa.lng b/interface/web/dns/lib/lang/fi_dns_soa.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/fi_dns_soa_list.lng b/interface/web/dns/lib/lang/fi_dns_soa_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/fi_dns_srv.lng b/interface/web/dns/lib/lang/fi_dns_srv.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/fi_dns_template.lng b/interface/web/dns/lib/lang/fi_dns_template.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/fi_dns_template_list.lng b/interface/web/dns/lib/lang/fi_dns_template_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/fi_dns_txt.lng b/interface/web/dns/lib/lang/fi_dns_txt.lng
old mode 100755
new mode 100644
diff --git a/interface/web/dns/lib/lang/fi_dns_wizard.lng b/interface/web/dns/lib/lang/fi_dns_wizard.lng
old mode 100755
new mode 100644
diff --git a/interface/web/help/lib/lang/es.lng b/interface/web/help/lib/lang/es.lng
old mode 100755
new mode 100644
diff --git a/interface/web/help/lib/lang/es_faq_form.lng b/interface/web/help/lib/lang/es_faq_form.lng
old mode 100755
new mode 100644
diff --git a/interface/web/help/lib/lang/es_faq_manage_questions_list.lng b/interface/web/help/lib/lang/es_faq_manage_questions_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/help/lib/lang/es_faq_sections_form.lng b/interface/web/help/lib/lang/es_faq_sections_form.lng
old mode 100755
new mode 100644
diff --git a/interface/web/help/lib/lang/es_help_faq_list.lng b/interface/web/help/lib/lang/es_help_faq_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/help/lib/lang/es_help_faq_sections_list.lng b/interface/web/help/lib/lang/es_help_faq_sections_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/help/lib/lang/es_support_message.lng b/interface/web/help/lib/lang/es_support_message.lng
old mode 100755
new mode 100644
diff --git a/interface/web/help/lib/lang/es_support_message_list.lng b/interface/web/help/lib/lang/es_support_message_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/help/lib/lang/fi.lng b/interface/web/help/lib/lang/fi.lng
old mode 100755
new mode 100644
diff --git a/interface/web/help/lib/lang/fi_support_message.lng b/interface/web/help/lib/lang/fi_support_message.lng
old mode 100755
new mode 100644
diff --git a/interface/web/help/lib/lang/fi_support_message_list.lng b/interface/web/help/lib/lang/fi_support_message_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/login/lib/lang/es.lng b/interface/web/login/lib/lang/es.lng
old mode 100755
new mode 100644
diff --git a/interface/web/login/lib/lang/es_login_as.lng b/interface/web/login/lib/lang/es_login_as.lng
old mode 100755
new mode 100644
diff --git a/interface/web/login/lib/lang/fi.lng b/interface/web/login/lib/lang/fi.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/ar_user_quota_stats_list.lng b/interface/web/mail/lib/lang/ar_user_quota_stats_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/bg_user_quota_stats_list.lng b/interface/web/mail/lib/lang/bg_user_quota_stats_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/br_user_quota_stats_list.lng b/interface/web/mail/lib/lang/br_user_quota_stats_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/cz_user_quota_stats_list.lng b/interface/web/mail/lib/lang/cz_user_quota_stats_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/de_user_quota_stats_list.lng b/interface/web/mail/lib/lang/de_user_quota_stats_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/el_user_quota_stats_list.lng b/interface/web/mail/lib/lang/el_user_quota_stats_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/en_user_quota_stats_list.lng b/interface/web/mail/lib/lang/en_user_quota_stats_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es.lng b/interface/web/mail/lib/lang/es.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_backup_stats_list.lng b/interface/web/mail/lib/lang/es_backup_stats_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_mail_alias.lng b/interface/web/mail/lib/lang/es_mail_alias.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_mail_alias_list.lng b/interface/web/mail/lib/lang/es_mail_alias_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_mail_aliasdomain.lng b/interface/web/mail/lib/lang/es_mail_aliasdomain.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_mail_aliasdomain_list.lng b/interface/web/mail/lib/lang/es_mail_aliasdomain_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_mail_backup_list.lng b/interface/web/mail/lib/lang/es_mail_backup_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_mail_blacklist.lng b/interface/web/mail/lib/lang/es_mail_blacklist.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_mail_blacklist_list.lng b/interface/web/mail/lib/lang/es_mail_blacklist_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_mail_content_filter.lng b/interface/web/mail/lib/lang/es_mail_content_filter.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_mail_content_filter_list.lng b/interface/web/mail/lib/lang/es_mail_content_filter_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_mail_domain.lng b/interface/web/mail/lib/lang/es_mail_domain.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_mail_domain_admin_list.lng b/interface/web/mail/lib/lang/es_mail_domain_admin_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_mail_domain_catchall.lng b/interface/web/mail/lib/lang/es_mail_domain_catchall.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_mail_domain_catchall_list.lng b/interface/web/mail/lib/lang/es_mail_domain_catchall_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_mail_domain_list.lng b/interface/web/mail/lib/lang/es_mail_domain_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_mail_forward.lng b/interface/web/mail/lib/lang/es_mail_forward.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_mail_forward_list.lng b/interface/web/mail/lib/lang/es_mail_forward_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_mail_get.lng b/interface/web/mail/lib/lang/es_mail_get.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_mail_get_list.lng b/interface/web/mail/lib/lang/es_mail_get_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_mail_mailinglist.lng b/interface/web/mail/lib/lang/es_mail_mailinglist.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_mail_mailinglist_list.lng b/interface/web/mail/lib/lang/es_mail_mailinglist_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_mail_relay_recipient.lng b/interface/web/mail/lib/lang/es_mail_relay_recipient.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_mail_relay_recipient_list.lng b/interface/web/mail/lib/lang/es_mail_relay_recipient_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_mail_spamfilter.lng b/interface/web/mail/lib/lang/es_mail_spamfilter.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_mail_spamfilter_list.lng b/interface/web/mail/lib/lang/es_mail_spamfilter_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_mail_transport.lng b/interface/web/mail/lib/lang/es_mail_transport.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_mail_transport_list.lng b/interface/web/mail/lib/lang/es_mail_transport_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_mail_user.lng b/interface/web/mail/lib/lang/es_mail_user.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_mail_user_filter.lng b/interface/web/mail/lib/lang/es_mail_user_filter.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_mail_user_filter_list.lng b/interface/web/mail/lib/lang/es_mail_user_filter_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_mail_user_list.lng b/interface/web/mail/lib/lang/es_mail_user_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_mail_user_stats_list.lng b/interface/web/mail/lib/lang/es_mail_user_stats_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_mail_whitelist_list.lng b/interface/web/mail/lib/lang/es_mail_whitelist_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_spamfilter_blacklist.lng b/interface/web/mail/lib/lang/es_spamfilter_blacklist.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_spamfilter_blacklist_list.lng b/interface/web/mail/lib/lang/es_spamfilter_blacklist_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_spamfilter_config.lng b/interface/web/mail/lib/lang/es_spamfilter_config.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_spamfilter_config_list.lng b/interface/web/mail/lib/lang/es_spamfilter_config_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_spamfilter_policy.lng b/interface/web/mail/lib/lang/es_spamfilter_policy.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_spamfilter_policy_list.lng b/interface/web/mail/lib/lang/es_spamfilter_policy_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_spamfilter_users.lng b/interface/web/mail/lib/lang/es_spamfilter_users.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_spamfilter_users_list.lng b/interface/web/mail/lib/lang/es_spamfilter_users_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_spamfilter_whitelist.lng b/interface/web/mail/lib/lang/es_spamfilter_whitelist.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_spamfilter_whitelist_list.lng b/interface/web/mail/lib/lang/es_spamfilter_whitelist_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_user_quota_stats_list.lng b/interface/web/mail/lib/lang/es_user_quota_stats_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_xmpp_domain.lng b/interface/web/mail/lib/lang/es_xmpp_domain.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_xmpp_domain_admin_list.lng b/interface/web/mail/lib/lang/es_xmpp_domain_admin_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_xmpp_domain_list.lng b/interface/web/mail/lib/lang/es_xmpp_domain_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_xmpp_user.lng b/interface/web/mail/lib/lang/es_xmpp_user.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/es_xmpp_user_list.lng b/interface/web/mail/lib/lang/es_xmpp_user_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/fi.lng b/interface/web/mail/lib/lang/fi.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/fi_mail_alias.lng b/interface/web/mail/lib/lang/fi_mail_alias.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/fi_mail_alias_list.lng b/interface/web/mail/lib/lang/fi_mail_alias_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/fi_mail_blacklist.lng b/interface/web/mail/lib/lang/fi_mail_blacklist.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/fi_mail_blacklist_list.lng b/interface/web/mail/lib/lang/fi_mail_blacklist_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/fi_mail_content_filter.lng b/interface/web/mail/lib/lang/fi_mail_content_filter.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/fi_mail_content_filter_list.lng b/interface/web/mail/lib/lang/fi_mail_content_filter_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/fi_mail_domain.lng b/interface/web/mail/lib/lang/fi_mail_domain.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/fi_mail_domain_catchall.lng b/interface/web/mail/lib/lang/fi_mail_domain_catchall.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/fi_mail_domain_catchall_list.lng b/interface/web/mail/lib/lang/fi_mail_domain_catchall_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/fi_mail_domain_list.lng b/interface/web/mail/lib/lang/fi_mail_domain_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/fi_mail_forward.lng b/interface/web/mail/lib/lang/fi_mail_forward.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/fi_mail_forward_list.lng b/interface/web/mail/lib/lang/fi_mail_forward_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/fi_mail_get.lng b/interface/web/mail/lib/lang/fi_mail_get.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/fi_mail_get_list.lng b/interface/web/mail/lib/lang/fi_mail_get_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/fi_mail_spamfilter.lng b/interface/web/mail/lib/lang/fi_mail_spamfilter.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/fi_mail_spamfilter_list.lng b/interface/web/mail/lib/lang/fi_mail_spamfilter_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/fi_mail_transport.lng b/interface/web/mail/lib/lang/fi_mail_transport.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/fi_mail_transport_list.lng b/interface/web/mail/lib/lang/fi_mail_transport_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/fi_mail_user.lng b/interface/web/mail/lib/lang/fi_mail_user.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/fi_mail_user_filter.lng b/interface/web/mail/lib/lang/fi_mail_user_filter.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/fi_mail_user_filter_list.lng b/interface/web/mail/lib/lang/fi_mail_user_filter_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/fi_mail_user_list.lng b/interface/web/mail/lib/lang/fi_mail_user_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/fi_mail_user_stats_list.lng b/interface/web/mail/lib/lang/fi_mail_user_stats_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/fi_mail_whitelist.lng b/interface/web/mail/lib/lang/fi_mail_whitelist.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/fi_mail_whitelist_list.lng b/interface/web/mail/lib/lang/fi_mail_whitelist_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/fi_spamfilter_blacklist.lng b/interface/web/mail/lib/lang/fi_spamfilter_blacklist.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/fi_spamfilter_blacklist_list.lng b/interface/web/mail/lib/lang/fi_spamfilter_blacklist_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/fi_spamfilter_config.lng b/interface/web/mail/lib/lang/fi_spamfilter_config.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/fi_spamfilter_config_list.lng b/interface/web/mail/lib/lang/fi_spamfilter_config_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/fi_spamfilter_policy.lng b/interface/web/mail/lib/lang/fi_spamfilter_policy.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/fi_spamfilter_policy_list.lng b/interface/web/mail/lib/lang/fi_spamfilter_policy_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/fi_spamfilter_users.lng b/interface/web/mail/lib/lang/fi_spamfilter_users.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/fi_spamfilter_users_list.lng b/interface/web/mail/lib/lang/fi_spamfilter_users_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/fi_spamfilter_whitelist.lng b/interface/web/mail/lib/lang/fi_spamfilter_whitelist.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/fi_spamfilter_whitelist_list.lng b/interface/web/mail/lib/lang/fi_spamfilter_whitelist_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/fi_user_quota_stats_list.lng b/interface/web/mail/lib/lang/fi_user_quota_stats_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/fr_user_quota_stats_list.lng b/interface/web/mail/lib/lang/fr_user_quota_stats_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/hu_user_quota_stats_list.lng b/interface/web/mail/lib/lang/hu_user_quota_stats_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/id_user_quota_stats_list.lng b/interface/web/mail/lib/lang/id_user_quota_stats_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/it_user_quota_stats_list.lng b/interface/web/mail/lib/lang/it_user_quota_stats_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/ja_user_quota_stats_list.lng b/interface/web/mail/lib/lang/ja_user_quota_stats_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/nl_user_quota_stats_list.lng b/interface/web/mail/lib/lang/nl_user_quota_stats_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/pl_user_quota_stats_list.lng b/interface/web/mail/lib/lang/pl_user_quota_stats_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/pt_user_quota_stats_list.lng b/interface/web/mail/lib/lang/pt_user_quota_stats_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/ro_user_quota_stats_list.lng b/interface/web/mail/lib/lang/ro_user_quota_stats_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/ru_user_quota_stats_list.lng b/interface/web/mail/lib/lang/ru_user_quota_stats_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/se_user_quota_stats_list.lng b/interface/web/mail/lib/lang/se_user_quota_stats_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/sk_user_quota_stats_list.lng b/interface/web/mail/lib/lang/sk_user_quota_stats_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mail/lib/lang/tr_user_quota_stats_list.lng b/interface/web/mail/lib/lang/tr_user_quota_stats_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mailuser/lib/lang/es.lng b/interface/web/mailuser/lib/lang/es.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mailuser/lib/lang/es_index.lng b/interface/web/mailuser/lib/lang/es_index.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mailuser/lib/lang/es_mail_user_autoresponder.lng b/interface/web/mailuser/lib/lang/es_mail_user_autoresponder.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mailuser/lib/lang/es_mail_user_cc.lng b/interface/web/mailuser/lib/lang/es_mail_user_cc.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mailuser/lib/lang/es_mail_user_filter.lng b/interface/web/mailuser/lib/lang/es_mail_user_filter.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mailuser/lib/lang/es_mail_user_filter_list.lng b/interface/web/mailuser/lib/lang/es_mail_user_filter_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mailuser/lib/lang/es_mail_user_password.lng b/interface/web/mailuser/lib/lang/es_mail_user_password.lng
old mode 100755
new mode 100644
diff --git a/interface/web/mailuser/lib/lang/es_mail_user_spamfilter.lng b/interface/web/mailuser/lib/lang/es_mail_user_spamfilter.lng
old mode 100755
new mode 100644
diff --git a/interface/web/monitor/lib/lang/es.lng b/interface/web/monitor/lib/lang/es.lng
old mode 100755
new mode 100644
diff --git a/interface/web/monitor/lib/lang/es_datalog_list.lng b/interface/web/monitor/lib/lang/es_datalog_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/monitor/lib/lang/es_syslog_list.lng b/interface/web/monitor/lib/lang/es_syslog_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/monitor/lib/lang/fi.lng b/interface/web/monitor/lib/lang/fi.lng
old mode 100755
new mode 100644
diff --git a/interface/web/monitor/lib/lang/fi_datalog_list.lng b/interface/web/monitor/lib/lang/fi_datalog_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/monitor/lib/lang/fi_syslog_list.lng b/interface/web/monitor/lib/lang/fi_syslog_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/sites/lib/lang/es.lng b/interface/web/sites/lib/lang/es.lng
old mode 100755
new mode 100644
diff --git a/interface/web/sites/lib/lang/es_aps.lng b/interface/web/sites/lib/lang/es_aps.lng
old mode 100755
new mode 100644
diff --git a/interface/web/sites/lib/lang/es_aps_instances_list.lng b/interface/web/sites/lib/lang/es_aps_instances_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/sites/lib/lang/es_aps_packages_list.lng b/interface/web/sites/lib/lang/es_aps_packages_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/sites/lib/lang/es_aps_update_packagelist.lng b/interface/web/sites/lib/lang/es_aps_update_packagelist.lng
old mode 100755
new mode 100644
diff --git a/interface/web/sites/lib/lang/es_backup_stats_list.lng b/interface/web/sites/lib/lang/es_backup_stats_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/sites/lib/lang/es_cron.lng b/interface/web/sites/lib/lang/es_cron.lng
old mode 100755
new mode 100644
diff --git a/interface/web/sites/lib/lang/es_cron_list.lng b/interface/web/sites/lib/lang/es_cron_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/sites/lib/lang/es_database.lng b/interface/web/sites/lib/lang/es_database.lng
old mode 100755
new mode 100644
diff --git a/interface/web/sites/lib/lang/fi.lng b/interface/web/sites/lib/lang/fi.lng
old mode 100755
new mode 100644
diff --git a/interface/web/sites/lib/lang/fi_database.lng b/interface/web/sites/lib/lang/fi_database.lng
old mode 100755
new mode 100644
diff --git a/interface/web/sites/lib/lang/fi_database_list.lng b/interface/web/sites/lib/lang/fi_database_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/sites/lib/lang/fi_ftp_user.lng b/interface/web/sites/lib/lang/fi_ftp_user.lng
old mode 100755
new mode 100644
diff --git a/interface/web/sites/lib/lang/fi_ftp_user_list.lng b/interface/web/sites/lib/lang/fi_ftp_user_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/sites/lib/lang/fi_shell_user.lng b/interface/web/sites/lib/lang/fi_shell_user.lng
old mode 100755
new mode 100644
diff --git a/interface/web/sites/lib/lang/fi_shell_user_list.lng b/interface/web/sites/lib/lang/fi_shell_user_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/sites/lib/lang/fi_web_childdomain.lng b/interface/web/sites/lib/lang/fi_web_childdomain.lng
old mode 100755
new mode 100644
diff --git a/interface/web/sites/lib/lang/fi_web_childdomain_list.lng b/interface/web/sites/lib/lang/fi_web_childdomain_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/sites/lib/lang/fi_web_sites_stats_list.lng b/interface/web/sites/lib/lang/fi_web_sites_stats_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/sites/lib/lang/fi_web_vhost_domain_list.lng b/interface/web/sites/lib/lang/fi_web_vhost_domain_list.lng
old mode 100755
new mode 100644
diff --git a/interface/web/strengthmeter/lib/lang/bg_strengthmeter.lng b/interface/web/strengthmeter/lib/lang/bg_strengthmeter.lng
old mode 100755
new mode 100644
diff --git a/interface/web/strengthmeter/lib/lang/fi_strengthmeter.lng b/interface/web/strengthmeter/lib/lang/fi_strengthmeter.lng
old mode 100755
new mode 100644
diff --git a/interface/web/tools/lib/lang/fi.lng b/interface/web/tools/lib/lang/fi.lng
old mode 100755
new mode 100644
diff --git a/interface/web/tools/lib/lang/fi_usersettings.lng b/interface/web/tools/lib/lang/fi_usersettings.lng
old mode 100755
new mode 100644
-- 
GitLab


From 1bf3595a847922576904a255341943819735ff6f Mon Sep 17 00:00:00 2001
From: Herman van Rink <rink@initfour.nl>
Date: Tue, 5 May 2020 16:10:42 +0200
Subject: [PATCH 185/242] Show how many sites use an additional php version

---
 interface/web/admin/lib/lang/ar_server_php_list.lng |  1 +
 interface/web/admin/lib/lang/bg_server_php_list.lng |  1 +
 interface/web/admin/lib/lang/br_server_php_list.lng |  1 +
 interface/web/admin/lib/lang/ca_server_php_list.lng |  1 +
 interface/web/admin/lib/lang/cz_server_php_list.lng |  1 +
 interface/web/admin/lib/lang/de_server_php_list.lng |  1 +
 interface/web/admin/lib/lang/dk_server_php_list.lng |  1 +
 interface/web/admin/lib/lang/el_server_php_list.lng |  1 +
 interface/web/admin/lib/lang/en_server_php_list.lng |  1 +
 interface/web/admin/lib/lang/es_server_php_list.lng |  1 +
 interface/web/admin/lib/lang/fi_server_php_list.lng |  1 +
 interface/web/admin/lib/lang/fr_server_php_list.lng |  1 +
 interface/web/admin/lib/lang/hr_server_php_list.lng |  1 +
 interface/web/admin/lib/lang/hu_server_php_list.lng |  1 +
 interface/web/admin/lib/lang/id_server_php_list.lng |  1 +
 interface/web/admin/lib/lang/it_server_php_list.lng |  1 +
 interface/web/admin/lib/lang/ja_server_php_list.lng |  1 +
 interface/web/admin/lib/lang/nl_server_php_list.lng |  1 +
 interface/web/admin/lib/lang/pl_server_php_list.lng |  1 +
 interface/web/admin/lib/lang/pt_server_php_list.lng |  1 +
 interface/web/admin/lib/lang/ro_server_php_list.lng |  1 +
 interface/web/admin/lib/lang/ru_server_php_list.lng |  1 +
 interface/web/admin/lib/lang/se_server_php_list.lng |  1 +
 interface/web/admin/lib/lang/sk_server_php_list.lng |  1 +
 interface/web/admin/lib/lang/tr_server_php_list.lng |  1 +
 interface/web/admin/server_php_list.php             | 10 ++++++++++
 interface/web/admin/templates/server_php_list.htm   |  3 +++
 27 files changed, 38 insertions(+)

diff --git a/interface/web/admin/lib/lang/ar_server_php_list.lng b/interface/web/admin/lib/lang/ar_server_php_list.lng
index 62cbe61687..291302cbb7 100644
--- a/interface/web/admin/lib/lang/ar_server_php_list.lng
+++ b/interface/web/admin/lib/lang/ar_server_php_list.lng
@@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Add new PHP version';
 $wb['client_id_txt'] = 'Client';
 $wb['name_txt'] = 'PHP Name';
 $wb['active_txt'] = 'Active';
+$wb['usage_txt'] = 'Usage count';
 ?>
diff --git a/interface/web/admin/lib/lang/bg_server_php_list.lng b/interface/web/admin/lib/lang/bg_server_php_list.lng
index 62cbe61687..291302cbb7 100644
--- a/interface/web/admin/lib/lang/bg_server_php_list.lng
+++ b/interface/web/admin/lib/lang/bg_server_php_list.lng
@@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Add new PHP version';
 $wb['client_id_txt'] = 'Client';
 $wb['name_txt'] = 'PHP Name';
 $wb['active_txt'] = 'Active';
+$wb['usage_txt'] = 'Usage count';
 ?>
diff --git a/interface/web/admin/lib/lang/br_server_php_list.lng b/interface/web/admin/lib/lang/br_server_php_list.lng
index 38ebdd3568..ce558e9054 100644
--- a/interface/web/admin/lib/lang/br_server_php_list.lng
+++ b/interface/web/admin/lib/lang/br_server_php_list.lng
@@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Adicionar nova versão do php';
 $wb['client_id_txt'] = 'Cliente';
 $wb['name_txt'] = 'Nome da versão';
 $wb['active_txt'] = 'Ativo';
+$wb['usage_txt'] = 'Usage count';
 ?>
diff --git a/interface/web/admin/lib/lang/ca_server_php_list.lng b/interface/web/admin/lib/lang/ca_server_php_list.lng
index 62cbe61687..291302cbb7 100644
--- a/interface/web/admin/lib/lang/ca_server_php_list.lng
+++ b/interface/web/admin/lib/lang/ca_server_php_list.lng
@@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Add new PHP version';
 $wb['client_id_txt'] = 'Client';
 $wb['name_txt'] = 'PHP Name';
 $wb['active_txt'] = 'Active';
+$wb['usage_txt'] = 'Usage count';
 ?>
diff --git a/interface/web/admin/lib/lang/cz_server_php_list.lng b/interface/web/admin/lib/lang/cz_server_php_list.lng
index abe4f750ff..70bb2af8aa 100644
--- a/interface/web/admin/lib/lang/cz_server_php_list.lng
+++ b/interface/web/admin/lib/lang/cz_server_php_list.lng
@@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Přidat verzi PHP';
 $wb['client_id_txt'] = 'Klient';
 $wb['name_txt'] = 'Verze PHP';
 $wb['active_txt'] = 'Aktivní';
+$wb['usage_txt'] = 'Usage count';
 ?>
diff --git a/interface/web/admin/lib/lang/de_server_php_list.lng b/interface/web/admin/lib/lang/de_server_php_list.lng
index fe9a72ea15..f9da54d84c 100644
--- a/interface/web/admin/lib/lang/de_server_php_list.lng
+++ b/interface/web/admin/lib/lang/de_server_php_list.lng
@@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Neue PHP Version hinzufügen';
 $wb['client_id_txt'] = 'Kunde';
 $wb['name_txt'] = 'PHP Name';
 $wb['active_txt'] = 'Aktiv';
+$wb['usage_txt'] = 'Usage count';
 ?>
diff --git a/interface/web/admin/lib/lang/dk_server_php_list.lng b/interface/web/admin/lib/lang/dk_server_php_list.lng
index 43fb5fe211..65869ce2ed 100644
--- a/interface/web/admin/lib/lang/dk_server_php_list.lng
+++ b/interface/web/admin/lib/lang/dk_server_php_list.lng
@@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Tilføj ny PHP version';
 $wb['client_id_txt'] = 'Kunde';
 $wb['name_txt'] = 'PHP Navn';
 $wb['active_txt'] = 'Active';
+$wb['usage_txt'] = 'Usage count';
 ?>
diff --git a/interface/web/admin/lib/lang/el_server_php_list.lng b/interface/web/admin/lib/lang/el_server_php_list.lng
index 62cbe61687..291302cbb7 100644
--- a/interface/web/admin/lib/lang/el_server_php_list.lng
+++ b/interface/web/admin/lib/lang/el_server_php_list.lng
@@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Add new PHP version';
 $wb['client_id_txt'] = 'Client';
 $wb['name_txt'] = 'PHP Name';
 $wb['active_txt'] = 'Active';
+$wb['usage_txt'] = 'Usage count';
 ?>
diff --git a/interface/web/admin/lib/lang/en_server_php_list.lng b/interface/web/admin/lib/lang/en_server_php_list.lng
index 62cbe61687..291302cbb7 100644
--- a/interface/web/admin/lib/lang/en_server_php_list.lng
+++ b/interface/web/admin/lib/lang/en_server_php_list.lng
@@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Add new PHP version';
 $wb['client_id_txt'] = 'Client';
 $wb['name_txt'] = 'PHP Name';
 $wb['active_txt'] = 'Active';
+$wb['usage_txt'] = 'Usage count';
 ?>
diff --git a/interface/web/admin/lib/lang/es_server_php_list.lng b/interface/web/admin/lib/lang/es_server_php_list.lng
index 111628b720..8d62ee8919 100755
--- a/interface/web/admin/lib/lang/es_server_php_list.lng
+++ b/interface/web/admin/lib/lang/es_server_php_list.lng
@@ -5,4 +5,5 @@ $wb['list_head_txt'] = 'Versiones adicionales de PHP';
 $wb['name_txt'] = 'Versión de PHP';
 $wb['server_id_txt'] = 'Servidor';
 $wb['active_txt'] = 'Active';
+$wb['usage_txt'] = 'Usage count';
 ?>
diff --git a/interface/web/admin/lib/lang/fi_server_php_list.lng b/interface/web/admin/lib/lang/fi_server_php_list.lng
index 62cbe61687..291302cbb7 100644
--- a/interface/web/admin/lib/lang/fi_server_php_list.lng
+++ b/interface/web/admin/lib/lang/fi_server_php_list.lng
@@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Add new PHP version';
 $wb['client_id_txt'] = 'Client';
 $wb['name_txt'] = 'PHP Name';
 $wb['active_txt'] = 'Active';
+$wb['usage_txt'] = 'Usage count';
 ?>
diff --git a/interface/web/admin/lib/lang/fr_server_php_list.lng b/interface/web/admin/lib/lang/fr_server_php_list.lng
index 62cbe61687..291302cbb7 100644
--- a/interface/web/admin/lib/lang/fr_server_php_list.lng
+++ b/interface/web/admin/lib/lang/fr_server_php_list.lng
@@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Add new PHP version';
 $wb['client_id_txt'] = 'Client';
 $wb['name_txt'] = 'PHP Name';
 $wb['active_txt'] = 'Active';
+$wb['usage_txt'] = 'Usage count';
 ?>
diff --git a/interface/web/admin/lib/lang/hr_server_php_list.lng b/interface/web/admin/lib/lang/hr_server_php_list.lng
index 9e9c0de986..1851ac8395 100644
--- a/interface/web/admin/lib/lang/hr_server_php_list.lng
+++ b/interface/web/admin/lib/lang/hr_server_php_list.lng
@@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Add new PHP version';
 $wb['client_id_txt'] = 'Klijent';
 $wb['name_txt'] = 'PHP Name';
 $wb['active_txt'] = 'Active';
+$wb['usage_txt'] = 'Usage count';
 ?>
diff --git a/interface/web/admin/lib/lang/hu_server_php_list.lng b/interface/web/admin/lib/lang/hu_server_php_list.lng
index 62cbe61687..291302cbb7 100644
--- a/interface/web/admin/lib/lang/hu_server_php_list.lng
+++ b/interface/web/admin/lib/lang/hu_server_php_list.lng
@@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Add new PHP version';
 $wb['client_id_txt'] = 'Client';
 $wb['name_txt'] = 'PHP Name';
 $wb['active_txt'] = 'Active';
+$wb['usage_txt'] = 'Usage count';
 ?>
diff --git a/interface/web/admin/lib/lang/id_server_php_list.lng b/interface/web/admin/lib/lang/id_server_php_list.lng
index 62cbe61687..291302cbb7 100644
--- a/interface/web/admin/lib/lang/id_server_php_list.lng
+++ b/interface/web/admin/lib/lang/id_server_php_list.lng
@@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Add new PHP version';
 $wb['client_id_txt'] = 'Client';
 $wb['name_txt'] = 'PHP Name';
 $wb['active_txt'] = 'Active';
+$wb['usage_txt'] = 'Usage count';
 ?>
diff --git a/interface/web/admin/lib/lang/it_server_php_list.lng b/interface/web/admin/lib/lang/it_server_php_list.lng
index 296de9d0a5..5ff1ebe314 100644
--- a/interface/web/admin/lib/lang/it_server_php_list.lng
+++ b/interface/web/admin/lib/lang/it_server_php_list.lng
@@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Aggiungi una nuova versione PHP';
 $wb['client_id_txt'] = 'Cliente';
 $wb['name_txt'] = 'Nome PHP';
 $wb['active_txt'] = 'Active';
+$wb['usage_txt'] = 'Usage count';
 ?>
diff --git a/interface/web/admin/lib/lang/ja_server_php_list.lng b/interface/web/admin/lib/lang/ja_server_php_list.lng
index 62cbe61687..291302cbb7 100644
--- a/interface/web/admin/lib/lang/ja_server_php_list.lng
+++ b/interface/web/admin/lib/lang/ja_server_php_list.lng
@@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Add new PHP version';
 $wb['client_id_txt'] = 'Client';
 $wb['name_txt'] = 'PHP Name';
 $wb['active_txt'] = 'Active';
+$wb['usage_txt'] = 'Usage count';
 ?>
diff --git a/interface/web/admin/lib/lang/nl_server_php_list.lng b/interface/web/admin/lib/lang/nl_server_php_list.lng
index 62cbe61687..291302cbb7 100644
--- a/interface/web/admin/lib/lang/nl_server_php_list.lng
+++ b/interface/web/admin/lib/lang/nl_server_php_list.lng
@@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Add new PHP version';
 $wb['client_id_txt'] = 'Client';
 $wb['name_txt'] = 'PHP Name';
 $wb['active_txt'] = 'Active';
+$wb['usage_txt'] = 'Usage count';
 ?>
diff --git a/interface/web/admin/lib/lang/pl_server_php_list.lng b/interface/web/admin/lib/lang/pl_server_php_list.lng
index 62cbe61687..291302cbb7 100644
--- a/interface/web/admin/lib/lang/pl_server_php_list.lng
+++ b/interface/web/admin/lib/lang/pl_server_php_list.lng
@@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Add new PHP version';
 $wb['client_id_txt'] = 'Client';
 $wb['name_txt'] = 'PHP Name';
 $wb['active_txt'] = 'Active';
+$wb['usage_txt'] = 'Usage count';
 ?>
diff --git a/interface/web/admin/lib/lang/pt_server_php_list.lng b/interface/web/admin/lib/lang/pt_server_php_list.lng
index 62cbe61687..291302cbb7 100644
--- a/interface/web/admin/lib/lang/pt_server_php_list.lng
+++ b/interface/web/admin/lib/lang/pt_server_php_list.lng
@@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Add new PHP version';
 $wb['client_id_txt'] = 'Client';
 $wb['name_txt'] = 'PHP Name';
 $wb['active_txt'] = 'Active';
+$wb['usage_txt'] = 'Usage count';
 ?>
diff --git a/interface/web/admin/lib/lang/ro_server_php_list.lng b/interface/web/admin/lib/lang/ro_server_php_list.lng
index 62cbe61687..291302cbb7 100644
--- a/interface/web/admin/lib/lang/ro_server_php_list.lng
+++ b/interface/web/admin/lib/lang/ro_server_php_list.lng
@@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Add new PHP version';
 $wb['client_id_txt'] = 'Client';
 $wb['name_txt'] = 'PHP Name';
 $wb['active_txt'] = 'Active';
+$wb['usage_txt'] = 'Usage count';
 ?>
diff --git a/interface/web/admin/lib/lang/ru_server_php_list.lng b/interface/web/admin/lib/lang/ru_server_php_list.lng
index 5c84917f15..5be582f23d 100644
--- a/interface/web/admin/lib/lang/ru_server_php_list.lng
+++ b/interface/web/admin/lib/lang/ru_server_php_list.lng
@@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Добавить новую версию PHP';
 $wb['client_id_txt'] = 'ID Клиента';
 $wb['name_txt'] = 'Имя PHP';
 $wb['active_txt'] = 'Active';
+$wb['usage_txt'] = 'Usage count';
 ?>
diff --git a/interface/web/admin/lib/lang/se_server_php_list.lng b/interface/web/admin/lib/lang/se_server_php_list.lng
index 451236d1ca..b2f8b55112 100644
--- a/interface/web/admin/lib/lang/se_server_php_list.lng
+++ b/interface/web/admin/lib/lang/se_server_php_list.lng
@@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Lägg till ny PHP-version';
 $wb['client_id_txt'] = 'Kund';
 $wb['name_txt'] = 'PHP-namn';
 $wb['active_txt'] = 'Active';
+$wb['usage_txt'] = 'Usage count';
 ?>
diff --git a/interface/web/admin/lib/lang/sk_server_php_list.lng b/interface/web/admin/lib/lang/sk_server_php_list.lng
index 62cbe61687..291302cbb7 100644
--- a/interface/web/admin/lib/lang/sk_server_php_list.lng
+++ b/interface/web/admin/lib/lang/sk_server_php_list.lng
@@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Add new PHP version';
 $wb['client_id_txt'] = 'Client';
 $wb['name_txt'] = 'PHP Name';
 $wb['active_txt'] = 'Active';
+$wb['usage_txt'] = 'Usage count';
 ?>
diff --git a/interface/web/admin/lib/lang/tr_server_php_list.lng b/interface/web/admin/lib/lang/tr_server_php_list.lng
index 06319e9855..4468e7ead9 100644
--- a/interface/web/admin/lib/lang/tr_server_php_list.lng
+++ b/interface/web/admin/lib/lang/tr_server_php_list.lng
@@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'PHP Sürümü Ekle';
 $wb['client_id_txt'] = 'Müşteri';
 $wb['name_txt'] = 'PHP Adı';
 $wb['active_txt'] = 'Etkin';
+$wb['usage_txt'] = 'Usage count';
 ?>
diff --git a/interface/web/admin/server_php_list.php b/interface/web/admin/server_php_list.php
index 7d69ab7d25..a3c4d6354f 100644
--- a/interface/web/admin/server_php_list.php
+++ b/interface/web/admin/server_php_list.php
@@ -48,6 +48,16 @@ $app->uses('listform_actions');
 
 $app->listform_actions->SQLOrderBy = "ORDER BY server_php.server_id, server_php.name";
 
+$app->listform_actions->SQLExtSelect = "(SELECT
+    COUNT(w.server_id)
+    FROM
+    server_php s LEFT JOIN web_domain w ON (w.fastcgi_php_version LIKE CONCAT(s.name, '%') AND s.server_id=w.server_id)
+    WHERE
+    server_php.server_php_id=s.server_php_id
+    GROUP BY
+    server_php.server_php_id
+) AS 'usage'";
+
 $app->listform_actions->onLoad();
 
 
diff --git a/interface/web/admin/templates/server_php_list.htm b/interface/web/admin/templates/server_php_list.htm
index 9833eb1e7e..dd6547ba56 100644
--- a/interface/web/admin/templates/server_php_list.htm
+++ b/interface/web/admin/templates/server_php_list.htm
@@ -19,6 +19,7 @@
                         <th data-column="server_id"><tmpl_var name="server_id_txt"></th>
                         <th class="small-col" data-column="client_id"><tmpl_var name="client_id_txt"></th>
                         <th data-column="name"><tmpl_var name="name_txt"></th>
+                        <th data-column="usage"><tmpl_var name="usage_txt"></th>
                         <th class="text-right">{tmpl_var name='search_limit'}</th>
                     </tr>
                     <tr>
@@ -26,6 +27,7 @@
                         <td><select class="form-control" name="search_server_id">{tmpl_var name='search_server_id'}</select></td>
                         <td><select class="form-control" name="search_client_id">{tmpl_var name='search_client_id'}</select></td>
                         <td><input class="form-control" type="text" name="search_name" value="{tmpl_var name='search_name'}" /></td>
+                        <td></td>
                         <td class="text-right">
                             <button type="button" class="btn btn-default formbutton-default formbutton-narrow" name="Filter" id="Filter" value="{tmpl_var name="filter_txt"}" data-submit-form="pageForm" data-form-action="admin/server_php_list.php"><span class="icon icon-filter"></span></button>
                         </td>
@@ -38,6 +40,7 @@
                             <td><a href="#" data-load-content="admin/server_php_edit.php?id={tmpl_var name='id'}">{tmpl_var name="server_id"}</a></td>
                             <td><a href="#" data-load-content="admin/server_php_edit.php?id={tmpl_var name='id'}">{tmpl_var name="client_id"}</a></td>
                             <td><a href="#" data-load-content="admin/server_php_edit.php?id={tmpl_var name='id'}">{tmpl_var name="name"}</a></td>
+                            <td><a href="#" data-load-content="admin/server_php_edit.php?id={tmpl_var name='id'}">{tmpl_var name="usage"}</a></td>
                             <td class="text-right">
                                 <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/server_php_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                             </td>
-- 
GitLab


From f15676b55ed4d769aa105e555511e2bcd32dc2df Mon Sep 17 00:00:00 2001
From: Michael Seevogel <git@michaelseevogel.de>
Date: Tue, 19 May 2020 10:58:41 +0200
Subject: [PATCH 186/242] UseFtpUsers is deprecated

---
 install/tpl/fedora_pureftpd_conf.master | 7 -------
 1 file changed, 7 deletions(-)

diff --git a/install/tpl/fedora_pureftpd_conf.master b/install/tpl/fedora_pureftpd_conf.master
index 5b9d6a2deb..c22646322f 100644
--- a/install/tpl/fedora_pureftpd_conf.master
+++ b/install/tpl/fedora_pureftpd_conf.master
@@ -241,13 +241,6 @@ MinUID                      500
 
 
 
-# Do not use the /etc/ftpusers file to disable accounts. We're already
-# using MinUID to block users with uid < 500
-
-UseFtpUsers no
-
-
-
 # Allow FXP transfers for authenticated users.
 
 AllowUserFXP                no
-- 
GitLab


From f518b8520d49c2ef08b46067b9108d77fa4236c2 Mon Sep 17 00:00:00 2001
From: Michael Seevogel <git@michaelseevogel.de>
Date: Tue, 19 May 2020 13:43:39 +0200
Subject: [PATCH 187/242] include EL8 also in the fpm workaround in the nginx
 module

---
 server/plugins-available/nginx_plugin.inc.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php
index c1262f69eb..68e295a97a 100644
--- a/server/plugins-available/nginx_plugin.inc.php
+++ b/server/plugins-available/nginx_plugin.inc.php
@@ -2728,7 +2728,7 @@ class nginx_plugin {
 		foreach($rh_releasefiles as $rh_file) {
 			if(file_exists($rh_file) && (filesize($rh_file) > 0)) {
 				$tmp = file_get_contents($rh_file);
-				if(preg_match('/[67]+\.[0-9]+/m', $tmp)) {
+				if(preg_match('/[678]+\.[0-9]+/m', $tmp)) {
 					$tpl->setVar('fpm_group', $data['new']['system_group']);
 					$tpl->setVar('fpm_listen_group', $data['new']['system_group']);
 				}
-- 
GitLab


From fe4fd73f314dda7d0581b06ef4a00b1c99cf9d24 Mon Sep 17 00:00:00 2001
From: Michael Seevogel <git@michaelseevogel.de>
Date: Tue, 19 May 2020 17:00:48 +0200
Subject: [PATCH 188/242] fixed package manager detection in
 monitor_system_update.inc.php

---
 .../lib/classes/cron.d/100-monitor_system_update.inc.php | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/server/lib/classes/cron.d/100-monitor_system_update.inc.php b/server/lib/classes/cron.d/100-monitor_system_update.inc.php
index 34f944fa67..cab5f68edb 100644
--- a/server/lib/classes/cron.d/100-monitor_system_update.inc.php
+++ b/server/lib/classes/cron.d/100-monitor_system_update.inc.php
@@ -159,6 +159,7 @@ class cronjob_monitor_system_update extends cronjob {
 			 * Fetch the output
 			 */
 			$data['output'] = shell_exec('zypper lu');
+
 		} elseif(file_exists('/etc/redhat-release')) {
                         /*
                          * update and find the upgrade.
@@ -168,13 +169,14 @@ class cronjob_monitor_system_update extends cronjob {
 			/* try to figure out the default package manager first */
                         if(file_exists('/usr/bin/dnf') && (is_link('/usr/bin/yum'))) {
                                 $rhPkgMgr = 'dnf';
-                        } elseif(file_exists('/usr/bin/dnf') && (!file_exists('/usr/bin/yum')) || (!is_link('/usr/bin/yum'))) {
+                        } elseif(file_exists('/usr/bin/dnf') && (!file_exists('/usr/bin/yum'))) {
                                 $rhPkgMgr = 'dnf';
                         } else {
                                 $rhPkgMgr = 'yum';
                         }
 
-                        $aptData = shell_exec($rhPkgMgr. ' -q list updates');
+			$aptData = shell_exec($rhPkgMgr. ' -q list updates');
+
                         if ($aptData == '') {
                                 /* There is nothing to update! */
                                 $state = 'ok';
@@ -188,7 +190,8 @@ class cronjob_monitor_system_update extends cronjob {
 
                         /*
                          * Fetch the output
-                         */
+			 */
+
                         $data['output'] = shell_exec($rhPkgMgr. ' -q list updates');
             
 	        } else {
-- 
GitLab


From dbfab6b6cd0cfb67c5dfdd84b164bb5466292d78 Mon Sep 17 00:00:00 2001
From: Jesse Norell <jesse@kci.net>
Date: Thu, 21 May 2020 16:07:12 -0600
Subject: [PATCH 189/242] fix various ispcmail issues.  fixes #5620

---
 interface/lib/classes/ispcmail.inc.php |  9 ++++++---
 interface/web/login/lib/lang/ar.lng    |  1 +
 interface/web/login/lib/lang/bg.lng    |  1 +
 interface/web/login/lib/lang/br.lng    |  1 +
 interface/web/login/lib/lang/ca.lng    |  1 +
 interface/web/login/lib/lang/cz.lng    |  1 +
 interface/web/login/lib/lang/de.lng    |  1 +
 interface/web/login/lib/lang/dk.lng    |  1 +
 interface/web/login/lib/lang/el.lng    |  1 +
 interface/web/login/lib/lang/en.lng    | 13 +++++++------
 interface/web/login/lib/lang/es.lng    |  1 +
 interface/web/login/lib/lang/fi.lng    |  1 +
 interface/web/login/lib/lang/fr.lng    |  1 +
 interface/web/login/lib/lang/hr.lng    |  1 +
 interface/web/login/lib/lang/hu.lng    |  1 +
 interface/web/login/lib/lang/id.lng    |  1 +
 interface/web/login/lib/lang/it.lng    |  1 +
 interface/web/login/lib/lang/ja.lng    |  1 +
 interface/web/login/lib/lang/nl.lng    |  1 +
 interface/web/login/lib/lang/pl.lng    |  1 +
 interface/web/login/lib/lang/pt.lng    |  1 +
 interface/web/login/lib/lang/ro.lng    |  1 +
 interface/web/login/lib/lang/ru.lng    |  1 +
 interface/web/login/lib/lang/se.lng    |  1 +
 interface/web/login/lib/lang/sk.lng    |  1 +
 interface/web/login/lib/lang/tr.lng    |  1 +
 interface/web/login/password_reset.php | 26 +++++++++++++++++---------
 27 files changed, 54 insertions(+), 18 deletions(-)

diff --git a/interface/lib/classes/ispcmail.inc.php b/interface/lib/classes/ispcmail.inc.php
index 522fd1a71b..fbf5f84dca 100644
--- a/interface/lib/classes/ispcmail.inc.php
+++ b/interface/lib/classes/ispcmail.inc.php
@@ -169,7 +169,7 @@ class ispcmail {
 			$this->smtp_host = $value;
 			break;
 		case 'smtp_port':
-			$this->smtp_port = $value;
+			if(intval($value) > 0) $this->smtp_port = $value;
 			break;
 		case 'smtp_user':
 			$this->smtp_user = $value;
@@ -586,8 +586,8 @@ class ispcmail {
 	 */
 	private function _smtp_login() {
 		$this->_smtp_conn = fsockopen(($this->smtp_crypt == 'ssl' ? 'tls://' : '') . $this->smtp_host, $this->smtp_port, $errno, $errstr, 30);
-		$response = fgets($this->_smtp_conn, 515);
 		if(empty($this->_smtp_conn)) return false;
+		$response = fgets($this->_smtp_conn, 515);
 
 		//Say Hello to SMTP
 		if($this->smtp_helo == '') $this->detectHelo();
@@ -607,8 +607,11 @@ class ispcmail {
 			}
 			stream_context_set_option($this->_smtp_conn, 'ssl', 'verify_host', false);
 			stream_context_set_option($this->_smtp_conn, 'ssl', 'verify_peer', false);
+			stream_context_set_option($this->_smtp_conn, 'ssl', 'verify_peer_name', false);
 			stream_context_set_option($this->_smtp_conn, 'ssl', 'allow_self_signed', true);
-			stream_socket_enable_crypto($this->_smtp_conn, true, $crypto_method);
+			if (stream_socket_enable_crypto($this->_smtp_conn, true, $crypto_method) != true) {
+				return false;
+			}
 		}
 
 		//AUTH LOGIN
diff --git a/interface/web/login/lib/lang/ar.lng b/interface/web/login/lib/lang/ar.lng
index 6d2e8b3b31..a50df19db4 100644
--- a/interface/web/login/lib/lang/ar.lng
+++ b/interface/web/login/lib/lang/ar.lng
@@ -7,6 +7,7 @@ $wb['pass_reset_txt'] = 'A new password will be generated and send to your email
 $wb['pw_reset'] = 'The password has been reset and send to your email address.';
 $wb['pw_error'] = 'Username or email address does not match.';
 $wb['pw_error_noinput'] = 'Please enter email address and username.';
+$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.';
 $wb['pw_reset_mail_msg'] = 'The password to your ISPConfig 3 control panel account has been reset. The new password is: ';
 $wb['pw_reset_mail_title'] = 'ISPConfig 3 Control panel password has been reset.';
 $wb['user_regex_error'] = 'Username contains unallowed characters or is longer then 64 characters.';
diff --git a/interface/web/login/lib/lang/bg.lng b/interface/web/login/lib/lang/bg.lng
index 3d1aaae5e8..8081ec8097 100644
--- a/interface/web/login/lib/lang/bg.lng
+++ b/interface/web/login/lib/lang/bg.lng
@@ -3,6 +3,7 @@ $wb['pass_reset_txt'] = 'Нова парола ще бъде генериран
 $wb['pw_reset'] = 'Новата ви парола беше изпратена на електронната ви поща.';
 $wb['pw_error'] = 'Греяно потребителското име или електронна поща.';
 $wb['pw_error_noinput'] = 'Моля въведете потребителско име и електронна поща.';
+$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.';
 $wb['pw_reset_mail_msg'] = 'Новата парола за вашия ISPConfig 3 контролен панел е:';
 $wb['pw_reset_mail_title'] = 'Нова парола за вашия ISPConfig 3 контролен панел';
 $wb['user_regex_error'] = 'Потребителско име contains unallowed characters or is longer then 64 characters.';
diff --git a/interface/web/login/lib/lang/br.lng b/interface/web/login/lib/lang/br.lng
index 9baaf55212..33cddc8fb3 100644
--- a/interface/web/login/lib/lang/br.lng
+++ b/interface/web/login/lib/lang/br.lng
@@ -7,6 +7,7 @@ $wb['pass_reset_txt'] = 'Uma nova senha foi gerada e será enviada para você no
 $wb['pw_reset'] = 'Senha redefinida! Ela será enviada para você no e-mail cadastrado no sistema.';
 $wb['pw_error'] = 'Nome do usuário ou e-mail não coincidem.';
 $wb['pw_error_noinput'] = 'Favor informar nome do usuário e e-mail válidos.';
+$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.';
 $wb['pw_reset_mail_msg'] = 'A senha para esta conta no ISPConfig foi redefinida. A nova senha é: ';
 $wb['pw_reset_mail_title'] = 'A senha para esta conta no ISPConfig foi redefinida.';
 $wb['user_regex_error'] = 'O nome do usuário contém menos de 1 ou mais de 64 caracteres ou contém caracteres inválidos.';
diff --git a/interface/web/login/lib/lang/ca.lng b/interface/web/login/lib/lang/ca.lng
index 17c427714b..8c672b59c5 100644
--- a/interface/web/login/lib/lang/ca.lng
+++ b/interface/web/login/lib/lang/ca.lng
@@ -7,6 +7,7 @@ $wb['pass_reset_txt'] = 'Un nouveau mot de passe vous sera envoyé à votre adre
 $wb['pw_reset'] = 'Le mot de passe a été réinitialisé, et vous a été envoyé à votre adresse e-mail.';
 $wb['pw_error'] = 'Le nom d\'utilisateur et/ou L\'adresse e-mail ne correspondent pas.';
 $wb['pw_error_noinput'] = 'Entrez votre nom d\'utilisateur et votre adresse e-mail.';
+$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.';
 $wb['pw_reset_mail_msg'] = 'Le mot de passe d\'accès à votre panel a été réinitialisé. Le nouveau mot de passe est : ';
 $wb['pw_reset_mail_title'] = 'Le mot de passe d\'accès à votre panel a été réinitialisé.';
 $wb['user_regex_error'] = 'Le nom d\'utilisateur contient des caractères incorrects ou contient plus de 64 caractères.';
diff --git a/interface/web/login/lib/lang/cz.lng b/interface/web/login/lib/lang/cz.lng
index 065f6fc865..9b22d7d3c7 100644
--- a/interface/web/login/lib/lang/cz.lng
+++ b/interface/web/login/lib/lang/cz.lng
@@ -7,6 +7,7 @@ $wb['pass_reset_txt'] = 'Bude Vám vygenerováno a zasláno nové heslo na e-mai
 $wb['pw_reset'] = 'Heslo bylo resetováno a zasláno na Váš e-mail.';
 $wb['pw_error'] = 'Uživatelské jméno nebo e-mail nesouhlasí.';
 $wb['pw_error_noinput'] = 'Prosím zadejte uživatelské jméno a e-mail.';
+$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.';
 $wb['pw_reset_mail_msg'] = 'Vaše heslo do ISPConfigu bylo resetováno. Nové heslo je: ';
 $wb['pw_reset_mail_title'] = 'Heslo do ISPConfigu bylo resetováno.';
 $wb['user_regex_error'] = 'Uživatelské jméno obsahuje nepovolené znaky nebo je delší než 64 znaků.';
diff --git a/interface/web/login/lib/lang/de.lng b/interface/web/login/lib/lang/de.lng
index 217e5c51b0..446f04edc8 100644
--- a/interface/web/login/lib/lang/de.lng
+++ b/interface/web/login/lib/lang/de.lng
@@ -8,6 +8,7 @@ $wb['pw_reset'] = 'Das Passwort wurde zurückgesetzt und wird per E-Mail an Sie
 $wb['pw_reset_act'] = 'Ein Aktivierungslink wurde per E-Mail an Sie geschickt. Bitte bestätigen Sie die Anforderung eines neuen Passwortes.';
 $wb['pw_error'] = 'Benutzername oder E-Mail Adresse stimmen nicht überein.';
 $wb['pw_error_noinput'] = 'Bitte geben Sie Ihre E-Mail Adresse und Ihren Benutzernamen ein.';
+$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.';
 $wb['pw_reset_mail_msg'] = 'Das Passwort wurde zurückgesetzt. Das neue Passwort lautet: ';
 $wb['pw_reset_mail_title'] = 'Ihr Passwort wurde zurückgesetzt';
 $wb['pw_reset_act_mail_msg'] = 'Bitte bestätigen Sie die Anforderung eines neuen Passworts, indem Sie folgenden Link besuchen: ';
diff --git a/interface/web/login/lib/lang/dk.lng b/interface/web/login/lib/lang/dk.lng
index 48e7885ec5..8a104c45be 100644
--- a/interface/web/login/lib/lang/dk.lng
+++ b/interface/web/login/lib/lang/dk.lng
@@ -7,6 +7,7 @@ $wb['pass_reset_txt'] = 'En ny adgangskode vil blive genereret og sendt til din
 $wb['pw_reset'] = 'Adgangskoden er blevet nulstillet og sendt til din e-mail adresse.';
 $wb['pw_error'] = 'Brugernavn eller e-mail adresse matcher ikke.';
 $wb['pw_error_noinput'] = 'Indtast e-mail adresse og brugernavn.';
+$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.';
 $wb['pw_reset_mail_msg'] = 'Adgangskoden til din ISPConfig 3 kontrol panel konto er blevet nulstillet. Den nye adgangskode er: ';
 $wb['pw_reset_mail_title'] = 'ISPConfig 3 Kontrol panel adgangskode er blevet nulstillet.';
 $wb['user_regex_error'] = 'Brugernavn indeholder Ikke-tilladte karakterer eller er længer end 64 karaktere.';
diff --git a/interface/web/login/lib/lang/el.lng b/interface/web/login/lib/lang/el.lng
index c4e7518904..8a6ed3387f 100644
--- a/interface/web/login/lib/lang/el.lng
+++ b/interface/web/login/lib/lang/el.lng
@@ -7,6 +7,7 @@ $wb['pass_reset_txt'] = 'Ένα νέο συνθηματικό θα δημιου
 $wb['pw_reset'] = 'Το νέο συνθηματικό δημιουργηθήκε και στάλθηκε στο e-mail που δηλώσατε';
 $wb['pw_error'] = 'Το όνομα χρήστη ή το email δεν ταιριάζουν';
 $wb['pw_error_noinput'] = 'Παρακαλούμε εισάγετε διεύθυνση email και όνομα χρήστη';
+$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.';
 $wb['pw_reset_mail_msg'] = 'Ο κωδικός σας για το εργαλείο διαχείρισης ISPConfig 3 έχει αρχικοποιηθεί. Το νέο συνθηματικό είναι: ';
 $wb['pw_reset_mail_title'] = 'το συνθηματικό σας για το εργαλείο διαχείρισης ISPConfig 3 έχει αρχικοποιηθεί.';
 $wb['user_regex_error'] = 'Το όνομα χρήστη περιέχει μη επιτρεπόμενους χαρακτήρες ή το μέγεθος του ξεπερνά του 64 χαρακτήρες.';
diff --git a/interface/web/login/lib/lang/en.lng b/interface/web/login/lib/lang/en.lng
index 2db2d49f94..44844f089b 100644
--- a/interface/web/login/lib/lang/en.lng
+++ b/interface/web/login/lib/lang/en.lng
@@ -2,19 +2,20 @@
 $wb['error_user_password_empty']	= "Username or Password empty.";
 $wb['error_user_password_incorrect']	= "Username or Password wrong.";
 $wb['error_user_blocked']               = "User is blocked.";
-$wb['error_user_too_many_logins']	= "To many wrong login's, Please retry it after 15 minutes";
-$wb['pass_reset_txt']       = 'A new password will be generated and send to your email address if the email address entered below matches the email address in your client settings.';
-$wb['pw_reset']             = 'The password has been reset and send to your email address.';
-$wb['pw_reset_act'] = 'You have been sent an activation link. Please visit the link to confirm your password request.';
+$wb['error_user_too_many_logins']	= "Too many failed login attempts. Please retry after 15 minutes";
+$wb['pass_reset_txt']       = 'A new password will be generated and sent to your email address if the email address entered below matches the email address in your client settings.';
+$wb['pw_reset']             = 'The password has been reset and sent to your email address.';
+$wb['pw_reset_act'] = 'You have been sent a password reset link. Please visit the link to confirm your password reset request.';
 $wb['pw_error']             = 'Username or email address does not match.';
 $wb['pw_error_noinput']     = 'Please enter email address and username.';
+$wb['pw_reset_error_smtp_connection']   = 'There was a connection problem when trying to send an email pertaining to your password reset request.';
 $wb['pw_reset_mail_msg']    = 'The password to your ISPConfig 3 control panel account has been reset. The new password is: ';
 $wb['pw_reset_mail_title']  = 'ISPConfig 3 Control panel password has been reset';
 $wb['pw_reset_act_mail_title']  = 'Confirm ISPConfig 3 Control panel password reset';
 $wb['pw_reset_act_mail_msg']    = 'Please confirm that your want to reset your ISPConfig 3 control panel account password by visiting the following activation link: ';
 $wb['user_regex_error'] = 'Username contains unallowed characters or is longer than 64 characters.';
 $wb['pw_error_length']  = 'The password length is < 1 or > 256 characters.';
-$wb['email_error'] = 'Email contains unallowed characters or has a invalid format.';
+$wb['email_error'] = 'Email contains unallowed characters or has an invalid format.';
 $wb['login_txt']	= "Login";
 $wb['username_txt']	= "Username";
 $wb['password_txt']	= "Password";
@@ -28,7 +29,7 @@ $wb['error_maintenance_mode'] = 'This ISPConfig installation is currently under
 $wb['theme_not_compatible'] = 'The chosen theme is not compatible with the current ISPConfig version. Please check for a new version of the theme.<br />The default theme as been activated automatically.';
 $wb['stay_logged_in_txt'] = 'Keep me logged in';
 $wb['lost_password_function_disabled_txt'] = 'The lost password function is not available for this user.';
-$wb['lost_password_function_wait_txt'] = 'You cannot request a new password, yet. Please wait a few minutes.';
+$wb['lost_password_function_wait_txt'] = 'You cannot request a new password yet. Please wait a few minutes.';
 $wb['lost_password_function_expired_txt'] = 'This activation link has expired. Please request a new one.';
 $wb['lost_password_function_denied_txt'] = 'This activation link is not valid.';
 ?>
diff --git a/interface/web/login/lib/lang/es.lng b/interface/web/login/lib/lang/es.lng
index c7576d509d..98c94443c5 100755
--- a/interface/web/login/lib/lang/es.lng
+++ b/interface/web/login/lib/lang/es.lng
@@ -16,6 +16,7 @@ $wb['pw_button_txt'] = 'Reenviar contraseña';
 $wb['pw_error'] = 'El usuario o la cuenta de correo no coinciden.';
 $wb['pw_error_length'] = 'La longitud de la contraseña es superior a 64 caracteres.';
 $wb['pw_error_noinput'] = 'Por favor, introduzca la dirección de correo y el nombre de usuario.';
+$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.';
 $wb['pw_lost_txt'] = 'Olvidé la contraseña';
 $wb['pw_reset'] = 'La nueva contraseña ha sido generada y enviada a su cuenta de correo.';
 $wb['pw_reset_mail_msg'] = 'La contraseña de su cuenta de panel de control ISPConfig 3 ha sido regenerada. La nueva contraseña es: ';
diff --git a/interface/web/login/lib/lang/fi.lng b/interface/web/login/lib/lang/fi.lng
index e2cc04da8a..8198dd4822 100755
--- a/interface/web/login/lib/lang/fi.lng
+++ b/interface/web/login/lib/lang/fi.lng
@@ -7,6 +7,7 @@ $wb['pass_reset_txt'] = 'Uusi salasana luodaan ja lähetetään asiakastiedoissa
 $wb['pw_reset'] = 'Salasana on vaihdettu ja lähetetty sähköpostiisi.';
 $wb['pw_error'] = 'Käyttäjätunnusta tai sähköpostiosoitetta ei löydy.';
 $wb['pw_error_noinput'] = 'Anna sähköpostiosoite ja käyttäjätunnus.';
+$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.';
 $wb['pw_reset_mail_msg'] = 'Käyttäjätunnuksesi salasana ISPConfi3 Hallintapaneeliin on vaihdettu. Uusi salasanasi: ';
 $wb['pw_reset_mail_title'] = 'ISPConfi3 Hallintapaneelin salasana on vaihdettu.';
 $wb['user_regex_error'] = 'Käyttäjänimi sisältää kiellettyjä merkkejä tai on yli 64 merkkiä pitkä.';
diff --git a/interface/web/login/lib/lang/fr.lng b/interface/web/login/lib/lang/fr.lng
index ac4f3c2d78..f067751aa9 100644
--- a/interface/web/login/lib/lang/fr.lng
+++ b/interface/web/login/lib/lang/fr.lng
@@ -7,6 +7,7 @@ $wb['pass_reset_txt'] = 'Un nouveau mot de passe vous sera envoyé à votre adre
 $wb['pw_reset'] = 'Le mot de passe a été réinitialisé, et vous a été envoyé à votre adresse e-mail.';
 $wb['pw_error'] = 'Le nom d’utilisateur ou l’adresse e-mail ne correspondent pas.';
 $wb['pw_error_noinput'] = 'Saisissez votre nom d’utilisateur et votre adresse e-mail.';
+$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.';
 $wb['pw_reset_mail_msg'] = 'Le mot de passe d’accès à votre Panel a été réinitialisé. Le nouveau mot de passe est : ';
 $wb['pw_reset_mail_title'] = 'Le mot de passe d’accès à votre Panel a été réinitialisé.';
 $wb['user_regex_error'] = 'Le nom d’utilisateur contient des caractères incorrects ou contient plus de 64 caractères.';
diff --git a/interface/web/login/lib/lang/hr.lng b/interface/web/login/lib/lang/hr.lng
index a2920e6178..193123557a 100644
--- a/interface/web/login/lib/lang/hr.lng
+++ b/interface/web/login/lib/lang/hr.lng
@@ -7,6 +7,7 @@ $wb['pass_reset_txt'] = 'Nova šifra će biti generirana i poslana na email ako
 $wb['pw_reset'] = 'Šifra je resetirana i poslana na vašu email adresu.';
 $wb['pw_error'] = 'Korisničko ime ili šifra nisu ispravni.';
 $wb['pw_error_noinput'] = 'Unesite email adresu i korisničko ime.';
+$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.';
 $wb['pw_reset_mail_msg'] = 'Šifra za ISPConfig 3 control panel račun je resetirana. Vaša nova šifra je: ';
 $wb['pw_reset_mail_title'] = 'Resetirana ISPConfig 3 control panel Å¡ifra.';
 $wb['user_regex_error'] = 'Korisničko ime sadrži nedozvoljene znakove ili je dulje od 64 znaka.';
diff --git a/interface/web/login/lib/lang/hu.lng b/interface/web/login/lib/lang/hu.lng
index 7548c01de3..b6adb6b19d 100644
--- a/interface/web/login/lib/lang/hu.lng
+++ b/interface/web/login/lib/lang/hu.lng
@@ -7,6 +7,7 @@ $wb['pass_reset_txt'] = 'Új jelszót generáltunk és email címére elküldjü
 $wb['pw_reset'] = 'Jelszavát reseteltük és elküldtük email címére.';
 $wb['pw_error'] = 'Felhasználónév vagy email cím nem egyezik.';
 $wb['pw_error_noinput'] = 'Kérem üsse be email címét és felahsználónevét.';
+$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.';
 $wb['pw_reset_mail_msg'] = 'The password to your ISPConfig 3 control panel hozzáfárás módosítva. Az új jelszó: ';
 $wb['pw_reset_mail_title'] = 'ISPConfig 3 Control panel jelszó módosítva.';
 $wb['user_regex_error'] = 'Felhasználónév érvénytelen karaktereket tartalmaz, vagy több mint 64 karakter';
diff --git a/interface/web/login/lib/lang/id.lng b/interface/web/login/lib/lang/id.lng
index accdcbc3c4..35e3675a9d 100644
--- a/interface/web/login/lib/lang/id.lng
+++ b/interface/web/login/lib/lang/id.lng
@@ -7,6 +7,7 @@ $wb['pass_reset_txt'] = 'Kata sandi baru telah dibuat dan dikirim ke alamat emai
 $wb['pw_reset'] = 'Kata sandi telah direset dan telah dikirim ke alamat email Anda.';
 $wb['pw_error'] = 'Nama pengguna atau alamat email tidak cocok.';
 $wb['pw_error_noinput'] = 'Masukkan alamat email dan nama pengguna.';
+$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.';
 $wb['pw_reset_mail_msg'] = 'Kata sandi untuk control panel ISPConfig 3 Anda telah direset. Kata sandi yang baru adalah: ';
 $wb['pw_reset_mail_title'] = 'Kata sandi Control Panel ISPConfig 3 telah direset.';
 $wb['user_regex_error'] = 'Nama Pengguna mengandung karakter yang tidak diperbolehkan atau lebih dari 64 karakter.';
diff --git a/interface/web/login/lib/lang/it.lng b/interface/web/login/lib/lang/it.lng
index 6d23aa0ccb..0d3ec93c9b 100644
--- a/interface/web/login/lib/lang/it.lng
+++ b/interface/web/login/lib/lang/it.lng
@@ -7,6 +7,7 @@ $wb['pass_reset_txt'] = 'Una nuova password sarà  generata e spedita alla tua e
 $wb['pw_reset'] = 'La password è stata reimpostata e spedita al tuo indirizzo mail.';
 $wb['pw_error'] = 'Nome utente o e-mail non corrispondenti.';
 $wb['pw_error_noinput'] = 'Inserisci nome utente e indirizzo e-mail.';
+$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.';
 $wb['pw_reset_mail_msg'] = 'La password nel tuo pannello di controllo è stata reimpostata. La nuova password è: ';
 $wb['pw_reset_mail_title'] = 'Password del pannello di controllo reimpostata.';
 $wb['user_regex_error'] = 'Nome utente contenente caratteri non permessi oppure più lungo di 64 caratteri.';
diff --git a/interface/web/login/lib/lang/ja.lng b/interface/web/login/lib/lang/ja.lng
index 8318ef9263..4b9e2c6236 100644
--- a/interface/web/login/lib/lang/ja.lng
+++ b/interface/web/login/lib/lang/ja.lng
@@ -7,6 +7,7 @@ $wb['pass_reset_txt'] = '新しいパスワードをメールで送りました
 $wb['pw_reset'] = 'パスワードをリセットしました。新しいパスワードをメールで送信したのでメールボックスを確認してください。';
 $wb['pw_error'] = 'ユーザー名またはメールアドレスが一致しません。';
 $wb['pw_error_noinput'] = 'メールアドレスとユーザー名を入力してください。';
+$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.';
 $wb['pw_reset_mail_msg'] = 'ISPConfig 3 のコントロールパネルのパスワードをリセットしました。新しいパスワードは次の通りです:';
 $wb['pw_reset_mail_title'] = 'ISPConfig3 のコントロールパネルのパスワードをリセットしました。';
 $wb['user_regex_error'] = 'ユーザー名に不正な文字が含まれているか、または64文字を超えています。';
diff --git a/interface/web/login/lib/lang/nl.lng b/interface/web/login/lib/lang/nl.lng
index ca641e3b02..2c98275fd4 100644
--- a/interface/web/login/lib/lang/nl.lng
+++ b/interface/web/login/lib/lang/nl.lng
@@ -7,6 +7,7 @@ $wb['pass_reset_txt'] = 'Een nieuw wachtwoord zal worden gegenereerd en per e-ma
 $wb['pw_reset'] = 'Het wachtwoord is gereset en is verzonden naar uw e-mailadres.';
 $wb['pw_error'] = 'Gebruikersnaam of e-mailadres komt niet overeen.';
 $wb['pw_error_noinput'] = 'Voer a.u.b. een e-mailadres en gebruikersnaam in.';
+$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.';
 $wb['pw_reset_mail_msg'] = 'Het wachtwoord  dat toegang biedt tot uw ISPConfig 3 control panel account is gereset. Het nieuwe wachtwoord is: ';
 $wb['pw_reset_mail_title'] = 'ISPConfig 3 Control panel wachtwoord is gereset.';
 $wb['user_regex_error'] = 'Gebruikersnaam bevat karakters die niet zijn toegestaan of is langer dan 64 karakters.';
diff --git a/interface/web/login/lib/lang/pl.lng b/interface/web/login/lib/lang/pl.lng
index 702b50117f..2367ede54d 100644
--- a/interface/web/login/lib/lang/pl.lng
+++ b/interface/web/login/lib/lang/pl.lng
@@ -3,6 +3,7 @@ $wb['pass_reset_txt'] = 'Nowe hasło zostanie wygenerowane i wysłane na Twój a
 $wb['pw_reset'] = 'Nowe hasło zostało wygenerowane i wysłane na Twój adres e-mail.';
 $wb['pw_error'] = 'Nazwa użytkownika lub e-mail nie pasują do siebie.';
 $wb['pw_error_noinput'] = 'Podaj nazwę użytkownika i adres e-mail.';
+$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.';
 $wb['pw_reset_mail_msg'] = 'Hasło do Twojego panelu w ISPConfig 3 zostało zresetowane. Twoje nowe hasło to: ';
 $wb['pw_reset_mail_title'] = 'Hasło do panelu w ISPConfig 3 zostało zresetowane.';
 $wb['user_regex_error'] = 'Nazwa użytkownika zawiera niedozwolone znaki lub jest dłuższa niż 64 znaki.';
diff --git a/interface/web/login/lib/lang/pt.lng b/interface/web/login/lib/lang/pt.lng
index 576d7ca44c..4be018a50c 100644
--- a/interface/web/login/lib/lang/pt.lng
+++ b/interface/web/login/lib/lang/pt.lng
@@ -7,6 +7,7 @@ $wb['pass_reset_txt'] = 'Uma nova senha foi gerada e ser-lhe-á enviada para o c
 $wb['pw_reset'] = 'Senha restabelecida! Ser-lhe-á enviada para o correio eletrônico registado no sistema.';
 $wb['pw_error'] = 'Nome de utilizador ou correio eletrônico não coincidem.';
 $wb['pw_error_noinput'] = 'Favor informar nome de utilizador e endereço de correio válidos.';
+$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.';
 $wb['pw_reset_mail_msg'] = 'A senha do painel de controle foi restabelecida. A nova senha é: ';
 $wb['pw_reset_mail_title'] = 'A senha do painel de controle foi restabelecida.';
 $wb['user_regex_error'] = 'O nome de utilizador contém mais de 64 caracteres ou contém caracteres inválidos.';
diff --git a/interface/web/login/lib/lang/ro.lng b/interface/web/login/lib/lang/ro.lng
index 3eb550194a..7676d928d5 100644
--- a/interface/web/login/lib/lang/ro.lng
+++ b/interface/web/login/lib/lang/ro.lng
@@ -7,6 +7,7 @@ $wb['pass_reset_txt'] = 'O noua parola va fi generata si trimisa catre mail-ul t
 $wb['pw_reset'] = 'Parola a fost schimbata si trimisa la mail-ul tau.';
 $wb['pw_error'] = 'Username sau  email nu s epotrivesc';
 $wb['pw_error_noinput'] = 'introduceti email address si username.';
+$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.';
 $wb['pw_reset_mail_msg'] = 'Parola la panoul de control a fost resetata . Noua parola este : ';
 $wb['pw_reset_mail_title'] = 'parola panoului de control a fost schimbata';
 $wb['user_regex_error'] = 'Username contine caractere nepermise sau are mai mult de 64 caractere';
diff --git a/interface/web/login/lib/lang/ru.lng b/interface/web/login/lib/lang/ru.lng
index ab19c92b13..4f1b4e86fc 100644
--- a/interface/web/login/lib/lang/ru.lng
+++ b/interface/web/login/lib/lang/ru.lng
@@ -7,6 +7,7 @@ $wb['pass_reset_txt'] = 'Новый пароль будет сгенериров
 $wb['pw_reset'] = 'Пароль был сброшен и и отправлен вам на почту.';
 $wb['pw_error'] = 'Логин или E-mail адрес не совпадают.';
 $wb['pw_error_noinput'] = 'Введите E-mail адрес и логин.';
+$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.';
 $wb['pw_reset_mail_msg'] = 'Пароль в панель управления ISPConfig 3Был сброшен. Новый пароль: ';
 $wb['pw_reset_mail_title'] = 'Пароль для контрольной панели ISPConfig 3 был сброшен.';
 $wb['user_regex_error'] = 'Логин содержит неправильные символы, или длиннее 64 символов.';
diff --git a/interface/web/login/lib/lang/se.lng b/interface/web/login/lib/lang/se.lng
index 280332789b..4f8a8a4443 100644
--- a/interface/web/login/lib/lang/se.lng
+++ b/interface/web/login/lib/lang/se.lng
@@ -7,6 +7,7 @@ $wb['pass_reset_txt'] = 'A new password will be generated and send to your email
 $wb['pw_reset'] = 'Lösenordet har återställts och skickats till din epostadress.';
 $wb['pw_error'] = 'Användarenmn eller lösenord matchar inte.';
 $wb['pw_error_noinput'] = 'Vänligen fyll i epostadress och användarnamn.';
+$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.';
 $wb['pw_reset_mail_msg'] = 'The password to your ISPConfig 3 control panel account has been reset. The new password is: ';
 $wb['pw_reset_mail_title'] = 'ISPConfig 3 Control panel password has been reset.';
 $wb['user_regex_error'] = 'Username contains unallowed characters or is longer then 64 characters.';
diff --git a/interface/web/login/lib/lang/sk.lng b/interface/web/login/lib/lang/sk.lng
index b03a645564..8c211b19be 100644
--- a/interface/web/login/lib/lang/sk.lng
+++ b/interface/web/login/lib/lang/sk.lng
@@ -7,6 +7,7 @@ $wb['pass_reset_txt'] = 'Nové heslo bude vytvorené a poslané na e-mailovú ad
 $wb['pw_reset'] = 'Heslo bolo resetnuté a posielané na e-mailovú adresu.';
 $wb['pw_error'] = 'Užívateľské meno alebo e-mailová adresa nezodpovedá.';
 $wb['pw_error_noinput'] = 'Prosím, zadajte e-mailovú adresu a Užívateľské meno.';
+$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.';
 $wb['pw_reset_mail_msg'] = 'Heslo k svojmu účtu na ovládacom paneli bol resetnuté. Nové heslo je:';
 $wb['pw_reset_mail_title'] = 'Heslo ovládacieho panelu bolo resetnuté.';
 $wb['user_regex_error'] = 'Užívateľské meno obsahuje neplatné znaky, alebo je dlhšia ako 64 znakov.';
diff --git a/interface/web/login/lib/lang/tr.lng b/interface/web/login/lib/lang/tr.lng
index 863a6310d5..7bcc75f694 100644
--- a/interface/web/login/lib/lang/tr.lng
+++ b/interface/web/login/lib/lang/tr.lng
@@ -8,6 +8,7 @@ $wb['pw_reset'] = 'Parolanız sıfırlandı ve e-posta adresinize gönderildi.';
 $wb['pw_reset_act'] = 'Size bir etkinleştirme bağlantısı gönderildi. Parola isteğinizi onaylamak için bağlantıya tıklayın.';
 $wb['pw_error'] = 'Kullanıcı adı ya da e-posta adresiniz doğru değil.';
 $wb['pw_error_noinput'] = 'Lütfen e-posta adresinizi ya da kullanıcı adınızı yazın.';
+$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.';
 $wb['pw_reset_mail_msg'] = 'ISPConfig 3 Kontrol Paneli parolanız sıfırlandı. Yeni parolanız: ';
 $wb['pw_reset_mail_title'] = 'ISPConfig 3 Kontrol Paneli parolanız sıfırlandı';
 $wb['pw_reset_act_mail_title'] = 'ISPConfig 3 Control Panel parola sıfırlama isteğini onaylayın';
diff --git a/interface/web/login/password_reset.php b/interface/web/login/password_reset.php
index 1550ae8af2..0a15b0c52b 100644
--- a/interface/web/login/password_reset.php
+++ b/interface/web/login/password_reset.php
@@ -71,8 +71,7 @@ if(isset($_POST['username']) && $_POST['username'] != '' && $_POST['email'] != '
 			$username = $client['username'];
 			$password_hash = sha1(uniqid('ispc_pw'));
 			$app->db->query("UPDATE sys_user SET lost_password_reqtime = NOW(), lost_password_hash = ? WHERE username = ?", $password_hash, $username);
-			$app->tpl->setVar("message", $wb['pw_reset_act']);
-			
+
 			$server_domain = (isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : $_SERVER['HTTP_HOST']);
 			if($server_domain == '_') {
 				$tmp = explode(':',$_SERVER["HTTP_HOST"]);
@@ -81,9 +80,9 @@ if(isset($_POST['username']) && $_POST['username'] != '' && $_POST['email'] != '
 			}
 			if(!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != 'on') $server_domain = 'http://' . $server_domain;
 			else $server_domain = 'https://' . $server_domain;
-			
+
 			if(isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] != '443') $server_domain .= ':' . $_SERVER['SERVER_PORT'];
-			
+
 			$app->uses('getconf,ispcmail');
 			$server_config_array = $app->getconf->get_global_config();
 			$mail_config = $server_config_array['mail'];
@@ -94,10 +93,14 @@ if(isset($_POST['username']) && $_POST['username'] != '' && $_POST['email'] != '
 			$app->ispcmail->setSender($mail_config['admin_mail'], $mail_config['admin_name']);
 			$app->ispcmail->setSubject($wb['pw_reset_act_mail_title']);
 			$app->ispcmail->setMailText($wb['pw_reset_act_mail_msg'].$server_domain . '/login/password_reset.php?username=' . urlencode($username) . '&hash=' . urlencode($password_hash));
-			$app->ispcmail->send(array($client['contact_name'] => $client['email']));
+			$send_result = $app->ispcmail->send(array($client['contact_name'] => $client['email']));
 			$app->ispcmail->finish();
 
-			$app->tpl->setVar("msg", $wb['pw_reset_act']);
+			if($send_result !== false) {
+				$app->tpl->setVar("msg", $wb['pw_reset_act']);
+			} else {
+				$app->tpl->setVar("error", $wb['pw_reset_error_smtp_connection']);
+			}
 		} else {
 			$app->tpl->setVar("error", $wb['pw_error']);
 		}
@@ -132,7 +135,6 @@ if(isset($_POST['username']) && $_POST['username'] != '' && $_POST['email'] != '
 			$username = $client['username'];
 			$app->db->query("UPDATE sys_user SET passwort = ?, lost_password_hash = '', lost_password_reqtime = NULL WHERE username = ?", $new_password_encrypted, $username);
 			$app->db->query("UPDATE client SET password = ? WHERE username = ?", $new_password_encrypted, $username);
-			$app->tpl->setVar("message", $wb['pw_reset']);
 
 			$app->uses('getconf,ispcmail');
 			$mail_config = $server_config_array['mail'];
@@ -143,11 +145,17 @@ if(isset($_POST['username']) && $_POST['username'] != '' && $_POST['email'] != '
 			$app->ispcmail->setSender($mail_config['admin_mail'], $mail_config['admin_name']);
 			$app->ispcmail->setSubject($wb['pw_reset_mail_title']);
 			$app->ispcmail->setMailText($wb['pw_reset_mail_msg'].$new_password);
-			$app->ispcmail->send(array($client['contact_name'] => $client['email']));
+			$send_result = $app->ispcmail->send(array($client['contact_name'] => $client['email']));
 			$app->ispcmail->finish();
 
 			$app->plugin->raiseEvent('password_reset', true);
-			$app->tpl->setVar("msg", $wb['pw_reset']);
+
+			if($send_result !== false) {
+				$app->tpl->setVar("msg", $wb['pw_reset']);
+			} else {
+				$app->tpl->setVar("error", $wb['pw_reset_error_smtp_connection']);
+			}
+
 		} else {
 			$app->tpl->setVar("error", $wb['pw_error']);
 		}
-- 
GitLab


From f6ec140f871e5a4f5c2d2162129b0d11274783c4 Mon Sep 17 00:00:00 2001
From: Herman van Rink <rink@initfour.nl>
Date: Wed, 29 Apr 2020 15:38:02 +0200
Subject: [PATCH 190/242] Refactor multiple TODOs into two.

This removes duplication of the zone_file_prefix var. It might be nice to make it configurable in a follow up.
---
 server/plugins-available/bind_plugin.inc.php | 97 +++++---------------
 1 file changed, 23 insertions(+), 74 deletions(-)

diff --git a/server/plugins-available/bind_plugin.inc.php b/server/plugins-available/bind_plugin.inc.php
index e8b72b5dbc..f2dc603ec5 100644
--- a/server/plugins-available/bind_plugin.inc.php
+++ b/server/plugins-available/bind_plugin.inc.php
@@ -86,11 +86,8 @@ class bind_plugin {
 		//* load the server configuration options
 		$dns_config = $app->getconf->get_server_config($conf["server_id"], 'dns');
 		
-		//TODO : change this when distribution information has been integrated into server record
-		$filespre = (file_exists('/etc/gentoo-release')) ? 'pri/' : 'pri.';
-		
 		$domain = substr($data['new']['origin'], 0, strlen($data['new']['origin'])-1);
-		if (!file_exists($dns_config['bind_zonefiles_dir'].'/'.$filespre.$domain)) return false;
+		if (!file_exists($dns_config['bind_zonefiles_dir'].'/'.$this->zone_file_prefix().$domain)) return false;
 		
 		//* Check Entropy
 		if (file_get_contents('/proc/sys/kernel/random/entropy_avail') < 400) {
@@ -129,9 +126,7 @@ class bind_plugin {
 		//* load the server configuration options
 		$dns_config = $app->getconf->get_server_config($conf["server_id"], 'dns');
 		
-		//TODO : change this when distribution information has been integrated into server record
-		$filespre = (file_exists('/etc/gentoo-release')) ? 'pri/' : 'pri.';
-		
+		$filespre = $this->zone_file_prefix();
 		$domain = substr($data['new']['origin'], 0, strlen($data['new']['origin'])-1);
 		if (!file_exists($dns_config['bind_zonefiles_dir'].'/'.$filespre.$domain)) return false;
 		
@@ -168,9 +163,7 @@ class bind_plugin {
 		//* load the server configuration options
 		$dns_config = $app->getconf->get_server_config($conf["server_id"], 'dns');
 		
-		//TODO : change this when distribution information has been integrated into server record
-		$filespre = (file_exists('/etc/gentoo-release')) ? 'pri/' : 'pri.';
-		
+		$filespre = $this->zone_file_prefix();
 		$domain = substr($data['new']['origin'], 0, strlen($data['new']['origin'])-1);
 		if (!file_exists($dns_config['bind_zonefiles_dir'].'/'.$filespre.$domain)) return false;
 		
@@ -203,13 +196,10 @@ class bind_plugin {
 		//* load the server configuration options
 		$dns_config = $app->getconf->get_server_config($conf["server_id"], 'dns');
 		
-		//TODO : change this when distribution information has been integrated into server record
-		$filespre = (file_exists('/etc/gentoo-release')) ? 'pri/' : 'pri.';
-		
 		$domain = substr($data['new']['origin'], 0, strlen($data['new']['origin'])-1);
 		
 		unlink($dns_config['bind_zonefiles_dir'].'/K'.$domain.'.+*');
-		unlink($dns_config['bind_zonefiles_dir'].'/'.$filespre.$domain.'.signed');
+		unlink($dns_config['bind_zonefiles_dir'].'/'.$this->zone_file_prefix().$domain.'.signed');
 		unlink($dns_config['bind_zonefiles_dir'].'/dsset-'.$domain.'.');
 		
 		if ($app->dbmaster !== $app->db) $app->dbmaster->query('UPDATE dns_soa SET dnssec_info=\'\', dnssec_initialized=\'N\' WHERE id=?', intval($data['new']['id']));
@@ -278,13 +268,7 @@ class bind_plugin {
 			}
 			$tpl->setLoop('zones', $records);
 
-			//TODO : change this when distribution information has been integrated into server record
-			if (file_exists('/etc/gentoo-release')) {
-				$filename = $dns_config['bind_zonefiles_dir'].'/pri/'.str_replace("/", "_", substr($zone['origin'], 0, -1));
-			}
-			else {
-				$filename = $dns_config['bind_zonefiles_dir'].'/pri.'.str_replace("/", "_", substr($zone['origin'], 0, -1));
-			}
+			$filename = $dns_config['bind_zonefiles_dir'].'/' . $this->zone_file_prefix() . str_replace("/", "_", substr($zone['origin'], 0, -1));
 
 			$old_zonefile = @file_get_contents($filename);
 			file_put_contents($filename, $tpl->grab());
@@ -327,13 +311,7 @@ class bind_plugin {
 		}
 		else if ($data['new']['dnssec_wanted'] == 'Y' && $data['old']['dnssec_initialized'] == 'N') $this->soa_dnssec_create($data);
 		else if ($data['new']['dnssec_wanted'] == 'N' && $data['old']['dnssec_initialized'] == 'Y') {	//delete old signed file if dnssec is no longer wanted
-			//TODO : change this when distribution information has been integrated into server record
-			if (file_exists('/etc/gentoo-release')) {
-				$filename = $dns_config['bind_zonefiles_dir'].'/pri/'.str_replace("/", "_", substr($data['old']['origin'], 0, -1));
-			}
-			else {
-				$filename = $dns_config['bind_zonefiles_dir'].'/pri.'.str_replace("/", "_", substr($data['old']['origin'], 0, -1));
-			}
+			$filename = $dns_config['bind_zonefiles_dir'].'/' . $this->zone_file_prefix() . str_replace("/", "_", substr($data['old']['origin'], 0, -1));
 			if(is_file($filename.'.signed')) unlink($filename.'.signed');
  		} else if ($data['new']['dnssec_wanted'] == 'Y') $this->soa_dnssec_update($data);
 		// END DNSSEC
@@ -345,13 +323,7 @@ class bind_plugin {
 
 		//* Delete old domain file, if domain name has been changed
 		if($data['old']['origin'] != $data['new']['origin']) {
-			//TODO : change this when distribution information has been integrated into server record
-			if (file_exists('/etc/gentoo-release')) {
-				$filename = $dns_config['bind_zonefiles_dir'].'/pri/'.str_replace("/", "_", substr($data['old']['origin'], 0, -1));
-			}
-			else {
-				$filename = $dns_config['bind_zonefiles_dir'].'/pri.'.str_replace("/", "_", substr($data['old']['origin'], 0, -1));
-			}
+			$filename = $dns_config['bind_zonefiles_dir'].'/' . $this->zone_file_prefix() . str_replace("/", "_", substr($data['old']['origin'], 0, -1));
 
 			if(is_file($filename)) unlink($filename);
 			if(is_file($filename.'.err')) unlink($filename.'.err');
@@ -378,14 +350,7 @@ class bind_plugin {
 		$this->write_named_conf($data, $dns_config);
 
 		//* Delete the domain file
-		//TODO : change this when distribution information has been integrated into server record
-		if (file_exists('/etc/gentoo-release')) {
-			$zone_file_name = $dns_config['bind_zonefiles_dir'].'/pri/'.str_replace("/", "_", substr($data['old']['origin'], 0, -1));
-		}
-		else {
-			$zone_file_name = $dns_config['bind_zonefiles_dir'].'/pri.'.str_replace("/", "_", substr($data['old']['origin'], 0, -1));
-		}
-
+		$zone_file_name = $dns_config['bind_zonefiles_dir'].'/' . $this->zone_file_prefix() . str_replace("/", "_", substr($data['old']['origin'], 0, -1));
 		if(is_file($zone_file_name)) unlink($zone_file_name);
 		if(is_file($zone_file_name.'.err')) unlink($zone_file_name.'.err');
 		$app->log("Deleting BIND domain file: ".$zone_file_name, LOGLEVEL_DEBUG);
@@ -425,23 +390,12 @@ class bind_plugin {
 
 		//* Delete old domain file, if domain name has been changed
 		if($data['old']['origin'] != $data['new']['origin']) {
-			//TODO : change this when distribution information has been integrated into server record
-			if (file_exists('/etc/gentoo-release')) {
-				$filename = $dns_config['bind_zonefiles_dir'].'/sec/'.str_replace("/", "_", substr($data['old']['origin'], 0, -1));
-			}
-			else {
-				$filename = $dns_config['bind_zonefiles_dir'].'/slave/sec.'.str_replace("/", "_", substr($data['old']['origin'], 0, -1));
-			}
-
+			$filename = $dns_config['bind_zonefiles_dir'].'/' . $this->zone_file_prefix() . str_replace("/", "_", substr($data['old']['origin'], 0, -1));
 			if(is_file($filename)) unset($filename);
 		}
 
 		//* Ensure that the named slave directory is writable by the named user
-		if (file_exists('/etc/gentoo-release')) {
-			$slave_record_dir = $dns_config['bind_zonefiles_dir'].'/sec';
-		} else {
-			$slave_record_dir = $dns_config['bind_zonefiles_dir'].'/slave';
-		}
+		$slave_record_dir = $dns_config['bind_zonefiles_dir'].'/'.$this->slave_zone_file_prefix();
 		if(!@is_dir($slave_record_dir)) mkdir($slave_record_dir, 0770);
 		chown($slave_record_dir, $dns_config['bind_user']);
 		chgrp($slave_record_dir, $dns_config['bind_group']);
@@ -463,14 +417,7 @@ class bind_plugin {
 		$this->write_named_conf($data, $dns_config);
 
 		//* Delete the domain file
-		//TODO : change this when distribution information has been integrated into server record
-		if (file_exists('/etc/gentoo-release')) {
-			$zone_file_name = $dns_config['bind_zonefiles_dir'].'/sec/'.str_replace("/", "_", substr($data['old']['origin'], 0, -1));
-		}
-		else {
-			$zone_file_name = $dns_config['bind_zonefiles_dir'].'/slave/sec.'.str_replace("/", "_", substr($data['old']['origin'], 0, -1));
-		}
-
+		$zone_file_name = $dns_config['bind_zonefiles_dir'].'/' . $this->slave_zone_file_prefix() . str_replace("/", "_", substr($data['old']['origin'], 0, -1));
 		if(is_file($zone_file_name)) unlink($zone_file_name);
 		$app->log("Deleting BIND domain file for secondary zone: ".$zone_file_name, LOGLEVEL_DEBUG);
 
@@ -527,16 +474,8 @@ class bind_plugin {
 
 		//* Check if the current zone that triggered this function has at least one NS record
 
-		//TODO : change this when distribution information has been integrated into server record
-		if (file_exists('/etc/gentoo-release')) {
-			$pri_zonefiles_path = $dns_config['bind_zonefiles_dir'].'/pri/';
-			$sec_zonefiles_path = $dns_config['bind_zonefiles_dir'].'/sec/';
-
-		}
-		else {
-			$pri_zonefiles_path = $dns_config['bind_zonefiles_dir'].'/pri.';
-			$sec_zonefiles_path = $dns_config['bind_zonefiles_dir'].'/slave/sec.';
-		}
+		$pri_zonefiles_path = $dns_config['bind_zonefiles_dir'].'/'.$this->zone_file_prefix();
+		$sec_zonefiles_path = $dns_config['bind_zonefiles_dir'].'/'.$this->slave_zone_file_prefix();
 
 		//* Loop trough zones
 		foreach($tmps as $tmp) {
@@ -603,6 +542,16 @@ class bind_plugin {
 	}
 
 
+	function zone_file_prefix() {
+		//TODO : change this when distribution information has been integrated into server record
+		return	(file_exists('/etc/gentoo-release')) ? 'pri/' : 'pri.';
+	}
+	function slave_zone_file_prefix() {
+		//TODO : change this when distribution information has been integrated into server record
+		return	(file_exists('/etc/gentoo-release')) ? 'sec/' : 'slave/sec.';
+	}
+
+
 
 
 } // end class
-- 
GitLab


From 2548cc13b35e87138f49ab0475c7e807666d75a2 Mon Sep 17 00:00:00 2001
From: Thom Pol <thom@amsterdamtech.nl>
Date: Sun, 24 May 2020 19:48:18 +0200
Subject: [PATCH 191/242] Added translation option for form title

---
 ar_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++
 bg_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++
 br_system_config.lng | 95 ++++++++++++++++++++++++++++++++++++++++++
 ca_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++
 cz_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++
 de_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++
 dk_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++
 el_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++
 en_system_config.lng | 99 ++++++++++++++++++++++++++++++++++++++++++++
 es_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++
 fi_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++
 fr_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++
 hr_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++
 hu_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++
 id_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++
 it_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++
 ja_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++
 nl_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++
 pl_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++
 pt_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++
 ro_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++
 ru_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++
 se_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++
 sk_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++
 tr_system_config.lng | 90 ++++++++++++++++++++++++++++++++++++++++
 25 files changed, 2396 insertions(+)
 create mode 100644 ar_system_config.lng
 create mode 100644 bg_system_config.lng
 create mode 100644 br_system_config.lng
 create mode 100644 ca_system_config.lng
 create mode 100644 cz_system_config.lng
 create mode 100644 de_system_config.lng
 create mode 100644 dk_system_config.lng
 create mode 100644 el_system_config.lng
 create mode 100644 en_system_config.lng
 create mode 100644 es_system_config.lng
 create mode 100644 fi_system_config.lng
 create mode 100644 fr_system_config.lng
 create mode 100644 hr_system_config.lng
 create mode 100644 hu_system_config.lng
 create mode 100644 id_system_config.lng
 create mode 100644 it_system_config.lng
 create mode 100644 ja_system_config.lng
 create mode 100644 nl_system_config.lng
 create mode 100644 pl_system_config.lng
 create mode 100644 pt_system_config.lng
 create mode 100644 ro_system_config.lng
 create mode 100644 ru_system_config.lng
 create mode 100644 se_system_config.lng
 create mode 100644 sk_system_config.lng
 create mode 100644 tr_system_config.lng

diff --git a/ar_system_config.lng b/ar_system_config.lng
new file mode 100644
index 0000000000..3a7ef0796c
--- /dev/null
+++ b/ar_system_config.lng
@@ -0,0 +1,96 @@
+<?php
+$wb['system_config_title'] = 'System Config';
+$wb['system_config_desc_txt'] = '';
+$wb['warning'] = 'Edit these values carefully! Do not remove the prefixes on a systems with more then one client.';
+$wb['dbname_prefix_txt'] = 'Database name prefix';
+$wb['dbuser_prefix_txt'] = 'Database user prefix';
+$wb['shelluser_prefix_txt'] = 'Shell user prefix';
+$wb['ftpuser_prefix_txt'] = 'FTP user prefix';
+$wb['dbname_prefix_error_regex'] = 'Char not allowed in database name prefix.';
+$wb['dbuser_prefix_error_regex'] = 'Char not allowed in database user prefix.';
+$wb['ftpuser_prefix_error_regex'] = 'Char not allowed in ftp user prefix.';
+$wb['shelluser_prefix_error_regex'] = 'Char not allowed in shell user prefix.';
+$wb['dblist_phpmyadmin_link_txt'] = 'Link to phpmyadmin in DB list';
+$wb['mailboxlist_webmail_link_txt'] = 'Link to webmail in Mailbox list';
+$wb['webmail_url_txt'] = 'Webmail URL';
+$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL';
+$wb['use_domain_module_txt'] = 'Use the domain-module to add new domains';
+$wb['use_domain_module_hint'] = 'If you use this module, your customers can only select one of the domains the admin creates for them. They cannot free edit the domain-field.You have to re-login after changing this value, to make the changes visible.';
+$wb['new_domain_txt'] = 'HTML to create a new domain';
+$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
+$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)';
+$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)';
+$wb['webdavuser_prefix_txt'] = 'Webdav user prefix';
+$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.';
+$wb['webftp_url_txt'] = 'WebFTP URL';
+$wb['enable_custom_login_txt'] = 'Allow custom login name';
+$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list';
+$wb['mailmailinglist_url_txt'] = 'Mailing list URL';
+$wb['admin_mail_txt'] = 'Administrators e-mail';
+$wb['monitor_key_txt'] = 'Monitor keyword';
+$wb['admin_name_txt'] = 'Administrators name';
+$wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
+$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
+$wb['smtp_host_txt'] = 'SMTP host';
+$wb['smtp_port_txt'] = 'SMTP port';
+$wb['smtp_user_txt'] = 'SMTP user';
+$wb['smtp_pass_txt'] = 'SMTP password';
+$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP';
+$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.';
+$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
+$wb['tab_change_warning_txt'] = 'Tab change warning';
+$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
+$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
+$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
+$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
+$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
+$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
+$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
+$wb['use_loadindicator_txt'] = 'Use Load Indicator';
+$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.';
+$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.';
+$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
+$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details';
+$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details';
+$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details';
+$wb['webmail_url_error_regex'] = 'Invalid webmail URL';
+$wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
+$wb['webmail_url_note_txt'] = 'Placeholder:';
+$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
+$wb['customer_no_template_txt'] = 'Customer No. template';
+$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters';
+$wb['customer_no_start_txt'] = 'Customer No. start value';
+$wb['customer_no_counter_txt'] = 'Customer No. counter';
+$wb['session_timeout_txt'] = 'Session timeout (minutes)';
+$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
+$wb['No'] = 'No';
+$wb['min_password_length_txt'] = 'Minimum password length';
+$wb['min_password_strength_txt'] = 'Minimum password strength';
+$wb['company_name_txt'] = 'Company Name for the page title';
+$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites';
+$wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
+$wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
+$wb['login_link_error_regex'] = 'Invalid Link for Custom Login';
+$wb['default_mailserver_txt'] = 'Default Mailserver';
+$wb['default_webserver_txt'] = 'Default Webserver';
+$wb['default_dnsserver_txt'] = 'Default DNS Server';
+$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['default_dbserver_txt'] = 'Default Database Server';
+$wb['ca_name_txt'] = 'Name';
+$wb['ca_issue_txt'] = 'Issue';
+$wb['ca_wildcard_txt'] = 'Use Wildcard';
+$wb['ca_critical_txt'] = 'Strict Check';
+$wb['ca_iodef_txt'] = 'iodef';
+$wb['active_txt'] = 'Aktive';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
+?>
diff --git a/bg_system_config.lng b/bg_system_config.lng
new file mode 100644
index 0000000000..4e6add8a6d
--- /dev/null
+++ b/bg_system_config.lng
@@ -0,0 +1,96 @@
+<?php
+$wb['system_config_title'] = 'System Config';
+$wb['warning'] = 'Редактирай тези променливи внимателно! Не премахвай префиксите на системата.';
+$wb['dbname_prefix_txt'] = 'Име на префикса в базата данни';
+$wb['dbuser_prefix_txt'] = 'Потребителски префикс в базата данни';
+$wb['shelluser_prefix_txt'] = 'Shell user prefix';
+$wb['ftpuser_prefix_txt'] = 'Потребителски префикс на FTP';
+$wb['dbname_prefix_error_regex'] = 'Неразрешени символи в името на префикса.';
+$wb['dbuser_prefix_error_regex'] = 'Неразрешени символи в името на префикса.';
+$wb['ftpuser_prefix_error_regex'] = 'Неразрешени символи в името на ftp префикса.';
+$wb['shelluser_prefix_error_regex'] = 'Неразрешени символи в името на shell префикса.';
+$wb['dblist_phpmyadmin_link_txt'] = 'Link to phpmyadmin in DB list';
+$wb['mailboxlist_webmail_link_txt'] = 'Link to webmail in Mailbox list';
+$wb['webmail_url_txt'] = 'Webmail URL';
+$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL';
+$wb['use_domain_module_txt'] = 'Use the domain-module to add new domains';
+$wb['use_domain_module_hint'] = 'Ако използвате този модул, вашите клиенти могат да изберет само един от домейните, които администратора създава за тях. Те не могат да освободят и редактират домейн - полето. Вие , трябва отново да влезете след промяна на тази стойност, за да направите промените видими.';
+$wb['new_domain_txt'] = 'HTML to create a new domain';
+$wb['webdavuser_prefix_txt'] = 'Webdav user prefix';
+$wb['webdavuser_prefix_error_regex'] = 'Неразрешени символи в името на webdav префикса.';
+$wb['webftp_url_txt'] = 'WebFTP URL';
+$wb['monitor_key_txt'] = 'Monitor keyword';
+$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
+$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)';
+$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)';
+$wb['enable_custom_login_txt'] = 'Разреши различни имена за вход';
+$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list';
+$wb['mailmailinglist_url_txt'] = 'Мейлинг лист адрес URL';
+$wb['admin_mail_txt'] = 'Администраторски емаил';
+$wb['admin_name_txt'] = 'Администраторски имена';
+$wb['system_config_desc_txt'] = '';
+$wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
+$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
+$wb['smtp_host_txt'] = 'SMTP host';
+$wb['smtp_port_txt'] = 'SMTP port';
+$wb['smtp_user_txt'] = 'SMTP user';
+$wb['smtp_pass_txt'] = 'SMTP password';
+$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP';
+$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.';
+$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
+$wb['tab_change_warning_txt'] = 'Tab change warning';
+$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
+$wb['vhost_subdomains_txt'] = 'Create Subdomains as web site';
+$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
+$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
+$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
+$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
+$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
+$wb['use_loadindicator_txt'] = 'Use Load Indicator';
+$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.';
+$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.';
+$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
+$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details';
+$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details';
+$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details';
+$wb['webmail_url_error_regex'] = 'Invalid webmail URL';
+$wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
+$wb['webmail_url_note_txt'] = 'Placeholder:';
+$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
+$wb['customer_no_template_txt'] = 'Customer No. template';
+$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters';
+$wb['customer_no_start_txt'] = 'Customer No. start value';
+$wb['customer_no_counter_txt'] = 'Customer No. counter';
+$wb['session_timeout_txt'] = 'Session timeout (minutes)';
+$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
+$wb['No'] = 'No';
+$wb['min_password_length_txt'] = 'Minimum password length';
+$wb['min_password_strength_txt'] = 'Minimum password strength';
+$wb['company_name_txt'] = 'Company Name for the page title';
+$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites';
+$wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
+$wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
+$wb['login_link_error_regex'] = 'Invalid Link for Custom Login';
+$wb['default_mailserver_txt'] = 'Default Mailserver';
+$wb['default_webserver_txt'] = 'Default Webserver';
+$wb['default_dnsserver_txt'] = 'Default DNS Server';
+$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['default_dbserver_txt'] = 'Default Database Server';
+$wb['ca_name_txt'] = 'Name';
+$wb['ca_issue_txt'] = 'Issue';
+$wb['ca_wildcard_txt'] = 'Use Wildcard';
+$wb['ca_critical_txt'] = 'Strict Check';
+$wb['ca_iodef_txt'] = 'iodef';
+$wb['active_txt'] = 'Aktive';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
+?>
diff --git a/br_system_config.lng b/br_system_config.lng
new file mode 100644
index 0000000000..f5ed36e9ea
--- /dev/null
+++ b/br_system_config.lng
@@ -0,0 +1,95 @@
+<?php
+$wb['system_config_title'] = 'System Config';
+$wb['system_config_desc_txt'] = 'Configurações do Sistema';
+$wb['smtp_missing_admin_mail_txt'] = 'Por favor, insira um nome e e-mail do administrador se você usar smtp para envio dos e-mails do sistema.';
+$wb['dashboard_atom_url_admin_txt'] = 'URL do Dashboard atom (admin)';
+$wb['dashboard_atom_url_reseller_txt'] = 'URL do Dashboard atom (revendas)';
+$wb['dashboard_atom_url_client_txt'] = 'URL do Dashboard atom  (clientes)';
+$wb['warning'] = 'Edite estes valores com cuidado! Não remova os prefixos em um sistema com mais de um cliente!';
+$wb['tab_change_discard_txt'] = 'Descartar alterações nesta aba';
+$wb['tab_change_warning_txt'] = 'Alerta de alterações';
+$wb['tab_change_warning_note_txt'] = 'Exibir alertas de alterações nesta aba se qualquer dado for alterado pelo usuário.';
+$wb['dbname_prefix_txt'] = 'Prefixo de banco de dados';
+$wb['dbuser_prefix_txt'] = 'Prefixo de usuário de banco de dados';
+$wb['shelluser_prefix_txt'] = 'Prefixo de usuário do shell';
+$wb['webdavuser_prefix_txt'] = 'Prefixo de usuário webdav';
+$wb['ftpuser_prefix_txt'] = 'Prefixo de usuário ftp';
+$wb['vhost_subdomains_txt'] = 'Adicionar subdomínios como um site';
+$wb['vhost_subdomains_note_txt'] = 'Você não pode desabilitar esta configuração enquanto existirem subdomínios vhost no sistema!';
+$wb['vhost_aliasdomains_txt'] = 'Adicionar alias de domínio como um site';
+$wb['vhost_aliasdomains_note_txt'] = 'Você não pode desabilitar esta configuração enquanto existirem alias de domínios vhost no sistema!';
+$wb['dbname_prefix_error_regex'] = 'Caractere não permitido para o prefixo de banco de dados.';
+$wb['dbuser_prefix_error_regex'] = 'Caractere não permitido para o prefixo de usuário de banco de dados.';
+$wb['ftpuser_prefix_error_regex'] = 'Caractere não permitido para o prefixo de usuário ftp.';
+$wb['shelluser_prefix_error_regex'] = 'Caractere não permitido para o prefixo de usuário do shell.';
+$wb['webdavuser_prefix_error_regex'] = 'Caractere não permitido para o prefixo de usuários webdav.';
+$wb['dblist_phpmyadmin_link_txt'] = 'Link para o phpmyadmin';
+$wb['enable_custom_login_txt'] = 'Permitir nome de usuário personalizado';
+$wb['mailboxlist_webmail_link_txt'] = 'Link para o webmail';
+$wb['mailbox_show_autoresponder_tab_txt'] = 'Exibir aba de auto-resposta nos detalhes da conta de e-mail';
+$wb['mailbox_show_mail_filter_tab_txt'] = 'Exibir aba de filtro de e-mails nos detalhes da conta de e-mail';
+$wb['mailbox_show_custom_rules_tab_txt'] = 'Exibir aba de filtros personalizados de e-mail nos detalhes da conta de e-mail';
+$wb['webmail_url_txt'] = 'URL do webmail';
+$wb['mailmailinglist_link_txt'] = 'Link para lista de e-mails na lista de e-mails';
+$wb['mailmailinglist_url_txt'] = 'URL da lista de e-mails';
+$wb['phpmyadmin_url_txt'] = 'URL do phpMyAdmin';
+$wb['use_domain_module_txt'] = 'Use o módulo de cliente para adicionar novos domínios';
+$wb['use_domain_module_hint'] = 'Se você usar este módulo, os clientes podem selecionar apenas um dos domínios que o administrador adicionar para eles. Eles não podem editar o campo domínio livremente. Você deve sair e acessar novamente após alterar este valor para que as mudanças sejam aplicadas.';
+$wb['new_domain_txt'] = 'Código HTML para criar um novo domínio';
+$wb['webftp_url_txt'] = 'URL do FTPweb';
+$wb['admin_mail_txt'] = 'Administrador(es) de e-mails';
+$wb['monitor_key_txt'] = 'Palavras reservadas a monitorar';
+$wb['admin_name_txt'] = 'Nome do administrador';
+$wb['maintenance_mode_txt'] = 'Modo manutenção';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
+$wb['smtp_enabled_txt'] = 'Usar SMTP para enviar e-mails do sistema';
+$wb['smtp_host_txt'] = 'Host SMTP';
+$wb['smtp_port_txt'] = 'Porta SMTP';
+$wb['smtp_user_txt'] = 'Usuário SMTP';
+$wb['smtp_pass_txt'] = 'Senha do SMTP';
+$wb['smtp_crypt_txt'] = 'Usar conexão criptografada SSL/TLS para o SMTP';
+$wb['phpmyadmin_url_error_regex'] = 'URL do phpmyadmin é inválida.';
+$wb['use_combobox_txt'] = 'Usar combobox jQuery UI';
+$wb['use_loadindicator_txt'] = 'Usar indicador de carga';
+$wb['f5_to_reload_js_txt'] = 'Se você modificar esta configuração, talvez será necessário pressionar F5 no seu navegador para recarregar as bibliotecas do JavaScript ou esvaziar o cache.';
+$wb['client_username_web_check_disabled_txt'] = 'Desabilitar verificação da palavra reservada "web" para o nome de usuário (não recomendado!).';
+$wb['backups_include_into_web_quota_txt'] = 'Incluir arquivos de backup na cota do site.';
+$wb['webmail_url_error_regex'] = 'URL do webmail é inválida.';
+$wb['phpmyadmin_url_note_txt'] = 'Área reservada:';
+$wb['webmail_url_note_txt'] = 'Área reservada:';
+$wb['available_dashlets_note_txt'] = 'Dashlets disponíveis:';
+$wb['admin_dashlets_left_txt'] = 'Restrições de dashlets para administradores';
+$wb['admin_dashlets_right_txt'] = 'Permissões de dashlets para administradores';
+$wb['reseller_dashlets_left_txt'] = 'Restrições de dashlets para revendas';
+$wb['reseller_dashlets_right_txt'] = 'Permissões de dashlets para revendas';
+$wb['client_dashlets_left_txt'] = 'Restrições de dashlets para clientes';
+$wb['client_dashlets_right_txt'] = 'Permissões de dashlets para clientes';
+$wb['customer_no_template_txt'] = 'No. do gabarito do cliente';
+$wb['customer_no_template_error_regex_txt'] = 'O número do gabarito do cliente contém caracteres inválidos.';
+$wb['customer_no_start_txt'] = 'Valor inicial do código de cliente';
+$wb['customer_no_counter_txt'] = 'Contador do código de cliente';
+$wb['session_timeout_txt'] = 'Duração da sessão (minutos)';
+$wb['session_allow_endless_txt'] = 'Habilitar "Manter-me conectado"';
+$wb['No'] = 'Não';
+$wb['min_password_length_txt'] = 'Comprimento mínimo da senha';
+$wb['min_password_strength_txt'] = 'Dificuldade mínima da senha';
+$wb['default_mailserver_txt'] = 'Servidor de e-mails padrão';
+$wb['default_webserver_txt'] = 'Servidor web padrão';
+$wb['default_dnsserver_txt'] = 'Servidor dns padrão';
+$wb['default_slave_dnsserver_txt'] = 'Servidor dns secundário padrão';
+$wb['default_dbserver_txt'] = 'Servidor de banco de dados padrão';
+$wb['company_name_txt'] = 'Nome da empresa para título da página';
+$wb['reseller_can_use_options_txt'] = 'Revendas podem utilizar o menu sites';
+$wb['custom_login_text_txt'] = 'Texto personalizado para a página de acesso';
+$wb['custom_login_link_txt'] = 'Link personalizado para página de acesso';
+$wb['login_link_error_regex'] = 'Link personalizado para acesso inválido';
+$wb['ca_name_txt'] = 'Nome';
+$wb['ca_issue_txt'] = 'Questão';
+$wb['ca_wildcard_txt'] = 'Usar curingas';
+$wb['ca_iodef_txt'] = 'Definições de E/S';
+$wb['active_txt'] = 'Ativo';
+$wb['btn_save_txt'] = 'Salvar';
+$wb['btn_cancel_txt'] = 'Cancelar';
+$wb['web_php_options_txt'] = 'Manipulador do php (Somente apache)';
+?>
diff --git a/ca_system_config.lng b/ca_system_config.lng
new file mode 100644
index 0000000000..f721f688c5
--- /dev/null
+++ b/ca_system_config.lng
@@ -0,0 +1,96 @@
+<?php
+$wb['system_config_title'] = 'System Config';
+$wb['system_config_desc_txt'] = '';
+$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.';
+$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
+$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)';
+$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)';
+$wb['warning'] = 'Edit these values carefully! Do not remove the prefixes on a systems with more then one client.';
+$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
+$wb['tab_change_warning_txt'] = 'Tab change warning';
+$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
+$wb['dbname_prefix_txt'] = 'Database name prefix';
+$wb['dbuser_prefix_txt'] = 'Database user prefix';
+$wb['shelluser_prefix_txt'] = 'Shell user prefix';
+$wb['webdavuser_prefix_txt'] = 'Webdav user prefix';
+$wb['ftpuser_prefix_txt'] = 'FTP user prefix';
+$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
+$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
+$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
+$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
+$wb['dbname_prefix_error_regex'] = 'Char not allowed in database name prefix.';
+$wb['dbuser_prefix_error_regex'] = 'Char not allowed in database user prefix.';
+$wb['ftpuser_prefix_error_regex'] = 'Char not allowed in ftp user prefix.';
+$wb['shelluser_prefix_error_regex'] = 'Char not allowed in shell user prefix.';
+$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.';
+$wb['dblist_phpmyadmin_link_txt'] = 'Link to phpmyadmin in DB list';
+$wb['enable_custom_login_txt'] = 'Allow custom login name';
+$wb['mailboxlist_webmail_link_txt'] = 'Link to webmail in Mailbox list';
+$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details';
+$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details';
+$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details';
+$wb['webmail_url_txt'] = 'Webmail URL';
+$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list';
+$wb['mailmailinglist_url_txt'] = 'Mailing list URL';
+$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL';
+$wb['use_domain_module_txt'] = 'Use the domain limits in client module to add new domains';
+$wb['use_domain_module_hint'] = 'If you use the domain limits, your customers can only select one of the domains the admin creates for them. They cannot freely edit the domain-field. You have to re-login after changing this value, to make the changes visible.';
+$wb['new_domain_txt'] = 'HTML to create a new domain';
+$wb['webftp_url_txt'] = 'WebFTP URL';
+$wb['admin_mail_txt'] = 'Administrator\'s e-mail';
+$wb['monitor_key_txt'] = 'Monitor keyword';
+$wb['admin_name_txt'] = 'Administrator\'s name';
+$wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
+$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
+$wb['smtp_host_txt'] = 'SMTP host';
+$wb['smtp_port_txt'] = 'SMTP port';
+$wb['smtp_user_txt'] = 'SMTP user';
+$wb['smtp_pass_txt'] = 'SMTP password';
+$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP';
+$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
+$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
+$wb['use_loadindicator_txt'] = 'Use Load Indicator';
+$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.';
+$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.';
+$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
+$wb['webmail_url_error_regex'] = 'Invalid webmail URL';
+$wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
+$wb['webmail_url_note_txt'] = 'Placeholder:';
+$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
+$wb['customer_no_template_txt'] = 'Customer No. template';
+$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters';
+$wb['customer_no_start_txt'] = 'Customer No. start value';
+$wb['customer_no_counter_txt'] = 'Customer No. counter';
+$wb['session_timeout_txt'] = 'Session timeout (minutes)';
+$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
+$wb['No'] = 'No';
+$wb['min_password_length_txt'] = 'Minimum password length';
+$wb['min_password_strength_txt'] = 'Minimum password strength';
+$wb['default_mailserver_txt'] = 'Default Mailserver';
+$wb['default_webserver_txt'] = 'Default Webserver';
+$wb['default_dnsserver_txt'] = 'Default DNS Server';
+$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['default_dbserver_txt'] = 'Default Database Server';
+$wb['company_name_txt'] = 'Company Name for the page title';
+$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites';
+$wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
+$wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
+$wb['login_link_error_regex'] = 'Invalid Link for Custom Login';
+$wb['ca_name_txt'] = 'Name';
+$wb['ca_issue_txt'] = 'Issue';
+$wb['ca_wildcard_txt'] = 'Use Wildcard';
+$wb['ca_critical_txt'] = 'Strict Check';
+$wb['ca_iodef_txt'] = 'iodef';
+$wb['active_txt'] = 'Aktive';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
+?>
diff --git a/cz_system_config.lng b/cz_system_config.lng
new file mode 100644
index 0000000000..4ee62ece32
--- /dev/null
+++ b/cz_system_config.lng
@@ -0,0 +1,96 @@
+<?php
+$wb['system_config_title'] = 'System Config';
+$wb['system_config_desc_txt'] = '';
+$wb['warning'] = 'Upravujte tyto údaje opatrne! Neodstraňujte prefixy na systémech s více, než jedním klientem.';
+$wb['dbname_prefix_txt'] = 'Prefix názvu databáze';
+$wb['dbuser_prefix_txt'] = 'Prefix uživatele databáze';
+$wb['shelluser_prefix_txt'] = 'Prefix shell uživatele';
+$wb['ftpuser_prefix_txt'] = 'Prefix FTP uživatele';
+$wb['dbname_prefix_error_regex'] = 'Znak není povolen v prefixu databázovém názvu.';
+$wb['dbuser_prefix_error_regex'] = 'Znak není povolen v prefixu databázového uživatele.';
+$wb['ftpuser_prefix_error_regex'] = 'Znak není povolen v prefixu FTP uživatele.';
+$wb['shelluser_prefix_error_regex'] = 'Znak není povolen v prefixu shell uživatele.';
+$wb['dblist_phpmyadmin_link_txt'] = 'Ikonový odkaz na aplikaci PHPMyAdmin v seznamu databází';
+$wb['mailboxlist_webmail_link_txt'] = 'Ikonový odkaz na aplikaci Webmail v seznamu e-mailových schránek';
+$wb['webmail_url_txt'] = 'Webmail URL';
+$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL';
+$wb['dashboard_atom_url_admin_txt'] = 'Nástěnka - novinky načítat z URL pro: (admina)';
+$wb['dashboard_atom_url_reseller_txt'] = 'Nástěnka - novinky načítat z URL pro: (prodejce)';
+$wb['dashboard_atom_url_client_txt'] = 'Nástěnka - novinky načítat z URL pro: (klienty)';
+$wb['webdavuser_prefix_txt'] = 'Prefix webdav uživatele';
+$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.';
+$wb['use_domain_module_txt'] = 'Použijte modul-domény pro přidání nových domén';
+$wb['use_domain_module_hint'] = 'If you use this module, your customers can only select one of the domains the admin creates for them. They can not free edit the domain-field.You have to re-login after changing this value, to make the changes visible.';
+$wb['new_domain_txt'] = 'HTML vytvořit novou doménu';
+$wb['webftp_url_txt'] = 'WebFTP URL';
+$wb['admin_mail_txt'] = 'E-mail Administrátora';
+$wb['admin_name_txt'] = 'Jméno Administrátora';
+$wb['enable_custom_login_txt'] = 'Povolit vlastní přihlašovací jméno u e-mailové schránky';
+$wb['mailmailinglist_link_txt'] = 'Ikonový odkaz na aplikaci E-mailových konferencí seznamu e-mailových konferencí';
+$wb['mailmailinglist_url_txt'] = 'E-mailové konference URL';
+$wb['monitor_key_txt'] = 'Monitor keyword';
+$wb['maintenance_mode_txt'] = 'Režim údržby';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
+$wb['smtp_enabled_txt'] = 'Použít (zvolit) SMTP server pro zasílání systémových mailů';
+$wb['smtp_host_txt'] = 'SMTP host';
+$wb['smtp_port_txt'] = 'SMTP port';
+$wb['smtp_user_txt'] = 'SMTP uživatel';
+$wb['smtp_pass_txt'] = 'SMTP heslo';
+$wb['smtp_crypt_txt'] = 'Použít SSL/TLS šifrované spojení pro SMTP';
+$wb['smtp_missing_admin_mail_txt'] = 'Zadejte prosím jméno Administrátora a e-mailovou adresu Administrátora, pokud chcete používat zvolený SMTP server pro zasílání systémových mailů.';
+$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
+$wb['tab_change_warning_txt'] = 'Záložka změna varování';
+$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
+$wb['vhost_subdomains_txt'] = 'Vytvořit subdomény jako webové stránky';
+$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
+$wb['phpmyadmin_url_error_regex'] = 'phpmyadmin neplatné URL';
+$wb['use_combobox_txt'] = 'Použití jQuery UI Combobox';
+$wb['use_loadindicator_txt'] = 'Použití indikátoru zatížení';
+$wb['f5_to_reload_js_txt'] = 'Pokud vypnete tuto volbu, zřejmě budete muset používat klávesu F5, aby internetový prohlížeč znovu načetl JavaScript knihovny nebo budete muset ručně vyprázdňovat mezipaměť (cache) vašeho internetového prohlížeče.';
+$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.';
+$wb['mailbox_show_autoresponder_tab_txt'] = 'Ukázat kartu automatická odpověď v podrobnostech u e-mailové schránky';
+$wb['mailbox_show_mail_filter_tab_txt'] = 'Ukázat kartu e-mailové filtry v podrobnostech u e-mailové schránky';
+$wb['mailbox_show_custom_rules_tab_txt'] = 'Ukázat kartu vlastní pravidla v podrobnostech u e-mailové schránky';
+$wb['webmail_url_error_regex'] = 'Neplatný webmail URL';
+$wb['phpmyadmin_url_note_txt'] = 'Zástupný symbol';
+$wb['webmail_url_note_txt'] = 'Zástupný symbol';
+$wb['available_dashlets_note_txt'] = 'Dostupné moduly pro nástěnku:';
+$wb['admin_dashlets_left_txt'] = 'Nástěnka - zobrazení modulů v lévé části pro: (admina)';
+$wb['admin_dashlets_right_txt'] = 'Nástěnka - zobrazení modulů v pravé části pro: (admina)';
+$wb['reseller_dashlets_left_txt'] = 'Nástěnka - zobrazení modulů v lévé části pro: (prodejce)';
+$wb['reseller_dashlets_right_txt'] = 'Nástěnka - zobrazení modulů v pravé části pro: (prodejce)';
+$wb['client_dashlets_left_txt'] = 'Nástěnka - zobrazení modulů v lévé části pro: (klienty)';
+$wb['client_dashlets_right_txt'] = 'Nástěnka - zobrazení modulů v pravé části pro: (klienty)';
+$wb['customer_no_template_txt'] = 'Zákaznické číslo - šablona';
+$wb['customer_no_template_error_regex_txt'] = 'Zákaznické číslo šablony obsahuje neplatné znaky';
+$wb['customer_no_start_txt'] = 'Zákaznické číslo - počáteční hodnota';
+$wb['customer_no_counter_txt'] = 'Zákaznické číslo -  čítač';
+$wb['session_timeout_txt'] = 'Časový limit relace (minuty)';
+$wb['session_allow_endless_txt'] = 'Povolit - zůstat přihlášen';
+$wb['No'] = 'Ne';
+$wb['min_password_length_txt'] = 'Minimální délka hesla';
+$wb['min_password_strength_txt'] = 'Minimální síla hesla';
+$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
+$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
+$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
+$wb['default_mailserver_txt'] = 'Výchozí E-mailový server';
+$wb['default_webserver_txt'] = 'Výchozí webový server';
+$wb['default_dnsserver_txt'] = 'Výchozí DNS server';
+$wb['default_slave_dnsserver_txt'] = 'Výchozí sekundární DNS server';
+$wb['default_dbserver_txt'] = 'Výchozí databázový server';
+$wb['company_name_txt'] = 'Název společnosti v panelu (listu) webového prohlížeče';
+$wb['reseller_can_use_options_txt'] = 'Distributor (prodejce) může použít kartu možností pro weby.';
+$wb['custom_login_text_txt'] = 'Vlastní text na přihlašovací stránce';
+$wb['custom_login_link_txt'] = 'Vlastní odkaz (URL) na přihlašovací stránce (vlastní text)';
+$wb['login_link_error_regex'] = 'Neplatný formát URL pro vlastní odkaz na přihlašovací stránce';
+$wb['ca_name_txt'] = 'Název vydavatele';
+$wb['ca_issue_txt'] = 'Doména vydavatele';
+$wb['ca_wildcard_txt'] = 'Použít Wildcard (*)';
+$wb['ca_critical_txt'] = 'Přísná kontrola';
+$wb['ca_iodef_txt'] = 'iodef';
+$wb['active_txt'] = 'Aktivní';
+$wb['btn_save_txt'] = 'Uložit';
+$wb['btn_cancel_txt'] = 'Zrušit';
+$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
+?>
diff --git a/de_system_config.lng b/de_system_config.lng
new file mode 100644
index 0000000000..f981cce832
--- /dev/null
+++ b/de_system_config.lng
@@ -0,0 +1,96 @@
+<?php
+$wb['system_config_title'] = 'System Config';
+$wb['system_config_desc_txt'] = 'Systemkonfiguration';
+$wb['smtp_missing_admin_mail_txt'] = 'Bitte geben Sie die Administrator E-Mail und den Namen ein, wenn Sie SMTP Versand nutzen wollen.';
+$wb['warning'] = 'Bearbeiten Sie diese Werte sorgfältig! Entfernen Sie die Präfixe nicht auf Systemen mit mehr als einem Kunden.';
+$wb['tab_change_warning_txt'] = 'Reiter Wechsel Warnung';
+$wb['tab_change_discard_txt'] = 'Verwerfe Änderungen bei Reiter Wechsel';
+$wb['tab_change_warning_note_txt'] = 'Zeigt eine Warnung an, wenn der Reiter in einem Formular gewechselt wird und Daten geändert wurden.';
+$wb['dbname_prefix_txt'] = 'Datenbank Namen Präfix';
+$wb['dbuser_prefix_txt'] = 'Datenbank Benutzer Präfix';
+$wb['shelluser_prefix_txt'] = 'Shell Benutzer Präfix';
+$wb['ftpuser_prefix_txt'] = 'FTP Benutzer Präfix';
+$wb['vhost_subdomains_txt'] = 'Subdomains als Webseite anlegen';
+$wb['vhost_subdomains_note_txt'] = 'Diese Einstellung kann nicht wieder deaktiviert werden, wenn Vhost Subdomains im System vorhanden sind!';
+$wb['vhost_aliasdomains_txt'] = 'Aliasdomains als Webseite anlegen';
+$wb['vhost_aliasdomains_note_txt'] = 'Diese Einstellung kann nicht wieder deaktiviert werden, wenn Vhost Aliasdomains im System vorhanden sind!';
+$wb['dbname_prefix_error_regex'] = 'Zeichen nicht erlaubt in Datenbank Namen Präfix.';
+$wb['dbuser_prefix_error_regex'] = 'Zeichen nicht erlaubt in Datenbank Benutzer Präfix.';
+$wb['ftpuser_prefix_error_regex'] = 'Zeichen nicht erlaubt in FTP Benutzer Präfix.';
+$wb['shelluser_prefix_error_regex'] = 'Zeichen nicht erlaubt in Shell Benutzer Präfix.';
+$wb['dblist_phpmyadmin_link_txt'] = 'Link zu phpMyAdmin in der Datenbankliste';
+$wb['mailboxlist_webmail_link_txt'] = 'Link zu Webmail in der Mailboxliste';
+$wb['webmail_url_txt'] = 'Webmail URL';
+$wb['phpmyadmin_url_txt'] = 'phpMyAdmin URL';
+$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (für Admins)';
+$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (für Reseller)';
+$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (für Kunden)';
+$wb['webdavuser_prefix_txt'] = 'WebDAV Benutzer Präfix';
+$wb['webdavuser_prefix_error_regex'] = 'Zeichen nicht zulässig im WebDAV Benutzer Präfix.';
+$wb['use_domain_module_txt'] = 'Domain Limits im Kundenmodul benutzen, um neue Domains hinzuzufügen';
+$wb['use_domain_module_hint'] = 'Falls Sie die Domain Limits benutzen, können Ihre Kunden nur eine der Domains auswählen, die der Admin für sie angelegt hat. Die Kunden können das Domain-Feld nicht frei editieren. Sie müssen sich neu einloggen, wenn Sie diesen Wert ändern.';
+$wb['new_domain_txt'] = 'HTML Text zum Anlegen einer neuen Domain';
+$wb['webftp_url_txt'] = 'WebFTP URL';
+$wb['enable_custom_login_txt'] = 'Abweichenden Login Namen erlauben';
+$wb['mailmailinglist_link_txt'] = 'Link zur Mailingliste in der Mailinglisten Ãœbersicht';
+$wb['mailmailinglist_url_txt'] = 'Mailinglisten URL';
+$wb['admin_mail_txt'] = 'Administrator E-Mail';
+$wb['monitor_key_txt'] = 'ISPConfig Monitor App Passwort';
+$wb['admin_name_txt'] = 'Name des Administrators';
+$wb['maintenance_mode_txt'] = 'Wartungsmodus';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
+$wb['smtp_enabled_txt'] = 'SMTP zum System E-Mailversand nutzen';
+$wb['smtp_host_txt'] = 'SMTP Server';
+$wb['smtp_port_txt'] = 'SMTP Port';
+$wb['smtp_user_txt'] = 'SMTP Benutzer';
+$wb['smtp_pass_txt'] = 'SMTP Passwort';
+$wb['smtp_crypt_txt'] = 'SSL/TLS verschlüsselte Verbindung für SMTP';
+$wb['use_combobox_txt'] = 'jQuery UI Combobox benutzen';
+$wb['use_loadindicator_txt'] = 'Laden Grafik anzeigen';
+$wb['f5_to_reload_js_txt'] = 'Wenn Sie den Wert ändern, müssen Sie F5 drücken, damit der Browser die JavaScript Bibliotheken neu lädt, oder Ihren Browser Cache leeren.';
+$wb['phpmyadmin_url_error_regex'] = 'Falsche phpMyAdmin URL';
+$wb['client_username_web_check_disabled_txt'] = 'Deaktiviere die Kunden Benutzernamen Überprüfung für den Begriff <b>web<b>.';
+$wb['backups_include_into_web_quota_txt'] = 'Backups in Web Quota hinzuzählen.';
+$wb['mailbox_show_autoresponder_tab_txt'] = 'Zeige Autoresponder Reiter in E-Mail Kontodetails';
+$wb['mailbox_show_mail_filter_tab_txt'] = 'Zeige E-Mail Filter Reiter in E-Mail Kontodetails';
+$wb['mailbox_show_custom_rules_tab_txt'] = 'Zeige Benutzerregel Reiter in E-Mail Kontodetails';
+$wb['webmail_url_error_regex'] = 'Falsche Webmail URL';
+$wb['reseller_can_use_options_txt'] = 'Reseller können den Optionen Reiter bei Webseiten verwenden';
+$wb['phpmyadmin_url_note_txt'] = 'Platzhalter:';
+$wb['webmail_url_note_txt'] = 'Platzhalter:';
+$wb['available_dashlets_note_txt'] = 'Verfügbare Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Admin-Dashlets links';
+$wb['admin_dashlets_right_txt'] = 'Admin-Dashlets rechts';
+$wb['reseller_dashlets_left_txt'] = 'Reseller-Dashlets links';
+$wb['reseller_dashlets_right_txt'] = 'Reseller-Dashlets rechts';
+$wb['client_dashlets_left_txt'] = 'Kunden-Dashlets links';
+$wb['client_dashlets_right_txt'] = 'Kunden-Dashlets rechts';
+$wb['customer_no_template_txt'] = 'Kundennummer-Vorlage';
+$wb['customer_no_template_error_regex_txt'] = 'Die Kundennummer-Vorlage enthält ungültige Zeichen';
+$wb['customer_no_start_txt'] = 'Kundennummer Startwert';
+$wb['customer_no_counter_txt'] = 'Kundennummer Zähler';
+$wb['session_timeout_txt'] = 'Session-Timeout (Minuten)';
+$wb['session_allow_endless_txt'] = '&quot;Eingeloggt bleiben&quot; aktivieren';
+$wb['No'] = 'Nein';
+$wb['min_password_length_txt'] = 'Minimale Passwortlänge';
+$wb['min_password_strength_txt'] = 'Minimale Passwortstärke';
+$wb['company_name_txt'] = 'Firmenname fuer den Seitentitel';
+$wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
+$wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
+$wb['login_link_error_regex'] = 'Invalid Link for Custom Login';
+$wb['default_mailserver_txt'] = 'Default Mailserver';
+$wb['default_webserver_txt'] = 'Default Webserver';
+$wb['default_dnsserver_txt'] = 'Default DNS Server';
+$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['default_dbserver_txt'] = 'Default Database Server';
+$wb['ca_name_txt'] = 'Name';
+$wb['ca_issue_txt'] = 'Issue';
+$wb['ca_wildcard_txt'] = 'Wildcard verwenden';
+$wb['ca_critical_txt'] = 'Strikte Überprüfung';
+$wb['ca_iodef_txt'] = 'iodef';
+$wb['active_txt'] = 'Aktiv';
+$wb['btn_save_txt'] = 'Speichern';
+$wb['btn_cancel_txt'] = 'Abbrechen';
+$wb['web_php_options_txt'] = 'PHP Handler (Nur Apache)';
+?>
diff --git a/dk_system_config.lng b/dk_system_config.lng
new file mode 100644
index 0000000000..5f298f091a
--- /dev/null
+++ b/dk_system_config.lng
@@ -0,0 +1,96 @@
+<?php
+$wb['system_config_title'] = 'System Config';
+$wb['system_config_desc_txt'] = '';
+$wb['smtp_missing_admin_mail_txt'] = 'Indtast venligst admin navn og admin mail adresse, hvis du vil bruge smtp mail afsendelse.';
+$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
+$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (forhandler)';
+$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (klient)';
+$wb['warning'] = 'Rediger disse værdier forsigtigt! Fjern ikke præfikser på et system med mere end én klient.';
+$wb['tab_change_discard_txt'] = 'Kassér ændringer på fanen forandring';
+$wb['tab_change_warning_txt'] = 'Fane ændrings advarsel';
+$wb['tab_change_warning_note_txt'] = 'Vis en advarsel på fanen ændring i redigere formularer, hvis nogen data er blevet ændret af brugeren.';
+$wb['dbname_prefix_txt'] = 'Database navn prefix';
+$wb['dbuser_prefix_txt'] = 'Database bruger prefix';
+$wb['shelluser_prefix_txt'] = 'Shell bruger prefix';
+$wb['webdavuser_prefix_txt'] = 'Webdav bruger prefix';
+$wb['ftpuser_prefix_txt'] = 'FTP bruger prefix';
+$wb['vhost_subdomains_txt'] = 'Opret Sub-domæne som web side';
+$wb['vhost_subdomains_note_txt'] = 'Du kan ikke deaktivere dette, så længe der findes vhost sub-domæner i systemet!';
+$wb['dbname_prefix_error_regex'] = 'Char ikke tilladt i database name prefix.';
+$wb['dbuser_prefix_error_regex'] = 'Char ikke tilladt i database bruger prefix.';
+$wb['ftpuser_prefix_error_regex'] = 'Char ikke tilladt i ftp bruger prefix.';
+$wb['shelluser_prefix_error_regex'] = 'Char ikke tilladt i shell bruger prefix.';
+$wb['webdavuser_prefix_error_regex'] = 'Char ikke tilladt i webdav bruger prefix.';
+$wb['dblist_phpmyadmin_link_txt'] = 'Link til phpmyadmin i DB liste';
+$wb['enable_custom_login_txt'] = 'Tillad brugerdefinerede login-navn';
+$wb['mailboxlist_webmail_link_txt'] = 'Link til webmail i Postboks liste';
+$wb['webmail_url_txt'] = 'Webmail URL';
+$wb['mailmailinglist_link_txt'] = 'Link til mailing list i Mailing list liste';
+$wb['mailmailinglist_url_txt'] = 'Mail-list URL';
+$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL';
+$wb['use_domain_module_txt'] = 'Brug domæne grænser i klient-modul for at tilføje nye domæner';
+$wb['use_domain_module_hint'] = 'Hvis du bruger domæne grænser, kan dine kunder kun vælge et af de områder admin skabte for dem. De kan ikke frit redigere domæne-feltet. Du er nødt til at re-login efter at ændre denne værdi, for at gøre ændringerne synlige.';
+$wb['new_domain_txt'] = 'HTML for at oprette et nyt domæne';
+$wb['webftp_url_txt'] = 'WebFTP URL';
+$wb['admin_mail_txt'] = 'Administratorer e-mail';
+$wb['monitor_key_txt'] = 'Monitor nøgleord';
+$wb['admin_name_txt'] = 'Administratorer navn';
+$wb['maintenance_mode_txt'] = 'Vedligeholdelsestilstand';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
+$wb['smtp_enabled_txt'] = 'Brug SMTP for at sende system mails';
+$wb['smtp_host_txt'] = 'SMTP host';
+$wb['smtp_port_txt'] = 'SMTP port';
+$wb['smtp_user_txt'] = 'SMTP bruger';
+$wb['smtp_pass_txt'] = 'SMTP adgangskode';
+$wb['smtp_crypt_txt'] = 'Brug SSL/TLS krypteret forbindelse for SMTP';
+$wb['phpmyadmin_url_error_regex'] = 'Ugyldigt phpmyadmin URL';
+$wb['use_combobox_txt'] = 'Brug jQuery UI Combobox';
+$wb['use_loadindicator_txt'] = 'Brug Load Indicator';
+$wb['f5_to_reload_js_txt'] = 'Hvis du ændrer dette, kan du blive nødt til at trykke på F5 for at browseren genindlæser JavaScript-biblioteker eller tømme browserens cache.';
+$wb['client_username_web_check_disabled_txt'] = 'Deaktiver klient-brugernavns check for ordet \'web\'.';
+$wb['mailbox_show_autoresponder_tab_txt'] = 'Vis autoresponder tab i mail kontooplysninger';
+$wb['mailbox_show_mail_filter_tab_txt'] = 'Vis mail filter tab i mail kontooplysninger';
+$wb['mailbox_show_custom_rules_tab_txt'] = 'Vis custom mailfilter tab i mail kontooplysninger';
+$wb['webmail_url_error_regex'] = 'Ugyldigt webmail URL';
+$wb['phpmyadmin_url_note_txt'] = 'Pladsholder:';
+$wb['webmail_url_note_txt'] = 'Pladsholder:';
+$wb['available_dashlets_note_txt'] = 'Tilgængelig Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Forhandler Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Forhandler Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Kunde Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Kunde Dashlets';
+$wb['customer_no_template_txt'] = 'Kunde Nr. skabelon';
+$wb['customer_no_template_error_regex_txt'] = 'Kunde Nr. skabelon indeholder ugyldigt karaktere';
+$wb['customer_no_start_txt'] = 'Kunde Nr. start værdi';
+$wb['customer_no_counter_txt'] = 'Kunde Nr. tæller';
+$wb['session_timeout_txt'] = 'Session timeout (minutter)';
+$wb['session_allow_endless_txt'] = 'Aktiver \\"forbliv logget ind\\"';
+$wb['No'] = 'No';
+$wb['min_password_length_txt'] = 'Minimum adgangskode længde';
+$wb['min_password_strength_txt'] = 'Minimum adgangskode styrke';
+$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
+$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
+$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
+$wb['default_mailserver_txt'] = 'Default Mailserver';
+$wb['default_webserver_txt'] = 'Default Webserver';
+$wb['default_dnsserver_txt'] = 'Default DNS Server';
+$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['default_dbserver_txt'] = 'Default Database Server';
+$wb['company_name_txt'] = 'Company Name for the page title';
+$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites';
+$wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
+$wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
+$wb['login_link_error_regex'] = 'Invalid Link for Custom Login';
+$wb['ca_name_txt'] = 'Name';
+$wb['ca_issue_txt'] = 'Issue';
+$wb['ca_wildcard_txt'] = 'Use Wildcard';
+$wb['ca_critical_txt'] = 'Strict Check';
+$wb['ca_iodef_txt'] = 'iodef';
+$wb['active_txt'] = 'Aktive';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
+?>
diff --git a/el_system_config.lng b/el_system_config.lng
new file mode 100644
index 0000000000..17414e666d
--- /dev/null
+++ b/el_system_config.lng
@@ -0,0 +1,96 @@
+<?php
+$wb['system_config_title'] = 'System Config';
+$wb['system_config_desc_txt'] = '';
+$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
+$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)';
+$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)';
+$wb['warning'] = 'Επεξεργαστείτε τις τιμές με προσοχή! ΜΗΝ αφαιρείτε τα προθέματα σε συστήματα με περισσότερους από έναν πελάτες.';
+$wb['dbname_prefix_txt'] = 'Πρόθεμα Ονόματος Βάσης Δεδομένων';
+$wb['dbuser_prefix_txt'] = 'Πρόθεμα Χρήστη Βάσης Δεδομένων';
+$wb['shelluser_prefix_txt'] = 'Πρόθεμα Χρήστη Shell';
+$wb['webdavuser_prefix_txt'] = 'Πρόθεμα Χρήστη Webdav';
+$wb['ftpuser_prefix_txt'] = 'Πρόθεμα Χρήστη FTP';
+$wb['dbname_prefix_error_regex'] = 'Δεν επιτρέπονται χαρακτήρες στο πρόθεμα του Ονόματος της Βάσης Δεδομένων.';
+$wb['dbuser_prefix_error_regex'] = 'Δεν επιτρέπονται χαρακτήρες στο πρόθεμα του Χρήστη της Βάσης Δεδομένων.';
+$wb['ftpuser_prefix_error_regex'] = 'Δεν επιτρέπονται χαρακτήρες στο πρόθεμα του Χρήστη ftp.';
+$wb['shelluser_prefix_error_regex'] = 'Δεν επιτρέπονται χαρακτήρες στο πρόθεμα του Χρήστη Shell.';
+$wb['webdavuser_prefix_error_regex'] = 'Δεν επιτρέπονται χαρακτήρες στο πρόθεμα του Χρήστη Webdav.';
+$wb['dblist_phpmyadmin_link_txt'] = 'Link για το phpmyadmin στη λίστα των βάσεων δεδομένων';
+$wb['mailboxlist_webmail_link_txt'] = 'Link για το webmail στην λίστα των θυρίδων mail';
+$wb['webmail_url_txt'] = 'URL του Webmail';
+$wb['phpmyadmin_url_txt'] = 'URL του PHPMyAdmin';
+$wb['use_domain_module_txt'] = 'Χρήση του αρθρώματος-domain για την προσθήκη νέων domains';
+$wb['use_domain_module_hint'] = 'Αν χρησιμοποιήσετε αυτό το άρθρωμα, οι πελάτες σας μπορούν μόνο να διαλέξουν ένα από τα domains που δημιούργησε για αυτούς ο διαχειριστής. Δεν μπορούν να επεξεργαστούν ελεύθερα τα πεδία του domain.Πρέπει να επανασυνδεθείτε αν αλλάξετε αυτή την τιμή, για να γίνουν οι αλλαγές σας, ορατές.';
+$wb['new_domain_txt'] = 'HTML για την δημιουργία domain';
+$wb['webftp_url_txt'] = 'URL του WebFTP';
+$wb['enable_custom_login_txt'] = 'Αποδοχή  προσαρμοσμένου ονόματος login';
+$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list';
+$wb['mailmailinglist_url_txt'] = 'URL της Mailing list ';
+$wb['admin_mail_txt'] = 'e-mail Διαχειριστών';
+$wb['monitor_key_txt'] = 'Monitor keyword';
+$wb['admin_name_txt'] = 'Όνομα Administrator';
+$wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
+$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
+$wb['smtp_host_txt'] = 'SMTP host';
+$wb['smtp_port_txt'] = 'SMTP θύρα';
+$wb['smtp_user_txt'] = 'SMTP χρήστης';
+$wb['smtp_pass_txt'] = 'SMTP συνθηματικό';
+$wb['smtp_crypt_txt'] = 'Χρήση κρυπτογραφημένης σύνδεσης SSL/TLS για SMTP';
+$wb['smtp_missing_admin_mail_txt'] = 'ΠΑρακαλούμε εισάγετε το όνομα διαχειριστή και την διεύθυνση mail αν θέλετε να χρησιμοποιήσετε απόστολή mail με smtp.';
+$wb['tab_change_discard_txt'] = 'Ακύρωση αλλαγών με την αλλαγή καρτέλας';
+$wb['tab_change_warning_txt'] = 'Προειδοποίηση αλλαγής καρτέλας';
+$wb['tab_change_warning_note_txt'] = 'Εμφάνιση μιας προειδοποίησης κατα την αλλαγή καρτέλας σε φόρμες επεξεργασίας που έχουν τροποποιηθεί από τον χρήστη.';
+$wb['vhost_subdomains_txt'] = 'Δημιουργία Subdomains ως web site';
+$wb['vhost_subdomains_note_txt'] = 'Δεν μπορεί να γίνει απενεργοποίηση όσο υπάρχουν vhost subdomains στο σύστημα!';
+$wb['vhost_aliasdomains_txt'] = 'Δημιουργία aliasdomains ως web site';
+$wb['vhost_aliasdomains_note_txt'] = 'Δεν μπορεί να γίνει απενεργοποίηση όσο υπάρχουν vhost aliasdomains στο σύστημα!';
+$wb['phpmyadmin_url_error_regex'] = 'Μη έγκυρο URL phpmyadmin';
+$wb['use_combobox_txt'] = 'Χρήση jQuery UI Combobox';
+$wb['use_loadindicator_txt'] = 'Χρήση Load Indicator (ενδεικτή φόρτωσης)';
+$wb['f5_to_reload_js_txt'] = 'Αν το αλλάξετε, ίσως πρέπει να πατήσετε το F5 για να κάνετε τον φυλλομετρητη να ξαναφορτώσει τις βιβλιοθήκες JavaScript ή να αδείασετε την cache του φυλλομετρητή.';
+$wb['client_username_web_check_disabled_txt'] = 'Απενεργοποίηση ελέγχου στο όνομα χρήστη για την λέξη \'web\'.';
+$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
+$wb['mailbox_show_autoresponder_tab_txt'] = 'Εμφάνιση της καρτέλας Αυτόματης Απάντησης στις λεπτομέρειες του λογαριασμού mail';
+$wb['mailbox_show_mail_filter_tab_txt'] = 'Εμφάνιση της καρτέλας Φίλτρα mail στις λεπτομέρειες του λογαριασμού mail';
+$wb['mailbox_show_custom_rules_tab_txt'] = 'Εμφάνιση της καρτέλας Προσαρμοσμένοι Κανόνες στις λεπτομέρειες του λογαριασμού mail';
+$wb['webmail_url_error_regex'] = 'Invalid webmail URL';
+$wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
+$wb['webmail_url_note_txt'] = 'Placeholder:';
+$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
+$wb['customer_no_template_txt'] = 'Customer No. template';
+$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters';
+$wb['customer_no_start_txt'] = 'Customer No. start value';
+$wb['customer_no_counter_txt'] = 'Customer No. counter';
+$wb['session_timeout_txt'] = 'Session timeout (minutes)';
+$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
+$wb['No'] = 'No';
+$wb['min_password_length_txt'] = 'Minimum password length';
+$wb['min_password_strength_txt'] = 'Minimum password strength';
+$wb['company_name_txt'] = 'Company Name for the page title';
+$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites';
+$wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
+$wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
+$wb['login_link_error_regex'] = 'Invalid Link for Custom Login';
+$wb['default_mailserver_txt'] = 'Default Mailserver';
+$wb['default_webserver_txt'] = 'Default Webserver';
+$wb['default_dnsserver_txt'] = 'Default DNS Server';
+$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['default_dbserver_txt'] = 'Default Database Server';
+$wb['ca_name_txt'] = 'Name';
+$wb['ca_issue_txt'] = 'Issue';
+$wb['ca_wildcard_txt'] = 'Use Wildcard';
+$wb['ca_critical_txt'] = 'Strict Check';
+$wb['ca_iodef_txt'] = 'iodef';
+$wb['active_txt'] = 'Aktive';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
+?>
diff --git a/en_system_config.lng b/en_system_config.lng
new file mode 100644
index 0000000000..840b3f434b
--- /dev/null
+++ b/en_system_config.lng
@@ -0,0 +1,99 @@
+<?php
+$wb['system_config_title'] = 'System Config';
+$wb['system_config_desc_txt'] = '';
+$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.';
+$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
+$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)';
+$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)';
+$wb["warning"] = 'Edit these values carefully! Do not remove the prefixes on a systems with more then one client.';
+$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
+$wb['tab_change_warning_txt'] = 'Tab change warning';
+$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
+$wb["dbname_prefix_txt"] = 'Database name prefix';
+$wb["dbuser_prefix_txt"] = 'Database user prefix';
+$wb["shelluser_prefix_txt"] = 'Shell user prefix';
+$wb["webdavuser_prefix_txt"] = 'Webdav user prefix';
+$wb["ftpuser_prefix_txt"] = 'FTP user prefix';
+$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
+$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
+$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
+$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
+$wb["dbname_prefix_error_regex"] = 'Char not allowed in database name prefix.';
+$wb["dbuser_prefix_error_regex"] = 'Char not allowed in database user prefix.';
+$wb["ftpuser_prefix_error_regex"] = 'Char not allowed in ftp user prefix.';
+$wb["shelluser_prefix_error_regex"] = 'Char not allowed in shell user prefix.';
+$wb["webdavuser_prefix_error_regex"] = 'Char not allowed in webdav user prefix.';
+$wb["dblist_phpmyadmin_link_txt"] = 'Link to phpmyadmin in DB list';
+$wb['enable_custom_login_txt'] = 'Allow custom login name';
+$wb["mailboxlist_webmail_link_txt"] = 'Link to webmail in Mailbox list';
+$wb['mailbox_show_autoresponder_tab_txt'] = 'Show Autoresponder tab in Mailbox detail';
+$wb['mailbox_show_mail_filter_tab_txt'] = 'Show Mail Filter tab in Mailbox detail';
+$wb['mailbox_show_custom_rules_tab_txt'] = 'Show Custom Rules tab in Mailbox detail';
+$wb["webmail_url_txt"] = 'Webmail URL';
+$wb["mailmailinglist_link_txt"] = 'Link to mailing list in Mailing list list';
+$wb["mailmailinglist_url_txt"] = 'Mailing list URL';
+$wb["phpmyadmin_url_txt"] = 'PHPMyAdmin URL';
+$wb["use_domain_module_txt"] = 'Use the domain limits in client module to add new domains';
+$wb["use_domain_module_hint"] = 'If you use the domain limits, your customers can only select one of the domains the admin creates for them. They cannot freely edit the domain-field. You have to re-login after changing this value, to make the changes visible.';
+$wb["new_domain_txt"] = 'HTML to create a new domain';
+$wb["webftp_url_txt"] = 'WebFTP URL';
+$wb['admin_mail_txt'] = 'Administrator\'s e-mail';
+$wb["monitor_key_txt"] = 'Monitor keyword';
+$wb['admin_name_txt'] = 'Administrator\'s name';
+$wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
+$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
+$wb['smtp_host_txt'] = 'SMTP host';
+$wb['smtp_port_txt'] = 'SMTP port';
+$wb['smtp_user_txt'] = 'SMTP user';
+$wb['smtp_pass_txt'] = 'SMTP password';
+$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP';
+$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
+$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
+$wb['use_loadindicator_txt'] = 'Use Load Indicator';
+$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.';
+$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.';
+$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
+$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details';
+$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details';
+$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details';
+$wb['webmail_url_error_regex'] = 'Invalid webmail URL';
+$wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
+$wb['webmail_url_note_txt'] = 'Placeholder:';
+$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
+$wb['customer_no_template_txt'] = 'Customer No. template';
+$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters';
+$wb['customer_no_start_txt'] = 'Customer No. start value';
+$wb['customer_no_counter_txt'] = 'Customer No. counter';
+$wb['session_timeout_txt'] = 'Session timeout (minutes)';
+$wb['session_allow_endless_txt'] = 'Enable "stay logged in"';
+$wb['No'] = 'No';
+$wb['min_password_length_txt'] = 'Minimum password length';
+$wb['min_password_strength_txt'] = 'Minimum password strength';
+$wb["default_mailserver_txt"] = 'Default Mailserver';
+$wb["default_webserver_txt"] = 'Default Webserver';
+$wb["default_dnsserver_txt"] = 'Default DNS Server';
+$wb["default_slave_dnsserver_txt"] = 'Default Secondary DNS Server';
+$wb["default_dbserver_txt"] = 'Default Database Server';
+$wb["company_name_txt"] = "Company Name for the page title";
+$wb["reseller_can_use_options_txt"] = "Reseller can use the option-tab for websites";
+$wb["custom_login_text_txt"] = "Custom Text on Login-Page";
+$wb["custom_login_link_txt"] = "Custom Link on Login-Page";
+$wb["login_link_error_regex"] = "Invalid Link for Custom Login";
+$wb['ca_name_txt'] = 'Name';
+$wb['ca_issue_txt'] = 'Issue';
+$wb['ca_wildcard_txt'] = 'Use Wildcard';
+$wb['ca_critical_txt'] = 'Strict Check'; //For future use.  At this time, CA’s do not recognize any other flag values as described in RFC 6844
+$wb['ca_iodef_txt'] = 'iodef';
+$wb['active_txt'] = 'Active';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
+?>
diff --git a/es_system_config.lng b/es_system_config.lng
new file mode 100644
index 0000000000..7c4525da9a
--- /dev/null
+++ b/es_system_config.lng
@@ -0,0 +1,96 @@
+<?php
+$wb['system_config_title'] = 'System Config';
+$wb['admin_dashlets_left_txt'] = 'Componentes del administrador a la izquierda';
+$wb['admin_dashlets_right_txt'] = 'Componentes del administrador a la derecha';
+$wb['admin_mail_txt'] = 'Correo del administrador';
+$wb['admin_name_txt'] = 'Nombre del administrador';
+$wb['available_dashlets_note_txt'] = 'Componentes disponibles:';
+$wb['backups_include_into_web_quota_txt'] = 'Incluir archivos de copia de seguridad en la cuota web.';
+$wb['client_dashlets_left_txt'] = 'Componentes del cliente a la izquierda';
+$wb['client_dashlets_right_txt'] = 'Componentes del cliente a la derecha';
+$wb['client_username_web_check_disabled_txt'] = 'Desactivar la comprobación de la palabra \\"web\\" en los nombres de clientes.';
+$wb['company_name_txt'] = 'Nombre de la compañía para el título de la página';
+$wb['custom_login_link_txt'] = 'Enlace personalizado para la página de Inicio de Sesión';
+$wb['custom_login_text_txt'] = 'Texto personalizado para la página de Inicio de Sesión';
+$wb['customer_no_counter_txt'] = 'Contador de Nº. cliente';
+$wb['customer_no_start_txt'] = 'Valor de inicio de Nº. de cliente';
+$wb['customer_no_template_error_regex_txt'] = 'La plantilla Nº. de cliente contiene caracteres inválidos';
+$wb['customer_no_template_txt'] = 'Plantilla de Nº. de cliente';
+$wb['dashboard_atom_url_admin_txt'] = 'URL del feed atom en el panel (admin)';
+$wb['dashboard_atom_url_client_txt'] = 'URL del feed atom en el panel (cliente)';
+$wb['dashboard_atom_url_reseller_txt'] = 'URL del feed atom en el panel (revendedor)';
+$wb['dblist_phpmyadmin_link_txt'] = 'Vínculo a phpMyAdmin en la lista de bases de datos';
+$wb['dbname_prefix_error_regex'] = 'Carácter no permitido en el prefijo de nombre de base de datos.';
+$wb['dbname_prefix_txt'] = 'Prefijo del nombre de la base de datos';
+$wb['dbuser_prefix_error_regex'] = 'Carácter no permitido en el nombre del usuario de la base datos.';
+$wb['dbuser_prefix_txt'] = 'Prefijo del usuario de la base de datos';
+$wb['default_dbserver_txt'] = 'Servidor de bases de datos por defecto';
+$wb['default_dnsserver_txt'] = 'Servidor DNS por defecto';
+$wb['default_mailserver_txt'] = 'Servidor de correo por defecto';
+$wb['default_slave_dnsserver_txt'] = 'Servidor DNS secundario por defecto';
+$wb['default_webserver_txt'] = 'Servidor web por defecto';
+$wb['enable_custom_login_txt'] = 'Permitir nombre de inicio de sesión personalizado';
+$wb['f5_to_reload_js_txt'] = 'Si modifica esto, deberá pulsar F5 para que el explorador cargue las librerías JavaScript o incluso necesitará borrar la caché de su explorador.';
+$wb['ftpuser_prefix_error_regex'] = 'Carácter no permitido en el prefijo de usuario de FTP.';
+$wb['ftpuser_prefix_txt'] = 'Prefijo del usuario de FTP';
+$wb['login_link_error_regex'] = 'Enlace incorrecto para el inicio de sesión personalizado';
+$wb['mailbox_show_autoresponder_tab_txt'] = 'Mostrar la pestaña del auto-respondedor en los detalles de la cuenta de correo';
+$wb['mailbox_show_custom_rules_tab_txt'] = 'Mostrar la pestaña filtro de correo personalizado en los detalles de la cuenta de correo';
+$wb['mailbox_show_mail_filter_tab_txt'] = 'Mostrar la pestaña filtro de correo en los detalles de la cuenta de correo';
+$wb['mailboxlist_webmail_link_txt'] = 'Vinculo a correo web en la lista de buzones de correo';
+$wb['mailmailinglist_link_txt'] = 'Vínculo a la lista de correos en la lista de la Lista de correos';
+$wb['mailmailinglist_url_txt'] = 'URL a la lista de correos';
+$wb['maintenance_mode_txt'] = 'Modo de mantenimiento';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
+$wb['min_password_length_txt'] = 'Longitud mínima de la contraseña';
+$wb['min_password_strength_txt'] = 'Fortaleza mínima de la contraseña';
+$wb['monitor_key_txt'] = 'Palabra clave del Monitor';
+$wb['new_domain_txt'] = 'HTML para la creación de nuevos dominios';
+$wb['No'] = 'No';
+$wb['phpmyadmin_url_error_regex'] = 'URL inválida a phpMyAdmin';
+$wb['phpmyadmin_url_note_txt'] = 'Marcador de posición:';
+$wb['phpmyadmin_url_txt'] = 'Enlace a phpMyAdmin';
+$wb['reseller_can_use_options_txt'] = 'El revendedor puede utilizar la pestaña opciones para los sitios webs';
+$wb['reseller_dashlets_left_txt'] = 'Componentes de revendedores a la izquierda';
+$wb['reseller_dashlets_right_txt'] = 'Componentes de revendedores a la derecha';
+$wb['session_allow_endless_txt'] = 'Habilitar \\"mantenerme conectado\\"';
+$wb['session_timeout_txt'] = 'Tiempo límite de sesión (minutos)';
+$wb['shelluser_prefix_error_regex'] = 'Carácter no permitido en el prefijo de usuario del shell.';
+$wb['shelluser_prefix_txt'] = 'Prefijo del usuario del Shell';
+$wb['smtp_crypt_txt'] = 'Usar conexión encriptada SSL/TLS para el SMTP';
+$wb['smtp_enabled_txt'] = 'Usar SMTP para enviar correos del sistema';
+$wb['smtp_host_txt'] = 'Host del SMTP';
+$wb['smtp_missing_admin_mail_txt'] = 'Por favor ingrese el nombre y correo del admin si desea usar el envío de correo mediante SMTP.';
+$wb['smtp_pass_txt'] = 'Contraseña del SMTP';
+$wb['smtp_port_txt'] = 'Puerto del SMTP';
+$wb['smtp_user_txt'] = 'Usuario del SMTP';
+$wb['system_config_desc_txt'] = '';
+$wb['tab_change_discard_txt'] = 'Descartar cambios al cambiar de pestaña';
+$wb['tab_change_warning_note_txt'] = 'Mostrar advertencia al cambiar de pestaña en los formularios de edición si se ha cambiado algún parámetro.';
+$wb['tab_change_warning_txt'] = 'Advertencia al cambiar de pestaña';
+$wb['use_combobox_txt'] = 'Usar lista desplegable de jQuery UI';
+$wb['use_domain_module_hint'] = 'Si utiliza los límites de dominio, sus clientes solo podrán seleccionar los dominios que el administrador haya creado para ellos. Los clientes no podrán editar libremente en campo de dominio. Necesitará reiniciar la sesión después de modificar esta opción para que que los cambios surjan efecto.';
+$wb['use_domain_module_txt'] = 'Usar los límites de dominio en el modulo del cliente para agregar nuevos dominios';
+$wb['use_loadindicator_txt'] = 'Usar indicador de carga';
+$wb['vhost_aliasdomains_note_txt'] = 'No puede deshabilitar esto mientras existan host virtuales de alias de dominios en el sistema';
+$wb['vhost_aliasdomains_txt'] = 'Crear alias de dominios como sitios web';
+$wb['vhost_subdomains_note_txt'] = '¡No se puede desactivar esta opción mientras existan sub-dominios con host virtuales en el sistema!';
+$wb['vhost_subdomains_txt'] = 'Crear sub-dominio como sitio web';
+$wb['warning'] = '¡Edite estos valores cuidadosamente! No elimine los prefijos si el sistema contiene más de un cliente.';
+$wb['webdavuser_prefix_error_regex'] = 'Carácter no permitido en el prefijo del usuario de webdav.';
+$wb['webdavuser_prefix_txt'] = 'Prefijo del usuario de Webdav';
+$wb['webftp_url_txt'] = 'Enlace al cliente FTP por web';
+$wb['webmail_url_error_regex'] = 'Dirección del correo web inválida';
+$wb['webmail_url_note_txt'] = 'Marcador de posición:';
+$wb['webmail_url_txt'] = 'URL de correo web';
+$wb['ca_name_txt'] = 'Name';
+$wb['ca_issue_txt'] = 'Issue';
+$wb['ca_wildcard_txt'] = 'Use Wildcard';
+$wb['ca_critical_txt'] = 'Strict Check';
+$wb['ca_iodef_txt'] = 'iodef';
+$wb['active_txt'] = 'Aktive';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
+?>
diff --git a/fi_system_config.lng b/fi_system_config.lng
new file mode 100644
index 0000000000..2cafa6f5bf
--- /dev/null
+++ b/fi_system_config.lng
@@ -0,0 +1,96 @@
+<?php
+$wb['system_config_title'] = 'System Config';
+$wb['system_config_desc_txt'] = '';
+$wb['warning'] = 'Muokkaa näitä arvoja varoen! Älä poista etuliitteitä jos järjestelmässä on enemmän kuin yksi asiakas.';
+$wb['dbname_prefix_txt'] = 'Tietokannan nimen etuliite';
+$wb['dbuser_prefix_txt'] = 'Tietokannan käyttäjätunnuksen etuliite';
+$wb['shelluser_prefix_txt'] = 'Shell-käyttäjätunnuksen etuliite';
+$wb['ftpuser_prefix_txt'] = 'FTP-käyttäjätunnuksen etuliite';
+$wb['dbname_prefix_error_regex'] = 'Tietokannan nimen etuliite on vääränlainen.';
+$wb['dbuser_prefix_error_regex'] = 'Tietokannan käyttäjätunnuksen etuliite on vääränlainen.';
+$wb['ftpuser_prefix_error_regex'] = 'FTP-käyttäjätunnuksen etuliite on vääränlainen.';
+$wb['shelluser_prefix_error_regex'] = 'Shell-käyttäjätunnuksen etuliite on vääränlainen.';
+$wb['dblist_phpmyadmin_link_txt'] = 'Linkki phpMyAdminiin tietokantalistassa';
+$wb['mailboxlist_webmail_link_txt'] = 'Linkki internetpostiin postilaatikkolistassa';
+$wb['webmail_url_txt'] = 'Webmail-osoite';
+$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin-osoite';
+$wb['use_domain_module_txt'] = 'Use the domain-module to add new domains';
+$wb['use_domain_module_hint'] = 'If you use this module, your customers can only select one of the domains the admin creates for them. They can not free edit the domain-field.You have to re-login after changing this value, to make the changes visible.';
+$wb['new_domain_txt'] = 'HTML to create a new domain';
+$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
+$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)';
+$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)';
+$wb['webdavuser_prefix_txt'] = 'Webdav user prefix';
+$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.';
+$wb['webftp_url_txt'] = 'WebFTP URL';
+$wb['enable_custom_login_txt'] = 'Allow custom login name';
+$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list';
+$wb['mailmailinglist_url_txt'] = 'Mailing list URL';
+$wb['admin_mail_txt'] = 'Administrators e-mail';
+$wb['monitor_key_txt'] = 'Monitor keyword';
+$wb['admin_name_txt'] = 'Administrators name';
+$wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
+$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
+$wb['smtp_host_txt'] = 'SMTP host';
+$wb['smtp_port_txt'] = 'SMTP port';
+$wb['smtp_user_txt'] = 'SMTP user';
+$wb['smtp_pass_txt'] = 'SMTP password';
+$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP';
+$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.';
+$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
+$wb['tab_change_warning_txt'] = 'Tab change warning';
+$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
+$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
+$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
+$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
+$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
+$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
+$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
+$wb['use_loadindicator_txt'] = 'Use Load Indicator';
+$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.';
+$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.';
+$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
+$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details';
+$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details';
+$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details';
+$wb['webmail_url_error_regex'] = 'Invalid webmail URL';
+$wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
+$wb['webmail_url_note_txt'] = 'Placeholder:';
+$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
+$wb['customer_no_template_txt'] = 'Customer No. template';
+$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters';
+$wb['customer_no_start_txt'] = 'Customer No. start value';
+$wb['customer_no_counter_txt'] = 'Customer No. counter';
+$wb['session_timeout_txt'] = 'Session timeout (minutes)';
+$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
+$wb['No'] = 'No';
+$wb['min_password_length_txt'] = 'Minimum password length';
+$wb['min_password_strength_txt'] = 'Minimum password strength';
+$wb['company_name_txt'] = 'Company Name for the page title';
+$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites';
+$wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
+$wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
+$wb['login_link_error_regex'] = 'Invalid Link for Custom Login';
+$wb['default_mailserver_txt'] = 'Default Mailserver';
+$wb['default_webserver_txt'] = 'Default Webserver';
+$wb['default_dnsserver_txt'] = 'Default DNS Server';
+$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['default_dbserver_txt'] = 'Default Database Server';
+$wb['ca_name_txt'] = 'Name';
+$wb['ca_issue_txt'] = 'Issue';
+$wb['ca_wildcard_txt'] = 'Use Wildcard';
+$wb['ca_critical_txt'] = 'Strict Check';
+$wb['ca_iodef_txt'] = 'iodef';
+$wb['active_txt'] = 'Aktive';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
+?>
diff --git a/fr_system_config.lng b/fr_system_config.lng
new file mode 100644
index 0000000000..3b6fe68521
--- /dev/null
+++ b/fr_system_config.lng
@@ -0,0 +1,96 @@
+<?php
+$wb['system_config_title'] = 'System Config';
+$wb['system_config_desc_txt'] = '';
+$wb['dashboard_atom_url_admin_txt'] = 'URL du fil de syndication Atom du tableau de bord (admin)';
+$wb['dashboard_atom_url_reseller_txt'] = 'URL du fil de syndication Atom du tableau de bord ( reseller)';
+$wb['dashboard_atom_url_client_txt'] = 'URL du fil de syndication Atom du tableau de bord (client)';
+$wb['warning'] = 'Editez ces valeurs prudemment ! Il n’est pas conseillé de modifier les préfixes lorsque vous avez des clients !';
+$wb['dbname_prefix_txt'] = 'Préfixe du nom de la BDd';
+$wb['dbuser_prefix_txt'] = 'Préfixe de l’utilisateur de la BDd';
+$wb['shelluser_prefix_txt'] = 'Préfixe de l’utilisateur Shell';
+$wb['webdavuser_prefix_txt'] = 'Préfixe de l’utilisateur WebDAV';
+$wb['ftpuser_prefix_txt'] = 'Préfixe de l’utilisateur FTP';
+$wb['dbname_prefix_error_regex'] = 'Caractère non autorisé dans le préfixe du nom de la BDD.';
+$wb['dbuser_prefix_error_regex'] = 'Caractère non autorisé dans le préfixe de l’utilisateur de la BDD.';
+$wb['ftpuser_prefix_error_regex'] = 'Caractère non autorisé dans le préfixe de l’utilisateur FTP.';
+$wb['shelluser_prefix_error_regex'] = 'Caractère non autorisé dans le préfixe de l’utilisateur Shell.';
+$wb['webdavuser_prefix_error_regex'] = 'Caractère non autorisé dans le préfixe utilisateur WebDAV.';
+$wb['dblist_phpmyadmin_link_txt'] = 'Lien vers PHPMyAdmin dans la liste des bases';
+$wb['enable_custom_login_txt'] = 'Autoriser les noms d’utilisateurs personnalisés';
+$wb['mailboxlist_webmail_link_txt'] = 'Lien vers le Webmail dans la liste des boîtes mail';
+$wb['webmail_url_txt'] = 'URL du Webmail';
+$wb['mailmailinglist_link_txt'] = 'Lien vers la mailing list dans la liste des Liste de distribution';
+$wb['mailmailinglist_url_txt'] = 'URL des Liste de distribution';
+$wb['phpmyadmin_url_txt'] = 'URL de PHPMyAdmin';
+$wb['use_domain_module_txt'] = 'Utiliser le module de domaine pour ajouter de nouveaux domaines';
+$wb['use_domain_module_hint'] = 'Si vous utilisez ce module, vos utilisateurs peuvent uniquement sélectionner un des domaines que l’admin crée pour eux. Ils ne peuvent pas éditer librement le champ domaine. Vous devez vous identifier à nouveau après avoir modifié cette valeur pour rendre les modifications visibles.';
+$wb['new_domain_txt'] = 'HTML pour créer un nouveau domaine';
+$wb['webftp_url_txt'] = 'URL du WebFTP';
+$wb['admin_mail_txt'] = 'E-mail de l’administrateur';
+$wb['monitor_key_txt'] = 'Mot-clé du moniteur';
+$wb['admin_name_txt'] = 'Nom des administrateurs';
+$wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
+$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
+$wb['smtp_host_txt'] = 'SMTP host';
+$wb['smtp_port_txt'] = 'SMTP port';
+$wb['smtp_user_txt'] = 'SMTP user';
+$wb['smtp_pass_txt'] = 'SMTP password';
+$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP';
+$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.';
+$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
+$wb['tab_change_warning_txt'] = 'Tab change warning';
+$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
+$wb['vhost_subdomains_txt'] = 'Create Subdomains as web site';
+$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
+$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
+$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
+$wb['use_loadindicator_txt'] = 'Use Load Indicator';
+$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.';
+$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word ’web’.';
+$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details';
+$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details';
+$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details';
+$wb['webmail_url_error_regex'] = 'Invalid webmail URL';
+$wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
+$wb['webmail_url_note_txt'] = 'Placeholder:';
+$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
+$wb['customer_no_template_txt'] = 'Customer No. template';
+$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters';
+$wb['customer_no_start_txt'] = 'Customer No. start value';
+$wb['customer_no_counter_txt'] = 'Customer No. counter';
+$wb['session_timeout_txt'] = 'Session timeout (minutes)';
+$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
+$wb['No'] = 'No';
+$wb['min_password_length_txt'] = 'Minimum password length';
+$wb['min_password_strength_txt'] = 'Minimum password strength';
+$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
+$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
+$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
+$wb['default_mailserver_txt'] = 'Default Mailserver';
+$wb['default_webserver_txt'] = 'Default Webserver';
+$wb['default_dnsserver_txt'] = 'Default DNS Server';
+$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['default_dbserver_txt'] = 'Default Database Server';
+$wb['company_name_txt'] = 'Company Name for the page title';
+$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites';
+$wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
+$wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
+$wb['login_link_error_regex'] = 'Invalid Link for Custom Login';
+$wb['ca_name_txt'] = 'Name';
+$wb['ca_issue_txt'] = 'Issue';
+$wb['ca_wildcard_txt'] = 'Use Wildcard';
+$wb['ca_critical_txt'] = 'Strict Check';
+$wb['ca_iodef_txt'] = 'iodef';
+$wb['active_txt'] = 'Aktive';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
+?>
diff --git a/hr_system_config.lng b/hr_system_config.lng
new file mode 100644
index 0000000000..66931524ec
--- /dev/null
+++ b/hr_system_config.lng
@@ -0,0 +1,96 @@
+<?php
+$wb['system_config_title'] = 'System Config';
+$wb['system_config_desc_txt'] = '';
+$wb['warning'] = 'Oprezno mijenjajte prefikse i postavke! Nemojte brisati prefikse na sistemima gdje postoji više od jednog klijenata.';
+$wb['dbname_prefix_txt'] = 'Prefiks nazivu baze';
+$wb['dbuser_prefix_txt'] = 'Prefiks nazivu korisnika baze';
+$wb['shelluser_prefix_txt'] = 'Prefiks Shell računu';
+$wb['webdavuser_prefix_txt'] = 'Prefix Webdav računu';
+$wb['ftpuser_prefix_txt'] = 'Prefiks FTP računu';
+$wb['dbname_prefix_error_regex'] = 'Nedozvoljeni znak u prefiksu naziva baze.';
+$wb['dbuser_prefix_error_regex'] = 'Nedozvoljeni znak u prefiksu naziva korisnika baze.';
+$wb['ftpuser_prefix_error_regex'] = 'Nedozvoljeni znak u prefiksu FTP računa.';
+$wb['shelluser_prefix_error_regex'] = 'Nedozvoljeni znak u prefiksu Shell računa.';
+$wb['webdavuser_prefix_error_regex'] = 'Nedozvoljeni znak u prefiksu webdav računa.';
+$wb['dblist_phpmyadmin_link_txt'] = 'Link za phpmyadmin u DB listi';
+$wb['mailboxlist_webmail_link_txt'] = 'Link za webmail u Mailbox listi';
+$wb['webmail_url_txt'] = 'Webmail URL';
+$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL';
+$wb['use_domain_module_txt'] = 'Koristi modul Domene za dodavanje novih domena';
+$wb['use_domain_module_hint'] = 'Ukoliko koristite ovaj modul, vaši klijenti mogu izabrati samo domenu koju im je admin kreirao. Klijenti ne mogu slobodno mijenjati postavke domene. Morate se ponovno logirati nakon mijenjanja ove postavke da bi promjene bile vidljive.';
+$wb['new_domain_txt'] = 'HTML za kreiranje nove domene';
+$wb['webftp_url_txt'] = 'WebFTP URL';
+$wb['monitor_key_txt'] = 'Monitoriranje riječi';
+$wb['dashboard_atom_url_admin_txt'] = 'RSS URL za početnu stranicu (admin)';
+$wb['dashboard_atom_url_reseller_txt'] = 'RSS URL za početnu stranicu (reseller)';
+$wb['dashboard_atom_url_client_txt'] = 'RSS URL za početnu stranicu (client)';
+$wb['enable_custom_login_txt'] = 'Dozvoli izbor korisničkog imena';
+$wb['mailmailinglist_link_txt'] = 'Link na mailing listu u Mailing listi';
+$wb['mailmailinglist_url_txt'] = 'URL mailing liste';
+$wb['admin_mail_txt'] = 'e-mail administratora';
+$wb['admin_name_txt'] = 'Ime administratora';
+$wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
+$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
+$wb['smtp_host_txt'] = 'SMTP host';
+$wb['smtp_port_txt'] = 'SMTP port';
+$wb['smtp_user_txt'] = 'SMTP user';
+$wb['smtp_pass_txt'] = 'SMTP password';
+$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP';
+$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.';
+$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
+$wb['tab_change_warning_txt'] = 'Tab change warning';
+$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
+$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
+$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
+$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
+$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
+$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
+$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
+$wb['use_loadindicator_txt'] = 'Use Load Indicator';
+$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.';
+$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.';
+$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
+$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details';
+$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details';
+$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details';
+$wb['webmail_url_error_regex'] = 'Invalid webmail URL';
+$wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
+$wb['webmail_url_note_txt'] = 'Placeholder:';
+$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
+$wb['customer_no_template_txt'] = 'Customer No. template';
+$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters';
+$wb['customer_no_start_txt'] = 'Customer No. start value';
+$wb['customer_no_counter_txt'] = 'Customer No. counter';
+$wb['session_timeout_txt'] = 'Session timeout (minutes)';
+$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
+$wb['No'] = 'No';
+$wb['min_password_length_txt'] = 'Minimum password length';
+$wb['min_password_strength_txt'] = 'Minimum password strength';
+$wb['company_name_txt'] = 'Company Name for the page title';
+$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites';
+$wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
+$wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
+$wb['login_link_error_regex'] = 'Invalid Link for Custom Login';
+$wb['default_mailserver_txt'] = 'Default Mailserver';
+$wb['default_webserver_txt'] = 'Default Webserver';
+$wb['default_dnsserver_txt'] = 'Default DNS Server';
+$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['default_dbserver_txt'] = 'Default Database Server';
+$wb['ca_name_txt'] = 'Name';
+$wb['ca_issue_txt'] = 'Issue';
+$wb['ca_wildcard_txt'] = 'Use Wildcard';
+$wb['ca_critical_txt'] = 'Strict Check';
+$wb['ca_iodef_txt'] = 'iodef';
+$wb['active_txt'] = 'Aktive';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
+?>
diff --git a/hu_system_config.lng b/hu_system_config.lng
new file mode 100644
index 0000000000..6e1f97dfbb
--- /dev/null
+++ b/hu_system_config.lng
@@ -0,0 +1,96 @@
+<?php
+$wb['system_config_title'] = 'System Config';
+$wb['system_config_desc_txt'] = '';
+$wb['warning'] = 'Edit these values carefully! Do not remove the prefixes on a systems with more then one Ügyfél.';
+$wb['dbname_prefix_txt'] = 'Database name prefix';
+$wb['dbuser_prefix_txt'] = 'Database user prefix';
+$wb['shelluser_prefix_txt'] = 'Shell user prefix';
+$wb['ftpuser_prefix_txt'] = 'FTP user prefix';
+$wb['dbname_prefix_error_regex'] = 'Char not allowed in database name prefix.';
+$wb['dbuser_prefix_error_regex'] = 'Char not allowed in database user prefix.';
+$wb['ftpuser_prefix_error_regex'] = 'Char not allowed in ftp user prefix.';
+$wb['shelluser_prefix_error_regex'] = 'Char not allowed in shell user prefix.';
+$wb['dblist_phpmyadmin_link_txt'] = 'Link to phpmyadmin in DB list';
+$wb['mailboxlist_webmail_link_txt'] = 'Link to webmail in Mailbox list';
+$wb['webmail_url_txt'] = 'Webmail URL';
+$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL';
+$wb['use_domain_module_txt'] = 'Use the domain-module to add new domains';
+$wb['use_domain_module_hint'] = 'If you use this module, your customers can only select one of the domains the admin creates for them. They can not free edit the domain-field.You have to re-login after changing this value, to make the changes visible.';
+$wb['new_domain_txt'] = 'HTML to create a new domain';
+$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
+$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)';
+$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)';
+$wb['webdavuser_prefix_txt'] = 'Webdav user prefix';
+$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.';
+$wb['webftp_url_txt'] = 'WebFTP URL';
+$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list';
+$wb['mailmailinglist_url_txt'] = 'Mailing list URL';
+$wb['admin_mail_txt'] = 'Administrators e-mail';
+$wb['admin_name_txt'] = 'Administrators name';
+$wb['enable_custom_login_txt'] = 'Allow custom login name';
+$wb['monitor_key_txt'] = 'Monitor keyword';
+$wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
+$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
+$wb['smtp_host_txt'] = 'SMTP host';
+$wb['smtp_port_txt'] = 'SMTP port';
+$wb['smtp_user_txt'] = 'SMTP user';
+$wb['smtp_pass_txt'] = 'SMTP password';
+$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP';
+$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.';
+$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
+$wb['tab_change_warning_txt'] = 'Tab change warning';
+$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
+$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
+$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
+$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
+$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
+$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
+$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
+$wb['use_loadindicator_txt'] = 'Use Load Indicator';
+$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.';
+$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.';
+$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
+$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details';
+$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details';
+$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details';
+$wb['webmail_url_error_regex'] = 'Invalid webmail URL';
+$wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
+$wb['webmail_url_note_txt'] = 'Placeholder:';
+$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
+$wb['customer_no_template_txt'] = 'Customer No. template';
+$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters';
+$wb['customer_no_start_txt'] = 'Customer No. start value';
+$wb['customer_no_counter_txt'] = 'Customer No. counter';
+$wb['session_timeout_txt'] = 'Session timeout (minutes)';
+$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
+$wb['No'] = 'No';
+$wb['min_password_length_txt'] = 'Minimum password length';
+$wb['min_password_strength_txt'] = 'Minimum password strength';
+$wb['company_name_txt'] = 'Company Name for the page title';
+$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites';
+$wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
+$wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
+$wb['login_link_error_regex'] = 'Invalid Link for Custom Login';
+$wb['default_mailserver_txt'] = 'Default Mailserver';
+$wb['default_webserver_txt'] = 'Default Webserver';
+$wb['default_dnsserver_txt'] = 'Default DNS Server';
+$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['default_dbserver_txt'] = 'Default Database Server';
+$wb['ca_name_txt'] = 'Name';
+$wb['ca_issue_txt'] = 'Issue';
+$wb['ca_wildcard_txt'] = 'Use Wildcard';
+$wb['ca_critical_txt'] = 'Strict Check';
+$wb['ca_iodef_txt'] = 'iodef';
+$wb['active_txt'] = 'Aktive';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
+?>
diff --git a/id_system_config.lng b/id_system_config.lng
new file mode 100644
index 0000000000..9072d62832
--- /dev/null
+++ b/id_system_config.lng
@@ -0,0 +1,96 @@
+<?php
+$wb['system_config_title'] = 'System Config';
+$wb['system_config_desc_txt'] = '';
+$wb['warning'] = 'Sunting nilai-nilai ini dengan hati-hati! Jangan hapus prefiks di sistem yang memiliki lebih dari 1 klien.';
+$wb['dbname_prefix_txt'] = 'Prefiks nama database';
+$wb['dbuser_prefix_txt'] = 'Prefiks pengguna database';
+$wb['shelluser_prefix_txt'] = 'Prefiks pengguna shell';
+$wb['ftpuser_prefix_txt'] = 'Prefiks pengguna FTP';
+$wb['dbname_prefix_error_regex'] = 'Karakter tidak diperbolehkan di prefiks nama database.';
+$wb['dbuser_prefix_error_regex'] = 'Karakter tidak diperbolehkan di prefiks pengguna database.';
+$wb['ftpuser_prefix_error_regex'] = 'Karakter tidak diperbolehkan di prefiks pengguna ftp.';
+$wb['shelluser_prefix_error_regex'] = 'Karakter tidak diperbolehkan di prefiks pengguna shell.';
+$wb['dblist_phpmyadmin_link_txt'] = 'Tautan ke phpmyadmin di daftar DB';
+$wb['mailboxlist_webmail_link_txt'] = 'Tautan ke webmail di daftar Mailbox';
+$wb['webmail_url_txt'] = 'URL Webmail';
+$wb['phpmyadmin_url_txt'] = 'URL PHPMyAdmin';
+$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
+$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)';
+$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)';
+$wb['webdavuser_prefix_txt'] = 'Prefiks pengguna Webdav';
+$wb['webdavuser_prefix_error_regex'] = 'Karakter tidak diperbolehkan di prefiks pengguna webdav.';
+$wb['use_domain_module_txt'] = 'Gunakan modul domain untuk menambahkan domain baru';
+$wb['use_domain_module_hint'] = 'Jika Anda menggunakan modul ini, pelanggan Anda hanya dapat memilih salah satu domain yang dibuat oleh admin untuk mereka. Mereka tidak bisa menyunting dengan bebas kolom domain. Anda harus masuk kembali setelah mengubah nilai ini, agar perubahannya terlihat.';
+$wb['new_domain_txt'] = 'HTML untuk membuat domain baru';
+$wb['webftp_url_txt'] = 'URL WebFTP';
+$wb['enable_custom_login_txt'] = 'Allow custom login name';
+$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list';
+$wb['mailmailinglist_url_txt'] = 'Mailing list URL';
+$wb['admin_mail_txt'] = 'Administrators e-mail';
+$wb['monitor_key_txt'] = 'Monitor keyword';
+$wb['admin_name_txt'] = 'Administrators name';
+$wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
+$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
+$wb['smtp_host_txt'] = 'SMTP host';
+$wb['smtp_port_txt'] = 'SMTP port';
+$wb['smtp_user_txt'] = 'SMTP user';
+$wb['smtp_pass_txt'] = 'SMTP password';
+$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP';
+$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.';
+$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
+$wb['tab_change_warning_txt'] = 'Tab change warning';
+$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
+$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
+$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
+$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
+$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
+$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
+$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
+$wb['use_loadindicator_txt'] = 'Use Load Indicator';
+$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.';
+$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.';
+$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
+$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details';
+$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details';
+$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details';
+$wb['webmail_url_error_regex'] = 'Invalid webmail URL';
+$wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
+$wb['webmail_url_note_txt'] = 'Placeholder:';
+$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
+$wb['customer_no_template_txt'] = 'Customer No. template';
+$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters';
+$wb['customer_no_start_txt'] = 'Customer No. start value';
+$wb['customer_no_counter_txt'] = 'Customer No. counter';
+$wb['session_timeout_txt'] = 'Session timeout (minutes)';
+$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
+$wb['No'] = 'No';
+$wb['min_password_length_txt'] = 'Minimum password length';
+$wb['min_password_strength_txt'] = 'Minimum password strength';
+$wb['company_name_txt'] = 'Company Name for the page title';
+$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites';
+$wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
+$wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
+$wb['login_link_error_regex'] = 'Invalid Link for Custom Login';
+$wb['default_mailserver_txt'] = 'Default Mailserver';
+$wb['default_webserver_txt'] = 'Default Webserver';
+$wb['default_dnsserver_txt'] = 'Default DNS Server';
+$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['default_dbserver_txt'] = 'Default Database Server';
+$wb['ca_name_txt'] = 'Name';
+$wb['ca_issue_txt'] = 'Issue';
+$wb['ca_wildcard_txt'] = 'Use Wildcard';
+$wb['ca_critical_txt'] = 'Strict Check';
+$wb['ca_iodef_txt'] = 'iodef';
+$wb['active_txt'] = 'Aktive';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
+?>
diff --git a/it_system_config.lng b/it_system_config.lng
new file mode 100644
index 0000000000..42a03ed0b8
--- /dev/null
+++ b/it_system_config.lng
@@ -0,0 +1,96 @@
+<?php
+$wb['system_config_title'] = 'System Config';
+$wb['system_config_desc_txt'] = '';
+$wb['warning'] = 'Edit these values carefully! Do not remove the prefixes on a systems with more then one client.';
+$wb['dbname_prefix_txt'] = 'Prefisso nome database';
+$wb['dbuser_prefix_txt'] = 'Prefisso utente database';
+$wb['shelluser_prefix_txt'] = 'Prefisso utente Shell';
+$wb['ftpuser_prefix_txt'] = 'Prefisso utente FTP';
+$wb['dbname_prefix_error_regex'] = 'Char not allowed in database name prefix.';
+$wb['dbuser_prefix_error_regex'] = 'Char not allowed in database user prefix.';
+$wb['ftpuser_prefix_error_regex'] = 'Char not allowed in ftp user prefix.';
+$wb['shelluser_prefix_error_regex'] = 'Char not allowed in shell user prefix.';
+$wb['dblist_phpmyadmin_link_txt'] = 'Link to phpmyadmin in DB list';
+$wb['mailboxlist_webmail_link_txt'] = 'Link to webmail in Mailbox list';
+$wb['webmail_url_txt'] = 'Webmail URL';
+$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL';
+$wb['use_domain_module_txt'] = 'Use the domain-module to add new domains';
+$wb['use_domain_module_hint'] = 'If you use this module, your customers can only select one of the domains the admin creates for them. They can not free edit the domain-field.You have to re-login after changing this value, to make the changes visible.';
+$wb['new_domain_txt'] = 'HTML to create a new domain';
+$wb['webdavuser_prefix_txt'] = 'Webdav user prefix';
+$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.';
+$wb['webftp_url_txt'] = 'WebFTP URL';
+$wb['monitor_key_txt'] = 'Monitor keyword';
+$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
+$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)';
+$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)';
+$wb['enable_custom_login_txt'] = 'Allow custom login name';
+$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list';
+$wb['mailmailinglist_url_txt'] = 'Mailing list URL';
+$wb['admin_mail_txt'] = 'Administrators e-mail';
+$wb['admin_name_txt'] = 'Administrators name';
+$wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
+$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
+$wb['smtp_host_txt'] = 'SMTP host';
+$wb['smtp_port_txt'] = 'SMTP port';
+$wb['smtp_user_txt'] = 'SMTP user';
+$wb['smtp_pass_txt'] = 'SMTP password';
+$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP';
+$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.';
+$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
+$wb['tab_change_warning_txt'] = 'Tab change warning';
+$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
+$wb['vhost_subdomains_txt'] = 'Crea  Subdomains as web site';
+$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
+$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
+$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
+$wb['use_loadindicator_txt'] = 'Use Load Indicator';
+$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.';
+$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.';
+$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details';
+$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details';
+$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details';
+$wb['webmail_url_error_regex'] = 'Invalid webmail URL';
+$wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
+$wb['webmail_url_note_txt'] = 'Placeholder:';
+$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
+$wb['customer_no_template_txt'] = 'Customer No. template';
+$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters';
+$wb['customer_no_start_txt'] = 'Customer No. start value';
+$wb['customer_no_counter_txt'] = 'Customer No. counter';
+$wb['session_timeout_txt'] = 'Session timeout (minutes)';
+$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
+$wb['No'] = 'No';
+$wb['min_password_length_txt'] = 'Minimum password length';
+$wb['min_password_strength_txt'] = 'Minimum password strength';
+$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
+$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
+$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
+$wb['default_mailserver_txt'] = 'Default Mailserver';
+$wb['default_webserver_txt'] = 'Default Webserver';
+$wb['default_dnsserver_txt'] = 'Default DNS Server';
+$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['default_dbserver_txt'] = 'Default Database Server';
+$wb['company_name_txt'] = 'Company Name for the page title';
+$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites';
+$wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
+$wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
+$wb['login_link_error_regex'] = 'Invalid Link for Custom Login';
+$wb['ca_name_txt'] = 'Name';
+$wb['ca_issue_txt'] = 'Issue';
+$wb['ca_wildcard_txt'] = 'Use Wildcard';
+$wb['ca_critical_txt'] = 'Strict Check';
+$wb['ca_iodef_txt'] = 'iodef';
+$wb['active_txt'] = 'Aktive';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
+?>
diff --git a/ja_system_config.lng b/ja_system_config.lng
new file mode 100644
index 0000000000..dfea52b18d
--- /dev/null
+++ b/ja_system_config.lng
@@ -0,0 +1,96 @@
+<?php
+$wb['system_config_title'] = 'System Config';
+$wb['system_config_desc_txt'] = '';
+$wb['warning'] = '値の変更には細心の注意を払ってください。クライアントが利用中のシステムのプリフィックスは削除しないでください。';
+$wb['dbname_prefix_txt'] = 'データベース名のプリフィックス';
+$wb['dbuser_prefix_txt'] = 'データベースユーザー名のプリフィックス';
+$wb['shelluser_prefix_txt'] = 'Shellユーザー名のプリフィックス';
+$wb['ftpuser_prefix_txt'] = 'FTPユーザー名のプリフィックス';
+$wb['dbname_prefix_error_regex'] = 'データベースのプリフィックスとして不正な値が指定されています。';
+$wb['dbuser_prefix_error_regex'] = 'データベースユーザーのプリフィックスとして不正な値が指定されています。';
+$wb['ftpuser_prefix_error_regex'] = 'FTPユーザーのプリフィックスとして不正な値が指定されています。';
+$wb['shelluser_prefix_error_regex'] = 'Shellユーザーのプリフィックスとして不正な値が指定されています。';
+$wb['dblist_phpmyadmin_link_txt'] = 'データベースの一覧から phpmyadmin へリンクする';
+$wb['mailboxlist_webmail_link_txt'] = 'メールボックスの一覧から webmail へリンクする';
+$wb['webmail_url_txt'] = 'Webmail URL';
+$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL';
+$wb['use_domain_module_txt'] = 'Use the domain-module to add new domains';
+$wb['use_domain_module_hint'] = 'If you use this module, your customers can only select one of the domains the admin creates for them. They can not free edit the domain-field.You have to re-login after changing this value, to make the changes visible.';
+$wb['new_domain_txt'] = 'HTML to create a new domain';
+$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
+$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)';
+$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)';
+$wb['webdavuser_prefix_txt'] = 'Webdav user prefix';
+$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.';
+$wb['webftp_url_txt'] = 'WebFTP URL';
+$wb['enable_custom_login_txt'] = 'Allow custom login name';
+$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list';
+$wb['mailmailinglist_url_txt'] = 'Mailing list URL';
+$wb['admin_mail_txt'] = 'Administrators e-mail';
+$wb['monitor_key_txt'] = 'Monitor keyword';
+$wb['admin_name_txt'] = 'Administrators name';
+$wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
+$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
+$wb['smtp_host_txt'] = 'SMTP host';
+$wb['smtp_port_txt'] = 'SMTP port';
+$wb['smtp_user_txt'] = 'SMTP user';
+$wb['smtp_pass_txt'] = 'SMTP password';
+$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP';
+$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.';
+$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
+$wb['tab_change_warning_txt'] = 'Tab change warning';
+$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
+$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
+$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
+$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
+$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
+$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
+$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
+$wb['use_loadindicator_txt'] = 'Use Load Indicator';
+$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.';
+$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.';
+$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
+$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details';
+$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details';
+$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details';
+$wb['webmail_url_error_regex'] = 'Invalid webmail URL';
+$wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
+$wb['webmail_url_note_txt'] = 'Placeholder:';
+$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
+$wb['customer_no_template_txt'] = 'Customer No. template';
+$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters';
+$wb['customer_no_start_txt'] = 'Customer No. start value';
+$wb['customer_no_counter_txt'] = 'Customer No. counter';
+$wb['session_timeout_txt'] = 'Session timeout (minutes)';
+$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
+$wb['No'] = 'No';
+$wb['min_password_length_txt'] = 'Minimum password length';
+$wb['min_password_strength_txt'] = 'Minimum password strength';
+$wb['company_name_txt'] = 'Company Name for the page title';
+$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites';
+$wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
+$wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
+$wb['login_link_error_regex'] = 'Invalid Link for Custom Login';
+$wb['default_mailserver_txt'] = 'Default Mailserver';
+$wb['default_webserver_txt'] = 'Default Webserver';
+$wb['default_dnsserver_txt'] = 'Default DNS Server';
+$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['default_dbserver_txt'] = 'Default Database Server';
+$wb['ca_name_txt'] = 'Name';
+$wb['ca_issue_txt'] = 'Issue';
+$wb['ca_wildcard_txt'] = 'Use Wildcard';
+$wb['ca_critical_txt'] = 'Strict Check';
+$wb['ca_iodef_txt'] = 'iodef';
+$wb['active_txt'] = 'Aktive';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
+?>
diff --git a/nl_system_config.lng b/nl_system_config.lng
new file mode 100644
index 0000000000..358edde69b
--- /dev/null
+++ b/nl_system_config.lng
@@ -0,0 +1,96 @@
+<?php
+$wb['system_config_title'] = 'System Config';
+$wb['system_config_desc_txt'] = '';
+$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
+$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)';
+$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)';
+$wb['warning'] = 'Edit these values carefully! Verwijder de voorvoegsels niet op systemen met meer dan ♪één klant.';
+$wb['dbname_prefix_txt'] = 'Database naam voorvoegsel';
+$wb['dbuser_prefix_txt'] = 'Database gebruiker voorvoegsel';
+$wb['shelluser_prefix_txt'] = 'Shell gebruiker voorvoegsel';
+$wb['webdavuser_prefix_txt'] = 'Webdav gebruiker voorvoegsel';
+$wb['ftpuser_prefix_txt'] = 'FTP gebruiker voorvoegsel';
+$wb['dbname_prefix_error_regex'] = 'Char niet toegestaan in database naam voorvoegsel.';
+$wb['dbuser_prefix_error_regex'] = 'Char niet toegestaan in database gebruiker voorvoegsel.';
+$wb['ftpuser_prefix_error_regex'] = 'Char niet toegestaan in ftp gebruiker voorvoegsel.';
+$wb['shelluser_prefix_error_regex'] = 'Char niet toegestaan in shell gebruiker voorvoegsel.';
+$wb['webdavuser_prefix_error_regex'] = 'Char niet toegestaan in webdav gebruiker voorvoegsel.';
+$wb['dblist_phpmyadmin_link_txt'] = 'Link naar phpmyadmin in DB lijst';
+$wb['mailboxlist_webmail_link_txt'] = 'Link naar webmail in Mailbox lijst';
+$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details';
+$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details';
+$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details';
+$wb['webmail_url_txt'] = 'Webmail URL';
+$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL';
+$wb['use_domain_module_txt'] = 'Gebruik de domein-module om nieuwe domeinen toe te voegen';
+$wb['use_domain_module_hint'] = 'Als u deze module gebruikt, kunnen uw klanten alleen de domeinen selecteren die de administrator heeft aangemaakt. klanten kunnen het domein-veld zelf niet wijzigen. Na opnieuw ingelogd te zijn zullen de wijzigingen zichtbaar zijn.';
+$wb['new_domain_txt'] = 'HTML om een nieuw domein te maken';
+$wb['webftp_url_txt'] = 'WebFTP URL';
+$wb['enable_custom_login_txt'] = 'Allow custom login name';
+$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list';
+$wb['mailmailinglist_url_txt'] = 'Mailing list URL';
+$wb['admin_mail_txt'] = 'Administrators e-mail';
+$wb['monitor_key_txt'] = 'Monitor keyword';
+$wb['admin_name_txt'] = 'Administrators name';
+$wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
+$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
+$wb['smtp_host_txt'] = 'SMTP host';
+$wb['smtp_port_txt'] = 'SMTP port';
+$wb['smtp_user_txt'] = 'SMTP user';
+$wb['smtp_pass_txt'] = 'SMTP password';
+$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP';
+$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.';
+$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
+$wb['tab_change_warning_txt'] = 'Tab change warning';
+$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
+$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
+$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
+$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
+$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
+$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
+$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
+$wb['use_loadindicator_txt'] = 'Use Load Indicator';
+$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.';
+$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.';
+$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
+$wb['webmail_url_error_regex'] = 'Invalid webmail URL';
+$wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
+$wb['webmail_url_note_txt'] = 'Placeholder:';
+$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
+$wb['customer_no_template_txt'] = 'Customer No. template';
+$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters';
+$wb['customer_no_start_txt'] = 'Customer No. start value';
+$wb['customer_no_counter_txt'] = 'Customer No. counter';
+$wb['session_timeout_txt'] = 'Session timeout (minutes)';
+$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
+$wb['No'] = 'No';
+$wb['min_password_length_txt'] = 'Minimum password length';
+$wb['min_password_strength_txt'] = 'Minimum password strength';
+$wb['company_name_txt'] = 'Company Name for the page title';
+$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites';
+$wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
+$wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
+$wb['login_link_error_regex'] = 'Invalid Link for Custom Login';
+$wb['default_mailserver_txt'] = 'Default Mailserver';
+$wb['default_webserver_txt'] = 'Default Webserver';
+$wb['default_dnsserver_txt'] = 'Default DNS Server';
+$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['default_dbserver_txt'] = 'Default Database Server';
+$wb['ca_name_txt'] = 'Name';
+$wb['ca_issue_txt'] = 'Issue';
+$wb['ca_wildcard_txt'] = 'Use Wildcard';
+$wb['ca_critical_txt'] = 'Strict Check';
+$wb['ca_iodef_txt'] = 'iodef';
+$wb['active_txt'] = 'Aktive';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
+?>
diff --git a/pl_system_config.lng b/pl_system_config.lng
new file mode 100644
index 0000000000..d309ab812f
--- /dev/null
+++ b/pl_system_config.lng
@@ -0,0 +1,96 @@
+<?php
+$wb['system_config_title'] = 'System Config';
+$wb['warning'] = 'Edytuj te wartości ostrożnie! Nie usuwaj prefiksów w systemie w więcej niż jednym kliencie.';
+$wb['dbname_prefix_txt'] = 'Prefiks nazwy bazy danych';
+$wb['dbuser_prefix_txt'] = 'Prefiks użytkownika bazy danych';
+$wb['shelluser_prefix_txt'] = 'Prefiks użytkownika shell';
+$wb['ftpuser_prefix_txt'] = 'Prefiks użytkownika FTP';
+$wb['dbname_prefix_error_regex'] = 'Znak nie jest dozwolony w prefiksie nazwy bazy danych.';
+$wb['dbuser_prefix_error_regex'] = 'Znak nie jest dozwolony w prefiksie nazwy użytkownika bazy danych.';
+$wb['ftpuser_prefix_error_regex'] = 'Znak nie jest dozwolony w prefiksie nazwy użytkownika ftp.';
+$wb['shelluser_prefix_error_regex'] = 'Znak nie jest dozwolony w prefiksie nazwy użytkownika shell.';
+$wb['dblist_phpmyadmin_link_txt'] = 'Adres do phpMyAdmin w liście baz danych';
+$wb['mailboxlist_webmail_link_txt'] = 'Adres do poczty e-mail w liście skrzynek pocztowych';
+$wb['webmail_url_txt'] = 'Webmail URL';
+$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL';
+$wb['use_domain_module_txt'] = 'Użyj modułu Domeny do dodawania nowych domen';
+$wb['use_domain_module_hint'] = 'Jeżeli użyjesz tego modułu, Twoi użytkownicy będą mogli użyć tylko domeny stworzonej im przez administratora. Nie mogą edytować wpisów domeny. Musisz przelogować się po zmianie tej wartości, aby zobaczyć widoczne rezultaty.';
+$wb['new_domain_txt'] = 'HTML do stworzenia nowej domeny';
+$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
+$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)';
+$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)';
+$wb['webdavuser_prefix_txt'] = 'Prefiks użytkownika webdav';
+$wb['webdavuser_prefix_error_regex'] = 'Niedozwolony znak w prefiksie użytkownika webdav.';
+$wb['webftp_url_txt'] = 'Link do WebFTP';
+$wb['enable_custom_login_txt'] = 'Zezwalaj na dowolnÄ… nazwÄ™ loginu';
+$wb['mailmailinglist_link_txt'] = 'Link do listy mailingowej na liście list mailingowych';
+$wb['mailmailinglist_url_txt'] = 'URL listy mailingowej';
+$wb['admin_mail_txt'] = 'E-Mail administratora';
+$wb['monitor_key_txt'] = 'Klucz monitora';
+$wb['admin_name_txt'] = 'Nazwa administratora';
+$wb['system_config_desc_txt'] = '';
+$wb['smtp_missing_admin_mail_txt'] = 'Podaj nazwę administratora oraz adres email jeżeli chcesz użyć wysyłanie maili przez SMTP.';
+$wb['tab_change_discard_txt'] = 'Porzuć zmiany przy zmianie zakładki';
+$wb['tab_change_warning_txt'] = 'Ostrzegaj przy zmianie zakładki';
+$wb['tab_change_warning_note_txt'] = 'Pokaż ostrzeżenie przy zmianie zakładki jeżeli zostały zmienione dane przez użytkownika.';
+$wb['vhost_subdomains_txt'] = 'Twórz subdomeny jako strony web';
+$wb['vhost_subdomains_note_txt'] = 'Nie możesz wyłączyć tego tak długo jak istnieją w systemie vhosty subdomen.';
+$wb['vhost_aliasdomains_txt'] = 'Twórz aliasdomeny jako strony web';
+$wb['vhost_aliasdomains_note_txt'] = 'Nie możesz wyłączyć tego tak długo jak istnieją w systemie vhosty aliasdomen.';
+$wb['maintenance_mode_txt'] = 'Tryb serwisowy';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
+$wb['smtp_enabled_txt'] = 'Używaj SMTP do wysyłania powiadomień systemowych';
+$wb['smtp_host_txt'] = 'Host SMTP';
+$wb['smtp_port_txt'] = 'Port SMTP';
+$wb['smtp_user_txt'] = 'Użytkownik SMTP';
+$wb['smtp_pass_txt'] = 'Hasło SMTP';
+$wb['smtp_crypt_txt'] = 'Użyj połączenia szyfrowanego SSL/TLS dla SMTP';
+$wb['phpmyadmin_url_error_regex'] = 'Nieprawidłowy link do phpmyadmin';
+$wb['use_combobox_txt'] = 'Użyj jQuery UI Combobox';
+$wb['use_loadindicator_txt'] = 'Użyj wskaźnika ładowania';
+$wb['f5_to_reload_js_txt'] = 'Jeżeli zmienisz to, możesz potrzebować wcisnąć F5 lub wyczyścić cache aby przeglądarka przeładowała biblioteki JavaScript.';
+$wb['client_username_web_check_disabled_txt'] = 'Wyłącz sprawdzanie nazwy klienta w poszukiwaniu słowa -web-.';
+$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
+$wb['mailbox_show_autoresponder_tab_txt'] = 'Pokaż zakładkę autorespondera w szczegółach konta email.';
+$wb['mailbox_show_mail_filter_tab_txt'] = 'Pokaż zakładkę filtra email w szczegółach konta email.';
+$wb['mailbox_show_custom_rules_tab_txt'] = 'Pokaż zakładkę własnych filtrów email w szczegółach konta email.';
+$wb['webmail_url_error_regex'] = 'Invalid webmail URL';
+$wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
+$wb['webmail_url_note_txt'] = 'Placeholder:';
+$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
+$wb['customer_no_template_txt'] = 'Customer No. template';
+$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters';
+$wb['customer_no_start_txt'] = 'Customer No. start value';
+$wb['customer_no_counter_txt'] = 'Customer No. counter';
+$wb['session_timeout_txt'] = 'Session timeout (minutes)';
+$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
+$wb['No'] = 'No';
+$wb['min_password_length_txt'] = 'Minimum password length';
+$wb['min_password_strength_txt'] = 'Minimum password strength';
+$wb['company_name_txt'] = 'Company Name for the page title';
+$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites';
+$wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
+$wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
+$wb['login_link_error_regex'] = 'Invalid Link for Custom Login';
+$wb['default_mailserver_txt'] = 'Default Mailserver';
+$wb['default_webserver_txt'] = 'Default Webserver';
+$wb['default_dnsserver_txt'] = 'Default DNS Server';
+$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['default_dbserver_txt'] = 'Default Database Server';
+$wb['ca_name_txt'] = 'Name';
+$wb['ca_issue_txt'] = 'Issue';
+$wb['ca_wildcard_txt'] = 'Use Wildcard';
+$wb['ca_critical_txt'] = 'Strict Check';
+$wb['ca_iodef_txt'] = 'iodef';
+$wb['active_txt'] = 'Aktive';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
+?>
diff --git a/pt_system_config.lng b/pt_system_config.lng
new file mode 100644
index 0000000000..05edb306d9
--- /dev/null
+++ b/pt_system_config.lng
@@ -0,0 +1,96 @@
+<?php
+$wb['system_config_title'] = 'System Config';
+$wb['system_config_desc_txt'] = '';
+$wb['warning'] = 'Edite estes valores com cuidado! Não remova os prefixos em um sistema com mais de um cliente!!';
+$wb['dbname_prefix_txt'] = 'Prefixo Nome da Base de Dados';
+$wb['dbuser_prefix_txt'] = 'Prefixo Utilizador da Base de Dados';
+$wb['shelluser_prefix_txt'] = 'Prefixo Utilizador de Shell';
+$wb['ftpuser_prefix_txt'] = 'Prefixo Utilizador FTP';
+$wb['dbname_prefix_error_regex'] = 'Caractere não permitido para o prefixo do nome da Base de Dados!';
+$wb['dbuser_prefix_error_regex'] = 'Caractere não permitido para o prefixo do Utilizador da Base de Dados!';
+$wb['ftpuser_prefix_error_regex'] = 'Caractere não permitido para o prefixo do Utilizador FTP!';
+$wb['shelluser_prefix_error_regex'] = 'Caractere não permitido para o prefixo do Utilizador Shell!';
+$wb['dblist_phpmyadmin_link_txt'] = 'Link para phpmyadmin';
+$wb['mailboxlist_webmail_link_txt'] = 'Link para o webmail';
+$wb['webmail_url_txt'] = 'URL do Webmail';
+$wb['phpmyadmin_url_txt'] = 'URL do PHPMyAdmin';
+$wb['use_domain_module_txt'] = 'Use the domain-module to add new domains';
+$wb['use_domain_module_hint'] = 'If you use this module, your customers can only select one of the domains the admin creates for them. They can not free edit the domain-field.You have to re-login after changing this value, to make the changes visible.';
+$wb['new_domain_txt'] = 'HTML to create a new domain';
+$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
+$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)';
+$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)';
+$wb['webdavuser_prefix_txt'] = 'Webdav user prefix';
+$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.';
+$wb['webftp_url_txt'] = 'WebFTP URL';
+$wb['enable_custom_login_txt'] = 'Allow custom login name';
+$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list';
+$wb['mailmailinglist_url_txt'] = 'Mailing list URL';
+$wb['admin_mail_txt'] = 'Administrators e-mail';
+$wb['monitor_key_txt'] = 'Monitor keyword';
+$wb['admin_name_txt'] = 'Administrators name';
+$wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
+$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
+$wb['smtp_host_txt'] = 'SMTP host';
+$wb['smtp_port_txt'] = 'SMTP port';
+$wb['smtp_user_txt'] = 'SMTP user';
+$wb['smtp_pass_txt'] = 'SMTP password';
+$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP';
+$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.';
+$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
+$wb['tab_change_warning_txt'] = 'Tab change warning';
+$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
+$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
+$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
+$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
+$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
+$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
+$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
+$wb['use_loadindicator_txt'] = 'Use Load Indicator';
+$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.';
+$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.';
+$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
+$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details';
+$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details';
+$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details';
+$wb['webmail_url_error_regex'] = 'Invalid webmail URL';
+$wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
+$wb['webmail_url_note_txt'] = 'Placeholder:';
+$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
+$wb['customer_no_template_txt'] = 'Customer No. template';
+$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters';
+$wb['customer_no_start_txt'] = 'Customer No. start value';
+$wb['customer_no_counter_txt'] = 'Customer No. counter';
+$wb['session_timeout_txt'] = 'Session timeout (minutes)';
+$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
+$wb['No'] = 'No';
+$wb['min_password_length_txt'] = 'Minimum password length';
+$wb['min_password_strength_txt'] = 'Minimum password strength';
+$wb['company_name_txt'] = 'Company Name for the page title';
+$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites';
+$wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
+$wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
+$wb['login_link_error_regex'] = 'Invalid Link for Custom Login';
+$wb['default_mailserver_txt'] = 'Default Mailserver';
+$wb['default_webserver_txt'] = 'Default Webserver';
+$wb['default_dnsserver_txt'] = 'Default DNS Server';
+$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['default_dbserver_txt'] = 'Default Database Server';
+$wb['ca_name_txt'] = 'Name';
+$wb['ca_issue_txt'] = 'Issue';
+$wb['ca_wildcard_txt'] = 'Use Wildcard';
+$wb['ca_critical_txt'] = 'Strict Check';
+$wb['ca_iodef_txt'] = 'iodef';
+$wb['active_txt'] = 'Aktive';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
+?>
diff --git a/ro_system_config.lng b/ro_system_config.lng
new file mode 100644
index 0000000000..33ee2b4bde
--- /dev/null
+++ b/ro_system_config.lng
@@ -0,0 +1,96 @@
+<?php
+$wb['system_config_title'] = 'System Config';
+$wb['system_config_desc_txt'] = '';
+$wb['warning'] = 'Edit these values carefully! Do not remove the prefixes on a systems with more then one client.';
+$wb['dbname_prefix_txt'] = 'Database name prefix';
+$wb['dbuser_prefix_txt'] = 'Database user prefix';
+$wb['shelluser_prefix_txt'] = 'Shell user prefix';
+$wb['ftpuser_prefix_txt'] = 'FTP user prefix';
+$wb['dbname_prefix_error_regex'] = 'Char not allowed in database name prefix.';
+$wb['dbuser_prefix_error_regex'] = 'Char not allowed in database user prefix.';
+$wb['ftpuser_prefix_error_regex'] = 'Char not allowed in ftp user prefix.';
+$wb['shelluser_prefix_error_regex'] = 'Char not allowed in shell user prefix.';
+$wb['dblist_phpmyadmin_link_txt'] = 'Link to phpmyadmin in DB list';
+$wb['mailboxlist_webmail_link_txt'] = 'Link to webmail in Mailbox list';
+$wb['webmail_url_txt'] = 'Webmail URL';
+$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL';
+$wb['use_domain_module_txt'] = 'Use the domain-module to add new domains';
+$wb['use_domain_module_hint'] = 'If you use this module, your customers can only select one of the domains the admin creates for them. They can not free edit the domain-field.You have to re-login after changing this value, to make the changes visible.';
+$wb['new_domain_txt'] = 'HTML to create a new domain';
+$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
+$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)';
+$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)';
+$wb['webdavuser_prefix_txt'] = 'Webdav user prefix';
+$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.';
+$wb['webftp_url_txt'] = 'WebFTP URL';
+$wb['enable_custom_login_txt'] = 'Allow custom login name';
+$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list';
+$wb['mailmailinglist_url_txt'] = 'Mailing list URL';
+$wb['admin_mail_txt'] = 'Administrators e-mail';
+$wb['monitor_key_txt'] = 'Monitor keyword';
+$wb['admin_name_txt'] = 'Administrators name';
+$wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
+$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
+$wb['smtp_host_txt'] = 'SMTP host';
+$wb['smtp_port_txt'] = 'SMTP port';
+$wb['smtp_user_txt'] = 'SMTP user';
+$wb['smtp_pass_txt'] = 'SMTP password';
+$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP';
+$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.';
+$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
+$wb['tab_change_warning_txt'] = 'Tab change warning';
+$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
+$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
+$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
+$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
+$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
+$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
+$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
+$wb['use_loadindicator_txt'] = 'Use Load Indicator';
+$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.';
+$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.';
+$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
+$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details';
+$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details';
+$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details';
+$wb['webmail_url_error_regex'] = 'Invalid webmail URL';
+$wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
+$wb['webmail_url_note_txt'] = 'Placeholder:';
+$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
+$wb['customer_no_template_txt'] = 'Customer No. template';
+$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters';
+$wb['customer_no_start_txt'] = 'Customer No. start value';
+$wb['customer_no_counter_txt'] = 'Customer No. counter';
+$wb['session_timeout_txt'] = 'Session timeout (minutes)';
+$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
+$wb['No'] = 'No';
+$wb['min_password_length_txt'] = 'Minimum password length';
+$wb['min_password_strength_txt'] = 'Minimum password strength';
+$wb['company_name_txt'] = 'Company Name for the page title';
+$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites';
+$wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
+$wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
+$wb['login_link_error_regex'] = 'Invalid Link for Custom Login';
+$wb['default_mailserver_txt'] = 'Default Mailserver';
+$wb['default_webserver_txt'] = 'Default Webserver';
+$wb['default_dnsserver_txt'] = 'Default DNS Server';
+$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['default_dbserver_txt'] = 'Default Database Server';
+$wb['ca_name_txt'] = 'Name';
+$wb['ca_issue_txt'] = 'Issue';
+$wb['ca_wildcard_txt'] = 'Use Wildcard';
+$wb['ca_critical_txt'] = 'Strict Check';
+$wb['ca_iodef_txt'] = 'iodef';
+$wb['active_txt'] = 'Aktive';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
+?>
diff --git a/ru_system_config.lng b/ru_system_config.lng
new file mode 100644
index 0000000000..62c856fae0
--- /dev/null
+++ b/ru_system_config.lng
@@ -0,0 +1,96 @@
+<?php
+$wb['system_config_title'] = 'System Config';
+$wb['system_config_desc_txt'] = 'Настройка параметров по умолчанию';
+$wb['warning'] = 'Изменяйте эти значения аккуратно! Не удаляйте префиксы на системах где более одного пользователя.';
+$wb['dbname_prefix_txt'] = 'Префикс базы данных';
+$wb['dbuser_prefix_txt'] = 'Префикс пользователя базы данных';
+$wb['shelluser_prefix_txt'] = 'Префикс shell-пользователя';
+$wb['ftpuser_prefix_txt'] = 'Префикс FTP пользователя';
+$wb['dbname_prefix_error_regex'] = 'Некорректный символ в префиксе базы данных';
+$wb['dbuser_prefix_error_regex'] = 'Некорректный символ в префиксе пользователя базы данных';
+$wb['ftpuser_prefix_error_regex'] = 'Некорректный символ в префиксе FTP пользователя';
+$wb['shelluser_prefix_error_regex'] = 'Некорректный символ в префиксе shell-пользователя';
+$wb['dblist_phpmyadmin_link_txt'] = 'Ссылка на phpmyadmin в списке баз данных';
+$wb['mailboxlist_webmail_link_txt'] = 'Ссылка на веб-почту в списке почтовых ящиков';
+$wb['webmail_url_txt'] = 'URL веб-почты';
+$wb['phpmyadmin_url_txt'] = 'URL PHPMyAdmin';
+$wb['use_domain_module_txt'] = 'Использовать модуль домена, чтобы добавить новые домены';
+$wb['use_domain_module_hint'] = 'При использовании этого модуля, Ваши клиенты смогут выбрать только один из доменов, созданных для них администратором. Они не могут свободно редактировать поле \\"домен\\". Чтобы сделать эти изменения видимыми, Вы должны выйти и повторно войти в панель после изменения этого значения.';
+$wb['new_domain_txt'] = 'HTML текст, чтобы создать новый домен';
+$wb['webdavuser_prefix_txt'] = 'Префикс пользователя WebDAV';
+$wb['webdavuser_prefix_error_regex'] = 'Некорректный символ в префиксе пользователя WebDAV.';
+$wb['webftp_url_txt'] = 'URL WebFTP';
+$wb['monitor_key_txt'] = 'Monitor keyword';
+$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
+$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)';
+$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)';
+$wb['enable_custom_login_txt'] = 'Разрешить пользовательское имя входа в систему';
+$wb['mailmailinglist_link_txt'] = 'Ссылка на почтовую рассылку в списке рассылок';
+$wb['mailmailinglist_url_txt'] = 'URL почтовой рассылки';
+$wb['admin_mail_txt'] = 'E-mail администратора';
+$wb['admin_name_txt'] = 'Имя администратора';
+$wb['maintenance_mode_txt'] = 'Режим технического бслуживания';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
+$wb['smtp_enabled_txt'] = 'Использовать SMTP для отправки системных сообщений';
+$wb['smtp_host_txt'] = 'Хост SMTP';
+$wb['smtp_port_txt'] = 'Порт SMTP';
+$wb['smtp_user_txt'] = 'Пользователь SMTP';
+$wb['smtp_pass_txt'] = 'Пароль SMTP';
+$wb['smtp_crypt_txt'] = 'Использовать SSL/TLS-шифрование соединения для SMTP';
+$wb['smtp_missing_admin_mail_txt'] = 'Пожалуйста, введите имя администратора и адрес эл. почты администратора, если вы хотите использовать SMTP для отправки почты.';
+$wb['tab_change_discard_txt'] = 'Откатить изменения на вкладке изменить';
+$wb['tab_change_warning_txt'] = 'Tab change warning';
+$wb['tab_change_warning_note_txt'] = 'Показать предупреждение об изменении вкладки в формах редактирования, если какие-либо данные были изменены пользователем.';
+$wb['vhost_subdomains_txt'] = 'Создать поддомен как веб-сайт';
+$wb['vhost_subdomains_note_txt'] = 'Этот параметр не может быть отключен пока поскольку существует виртуальный хост поддоменов в системе!';
+$wb['vhost_aliasdomains_txt'] = 'Создать алиас доменов как веб-сайт';
+$wb['vhost_aliasdomains_note_txt'] = 'Этот параметр не может быть отключен пока поскольку существует виртуальный хост алиасов доменов в системе!';
+$wb['phpmyadmin_url_error_regex'] = 'Некорректный URL phpmyadmin';
+$wb['use_combobox_txt'] = 'Использовать jQuery UI Combobox';
+$wb['use_loadindicator_txt'] = 'Использовать индикатор загрузки';
+$wb['f5_to_reload_js_txt'] = 'Если вы измените это, вам, возможно, придется нажать F5, чтобы перезагрузить в браузере JavaScript-библиотеи или очистить кэш браузера.';
+$wb['client_username_web_check_disabled_txt'] = 'Отключить проверку логина клиента для слова \'web\'.';
+$wb['backups_include_into_web_quota_txt'] = 'Включить резервное копирование файлов в веб-квоту.';
+$wb['mailbox_show_autoresponder_tab_txt'] = 'Показывать вкладку автоответчика в деталях учетной записи электронной почты';
+$wb['mailbox_show_mail_filter_tab_txt'] = 'Показывать вкладку почтового фильтра в деталях учетной записи электронной почты';
+$wb['mailbox_show_custom_rules_tab_txt'] = 'Показывать вкладку пользовательского почтового фильтра в деталях учетной записи электронной почты';
+$wb['webmail_url_error_regex'] = 'Некорректный URL веб-почты';
+$wb['phpmyadmin_url_note_txt'] = 'Заменитель:';
+$wb['webmail_url_note_txt'] = 'Заменитель:';
+$wb['available_dashlets_note_txt'] = 'Доступные дашлеты:';
+$wb['admin_dashlets_left_txt'] = 'Дашлеты Админа слева';
+$wb['admin_dashlets_right_txt'] = 'Дашлеты Админа справа';
+$wb['reseller_dashlets_left_txt'] = 'Дашлеты Реселлера слева';
+$wb['reseller_dashlets_right_txt'] = 'Дашлеты Реселлера справа';
+$wb['client_dashlets_left_txt'] = 'Дашлеты Клиента слева';
+$wb['client_dashlets_right_txt'] = 'Дашлеты Клиента справа';
+$wb['customer_no_template_txt'] = 'Шаблон номера Клиента';
+$wb['customer_no_template_error_regex_txt'] = 'Шаблон номера Клиента содержит недопустимые символы.';
+$wb['customer_no_start_txt'] = 'Начальное значение номера Клиента';
+$wb['customer_no_counter_txt'] = 'Счётчик номера Клиента';
+$wb['session_timeout_txt'] = 'Тайм-аут сессии (в минутах)';
+$wb['session_allow_endless_txt'] = 'Включить \\"оставаться в системе\\"';
+$wb['No'] = 'Нет';
+$wb['min_password_length_txt'] = 'Минимальная длина пароля';
+$wb['min_password_strength_txt'] = 'Минимальная стойкость пароля';
+$wb['company_name_txt'] = 'Название компании для заголовка страницы';
+$wb['reseller_can_use_options_txt'] = 'Реселлер может использовать вкладку Параметры для веб-сайтов';
+$wb['custom_login_text_txt'] = 'Пользовательский текст на странице входа';
+$wb['custom_login_link_txt'] = 'Пользовательская ссылка на страницу входа';
+$wb['login_link_error_regex'] = 'Некорректная ссылка для пользовательского входа';
+$wb['default_mailserver_txt'] = 'Почтовый сервер по умолчанию';
+$wb['default_webserver_txt'] = 'Web-сервер по умолчанию';
+$wb['default_dnsserver_txt'] = 'DNS-сервер по умолчанию';
+$wb['default_slave_dnsserver_txt'] = 'Вторичный DNS-сервер по умолчанию';
+$wb['default_dbserver_txt'] = 'Сервер базы данных по умолчанию';
+$wb['ca_name_txt'] = 'Name';
+$wb['ca_issue_txt'] = 'Issue';
+$wb['ca_wildcard_txt'] = 'Use Wildcard';
+$wb['ca_critical_txt'] = 'Strict Check';
+$wb['ca_iodef_txt'] = 'iodef';
+$wb['active_txt'] = 'Aktive';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
+?>
diff --git a/se_system_config.lng b/se_system_config.lng
new file mode 100644
index 0000000000..bf0ec4942d
--- /dev/null
+++ b/se_system_config.lng
@@ -0,0 +1,96 @@
+<?php
+$wb['system_config_title'] = 'System Config';
+$wb['system_config_desc_txt'] = '';
+$wb['warning'] = 'Redigera dess värden försiktigt! Ta inte bort prefix på system med mer än en kund.';
+$wb['dbname_prefix_txt'] = 'Prefix för databasnamn';
+$wb['dbuser_prefix_txt'] = 'Prefix för databasanvändare';
+$wb['shelluser_prefix_txt'] = 'Prefix för shell-användare';
+$wb['ftpuser_prefix_txt'] = 'Prefix för FTP-användare';
+$wb['dbname_prefix_error_regex'] = 'Otillåtet tecken i prefix för databasnamn.';
+$wb['dbuser_prefix_error_regex'] = 'Otillåtet tecken i prefix för databasanvändare.';
+$wb['ftpuser_prefix_error_regex'] = 'Otillåtet tecken i prefix för FTP-användare.';
+$wb['shelluser_prefix_error_regex'] = 'Otillåtet tecken i prefix för shell-användare.';
+$wb['dblist_phpmyadmin_link_txt'] = 'Länka till PHPMyAdmin i databaslista';
+$wb['mailboxlist_webmail_link_txt'] = 'Länka till webbmail i epostkontolista';
+$wb['webmail_url_txt'] = 'Webbmail URL';
+$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL';
+$wb['use_domain_module_txt'] = 'Används domänmodul för att lägga till nya domäner';
+$wb['use_domain_module_hint'] = 'Om du använder denna modul kommer kunder endast kunna välja bland de domäner administratören har tilldelat dem, de kan alltså inte lägga till vilken domän som helst. Du måste logga in på nytt innan dessa ändringar blir synliga.';
+$wb['new_domain_txt'] = 'HTML vid skapande av nya domäner';
+$wb['dashboard_atom_url_admin_txt'] = 'Kontrolpanelens nyhetsflöde URL (admin)';
+$wb['dashboard_atom_url_reseller_txt'] = 'Kontrolpanelens nyhetsflöde URL (återförsäljare)';
+$wb['dashboard_atom_url_client_txt'] = 'Kontrolpanelens nyhetsflöde URL (kund)';
+$wb['webdavuser_prefix_txt'] = 'Prefix för WebDAV-användare';
+$wb['webdavuser_prefix_error_regex'] = 'Otillåtet tecken i prefix för WebDAV-användare';
+$wb['webftp_url_txt'] = 'WebbFTP URL';
+$wb['enable_custom_login_txt'] = 'Tillåt valfritt inloggningsnamn';
+$wb['mailmailinglist_link_txt'] = 'Länka till epostlista i listan över epostlistor';
+$wb['mailmailinglist_url_txt'] = 'Adress till epostlista';
+$wb['admin_mail_txt'] = 'Administratörens epostadress';
+$wb['monitor_key_txt'] = 'Bevakning nyckelord';
+$wb['admin_name_txt'] = 'Administratörens namn';
+$wb['maintenance_mode_txt'] = 'Underhållsläge';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
+$wb['smtp_enabled_txt'] = 'Använd SMTP för att skicka systemmail';
+$wb['smtp_host_txt'] = 'SMTP-värd';
+$wb['smtp_port_txt'] = 'SMTP-port';
+$wb['smtp_user_txt'] = 'SMTP-användare';
+$wb['smtp_pass_txt'] = 'SMTP-lösenord';
+$wb['smtp_crypt_txt'] = 'Använd SSL/TLS-krypterad anslutning för SMTP';
+$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.';
+$wb['tab_change_discard_txt'] = 'Kasta ändringar vid byte av flik';
+$wb['tab_change_warning_txt'] = 'Varning vid byte av flik';
+$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
+$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
+$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
+$wb['vhost_subdomains_txt'] = 'Skapa underdomäner som en egen sajt';
+$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
+$wb['phpmyadmin_url_error_regex'] = 'Ogiltig adress till PHPMyAdmin';
+$wb['use_combobox_txt'] = 'Använd jQuery UI Combobox';
+$wb['use_loadindicator_txt'] = 'Använd laddningsindikator';
+$wb['f5_to_reload_js_txt'] = 'Om du ändrar detta kan du behöva trycka F5 för att ladda om javascript, eller rensa din webbläsarcache.';
+$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.';
+$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
+$wb['mailbox_show_autoresponder_tab_txt'] = 'Visa autosvarsfliken vid detaljerna för epostkonto';
+$wb['mailbox_show_mail_filter_tab_txt'] = 'Visa epostfilterfliken vid detaljerna för epostkonto';
+$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details';
+$wb['webmail_url_error_regex'] = 'Invalid webmail URL';
+$wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
+$wb['webmail_url_note_txt'] = 'Placeholder:';
+$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
+$wb['customer_no_template_txt'] = 'Kundnummermall';
+$wb['customer_no_template_error_regex_txt'] = 'Kundnummermallen innehåller otillåtna tecken';
+$wb['customer_no_start_txt'] = 'Kundnummer startvärde';
+$wb['customer_no_counter_txt'] = 'Kundnummer räknare';
+$wb['session_timeout_txt'] = 'Session timeout (minuter)';
+$wb['session_allow_endless_txt'] = 'Aktivera \\"håll mig inloggad\\"';
+$wb['No'] = 'Nej';
+$wb['min_password_length_txt'] = 'Minsta lösenordslängd';
+$wb['min_password_strength_txt'] = 'Minsta lösenordsstyrka';
+$wb['company_name_txt'] = 'Company Name for the page title';
+$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites';
+$wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
+$wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
+$wb['login_link_error_regex'] = 'Invalid Link for Custom Login';
+$wb['default_mailserver_txt'] = 'Default Mailserver';
+$wb['default_webserver_txt'] = 'Default Webserver';
+$wb['default_dnsserver_txt'] = 'Default DNS Server';
+$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['default_dbserver_txt'] = 'Default Database Server';
+$wb['ca_name_txt'] = 'Name';
+$wb['ca_issue_txt'] = 'Issue';
+$wb['ca_wildcard_txt'] = 'Use Wildcard';
+$wb['ca_critical_txt'] = 'Strict Check';
+$wb['ca_iodef_txt'] = 'iodef';
+$wb['active_txt'] = 'Aktive';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
+?>
diff --git a/sk_system_config.lng b/sk_system_config.lng
new file mode 100644
index 0000000000..b6bbe102dd
--- /dev/null
+++ b/sk_system_config.lng
@@ -0,0 +1,96 @@
+<?php
+$wb['system_config_title'] = 'System Config';
+$wb['system_config_desc_txt'] = '';
+$wb['warning'] = 'Upravte tieto hodnoty pozorne! Neodstraňujte predpony na systémoch s viac ako jedného klienta.';
+$wb['dbname_prefix_txt'] = 'Predpona názvu databázy ';
+$wb['dbuser_prefix_txt'] = 'Predpona databáza užívateľa';
+$wb['shelluser_prefix_txt'] = 'Predpona Shell užívateľa';
+$wb['ftpuser_prefix_txt'] = 'Predpona FTP užívateľ';
+$wb['dbname_prefix_error_regex'] = 'Char nie je povolený v prefix názov databázy.';
+$wb['dbuser_prefix_error_regex'] = 'Char nie je povolené v databáze predpone user.';
+$wb['ftpuser_prefix_error_regex'] = 'Char nie je povolené v ftp užívateľ predpone .';
+$wb['shelluser_prefix_error_regex'] = 'Char nie je povolené Shell užívateľ predpone .';
+$wb['dblist_phpmyadmin_link_txt'] = 'Odkaz na phpmyadmin v DB zozname';
+$wb['mailboxlist_webmail_link_txt'] = 'Odkaz na webmail v zozname schránok';
+$wb['webmail_url_txt'] = 'Webmail URL';
+$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL';
+$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
+$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)';
+$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)';
+$wb['webdavuser_prefix_txt'] = 'Webdav user prefix';
+$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.';
+$wb['use_domain_module_txt'] = 'Use the domain-module to add new domains';
+$wb['use_domain_module_hint'] = 'If you use this module, your customers can only select one of the domains the admin creates for them. They cannot free edit the domain-field.You have to re-login after changing this value, to make the changes visible.';
+$wb['new_domain_txt'] = 'HTML to create a new domain';
+$wb['webftp_url_txt'] = 'WebFTP URL';
+$wb['enable_custom_login_txt'] = 'Allow custom login name';
+$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list';
+$wb['mailmailinglist_url_txt'] = 'Mailing list URL';
+$wb['admin_mail_txt'] = 'Administrators e-mail';
+$wb['monitor_key_txt'] = 'Monitor keyword';
+$wb['admin_name_txt'] = 'Administrators name';
+$wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
+$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
+$wb['smtp_host_txt'] = 'SMTP host';
+$wb['smtp_port_txt'] = 'SMTP port';
+$wb['smtp_user_txt'] = 'SMTP user';
+$wb['smtp_pass_txt'] = 'SMTP password';
+$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP';
+$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.';
+$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
+$wb['tab_change_warning_txt'] = 'Tab change warning';
+$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
+$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
+$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
+$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
+$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
+$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
+$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
+$wb['use_loadindicator_txt'] = 'Use Load Indicator';
+$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.';
+$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.';
+$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
+$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details';
+$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details';
+$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details';
+$wb['webmail_url_error_regex'] = 'Invalid webmail URL';
+$wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
+$wb['webmail_url_note_txt'] = 'Placeholder:';
+$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
+$wb['customer_no_template_txt'] = 'Customer No. template';
+$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters';
+$wb['customer_no_start_txt'] = 'Customer No. start value';
+$wb['customer_no_counter_txt'] = 'Customer No. counter';
+$wb['session_timeout_txt'] = 'Session timeout (minutes)';
+$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
+$wb['No'] = 'No';
+$wb['min_password_length_txt'] = 'Minimum password length';
+$wb['min_password_strength_txt'] = 'Minimum password strength';
+$wb['company_name_txt'] = 'Company Name for the page title';
+$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites';
+$wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
+$wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
+$wb['login_link_error_regex'] = 'Invalid Link for Custom Login';
+$wb['default_mailserver_txt'] = 'Default Mailserver';
+$wb['default_webserver_txt'] = 'Default Webserver';
+$wb['default_dnsserver_txt'] = 'Default DNS Server';
+$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['default_dbserver_txt'] = 'Default Database Server';
+$wb['ca_name_txt'] = 'Name';
+$wb['ca_issue_txt'] = 'Issue';
+$wb['ca_wildcard_txt'] = 'Use Wildcard';
+$wb['ca_critical_txt'] = 'Strict Check';
+$wb['ca_iodef_txt'] = 'iodef';
+$wb['active_txt'] = 'Aktive';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
+?>
diff --git a/tr_system_config.lng b/tr_system_config.lng
new file mode 100644
index 0000000000..21a70bec4b
--- /dev/null
+++ b/tr_system_config.lng
@@ -0,0 +1,90 @@
+<?php
+$wb['system_config_title'] = 'System Config';
+$wb['system_config_desc_txt'] = '';
+$wb['smtp_missing_admin_mail_txt'] = 'SMTP e-posta gönderimini kullanmak için yönetici adı ve yönetici e-posta adresini yazmalısınız.';
+$wb['dashboard_atom_url_admin_txt'] = 'Panel Atom akışının İnternet adresi (yönetici)';
+$wb['dashboard_atom_url_reseller_txt'] = 'Panel Atom akışının İnternet adresi (bayi)';
+$wb['dashboard_atom_url_client_txt'] = 'Panel Atom akışının İnternet adresi (müşteri)';
+$wb['warning'] = 'Bu değerleri değiştirirken dikkatli olun! Sistemde birden fazla müşteri varsa, ön ekleri kaldırmayın.';
+$wb['tab_change_discard_txt'] = 'Sekme değiştirildiğinde değişiklikler yok sayılsın';
+$wb['tab_change_warning_txt'] = 'Sekme değiştirme uyarısı';
+$wb['tab_change_warning_note_txt'] = 'Formlardaki veriler düzenlenirken, kullanıcı bir değişiklik yapmışsa sekme değiştirilmek istendiğinde bir uyarı görüntülenir.';
+$wb['dbname_prefix_txt'] = 'Veritabanı adı ön eki';
+$wb['dbuser_prefix_txt'] = 'Veritabanı kullanıcısı ön eki';
+$wb['shelluser_prefix_txt'] = 'Kabuk kullanıcısı ön eki';
+$wb['webdavuser_prefix_txt'] = 'Webdav kullanıcısı ön eki';
+$wb['ftpuser_prefix_txt'] = 'FTP kullanıcısı ön eki';
+$wb['vhost_subdomains_txt'] = 'Etki alanları web sitesi şeklinde oluşturulsun';
+$wb['vhost_subdomains_note_txt'] = 'Sistemde sanal sunucu alt etki alanları varken bu seçenek devre dışı bırakılamaz!';
+$wb['vhost_aliasdomains_txt'] = 'Takma etki alanı web sitesi olarak eklensin';
+$wb['vhost_aliasdomains_note_txt'] = 'Sistemde sanal sunucu takma etki alanları varken bu seçenek devre dışı bırakılamaz!';
+$wb['dbname_prefix_error_regex'] = 'Veritabanı adı ön ekinde izin verilmeyen karakterler var';
+$wb['dbuser_prefix_error_regex'] = 'Veritabanı kullanıcısı ön ekinde izin verilmeyen karakterler var';
+$wb['ftpuser_prefix_error_regex'] = 'FTP kullanıcısı ön ekinde izin verilmeyen karakterler var';
+$wb['shelluser_prefix_error_regex'] = 'Kabuk kullanıcısı ön ekinde izin verilmeyen karakterler var';
+$wb['webdavuser_prefix_error_regex'] = 'Webdav kullanıcısı ön ekinde izin verilmeyen karakterler var.';
+$wb['dblist_phpmyadmin_link_txt'] = 'Veritabanı listesinde phpMyAdmin bağlantısı';
+$wb['enable_custom_login_txt'] = 'Özel oturum açma kullanıcı adı kullanılabilsin';
+$wb['mailboxlist_webmail_link_txt'] = 'E-posta kutusu listesinde Webmail bağlantısı';
+$wb['mailbox_show_autoresponder_tab_txt'] = 'E-posta hesabı ayrıntılarında otoyanıtlayıcı sekmesi görüntülensin';
+$wb['mailbox_show_mail_filter_tab_txt'] = 'E-posta hesabı ayrıntılarında e-posta süzgeci sekmesi görüntülensin';
+$wb['mailbox_show_custom_rules_tab_txt'] = 'E-posta hesabı ayrıntılarında isteğe bağlı e-posta süzgeci sekmesi görüntülensin';
+$wb['webmail_url_txt'] = 'Webmail Adresi';
+$wb['mailmailinglist_link_txt'] = 'E-posta Listeleri listesinde E-posta Listesi bağlantısı';
+$wb['mailmailinglist_url_txt'] = 'E-posta Listesi Adresi';
+$wb['phpmyadmin_url_txt'] = 'phpMyAdmin Adresi';
+$wb['use_domain_module_txt'] = 'Etki alanı eklemek için etki alanı modülü kullanılsın';
+$wb['use_domain_module_hint'] = 'Bu modül kullanıldığında, müşteriler yalnız yöneticinin oluşturduğu etki alanlarından birini seçebilir. Etki alanını istediği gibi yazamaz. Bu değeri değiştirdikten sonra değişikliklerin geçerli olması için oturumu kapatıp yeniden açmalısınız.';
+$wb['new_domain_txt'] = 'Yeni etki alanı oluşturma HTML kodu';
+$wb['webftp_url_txt'] = 'WebFTP Adresi';
+$wb['admin_mail_txt'] = 'Yönetici E-posta Adresi';
+$wb['monitor_key_txt'] = 'Ä°zlenecek Kelime';
+$wb['admin_name_txt'] = 'Yönetici Adı';
+$wb['maintenance_mode_txt'] = 'Bakım Kipi';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
+$wb['smtp_enabled_txt'] = 'Sistem e-postaları SMTP ile gönderilsin';
+$wb['smtp_host_txt'] = 'SMTP Sunucusu';
+$wb['smtp_port_txt'] = 'SMTP Kapısı';
+$wb['smtp_user_txt'] = 'SMTP Kullanıcı Adı';
+$wb['smtp_pass_txt'] = 'SMTP Parolası';
+$wb['smtp_crypt_txt'] = 'SMTP için SSL/TLS şifreli bağlantı kullanılsın';
+$wb['phpmyadmin_url_error_regex'] = 'phpmyadmin adresi geçersiz';
+$wb['use_combobox_txt'] = 'jQuery Açılan Kutusu Kullanılsın';
+$wb['use_loadindicator_txt'] = 'Yük Göstergesi Kullanılsın';
+$wb['f5_to_reload_js_txt'] = 'Bu değer değiştirildiğinde, web tarayıcının JavaScript kitaplıklarını yeniden yüklemesi için F5 tuşuna basmalı ya da web tarayıcının ön belleğini temizlemelisiniz.';
+$wb['client_username_web_check_disabled_txt'] = 'Müşteri kullanıcı adında \'web\' sözcüğü denetimi devre dışı bırakılsın.';
+$wb['backups_include_into_web_quota_txt'] = 'Yedek dosyaları web kotasına katılsın.';
+$wb['mailbox_show_autoresponder_tab_txt'] = 'E-posta hesabı ayrıntılarında otoyanıtlayıcı sekmesi görüntülensin';
+$wb['mailbox_show_mail_filter_tab_txt'] = 'E-posta hesabı ayrıntılarında e-posta süzgeci sekmesi görüntülensin';
+$wb['mailbox_show_custom_rules_tab_txt'] = 'E-posta hesabı ayrıntılarında isteğe bağlı e-posta süzgeci sekmesi görüntülensin';
+$wb['webmail_url_error_regex'] = 'Webmail adresi geçersiz';
+$wb['phpmyadmin_url_note_txt'] = 'Kod:';
+$wb['webmail_url_note_txt'] = 'Kod:';
+$wb['available_dashlets_note_txt'] = 'Kullanılabilecek Bileşenler:';
+$wb['admin_dashlets_left_txt'] = 'Sol Yönetici Bileşenleri';
+$wb['admin_dashlets_right_txt'] = 'Sağ Yönetici Bileşenleri';
+$wb['reseller_dashlets_left_txt'] = 'Sol Bayi BileÅŸenleri';
+$wb['reseller_dashlets_right_txt'] = 'SaÄŸ Bayi BileÅŸenleri';
+$wb['client_dashlets_left_txt'] = 'Sol Müşteri Bileşenleri';
+$wb['client_dashlets_right_txt'] = 'Sağ Müşteri Bileşenleri';
+$wb['customer_no_template_txt'] = 'Müşteri No Kalıbı';
+$wb['customer_no_template_error_regex_txt'] = 'Müşteri no kalıbında geçersiz karakterler var';
+$wb['customer_no_start_txt'] = 'Müşteri No Başlangıç Değeri';
+$wb['customer_no_counter_txt'] = 'Müşteri No Sayacı';
+$wb['session_timeout_txt'] = 'Oturum Zaman Aşımı (dakika)';
+$wb['session_allow_endless_txt'] = '"Oturum açık kalsın" kullanılabilsin';
+$wb['No'] = 'No';
+$wb['min_password_length_txt'] = 'En Az Parola UzunluÄŸu';
+$wb['min_password_strength_txt'] = 'En Az Parola ZorluÄŸu';
+$wb['default_mailserver_txt'] = 'Varsayılan E-posta Sunucusu';
+$wb['default_webserver_txt'] = 'Varsayılan Web Sunucusu';
+$wb['default_dnsserver_txt'] = 'Varsayılan Birincil DNS Sunucusu';
+$wb['default_slave_dnsserver_txt'] = 'Varsayılan İkincil DNS Sunucusu';
+$wb['default_dbserver_txt'] = 'Varsayılan Veritabanı Sunucusu';
+$wb['company_name_txt'] = 'Sayfa başlığı için kurum adı';
+$wb['reseller_can_use_options_txt'] = 'Bayi web siteleri için seçenek sekmesini kullanabilsin';
+$wb['custom_login_text_txt'] = 'Oturum Açma Sayfası Metni';
+$wb['custom_login_link_txt'] = 'Oturum Açma Sayfası Bağlantısı';
+$wb['login_link_error_regex'] = 'Oturum Açma Bağlantısı Geçersiz';
+?>
-- 
GitLab


From 9ac0e6e6e50201a6df59115e2a5e8be610c2d6b1 Mon Sep 17 00:00:00 2001
From: Thom Pol <thom@amsterdamtech.nl>
Date: Sun, 24 May 2020 19:52:10 +0200
Subject: [PATCH 192/242] Update system_config.tform.php

---
 system_config.tform.php | 774 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 774 insertions(+)
 create mode 100644 system_config.tform.php

diff --git a/system_config.tform.php b/system_config.tform.php
new file mode 100644
index 0000000000..1b84e59560
--- /dev/null
+++ b/system_config.tform.php
@@ -0,0 +1,774 @@
+<?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).
+
+
+*/
+
+$form["title"]   = "system_config_title";
+$form["description"]  = "system_config_desc_txt";
+$form["name"]   = "system_config";
+$form["action"]  = "system_config_edit.php";
+$form["db_table"] = "sys_ini";
+$form["db_table_idx"] = "sysini_id";
+$form["db_history"] = "yes";
+$form["tab_default"] = "sites";
+$form["list_default"] = "server_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"]['sites'] = array (
+	'title'  => "Sites",
+	'width'  => 70,
+	'template'  => "templates/system_config_sites_edit.htm",
+	'fields'  => array (
+		//#################################
+		// Begin Datatable fields
+		//#################################
+		'dbname_prefix' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'validators' => array ( 0 => array ( 'type' => 'REGEX',
+					'regex' => '/^[a-zA-Z0-9\-\_\[\]]{0,50}$/',
+					'errmsg'=> 'dbname_prefix_error_regex'),
+			),
+			'default' => '',
+			'value'  => '',
+			'width'  => '30',
+			'maxlength' => '255'
+		),
+		'dbuser_prefix' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'validators' => array ( 0 => array ( 'type' => 'REGEX',
+					'regex' => '/^[a-zA-Z0-9\-\_\[\]]{0,50}$/',
+					'errmsg'=> 'dbuser_prefix_error_regex'),
+			),
+			'default' => '',
+			'value'  => '',
+			'width'  => '30',
+			'maxlength' => '255'
+		),
+		'ftpuser_prefix' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'validators' => array ( 0 => array ( 'type' => 'REGEX',
+					'regex' => '/^[a-zA-Z0-9\-\_\[\]]{0,50}$/',
+					'errmsg'=> 'ftpuser_prefix_error_regex'),
+			),
+			'default' => '',
+			'value'  => '',
+			'width'  => '30',
+			'maxlength' => '255'
+		),
+		'shelluser_prefix' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'validators' => array ( 0 => array ( 'type' => 'REGEX',
+					'regex' => '/^[a-zA-Z0-9\-\_\[\]]{0,50}$/',
+					'errmsg'=> 'shelluser_prefix_error_regex'),
+			),
+			'default' => '',
+			'value'  => '',
+			'width'  => '30',
+			'maxlength' => '255'
+		),
+		'webdavuser_prefix' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'validators' => array ( 0 => array ( 'type' => 'REGEX',
+					'regex' => '/^[a-zA-Z0-9\-\_\[\]]{0,50}$/',
+					'errmsg'=> 'webdavuser_prefix_error_regex'),
+			),
+			'default' => '',
+			'value'  => '',
+			'width'  => '30',
+			'maxlength' => '255'
+		),
+		'dblist_phpmyadmin_link' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'CHECKBOX',
+			'default' => 'n',
+			'value'  => array(0 => 'n', 1 => 'y')
+		),
+		'phpmyadmin_url' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'validators' => array ( 0 => array ( 'type' => 'REGEX',
+					'regex' => '/^[0-9a-zA-Z\:\/\-\.\_\[\]\?\=\&]{0,255}$/',
+					'errmsg'=> 'phpmyadmin_url_error_regex'),
+			),
+			'default' => '',
+			'value'  => '',
+			'width'  => '30',
+			'maxlength' => '255'
+		),
+		'webftp_url' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'validators' => array ( 0 => array ( 'type' => 'REGEX',
+					'regex' => '/^[0-9a-zA-Z\:\/\-\.]{0,255}$/',
+					'errmsg'=> 'webftp_url_error_regex'),
+			),
+			'default' => '',
+			'value'  => '',
+			'width'  => '30',
+			'maxlength' => '255'
+		),
+		'vhost_subdomains' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'CHECKBOX',
+			'default' => 'n',
+			'value'  => array(0 => 'n', 1 => 'y')
+		),
+		'vhost_aliasdomains' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'CHECKBOX',
+			'default' => 'n',
+			'value'  => array(0 => 'n', 1 => 'y')
+		),
+		'client_username_web_check_disabled' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'CHECKBOX',
+			'default' => 'n',
+			'value'  => array(0 => 'n', 1 => 'y')
+		),
+		'backups_include_into_web_quota' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'CHECKBOX',
+			'default' => 'n',
+			'value'  => array(0 => 'n', 1 => 'y')
+		),
+		'reseller_can_use_options' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'CHECKBOX',
+			'default' => 'n',
+			'value'  => array(0 => 'n', 1 => 'y')
+		),
+		'default_webserver' => array (
+			'datatype' => 'INTEGER',
+			'formtype' => 'SELECT',
+			'default' => '1',
+			'datasource' => array (  'type' => 'CUSTOM',
+				'class'=> 'custom_datasource',
+				'function'=> 'client_servers'
+			),
+			'value'  => '',
+			'name'  => 'default_webserver'
+		),
+		'default_dbserver' => array (
+			'datatype' => 'INTEGER',
+			'formtype' => 'SELECT',
+			'default' => '1',
+			'datasource' => array (  'type' => 'CUSTOM',
+				'class'=> 'custom_datasource',
+				'function'=> 'client_servers'
+			),
+			'value'  => '',
+			'name'  => 'default_dbserver'
+		),
+		'web_php_options' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'CHECKBOXARRAY',
+			'validators' => array (  0 => array ( 'type' => 'NOTEMPTY',
+					'errmsg'=> 'web_php_options_notempty'),
+			),
+			'default' => '',
+			'separator' => ',',
+			'value'  => array('no' => 'Disabled', 'fast-cgi' => 'Fast-CGI', 'cgi' => 'CGI', 'mod' => 'Mod-PHP', 'suphp' => 'SuPHP', 'php-fpm' => 'PHP-FPM', 'hhvm' => 'HHVM')
+		),
+		//#################################
+		// END Datatable fields
+		//#################################
+	)
+);
+
+$form["tabs"]['mail'] = array (
+	'title'  => "Mail",
+	'width'  => 70,
+	'template'  => "templates/system_config_mail_edit.htm",
+	'fields'  => array (
+		//#################################
+		// Begin Datatable fields
+		//#################################
+		'enable_custom_login' => array(
+			'datatype' => 'VARCHAR',
+			'formtype' => 'CHECKBOX',
+			'default' => 'n',
+			'value' => array(0 => 'n', 1 => 'y')
+		),
+		'mailbox_show_autoresponder_tab' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'CHECKBOX',
+			'default'  => 'y',
+			'value'    => array(0 => 'n', 1 => 'y')
+		),
+		'mailbox_show_mail_filter_tab' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'CHECKBOX',
+			'default'  => 'y',
+			'value'    => array(0 => 'n', 1 => 'y')
+		),
+		'mailbox_show_custom_rules_tab' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'CHECKBOX',
+			'default'  => 'y',
+			'value'    => array(0 => 'n', 1 => 'y')
+		),
+		'mailboxlist_webmail_link' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'CHECKBOX',
+			'default' => 'n',
+			'value'  => array(0 => 'n', 1 => 'y')
+		),
+		'webmail_url' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'validators' => array ( 0 => array ( 'type' => 'REGEX',
+					/*'regex' => '/^[0-9a-zA-Z\:\/\-\.]{0,255}(\?.+)?$/',*/
+					'regex' => '/^[0-9a-zA-Z\:\/\-\.\[\]]{0,255}$/',
+					'errmsg'=> 'webmail_url_error_regex'),
+			),
+			'default' => '',
+			'value'  => '',
+			'width'  => '30',
+			'maxlength' => '255'
+		),
+		'mailmailinglist_link' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'CHECKBOX',
+			'default' => 'n',
+			'value'  => array(0 => 'n', 1 => 'y')
+		),
+		'mailmailinglist_url' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'validators' => array ( 0 => array ( 'type' => 'REGEX',
+					'regex' => '/^[0-9a-zA-Z\:\/\-\.]{0,255}$/',
+					'errmsg'=> 'mailinglist_url_error_regex'),
+			),
+			'default' => '',
+			'value'  => '',
+			'width'  => '30',
+			'maxlength' => '255'
+		),
+		'admin_mail' => array (
+			'datatype' => 'VARCHAR',
+			'filters'   => array( 0 => array( 'event' => 'SAVE',
+					'type' => 'IDNTOASCII'),
+				1 => array( 'event' => 'SHOW',
+					'type' => 'IDNTOUTF8'),
+				2 => array( 'event' => 'SAVE',
+					'type' => 'TOLOWER'),
+				3 => array( 'event' => 'SAVE',
+					'type' => 'STRIPTAGS'),
+				4 => array( 'event' => 'SAVE',
+					'type' => 'STRIPNL')
+			),
+			'formtype' => 'TEXT',
+			'default' => '',
+			'value'  => '',
+			'width'  => '30',
+			'maxlength' => '255'
+		),
+		'admin_name' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'filters'   => array(
+					0 => array( 'event' => 'SAVE',
+					'type' => 'STRIPTAGS'),
+					1 => array( 'event' => 'SAVE',
+					'type' => 'STRIPNL')
+			),
+			'default' => '',
+			'value'  => '',
+			'width'  => '30',
+			'maxlength' => '255'
+		),
+		'smtp_enabled' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'CHECKBOX',
+			'default' => 'y',
+			'value'  => array(0 => 'n', 1 => 'y')
+		),
+		'smtp_host' => array (
+			'datatype' => 'VARCHAR',
+			'filters'   => array( 0 => array( 'event' => 'SAVE',
+					'type' => 'IDNTOASCII'),
+				1 => array( 'event' => 'SHOW',
+					'type' => 'IDNTOUTF8'),
+				2 => array( 'event' => 'SAVE',
+					'type' => 'TOLOWER'),
+				3 => array( 'event' => 'SAVE',
+					'type' => 'STRIPTAGS'),
+				4 => array( 'event' => 'SAVE',
+					'type' => 'STRIPNL')
+			),
+			'formtype' => 'TEXT',
+			'default' => 'localhost',
+			'value'  => '',
+			'width'  => '30',
+			'maxlength' => '255'
+		),
+		'smtp_port' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'filters'   => array(
+					0 => array( 'event' => 'SAVE',
+					'type' => 'STRIPTAGS'),
+					1 => array( 'event' => 'SAVE',
+					'type' => 'STRIPNL')
+			),
+			'default' => '25',
+			'value'  => '',
+			'width'  => '30',
+			'maxlength' => '255'
+		),
+		'smtp_user' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'filters'   => array(
+					0 => array( 'event' => 'SAVE',
+					'type' => 'STRIPTAGS'),
+					1 => array( 'event' => 'SAVE',
+					'type' => 'STRIPNL')
+			),
+			'default' => '',
+			'value'  => '',
+			'width'  => '30',
+			'maxlength' => '255'
+		),
+		'smtp_pass' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'default' => '',
+			'value'  => '',
+			'width'  => '30',
+			'maxlength' => '255'
+		),
+		'smtp_crypt' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'SELECT',
+			'default' => '',
+			'value'  => array('' => 'No', 'ssl' => 'SSL', 'tls' => 'STARTTLS')
+		),
+		'default_mailserver' => array (
+			'datatype' => 'INTEGER',
+			'formtype' => 'SELECT',
+			'default' => '1',
+			'datasource' => array (  'type' => 'CUSTOM',
+				'class'=> 'custom_datasource',
+				'function'=> 'client_servers'
+			),
+			'value'  => '',
+			'name'  => 'default_mailserver'
+		),
+		//#################################
+		// END Datatable fields
+		//#################################
+	)
+);
+
+$form["tabs"]['dns'] = array (
+	'title'  => "DNS",
+	'width'  => 70,
+	'template'  => "templates/system_config_dns_edit.htm",
+	'fields'  => array (
+		//#################################
+		// Begin Datatable fields
+		//#################################
+		'default_dnsserver' => array (
+			'datatype' => 'INTEGER',
+			'formtype' => 'SELECT',
+			'default' => '1',
+			'datasource' => array (  'type' => 'CUSTOM',
+				'class'=> 'custom_datasource',
+				'function'=> 'client_servers'
+			),
+			'value'  => '',
+			'name'  => 'default_dnsserver'
+		),
+		'default_slave_dnsserver' => array (
+			'datatype' => 'INTEGER',
+			'formtype' => 'SELECT',
+			'default' => '1',
+			'datasource' => array (  'type' => 'CUSTOM',
+				'class'=> 'custom_datasource',
+				'function'=> 'client_servers'
+			),
+			'value'  => '',
+			'name'  => 'default_slave_dnsserver'
+		),
+		//#################################
+		// END Datatable fields
+		//#################################
+	)
+);
+
+$form["tabs"]['domains'] = array (
+	'title'  => "Domains",
+	'width'  => 70,
+	'template'  => "templates/system_config_domains_edit.htm",
+	'fields'  => array (
+		//#################################
+		// Begin Datatable fields
+		//#################################
+		'use_domain_module' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'CHECKBOX',
+			'default' => 'n',
+			'value'  => array(0 => 'n', 1 => 'y')
+		),
+		'new_domain_html' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'filters'   => array(
+					0 => array( 'event' => 'SAVE',
+					'type' => 'STRIPTAGS')
+			),
+			'default' => '',
+			'value'  => ''
+		),
+		//#################################
+		// END Datatable fields
+		//#################################
+	)
+);
+
+/* TODO_ BEGIN: Branding
+
+$form["tabs"]['domains'] = array (
+	'title' 	=> "Branding",
+	'width' 	=> 70,
+	'template' 	=> "templates/system_config_branding_edit.htm",
+	'fields' 	=> array (
+	##################################
+	# Begin Datatable fields
+	##################################
+                'allow_themechange' => array (
+                        'datatype'	=> 'VARCHAR',
+                        'formtype'	=> 'CHECKBOX',
+                        'default'	=> 'N',
+                        'value'         => array(0 => 'n',1 => 'y')
+                ),
+	##################################
+	# ENDE Datatable fields
+	##################################
+	)
+);
+
+
+ END: Branding */
+$form["tabs"]['misc'] = array (
+	'title'  => "Misc",
+	'width'  => 70,
+	'template'  => "templates/system_config_misc_edit.htm",
+	'fields'  => array (
+		//#################################
+		// Begin Datatable fields
+		//#################################
+		'company_name' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'filters'   => array(
+					0 => array( 'event' => 'SAVE',
+					'type' => 'STRIPTAGS'),
+					1 => array( 'event' => 'SAVE',
+					'type' => 'STRIPNL')
+			),
+			'default' => '',
+			'value'  => ''
+		),
+		'custom_login_text' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'filters'   => array(
+					0 => array( 'event' => 'SAVE',
+					'type' => 'STRIPTAGS'),
+					1 => array( 'event' => 'SAVE',
+					'type' => 'STRIPNL')
+			),
+			'default' => '',
+			'value'  => ''
+		),
+		'custom_login_link' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'default' => '',
+			'value'  => '',
+			'validators' => array ( 0 => array ( 'type' => 'REGEX',
+				'regex' => '/^(http|https):\\/\\/.*|^$/',
+				'errmsg'=> 'login_link_error_regex'),
+			)
+		),
+		'dashboard_atom_url_admin' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'filters'   => array(
+					0 => array( 'event' => 'SAVE',
+					'type' => 'STRIPTAGS'),
+					1 => array( 'event' => 'SAVE',
+					'type' => 'STRIPNL')
+			),
+			'default' => 'http://www.ispconfig.org/atom',
+			'value'  => ''
+		),
+		'dashboard_atom_url_reseller' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'filters'   => array(
+					0 => array( 'event' => 'SAVE',
+					'type' => 'STRIPTAGS'),
+					1 => array( 'event' => 'SAVE',
+					'type' => 'STRIPNL')
+			),
+			'default' => 'http://www.ispconfig.org/atom',
+			'value'  => ''
+		),
+		'dashboard_atom_url_client' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'filters'   => array(
+					0 => array( 'event' => 'SAVE',
+					'type' => 'STRIPTAGS'),
+					1 => array( 'event' => 'SAVE',
+					'type' => 'STRIPNL')
+			),
+			'default' => 'http://www.ispconfig.org/atom',
+			'value'  => ''
+		),
+		'monitor_key' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'default' => '',
+			'value'  => ''
+		),
+		'tab_change_discard' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'CHECKBOX',
+			'default' => 'n',
+			'value'  => array(0 => 'n', 1 => 'y')
+		),
+		'tab_change_warning' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'CHECKBOX',
+			'default' => 'n',
+			'value'  => array(0 => 'n', 1 => 'y')
+		),
+		'use_loadindicator' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'CHECKBOX',
+			'default' => 'y',
+			'value'  => array(0 => 'n', 1 => 'y')
+		),
+		'use_combobox' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'CHECKBOX',
+			'default' => 'y',
+			'value'  => array(0 => 'n', 1 => 'y')
+		),
+		'maintenance_mode' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'CHECKBOX',
+			'default' => 'n',
+			'value'  => array(0 => 'n', 1 => 'y')
+		),
+		'maintenance_mode_exclude_ips' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'validators' => array(
+				 0 => array (
+					'type' => 'ISIP',
+					'allowempty' => true,
+					'separator' => ',',
+					'errmsg'=> 'maintenance_mode_exclude_ips_error_isip'
+				),
+			),
+			'default' => '',
+			'value'  => ''
+		),
+		'admin_dashlets_left' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'filters'   => array(
+					0 => array( 'event' => 'SAVE',
+					'type' => 'STRIPTAGS'),
+					1 => array( 'event' => 'SAVE',
+					'type' => 'STRIPNL')
+			),
+			'default' => '',
+			'value'  => ''
+		),
+		'admin_dashlets_right' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'filters'   => array(
+					0 => array( 'event' => 'SAVE',
+					'type' => 'STRIPTAGS'),
+					1 => array( 'event' => 'SAVE',
+					'type' => 'STRIPNL')
+			),
+			'default' => '',
+			'value'  => ''
+		),
+		'reseller_dashlets_left' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'filters'   => array(
+					0 => array( 'event' => 'SAVE',
+					'type' => 'STRIPTAGS'),
+					1 => array( 'event' => 'SAVE',
+					'type' => 'STRIPNL')
+			),
+			'default' => '',
+			'value'  => ''
+		),
+		'reseller_dashlets_right' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'filters'   => array(
+					0 => array( 'event' => 'SAVE',
+					'type' => 'STRIPTAGS'),
+					1 => array( 'event' => 'SAVE',
+					'type' => 'STRIPNL')
+			),
+			'default' => '',
+			'value'  => ''
+		),
+		'client_dashlets_left' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'filters'   => array(
+					0 => array( 'event' => 'SAVE',
+					'type' => 'STRIPTAGS'),
+					1 => array( 'event' => 'SAVE',
+					'type' => 'STRIPNL')
+			),
+			'default' => '',
+			'value'  => ''
+		),
+		'client_dashlets_right' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'filters'   => array(
+					0 => array( 'event' => 'SAVE',
+					'type' => 'STRIPTAGS'),
+					1 => array( 'event' => 'SAVE',
+					'type' => 'STRIPNL')
+			),
+			'default' => '',
+			'value'  => ''
+		),
+		'customer_no_template' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'validators' => array ( 0 => array ( 'type' => 'REGEX',
+					'regex' => '/^[a-zA-Z0-9\-\_\[\]]{0,50}$/',
+					'errmsg'=> 'customer_no_template_error_regex'),
+			),
+			'default' => '',
+			'value'  => '',
+			'width'  => '30',
+			'maxlength' => '255'
+		),
+		'customer_no_start' => array (
+			'datatype' => 'INTEGER',
+			'formtype' => 'TEXT',
+			'default' => '',
+			'value'  => '',
+			'width'  => '30',
+			'maxlength' => '255'
+		),
+		'customer_no_counter' => array (
+			'datatype' => 'INTEGER',
+			'formtype' => 'TEXT',
+			'default' => '',
+			'value'  => '',
+			'width'  => '30',
+			'maxlength' => '255'
+		),
+		'session_timeout' => array (
+			'datatype' => 'INTEGER',
+			'formtype' => 'TEXT',
+			'default' => '',
+			'value'  => '',
+			'width'  => '30',
+			'maxlength' => '255'
+		),
+		'session_allow_endless' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'CHECKBOX',
+			'default' => 'n',
+			'value'  => array(0 => 'n', 1 => 'y')
+		),
+		'min_password_length' => array(
+			'datatype' => 'INTEGER',
+			'formtype' => 'TEXT',
+			'default' => '5',
+			'value'  => '',
+			'width'  => '30',
+			'maxlength' => '255'
+		),
+		'min_password_strength' => array(
+			'datatype' => 'VARCHAR',
+			'formtype' => 'SELECT',
+			'default' => '',
+			'value'  => array('' => 'None', '1' => 'strength_1', '2' => 'strength_2', '3' => 'strength_3', '4' => 'strength_4', '5' => 'strength_5')
+		)
+		//#################################
+		// END Datatable fields
+		//#################################
+	)
+);
+
+$form['tabs']['dns_ca'] = array (
+	'title'  => 'DNS CAs',
+	'width'  => 100,
+	'template'  => 'templates/system_config_dns_ca.htm',
+	'fields'  => array (),
+	'plugins' => array (
+		'dns_ca' => array (
+			'class'   => 'plugin_system_config_dns_ca',
+			'options' => array()
+		),
+		'dns_ca_list' => array (
+			'class'   => 'plugin_system_config_dns_ca_list',
+			'options' => array()
+		)
+	)
+);
+
+?>
-- 
GitLab


From c9b0ce235d6fff2f18c31caa58f3ac384de5fcd0 Mon Sep 17 00:00:00 2001
From: Thom Pol <thom@amsterdamtech.nl>
Date: Sun, 24 May 2020 19:55:14 +0200
Subject: [PATCH 193/242] Deleted system_config.tform.php

---
 system_config.tform.php | 774 ----------------------------------------
 1 file changed, 774 deletions(-)
 delete mode 100644 system_config.tform.php

diff --git a/system_config.tform.php b/system_config.tform.php
deleted file mode 100644
index 1b84e59560..0000000000
--- a/system_config.tform.php
+++ /dev/null
@@ -1,774 +0,0 @@
-<?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).
-
-
-*/
-
-$form["title"]   = "system_config_title";
-$form["description"]  = "system_config_desc_txt";
-$form["name"]   = "system_config";
-$form["action"]  = "system_config_edit.php";
-$form["db_table"] = "sys_ini";
-$form["db_table_idx"] = "sysini_id";
-$form["db_history"] = "yes";
-$form["tab_default"] = "sites";
-$form["list_default"] = "server_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"]['sites'] = array (
-	'title'  => "Sites",
-	'width'  => 70,
-	'template'  => "templates/system_config_sites_edit.htm",
-	'fields'  => array (
-		//#################################
-		// Begin Datatable fields
-		//#################################
-		'dbname_prefix' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'TEXT',
-			'validators' => array ( 0 => array ( 'type' => 'REGEX',
-					'regex' => '/^[a-zA-Z0-9\-\_\[\]]{0,50}$/',
-					'errmsg'=> 'dbname_prefix_error_regex'),
-			),
-			'default' => '',
-			'value'  => '',
-			'width'  => '30',
-			'maxlength' => '255'
-		),
-		'dbuser_prefix' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'TEXT',
-			'validators' => array ( 0 => array ( 'type' => 'REGEX',
-					'regex' => '/^[a-zA-Z0-9\-\_\[\]]{0,50}$/',
-					'errmsg'=> 'dbuser_prefix_error_regex'),
-			),
-			'default' => '',
-			'value'  => '',
-			'width'  => '30',
-			'maxlength' => '255'
-		),
-		'ftpuser_prefix' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'TEXT',
-			'validators' => array ( 0 => array ( 'type' => 'REGEX',
-					'regex' => '/^[a-zA-Z0-9\-\_\[\]]{0,50}$/',
-					'errmsg'=> 'ftpuser_prefix_error_regex'),
-			),
-			'default' => '',
-			'value'  => '',
-			'width'  => '30',
-			'maxlength' => '255'
-		),
-		'shelluser_prefix' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'TEXT',
-			'validators' => array ( 0 => array ( 'type' => 'REGEX',
-					'regex' => '/^[a-zA-Z0-9\-\_\[\]]{0,50}$/',
-					'errmsg'=> 'shelluser_prefix_error_regex'),
-			),
-			'default' => '',
-			'value'  => '',
-			'width'  => '30',
-			'maxlength' => '255'
-		),
-		'webdavuser_prefix' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'TEXT',
-			'validators' => array ( 0 => array ( 'type' => 'REGEX',
-					'regex' => '/^[a-zA-Z0-9\-\_\[\]]{0,50}$/',
-					'errmsg'=> 'webdavuser_prefix_error_regex'),
-			),
-			'default' => '',
-			'value'  => '',
-			'width'  => '30',
-			'maxlength' => '255'
-		),
-		'dblist_phpmyadmin_link' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'CHECKBOX',
-			'default' => 'n',
-			'value'  => array(0 => 'n', 1 => 'y')
-		),
-		'phpmyadmin_url' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'TEXT',
-			'validators' => array ( 0 => array ( 'type' => 'REGEX',
-					'regex' => '/^[0-9a-zA-Z\:\/\-\.\_\[\]\?\=\&]{0,255}$/',
-					'errmsg'=> 'phpmyadmin_url_error_regex'),
-			),
-			'default' => '',
-			'value'  => '',
-			'width'  => '30',
-			'maxlength' => '255'
-		),
-		'webftp_url' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'TEXT',
-			'validators' => array ( 0 => array ( 'type' => 'REGEX',
-					'regex' => '/^[0-9a-zA-Z\:\/\-\.]{0,255}$/',
-					'errmsg'=> 'webftp_url_error_regex'),
-			),
-			'default' => '',
-			'value'  => '',
-			'width'  => '30',
-			'maxlength' => '255'
-		),
-		'vhost_subdomains' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'CHECKBOX',
-			'default' => 'n',
-			'value'  => array(0 => 'n', 1 => 'y')
-		),
-		'vhost_aliasdomains' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'CHECKBOX',
-			'default' => 'n',
-			'value'  => array(0 => 'n', 1 => 'y')
-		),
-		'client_username_web_check_disabled' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'CHECKBOX',
-			'default' => 'n',
-			'value'  => array(0 => 'n', 1 => 'y')
-		),
-		'backups_include_into_web_quota' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'CHECKBOX',
-			'default' => 'n',
-			'value'  => array(0 => 'n', 1 => 'y')
-		),
-		'reseller_can_use_options' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'CHECKBOX',
-			'default' => 'n',
-			'value'  => array(0 => 'n', 1 => 'y')
-		),
-		'default_webserver' => array (
-			'datatype' => 'INTEGER',
-			'formtype' => 'SELECT',
-			'default' => '1',
-			'datasource' => array (  'type' => 'CUSTOM',
-				'class'=> 'custom_datasource',
-				'function'=> 'client_servers'
-			),
-			'value'  => '',
-			'name'  => 'default_webserver'
-		),
-		'default_dbserver' => array (
-			'datatype' => 'INTEGER',
-			'formtype' => 'SELECT',
-			'default' => '1',
-			'datasource' => array (  'type' => 'CUSTOM',
-				'class'=> 'custom_datasource',
-				'function'=> 'client_servers'
-			),
-			'value'  => '',
-			'name'  => 'default_dbserver'
-		),
-		'web_php_options' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'CHECKBOXARRAY',
-			'validators' => array (  0 => array ( 'type' => 'NOTEMPTY',
-					'errmsg'=> 'web_php_options_notempty'),
-			),
-			'default' => '',
-			'separator' => ',',
-			'value'  => array('no' => 'Disabled', 'fast-cgi' => 'Fast-CGI', 'cgi' => 'CGI', 'mod' => 'Mod-PHP', 'suphp' => 'SuPHP', 'php-fpm' => 'PHP-FPM', 'hhvm' => 'HHVM')
-		),
-		//#################################
-		// END Datatable fields
-		//#################################
-	)
-);
-
-$form["tabs"]['mail'] = array (
-	'title'  => "Mail",
-	'width'  => 70,
-	'template'  => "templates/system_config_mail_edit.htm",
-	'fields'  => array (
-		//#################################
-		// Begin Datatable fields
-		//#################################
-		'enable_custom_login' => array(
-			'datatype' => 'VARCHAR',
-			'formtype' => 'CHECKBOX',
-			'default' => 'n',
-			'value' => array(0 => 'n', 1 => 'y')
-		),
-		'mailbox_show_autoresponder_tab' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'CHECKBOX',
-			'default'  => 'y',
-			'value'    => array(0 => 'n', 1 => 'y')
-		),
-		'mailbox_show_mail_filter_tab' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'CHECKBOX',
-			'default'  => 'y',
-			'value'    => array(0 => 'n', 1 => 'y')
-		),
-		'mailbox_show_custom_rules_tab' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'CHECKBOX',
-			'default'  => 'y',
-			'value'    => array(0 => 'n', 1 => 'y')
-		),
-		'mailboxlist_webmail_link' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'CHECKBOX',
-			'default' => 'n',
-			'value'  => array(0 => 'n', 1 => 'y')
-		),
-		'webmail_url' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'TEXT',
-			'validators' => array ( 0 => array ( 'type' => 'REGEX',
-					/*'regex' => '/^[0-9a-zA-Z\:\/\-\.]{0,255}(\?.+)?$/',*/
-					'regex' => '/^[0-9a-zA-Z\:\/\-\.\[\]]{0,255}$/',
-					'errmsg'=> 'webmail_url_error_regex'),
-			),
-			'default' => '',
-			'value'  => '',
-			'width'  => '30',
-			'maxlength' => '255'
-		),
-		'mailmailinglist_link' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'CHECKBOX',
-			'default' => 'n',
-			'value'  => array(0 => 'n', 1 => 'y')
-		),
-		'mailmailinglist_url' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'TEXT',
-			'validators' => array ( 0 => array ( 'type' => 'REGEX',
-					'regex' => '/^[0-9a-zA-Z\:\/\-\.]{0,255}$/',
-					'errmsg'=> 'mailinglist_url_error_regex'),
-			),
-			'default' => '',
-			'value'  => '',
-			'width'  => '30',
-			'maxlength' => '255'
-		),
-		'admin_mail' => array (
-			'datatype' => 'VARCHAR',
-			'filters'   => array( 0 => array( 'event' => 'SAVE',
-					'type' => 'IDNTOASCII'),
-				1 => array( 'event' => 'SHOW',
-					'type' => 'IDNTOUTF8'),
-				2 => array( 'event' => 'SAVE',
-					'type' => 'TOLOWER'),
-				3 => array( 'event' => 'SAVE',
-					'type' => 'STRIPTAGS'),
-				4 => array( 'event' => 'SAVE',
-					'type' => 'STRIPNL')
-			),
-			'formtype' => 'TEXT',
-			'default' => '',
-			'value'  => '',
-			'width'  => '30',
-			'maxlength' => '255'
-		),
-		'admin_name' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'TEXT',
-			'filters'   => array(
-					0 => array( 'event' => 'SAVE',
-					'type' => 'STRIPTAGS'),
-					1 => array( 'event' => 'SAVE',
-					'type' => 'STRIPNL')
-			),
-			'default' => '',
-			'value'  => '',
-			'width'  => '30',
-			'maxlength' => '255'
-		),
-		'smtp_enabled' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'CHECKBOX',
-			'default' => 'y',
-			'value'  => array(0 => 'n', 1 => 'y')
-		),
-		'smtp_host' => array (
-			'datatype' => 'VARCHAR',
-			'filters'   => array( 0 => array( 'event' => 'SAVE',
-					'type' => 'IDNTOASCII'),
-				1 => array( 'event' => 'SHOW',
-					'type' => 'IDNTOUTF8'),
-				2 => array( 'event' => 'SAVE',
-					'type' => 'TOLOWER'),
-				3 => array( 'event' => 'SAVE',
-					'type' => 'STRIPTAGS'),
-				4 => array( 'event' => 'SAVE',
-					'type' => 'STRIPNL')
-			),
-			'formtype' => 'TEXT',
-			'default' => 'localhost',
-			'value'  => '',
-			'width'  => '30',
-			'maxlength' => '255'
-		),
-		'smtp_port' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'TEXT',
-			'filters'   => array(
-					0 => array( 'event' => 'SAVE',
-					'type' => 'STRIPTAGS'),
-					1 => array( 'event' => 'SAVE',
-					'type' => 'STRIPNL')
-			),
-			'default' => '25',
-			'value'  => '',
-			'width'  => '30',
-			'maxlength' => '255'
-		),
-		'smtp_user' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'TEXT',
-			'filters'   => array(
-					0 => array( 'event' => 'SAVE',
-					'type' => 'STRIPTAGS'),
-					1 => array( 'event' => 'SAVE',
-					'type' => 'STRIPNL')
-			),
-			'default' => '',
-			'value'  => '',
-			'width'  => '30',
-			'maxlength' => '255'
-		),
-		'smtp_pass' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'TEXT',
-			'default' => '',
-			'value'  => '',
-			'width'  => '30',
-			'maxlength' => '255'
-		),
-		'smtp_crypt' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'SELECT',
-			'default' => '',
-			'value'  => array('' => 'No', 'ssl' => 'SSL', 'tls' => 'STARTTLS')
-		),
-		'default_mailserver' => array (
-			'datatype' => 'INTEGER',
-			'formtype' => 'SELECT',
-			'default' => '1',
-			'datasource' => array (  'type' => 'CUSTOM',
-				'class'=> 'custom_datasource',
-				'function'=> 'client_servers'
-			),
-			'value'  => '',
-			'name'  => 'default_mailserver'
-		),
-		//#################################
-		// END Datatable fields
-		//#################################
-	)
-);
-
-$form["tabs"]['dns'] = array (
-	'title'  => "DNS",
-	'width'  => 70,
-	'template'  => "templates/system_config_dns_edit.htm",
-	'fields'  => array (
-		//#################################
-		// Begin Datatable fields
-		//#################################
-		'default_dnsserver' => array (
-			'datatype' => 'INTEGER',
-			'formtype' => 'SELECT',
-			'default' => '1',
-			'datasource' => array (  'type' => 'CUSTOM',
-				'class'=> 'custom_datasource',
-				'function'=> 'client_servers'
-			),
-			'value'  => '',
-			'name'  => 'default_dnsserver'
-		),
-		'default_slave_dnsserver' => array (
-			'datatype' => 'INTEGER',
-			'formtype' => 'SELECT',
-			'default' => '1',
-			'datasource' => array (  'type' => 'CUSTOM',
-				'class'=> 'custom_datasource',
-				'function'=> 'client_servers'
-			),
-			'value'  => '',
-			'name'  => 'default_slave_dnsserver'
-		),
-		//#################################
-		// END Datatable fields
-		//#################################
-	)
-);
-
-$form["tabs"]['domains'] = array (
-	'title'  => "Domains",
-	'width'  => 70,
-	'template'  => "templates/system_config_domains_edit.htm",
-	'fields'  => array (
-		//#################################
-		// Begin Datatable fields
-		//#################################
-		'use_domain_module' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'CHECKBOX',
-			'default' => 'n',
-			'value'  => array(0 => 'n', 1 => 'y')
-		),
-		'new_domain_html' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'TEXT',
-			'filters'   => array(
-					0 => array( 'event' => 'SAVE',
-					'type' => 'STRIPTAGS')
-			),
-			'default' => '',
-			'value'  => ''
-		),
-		//#################################
-		// END Datatable fields
-		//#################################
-	)
-);
-
-/* TODO_ BEGIN: Branding
-
-$form["tabs"]['domains'] = array (
-	'title' 	=> "Branding",
-	'width' 	=> 70,
-	'template' 	=> "templates/system_config_branding_edit.htm",
-	'fields' 	=> array (
-	##################################
-	# Begin Datatable fields
-	##################################
-                'allow_themechange' => array (
-                        'datatype'	=> 'VARCHAR',
-                        'formtype'	=> 'CHECKBOX',
-                        'default'	=> 'N',
-                        'value'         => array(0 => 'n',1 => 'y')
-                ),
-	##################################
-	# ENDE Datatable fields
-	##################################
-	)
-);
-
-
- END: Branding */
-$form["tabs"]['misc'] = array (
-	'title'  => "Misc",
-	'width'  => 70,
-	'template'  => "templates/system_config_misc_edit.htm",
-	'fields'  => array (
-		//#################################
-		// Begin Datatable fields
-		//#################################
-		'company_name' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'TEXT',
-			'filters'   => array(
-					0 => array( 'event' => 'SAVE',
-					'type' => 'STRIPTAGS'),
-					1 => array( 'event' => 'SAVE',
-					'type' => 'STRIPNL')
-			),
-			'default' => '',
-			'value'  => ''
-		),
-		'custom_login_text' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'TEXT',
-			'filters'   => array(
-					0 => array( 'event' => 'SAVE',
-					'type' => 'STRIPTAGS'),
-					1 => array( 'event' => 'SAVE',
-					'type' => 'STRIPNL')
-			),
-			'default' => '',
-			'value'  => ''
-		),
-		'custom_login_link' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'TEXT',
-			'default' => '',
-			'value'  => '',
-			'validators' => array ( 0 => array ( 'type' => 'REGEX',
-				'regex' => '/^(http|https):\\/\\/.*|^$/',
-				'errmsg'=> 'login_link_error_regex'),
-			)
-		),
-		'dashboard_atom_url_admin' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'TEXT',
-			'filters'   => array(
-					0 => array( 'event' => 'SAVE',
-					'type' => 'STRIPTAGS'),
-					1 => array( 'event' => 'SAVE',
-					'type' => 'STRIPNL')
-			),
-			'default' => 'http://www.ispconfig.org/atom',
-			'value'  => ''
-		),
-		'dashboard_atom_url_reseller' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'TEXT',
-			'filters'   => array(
-					0 => array( 'event' => 'SAVE',
-					'type' => 'STRIPTAGS'),
-					1 => array( 'event' => 'SAVE',
-					'type' => 'STRIPNL')
-			),
-			'default' => 'http://www.ispconfig.org/atom',
-			'value'  => ''
-		),
-		'dashboard_atom_url_client' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'TEXT',
-			'filters'   => array(
-					0 => array( 'event' => 'SAVE',
-					'type' => 'STRIPTAGS'),
-					1 => array( 'event' => 'SAVE',
-					'type' => 'STRIPNL')
-			),
-			'default' => 'http://www.ispconfig.org/atom',
-			'value'  => ''
-		),
-		'monitor_key' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'TEXT',
-			'default' => '',
-			'value'  => ''
-		),
-		'tab_change_discard' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'CHECKBOX',
-			'default' => 'n',
-			'value'  => array(0 => 'n', 1 => 'y')
-		),
-		'tab_change_warning' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'CHECKBOX',
-			'default' => 'n',
-			'value'  => array(0 => 'n', 1 => 'y')
-		),
-		'use_loadindicator' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'CHECKBOX',
-			'default' => 'y',
-			'value'  => array(0 => 'n', 1 => 'y')
-		),
-		'use_combobox' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'CHECKBOX',
-			'default' => 'y',
-			'value'  => array(0 => 'n', 1 => 'y')
-		),
-		'maintenance_mode' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'CHECKBOX',
-			'default' => 'n',
-			'value'  => array(0 => 'n', 1 => 'y')
-		),
-		'maintenance_mode_exclude_ips' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'TEXT',
-			'validators' => array(
-				 0 => array (
-					'type' => 'ISIP',
-					'allowempty' => true,
-					'separator' => ',',
-					'errmsg'=> 'maintenance_mode_exclude_ips_error_isip'
-				),
-			),
-			'default' => '',
-			'value'  => ''
-		),
-		'admin_dashlets_left' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'TEXT',
-			'filters'   => array(
-					0 => array( 'event' => 'SAVE',
-					'type' => 'STRIPTAGS'),
-					1 => array( 'event' => 'SAVE',
-					'type' => 'STRIPNL')
-			),
-			'default' => '',
-			'value'  => ''
-		),
-		'admin_dashlets_right' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'TEXT',
-			'filters'   => array(
-					0 => array( 'event' => 'SAVE',
-					'type' => 'STRIPTAGS'),
-					1 => array( 'event' => 'SAVE',
-					'type' => 'STRIPNL')
-			),
-			'default' => '',
-			'value'  => ''
-		),
-		'reseller_dashlets_left' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'TEXT',
-			'filters'   => array(
-					0 => array( 'event' => 'SAVE',
-					'type' => 'STRIPTAGS'),
-					1 => array( 'event' => 'SAVE',
-					'type' => 'STRIPNL')
-			),
-			'default' => '',
-			'value'  => ''
-		),
-		'reseller_dashlets_right' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'TEXT',
-			'filters'   => array(
-					0 => array( 'event' => 'SAVE',
-					'type' => 'STRIPTAGS'),
-					1 => array( 'event' => 'SAVE',
-					'type' => 'STRIPNL')
-			),
-			'default' => '',
-			'value'  => ''
-		),
-		'client_dashlets_left' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'TEXT',
-			'filters'   => array(
-					0 => array( 'event' => 'SAVE',
-					'type' => 'STRIPTAGS'),
-					1 => array( 'event' => 'SAVE',
-					'type' => 'STRIPNL')
-			),
-			'default' => '',
-			'value'  => ''
-		),
-		'client_dashlets_right' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'TEXT',
-			'filters'   => array(
-					0 => array( 'event' => 'SAVE',
-					'type' => 'STRIPTAGS'),
-					1 => array( 'event' => 'SAVE',
-					'type' => 'STRIPNL')
-			),
-			'default' => '',
-			'value'  => ''
-		),
-		'customer_no_template' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'TEXT',
-			'validators' => array ( 0 => array ( 'type' => 'REGEX',
-					'regex' => '/^[a-zA-Z0-9\-\_\[\]]{0,50}$/',
-					'errmsg'=> 'customer_no_template_error_regex'),
-			),
-			'default' => '',
-			'value'  => '',
-			'width'  => '30',
-			'maxlength' => '255'
-		),
-		'customer_no_start' => array (
-			'datatype' => 'INTEGER',
-			'formtype' => 'TEXT',
-			'default' => '',
-			'value'  => '',
-			'width'  => '30',
-			'maxlength' => '255'
-		),
-		'customer_no_counter' => array (
-			'datatype' => 'INTEGER',
-			'formtype' => 'TEXT',
-			'default' => '',
-			'value'  => '',
-			'width'  => '30',
-			'maxlength' => '255'
-		),
-		'session_timeout' => array (
-			'datatype' => 'INTEGER',
-			'formtype' => 'TEXT',
-			'default' => '',
-			'value'  => '',
-			'width'  => '30',
-			'maxlength' => '255'
-		),
-		'session_allow_endless' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'CHECKBOX',
-			'default' => 'n',
-			'value'  => array(0 => 'n', 1 => 'y')
-		),
-		'min_password_length' => array(
-			'datatype' => 'INTEGER',
-			'formtype' => 'TEXT',
-			'default' => '5',
-			'value'  => '',
-			'width'  => '30',
-			'maxlength' => '255'
-		),
-		'min_password_strength' => array(
-			'datatype' => 'VARCHAR',
-			'formtype' => 'SELECT',
-			'default' => '',
-			'value'  => array('' => 'None', '1' => 'strength_1', '2' => 'strength_2', '3' => 'strength_3', '4' => 'strength_4', '5' => 'strength_5')
-		)
-		//#################################
-		// END Datatable fields
-		//#################################
-	)
-);
-
-$form['tabs']['dns_ca'] = array (
-	'title'  => 'DNS CAs',
-	'width'  => 100,
-	'template'  => 'templates/system_config_dns_ca.htm',
-	'fields'  => array (),
-	'plugins' => array (
-		'dns_ca' => array (
-			'class'   => 'plugin_system_config_dns_ca',
-			'options' => array()
-		),
-		'dns_ca_list' => array (
-			'class'   => 'plugin_system_config_dns_ca_list',
-			'options' => array()
-		)
-	)
-);
-
-?>
-- 
GitLab


From bcb6e94bc8d98587ee32e4b51186495071a0882d Mon Sep 17 00:00:00 2001
From: Thom Pol <thom@amsterdamtech.nl>
Date: Sun, 24 May 2020 19:56:49 +0200
Subject: [PATCH 194/242] Update
 interface/web/admin/form/system_config.tform.php

---
 interface/web/admin/form/system_config.tform.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/interface/web/admin/form/system_config.tform.php b/interface/web/admin/form/system_config.tform.php
index d1b0a793e7..1b84e59560 100644
--- a/interface/web/admin/form/system_config.tform.php
+++ b/interface/web/admin/form/system_config.tform.php
@@ -33,7 +33,7 @@
 
 */
 
-$form["title"]   = "System Config";
+$form["title"]   = "system_config_title";
 $form["description"]  = "system_config_desc_txt";
 $form["name"]   = "system_config";
 $form["action"]  = "system_config_edit.php";
-- 
GitLab


From a4420597b95fcaeb458133a15510986ebc3e7c0f Mon Sep 17 00:00:00 2001
From: Thom Pol <thom@amsterdamtech.nl>
Date: Sun, 24 May 2020 20:11:02 +0200
Subject: [PATCH 195/242] Update interface/web/admin/form/server_ip.tform.php

---
 interface/web/admin/form/server_ip.tform.php | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/interface/web/admin/form/server_ip.tform.php b/interface/web/admin/form/server_ip.tform.php
index cd7190ebc6..d86dbb7535 100644
--- a/interface/web/admin/form/server_ip.tform.php
+++ b/interface/web/admin/form/server_ip.tform.php
@@ -64,8 +64,8 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 */
 
-$form["title"]    = "IP Addresses";
-$form["description"]  = "Form to edit system IP Addresses";
+$form["title"]    = "server_ip_edit_title";
+$form["description"]  = "server_ip_edit_desc";
 $form["name"]    = "server_ip";
 $form["action"]   = "server_ip_edit.php";
 $form["db_table"]  = "server_ip";
-- 
GitLab


From 13c9e0baeb50303d063f30a80cdb67bc86a7c04a Mon Sep 17 00:00:00 2001
From: Thom Pol <thom@amsterdamtech.nl>
Date: Sun, 24 May 2020 20:17:12 +0200
Subject: [PATCH 196/242] Fixes #4480 (Translate IP edit form title and desc)

---
 ar_server_ip.lng | 13 +++++++++++++
 bg_server_ip.lng | 13 +++++++++++++
 br_server_ip.lng | 13 +++++++++++++
 ca_server_ip.lng | 13 +++++++++++++
 cz_server_ip.lng | 13 +++++++++++++
 de_server_ip.lng | 13 +++++++++++++
 dk_server_ip.lng | 13 +++++++++++++
 el_server_ip.lng | 13 +++++++++++++
 en_server_ip.lng | 13 +++++++++++++
 es_server_ip.lng | 13 +++++++++++++
 fi_server_ip.lng | 13 +++++++++++++
 fr_server_ip.lng | 13 +++++++++++++
 hr_server_ip.lng | 13 +++++++++++++
 hu_server_ip.lng | 13 +++++++++++++
 id_server_ip.lng | 13 +++++++++++++
 it_server_ip.lng | 13 +++++++++++++
 ja_server_ip.lng | 13 +++++++++++++
 nl_server_ip.lng | 13 +++++++++++++
 pl_server_ip.lng | 13 +++++++++++++
 pt_server_ip.lng | 13 +++++++++++++
 ro_server_ip.lng | 13 +++++++++++++
 ru_server_ip.lng | 13 +++++++++++++
 se_server_ip.lng | 13 +++++++++++++
 sk_server_ip.lng | 13 +++++++++++++
 tr_server_ip.lng | 13 +++++++++++++
 25 files changed, 325 insertions(+)
 create mode 100644 ar_server_ip.lng
 create mode 100644 bg_server_ip.lng
 create mode 100644 br_server_ip.lng
 create mode 100644 ca_server_ip.lng
 create mode 100644 cz_server_ip.lng
 create mode 100644 de_server_ip.lng
 create mode 100644 dk_server_ip.lng
 create mode 100644 el_server_ip.lng
 create mode 100644 en_server_ip.lng
 create mode 100644 es_server_ip.lng
 create mode 100644 fi_server_ip.lng
 create mode 100644 fr_server_ip.lng
 create mode 100644 hr_server_ip.lng
 create mode 100644 hu_server_ip.lng
 create mode 100644 id_server_ip.lng
 create mode 100644 it_server_ip.lng
 create mode 100644 ja_server_ip.lng
 create mode 100644 nl_server_ip.lng
 create mode 100644 pl_server_ip.lng
 create mode 100644 pt_server_ip.lng
 create mode 100644 ro_server_ip.lng
 create mode 100644 ru_server_ip.lng
 create mode 100644 se_server_ip.lng
 create mode 100644 sk_server_ip.lng
 create mode 100644 tr_server_ip.lng

diff --git a/ar_server_ip.lng b/ar_server_ip.lng
new file mode 100644
index 0000000000..1947d3ec37
--- /dev/null
+++ b/ar_server_ip.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
+$wb['server_id_txt'] = 'Server';
+$wb['ip_address_txt'] = 'IP Address';
+$wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
+$wb['ip_error_wrong'] = 'The IP address is invalid';
+$wb['ip_error_unique'] = 'The IP address must be unique';
+$wb['client_id_txt'] = 'Client';
+$wb['ip_type_txt'] = 'Type';
+$wb['virtualhost_port_txt'] = 'HTTP Ports';
+$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443';
+?>
diff --git a/bg_server_ip.lng b/bg_server_ip.lng
new file mode 100644
index 0000000000..70f428a634
--- /dev/null
+++ b/bg_server_ip.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
+$wb['server_id_txt'] = 'Сървър';
+$wb['ip_address_txt'] = 'IP адрес';
+$wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
+$wb['ip_error_wrong'] = 'IP адресът е грешен';
+$wb['ip_error_unique'] = 'IP адресът трябва да бъде уникален';
+$wb['client_id_txt'] = 'Клиент';
+$wb['ip_type_txt'] = 'Тип';
+$wb['virtualhost_port_txt'] = 'HTTP портове';
+$wb['error_port_syntax'] = 'Грешни символи в полето за портове, моля въвеждайте само числа разделени с запетая. Пример: 80,443';
+?>
diff --git a/br_server_ip.lng b/br_server_ip.lng
new file mode 100644
index 0000000000..8380b61ebd
--- /dev/null
+++ b/br_server_ip.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
+$wb['server_id_txt'] = 'Servidor';
+$wb['client_id_txt'] = 'Cliente';
+$wb['ip_type_txt'] = 'Tipo';
+$wb['ip_address_txt'] = 'Endereço IP';
+$wb['virtualhost_txt'] = 'Nome do vhost http';
+$wb['virtualhost_port_txt'] = 'Porta http';
+$wb['ip_error_wrong'] = 'O endereço IP é inválido.';
+$wb['ip_error_unique'] = 'O endereço IP deve ser exclusivo.';
+$wb['error_port_syntax'] = 'Caracteres inválidos para porta http, por favor, insira apenas uma porta ou separe portas por vírgula. Exemplo: 80,443.';
+?>
diff --git a/ca_server_ip.lng b/ca_server_ip.lng
new file mode 100644
index 0000000000..8f7738e51f
--- /dev/null
+++ b/ca_server_ip.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
+$wb['server_id_txt'] = 'Server';
+$wb['client_id_txt'] = 'Client';
+$wb['ip_type_txt'] = 'Type';
+$wb['ip_address_txt'] = 'IP Address';
+$wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
+$wb['virtualhost_port_txt'] = 'HTTP Ports';
+$wb['ip_error_wrong'] = 'The IP address is invalid';
+$wb['ip_error_unique'] = 'The IP address must be unique';
+$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443';
+?>
diff --git a/cz_server_ip.lng b/cz_server_ip.lng
new file mode 100644
index 0000000000..3698df5c74
--- /dev/null
+++ b/cz_server_ip.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
+$wb['server_id_txt'] = 'Server';
+$wb['ip_address_txt'] = 'IP adresa';
+$wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
+$wb['ip_error_wrong'] = 'IP adresa je neplatná nebo prázdná';
+$wb['ip_error_unique'] = 'IP adresa musí být unikátní';
+$wb['client_id_txt'] = 'Klient';
+$wb['ip_type_txt'] = 'Verze';
+$wb['virtualhost_port_txt'] = 'HTTP Porty';
+$wb['error_port_syntax'] = 'Neplatné znaky ve volbě HTTP Portů. Prosím, zadejte pouze číselné hodnoty oddělené čárkami. Příklad: 80,443';
+?>
diff --git a/de_server_ip.lng b/de_server_ip.lng
new file mode 100644
index 0000000000..88f23ebc15
--- /dev/null
+++ b/de_server_ip.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
+$wb['server_id_txt'] = 'Server';
+$wb['ip_address_txt'] = 'IP Adresse';
+$wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
+$wb['ip_error_wrong'] = 'Die IP Adresse ist ungültig';
+$wb['ip_error_unique'] = 'Die IP Adresse muss einzigartig sein';
+$wb['client_id_txt'] = 'Kunde';
+$wb['ip_type_txt'] = 'Typ';
+$wb['virtualhost_port_txt'] = 'HTTP Ports';
+$wb['error_port_syntax'] = 'Ungültige Zeichen im Ports Feld. Bitte geben Sie nur komma-separierte Nummern an. Beispiel: 80,443';
+?>
diff --git a/dk_server_ip.lng b/dk_server_ip.lng
new file mode 100644
index 0000000000..a6ba3ba045
--- /dev/null
+++ b/dk_server_ip.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
+$wb['server_id_txt'] = 'Server';
+$wb['client_id_txt'] = 'Kunde';
+$wb['ip_type_txt'] = 'Type';
+$wb['ip_address_txt'] = 'IP Adresse';
+$wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
+$wb['virtualhost_port_txt'] = 'HTTP Porte';
+$wb['ip_error_wrong'] = 'IP adressen er ugyldigt';
+$wb['ip_error_unique'] = 'IP adressen skal være unikke';
+$wb['error_port_syntax'] = 'Ugyldigt tegn i Port felt, du må kun indtaste kommasepareret tal. F.eks.: 80,443';
+?>
diff --git a/el_server_ip.lng b/el_server_ip.lng
new file mode 100644
index 0000000000..f00925fc62
--- /dev/null
+++ b/el_server_ip.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
+$wb['server_id_txt'] = 'Server';
+$wb['ip_address_txt'] = 'Διεύθυνση IP';
+$wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
+$wb['ip_error_wrong'] = 'Η Διεύθυνση IP είναι άκυρη';
+$wb['ip_error_unique'] = 'Η Διεύθυνση IP πρέπει να είναι μοναδική';
+$wb['client_id_txt'] = 'Πελάτης';
+$wb['ip_type_txt'] = 'Τύπος';
+$wb['virtualhost_port_txt'] = 'Θύρες HTTP';
+$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443';
+?>
diff --git a/en_server_ip.lng b/en_server_ip.lng
new file mode 100644
index 0000000000..8ef448f85d
--- /dev/null
+++ b/en_server_ip.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
+$wb["server_id_txt"] = 'Server';
+$wb["client_id_txt"] = 'Client';
+$wb["ip_type_txt"] = 'Type';
+$wb["ip_address_txt"] = 'IP Address';
+$wb["virtualhost_txt"] = 'HTTP NameVirtualHost';
+$wb["virtualhost_port_txt"] = 'HTTP Ports';
+$wb["ip_error_wrong"] = 'The IP address is invalid';
+$wb["ip_error_unique"] = 'The IP address must be unique';
+$wb["error_port_syntax"] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443';
+?>
diff --git a/es_server_ip.lng b/es_server_ip.lng
new file mode 100644
index 0000000000..ba4d06d098
--- /dev/null
+++ b/es_server_ip.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
+$wb['client_id_txt'] = 'Cliente';
+$wb['error_port_syntax'] = 'Caracteres inválidos en el campo puerto, por favor introduzca sólo números separados por comas. Por ejemplo: 80,443';
+$wb['ip_address_txt'] = 'Dirección IP';
+$wb['ip_error_unique'] = 'La dirección IP debe ser única';
+$wb['ip_error_wrong'] = 'La dirección IP no es correcta';
+$wb['ip_type_txt'] = 'Tipo';
+$wb['server_id_txt'] = 'Servidor';
+$wb['virtualhost_port_txt'] = 'Puertos HTTP';
+$wb['virtualhost_txt'] = 'Nombre de host virtual HTTP (NameVirtualHost)';
+?>
diff --git a/fi_server_ip.lng b/fi_server_ip.lng
new file mode 100644
index 0000000000..a9f49cc124
--- /dev/null
+++ b/fi_server_ip.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
+$wb['server_id_txt'] = 'Palvelin';
+$wb['ip_address_txt'] = 'IP-osoite';
+$wb['virtualhost_txt'] = 'Virtuaalipalvelin';
+$wb['ip_error_wrong'] = 'IP-osoite vääränlainen';
+$wb['ip_error_unique'] = 'IP-osoitteen on oltava yksilöllinen';
+$wb['client_id_txt'] = 'Client';
+$wb['ip_type_txt'] = 'Type';
+$wb['virtualhost_port_txt'] = 'HTTP Ports';
+$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443';
+?>
diff --git a/fr_server_ip.lng b/fr_server_ip.lng
new file mode 100644
index 0000000000..1289cd755a
--- /dev/null
+++ b/fr_server_ip.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
+$wb['server_id_txt'] = 'Serveur';
+$wb['ip_address_txt'] = 'Adresse IP';
+$wb['virtualhost_txt'] = 'NameVirtualHost HTTP';
+$wb['ip_error_wrong'] = 'L’adresse IP est invalide';
+$wb['ip_error_unique'] = 'L’adresse IP doit être unique';
+$wb['client_id_txt'] = 'Client';
+$wb['ip_type_txt'] = 'Type';
+$wb['virtualhost_port_txt'] = 'HTTP Ports';
+$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443';
+?>
diff --git a/hr_server_ip.lng b/hr_server_ip.lng
new file mode 100644
index 0000000000..f26fd720ca
--- /dev/null
+++ b/hr_server_ip.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
+$wb['server_id_txt'] = 'Server';
+$wb['ip_address_txt'] = 'IP adresa';
+$wb['virtualhost_txt'] = 'HTTP ime virtualnog hosta';
+$wb['ip_error_wrong'] = 'Neispravna IP adresa';
+$wb['ip_error_unique'] = 'IP adresa mora biti jedinstvena';
+$wb['client_id_txt'] = 'Klijent';
+$wb['ip_type_txt'] = 'Vrsta';
+$wb['virtualhost_port_txt'] = 'HTTP portovi';
+$wb['error_port_syntax'] = 'Nedozvoljeni znakovi u port polju, unesite samo znamenke odvojene zarezom. Primjer: 80,443';
+?>
diff --git a/hu_server_ip.lng b/hu_server_ip.lng
new file mode 100644
index 0000000000..2e8f88a2f7
--- /dev/null
+++ b/hu_server_ip.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
+$wb['server_id_txt'] = 'Szerver';
+$wb['ip_address_txt'] = 'IP cím';
+$wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
+$wb['ip_error_wrong'] = 'IP cím érvénytelen';
+$wb['ip_error_unique'] = 'AZ IP címnek egyedinek kell lennie';
+$wb['client_id_txt'] = 'Client';
+$wb['ip_type_txt'] = 'Type';
+$wb['virtualhost_port_txt'] = 'HTTP Ports';
+$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443';
+?>
diff --git a/id_server_ip.lng b/id_server_ip.lng
new file mode 100644
index 0000000000..00cecf5026
--- /dev/null
+++ b/id_server_ip.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
+$wb['server_id_txt'] = 'Server';
+$wb['ip_address_txt'] = 'Alamat IP';
+$wb['virtualhost_txt'] = 'Nama VirtualHost HTTP';
+$wb['ip_error_wrong'] = 'Alamat IP tidak valid';
+$wb['ip_error_unique'] = 'Alamat IP harus unik';
+$wb['client_id_txt'] = 'Client';
+$wb['ip_type_txt'] = 'Type';
+$wb['virtualhost_port_txt'] = 'HTTP Ports';
+$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443';
+?>
diff --git a/it_server_ip.lng b/it_server_ip.lng
new file mode 100644
index 0000000000..9850f2e38b
--- /dev/null
+++ b/it_server_ip.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
+$wb['server_id_txt'] = 'Server';
+$wb['ip_address_txt'] = 'Indirizzo IP';
+$wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
+$wb['ip_error_wrong'] = 'Indirizzo IP non valido';
+$wb['ip_error_unique'] = 'Indirizzo IP deve essere unico';
+$wb['client_id_txt'] = 'Cliente';
+$wb['ip_type_txt'] = 'Type';
+$wb['virtualhost_port_txt'] = 'HTTP Ports';
+$wb['error_port_syntax'] = 'Caratteri non validi nel campo porta, per favore inserire solo valori separati da virgola. Esempio: 80,443';
+?>
diff --git a/ja_server_ip.lng b/ja_server_ip.lng
new file mode 100644
index 0000000000..982d797760
--- /dev/null
+++ b/ja_server_ip.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
+$wb['server_id_txt'] = 'サーバー';
+$wb['ip_address_txt'] = 'IPアドレス';
+$wb['virtualhost_txt'] = 'HTTP の NameVirtualHost を使う';
+$wb['ip_error_wrong'] = 'IPアドレスが不正です。';
+$wb['ip_error_unique'] = '既に登録済みのIPアドレスです。別の値に変更してください。';
+$wb['client_id_txt'] = 'Client';
+$wb['ip_type_txt'] = 'Type';
+$wb['virtualhost_port_txt'] = 'HTTP Ports';
+$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443';
+?>
diff --git a/nl_server_ip.lng b/nl_server_ip.lng
new file mode 100644
index 0000000000..1fd397e01b
--- /dev/null
+++ b/nl_server_ip.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
+$wb['server_id_txt'] = 'Server';
+$wb['ip_address_txt'] = 'IP adres';
+$wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
+$wb['ip_error_wrong'] = 'Het IP adres is ongeldig';
+$wb['ip_error_unique'] = 'Het IP addres moet uniek zijn';
+$wb['client_id_txt'] = 'Client';
+$wb['ip_type_txt'] = 'Type';
+$wb['virtualhost_port_txt'] = 'HTTP Ports';
+$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443';
+?>
diff --git a/pl_server_ip.lng b/pl_server_ip.lng
new file mode 100644
index 0000000000..0e31866078
--- /dev/null
+++ b/pl_server_ip.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
+$wb['server_id_txt'] = 'Serwer';
+$wb['ip_address_txt'] = 'Adres IP';
+$wb['virtualhost_txt'] = 'Nazwa wirtualnego hosta HTTP';
+$wb['ip_error_wrong'] = 'Adres IP jest niepoprawny';
+$wb['ip_error_unique'] = 'Adres IP musi być unikalny';
+$wb['client_id_txt'] = 'Klient';
+$wb['ip_type_txt'] = 'Typ';
+$wb['virtualhost_port_txt'] = 'Porty HTTP';
+$wb['error_port_syntax'] = 'Nieprawidłowe wartości w polu portów, proszę wpisać tylko liczby oddzielone przecinkiem. Przykładowo: 80,443';
+?>
diff --git a/pt_server_ip.lng b/pt_server_ip.lng
new file mode 100644
index 0000000000..8a3d00be61
--- /dev/null
+++ b/pt_server_ip.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
+$wb['server_id_txt'] = 'Servidor';
+$wb['ip_address_txt'] = 'Endereço IP';
+$wb['virtualhost_txt'] = 'Nome VirtualHost HTTP';
+$wb['ip_error_wrong'] = 'Endereço IP inválido!';
+$wb['ip_error_unique'] = 'O endereço IP deve ser único';
+$wb['client_id_txt'] = 'Client';
+$wb['ip_type_txt'] = 'Type';
+$wb['virtualhost_port_txt'] = 'HTTP Ports';
+$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443';
+?>
diff --git a/ro_server_ip.lng b/ro_server_ip.lng
new file mode 100644
index 0000000000..1947d3ec37
--- /dev/null
+++ b/ro_server_ip.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
+$wb['server_id_txt'] = 'Server';
+$wb['ip_address_txt'] = 'IP Address';
+$wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
+$wb['ip_error_wrong'] = 'The IP address is invalid';
+$wb['ip_error_unique'] = 'The IP address must be unique';
+$wb['client_id_txt'] = 'Client';
+$wb['ip_type_txt'] = 'Type';
+$wb['virtualhost_port_txt'] = 'HTTP Ports';
+$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443';
+?>
diff --git a/ru_server_ip.lng b/ru_server_ip.lng
new file mode 100644
index 0000000000..f874ba1bbd
--- /dev/null
+++ b/ru_server_ip.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
+$wb['server_id_txt'] = 'Сервер';
+$wb['ip_address_txt'] = 'IP-адрес';
+$wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
+$wb['ip_error_wrong'] = 'Неправильный формат IP-адреса';
+$wb['ip_error_unique'] = 'IP-адрес должен быть уникальным';
+$wb['client_id_txt'] = 'ID Клиента';
+$wb['ip_type_txt'] = 'Тип';
+$wb['virtualhost_port_txt'] = 'HTTP порты';
+$wb['error_port_syntax'] = 'Недопустимые символы в поле порта. Пожалуйста, вводите только числа, разделенные запятой. Пример: 80,443';
+?>
diff --git a/se_server_ip.lng b/se_server_ip.lng
new file mode 100644
index 0000000000..09bc3b593a
--- /dev/null
+++ b/se_server_ip.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
+$wb['server_id_txt'] = 'Server';
+$wb['ip_address_txt'] = 'IP-adress';
+$wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
+$wb['ip_error_wrong'] = 'IP_adressen är ogiltig';
+$wb['ip_error_unique'] = 'IP-adressen måste vara unik';
+$wb['client_id_txt'] = 'Kund';
+$wb['ip_type_txt'] = 'Typ';
+$wb['virtualhost_port_txt'] = 'HTTP-portar';
+$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443';
+?>
diff --git a/sk_server_ip.lng b/sk_server_ip.lng
new file mode 100644
index 0000000000..02f84ded4c
--- /dev/null
+++ b/sk_server_ip.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
+$wb['server_id_txt'] = 'Server';
+$wb['ip_address_txt'] = 'IP Adresa';
+$wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
+$wb['ip_error_wrong'] = 'IP adresa je neplatná';
+$wb['ip_error_unique'] = 'IP adresa musí byť unikátna';
+$wb['client_id_txt'] = 'Client';
+$wb['ip_type_txt'] = 'Type';
+$wb['virtualhost_port_txt'] = 'HTTP Ports';
+$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443';
+?>
diff --git a/tr_server_ip.lng b/tr_server_ip.lng
new file mode 100644
index 0000000000..1f31bd3932
--- /dev/null
+++ b/tr_server_ip.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
+$wb['server_id_txt'] = 'Sunucu';
+$wb['client_id_txt'] = 'Müşteri';
+$wb['ip_type_txt'] = 'Tür';
+$wb['ip_address_txt'] = 'IP Adresi';
+$wb['virtualhost_txt'] = 'HTTP sSunucu Adı';
+$wb['virtualhost_port_txt'] = 'HTTP Kapı Numaraları';
+$wb['ip_error_wrong'] = 'IP adresi geçersiz';
+$wb['ip_error_unique'] = 'Aynı IP adresi zaten var';
+$wb['error_port_syntax'] = 'Kapı alanında geçersiz karakterler var. Lütfen yalnız virgül ile ayrılmış sayılar yazın. Örnek: 80,443';
+?>
-- 
GitLab


From cdded70e3033b5d2c939f915126d582d1d844e3f Mon Sep 17 00:00:00 2001
From: Thom Pol <thom@amsterdamtech.nl>
Date: Sun, 24 May 2020 20:19:25 +0200
Subject: [PATCH 197/242] Revert "Added translation option for form title"

This reverts commit 2548cc13b35e87138f49ab0475c7e807666d75a2
---
 ar_system_config.lng | 96 ------------------------------------------
 bg_system_config.lng | 96 ------------------------------------------
 br_system_config.lng | 95 ------------------------------------------
 ca_system_config.lng | 96 ------------------------------------------
 cz_system_config.lng | 96 ------------------------------------------
 de_system_config.lng | 96 ------------------------------------------
 dk_system_config.lng | 96 ------------------------------------------
 el_system_config.lng | 96 ------------------------------------------
 en_system_config.lng | 99 --------------------------------------------
 es_system_config.lng | 96 ------------------------------------------
 fi_system_config.lng | 96 ------------------------------------------
 fr_system_config.lng | 96 ------------------------------------------
 hr_system_config.lng | 96 ------------------------------------------
 hu_system_config.lng | 96 ------------------------------------------
 id_system_config.lng | 96 ------------------------------------------
 it_system_config.lng | 96 ------------------------------------------
 ja_system_config.lng | 96 ------------------------------------------
 nl_system_config.lng | 96 ------------------------------------------
 pl_system_config.lng | 96 ------------------------------------------
 pt_system_config.lng | 96 ------------------------------------------
 ro_system_config.lng | 96 ------------------------------------------
 ru_system_config.lng | 96 ------------------------------------------
 se_system_config.lng | 96 ------------------------------------------
 sk_system_config.lng | 96 ------------------------------------------
 tr_system_config.lng | 90 ----------------------------------------
 25 files changed, 2396 deletions(-)
 delete mode 100644 ar_system_config.lng
 delete mode 100644 bg_system_config.lng
 delete mode 100644 br_system_config.lng
 delete mode 100644 ca_system_config.lng
 delete mode 100644 cz_system_config.lng
 delete mode 100644 de_system_config.lng
 delete mode 100644 dk_system_config.lng
 delete mode 100644 el_system_config.lng
 delete mode 100644 en_system_config.lng
 delete mode 100644 es_system_config.lng
 delete mode 100644 fi_system_config.lng
 delete mode 100644 fr_system_config.lng
 delete mode 100644 hr_system_config.lng
 delete mode 100644 hu_system_config.lng
 delete mode 100644 id_system_config.lng
 delete mode 100644 it_system_config.lng
 delete mode 100644 ja_system_config.lng
 delete mode 100644 nl_system_config.lng
 delete mode 100644 pl_system_config.lng
 delete mode 100644 pt_system_config.lng
 delete mode 100644 ro_system_config.lng
 delete mode 100644 ru_system_config.lng
 delete mode 100644 se_system_config.lng
 delete mode 100644 sk_system_config.lng
 delete mode 100644 tr_system_config.lng

diff --git a/ar_system_config.lng b/ar_system_config.lng
deleted file mode 100644
index 3a7ef0796c..0000000000
--- a/ar_system_config.lng
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-$wb['system_config_title'] = 'System Config';
-$wb['system_config_desc_txt'] = '';
-$wb['warning'] = 'Edit these values carefully! Do not remove the prefixes on a systems with more then one client.';
-$wb['dbname_prefix_txt'] = 'Database name prefix';
-$wb['dbuser_prefix_txt'] = 'Database user prefix';
-$wb['shelluser_prefix_txt'] = 'Shell user prefix';
-$wb['ftpuser_prefix_txt'] = 'FTP user prefix';
-$wb['dbname_prefix_error_regex'] = 'Char not allowed in database name prefix.';
-$wb['dbuser_prefix_error_regex'] = 'Char not allowed in database user prefix.';
-$wb['ftpuser_prefix_error_regex'] = 'Char not allowed in ftp user prefix.';
-$wb['shelluser_prefix_error_regex'] = 'Char not allowed in shell user prefix.';
-$wb['dblist_phpmyadmin_link_txt'] = 'Link to phpmyadmin in DB list';
-$wb['mailboxlist_webmail_link_txt'] = 'Link to webmail in Mailbox list';
-$wb['webmail_url_txt'] = 'Webmail URL';
-$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL';
-$wb['use_domain_module_txt'] = 'Use the domain-module to add new domains';
-$wb['use_domain_module_hint'] = 'If you use this module, your customers can only select one of the domains the admin creates for them. They cannot free edit the domain-field.You have to re-login after changing this value, to make the changes visible.';
-$wb['new_domain_txt'] = 'HTML to create a new domain';
-$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
-$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)';
-$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)';
-$wb['webdavuser_prefix_txt'] = 'Webdav user prefix';
-$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.';
-$wb['webftp_url_txt'] = 'WebFTP URL';
-$wb['enable_custom_login_txt'] = 'Allow custom login name';
-$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list';
-$wb['mailmailinglist_url_txt'] = 'Mailing list URL';
-$wb['admin_mail_txt'] = 'Administrators e-mail';
-$wb['monitor_key_txt'] = 'Monitor keyword';
-$wb['admin_name_txt'] = 'Administrators name';
-$wb['maintenance_mode_txt'] = 'Maintenance Mode';
-$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
-$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
-$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
-$wb['smtp_host_txt'] = 'SMTP host';
-$wb['smtp_port_txt'] = 'SMTP port';
-$wb['smtp_user_txt'] = 'SMTP user';
-$wb['smtp_pass_txt'] = 'SMTP password';
-$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP';
-$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.';
-$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
-$wb['tab_change_warning_txt'] = 'Tab change warning';
-$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
-$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
-$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
-$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
-$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
-$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
-$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
-$wb['use_loadindicator_txt'] = 'Use Load Indicator';
-$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.';
-$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.';
-$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
-$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details';
-$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details';
-$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details';
-$wb['webmail_url_error_regex'] = 'Invalid webmail URL';
-$wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
-$wb['webmail_url_note_txt'] = 'Placeholder:';
-$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
-$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
-$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
-$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
-$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
-$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
-$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
-$wb['customer_no_template_txt'] = 'Customer No. template';
-$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters';
-$wb['customer_no_start_txt'] = 'Customer No. start value';
-$wb['customer_no_counter_txt'] = 'Customer No. counter';
-$wb['session_timeout_txt'] = 'Session timeout (minutes)';
-$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
-$wb['No'] = 'No';
-$wb['min_password_length_txt'] = 'Minimum password length';
-$wb['min_password_strength_txt'] = 'Minimum password strength';
-$wb['company_name_txt'] = 'Company Name for the page title';
-$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites';
-$wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
-$wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
-$wb['login_link_error_regex'] = 'Invalid Link for Custom Login';
-$wb['default_mailserver_txt'] = 'Default Mailserver';
-$wb['default_webserver_txt'] = 'Default Webserver';
-$wb['default_dnsserver_txt'] = 'Default DNS Server';
-$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
-$wb['default_dbserver_txt'] = 'Default Database Server';
-$wb['ca_name_txt'] = 'Name';
-$wb['ca_issue_txt'] = 'Issue';
-$wb['ca_wildcard_txt'] = 'Use Wildcard';
-$wb['ca_critical_txt'] = 'Strict Check';
-$wb['ca_iodef_txt'] = 'iodef';
-$wb['active_txt'] = 'Aktive';
-$wb['btn_save_txt'] = 'Save';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
-?>
diff --git a/bg_system_config.lng b/bg_system_config.lng
deleted file mode 100644
index 4e6add8a6d..0000000000
--- a/bg_system_config.lng
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-$wb['system_config_title'] = 'System Config';
-$wb['warning'] = 'Редактирай тези променливи внимателно! Не премахвай префиксите на системата.';
-$wb['dbname_prefix_txt'] = 'Име на префикса в базата данни';
-$wb['dbuser_prefix_txt'] = 'Потребителски префикс в базата данни';
-$wb['shelluser_prefix_txt'] = 'Shell user prefix';
-$wb['ftpuser_prefix_txt'] = 'Потребителски префикс на FTP';
-$wb['dbname_prefix_error_regex'] = 'Неразрешени символи в името на префикса.';
-$wb['dbuser_prefix_error_regex'] = 'Неразрешени символи в името на префикса.';
-$wb['ftpuser_prefix_error_regex'] = 'Неразрешени символи в името на ftp префикса.';
-$wb['shelluser_prefix_error_regex'] = 'Неразрешени символи в името на shell префикса.';
-$wb['dblist_phpmyadmin_link_txt'] = 'Link to phpmyadmin in DB list';
-$wb['mailboxlist_webmail_link_txt'] = 'Link to webmail in Mailbox list';
-$wb['webmail_url_txt'] = 'Webmail URL';
-$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL';
-$wb['use_domain_module_txt'] = 'Use the domain-module to add new domains';
-$wb['use_domain_module_hint'] = 'Ако използвате този модул, вашите клиенти могат да изберет само един от домейните, които администратора създава за тях. Те не могат да освободят и редактират домейн - полето. Вие , трябва отново да влезете след промяна на тази стойност, за да направите промените видими.';
-$wb['new_domain_txt'] = 'HTML to create a new domain';
-$wb['webdavuser_prefix_txt'] = 'Webdav user prefix';
-$wb['webdavuser_prefix_error_regex'] = 'Неразрешени символи в името на webdav префикса.';
-$wb['webftp_url_txt'] = 'WebFTP URL';
-$wb['monitor_key_txt'] = 'Monitor keyword';
-$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
-$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)';
-$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)';
-$wb['enable_custom_login_txt'] = 'Разреши различни имена за вход';
-$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list';
-$wb['mailmailinglist_url_txt'] = 'Мейлинг лист адрес URL';
-$wb['admin_mail_txt'] = 'Администраторски емаил';
-$wb['admin_name_txt'] = 'Администраторски имена';
-$wb['system_config_desc_txt'] = '';
-$wb['maintenance_mode_txt'] = 'Maintenance Mode';
-$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
-$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
-$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
-$wb['smtp_host_txt'] = 'SMTP host';
-$wb['smtp_port_txt'] = 'SMTP port';
-$wb['smtp_user_txt'] = 'SMTP user';
-$wb['smtp_pass_txt'] = 'SMTP password';
-$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP';
-$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.';
-$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
-$wb['tab_change_warning_txt'] = 'Tab change warning';
-$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
-$wb['vhost_subdomains_txt'] = 'Create Subdomains as web site';
-$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
-$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
-$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
-$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
-$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
-$wb['use_loadindicator_txt'] = 'Use Load Indicator';
-$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.';
-$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.';
-$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
-$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details';
-$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details';
-$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details';
-$wb['webmail_url_error_regex'] = 'Invalid webmail URL';
-$wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
-$wb['webmail_url_note_txt'] = 'Placeholder:';
-$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
-$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
-$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
-$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
-$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
-$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
-$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
-$wb['customer_no_template_txt'] = 'Customer No. template';
-$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters';
-$wb['customer_no_start_txt'] = 'Customer No. start value';
-$wb['customer_no_counter_txt'] = 'Customer No. counter';
-$wb['session_timeout_txt'] = 'Session timeout (minutes)';
-$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
-$wb['No'] = 'No';
-$wb['min_password_length_txt'] = 'Minimum password length';
-$wb['min_password_strength_txt'] = 'Minimum password strength';
-$wb['company_name_txt'] = 'Company Name for the page title';
-$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites';
-$wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
-$wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
-$wb['login_link_error_regex'] = 'Invalid Link for Custom Login';
-$wb['default_mailserver_txt'] = 'Default Mailserver';
-$wb['default_webserver_txt'] = 'Default Webserver';
-$wb['default_dnsserver_txt'] = 'Default DNS Server';
-$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
-$wb['default_dbserver_txt'] = 'Default Database Server';
-$wb['ca_name_txt'] = 'Name';
-$wb['ca_issue_txt'] = 'Issue';
-$wb['ca_wildcard_txt'] = 'Use Wildcard';
-$wb['ca_critical_txt'] = 'Strict Check';
-$wb['ca_iodef_txt'] = 'iodef';
-$wb['active_txt'] = 'Aktive';
-$wb['btn_save_txt'] = 'Save';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
-?>
diff --git a/br_system_config.lng b/br_system_config.lng
deleted file mode 100644
index f5ed36e9ea..0000000000
--- a/br_system_config.lng
+++ /dev/null
@@ -1,95 +0,0 @@
-<?php
-$wb['system_config_title'] = 'System Config';
-$wb['system_config_desc_txt'] = 'Configurações do Sistema';
-$wb['smtp_missing_admin_mail_txt'] = 'Por favor, insira um nome e e-mail do administrador se você usar smtp para envio dos e-mails do sistema.';
-$wb['dashboard_atom_url_admin_txt'] = 'URL do Dashboard atom (admin)';
-$wb['dashboard_atom_url_reseller_txt'] = 'URL do Dashboard atom (revendas)';
-$wb['dashboard_atom_url_client_txt'] = 'URL do Dashboard atom  (clientes)';
-$wb['warning'] = 'Edite estes valores com cuidado! Não remova os prefixos em um sistema com mais de um cliente!';
-$wb['tab_change_discard_txt'] = 'Descartar alterações nesta aba';
-$wb['tab_change_warning_txt'] = 'Alerta de alterações';
-$wb['tab_change_warning_note_txt'] = 'Exibir alertas de alterações nesta aba se qualquer dado for alterado pelo usuário.';
-$wb['dbname_prefix_txt'] = 'Prefixo de banco de dados';
-$wb['dbuser_prefix_txt'] = 'Prefixo de usuário de banco de dados';
-$wb['shelluser_prefix_txt'] = 'Prefixo de usuário do shell';
-$wb['webdavuser_prefix_txt'] = 'Prefixo de usuário webdav';
-$wb['ftpuser_prefix_txt'] = 'Prefixo de usuário ftp';
-$wb['vhost_subdomains_txt'] = 'Adicionar subdomínios como um site';
-$wb['vhost_subdomains_note_txt'] = 'Você não pode desabilitar esta configuração enquanto existirem subdomínios vhost no sistema!';
-$wb['vhost_aliasdomains_txt'] = 'Adicionar alias de domínio como um site';
-$wb['vhost_aliasdomains_note_txt'] = 'Você não pode desabilitar esta configuração enquanto existirem alias de domínios vhost no sistema!';
-$wb['dbname_prefix_error_regex'] = 'Caractere não permitido para o prefixo de banco de dados.';
-$wb['dbuser_prefix_error_regex'] = 'Caractere não permitido para o prefixo de usuário de banco de dados.';
-$wb['ftpuser_prefix_error_regex'] = 'Caractere não permitido para o prefixo de usuário ftp.';
-$wb['shelluser_prefix_error_regex'] = 'Caractere não permitido para o prefixo de usuário do shell.';
-$wb['webdavuser_prefix_error_regex'] = 'Caractere não permitido para o prefixo de usuários webdav.';
-$wb['dblist_phpmyadmin_link_txt'] = 'Link para o phpmyadmin';
-$wb['enable_custom_login_txt'] = 'Permitir nome de usuário personalizado';
-$wb['mailboxlist_webmail_link_txt'] = 'Link para o webmail';
-$wb['mailbox_show_autoresponder_tab_txt'] = 'Exibir aba de auto-resposta nos detalhes da conta de e-mail';
-$wb['mailbox_show_mail_filter_tab_txt'] = 'Exibir aba de filtro de e-mails nos detalhes da conta de e-mail';
-$wb['mailbox_show_custom_rules_tab_txt'] = 'Exibir aba de filtros personalizados de e-mail nos detalhes da conta de e-mail';
-$wb['webmail_url_txt'] = 'URL do webmail';
-$wb['mailmailinglist_link_txt'] = 'Link para lista de e-mails na lista de e-mails';
-$wb['mailmailinglist_url_txt'] = 'URL da lista de e-mails';
-$wb['phpmyadmin_url_txt'] = 'URL do phpMyAdmin';
-$wb['use_domain_module_txt'] = 'Use o módulo de cliente para adicionar novos domínios';
-$wb['use_domain_module_hint'] = 'Se você usar este módulo, os clientes podem selecionar apenas um dos domínios que o administrador adicionar para eles. Eles não podem editar o campo domínio livremente. Você deve sair e acessar novamente após alterar este valor para que as mudanças sejam aplicadas.';
-$wb['new_domain_txt'] = 'Código HTML para criar um novo domínio';
-$wb['webftp_url_txt'] = 'URL do FTPweb';
-$wb['admin_mail_txt'] = 'Administrador(es) de e-mails';
-$wb['monitor_key_txt'] = 'Palavras reservadas a monitorar';
-$wb['admin_name_txt'] = 'Nome do administrador';
-$wb['maintenance_mode_txt'] = 'Modo manutenção';
-$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
-$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
-$wb['smtp_enabled_txt'] = 'Usar SMTP para enviar e-mails do sistema';
-$wb['smtp_host_txt'] = 'Host SMTP';
-$wb['smtp_port_txt'] = 'Porta SMTP';
-$wb['smtp_user_txt'] = 'Usuário SMTP';
-$wb['smtp_pass_txt'] = 'Senha do SMTP';
-$wb['smtp_crypt_txt'] = 'Usar conexão criptografada SSL/TLS para o SMTP';
-$wb['phpmyadmin_url_error_regex'] = 'URL do phpmyadmin é inválida.';
-$wb['use_combobox_txt'] = 'Usar combobox jQuery UI';
-$wb['use_loadindicator_txt'] = 'Usar indicador de carga';
-$wb['f5_to_reload_js_txt'] = 'Se você modificar esta configuração, talvez será necessário pressionar F5 no seu navegador para recarregar as bibliotecas do JavaScript ou esvaziar o cache.';
-$wb['client_username_web_check_disabled_txt'] = 'Desabilitar verificação da palavra reservada "web" para o nome de usuário (não recomendado!).';
-$wb['backups_include_into_web_quota_txt'] = 'Incluir arquivos de backup na cota do site.';
-$wb['webmail_url_error_regex'] = 'URL do webmail é inválida.';
-$wb['phpmyadmin_url_note_txt'] = 'Área reservada:';
-$wb['webmail_url_note_txt'] = 'Área reservada:';
-$wb['available_dashlets_note_txt'] = 'Dashlets disponíveis:';
-$wb['admin_dashlets_left_txt'] = 'Restrições de dashlets para administradores';
-$wb['admin_dashlets_right_txt'] = 'Permissões de dashlets para administradores';
-$wb['reseller_dashlets_left_txt'] = 'Restrições de dashlets para revendas';
-$wb['reseller_dashlets_right_txt'] = 'Permissões de dashlets para revendas';
-$wb['client_dashlets_left_txt'] = 'Restrições de dashlets para clientes';
-$wb['client_dashlets_right_txt'] = 'Permissões de dashlets para clientes';
-$wb['customer_no_template_txt'] = 'No. do gabarito do cliente';
-$wb['customer_no_template_error_regex_txt'] = 'O número do gabarito do cliente contém caracteres inválidos.';
-$wb['customer_no_start_txt'] = 'Valor inicial do código de cliente';
-$wb['customer_no_counter_txt'] = 'Contador do código de cliente';
-$wb['session_timeout_txt'] = 'Duração da sessão (minutos)';
-$wb['session_allow_endless_txt'] = 'Habilitar "Manter-me conectado"';
-$wb['No'] = 'Não';
-$wb['min_password_length_txt'] = 'Comprimento mínimo da senha';
-$wb['min_password_strength_txt'] = 'Dificuldade mínima da senha';
-$wb['default_mailserver_txt'] = 'Servidor de e-mails padrão';
-$wb['default_webserver_txt'] = 'Servidor web padrão';
-$wb['default_dnsserver_txt'] = 'Servidor dns padrão';
-$wb['default_slave_dnsserver_txt'] = 'Servidor dns secundário padrão';
-$wb['default_dbserver_txt'] = 'Servidor de banco de dados padrão';
-$wb['company_name_txt'] = 'Nome da empresa para título da página';
-$wb['reseller_can_use_options_txt'] = 'Revendas podem utilizar o menu sites';
-$wb['custom_login_text_txt'] = 'Texto personalizado para a página de acesso';
-$wb['custom_login_link_txt'] = 'Link personalizado para página de acesso';
-$wb['login_link_error_regex'] = 'Link personalizado para acesso inválido';
-$wb['ca_name_txt'] = 'Nome';
-$wb['ca_issue_txt'] = 'Questão';
-$wb['ca_wildcard_txt'] = 'Usar curingas';
-$wb['ca_iodef_txt'] = 'Definições de E/S';
-$wb['active_txt'] = 'Ativo';
-$wb['btn_save_txt'] = 'Salvar';
-$wb['btn_cancel_txt'] = 'Cancelar';
-$wb['web_php_options_txt'] = 'Manipulador do php (Somente apache)';
-?>
diff --git a/ca_system_config.lng b/ca_system_config.lng
deleted file mode 100644
index f721f688c5..0000000000
--- a/ca_system_config.lng
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-$wb['system_config_title'] = 'System Config';
-$wb['system_config_desc_txt'] = '';
-$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.';
-$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
-$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)';
-$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)';
-$wb['warning'] = 'Edit these values carefully! Do not remove the prefixes on a systems with more then one client.';
-$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
-$wb['tab_change_warning_txt'] = 'Tab change warning';
-$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
-$wb['dbname_prefix_txt'] = 'Database name prefix';
-$wb['dbuser_prefix_txt'] = 'Database user prefix';
-$wb['shelluser_prefix_txt'] = 'Shell user prefix';
-$wb['webdavuser_prefix_txt'] = 'Webdav user prefix';
-$wb['ftpuser_prefix_txt'] = 'FTP user prefix';
-$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
-$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
-$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
-$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
-$wb['dbname_prefix_error_regex'] = 'Char not allowed in database name prefix.';
-$wb['dbuser_prefix_error_regex'] = 'Char not allowed in database user prefix.';
-$wb['ftpuser_prefix_error_regex'] = 'Char not allowed in ftp user prefix.';
-$wb['shelluser_prefix_error_regex'] = 'Char not allowed in shell user prefix.';
-$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.';
-$wb['dblist_phpmyadmin_link_txt'] = 'Link to phpmyadmin in DB list';
-$wb['enable_custom_login_txt'] = 'Allow custom login name';
-$wb['mailboxlist_webmail_link_txt'] = 'Link to webmail in Mailbox list';
-$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details';
-$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details';
-$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details';
-$wb['webmail_url_txt'] = 'Webmail URL';
-$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list';
-$wb['mailmailinglist_url_txt'] = 'Mailing list URL';
-$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL';
-$wb['use_domain_module_txt'] = 'Use the domain limits in client module to add new domains';
-$wb['use_domain_module_hint'] = 'If you use the domain limits, your customers can only select one of the domains the admin creates for them. They cannot freely edit the domain-field. You have to re-login after changing this value, to make the changes visible.';
-$wb['new_domain_txt'] = 'HTML to create a new domain';
-$wb['webftp_url_txt'] = 'WebFTP URL';
-$wb['admin_mail_txt'] = 'Administrator\'s e-mail';
-$wb['monitor_key_txt'] = 'Monitor keyword';
-$wb['admin_name_txt'] = 'Administrator\'s name';
-$wb['maintenance_mode_txt'] = 'Maintenance Mode';
-$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
-$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
-$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
-$wb['smtp_host_txt'] = 'SMTP host';
-$wb['smtp_port_txt'] = 'SMTP port';
-$wb['smtp_user_txt'] = 'SMTP user';
-$wb['smtp_pass_txt'] = 'SMTP password';
-$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP';
-$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
-$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
-$wb['use_loadindicator_txt'] = 'Use Load Indicator';
-$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.';
-$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.';
-$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
-$wb['webmail_url_error_regex'] = 'Invalid webmail URL';
-$wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
-$wb['webmail_url_note_txt'] = 'Placeholder:';
-$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
-$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
-$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
-$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
-$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
-$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
-$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
-$wb['customer_no_template_txt'] = 'Customer No. template';
-$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters';
-$wb['customer_no_start_txt'] = 'Customer No. start value';
-$wb['customer_no_counter_txt'] = 'Customer No. counter';
-$wb['session_timeout_txt'] = 'Session timeout (minutes)';
-$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
-$wb['No'] = 'No';
-$wb['min_password_length_txt'] = 'Minimum password length';
-$wb['min_password_strength_txt'] = 'Minimum password strength';
-$wb['default_mailserver_txt'] = 'Default Mailserver';
-$wb['default_webserver_txt'] = 'Default Webserver';
-$wb['default_dnsserver_txt'] = 'Default DNS Server';
-$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
-$wb['default_dbserver_txt'] = 'Default Database Server';
-$wb['company_name_txt'] = 'Company Name for the page title';
-$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites';
-$wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
-$wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
-$wb['login_link_error_regex'] = 'Invalid Link for Custom Login';
-$wb['ca_name_txt'] = 'Name';
-$wb['ca_issue_txt'] = 'Issue';
-$wb['ca_wildcard_txt'] = 'Use Wildcard';
-$wb['ca_critical_txt'] = 'Strict Check';
-$wb['ca_iodef_txt'] = 'iodef';
-$wb['active_txt'] = 'Aktive';
-$wb['btn_save_txt'] = 'Save';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
-?>
diff --git a/cz_system_config.lng b/cz_system_config.lng
deleted file mode 100644
index 4ee62ece32..0000000000
--- a/cz_system_config.lng
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-$wb['system_config_title'] = 'System Config';
-$wb['system_config_desc_txt'] = '';
-$wb['warning'] = 'Upravujte tyto údaje opatrne! Neodstraňujte prefixy na systémech s více, než jedním klientem.';
-$wb['dbname_prefix_txt'] = 'Prefix názvu databáze';
-$wb['dbuser_prefix_txt'] = 'Prefix uživatele databáze';
-$wb['shelluser_prefix_txt'] = 'Prefix shell uživatele';
-$wb['ftpuser_prefix_txt'] = 'Prefix FTP uživatele';
-$wb['dbname_prefix_error_regex'] = 'Znak není povolen v prefixu databázovém názvu.';
-$wb['dbuser_prefix_error_regex'] = 'Znak není povolen v prefixu databázového uživatele.';
-$wb['ftpuser_prefix_error_regex'] = 'Znak není povolen v prefixu FTP uživatele.';
-$wb['shelluser_prefix_error_regex'] = 'Znak není povolen v prefixu shell uživatele.';
-$wb['dblist_phpmyadmin_link_txt'] = 'Ikonový odkaz na aplikaci PHPMyAdmin v seznamu databází';
-$wb['mailboxlist_webmail_link_txt'] = 'Ikonový odkaz na aplikaci Webmail v seznamu e-mailových schránek';
-$wb['webmail_url_txt'] = 'Webmail URL';
-$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL';
-$wb['dashboard_atom_url_admin_txt'] = 'Nástěnka - novinky načítat z URL pro: (admina)';
-$wb['dashboard_atom_url_reseller_txt'] = 'Nástěnka - novinky načítat z URL pro: (prodejce)';
-$wb['dashboard_atom_url_client_txt'] = 'Nástěnka - novinky načítat z URL pro: (klienty)';
-$wb['webdavuser_prefix_txt'] = 'Prefix webdav uživatele';
-$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.';
-$wb['use_domain_module_txt'] = 'Použijte modul-domény pro přidání nových domén';
-$wb['use_domain_module_hint'] = 'If you use this module, your customers can only select one of the domains the admin creates for them. They can not free edit the domain-field.You have to re-login after changing this value, to make the changes visible.';
-$wb['new_domain_txt'] = 'HTML vytvořit novou doménu';
-$wb['webftp_url_txt'] = 'WebFTP URL';
-$wb['admin_mail_txt'] = 'E-mail Administrátora';
-$wb['admin_name_txt'] = 'Jméno Administrátora';
-$wb['enable_custom_login_txt'] = 'Povolit vlastní přihlašovací jméno u e-mailové schránky';
-$wb['mailmailinglist_link_txt'] = 'Ikonový odkaz na aplikaci E-mailových konferencí seznamu e-mailových konferencí';
-$wb['mailmailinglist_url_txt'] = 'E-mailové konference URL';
-$wb['monitor_key_txt'] = 'Monitor keyword';
-$wb['maintenance_mode_txt'] = 'Režim údržby';
-$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
-$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
-$wb['smtp_enabled_txt'] = 'Použít (zvolit) SMTP server pro zasílání systémových mailů';
-$wb['smtp_host_txt'] = 'SMTP host';
-$wb['smtp_port_txt'] = 'SMTP port';
-$wb['smtp_user_txt'] = 'SMTP uživatel';
-$wb['smtp_pass_txt'] = 'SMTP heslo';
-$wb['smtp_crypt_txt'] = 'Použít SSL/TLS šifrované spojení pro SMTP';
-$wb['smtp_missing_admin_mail_txt'] = 'Zadejte prosím jméno Administrátora a e-mailovou adresu Administrátora, pokud chcete používat zvolený SMTP server pro zasílání systémových mailů.';
-$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
-$wb['tab_change_warning_txt'] = 'Záložka změna varování';
-$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
-$wb['vhost_subdomains_txt'] = 'Vytvořit subdomény jako webové stránky';
-$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
-$wb['phpmyadmin_url_error_regex'] = 'phpmyadmin neplatné URL';
-$wb['use_combobox_txt'] = 'Použití jQuery UI Combobox';
-$wb['use_loadindicator_txt'] = 'Použití indikátoru zatížení';
-$wb['f5_to_reload_js_txt'] = 'Pokud vypnete tuto volbu, zřejmě budete muset používat klávesu F5, aby internetový prohlížeč znovu načetl JavaScript knihovny nebo budete muset ručně vyprázdňovat mezipaměť (cache) vašeho internetového prohlížeče.';
-$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.';
-$wb['mailbox_show_autoresponder_tab_txt'] = 'Ukázat kartu automatická odpověď v podrobnostech u e-mailové schránky';
-$wb['mailbox_show_mail_filter_tab_txt'] = 'Ukázat kartu e-mailové filtry v podrobnostech u e-mailové schránky';
-$wb['mailbox_show_custom_rules_tab_txt'] = 'Ukázat kartu vlastní pravidla v podrobnostech u e-mailové schránky';
-$wb['webmail_url_error_regex'] = 'Neplatný webmail URL';
-$wb['phpmyadmin_url_note_txt'] = 'Zástupný symbol';
-$wb['webmail_url_note_txt'] = 'Zástupný symbol';
-$wb['available_dashlets_note_txt'] = 'Dostupné moduly pro nástěnku:';
-$wb['admin_dashlets_left_txt'] = 'Nástěnka - zobrazení modulů v lévé části pro: (admina)';
-$wb['admin_dashlets_right_txt'] = 'Nástěnka - zobrazení modulů v pravé části pro: (admina)';
-$wb['reseller_dashlets_left_txt'] = 'Nástěnka - zobrazení modulů v lévé části pro: (prodejce)';
-$wb['reseller_dashlets_right_txt'] = 'Nástěnka - zobrazení modulů v pravé části pro: (prodejce)';
-$wb['client_dashlets_left_txt'] = 'Nástěnka - zobrazení modulů v lévé části pro: (klienty)';
-$wb['client_dashlets_right_txt'] = 'Nástěnka - zobrazení modulů v pravé části pro: (klienty)';
-$wb['customer_no_template_txt'] = 'Zákaznické číslo - šablona';
-$wb['customer_no_template_error_regex_txt'] = 'Zákaznické číslo šablony obsahuje neplatné znaky';
-$wb['customer_no_start_txt'] = 'Zákaznické číslo - počáteční hodnota';
-$wb['customer_no_counter_txt'] = 'Zákaznické číslo -  čítač';
-$wb['session_timeout_txt'] = 'Časový limit relace (minuty)';
-$wb['session_allow_endless_txt'] = 'Povolit - zůstat přihlášen';
-$wb['No'] = 'Ne';
-$wb['min_password_length_txt'] = 'Minimální délka hesla';
-$wb['min_password_strength_txt'] = 'Minimální síla hesla';
-$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
-$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
-$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
-$wb['default_mailserver_txt'] = 'Výchozí E-mailový server';
-$wb['default_webserver_txt'] = 'Výchozí webový server';
-$wb['default_dnsserver_txt'] = 'Výchozí DNS server';
-$wb['default_slave_dnsserver_txt'] = 'Výchozí sekundární DNS server';
-$wb['default_dbserver_txt'] = 'Výchozí databázový server';
-$wb['company_name_txt'] = 'Název společnosti v panelu (listu) webového prohlížeče';
-$wb['reseller_can_use_options_txt'] = 'Distributor (prodejce) může použít kartu možností pro weby.';
-$wb['custom_login_text_txt'] = 'Vlastní text na přihlašovací stránce';
-$wb['custom_login_link_txt'] = 'Vlastní odkaz (URL) na přihlašovací stránce (vlastní text)';
-$wb['login_link_error_regex'] = 'Neplatný formát URL pro vlastní odkaz na přihlašovací stránce';
-$wb['ca_name_txt'] = 'Název vydavatele';
-$wb['ca_issue_txt'] = 'Doména vydavatele';
-$wb['ca_wildcard_txt'] = 'Použít Wildcard (*)';
-$wb['ca_critical_txt'] = 'Přísná kontrola';
-$wb['ca_iodef_txt'] = 'iodef';
-$wb['active_txt'] = 'Aktivní';
-$wb['btn_save_txt'] = 'Uložit';
-$wb['btn_cancel_txt'] = 'Zrušit';
-$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
-?>
diff --git a/de_system_config.lng b/de_system_config.lng
deleted file mode 100644
index f981cce832..0000000000
--- a/de_system_config.lng
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-$wb['system_config_title'] = 'System Config';
-$wb['system_config_desc_txt'] = 'Systemkonfiguration';
-$wb['smtp_missing_admin_mail_txt'] = 'Bitte geben Sie die Administrator E-Mail und den Namen ein, wenn Sie SMTP Versand nutzen wollen.';
-$wb['warning'] = 'Bearbeiten Sie diese Werte sorgfältig! Entfernen Sie die Präfixe nicht auf Systemen mit mehr als einem Kunden.';
-$wb['tab_change_warning_txt'] = 'Reiter Wechsel Warnung';
-$wb['tab_change_discard_txt'] = 'Verwerfe Änderungen bei Reiter Wechsel';
-$wb['tab_change_warning_note_txt'] = 'Zeigt eine Warnung an, wenn der Reiter in einem Formular gewechselt wird und Daten geändert wurden.';
-$wb['dbname_prefix_txt'] = 'Datenbank Namen Präfix';
-$wb['dbuser_prefix_txt'] = 'Datenbank Benutzer Präfix';
-$wb['shelluser_prefix_txt'] = 'Shell Benutzer Präfix';
-$wb['ftpuser_prefix_txt'] = 'FTP Benutzer Präfix';
-$wb['vhost_subdomains_txt'] = 'Subdomains als Webseite anlegen';
-$wb['vhost_subdomains_note_txt'] = 'Diese Einstellung kann nicht wieder deaktiviert werden, wenn Vhost Subdomains im System vorhanden sind!';
-$wb['vhost_aliasdomains_txt'] = 'Aliasdomains als Webseite anlegen';
-$wb['vhost_aliasdomains_note_txt'] = 'Diese Einstellung kann nicht wieder deaktiviert werden, wenn Vhost Aliasdomains im System vorhanden sind!';
-$wb['dbname_prefix_error_regex'] = 'Zeichen nicht erlaubt in Datenbank Namen Präfix.';
-$wb['dbuser_prefix_error_regex'] = 'Zeichen nicht erlaubt in Datenbank Benutzer Präfix.';
-$wb['ftpuser_prefix_error_regex'] = 'Zeichen nicht erlaubt in FTP Benutzer Präfix.';
-$wb['shelluser_prefix_error_regex'] = 'Zeichen nicht erlaubt in Shell Benutzer Präfix.';
-$wb['dblist_phpmyadmin_link_txt'] = 'Link zu phpMyAdmin in der Datenbankliste';
-$wb['mailboxlist_webmail_link_txt'] = 'Link zu Webmail in der Mailboxliste';
-$wb['webmail_url_txt'] = 'Webmail URL';
-$wb['phpmyadmin_url_txt'] = 'phpMyAdmin URL';
-$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (für Admins)';
-$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (für Reseller)';
-$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (für Kunden)';
-$wb['webdavuser_prefix_txt'] = 'WebDAV Benutzer Präfix';
-$wb['webdavuser_prefix_error_regex'] = 'Zeichen nicht zulässig im WebDAV Benutzer Präfix.';
-$wb['use_domain_module_txt'] = 'Domain Limits im Kundenmodul benutzen, um neue Domains hinzuzufügen';
-$wb['use_domain_module_hint'] = 'Falls Sie die Domain Limits benutzen, können Ihre Kunden nur eine der Domains auswählen, die der Admin für sie angelegt hat. Die Kunden können das Domain-Feld nicht frei editieren. Sie müssen sich neu einloggen, wenn Sie diesen Wert ändern.';
-$wb['new_domain_txt'] = 'HTML Text zum Anlegen einer neuen Domain';
-$wb['webftp_url_txt'] = 'WebFTP URL';
-$wb['enable_custom_login_txt'] = 'Abweichenden Login Namen erlauben';
-$wb['mailmailinglist_link_txt'] = 'Link zur Mailingliste in der Mailinglisten Ãœbersicht';
-$wb['mailmailinglist_url_txt'] = 'Mailinglisten URL';
-$wb['admin_mail_txt'] = 'Administrator E-Mail';
-$wb['monitor_key_txt'] = 'ISPConfig Monitor App Passwort';
-$wb['admin_name_txt'] = 'Name des Administrators';
-$wb['maintenance_mode_txt'] = 'Wartungsmodus';
-$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
-$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
-$wb['smtp_enabled_txt'] = 'SMTP zum System E-Mailversand nutzen';
-$wb['smtp_host_txt'] = 'SMTP Server';
-$wb['smtp_port_txt'] = 'SMTP Port';
-$wb['smtp_user_txt'] = 'SMTP Benutzer';
-$wb['smtp_pass_txt'] = 'SMTP Passwort';
-$wb['smtp_crypt_txt'] = 'SSL/TLS verschlüsselte Verbindung für SMTP';
-$wb['use_combobox_txt'] = 'jQuery UI Combobox benutzen';
-$wb['use_loadindicator_txt'] = 'Laden Grafik anzeigen';
-$wb['f5_to_reload_js_txt'] = 'Wenn Sie den Wert ändern, müssen Sie F5 drücken, damit der Browser die JavaScript Bibliotheken neu lädt, oder Ihren Browser Cache leeren.';
-$wb['phpmyadmin_url_error_regex'] = 'Falsche phpMyAdmin URL';
-$wb['client_username_web_check_disabled_txt'] = 'Deaktiviere die Kunden Benutzernamen Überprüfung für den Begriff <b>web<b>.';
-$wb['backups_include_into_web_quota_txt'] = 'Backups in Web Quota hinzuzählen.';
-$wb['mailbox_show_autoresponder_tab_txt'] = 'Zeige Autoresponder Reiter in E-Mail Kontodetails';
-$wb['mailbox_show_mail_filter_tab_txt'] = 'Zeige E-Mail Filter Reiter in E-Mail Kontodetails';
-$wb['mailbox_show_custom_rules_tab_txt'] = 'Zeige Benutzerregel Reiter in E-Mail Kontodetails';
-$wb['webmail_url_error_regex'] = 'Falsche Webmail URL';
-$wb['reseller_can_use_options_txt'] = 'Reseller können den Optionen Reiter bei Webseiten verwenden';
-$wb['phpmyadmin_url_note_txt'] = 'Platzhalter:';
-$wb['webmail_url_note_txt'] = 'Platzhalter:';
-$wb['available_dashlets_note_txt'] = 'Verfügbare Dashlets:';
-$wb['admin_dashlets_left_txt'] = 'Admin-Dashlets links';
-$wb['admin_dashlets_right_txt'] = 'Admin-Dashlets rechts';
-$wb['reseller_dashlets_left_txt'] = 'Reseller-Dashlets links';
-$wb['reseller_dashlets_right_txt'] = 'Reseller-Dashlets rechts';
-$wb['client_dashlets_left_txt'] = 'Kunden-Dashlets links';
-$wb['client_dashlets_right_txt'] = 'Kunden-Dashlets rechts';
-$wb['customer_no_template_txt'] = 'Kundennummer-Vorlage';
-$wb['customer_no_template_error_regex_txt'] = 'Die Kundennummer-Vorlage enthält ungültige Zeichen';
-$wb['customer_no_start_txt'] = 'Kundennummer Startwert';
-$wb['customer_no_counter_txt'] = 'Kundennummer Zähler';
-$wb['session_timeout_txt'] = 'Session-Timeout (Minuten)';
-$wb['session_allow_endless_txt'] = '&quot;Eingeloggt bleiben&quot; aktivieren';
-$wb['No'] = 'Nein';
-$wb['min_password_length_txt'] = 'Minimale Passwortlänge';
-$wb['min_password_strength_txt'] = 'Minimale Passwortstärke';
-$wb['company_name_txt'] = 'Firmenname fuer den Seitentitel';
-$wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
-$wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
-$wb['login_link_error_regex'] = 'Invalid Link for Custom Login';
-$wb['default_mailserver_txt'] = 'Default Mailserver';
-$wb['default_webserver_txt'] = 'Default Webserver';
-$wb['default_dnsserver_txt'] = 'Default DNS Server';
-$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
-$wb['default_dbserver_txt'] = 'Default Database Server';
-$wb['ca_name_txt'] = 'Name';
-$wb['ca_issue_txt'] = 'Issue';
-$wb['ca_wildcard_txt'] = 'Wildcard verwenden';
-$wb['ca_critical_txt'] = 'Strikte Überprüfung';
-$wb['ca_iodef_txt'] = 'iodef';
-$wb['active_txt'] = 'Aktiv';
-$wb['btn_save_txt'] = 'Speichern';
-$wb['btn_cancel_txt'] = 'Abbrechen';
-$wb['web_php_options_txt'] = 'PHP Handler (Nur Apache)';
-?>
diff --git a/dk_system_config.lng b/dk_system_config.lng
deleted file mode 100644
index 5f298f091a..0000000000
--- a/dk_system_config.lng
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-$wb['system_config_title'] = 'System Config';
-$wb['system_config_desc_txt'] = '';
-$wb['smtp_missing_admin_mail_txt'] = 'Indtast venligst admin navn og admin mail adresse, hvis du vil bruge smtp mail afsendelse.';
-$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
-$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (forhandler)';
-$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (klient)';
-$wb['warning'] = 'Rediger disse værdier forsigtigt! Fjern ikke præfikser på et system med mere end én klient.';
-$wb['tab_change_discard_txt'] = 'Kassér ændringer på fanen forandring';
-$wb['tab_change_warning_txt'] = 'Fane ændrings advarsel';
-$wb['tab_change_warning_note_txt'] = 'Vis en advarsel på fanen ændring i redigere formularer, hvis nogen data er blevet ændret af brugeren.';
-$wb['dbname_prefix_txt'] = 'Database navn prefix';
-$wb['dbuser_prefix_txt'] = 'Database bruger prefix';
-$wb['shelluser_prefix_txt'] = 'Shell bruger prefix';
-$wb['webdavuser_prefix_txt'] = 'Webdav bruger prefix';
-$wb['ftpuser_prefix_txt'] = 'FTP bruger prefix';
-$wb['vhost_subdomains_txt'] = 'Opret Sub-domæne som web side';
-$wb['vhost_subdomains_note_txt'] = 'Du kan ikke deaktivere dette, så længe der findes vhost sub-domæner i systemet!';
-$wb['dbname_prefix_error_regex'] = 'Char ikke tilladt i database name prefix.';
-$wb['dbuser_prefix_error_regex'] = 'Char ikke tilladt i database bruger prefix.';
-$wb['ftpuser_prefix_error_regex'] = 'Char ikke tilladt i ftp bruger prefix.';
-$wb['shelluser_prefix_error_regex'] = 'Char ikke tilladt i shell bruger prefix.';
-$wb['webdavuser_prefix_error_regex'] = 'Char ikke tilladt i webdav bruger prefix.';
-$wb['dblist_phpmyadmin_link_txt'] = 'Link til phpmyadmin i DB liste';
-$wb['enable_custom_login_txt'] = 'Tillad brugerdefinerede login-navn';
-$wb['mailboxlist_webmail_link_txt'] = 'Link til webmail i Postboks liste';
-$wb['webmail_url_txt'] = 'Webmail URL';
-$wb['mailmailinglist_link_txt'] = 'Link til mailing list i Mailing list liste';
-$wb['mailmailinglist_url_txt'] = 'Mail-list URL';
-$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL';
-$wb['use_domain_module_txt'] = 'Brug domæne grænser i klient-modul for at tilføje nye domæner';
-$wb['use_domain_module_hint'] = 'Hvis du bruger domæne grænser, kan dine kunder kun vælge et af de områder admin skabte for dem. De kan ikke frit redigere domæne-feltet. Du er nødt til at re-login efter at ændre denne værdi, for at gøre ændringerne synlige.';
-$wb['new_domain_txt'] = 'HTML for at oprette et nyt domæne';
-$wb['webftp_url_txt'] = 'WebFTP URL';
-$wb['admin_mail_txt'] = 'Administratorer e-mail';
-$wb['monitor_key_txt'] = 'Monitor nøgleord';
-$wb['admin_name_txt'] = 'Administratorer navn';
-$wb['maintenance_mode_txt'] = 'Vedligeholdelsestilstand';
-$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
-$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
-$wb['smtp_enabled_txt'] = 'Brug SMTP for at sende system mails';
-$wb['smtp_host_txt'] = 'SMTP host';
-$wb['smtp_port_txt'] = 'SMTP port';
-$wb['smtp_user_txt'] = 'SMTP bruger';
-$wb['smtp_pass_txt'] = 'SMTP adgangskode';
-$wb['smtp_crypt_txt'] = 'Brug SSL/TLS krypteret forbindelse for SMTP';
-$wb['phpmyadmin_url_error_regex'] = 'Ugyldigt phpmyadmin URL';
-$wb['use_combobox_txt'] = 'Brug jQuery UI Combobox';
-$wb['use_loadindicator_txt'] = 'Brug Load Indicator';
-$wb['f5_to_reload_js_txt'] = 'Hvis du ændrer dette, kan du blive nødt til at trykke på F5 for at browseren genindlæser JavaScript-biblioteker eller tømme browserens cache.';
-$wb['client_username_web_check_disabled_txt'] = 'Deaktiver klient-brugernavns check for ordet \'web\'.';
-$wb['mailbox_show_autoresponder_tab_txt'] = 'Vis autoresponder tab i mail kontooplysninger';
-$wb['mailbox_show_mail_filter_tab_txt'] = 'Vis mail filter tab i mail kontooplysninger';
-$wb['mailbox_show_custom_rules_tab_txt'] = 'Vis custom mailfilter tab i mail kontooplysninger';
-$wb['webmail_url_error_regex'] = 'Ugyldigt webmail URL';
-$wb['phpmyadmin_url_note_txt'] = 'Pladsholder:';
-$wb['webmail_url_note_txt'] = 'Pladsholder:';
-$wb['available_dashlets_note_txt'] = 'Tilgængelig Dashlets:';
-$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
-$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
-$wb['reseller_dashlets_left_txt'] = 'Left Forhandler Dashlets';
-$wb['reseller_dashlets_right_txt'] = 'Right Forhandler Dashlets';
-$wb['client_dashlets_left_txt'] = 'Left Kunde Dashlets';
-$wb['client_dashlets_right_txt'] = 'Right Kunde Dashlets';
-$wb['customer_no_template_txt'] = 'Kunde Nr. skabelon';
-$wb['customer_no_template_error_regex_txt'] = 'Kunde Nr. skabelon indeholder ugyldigt karaktere';
-$wb['customer_no_start_txt'] = 'Kunde Nr. start værdi';
-$wb['customer_no_counter_txt'] = 'Kunde Nr. tæller';
-$wb['session_timeout_txt'] = 'Session timeout (minutter)';
-$wb['session_allow_endless_txt'] = 'Aktiver \\"forbliv logget ind\\"';
-$wb['No'] = 'No';
-$wb['min_password_length_txt'] = 'Minimum adgangskode længde';
-$wb['min_password_strength_txt'] = 'Minimum adgangskode styrke';
-$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
-$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
-$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
-$wb['default_mailserver_txt'] = 'Default Mailserver';
-$wb['default_webserver_txt'] = 'Default Webserver';
-$wb['default_dnsserver_txt'] = 'Default DNS Server';
-$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
-$wb['default_dbserver_txt'] = 'Default Database Server';
-$wb['company_name_txt'] = 'Company Name for the page title';
-$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites';
-$wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
-$wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
-$wb['login_link_error_regex'] = 'Invalid Link for Custom Login';
-$wb['ca_name_txt'] = 'Name';
-$wb['ca_issue_txt'] = 'Issue';
-$wb['ca_wildcard_txt'] = 'Use Wildcard';
-$wb['ca_critical_txt'] = 'Strict Check';
-$wb['ca_iodef_txt'] = 'iodef';
-$wb['active_txt'] = 'Aktive';
-$wb['btn_save_txt'] = 'Save';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
-?>
diff --git a/el_system_config.lng b/el_system_config.lng
deleted file mode 100644
index 17414e666d..0000000000
--- a/el_system_config.lng
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-$wb['system_config_title'] = 'System Config';
-$wb['system_config_desc_txt'] = '';
-$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
-$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)';
-$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)';
-$wb['warning'] = 'Επεξεργαστείτε τις τιμές με προσοχή! ΜΗΝ αφαιρείτε τα προθέματα σε συστήματα με περισσότερους από έναν πελάτες.';
-$wb['dbname_prefix_txt'] = 'Πρόθεμα Ονόματος Βάσης Δεδομένων';
-$wb['dbuser_prefix_txt'] = 'Πρόθεμα Χρήστη Βάσης Δεδομένων';
-$wb['shelluser_prefix_txt'] = 'Πρόθεμα Χρήστη Shell';
-$wb['webdavuser_prefix_txt'] = 'Πρόθεμα Χρήστη Webdav';
-$wb['ftpuser_prefix_txt'] = 'Πρόθεμα Χρήστη FTP';
-$wb['dbname_prefix_error_regex'] = 'Δεν επιτρέπονται χαρακτήρες στο πρόθεμα του Ονόματος της Βάσης Δεδομένων.';
-$wb['dbuser_prefix_error_regex'] = 'Δεν επιτρέπονται χαρακτήρες στο πρόθεμα του Χρήστη της Βάσης Δεδομένων.';
-$wb['ftpuser_prefix_error_regex'] = 'Δεν επιτρέπονται χαρακτήρες στο πρόθεμα του Χρήστη ftp.';
-$wb['shelluser_prefix_error_regex'] = 'Δεν επιτρέπονται χαρακτήρες στο πρόθεμα του Χρήστη Shell.';
-$wb['webdavuser_prefix_error_regex'] = 'Δεν επιτρέπονται χαρακτήρες στο πρόθεμα του Χρήστη Webdav.';
-$wb['dblist_phpmyadmin_link_txt'] = 'Link για το phpmyadmin στη λίστα των βάσεων δεδομένων';
-$wb['mailboxlist_webmail_link_txt'] = 'Link για το webmail στην λίστα των θυρίδων mail';
-$wb['webmail_url_txt'] = 'URL του Webmail';
-$wb['phpmyadmin_url_txt'] = 'URL του PHPMyAdmin';
-$wb['use_domain_module_txt'] = 'Χρήση του αρθρώματος-domain για την προσθήκη νέων domains';
-$wb['use_domain_module_hint'] = 'Αν χρησιμοποιήσετε αυτό το άρθρωμα, οι πελάτες σας μπορούν μόνο να διαλέξουν ένα από τα domains που δημιούργησε για αυτούς ο διαχειριστής. Δεν μπορούν να επεξεργαστούν ελεύθερα τα πεδία του domain.Πρέπει να επανασυνδεθείτε αν αλλάξετε αυτή την τιμή, για να γίνουν οι αλλαγές σας, ορατές.';
-$wb['new_domain_txt'] = 'HTML για την δημιουργία domain';
-$wb['webftp_url_txt'] = 'URL του WebFTP';
-$wb['enable_custom_login_txt'] = 'Αποδοχή  προσαρμοσμένου ονόματος login';
-$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list';
-$wb['mailmailinglist_url_txt'] = 'URL της Mailing list ';
-$wb['admin_mail_txt'] = 'e-mail Διαχειριστών';
-$wb['monitor_key_txt'] = 'Monitor keyword';
-$wb['admin_name_txt'] = 'Όνομα Administrator';
-$wb['maintenance_mode_txt'] = 'Maintenance Mode';
-$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
-$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
-$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
-$wb['smtp_host_txt'] = 'SMTP host';
-$wb['smtp_port_txt'] = 'SMTP θύρα';
-$wb['smtp_user_txt'] = 'SMTP χρήστης';
-$wb['smtp_pass_txt'] = 'SMTP συνθηματικό';
-$wb['smtp_crypt_txt'] = 'Χρήση κρυπτογραφημένης σύνδεσης SSL/TLS για SMTP';
-$wb['smtp_missing_admin_mail_txt'] = 'ΠΑρακαλούμε εισάγετε το όνομα διαχειριστή και την διεύθυνση mail αν θέλετε να χρησιμοποιήσετε απόστολή mail με smtp.';
-$wb['tab_change_discard_txt'] = 'Ακύρωση αλλαγών με την αλλαγή καρτέλας';
-$wb['tab_change_warning_txt'] = 'Προειδοποίηση αλλαγής καρτέλας';
-$wb['tab_change_warning_note_txt'] = 'Εμφάνιση μιας προειδοποίησης κατα την αλλαγή καρτέλας σε φόρμες επεξεργασίας που έχουν τροποποιηθεί από τον χρήστη.';
-$wb['vhost_subdomains_txt'] = 'Δημιουργία Subdomains ως web site';
-$wb['vhost_subdomains_note_txt'] = 'Δεν μπορεί να γίνει απενεργοποίηση όσο υπάρχουν vhost subdomains στο σύστημα!';
-$wb['vhost_aliasdomains_txt'] = 'Δημιουργία aliasdomains ως web site';
-$wb['vhost_aliasdomains_note_txt'] = 'Δεν μπορεί να γίνει απενεργοποίηση όσο υπάρχουν vhost aliasdomains στο σύστημα!';
-$wb['phpmyadmin_url_error_regex'] = 'Μη έγκυρο URL phpmyadmin';
-$wb['use_combobox_txt'] = 'Χρήση jQuery UI Combobox';
-$wb['use_loadindicator_txt'] = 'Χρήση Load Indicator (ενδεικτή φόρτωσης)';
-$wb['f5_to_reload_js_txt'] = 'Αν το αλλάξετε, ίσως πρέπει να πατήσετε το F5 για να κάνετε τον φυλλομετρητη να ξαναφορτώσει τις βιβλιοθήκες JavaScript ή να αδείασετε την cache του φυλλομετρητή.';
-$wb['client_username_web_check_disabled_txt'] = 'Απενεργοποίηση ελέγχου στο όνομα χρήστη για την λέξη \'web\'.';
-$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
-$wb['mailbox_show_autoresponder_tab_txt'] = 'Εμφάνιση της καρτέλας Αυτόματης Απάντησης στις λεπτομέρειες του λογαριασμού mail';
-$wb['mailbox_show_mail_filter_tab_txt'] = 'Εμφάνιση της καρτέλας Φίλτρα mail στις λεπτομέρειες του λογαριασμού mail';
-$wb['mailbox_show_custom_rules_tab_txt'] = 'Εμφάνιση της καρτέλας Προσαρμοσμένοι Κανόνες στις λεπτομέρειες του λογαριασμού mail';
-$wb['webmail_url_error_regex'] = 'Invalid webmail URL';
-$wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
-$wb['webmail_url_note_txt'] = 'Placeholder:';
-$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
-$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
-$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
-$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
-$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
-$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
-$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
-$wb['customer_no_template_txt'] = 'Customer No. template';
-$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters';
-$wb['customer_no_start_txt'] = 'Customer No. start value';
-$wb['customer_no_counter_txt'] = 'Customer No. counter';
-$wb['session_timeout_txt'] = 'Session timeout (minutes)';
-$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
-$wb['No'] = 'No';
-$wb['min_password_length_txt'] = 'Minimum password length';
-$wb['min_password_strength_txt'] = 'Minimum password strength';
-$wb['company_name_txt'] = 'Company Name for the page title';
-$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites';
-$wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
-$wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
-$wb['login_link_error_regex'] = 'Invalid Link for Custom Login';
-$wb['default_mailserver_txt'] = 'Default Mailserver';
-$wb['default_webserver_txt'] = 'Default Webserver';
-$wb['default_dnsserver_txt'] = 'Default DNS Server';
-$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
-$wb['default_dbserver_txt'] = 'Default Database Server';
-$wb['ca_name_txt'] = 'Name';
-$wb['ca_issue_txt'] = 'Issue';
-$wb['ca_wildcard_txt'] = 'Use Wildcard';
-$wb['ca_critical_txt'] = 'Strict Check';
-$wb['ca_iodef_txt'] = 'iodef';
-$wb['active_txt'] = 'Aktive';
-$wb['btn_save_txt'] = 'Save';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
-?>
diff --git a/en_system_config.lng b/en_system_config.lng
deleted file mode 100644
index 840b3f434b..0000000000
--- a/en_system_config.lng
+++ /dev/null
@@ -1,99 +0,0 @@
-<?php
-$wb['system_config_title'] = 'System Config';
-$wb['system_config_desc_txt'] = '';
-$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.';
-$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
-$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)';
-$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)';
-$wb["warning"] = 'Edit these values carefully! Do not remove the prefixes on a systems with more then one client.';
-$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
-$wb['tab_change_warning_txt'] = 'Tab change warning';
-$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
-$wb["dbname_prefix_txt"] = 'Database name prefix';
-$wb["dbuser_prefix_txt"] = 'Database user prefix';
-$wb["shelluser_prefix_txt"] = 'Shell user prefix';
-$wb["webdavuser_prefix_txt"] = 'Webdav user prefix';
-$wb["ftpuser_prefix_txt"] = 'FTP user prefix';
-$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
-$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
-$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
-$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
-$wb["dbname_prefix_error_regex"] = 'Char not allowed in database name prefix.';
-$wb["dbuser_prefix_error_regex"] = 'Char not allowed in database user prefix.';
-$wb["ftpuser_prefix_error_regex"] = 'Char not allowed in ftp user prefix.';
-$wb["shelluser_prefix_error_regex"] = 'Char not allowed in shell user prefix.';
-$wb["webdavuser_prefix_error_regex"] = 'Char not allowed in webdav user prefix.';
-$wb["dblist_phpmyadmin_link_txt"] = 'Link to phpmyadmin in DB list';
-$wb['enable_custom_login_txt'] = 'Allow custom login name';
-$wb["mailboxlist_webmail_link_txt"] = 'Link to webmail in Mailbox list';
-$wb['mailbox_show_autoresponder_tab_txt'] = 'Show Autoresponder tab in Mailbox detail';
-$wb['mailbox_show_mail_filter_tab_txt'] = 'Show Mail Filter tab in Mailbox detail';
-$wb['mailbox_show_custom_rules_tab_txt'] = 'Show Custom Rules tab in Mailbox detail';
-$wb["webmail_url_txt"] = 'Webmail URL';
-$wb["mailmailinglist_link_txt"] = 'Link to mailing list in Mailing list list';
-$wb["mailmailinglist_url_txt"] = 'Mailing list URL';
-$wb["phpmyadmin_url_txt"] = 'PHPMyAdmin URL';
-$wb["use_domain_module_txt"] = 'Use the domain limits in client module to add new domains';
-$wb["use_domain_module_hint"] = 'If you use the domain limits, your customers can only select one of the domains the admin creates for them. They cannot freely edit the domain-field. You have to re-login after changing this value, to make the changes visible.';
-$wb["new_domain_txt"] = 'HTML to create a new domain';
-$wb["webftp_url_txt"] = 'WebFTP URL';
-$wb['admin_mail_txt'] = 'Administrator\'s e-mail';
-$wb["monitor_key_txt"] = 'Monitor keyword';
-$wb['admin_name_txt'] = 'Administrator\'s name';
-$wb['maintenance_mode_txt'] = 'Maintenance Mode';
-$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
-$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
-$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
-$wb['smtp_host_txt'] = 'SMTP host';
-$wb['smtp_port_txt'] = 'SMTP port';
-$wb['smtp_user_txt'] = 'SMTP user';
-$wb['smtp_pass_txt'] = 'SMTP password';
-$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP';
-$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
-$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
-$wb['use_loadindicator_txt'] = 'Use Load Indicator';
-$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.';
-$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.';
-$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
-$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details';
-$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details';
-$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details';
-$wb['webmail_url_error_regex'] = 'Invalid webmail URL';
-$wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
-$wb['webmail_url_note_txt'] = 'Placeholder:';
-$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
-$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
-$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
-$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
-$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
-$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
-$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
-$wb['customer_no_template_txt'] = 'Customer No. template';
-$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters';
-$wb['customer_no_start_txt'] = 'Customer No. start value';
-$wb['customer_no_counter_txt'] = 'Customer No. counter';
-$wb['session_timeout_txt'] = 'Session timeout (minutes)';
-$wb['session_allow_endless_txt'] = 'Enable "stay logged in"';
-$wb['No'] = 'No';
-$wb['min_password_length_txt'] = 'Minimum password length';
-$wb['min_password_strength_txt'] = 'Minimum password strength';
-$wb["default_mailserver_txt"] = 'Default Mailserver';
-$wb["default_webserver_txt"] = 'Default Webserver';
-$wb["default_dnsserver_txt"] = 'Default DNS Server';
-$wb["default_slave_dnsserver_txt"] = 'Default Secondary DNS Server';
-$wb["default_dbserver_txt"] = 'Default Database Server';
-$wb["company_name_txt"] = "Company Name for the page title";
-$wb["reseller_can_use_options_txt"] = "Reseller can use the option-tab for websites";
-$wb["custom_login_text_txt"] = "Custom Text on Login-Page";
-$wb["custom_login_link_txt"] = "Custom Link on Login-Page";
-$wb["login_link_error_regex"] = "Invalid Link for Custom Login";
-$wb['ca_name_txt'] = 'Name';
-$wb['ca_issue_txt'] = 'Issue';
-$wb['ca_wildcard_txt'] = 'Use Wildcard';
-$wb['ca_critical_txt'] = 'Strict Check'; //For future use.  At this time, CA’s do not recognize any other flag values as described in RFC 6844
-$wb['ca_iodef_txt'] = 'iodef';
-$wb['active_txt'] = 'Active';
-$wb['btn_save_txt'] = 'Save';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
-?>
diff --git a/es_system_config.lng b/es_system_config.lng
deleted file mode 100644
index 7c4525da9a..0000000000
--- a/es_system_config.lng
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-$wb['system_config_title'] = 'System Config';
-$wb['admin_dashlets_left_txt'] = 'Componentes del administrador a la izquierda';
-$wb['admin_dashlets_right_txt'] = 'Componentes del administrador a la derecha';
-$wb['admin_mail_txt'] = 'Correo del administrador';
-$wb['admin_name_txt'] = 'Nombre del administrador';
-$wb['available_dashlets_note_txt'] = 'Componentes disponibles:';
-$wb['backups_include_into_web_quota_txt'] = 'Incluir archivos de copia de seguridad en la cuota web.';
-$wb['client_dashlets_left_txt'] = 'Componentes del cliente a la izquierda';
-$wb['client_dashlets_right_txt'] = 'Componentes del cliente a la derecha';
-$wb['client_username_web_check_disabled_txt'] = 'Desactivar la comprobación de la palabra \\"web\\" en los nombres de clientes.';
-$wb['company_name_txt'] = 'Nombre de la compañía para el título de la página';
-$wb['custom_login_link_txt'] = 'Enlace personalizado para la página de Inicio de Sesión';
-$wb['custom_login_text_txt'] = 'Texto personalizado para la página de Inicio de Sesión';
-$wb['customer_no_counter_txt'] = 'Contador de Nº. cliente';
-$wb['customer_no_start_txt'] = 'Valor de inicio de Nº. de cliente';
-$wb['customer_no_template_error_regex_txt'] = 'La plantilla Nº. de cliente contiene caracteres inválidos';
-$wb['customer_no_template_txt'] = 'Plantilla de Nº. de cliente';
-$wb['dashboard_atom_url_admin_txt'] = 'URL del feed atom en el panel (admin)';
-$wb['dashboard_atom_url_client_txt'] = 'URL del feed atom en el panel (cliente)';
-$wb['dashboard_atom_url_reseller_txt'] = 'URL del feed atom en el panel (revendedor)';
-$wb['dblist_phpmyadmin_link_txt'] = 'Vínculo a phpMyAdmin en la lista de bases de datos';
-$wb['dbname_prefix_error_regex'] = 'Carácter no permitido en el prefijo de nombre de base de datos.';
-$wb['dbname_prefix_txt'] = 'Prefijo del nombre de la base de datos';
-$wb['dbuser_prefix_error_regex'] = 'Carácter no permitido en el nombre del usuario de la base datos.';
-$wb['dbuser_prefix_txt'] = 'Prefijo del usuario de la base de datos';
-$wb['default_dbserver_txt'] = 'Servidor de bases de datos por defecto';
-$wb['default_dnsserver_txt'] = 'Servidor DNS por defecto';
-$wb['default_mailserver_txt'] = 'Servidor de correo por defecto';
-$wb['default_slave_dnsserver_txt'] = 'Servidor DNS secundario por defecto';
-$wb['default_webserver_txt'] = 'Servidor web por defecto';
-$wb['enable_custom_login_txt'] = 'Permitir nombre de inicio de sesión personalizado';
-$wb['f5_to_reload_js_txt'] = 'Si modifica esto, deberá pulsar F5 para que el explorador cargue las librerías JavaScript o incluso necesitará borrar la caché de su explorador.';
-$wb['ftpuser_prefix_error_regex'] = 'Carácter no permitido en el prefijo de usuario de FTP.';
-$wb['ftpuser_prefix_txt'] = 'Prefijo del usuario de FTP';
-$wb['login_link_error_regex'] = 'Enlace incorrecto para el inicio de sesión personalizado';
-$wb['mailbox_show_autoresponder_tab_txt'] = 'Mostrar la pestaña del auto-respondedor en los detalles de la cuenta de correo';
-$wb['mailbox_show_custom_rules_tab_txt'] = 'Mostrar la pestaña filtro de correo personalizado en los detalles de la cuenta de correo';
-$wb['mailbox_show_mail_filter_tab_txt'] = 'Mostrar la pestaña filtro de correo en los detalles de la cuenta de correo';
-$wb['mailboxlist_webmail_link_txt'] = 'Vinculo a correo web en la lista de buzones de correo';
-$wb['mailmailinglist_link_txt'] = 'Vínculo a la lista de correos en la lista de la Lista de correos';
-$wb['mailmailinglist_url_txt'] = 'URL a la lista de correos';
-$wb['maintenance_mode_txt'] = 'Modo de mantenimiento';
-$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
-$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
-$wb['min_password_length_txt'] = 'Longitud mínima de la contraseña';
-$wb['min_password_strength_txt'] = 'Fortaleza mínima de la contraseña';
-$wb['monitor_key_txt'] = 'Palabra clave del Monitor';
-$wb['new_domain_txt'] = 'HTML para la creación de nuevos dominios';
-$wb['No'] = 'No';
-$wb['phpmyadmin_url_error_regex'] = 'URL inválida a phpMyAdmin';
-$wb['phpmyadmin_url_note_txt'] = 'Marcador de posición:';
-$wb['phpmyadmin_url_txt'] = 'Enlace a phpMyAdmin';
-$wb['reseller_can_use_options_txt'] = 'El revendedor puede utilizar la pestaña opciones para los sitios webs';
-$wb['reseller_dashlets_left_txt'] = 'Componentes de revendedores a la izquierda';
-$wb['reseller_dashlets_right_txt'] = 'Componentes de revendedores a la derecha';
-$wb['session_allow_endless_txt'] = 'Habilitar \\"mantenerme conectado\\"';
-$wb['session_timeout_txt'] = 'Tiempo límite de sesión (minutos)';
-$wb['shelluser_prefix_error_regex'] = 'Carácter no permitido en el prefijo de usuario del shell.';
-$wb['shelluser_prefix_txt'] = 'Prefijo del usuario del Shell';
-$wb['smtp_crypt_txt'] = 'Usar conexión encriptada SSL/TLS para el SMTP';
-$wb['smtp_enabled_txt'] = 'Usar SMTP para enviar correos del sistema';
-$wb['smtp_host_txt'] = 'Host del SMTP';
-$wb['smtp_missing_admin_mail_txt'] = 'Por favor ingrese el nombre y correo del admin si desea usar el envío de correo mediante SMTP.';
-$wb['smtp_pass_txt'] = 'Contraseña del SMTP';
-$wb['smtp_port_txt'] = 'Puerto del SMTP';
-$wb['smtp_user_txt'] = 'Usuario del SMTP';
-$wb['system_config_desc_txt'] = '';
-$wb['tab_change_discard_txt'] = 'Descartar cambios al cambiar de pestaña';
-$wb['tab_change_warning_note_txt'] = 'Mostrar advertencia al cambiar de pestaña en los formularios de edición si se ha cambiado algún parámetro.';
-$wb['tab_change_warning_txt'] = 'Advertencia al cambiar de pestaña';
-$wb['use_combobox_txt'] = 'Usar lista desplegable de jQuery UI';
-$wb['use_domain_module_hint'] = 'Si utiliza los límites de dominio, sus clientes solo podrán seleccionar los dominios que el administrador haya creado para ellos. Los clientes no podrán editar libremente en campo de dominio. Necesitará reiniciar la sesión después de modificar esta opción para que que los cambios surjan efecto.';
-$wb['use_domain_module_txt'] = 'Usar los límites de dominio en el modulo del cliente para agregar nuevos dominios';
-$wb['use_loadindicator_txt'] = 'Usar indicador de carga';
-$wb['vhost_aliasdomains_note_txt'] = 'No puede deshabilitar esto mientras existan host virtuales de alias de dominios en el sistema';
-$wb['vhost_aliasdomains_txt'] = 'Crear alias de dominios como sitios web';
-$wb['vhost_subdomains_note_txt'] = '¡No se puede desactivar esta opción mientras existan sub-dominios con host virtuales en el sistema!';
-$wb['vhost_subdomains_txt'] = 'Crear sub-dominio como sitio web';
-$wb['warning'] = '¡Edite estos valores cuidadosamente! No elimine los prefijos si el sistema contiene más de un cliente.';
-$wb['webdavuser_prefix_error_regex'] = 'Carácter no permitido en el prefijo del usuario de webdav.';
-$wb['webdavuser_prefix_txt'] = 'Prefijo del usuario de Webdav';
-$wb['webftp_url_txt'] = 'Enlace al cliente FTP por web';
-$wb['webmail_url_error_regex'] = 'Dirección del correo web inválida';
-$wb['webmail_url_note_txt'] = 'Marcador de posición:';
-$wb['webmail_url_txt'] = 'URL de correo web';
-$wb['ca_name_txt'] = 'Name';
-$wb['ca_issue_txt'] = 'Issue';
-$wb['ca_wildcard_txt'] = 'Use Wildcard';
-$wb['ca_critical_txt'] = 'Strict Check';
-$wb['ca_iodef_txt'] = 'iodef';
-$wb['active_txt'] = 'Aktive';
-$wb['btn_save_txt'] = 'Save';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
-?>
diff --git a/fi_system_config.lng b/fi_system_config.lng
deleted file mode 100644
index 2cafa6f5bf..0000000000
--- a/fi_system_config.lng
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-$wb['system_config_title'] = 'System Config';
-$wb['system_config_desc_txt'] = '';
-$wb['warning'] = 'Muokkaa näitä arvoja varoen! Älä poista etuliitteitä jos järjestelmässä on enemmän kuin yksi asiakas.';
-$wb['dbname_prefix_txt'] = 'Tietokannan nimen etuliite';
-$wb['dbuser_prefix_txt'] = 'Tietokannan käyttäjätunnuksen etuliite';
-$wb['shelluser_prefix_txt'] = 'Shell-käyttäjätunnuksen etuliite';
-$wb['ftpuser_prefix_txt'] = 'FTP-käyttäjätunnuksen etuliite';
-$wb['dbname_prefix_error_regex'] = 'Tietokannan nimen etuliite on vääränlainen.';
-$wb['dbuser_prefix_error_regex'] = 'Tietokannan käyttäjätunnuksen etuliite on vääränlainen.';
-$wb['ftpuser_prefix_error_regex'] = 'FTP-käyttäjätunnuksen etuliite on vääränlainen.';
-$wb['shelluser_prefix_error_regex'] = 'Shell-käyttäjätunnuksen etuliite on vääränlainen.';
-$wb['dblist_phpmyadmin_link_txt'] = 'Linkki phpMyAdminiin tietokantalistassa';
-$wb['mailboxlist_webmail_link_txt'] = 'Linkki internetpostiin postilaatikkolistassa';
-$wb['webmail_url_txt'] = 'Webmail-osoite';
-$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin-osoite';
-$wb['use_domain_module_txt'] = 'Use the domain-module to add new domains';
-$wb['use_domain_module_hint'] = 'If you use this module, your customers can only select one of the domains the admin creates for them. They can not free edit the domain-field.You have to re-login after changing this value, to make the changes visible.';
-$wb['new_domain_txt'] = 'HTML to create a new domain';
-$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
-$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)';
-$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)';
-$wb['webdavuser_prefix_txt'] = 'Webdav user prefix';
-$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.';
-$wb['webftp_url_txt'] = 'WebFTP URL';
-$wb['enable_custom_login_txt'] = 'Allow custom login name';
-$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list';
-$wb['mailmailinglist_url_txt'] = 'Mailing list URL';
-$wb['admin_mail_txt'] = 'Administrators e-mail';
-$wb['monitor_key_txt'] = 'Monitor keyword';
-$wb['admin_name_txt'] = 'Administrators name';
-$wb['maintenance_mode_txt'] = 'Maintenance Mode';
-$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
-$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
-$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
-$wb['smtp_host_txt'] = 'SMTP host';
-$wb['smtp_port_txt'] = 'SMTP port';
-$wb['smtp_user_txt'] = 'SMTP user';
-$wb['smtp_pass_txt'] = 'SMTP password';
-$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP';
-$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.';
-$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
-$wb['tab_change_warning_txt'] = 'Tab change warning';
-$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
-$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
-$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
-$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
-$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
-$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
-$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
-$wb['use_loadindicator_txt'] = 'Use Load Indicator';
-$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.';
-$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.';
-$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
-$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details';
-$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details';
-$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details';
-$wb['webmail_url_error_regex'] = 'Invalid webmail URL';
-$wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
-$wb['webmail_url_note_txt'] = 'Placeholder:';
-$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
-$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
-$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
-$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
-$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
-$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
-$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
-$wb['customer_no_template_txt'] = 'Customer No. template';
-$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters';
-$wb['customer_no_start_txt'] = 'Customer No. start value';
-$wb['customer_no_counter_txt'] = 'Customer No. counter';
-$wb['session_timeout_txt'] = 'Session timeout (minutes)';
-$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
-$wb['No'] = 'No';
-$wb['min_password_length_txt'] = 'Minimum password length';
-$wb['min_password_strength_txt'] = 'Minimum password strength';
-$wb['company_name_txt'] = 'Company Name for the page title';
-$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites';
-$wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
-$wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
-$wb['login_link_error_regex'] = 'Invalid Link for Custom Login';
-$wb['default_mailserver_txt'] = 'Default Mailserver';
-$wb['default_webserver_txt'] = 'Default Webserver';
-$wb['default_dnsserver_txt'] = 'Default DNS Server';
-$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
-$wb['default_dbserver_txt'] = 'Default Database Server';
-$wb['ca_name_txt'] = 'Name';
-$wb['ca_issue_txt'] = 'Issue';
-$wb['ca_wildcard_txt'] = 'Use Wildcard';
-$wb['ca_critical_txt'] = 'Strict Check';
-$wb['ca_iodef_txt'] = 'iodef';
-$wb['active_txt'] = 'Aktive';
-$wb['btn_save_txt'] = 'Save';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
-?>
diff --git a/fr_system_config.lng b/fr_system_config.lng
deleted file mode 100644
index 3b6fe68521..0000000000
--- a/fr_system_config.lng
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-$wb['system_config_title'] = 'System Config';
-$wb['system_config_desc_txt'] = '';
-$wb['dashboard_atom_url_admin_txt'] = 'URL du fil de syndication Atom du tableau de bord (admin)';
-$wb['dashboard_atom_url_reseller_txt'] = 'URL du fil de syndication Atom du tableau de bord ( reseller)';
-$wb['dashboard_atom_url_client_txt'] = 'URL du fil de syndication Atom du tableau de bord (client)';
-$wb['warning'] = 'Editez ces valeurs prudemment ! Il n’est pas conseillé de modifier les préfixes lorsque vous avez des clients !';
-$wb['dbname_prefix_txt'] = 'Préfixe du nom de la BDd';
-$wb['dbuser_prefix_txt'] = 'Préfixe de l’utilisateur de la BDd';
-$wb['shelluser_prefix_txt'] = 'Préfixe de l’utilisateur Shell';
-$wb['webdavuser_prefix_txt'] = 'Préfixe de l’utilisateur WebDAV';
-$wb['ftpuser_prefix_txt'] = 'Préfixe de l’utilisateur FTP';
-$wb['dbname_prefix_error_regex'] = 'Caractère non autorisé dans le préfixe du nom de la BDD.';
-$wb['dbuser_prefix_error_regex'] = 'Caractère non autorisé dans le préfixe de l’utilisateur de la BDD.';
-$wb['ftpuser_prefix_error_regex'] = 'Caractère non autorisé dans le préfixe de l’utilisateur FTP.';
-$wb['shelluser_prefix_error_regex'] = 'Caractère non autorisé dans le préfixe de l’utilisateur Shell.';
-$wb['webdavuser_prefix_error_regex'] = 'Caractère non autorisé dans le préfixe utilisateur WebDAV.';
-$wb['dblist_phpmyadmin_link_txt'] = 'Lien vers PHPMyAdmin dans la liste des bases';
-$wb['enable_custom_login_txt'] = 'Autoriser les noms d’utilisateurs personnalisés';
-$wb['mailboxlist_webmail_link_txt'] = 'Lien vers le Webmail dans la liste des boîtes mail';
-$wb['webmail_url_txt'] = 'URL du Webmail';
-$wb['mailmailinglist_link_txt'] = 'Lien vers la mailing list dans la liste des Liste de distribution';
-$wb['mailmailinglist_url_txt'] = 'URL des Liste de distribution';
-$wb['phpmyadmin_url_txt'] = 'URL de PHPMyAdmin';
-$wb['use_domain_module_txt'] = 'Utiliser le module de domaine pour ajouter de nouveaux domaines';
-$wb['use_domain_module_hint'] = 'Si vous utilisez ce module, vos utilisateurs peuvent uniquement sélectionner un des domaines que l’admin crée pour eux. Ils ne peuvent pas éditer librement le champ domaine. Vous devez vous identifier à nouveau après avoir modifié cette valeur pour rendre les modifications visibles.';
-$wb['new_domain_txt'] = 'HTML pour créer un nouveau domaine';
-$wb['webftp_url_txt'] = 'URL du WebFTP';
-$wb['admin_mail_txt'] = 'E-mail de l’administrateur';
-$wb['monitor_key_txt'] = 'Mot-clé du moniteur';
-$wb['admin_name_txt'] = 'Nom des administrateurs';
-$wb['maintenance_mode_txt'] = 'Maintenance Mode';
-$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
-$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
-$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
-$wb['smtp_host_txt'] = 'SMTP host';
-$wb['smtp_port_txt'] = 'SMTP port';
-$wb['smtp_user_txt'] = 'SMTP user';
-$wb['smtp_pass_txt'] = 'SMTP password';
-$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP';
-$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.';
-$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
-$wb['tab_change_warning_txt'] = 'Tab change warning';
-$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
-$wb['vhost_subdomains_txt'] = 'Create Subdomains as web site';
-$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
-$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
-$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
-$wb['use_loadindicator_txt'] = 'Use Load Indicator';
-$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.';
-$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word ’web’.';
-$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details';
-$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details';
-$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details';
-$wb['webmail_url_error_regex'] = 'Invalid webmail URL';
-$wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
-$wb['webmail_url_note_txt'] = 'Placeholder:';
-$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
-$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
-$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
-$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
-$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
-$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
-$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
-$wb['customer_no_template_txt'] = 'Customer No. template';
-$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters';
-$wb['customer_no_start_txt'] = 'Customer No. start value';
-$wb['customer_no_counter_txt'] = 'Customer No. counter';
-$wb['session_timeout_txt'] = 'Session timeout (minutes)';
-$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
-$wb['No'] = 'No';
-$wb['min_password_length_txt'] = 'Minimum password length';
-$wb['min_password_strength_txt'] = 'Minimum password strength';
-$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
-$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
-$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
-$wb['default_mailserver_txt'] = 'Default Mailserver';
-$wb['default_webserver_txt'] = 'Default Webserver';
-$wb['default_dnsserver_txt'] = 'Default DNS Server';
-$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
-$wb['default_dbserver_txt'] = 'Default Database Server';
-$wb['company_name_txt'] = 'Company Name for the page title';
-$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites';
-$wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
-$wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
-$wb['login_link_error_regex'] = 'Invalid Link for Custom Login';
-$wb['ca_name_txt'] = 'Name';
-$wb['ca_issue_txt'] = 'Issue';
-$wb['ca_wildcard_txt'] = 'Use Wildcard';
-$wb['ca_critical_txt'] = 'Strict Check';
-$wb['ca_iodef_txt'] = 'iodef';
-$wb['active_txt'] = 'Aktive';
-$wb['btn_save_txt'] = 'Save';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
-?>
diff --git a/hr_system_config.lng b/hr_system_config.lng
deleted file mode 100644
index 66931524ec..0000000000
--- a/hr_system_config.lng
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-$wb['system_config_title'] = 'System Config';
-$wb['system_config_desc_txt'] = '';
-$wb['warning'] = 'Oprezno mijenjajte prefikse i postavke! Nemojte brisati prefikse na sistemima gdje postoji više od jednog klijenata.';
-$wb['dbname_prefix_txt'] = 'Prefiks nazivu baze';
-$wb['dbuser_prefix_txt'] = 'Prefiks nazivu korisnika baze';
-$wb['shelluser_prefix_txt'] = 'Prefiks Shell računu';
-$wb['webdavuser_prefix_txt'] = 'Prefix Webdav računu';
-$wb['ftpuser_prefix_txt'] = 'Prefiks FTP računu';
-$wb['dbname_prefix_error_regex'] = 'Nedozvoljeni znak u prefiksu naziva baze.';
-$wb['dbuser_prefix_error_regex'] = 'Nedozvoljeni znak u prefiksu naziva korisnika baze.';
-$wb['ftpuser_prefix_error_regex'] = 'Nedozvoljeni znak u prefiksu FTP računa.';
-$wb['shelluser_prefix_error_regex'] = 'Nedozvoljeni znak u prefiksu Shell računa.';
-$wb['webdavuser_prefix_error_regex'] = 'Nedozvoljeni znak u prefiksu webdav računa.';
-$wb['dblist_phpmyadmin_link_txt'] = 'Link za phpmyadmin u DB listi';
-$wb['mailboxlist_webmail_link_txt'] = 'Link za webmail u Mailbox listi';
-$wb['webmail_url_txt'] = 'Webmail URL';
-$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL';
-$wb['use_domain_module_txt'] = 'Koristi modul Domene za dodavanje novih domena';
-$wb['use_domain_module_hint'] = 'Ukoliko koristite ovaj modul, vaši klijenti mogu izabrati samo domenu koju im je admin kreirao. Klijenti ne mogu slobodno mijenjati postavke domene. Morate se ponovno logirati nakon mijenjanja ove postavke da bi promjene bile vidljive.';
-$wb['new_domain_txt'] = 'HTML za kreiranje nove domene';
-$wb['webftp_url_txt'] = 'WebFTP URL';
-$wb['monitor_key_txt'] = 'Monitoriranje riječi';
-$wb['dashboard_atom_url_admin_txt'] = 'RSS URL za početnu stranicu (admin)';
-$wb['dashboard_atom_url_reseller_txt'] = 'RSS URL za početnu stranicu (reseller)';
-$wb['dashboard_atom_url_client_txt'] = 'RSS URL za početnu stranicu (client)';
-$wb['enable_custom_login_txt'] = 'Dozvoli izbor korisničkog imena';
-$wb['mailmailinglist_link_txt'] = 'Link na mailing listu u Mailing listi';
-$wb['mailmailinglist_url_txt'] = 'URL mailing liste';
-$wb['admin_mail_txt'] = 'e-mail administratora';
-$wb['admin_name_txt'] = 'Ime administratora';
-$wb['maintenance_mode_txt'] = 'Maintenance Mode';
-$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
-$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
-$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
-$wb['smtp_host_txt'] = 'SMTP host';
-$wb['smtp_port_txt'] = 'SMTP port';
-$wb['smtp_user_txt'] = 'SMTP user';
-$wb['smtp_pass_txt'] = 'SMTP password';
-$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP';
-$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.';
-$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
-$wb['tab_change_warning_txt'] = 'Tab change warning';
-$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
-$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
-$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
-$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
-$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
-$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
-$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
-$wb['use_loadindicator_txt'] = 'Use Load Indicator';
-$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.';
-$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.';
-$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
-$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details';
-$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details';
-$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details';
-$wb['webmail_url_error_regex'] = 'Invalid webmail URL';
-$wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
-$wb['webmail_url_note_txt'] = 'Placeholder:';
-$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
-$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
-$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
-$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
-$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
-$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
-$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
-$wb['customer_no_template_txt'] = 'Customer No. template';
-$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters';
-$wb['customer_no_start_txt'] = 'Customer No. start value';
-$wb['customer_no_counter_txt'] = 'Customer No. counter';
-$wb['session_timeout_txt'] = 'Session timeout (minutes)';
-$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
-$wb['No'] = 'No';
-$wb['min_password_length_txt'] = 'Minimum password length';
-$wb['min_password_strength_txt'] = 'Minimum password strength';
-$wb['company_name_txt'] = 'Company Name for the page title';
-$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites';
-$wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
-$wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
-$wb['login_link_error_regex'] = 'Invalid Link for Custom Login';
-$wb['default_mailserver_txt'] = 'Default Mailserver';
-$wb['default_webserver_txt'] = 'Default Webserver';
-$wb['default_dnsserver_txt'] = 'Default DNS Server';
-$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
-$wb['default_dbserver_txt'] = 'Default Database Server';
-$wb['ca_name_txt'] = 'Name';
-$wb['ca_issue_txt'] = 'Issue';
-$wb['ca_wildcard_txt'] = 'Use Wildcard';
-$wb['ca_critical_txt'] = 'Strict Check';
-$wb['ca_iodef_txt'] = 'iodef';
-$wb['active_txt'] = 'Aktive';
-$wb['btn_save_txt'] = 'Save';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
-?>
diff --git a/hu_system_config.lng b/hu_system_config.lng
deleted file mode 100644
index 6e1f97dfbb..0000000000
--- a/hu_system_config.lng
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-$wb['system_config_title'] = 'System Config';
-$wb['system_config_desc_txt'] = '';
-$wb['warning'] = 'Edit these values carefully! Do not remove the prefixes on a systems with more then one Ügyfél.';
-$wb['dbname_prefix_txt'] = 'Database name prefix';
-$wb['dbuser_prefix_txt'] = 'Database user prefix';
-$wb['shelluser_prefix_txt'] = 'Shell user prefix';
-$wb['ftpuser_prefix_txt'] = 'FTP user prefix';
-$wb['dbname_prefix_error_regex'] = 'Char not allowed in database name prefix.';
-$wb['dbuser_prefix_error_regex'] = 'Char not allowed in database user prefix.';
-$wb['ftpuser_prefix_error_regex'] = 'Char not allowed in ftp user prefix.';
-$wb['shelluser_prefix_error_regex'] = 'Char not allowed in shell user prefix.';
-$wb['dblist_phpmyadmin_link_txt'] = 'Link to phpmyadmin in DB list';
-$wb['mailboxlist_webmail_link_txt'] = 'Link to webmail in Mailbox list';
-$wb['webmail_url_txt'] = 'Webmail URL';
-$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL';
-$wb['use_domain_module_txt'] = 'Use the domain-module to add new domains';
-$wb['use_domain_module_hint'] = 'If you use this module, your customers can only select one of the domains the admin creates for them. They can not free edit the domain-field.You have to re-login after changing this value, to make the changes visible.';
-$wb['new_domain_txt'] = 'HTML to create a new domain';
-$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
-$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)';
-$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)';
-$wb['webdavuser_prefix_txt'] = 'Webdav user prefix';
-$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.';
-$wb['webftp_url_txt'] = 'WebFTP URL';
-$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list';
-$wb['mailmailinglist_url_txt'] = 'Mailing list URL';
-$wb['admin_mail_txt'] = 'Administrators e-mail';
-$wb['admin_name_txt'] = 'Administrators name';
-$wb['enable_custom_login_txt'] = 'Allow custom login name';
-$wb['monitor_key_txt'] = 'Monitor keyword';
-$wb['maintenance_mode_txt'] = 'Maintenance Mode';
-$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
-$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
-$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
-$wb['smtp_host_txt'] = 'SMTP host';
-$wb['smtp_port_txt'] = 'SMTP port';
-$wb['smtp_user_txt'] = 'SMTP user';
-$wb['smtp_pass_txt'] = 'SMTP password';
-$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP';
-$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.';
-$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
-$wb['tab_change_warning_txt'] = 'Tab change warning';
-$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
-$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
-$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
-$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
-$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
-$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
-$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
-$wb['use_loadindicator_txt'] = 'Use Load Indicator';
-$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.';
-$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.';
-$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
-$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details';
-$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details';
-$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details';
-$wb['webmail_url_error_regex'] = 'Invalid webmail URL';
-$wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
-$wb['webmail_url_note_txt'] = 'Placeholder:';
-$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
-$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
-$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
-$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
-$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
-$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
-$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
-$wb['customer_no_template_txt'] = 'Customer No. template';
-$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters';
-$wb['customer_no_start_txt'] = 'Customer No. start value';
-$wb['customer_no_counter_txt'] = 'Customer No. counter';
-$wb['session_timeout_txt'] = 'Session timeout (minutes)';
-$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
-$wb['No'] = 'No';
-$wb['min_password_length_txt'] = 'Minimum password length';
-$wb['min_password_strength_txt'] = 'Minimum password strength';
-$wb['company_name_txt'] = 'Company Name for the page title';
-$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites';
-$wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
-$wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
-$wb['login_link_error_regex'] = 'Invalid Link for Custom Login';
-$wb['default_mailserver_txt'] = 'Default Mailserver';
-$wb['default_webserver_txt'] = 'Default Webserver';
-$wb['default_dnsserver_txt'] = 'Default DNS Server';
-$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
-$wb['default_dbserver_txt'] = 'Default Database Server';
-$wb['ca_name_txt'] = 'Name';
-$wb['ca_issue_txt'] = 'Issue';
-$wb['ca_wildcard_txt'] = 'Use Wildcard';
-$wb['ca_critical_txt'] = 'Strict Check';
-$wb['ca_iodef_txt'] = 'iodef';
-$wb['active_txt'] = 'Aktive';
-$wb['btn_save_txt'] = 'Save';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
-?>
diff --git a/id_system_config.lng b/id_system_config.lng
deleted file mode 100644
index 9072d62832..0000000000
--- a/id_system_config.lng
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-$wb['system_config_title'] = 'System Config';
-$wb['system_config_desc_txt'] = '';
-$wb['warning'] = 'Sunting nilai-nilai ini dengan hati-hati! Jangan hapus prefiks di sistem yang memiliki lebih dari 1 klien.';
-$wb['dbname_prefix_txt'] = 'Prefiks nama database';
-$wb['dbuser_prefix_txt'] = 'Prefiks pengguna database';
-$wb['shelluser_prefix_txt'] = 'Prefiks pengguna shell';
-$wb['ftpuser_prefix_txt'] = 'Prefiks pengguna FTP';
-$wb['dbname_prefix_error_regex'] = 'Karakter tidak diperbolehkan di prefiks nama database.';
-$wb['dbuser_prefix_error_regex'] = 'Karakter tidak diperbolehkan di prefiks pengguna database.';
-$wb['ftpuser_prefix_error_regex'] = 'Karakter tidak diperbolehkan di prefiks pengguna ftp.';
-$wb['shelluser_prefix_error_regex'] = 'Karakter tidak diperbolehkan di prefiks pengguna shell.';
-$wb['dblist_phpmyadmin_link_txt'] = 'Tautan ke phpmyadmin di daftar DB';
-$wb['mailboxlist_webmail_link_txt'] = 'Tautan ke webmail di daftar Mailbox';
-$wb['webmail_url_txt'] = 'URL Webmail';
-$wb['phpmyadmin_url_txt'] = 'URL PHPMyAdmin';
-$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
-$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)';
-$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)';
-$wb['webdavuser_prefix_txt'] = 'Prefiks pengguna Webdav';
-$wb['webdavuser_prefix_error_regex'] = 'Karakter tidak diperbolehkan di prefiks pengguna webdav.';
-$wb['use_domain_module_txt'] = 'Gunakan modul domain untuk menambahkan domain baru';
-$wb['use_domain_module_hint'] = 'Jika Anda menggunakan modul ini, pelanggan Anda hanya dapat memilih salah satu domain yang dibuat oleh admin untuk mereka. Mereka tidak bisa menyunting dengan bebas kolom domain. Anda harus masuk kembali setelah mengubah nilai ini, agar perubahannya terlihat.';
-$wb['new_domain_txt'] = 'HTML untuk membuat domain baru';
-$wb['webftp_url_txt'] = 'URL WebFTP';
-$wb['enable_custom_login_txt'] = 'Allow custom login name';
-$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list';
-$wb['mailmailinglist_url_txt'] = 'Mailing list URL';
-$wb['admin_mail_txt'] = 'Administrators e-mail';
-$wb['monitor_key_txt'] = 'Monitor keyword';
-$wb['admin_name_txt'] = 'Administrators name';
-$wb['maintenance_mode_txt'] = 'Maintenance Mode';
-$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
-$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
-$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
-$wb['smtp_host_txt'] = 'SMTP host';
-$wb['smtp_port_txt'] = 'SMTP port';
-$wb['smtp_user_txt'] = 'SMTP user';
-$wb['smtp_pass_txt'] = 'SMTP password';
-$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP';
-$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.';
-$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
-$wb['tab_change_warning_txt'] = 'Tab change warning';
-$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
-$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
-$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
-$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
-$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
-$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
-$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
-$wb['use_loadindicator_txt'] = 'Use Load Indicator';
-$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.';
-$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.';
-$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
-$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details';
-$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details';
-$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details';
-$wb['webmail_url_error_regex'] = 'Invalid webmail URL';
-$wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
-$wb['webmail_url_note_txt'] = 'Placeholder:';
-$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
-$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
-$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
-$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
-$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
-$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
-$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
-$wb['customer_no_template_txt'] = 'Customer No. template';
-$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters';
-$wb['customer_no_start_txt'] = 'Customer No. start value';
-$wb['customer_no_counter_txt'] = 'Customer No. counter';
-$wb['session_timeout_txt'] = 'Session timeout (minutes)';
-$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
-$wb['No'] = 'No';
-$wb['min_password_length_txt'] = 'Minimum password length';
-$wb['min_password_strength_txt'] = 'Minimum password strength';
-$wb['company_name_txt'] = 'Company Name for the page title';
-$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites';
-$wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
-$wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
-$wb['login_link_error_regex'] = 'Invalid Link for Custom Login';
-$wb['default_mailserver_txt'] = 'Default Mailserver';
-$wb['default_webserver_txt'] = 'Default Webserver';
-$wb['default_dnsserver_txt'] = 'Default DNS Server';
-$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
-$wb['default_dbserver_txt'] = 'Default Database Server';
-$wb['ca_name_txt'] = 'Name';
-$wb['ca_issue_txt'] = 'Issue';
-$wb['ca_wildcard_txt'] = 'Use Wildcard';
-$wb['ca_critical_txt'] = 'Strict Check';
-$wb['ca_iodef_txt'] = 'iodef';
-$wb['active_txt'] = 'Aktive';
-$wb['btn_save_txt'] = 'Save';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
-?>
diff --git a/it_system_config.lng b/it_system_config.lng
deleted file mode 100644
index 42a03ed0b8..0000000000
--- a/it_system_config.lng
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-$wb['system_config_title'] = 'System Config';
-$wb['system_config_desc_txt'] = '';
-$wb['warning'] = 'Edit these values carefully! Do not remove the prefixes on a systems with more then one client.';
-$wb['dbname_prefix_txt'] = 'Prefisso nome database';
-$wb['dbuser_prefix_txt'] = 'Prefisso utente database';
-$wb['shelluser_prefix_txt'] = 'Prefisso utente Shell';
-$wb['ftpuser_prefix_txt'] = 'Prefisso utente FTP';
-$wb['dbname_prefix_error_regex'] = 'Char not allowed in database name prefix.';
-$wb['dbuser_prefix_error_regex'] = 'Char not allowed in database user prefix.';
-$wb['ftpuser_prefix_error_regex'] = 'Char not allowed in ftp user prefix.';
-$wb['shelluser_prefix_error_regex'] = 'Char not allowed in shell user prefix.';
-$wb['dblist_phpmyadmin_link_txt'] = 'Link to phpmyadmin in DB list';
-$wb['mailboxlist_webmail_link_txt'] = 'Link to webmail in Mailbox list';
-$wb['webmail_url_txt'] = 'Webmail URL';
-$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL';
-$wb['use_domain_module_txt'] = 'Use the domain-module to add new domains';
-$wb['use_domain_module_hint'] = 'If you use this module, your customers can only select one of the domains the admin creates for them. They can not free edit the domain-field.You have to re-login after changing this value, to make the changes visible.';
-$wb['new_domain_txt'] = 'HTML to create a new domain';
-$wb['webdavuser_prefix_txt'] = 'Webdav user prefix';
-$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.';
-$wb['webftp_url_txt'] = 'WebFTP URL';
-$wb['monitor_key_txt'] = 'Monitor keyword';
-$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
-$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)';
-$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)';
-$wb['enable_custom_login_txt'] = 'Allow custom login name';
-$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list';
-$wb['mailmailinglist_url_txt'] = 'Mailing list URL';
-$wb['admin_mail_txt'] = 'Administrators e-mail';
-$wb['admin_name_txt'] = 'Administrators name';
-$wb['maintenance_mode_txt'] = 'Maintenance Mode';
-$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
-$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
-$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
-$wb['smtp_host_txt'] = 'SMTP host';
-$wb['smtp_port_txt'] = 'SMTP port';
-$wb['smtp_user_txt'] = 'SMTP user';
-$wb['smtp_pass_txt'] = 'SMTP password';
-$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP';
-$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.';
-$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
-$wb['tab_change_warning_txt'] = 'Tab change warning';
-$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
-$wb['vhost_subdomains_txt'] = 'Crea  Subdomains as web site';
-$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
-$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
-$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
-$wb['use_loadindicator_txt'] = 'Use Load Indicator';
-$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.';
-$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.';
-$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details';
-$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details';
-$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details';
-$wb['webmail_url_error_regex'] = 'Invalid webmail URL';
-$wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
-$wb['webmail_url_note_txt'] = 'Placeholder:';
-$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
-$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
-$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
-$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
-$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
-$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
-$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
-$wb['customer_no_template_txt'] = 'Customer No. template';
-$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters';
-$wb['customer_no_start_txt'] = 'Customer No. start value';
-$wb['customer_no_counter_txt'] = 'Customer No. counter';
-$wb['session_timeout_txt'] = 'Session timeout (minutes)';
-$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
-$wb['No'] = 'No';
-$wb['min_password_length_txt'] = 'Minimum password length';
-$wb['min_password_strength_txt'] = 'Minimum password strength';
-$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
-$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
-$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
-$wb['default_mailserver_txt'] = 'Default Mailserver';
-$wb['default_webserver_txt'] = 'Default Webserver';
-$wb['default_dnsserver_txt'] = 'Default DNS Server';
-$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
-$wb['default_dbserver_txt'] = 'Default Database Server';
-$wb['company_name_txt'] = 'Company Name for the page title';
-$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites';
-$wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
-$wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
-$wb['login_link_error_regex'] = 'Invalid Link for Custom Login';
-$wb['ca_name_txt'] = 'Name';
-$wb['ca_issue_txt'] = 'Issue';
-$wb['ca_wildcard_txt'] = 'Use Wildcard';
-$wb['ca_critical_txt'] = 'Strict Check';
-$wb['ca_iodef_txt'] = 'iodef';
-$wb['active_txt'] = 'Aktive';
-$wb['btn_save_txt'] = 'Save';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
-?>
diff --git a/ja_system_config.lng b/ja_system_config.lng
deleted file mode 100644
index dfea52b18d..0000000000
--- a/ja_system_config.lng
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-$wb['system_config_title'] = 'System Config';
-$wb['system_config_desc_txt'] = '';
-$wb['warning'] = '値の変更には細心の注意を払ってください。クライアントが利用中のシステムのプリフィックスは削除しないでください。';
-$wb['dbname_prefix_txt'] = 'データベース名のプリフィックス';
-$wb['dbuser_prefix_txt'] = 'データベースユーザー名のプリフィックス';
-$wb['shelluser_prefix_txt'] = 'Shellユーザー名のプリフィックス';
-$wb['ftpuser_prefix_txt'] = 'FTPユーザー名のプリフィックス';
-$wb['dbname_prefix_error_regex'] = 'データベースのプリフィックスとして不正な値が指定されています。';
-$wb['dbuser_prefix_error_regex'] = 'データベースユーザーのプリフィックスとして不正な値が指定されています。';
-$wb['ftpuser_prefix_error_regex'] = 'FTPユーザーのプリフィックスとして不正な値が指定されています。';
-$wb['shelluser_prefix_error_regex'] = 'Shellユーザーのプリフィックスとして不正な値が指定されています。';
-$wb['dblist_phpmyadmin_link_txt'] = 'データベースの一覧から phpmyadmin へリンクする';
-$wb['mailboxlist_webmail_link_txt'] = 'メールボックスの一覧から webmail へリンクする';
-$wb['webmail_url_txt'] = 'Webmail URL';
-$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL';
-$wb['use_domain_module_txt'] = 'Use the domain-module to add new domains';
-$wb['use_domain_module_hint'] = 'If you use this module, your customers can only select one of the domains the admin creates for them. They can not free edit the domain-field.You have to re-login after changing this value, to make the changes visible.';
-$wb['new_domain_txt'] = 'HTML to create a new domain';
-$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
-$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)';
-$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)';
-$wb['webdavuser_prefix_txt'] = 'Webdav user prefix';
-$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.';
-$wb['webftp_url_txt'] = 'WebFTP URL';
-$wb['enable_custom_login_txt'] = 'Allow custom login name';
-$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list';
-$wb['mailmailinglist_url_txt'] = 'Mailing list URL';
-$wb['admin_mail_txt'] = 'Administrators e-mail';
-$wb['monitor_key_txt'] = 'Monitor keyword';
-$wb['admin_name_txt'] = 'Administrators name';
-$wb['maintenance_mode_txt'] = 'Maintenance Mode';
-$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
-$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
-$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
-$wb['smtp_host_txt'] = 'SMTP host';
-$wb['smtp_port_txt'] = 'SMTP port';
-$wb['smtp_user_txt'] = 'SMTP user';
-$wb['smtp_pass_txt'] = 'SMTP password';
-$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP';
-$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.';
-$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
-$wb['tab_change_warning_txt'] = 'Tab change warning';
-$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
-$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
-$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
-$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
-$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
-$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
-$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
-$wb['use_loadindicator_txt'] = 'Use Load Indicator';
-$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.';
-$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.';
-$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
-$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details';
-$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details';
-$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details';
-$wb['webmail_url_error_regex'] = 'Invalid webmail URL';
-$wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
-$wb['webmail_url_note_txt'] = 'Placeholder:';
-$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
-$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
-$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
-$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
-$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
-$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
-$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
-$wb['customer_no_template_txt'] = 'Customer No. template';
-$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters';
-$wb['customer_no_start_txt'] = 'Customer No. start value';
-$wb['customer_no_counter_txt'] = 'Customer No. counter';
-$wb['session_timeout_txt'] = 'Session timeout (minutes)';
-$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
-$wb['No'] = 'No';
-$wb['min_password_length_txt'] = 'Minimum password length';
-$wb['min_password_strength_txt'] = 'Minimum password strength';
-$wb['company_name_txt'] = 'Company Name for the page title';
-$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites';
-$wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
-$wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
-$wb['login_link_error_regex'] = 'Invalid Link for Custom Login';
-$wb['default_mailserver_txt'] = 'Default Mailserver';
-$wb['default_webserver_txt'] = 'Default Webserver';
-$wb['default_dnsserver_txt'] = 'Default DNS Server';
-$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
-$wb['default_dbserver_txt'] = 'Default Database Server';
-$wb['ca_name_txt'] = 'Name';
-$wb['ca_issue_txt'] = 'Issue';
-$wb['ca_wildcard_txt'] = 'Use Wildcard';
-$wb['ca_critical_txt'] = 'Strict Check';
-$wb['ca_iodef_txt'] = 'iodef';
-$wb['active_txt'] = 'Aktive';
-$wb['btn_save_txt'] = 'Save';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
-?>
diff --git a/nl_system_config.lng b/nl_system_config.lng
deleted file mode 100644
index 358edde69b..0000000000
--- a/nl_system_config.lng
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-$wb['system_config_title'] = 'System Config';
-$wb['system_config_desc_txt'] = '';
-$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
-$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)';
-$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)';
-$wb['warning'] = 'Edit these values carefully! Verwijder de voorvoegsels niet op systemen met meer dan ♪één klant.';
-$wb['dbname_prefix_txt'] = 'Database naam voorvoegsel';
-$wb['dbuser_prefix_txt'] = 'Database gebruiker voorvoegsel';
-$wb['shelluser_prefix_txt'] = 'Shell gebruiker voorvoegsel';
-$wb['webdavuser_prefix_txt'] = 'Webdav gebruiker voorvoegsel';
-$wb['ftpuser_prefix_txt'] = 'FTP gebruiker voorvoegsel';
-$wb['dbname_prefix_error_regex'] = 'Char niet toegestaan in database naam voorvoegsel.';
-$wb['dbuser_prefix_error_regex'] = 'Char niet toegestaan in database gebruiker voorvoegsel.';
-$wb['ftpuser_prefix_error_regex'] = 'Char niet toegestaan in ftp gebruiker voorvoegsel.';
-$wb['shelluser_prefix_error_regex'] = 'Char niet toegestaan in shell gebruiker voorvoegsel.';
-$wb['webdavuser_prefix_error_regex'] = 'Char niet toegestaan in webdav gebruiker voorvoegsel.';
-$wb['dblist_phpmyadmin_link_txt'] = 'Link naar phpmyadmin in DB lijst';
-$wb['mailboxlist_webmail_link_txt'] = 'Link naar webmail in Mailbox lijst';
-$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details';
-$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details';
-$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details';
-$wb['webmail_url_txt'] = 'Webmail URL';
-$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL';
-$wb['use_domain_module_txt'] = 'Gebruik de domein-module om nieuwe domeinen toe te voegen';
-$wb['use_domain_module_hint'] = 'Als u deze module gebruikt, kunnen uw klanten alleen de domeinen selecteren die de administrator heeft aangemaakt. klanten kunnen het domein-veld zelf niet wijzigen. Na opnieuw ingelogd te zijn zullen de wijzigingen zichtbaar zijn.';
-$wb['new_domain_txt'] = 'HTML om een nieuw domein te maken';
-$wb['webftp_url_txt'] = 'WebFTP URL';
-$wb['enable_custom_login_txt'] = 'Allow custom login name';
-$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list';
-$wb['mailmailinglist_url_txt'] = 'Mailing list URL';
-$wb['admin_mail_txt'] = 'Administrators e-mail';
-$wb['monitor_key_txt'] = 'Monitor keyword';
-$wb['admin_name_txt'] = 'Administrators name';
-$wb['maintenance_mode_txt'] = 'Maintenance Mode';
-$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
-$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
-$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
-$wb['smtp_host_txt'] = 'SMTP host';
-$wb['smtp_port_txt'] = 'SMTP port';
-$wb['smtp_user_txt'] = 'SMTP user';
-$wb['smtp_pass_txt'] = 'SMTP password';
-$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP';
-$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.';
-$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
-$wb['tab_change_warning_txt'] = 'Tab change warning';
-$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
-$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
-$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
-$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
-$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
-$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
-$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
-$wb['use_loadindicator_txt'] = 'Use Load Indicator';
-$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.';
-$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.';
-$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
-$wb['webmail_url_error_regex'] = 'Invalid webmail URL';
-$wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
-$wb['webmail_url_note_txt'] = 'Placeholder:';
-$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
-$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
-$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
-$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
-$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
-$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
-$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
-$wb['customer_no_template_txt'] = 'Customer No. template';
-$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters';
-$wb['customer_no_start_txt'] = 'Customer No. start value';
-$wb['customer_no_counter_txt'] = 'Customer No. counter';
-$wb['session_timeout_txt'] = 'Session timeout (minutes)';
-$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
-$wb['No'] = 'No';
-$wb['min_password_length_txt'] = 'Minimum password length';
-$wb['min_password_strength_txt'] = 'Minimum password strength';
-$wb['company_name_txt'] = 'Company Name for the page title';
-$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites';
-$wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
-$wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
-$wb['login_link_error_regex'] = 'Invalid Link for Custom Login';
-$wb['default_mailserver_txt'] = 'Default Mailserver';
-$wb['default_webserver_txt'] = 'Default Webserver';
-$wb['default_dnsserver_txt'] = 'Default DNS Server';
-$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
-$wb['default_dbserver_txt'] = 'Default Database Server';
-$wb['ca_name_txt'] = 'Name';
-$wb['ca_issue_txt'] = 'Issue';
-$wb['ca_wildcard_txt'] = 'Use Wildcard';
-$wb['ca_critical_txt'] = 'Strict Check';
-$wb['ca_iodef_txt'] = 'iodef';
-$wb['active_txt'] = 'Aktive';
-$wb['btn_save_txt'] = 'Save';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
-?>
diff --git a/pl_system_config.lng b/pl_system_config.lng
deleted file mode 100644
index d309ab812f..0000000000
--- a/pl_system_config.lng
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-$wb['system_config_title'] = 'System Config';
-$wb['warning'] = 'Edytuj te wartości ostrożnie! Nie usuwaj prefiksów w systemie w więcej niż jednym kliencie.';
-$wb['dbname_prefix_txt'] = 'Prefiks nazwy bazy danych';
-$wb['dbuser_prefix_txt'] = 'Prefiks użytkownika bazy danych';
-$wb['shelluser_prefix_txt'] = 'Prefiks użytkownika shell';
-$wb['ftpuser_prefix_txt'] = 'Prefiks użytkownika FTP';
-$wb['dbname_prefix_error_regex'] = 'Znak nie jest dozwolony w prefiksie nazwy bazy danych.';
-$wb['dbuser_prefix_error_regex'] = 'Znak nie jest dozwolony w prefiksie nazwy użytkownika bazy danych.';
-$wb['ftpuser_prefix_error_regex'] = 'Znak nie jest dozwolony w prefiksie nazwy użytkownika ftp.';
-$wb['shelluser_prefix_error_regex'] = 'Znak nie jest dozwolony w prefiksie nazwy użytkownika shell.';
-$wb['dblist_phpmyadmin_link_txt'] = 'Adres do phpMyAdmin w liście baz danych';
-$wb['mailboxlist_webmail_link_txt'] = 'Adres do poczty e-mail w liście skrzynek pocztowych';
-$wb['webmail_url_txt'] = 'Webmail URL';
-$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL';
-$wb['use_domain_module_txt'] = 'Użyj modułu Domeny do dodawania nowych domen';
-$wb['use_domain_module_hint'] = 'Jeżeli użyjesz tego modułu, Twoi użytkownicy będą mogli użyć tylko domeny stworzonej im przez administratora. Nie mogą edytować wpisów domeny. Musisz przelogować się po zmianie tej wartości, aby zobaczyć widoczne rezultaty.';
-$wb['new_domain_txt'] = 'HTML do stworzenia nowej domeny';
-$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
-$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)';
-$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)';
-$wb['webdavuser_prefix_txt'] = 'Prefiks użytkownika webdav';
-$wb['webdavuser_prefix_error_regex'] = 'Niedozwolony znak w prefiksie użytkownika webdav.';
-$wb['webftp_url_txt'] = 'Link do WebFTP';
-$wb['enable_custom_login_txt'] = 'Zezwalaj na dowolnÄ… nazwÄ™ loginu';
-$wb['mailmailinglist_link_txt'] = 'Link do listy mailingowej na liście list mailingowych';
-$wb['mailmailinglist_url_txt'] = 'URL listy mailingowej';
-$wb['admin_mail_txt'] = 'E-Mail administratora';
-$wb['monitor_key_txt'] = 'Klucz monitora';
-$wb['admin_name_txt'] = 'Nazwa administratora';
-$wb['system_config_desc_txt'] = '';
-$wb['smtp_missing_admin_mail_txt'] = 'Podaj nazwę administratora oraz adres email jeżeli chcesz użyć wysyłanie maili przez SMTP.';
-$wb['tab_change_discard_txt'] = 'Porzuć zmiany przy zmianie zakładki';
-$wb['tab_change_warning_txt'] = 'Ostrzegaj przy zmianie zakładki';
-$wb['tab_change_warning_note_txt'] = 'Pokaż ostrzeżenie przy zmianie zakładki jeżeli zostały zmienione dane przez użytkownika.';
-$wb['vhost_subdomains_txt'] = 'Twórz subdomeny jako strony web';
-$wb['vhost_subdomains_note_txt'] = 'Nie możesz wyłączyć tego tak długo jak istnieją w systemie vhosty subdomen.';
-$wb['vhost_aliasdomains_txt'] = 'Twórz aliasdomeny jako strony web';
-$wb['vhost_aliasdomains_note_txt'] = 'Nie możesz wyłączyć tego tak długo jak istnieją w systemie vhosty aliasdomen.';
-$wb['maintenance_mode_txt'] = 'Tryb serwisowy';
-$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
-$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
-$wb['smtp_enabled_txt'] = 'Używaj SMTP do wysyłania powiadomień systemowych';
-$wb['smtp_host_txt'] = 'Host SMTP';
-$wb['smtp_port_txt'] = 'Port SMTP';
-$wb['smtp_user_txt'] = 'Użytkownik SMTP';
-$wb['smtp_pass_txt'] = 'Hasło SMTP';
-$wb['smtp_crypt_txt'] = 'Użyj połączenia szyfrowanego SSL/TLS dla SMTP';
-$wb['phpmyadmin_url_error_regex'] = 'Nieprawidłowy link do phpmyadmin';
-$wb['use_combobox_txt'] = 'Użyj jQuery UI Combobox';
-$wb['use_loadindicator_txt'] = 'Użyj wskaźnika ładowania';
-$wb['f5_to_reload_js_txt'] = 'Jeżeli zmienisz to, możesz potrzebować wcisnąć F5 lub wyczyścić cache aby przeglądarka przeładowała biblioteki JavaScript.';
-$wb['client_username_web_check_disabled_txt'] = 'Wyłącz sprawdzanie nazwy klienta w poszukiwaniu słowa -web-.';
-$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
-$wb['mailbox_show_autoresponder_tab_txt'] = 'Pokaż zakładkę autorespondera w szczegółach konta email.';
-$wb['mailbox_show_mail_filter_tab_txt'] = 'Pokaż zakładkę filtra email w szczegółach konta email.';
-$wb['mailbox_show_custom_rules_tab_txt'] = 'Pokaż zakładkę własnych filtrów email w szczegółach konta email.';
-$wb['webmail_url_error_regex'] = 'Invalid webmail URL';
-$wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
-$wb['webmail_url_note_txt'] = 'Placeholder:';
-$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
-$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
-$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
-$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
-$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
-$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
-$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
-$wb['customer_no_template_txt'] = 'Customer No. template';
-$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters';
-$wb['customer_no_start_txt'] = 'Customer No. start value';
-$wb['customer_no_counter_txt'] = 'Customer No. counter';
-$wb['session_timeout_txt'] = 'Session timeout (minutes)';
-$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
-$wb['No'] = 'No';
-$wb['min_password_length_txt'] = 'Minimum password length';
-$wb['min_password_strength_txt'] = 'Minimum password strength';
-$wb['company_name_txt'] = 'Company Name for the page title';
-$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites';
-$wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
-$wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
-$wb['login_link_error_regex'] = 'Invalid Link for Custom Login';
-$wb['default_mailserver_txt'] = 'Default Mailserver';
-$wb['default_webserver_txt'] = 'Default Webserver';
-$wb['default_dnsserver_txt'] = 'Default DNS Server';
-$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
-$wb['default_dbserver_txt'] = 'Default Database Server';
-$wb['ca_name_txt'] = 'Name';
-$wb['ca_issue_txt'] = 'Issue';
-$wb['ca_wildcard_txt'] = 'Use Wildcard';
-$wb['ca_critical_txt'] = 'Strict Check';
-$wb['ca_iodef_txt'] = 'iodef';
-$wb['active_txt'] = 'Aktive';
-$wb['btn_save_txt'] = 'Save';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
-?>
diff --git a/pt_system_config.lng b/pt_system_config.lng
deleted file mode 100644
index 05edb306d9..0000000000
--- a/pt_system_config.lng
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-$wb['system_config_title'] = 'System Config';
-$wb['system_config_desc_txt'] = '';
-$wb['warning'] = 'Edite estes valores com cuidado! Não remova os prefixos em um sistema com mais de um cliente!!';
-$wb['dbname_prefix_txt'] = 'Prefixo Nome da Base de Dados';
-$wb['dbuser_prefix_txt'] = 'Prefixo Utilizador da Base de Dados';
-$wb['shelluser_prefix_txt'] = 'Prefixo Utilizador de Shell';
-$wb['ftpuser_prefix_txt'] = 'Prefixo Utilizador FTP';
-$wb['dbname_prefix_error_regex'] = 'Caractere não permitido para o prefixo do nome da Base de Dados!';
-$wb['dbuser_prefix_error_regex'] = 'Caractere não permitido para o prefixo do Utilizador da Base de Dados!';
-$wb['ftpuser_prefix_error_regex'] = 'Caractere não permitido para o prefixo do Utilizador FTP!';
-$wb['shelluser_prefix_error_regex'] = 'Caractere não permitido para o prefixo do Utilizador Shell!';
-$wb['dblist_phpmyadmin_link_txt'] = 'Link para phpmyadmin';
-$wb['mailboxlist_webmail_link_txt'] = 'Link para o webmail';
-$wb['webmail_url_txt'] = 'URL do Webmail';
-$wb['phpmyadmin_url_txt'] = 'URL do PHPMyAdmin';
-$wb['use_domain_module_txt'] = 'Use the domain-module to add new domains';
-$wb['use_domain_module_hint'] = 'If you use this module, your customers can only select one of the domains the admin creates for them. They can not free edit the domain-field.You have to re-login after changing this value, to make the changes visible.';
-$wb['new_domain_txt'] = 'HTML to create a new domain';
-$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
-$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)';
-$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)';
-$wb['webdavuser_prefix_txt'] = 'Webdav user prefix';
-$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.';
-$wb['webftp_url_txt'] = 'WebFTP URL';
-$wb['enable_custom_login_txt'] = 'Allow custom login name';
-$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list';
-$wb['mailmailinglist_url_txt'] = 'Mailing list URL';
-$wb['admin_mail_txt'] = 'Administrators e-mail';
-$wb['monitor_key_txt'] = 'Monitor keyword';
-$wb['admin_name_txt'] = 'Administrators name';
-$wb['maintenance_mode_txt'] = 'Maintenance Mode';
-$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
-$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
-$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
-$wb['smtp_host_txt'] = 'SMTP host';
-$wb['smtp_port_txt'] = 'SMTP port';
-$wb['smtp_user_txt'] = 'SMTP user';
-$wb['smtp_pass_txt'] = 'SMTP password';
-$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP';
-$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.';
-$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
-$wb['tab_change_warning_txt'] = 'Tab change warning';
-$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
-$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
-$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
-$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
-$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
-$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
-$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
-$wb['use_loadindicator_txt'] = 'Use Load Indicator';
-$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.';
-$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.';
-$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
-$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details';
-$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details';
-$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details';
-$wb['webmail_url_error_regex'] = 'Invalid webmail URL';
-$wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
-$wb['webmail_url_note_txt'] = 'Placeholder:';
-$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
-$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
-$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
-$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
-$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
-$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
-$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
-$wb['customer_no_template_txt'] = 'Customer No. template';
-$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters';
-$wb['customer_no_start_txt'] = 'Customer No. start value';
-$wb['customer_no_counter_txt'] = 'Customer No. counter';
-$wb['session_timeout_txt'] = 'Session timeout (minutes)';
-$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
-$wb['No'] = 'No';
-$wb['min_password_length_txt'] = 'Minimum password length';
-$wb['min_password_strength_txt'] = 'Minimum password strength';
-$wb['company_name_txt'] = 'Company Name for the page title';
-$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites';
-$wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
-$wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
-$wb['login_link_error_regex'] = 'Invalid Link for Custom Login';
-$wb['default_mailserver_txt'] = 'Default Mailserver';
-$wb['default_webserver_txt'] = 'Default Webserver';
-$wb['default_dnsserver_txt'] = 'Default DNS Server';
-$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
-$wb['default_dbserver_txt'] = 'Default Database Server';
-$wb['ca_name_txt'] = 'Name';
-$wb['ca_issue_txt'] = 'Issue';
-$wb['ca_wildcard_txt'] = 'Use Wildcard';
-$wb['ca_critical_txt'] = 'Strict Check';
-$wb['ca_iodef_txt'] = 'iodef';
-$wb['active_txt'] = 'Aktive';
-$wb['btn_save_txt'] = 'Save';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
-?>
diff --git a/ro_system_config.lng b/ro_system_config.lng
deleted file mode 100644
index 33ee2b4bde..0000000000
--- a/ro_system_config.lng
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-$wb['system_config_title'] = 'System Config';
-$wb['system_config_desc_txt'] = '';
-$wb['warning'] = 'Edit these values carefully! Do not remove the prefixes on a systems with more then one client.';
-$wb['dbname_prefix_txt'] = 'Database name prefix';
-$wb['dbuser_prefix_txt'] = 'Database user prefix';
-$wb['shelluser_prefix_txt'] = 'Shell user prefix';
-$wb['ftpuser_prefix_txt'] = 'FTP user prefix';
-$wb['dbname_prefix_error_regex'] = 'Char not allowed in database name prefix.';
-$wb['dbuser_prefix_error_regex'] = 'Char not allowed in database user prefix.';
-$wb['ftpuser_prefix_error_regex'] = 'Char not allowed in ftp user prefix.';
-$wb['shelluser_prefix_error_regex'] = 'Char not allowed in shell user prefix.';
-$wb['dblist_phpmyadmin_link_txt'] = 'Link to phpmyadmin in DB list';
-$wb['mailboxlist_webmail_link_txt'] = 'Link to webmail in Mailbox list';
-$wb['webmail_url_txt'] = 'Webmail URL';
-$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL';
-$wb['use_domain_module_txt'] = 'Use the domain-module to add new domains';
-$wb['use_domain_module_hint'] = 'If you use this module, your customers can only select one of the domains the admin creates for them. They can not free edit the domain-field.You have to re-login after changing this value, to make the changes visible.';
-$wb['new_domain_txt'] = 'HTML to create a new domain';
-$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
-$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)';
-$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)';
-$wb['webdavuser_prefix_txt'] = 'Webdav user prefix';
-$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.';
-$wb['webftp_url_txt'] = 'WebFTP URL';
-$wb['enable_custom_login_txt'] = 'Allow custom login name';
-$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list';
-$wb['mailmailinglist_url_txt'] = 'Mailing list URL';
-$wb['admin_mail_txt'] = 'Administrators e-mail';
-$wb['monitor_key_txt'] = 'Monitor keyword';
-$wb['admin_name_txt'] = 'Administrators name';
-$wb['maintenance_mode_txt'] = 'Maintenance Mode';
-$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
-$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
-$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
-$wb['smtp_host_txt'] = 'SMTP host';
-$wb['smtp_port_txt'] = 'SMTP port';
-$wb['smtp_user_txt'] = 'SMTP user';
-$wb['smtp_pass_txt'] = 'SMTP password';
-$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP';
-$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.';
-$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
-$wb['tab_change_warning_txt'] = 'Tab change warning';
-$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
-$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
-$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
-$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
-$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
-$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
-$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
-$wb['use_loadindicator_txt'] = 'Use Load Indicator';
-$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.';
-$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.';
-$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
-$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details';
-$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details';
-$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details';
-$wb['webmail_url_error_regex'] = 'Invalid webmail URL';
-$wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
-$wb['webmail_url_note_txt'] = 'Placeholder:';
-$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
-$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
-$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
-$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
-$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
-$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
-$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
-$wb['customer_no_template_txt'] = 'Customer No. template';
-$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters';
-$wb['customer_no_start_txt'] = 'Customer No. start value';
-$wb['customer_no_counter_txt'] = 'Customer No. counter';
-$wb['session_timeout_txt'] = 'Session timeout (minutes)';
-$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
-$wb['No'] = 'No';
-$wb['min_password_length_txt'] = 'Minimum password length';
-$wb['min_password_strength_txt'] = 'Minimum password strength';
-$wb['company_name_txt'] = 'Company Name for the page title';
-$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites';
-$wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
-$wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
-$wb['login_link_error_regex'] = 'Invalid Link for Custom Login';
-$wb['default_mailserver_txt'] = 'Default Mailserver';
-$wb['default_webserver_txt'] = 'Default Webserver';
-$wb['default_dnsserver_txt'] = 'Default DNS Server';
-$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
-$wb['default_dbserver_txt'] = 'Default Database Server';
-$wb['ca_name_txt'] = 'Name';
-$wb['ca_issue_txt'] = 'Issue';
-$wb['ca_wildcard_txt'] = 'Use Wildcard';
-$wb['ca_critical_txt'] = 'Strict Check';
-$wb['ca_iodef_txt'] = 'iodef';
-$wb['active_txt'] = 'Aktive';
-$wb['btn_save_txt'] = 'Save';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
-?>
diff --git a/ru_system_config.lng b/ru_system_config.lng
deleted file mode 100644
index 62c856fae0..0000000000
--- a/ru_system_config.lng
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-$wb['system_config_title'] = 'System Config';
-$wb['system_config_desc_txt'] = 'Настройка параметров по умолчанию';
-$wb['warning'] = 'Изменяйте эти значения аккуратно! Не удаляйте префиксы на системах где более одного пользователя.';
-$wb['dbname_prefix_txt'] = 'Префикс базы данных';
-$wb['dbuser_prefix_txt'] = 'Префикс пользователя базы данных';
-$wb['shelluser_prefix_txt'] = 'Префикс shell-пользователя';
-$wb['ftpuser_prefix_txt'] = 'Префикс FTP пользователя';
-$wb['dbname_prefix_error_regex'] = 'Некорректный символ в префиксе базы данных';
-$wb['dbuser_prefix_error_regex'] = 'Некорректный символ в префиксе пользователя базы данных';
-$wb['ftpuser_prefix_error_regex'] = 'Некорректный символ в префиксе FTP пользователя';
-$wb['shelluser_prefix_error_regex'] = 'Некорректный символ в префиксе shell-пользователя';
-$wb['dblist_phpmyadmin_link_txt'] = 'Ссылка на phpmyadmin в списке баз данных';
-$wb['mailboxlist_webmail_link_txt'] = 'Ссылка на веб-почту в списке почтовых ящиков';
-$wb['webmail_url_txt'] = 'URL веб-почты';
-$wb['phpmyadmin_url_txt'] = 'URL PHPMyAdmin';
-$wb['use_domain_module_txt'] = 'Использовать модуль домена, чтобы добавить новые домены';
-$wb['use_domain_module_hint'] = 'При использовании этого модуля, Ваши клиенты смогут выбрать только один из доменов, созданных для них администратором. Они не могут свободно редактировать поле \\"домен\\". Чтобы сделать эти изменения видимыми, Вы должны выйти и повторно войти в панель после изменения этого значения.';
-$wb['new_domain_txt'] = 'HTML текст, чтобы создать новый домен';
-$wb['webdavuser_prefix_txt'] = 'Префикс пользователя WebDAV';
-$wb['webdavuser_prefix_error_regex'] = 'Некорректный символ в префиксе пользователя WebDAV.';
-$wb['webftp_url_txt'] = 'URL WebFTP';
-$wb['monitor_key_txt'] = 'Monitor keyword';
-$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
-$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)';
-$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)';
-$wb['enable_custom_login_txt'] = 'Разрешить пользовательское имя входа в систему';
-$wb['mailmailinglist_link_txt'] = 'Ссылка на почтовую рассылку в списке рассылок';
-$wb['mailmailinglist_url_txt'] = 'URL почтовой рассылки';
-$wb['admin_mail_txt'] = 'E-mail администратора';
-$wb['admin_name_txt'] = 'Имя администратора';
-$wb['maintenance_mode_txt'] = 'Режим технического бслуживания';
-$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
-$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
-$wb['smtp_enabled_txt'] = 'Использовать SMTP для отправки системных сообщений';
-$wb['smtp_host_txt'] = 'Хост SMTP';
-$wb['smtp_port_txt'] = 'Порт SMTP';
-$wb['smtp_user_txt'] = 'Пользователь SMTP';
-$wb['smtp_pass_txt'] = 'Пароль SMTP';
-$wb['smtp_crypt_txt'] = 'Использовать SSL/TLS-шифрование соединения для SMTP';
-$wb['smtp_missing_admin_mail_txt'] = 'Пожалуйста, введите имя администратора и адрес эл. почты администратора, если вы хотите использовать SMTP для отправки почты.';
-$wb['tab_change_discard_txt'] = 'Откатить изменения на вкладке изменить';
-$wb['tab_change_warning_txt'] = 'Tab change warning';
-$wb['tab_change_warning_note_txt'] = 'Показать предупреждение об изменении вкладки в формах редактирования, если какие-либо данные были изменены пользователем.';
-$wb['vhost_subdomains_txt'] = 'Создать поддомен как веб-сайт';
-$wb['vhost_subdomains_note_txt'] = 'Этот параметр не может быть отключен пока поскольку существует виртуальный хост поддоменов в системе!';
-$wb['vhost_aliasdomains_txt'] = 'Создать алиас доменов как веб-сайт';
-$wb['vhost_aliasdomains_note_txt'] = 'Этот параметр не может быть отключен пока поскольку существует виртуальный хост алиасов доменов в системе!';
-$wb['phpmyadmin_url_error_regex'] = 'Некорректный URL phpmyadmin';
-$wb['use_combobox_txt'] = 'Использовать jQuery UI Combobox';
-$wb['use_loadindicator_txt'] = 'Использовать индикатор загрузки';
-$wb['f5_to_reload_js_txt'] = 'Если вы измените это, вам, возможно, придется нажать F5, чтобы перезагрузить в браузере JavaScript-библиотеи или очистить кэш браузера.';
-$wb['client_username_web_check_disabled_txt'] = 'Отключить проверку логина клиента для слова \'web\'.';
-$wb['backups_include_into_web_quota_txt'] = 'Включить резервное копирование файлов в веб-квоту.';
-$wb['mailbox_show_autoresponder_tab_txt'] = 'Показывать вкладку автоответчика в деталях учетной записи электронной почты';
-$wb['mailbox_show_mail_filter_tab_txt'] = 'Показывать вкладку почтового фильтра в деталях учетной записи электронной почты';
-$wb['mailbox_show_custom_rules_tab_txt'] = 'Показывать вкладку пользовательского почтового фильтра в деталях учетной записи электронной почты';
-$wb['webmail_url_error_regex'] = 'Некорректный URL веб-почты';
-$wb['phpmyadmin_url_note_txt'] = 'Заменитель:';
-$wb['webmail_url_note_txt'] = 'Заменитель:';
-$wb['available_dashlets_note_txt'] = 'Доступные дашлеты:';
-$wb['admin_dashlets_left_txt'] = 'Дашлеты Админа слева';
-$wb['admin_dashlets_right_txt'] = 'Дашлеты Админа справа';
-$wb['reseller_dashlets_left_txt'] = 'Дашлеты Реселлера слева';
-$wb['reseller_dashlets_right_txt'] = 'Дашлеты Реселлера справа';
-$wb['client_dashlets_left_txt'] = 'Дашлеты Клиента слева';
-$wb['client_dashlets_right_txt'] = 'Дашлеты Клиента справа';
-$wb['customer_no_template_txt'] = 'Шаблон номера Клиента';
-$wb['customer_no_template_error_regex_txt'] = 'Шаблон номера Клиента содержит недопустимые символы.';
-$wb['customer_no_start_txt'] = 'Начальное значение номера Клиента';
-$wb['customer_no_counter_txt'] = 'Счётчик номера Клиента';
-$wb['session_timeout_txt'] = 'Тайм-аут сессии (в минутах)';
-$wb['session_allow_endless_txt'] = 'Включить \\"оставаться в системе\\"';
-$wb['No'] = 'Нет';
-$wb['min_password_length_txt'] = 'Минимальная длина пароля';
-$wb['min_password_strength_txt'] = 'Минимальная стойкость пароля';
-$wb['company_name_txt'] = 'Название компании для заголовка страницы';
-$wb['reseller_can_use_options_txt'] = 'Реселлер может использовать вкладку Параметры для веб-сайтов';
-$wb['custom_login_text_txt'] = 'Пользовательский текст на странице входа';
-$wb['custom_login_link_txt'] = 'Пользовательская ссылка на страницу входа';
-$wb['login_link_error_regex'] = 'Некорректная ссылка для пользовательского входа';
-$wb['default_mailserver_txt'] = 'Почтовый сервер по умолчанию';
-$wb['default_webserver_txt'] = 'Web-сервер по умолчанию';
-$wb['default_dnsserver_txt'] = 'DNS-сервер по умолчанию';
-$wb['default_slave_dnsserver_txt'] = 'Вторичный DNS-сервер по умолчанию';
-$wb['default_dbserver_txt'] = 'Сервер базы данных по умолчанию';
-$wb['ca_name_txt'] = 'Name';
-$wb['ca_issue_txt'] = 'Issue';
-$wb['ca_wildcard_txt'] = 'Use Wildcard';
-$wb['ca_critical_txt'] = 'Strict Check';
-$wb['ca_iodef_txt'] = 'iodef';
-$wb['active_txt'] = 'Aktive';
-$wb['btn_save_txt'] = 'Save';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
-?>
diff --git a/se_system_config.lng b/se_system_config.lng
deleted file mode 100644
index bf0ec4942d..0000000000
--- a/se_system_config.lng
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-$wb['system_config_title'] = 'System Config';
-$wb['system_config_desc_txt'] = '';
-$wb['warning'] = 'Redigera dess värden försiktigt! Ta inte bort prefix på system med mer än en kund.';
-$wb['dbname_prefix_txt'] = 'Prefix för databasnamn';
-$wb['dbuser_prefix_txt'] = 'Prefix för databasanvändare';
-$wb['shelluser_prefix_txt'] = 'Prefix för shell-användare';
-$wb['ftpuser_prefix_txt'] = 'Prefix för FTP-användare';
-$wb['dbname_prefix_error_regex'] = 'Otillåtet tecken i prefix för databasnamn.';
-$wb['dbuser_prefix_error_regex'] = 'Otillåtet tecken i prefix för databasanvändare.';
-$wb['ftpuser_prefix_error_regex'] = 'Otillåtet tecken i prefix för FTP-användare.';
-$wb['shelluser_prefix_error_regex'] = 'Otillåtet tecken i prefix för shell-användare.';
-$wb['dblist_phpmyadmin_link_txt'] = 'Länka till PHPMyAdmin i databaslista';
-$wb['mailboxlist_webmail_link_txt'] = 'Länka till webbmail i epostkontolista';
-$wb['webmail_url_txt'] = 'Webbmail URL';
-$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL';
-$wb['use_domain_module_txt'] = 'Används domänmodul för att lägga till nya domäner';
-$wb['use_domain_module_hint'] = 'Om du använder denna modul kommer kunder endast kunna välja bland de domäner administratören har tilldelat dem, de kan alltså inte lägga till vilken domän som helst. Du måste logga in på nytt innan dessa ändringar blir synliga.';
-$wb['new_domain_txt'] = 'HTML vid skapande av nya domäner';
-$wb['dashboard_atom_url_admin_txt'] = 'Kontrolpanelens nyhetsflöde URL (admin)';
-$wb['dashboard_atom_url_reseller_txt'] = 'Kontrolpanelens nyhetsflöde URL (återförsäljare)';
-$wb['dashboard_atom_url_client_txt'] = 'Kontrolpanelens nyhetsflöde URL (kund)';
-$wb['webdavuser_prefix_txt'] = 'Prefix för WebDAV-användare';
-$wb['webdavuser_prefix_error_regex'] = 'Otillåtet tecken i prefix för WebDAV-användare';
-$wb['webftp_url_txt'] = 'WebbFTP URL';
-$wb['enable_custom_login_txt'] = 'Tillåt valfritt inloggningsnamn';
-$wb['mailmailinglist_link_txt'] = 'Länka till epostlista i listan över epostlistor';
-$wb['mailmailinglist_url_txt'] = 'Adress till epostlista';
-$wb['admin_mail_txt'] = 'Administratörens epostadress';
-$wb['monitor_key_txt'] = 'Bevakning nyckelord';
-$wb['admin_name_txt'] = 'Administratörens namn';
-$wb['maintenance_mode_txt'] = 'Underhållsläge';
-$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
-$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
-$wb['smtp_enabled_txt'] = 'Använd SMTP för att skicka systemmail';
-$wb['smtp_host_txt'] = 'SMTP-värd';
-$wb['smtp_port_txt'] = 'SMTP-port';
-$wb['smtp_user_txt'] = 'SMTP-användare';
-$wb['smtp_pass_txt'] = 'SMTP-lösenord';
-$wb['smtp_crypt_txt'] = 'Använd SSL/TLS-krypterad anslutning för SMTP';
-$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.';
-$wb['tab_change_discard_txt'] = 'Kasta ändringar vid byte av flik';
-$wb['tab_change_warning_txt'] = 'Varning vid byte av flik';
-$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
-$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
-$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
-$wb['vhost_subdomains_txt'] = 'Skapa underdomäner som en egen sajt';
-$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
-$wb['phpmyadmin_url_error_regex'] = 'Ogiltig adress till PHPMyAdmin';
-$wb['use_combobox_txt'] = 'Använd jQuery UI Combobox';
-$wb['use_loadindicator_txt'] = 'Använd laddningsindikator';
-$wb['f5_to_reload_js_txt'] = 'Om du ändrar detta kan du behöva trycka F5 för att ladda om javascript, eller rensa din webbläsarcache.';
-$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.';
-$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
-$wb['mailbox_show_autoresponder_tab_txt'] = 'Visa autosvarsfliken vid detaljerna för epostkonto';
-$wb['mailbox_show_mail_filter_tab_txt'] = 'Visa epostfilterfliken vid detaljerna för epostkonto';
-$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details';
-$wb['webmail_url_error_regex'] = 'Invalid webmail URL';
-$wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
-$wb['webmail_url_note_txt'] = 'Placeholder:';
-$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
-$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
-$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
-$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
-$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
-$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
-$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
-$wb['customer_no_template_txt'] = 'Kundnummermall';
-$wb['customer_no_template_error_regex_txt'] = 'Kundnummermallen innehåller otillåtna tecken';
-$wb['customer_no_start_txt'] = 'Kundnummer startvärde';
-$wb['customer_no_counter_txt'] = 'Kundnummer räknare';
-$wb['session_timeout_txt'] = 'Session timeout (minuter)';
-$wb['session_allow_endless_txt'] = 'Aktivera \\"håll mig inloggad\\"';
-$wb['No'] = 'Nej';
-$wb['min_password_length_txt'] = 'Minsta lösenordslängd';
-$wb['min_password_strength_txt'] = 'Minsta lösenordsstyrka';
-$wb['company_name_txt'] = 'Company Name for the page title';
-$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites';
-$wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
-$wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
-$wb['login_link_error_regex'] = 'Invalid Link for Custom Login';
-$wb['default_mailserver_txt'] = 'Default Mailserver';
-$wb['default_webserver_txt'] = 'Default Webserver';
-$wb['default_dnsserver_txt'] = 'Default DNS Server';
-$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
-$wb['default_dbserver_txt'] = 'Default Database Server';
-$wb['ca_name_txt'] = 'Name';
-$wb['ca_issue_txt'] = 'Issue';
-$wb['ca_wildcard_txt'] = 'Use Wildcard';
-$wb['ca_critical_txt'] = 'Strict Check';
-$wb['ca_iodef_txt'] = 'iodef';
-$wb['active_txt'] = 'Aktive';
-$wb['btn_save_txt'] = 'Save';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
-?>
diff --git a/sk_system_config.lng b/sk_system_config.lng
deleted file mode 100644
index b6bbe102dd..0000000000
--- a/sk_system_config.lng
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-$wb['system_config_title'] = 'System Config';
-$wb['system_config_desc_txt'] = '';
-$wb['warning'] = 'Upravte tieto hodnoty pozorne! Neodstraňujte predpony na systémoch s viac ako jedného klienta.';
-$wb['dbname_prefix_txt'] = 'Predpona názvu databázy ';
-$wb['dbuser_prefix_txt'] = 'Predpona databáza užívateľa';
-$wb['shelluser_prefix_txt'] = 'Predpona Shell užívateľa';
-$wb['ftpuser_prefix_txt'] = 'Predpona FTP užívateľ';
-$wb['dbname_prefix_error_regex'] = 'Char nie je povolený v prefix názov databázy.';
-$wb['dbuser_prefix_error_regex'] = 'Char nie je povolené v databáze predpone user.';
-$wb['ftpuser_prefix_error_regex'] = 'Char nie je povolené v ftp užívateľ predpone .';
-$wb['shelluser_prefix_error_regex'] = 'Char nie je povolené Shell užívateľ predpone .';
-$wb['dblist_phpmyadmin_link_txt'] = 'Odkaz na phpmyadmin v DB zozname';
-$wb['mailboxlist_webmail_link_txt'] = 'Odkaz na webmail v zozname schránok';
-$wb['webmail_url_txt'] = 'Webmail URL';
-$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL';
-$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
-$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)';
-$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)';
-$wb['webdavuser_prefix_txt'] = 'Webdav user prefix';
-$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.';
-$wb['use_domain_module_txt'] = 'Use the domain-module to add new domains';
-$wb['use_domain_module_hint'] = 'If you use this module, your customers can only select one of the domains the admin creates for them. They cannot free edit the domain-field.You have to re-login after changing this value, to make the changes visible.';
-$wb['new_domain_txt'] = 'HTML to create a new domain';
-$wb['webftp_url_txt'] = 'WebFTP URL';
-$wb['enable_custom_login_txt'] = 'Allow custom login name';
-$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list';
-$wb['mailmailinglist_url_txt'] = 'Mailing list URL';
-$wb['admin_mail_txt'] = 'Administrators e-mail';
-$wb['monitor_key_txt'] = 'Monitor keyword';
-$wb['admin_name_txt'] = 'Administrators name';
-$wb['maintenance_mode_txt'] = 'Maintenance Mode';
-$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
-$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
-$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
-$wb['smtp_host_txt'] = 'SMTP host';
-$wb['smtp_port_txt'] = 'SMTP port';
-$wb['smtp_user_txt'] = 'SMTP user';
-$wb['smtp_pass_txt'] = 'SMTP password';
-$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP';
-$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.';
-$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
-$wb['tab_change_warning_txt'] = 'Tab change warning';
-$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
-$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
-$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
-$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
-$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
-$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
-$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
-$wb['use_loadindicator_txt'] = 'Use Load Indicator';
-$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.';
-$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.';
-$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.';
-$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details';
-$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details';
-$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details';
-$wb['webmail_url_error_regex'] = 'Invalid webmail URL';
-$wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
-$wb['webmail_url_note_txt'] = 'Placeholder:';
-$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
-$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
-$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
-$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
-$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
-$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
-$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
-$wb['customer_no_template_txt'] = 'Customer No. template';
-$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters';
-$wb['customer_no_start_txt'] = 'Customer No. start value';
-$wb['customer_no_counter_txt'] = 'Customer No. counter';
-$wb['session_timeout_txt'] = 'Session timeout (minutes)';
-$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
-$wb['No'] = 'No';
-$wb['min_password_length_txt'] = 'Minimum password length';
-$wb['min_password_strength_txt'] = 'Minimum password strength';
-$wb['company_name_txt'] = 'Company Name for the page title';
-$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites';
-$wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
-$wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
-$wb['login_link_error_regex'] = 'Invalid Link for Custom Login';
-$wb['default_mailserver_txt'] = 'Default Mailserver';
-$wb['default_webserver_txt'] = 'Default Webserver';
-$wb['default_dnsserver_txt'] = 'Default DNS Server';
-$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
-$wb['default_dbserver_txt'] = 'Default Database Server';
-$wb['ca_name_txt'] = 'Name';
-$wb['ca_issue_txt'] = 'Issue';
-$wb['ca_wildcard_txt'] = 'Use Wildcard';
-$wb['ca_critical_txt'] = 'Strict Check';
-$wb['ca_iodef_txt'] = 'iodef';
-$wb['active_txt'] = 'Aktive';
-$wb['btn_save_txt'] = 'Save';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['web_php_options_txt'] = 'PHP Handler (Apache only)';
-?>
diff --git a/tr_system_config.lng b/tr_system_config.lng
deleted file mode 100644
index 21a70bec4b..0000000000
--- a/tr_system_config.lng
+++ /dev/null
@@ -1,90 +0,0 @@
-<?php
-$wb['system_config_title'] = 'System Config';
-$wb['system_config_desc_txt'] = '';
-$wb['smtp_missing_admin_mail_txt'] = 'SMTP e-posta gönderimini kullanmak için yönetici adı ve yönetici e-posta adresini yazmalısınız.';
-$wb['dashboard_atom_url_admin_txt'] = 'Panel Atom akışının İnternet adresi (yönetici)';
-$wb['dashboard_atom_url_reseller_txt'] = 'Panel Atom akışının İnternet adresi (bayi)';
-$wb['dashboard_atom_url_client_txt'] = 'Panel Atom akışının İnternet adresi (müşteri)';
-$wb['warning'] = 'Bu değerleri değiştirirken dikkatli olun! Sistemde birden fazla müşteri varsa, ön ekleri kaldırmayın.';
-$wb['tab_change_discard_txt'] = 'Sekme değiştirildiğinde değişiklikler yok sayılsın';
-$wb['tab_change_warning_txt'] = 'Sekme değiştirme uyarısı';
-$wb['tab_change_warning_note_txt'] = 'Formlardaki veriler düzenlenirken, kullanıcı bir değişiklik yapmışsa sekme değiştirilmek istendiğinde bir uyarı görüntülenir.';
-$wb['dbname_prefix_txt'] = 'Veritabanı adı ön eki';
-$wb['dbuser_prefix_txt'] = 'Veritabanı kullanıcısı ön eki';
-$wb['shelluser_prefix_txt'] = 'Kabuk kullanıcısı ön eki';
-$wb['webdavuser_prefix_txt'] = 'Webdav kullanıcısı ön eki';
-$wb['ftpuser_prefix_txt'] = 'FTP kullanıcısı ön eki';
-$wb['vhost_subdomains_txt'] = 'Etki alanları web sitesi şeklinde oluşturulsun';
-$wb['vhost_subdomains_note_txt'] = 'Sistemde sanal sunucu alt etki alanları varken bu seçenek devre dışı bırakılamaz!';
-$wb['vhost_aliasdomains_txt'] = 'Takma etki alanı web sitesi olarak eklensin';
-$wb['vhost_aliasdomains_note_txt'] = 'Sistemde sanal sunucu takma etki alanları varken bu seçenek devre dışı bırakılamaz!';
-$wb['dbname_prefix_error_regex'] = 'Veritabanı adı ön ekinde izin verilmeyen karakterler var';
-$wb['dbuser_prefix_error_regex'] = 'Veritabanı kullanıcısı ön ekinde izin verilmeyen karakterler var';
-$wb['ftpuser_prefix_error_regex'] = 'FTP kullanıcısı ön ekinde izin verilmeyen karakterler var';
-$wb['shelluser_prefix_error_regex'] = 'Kabuk kullanıcısı ön ekinde izin verilmeyen karakterler var';
-$wb['webdavuser_prefix_error_regex'] = 'Webdav kullanıcısı ön ekinde izin verilmeyen karakterler var.';
-$wb['dblist_phpmyadmin_link_txt'] = 'Veritabanı listesinde phpMyAdmin bağlantısı';
-$wb['enable_custom_login_txt'] = 'Özel oturum açma kullanıcı adı kullanılabilsin';
-$wb['mailboxlist_webmail_link_txt'] = 'E-posta kutusu listesinde Webmail bağlantısı';
-$wb['mailbox_show_autoresponder_tab_txt'] = 'E-posta hesabı ayrıntılarında otoyanıtlayıcı sekmesi görüntülensin';
-$wb['mailbox_show_mail_filter_tab_txt'] = 'E-posta hesabı ayrıntılarında e-posta süzgeci sekmesi görüntülensin';
-$wb['mailbox_show_custom_rules_tab_txt'] = 'E-posta hesabı ayrıntılarında isteğe bağlı e-posta süzgeci sekmesi görüntülensin';
-$wb['webmail_url_txt'] = 'Webmail Adresi';
-$wb['mailmailinglist_link_txt'] = 'E-posta Listeleri listesinde E-posta Listesi bağlantısı';
-$wb['mailmailinglist_url_txt'] = 'E-posta Listesi Adresi';
-$wb['phpmyadmin_url_txt'] = 'phpMyAdmin Adresi';
-$wb['use_domain_module_txt'] = 'Etki alanı eklemek için etki alanı modülü kullanılsın';
-$wb['use_domain_module_hint'] = 'Bu modül kullanıldığında, müşteriler yalnız yöneticinin oluşturduğu etki alanlarından birini seçebilir. Etki alanını istediği gibi yazamaz. Bu değeri değiştirdikten sonra değişikliklerin geçerli olması için oturumu kapatıp yeniden açmalısınız.';
-$wb['new_domain_txt'] = 'Yeni etki alanı oluşturma HTML kodu';
-$wb['webftp_url_txt'] = 'WebFTP Adresi';
-$wb['admin_mail_txt'] = 'Yönetici E-posta Adresi';
-$wb['monitor_key_txt'] = 'Ä°zlenecek Kelime';
-$wb['admin_name_txt'] = 'Yönetici Adı';
-$wb['maintenance_mode_txt'] = 'Bakım Kipi';
-$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
-$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
-$wb['smtp_enabled_txt'] = 'Sistem e-postaları SMTP ile gönderilsin';
-$wb['smtp_host_txt'] = 'SMTP Sunucusu';
-$wb['smtp_port_txt'] = 'SMTP Kapısı';
-$wb['smtp_user_txt'] = 'SMTP Kullanıcı Adı';
-$wb['smtp_pass_txt'] = 'SMTP Parolası';
-$wb['smtp_crypt_txt'] = 'SMTP için SSL/TLS şifreli bağlantı kullanılsın';
-$wb['phpmyadmin_url_error_regex'] = 'phpmyadmin adresi geçersiz';
-$wb['use_combobox_txt'] = 'jQuery Açılan Kutusu Kullanılsın';
-$wb['use_loadindicator_txt'] = 'Yük Göstergesi Kullanılsın';
-$wb['f5_to_reload_js_txt'] = 'Bu değer değiştirildiğinde, web tarayıcının JavaScript kitaplıklarını yeniden yüklemesi için F5 tuşuna basmalı ya da web tarayıcının ön belleğini temizlemelisiniz.';
-$wb['client_username_web_check_disabled_txt'] = 'Müşteri kullanıcı adında \'web\' sözcüğü denetimi devre dışı bırakılsın.';
-$wb['backups_include_into_web_quota_txt'] = 'Yedek dosyaları web kotasına katılsın.';
-$wb['mailbox_show_autoresponder_tab_txt'] = 'E-posta hesabı ayrıntılarında otoyanıtlayıcı sekmesi görüntülensin';
-$wb['mailbox_show_mail_filter_tab_txt'] = 'E-posta hesabı ayrıntılarında e-posta süzgeci sekmesi görüntülensin';
-$wb['mailbox_show_custom_rules_tab_txt'] = 'E-posta hesabı ayrıntılarında isteğe bağlı e-posta süzgeci sekmesi görüntülensin';
-$wb['webmail_url_error_regex'] = 'Webmail adresi geçersiz';
-$wb['phpmyadmin_url_note_txt'] = 'Kod:';
-$wb['webmail_url_note_txt'] = 'Kod:';
-$wb['available_dashlets_note_txt'] = 'Kullanılabilecek Bileşenler:';
-$wb['admin_dashlets_left_txt'] = 'Sol Yönetici Bileşenleri';
-$wb['admin_dashlets_right_txt'] = 'Sağ Yönetici Bileşenleri';
-$wb['reseller_dashlets_left_txt'] = 'Sol Bayi BileÅŸenleri';
-$wb['reseller_dashlets_right_txt'] = 'SaÄŸ Bayi BileÅŸenleri';
-$wb['client_dashlets_left_txt'] = 'Sol Müşteri Bileşenleri';
-$wb['client_dashlets_right_txt'] = 'Sağ Müşteri Bileşenleri';
-$wb['customer_no_template_txt'] = 'Müşteri No Kalıbı';
-$wb['customer_no_template_error_regex_txt'] = 'Müşteri no kalıbında geçersiz karakterler var';
-$wb['customer_no_start_txt'] = 'Müşteri No Başlangıç Değeri';
-$wb['customer_no_counter_txt'] = 'Müşteri No Sayacı';
-$wb['session_timeout_txt'] = 'Oturum Zaman Aşımı (dakika)';
-$wb['session_allow_endless_txt'] = '"Oturum açık kalsın" kullanılabilsin';
-$wb['No'] = 'No';
-$wb['min_password_length_txt'] = 'En Az Parola UzunluÄŸu';
-$wb['min_password_strength_txt'] = 'En Az Parola ZorluÄŸu';
-$wb['default_mailserver_txt'] = 'Varsayılan E-posta Sunucusu';
-$wb['default_webserver_txt'] = 'Varsayılan Web Sunucusu';
-$wb['default_dnsserver_txt'] = 'Varsayılan Birincil DNS Sunucusu';
-$wb['default_slave_dnsserver_txt'] = 'Varsayılan İkincil DNS Sunucusu';
-$wb['default_dbserver_txt'] = 'Varsayılan Veritabanı Sunucusu';
-$wb['company_name_txt'] = 'Sayfa başlığı için kurum adı';
-$wb['reseller_can_use_options_txt'] = 'Bayi web siteleri için seçenek sekmesini kullanabilsin';
-$wb['custom_login_text_txt'] = 'Oturum Açma Sayfası Metni';
-$wb['custom_login_link_txt'] = 'Oturum Açma Sayfası Bağlantısı';
-$wb['login_link_error_regex'] = 'Oturum Açma Bağlantısı Geçersiz';
-?>
-- 
GitLab


From 90f7fcd8aba740e71d11b45458f1c9a5eea61e22 Mon Sep 17 00:00:00 2001
From: Thom Pol <thom@amsterdamtech.nl>
Date: Sun, 24 May 2020 20:19:52 +0200
Subject: [PATCH 198/242] Revert "Fixes #4480 (Translate IP edit form title and
 desc)"

This reverts commit 13c9e0baeb50303d063f30a80cdb67bc86a7c04a
---
 ar_server_ip.lng | 13 -------------
 bg_server_ip.lng | 13 -------------
 br_server_ip.lng | 13 -------------
 ca_server_ip.lng | 13 -------------
 cz_server_ip.lng | 13 -------------
 de_server_ip.lng | 13 -------------
 dk_server_ip.lng | 13 -------------
 el_server_ip.lng | 13 -------------
 en_server_ip.lng | 13 -------------
 es_server_ip.lng | 13 -------------
 fi_server_ip.lng | 13 -------------
 fr_server_ip.lng | 13 -------------
 hr_server_ip.lng | 13 -------------
 hu_server_ip.lng | 13 -------------
 id_server_ip.lng | 13 -------------
 it_server_ip.lng | 13 -------------
 ja_server_ip.lng | 13 -------------
 nl_server_ip.lng | 13 -------------
 pl_server_ip.lng | 13 -------------
 pt_server_ip.lng | 13 -------------
 ro_server_ip.lng | 13 -------------
 ru_server_ip.lng | 13 -------------
 se_server_ip.lng | 13 -------------
 sk_server_ip.lng | 13 -------------
 tr_server_ip.lng | 13 -------------
 25 files changed, 325 deletions(-)
 delete mode 100644 ar_server_ip.lng
 delete mode 100644 bg_server_ip.lng
 delete mode 100644 br_server_ip.lng
 delete mode 100644 ca_server_ip.lng
 delete mode 100644 cz_server_ip.lng
 delete mode 100644 de_server_ip.lng
 delete mode 100644 dk_server_ip.lng
 delete mode 100644 el_server_ip.lng
 delete mode 100644 en_server_ip.lng
 delete mode 100644 es_server_ip.lng
 delete mode 100644 fi_server_ip.lng
 delete mode 100644 fr_server_ip.lng
 delete mode 100644 hr_server_ip.lng
 delete mode 100644 hu_server_ip.lng
 delete mode 100644 id_server_ip.lng
 delete mode 100644 it_server_ip.lng
 delete mode 100644 ja_server_ip.lng
 delete mode 100644 nl_server_ip.lng
 delete mode 100644 pl_server_ip.lng
 delete mode 100644 pt_server_ip.lng
 delete mode 100644 ro_server_ip.lng
 delete mode 100644 ru_server_ip.lng
 delete mode 100644 se_server_ip.lng
 delete mode 100644 sk_server_ip.lng
 delete mode 100644 tr_server_ip.lng

diff --git a/ar_server_ip.lng b/ar_server_ip.lng
deleted file mode 100644
index 1947d3ec37..0000000000
--- a/ar_server_ip.lng
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-$wb['server_ip_edit_title'] = 'IP Adresses';
-$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
-$wb['server_id_txt'] = 'Server';
-$wb['ip_address_txt'] = 'IP Address';
-$wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
-$wb['ip_error_wrong'] = 'The IP address is invalid';
-$wb['ip_error_unique'] = 'The IP address must be unique';
-$wb['client_id_txt'] = 'Client';
-$wb['ip_type_txt'] = 'Type';
-$wb['virtualhost_port_txt'] = 'HTTP Ports';
-$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443';
-?>
diff --git a/bg_server_ip.lng b/bg_server_ip.lng
deleted file mode 100644
index 70f428a634..0000000000
--- a/bg_server_ip.lng
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-$wb['server_ip_edit_title'] = 'IP Adresses';
-$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
-$wb['server_id_txt'] = 'Сървър';
-$wb['ip_address_txt'] = 'IP адрес';
-$wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
-$wb['ip_error_wrong'] = 'IP адресът е грешен';
-$wb['ip_error_unique'] = 'IP адресът трябва да бъде уникален';
-$wb['client_id_txt'] = 'Клиент';
-$wb['ip_type_txt'] = 'Тип';
-$wb['virtualhost_port_txt'] = 'HTTP портове';
-$wb['error_port_syntax'] = 'Грешни символи в полето за портове, моля въвеждайте само числа разделени с запетая. Пример: 80,443';
-?>
diff --git a/br_server_ip.lng b/br_server_ip.lng
deleted file mode 100644
index 8380b61ebd..0000000000
--- a/br_server_ip.lng
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-$wb['server_ip_edit_title'] = 'IP Adresses';
-$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
-$wb['server_id_txt'] = 'Servidor';
-$wb['client_id_txt'] = 'Cliente';
-$wb['ip_type_txt'] = 'Tipo';
-$wb['ip_address_txt'] = 'Endereço IP';
-$wb['virtualhost_txt'] = 'Nome do vhost http';
-$wb['virtualhost_port_txt'] = 'Porta http';
-$wb['ip_error_wrong'] = 'O endereço IP é inválido.';
-$wb['ip_error_unique'] = 'O endereço IP deve ser exclusivo.';
-$wb['error_port_syntax'] = 'Caracteres inválidos para porta http, por favor, insira apenas uma porta ou separe portas por vírgula. Exemplo: 80,443.';
-?>
diff --git a/ca_server_ip.lng b/ca_server_ip.lng
deleted file mode 100644
index 8f7738e51f..0000000000
--- a/ca_server_ip.lng
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-$wb['server_ip_edit_title'] = 'IP Adresses';
-$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
-$wb['server_id_txt'] = 'Server';
-$wb['client_id_txt'] = 'Client';
-$wb['ip_type_txt'] = 'Type';
-$wb['ip_address_txt'] = 'IP Address';
-$wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
-$wb['virtualhost_port_txt'] = 'HTTP Ports';
-$wb['ip_error_wrong'] = 'The IP address is invalid';
-$wb['ip_error_unique'] = 'The IP address must be unique';
-$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443';
-?>
diff --git a/cz_server_ip.lng b/cz_server_ip.lng
deleted file mode 100644
index 3698df5c74..0000000000
--- a/cz_server_ip.lng
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-$wb['server_ip_edit_title'] = 'IP Adresses';
-$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
-$wb['server_id_txt'] = 'Server';
-$wb['ip_address_txt'] = 'IP adresa';
-$wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
-$wb['ip_error_wrong'] = 'IP adresa je neplatná nebo prázdná';
-$wb['ip_error_unique'] = 'IP adresa musí být unikátní';
-$wb['client_id_txt'] = 'Klient';
-$wb['ip_type_txt'] = 'Verze';
-$wb['virtualhost_port_txt'] = 'HTTP Porty';
-$wb['error_port_syntax'] = 'Neplatné znaky ve volbě HTTP Portů. Prosím, zadejte pouze číselné hodnoty oddělené čárkami. Příklad: 80,443';
-?>
diff --git a/de_server_ip.lng b/de_server_ip.lng
deleted file mode 100644
index 88f23ebc15..0000000000
--- a/de_server_ip.lng
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-$wb['server_ip_edit_title'] = 'IP Adresses';
-$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
-$wb['server_id_txt'] = 'Server';
-$wb['ip_address_txt'] = 'IP Adresse';
-$wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
-$wb['ip_error_wrong'] = 'Die IP Adresse ist ungültig';
-$wb['ip_error_unique'] = 'Die IP Adresse muss einzigartig sein';
-$wb['client_id_txt'] = 'Kunde';
-$wb['ip_type_txt'] = 'Typ';
-$wb['virtualhost_port_txt'] = 'HTTP Ports';
-$wb['error_port_syntax'] = 'Ungültige Zeichen im Ports Feld. Bitte geben Sie nur komma-separierte Nummern an. Beispiel: 80,443';
-?>
diff --git a/dk_server_ip.lng b/dk_server_ip.lng
deleted file mode 100644
index a6ba3ba045..0000000000
--- a/dk_server_ip.lng
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-$wb['server_ip_edit_title'] = 'IP Adresses';
-$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
-$wb['server_id_txt'] = 'Server';
-$wb['client_id_txt'] = 'Kunde';
-$wb['ip_type_txt'] = 'Type';
-$wb['ip_address_txt'] = 'IP Adresse';
-$wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
-$wb['virtualhost_port_txt'] = 'HTTP Porte';
-$wb['ip_error_wrong'] = 'IP adressen er ugyldigt';
-$wb['ip_error_unique'] = 'IP adressen skal være unikke';
-$wb['error_port_syntax'] = 'Ugyldigt tegn i Port felt, du må kun indtaste kommasepareret tal. F.eks.: 80,443';
-?>
diff --git a/el_server_ip.lng b/el_server_ip.lng
deleted file mode 100644
index f00925fc62..0000000000
--- a/el_server_ip.lng
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-$wb['server_ip_edit_title'] = 'IP Adresses';
-$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
-$wb['server_id_txt'] = 'Server';
-$wb['ip_address_txt'] = 'Διεύθυνση IP';
-$wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
-$wb['ip_error_wrong'] = 'Η Διεύθυνση IP είναι άκυρη';
-$wb['ip_error_unique'] = 'Η Διεύθυνση IP πρέπει να είναι μοναδική';
-$wb['client_id_txt'] = 'Πελάτης';
-$wb['ip_type_txt'] = 'Τύπος';
-$wb['virtualhost_port_txt'] = 'Θύρες HTTP';
-$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443';
-?>
diff --git a/en_server_ip.lng b/en_server_ip.lng
deleted file mode 100644
index 8ef448f85d..0000000000
--- a/en_server_ip.lng
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-$wb['server_ip_edit_title'] = 'IP Adresses';
-$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
-$wb["server_id_txt"] = 'Server';
-$wb["client_id_txt"] = 'Client';
-$wb["ip_type_txt"] = 'Type';
-$wb["ip_address_txt"] = 'IP Address';
-$wb["virtualhost_txt"] = 'HTTP NameVirtualHost';
-$wb["virtualhost_port_txt"] = 'HTTP Ports';
-$wb["ip_error_wrong"] = 'The IP address is invalid';
-$wb["ip_error_unique"] = 'The IP address must be unique';
-$wb["error_port_syntax"] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443';
-?>
diff --git a/es_server_ip.lng b/es_server_ip.lng
deleted file mode 100644
index ba4d06d098..0000000000
--- a/es_server_ip.lng
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-$wb['server_ip_edit_title'] = 'IP Adresses';
-$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
-$wb['client_id_txt'] = 'Cliente';
-$wb['error_port_syntax'] = 'Caracteres inválidos en el campo puerto, por favor introduzca sólo números separados por comas. Por ejemplo: 80,443';
-$wb['ip_address_txt'] = 'Dirección IP';
-$wb['ip_error_unique'] = 'La dirección IP debe ser única';
-$wb['ip_error_wrong'] = 'La dirección IP no es correcta';
-$wb['ip_type_txt'] = 'Tipo';
-$wb['server_id_txt'] = 'Servidor';
-$wb['virtualhost_port_txt'] = 'Puertos HTTP';
-$wb['virtualhost_txt'] = 'Nombre de host virtual HTTP (NameVirtualHost)';
-?>
diff --git a/fi_server_ip.lng b/fi_server_ip.lng
deleted file mode 100644
index a9f49cc124..0000000000
--- a/fi_server_ip.lng
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-$wb['server_ip_edit_title'] = 'IP Adresses';
-$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
-$wb['server_id_txt'] = 'Palvelin';
-$wb['ip_address_txt'] = 'IP-osoite';
-$wb['virtualhost_txt'] = 'Virtuaalipalvelin';
-$wb['ip_error_wrong'] = 'IP-osoite vääränlainen';
-$wb['ip_error_unique'] = 'IP-osoitteen on oltava yksilöllinen';
-$wb['client_id_txt'] = 'Client';
-$wb['ip_type_txt'] = 'Type';
-$wb['virtualhost_port_txt'] = 'HTTP Ports';
-$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443';
-?>
diff --git a/fr_server_ip.lng b/fr_server_ip.lng
deleted file mode 100644
index 1289cd755a..0000000000
--- a/fr_server_ip.lng
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-$wb['server_ip_edit_title'] = 'IP Adresses';
-$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
-$wb['server_id_txt'] = 'Serveur';
-$wb['ip_address_txt'] = 'Adresse IP';
-$wb['virtualhost_txt'] = 'NameVirtualHost HTTP';
-$wb['ip_error_wrong'] = 'L’adresse IP est invalide';
-$wb['ip_error_unique'] = 'L’adresse IP doit être unique';
-$wb['client_id_txt'] = 'Client';
-$wb['ip_type_txt'] = 'Type';
-$wb['virtualhost_port_txt'] = 'HTTP Ports';
-$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443';
-?>
diff --git a/hr_server_ip.lng b/hr_server_ip.lng
deleted file mode 100644
index f26fd720ca..0000000000
--- a/hr_server_ip.lng
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-$wb['server_ip_edit_title'] = 'IP Adresses';
-$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
-$wb['server_id_txt'] = 'Server';
-$wb['ip_address_txt'] = 'IP adresa';
-$wb['virtualhost_txt'] = 'HTTP ime virtualnog hosta';
-$wb['ip_error_wrong'] = 'Neispravna IP adresa';
-$wb['ip_error_unique'] = 'IP adresa mora biti jedinstvena';
-$wb['client_id_txt'] = 'Klijent';
-$wb['ip_type_txt'] = 'Vrsta';
-$wb['virtualhost_port_txt'] = 'HTTP portovi';
-$wb['error_port_syntax'] = 'Nedozvoljeni znakovi u port polju, unesite samo znamenke odvojene zarezom. Primjer: 80,443';
-?>
diff --git a/hu_server_ip.lng b/hu_server_ip.lng
deleted file mode 100644
index 2e8f88a2f7..0000000000
--- a/hu_server_ip.lng
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-$wb['server_ip_edit_title'] = 'IP Adresses';
-$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
-$wb['server_id_txt'] = 'Szerver';
-$wb['ip_address_txt'] = 'IP cím';
-$wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
-$wb['ip_error_wrong'] = 'IP cím érvénytelen';
-$wb['ip_error_unique'] = 'AZ IP címnek egyedinek kell lennie';
-$wb['client_id_txt'] = 'Client';
-$wb['ip_type_txt'] = 'Type';
-$wb['virtualhost_port_txt'] = 'HTTP Ports';
-$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443';
-?>
diff --git a/id_server_ip.lng b/id_server_ip.lng
deleted file mode 100644
index 00cecf5026..0000000000
--- a/id_server_ip.lng
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-$wb['server_ip_edit_title'] = 'IP Adresses';
-$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
-$wb['server_id_txt'] = 'Server';
-$wb['ip_address_txt'] = 'Alamat IP';
-$wb['virtualhost_txt'] = 'Nama VirtualHost HTTP';
-$wb['ip_error_wrong'] = 'Alamat IP tidak valid';
-$wb['ip_error_unique'] = 'Alamat IP harus unik';
-$wb['client_id_txt'] = 'Client';
-$wb['ip_type_txt'] = 'Type';
-$wb['virtualhost_port_txt'] = 'HTTP Ports';
-$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443';
-?>
diff --git a/it_server_ip.lng b/it_server_ip.lng
deleted file mode 100644
index 9850f2e38b..0000000000
--- a/it_server_ip.lng
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-$wb['server_ip_edit_title'] = 'IP Adresses';
-$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
-$wb['server_id_txt'] = 'Server';
-$wb['ip_address_txt'] = 'Indirizzo IP';
-$wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
-$wb['ip_error_wrong'] = 'Indirizzo IP non valido';
-$wb['ip_error_unique'] = 'Indirizzo IP deve essere unico';
-$wb['client_id_txt'] = 'Cliente';
-$wb['ip_type_txt'] = 'Type';
-$wb['virtualhost_port_txt'] = 'HTTP Ports';
-$wb['error_port_syntax'] = 'Caratteri non validi nel campo porta, per favore inserire solo valori separati da virgola. Esempio: 80,443';
-?>
diff --git a/ja_server_ip.lng b/ja_server_ip.lng
deleted file mode 100644
index 982d797760..0000000000
--- a/ja_server_ip.lng
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-$wb['server_ip_edit_title'] = 'IP Adresses';
-$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
-$wb['server_id_txt'] = 'サーバー';
-$wb['ip_address_txt'] = 'IPアドレス';
-$wb['virtualhost_txt'] = 'HTTP の NameVirtualHost を使う';
-$wb['ip_error_wrong'] = 'IPアドレスが不正です。';
-$wb['ip_error_unique'] = '既に登録済みのIPアドレスです。別の値に変更してください。';
-$wb['client_id_txt'] = 'Client';
-$wb['ip_type_txt'] = 'Type';
-$wb['virtualhost_port_txt'] = 'HTTP Ports';
-$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443';
-?>
diff --git a/nl_server_ip.lng b/nl_server_ip.lng
deleted file mode 100644
index 1fd397e01b..0000000000
--- a/nl_server_ip.lng
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-$wb['server_ip_edit_title'] = 'IP Adresses';
-$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
-$wb['server_id_txt'] = 'Server';
-$wb['ip_address_txt'] = 'IP adres';
-$wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
-$wb['ip_error_wrong'] = 'Het IP adres is ongeldig';
-$wb['ip_error_unique'] = 'Het IP addres moet uniek zijn';
-$wb['client_id_txt'] = 'Client';
-$wb['ip_type_txt'] = 'Type';
-$wb['virtualhost_port_txt'] = 'HTTP Ports';
-$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443';
-?>
diff --git a/pl_server_ip.lng b/pl_server_ip.lng
deleted file mode 100644
index 0e31866078..0000000000
--- a/pl_server_ip.lng
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-$wb['server_ip_edit_title'] = 'IP Adresses';
-$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
-$wb['server_id_txt'] = 'Serwer';
-$wb['ip_address_txt'] = 'Adres IP';
-$wb['virtualhost_txt'] = 'Nazwa wirtualnego hosta HTTP';
-$wb['ip_error_wrong'] = 'Adres IP jest niepoprawny';
-$wb['ip_error_unique'] = 'Adres IP musi być unikalny';
-$wb['client_id_txt'] = 'Klient';
-$wb['ip_type_txt'] = 'Typ';
-$wb['virtualhost_port_txt'] = 'Porty HTTP';
-$wb['error_port_syntax'] = 'Nieprawidłowe wartości w polu portów, proszę wpisać tylko liczby oddzielone przecinkiem. Przykładowo: 80,443';
-?>
diff --git a/pt_server_ip.lng b/pt_server_ip.lng
deleted file mode 100644
index 8a3d00be61..0000000000
--- a/pt_server_ip.lng
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-$wb['server_ip_edit_title'] = 'IP Adresses';
-$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
-$wb['server_id_txt'] = 'Servidor';
-$wb['ip_address_txt'] = 'Endereço IP';
-$wb['virtualhost_txt'] = 'Nome VirtualHost HTTP';
-$wb['ip_error_wrong'] = 'Endereço IP inválido!';
-$wb['ip_error_unique'] = 'O endereço IP deve ser único';
-$wb['client_id_txt'] = 'Client';
-$wb['ip_type_txt'] = 'Type';
-$wb['virtualhost_port_txt'] = 'HTTP Ports';
-$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443';
-?>
diff --git a/ro_server_ip.lng b/ro_server_ip.lng
deleted file mode 100644
index 1947d3ec37..0000000000
--- a/ro_server_ip.lng
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-$wb['server_ip_edit_title'] = 'IP Adresses';
-$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
-$wb['server_id_txt'] = 'Server';
-$wb['ip_address_txt'] = 'IP Address';
-$wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
-$wb['ip_error_wrong'] = 'The IP address is invalid';
-$wb['ip_error_unique'] = 'The IP address must be unique';
-$wb['client_id_txt'] = 'Client';
-$wb['ip_type_txt'] = 'Type';
-$wb['virtualhost_port_txt'] = 'HTTP Ports';
-$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443';
-?>
diff --git a/ru_server_ip.lng b/ru_server_ip.lng
deleted file mode 100644
index f874ba1bbd..0000000000
--- a/ru_server_ip.lng
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-$wb['server_ip_edit_title'] = 'IP Adresses';
-$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
-$wb['server_id_txt'] = 'Сервер';
-$wb['ip_address_txt'] = 'IP-адрес';
-$wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
-$wb['ip_error_wrong'] = 'Неправильный формат IP-адреса';
-$wb['ip_error_unique'] = 'IP-адрес должен быть уникальным';
-$wb['client_id_txt'] = 'ID Клиента';
-$wb['ip_type_txt'] = 'Тип';
-$wb['virtualhost_port_txt'] = 'HTTP порты';
-$wb['error_port_syntax'] = 'Недопустимые символы в поле порта. Пожалуйста, вводите только числа, разделенные запятой. Пример: 80,443';
-?>
diff --git a/se_server_ip.lng b/se_server_ip.lng
deleted file mode 100644
index 09bc3b593a..0000000000
--- a/se_server_ip.lng
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-$wb['server_ip_edit_title'] = 'IP Adresses';
-$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
-$wb['server_id_txt'] = 'Server';
-$wb['ip_address_txt'] = 'IP-adress';
-$wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
-$wb['ip_error_wrong'] = 'IP_adressen är ogiltig';
-$wb['ip_error_unique'] = 'IP-adressen måste vara unik';
-$wb['client_id_txt'] = 'Kund';
-$wb['ip_type_txt'] = 'Typ';
-$wb['virtualhost_port_txt'] = 'HTTP-portar';
-$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443';
-?>
diff --git a/sk_server_ip.lng b/sk_server_ip.lng
deleted file mode 100644
index 02f84ded4c..0000000000
--- a/sk_server_ip.lng
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-$wb['server_ip_edit_title'] = 'IP Adresses';
-$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
-$wb['server_id_txt'] = 'Server';
-$wb['ip_address_txt'] = 'IP Adresa';
-$wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
-$wb['ip_error_wrong'] = 'IP adresa je neplatná';
-$wb['ip_error_unique'] = 'IP adresa musí byť unikátna';
-$wb['client_id_txt'] = 'Client';
-$wb['ip_type_txt'] = 'Type';
-$wb['virtualhost_port_txt'] = 'HTTP Ports';
-$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443';
-?>
diff --git a/tr_server_ip.lng b/tr_server_ip.lng
deleted file mode 100644
index 1f31bd3932..0000000000
--- a/tr_server_ip.lng
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-$wb['server_ip_edit_title'] = 'IP Adresses';
-$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
-$wb['server_id_txt'] = 'Sunucu';
-$wb['client_id_txt'] = 'Müşteri';
-$wb['ip_type_txt'] = 'Tür';
-$wb['ip_address_txt'] = 'IP Adresi';
-$wb['virtualhost_txt'] = 'HTTP sSunucu Adı';
-$wb['virtualhost_port_txt'] = 'HTTP Kapı Numaraları';
-$wb['ip_error_wrong'] = 'IP adresi geçersiz';
-$wb['ip_error_unique'] = 'Aynı IP adresi zaten var';
-$wb['error_port_syntax'] = 'Kapı alanında geçersiz karakterler var. Lütfen yalnız virgül ile ayrılmış sayılar yazın. Örnek: 80,443';
-?>
-- 
GitLab


From 306d944ceb20930ab52472ec20dd09455339665b Mon Sep 17 00:00:00 2001
From: Thom Pol <thom@amsterdamtech.nl>
Date: Sun, 24 May 2020 20:32:36 +0200
Subject: [PATCH 199/242] Fixes #4480

---
 interface/web/admin/lib/lang/ar_server_ip.lng | 2 ++
 interface/web/admin/lib/lang/bg_server_ip.lng | 2 ++
 interface/web/admin/lib/lang/br_server_ip.lng | 2 ++
 interface/web/admin/lib/lang/ca_server_ip.lng | 2 ++
 interface/web/admin/lib/lang/cz_server_ip.lng | 2 ++
 interface/web/admin/lib/lang/de_server_ip.lng | 2 ++
 interface/web/admin/lib/lang/dk_server_ip.lng | 2 ++
 interface/web/admin/lib/lang/el_server_ip.lng | 2 ++
 interface/web/admin/lib/lang/en_server_ip.lng | 4 +++-
 interface/web/admin/lib/lang/es_server_ip.lng | 2 ++
 interface/web/admin/lib/lang/fi_server_ip.lng | 2 ++
 interface/web/admin/lib/lang/fr_server_ip.lng | 2 ++
 interface/web/admin/lib/lang/hr_server_ip.lng | 2 ++
 interface/web/admin/lib/lang/hu_server_ip.lng | 2 ++
 interface/web/admin/lib/lang/id_server_ip.lng | 2 ++
 interface/web/admin/lib/lang/it_server_ip.lng | 2 ++
 interface/web/admin/lib/lang/ja_server_ip.lng | 2 ++
 interface/web/admin/lib/lang/nl_server_ip.lng | 2 ++
 interface/web/admin/lib/lang/pl_server_ip.lng | 2 ++
 interface/web/admin/lib/lang/pt_server_ip.lng | 2 ++
 interface/web/admin/lib/lang/ro_server_ip.lng | 2 ++
 interface/web/admin/lib/lang/ru_server_ip.lng | 2 ++
 interface/web/admin/lib/lang/se_server_ip.lng | 2 ++
 interface/web/admin/lib/lang/sk_server_ip.lng | 2 ++
 interface/web/admin/lib/lang/tr_server_ip.lng | 2 ++
 25 files changed, 51 insertions(+), 1 deletion(-)

diff --git a/interface/web/admin/lib/lang/ar_server_ip.lng b/interface/web/admin/lib/lang/ar_server_ip.lng
index 88d8a2f604..1947d3ec37 100644
--- a/interface/web/admin/lib/lang/ar_server_ip.lng
+++ b/interface/web/admin/lib/lang/ar_server_ip.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
 $wb['server_id_txt'] = 'Server';
 $wb['ip_address_txt'] = 'IP Address';
 $wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
diff --git a/interface/web/admin/lib/lang/bg_server_ip.lng b/interface/web/admin/lib/lang/bg_server_ip.lng
index 7337577754..70f428a634 100644
--- a/interface/web/admin/lib/lang/bg_server_ip.lng
+++ b/interface/web/admin/lib/lang/bg_server_ip.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
 $wb['server_id_txt'] = 'Сървър';
 $wb['ip_address_txt'] = 'IP адрес';
 $wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
diff --git a/interface/web/admin/lib/lang/br_server_ip.lng b/interface/web/admin/lib/lang/br_server_ip.lng
index b9bbd47949..8380b61ebd 100644
--- a/interface/web/admin/lib/lang/br_server_ip.lng
+++ b/interface/web/admin/lib/lang/br_server_ip.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
 $wb['server_id_txt'] = 'Servidor';
 $wb['client_id_txt'] = 'Cliente';
 $wb['ip_type_txt'] = 'Tipo';
diff --git a/interface/web/admin/lib/lang/ca_server_ip.lng b/interface/web/admin/lib/lang/ca_server_ip.lng
index f06b6be78a..8f7738e51f 100644
--- a/interface/web/admin/lib/lang/ca_server_ip.lng
+++ b/interface/web/admin/lib/lang/ca_server_ip.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
 $wb['server_id_txt'] = 'Server';
 $wb['client_id_txt'] = 'Client';
 $wb['ip_type_txt'] = 'Type';
diff --git a/interface/web/admin/lib/lang/cz_server_ip.lng b/interface/web/admin/lib/lang/cz_server_ip.lng
index 43a382a646..3698df5c74 100644
--- a/interface/web/admin/lib/lang/cz_server_ip.lng
+++ b/interface/web/admin/lib/lang/cz_server_ip.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
 $wb['server_id_txt'] = 'Server';
 $wb['ip_address_txt'] = 'IP adresa';
 $wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
diff --git a/interface/web/admin/lib/lang/de_server_ip.lng b/interface/web/admin/lib/lang/de_server_ip.lng
index 5757b165cb..88f23ebc15 100644
--- a/interface/web/admin/lib/lang/de_server_ip.lng
+++ b/interface/web/admin/lib/lang/de_server_ip.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
 $wb['server_id_txt'] = 'Server';
 $wb['ip_address_txt'] = 'IP Adresse';
 $wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
diff --git a/interface/web/admin/lib/lang/dk_server_ip.lng b/interface/web/admin/lib/lang/dk_server_ip.lng
index ba1586644d..a6ba3ba045 100644
--- a/interface/web/admin/lib/lang/dk_server_ip.lng
+++ b/interface/web/admin/lib/lang/dk_server_ip.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
 $wb['server_id_txt'] = 'Server';
 $wb['client_id_txt'] = 'Kunde';
 $wb['ip_type_txt'] = 'Type';
diff --git a/interface/web/admin/lib/lang/el_server_ip.lng b/interface/web/admin/lib/lang/el_server_ip.lng
index 212f432793..f00925fc62 100644
--- a/interface/web/admin/lib/lang/el_server_ip.lng
+++ b/interface/web/admin/lib/lang/el_server_ip.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
 $wb['server_id_txt'] = 'Server';
 $wb['ip_address_txt'] = 'Διεύθυνση IP';
 $wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
diff --git a/interface/web/admin/lib/lang/en_server_ip.lng b/interface/web/admin/lib/lang/en_server_ip.lng
index fd91fc30d6..8ef448f85d 100644
--- a/interface/web/admin/lib/lang/en_server_ip.lng
+++ b/interface/web/admin/lib/lang/en_server_ip.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
 $wb["server_id_txt"] = 'Server';
 $wb["client_id_txt"] = 'Client';
 $wb["ip_type_txt"] = 'Type';
@@ -8,4 +10,4 @@ $wb["virtualhost_port_txt"] = 'HTTP Ports';
 $wb["ip_error_wrong"] = 'The IP address is invalid';
 $wb["ip_error_unique"] = 'The IP address must be unique';
 $wb["error_port_syntax"] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/admin/lib/lang/es_server_ip.lng b/interface/web/admin/lib/lang/es_server_ip.lng
index 5cd2d77e52..ba4d06d098 100755
--- a/interface/web/admin/lib/lang/es_server_ip.lng
+++ b/interface/web/admin/lib/lang/es_server_ip.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
 $wb['client_id_txt'] = 'Cliente';
 $wb['error_port_syntax'] = 'Caracteres inválidos en el campo puerto, por favor introduzca sólo números separados por comas. Por ejemplo: 80,443';
 $wb['ip_address_txt'] = 'Dirección IP';
diff --git a/interface/web/admin/lib/lang/fi_server_ip.lng b/interface/web/admin/lib/lang/fi_server_ip.lng
index 7d2b642fc2..a9f49cc124 100755
--- a/interface/web/admin/lib/lang/fi_server_ip.lng
+++ b/interface/web/admin/lib/lang/fi_server_ip.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
 $wb['server_id_txt'] = 'Palvelin';
 $wb['ip_address_txt'] = 'IP-osoite';
 $wb['virtualhost_txt'] = 'Virtuaalipalvelin';
diff --git a/interface/web/admin/lib/lang/fr_server_ip.lng b/interface/web/admin/lib/lang/fr_server_ip.lng
index 471abb87ae..1289cd755a 100644
--- a/interface/web/admin/lib/lang/fr_server_ip.lng
+++ b/interface/web/admin/lib/lang/fr_server_ip.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
 $wb['server_id_txt'] = 'Serveur';
 $wb['ip_address_txt'] = 'Adresse IP';
 $wb['virtualhost_txt'] = 'NameVirtualHost HTTP';
diff --git a/interface/web/admin/lib/lang/hr_server_ip.lng b/interface/web/admin/lib/lang/hr_server_ip.lng
index 0ddf8be14c..f26fd720ca 100644
--- a/interface/web/admin/lib/lang/hr_server_ip.lng
+++ b/interface/web/admin/lib/lang/hr_server_ip.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
 $wb['server_id_txt'] = 'Server';
 $wb['ip_address_txt'] = 'IP adresa';
 $wb['virtualhost_txt'] = 'HTTP ime virtualnog hosta';
diff --git a/interface/web/admin/lib/lang/hu_server_ip.lng b/interface/web/admin/lib/lang/hu_server_ip.lng
index 33be4f514e..2e8f88a2f7 100644
--- a/interface/web/admin/lib/lang/hu_server_ip.lng
+++ b/interface/web/admin/lib/lang/hu_server_ip.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
 $wb['server_id_txt'] = 'Szerver';
 $wb['ip_address_txt'] = 'IP cím';
 $wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
diff --git a/interface/web/admin/lib/lang/id_server_ip.lng b/interface/web/admin/lib/lang/id_server_ip.lng
index c6d99a1212..00cecf5026 100644
--- a/interface/web/admin/lib/lang/id_server_ip.lng
+++ b/interface/web/admin/lib/lang/id_server_ip.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
 $wb['server_id_txt'] = 'Server';
 $wb['ip_address_txt'] = 'Alamat IP';
 $wb['virtualhost_txt'] = 'Nama VirtualHost HTTP';
diff --git a/interface/web/admin/lib/lang/it_server_ip.lng b/interface/web/admin/lib/lang/it_server_ip.lng
index 0d36ac79c3..9850f2e38b 100644
--- a/interface/web/admin/lib/lang/it_server_ip.lng
+++ b/interface/web/admin/lib/lang/it_server_ip.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
 $wb['server_id_txt'] = 'Server';
 $wb['ip_address_txt'] = 'Indirizzo IP';
 $wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
diff --git a/interface/web/admin/lib/lang/ja_server_ip.lng b/interface/web/admin/lib/lang/ja_server_ip.lng
index fdd8681ebb..982d797760 100644
--- a/interface/web/admin/lib/lang/ja_server_ip.lng
+++ b/interface/web/admin/lib/lang/ja_server_ip.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
 $wb['server_id_txt'] = 'サーバー';
 $wb['ip_address_txt'] = 'IPアドレス';
 $wb['virtualhost_txt'] = 'HTTP の NameVirtualHost を使う';
diff --git a/interface/web/admin/lib/lang/nl_server_ip.lng b/interface/web/admin/lib/lang/nl_server_ip.lng
index 3b281d60a0..1fd397e01b 100644
--- a/interface/web/admin/lib/lang/nl_server_ip.lng
+++ b/interface/web/admin/lib/lang/nl_server_ip.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
 $wb['server_id_txt'] = 'Server';
 $wb['ip_address_txt'] = 'IP adres';
 $wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
diff --git a/interface/web/admin/lib/lang/pl_server_ip.lng b/interface/web/admin/lib/lang/pl_server_ip.lng
index cb16e104d5..0e31866078 100644
--- a/interface/web/admin/lib/lang/pl_server_ip.lng
+++ b/interface/web/admin/lib/lang/pl_server_ip.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
 $wb['server_id_txt'] = 'Serwer';
 $wb['ip_address_txt'] = 'Adres IP';
 $wb['virtualhost_txt'] = 'Nazwa wirtualnego hosta HTTP';
diff --git a/interface/web/admin/lib/lang/pt_server_ip.lng b/interface/web/admin/lib/lang/pt_server_ip.lng
index 62f9ad351a..8a3d00be61 100644
--- a/interface/web/admin/lib/lang/pt_server_ip.lng
+++ b/interface/web/admin/lib/lang/pt_server_ip.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
 $wb['server_id_txt'] = 'Servidor';
 $wb['ip_address_txt'] = 'Endereço IP';
 $wb['virtualhost_txt'] = 'Nome VirtualHost HTTP';
diff --git a/interface/web/admin/lib/lang/ro_server_ip.lng b/interface/web/admin/lib/lang/ro_server_ip.lng
index 88d8a2f604..1947d3ec37 100644
--- a/interface/web/admin/lib/lang/ro_server_ip.lng
+++ b/interface/web/admin/lib/lang/ro_server_ip.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
 $wb['server_id_txt'] = 'Server';
 $wb['ip_address_txt'] = 'IP Address';
 $wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
diff --git a/interface/web/admin/lib/lang/ru_server_ip.lng b/interface/web/admin/lib/lang/ru_server_ip.lng
index fd82e2efa1..f874ba1bbd 100644
--- a/interface/web/admin/lib/lang/ru_server_ip.lng
+++ b/interface/web/admin/lib/lang/ru_server_ip.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
 $wb['server_id_txt'] = 'Сервер';
 $wb['ip_address_txt'] = 'IP-адрес';
 $wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
diff --git a/interface/web/admin/lib/lang/se_server_ip.lng b/interface/web/admin/lib/lang/se_server_ip.lng
index c6f92d8b60..09bc3b593a 100644
--- a/interface/web/admin/lib/lang/se_server_ip.lng
+++ b/interface/web/admin/lib/lang/se_server_ip.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
 $wb['server_id_txt'] = 'Server';
 $wb['ip_address_txt'] = 'IP-adress';
 $wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
diff --git a/interface/web/admin/lib/lang/sk_server_ip.lng b/interface/web/admin/lib/lang/sk_server_ip.lng
index 65915cc56b..02f84ded4c 100644
--- a/interface/web/admin/lib/lang/sk_server_ip.lng
+++ b/interface/web/admin/lib/lang/sk_server_ip.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
 $wb['server_id_txt'] = 'Server';
 $wb['ip_address_txt'] = 'IP Adresa';
 $wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
diff --git a/interface/web/admin/lib/lang/tr_server_ip.lng b/interface/web/admin/lib/lang/tr_server_ip.lng
index 4b2cb1187d..1f31bd3932 100644
--- a/interface/web/admin/lib/lang/tr_server_ip.lng
+++ b/interface/web/admin/lib/lang/tr_server_ip.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_edit_title'] = 'IP Adresses';
+$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses';
 $wb['server_id_txt'] = 'Sunucu';
 $wb['client_id_txt'] = 'Müşteri';
 $wb['ip_type_txt'] = 'Tür';
-- 
GitLab


From e178ce60051a048fca875476d8353e42c16d1daa Mon Sep 17 00:00:00 2001
From: Thom Pol <thom@amsterdamtech.nl>
Date: Sun, 24 May 2020 20:39:38 +0200
Subject: [PATCH 200/242] Fixes #4478 (Translate option for System Config)

---
 interface/web/admin/lib/lang/ar_system_config.lng | 1 +
 interface/web/admin/lib/lang/bg_system_config.lng | 1 +
 interface/web/admin/lib/lang/br_system_config.lng | 1 +
 interface/web/admin/lib/lang/ca_system_config.lng | 1 +
 interface/web/admin/lib/lang/cz_system_config.lng | 1 +
 interface/web/admin/lib/lang/de_system_config.lng | 1 +
 interface/web/admin/lib/lang/dk_system_config.lng | 1 +
 interface/web/admin/lib/lang/el_system_config.lng | 1 +
 interface/web/admin/lib/lang/en_system_config.lng | 1 +
 interface/web/admin/lib/lang/es_system_config.lng | 1 +
 interface/web/admin/lib/lang/fi_system_config.lng | 1 +
 interface/web/admin/lib/lang/fr_system_config.lng | 1 +
 interface/web/admin/lib/lang/hr_system_config.lng | 1 +
 interface/web/admin/lib/lang/hu_system_config.lng | 1 +
 interface/web/admin/lib/lang/id_system_config.lng | 1 +
 interface/web/admin/lib/lang/it_system_config.lng | 1 +
 interface/web/admin/lib/lang/ja_system_config.lng | 1 +
 interface/web/admin/lib/lang/nl_system_config.lng | 1 +
 interface/web/admin/lib/lang/pl_system_config.lng | 1 +
 interface/web/admin/lib/lang/pt_system_config.lng | 1 +
 interface/web/admin/lib/lang/ro_system_config.lng | 1 +
 interface/web/admin/lib/lang/ru_system_config.lng | 1 +
 interface/web/admin/lib/lang/se_system_config.lng | 1 +
 interface/web/admin/lib/lang/sk_system_config.lng | 1 +
 interface/web/admin/lib/lang/tr_system_config.lng | 1 +
 25 files changed, 25 insertions(+)

diff --git a/interface/web/admin/lib/lang/ar_system_config.lng b/interface/web/admin/lib/lang/ar_system_config.lng
index 4ea9a68919..3a7ef0796c 100644
--- a/interface/web/admin/lib/lang/ar_system_config.lng
+++ b/interface/web/admin/lib/lang/ar_system_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['system_config_title'] = 'System Config';
 $wb['system_config_desc_txt'] = '';
 $wb['warning'] = 'Edit these values carefully! Do not remove the prefixes on a systems with more then one client.';
 $wb['dbname_prefix_txt'] = 'Database name prefix';
diff --git a/interface/web/admin/lib/lang/bg_system_config.lng b/interface/web/admin/lib/lang/bg_system_config.lng
index 1ea00be94f..4e6add8a6d 100644
--- a/interface/web/admin/lib/lang/bg_system_config.lng
+++ b/interface/web/admin/lib/lang/bg_system_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['system_config_title'] = 'System Config';
 $wb['warning'] = 'Редактирай тези променливи внимателно! Не премахвай префиксите на системата.';
 $wb['dbname_prefix_txt'] = 'Име на префикса в базата данни';
 $wb['dbuser_prefix_txt'] = 'Потребителски префикс в базата данни';
diff --git a/interface/web/admin/lib/lang/br_system_config.lng b/interface/web/admin/lib/lang/br_system_config.lng
index f1feae4768..f5ed36e9ea 100644
--- a/interface/web/admin/lib/lang/br_system_config.lng
+++ b/interface/web/admin/lib/lang/br_system_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['system_config_title'] = 'System Config';
 $wb['system_config_desc_txt'] = 'Configurações do Sistema';
 $wb['smtp_missing_admin_mail_txt'] = 'Por favor, insira um nome e e-mail do administrador se você usar smtp para envio dos e-mails do sistema.';
 $wb['dashboard_atom_url_admin_txt'] = 'URL do Dashboard atom (admin)';
diff --git a/interface/web/admin/lib/lang/ca_system_config.lng b/interface/web/admin/lib/lang/ca_system_config.lng
index d9dfcfaa66..f721f688c5 100644
--- a/interface/web/admin/lib/lang/ca_system_config.lng
+++ b/interface/web/admin/lib/lang/ca_system_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['system_config_title'] = 'System Config';
 $wb['system_config_desc_txt'] = '';
 $wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.';
 $wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
diff --git a/interface/web/admin/lib/lang/cz_system_config.lng b/interface/web/admin/lib/lang/cz_system_config.lng
index e85b8ab9a5..4ee62ece32 100644
--- a/interface/web/admin/lib/lang/cz_system_config.lng
+++ b/interface/web/admin/lib/lang/cz_system_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['system_config_title'] = 'System Config';
 $wb['system_config_desc_txt'] = '';
 $wb['warning'] = 'Upravujte tyto údaje opatrne! Neodstraňujte prefixy na systémech s více, než jedním klientem.';
 $wb['dbname_prefix_txt'] = 'Prefix názvu databáze';
diff --git a/interface/web/admin/lib/lang/de_system_config.lng b/interface/web/admin/lib/lang/de_system_config.lng
index 21169ddf08..f981cce832 100644
--- a/interface/web/admin/lib/lang/de_system_config.lng
+++ b/interface/web/admin/lib/lang/de_system_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['system_config_title'] = 'System Config';
 $wb['system_config_desc_txt'] = 'Systemkonfiguration';
 $wb['smtp_missing_admin_mail_txt'] = 'Bitte geben Sie die Administrator E-Mail und den Namen ein, wenn Sie SMTP Versand nutzen wollen.';
 $wb['warning'] = 'Bearbeiten Sie diese Werte sorgfältig! Entfernen Sie die Präfixe nicht auf Systemen mit mehr als einem Kunden.';
diff --git a/interface/web/admin/lib/lang/dk_system_config.lng b/interface/web/admin/lib/lang/dk_system_config.lng
index eb725ac519..5f298f091a 100644
--- a/interface/web/admin/lib/lang/dk_system_config.lng
+++ b/interface/web/admin/lib/lang/dk_system_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['system_config_title'] = 'System Config';
 $wb['system_config_desc_txt'] = '';
 $wb['smtp_missing_admin_mail_txt'] = 'Indtast venligst admin navn og admin mail adresse, hvis du vil bruge smtp mail afsendelse.';
 $wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
diff --git a/interface/web/admin/lib/lang/el_system_config.lng b/interface/web/admin/lib/lang/el_system_config.lng
index 583bef7d39..17414e666d 100644
--- a/interface/web/admin/lib/lang/el_system_config.lng
+++ b/interface/web/admin/lib/lang/el_system_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['system_config_title'] = 'System Config';
 $wb['system_config_desc_txt'] = '';
 $wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
 $wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)';
diff --git a/interface/web/admin/lib/lang/en_system_config.lng b/interface/web/admin/lib/lang/en_system_config.lng
index f43603f6b6..840b3f434b 100644
--- a/interface/web/admin/lib/lang/en_system_config.lng
+++ b/interface/web/admin/lib/lang/en_system_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['system_config_title'] = 'System Config';
 $wb['system_config_desc_txt'] = '';
 $wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.';
 $wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
diff --git a/interface/web/admin/lib/lang/es_system_config.lng b/interface/web/admin/lib/lang/es_system_config.lng
index f788117fd4..7c4525da9a 100755
--- a/interface/web/admin/lib/lang/es_system_config.lng
+++ b/interface/web/admin/lib/lang/es_system_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['system_config_title'] = 'System Config';
 $wb['admin_dashlets_left_txt'] = 'Componentes del administrador a la izquierda';
 $wb['admin_dashlets_right_txt'] = 'Componentes del administrador a la derecha';
 $wb['admin_mail_txt'] = 'Correo del administrador';
diff --git a/interface/web/admin/lib/lang/fi_system_config.lng b/interface/web/admin/lib/lang/fi_system_config.lng
index 9def05e14a..2cafa6f5bf 100644
--- a/interface/web/admin/lib/lang/fi_system_config.lng
+++ b/interface/web/admin/lib/lang/fi_system_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['system_config_title'] = 'System Config';
 $wb['system_config_desc_txt'] = '';
 $wb['warning'] = 'Muokkaa näitä arvoja varoen! Älä poista etuliitteitä jos järjestelmässä on enemmän kuin yksi asiakas.';
 $wb['dbname_prefix_txt'] = 'Tietokannan nimen etuliite';
diff --git a/interface/web/admin/lib/lang/fr_system_config.lng b/interface/web/admin/lib/lang/fr_system_config.lng
index 7150804aaf..3b6fe68521 100644
--- a/interface/web/admin/lib/lang/fr_system_config.lng
+++ b/interface/web/admin/lib/lang/fr_system_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['system_config_title'] = 'System Config';
 $wb['system_config_desc_txt'] = '';
 $wb['dashboard_atom_url_admin_txt'] = 'URL du fil de syndication Atom du tableau de bord (admin)';
 $wb['dashboard_atom_url_reseller_txt'] = 'URL du fil de syndication Atom du tableau de bord ( reseller)';
diff --git a/interface/web/admin/lib/lang/hr_system_config.lng b/interface/web/admin/lib/lang/hr_system_config.lng
index 21b7953035..66931524ec 100644
--- a/interface/web/admin/lib/lang/hr_system_config.lng
+++ b/interface/web/admin/lib/lang/hr_system_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['system_config_title'] = 'System Config';
 $wb['system_config_desc_txt'] = '';
 $wb['warning'] = 'Oprezno mijenjajte prefikse i postavke! Nemojte brisati prefikse na sistemima gdje postoji više od jednog klijenata.';
 $wb['dbname_prefix_txt'] = 'Prefiks nazivu baze';
diff --git a/interface/web/admin/lib/lang/hu_system_config.lng b/interface/web/admin/lib/lang/hu_system_config.lng
index 8ef0acdeae..6e1f97dfbb 100644
--- a/interface/web/admin/lib/lang/hu_system_config.lng
+++ b/interface/web/admin/lib/lang/hu_system_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['system_config_title'] = 'System Config';
 $wb['system_config_desc_txt'] = '';
 $wb['warning'] = 'Edit these values carefully! Do not remove the prefixes on a systems with more then one Ügyfél.';
 $wb['dbname_prefix_txt'] = 'Database name prefix';
diff --git a/interface/web/admin/lib/lang/id_system_config.lng b/interface/web/admin/lib/lang/id_system_config.lng
index 5e76d45bf7..9072d62832 100644
--- a/interface/web/admin/lib/lang/id_system_config.lng
+++ b/interface/web/admin/lib/lang/id_system_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['system_config_title'] = 'System Config';
 $wb['system_config_desc_txt'] = '';
 $wb['warning'] = 'Sunting nilai-nilai ini dengan hati-hati! Jangan hapus prefiks di sistem yang memiliki lebih dari 1 klien.';
 $wb['dbname_prefix_txt'] = 'Prefiks nama database';
diff --git a/interface/web/admin/lib/lang/it_system_config.lng b/interface/web/admin/lib/lang/it_system_config.lng
index 85464c3739..42a03ed0b8 100644
--- a/interface/web/admin/lib/lang/it_system_config.lng
+++ b/interface/web/admin/lib/lang/it_system_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['system_config_title'] = 'System Config';
 $wb['system_config_desc_txt'] = '';
 $wb['warning'] = 'Edit these values carefully! Do not remove the prefixes on a systems with more then one client.';
 $wb['dbname_prefix_txt'] = 'Prefisso nome database';
diff --git a/interface/web/admin/lib/lang/ja_system_config.lng b/interface/web/admin/lib/lang/ja_system_config.lng
index 744db787b8..dfea52b18d 100644
--- a/interface/web/admin/lib/lang/ja_system_config.lng
+++ b/interface/web/admin/lib/lang/ja_system_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['system_config_title'] = 'System Config';
 $wb['system_config_desc_txt'] = '';
 $wb['warning'] = '値の変更には細心の注意を払ってください。クライアントが利用中のシステムのプリフィックスは削除しないでください。';
 $wb['dbname_prefix_txt'] = 'データベース名のプリフィックス';
diff --git a/interface/web/admin/lib/lang/nl_system_config.lng b/interface/web/admin/lib/lang/nl_system_config.lng
index f4b778d337..358edde69b 100644
--- a/interface/web/admin/lib/lang/nl_system_config.lng
+++ b/interface/web/admin/lib/lang/nl_system_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['system_config_title'] = 'System Config';
 $wb['system_config_desc_txt'] = '';
 $wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
 $wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)';
diff --git a/interface/web/admin/lib/lang/pl_system_config.lng b/interface/web/admin/lib/lang/pl_system_config.lng
index 95bf2f6ffc..d309ab812f 100644
--- a/interface/web/admin/lib/lang/pl_system_config.lng
+++ b/interface/web/admin/lib/lang/pl_system_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['system_config_title'] = 'System Config';
 $wb['warning'] = 'Edytuj te wartości ostrożnie! Nie usuwaj prefiksów w systemie w więcej niż jednym kliencie.';
 $wb['dbname_prefix_txt'] = 'Prefiks nazwy bazy danych';
 $wb['dbuser_prefix_txt'] = 'Prefiks użytkownika bazy danych';
diff --git a/interface/web/admin/lib/lang/pt_system_config.lng b/interface/web/admin/lib/lang/pt_system_config.lng
index faaebeca2a..05edb306d9 100644
--- a/interface/web/admin/lib/lang/pt_system_config.lng
+++ b/interface/web/admin/lib/lang/pt_system_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['system_config_title'] = 'System Config';
 $wb['system_config_desc_txt'] = '';
 $wb['warning'] = 'Edite estes valores com cuidado! Não remova os prefixos em um sistema com mais de um cliente!!';
 $wb['dbname_prefix_txt'] = 'Prefixo Nome da Base de Dados';
diff --git a/interface/web/admin/lib/lang/ro_system_config.lng b/interface/web/admin/lib/lang/ro_system_config.lng
index e6ed186de7..33ee2b4bde 100644
--- a/interface/web/admin/lib/lang/ro_system_config.lng
+++ b/interface/web/admin/lib/lang/ro_system_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['system_config_title'] = 'System Config';
 $wb['system_config_desc_txt'] = '';
 $wb['warning'] = 'Edit these values carefully! Do not remove the prefixes on a systems with more then one client.';
 $wb['dbname_prefix_txt'] = 'Database name prefix';
diff --git a/interface/web/admin/lib/lang/ru_system_config.lng b/interface/web/admin/lib/lang/ru_system_config.lng
index 792628d492..62c856fae0 100644
--- a/interface/web/admin/lib/lang/ru_system_config.lng
+++ b/interface/web/admin/lib/lang/ru_system_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['system_config_title'] = 'System Config';
 $wb['system_config_desc_txt'] = 'Настройка параметров по умолчанию';
 $wb['warning'] = 'Изменяйте эти значения аккуратно! Не удаляйте префиксы на системах где более одного пользователя.';
 $wb['dbname_prefix_txt'] = 'Префикс базы данных';
diff --git a/interface/web/admin/lib/lang/se_system_config.lng b/interface/web/admin/lib/lang/se_system_config.lng
index 8f6c9a63f0..bf0ec4942d 100644
--- a/interface/web/admin/lib/lang/se_system_config.lng
+++ b/interface/web/admin/lib/lang/se_system_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['system_config_title'] = 'System Config';
 $wb['system_config_desc_txt'] = '';
 $wb['warning'] = 'Redigera dess värden försiktigt! Ta inte bort prefix på system med mer än en kund.';
 $wb['dbname_prefix_txt'] = 'Prefix för databasnamn';
diff --git a/interface/web/admin/lib/lang/sk_system_config.lng b/interface/web/admin/lib/lang/sk_system_config.lng
index 2ea9666db5..b6bbe102dd 100644
--- a/interface/web/admin/lib/lang/sk_system_config.lng
+++ b/interface/web/admin/lib/lang/sk_system_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['system_config_title'] = 'System Config';
 $wb['system_config_desc_txt'] = '';
 $wb['warning'] = 'Upravte tieto hodnoty pozorne! Neodstraňujte predpony na systémoch s viac ako jedného klienta.';
 $wb['dbname_prefix_txt'] = 'Predpona názvu databázy ';
diff --git a/interface/web/admin/lib/lang/tr_system_config.lng b/interface/web/admin/lib/lang/tr_system_config.lng
index 0ccf846c1c..21a70bec4b 100644
--- a/interface/web/admin/lib/lang/tr_system_config.lng
+++ b/interface/web/admin/lib/lang/tr_system_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['system_config_title'] = 'System Config';
 $wb['system_config_desc_txt'] = '';
 $wb['smtp_missing_admin_mail_txt'] = 'SMTP e-posta gönderimini kullanmak için yönetici adı ve yönetici e-posta adresini yazmalısınız.';
 $wb['dashboard_atom_url_admin_txt'] = 'Panel Atom akışının İnternet adresi (yönetici)';
-- 
GitLab


From 9e6898414c4f0d7624f550e4547f6bb749379b54 Mon Sep 17 00:00:00 2001
From: Thom Pol <thom@amsterdamtech.nl>
Date: Sun, 24 May 2020 22:03:12 +0200
Subject: [PATCH 201/242] Fixes #4479

---
 interface/web/client/lib/lang/ar_client.lng              | 1 +
 interface/web/client/lib/lang/ar_reseller.lng            | 2 ++
 interface/web/client/lib/lang/bg_client.lng              | 1 +
 interface/web/client/lib/lang/bg_reseller.lng            | 2 ++
 interface/web/client/lib/lang/br_client.lng              | 1 +
 interface/web/client/lib/lang/br_reseller.lng            | 2 ++
 interface/web/client/lib/lang/ca_client.lng              | 1 +
 interface/web/client/lib/lang/ca_reseller.lng            | 2 ++
 interface/web/client/lib/lang/cz_client.lng              | 1 +
 interface/web/client/lib/lang/cz_reseller.lng            | 2 ++
 interface/web/client/lib/lang/de_client.lng              | 1 +
 interface/web/client/lib/lang/de_reseller.lng            | 2 ++
 interface/web/client/lib/lang/dk_client.lng              | 1 +
 interface/web/client/lib/lang/dk_reseller.lng            | 2 ++
 interface/web/client/lib/lang/el_client.lng              | 1 +
 interface/web/client/lib/lang/el_reseller.lng            | 2 ++
 interface/web/client/lib/lang/en_client.lng              | 1 +
 interface/web/client/lib/lang/en_reseller.lng            | 2 ++
 interface/web/client/lib/lang/es_client.lng              | 1 +
 interface/web/client/lib/lang/es_reseller.lng            | 2 ++
 interface/web/client/lib/lang/fi_client.lng              | 1 +
 interface/web/client/lib/lang/fi_reseller.lng            | 2 ++
 interface/web/client/lib/lang/fr_client.lng              | 1 +
 interface/web/client/lib/lang/fr_reseller.lng            | 2 ++
 interface/web/client/lib/lang/hr_client.lng              | 1 +
 interface/web/client/lib/lang/hr_reseller.lng            | 2 ++
 interface/web/client/lib/lang/hu_client.lng              | 1 +
 interface/web/client/lib/lang/hu_reseller.lng            | 2 ++
 interface/web/client/lib/lang/id_client.lng              | 1 +
 interface/web/client/lib/lang/id_reseller.lng            | 2 ++
 interface/web/client/lib/lang/it_client.lng              | 1 +
 interface/web/client/lib/lang/it_reseller.lng            | 2 ++
 interface/web/client/lib/lang/ja_client.lng              | 1 +
 interface/web/client/lib/lang/ja_reseller.lng            | 2 ++
 interface/web/client/lib/lang/nl_client.lng              | 1 +
 interface/web/client/lib/lang/nl_reseller.lng            | 2 ++
 interface/web/client/lib/lang/pl_client.lng              | 1 +
 interface/web/client/lib/lang/pl_reseller.lng            | 2 ++
 interface/web/client/lib/lang/pt_client.lng              | 1 +
 interface/web/client/lib/lang/pt_reseller.lng            | 2 ++
 interface/web/client/lib/lang/ro_client.lng              | 1 +
 interface/web/client/lib/lang/ro_reseller.lng            | 2 ++
 interface/web/client/lib/lang/ru_client.lng              | 1 +
 interface/web/client/lib/lang/ru_reseller.lng            | 2 ++
 interface/web/client/lib/lang/se_client.lng              | 1 +
 interface/web/client/lib/lang/se_reseller.lng            | 2 ++
 interface/web/client/lib/lang/sk_client.lng              | 1 +
 interface/web/client/lib/lang/sk_reseller.lng            | 2 ++
 interface/web/client/lib/lang/tr_client.lng              | 1 +
 interface/web/client/lib/lang/tr_reseller.lng            | 2 ++
 interface/web/client/templates/client_edit_address.htm   | 2 +-
 interface/web/client/templates/reseller_edit_address.htm | 2 +-
 52 files changed, 77 insertions(+), 2 deletions(-)

diff --git a/interface/web/client/lib/lang/ar_client.lng b/interface/web/client/lib/lang/ar_client.lng
index 71bc0fc1f7..deefcd8ade 100644
--- a/interface/web/client/lib/lang/ar_client.lng
+++ b/interface/web/client/lib/lang/ar_client.lng
@@ -200,5 +200,6 @@ $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available';
 $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
 $wb['password_click_to_set_txt'] = 'Click to set';
 $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/ar_reseller.lng b/interface/web/client/lib/lang/ar_reseller.lng
index 68e8a950f3..333c8bdb96 100644
--- a/interface/web/client/lib/lang/ar_reseller.lng
+++ b/interface/web/client/lib/lang/ar_reseller.lng
@@ -203,5 +203,7 @@ $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a n
 $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available';
 $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
 $wb['password_click_to_set_txt'] = 'Click to set';
+$wb['Reseller'] = 'Reseller';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/bg_client.lng b/interface/web/client/lib/lang/bg_client.lng
index 36da0a0422..8b024de0eb 100644
--- a/interface/web/client/lib/lang/bg_client.lng
+++ b/interface/web/client/lib/lang/bg_client.lng
@@ -200,5 +200,6 @@ $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available';
 $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
 $wb['password_click_to_set_txt'] = 'Click to set';
 $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/bg_reseller.lng b/interface/web/client/lib/lang/bg_reseller.lng
index 211b6daf93..528b2c7897 100644
--- a/interface/web/client/lib/lang/bg_reseller.lng
+++ b/interface/web/client/lib/lang/bg_reseller.lng
@@ -203,5 +203,7 @@ $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a n
 $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available';
 $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
 $wb['password_click_to_set_txt'] = 'Click to set';
+$wb['Reseller'] = 'Reseller';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/br_client.lng b/interface/web/client/lib/lang/br_client.lng
index c640be54fb..ba26b61513 100644
--- a/interface/web/client/lib/lang/br_client.lng
+++ b/interface/web/client/lib/lang/br_client.lng
@@ -200,5 +200,6 @@ $wb['btn_cancel_txt'] = 'Cancelar';
 $wb['invalid_vat_id'] = 'O ID do VAT é inválido.';
 $wb['email_error_empty'] = 'O e-mail está em branco';
 $wb['limit_directive_snippets_txt'] = 'Exibir configurações de seleção do servidor web';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limites';
 ?>
diff --git a/interface/web/client/lib/lang/br_reseller.lng b/interface/web/client/lib/lang/br_reseller.lng
index 12a8a2953f..322235d36b 100644
--- a/interface/web/client/lib/lang/br_reseller.lng
+++ b/interface/web/client/lib/lang/br_reseller.lng
@@ -203,5 +203,7 @@ $wb['limit_directive_snippets_txt'] = 'Exibir seleção de configuração do ser
 $wb['limit_database_user_error_notint'] = 'O limite de usuários do banco de dados deve ser um número.';
 $wb['limit_database_quota_txt'] = 'Cota do banco de dados';
 $wb['limit_database_quota_error_notint'] = 'A cota do banco de dados deve ser um número.';
+$wb['Reseller'] = 'Reseller';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limites';
 ?>
diff --git a/interface/web/client/lib/lang/ca_client.lng b/interface/web/client/lib/lang/ca_client.lng
index bfa38a3401..1797c17cd7 100644
--- a/interface/web/client/lib/lang/ca_client.lng
+++ b/interface/web/client/lib/lang/ca_client.lng
@@ -200,5 +200,6 @@ $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available';
 $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
 $wb['password_click_to_set_txt'] = 'Click to set';
 $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/ca_reseller.lng b/interface/web/client/lib/lang/ca_reseller.lng
index f83d3aaff7..411096ef54 100644
--- a/interface/web/client/lib/lang/ca_reseller.lng
+++ b/interface/web/client/lib/lang/ca_reseller.lng
@@ -203,5 +203,7 @@ $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a n
 $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available';
 $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
 $wb['password_click_to_set_txt'] = 'Click to set';
+$wb['Reseller'] = 'Reseller';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/cz_client.lng b/interface/web/client/lib/lang/cz_client.lng
index 3351ac58e1..355611f50e 100644
--- a/interface/web/client/lib/lang/cz_client.lng
+++ b/interface/web/client/lib/lang/cz_client.lng
@@ -200,5 +200,6 @@ $wb['limit_database_user_txt'] = 'Max. počet databázových uživatelů';
 $wb['limit_database_user_error_notint'] = 'Limit databázové kvóty musí být číslo.';
 $wb['password_click_to_set_txt'] = 'Pro nastavení klikni zde';
 $wb['limit_dns_record_error_notint'] = 'Limit DNS záznamů musí být číslo.';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limity';
 ?>
diff --git a/interface/web/client/lib/lang/cz_reseller.lng b/interface/web/client/lib/lang/cz_reseller.lng
index adfea62ac5..d9ddb4c5c4 100644
--- a/interface/web/client/lib/lang/cz_reseller.lng
+++ b/interface/web/client/lib/lang/cz_reseller.lng
@@ -203,5 +203,7 @@ $wb['limit_database_user_error_notint'] = 'Limit databázové kvóty musí být
 $wb['limit_database_quota_txt'] = 'Databázové kvóty';
 $wb['limit_database_quota_error_notint'] = 'Limit databázové kvóty musí být číslo.';
 $wb['password_click_to_set_txt'] = 'Pro nastavení klikni zde';
+$wb['Reseller'] = 'Reseller';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limity';
 ?>
diff --git a/interface/web/client/lib/lang/de_client.lng b/interface/web/client/lib/lang/de_client.lng
index b051d71305..58e390c9f2 100644
--- a/interface/web/client/lib/lang/de_client.lng
+++ b/interface/web/client/lib/lang/de_client.lng
@@ -200,5 +200,6 @@ $wb['limit_database_user_txt'] = 'Max. Database users';
 $wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
 $wb['password_click_to_set_txt'] = 'Click to set';
 $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/de_reseller.lng b/interface/web/client/lib/lang/de_reseller.lng
index e37ca395af..9f68b18cf5 100644
--- a/interface/web/client/lib/lang/de_reseller.lng
+++ b/interface/web/client/lib/lang/de_reseller.lng
@@ -203,5 +203,7 @@ $wb['limit_database_user_error_notint'] = 'The database user limit must be a num
 $wb['limit_database_quota_txt'] = 'Database quota';
 $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 $wb['password_click_to_set_txt'] = 'Click to set';
+$wb['Reseller'] = 'Reseller';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/dk_client.lng b/interface/web/client/lib/lang/dk_client.lng
index b944e03175..c0e8734912 100644
--- a/interface/web/client/lib/lang/dk_client.lng
+++ b/interface/web/client/lib/lang/dk_client.lng
@@ -200,5 +200,6 @@ $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
 $wb['email_error_empty'] = 'Email is empty';
 $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
 $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/dk_reseller.lng b/interface/web/client/lib/lang/dk_reseller.lng
index b06301ccdd..12004df761 100644
--- a/interface/web/client/lib/lang/dk_reseller.lng
+++ b/interface/web/client/lib/lang/dk_reseller.lng
@@ -203,5 +203,7 @@ $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
 $wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
 $wb['limit_database_quota_txt'] = 'Database quota';
 $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
+$wb['Reseller'] = 'Reseller';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/el_client.lng b/interface/web/client/lib/lang/el_client.lng
index b85f653d4e..59d50b3c85 100644
--- a/interface/web/client/lib/lang/el_client.lng
+++ b/interface/web/client/lib/lang/el_client.lng
@@ -200,5 +200,6 @@ $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available';
 $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
 $wb['password_click_to_set_txt'] = 'Click to set';
 $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/el_reseller.lng b/interface/web/client/lib/lang/el_reseller.lng
index b409c169e6..3b7bc470bc 100644
--- a/interface/web/client/lib/lang/el_reseller.lng
+++ b/interface/web/client/lib/lang/el_reseller.lng
@@ -203,5 +203,7 @@ $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a n
 $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available';
 $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
 $wb['password_click_to_set_txt'] = 'Click to set';
+$wb['Reseller'] = 'Reseller';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/en_client.lng b/interface/web/client/lib/lang/en_client.lng
index 3cc323fd4b..9b114d4e64 100644
--- a/interface/web/client/lib/lang/en_client.lng
+++ b/interface/web/client/lib/lang/en_client.lng
@@ -202,5 +202,6 @@ $wb['btn_cancel_txt'] = "Cancel";
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
 $wb["email_error_empty"] = "Email is empty";
 $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/en_reseller.lng b/interface/web/client/lib/lang/en_reseller.lng
index b5950132c4..789229460f 100644
--- a/interface/web/client/lib/lang/en_reseller.lng
+++ b/interface/web/client/lib/lang/en_reseller.lng
@@ -207,5 +207,7 @@ $wb['limit_database_user_txt'] = 'Max. Database users';
 $wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
 $wb['limit_database_quota_txt'] = 'Database quota';
 $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
+$wb['Reseller'] = 'Reseller';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/es_client.lng b/interface/web/client/lib/lang/es_client.lng
index 75125024fb..2595853096 100755
--- a/interface/web/client/lib/lang/es_client.lng
+++ b/interface/web/client/lib/lang/es_client.lng
@@ -200,5 +200,6 @@ $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available';
 $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
 $wb['password_click_to_set_txt'] = 'Click to set';
 $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/es_reseller.lng b/interface/web/client/lib/lang/es_reseller.lng
index 5a94b9e803..6830c56cb8 100755
--- a/interface/web/client/lib/lang/es_reseller.lng
+++ b/interface/web/client/lib/lang/es_reseller.lng
@@ -203,5 +203,7 @@ $wb['zip_txt'] = 'Código postal';
 $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available';
 $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
 $wb['password_click_to_set_txt'] = 'Click to set';
+$wb['Reseller'] = 'Reseller';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/fi_client.lng b/interface/web/client/lib/lang/fi_client.lng
index 6df30e7753..65893189b3 100755
--- a/interface/web/client/lib/lang/fi_client.lng
+++ b/interface/web/client/lib/lang/fi_client.lng
@@ -200,5 +200,6 @@ $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available';
 $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
 $wb['password_click_to_set_txt'] = 'Click to set';
 $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/fi_reseller.lng b/interface/web/client/lib/lang/fi_reseller.lng
index 58af2fdf0d..122fea5268 100644
--- a/interface/web/client/lib/lang/fi_reseller.lng
+++ b/interface/web/client/lib/lang/fi_reseller.lng
@@ -203,5 +203,7 @@ $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a n
 $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available';
 $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
 $wb['password_click_to_set_txt'] = 'Click to set';
+$wb['Reseller'] = 'Reseller';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/fr_client.lng b/interface/web/client/lib/lang/fr_client.lng
index 61612ccbe0..10f212e0f1 100644
--- a/interface/web/client/lib/lang/fr_client.lng
+++ b/interface/web/client/lib/lang/fr_client.lng
@@ -200,5 +200,6 @@ $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available';
 $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
 $wb['password_click_to_set_txt'] = 'Click to set';
 $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/fr_reseller.lng b/interface/web/client/lib/lang/fr_reseller.lng
index f30fcd48c6..76d44cb324 100644
--- a/interface/web/client/lib/lang/fr_reseller.lng
+++ b/interface/web/client/lib/lang/fr_reseller.lng
@@ -203,5 +203,7 @@ $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a n
 $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available';
 $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
 $wb['password_click_to_set_txt'] = 'Click to set';
+$wb['Reseller'] = 'Reseller';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/hr_client.lng b/interface/web/client/lib/lang/hr_client.lng
index ec5b73d940..9975861bde 100644
--- a/interface/web/client/lib/lang/hr_client.lng
+++ b/interface/web/client/lib/lang/hr_client.lng
@@ -200,5 +200,6 @@ $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available';
 $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
 $wb['password_click_to_set_txt'] = 'Click to set';
 $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/hr_reseller.lng b/interface/web/client/lib/lang/hr_reseller.lng
index 9188b6861b..d4b9f58eeb 100644
--- a/interface/web/client/lib/lang/hr_reseller.lng
+++ b/interface/web/client/lib/lang/hr_reseller.lng
@@ -203,5 +203,7 @@ $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a n
 $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available';
 $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
 $wb['password_click_to_set_txt'] = 'Click to set';
+$wb['Reseller'] = 'Reseller';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/hu_client.lng b/interface/web/client/lib/lang/hu_client.lng
index 10993601c0..b74881e9bf 100644
--- a/interface/web/client/lib/lang/hu_client.lng
+++ b/interface/web/client/lib/lang/hu_client.lng
@@ -200,5 +200,6 @@ $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available';
 $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
 $wb['password_click_to_set_txt'] = 'Click to set';
 $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/hu_reseller.lng b/interface/web/client/lib/lang/hu_reseller.lng
index dd9290885a..91c31b05ad 100644
--- a/interface/web/client/lib/lang/hu_reseller.lng
+++ b/interface/web/client/lib/lang/hu_reseller.lng
@@ -203,5 +203,7 @@ $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a n
 $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available';
 $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
 $wb['password_click_to_set_txt'] = 'Click to set';
+$wb['Reseller'] = 'Reseller';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/id_client.lng b/interface/web/client/lib/lang/id_client.lng
index c84e6251f4..b9cec3c1e6 100644
--- a/interface/web/client/lib/lang/id_client.lng
+++ b/interface/web/client/lib/lang/id_client.lng
@@ -200,5 +200,6 @@ $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available';
 $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
 $wb['password_click_to_set_txt'] = 'Click to set';
 $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/id_reseller.lng b/interface/web/client/lib/lang/id_reseller.lng
index 821a35e3cd..f466b2562c 100644
--- a/interface/web/client/lib/lang/id_reseller.lng
+++ b/interface/web/client/lib/lang/id_reseller.lng
@@ -203,5 +203,7 @@ $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a n
 $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available';
 $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
 $wb['password_click_to_set_txt'] = 'Click to set';
+$wb['Reseller'] = 'Reseller';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/it_client.lng b/interface/web/client/lib/lang/it_client.lng
index 0f75d849d6..09c93513ae 100644
--- a/interface/web/client/lib/lang/it_client.lng
+++ b/interface/web/client/lib/lang/it_client.lng
@@ -200,5 +200,6 @@ $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available';
 $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
 $wb['password_click_to_set_txt'] = 'Click to set';
 $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/it_reseller.lng b/interface/web/client/lib/lang/it_reseller.lng
index 2cef293265..1a2e6a1092 100644
--- a/interface/web/client/lib/lang/it_reseller.lng
+++ b/interface/web/client/lib/lang/it_reseller.lng
@@ -203,5 +203,7 @@ $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a n
 $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available';
 $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
 $wb['password_click_to_set_txt'] = 'Click to set';
+$wb['Reseller'] = 'Reseller';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/ja_client.lng b/interface/web/client/lib/lang/ja_client.lng
index 33aa6ab4e9..41023dd0a6 100644
--- a/interface/web/client/lib/lang/ja_client.lng
+++ b/interface/web/client/lib/lang/ja_client.lng
@@ -200,5 +200,6 @@ $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available';
 $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
 $wb['password_click_to_set_txt'] = 'Click to set';
 $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/ja_reseller.lng b/interface/web/client/lib/lang/ja_reseller.lng
index 7edf836f39..c1bade6839 100644
--- a/interface/web/client/lib/lang/ja_reseller.lng
+++ b/interface/web/client/lib/lang/ja_reseller.lng
@@ -203,5 +203,7 @@ $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a n
 $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available';
 $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
 $wb['password_click_to_set_txt'] = 'Click to set';
+$wb['Reseller'] = 'Reseller';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/nl_client.lng b/interface/web/client/lib/lang/nl_client.lng
index 188a37f4fd..4d6f11ca51 100644
--- a/interface/web/client/lib/lang/nl_client.lng
+++ b/interface/web/client/lib/lang/nl_client.lng
@@ -200,5 +200,6 @@ $wb['limit_database_user_error_notint'] = 'The database user limit must be a num
 $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available';
 $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
 $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/nl_reseller.lng b/interface/web/client/lib/lang/nl_reseller.lng
index 9953880bec..bed1291a2b 100644
--- a/interface/web/client/lib/lang/nl_reseller.lng
+++ b/interface/web/client/lib/lang/nl_reseller.lng
@@ -203,5 +203,7 @@ $wb['limit_database_quota_txt'] = 'Database quota';
 $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available';
 $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
+$wb['Reseller'] = 'Reseller';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/pl_client.lng b/interface/web/client/lib/lang/pl_client.lng
index f1a1e1e6e7..5fcf7a26d4 100644
--- a/interface/web/client/lib/lang/pl_client.lng
+++ b/interface/web/client/lib/lang/pl_client.lng
@@ -200,5 +200,6 @@ $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available';
 $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
 $wb['password_click_to_set_txt'] = 'Click to set';
 $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/pl_reseller.lng b/interface/web/client/lib/lang/pl_reseller.lng
index 9b2cf58f75..71f5bcfa4b 100644
--- a/interface/web/client/lib/lang/pl_reseller.lng
+++ b/interface/web/client/lib/lang/pl_reseller.lng
@@ -203,5 +203,7 @@ $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a n
 $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available';
 $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
 $wb['password_click_to_set_txt'] = 'Click to set';
+$wb['Reseller'] = 'Reseller';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/pt_client.lng b/interface/web/client/lib/lang/pt_client.lng
index ae3e45b24d..a3f98566ee 100644
--- a/interface/web/client/lib/lang/pt_client.lng
+++ b/interface/web/client/lib/lang/pt_client.lng
@@ -200,5 +200,6 @@ $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available';
 $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
 $wb['password_click_to_set_txt'] = 'Click to set';
 $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/pt_reseller.lng b/interface/web/client/lib/lang/pt_reseller.lng
index e021cd2511..7f47221418 100644
--- a/interface/web/client/lib/lang/pt_reseller.lng
+++ b/interface/web/client/lib/lang/pt_reseller.lng
@@ -203,5 +203,7 @@ $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a n
 $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available';
 $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
 $wb['password_click_to_set_txt'] = 'Click to set';
+$wb['Reseller'] = 'Reseller';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/ro_client.lng b/interface/web/client/lib/lang/ro_client.lng
index 034c4d0e44..0b7c552b37 100644
--- a/interface/web/client/lib/lang/ro_client.lng
+++ b/interface/web/client/lib/lang/ro_client.lng
@@ -200,5 +200,6 @@ $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available';
 $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
 $wb['password_click_to_set_txt'] = 'Click to set';
 $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/ro_reseller.lng b/interface/web/client/lib/lang/ro_reseller.lng
index 68e8a950f3..333c8bdb96 100644
--- a/interface/web/client/lib/lang/ro_reseller.lng
+++ b/interface/web/client/lib/lang/ro_reseller.lng
@@ -203,5 +203,7 @@ $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a n
 $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available';
 $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
 $wb['password_click_to_set_txt'] = 'Click to set';
+$wb['Reseller'] = 'Reseller';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/ru_client.lng b/interface/web/client/lib/lang/ru_client.lng
index befd6b15bf..94d0bb6a0d 100644
--- a/interface/web/client/lib/lang/ru_client.lng
+++ b/interface/web/client/lib/lang/ru_client.lng
@@ -200,5 +200,6 @@ $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt доступен';
 $wb['limit_directive_snippets_txt'] = 'Показать выбор конфигурации веб-сервера';
 $wb['password_click_to_set_txt'] = 'Клик для установки';
 $wb['limit_dns_record_error_notint'] = 'Лимит вторичных DNS-зон должен быть числом.';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Лимиты';
 ?>
diff --git a/interface/web/client/lib/lang/ru_reseller.lng b/interface/web/client/lib/lang/ru_reseller.lng
index 998a886990..f5806377c3 100644
--- a/interface/web/client/lib/lang/ru_reseller.lng
+++ b/interface/web/client/lib/lang/ru_reseller.lng
@@ -203,5 +203,7 @@ $wb['limit_database_quota_error_notint'] = 'Лимит квоты базы да
 $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt доступен';
 $wb['limit_directive_snippets_txt'] = 'Показать выбор конфигурации веб-сервера';
 $wb['password_click_to_set_txt'] = 'Клик для установки';
+$wb['Reseller'] = 'Reseller';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Лимиты';
 ?>
diff --git a/interface/web/client/lib/lang/se_client.lng b/interface/web/client/lib/lang/se_client.lng
index 2884302c18..fb1151ed8e 100644
--- a/interface/web/client/lib/lang/se_client.lng
+++ b/interface/web/client/lib/lang/se_client.lng
@@ -200,5 +200,6 @@ $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available';
 $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
 $wb['password_click_to_set_txt'] = 'Click to set';
 $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/se_reseller.lng b/interface/web/client/lib/lang/se_reseller.lng
index 68e8a950f3..333c8bdb96 100644
--- a/interface/web/client/lib/lang/se_reseller.lng
+++ b/interface/web/client/lib/lang/se_reseller.lng
@@ -203,5 +203,7 @@ $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a n
 $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available';
 $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
 $wb['password_click_to_set_txt'] = 'Click to set';
+$wb['Reseller'] = 'Reseller';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/sk_client.lng b/interface/web/client/lib/lang/sk_client.lng
index 3edec417cf..dcd291bc53 100644
--- a/interface/web/client/lib/lang/sk_client.lng
+++ b/interface/web/client/lib/lang/sk_client.lng
@@ -200,5 +200,6 @@ $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available';
 $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
 $wb['password_click_to_set_txt'] = 'Click to set';
 $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/sk_reseller.lng b/interface/web/client/lib/lang/sk_reseller.lng
index 4ae3ef5b97..9e1ec0a80f 100644
--- a/interface/web/client/lib/lang/sk_reseller.lng
+++ b/interface/web/client/lib/lang/sk_reseller.lng
@@ -203,5 +203,7 @@ $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a n
 $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available';
 $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
 $wb['password_click_to_set_txt'] = 'Click to set';
+$wb['Reseller'] = 'Reseller';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Limits';
 ?>
diff --git a/interface/web/client/lib/lang/tr_client.lng b/interface/web/client/lib/lang/tr_client.lng
index f071170966..9e8e6b9be3 100644
--- a/interface/web/client/lib/lang/tr_client.lng
+++ b/interface/web/client/lib/lang/tr_client.lng
@@ -202,5 +202,6 @@ $wb['btn_cancel_txt'] = 'Ä°ptal';
 $wb['invalid_vat_id'] = 'Vergi numarası geçersiz.';
 $wb['email_error_empty'] = 'E-posta boÅŸ olamaz.';
 $wb['limit_directive_snippets_txt'] = 'Web Sunucu Yapılandırma Seçimi Görüntülensin';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Sınırlar';
 ?>
diff --git a/interface/web/client/lib/lang/tr_reseller.lng b/interface/web/client/lib/lang/tr_reseller.lng
index e042301400..d7bc06429e 100644
--- a/interface/web/client/lib/lang/tr_reseller.lng
+++ b/interface/web/client/lib/lang/tr_reseller.lng
@@ -207,5 +207,7 @@ $wb['limit_database_user_txt'] = 'En Fazla Veritabanı Kullanıcısı Sayısı';
 $wb['limit_database_user_error_notint'] = 'Veritabanı kullanıcı sınırı bir sayı olmalıdır.';
 $wb['limit_database_quota_txt'] = 'Veritabanı Kotası';
 $wb['limit_database_quota_error_notint'] = 'Veritabanı kotası sınırı bir sayı olmalıdır.';
+$wb['Reseller'] = 'Reseller';
+$wb['Address'] = 'Address';
 $wb['Limits'] = 'Sınırlar';
 ?>
diff --git a/interface/web/client/templates/client_edit_address.htm b/interface/web/client/templates/client_edit_address.htm
index 86393c8e9d..689849287c 100644
--- a/interface/web/client/templates/client_edit_address.htm
+++ b/interface/web/client/templates/client_edit_address.htm
@@ -4,7 +4,7 @@
 <p><tmpl_var name="list_desc_txt"></p>
 
 
-        <legend>Address</legend>
+        <legend>{tmpl_var name='Address'}</legend>
             <div class="form-group">
                 <label for="company_name" class="col-sm-3 control-label">{tmpl_var name='company_name_txt'}</label>
                 <div class="col-sm-9"><input type="text" name="company_name" id="company_name" value="{tmpl_var name='company_name'}" class="form-control" /></div></div>
diff --git a/interface/web/client/templates/reseller_edit_address.htm b/interface/web/client/templates/reseller_edit_address.htm
index 69b6552938..5cb829a008 100644
--- a/interface/web/client/templates/reseller_edit_address.htm
+++ b/interface/web/client/templates/reseller_edit_address.htm
@@ -4,7 +4,7 @@
 <p><tmpl_var name="list_desc_txt"></p>
 
 
-        <legend>Address</legend>
+        <legend>{tmpl_var name='Address'}</legend>
             <div class="form-group">
                 <label for="company_name" class="col-sm-3 control-label">{tmpl_var name='company_name_txt'}</label>
                 <div class="col-sm-9"><input type="text" name="company_name" id="company_name" value="{tmpl_var name='company_name'}" class="form-control" /></div></div>
-- 
GitLab


From c6cb9f3dc7369985566a56bee01ba8cbd97aa45a Mon Sep 17 00:00:00 2001
From: Thom Pol <thom@amsterdamtech.nl>
Date: Sun, 24 May 2020 23:03:42 +0200
Subject: [PATCH 202/242] Fixed several language module issues (#4473)

---
 .../web/admin/templates/language_add.htm      |  3 +--
 .../web/admin/templates/language_complete.htm | 26 +++++++++----------
 .../web/admin/templates/language_edit.htm     | 20 ++++++++------
 .../web/admin/templates/language_export.htm   |  1 -
 .../web/admin/templates/language_import.htm   |  3 +--
 .../web/admin/templates/language_list.htm     |  4 +--
 6 files changed, 27 insertions(+), 30 deletions(-)

diff --git a/interface/web/admin/templates/language_add.htm b/interface/web/admin/templates/language_add.htm
index e124abf575..30dc4d153c 100644
--- a/interface/web/admin/templates/language_add.htm
+++ b/interface/web/admin/templates/language_add.htm
@@ -4,7 +4,6 @@
 <p><tmpl_var name="list_desc_txt"></p>
 
 
-        <legend>Language Add</legend>
             <div class="form-group">
                 <label for="lng_select" class="col-sm-3 control-label">{tmpl_var name='language_select_txt'}</label>
                 <div class="col-sm-9"><select name="lng_select" id="language" class="form-control flags">
@@ -22,4 +21,4 @@
         <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="admin/language_add.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="admin/language_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/admin/templates/language_complete.htm b/interface/web/admin/templates/language_complete.htm
index 5205b285d5..53f42fc8fe 100644
--- a/interface/web/admin/templates/language_complete.htm
+++ b/interface/web/admin/templates/language_complete.htm
@@ -13,20 +13,18 @@
     </tmpl_if>
 
     <div class="pnl_formsarea">
-        <legend>Language Complete</legend>
-            <div class="form-group">
-                <label for="lng_select" class="col-sm-3 control-label">{tmpl_var name='language_select_txt'}</label>
-                <div class="col-sm-9"><select name="lng_select" id="language" class="form-control flags">
-                    {tmpl_var name='language_option'}
-                </select></div>
+        <div class="form-group">
+             <label for="lng_select" class="col-sm-3 control-label">{tmpl_var name='language_select_txt'}</label>
+            <div class="col-sm-9">
+                <select name="lng_select" id="language" class="form-control flags">{tmpl_var name='language_option'}</select>
             </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="admin/language_complete.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="admin/language_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-			</div></div>
-        
-
-        
+        </div>
+		<div class="clear">
+            <div class="right">
+			    <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="admin/language_complete.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="admin/language_list.php">{tmpl_var name='btn_cancel_txt'}</button>
+			</div>
+        </div>       
     </div>
 
-</div>
\ No newline at end of file
+</div>
diff --git a/interface/web/admin/templates/language_edit.htm b/interface/web/admin/templates/language_edit.htm
index d3830494da..c42ebaa51e 100644
--- a/interface/web/admin/templates/language_edit.htm
+++ b/interface/web/admin/templates/language_edit.htm
@@ -4,16 +4,20 @@
 <p><tmpl_var name="list_desc_txt"></p>
 
 
-        <fieldset id="wf_area_language_edit"><legend>Language File Edit: {tmpl_var name="file_path"}</legend>
+        <fieldset id="wf_area_language_edit"><legend>{tmpl_var name="lang_file_txt"}: {tmpl_var name="file_path"}</legend>
             <span class="wf_oneField">
                 <tmpl_loop name="records">
                     <span class="wf_oneField">
-                        <label for="records[{tmpl_var name="key"}]" class="wf_preField">{tmpl_var name="key"}</label>
-                        <div class="col-sm-9"><input class="form-control" type="text" id="records[{tmpl_var name="key"}]" name="records[{tmpl_var name="key"}]" value="{tmpl_var name='val'}" ></div></span> 
-                </tmpl_loop>
-            </span>
-        </fieldset>  
-                
+                        <div class="col-sm-9">
+                            <label for="records[{tmpl_var name="key"}]" class="wf_preField">{tmpl_var name="key"}</label>
+                            <input class="form-control" type="text" id="records[{tmpl_var name="key"}]" name="records[{tmpl_var name="key"}]" value="{tmpl_var name='val'}" >
+                        </div>
+                    </span>
+                </tmpl_loop> 
+            </span> 
+        </fieldset>
+
+
         <input type="hidden" name="id" value="{tmpl_var name='id'}">
         <input type="hidden" name="lang" value="{tmpl_var name='lang'}">
         <input type="hidden" name="lang_file" value="{tmpl_var name='lang_file'}">
@@ -22,4 +26,4 @@
         <div class="wf_actions buttons">
             <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="admin/language_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="admin/language_list.php?lng_select={tmpl_var name='lang'}">{tmpl_var name='btn_cancel_txt'}</button>
-        </div>
\ No newline at end of file
+        </div>
diff --git a/interface/web/admin/templates/language_export.htm b/interface/web/admin/templates/language_export.htm
index b00a204b29..a115e6493a 100644
--- a/interface/web/admin/templates/language_export.htm
+++ b/interface/web/admin/templates/language_export.htm
@@ -4,7 +4,6 @@
 <p><tmpl_var name="list_desc_txt"></p>
 
 
-        <legend>Language Export</legend>
             <div class="form-group">
                 <label for="lng_select" class="col-sm-3 control-label">{tmpl_var name='language_select_txt'}</label>
                 <div class="col-sm-9"><select name="lng_select" id="lng_select" class="form-control flags">
diff --git a/interface/web/admin/templates/language_import.htm b/interface/web/admin/templates/language_import.htm
index 8bd653c13e..0761cc87ed 100644
--- a/interface/web/admin/templates/language_import.htm
+++ b/interface/web/admin/templates/language_import.htm
@@ -4,7 +4,6 @@
 <p><tmpl_var name="list_desc_txt"></p>
 
 
-		<legend>Language Import</legend>
             <div class="form-group">
                 <label for="lng_select" class="col-sm-3 control-label">{tmpl_var name='language_import_txt'}</label>
                 <input name="file" id="file" size="30" type="file" class="fileUpload" />
@@ -31,4 +30,4 @@
             <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="admin/language_import.php" data-form-upload="true">{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="admin/language_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-            </div></div>
\ No newline at end of file
+            </div></div>
diff --git a/interface/web/admin/templates/language_list.htm b/interface/web/admin/templates/language_list.htm
index 33897be0a1..0a80e5391c 100644
--- a/interface/web/admin/templates/language_list.htm
+++ b/interface/web/admin/templates/language_list.htm
@@ -3,8 +3,6 @@
 </div>
 <p><tmpl_var name="list_desc_txt"></p>
 
-
-        <legend>Tools</legend>
             
                 <div class="form-group">
                     <label for="lng_select" class="col-sm-3 control-label">{tmpl_var name='language_select_txt'}</label>
@@ -43,4 +41,4 @@
             </table>
 </div>
         
-    
\ No newline at end of file
+    
-- 
GitLab


From ab6ee8799fa7bc72270b17c2df0b4715c2be39ba Mon Sep 17 00:00:00 2001
From: Thom Pol <thom@amsterdamtech.nl>
Date: Sun, 24 May 2020 23:47:01 +0200
Subject: [PATCH 203/242] Fixes #4480

---
 interface/web/admin/templates/server_ip_edit.htm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/interface/web/admin/templates/server_ip_edit.htm b/interface/web/admin/templates/server_ip_edit.htm
index 9e895eac04..85f06432e8 100644
--- a/interface/web/admin/templates/server_ip_edit.htm
+++ b/interface/web/admin/templates/server_ip_edit.htm
@@ -4,7 +4,7 @@
 <p><tmpl_var name="list_desc_txt"></p>
 
 
-        <legend>IP Address</legend>
+        <legend>{tmpl_var name='server_ip_edit_title'}</legend>
             <div class="form-group">
                 <label for="server_id" class="col-sm-3 control-label">{tmpl_var name='server_id_txt'}</label>
                 <div class="col-sm-9"><select name="server_id" id="server_id" class="form-control">
@@ -42,4 +42,4 @@
         <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="admin/server_ip_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="admin/server_ip_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
-- 
GitLab


From 5c646738481813909e9f58b688b6e9171f5bcf04 Mon Sep 17 00:00:00 2001
From: Thom Pol <thom@amsterdamtech.nl>
Date: Sun, 24 May 2020 23:59:35 +0200
Subject: [PATCH 204/242] Fixes #4474

---
 interface/web/admin/form/server_ip_map.tform.php  | 4 ++--
 interface/web/admin/lib/lang/ar_server_ip_map.lng | 2 ++
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/interface/web/admin/form/server_ip_map.tform.php b/interface/web/admin/form/server_ip_map.tform.php
index 4f7ed3d28c..bdaac87429 100644
--- a/interface/web/admin/form/server_ip_map.tform.php
+++ b/interface/web/admin/form/server_ip_map.tform.php
@@ -28,8 +28,8 @@ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 
-$form["title"]    = "IPv4 Address mapping";
-$form["description"]  = "Form to map IPv4-addresses for Web-Server";
+$form["title"]    = "server_ip_map_title";
+$form["description"]  = "server_ip_map_desc";
 $form["name"]    = "server_ip_map";
 $form["action"]   = "server_ip_map_edit.php";
 $form["db_table"]  = "server_ip_map";
diff --git a/interface/web/admin/lib/lang/ar_server_ip_map.lng b/interface/web/admin/lib/lang/ar_server_ip_map.lng
index 68b196fb23..f02bdafd84 100644
--- a/interface/web/admin/lib/lang/ar_server_ip_map.lng
+++ b/interface/web/admin/lib/lang/ar_server_ip_map.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_map_title'] = 'IPv4 Address mapping';
+$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server';
 $wb['server_id_txt'] = 'Rewrite on Server';
 $wb['source_txt'] = 'Source IP';
 $wb['destination_txt'] = 'Destination IP';
-- 
GitLab


From 3cd63a2179f0cbc0b1c85e762960b3e8c32ac24c Mon Sep 17 00:00:00 2001
From: Thom Pol <thom@amsterdamtech.nl>
Date: Mon, 25 May 2020 00:05:08 +0200
Subject: [PATCH 205/242] Fixes #4474 (tweak)

---
 interface/web/admin/form/server_ip_map.tform.php     | 2 +-
 interface/web/admin/templates/server_ip_map_edit.htm | 1 -
 2 files changed, 1 insertion(+), 2 deletions(-)

diff --git a/interface/web/admin/form/server_ip_map.tform.php b/interface/web/admin/form/server_ip_map.tform.php
index bdaac87429..2374ca0ce0 100644
--- a/interface/web/admin/form/server_ip_map.tform.php
+++ b/interface/web/admin/form/server_ip_map.tform.php
@@ -46,7 +46,7 @@ $form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update,
 $form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete
 
 $form["tabs"]['server_ip_map'] = array (
-	'title'  => "IP Address Mapping",
+	'title'  => "server_ip_map_title",
 	'width'  => 80,
 	'template'  => "templates/server_ip_map_edit.htm",
 	'fields'  => array (
diff --git a/interface/web/admin/templates/server_ip_map_edit.htm b/interface/web/admin/templates/server_ip_map_edit.htm
index a53d982c85..bba26348ae 100644
--- a/interface/web/admin/templates/server_ip_map_edit.htm
+++ b/interface/web/admin/templates/server_ip_map_edit.htm
@@ -2,7 +2,6 @@
 	<h1><tmpl_var name="list_head_txt"></h1>
 </div>
 <p><tmpl_var name="list_desc_txt"></p>
-<legend>IP Address Mapping</legend>
 <div class="form-group">
 	<label for="server_id" class="col-sm-3 control-label">{tmpl_var name='server_id_txt'}</label>
 	<div class="col-sm-9">
-- 
GitLab


From 9e8048f790d26d82aa19d0b9f334445fb6dfde0e Mon Sep 17 00:00:00 2001
From: Webslice <webslice@bixels.nl>
Date: Mon, 25 May 2020 09:50:51 +0200
Subject: [PATCH 206/242] Add option to enable chrooted PHP-FPM by default per
 server

---
 install/tpl/server.ini.master                  |  1 +
 .../web/admin/form/server_config.tform.php     |  6 ++++++
 .../web/admin/lib/lang/ar_server_config.lng    |  1 +
 .../web/admin/lib/lang/bg_server_config.lng    |  1 +
 .../web/admin/lib/lang/br_server_config.lng    |  1 +
 .../web/admin/lib/lang/ca_server_config.lng    |  1 +
 .../web/admin/lib/lang/cz_server_config.lng    |  1 +
 .../web/admin/lib/lang/de_server_config.lng    |  1 +
 .../web/admin/lib/lang/dk_server_config.lng    |  1 +
 .../web/admin/lib/lang/el_server_config.lng    |  1 +
 .../web/admin/lib/lang/en_server_config.lng    |  1 +
 .../web/admin/lib/lang/es_server_config.lng    |  1 +
 .../web/admin/lib/lang/fi_server_config.lng    |  1 +
 .../web/admin/lib/lang/fr_server_config.lng    |  1 +
 .../web/admin/lib/lang/hr_server_config.lng    |  1 +
 .../web/admin/lib/lang/hu_server_config.lng    |  1 +
 .../web/admin/lib/lang/id_server_config.lng    |  1 +
 .../web/admin/lib/lang/it_server_config.lng    |  1 +
 .../web/admin/lib/lang/ja_server_config.lng    |  1 +
 .../web/admin/lib/lang/nl_server_config.lng    |  1 +
 .../web/admin/lib/lang/pl_server_config.lng    |  1 +
 .../web/admin/lib/lang/pt_server_config.lng    |  1 +
 .../web/admin/lib/lang/ro_server_config.lng    |  1 +
 .../web/admin/lib/lang/ru_server_config.lng    |  1 +
 .../web/admin/lib/lang/se_server_config.lng    |  1 +
 .../web/admin/lib/lang/sk_server_config.lng    |  1 +
 .../web/admin/lib/lang/tr_server_config.lng    |  1 +
 .../admin/templates/server_config_web_edit.htm |  6 ++++++
 interface/web/sites/web_vhost_domain_edit.php  | 18 ++++++++++++------
 29 files changed, 50 insertions(+), 6 deletions(-)

diff --git a/install/tpl/server.ini.master b/install/tpl/server.ini.master
index 45a5644392..5edc09807c 100644
--- a/install/tpl/server.ini.master
+++ b/install/tpl/server.ini.master
@@ -121,6 +121,7 @@ overquota_db_notify_client=y
 overquota_notify_onok=n
 logging=yes
 php_fpm_reload_mode=reload
+php_fpm_default_chroot=n
 
 [dns]
 bind_user=root
diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php
index 945e422da2..b95ab024a3 100644
--- a/interface/web/admin/form/server_config.tform.php
+++ b/interface/web/admin/form/server_config.tform.php
@@ -1274,6 +1274,12 @@ $form["tabs"]['web'] = array(
 			'value' => array('no' => 'disabled_txt', 'fast-cgi' => 'Fast-CGI', 'cgi' => 'CGI', 'mod' => 'Mod-PHP', 'suphp' => 'SuPHP', 'php-fpm' => 'PHP-FPM', 'hhvm' => 'HHVM'),
 			'searchable' => 2
 		),
+		'php_fpm_default_chroot' => array(
+			'datatype' => 'VARCHAR',
+			'formtype' => 'CHECKBOX',
+			'default' => 'n',
+			'value' => array(0 => 'n', 1 => 'y')
+		),
 		'php_fpm_incron_reload' => array(
 			'datatype' => 'VARCHAR',
 			'formtype' => 'CHECKBOX',
diff --git a/interface/web/admin/lib/lang/ar_server_config.lng b/interface/web/admin/lib/lang/ar_server_config.lng
index 520fdb1028..5865981382 100644
--- a/interface/web/admin/lib/lang/ar_server_config.lng
+++ b/interface/web/admin/lib/lang/ar_server_config.lng
@@ -264,6 +264,7 @@ $wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounte
 $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin';
 $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client';
 $wb['php_handler_txt'] = 'Default PHP Handler';
+$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM';
 $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM';
 $wb['disabled_txt'] = 'Disabled';
 $wb['dkim_strength_txt'] = 'DKIM strength';
diff --git a/interface/web/admin/lib/lang/bg_server_config.lng b/interface/web/admin/lib/lang/bg_server_config.lng
index 1ca873fd2d..cda45345cb 100644
--- a/interface/web/admin/lib/lang/bg_server_config.lng
+++ b/interface/web/admin/lib/lang/bg_server_config.lng
@@ -264,6 +264,7 @@ $wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounte
 $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin';
 $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client';
 $wb['php_handler_txt'] = 'Default PHP Handler';
+$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM';
 $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM';
 $wb['disabled_txt'] = 'Disabled';
 $wb['dkim_strength_txt'] = 'DKIM strength';
diff --git a/interface/web/admin/lib/lang/br_server_config.lng b/interface/web/admin/lib/lang/br_server_config.lng
index 79a956cfad..7c2c5f3db1 100644
--- a/interface/web/admin/lib/lang/br_server_config.lng
+++ b/interface/web/admin/lib/lang/br_server_config.lng
@@ -215,6 +215,7 @@ $wb['overquota_db_notify_admin_txt'] = 'Enviar alerta da cota do banco de dados
 $wb['overquota_db_notify_client_txt'] = 'Enviar alerta da cota do banco de dados para o cliente';
 $wb['monitor_system_updates_txt'] = 'Verificar por atualizações do sistema';
 $wb['php_handler_txt'] = 'Manipulador padrão do php';
+$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM';
 $wb['php_fpm_incron_reload_txt'] = 'Instale o arquivo de disparo do incron para recarregar o php-fpm.';
 $wb['disabled_txt'] = 'Desabilitado';
 $wb['dkim_strength_txt'] = 'Dificuldade do DKIM';
diff --git a/interface/web/admin/lib/lang/ca_server_config.lng b/interface/web/admin/lib/lang/ca_server_config.lng
index b1ac3545e7..ee03ca41ca 100644
--- a/interface/web/admin/lib/lang/ca_server_config.lng
+++ b/interface/web/admin/lib/lang/ca_server_config.lng
@@ -211,6 +211,7 @@ $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin';
 $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client';
 $wb['monitor_system_updates_txt'] = 'Check for Linux updates';
 $wb['php_handler_txt'] = 'Default PHP Handler';
+$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM';
 $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM';
 $wb['disabled_txt'] = 'Disabled';
 $wb['dkim_strength_txt'] = 'DKIM strength';
diff --git a/interface/web/admin/lib/lang/cz_server_config.lng b/interface/web/admin/lib/lang/cz_server_config.lng
index a4219cafa3..649938c0fb 100644
--- a/interface/web/admin/lib/lang/cz_server_config.lng
+++ b/interface/web/admin/lib/lang/cz_server_config.lng
@@ -260,6 +260,7 @@ $wb['backup_delete_txt'] = 'Odstranit zálohy pokud byla smazána doména/webov
 $wb['overquota_db_notify_admin_txt'] = 'Poslat varování o překročení nebo vyčerpání DB kvót adminovi';
 $wb['overquota_db_notify_client_txt'] = 'Poslat varování o překročení nebo vyčerpání DB kvót klientovi';
 $wb['php_handler_txt'] = 'Výchozí PHP obslužná rutina';
+$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM';
 $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM';
 $wb['disabled_txt'] = 'Vypnuto';
 $wb['php_ini_check_minutes_txt'] = 'Provádět kontrolu změny obsahu souboru php.ini každých X minut';
diff --git a/interface/web/admin/lib/lang/de_server_config.lng b/interface/web/admin/lib/lang/de_server_config.lng
index aa7818f9ad..de1a84f30e 100644
--- a/interface/web/admin/lib/lang/de_server_config.lng
+++ b/interface/web/admin/lib/lang/de_server_config.lng
@@ -270,6 +270,7 @@ $wb['php_ini_check_minutes_txt'] = 'Prüfe php.ini alle X Minuten auf Änderunge
 $wb['php_ini_check_minutes_error_empty'] = 'Bitte geben Sie einen Wert an, wie oft die php.ini auf Änderungen geprüft werden soll.';
 $wb['php_ini_check_minutes_info_txt'] = '0 = keine Prüfung';
 $wb['php_handler_txt'] = 'Standard-PHP-Handler';
+$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM';
 $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM';
 $wb['enable_spdy_txt'] = 'Stellt SPDY/HTTP2 zur Verfügung';
 $wb['disable_bind_log_txt'] = 'Disable bind9 messages for Loglevel WARN';
diff --git a/interface/web/admin/lib/lang/dk_server_config.lng b/interface/web/admin/lib/lang/dk_server_config.lng
index 0020d5347a..38f5a90281 100644
--- a/interface/web/admin/lib/lang/dk_server_config.lng
+++ b/interface/web/admin/lib/lang/dk_server_config.lng
@@ -263,6 +263,7 @@ $wb['backup_delete_txt'] = 'Delete backups on domain/website delete';
 $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin';
 $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client';
 $wb['php_handler_txt'] = 'Default PHP Handler';
+$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM';
 $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM';
 $wb['disabled_txt'] = 'Disabled';
 $wb['dkim_strength_txt'] = 'DKIM strength';
diff --git a/interface/web/admin/lib/lang/el_server_config.lng b/interface/web/admin/lib/lang/el_server_config.lng
index 29ad1bf454..50665670b3 100644
--- a/interface/web/admin/lib/lang/el_server_config.lng
+++ b/interface/web/admin/lib/lang/el_server_config.lng
@@ -264,6 +264,7 @@ $wb['backup_delete_txt'] = 'Delete backups on domain/website delete';
 $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin';
 $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client';
 $wb['php_handler_txt'] = 'Default PHP Handler';
+$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM';
 $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM';
 $wb['disabled_txt'] = 'Disabled';
 $wb['dkim_strength_txt'] = 'DKIM strength';
diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng
index 9093ac6baa..70801dca2f 100644
--- a/interface/web/admin/lib/lang/en_server_config.lng
+++ b/interface/web/admin/lib/lang/en_server_config.lng
@@ -215,6 +215,7 @@ $wb["overquota_db_notify_admin_txt"] = 'Send DB quota warnings to admin';
 $wb["overquota_db_notify_client_txt"] = 'Send DB quota warnings to client';
 $wb['monitor_system_updates_txt'] = 'Check for Linux updates';
 $wb['php_handler_txt'] = "Default PHP Handler";
+$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM';
 $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM';
 $wb['disabled_txt'] = 'Disabled';
 $wb['dkim_strength_txt'] = 'DKIM strength';
diff --git a/interface/web/admin/lib/lang/es_server_config.lng b/interface/web/admin/lib/lang/es_server_config.lng
index 2b1ca0a221..ca61f29883 100755
--- a/interface/web/admin/lib/lang/es_server_config.lng
+++ b/interface/web/admin/lib/lang/es_server_config.lng
@@ -209,6 +209,7 @@ $wb['php_fpm_socket_dir_txt'] = 'Directorio para el socket de PHP-FPM';
 $wb['php_fpm_start_port_error_empty'] = 'El puerto de inicio de PHP-FPM está vacío.';
 $wb['php_fpm_start_port_txt'] = 'Puerto de inicio de PHP-FPM';
 $wb['php_handler_txt'] = 'Controlador PHP por defecto';
+$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM';
 $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM';
 $wb['php_ini_check_minutes_error_empty'] = 'Por favor especifique un valor para definir con qué frecuencia se deberían buscar cambios en el archivo php.ini.';
 $wb['php_ini_check_minutes_info_txt'] = '0 = no comprobar';
diff --git a/interface/web/admin/lib/lang/fi_server_config.lng b/interface/web/admin/lib/lang/fi_server_config.lng
index 6724ea0e85..060f956776 100755
--- a/interface/web/admin/lib/lang/fi_server_config.lng
+++ b/interface/web/admin/lib/lang/fi_server_config.lng
@@ -264,6 +264,7 @@ $wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounte
 $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin';
 $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client';
 $wb['php_handler_txt'] = 'Default PHP Handler';
+$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM';
 $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM';
 $wb['disabled_txt'] = 'Disabled';
 $wb['dkim_strength_txt'] = 'DKIM strength';
diff --git a/interface/web/admin/lib/lang/fr_server_config.lng b/interface/web/admin/lib/lang/fr_server_config.lng
index a505ceef37..3efb6b3d9c 100644
--- a/interface/web/admin/lib/lang/fr_server_config.lng
+++ b/interface/web/admin/lib/lang/fr_server_config.lng
@@ -262,6 +262,7 @@ $wb['backup_delete_txt'] = 'Delete backups on domain/website delete';
 $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin';
 $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client';
 $wb['php_handler_txt'] = 'Default PHP Handler';
+$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM';
 $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM';
 $wb['disabled_txt'] = 'Disabled';
 $wb['dkim_strength_txt'] = 'DKIM strength';
diff --git a/interface/web/admin/lib/lang/hr_server_config.lng b/interface/web/admin/lib/lang/hr_server_config.lng
index a390c29e6c..500b1e3a8c 100644
--- a/interface/web/admin/lib/lang/hr_server_config.lng
+++ b/interface/web/admin/lib/lang/hr_server_config.lng
@@ -264,6 +264,7 @@ $wb['do_not_try_rescue_mongodb_txt'] = 'Disable MongoDB monitoring';
 $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin';
 $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client';
 $wb['php_handler_txt'] = 'Default PHP Handler';
+$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM';
 $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM';
 $wb['disabled_txt'] = 'Disabled';
 $wb['dkim_strength_txt'] = 'DKIM strength';
diff --git a/interface/web/admin/lib/lang/hu_server_config.lng b/interface/web/admin/lib/lang/hu_server_config.lng
index 3da2d0ad4e..0ba1d523e1 100644
--- a/interface/web/admin/lib/lang/hu_server_config.lng
+++ b/interface/web/admin/lib/lang/hu_server_config.lng
@@ -264,6 +264,7 @@ $wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounte
 $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin';
 $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client';
 $wb['php_handler_txt'] = 'Default PHP Handler';
+$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM';
 $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM';
 $wb['disabled_txt'] = 'Disabled';
 $wb['dkim_strength_txt'] = 'DKIM strength';
diff --git a/interface/web/admin/lib/lang/id_server_config.lng b/interface/web/admin/lib/lang/id_server_config.lng
index c79b296072..15693cabc4 100644
--- a/interface/web/admin/lib/lang/id_server_config.lng
+++ b/interface/web/admin/lib/lang/id_server_config.lng
@@ -264,6 +264,7 @@ $wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounte
 $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin';
 $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client';
 $wb['php_handler_txt'] = 'Default PHP Handler';
+$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM';
 $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM';
 $wb['disabled_txt'] = 'Disabled';
 $wb['dkim_strength_txt'] = 'DKIM strength';
diff --git a/interface/web/admin/lib/lang/it_server_config.lng b/interface/web/admin/lib/lang/it_server_config.lng
index 89491ae497..de074d94c1 100644
--- a/interface/web/admin/lib/lang/it_server_config.lng
+++ b/interface/web/admin/lib/lang/it_server_config.lng
@@ -262,6 +262,7 @@ $wb['backup_delete_txt'] = 'Delete backups on domain/website delete';
 $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin';
 $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client';
 $wb['php_handler_txt'] = 'Default PHP Handler';
+$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM';
 $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM';
 $wb['disabled_txt'] = 'Disabled';
 $wb['dkim_strength_txt'] = 'DKIM strength';
diff --git a/interface/web/admin/lib/lang/ja_server_config.lng b/interface/web/admin/lib/lang/ja_server_config.lng
index 6569591233..6690aadd20 100644
--- a/interface/web/admin/lib/lang/ja_server_config.lng
+++ b/interface/web/admin/lib/lang/ja_server_config.lng
@@ -264,6 +264,7 @@ $wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounte
 $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin';
 $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client';
 $wb['php_handler_txt'] = 'Default PHP Handler';
+$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM';
 $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM';
 $wb['disabled_txt'] = 'Disabled';
 $wb['dkim_strength_txt'] = 'DKIM strength';
diff --git a/interface/web/admin/lib/lang/nl_server_config.lng b/interface/web/admin/lib/lang/nl_server_config.lng
index 1e398f9bdc..7d3260a89c 100644
--- a/interface/web/admin/lib/lang/nl_server_config.lng
+++ b/interface/web/admin/lib/lang/nl_server_config.lng
@@ -264,6 +264,7 @@ $wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounte
 $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin';
 $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client';
 $wb['php_handler_txt'] = 'Default PHP Handler';
+$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM';
 $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM';
 $wb['disabled_txt'] = 'Disabled';
 $wb['dkim_strength_txt'] = 'DKIM strength';
diff --git a/interface/web/admin/lib/lang/pl_server_config.lng b/interface/web/admin/lib/lang/pl_server_config.lng
index 87ec7fc285..02d22662ff 100644
--- a/interface/web/admin/lib/lang/pl_server_config.lng
+++ b/interface/web/admin/lib/lang/pl_server_config.lng
@@ -264,6 +264,7 @@ $wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounte
 $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin';
 $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client';
 $wb['php_handler_txt'] = 'Default PHP Handler';
+$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM';
 $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM';
 $wb['disabled_txt'] = 'Disabled';
 $wb['dkim_strength_txt'] = 'DKIM strength';
diff --git a/interface/web/admin/lib/lang/pt_server_config.lng b/interface/web/admin/lib/lang/pt_server_config.lng
index e1df35f548..0ec4c89827 100644
--- a/interface/web/admin/lib/lang/pt_server_config.lng
+++ b/interface/web/admin/lib/lang/pt_server_config.lng
@@ -264,6 +264,7 @@ $wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounte
 $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin';
 $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client';
 $wb['php_handler_txt'] = 'Default PHP Handler';
+$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM';
 $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM';
 $wb['disabled_txt'] = 'Disabled';
 $wb['dkim_strength_txt'] = 'DKIM strength';
diff --git a/interface/web/admin/lib/lang/ro_server_config.lng b/interface/web/admin/lib/lang/ro_server_config.lng
index 6d7dc3d8ca..f8da71cf01 100644
--- a/interface/web/admin/lib/lang/ro_server_config.lng
+++ b/interface/web/admin/lib/lang/ro_server_config.lng
@@ -264,6 +264,7 @@ $wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounte
 $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin';
 $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client';
 $wb['php_handler_txt'] = 'Default PHP Handler';
+$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM';
 $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM';
 $wb['disabled_txt'] = 'Disabled';
 $wb['dkim_strength_txt'] = 'DKIM strength';
diff --git a/interface/web/admin/lib/lang/ru_server_config.lng b/interface/web/admin/lib/lang/ru_server_config.lng
index 027e41c13e..2a721bfac1 100644
--- a/interface/web/admin/lib/lang/ru_server_config.lng
+++ b/interface/web/admin/lib/lang/ru_server_config.lng
@@ -264,6 +264,7 @@ $wb['backup_dir_mount_cmd_txt'] = 'Выполните команду монти
 $wb['overquota_db_notify_admin_txt'] = 'Присылать предупреждения квоты DB администратору';
 $wb['overquota_db_notify_client_txt'] = 'Присылать предупреждения квоты DB клиенту';
 $wb['php_handler_txt'] = 'Обработчик PHP по умолчанию';
+$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM';
 $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM';
 $wb['disabled_txt'] = 'Отключено';
 $wb['dkim_strength_txt'] = 'Стойкость DKIM';
diff --git a/interface/web/admin/lib/lang/se_server_config.lng b/interface/web/admin/lib/lang/se_server_config.lng
index be8742f80c..6e27cbb4a6 100644
--- a/interface/web/admin/lib/lang/se_server_config.lng
+++ b/interface/web/admin/lib/lang/se_server_config.lng
@@ -264,6 +264,7 @@ $wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounte
 $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin';
 $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client';
 $wb['php_handler_txt'] = 'Default PHP Handler';
+$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM';
 $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM';
 $wb['disabled_txt'] = 'Disabled';
 $wb['dkim_strength_txt'] = 'DKIM strength';
diff --git a/interface/web/admin/lib/lang/sk_server_config.lng b/interface/web/admin/lib/lang/sk_server_config.lng
index 659a83e7d4..a244690cb2 100644
--- a/interface/web/admin/lib/lang/sk_server_config.lng
+++ b/interface/web/admin/lib/lang/sk_server_config.lng
@@ -264,6 +264,7 @@ $wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounte
 $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin';
 $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client';
 $wb['php_handler_txt'] = 'Default PHP Handler';
+$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM';
 $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM';
 $wb['disabled_txt'] = 'Disabled';
 $wb['dkim_strength_txt'] = 'DKIM strength';
diff --git a/interface/web/admin/lib/lang/tr_server_config.lng b/interface/web/admin/lib/lang/tr_server_config.lng
index 76812dd90d..ddc679d78e 100644
--- a/interface/web/admin/lib/lang/tr_server_config.lng
+++ b/interface/web/admin/lib/lang/tr_server_config.lng
@@ -215,6 +215,7 @@ $wb['overquota_db_notify_admin_txt'] = 'Veritabanı Kotası Bildirimleri Yöneti
 $wb['overquota_db_notify_client_txt'] = 'Veritabanı Kotası Bildirimleri Müşteriye Gönderilsin';
 $wb['monitor_system_updates_txt'] = 'Linux Güncellemeleri Denetlensin';
 $wb['php_handler_txt'] = 'Varsayılan PHP İşleyici';
+$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM';
 $wb['disabled_txt'] = 'Devre Dışı';
 $wb['dkim_strength_txt'] = 'DKIM zorluÄŸu';
 $wb['monitor_system_updates_txt'] = 'Linux Güncelleme Denetimi';
diff --git a/interface/web/admin/templates/server_config_web_edit.htm b/interface/web/admin/templates/server_config_web_edit.htm
index 1031eea183..f5f38affe7 100644
--- a/interface/web/admin/templates/server_config_web_edit.htm
+++ b/interface/web/admin/templates/server_config_web_edit.htm
@@ -316,6 +316,12 @@
                             {tmpl_var name='php_handler'}
                         </select></div>
                 </div>
+                <div class="form-group">
+                    <label class="col-sm-3 control-label">{tmpl_var name='php_fpm_default_chroot_txt'}</label>
+                    <div class="col-sm-9">
+                        {tmpl_var name='php_fpm_default_chroot'}
+                    </div>
+                </div>
                 <div class="form-group">
                     <label class="col-sm-3 control-label">{tmpl_var name='php_fpm_incron_reload_txt'}</label>
                     <div class="col-sm-9">
diff --git a/interface/web/sites/web_vhost_domain_edit.php b/interface/web/sites/web_vhost_domain_edit.php
index 7f0cd697e9..81415f194a 100644
--- a/interface/web/sites/web_vhost_domain_edit.php
+++ b/interface/web/sites/web_vhost_domain_edit.php
@@ -1430,6 +1430,12 @@ class page_action extends tform_actions {
 			$log_retention = 10;
 		}
 
+		// Get default value for chrooted PHP-FPM
+		$php_fpm_chroot = 'n';
+		if (!empty($web_config['php_fpm_default_chroot'])) {
+			$php_fpm_chroot = $web_config['php_fpm_default_chroot'];
+		}
+
 		if($this->_vhostdomain_type == 'domain') {
 			$document_root = str_replace("[website_id]", $this->id, $web_config["website_path"]);
 			$document_root = str_replace("[website_idhash_1]", $this->id_hash($page_form->id, 1), $document_root);
@@ -1462,8 +1468,8 @@ class page_action extends tform_actions {
 			$htaccess_allow_override = $web_config["htaccess_allow_override"];
 			$added_by = $_SESSION['s']['user']['username'];
 
-			$sql = "UPDATE web_domain SET system_user = ?, system_group = ?, document_root = ?, allow_override = ?, php_open_basedir = ?, added_date = CURDATE(), added_by = ?, log_retention = ? WHERE domain_id = ?";
-			$app->db->query($sql, $system_user, $system_group, $document_root, $htaccess_allow_override, $php_open_basedir, $added_by, $log_retention, $this->id);
+			$sql = "UPDATE web_domain SET system_user = ?, system_group = ?, document_root = ?, allow_override = ?, php_open_basedir = ?, added_date = CURDATE(), added_by = ?, log_retention = ?, php_fpm_chroot = ? WHERE domain_id = ?";
+			$app->db->query($sql, $system_user, $system_group, $document_root, $htaccess_allow_override, $php_open_basedir, $added_by, $log_retention, $php_fpm_chroot, $this->id);
 		} else  {
 			// Set the values for document_root, system_user and system_group
 			$system_user = $this->parent_domain_record['system_user'];
@@ -1475,12 +1481,12 @@ class page_action extends tform_actions {
 			$php_open_basedir = str_replace("[website_domain]", $web_rec['domain'], $php_open_basedir);
 			$htaccess_allow_override = $this->parent_domain_record['allow_override'];
 			$added_by = $_SESSION['s']['user']['username'];
-			
-			$sql = "UPDATE web_domain SET sys_groupid = ?, system_user = ?, system_group = ?, document_root = ?, allow_override = ?, php_open_basedir = ?, added_date = CURDATE(), added_by = ?, log_retention = ? WHERE domain_id = ?";
-			$app->db->query($sql, $this->parent_domain_record['sys_groupid'], $system_user, $system_group, $document_root, $htaccess_allow_override, $php_open_basedir, $added_by, $log_retention, $this->id);
+
+			$sql = "UPDATE web_domain SET sys_groupid = ?, system_user = ?, system_group = ?, document_root = ?, allow_override = ?, php_open_basedir = ?, added_date = CURDATE(), added_by = ?, log_retention = ?, php_fpm_chroot = ? WHERE domain_id = ?";
+			$app->db->query($sql, $this->parent_domain_record['sys_groupid'], $system_user, $system_group, $document_root, $htaccess_allow_override, $php_open_basedir, $added_by, $log_retention, $php_fpm_chroot, $this->id);
 		}
 		if(isset($this->dataRecord['folder_directive_snippets'])) $app->db->query("UPDATE web_domain SET folder_directive_snippets = ? WHERE domain_id = ?", $this->dataRecord['folder_directive_snippets'], $this->id);
-		
+
 		// Add a datalog insert without letsencrypt and then an update with letsencrypt enabled (see also onBeforeInsert)
 		if($this->_letsencrypt_on_insert == true) {
 			$new_data_record = $app->tform->getDataRecord($this->id);
-- 
GitLab


From 8183c38bdd1ac60f0537c581dcacde9c566a1615 Mon Sep 17 00:00:00 2001
From: Thom Pol <thom@amsterdamtech.nl>
Date: Mon, 25 May 2020 13:51:37 +0200
Subject: [PATCH 207/242] Disable TLSv1 and TLSv1.1

---
 server/conf/nginx_vhost.conf.master | 2 +-
 server/conf/vhost.conf.master       | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/server/conf/nginx_vhost.conf.master b/server/conf/nginx_vhost.conf.master
index 4487e4e450..978139174f 100644
--- a/server/conf/nginx_vhost.conf.master
+++ b/server/conf/nginx_vhost.conf.master
@@ -18,7 +18,7 @@ server {
         listen <tmpl_var name='ip_address'>:<tmpl_var name='proxy_protocol_https'> ssl proxy_protocol;
 </tmpl_if>
 </tmpl_if>
-		ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
+		ssl_protocols TLSv1.2;
 		# ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
 		# ssl_prefer_server_ciphers on;
 <tmpl_if name='ipv6_enabled'>
diff --git a/server/conf/vhost.conf.master b/server/conf/vhost.conf.master
index f6ad4b830f..0612c13f7f 100644
--- a/server/conf/vhost.conf.master
+++ b/server/conf/vhost.conf.master
@@ -52,7 +52,7 @@
 <tmpl_if name='ssl_enabled'>
 <tmpl_if name='enable_http2' op='==' value='y'>
 		Protocols h2 http/1.1
-		SSLProtocol All -SSLv2 -SSLv3
+		SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
 		SSLCipherSuite 'EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS'
 </tmpl_if>
 </tmpl_if>
@@ -79,7 +79,7 @@
 		<IfModule mod_ssl.c>
 <tmpl_if name='ssl_enabled'>
 		SSLEngine on
-		SSLProtocol All -SSLv2 -SSLv3
+		SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
 		# SSLCipherSuite          ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS
 		SSLHonorCipherOrder     on
 		# <IfModule mod_headers.c>
-- 
GitLab


From f589bbbf16a756dbfa69d9d339000eaaa412e949 Mon Sep 17 00:00:00 2001
From: Thom Pol <thom@amsterdamtech.nl>
Date: Mon, 25 May 2020 22:14:05 +0200
Subject: [PATCH 208/242] Fixes #4725

---
 interface/lib/classes/custom_datasource.inc.php | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/interface/lib/classes/custom_datasource.inc.php b/interface/lib/classes/custom_datasource.inc.php
index c50d585027..57078388f0 100644
--- a/interface/lib/classes/custom_datasource.inc.php
+++ b/interface/lib/classes/custom_datasource.inc.php
@@ -161,9 +161,10 @@ class custom_datasource {
 			$sql = "SELECT $server_type as server_id FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?";
 			$client = $app->db->queryOneRecord($sql, $client_group_id);
 			if($client['server_id'] > 0) {
-				//* Select the default server for the client
-				$sql = "SELECT server_id,server_name FROM server WHERE server_id = ?";
-				$records = $app->db->queryAllRecords($sql, $client['server_id']);
+				///* Select the available servers for the client
+				$clientservers = $client['server_id'];
+				$sql = "SELECT server_id,server_name FROM server WHERE server_id IN ($clientservers) ORDER BY server_name";
+				$records = $app->db->queryAllRecords($sql);
 			} else {
 				//* Not able to find the clients defaults, use this as fallback and add a warning message to the log
 				$app->log('Unable to find default server for client in custom_datasource.inc.php', 1);
-- 
GitLab


From ba4577bac30ba879be2f3f6e8feeaa21da40f245 Mon Sep 17 00:00:00 2001
From: Thom Pol <thom@amsterdamtech.nl>
Date: Tue, 26 May 2020 17:19:57 +0200
Subject: [PATCH 209/242] Revert "Fixes #4725"

This reverts commit f589bbbf16a756dbfa69d9d339000eaaa412e949
---
 interface/lib/classes/custom_datasource.inc.php | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/interface/lib/classes/custom_datasource.inc.php b/interface/lib/classes/custom_datasource.inc.php
index 57078388f0..c50d585027 100644
--- a/interface/lib/classes/custom_datasource.inc.php
+++ b/interface/lib/classes/custom_datasource.inc.php
@@ -161,10 +161,9 @@ class custom_datasource {
 			$sql = "SELECT $server_type as server_id FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?";
 			$client = $app->db->queryOneRecord($sql, $client_group_id);
 			if($client['server_id'] > 0) {
-				///* Select the available servers for the client
-				$clientservers = $client['server_id'];
-				$sql = "SELECT server_id,server_name FROM server WHERE server_id IN ($clientservers) ORDER BY server_name";
-				$records = $app->db->queryAllRecords($sql);
+				//* Select the default server for the client
+				$sql = "SELECT server_id,server_name FROM server WHERE server_id = ?";
+				$records = $app->db->queryAllRecords($sql, $client['server_id']);
 			} else {
 				//* Not able to find the clients defaults, use this as fallback and add a warning message to the log
 				$app->log('Unable to find default server for client in custom_datasource.inc.php', 1);
-- 
GitLab


From 4d622544edd4572532b2ac42a311f8ede01b722c Mon Sep 17 00:00:00 2001
From: Thom Pol <thom@amsterdamtech.nl>
Date: Tue, 26 May 2020 17:22:23 +0200
Subject: [PATCH 210/242] Server select fix (fixes #4725)

---
 interface/lib/classes/custom_datasource.inc.php | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/interface/lib/classes/custom_datasource.inc.php b/interface/lib/classes/custom_datasource.inc.php
index c50d585027..57078388f0 100644
--- a/interface/lib/classes/custom_datasource.inc.php
+++ b/interface/lib/classes/custom_datasource.inc.php
@@ -161,9 +161,10 @@ class custom_datasource {
 			$sql = "SELECT $server_type as server_id FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?";
 			$client = $app->db->queryOneRecord($sql, $client_group_id);
 			if($client['server_id'] > 0) {
-				//* Select the default server for the client
-				$sql = "SELECT server_id,server_name FROM server WHERE server_id = ?";
-				$records = $app->db->queryAllRecords($sql, $client['server_id']);
+				///* Select the available servers for the client
+				$clientservers = $client['server_id'];
+				$sql = "SELECT server_id,server_name FROM server WHERE server_id IN ($clientservers) ORDER BY server_name";
+				$records = $app->db->queryAllRecords($sql);
 			} else {
 				//* Not able to find the clients defaults, use this as fallback and add a warning message to the log
 				$app->log('Unable to find default server for client in custom_datasource.inc.php', 1);
-- 
GitLab


From 9e1fe1b51c017b8dc97dd15187896c31429bded8 Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Tue, 26 May 2020 17:51:21 +0200
Subject: [PATCH 211/242] Update custom_datasource.inc.php

---
 interface/lib/classes/custom_datasource.inc.php | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/interface/lib/classes/custom_datasource.inc.php b/interface/lib/classes/custom_datasource.inc.php
index 57078388f0..3158fdde1a 100644
--- a/interface/lib/classes/custom_datasource.inc.php
+++ b/interface/lib/classes/custom_datasource.inc.php
@@ -162,9 +162,9 @@ class custom_datasource {
 			$client = $app->db->queryOneRecord($sql, $client_group_id);
 			if($client['server_id'] > 0) {
 				///* Select the available servers for the client
-				$clientservers = $client['server_id'];
-				$sql = "SELECT server_id,server_name FROM server WHERE server_id IN ($clientservers) ORDER BY server_name";
-				$records = $app->db->queryAllRecords($sql);
+				$clientservers = explode(',',$client['server_id']);
+				$sql = "SELECT server_id,server_name FROM server WHERE server_id IN ? ORDER BY server_name";
+				$records = $app->db->queryAllRecords($sql,$clientservers);
 			} else {
 				//* Not able to find the clients defaults, use this as fallback and add a warning message to the log
 				$app->log('Unable to find default server for client in custom_datasource.inc.php', 1);
-- 
GitLab


From 15ae954a0cf8978ad9a3a3e9da6db7f45722ddcc Mon Sep 17 00:00:00 2001
From: Ninos <me@ninosego.de>
Date: Tue, 26 May 2020 18:24:00 +0200
Subject: [PATCH 212/242] Added: SSH authentication option (password, key,
 both)

---
 install/tpl/system.ini.master                             | 1 +
 interface/web/admin/form/system_config.tform.php          | 6 ++++++
 interface/web/admin/lib/lang/de_system_config.lng         | 4 ++++
 interface/web/admin/lib/lang/en_system_config.lng         | 4 ++++
 interface/web/admin/templates/system_config_misc_edit.htm | 6 ++++++
 interface/web/sites/shell_user_edit.php                   | 3 +++
 interface/web/sites/templates/shell_user_edit.htm         | 4 ++++
 7 files changed, 28 insertions(+)

diff --git a/install/tpl/system.ini.master b/install/tpl/system.ini.master
index 4df1a877dc..873b0e7372 100644
--- a/install/tpl/system.ini.master
+++ b/install/tpl/system.ini.master
@@ -69,3 +69,4 @@ session_timeout=0
 session_allow_endless=0
 min_password_length=8
 min_password_strength=3
+ssh_authentication=
diff --git a/interface/web/admin/form/system_config.tform.php b/interface/web/admin/form/system_config.tform.php
index 1b84e59560..58649d3f1b 100644
--- a/interface/web/admin/form/system_config.tform.php
+++ b/interface/web/admin/form/system_config.tform.php
@@ -747,6 +747,12 @@ $form["tabs"]['misc'] = array (
 			'formtype' => 'SELECT',
 			'default' => '',
 			'value'  => array('' => 'None', '1' => 'strength_1', '2' => 'strength_2', '3' => 'strength_3', '4' => 'strength_4', '5' => 'strength_5')
+		),
+		'ssh_authentication' => array(
+			'datatype' => 'VARCHAR',
+			'formtype' => 'SELECT',
+			'default' => '',
+			'value'  => array('' => 'ssh_authentication_password_key', 'password' => 'ssh_authentication_password', 'key' => 'ssh_authentication_key')
 		)
 		//#################################
 		// END Datatable fields
diff --git a/interface/web/admin/lib/lang/de_system_config.lng b/interface/web/admin/lib/lang/de_system_config.lng
index f981cce832..693fd2110e 100644
--- a/interface/web/admin/lib/lang/de_system_config.lng
+++ b/interface/web/admin/lib/lang/de_system_config.lng
@@ -75,6 +75,10 @@ $wb['session_allow_endless_txt'] = '&quot;Eingeloggt bleiben&quot; aktivieren';
 $wb['No'] = 'Nein';
 $wb['min_password_length_txt'] = 'Minimale Passwortlänge';
 $wb['min_password_strength_txt'] = 'Minimale Passwortstärke';
+$wb['ssh_authentication_txt'] = 'Erlaubte SSH Authentifizierung';
+$wb['ssh_authentication_password_key'] = 'Passwort & Schlüssel';
+$wb['ssh_authentication_password'] = 'Passwort';
+$wb['ssh_authentication_key'] = 'Schlüssel';
 $wb['company_name_txt'] = 'Firmenname fuer den Seitentitel';
 $wb['custom_login_text_txt'] = 'Custom Text on Login-Page';
 $wb['custom_login_link_txt'] = 'Custom Link on Login-Page';
diff --git a/interface/web/admin/lib/lang/en_system_config.lng b/interface/web/admin/lib/lang/en_system_config.lng
index 840b3f434b..e0b25eb4af 100644
--- a/interface/web/admin/lib/lang/en_system_config.lng
+++ b/interface/web/admin/lib/lang/en_system_config.lng
@@ -77,6 +77,10 @@ $wb['session_allow_endless_txt'] = 'Enable "stay logged in"';
 $wb['No'] = 'No';
 $wb['min_password_length_txt'] = 'Minimum password length';
 $wb['min_password_strength_txt'] = 'Minimum password strength';
+$wb['ssh_authentication_txt'] = 'Allowed SSH authentication';
+$wb['ssh_authentication_password_key'] = 'Password & Key';
+$wb['ssh_authentication_password'] = 'Password';
+$wb['ssh_authentication_key'] = 'Key';
 $wb["default_mailserver_txt"] = 'Default Mailserver';
 $wb["default_webserver_txt"] = 'Default Webserver';
 $wb["default_dnsserver_txt"] = 'Default DNS Server';
diff --git a/interface/web/admin/templates/system_config_misc_edit.htm b/interface/web/admin/templates/system_config_misc_edit.htm
index 00debd66dc..b8f36b2efd 100644
--- a/interface/web/admin/templates/system_config_misc_edit.htm
+++ b/interface/web/admin/templates/system_config_misc_edit.htm
@@ -106,6 +106,12 @@
                 <div class="col-sm-9"><select name="min_password_strength" id="min_password_strength" class="form-control">
                     {tmpl_var name='min_password_strength'}
                 </select></div>
+            </div>
+            <div class="form-group">
+                <label for="ssh_authentication" class="col-sm-3 control-label">{tmpl_var name='ssh_authentication_txt'}</label>
+                <div class="col-sm-9"><select name="ssh_authentication" id="ssh_authentication" class="form-control">
+                    {tmpl_var name='ssh_authentication'}
+                </select></div>
             </div>
 			<div class="form-group">
                 <label class="col-sm-3 control-label">{tmpl_var name='maintenance_mode_txt'}</label>
diff --git a/interface/web/sites/shell_user_edit.php b/interface/web/sites/shell_user_edit.php
index 7f74d893fc..d1b7017cc7 100644
--- a/interface/web/sites/shell_user_edit.php
+++ b/interface/web/sites/shell_user_edit.php
@@ -75,6 +75,7 @@ class page_action extends tform_actions {
 
 		$app->uses('getconf,tools_sites');
 		$global_config = $app->getconf->get_global_config('sites');
+		$system_config = $app->getconf->get_global_config();
 		$shelluser_prefix = $app->tools_sites->replacePrefix($global_config['shelluser_prefix'], $this->dataRecord);
 
 		if ($this->dataRecord['username'] != ""){
@@ -96,6 +97,8 @@ class page_action extends tform_actions {
 			$app->tpl->setVar("edit_disabled", 0);
 		}
 
+		$app->tpl->setVar('ssh_authentication', $system_config['misc']['ssh_authentication']);
+
 		parent::onShowEnd();
 	}
 
diff --git a/interface/web/sites/templates/shell_user_edit.htm b/interface/web/sites/templates/shell_user_edit.htm
index 9ea5f183e5..e5b305b0d4 100644
--- a/interface/web/sites/templates/shell_user_edit.htm
+++ b/interface/web/sites/templates/shell_user_edit.htm
@@ -28,6 +28,7 @@
 					</div>
 				</div>
             </div>
+			<tmpl_if name="ssh_authentication" op="!=" value="key">
 			<div class="form-group">
                 <label for="password" class="col-sm-3 control-label">{tmpl_var name='password_txt'}</label>
                 <div class="col-sm-9">
@@ -55,6 +56,7 @@
 					<div id="confirmpasswordOK" style="display:none;" class="confirmpasswordok">{tmpl_var name='password_match_txt'}</div>
 				</div>
 			</div>
+			</tmpl_if>
             <div class="form-group">
                 <label for="chroot" class="col-sm-3 control-label">{tmpl_var name='chroot_txt'}</label>
                 <div class="col-sm-9"><select name="chroot" id="chroot" class="form-control">
@@ -65,10 +67,12 @@
                 <label for="quota_size" class="col-sm-3 control-label">{tmpl_var name='quota_size_txt'}</label>
                 <div class="col-sm-9"><div class="input-group"><input type="text" name="quota_size" id="quota_size" value="{tmpl_var name='quota_size'}" class="form-control" aria-describedby="quota_size-desc" /><span class="input-group-addon" id="quota_size-desc">MB</span></div></div>
             </div>
+			<tmpl_if name="ssh_authentication" op="!=" value="password">
             <div class="form-group">
                 <label for="ssh_rsa" class="col-sm-3 control-label">{tmpl_var name='ssh_rsa_txt'}</label>
                 <div class="col-sm-9"><textarea class="form-control" name="ssh_rsa" id="ssh_rsa" rows="10" cols="30">{tmpl_var name='ssh_rsa'}</textarea></div>
             </div>
+			</tmpl_if>
             <div class="form-group">
                 <label class="col-sm-3 control-label">{tmpl_var name='active_txt'}</label>
                 <div class="col-sm-9">
-- 
GitLab


From 734277e2f1c5abacaac3035584d463459740bcfe Mon Sep 17 00:00:00 2001
From: Ninos <me@ninosego.de>
Date: Tue, 26 May 2020 18:25:48 +0200
Subject: [PATCH 213/242] Added: Field validation (do not allow
 key/password-field, if only password/key is allowed)

---
 interface/web/sites/shell_user_edit.php | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/interface/web/sites/shell_user_edit.php b/interface/web/sites/shell_user_edit.php
index d1b7017cc7..055676ad95 100644
--- a/interface/web/sites/shell_user_edit.php
+++ b/interface/web/sites/shell_user_edit.php
@@ -126,6 +126,17 @@ class page_action extends tform_actions {
 
 		if(isset($this->dataRecord['ssh_rsa'])) $this->dataRecord['ssh_rsa'] = trim($this->dataRecord['ssh_rsa']);
 
+		$system_config = $app->getconf->get_global_config();
+
+		if($system_config['misc']['ssh_authentication'] == 'password') {
+			$this->dataRecord['ssh_rsa'] = null;
+		}
+
+		if($system_config['misc']['ssh_authentication'] == 'key') {
+			$this->dataRecord['password'] = null;
+			$this->dataRecord['repeat_password'] = null;
+		}
+
 		parent::onSubmit();
 	}
 
-- 
GitLab


From b6c42d0e630719352ee87f79333f9e92f8a0577b Mon Sep 17 00:00:00 2001
From: Thom Pol <thom@amsterdamtech.nl>
Date: Wed, 27 May 2020 00:47:36 +0200
Subject: [PATCH 214/242] Removed double titles or descriptions

---
 interface/web/client/templates/client_edit_address.htm   | 6 ------
 interface/web/client/templates/client_edit_limits.htm    | 7 -------
 interface/web/client/templates/client_message.htm        | 6 +-----
 .../web/client/templates/client_template_edit_limits.htm | 8 --------
 .../client/templates/client_template_edit_template.htm   | 9 ---------
 interface/web/client/templates/message_template.htm      | 6 ------
 interface/web/client/templates/reseller_edit_address.htm | 7 -------
 interface/web/client/templates/reseller_edit_limits.htm  | 8 --------
 8 files changed, 1 insertion(+), 56 deletions(-)

diff --git a/interface/web/client/templates/client_edit_address.htm b/interface/web/client/templates/client_edit_address.htm
index 689849287c..23318b218b 100644
--- a/interface/web/client/templates/client_edit_address.htm
+++ b/interface/web/client/templates/client_edit_address.htm
@@ -1,9 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
         <legend>{tmpl_var name='Address'}</legend>
             <div class="form-group">
                 <label for="company_name" class="col-sm-3 control-label">{tmpl_var name='company_name_txt'}</label>
diff --git a/interface/web/client/templates/client_edit_limits.htm b/interface/web/client/templates/client_edit_limits.htm
index c8cf74e328..0508ab5090 100644
--- a/interface/web/client/templates/client_edit_limits.htm
+++ b/interface/web/client/templates/client_edit_limits.htm
@@ -1,10 +1,3 @@
-<tmpl_if name="list_head_txt">
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-</tmpl_if>
-<tmpl_if name="list_desc_txt"><p><tmpl_var name="list_desc_txt"></p></tmpl_if>
-
 <div class="panel panel_client">
     
 	<div class="pnl_formsarea">
diff --git a/interface/web/client/templates/client_message.htm b/interface/web/client/templates/client_message.htm
index 7e1b1da701..b546181fa7 100644
--- a/interface/web/client/templates/client_message.htm
+++ b/interface/web/client/templates/client_message.htm
@@ -1,10 +1,6 @@
 <div class='page-header'>
 	<h1><tmpl_var name="page_head_txt"></h1>
 </div>
-<p><tmpl_var name="form_desc_txt"></p>
-
-
-        <legend>{tmpl_var name='form_legend_txt'}</legend>
             <tmpl_if name="okmsg">
                 <div id="OKMsg"><p><tmpl_var name="okmsg"></p></div>
             </tmpl_if>
@@ -32,4 +28,4 @@
         <div class="clear"><div class="right">
             <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_send_txt'}" data-submit-form="pageForm" data-form-action="client/client_message.php">{tmpl_var name='btn_send_txt'}</button>
             <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="client/client_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/client/templates/client_template_edit_limits.htm b/interface/web/client/templates/client_template_edit_limits.htm
index df5501602b..a3e4b63e9a 100644
--- a/interface/web/client/templates/client_template_edit_limits.htm
+++ b/interface/web/client/templates/client_template_edit_limits.htm
@@ -1,11 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        <legend>{tmpl_var name="Limits"}</legend>
-		
 <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
   <div class="panel panel-default">
     <div class="panel-heading" role="tab" id="headingWeb">
diff --git a/interface/web/client/templates/client_template_edit_template.htm b/interface/web/client/templates/client_template_edit_template.htm
index e06d07792d..181dedd20f 100644
--- a/interface/web/client/templates/client_template_edit_template.htm
+++ b/interface/web/client/templates/client_template_edit_template.htm
@@ -1,12 +1,3 @@
-<tmpl_if name="list_head_txt">
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-</tmpl_if>
-<tmpl_if name="list_desc_txt"><p><tmpl_var name="list_desc_txt"></p></tmpl_if>
-
-
-        <legend>Template</legend>
             <div class="form-group">
                 <label for="template_type" class="col-sm-3 control-label">{tmpl_var name='template_type_txt'}</label>
                 <div class="col-sm-9"><select name="template_type" id="template_type" class="form-control">
diff --git a/interface/web/client/templates/message_template.htm b/interface/web/client/templates/message_template.htm
index 7fd63f3448..4078d36ac8 100644
--- a/interface/web/client/templates/message_template.htm
+++ b/interface/web/client/templates/message_template.htm
@@ -1,12 +1,6 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
 <div class="panel panel_invoice_message_template">
 
   <div class="pnl_formsarea">
-    <legend>Settings</legend>
       <div class="form-group">
       	<label for="template_type" class="col-sm-3 control-label">{tmpl_var name='template_type_txt'}</label>
         <div class="col-sm-9"><select name="template_type" id="template_type" class="form-control">
diff --git a/interface/web/client/templates/reseller_edit_address.htm b/interface/web/client/templates/reseller_edit_address.htm
index 5cb829a008..eb2760dc3d 100644
--- a/interface/web/client/templates/reseller_edit_address.htm
+++ b/interface/web/client/templates/reseller_edit_address.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        <legend>{tmpl_var name='Address'}</legend>
             <div class="form-group">
                 <label for="company_name" class="col-sm-3 control-label">{tmpl_var name='company_name_txt'}</label>
                 <div class="col-sm-9"><input type="text" name="company_name" id="company_name" value="{tmpl_var name='company_name'}" class="form-control" /></div></div>
diff --git a/interface/web/client/templates/reseller_edit_limits.htm b/interface/web/client/templates/reseller_edit_limits.htm
index 7a4dc09041..c0a25939df 100644
--- a/interface/web/client/templates/reseller_edit_limits.htm
+++ b/interface/web/client/templates/reseller_edit_limits.htm
@@ -1,14 +1,6 @@
-<tmpl_if name="list_head_txt">
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-</tmpl_if>
-<tmpl_if name="list_desc_txt"><p><tmpl_var name="list_desc_txt"></p></tmpl_if>
-
 <div class="panel panel_client">
 
     <div class="pnl_formsarea">
-        <legend>{tmpl_var name="Limits"}</legend>
 			<tmpl_if name="is_admin">
                 <div class="form-group">
                     <label for="template_master" class="col-sm-3 control-label">{tmpl_var name='template_master_txt'}</label>
-- 
GitLab


From ad0ffdf677009519354b5e053c87313d2b1053ba Mon Sep 17 00:00:00 2001
From: Thom Pol <thom@amsterdamtech.nl>
Date: Wed, 27 May 2020 00:53:59 +0200
Subject: [PATCH 215/242] Improved page title

---
 interface/web/client/lib/lang/ar_client_message.lng | 2 +-
 interface/web/client/lib/lang/bg_client_message.lng | 2 +-
 interface/web/client/lib/lang/el_client_message.lng | 2 +-
 interface/web/client/lib/lang/en_client_message.lng | 2 +-
 interface/web/client/lib/lang/fi_client_message.lng | 2 +-
 interface/web/client/lib/lang/hu_client_message.lng | 2 +-
 interface/web/client/lib/lang/id_client_message.lng | 2 +-
 interface/web/client/lib/lang/it_client_message.lng | 2 +-
 interface/web/client/lib/lang/ja_client_message.lng | 2 +-
 interface/web/client/lib/lang/nl_client_message.lng | 2 +-
 interface/web/client/lib/lang/pt_client_message.lng | 2 +-
 interface/web/client/lib/lang/ro_client_message.lng | 2 +-
 interface/web/client/lib/lang/sk_client_message.lng | 2 +-
 13 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/interface/web/client/lib/lang/ar_client_message.lng b/interface/web/client/lib/lang/ar_client_message.lng
index 6b2a872f10..1b6b3bb7ae 100644
--- a/interface/web/client/lib/lang/ar_client_message.lng
+++ b/interface/web/client/lib/lang/ar_client_message.lng
@@ -10,7 +10,7 @@ $wb['sender_invalid_error'] = 'Sender email invalid.';
 $wb['subject_invalid_error'] = 'Subject is empty.';
 $wb['message_invalid_error'] = 'Message is empty.';
 $wb['email_sent_to_txt'] = 'Email sent to:';
-$wb['page_head_txt'] = 'Send customer information';
+$wb["page_head_txt"] = 'Send email message to clients and resellers';
 $wb['recipient_txt'] = 'Recipient';
 $wb['all_clients_resellers_txt'] = 'All clients and resellers';
 $wb['all_clients_txt'] = 'All clients';
diff --git a/interface/web/client/lib/lang/bg_client_message.lng b/interface/web/client/lib/lang/bg_client_message.lng
index 671d454304..557972113b 100644
--- a/interface/web/client/lib/lang/bg_client_message.lng
+++ b/interface/web/client/lib/lang/bg_client_message.lng
@@ -10,7 +10,7 @@ $wb['sender_invalid_error'] = 'Sender email invalid.';
 $wb['subject_invalid_error'] = 'Полето с Тема е празно.';
 $wb['message_invalid_error'] = 'Полето с съобщение е празно.';
 $wb['email_sent_to_txt'] = 'Изпрати до:';
-$wb['page_head_txt'] = 'Send customer information';
+$wb["page_head_txt"] = 'Send email message to clients and resellers';
 $wb['recipient_txt'] = 'Recipient';
 $wb['all_clients_resellers_txt'] = 'All clients and resellers';
 $wb['all_clients_txt'] = 'All clients';
diff --git a/interface/web/client/lib/lang/el_client_message.lng b/interface/web/client/lib/lang/el_client_message.lng
index 6b2a872f10..1b6b3bb7ae 100644
--- a/interface/web/client/lib/lang/el_client_message.lng
+++ b/interface/web/client/lib/lang/el_client_message.lng
@@ -10,7 +10,7 @@ $wb['sender_invalid_error'] = 'Sender email invalid.';
 $wb['subject_invalid_error'] = 'Subject is empty.';
 $wb['message_invalid_error'] = 'Message is empty.';
 $wb['email_sent_to_txt'] = 'Email sent to:';
-$wb['page_head_txt'] = 'Send customer information';
+$wb["page_head_txt"] = 'Send email message to clients and resellers';
 $wb['recipient_txt'] = 'Recipient';
 $wb['all_clients_resellers_txt'] = 'All clients and resellers';
 $wb['all_clients_txt'] = 'All clients';
diff --git a/interface/web/client/lib/lang/en_client_message.lng b/interface/web/client/lib/lang/en_client_message.lng
index c04bd6cda2..01d34392f7 100644
--- a/interface/web/client/lib/lang/en_client_message.lng
+++ b/interface/web/client/lib/lang/en_client_message.lng
@@ -1,5 +1,5 @@
 <?php
-$wb["page_head_txt"] = 'Send customer information';
+$wb["page_head_txt"] = 'Send email message to clients and resellers';
 $wb["btn_send_txt"] = 'Send email';
 $wb["btn_cancel_txt"] = 'Cancel';
 $wb["sender_txt"] = 'Sender email address';
diff --git a/interface/web/client/lib/lang/fi_client_message.lng b/interface/web/client/lib/lang/fi_client_message.lng
index 6b2a872f10..1b6b3bb7ae 100644
--- a/interface/web/client/lib/lang/fi_client_message.lng
+++ b/interface/web/client/lib/lang/fi_client_message.lng
@@ -10,7 +10,7 @@ $wb['sender_invalid_error'] = 'Sender email invalid.';
 $wb['subject_invalid_error'] = 'Subject is empty.';
 $wb['message_invalid_error'] = 'Message is empty.';
 $wb['email_sent_to_txt'] = 'Email sent to:';
-$wb['page_head_txt'] = 'Send customer information';
+$wb["page_head_txt"] = 'Send email message to clients and resellers';
 $wb['recipient_txt'] = 'Recipient';
 $wb['all_clients_resellers_txt'] = 'All clients and resellers';
 $wb['all_clients_txt'] = 'All clients';
diff --git a/interface/web/client/lib/lang/hu_client_message.lng b/interface/web/client/lib/lang/hu_client_message.lng
index 6b2a872f10..1b6b3bb7ae 100644
--- a/interface/web/client/lib/lang/hu_client_message.lng
+++ b/interface/web/client/lib/lang/hu_client_message.lng
@@ -10,7 +10,7 @@ $wb['sender_invalid_error'] = 'Sender email invalid.';
 $wb['subject_invalid_error'] = 'Subject is empty.';
 $wb['message_invalid_error'] = 'Message is empty.';
 $wb['email_sent_to_txt'] = 'Email sent to:';
-$wb['page_head_txt'] = 'Send customer information';
+$wb["page_head_txt"] = 'Send email message to clients and resellers';
 $wb['recipient_txt'] = 'Recipient';
 $wb['all_clients_resellers_txt'] = 'All clients and resellers';
 $wb['all_clients_txt'] = 'All clients';
diff --git a/interface/web/client/lib/lang/id_client_message.lng b/interface/web/client/lib/lang/id_client_message.lng
index 6b2a872f10..1b6b3bb7ae 100644
--- a/interface/web/client/lib/lang/id_client_message.lng
+++ b/interface/web/client/lib/lang/id_client_message.lng
@@ -10,7 +10,7 @@ $wb['sender_invalid_error'] = 'Sender email invalid.';
 $wb['subject_invalid_error'] = 'Subject is empty.';
 $wb['message_invalid_error'] = 'Message is empty.';
 $wb['email_sent_to_txt'] = 'Email sent to:';
-$wb['page_head_txt'] = 'Send customer information';
+$wb["page_head_txt"] = 'Send email message to clients and resellers';
 $wb['recipient_txt'] = 'Recipient';
 $wb['all_clients_resellers_txt'] = 'All clients and resellers';
 $wb['all_clients_txt'] = 'All clients';
diff --git a/interface/web/client/lib/lang/it_client_message.lng b/interface/web/client/lib/lang/it_client_message.lng
index f5f93c2294..c21f9fb3be 100644
--- a/interface/web/client/lib/lang/it_client_message.lng
+++ b/interface/web/client/lib/lang/it_client_message.lng
@@ -10,7 +10,7 @@ $wb['sender_invalid_error'] = 'Sender email invalid.';
 $wb['subject_invalid_error'] = 'Subject  vuoto.';
 $wb['message_invalid_error'] = 'Message  vuoto.';
 $wb['email_sent_to_txt'] = 'Email sent to:';
-$wb['page_head_txt'] = 'Send customer information';
+$wb["page_head_txt"] = 'Send email message to clients and resellers';
 $wb['recipient_txt'] = 'Recipient';
 $wb['all_clients_resellers_txt'] = 'All clients and resellers';
 $wb['all_clients_txt'] = 'All clients';
diff --git a/interface/web/client/lib/lang/ja_client_message.lng b/interface/web/client/lib/lang/ja_client_message.lng
index 6b2a872f10..1b6b3bb7ae 100644
--- a/interface/web/client/lib/lang/ja_client_message.lng
+++ b/interface/web/client/lib/lang/ja_client_message.lng
@@ -10,7 +10,7 @@ $wb['sender_invalid_error'] = 'Sender email invalid.';
 $wb['subject_invalid_error'] = 'Subject is empty.';
 $wb['message_invalid_error'] = 'Message is empty.';
 $wb['email_sent_to_txt'] = 'Email sent to:';
-$wb['page_head_txt'] = 'Send customer information';
+$wb["page_head_txt"] = 'Send email message to clients and resellers';
 $wb['recipient_txt'] = 'Recipient';
 $wb['all_clients_resellers_txt'] = 'All clients and resellers';
 $wb['all_clients_txt'] = 'All clients';
diff --git a/interface/web/client/lib/lang/nl_client_message.lng b/interface/web/client/lib/lang/nl_client_message.lng
index aaa93be1b8..39962efa65 100644
--- a/interface/web/client/lib/lang/nl_client_message.lng
+++ b/interface/web/client/lib/lang/nl_client_message.lng
@@ -10,7 +10,7 @@ $wb['sender_invalid_error'] = 'Sender email invalid.';
 $wb['subject_invalid_error'] = 'Onderwerp is leeg.';
 $wb['message_invalid_error'] = 'Bericht is leeg.';
 $wb['email_sent_to_txt'] = 'E-mail verstuurd aan:';
-$wb['page_head_txt'] = 'Send customer information';
+$wb["page_head_txt"] = 'Send email message to clients and resellers';
 $wb['recipient_txt'] = 'Ontvanger';
 $wb['all_clients_resellers_txt'] = 'Alle klanten en resellers';
 $wb['all_clients_txt'] = 'Alle klanten';
diff --git a/interface/web/client/lib/lang/pt_client_message.lng b/interface/web/client/lib/lang/pt_client_message.lng
index 6b2a872f10..1b6b3bb7ae 100644
--- a/interface/web/client/lib/lang/pt_client_message.lng
+++ b/interface/web/client/lib/lang/pt_client_message.lng
@@ -10,7 +10,7 @@ $wb['sender_invalid_error'] = 'Sender email invalid.';
 $wb['subject_invalid_error'] = 'Subject is empty.';
 $wb['message_invalid_error'] = 'Message is empty.';
 $wb['email_sent_to_txt'] = 'Email sent to:';
-$wb['page_head_txt'] = 'Send customer information';
+$wb["page_head_txt"] = 'Send email message to clients and resellers';
 $wb['recipient_txt'] = 'Recipient';
 $wb['all_clients_resellers_txt'] = 'All clients and resellers';
 $wb['all_clients_txt'] = 'All clients';
diff --git a/interface/web/client/lib/lang/ro_client_message.lng b/interface/web/client/lib/lang/ro_client_message.lng
index 6b2a872f10..1b6b3bb7ae 100644
--- a/interface/web/client/lib/lang/ro_client_message.lng
+++ b/interface/web/client/lib/lang/ro_client_message.lng
@@ -10,7 +10,7 @@ $wb['sender_invalid_error'] = 'Sender email invalid.';
 $wb['subject_invalid_error'] = 'Subject is empty.';
 $wb['message_invalid_error'] = 'Message is empty.';
 $wb['email_sent_to_txt'] = 'Email sent to:';
-$wb['page_head_txt'] = 'Send customer information';
+$wb["page_head_txt"] = 'Send email message to clients and resellers';
 $wb['recipient_txt'] = 'Recipient';
 $wb['all_clients_resellers_txt'] = 'All clients and resellers';
 $wb['all_clients_txt'] = 'All clients';
diff --git a/interface/web/client/lib/lang/sk_client_message.lng b/interface/web/client/lib/lang/sk_client_message.lng
index 6b2a872f10..1b6b3bb7ae 100644
--- a/interface/web/client/lib/lang/sk_client_message.lng
+++ b/interface/web/client/lib/lang/sk_client_message.lng
@@ -10,7 +10,7 @@ $wb['sender_invalid_error'] = 'Sender email invalid.';
 $wb['subject_invalid_error'] = 'Subject is empty.';
 $wb['message_invalid_error'] = 'Message is empty.';
 $wb['email_sent_to_txt'] = 'Email sent to:';
-$wb['page_head_txt'] = 'Send customer information';
+$wb["page_head_txt"] = 'Send email message to clients and resellers';
 $wb['recipient_txt'] = 'Recipient';
 $wb['all_clients_resellers_txt'] = 'All clients and resellers';
 $wb['all_clients_txt'] = 'All clients';
-- 
GitLab


From b7cb06c065e54121af407bf4789aa1200969936c Mon Sep 17 00:00:00 2001
From: Thom Pol <thom@amsterdamtech.nl>
Date: Wed, 27 May 2020 01:41:41 +0200
Subject: [PATCH 216/242] Removed double or empty titles / descriptions

---
 interface/web/sites/templates/cron_edit.htm              | 9 +--------
 interface/web/sites/templates/database_edit.htm          | 7 -------
 interface/web/sites/templates/database_user_edit.htm     | 9 +--------
 interface/web/sites/templates/ftp_user_advanced.htm      | 7 -------
 .../web/sites/templates/ftp_user_advanced_client.htm     | 7 -------
 interface/web/sites/templates/ftp_user_edit.htm          | 9 +--------
 interface/web/sites/templates/shell_user_advanced.htm    | 7 +------
 interface/web/sites/templates/shell_user_edit.htm        | 9 +--------
 .../web/sites/templates/web_childdomain_advanced.htm     | 7 -------
 interface/web/sites/templates/web_childdomain_edit.htm   | 9 +--------
 interface/web/sites/templates/web_folder_edit.htm        | 7 -------
 interface/web/sites/templates/web_folder_user_edit.htm   | 7 -------
 .../web/sites/templates/web_vhost_domain_advanced.htm    | 5 -----
 .../web/sites/templates/web_vhost_domain_backup.htm      | 8 +-------
 interface/web/sites/templates/web_vhost_domain_edit.htm  | 4 +++-
 interface/web/sites/templates/web_vhost_domain_list.htm  | 2 +-
 .../web/sites/templates/web_vhost_domain_redirect.htm    | 7 +------
 interface/web/sites/templates/web_vhost_domain_ssl.htm   | 7 +------
 interface/web/sites/templates/web_vhost_domain_stats.htm | 5 -----
 interface/web/sites/templates/webdav_user_edit.htm       | 9 +--------
 20 files changed, 14 insertions(+), 127 deletions(-)

diff --git a/interface/web/sites/templates/cron_edit.htm b/interface/web/sites/templates/cron_edit.htm
index 579ba8af4f..2c0f22ddb9 100644
--- a/interface/web/sites/templates/cron_edit.htm
+++ b/interface/web/sites/templates/cron_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        <legend>Cron Job</legend>
             <div class="form-group">
                 <tmpl_if name="edit_disabled">
                     <label for="parent_domain_id" class="col-sm-3 control-label">{tmpl_var name='parent_domain_id_txt'}</label>
@@ -80,4 +73,4 @@
         <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="sites/cron_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="sites/cron_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/sites/templates/database_edit.htm b/interface/web/sites/templates/database_edit.htm
index 290ae30a96..a61e85e193 100644
--- a/interface/web/sites/templates/database_edit.htm
+++ b/interface/web/sites/templates/database_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <tmpl_if name="is_admin">
                 <div class="form-group">
                     <tmpl_if name="edit_disabled">
diff --git a/interface/web/sites/templates/database_user_edit.htm b/interface/web/sites/templates/database_user_edit.htm
index c9ae106cb0..8e9c9fd43d 100644
--- a/interface/web/sites/templates/database_user_edit.htm
+++ b/interface/web/sites/templates/database_user_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <tmpl_if name="is_admin">
                 <div class="form-group">
                     <label for="client_group_id" class="col-sm-3 control-label">{tmpl_var name='client_txt'}</label>
@@ -64,4 +57,4 @@
         <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="sites/database_user_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="sites/database_user_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/sites/templates/ftp_user_advanced.htm b/interface/web/sites/templates/ftp_user_advanced.htm
index 11069aee97..e77c0bcb26 100644
--- a/interface/web/sites/templates/ftp_user_advanced.htm
+++ b/interface/web/sites/templates/ftp_user_advanced.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="uid" class="col-sm-3 control-label">{tmpl_var name='uid_txt'}</label>
                 <div class="col-sm-9"><input type="text" name="uid" id="uid" value="{tmpl_var name='uid'}" class="form-control" /></div></div>
diff --git a/interface/web/sites/templates/ftp_user_advanced_client.htm b/interface/web/sites/templates/ftp_user_advanced_client.htm
index 02479c9e2f..c4cb1646ac 100644
--- a/interface/web/sites/templates/ftp_user_advanced_client.htm
+++ b/interface/web/sites/templates/ftp_user_advanced_client.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="dir" class="col-sm-3 control-label">{tmpl_var name='dir_txt'}</label>
                 <div class="col-sm-9"><input type="text" name="dir" id="dir" value="{tmpl_var name='dir'}" class="form-control" /></div></div>
diff --git a/interface/web/sites/templates/ftp_user_edit.htm b/interface/web/sites/templates/ftp_user_edit.htm
index 72ec55fbec..e9b4e7ff9a 100644
--- a/interface/web/sites/templates/ftp_user_edit.htm
+++ b/interface/web/sites/templates/ftp_user_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="parent_domain_id" class="col-sm-3 control-label">{tmpl_var name='parent_domain_id_txt'}</label>
                 <div class="col-sm-9"><select name="parent_domain_id" id="parent_domain_id" class="form-control">
@@ -64,4 +57,4 @@
         <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="sites/ftp_user_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="sites/ftp_user_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/sites/templates/shell_user_advanced.htm b/interface/web/sites/templates/shell_user_advanced.htm
index bcbbdfa16d..640497a571 100644
--- a/interface/web/sites/templates/shell_user_advanced.htm
+++ b/interface/web/sites/templates/shell_user_advanced.htm
@@ -1,8 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
 		<div class="form-group">
 			<label for="puser" class="col-sm-3 control-label">{tmpl_var name='puser_txt'}</label>
 			<div class="col-sm-9"><input type="text" name="puser" id="puser" value="{tmpl_var name='puser'}" class="form-control" /></div>
@@ -30,4 +25,4 @@
         <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="sites/shell_user_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="sites/shell_user_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/sites/templates/shell_user_edit.htm b/interface/web/sites/templates/shell_user_edit.htm
index 9ea5f183e5..b9afe15d98 100644
--- a/interface/web/sites/templates/shell_user_edit.htm
+++ b/interface/web/sites/templates/shell_user_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <tmpl_if name="edit_disabled">
                     <label for="parent_domain_id" class="col-sm-3 control-label">{tmpl_var name='parent_domain_id_txt'}</label>
@@ -82,4 +75,4 @@
         <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="sites/shell_user_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="sites/shell_user_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/sites/templates/web_childdomain_advanced.htm b/interface/web/sites/templates/web_childdomain_advanced.htm
index 1eac311824..e2a1bc4975 100644
--- a/interface/web/sites/templates/web_childdomain_advanced.htm
+++ b/interface/web/sites/templates/web_childdomain_advanced.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-    <legend>Options</legend>
       <div class="form-group proxy">
                 <label for="proxy_directives" class="col-sm-3 control-label">{tmpl_var name='proxy_directives_txt'}</label>
 				 <div class="col-sm-9"><textarea class="form-control" name="proxy_directives" id="proxy_directives" rows='10' cols='50'>{tmpl_var name='proxy_directives'}</textarea>&nbsp;<b>{tmpl_var name="available_proxy_directive_snippets_txt"}</b><br><br>&nbsp;{tmpl_var name="proxy_directive_snippets_txt"}
diff --git a/interface/web/sites/templates/web_childdomain_edit.htm b/interface/web/sites/templates/web_childdomain_edit.htm
index 4836f4a65c..9e16d3ce94 100644
--- a/interface/web/sites/templates/web_childdomain_edit.htm
+++ b/interface/web/sites/templates/web_childdomain_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
 			<tmpl_if name="childdomain_type" value="subdomain">
             <tmpl_if name="domain_option">
             <div class="form-group">
@@ -175,4 +168,4 @@
             }
         });
     }
-</script>
\ No newline at end of file
+</script>
diff --git a/interface/web/sites/templates/web_folder_edit.htm b/interface/web/sites/templates/web_folder_edit.htm
index dd24094434..e3fef0e477 100644
--- a/interface/web/sites/templates/web_folder_edit.htm
+++ b/interface/web/sites/templates/web_folder_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        <legend>Folder</legend>
             <div class="form-group">
                 <label for="parent_domain_id" class="col-sm-3 control-label">{tmpl_var name='parent_domain_id_txt'}</label>
                 <div class="col-sm-9"><select name="parent_domain_id" id="parent_domain_id" class="form-control">
diff --git a/interface/web/sites/templates/web_folder_user_edit.htm b/interface/web/sites/templates/web_folder_user_edit.htm
index 5a7ab466c1..a0c0db8120 100644
--- a/interface/web/sites/templates/web_folder_user_edit.htm
+++ b/interface/web/sites/templates/web_folder_user_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        <legend>Folder</legend>
             <div class="form-group">
                 <label for="web_folder_id" class="col-sm-3 control-label">{tmpl_var name='web_folder_id_txt'}</label>
                 <div class="col-sm-9"><select name="web_folder_id" id="web_folder_id" class="form-control">
diff --git a/interface/web/sites/templates/web_vhost_domain_advanced.htm b/interface/web/sites/templates/web_vhost_domain_advanced.htm
index 11f95d9cbd..f1df422bad 100644
--- a/interface/web/sites/templates/web_vhost_domain_advanced.htm
+++ b/interface/web/sites/templates/web_vhost_domain_advanced.htm
@@ -1,8 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
 <tmpl_if name="config_error_msg">
 <div style="background: #ffdfdf; border: 1px solid #df7d7d; border-width: 1px 0; margin: 1.5em 0 1.5em 0; padding: 7px;">
                 <p style="font-face:bold">{tmpl_var name='configuration_error_txt'}</p>
diff --git a/interface/web/sites/templates/web_vhost_domain_backup.htm b/interface/web/sites/templates/web_vhost_domain_backup.htm
index c31a579fc2..8c8aa11bee 100644
--- a/interface/web/sites/templates/web_vhost_domain_backup.htm
+++ b/interface/web/sites/templates/web_vhost_domain_backup.htm
@@ -1,8 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
 <tmpl_if name="config_error_msg">
 <div style="background: #ffdfdf; border: 1px solid #df7d7d; border-width: 1px 0; margin: 1.5em 0 1.5em 0; padding: 7px;">
                 <p style="font-face:bold">{tmpl_var name='configuration_error_txt'}</p>
@@ -12,7 +7,6 @@
 </div>
 </tmpl_if>
 
-        <legend>Backup</legend>
             <div class="form-group">
                 <label for="backup_interval" class="col-sm-3 control-label">{tmpl_var name='backup_interval_txt'}</label>
                 <div class="col-sm-9"><select name="backup_interval" id="backup_interval" class="form-control">
@@ -38,4 +32,4 @@
         <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="sites/web_vhost_domain_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="sites/web_vhost_domain_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/sites/templates/web_vhost_domain_edit.htm b/interface/web/sites/templates/web_vhost_domain_edit.htm
index 247ef175e2..6092778af8 100644
--- a/interface/web/sites/templates/web_vhost_domain_edit.htm
+++ b/interface/web/sites/templates/web_vhost_domain_edit.htm
@@ -92,7 +92,9 @@
 			<tmpl_if name="edit_disabled">
 				<div class="form-group">
 					<label for="document_root" class="col-sm-3 control-label" readonly >{tmpl_var name='document_root_txt'}</label>
-					<div class="col-sm-9">{tmpl_var name='document_root'}</div>
+					<div class="col-sm-9">
+                        <div class="checkbox">{tmpl_var name='document_root'}</div>
+                    </div> 
 				</div>
 			</tmpl_if>
             <div class="form-group">
diff --git a/interface/web/sites/templates/web_vhost_domain_list.htm b/interface/web/sites/templates/web_vhost_domain_list.htm
index 4cdde852a3..a202aff2e2 100644
--- a/interface/web/sites/templates/web_vhost_domain_list.htm
+++ b/interface/web/sites/templates/web_vhost_domain_list.htm
@@ -1,4 +1,4 @@
-<div class='page-header'>
+<div class="page-header">
 	<h1><tmpl_if name='vhostdomain_type' op='==' value='domain'>{tmpl_var name="domain_list_head_txt"}</tmpl_if><tmpl_if name='vhostdomain_type' op='==' value='subdomain'>{tmpl_var name="subdomain_list_head_txt"}</tmpl_if><tmpl_if name='vhostdomain_type' op='==' value='aliasdomain'>{tmpl_var name="aliasdomain_list_head_txt"}</tmpl_if></h1>
 </div>
 <p><tmpl_var name="list_desc_txt"></p>
diff --git a/interface/web/sites/templates/web_vhost_domain_redirect.htm b/interface/web/sites/templates/web_vhost_domain_redirect.htm
index e38c08671c..3326d5ec96 100644
--- a/interface/web/sites/templates/web_vhost_domain_redirect.htm
+++ b/interface/web/sites/templates/web_vhost_domain_redirect.htm
@@ -1,8 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
 <tmpl_if name="config_error_msg">
 <div style="background: #ffdfdf; border: 1px solid #df7d7d; border-width: 1px 0; margin: 1.5em 0 1.5em 0; padding: 7px;">
                 <p style="font-face:bold">{tmpl_var name='configuration_error_txt'}</p>
@@ -94,4 +89,4 @@
         });
     }
 			
-</script>
\ No newline at end of file
+</script>
diff --git a/interface/web/sites/templates/web_vhost_domain_ssl.htm b/interface/web/sites/templates/web_vhost_domain_ssl.htm
index ad9629fe4c..8b3d986a02 100644
--- a/interface/web/sites/templates/web_vhost_domain_ssl.htm
+++ b/interface/web/sites/templates/web_vhost_domain_ssl.htm
@@ -1,8 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
 <tmpl_if name="config_error_msg">
 <div style="background: #ffdfdf; border: 1px solid #df7d7d; border-width: 1px 0; margin: 1.5em 0 1.5em 0; padding: 7px;">
                 <p style="font-face:bold">{tmpl_var name='configuration_error_txt'}</p>
@@ -111,4 +106,4 @@
     }
 	</tmpl_if>
 //-->
-</script>
\ No newline at end of file
+</script>
diff --git a/interface/web/sites/templates/web_vhost_domain_stats.htm b/interface/web/sites/templates/web_vhost_domain_stats.htm
index 66c9fa3c94..6ebf9a6613 100644
--- a/interface/web/sites/templates/web_vhost_domain_stats.htm
+++ b/interface/web/sites/templates/web_vhost_domain_stats.htm
@@ -1,8 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
 <tmpl_if name="config_error_msg">
 <div style="background: #ffdfdf; border: 1px solid #df7d7d; border-width: 1px 0; margin: 1.5em 0 1.5em 0; padding: 7px;">
                 <p style="font-face:bold">{tmpl_var name='configuration_error_txt'}</p>
diff --git a/interface/web/sites/templates/webdav_user_edit.htm b/interface/web/sites/templates/webdav_user_edit.htm
index ee261ec29e..3ea8ed2776 100644
--- a/interface/web/sites/templates/webdav_user_edit.htm
+++ b/interface/web/sites/templates/webdav_user_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <tmpl_if name="edit_disabled">
                     <label for="parent_domain_id" class="col-sm-3 control-label">{tmpl_var name='parent_domain_id_txt'}</label>
@@ -76,4 +69,4 @@
         <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="sites/webdav_user_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="sites/webdav_user_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
-- 
GitLab


From 6281ea7328bcd501f5528e9e1604e12b5fc41bc3 Mon Sep 17 00:00:00 2001
From: Thom Pol <thom@amsterdamtech.nl>
Date: Wed, 27 May 2020 01:42:29 +0200
Subject: [PATCH 217/242] Changed the class on accident, revert

---
 interface/web/sites/templates/web_vhost_domain_list.htm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/interface/web/sites/templates/web_vhost_domain_list.htm b/interface/web/sites/templates/web_vhost_domain_list.htm
index a202aff2e2..4cdde852a3 100644
--- a/interface/web/sites/templates/web_vhost_domain_list.htm
+++ b/interface/web/sites/templates/web_vhost_domain_list.htm
@@ -1,4 +1,4 @@
-<div class="page-header">
+<div class='page-header'>
 	<h1><tmpl_if name='vhostdomain_type' op='==' value='domain'>{tmpl_var name="domain_list_head_txt"}</tmpl_if><tmpl_if name='vhostdomain_type' op='==' value='subdomain'>{tmpl_var name="subdomain_list_head_txt"}</tmpl_if><tmpl_if name='vhostdomain_type' op='==' value='aliasdomain'>{tmpl_var name="aliasdomain_list_head_txt"}</tmpl_if></h1>
 </div>
 <p><tmpl_var name="list_desc_txt"></p>
-- 
GitLab


From 666d1df8726a964bb74c7ab2d50992bd582fc149 Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Wed, 27 May 2020 21:16:02 +0200
Subject: [PATCH 218/242] Fixed: #5622 Do not display user switcher to
 client_id 0 users.

---
 interface/web/admin/templates/users_list.htm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/interface/web/admin/templates/users_list.htm b/interface/web/admin/templates/users_list.htm
index 8db81c6c8d..6486ed344d 100644
--- a/interface/web/admin/templates/users_list.htm
+++ b/interface/web/admin/templates/users_list.htm
@@ -41,7 +41,7 @@
                             <td><div class="icons16 group-{tmpl_var name="typ"}" title="{tmpl_var name="typ"}"><span>{tmpl_var name="typ"}</span></div> <div class="group-icon"><a href="#" data-load-content="admin/users_edit.php?id={tmpl_var name='id'}">{tmpl_var name="username"}</a></div></td>
                             <td>{tmpl_var name="groups"}</td>
                             <td class="text-right">
-                                <tmpl_if name="username" op="!=" value="admin">
+                                <tmpl_if name="client_id" op="!=" value="0">
                                     <a class="btn btn-default formbutton-success formbutton-narrow" data-load-content="login/login_as.php?cid={tmpl_var name='client_id'}"><span class="icon icon-loginas"></span></a>
                                     <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/users_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
                                 </tmpl_if>
-- 
GitLab


From e7fadf857fca081c40e2f18a8ca037995aa51537 Mon Sep 17 00:00:00 2001
From: Thom Pol <thom@amsterdamtech.nl>
Date: Wed, 27 May 2020 21:26:55 +0200
Subject: [PATCH 219/242] Removed double / empty titles and descriptions

---
 interface/web/mail/templates/mail_alias_edit.htm      |  5 -----
 .../web/mail/templates/mail_aliasdomain_edit.htm      |  9 +--------
 interface/web/mail/templates/mail_blacklist_edit.htm  |  9 +--------
 .../web/mail/templates/mail_content_filter_edit.htm   |  9 +--------
 .../web/mail/templates/mail_domain_catchall_edit.htm  |  8 ++------
 interface/web/mail/templates/mail_domain_edit.htm     |  9 +--------
 interface/web/mail/templates/mail_forward_edit.htm    |  5 -----
 interface/web/mail/templates/mail_get_edit.htm        |  9 +--------
 .../web/mail/templates/mail_mailinglist_edit.htm      |  7 -------
 .../web/mail/templates/mail_relay_recipient_edit.htm  |  9 +--------
 interface/web/mail/templates/mail_transport_edit.htm  |  9 +--------
 .../mail/templates/mail_user_autoresponder_edit.htm   |  9 +--------
 interface/web/mail/templates/mail_user_backup.htm     |  5 -----
 .../mail/templates/mail_user_custom_rules_edit.htm    |  9 +--------
 .../web/mail/templates/mail_user_filter_edit.htm      |  9 +--------
 .../web/mail/templates/mail_user_mailbox_edit.htm     |  7 -------
 .../web/mail/templates/mail_user_mailfilter_edit.htm  |  9 +--------
 interface/web/mail/templates/mail_whitelist_edit.htm  |  9 +--------
 .../web/mail/templates/spamfilter_amavis_edit.htm     |  7 +------
 .../web/mail/templates/spamfilter_blacklist_edit.htm  |  9 +--------
 .../web/mail/templates/spamfilter_policy_edit.htm     |  8 +-------
 .../web/mail/templates/spamfilter_rspamd_edit.htm     |  7 +------
 .../web/mail/templates/spamfilter_users_edit.htm      |  9 +--------
 .../web/mail/templates/spamfilter_whitelist_edit.htm  | 11 ++---------
 interface/web/mail/templates/xmpp_domain_edit.htm     |  7 -------
 .../web/mail/templates/xmpp_domain_edit_modules.htm   |  6 ------
 interface/web/mail/templates/xmpp_domain_edit_muc.htm |  7 -------
 interface/web/mail/templates/xmpp_domain_edit_ssl.htm |  7 +------
 interface/web/mail/templates/xmpp_user_edit.htm       |  4 ----
 29 files changed, 22 insertions(+), 205 deletions(-)

diff --git a/interface/web/mail/templates/mail_alias_edit.htm b/interface/web/mail/templates/mail_alias_edit.htm
index 6a67887bf9..2fd149a348 100644
--- a/interface/web/mail/templates/mail_alias_edit.htm
+++ b/interface/web/mail/templates/mail_alias_edit.htm
@@ -1,8 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
 			<div class="form-group">
                 <label class="col-sm-3 control-label"><em>*</em> {tmpl_var name='email_txt'}</label>
                 <div class="col-sm-9">
diff --git a/interface/web/mail/templates/mail_aliasdomain_edit.htm b/interface/web/mail/templates/mail_aliasdomain_edit.htm
index 9e19b5d07a..a18ff0e3db 100644
--- a/interface/web/mail/templates/mail_aliasdomain_edit.htm
+++ b/interface/web/mail/templates/mail_aliasdomain_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="destination" class="col-sm-3 control-label">{tmpl_var name='source_txt'}</label>
                 <div class="col-sm-9"><select name="source" id="source" class="form-control">
@@ -31,4 +24,4 @@
         <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="mail/mail_aliasdomain_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="mail/mail_aliasdomain_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/mail/templates/mail_blacklist_edit.htm b/interface/web/mail/templates/mail_blacklist_edit.htm
index c68729cbce..24ad67e569 100644
--- a/interface/web/mail/templates/mail_blacklist_edit.htm
+++ b/interface/web/mail/templates/mail_blacklist_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="server_id" class="col-sm-3 control-label">{tmpl_var name='server_id_txt'}</label>
                 <div class="col-sm-9"><select name="server_id" id="server_id" class="form-control">
@@ -34,4 +27,4 @@
         <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="mail/mail_blacklist_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="mail/mail_blacklist_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/mail/templates/mail_content_filter_edit.htm b/interface/web/mail/templates/mail_content_filter_edit.htm
index 4aa59c8e06..8eb4266fef 100644
--- a/interface/web/mail/templates/mail_content_filter_edit.htm
+++ b/interface/web/mail/templates/mail_content_filter_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="server_id" class="col-sm-3 control-label">{tmpl_var name='server_id_txt'}</label>
                 <div class="col-sm-9"><select name="server_id" id="server_id" class="form-control">
@@ -42,4 +35,4 @@
         <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="mail/mail_content_filter_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="mail/mail_content_filter_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/mail/templates/mail_domain_catchall_edit.htm b/interface/web/mail/templates/mail_domain_catchall_edit.htm
index 5991f2aecc..0ccae15a8f 100644
--- a/interface/web/mail/templates/mail_domain_catchall_edit.htm
+++ b/interface/web/mail/templates/mail_domain_catchall_edit.htm
@@ -1,8 +1,4 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-			<div class="form-group">
+<			<div class="form-group">
                 <label for="email_domain" class="col-sm-3 control-label">{tmpl_var name='source_txt'}</label>
                 <div class="col-sm-9">
 					<div class="input-group">
@@ -33,4 +29,4 @@
         <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="mail/mail_domain_catchall_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="mail/mail_domain_catchall_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/mail/templates/mail_domain_edit.htm b/interface/web/mail/templates/mail_domain_edit.htm
index 71a6655e80..1e4a49c2a5 100644
--- a/interface/web/mail/templates/mail_domain_edit.htm
+++ b/interface/web/mail/templates/mail_domain_edit.htm
@@ -1,11 +1,4 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
-            <tmpl_if name="is_admin">
+                 <tmpl_if name="is_admin">
                 <div class="form-group">
                     <tmpl_if name="edit_disabled">
                         <label for="server_id_disabled" class="col-sm-3 control-label">{tmpl_var name='server_id_txt'}</label>
diff --git a/interface/web/mail/templates/mail_forward_edit.htm b/interface/web/mail/templates/mail_forward_edit.htm
index 7c1fca0299..a5de2a00b7 100644
--- a/interface/web/mail/templates/mail_forward_edit.htm
+++ b/interface/web/mail/templates/mail_forward_edit.htm
@@ -1,8 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
             <div class="form-group">
                 <label class="col-sm-3 control-label"><em>*</em> {tmpl_var name='email_txt'}</label>
                 <div class="col-sm-9">
diff --git a/interface/web/mail/templates/mail_get_edit.htm b/interface/web/mail/templates/mail_get_edit.htm
index f3d8a3b0f4..6b5b8c198e 100644
--- a/interface/web/mail/templates/mail_get_edit.htm
+++ b/interface/web/mail/templates/mail_get_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="type" class="col-sm-3 control-label">{tmpl_var name='type_txt'}</label>
                 <div class="col-sm-9"><select name="type" id="type" class="form-control">
@@ -51,4 +44,4 @@
         <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="mail/mail_get_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="mail/mail_get_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/mail/templates/mail_mailinglist_edit.htm b/interface/web/mail/templates/mail_mailinglist_edit.htm
index 9d6f8bdde6..ac43cbb417 100644
--- a/interface/web/mail/templates/mail_mailinglist_edit.htm
+++ b/interface/web/mail/templates/mail_mailinglist_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        <legend>Mailing List</legend>	
             <tmpl_if name="is_admin">
                 <div class="form-group">
                     <label for="client_group_id" class="col-sm-3 control-label">{tmpl_var name='client_txt'}</label>
diff --git a/interface/web/mail/templates/mail_relay_recipient_edit.htm b/interface/web/mail/templates/mail_relay_recipient_edit.htm
index 83e52aa661..7b476fe37a 100644
--- a/interface/web/mail/templates/mail_relay_recipient_edit.htm
+++ b/interface/web/mail/templates/mail_relay_recipient_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        <legend>Relay recipient</legend>
             <div class="form-group">
                 <label for="server_id" class="col-sm-3 control-label">{tmpl_var name='server_id_txt'}</label>
                 <div class="col-sm-9"><select name="server_id" id="server_id" class="form-control">
@@ -28,4 +21,4 @@
         <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="mail/mail_relay_recipient_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="mail/mail_relay_recipient_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/mail/templates/mail_transport_edit.htm b/interface/web/mail/templates/mail_transport_edit.htm
index e0332de1b6..694e57634d 100644
--- a/interface/web/mail/templates/mail_transport_edit.htm
+++ b/interface/web/mail/templates/mail_transport_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="server_id" class="col-sm-3 control-label">{tmpl_var name='server_id_txt'}</label>
                 <div class="col-sm-9"><select name="server_id" id="server_id" class="form-control">
@@ -48,4 +41,4 @@
         <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="mail/mail_transport_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="mail/mail_transport_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/mail/templates/mail_user_autoresponder_edit.htm b/interface/web/mail/templates/mail_user_autoresponder_edit.htm
index c5fc584c09..1c1cdc6759 100644
--- a/interface/web/mail/templates/mail_user_autoresponder_edit.htm
+++ b/interface/web/mail/templates/mail_user_autoresponder_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="autoresponder_subject" class="col-sm-3 control-label">{tmpl_var name='autoresponder_subject_txt'}</label>
                 <div class="col-sm-9"><input class="form-control" type="text" name="autoresponder_subject" id="autoresponder_subject" value="{tmpl_var name='autoresponder_subject'}" /></div></div>
@@ -30,4 +23,4 @@
             <button class="btn btn-default formbutton-success" type="button"
                     value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="mail/mail_user_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="mail/mail_user_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/mail/templates/mail_user_backup.htm b/interface/web/mail/templates/mail_user_backup.htm
index f9abba3bba..0de61a3297 100644
--- a/interface/web/mail/templates/mail_user_backup.htm
+++ b/interface/web/mail/templates/mail_user_backup.htm
@@ -1,8 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
 <tmpl_if name="config_error_msg">
 <div style="background: #ffdfdf; border: 1px solid #df7d7d; border-width: 1px 0; margin: 1.5em 0 1.5em 0; padding: 7px;">
                 <p style="font-face:bold">{tmpl_var name='configuration_error_txt'}</p>
diff --git a/interface/web/mail/templates/mail_user_custom_rules_edit.htm b/interface/web/mail/templates/mail_user_custom_rules_edit.htm
index d12378678c..263ea7916a 100644
--- a/interface/web/mail/templates/mail_user_custom_rules_edit.htm
+++ b/interface/web/mail/templates/mail_user_custom_rules_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="custom_mailfilter" class="col-sm-3 control-label">{tmpl_var name='custom_mailfilter_txt'}</label>
                 <div class="col-sm-9"><textarea class="form-control" name="custom_mailfilter" id="custom_mailfilter" rows='15' cols='30'>{tmpl_var name='custom_mailfilter'}</textarea></div>
@@ -16,4 +9,4 @@
         <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="mail/mail_user_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="mail/mail_user_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/mail/templates/mail_user_filter_edit.htm b/interface/web/mail/templates/mail_user_filter_edit.htm
index cb2d79a249..6a7983c64e 100644
--- a/interface/web/mail/templates/mail_user_filter_edit.htm
+++ b/interface/web/mail/templates/mail_user_filter_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="rulename" class="col-sm-3 control-label">{tmpl_var name='rulename_txt'}</label>
                 <div class="col-sm-9"><input type="text" id="rulename" name="rulename" value="{tmpl_var name='rulename'}" class="form-control"></div>
@@ -32,4 +25,4 @@
         <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="mail/mail_user_filter_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="mail/mail_user_edit.php?id={tmpl_var name='mailuser_id'}">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/mail/templates/mail_user_mailbox_edit.htm b/interface/web/mail/templates/mail_user_mailbox_edit.htm
index bcab744de3..a90799cf11 100644
--- a/interface/web/mail/templates/mail_user_mailbox_edit.htm
+++ b/interface/web/mail/templates/mail_user_mailbox_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="name" class="col-sm-3 control-label">{tmpl_var name='name_txt'}</label>
                 <div class="col-sm-6"><input type="text" name="name" id="name" value="{tmpl_var name='name'}" class="form-control" /></div><div class="col-sm-3 input-sm"> &nbsp; {tmpl_var name='name_optional_txt'}
diff --git a/interface/web/mail/templates/mail_user_mailfilter_edit.htm b/interface/web/mail/templates/mail_user_mailfilter_edit.htm
index 183a98b5e3..fc40398d5d 100644
--- a/interface/web/mail/templates/mail_user_mailfilter_edit.htm
+++ b/interface/web/mail/templates/mail_user_mailfilter_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label class="col-sm-3 control-label">{tmpl_var name='move_junk_txt'}</label>
                 <div class="col-sm-9">
@@ -20,4 +13,4 @@
         <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="mail/mail_user_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="mail/mail_user_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/mail/templates/mail_whitelist_edit.htm b/interface/web/mail/templates/mail_whitelist_edit.htm
index 1f72e6935f..575a6ae2fb 100644
--- a/interface/web/mail/templates/mail_whitelist_edit.htm
+++ b/interface/web/mail/templates/mail_whitelist_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="server_id" class="col-sm-3 control-label">{tmpl_var name='server_id_txt'}</label>
                 <div class="col-sm-9"><select name="server_id" id="server_id" class="form-control">
@@ -34,4 +27,4 @@
         <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="mail/mail_whitelist_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="mail/mail_whitelist_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/mail/templates/spamfilter_amavis_edit.htm b/interface/web/mail/templates/spamfilter_amavis_edit.htm
index 41bf6b5410..d770ed842a 100644
--- a/interface/web/mail/templates/spamfilter_amavis_edit.htm
+++ b/interface/web/mail/templates/spamfilter_amavis_edit.htm
@@ -1,8 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
 <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
 	<!-- Settings -->
   <div class="panel panel-default">
@@ -195,4 +190,4 @@
         <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="mail/spamfilter_policy_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="mail/spamfilter_policy_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/mail/templates/spamfilter_blacklist_edit.htm b/interface/web/mail/templates/spamfilter_blacklist_edit.htm
index 1db93dd7c2..3a7fd47869 100644
--- a/interface/web/mail/templates/spamfilter_blacklist_edit.htm
+++ b/interface/web/mail/templates/spamfilter_blacklist_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <!--
                 <div class="form-group">
                     <label for="server_id" class="col-sm-3 control-label">{tmpl_var name='server_id_txt'}</label>
@@ -42,4 +35,4 @@
         <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="mail/spamfilter_blacklist_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="mail/spamfilter_blacklist_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/mail/templates/spamfilter_policy_edit.htm b/interface/web/mail/templates/spamfilter_policy_edit.htm
index 506b4d5b89..11fd8e73d1 100644
--- a/interface/web/mail/templates/spamfilter_policy_edit.htm
+++ b/interface/web/mail/templates/spamfilter_policy_edit.htm
@@ -1,9 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-       
             <div class="form-group">
                 <label for="policy_name" class="col-sm-3 control-label">{tmpl_var name='policy_name_txt'}</label>
                 <div class="col-sm-9"><input type="text" name="policy_name" id="policy_name" value="{tmpl_var name='policy_name'}" class="form-control" /></div></div>
@@ -26,4 +20,4 @@
         <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="mail/spamfilter_policy_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="mail/spamfilter_policy_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/mail/templates/spamfilter_rspamd_edit.htm b/interface/web/mail/templates/spamfilter_rspamd_edit.htm
index 2f8ea0f451..5d1602514a 100644
--- a/interface/web/mail/templates/spamfilter_rspamd_edit.htm
+++ b/interface/web/mail/templates/spamfilter_rspamd_edit.htm
@@ -1,8 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
 			<div class="form-group">
                 <label for="rspamd_spam_greylisting_level" class="col-sm-3 control-label">{tmpl_var name='rspamd_spam_greylisting_level_txt'}</label>
                 <div class="col-sm-9"><input type="text" name="rspamd_spam_greylisting_level" id="rspamd_spam_greylisting_level" value="{tmpl_var name='rspamd_spam_greylisting_level'}" class="form-control" /></div>
@@ -27,4 +22,4 @@
         <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="mail/spamfilter_policy_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="mail/spamfilter_policy_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/mail/templates/spamfilter_users_edit.htm b/interface/web/mail/templates/spamfilter_users_edit.htm
index 7c75c5ee34..80bdbd66ca 100644
--- a/interface/web/mail/templates/spamfilter_users_edit.htm
+++ b/interface/web/mail/templates/spamfilter_users_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="server_id" class="col-sm-3 control-label">{tmpl_var name='server_id_txt'}</label>
                 <div class="col-sm-9"><select name="server_id" id="server_id" class="form-control">
@@ -42,4 +35,4 @@
         <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="mail/spamfilter_users_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="mail/spamfilter_users_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/mail/templates/spamfilter_whitelist_edit.htm b/interface/web/mail/templates/spamfilter_whitelist_edit.htm
index aefe5f9fec..fcc6e09a2e 100644
--- a/interface/web/mail/templates/spamfilter_whitelist_edit.htm
+++ b/interface/web/mail/templates/spamfilter_whitelist_edit.htm
@@ -1,11 +1,4 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
-            <!--
+                  <!--
                   <div class="form-group">
                     <label for="server_id" class="col-sm-3 control-label">{tmpl_var name='server_id_txt'}</label>
                     <div class="col-sm-9"><select name="server_id" id="server_id" class="form-control">
@@ -42,4 +35,4 @@
         <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="mail/spamfilter_whitelist_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="mail/spamfilter_whitelist_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/mail/templates/xmpp_domain_edit.htm b/interface/web/mail/templates/xmpp_domain_edit.htm
index 5c4e8d79a0..6953fbfb14 100644
--- a/interface/web/mail/templates/xmpp_domain_edit.htm
+++ b/interface/web/mail/templates/xmpp_domain_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <tmpl_if name="is_admin">
                 <div class="form-group">
                     <tmpl_if name="edit_disabled">
diff --git a/interface/web/mail/templates/xmpp_domain_edit_modules.htm b/interface/web/mail/templates/xmpp_domain_edit_modules.htm
index 8efcf50976..f705c495da 100644
--- a/interface/web/mail/templates/xmpp_domain_edit_modules.htm
+++ b/interface/web/mail/templates/xmpp_domain_edit_modules.htm
@@ -1,9 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
 <tmpl_if name="limit_xmpp_anon" value="y">
     <div class="form-group">
         <label class="col-sm-3 control-label">{tmpl_var name='use_anon_host_txt'}</label>
diff --git a/interface/web/mail/templates/xmpp_domain_edit_muc.htm b/interface/web/mail/templates/xmpp_domain_edit_muc.htm
index dd46514cae..5425822352 100644
--- a/interface/web/mail/templates/xmpp_domain_edit_muc.htm
+++ b/interface/web/mail/templates/xmpp_domain_edit_muc.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-
 <div class="form-group">
     <label class="col-sm-3 control-label">{tmpl_var name='use_muc_host_txt'}</label>
     <div class="col-sm-9">
diff --git a/interface/web/mail/templates/xmpp_domain_edit_ssl.htm b/interface/web/mail/templates/xmpp_domain_edit_ssl.htm
index 2bb7d059aa..0ef2e2c962 100644
--- a/interface/web/mail/templates/xmpp_domain_edit_ssl.htm
+++ b/interface/web/mail/templates/xmpp_domain_edit_ssl.htm
@@ -1,8 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
 <tmpl_if name="config_error_msg">
 <div style="background: #ffdfdf; border: 1px solid #df7d7d; border-width: 1px 0; margin: 1.5em 0 1.5em 0; padding: 7px;">
                 <p style="font-face:bold">{tmpl_var name='configuration_error_txt'}</p>
@@ -97,4 +92,4 @@
     }
 	</tmpl_if>
 //-->
-</script>
\ No newline at end of file
+</script>
diff --git a/interface/web/mail/templates/xmpp_user_edit.htm b/interface/web/mail/templates/xmpp_user_edit.htm
index 467b83fb52..c70155d8f5 100644
--- a/interface/web/mail/templates/xmpp_user_edit.htm
+++ b/interface/web/mail/templates/xmpp_user_edit.htm
@@ -1,7 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
 			<div class="form-group">
                 <label class="col-sm-3 control-label"><em>*</em> {tmpl_var name='jid_txt'}</label>
                 <div class="col-sm-9">
-- 
GitLab


From 86e85a33b6a32de0c9b68c0db8ab73ca5d9d0885 Mon Sep 17 00:00:00 2001
From: Thom Pol <thom@amsterdamtech.nl>
Date: Wed, 27 May 2020 21:43:34 +0200
Subject: [PATCH 220/242] Removed double / empty titles and descriptions

---
 interface/web/dns/templates/dns_a_edit.htm        | 11 ++---------
 interface/web/dns/templates/dns_aaaa_edit.htm     |  9 +--------
 interface/web/dns/templates/dns_alias_edit.htm    |  9 +--------
 interface/web/dns/templates/dns_caa_edit.htm      |  3 ---
 interface/web/dns/templates/dns_cname_edit.htm    |  9 +--------
 interface/web/dns/templates/dns_dkim_edit.htm     |  4 ----
 interface/web/dns/templates/dns_dmarc_edit.htm    |  7 -------
 interface/web/dns/templates/dns_ds_edit.htm       |  9 +--------
 interface/web/dns/templates/dns_hinfo_edit.htm    |  9 +--------
 interface/web/dns/templates/dns_import.htm        |  2 +-
 interface/web/dns/templates/dns_loc_edit.htm      |  9 +--------
 interface/web/dns/templates/dns_mx_edit.htm       |  9 +--------
 interface/web/dns/templates/dns_ns_edit.htm       |  9 +--------
 interface/web/dns/templates/dns_ptr_edit.htm      |  9 +--------
 interface/web/dns/templates/dns_records_edit.htm  |  7 +------
 interface/web/dns/templates/dns_rp_edit.htm       |  9 +--------
 interface/web/dns/templates/dns_slave_edit.htm    |  7 -------
 interface/web/dns/templates/dns_soa_edit.htm      |  6 ------
 interface/web/dns/templates/dns_spf_edit.htm      |  7 -------
 interface/web/dns/templates/dns_srv_edit.htm      |  9 +--------
 interface/web/dns/templates/dns_template_edit.htm |  7 -------
 interface/web/dns/templates/dns_tlsa_edit.htm     |  9 +--------
 interface/web/dns/templates/dns_txt_edit.htm      |  9 +--------
 interface/web/dns/templates/dns_wizard.htm        |  2 --
 24 files changed, 17 insertions(+), 163 deletions(-)

diff --git a/interface/web/dns/templates/dns_a_edit.htm b/interface/web/dns/templates/dns_a_edit.htm
index 92dfbcd3ae..907d84b0bc 100644
--- a/interface/web/dns/templates/dns_a_edit.htm
+++ b/interface/web/dns/templates/dns_a_edit.htm
@@ -1,11 +1,4 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
-            <div class="form-group">
+                   <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><p class="formHint">{tmpl_var name='name_hint_txt'}</p>
             </div>
@@ -45,4 +38,4 @@
         searchFieldWatermark: '',
         resultBoxPosition: ''
     });	
-</script>
\ No newline at end of file
+</script>
diff --git a/interface/web/dns/templates/dns_aaaa_edit.htm b/interface/web/dns/templates/dns_aaaa_edit.htm
index fbbc757cec..13ee0ccaab 100644
--- a/interface/web/dns/templates/dns_aaaa_edit.htm
+++ b/interface/web/dns/templates/dns_aaaa_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="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><p class="formHint">{tmpl_var name='name_hint_txt'}</p>
@@ -45,4 +38,4 @@
         searchFieldWatermark: '',
         resultBoxPosition: ''
     });	
-</script>
\ No newline at end of file
+</script>
diff --git a/interface/web/dns/templates/dns_alias_edit.htm b/interface/web/dns/templates/dns_alias_edit.htm
index 5ab2a3ccaa..ad6c74d863 100644
--- a/interface/web/dns/templates/dns_alias_edit.htm
+++ b/interface/web/dns/templates/dns_alias_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="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>
@@ -29,4 +22,4 @@
         <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_alias_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>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/dns/templates/dns_caa_edit.htm b/interface/web/dns/templates/dns_caa_edit.htm
index 3de64818b4..8d4372d9a9 100644
--- a/interface/web/dns/templates/dns_caa_edit.htm
+++ b/interface/web/dns/templates/dns_caa_edit.htm
@@ -1,6 +1,3 @@
-<div class='page-header'><h1><tmpl_var name="list_head_txt"></h1></div>
-<p><tmpl_var name="list_desc_txt"></p>
-
 <div class="form-group">
 	<label for="ca_list" class="col-sm-2 control-label">{tmpl_var name='ca_list_txt'}</label>
 	<div class="col-sm-4"><select name="ca_list" id="ca_list" class="form-control">{tmpl_var name='ca_list'}</select></div>
diff --git a/interface/web/dns/templates/dns_cname_edit.htm b/interface/web/dns/templates/dns_cname_edit.htm
index 778279cbd8..3b37e5133d 100644
--- a/interface/web/dns/templates/dns_cname_edit.htm
+++ b/interface/web/dns/templates/dns_cname_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="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>
@@ -29,4 +22,4 @@
         <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_cname_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>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/dns/templates/dns_dkim_edit.htm b/interface/web/dns/templates/dns_dkim_edit.htm
index 310dda1c9e..be3bea3dd5 100644
--- a/interface/web/dns/templates/dns_dkim_edit.htm
+++ b/interface/web/dns/templates/dns_dkim_edit.htm
@@ -1,7 +1,3 @@
-<div class='page-header'><h1><tmpl_var name="list_head_txt"></h1></div>
-
-<p><tmpl_var name="list_desc_txt"></p>
-
 <div class="form-group">
 	<label for="data" class="col-sm-3 control-label">{tmpl_var name='public_key_txt'}</label>
 	<tmpl_if name="edit_disabled">
diff --git a/interface/web/dns/templates/dns_dmarc_edit.htm b/interface/web/dns/templates/dns_dmarc_edit.htm
index 4b7646a398..668b29f8df 100644
--- a/interface/web/dns/templates/dns_dmarc_edit.htm
+++ b/interface/web/dns/templates/dns_dmarc_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="domain" class="col-sm-2 control-label">{tmpl_var name='domain_txt'}</label>
 				<div class="col-sm-3">
diff --git a/interface/web/dns/templates/dns_ds_edit.htm b/interface/web/dns/templates/dns_ds_edit.htm
index 56113f0ec0..c7012d9fd9 100644
--- a/interface/web/dns/templates/dns_ds_edit.htm
+++ b/interface/web/dns/templates/dns_ds_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="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>
@@ -29,4 +22,4 @@
         <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_ds_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>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/dns/templates/dns_hinfo_edit.htm b/interface/web/dns/templates/dns_hinfo_edit.htm
index 0be975f529..39a02dabbc 100644
--- a/interface/web/dns/templates/dns_hinfo_edit.htm
+++ b/interface/web/dns/templates/dns_hinfo_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="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>
@@ -29,4 +22,4 @@
         <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_hinfo_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>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/dns/templates/dns_import.htm b/interface/web/dns/templates/dns_import.htm
index 87d54316f3..dafb9016a0 100644
--- a/interface/web/dns/templates/dns_import.htm
+++ b/interface/web/dns/templates/dns_import.htm
@@ -62,4 +62,4 @@
             jQuery('.positive').trigger('click');
         }
     }
-</script>
\ No newline at end of file
+</script>
diff --git a/interface/web/dns/templates/dns_loc_edit.htm b/interface/web/dns/templates/dns_loc_edit.htm
index 12cfb6357f..d8e261991c 100644
--- a/interface/web/dns/templates/dns_loc_edit.htm
+++ b/interface/web/dns/templates/dns_loc_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="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>
@@ -29,4 +22,4 @@
         <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_loc_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>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/dns/templates/dns_mx_edit.htm b/interface/web/dns/templates/dns_mx_edit.htm
index 290c218faf..3a84cbacb4 100644
--- a/interface/web/dns/templates/dns_mx_edit.htm
+++ b/interface/web/dns/templates/dns_mx_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="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>
@@ -32,4 +25,4 @@
         <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_mx_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>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/dns/templates/dns_ns_edit.htm b/interface/web/dns/templates/dns_ns_edit.htm
index 3cafa17daf..6644af152c 100644
--- a/interface/web/dns/templates/dns_ns_edit.htm
+++ b/interface/web/dns/templates/dns_ns_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="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>
@@ -29,4 +22,4 @@
         <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_ns_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>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/dns/templates/dns_ptr_edit.htm b/interface/web/dns/templates/dns_ptr_edit.htm
index de59069259..725bbb17fa 100644
--- a/interface/web/dns/templates/dns_ptr_edit.htm
+++ b/interface/web/dns/templates/dns_ptr_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="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>
@@ -29,4 +22,4 @@
         <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_ptr_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>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/dns/templates/dns_records_edit.htm b/interface/web/dns/templates/dns_records_edit.htm
index a2a42c3d45..979cebe5fd 100644
--- a/interface/web/dns/templates/dns_records_edit.htm
+++ b/interface/web/dns/templates/dns_records_edit.htm
@@ -1,8 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
 <div class="panel panel_dns_soa">
 
     {tmpl_var name='dns_records'}
@@ -11,4 +6,4 @@
         <input type="hidden" name="id" value="{tmpl_var name='id'}">
     </div>
   
-</div>
\ No newline at end of file
+</div>
diff --git a/interface/web/dns/templates/dns_rp_edit.htm b/interface/web/dns/templates/dns_rp_edit.htm
index 3dd04adf1a..9a4b9f4e55 100644
--- a/interface/web/dns/templates/dns_rp_edit.htm
+++ b/interface/web/dns/templates/dns_rp_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="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>
@@ -29,4 +22,4 @@
         <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_rp_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>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/dns/templates/dns_slave_edit.htm b/interface/web/dns/templates/dns_slave_edit.htm
index 832fec1abc..1f4f7234d6 100644
--- a/interface/web/dns/templates/dns_slave_edit.htm
+++ b/interface/web/dns/templates/dns_slave_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        <legend><tmpl_var name="secondary_zone_txt"></legend>
             <tmpl_if name="is_admin">
                 <div class="form-group">
                     <tmpl_if name="edit_disabled">
diff --git a/interface/web/dns/templates/dns_soa_edit.htm b/interface/web/dns/templates/dns_soa_edit.htm
index 7a069cb3bf..ce8154c857 100644
--- a/interface/web/dns/templates/dns_soa_edit.htm
+++ b/interface/web/dns/templates/dns_soa_edit.htm
@@ -1,8 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
 <tmpl_if name="config_error_msg">
 <div style="background: #ffdfdf; border: 1px solid #df7d7d; border-width: 1px 0; margin: 1.5em 0 1.5em 0; padding: 7px;">
 	<p style="font-face:bold">{tmpl_var name='configuration_error_txt'}</p>
@@ -10,7 +5,6 @@
 </div>
 </tmpl_if>
 
-        <legend>DNS Zone</legend>
             <tmpl_if name="is_admin">
                 <div class="form-group">
                     <tmpl_if name="edit_disabled">
diff --git a/interface/web/dns/templates/dns_spf_edit.htm b/interface/web/dns/templates/dns_spf_edit.htm
index fc7400d620..2817d7645b 100644
--- a/interface/web/dns/templates/dns_spf_edit.htm
+++ b/interface/web/dns/templates/dns_spf_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="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>
diff --git a/interface/web/dns/templates/dns_srv_edit.htm b/interface/web/dns/templates/dns_srv_edit.htm
index fd9f00d7b4..f142f482d4 100644
--- a/interface/web/dns/templates/dns_srv_edit.htm
+++ b/interface/web/dns/templates/dns_srv_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="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>
@@ -38,4 +31,4 @@
         <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_srv_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>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/dns/templates/dns_template_edit.htm b/interface/web/dns/templates/dns_template_edit.htm
index 9de8c93447..db0ee9d925 100644
--- a/interface/web/dns/templates/dns_template_edit.htm
+++ b/interface/web/dns/templates/dns_template_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="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>
diff --git a/interface/web/dns/templates/dns_tlsa_edit.htm b/interface/web/dns/templates/dns_tlsa_edit.htm
index c2cde8be61..297077eecb 100644
--- a/interface/web/dns/templates/dns_tlsa_edit.htm
+++ b/interface/web/dns/templates/dns_tlsa_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="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>
@@ -29,4 +22,4 @@
         <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_tlsa_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>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/dns/templates/dns_txt_edit.htm b/interface/web/dns/templates/dns_txt_edit.htm
index f03f6d36c8..de69bc553e 100644
--- a/interface/web/dns/templates/dns_txt_edit.htm
+++ b/interface/web/dns/templates/dns_txt_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="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>
@@ -29,4 +22,4 @@
         <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_txt_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>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/dns/templates/dns_wizard.htm b/interface/web/dns/templates/dns_wizard.htm
index 907dedca88..2f4f24b4e0 100644
--- a/interface/web/dns/templates/dns_wizard.htm
+++ b/interface/web/dns/templates/dns_wizard.htm
@@ -1,14 +1,12 @@
 <div class='page-header'>
 	<h1><tmpl_var name="list_head_txt"></h1>
 </div>
-<p><tmpl_var name="list_desc_txt"></p>
 
 <tmpl_if name="error">
     <div id="errorMsg"><h3><tmpl_var name="error_txt"></h3><ol><tmpl_var name="error"></ol></div>
 </tmpl_if>
 
 
-        <legend><tmpl_var name="dns_zone_txt"></legend>
             <div class="form-group">
                 <label for="template_id" class="col-sm-3 control-label">{tmpl_var name='template_id_txt'}</label>
                 <div class="col-sm-9"><select name="template_id" id="template_id" class="form-control" onChange="ISPConfig.submitForm('pageForm','dns/dns_wizard.php')">
-- 
GitLab


From d4751a42b4a23372d3270505b5ae1bf98f0dd445 Mon Sep 17 00:00:00 2001
From: Thom Pol <thom@amsterdamtech.nl>
Date: Wed, 27 May 2020 21:57:47 +0200
Subject: [PATCH 221/242] Removed double / empty titles and descriptions

---
 interface/web/tools/form/interface_settings.tform.php | 2 +-
 interface/web/tools/form/user_settings.tform.php      | 2 +-
 interface/web/tools/templates/dns_import_tupa.htm     | 1 -
 interface/web/tools/templates/interface_settings.htm  | 9 +--------
 interface/web/tools/templates/resync.htm              | 5 -----
 interface/web/tools/templates/user_settings.htm       | 7 +------
 6 files changed, 4 insertions(+), 22 deletions(-)

diff --git a/interface/web/tools/form/interface_settings.tform.php b/interface/web/tools/form/interface_settings.tform.php
index 9ab49eb0f1..05eaba9416 100644
--- a/interface/web/tools/form/interface_settings.tform.php
+++ b/interface/web/tools/form/interface_settings.tform.php
@@ -61,7 +61,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 
 $form['title']   = 'interface_head_txt';
-$form['description']  = 'interface_desc_txt';
+//*$form['description']  = 'interface_desc_txt';
 $form['name']   = 'interface';
 $form['action']  = 'interface_settings.php';
 $form['db_table'] = 'sys_user';
diff --git a/interface/web/tools/form/user_settings.tform.php b/interface/web/tools/form/user_settings.tform.php
index f3ad5a2d3d..7daa1a7b84 100644
--- a/interface/web/tools/form/user_settings.tform.php
+++ b/interface/web/tools/form/user_settings.tform.php
@@ -61,7 +61,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 
 $form['title']    = 'User Settings';
-$form['description']  = 'Form to edit the user password and language.';
+//*$form['description']  = 'Form to edit the user password and language.';
 $form['name']    = 'usersettings';
 $form['action']   = 'user_settings.php';
 $form['db_table']  = 'sys_user';
diff --git a/interface/web/tools/templates/dns_import_tupa.htm b/interface/web/tools/templates/dns_import_tupa.htm
index cd47f431e0..4593fbb800 100644
--- a/interface/web/tools/templates/dns_import_tupa.htm
+++ b/interface/web/tools/templates/dns_import_tupa.htm
@@ -2,7 +2,6 @@
 <p><tmpl_var name="list_desc_txt"></p>
 
 
-        <legend>PowerDNS Tupa import</legend>
             <div class="form-group">
                 <label class="col-sm-3 control-label" for="dbhost">Tupa database hostname</label>
                 <div class="col-sm-9"><input class="form-control" type="text" id="dbhost" value="{tmpl_var name='dbhost'}" name="dbhost" /></div>
diff --git a/interface/web/tools/templates/interface_settings.htm b/interface/web/tools/templates/interface_settings.htm
index ccd5000445..6767287206 100644
--- a/interface/web/tools/templates/interface_settings.htm
+++ b/interface/web/tools/templates/interface_settings.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="page_head_txt"></h1>
-</div>
-<p><tmpl_var name="page_desc_txt"></p>
-
-
-        
             <!-- TODO: If user theme change is activated -->
             <div class="form-group">
                 <label for="app_theme" class="col-sm-3 control-label">{tmpl_var name='app_theme_txt'}</label>
@@ -26,4 +19,4 @@
         <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="tools/interface_settings.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="tools/index.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/tools/templates/resync.htm b/interface/web/tools/templates/resync.htm
index 3e66290fb0..ef3ac886c8 100644
--- a/interface/web/tools/templates/resync.htm
+++ b/interface/web/tools/templates/resync.htm
@@ -1,8 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-	
 <div class="form-group">
 	<label for="resync_all" class="col-sm-2 control-label">{tmpl_var name='resync_all_txt'}</label>
 	<div class="col-sm-1"><input type="checkbox" id="resync_all" value="1" name="resync_all"></div>
diff --git a/interface/web/tools/templates/user_settings.htm b/interface/web/tools/templates/user_settings.htm
index 26f9e0c861..4fa1c9de34 100644
--- a/interface/web/tools/templates/user_settings.htm
+++ b/interface/web/tools/templates/user_settings.htm
@@ -1,8 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
 			<div class="form-group">
                 <label for="passwort" class="col-sm-3 control-label">{tmpl_var name='password_txt'}</label>
                 <div class="col-sm-9">
@@ -43,4 +38,4 @@
         <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="tools/user_settings.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="tools/index.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
-- 
GitLab


From 499745fdfa6bf31802a9de05647a538a26408815 Mon Sep 17 00:00:00 2001
From: Thom Pol <thom@amsterdamtech.nl>
Date: Wed, 27 May 2020 22:21:59 +0200
Subject: [PATCH 222/242] Removed double / empty titles and descriptions

---
 interface/web/help/templates/faq_edit.htm             | 4 +---
 interface/web/help/templates/faq_sections_edit.htm    | 3 ---
 interface/web/help/templates/support_message_edit.htm | 9 +--------
 interface/web/help/templates/support_message_view.htm | 9 +--------
 4 files changed, 3 insertions(+), 22 deletions(-)

diff --git a/interface/web/help/templates/faq_edit.htm b/interface/web/help/templates/faq_edit.htm
index 3bf9d8a903..d0f9760511 100644
--- a/interface/web/help/templates/faq_edit.htm
+++ b/interface/web/help/templates/faq_edit.htm
@@ -1,5 +1,3 @@
-
-        <legend>{tmpl_var name='faq_faq_txt'}</legend>
             <div class="form-group">
                 <label for="hf_section" class="col-sm-3 control-label">{tmpl_var name='faq_section_txt'}</label>
                 <div class="col-sm-9"><select name="hf_section" id="hf_section" class="form-control">
@@ -20,4 +18,4 @@
         <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="help/faq_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="help/faq_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/help/templates/faq_sections_edit.htm b/interface/web/help/templates/faq_sections_edit.htm
index 1380447db8..2ff8354976 100644
--- a/interface/web/help/templates/faq_sections_edit.htm
+++ b/interface/web/help/templates/faq_sections_edit.htm
@@ -1,5 +1,3 @@
-
-        <legend>{tmpl_var name='faq_section_name_txt'}</legend>
             <div class="form-group">
                 <label for="hfs_name" class="col-sm-3 control-label">{tmpl_var name='faq_section_name_txt'}</label>
                 <div class="col-sm-9"><input type="text" name="hfs_name" id="hfs_name" value="{tmpl_var name='hfs_name'}" class="form-control" /></div></div>
@@ -11,4 +9,3 @@
             <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="help/faq_sections_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="help/faq_sections_list.php">{tmpl_var name='btn_cancel_txt'}</button>
         </div></div>
-
diff --git a/interface/web/help/templates/support_message_edit.htm b/interface/web/help/templates/support_message_edit.htm
index fb54578e16..a01cb31076 100644
--- a/interface/web/help/templates/support_message_edit.htm
+++ b/interface/web/help/templates/support_message_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        <legend>{tmpl_var name='message_txt'}</legend>
             <div class="form-group">
                 <label for="recipient_id" class="col-sm-3 control-label">{tmpl_var name='recipient_id_txt'}</label>
                 <div class="col-sm-9"><select name="recipient_id" id="recipient_id" class="form-control">
@@ -26,4 +19,4 @@
         <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="help/support_message_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="help/support_message_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/help/templates/support_message_view.htm b/interface/web/help/templates/support_message_view.htm
index faaaf859cd..4771a47148 100644
--- a/interface/web/help/templates/support_message_view.htm
+++ b/interface/web/help/templates/support_message_view.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        <legend>{tmpl_var name='message_txt'}</legend>
             <div class="form-group">
                 <label for="subject" class="col-sm-3 control-label">{tmpl_var name='subject_txt'}</label>
                 <p>{tmpl_var name='subject'}</p>
@@ -20,4 +13,4 @@
         
         <div class="clear"><div class="right">
             <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='reply_txt'}" data-load-content="help/support_message_edit.php?reply={tmpl_var name='id'}">{tmpl_var name='reply_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
-- 
GitLab


From 517e507620f6bdd6cb4b4b79d2e5acd18dbf5561 Mon Sep 17 00:00:00 2001
From: Thom Pol <thom@amsterdamtech.nl>
Date: Wed, 27 May 2020 23:05:46 +0200
Subject: [PATCH 223/242] Removed double / empty titles and descriptions

---
 interface/web/admin/form/users.tform.php                 | 2 +-
 .../web/admin/templates/directive_snippets_edit.htm      | 7 -------
 interface/web/admin/templates/firewall_edit.htm          | 9 +--------
 interface/web/admin/templates/remote_action_osupdate.htm | 3 +--
 interface/web/admin/templates/remote_user_edit.htm       | 7 -------
 interface/web/admin/templates/server_edit_services.htm   | 7 -------
 interface/web/admin/templates/server_ip_edit.htm         | 7 -------
 interface/web/admin/templates/server_ip_map_edit.htm     | 4 ----
 .../web/admin/templates/server_php_fastcgi_edit.htm      | 9 +--------
 interface/web/admin/templates/server_php_fpm_edit.htm    | 9 +--------
 interface/web/admin/templates/server_php_name_edit.htm   | 7 -------
 interface/web/admin/templates/software_repo_edit.htm     | 9 +--------
 .../web/admin/templates/system_config_mail_edit.htm      | 7 -------
 .../web/admin/templates/system_config_misc_edit.htm      | 4 ----
 .../web/admin/templates/system_config_sites_edit.htm     | 7 -------
 interface/web/admin/templates/users_groups_edit.htm      | 9 +--------
 interface/web/admin/templates/users_user_edit.htm        | 7 -------
 17 files changed, 7 insertions(+), 107 deletions(-)

diff --git a/interface/web/admin/form/users.tform.php b/interface/web/admin/form/users.tform.php
index be77122b10..30c9cbb397 100644
--- a/interface/web/admin/form/users.tform.php
+++ b/interface/web/admin/form/users.tform.php
@@ -61,7 +61,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 
 $form['title']   = 'Users';
-$form['description']  = 'Form to edit systemusers.';
+//$form['description']  = 'Form to edit systemusers.';
 $form['name']   = 'users';
 $form['action']  = 'users_edit.php';
 $form['db_table'] = 'sys_user';
diff --git a/interface/web/admin/templates/directive_snippets_edit.htm b/interface/web/admin/templates/directive_snippets_edit.htm
index 657d0ad1ef..ee4d2ab3cd 100644
--- a/interface/web/admin/templates/directive_snippets_edit.htm
+++ b/interface/web/admin/templates/directive_snippets_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="name" class="col-sm-3 control-label">{tmpl_var name='name_txt'}</label>
                 <tmpl_if name='is_master'><div class="col-sm-9 col-text">{tmpl_var name='name'}</div></tmpl_else><div class="col-sm-9"><input type="text" name="name" id="name" value="{tmpl_var name='name'}" class="form-control" /></div></tmpl_if>
diff --git a/interface/web/admin/templates/firewall_edit.htm b/interface/web/admin/templates/firewall_edit.htm
index cd643a8caf..07fe3d0ff5 100644
--- a/interface/web/admin/templates/firewall_edit.htm
+++ b/interface/web/admin/templates/firewall_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="server_id" class="col-sm-3 control-label">{tmpl_var name='server_id_txt'}</label>
                 <div class="col-sm-9"><select name="server_id" id="server_id" class="form-control">
@@ -30,4 +23,4 @@
         <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="admin/firewall_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="admin/firewall_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/admin/templates/remote_action_osupdate.htm b/interface/web/admin/templates/remote_action_osupdate.htm
index d5fa2fffd5..55629fc1e9 100644
--- a/interface/web/admin/templates/remote_action_osupdate.htm
+++ b/interface/web/admin/templates/remote_action_osupdate.htm
@@ -4,7 +4,6 @@
 <p><tmpl_var name="do_osupdate_desc"></p>
 
 
-        <legend>{tmpl_var name='do_osupdate_caption'}</legend>
             <div class="form-group">
                 <label for="server_select" class="col-sm-3 control-label">{tmpl_var name='select_server_txt'}</label>
                 <div class="col-sm-9"><select name="server_select" id="server" class="form-control" onchange="$('#OKMsg').hide(); ">
@@ -19,4 +18,4 @@
             
         <div class="clear"><div class="right">
             <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_do_txt'}" data-submit-form="pageForm" data-form-action="admin/remote_action_osupdate.php">{tmpl_var name='btn_do_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/admin/templates/remote_user_edit.htm b/interface/web/admin/templates/remote_user_edit.htm
index 099af58eb5..723c3e6966 100644
--- a/interface/web/admin/templates/remote_user_edit.htm
+++ b/interface/web/admin/templates/remote_user_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="remote_username" class="col-sm-3 control-label">{tmpl_var name='username_txt'}</label>
                 <div class="col-sm-9"><input type="text" name="remote_username" id="username" value="{tmpl_var name='remote_username'}" class="form-control" /></div></div>
diff --git a/interface/web/admin/templates/server_edit_services.htm b/interface/web/admin/templates/server_edit_services.htm
index 2775e029d3..b0aca56b17 100644
--- a/interface/web/admin/templates/server_edit_services.htm
+++ b/interface/web/admin/templates/server_edit_services.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="server_name" class="col-sm-3 control-label">{tmpl_var name='server_name_txt'}</label>
                 <div class="col-sm-9"><input type="text" name="server_name" id="server_name" value="{tmpl_var name='server_name'}" class="form-control" /></div></div>
diff --git a/interface/web/admin/templates/server_ip_edit.htm b/interface/web/admin/templates/server_ip_edit.htm
index 85f06432e8..f0e0eb78d7 100644
--- a/interface/web/admin/templates/server_ip_edit.htm
+++ b/interface/web/admin/templates/server_ip_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        <legend>{tmpl_var name='server_ip_edit_title'}</legend>
             <div class="form-group">
                 <label for="server_id" class="col-sm-3 control-label">{tmpl_var name='server_id_txt'}</label>
                 <div class="col-sm-9"><select name="server_id" id="server_id" class="form-control">
diff --git a/interface/web/admin/templates/server_ip_map_edit.htm b/interface/web/admin/templates/server_ip_map_edit.htm
index bba26348ae..6986213742 100644
--- a/interface/web/admin/templates/server_ip_map_edit.htm
+++ b/interface/web/admin/templates/server_ip_map_edit.htm
@@ -1,7 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
 <div class="form-group">
 	<label for="server_id" class="col-sm-3 control-label">{tmpl_var name='server_id_txt'}</label>
 	<div class="col-sm-9">
diff --git a/interface/web/admin/templates/server_php_fastcgi_edit.htm b/interface/web/admin/templates/server_php_fastcgi_edit.htm
index 99a3eeb09d..e219addde0 100644
--- a/interface/web/admin/templates/server_php_fastcgi_edit.htm
+++ b/interface/web/admin/templates/server_php_fastcgi_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="php_fastcgi_binary" class="col-sm-3 control-label">{tmpl_var name='php_fastcgi_binary_txt'}</label>
                 <div class="col-sm-9"><input type="text" name="php_fastcgi_binary" id="php_fastcgi_binary" value="{tmpl_var name='php_fastcgi_binary'}" class="form-control" /></div></div>
@@ -18,4 +11,4 @@
         <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="admin/server_php_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="admin/server_php_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/admin/templates/server_php_fpm_edit.htm b/interface/web/admin/templates/server_php_fpm_edit.htm
index 4186584f0f..372b3702fc 100644
--- a/interface/web/admin/templates/server_php_fpm_edit.htm
+++ b/interface/web/admin/templates/server_php_fpm_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="php_fpm_init_script" class="col-sm-3 control-label">{tmpl_var name='php_fpm_init_script_txt'}</label>
                 <div class="col-sm-9"><input type="text" name="php_fpm_init_script" id="php_fpm_init_script" value="{tmpl_var name='php_fpm_init_script'}" class="form-control" /></div></div>
@@ -21,4 +14,4 @@
         <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="admin/server_php_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="admin/server_php_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/admin/templates/server_php_name_edit.htm b/interface/web/admin/templates/server_php_name_edit.htm
index cfdaab63f9..ab1d889ef9 100644
--- a/interface/web/admin/templates/server_php_name_edit.htm
+++ b/interface/web/admin/templates/server_php_name_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="server_id" class="col-sm-3 control-label">{tmpl_var name='server_id_txt'}</label>
                 <div class="col-sm-9"><select name="server_id" id="server_id" class="form-control">
diff --git a/interface/web/admin/templates/software_repo_edit.htm b/interface/web/admin/templates/software_repo_edit.htm
index 3aa6c61fc6..a43ea74900 100644
--- a/interface/web/admin/templates/software_repo_edit.htm
+++ b/interface/web/admin/templates/software_repo_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="repo_name" class="col-sm-3 control-label">{tmpl_var name='repo_name_txt'}</label>
                 <div class="col-sm-9"><input type="text" name="repo_name" id="repo_name" value="{tmpl_var name='repo_name'}" class="form-control" /></div></div>
@@ -30,4 +23,4 @@
         <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="admin/software_repo_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="admin/software_repo_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/admin/templates/system_config_mail_edit.htm b/interface/web/admin/templates/system_config_mail_edit.htm
index 526da2502a..af0a7a25ca 100644
--- a/interface/web/admin/templates/system_config_mail_edit.htm
+++ b/interface/web/admin/templates/system_config_mail_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label class="col-sm-3 control-label">{tmpl_var name='enable_custom_login_txt'}</label>
                 <div class="col-sm-9">
diff --git a/interface/web/admin/templates/system_config_misc_edit.htm b/interface/web/admin/templates/system_config_misc_edit.htm
index 00debd66dc..95014ab809 100644
--- a/interface/web/admin/templates/system_config_misc_edit.htm
+++ b/interface/web/admin/templates/system_config_misc_edit.htm
@@ -1,7 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
 			<!--
 			<div class="form-group">
                 <label for="file" class="col-sm-3 control-label">{tmpl_var name='logo_txt'}</label>
diff --git a/interface/web/admin/templates/system_config_sites_edit.htm b/interface/web/admin/templates/system_config_sites_edit.htm
index a0f95e479a..09b55fd118 100644
--- a/interface/web/admin/templates/system_config_sites_edit.htm
+++ b/interface/web/admin/templates/system_config_sites_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="dbname_prefix" class="col-sm-3 control-label">{tmpl_var name='dbname_prefix_txt'}</label>
                 <div class="col-sm-9"><input type="text" name="dbname_prefix" id="dbname_prefix" value="{tmpl_var name='dbname_prefix'}" class="form-control" /></div></div>
diff --git a/interface/web/admin/templates/users_groups_edit.htm b/interface/web/admin/templates/users_groups_edit.htm
index 5f09bfa8ea..112791dc4c 100644
--- a/interface/web/admin/templates/users_groups_edit.htm
+++ b/interface/web/admin/templates/users_groups_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="default_group" class="col-sm-3 control-label">{tmpl_var name='default_group_txt'}</label>
                 <div class="col-sm-9"><select name="default_group" id="default_group" class="form-control">
@@ -24,4 +17,4 @@
         <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="admin/users_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="admin/users_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/admin/templates/users_user_edit.htm b/interface/web/admin/templates/users_user_edit.htm
index fb9658c14b..baf5f58554 100644
--- a/interface/web/admin/templates/users_user_edit.htm
+++ b/interface/web/admin/templates/users_user_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="username" class="col-sm-3 control-label">{tmpl_var name='username_txt'}</label>
                 <div class="col-sm-9"><input type="text" name="username" id="username" value="{tmpl_var name='username'}" class="form-control" /></div></div>
-- 
GitLab


From f7e8f09b35b5abb3c6ec456f5658447d9b2567dd Mon Sep 17 00:00:00 2001
From: Thom Pol <thom@amsterdamtech.nl>
Date: Wed, 27 May 2020 23:24:34 +0200
Subject: [PATCH 224/242] Added missing lines for title and desc

---
 interface/web/admin/lib/lang/bg_server_ip_map.lng | 2 ++
 interface/web/admin/lib/lang/br_server_ip_map.lng | 2 ++
 interface/web/admin/lib/lang/ca_server_ip_map.lng | 2 ++
 interface/web/admin/lib/lang/cz_server_ip_map.lng | 2 ++
 interface/web/admin/lib/lang/de_server_ip_map.lng | 2 ++
 interface/web/admin/lib/lang/dk_server_ip_map.lng | 2 ++
 interface/web/admin/lib/lang/el_server_ip_map.lng | 2 ++
 interface/web/admin/lib/lang/en_server_ip_map.lng | 2 ++
 interface/web/admin/lib/lang/es_server_ip_map.lng | 2 ++
 interface/web/admin/lib/lang/fi_server_ip_map.lng | 2 ++
 interface/web/admin/lib/lang/fr_server_ip_map.lng | 2 ++
 interface/web/admin/lib/lang/hr_server_ip_map.lng | 2 ++
 interface/web/admin/lib/lang/hu_server_ip_map.lng | 2 ++
 interface/web/admin/lib/lang/id_server_ip_map.lng | 2 ++
 interface/web/admin/lib/lang/it_server_ip_map.lng | 2 ++
 interface/web/admin/lib/lang/ja_server_ip_map.lng | 2 ++
 interface/web/admin/lib/lang/nl_server_ip_map.lng | 2 ++
 interface/web/admin/lib/lang/pl_server_ip_map.lng | 2 ++
 interface/web/admin/lib/lang/pt_server_ip_map.lng | 2 ++
 interface/web/admin/lib/lang/ro_server_ip_map.lng | 2 ++
 interface/web/admin/lib/lang/ru_server_ip_map.lng | 2 ++
 interface/web/admin/lib/lang/se_server_ip_map.lng | 2 ++
 interface/web/admin/lib/lang/sk_server_ip_map.lng | 2 ++
 interface/web/admin/lib/lang/tr_server_ip_map.lng | 2 ++
 24 files changed, 48 insertions(+)

diff --git a/interface/web/admin/lib/lang/bg_server_ip_map.lng b/interface/web/admin/lib/lang/bg_server_ip_map.lng
index 68b196fb23..f02bdafd84 100644
--- a/interface/web/admin/lib/lang/bg_server_ip_map.lng
+++ b/interface/web/admin/lib/lang/bg_server_ip_map.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_map_title'] = 'IPv4 Address mapping';
+$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server';
 $wb['server_id_txt'] = 'Rewrite on Server';
 $wb['source_txt'] = 'Source IP';
 $wb['destination_txt'] = 'Destination IP';
diff --git a/interface/web/admin/lib/lang/br_server_ip_map.lng b/interface/web/admin/lib/lang/br_server_ip_map.lng
index 81a2bb4b96..51af1099ab 100644
--- a/interface/web/admin/lib/lang/br_server_ip_map.lng
+++ b/interface/web/admin/lib/lang/br_server_ip_map.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_map_title'] = 'IPv4 Address mapping';
+$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server';
 $wb['server_id_txt'] = 'Servidor para mapeamento IP';
 $wb['source_txt'] = 'Endereço IP de origem';
 $wb['destination_txt'] = 'Endereço IP de destino';
diff --git a/interface/web/admin/lib/lang/ca_server_ip_map.lng b/interface/web/admin/lib/lang/ca_server_ip_map.lng
index 68b196fb23..f02bdafd84 100644
--- a/interface/web/admin/lib/lang/ca_server_ip_map.lng
+++ b/interface/web/admin/lib/lang/ca_server_ip_map.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_map_title'] = 'IPv4 Address mapping';
+$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server';
 $wb['server_id_txt'] = 'Rewrite on Server';
 $wb['source_txt'] = 'Source IP';
 $wb['destination_txt'] = 'Destination IP';
diff --git a/interface/web/admin/lib/lang/cz_server_ip_map.lng b/interface/web/admin/lib/lang/cz_server_ip_map.lng
index 683451d1d8..57c5ba0108 100644
--- a/interface/web/admin/lib/lang/cz_server_ip_map.lng
+++ b/interface/web/admin/lib/lang/cz_server_ip_map.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_map_title'] = 'IPv4 Address mapping';
+$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server';
 $wb['server_id_txt'] = 'Rewrite on Server';
 $wb['source_txt'] = 'Zdrojová IP adresa';
 $wb['destination_txt'] = 'Cílová IP adresa';
diff --git a/interface/web/admin/lib/lang/de_server_ip_map.lng b/interface/web/admin/lib/lang/de_server_ip_map.lng
index 4fdb51be1a..96863c7261 100644
--- a/interface/web/admin/lib/lang/de_server_ip_map.lng
+++ b/interface/web/admin/lib/lang/de_server_ip_map.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_map_title'] = 'IPv4 Address mapping';
+$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server';
 $wb['server_id_txt'] = 'Rewrite auf Server';
 $wb['source_txt'] = 'eigentliche IP';
 $wb['destination_txt'] = 'neue IP';
diff --git a/interface/web/admin/lib/lang/dk_server_ip_map.lng b/interface/web/admin/lib/lang/dk_server_ip_map.lng
index 68b196fb23..f02bdafd84 100644
--- a/interface/web/admin/lib/lang/dk_server_ip_map.lng
+++ b/interface/web/admin/lib/lang/dk_server_ip_map.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_map_title'] = 'IPv4 Address mapping';
+$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server';
 $wb['server_id_txt'] = 'Rewrite on Server';
 $wb['source_txt'] = 'Source IP';
 $wb['destination_txt'] = 'Destination IP';
diff --git a/interface/web/admin/lib/lang/el_server_ip_map.lng b/interface/web/admin/lib/lang/el_server_ip_map.lng
index 68b196fb23..f02bdafd84 100644
--- a/interface/web/admin/lib/lang/el_server_ip_map.lng
+++ b/interface/web/admin/lib/lang/el_server_ip_map.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_map_title'] = 'IPv4 Address mapping';
+$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server';
 $wb['server_id_txt'] = 'Rewrite on Server';
 $wb['source_txt'] = 'Source IP';
 $wb['destination_txt'] = 'Destination IP';
diff --git a/interface/web/admin/lib/lang/en_server_ip_map.lng b/interface/web/admin/lib/lang/en_server_ip_map.lng
index 94508abb79..d47d33cf36 100644
--- a/interface/web/admin/lib/lang/en_server_ip_map.lng
+++ b/interface/web/admin/lib/lang/en_server_ip_map.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_map_title'] = 'IPv4 Address mapping';
+$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server';
 $wb["server_id_txt"] = 'Rewrite on Server';
 $wb["source_txt"] = 'Source IP';
 $wb["destination_txt"] = 'Destination IP';
diff --git a/interface/web/admin/lib/lang/es_server_ip_map.lng b/interface/web/admin/lib/lang/es_server_ip_map.lng
index 4cf57cdc82..c151fb565c 100755
--- a/interface/web/admin/lib/lang/es_server_ip_map.lng
+++ b/interface/web/admin/lib/lang/es_server_ip_map.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_map_title'] = 'IPv4 Address mapping';
+$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server';
 $wb['active_txt'] = 'Activo';
 $wb['destination_ip_empty'] = 'La IP de destino está vacía.';
 $wb['destination_txt'] = 'IP de destino';
diff --git a/interface/web/admin/lib/lang/fi_server_ip_map.lng b/interface/web/admin/lib/lang/fi_server_ip_map.lng
index 68b196fb23..f02bdafd84 100644
--- a/interface/web/admin/lib/lang/fi_server_ip_map.lng
+++ b/interface/web/admin/lib/lang/fi_server_ip_map.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_map_title'] = 'IPv4 Address mapping';
+$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server';
 $wb['server_id_txt'] = 'Rewrite on Server';
 $wb['source_txt'] = 'Source IP';
 $wb['destination_txt'] = 'Destination IP';
diff --git a/interface/web/admin/lib/lang/fr_server_ip_map.lng b/interface/web/admin/lib/lang/fr_server_ip_map.lng
index 68b196fb23..f02bdafd84 100644
--- a/interface/web/admin/lib/lang/fr_server_ip_map.lng
+++ b/interface/web/admin/lib/lang/fr_server_ip_map.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_map_title'] = 'IPv4 Address mapping';
+$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server';
 $wb['server_id_txt'] = 'Rewrite on Server';
 $wb['source_txt'] = 'Source IP';
 $wb['destination_txt'] = 'Destination IP';
diff --git a/interface/web/admin/lib/lang/hr_server_ip_map.lng b/interface/web/admin/lib/lang/hr_server_ip_map.lng
index 68b196fb23..f02bdafd84 100644
--- a/interface/web/admin/lib/lang/hr_server_ip_map.lng
+++ b/interface/web/admin/lib/lang/hr_server_ip_map.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_map_title'] = 'IPv4 Address mapping';
+$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server';
 $wb['server_id_txt'] = 'Rewrite on Server';
 $wb['source_txt'] = 'Source IP';
 $wb['destination_txt'] = 'Destination IP';
diff --git a/interface/web/admin/lib/lang/hu_server_ip_map.lng b/interface/web/admin/lib/lang/hu_server_ip_map.lng
index 68b196fb23..f02bdafd84 100644
--- a/interface/web/admin/lib/lang/hu_server_ip_map.lng
+++ b/interface/web/admin/lib/lang/hu_server_ip_map.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_map_title'] = 'IPv4 Address mapping';
+$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server';
 $wb['server_id_txt'] = 'Rewrite on Server';
 $wb['source_txt'] = 'Source IP';
 $wb['destination_txt'] = 'Destination IP';
diff --git a/interface/web/admin/lib/lang/id_server_ip_map.lng b/interface/web/admin/lib/lang/id_server_ip_map.lng
index 68b196fb23..f02bdafd84 100644
--- a/interface/web/admin/lib/lang/id_server_ip_map.lng
+++ b/interface/web/admin/lib/lang/id_server_ip_map.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_map_title'] = 'IPv4 Address mapping';
+$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server';
 $wb['server_id_txt'] = 'Rewrite on Server';
 $wb['source_txt'] = 'Source IP';
 $wb['destination_txt'] = 'Destination IP';
diff --git a/interface/web/admin/lib/lang/it_server_ip_map.lng b/interface/web/admin/lib/lang/it_server_ip_map.lng
index 68b196fb23..f02bdafd84 100644
--- a/interface/web/admin/lib/lang/it_server_ip_map.lng
+++ b/interface/web/admin/lib/lang/it_server_ip_map.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_map_title'] = 'IPv4 Address mapping';
+$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server';
 $wb['server_id_txt'] = 'Rewrite on Server';
 $wb['source_txt'] = 'Source IP';
 $wb['destination_txt'] = 'Destination IP';
diff --git a/interface/web/admin/lib/lang/ja_server_ip_map.lng b/interface/web/admin/lib/lang/ja_server_ip_map.lng
index 68b196fb23..f02bdafd84 100644
--- a/interface/web/admin/lib/lang/ja_server_ip_map.lng
+++ b/interface/web/admin/lib/lang/ja_server_ip_map.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_map_title'] = 'IPv4 Address mapping';
+$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server';
 $wb['server_id_txt'] = 'Rewrite on Server';
 $wb['source_txt'] = 'Source IP';
 $wb['destination_txt'] = 'Destination IP';
diff --git a/interface/web/admin/lib/lang/nl_server_ip_map.lng b/interface/web/admin/lib/lang/nl_server_ip_map.lng
index 68b196fb23..f02bdafd84 100644
--- a/interface/web/admin/lib/lang/nl_server_ip_map.lng
+++ b/interface/web/admin/lib/lang/nl_server_ip_map.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_map_title'] = 'IPv4 Address mapping';
+$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server';
 $wb['server_id_txt'] = 'Rewrite on Server';
 $wb['source_txt'] = 'Source IP';
 $wb['destination_txt'] = 'Destination IP';
diff --git a/interface/web/admin/lib/lang/pl_server_ip_map.lng b/interface/web/admin/lib/lang/pl_server_ip_map.lng
index 68b196fb23..f02bdafd84 100644
--- a/interface/web/admin/lib/lang/pl_server_ip_map.lng
+++ b/interface/web/admin/lib/lang/pl_server_ip_map.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_map_title'] = 'IPv4 Address mapping';
+$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server';
 $wb['server_id_txt'] = 'Rewrite on Server';
 $wb['source_txt'] = 'Source IP';
 $wb['destination_txt'] = 'Destination IP';
diff --git a/interface/web/admin/lib/lang/pt_server_ip_map.lng b/interface/web/admin/lib/lang/pt_server_ip_map.lng
index 68b196fb23..f02bdafd84 100644
--- a/interface/web/admin/lib/lang/pt_server_ip_map.lng
+++ b/interface/web/admin/lib/lang/pt_server_ip_map.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_map_title'] = 'IPv4 Address mapping';
+$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server';
 $wb['server_id_txt'] = 'Rewrite on Server';
 $wb['source_txt'] = 'Source IP';
 $wb['destination_txt'] = 'Destination IP';
diff --git a/interface/web/admin/lib/lang/ro_server_ip_map.lng b/interface/web/admin/lib/lang/ro_server_ip_map.lng
index 68b196fb23..f02bdafd84 100644
--- a/interface/web/admin/lib/lang/ro_server_ip_map.lng
+++ b/interface/web/admin/lib/lang/ro_server_ip_map.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_map_title'] = 'IPv4 Address mapping';
+$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server';
 $wb['server_id_txt'] = 'Rewrite on Server';
 $wb['source_txt'] = 'Source IP';
 $wb['destination_txt'] = 'Destination IP';
diff --git a/interface/web/admin/lib/lang/ru_server_ip_map.lng b/interface/web/admin/lib/lang/ru_server_ip_map.lng
index 2b284360e5..467edf86e4 100644
--- a/interface/web/admin/lib/lang/ru_server_ip_map.lng
+++ b/interface/web/admin/lib/lang/ru_server_ip_map.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_map_title'] = 'IPv4 Address mapping';
+$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server';
 $wb['server_id_txt'] = 'Rewrite на сервер';
 $wb['source_txt'] = 'IP-адрес источника';
 $wb['destination_txt'] = 'IP-адрес назначения';
diff --git a/interface/web/admin/lib/lang/se_server_ip_map.lng b/interface/web/admin/lib/lang/se_server_ip_map.lng
index 68b196fb23..f02bdafd84 100644
--- a/interface/web/admin/lib/lang/se_server_ip_map.lng
+++ b/interface/web/admin/lib/lang/se_server_ip_map.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_map_title'] = 'IPv4 Address mapping';
+$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server';
 $wb['server_id_txt'] = 'Rewrite on Server';
 $wb['source_txt'] = 'Source IP';
 $wb['destination_txt'] = 'Destination IP';
diff --git a/interface/web/admin/lib/lang/sk_server_ip_map.lng b/interface/web/admin/lib/lang/sk_server_ip_map.lng
index 68b196fb23..f02bdafd84 100644
--- a/interface/web/admin/lib/lang/sk_server_ip_map.lng
+++ b/interface/web/admin/lib/lang/sk_server_ip_map.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_map_title'] = 'IPv4 Address mapping';
+$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server';
 $wb['server_id_txt'] = 'Rewrite on Server';
 $wb['source_txt'] = 'Source IP';
 $wb['destination_txt'] = 'Destination IP';
diff --git a/interface/web/admin/lib/lang/tr_server_ip_map.lng b/interface/web/admin/lib/lang/tr_server_ip_map.lng
index c05e19c4b1..e18a243344 100644
--- a/interface/web/admin/lib/lang/tr_server_ip_map.lng
+++ b/interface/web/admin/lib/lang/tr_server_ip_map.lng
@@ -1,4 +1,6 @@
 <?php
+$wb['server_ip_map_title'] = 'IPv4 Address mapping';
+$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server';
 $wb['server_id_txt'] = 'Sunucuda Yeniden Yazma';
 $wb['source_txt'] = 'Kaynak IP';
 $wb['destination_txt'] = 'Hedef IP';
-- 
GitLab


From 8bc6a8c3afa1e19bbf796558b0e8df5e5471aad6 Mon Sep 17 00:00:00 2001
From: Ramil Valitov <ramilvalitov@gmail.com>
Date: Thu, 28 May 2020 16:45:27 +0200
Subject: [PATCH 225/242] New code for backups with lots of new features

---
 .../sql/incremental/upd_dev_collection.sql    |   12 +
 install/sql/ispconfig3.sql                    |    6 +
 .../lib/classes/aps_guicontroller.inc.php     |    2 +
 .../lib/classes/plugin_backuplist.inc.php     |   57 +-
 interface/lib/classes/remote.d/sites.inc.php  |    8 +-
 .../lib/classes/sites_database_plugin.inc.php |    6 +-
 interface/lib/classes/system.inc.php          |   12 +
 .../sites_web_vhost_domain_plugin.inc.php     |    8 +-
 .../web/sites/form/web_vhost_domain.tform.php |   76 +-
 .../web/sites/lib/lang/ar_web_backup_list.lng |   32 +
 .../sites/lib/lang/ar_web_vhost_domain.lng    |   27 +
 .../web/sites/lib/lang/bg_web_backup_list.lng |   32 +
 .../sites/lib/lang/bg_web_vhost_domain.lng    |   27 +
 .../web/sites/lib/lang/br_web_backup_list.lng |   33 +-
 .../sites/lib/lang/br_web_vhost_domain.lng    |   27 +
 .../web/sites/lib/lang/ca_web_backup_list.lng |   32 +
 .../sites/lib/lang/ca_web_vhost_domain.lng    |   27 +
 .../web/sites/lib/lang/cz_web_backup_list.lng |   32 +
 .../sites/lib/lang/cz_web_vhost_domain.lng    |   27 +
 .../web/sites/lib/lang/de_web_backup_list.lng |   32 +
 .../sites/lib/lang/de_web_vhost_domain.lng    |   27 +
 .../web/sites/lib/lang/dk_web_backup_list.lng |   32 +
 .../sites/lib/lang/dk_web_vhost_domain.lng    |   27 +
 .../web/sites/lib/lang/el_web_backup_list.lng |   32 +
 .../sites/lib/lang/el_web_vhost_domain.lng    |   27 +
 .../web/sites/lib/lang/en_web_backup_list.lng |   35 +-
 .../sites/lib/lang/en_web_vhost_domain.lng    |   27 +
 .../web/sites/lib/lang/es_web_backup_list.lng |   32 +
 .../sites/lib/lang/es_web_vhost_domain.lng    |   27 +
 .../web/sites/lib/lang/fi_web_backup_list.lng |   32 +
 .../sites/lib/lang/fi_web_vhost_domain.lng    |   27 +
 .../web/sites/lib/lang/fr_web_backup_list.lng |   32 +
 .../sites/lib/lang/fr_web_vhost_domain.lng    |   27 +
 .../web/sites/lib/lang/hr_web_backup_list.lng |   32 +
 .../sites/lib/lang/hr_web_vhost_domain.lng    |   27 +
 .../web/sites/lib/lang/hu_web_backup_list.lng |   32 +
 .../sites/lib/lang/hu_web_vhost_domain.lng    |   27 +
 .../web/sites/lib/lang/id_web_backup_list.lng |   32 +
 .../sites/lib/lang/id_web_vhost_domain.lng    |   27 +
 .../web/sites/lib/lang/it_web_backup_list.lng |   32 +
 .../sites/lib/lang/it_web_vhost_domain.lng    |   27 +
 .../web/sites/lib/lang/ja_web_backup_list.lng |   32 +
 .../sites/lib/lang/ja_web_vhost_domain.lng    |   27 +
 .../web/sites/lib/lang/nl_web_backup_list.lng |   32 +
 .../sites/lib/lang/nl_web_vhost_domain.lng    |   27 +
 .../web/sites/lib/lang/pl_web_backup_list.lng |   32 +
 .../sites/lib/lang/pl_web_vhost_domain.lng    |   27 +
 .../web/sites/lib/lang/pt_web_backup_list.lng |   32 +
 .../sites/lib/lang/pt_web_vhost_domain.lng    |   27 +
 .../web/sites/lib/lang/ro_web_backup_list.lng |   32 +
 .../sites/lib/lang/ro_web_vhost_domain.lng    |   27 +
 .../web/sites/lib/lang/ru_web_backup_list.lng |   32 +
 .../sites/lib/lang/ru_web_vhost_domain.lng    |   27 +
 .../web/sites/lib/lang/se_web_backup_list.lng |   32 +
 .../sites/lib/lang/se_web_vhost_domain.lng    |   27 +
 .../web/sites/lib/lang/sk_web_backup_list.lng |   32 +
 .../sites/lib/lang/sk_web_vhost_domain.lng    |   27 +
 .../web/sites/lib/lang/tr_web_backup_list.lng |   33 +-
 .../sites/lib/lang/tr_web_vhost_domain.lng    |   27 +
 .../web/sites/templates/web_backup_list.htm   |   18 +-
 .../templates/web_vhost_domain_backup.htm     |   48 +-
 .../API-docs/sites_database_add.html          |    2 +
 .../API-docs/sites_web_aliasdomain_add.html   |    2 +
 .../sites_web_aliasdomain_update.html         |    2 +
 .../API-docs/sites_web_subdomain_add.html     |    2 +
 .../API-docs/sites_web_subdomain_update.html  |    2 +
 .../examples/sites_database_add.php           |    2 +
 .../examples/sites_web_aliasdomain_add.php    |    2 +
 .../examples/sites_web_domain_add.php         |    2 +
 .../examples/sites_web_subdomain_add.php      |    2 +
 server/backup-now.php                         |  108 ++
 server/lib/app.inc.php                        |    4 +
 server/lib/classes/backup.inc.php             | 1452 +++++++++++++++++
 server/lib/classes/cron.d/500-backup.inc.php  |  364 +----
 .../plugins-available/backup_plugin.inc.php   |   78 +-
 75 files changed, 3340 insertions(+), 417 deletions(-)
 create mode 100644 server/backup-now.php
 create mode 100644 server/lib/classes/backup.inc.php

diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql
index 29ba602bf8..d07b33d4ba 100644
--- a/install/sql/incremental/upd_dev_collection.sql
+++ b/install/sql/incremental/upd_dev_collection.sql
@@ -1,3 +1,15 @@
 -- add new proxy_protocol column
 ALTER TABLE `web_domain`
     ADD COLUMN `proxy_protocol` ENUM('n','y') NOT NULL DEFAULT 'n' AFTER `log_retention`;
+
+-- backup format
+ALTER TABLE `web_domain` ADD  `backup_format_web` VARCHAR( 255 ) NOT NULL default 'default' AFTER `backup_copies`;
+ALTER TABLE `web_domain` ADD  `backup_format_db` VARCHAR( 255 ) NOT NULL default 'gzip' AFTER `backup_format_web`;
+-- end of backup format
+
+-- backup encryption
+ALTER TABLE `web_domain` ADD  `backup_encrypt` enum('n','y') NOT NULL DEFAULT 'n' AFTER `backup_format_db`;
+ALTER TABLE `web_domain` ADD  `backup_password` VARCHAR( 255 ) NOT NULL DEFAULT '' AFTER `backup_encrypt`;
+ALTER TABLE `web_backup` ADD  `backup_format` VARCHAR( 64 ) NOT NULL DEFAULT '' AFTER `backup_mode`;
+ALTER TABLE `web_backup` ADD  `backup_password` VARCHAR( 255 ) NOT NULL DEFAULT '' AFTER `filesize`;
+-- end of backup encryption
diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql
index bfef9733e5..b64eab94c3 100644
--- a/install/sql/ispconfig3.sql
+++ b/install/sql/ispconfig3.sql
@@ -1922,9 +1922,11 @@ CREATE TABLE `web_backup` (
   `parent_domain_id` int(10) unsigned NOT NULL DEFAULT '0',
   `backup_type` enum('web','mysql','mongodb') NOT NULL DEFAULT 'web',
   `backup_mode` varchar(64) NOT NULL DEFAULT  '',
+  `backup_format` varchar(64) NOT NULL DEFAULT '',
   `tstamp` int(10) unsigned NOT NULL DEFAULT '0',
   `filename` varchar(255) NOT NULL DEFAULT '',
   `filesize` VARCHAR(20) NOT NULL DEFAULT '',
+  `backup_password` VARCHAR(255) NOT NULL DEFAULT '',
   PRIMARY KEY (`backup_id`)
 ) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
 
@@ -2055,6 +2057,10 @@ CREATE TABLE `web_domain` (
   `custom_php_ini` mediumtext,
   `backup_interval` VARCHAR( 255 ) NOT NULL DEFAULT 'none',
   `backup_copies` INT NOT NULL DEFAULT '1',
+  `backup_format_web` VARCHAR( 255 ) NOT NULL default 'default',
+  `backup_format_db` VARCHAR( 255 ) NOT NULL default 'gzip',
+  `backup_encrypt` enum('n','y') NOT NULL DEFAULT 'n',
+  `backup_password` VARCHAR( 255 ) NOT NULL DEFAULT '',
   `backup_excludes` mediumtext,
   `active` enum('n','y') NOT NULL default 'y',
   `traffic_quota_lock` enum('n','y') NOT NULL default 'n',
diff --git a/interface/lib/classes/aps_guicontroller.inc.php b/interface/lib/classes/aps_guicontroller.inc.php
index 8e4c17af79..b1ebf9d189 100644
--- a/interface/lib/classes/aps_guicontroller.inc.php
+++ b/interface/lib/classes/aps_guicontroller.inc.php
@@ -340,6 +340,8 @@ class ApsGUIController extends ApsBase
 								 "remote_access" => $mysql_db_remote_access,
 								 "remote_ips" => $mysql_db_remote_ips,
 								 "backup_copies" => $websrv['backup_copies'],
+								 "backup_format_web" => $websrv['backup_format_web'],
+								 "backup_format_db" => $websrv['backup_format_db'],
 								 "active" => 'y', 
 								 "backup_interval" => $websrv['backup_interval']
 								 );
diff --git a/interface/lib/classes/plugin_backuplist.inc.php b/interface/lib/classes/plugin_backuplist.inc.php
index e96be012e3..9e21dc6ba6 100644
--- a/interface/lib/classes/plugin_backuplist.inc.php
+++ b/interface/lib/classes/plugin_backuplist.inc.php
@@ -37,6 +37,34 @@ class plugin_backuplist extends plugin_base {
 	var $formdef;
 	var $options;
 
+	/**
+	 * Process request to make a backup. This request is triggered manually by the user in the ISPConfig interface.
+	 * @param string $message
+	 * @param string $error
+	 * @param string[] $wb language text
+	 * @author Ramil Valitov <ramilvalitov@gmail.com>
+	 * @uses backup_plugin::make_backup_callback() this method is called later in the plugin to run the backup
+	 */
+	protected function makeBackup(&$message, &$error, $wb)
+	{
+		global $app;
+
+		$mode = $_GET['make_backup'];
+		$action_type = ($mode == 'web') ? 'backup_web_files' : 'backup_database';
+		$domain_id = intval($this->form->id);
+
+		$sql = "SELECT count(action_id) as number FROM sys_remoteaction WHERE action_state = 'pending' AND action_type = ? AND action_param = ?";
+		$tmp = $app->db->queryOneRecord($sql, $action_type, $domain_id);
+		if ($tmp['number'] == 0) {
+			$server_id = $this->form->dataRecord['server_id'];
+			$message .= $wb['backup_info_txt'];
+			$sql = "INSERT INTO sys_remoteaction (server_id, tstamp, action_type, action_param, action_state, response) VALUES (?, UNIX_TIMESTAMP(), ?, ?, 'pending', '')";
+			$app->db->query($sql, $server_id, $action_type, $domain_id);
+		} else {
+			$error .= $wb['backup_pending_txt'];
+		}
+	}
+
 	function onShow() {
 
 		global $app;
@@ -52,6 +80,10 @@ class plugin_backuplist extends plugin_base {
 		$message = '';
 		$error = '';
 
+		if (isset($_GET['make_backup'])) {
+			$this->makeBackup($message, $error, $wb);
+		}
+
 		if(isset($_GET['backup_action'])) {
 			$backup_id = $app->functions->intval($_GET['backup_id']);
 
@@ -137,7 +169,30 @@ class plugin_backuplist extends plugin_base {
 				$rec["bgcolor"] = $bgcolor;
 
 				$rec['date'] = date($app->lng('conf_format_datetime'), $rec['tstamp']);
-				$rec['backup_type'] = $wb[('backup_type_'.$rec['backup_type'])];
+				$backup_format = $rec['backup_format'];
+				if (empty($backup_format)) {
+					//We have a backup from old version of ISPConfig
+					switch ($rec['backup_type']) {
+						case 'mysql':
+							$backup_format = 'gzip';
+							break;
+						case 'web':
+							$backup_format = ($rec['backup_mode'] == 'userzip') ? 'zip' : 'tar_gzip';
+							break;
+						default:
+							$app->log('Unsupported backup type "' . $rec['backup_type'] . '" for backup id ' . $rec['backup_id'], LOGLEVEL_ERROR);
+							break;
+					}
+				}
+				$rec['backup_type'] = $wb[('backup_type_' . $rec['backup_type'])];
+				$backup_format = (!empty($backup_format)) ? $wb[('backup_format_' . $backup_format . '_txt')] : $wb["backup_format_unknown_txt"];
+				if (empty($backup_format))
+					$backup_format = $wb["backup_format_unknown_txt"];
+
+				$rec['backup_format'] = $backup_format;
+				$rec['backup_encrypted'] = empty($rec['backup_password']) ? $wb["no_txt"] : $wb["yes_txt"];
+				$backup_manual_prefix = 'manual-';
+				$rec['backup_job'] = (substr($rec['filename'], 0, strlen($backup_manual_prefix)) == $backup_manual_prefix) ? $wb["backup_job_manual_txt"] : $wb["backup_job_auto_txt"];
 				
 				$rec['download_available'] = true;
 				if($rec['server_id'] != $web['server_id']) $rec['download_available'] = false;
diff --git a/interface/lib/classes/remote.d/sites.inc.php b/interface/lib/classes/remote.d/sites.inc.php
index d90b90bd89..9efbecc091 100644
--- a/interface/lib/classes/remote.d/sites.inc.php
+++ b/interface/lib/classes/remote.d/sites.inc.php
@@ -132,10 +132,12 @@ class remoting_sites extends remoting {
 			$app->sites_database_plugin->processDatabaseInsert($this);
 			
 			// set correct values for backup_interval and backup_copies
-			if(isset($params['backup_interval']) || isset($params['backup_copies'])){
+			if(isset($params['backup_interval']) || isset($params['backup_copies']) || isset($params['backup_format_web']) || isset($params['backup_format_db'])){
 				$sql_set = array();
 				if(isset($params['backup_interval'])) $sql_set[] = "backup_interval = '".$app->db->quote($params['backup_interval'])."'";
 				if(isset($params['backup_copies'])) $sql_set[] = "backup_copies = ".$app->functions->intval($params['backup_copies']);
+				if(isset($params['backup_format_web'])) $sql_set[] = "backup_format_web = ".$app->functions->intval($params['backup_format_web']);
+				if(isset($params['backup_format_db'])) $sql_set[] = "backup_format_db = ".$app->functions->intval($params['backup_format_db']);
 				$this->updateQueryExecute("UPDATE web_database SET ".implode(', ', $sql_set)." WHERE database_id = ".$retval, $retval, $params);
 			}
 			
@@ -165,10 +167,12 @@ class remoting_sites extends remoting {
 			$retval = $this->updateQueryExecute($sql, $primary_id, $params);
 			
 			// set correct values for backup_interval and backup_copies
-			if(isset($params['backup_interval']) || isset($params['backup_copies'])){
+			if(isset($params['backup_interval']) || isset($params['backup_copies']) || isset($params['backup_format_web']) || isset($params['backup_format_db'])){
 				$sql_set = array();
 				if(isset($params['backup_interval'])) $sql_set[] = "backup_interval = '".$app->db->quote($params['backup_interval'])."'";
 				if(isset($params['backup_copies'])) $sql_set[] = "backup_copies = ".$app->functions->intval($params['backup_copies']);
+				if(isset($params['backup_format_web'])) $sql_set[] = "backup_format_web = ".$app->functions->intval($params['backup_format_web']);
+				if(isset($params['backup_format_db'])) $sql_set[] = "backup_format_db = ".$app->functions->intval($params['backup_format_db']);
 				$this->updateQueryExecute("UPDATE web_database SET ".implode(', ', $sql_set)." WHERE database_id = ".$primary_id, $primary_id, $params);
 			}
 			
diff --git a/interface/lib/classes/sites_database_plugin.inc.php b/interface/lib/classes/sites_database_plugin.inc.php
index 89cb7ce9c2..faf3fa30f7 100644
--- a/interface/lib/classes/sites_database_plugin.inc.php
+++ b/interface/lib/classes/sites_database_plugin.inc.php
@@ -45,10 +45,12 @@ class sites_database_plugin {
 			//* The Database user shall be owned by the same group then the website
 			$sys_groupid = $app->functions->intval($web['sys_groupid']);
 			$backup_interval = $web['backup_interval'];
+			$backup_format_web = $web['backup_format_web'];
+			$backup_format_db = $web['backup_format_db'];
 			$backup_copies = $app->functions->intval($web['backup_copies']);
 
-			$sql = "UPDATE web_database SET sys_groupid = ?, backup_interval = ?, backup_copies = ? WHERE database_id = ?";
-			$app->db->query($sql, $sys_groupid, $backup_interval, $backup_copies, $form_page->id);
+			$sql = "UPDATE web_database SET sys_groupid = ?, backup_interval = ?, backup_copies = ?, backup_format_web = ?, backup_format_db = ? WHERE database_id = ?";
+			$app->db->query($sql, $sys_groupid, $backup_interval, $backup_copies, $backup_format_web, $backup_format_db, $form_page->id);
 		}
 	}
 
diff --git a/interface/lib/classes/system.inc.php b/interface/lib/classes/system.inc.php
index 0be2b6b1e9..b6d3479694 100644
--- a/interface/lib/classes/system.inc.php
+++ b/interface/lib/classes/system.inc.php
@@ -97,5 +97,17 @@ class system {
 		call_user_func_array(array($this, 'exec_safe'), func_get_args());
 		return implode("\n", $this->_last_exec_out);
 	}	
+
+    //* Check if a application is installed
+    public function is_installed($appname) {
+        $this->exec_safe('which ? 2> /dev/null', $appname);
+        $out = $this->last_exec_out();
+        $returncode = $this->last_exec_retcode();
+        if(isset($out[0]) && stristr($out[0], $appname) && $returncode == 0) {
+            return true;
+        } else {
+            return false;
+        }
+    }
 	
 } //* End Class
diff --git a/interface/lib/plugins/sites_web_vhost_domain_plugin.inc.php b/interface/lib/plugins/sites_web_vhost_domain_plugin.inc.php
index 2d1ce3794a..3f9b0db5b6 100644
--- a/interface/lib/plugins/sites_web_vhost_domain_plugin.inc.php
+++ b/interface/lib/plugins/sites_web_vhost_domain_plugin.inc.php
@@ -249,18 +249,22 @@ class sites_web_vhost_domain_plugin {
 				}
 
 				//* Change database backup options when web backup options have been changed
-				if(isset($page_form->dataRecord['backup_interval']) && ($page_form->dataRecord['backup_interval'] != $page_form->oldDataRecord['backup_interval'] || $page_form->dataRecord['backup_copies'] != $page_form->oldDataRecord['backup_copies'])) {
+				if(isset($page_form->dataRecord['backup_interval']) && ($page_form->dataRecord['backup_interval'] != $page_form->oldDataRecord['backup_interval'] || $page_form->dataRecord['backup_copies'] != $page_form->oldDataRecord['backup_copies'] || $page_form->dataRecord['backup_format_web'] != $page_form->oldDataRecord['backup_format_web'] || $page_form->dataRecord['backup_format_db'] != $page_form->oldDataRecord['backup_format_db'])) {
 					//* Update all databases
 					$backup_interval = $page_form->dataRecord['backup_interval'];
 					$backup_copies = $app->functions->intval($page_form->dataRecord['backup_copies']);
+					$backup_format_web = $page_form->dataRecord['backup_format_web'];
+					$backup_format_db = $page_form->dataRecord['backup_format_db'];
 					$records = $app->db->queryAllRecords("SELECT database_id FROM web_database WHERE parent_domain_id = ".$page_form->id);
 					foreach($records as $rec) {
-						$app->db->datalogUpdate('web_database', array("backup_interval" => $backup_interval, "backup_copies" => $backup_copies), 'database_id', $rec['database_id']);
+						$app->db->datalogUpdate('web_database', array("backup_interval" => $backup_interval, "backup_copies" => $backup_copies, "backup_format_web" => $backup_format_web, "backup_format_db" => $backup_format_db), 'database_id', $rec['database_id']);
 					}
 					unset($records);
 					unset($rec);
 					unset($backup_copies);
 					unset($backup_interval);
+                    unset($backup_format_web);
+                    unset($backup_format_db);
 				}
 
 				//* Change vhost subdomain and alias ip/ipv6 if domain ip/ipv6 has changed
diff --git a/interface/web/sites/form/web_vhost_domain.tform.php b/interface/web/sites/form/web_vhost_domain.tform.php
index 5c3057f685..24ee6d4e62 100644
--- a/interface/web/sites/form/web_vhost_domain.tform.php
+++ b/interface/web/sites/form/web_vhost_domain.tform.php
@@ -96,7 +96,7 @@ if(!$app->auth->is_admin()) {
 	if($client['limit_backup'] != 'y') $backup_available = false;
 }
 
-$app->uses('getconf');
+$app->uses('getconf,system');
 $web_config = $app->getconf->get_global_config('sites');
 
 $form["tabs"]['domain'] = array (
@@ -649,6 +649,28 @@ $form["tabs"]['stats'] = array (
 
 //* Backup
 if ($backup_available) {
+	$missing_utils = array();
+	$compressors_list = array(
+		'gzip',
+		'gunzip',
+		'zip',
+		'unzip',
+		'pigz',
+		'tar',
+		'bzip2',
+		'bunzip2',
+		'xz',
+		'unxz',
+		'7z',
+		'rar',
+	);
+	foreach ($compressors_list as $compressor) {
+		if (!$app->system->is_installed($compressor)) {
+			array_push($missing_utils, $compressor);
+		}
+	}
+	$app->tpl->setVar("missing_utils", implode(", ",$missing_utils), true);
+
 	$form["tabs"]['backup'] = array (
 		'title'  => "Backup",
 		'width'  => 100,
@@ -682,6 +704,58 @@ if ($backup_available) {
 				'width'  => '30',
 				'maxlength' => '255'
 			),
+			'backup_format_web' => array (
+				'datatype' => 'VARCHAR',
+				'formtype' => 'SELECT',
+				'default' => '',
+				'value' => array(
+					'default' => 'backup_format_default_txt',
+					'zip' => 'backup_format_zip_txt',
+					'zip_bzip2' => 'backup_format_zip_bzip2_txt',
+					'tar_gzip' => 'backup_format_tar_gzip_txt',
+					'tar_bzip2' => 'backup_format_tar_bzip2_txt',
+					'tar_xz' => 'backup_format_tar_xz_txt',
+					'tar_7z_lzma2' => 'backup_format_tar_7z_lzma2_txt',
+					'tar_7z_lzma' => 'backup_format_tar_7z_lzma_txt',
+					'tar_7z_ppmd' => 'backup_format_tar_7z_ppmd_txt',
+					'tar_7z_bzip2' => 'backup_format_tar_7z_bzip2_txt',
+					'rar' => 'backup_format_rar_txt',
+				)
+			),
+			'backup_format_db' => array (
+				'datatype' => 'VARCHAR',
+				'formtype' => 'SELECT',
+				'default' => '',
+				'value' => array(
+					'zip' => 'backup_format_zip_txt',
+					'zip_bzip2' => 'backup_format_zip_bzip2_txt',
+					'gzip' => 'backup_format_gzip_txt',
+					'bzip2' => 'backup_format_bzip2_txt',
+					'xz' => 'backup_format_xz_txt',
+					'7z_lzma2' => 'backup_format_7z_lzma2_txt',
+					'7z_lzma' => 'backup_format_7z_lzma_txt',
+					'7z_ppmd' => 'backup_format_7z_ppmd_txt',
+					'7z_bzip2' => 'backup_format_7z_bzip2_txt',
+					'rar' => 'backup_format_rar_txt',
+				)
+			),
+			'backup_encrypt' => array (
+				'datatype' => 'VARCHAR',
+				'formtype' => 'CHECKBOX',
+				'default'  => 'n',
+				'value' => array (
+					0 => 'n',
+					1 => 'y'
+				)
+			),
+			'backup_password' => array (
+				'datatype' => 'VARCHAR',
+				'formtype' => 'TEXT',
+				'default' => '',
+				'value'  => '',
+				'width'  => '30',
+				'maxlength' => '255'
+			),
 			//#################################
 			// END Datatable fields
 			//#################################
diff --git a/interface/web/sites/lib/lang/ar_web_backup_list.lng b/interface/web/sites/lib/lang/ar_web_backup_list.lng
index d1133334f0..056c7576ae 100644
--- a/interface/web/sites/lib/lang/ar_web_backup_list.lng
+++ b/interface/web/sites/lib/lang/ar_web_backup_list.lng
@@ -18,4 +18,36 @@ $wb['backup_type_mysql'] = 'MySQL Database';
 $wb['backup_type_web'] = 'Website files';
 $wb['filesize_txt'] = 'Filesize';
 $wb['backup_type_mongodb'] = 'MongoDB Database';
+$wb['backup_pending_txt'] = 'There is already a pending backup job.';
+$wb['error_txt'] = 'Error';
+$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.';
+$wb["backup_format_txt"] = 'Backup format';
+$wb["backup_format_unknown_txt"] = 'Unknown';
+$wb["backup_job_txt"] = 'Scheduler';
+$wb["backup_job_manual_txt"] = 'Manual';
+$wb["backup_job_auto_txt"] = 'Auto';
+$wb["manual_backup_title_txt"] = 'Manual backup';
+$wb["make_backup_web_txt"] = 'Make backup of web files';
+$wb["make_backup_database_txt"] = 'Make backup of databases';
+$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?';
+$wb["yes_txt"] = 'Yes';
+$wb["no_txt"] = 'No';
+$wb["backup_is_encrypted_txt"] = "Encrypted";
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
+$wb["backup_format_rar_txt"] = 'RAR';
 ?>
diff --git a/interface/web/sites/lib/lang/ar_web_vhost_domain.lng b/interface/web/sites/lib/lang/ar_web_vhost_domain.lng
index f866aa7b25..f9c396616b 100644
--- a/interface/web/sites/lib/lang/ar_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/ar_web_vhost_domain.lng
@@ -156,4 +156,31 @@ $wb['log_retention_txt'] = 'Logfiles retention time';
 $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
 $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
+$wb["backup_format_web_txt"] = 'Backup format for web files';
+$wb["backup_format_db_txt"] = 'Backup format for database';
+$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.';
+$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: ';
+$wb["backup_compression_options_txt"] = 'Compression options';
+$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it.";
+$wb["backup_encryption_options_txt"] = 'Encryption options';
+$wb["backup_enable_encryption_txt"] = 'Enable encryption';
+$wb["backup_password_txt"] = 'Password';
+$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)';
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_rar_txt"] = 'RAR';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
 ?>
diff --git a/interface/web/sites/lib/lang/bg_web_backup_list.lng b/interface/web/sites/lib/lang/bg_web_backup_list.lng
index d1133334f0..056c7576ae 100644
--- a/interface/web/sites/lib/lang/bg_web_backup_list.lng
+++ b/interface/web/sites/lib/lang/bg_web_backup_list.lng
@@ -18,4 +18,36 @@ $wb['backup_type_mysql'] = 'MySQL Database';
 $wb['backup_type_web'] = 'Website files';
 $wb['filesize_txt'] = 'Filesize';
 $wb['backup_type_mongodb'] = 'MongoDB Database';
+$wb['backup_pending_txt'] = 'There is already a pending backup job.';
+$wb['error_txt'] = 'Error';
+$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.';
+$wb["backup_format_txt"] = 'Backup format';
+$wb["backup_format_unknown_txt"] = 'Unknown';
+$wb["backup_job_txt"] = 'Scheduler';
+$wb["backup_job_manual_txt"] = 'Manual';
+$wb["backup_job_auto_txt"] = 'Auto';
+$wb["manual_backup_title_txt"] = 'Manual backup';
+$wb["make_backup_web_txt"] = 'Make backup of web files';
+$wb["make_backup_database_txt"] = 'Make backup of databases';
+$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?';
+$wb["yes_txt"] = 'Yes';
+$wb["no_txt"] = 'No';
+$wb["backup_is_encrypted_txt"] = "Encrypted";
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
+$wb["backup_format_rar_txt"] = 'RAR';
 ?>
diff --git a/interface/web/sites/lib/lang/bg_web_vhost_domain.lng b/interface/web/sites/lib/lang/bg_web_vhost_domain.lng
index 84b729eda5..1ab6c244cc 100644
--- a/interface/web/sites/lib/lang/bg_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/bg_web_vhost_domain.lng
@@ -156,4 +156,31 @@ $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min.
 $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
 $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
+$wb["backup_format_web_txt"] = 'Backup format for web files';
+$wb["backup_format_db_txt"] = 'Backup format for database';
+$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.';
+$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: ';
+$wb["backup_compression_options_txt"] = 'Compression options';
+$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it.";
+$wb["backup_encryption_options_txt"] = 'Encryption options';
+$wb["backup_enable_encryption_txt"] = 'Enable encryption';
+$wb["backup_password_txt"] = 'Password';
+$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)';
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_rar_txt"] = 'RAR';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
 ?>
diff --git a/interface/web/sites/lib/lang/br_web_backup_list.lng b/interface/web/sites/lib/lang/br_web_backup_list.lng
index 82883c1f29..00384c6e15 100644
--- a/interface/web/sites/lib/lang/br_web_backup_list.lng
+++ b/interface/web/sites/lib/lang/br_web_backup_list.lng
@@ -18,5 +18,36 @@ $wb['delete_pending_txt'] = 'Já existe uma remoção de backup em andamento.';
 $wb['backup_type_mongodb'] = 'MongoDB';
 $wb['backup_type_mysql'] = 'MySQL';
 $wb['backup_type_web'] = 'Arquivos do site';
-
+$wb['backup_pending_txt'] = 'There is already a pending backup job.';
+$wb['error_txt'] = 'Error';
+$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.';
+$wb["backup_format_txt"] = 'Backup format';
+$wb["backup_format_unknown_txt"] = 'Unknown';
+$wb["backup_job_txt"] = 'Scheduler';
+$wb["backup_job_manual_txt"] = 'Manual';
+$wb["backup_job_auto_txt"] = 'Auto';
+$wb["manual_backup_title_txt"] = 'Manual backup';
+$wb["make_backup_web_txt"] = 'Make backup of web files';
+$wb["make_backup_database_txt"] = 'Make backup of databases';
+$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?';
+$wb["yes_txt"] = 'Yes';
+$wb["no_txt"] = 'No';
+$wb["backup_is_encrypted_txt"] = "Encrypted";
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
+$wb["backup_format_rar_txt"] = 'RAR';
 ?>
diff --git a/interface/web/sites/lib/lang/br_web_vhost_domain.lng b/interface/web/sites/lib/lang/br_web_vhost_domain.lng
index 7d021d4a32..a074b160a3 100644
--- a/interface/web/sites/lib/lang/br_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/br_web_vhost_domain.lng
@@ -161,4 +161,31 @@ $wb['log_retention_txt'] = 'Tempo de retenção do log de arquivos';
 $wb['log_retention_error_regex'] = 'Tempo de retenção em dias (valores permitidos: mínimo 0, máximo 9999)';
 $wb['limit_web_quota_not_0_txt'] = 'Cota de disco não pode ser configurada para 0.';
 $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
+$wb["backup_format_web_txt"] = 'Backup format for web files';
+$wb["backup_format_db_txt"] = 'Backup format for database';
+$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.';
+$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: ';
+$wb["backup_compression_options_txt"] = 'Compression options';
+$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it.";
+$wb["backup_encryption_options_txt"] = 'Encryption options';
+$wb["backup_enable_encryption_txt"] = 'Enable encryption';
+$wb["backup_password_txt"] = 'Password';
+$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)';
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_rar_txt"] = 'RAR';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
 ?>
diff --git a/interface/web/sites/lib/lang/ca_web_backup_list.lng b/interface/web/sites/lib/lang/ca_web_backup_list.lng
index 97b04a0c05..89d40ddb05 100644
--- a/interface/web/sites/lib/lang/ca_web_backup_list.lng
+++ b/interface/web/sites/lib/lang/ca_web_backup_list.lng
@@ -18,4 +18,36 @@ $wb['delete_info_txt'] = 'Delete of the backup has been started. This action tak
 $wb['delete_confirm_txt'] = 'Really delete this backup?';
 $wb['delete_pending_txt'] = 'There is already a pending backup delete job.';
 $wb['backup_type_mongodb'] = 'MongoDB Database';
+$wb['backup_pending_txt'] = 'There is already a pending backup job.';
+$wb['error_txt'] = 'Error';
+$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.';
+$wb["backup_format_txt"] = 'Backup format';
+$wb["backup_format_unknown_txt"] = 'Unknown';
+$wb["backup_job_txt"] = 'Scheduler';
+$wb["backup_job_manual_txt"] = 'Manual';
+$wb["backup_job_auto_txt"] = 'Auto';
+$wb["manual_backup_title_txt"] = 'Manual backup';
+$wb["make_backup_web_txt"] = 'Make backup of web files';
+$wb["make_backup_database_txt"] = 'Make backup of databases';
+$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?';
+$wb["yes_txt"] = 'Yes';
+$wb["no_txt"] = 'No';
+$wb["backup_is_encrypted_txt"] = "Encrypted";
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
+$wb["backup_format_rar_txt"] = 'RAR';
 ?>
diff --git a/interface/web/sites/lib/lang/ca_web_vhost_domain.lng b/interface/web/sites/lib/lang/ca_web_vhost_domain.lng
index 40fda06d11..d0a5a58bd3 100644
--- a/interface/web/sites/lib/lang/ca_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/ca_web_vhost_domain.lng
@@ -156,4 +156,31 @@ $wb['log_retention_txt'] = 'Logfiles retention time';
 $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
 $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
+$wb["backup_format_web_txt"] = 'Backup format for web files';
+$wb["backup_format_db_txt"] = 'Backup format for database';
+$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.';
+$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: ';
+$wb["backup_compression_options_txt"] = 'Compression options';
+$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it.";
+$wb["backup_encryption_options_txt"] = 'Encryption options';
+$wb["backup_enable_encryption_txt"] = 'Enable encryption';
+$wb["backup_password_txt"] = 'Password';
+$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)';
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_rar_txt"] = 'RAR';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
 ?>
diff --git a/interface/web/sites/lib/lang/cz_web_backup_list.lng b/interface/web/sites/lib/lang/cz_web_backup_list.lng
index d30e41d961..e881afca12 100644
--- a/interface/web/sites/lib/lang/cz_web_backup_list.lng
+++ b/interface/web/sites/lib/lang/cz_web_backup_list.lng
@@ -18,4 +18,36 @@ $wb['delete_info_txt'] = 'Bylo zahájeno odstranění zálohy. Tato akce může
 $wb['delete_confirm_txt'] = 'Opravdu chcete smazat tuto zálohu ?';
 $wb['delete_pending_txt'] = 'Již existuje čekající úloha pro odstranění zálohy.';
 $wb['backup_type_mongodb'] = 'MongoDB Database';
+$wb['backup_pending_txt'] = 'There is already a pending backup job.';
+$wb['error_txt'] = 'Error';
+$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.';
+$wb["backup_format_txt"] = 'Backup format';
+$wb["backup_format_unknown_txt"] = 'Unknown';
+$wb["backup_job_txt"] = 'Scheduler';
+$wb["backup_job_manual_txt"] = 'Manual';
+$wb["backup_job_auto_txt"] = 'Auto';
+$wb["manual_backup_title_txt"] = 'Manual backup';
+$wb["make_backup_web_txt"] = 'Make backup of web files';
+$wb["make_backup_database_txt"] = 'Make backup of databases';
+$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?';
+$wb["yes_txt"] = 'Yes';
+$wb["no_txt"] = 'No';
+$wb["backup_is_encrypted_txt"] = "Encrypted";
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
+$wb["backup_format_rar_txt"] = 'RAR';
 ?>
diff --git a/interface/web/sites/lib/lang/cz_web_vhost_domain.lng b/interface/web/sites/lib/lang/cz_web_vhost_domain.lng
index 5e6ed3e756..250f98c890 100644
--- a/interface/web/sites/lib/lang/cz_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/cz_web_vhost_domain.lng
@@ -156,4 +156,31 @@ $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min.
 $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
 $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
+$wb["backup_format_web_txt"] = 'Backup format for web files';
+$wb["backup_format_db_txt"] = 'Backup format for database';
+$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.';
+$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: ';
+$wb["backup_compression_options_txt"] = 'Compression options';
+$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it.";
+$wb["backup_encryption_options_txt"] = 'Encryption options';
+$wb["backup_enable_encryption_txt"] = 'Enable encryption';
+$wb["backup_password_txt"] = 'Password';
+$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)';
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_rar_txt"] = 'RAR';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
 ?>
diff --git a/interface/web/sites/lib/lang/de_web_backup_list.lng b/interface/web/sites/lib/lang/de_web_backup_list.lng
index 63b27051bb..3c38207b76 100644
--- a/interface/web/sites/lib/lang/de_web_backup_list.lng
+++ b/interface/web/sites/lib/lang/de_web_backup_list.lng
@@ -18,4 +18,36 @@ $wb['delete_pending_txt'] = 'Es liegt bereits ein Backup-Lösch-Job an.';
 $wb['backup_type_mysql'] = 'MySQL-Datenbank';
 $wb['backup_type_web'] = 'Webseiten-Dateien';
 $wb['filesize_txt'] = 'Filesize';
+$wb['backup_pending_txt'] = 'There is already a pending backup job.';
+$wb['error_txt'] = 'Error';
+$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.';
+$wb["backup_format_txt"] = 'Backup format';
+$wb["backup_format_unknown_txt"] = 'Unknown';
+$wb["backup_job_txt"] = 'Scheduler';
+$wb["backup_job_manual_txt"] = 'Manual';
+$wb["backup_job_auto_txt"] = 'Auto';
+$wb["manual_backup_title_txt"] = 'Manual backup';
+$wb["make_backup_web_txt"] = 'Make backup of web files';
+$wb["make_backup_database_txt"] = 'Make backup of databases';
+$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?';
+$wb["yes_txt"] = 'Yes';
+$wb["no_txt"] = 'No';
+$wb["backup_is_encrypted_txt"] = "Encrypted";
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
+$wb["backup_format_rar_txt"] = 'RAR';
 ?>
diff --git a/interface/web/sites/lib/lang/de_web_vhost_domain.lng b/interface/web/sites/lib/lang/de_web_vhost_domain.lng
index b5fef5aa15..e4424799a6 100644
--- a/interface/web/sites/lib/lang/de_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/de_web_vhost_domain.lng
@@ -156,4 +156,31 @@ $wb['log_retention_txt'] = 'Log-Dateien Aufbewahrungszeit';
 $wb['log_retention_error_regex'] = 'Aufbewahrungszeit in Tagen (Erlaubte Werte: min. 0 - max. 9999)';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota kann nicht 0 sein.';
 $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
+$wb["backup_format_web_txt"] = 'Backup format for web files';
+$wb["backup_format_db_txt"] = 'Backup format for database';
+$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.';
+$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: ';
+$wb["backup_compression_options_txt"] = 'Compression options';
+$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it.";
+$wb["backup_encryption_options_txt"] = 'Encryption options';
+$wb["backup_enable_encryption_txt"] = 'Enable encryption';
+$wb["backup_password_txt"] = 'Password';
+$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)';
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_rar_txt"] = 'RAR';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
 ?>
diff --git a/interface/web/sites/lib/lang/dk_web_backup_list.lng b/interface/web/sites/lib/lang/dk_web_backup_list.lng
index eb45c4e89b..fb9f0e997f 100644
--- a/interface/web/sites/lib/lang/dk_web_backup_list.lng
+++ b/interface/web/sites/lib/lang/dk_web_backup_list.lng
@@ -18,4 +18,36 @@ $wb['delete_info_txt'] = 'Delete of the backup has been started. This action tak
 $wb['delete_confirm_txt'] = 'Really delete this backup?';
 $wb['delete_pending_txt'] = 'There is already a pending backup delete job.';
 $wb['backup_type_mongodb'] = 'MongoDB Database';
+$wb['backup_pending_txt'] = 'There is already a pending backup job.';
+$wb['error_txt'] = 'Error';
+$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.';
+$wb["backup_format_txt"] = 'Backup format';
+$wb["backup_format_unknown_txt"] = 'Unknown';
+$wb["backup_job_txt"] = 'Scheduler';
+$wb["backup_job_manual_txt"] = 'Manual';
+$wb["backup_job_auto_txt"] = 'Auto';
+$wb["manual_backup_title_txt"] = 'Manual backup';
+$wb["make_backup_web_txt"] = 'Make backup of web files';
+$wb["make_backup_database_txt"] = 'Make backup of databases';
+$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?';
+$wb["yes_txt"] = 'Yes';
+$wb["no_txt"] = 'No';
+$wb["backup_is_encrypted_txt"] = "Encrypted";
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
+$wb["backup_format_rar_txt"] = 'RAR';
 ?>
diff --git a/interface/web/sites/lib/lang/dk_web_vhost_domain.lng b/interface/web/sites/lib/lang/dk_web_vhost_domain.lng
index 40fda06d11..d0a5a58bd3 100644
--- a/interface/web/sites/lib/lang/dk_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/dk_web_vhost_domain.lng
@@ -156,4 +156,31 @@ $wb['log_retention_txt'] = 'Logfiles retention time';
 $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
 $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
+$wb["backup_format_web_txt"] = 'Backup format for web files';
+$wb["backup_format_db_txt"] = 'Backup format for database';
+$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.';
+$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: ';
+$wb["backup_compression_options_txt"] = 'Compression options';
+$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it.";
+$wb["backup_encryption_options_txt"] = 'Encryption options';
+$wb["backup_enable_encryption_txt"] = 'Enable encryption';
+$wb["backup_password_txt"] = 'Password';
+$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)';
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_rar_txt"] = 'RAR';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
 ?>
diff --git a/interface/web/sites/lib/lang/el_web_backup_list.lng b/interface/web/sites/lib/lang/el_web_backup_list.lng
index d1133334f0..056c7576ae 100644
--- a/interface/web/sites/lib/lang/el_web_backup_list.lng
+++ b/interface/web/sites/lib/lang/el_web_backup_list.lng
@@ -18,4 +18,36 @@ $wb['backup_type_mysql'] = 'MySQL Database';
 $wb['backup_type_web'] = 'Website files';
 $wb['filesize_txt'] = 'Filesize';
 $wb['backup_type_mongodb'] = 'MongoDB Database';
+$wb['backup_pending_txt'] = 'There is already a pending backup job.';
+$wb['error_txt'] = 'Error';
+$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.';
+$wb["backup_format_txt"] = 'Backup format';
+$wb["backup_format_unknown_txt"] = 'Unknown';
+$wb["backup_job_txt"] = 'Scheduler';
+$wb["backup_job_manual_txt"] = 'Manual';
+$wb["backup_job_auto_txt"] = 'Auto';
+$wb["manual_backup_title_txt"] = 'Manual backup';
+$wb["make_backup_web_txt"] = 'Make backup of web files';
+$wb["make_backup_database_txt"] = 'Make backup of databases';
+$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?';
+$wb["yes_txt"] = 'Yes';
+$wb["no_txt"] = 'No';
+$wb["backup_is_encrypted_txt"] = "Encrypted";
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
+$wb["backup_format_rar_txt"] = 'RAR';
 ?>
diff --git a/interface/web/sites/lib/lang/el_web_vhost_domain.lng b/interface/web/sites/lib/lang/el_web_vhost_domain.lng
index 4fc9e15107..d4cb988a17 100644
--- a/interface/web/sites/lib/lang/el_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/el_web_vhost_domain.lng
@@ -156,4 +156,31 @@ $wb['log_retention_txt'] = 'Logfiles retention time';
 $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
 $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
+$wb["backup_format_web_txt"] = 'Backup format for web files';
+$wb["backup_format_db_txt"] = 'Backup format for database';
+$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.';
+$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: ';
+$wb["backup_compression_options_txt"] = 'Compression options';
+$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it.";
+$wb["backup_encryption_options_txt"] = 'Encryption options';
+$wb["backup_enable_encryption_txt"] = 'Enable encryption';
+$wb["backup_password_txt"] = 'Password';
+$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)';
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_rar_txt"] = 'RAR';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
 ?>
diff --git a/interface/web/sites/lib/lang/en_web_backup_list.lng b/interface/web/sites/lib/lang/en_web_backup_list.lng
index 6ec5f5f3c7..f541108807 100644
--- a/interface/web/sites/lib/lang/en_web_backup_list.lng
+++ b/interface/web/sites/lib/lang/en_web_backup_list.lng
@@ -3,7 +3,7 @@ $wb['list_head_txt'] = 'Existing backups';
 $wb['date_txt'] = 'Date';
 $wb['backup_type_txt'] = 'Type';
 $wb['filename_txt'] = 'Backup file';
-$wb['filesize_txt'] = 'Filesize';
+$wb['filesize_txt'] = 'File size';
 $wb['restore_backup_txt'] = 'Restore';
 $wb['download_backup_txt'] = 'Download';
 $wb['download_info_txt'] = 'The backup file will be available for download in the backup folder of the website in a few minutes.';
@@ -18,5 +18,36 @@ $wb['delete_pending_txt'] = 'There is already a pending backup delete job.';
 $wb['backup_type_mongodb'] = 'MongoDB Database';
 $wb['backup_type_mysql'] = 'MySQL Database';
 $wb['backup_type_web'] = 'Website files';
-
+$wb['backup_pending_txt'] = 'There is already a pending backup job.';
+$wb['error_txt'] = 'Error';
+$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.';
+$wb["backup_format_txt"] = 'Backup format';
+$wb["backup_format_unknown_txt"] = 'Unknown';
+$wb["backup_job_txt"] = 'Scheduler';
+$wb["backup_job_manual_txt"] = 'Manual';
+$wb["backup_job_auto_txt"] = 'Auto';
+$wb["manual_backup_title_txt"] = 'Manual backup';
+$wb["make_backup_web_txt"] = 'Make backup of web files';
+$wb["make_backup_database_txt"] = 'Make backup of databases';
+$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?';
+$wb["yes_txt"] = 'Yes';
+$wb["no_txt"] = 'No';
+$wb["backup_is_encrypted_txt"] = "Encrypted";
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
+$wb["backup_format_rar_txt"] = 'RAR';
 ?>
diff --git a/interface/web/sites/lib/lang/en_web_vhost_domain.lng b/interface/web/sites/lib/lang/en_web_vhost_domain.lng
index 985a1abcf2..66bfd1ca19 100644
--- a/interface/web/sites/lib/lang/en_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/en_web_vhost_domain.lng
@@ -161,4 +161,31 @@ $wb['log_retention_txt'] = 'Logfiles retention time';
 $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
 $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
+$wb["backup_format_web_txt"] = 'Backup format for web files';
+$wb["backup_format_db_txt"] = 'Backup format for database';
+$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.';
+$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: ';
+$wb["backup_compression_options_txt"] = 'Compression options';
+$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it.";
+$wb["backup_encryption_options_txt"] = 'Encryption options';
+$wb["backup_enable_encryption_txt"] = 'Enable encryption';
+$wb["backup_password_txt"] = 'Password';
+$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)';
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_rar_txt"] = 'RAR';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
 ?>
diff --git a/interface/web/sites/lib/lang/es_web_backup_list.lng b/interface/web/sites/lib/lang/es_web_backup_list.lng
index 04896d9eba..931ada712b 100644
--- a/interface/web/sites/lib/lang/es_web_backup_list.lng
+++ b/interface/web/sites/lib/lang/es_web_backup_list.lng
@@ -18,4 +18,36 @@ $wb['backup_type_mysql'] = 'Base de datos MySQL';
 $wb['backup_type_web'] = 'Archivos del sitio web';
 $wb['filesize_txt'] = 'Filesize';
 $wb['backup_type_mongodb'] = 'MongoDB Database';
+$wb['backup_pending_txt'] = 'There is already a pending backup job.';
+$wb['error_txt'] = 'Error';
+$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.';
+$wb["backup_format_txt"] = 'Backup format';
+$wb["backup_format_unknown_txt"] = 'Unknown';
+$wb["backup_job_txt"] = 'Scheduler';
+$wb["backup_job_manual_txt"] = 'Manual';
+$wb["backup_job_auto_txt"] = 'Auto';
+$wb["manual_backup_title_txt"] = 'Manual backup';
+$wb["make_backup_web_txt"] = 'Make backup of web files';
+$wb["make_backup_database_txt"] = 'Make backup of databases';
+$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?';
+$wb["yes_txt"] = 'Yes';
+$wb["no_txt"] = 'No';
+$wb["backup_is_encrypted_txt"] = "Encrypted";
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
+$wb["backup_format_rar_txt"] = 'RAR';
 ?>
diff --git a/interface/web/sites/lib/lang/es_web_vhost_domain.lng b/interface/web/sites/lib/lang/es_web_vhost_domain.lng
index d6de7b8088..504bea2aa6 100644
--- a/interface/web/sites/lib/lang/es_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/es_web_vhost_domain.lng
@@ -156,4 +156,31 @@ $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min.
 $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
 $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
+$wb["backup_format_web_txt"] = 'Backup format for web files';
+$wb["backup_format_db_txt"] = 'Backup format for database';
+$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.';
+$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: ';
+$wb["backup_compression_options_txt"] = 'Compression options';
+$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it.";
+$wb["backup_encryption_options_txt"] = 'Encryption options';
+$wb["backup_enable_encryption_txt"] = 'Enable encryption';
+$wb["backup_password_txt"] = 'Password';
+$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)';
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_rar_txt"] = 'RAR';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
 ?>
diff --git a/interface/web/sites/lib/lang/fi_web_backup_list.lng b/interface/web/sites/lib/lang/fi_web_backup_list.lng
index d1133334f0..056c7576ae 100644
--- a/interface/web/sites/lib/lang/fi_web_backup_list.lng
+++ b/interface/web/sites/lib/lang/fi_web_backup_list.lng
@@ -18,4 +18,36 @@ $wb['backup_type_mysql'] = 'MySQL Database';
 $wb['backup_type_web'] = 'Website files';
 $wb['filesize_txt'] = 'Filesize';
 $wb['backup_type_mongodb'] = 'MongoDB Database';
+$wb['backup_pending_txt'] = 'There is already a pending backup job.';
+$wb['error_txt'] = 'Error';
+$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.';
+$wb["backup_format_txt"] = 'Backup format';
+$wb["backup_format_unknown_txt"] = 'Unknown';
+$wb["backup_job_txt"] = 'Scheduler';
+$wb["backup_job_manual_txt"] = 'Manual';
+$wb["backup_job_auto_txt"] = 'Auto';
+$wb["manual_backup_title_txt"] = 'Manual backup';
+$wb["make_backup_web_txt"] = 'Make backup of web files';
+$wb["make_backup_database_txt"] = 'Make backup of databases';
+$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?';
+$wb["yes_txt"] = 'Yes';
+$wb["no_txt"] = 'No';
+$wb["backup_is_encrypted_txt"] = "Encrypted";
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
+$wb["backup_format_rar_txt"] = 'RAR';
 ?>
diff --git a/interface/web/sites/lib/lang/fi_web_vhost_domain.lng b/interface/web/sites/lib/lang/fi_web_vhost_domain.lng
index 3c9dfc5578..460fbadff7 100644
--- a/interface/web/sites/lib/lang/fi_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/fi_web_vhost_domain.lng
@@ -156,4 +156,31 @@ $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min.
 $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
 $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
+$wb["backup_format_web_txt"] = 'Backup format for web files';
+$wb["backup_format_db_txt"] = 'Backup format for database';
+$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.';
+$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: ';
+$wb["backup_compression_options_txt"] = 'Compression options';
+$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it.";
+$wb["backup_encryption_options_txt"] = 'Encryption options';
+$wb["backup_enable_encryption_txt"] = 'Enable encryption';
+$wb["backup_password_txt"] = 'Password';
+$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)';
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_rar_txt"] = 'RAR';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
 ?>
diff --git a/interface/web/sites/lib/lang/fr_web_backup_list.lng b/interface/web/sites/lib/lang/fr_web_backup_list.lng
index 6f1c5e1348..92e44845ae 100644
--- a/interface/web/sites/lib/lang/fr_web_backup_list.lng
+++ b/interface/web/sites/lib/lang/fr_web_backup_list.lng
@@ -18,4 +18,36 @@ $wb['delete_info_txt'] = 'Delete of the backup has been started. This action tak
 $wb['delete_confirm_txt'] = 'Really delete this backup?';
 $wb['delete_pending_txt'] = 'There is already a pending backup delete job.';
 $wb['backup_type_mongodb'] = 'MongoDB Database';
+$wb['backup_pending_txt'] = 'There is already a pending backup job.';
+$wb['error_txt'] = 'Error';
+$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.';
+$wb["backup_format_txt"] = 'Backup format';
+$wb["backup_format_unknown_txt"] = 'Unknown';
+$wb["backup_job_txt"] = 'Scheduler';
+$wb["backup_job_manual_txt"] = 'Manual';
+$wb["backup_job_auto_txt"] = 'Auto';
+$wb["manual_backup_title_txt"] = 'Manual backup';
+$wb["make_backup_web_txt"] = 'Make backup of web files';
+$wb["make_backup_database_txt"] = 'Make backup of databases';
+$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?';
+$wb["yes_txt"] = 'Yes';
+$wb["no_txt"] = 'No';
+$wb["backup_is_encrypted_txt"] = "Encrypted";
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
+$wb["backup_format_rar_txt"] = 'RAR';
 ?>
diff --git a/interface/web/sites/lib/lang/fr_web_vhost_domain.lng b/interface/web/sites/lib/lang/fr_web_vhost_domain.lng
index 91a806f870..306a48aedc 100644
--- a/interface/web/sites/lib/lang/fr_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/fr_web_vhost_domain.lng
@@ -156,4 +156,31 @@ $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min.
 $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
 $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
+$wb["backup_format_web_txt"] = 'Backup format for web files';
+$wb["backup_format_db_txt"] = 'Backup format for database';
+$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.';
+$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: ';
+$wb["backup_compression_options_txt"] = 'Compression options';
+$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it.";
+$wb["backup_encryption_options_txt"] = 'Encryption options';
+$wb["backup_enable_encryption_txt"] = 'Enable encryption';
+$wb["backup_password_txt"] = 'Password';
+$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)';
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_rar_txt"] = 'RAR';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
 ?>
diff --git a/interface/web/sites/lib/lang/hr_web_backup_list.lng b/interface/web/sites/lib/lang/hr_web_backup_list.lng
index d1133334f0..056c7576ae 100644
--- a/interface/web/sites/lib/lang/hr_web_backup_list.lng
+++ b/interface/web/sites/lib/lang/hr_web_backup_list.lng
@@ -18,4 +18,36 @@ $wb['backup_type_mysql'] = 'MySQL Database';
 $wb['backup_type_web'] = 'Website files';
 $wb['filesize_txt'] = 'Filesize';
 $wb['backup_type_mongodb'] = 'MongoDB Database';
+$wb['backup_pending_txt'] = 'There is already a pending backup job.';
+$wb['error_txt'] = 'Error';
+$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.';
+$wb["backup_format_txt"] = 'Backup format';
+$wb["backup_format_unknown_txt"] = 'Unknown';
+$wb["backup_job_txt"] = 'Scheduler';
+$wb["backup_job_manual_txt"] = 'Manual';
+$wb["backup_job_auto_txt"] = 'Auto';
+$wb["manual_backup_title_txt"] = 'Manual backup';
+$wb["make_backup_web_txt"] = 'Make backup of web files';
+$wb["make_backup_database_txt"] = 'Make backup of databases';
+$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?';
+$wb["yes_txt"] = 'Yes';
+$wb["no_txt"] = 'No';
+$wb["backup_is_encrypted_txt"] = "Encrypted";
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
+$wb["backup_format_rar_txt"] = 'RAR';
 ?>
diff --git a/interface/web/sites/lib/lang/hr_web_vhost_domain.lng b/interface/web/sites/lib/lang/hr_web_vhost_domain.lng
index 3874c876f1..d883532397 100644
--- a/interface/web/sites/lib/lang/hr_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/hr_web_vhost_domain.lng
@@ -156,4 +156,31 @@ $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min.
 $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
 $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
+$wb["backup_format_web_txt"] = 'Backup format for web files';
+$wb["backup_format_db_txt"] = 'Backup format for database';
+$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.';
+$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: ';
+$wb["backup_compression_options_txt"] = 'Compression options';
+$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it.";
+$wb["backup_encryption_options_txt"] = 'Encryption options';
+$wb["backup_enable_encryption_txt"] = 'Enable encryption';
+$wb["backup_password_txt"] = 'Password';
+$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)';
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_rar_txt"] = 'RAR';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
 ?>
diff --git a/interface/web/sites/lib/lang/hu_web_backup_list.lng b/interface/web/sites/lib/lang/hu_web_backup_list.lng
index d1133334f0..056c7576ae 100644
--- a/interface/web/sites/lib/lang/hu_web_backup_list.lng
+++ b/interface/web/sites/lib/lang/hu_web_backup_list.lng
@@ -18,4 +18,36 @@ $wb['backup_type_mysql'] = 'MySQL Database';
 $wb['backup_type_web'] = 'Website files';
 $wb['filesize_txt'] = 'Filesize';
 $wb['backup_type_mongodb'] = 'MongoDB Database';
+$wb['backup_pending_txt'] = 'There is already a pending backup job.';
+$wb['error_txt'] = 'Error';
+$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.';
+$wb["backup_format_txt"] = 'Backup format';
+$wb["backup_format_unknown_txt"] = 'Unknown';
+$wb["backup_job_txt"] = 'Scheduler';
+$wb["backup_job_manual_txt"] = 'Manual';
+$wb["backup_job_auto_txt"] = 'Auto';
+$wb["manual_backup_title_txt"] = 'Manual backup';
+$wb["make_backup_web_txt"] = 'Make backup of web files';
+$wb["make_backup_database_txt"] = 'Make backup of databases';
+$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?';
+$wb["yes_txt"] = 'Yes';
+$wb["no_txt"] = 'No';
+$wb["backup_is_encrypted_txt"] = "Encrypted";
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
+$wb["backup_format_rar_txt"] = 'RAR';
 ?>
diff --git a/interface/web/sites/lib/lang/hu_web_vhost_domain.lng b/interface/web/sites/lib/lang/hu_web_vhost_domain.lng
index d14356efef..4d54b0a4c7 100644
--- a/interface/web/sites/lib/lang/hu_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/hu_web_vhost_domain.lng
@@ -156,4 +156,31 @@ $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min.
 $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
 $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
+$wb["backup_format_web_txt"] = 'Backup format for web files';
+$wb["backup_format_db_txt"] = 'Backup format for database';
+$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.';
+$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: ';
+$wb["backup_compression_options_txt"] = 'Compression options';
+$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it.";
+$wb["backup_encryption_options_txt"] = 'Encryption options';
+$wb["backup_enable_encryption_txt"] = 'Enable encryption';
+$wb["backup_password_txt"] = 'Password';
+$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)';
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_rar_txt"] = 'RAR';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
 ?>
diff --git a/interface/web/sites/lib/lang/id_web_backup_list.lng b/interface/web/sites/lib/lang/id_web_backup_list.lng
index d1133334f0..056c7576ae 100644
--- a/interface/web/sites/lib/lang/id_web_backup_list.lng
+++ b/interface/web/sites/lib/lang/id_web_backup_list.lng
@@ -18,4 +18,36 @@ $wb['backup_type_mysql'] = 'MySQL Database';
 $wb['backup_type_web'] = 'Website files';
 $wb['filesize_txt'] = 'Filesize';
 $wb['backup_type_mongodb'] = 'MongoDB Database';
+$wb['backup_pending_txt'] = 'There is already a pending backup job.';
+$wb['error_txt'] = 'Error';
+$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.';
+$wb["backup_format_txt"] = 'Backup format';
+$wb["backup_format_unknown_txt"] = 'Unknown';
+$wb["backup_job_txt"] = 'Scheduler';
+$wb["backup_job_manual_txt"] = 'Manual';
+$wb["backup_job_auto_txt"] = 'Auto';
+$wb["manual_backup_title_txt"] = 'Manual backup';
+$wb["make_backup_web_txt"] = 'Make backup of web files';
+$wb["make_backup_database_txt"] = 'Make backup of databases';
+$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?';
+$wb["yes_txt"] = 'Yes';
+$wb["no_txt"] = 'No';
+$wb["backup_is_encrypted_txt"] = "Encrypted";
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
+$wb["backup_format_rar_txt"] = 'RAR';
 ?>
diff --git a/interface/web/sites/lib/lang/id_web_vhost_domain.lng b/interface/web/sites/lib/lang/id_web_vhost_domain.lng
index 0d7d7285ab..3aa65982cd 100644
--- a/interface/web/sites/lib/lang/id_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/id_web_vhost_domain.lng
@@ -156,4 +156,31 @@ $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min.
 $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
 $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
+$wb["backup_format_web_txt"] = 'Backup format for web files';
+$wb["backup_format_db_txt"] = 'Backup format for database';
+$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.';
+$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: ';
+$wb["backup_compression_options_txt"] = 'Compression options';
+$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it.";
+$wb["backup_encryption_options_txt"] = 'Encryption options';
+$wb["backup_enable_encryption_txt"] = 'Enable encryption';
+$wb["backup_password_txt"] = 'Password';
+$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)';
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_rar_txt"] = 'RAR';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
 ?>
diff --git a/interface/web/sites/lib/lang/it_web_backup_list.lng b/interface/web/sites/lib/lang/it_web_backup_list.lng
index 9aa7b0c175..d81039ea1a 100644
--- a/interface/web/sites/lib/lang/it_web_backup_list.lng
+++ b/interface/web/sites/lib/lang/it_web_backup_list.lng
@@ -18,4 +18,36 @@ $wb['delete_info_txt'] = 'Delete of the backup has been started. This action tak
 $wb['delete_confirm_txt'] = 'Really delete this backup?';
 $wb['delete_pending_txt'] = 'There is already a pending backup delete job.';
 $wb['backup_type_mongodb'] = 'MongoDB Database';
+$wb['backup_pending_txt'] = 'There is already a pending backup job.';
+$wb['error_txt'] = 'Error';
+$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.';
+$wb["backup_format_txt"] = 'Backup format';
+$wb["backup_format_unknown_txt"] = 'Unknown';
+$wb["backup_job_txt"] = 'Scheduler';
+$wb["backup_job_manual_txt"] = 'Manual';
+$wb["backup_job_auto_txt"] = 'Auto';
+$wb["manual_backup_title_txt"] = 'Manual backup';
+$wb["make_backup_web_txt"] = 'Make backup of web files';
+$wb["make_backup_database_txt"] = 'Make backup of databases';
+$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?';
+$wb["yes_txt"] = 'Yes';
+$wb["no_txt"] = 'No';
+$wb["backup_is_encrypted_txt"] = "Encrypted";
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
+$wb["backup_format_rar_txt"] = 'RAR';
 ?>
diff --git a/interface/web/sites/lib/lang/it_web_vhost_domain.lng b/interface/web/sites/lib/lang/it_web_vhost_domain.lng
index 4613d2e14e..cc890d855e 100644
--- a/interface/web/sites/lib/lang/it_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/it_web_vhost_domain.lng
@@ -156,4 +156,31 @@ $wb['log_retention_txt'] = 'Logfiles retention time';
 $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
 $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
+$wb["backup_format_web_txt"] = 'Backup format for web files';
+$wb["backup_format_db_txt"] = 'Backup format for database';
+$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.';
+$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: ';
+$wb["backup_compression_options_txt"] = 'Compression options';
+$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it.";
+$wb["backup_encryption_options_txt"] = 'Encryption options';
+$wb["backup_enable_encryption_txt"] = 'Enable encryption';
+$wb["backup_password_txt"] = 'Password';
+$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)';
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_rar_txt"] = 'RAR';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
 ?>
diff --git a/interface/web/sites/lib/lang/ja_web_backup_list.lng b/interface/web/sites/lib/lang/ja_web_backup_list.lng
index d1133334f0..056c7576ae 100644
--- a/interface/web/sites/lib/lang/ja_web_backup_list.lng
+++ b/interface/web/sites/lib/lang/ja_web_backup_list.lng
@@ -18,4 +18,36 @@ $wb['backup_type_mysql'] = 'MySQL Database';
 $wb['backup_type_web'] = 'Website files';
 $wb['filesize_txt'] = 'Filesize';
 $wb['backup_type_mongodb'] = 'MongoDB Database';
+$wb['backup_pending_txt'] = 'There is already a pending backup job.';
+$wb['error_txt'] = 'Error';
+$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.';
+$wb["backup_format_txt"] = 'Backup format';
+$wb["backup_format_unknown_txt"] = 'Unknown';
+$wb["backup_job_txt"] = 'Scheduler';
+$wb["backup_job_manual_txt"] = 'Manual';
+$wb["backup_job_auto_txt"] = 'Auto';
+$wb["manual_backup_title_txt"] = 'Manual backup';
+$wb["make_backup_web_txt"] = 'Make backup of web files';
+$wb["make_backup_database_txt"] = 'Make backup of databases';
+$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?';
+$wb["yes_txt"] = 'Yes';
+$wb["no_txt"] = 'No';
+$wb["backup_is_encrypted_txt"] = "Encrypted";
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
+$wb["backup_format_rar_txt"] = 'RAR';
 ?>
diff --git a/interface/web/sites/lib/lang/ja_web_vhost_domain.lng b/interface/web/sites/lib/lang/ja_web_vhost_domain.lng
index f4eabe51de..bfb5e8b137 100644
--- a/interface/web/sites/lib/lang/ja_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/ja_web_vhost_domain.lng
@@ -156,4 +156,31 @@ $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min.
 $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
 $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
+$wb["backup_format_web_txt"] = 'Backup format for web files';
+$wb["backup_format_db_txt"] = 'Backup format for database';
+$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.';
+$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: ';
+$wb["backup_compression_options_txt"] = 'Compression options';
+$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it.";
+$wb["backup_encryption_options_txt"] = 'Encryption options';
+$wb["backup_enable_encryption_txt"] = 'Enable encryption';
+$wb["backup_password_txt"] = 'Password';
+$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)';
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_rar_txt"] = 'RAR';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
 ?>
diff --git a/interface/web/sites/lib/lang/nl_web_backup_list.lng b/interface/web/sites/lib/lang/nl_web_backup_list.lng
index d1133334f0..056c7576ae 100644
--- a/interface/web/sites/lib/lang/nl_web_backup_list.lng
+++ b/interface/web/sites/lib/lang/nl_web_backup_list.lng
@@ -18,4 +18,36 @@ $wb['backup_type_mysql'] = 'MySQL Database';
 $wb['backup_type_web'] = 'Website files';
 $wb['filesize_txt'] = 'Filesize';
 $wb['backup_type_mongodb'] = 'MongoDB Database';
+$wb['backup_pending_txt'] = 'There is already a pending backup job.';
+$wb['error_txt'] = 'Error';
+$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.';
+$wb["backup_format_txt"] = 'Backup format';
+$wb["backup_format_unknown_txt"] = 'Unknown';
+$wb["backup_job_txt"] = 'Scheduler';
+$wb["backup_job_manual_txt"] = 'Manual';
+$wb["backup_job_auto_txt"] = 'Auto';
+$wb["manual_backup_title_txt"] = 'Manual backup';
+$wb["make_backup_web_txt"] = 'Make backup of web files';
+$wb["make_backup_database_txt"] = 'Make backup of databases';
+$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?';
+$wb["yes_txt"] = 'Yes';
+$wb["no_txt"] = 'No';
+$wb["backup_is_encrypted_txt"] = "Encrypted";
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
+$wb["backup_format_rar_txt"] = 'RAR';
 ?>
diff --git a/interface/web/sites/lib/lang/nl_web_vhost_domain.lng b/interface/web/sites/lib/lang/nl_web_vhost_domain.lng
index fbd13b159d..d67cde421a 100644
--- a/interface/web/sites/lib/lang/nl_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/nl_web_vhost_domain.lng
@@ -156,4 +156,31 @@ $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min.
 $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
 $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
+$wb["backup_format_web_txt"] = 'Backup format for web files';
+$wb["backup_format_db_txt"] = 'Backup format for database';
+$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.';
+$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: ';
+$wb["backup_compression_options_txt"] = 'Compression options';
+$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it.";
+$wb["backup_encryption_options_txt"] = 'Encryption options';
+$wb["backup_enable_encryption_txt"] = 'Enable encryption';
+$wb["backup_password_txt"] = 'Password';
+$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)';
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_rar_txt"] = 'RAR';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
 ?>
diff --git a/interface/web/sites/lib/lang/pl_web_backup_list.lng b/interface/web/sites/lib/lang/pl_web_backup_list.lng
index b9fdf3d632..a04c0bacd2 100644
--- a/interface/web/sites/lib/lang/pl_web_backup_list.lng
+++ b/interface/web/sites/lib/lang/pl_web_backup_list.lng
@@ -18,4 +18,36 @@ $wb['backup_type_mysql'] = 'Baza MySQL';
 $wb['backup_type_web'] = 'Pliki strony';
 $wb['filesize_txt'] = 'Filesize';
 $wb['backup_type_mongodb'] = 'MongoDB Database';
+$wb['backup_pending_txt'] = 'There is already a pending backup job.';
+$wb['error_txt'] = 'Error';
+$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.';
+$wb["backup_format_txt"] = 'Backup format';
+$wb["backup_format_unknown_txt"] = 'Unknown';
+$wb["backup_job_txt"] = 'Scheduler';
+$wb["backup_job_manual_txt"] = 'Manual';
+$wb["backup_job_auto_txt"] = 'Auto';
+$wb["manual_backup_title_txt"] = 'Manual backup';
+$wb["make_backup_web_txt"] = 'Make backup of web files';
+$wb["make_backup_database_txt"] = 'Make backup of databases';
+$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?';
+$wb["yes_txt"] = 'Yes';
+$wb["no_txt"] = 'No';
+$wb["backup_is_encrypted_txt"] = "Encrypted";
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
+$wb["backup_format_rar_txt"] = 'RAR';
 ?>
diff --git a/interface/web/sites/lib/lang/pl_web_vhost_domain.lng b/interface/web/sites/lib/lang/pl_web_vhost_domain.lng
index ce4cdaceaf..c24c319fe5 100644
--- a/interface/web/sites/lib/lang/pl_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/pl_web_vhost_domain.lng
@@ -156,4 +156,31 @@ $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min.
 $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
 $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
+$wb["backup_format_web_txt"] = 'Backup format for web files';
+$wb["backup_format_db_txt"] = 'Backup format for database';
+$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.';
+$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: ';
+$wb["backup_compression_options_txt"] = 'Compression options';
+$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it.";
+$wb["backup_encryption_options_txt"] = 'Encryption options';
+$wb["backup_enable_encryption_txt"] = 'Enable encryption';
+$wb["backup_password_txt"] = 'Password';
+$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)';
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_rar_txt"] = 'RAR';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
 ?>
diff --git a/interface/web/sites/lib/lang/pt_web_backup_list.lng b/interface/web/sites/lib/lang/pt_web_backup_list.lng
index d1133334f0..056c7576ae 100644
--- a/interface/web/sites/lib/lang/pt_web_backup_list.lng
+++ b/interface/web/sites/lib/lang/pt_web_backup_list.lng
@@ -18,4 +18,36 @@ $wb['backup_type_mysql'] = 'MySQL Database';
 $wb['backup_type_web'] = 'Website files';
 $wb['filesize_txt'] = 'Filesize';
 $wb['backup_type_mongodb'] = 'MongoDB Database';
+$wb['backup_pending_txt'] = 'There is already a pending backup job.';
+$wb['error_txt'] = 'Error';
+$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.';
+$wb["backup_format_txt"] = 'Backup format';
+$wb["backup_format_unknown_txt"] = 'Unknown';
+$wb["backup_job_txt"] = 'Scheduler';
+$wb["backup_job_manual_txt"] = 'Manual';
+$wb["backup_job_auto_txt"] = 'Auto';
+$wb["manual_backup_title_txt"] = 'Manual backup';
+$wb["make_backup_web_txt"] = 'Make backup of web files';
+$wb["make_backup_database_txt"] = 'Make backup of databases';
+$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?';
+$wb["yes_txt"] = 'Yes';
+$wb["no_txt"] = 'No';
+$wb["backup_is_encrypted_txt"] = "Encrypted";
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
+$wb["backup_format_rar_txt"] = 'RAR';
 ?>
diff --git a/interface/web/sites/lib/lang/pt_web_vhost_domain.lng b/interface/web/sites/lib/lang/pt_web_vhost_domain.lng
index 8c1e76af38..dc6895c3e1 100644
--- a/interface/web/sites/lib/lang/pt_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/pt_web_vhost_domain.lng
@@ -156,4 +156,31 @@ $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min.
 $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
 $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
+$wb["backup_format_web_txt"] = 'Backup format for web files';
+$wb["backup_format_db_txt"] = 'Backup format for database';
+$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.';
+$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: ';
+$wb["backup_compression_options_txt"] = 'Compression options';
+$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it.";
+$wb["backup_encryption_options_txt"] = 'Encryption options';
+$wb["backup_enable_encryption_txt"] = 'Enable encryption';
+$wb["backup_password_txt"] = 'Password';
+$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)';
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_rar_txt"] = 'RAR';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
 ?>
diff --git a/interface/web/sites/lib/lang/ro_web_backup_list.lng b/interface/web/sites/lib/lang/ro_web_backup_list.lng
index d1133334f0..056c7576ae 100644
--- a/interface/web/sites/lib/lang/ro_web_backup_list.lng
+++ b/interface/web/sites/lib/lang/ro_web_backup_list.lng
@@ -18,4 +18,36 @@ $wb['backup_type_mysql'] = 'MySQL Database';
 $wb['backup_type_web'] = 'Website files';
 $wb['filesize_txt'] = 'Filesize';
 $wb['backup_type_mongodb'] = 'MongoDB Database';
+$wb['backup_pending_txt'] = 'There is already a pending backup job.';
+$wb['error_txt'] = 'Error';
+$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.';
+$wb["backup_format_txt"] = 'Backup format';
+$wb["backup_format_unknown_txt"] = 'Unknown';
+$wb["backup_job_txt"] = 'Scheduler';
+$wb["backup_job_manual_txt"] = 'Manual';
+$wb["backup_job_auto_txt"] = 'Auto';
+$wb["manual_backup_title_txt"] = 'Manual backup';
+$wb["make_backup_web_txt"] = 'Make backup of web files';
+$wb["make_backup_database_txt"] = 'Make backup of databases';
+$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?';
+$wb["yes_txt"] = 'Yes';
+$wb["no_txt"] = 'No';
+$wb["backup_is_encrypted_txt"] = "Encrypted";
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
+$wb["backup_format_rar_txt"] = 'RAR';
 ?>
diff --git a/interface/web/sites/lib/lang/ro_web_vhost_domain.lng b/interface/web/sites/lib/lang/ro_web_vhost_domain.lng
index 00a9c247fc..8e27105a6a 100644
--- a/interface/web/sites/lib/lang/ro_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/ro_web_vhost_domain.lng
@@ -156,4 +156,31 @@ $wb['log_retention_txt'] = 'Logfiles retention time';
 $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
 $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
+$wb["backup_format_web_txt"] = 'Backup format for web files';
+$wb["backup_format_db_txt"] = 'Backup format for database';
+$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.';
+$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: ';
+$wb["backup_compression_options_txt"] = 'Compression options';
+$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it.";
+$wb["backup_encryption_options_txt"] = 'Encryption options';
+$wb["backup_enable_encryption_txt"] = 'Enable encryption';
+$wb["backup_password_txt"] = 'Password';
+$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)';
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_rar_txt"] = 'RAR';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
 ?>
diff --git a/interface/web/sites/lib/lang/ru_web_backup_list.lng b/interface/web/sites/lib/lang/ru_web_backup_list.lng
index 8d5b7b757b..8943d94750 100644
--- a/interface/web/sites/lib/lang/ru_web_backup_list.lng
+++ b/interface/web/sites/lib/lang/ru_web_backup_list.lng
@@ -18,4 +18,36 @@ $wb['backup_type_mysql'] = 'База данных MySQL';
 $wb['backup_type_web'] = 'Файлы Web сайта';
 $wb['filesize_txt'] = 'Размер файла';
 $wb['backup_type_mongodb'] = 'База данных MongoDB';
+$wb['backup_pending_txt'] = 'There is already a pending backup job.';
+$wb['error_txt'] = 'Error';
+$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.';
+$wb["backup_format_txt"] = 'Backup format';
+$wb["backup_format_unknown_txt"] = 'Unknown';
+$wb["backup_job_txt"] = 'Scheduler';
+$wb["backup_job_manual_txt"] = 'Manual';
+$wb["backup_job_auto_txt"] = 'Auto';
+$wb["manual_backup_title_txt"] = 'Manual backup';
+$wb["make_backup_web_txt"] = 'Make backup of web files';
+$wb["make_backup_database_txt"] = 'Make backup of databases';
+$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?';
+$wb["yes_txt"] = 'Yes';
+$wb["no_txt"] = 'No';
+$wb["backup_is_encrypted_txt"] = "Encrypted";
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
+$wb["backup_format_rar_txt"] = 'RAR';
 ?>
diff --git a/interface/web/sites/lib/lang/ru_web_vhost_domain.lng b/interface/web/sites/lib/lang/ru_web_vhost_domain.lng
index 8e596defa3..c9a2a0a4ba 100644
--- a/interface/web/sites/lib/lang/ru_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/ru_web_vhost_domain.lng
@@ -156,4 +156,31 @@ $wb['log_retention_txt'] = 'Logfiles retention time';
 $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
 $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
+$wb["backup_format_web_txt"] = 'Backup format for web files';
+$wb["backup_format_db_txt"] = 'Backup format for database';
+$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.';
+$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: ';
+$wb["backup_compression_options_txt"] = 'Compression options';
+$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it.";
+$wb["backup_encryption_options_txt"] = 'Encryption options';
+$wb["backup_enable_encryption_txt"] = 'Enable encryption';
+$wb["backup_password_txt"] = 'Password';
+$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)';
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_rar_txt"] = 'RAR';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
 ?>
diff --git a/interface/web/sites/lib/lang/se_web_backup_list.lng b/interface/web/sites/lib/lang/se_web_backup_list.lng
index 1f9073ab6d..702a46e8d2 100644
--- a/interface/web/sites/lib/lang/se_web_backup_list.lng
+++ b/interface/web/sites/lib/lang/se_web_backup_list.lng
@@ -18,4 +18,36 @@ $wb['backup_type_mysql'] = 'MySQL-databaser';
 $wb['backup_type_web'] = 'Webbsidefiler';
 $wb['filesize_txt'] = 'Filesize';
 $wb['backup_type_mongodb'] = 'MongoDB Database';
+$wb['backup_pending_txt'] = 'There is already a pending backup job.';
+$wb['error_txt'] = 'Error';
+$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.';
+$wb["backup_format_txt"] = 'Backup format';
+$wb["backup_format_unknown_txt"] = 'Unknown';
+$wb["backup_job_txt"] = 'Scheduler';
+$wb["backup_job_manual_txt"] = 'Manual';
+$wb["backup_job_auto_txt"] = 'Auto';
+$wb["manual_backup_title_txt"] = 'Manual backup';
+$wb["make_backup_web_txt"] = 'Make backup of web files';
+$wb["make_backup_database_txt"] = 'Make backup of databases';
+$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?';
+$wb["yes_txt"] = 'Yes';
+$wb["no_txt"] = 'No';
+$wb["backup_is_encrypted_txt"] = "Encrypted";
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
+$wb["backup_format_rar_txt"] = 'RAR';
 ?>
diff --git a/interface/web/sites/lib/lang/se_web_vhost_domain.lng b/interface/web/sites/lib/lang/se_web_vhost_domain.lng
index 01db60b572..ec509b333a 100644
--- a/interface/web/sites/lib/lang/se_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/se_web_vhost_domain.lng
@@ -156,4 +156,31 @@ $wb['log_retention_txt'] = 'Logfiles retention time';
 $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
 $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
+$wb["backup_format_web_txt"] = 'Backup format for web files';
+$wb["backup_format_db_txt"] = 'Backup format for database';
+$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.';
+$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: ';
+$wb["backup_compression_options_txt"] = 'Compression options';
+$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it.";
+$wb["backup_encryption_options_txt"] = 'Encryption options';
+$wb["backup_enable_encryption_txt"] = 'Enable encryption';
+$wb["backup_password_txt"] = 'Password';
+$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)';
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_rar_txt"] = 'RAR';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
 ?>
diff --git a/interface/web/sites/lib/lang/sk_web_backup_list.lng b/interface/web/sites/lib/lang/sk_web_backup_list.lng
index d1133334f0..056c7576ae 100644
--- a/interface/web/sites/lib/lang/sk_web_backup_list.lng
+++ b/interface/web/sites/lib/lang/sk_web_backup_list.lng
@@ -18,4 +18,36 @@ $wb['backup_type_mysql'] = 'MySQL Database';
 $wb['backup_type_web'] = 'Website files';
 $wb['filesize_txt'] = 'Filesize';
 $wb['backup_type_mongodb'] = 'MongoDB Database';
+$wb['backup_pending_txt'] = 'There is already a pending backup job.';
+$wb['error_txt'] = 'Error';
+$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.';
+$wb["backup_format_txt"] = 'Backup format';
+$wb["backup_format_unknown_txt"] = 'Unknown';
+$wb["backup_job_txt"] = 'Scheduler';
+$wb["backup_job_manual_txt"] = 'Manual';
+$wb["backup_job_auto_txt"] = 'Auto';
+$wb["manual_backup_title_txt"] = 'Manual backup';
+$wb["make_backup_web_txt"] = 'Make backup of web files';
+$wb["make_backup_database_txt"] = 'Make backup of databases';
+$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?';
+$wb["yes_txt"] = 'Yes';
+$wb["no_txt"] = 'No';
+$wb["backup_is_encrypted_txt"] = "Encrypted";
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
+$wb["backup_format_rar_txt"] = 'RAR';
 ?>
diff --git a/interface/web/sites/lib/lang/sk_web_vhost_domain.lng b/interface/web/sites/lib/lang/sk_web_vhost_domain.lng
index 7d52d3edf1..0509b1a3bb 100644
--- a/interface/web/sites/lib/lang/sk_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/sk_web_vhost_domain.lng
@@ -156,4 +156,31 @@ $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min.
 $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.';
 $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.';
 $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol';
+$wb["backup_format_web_txt"] = 'Backup format for web files';
+$wb["backup_format_db_txt"] = 'Backup format for database';
+$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.';
+$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: ';
+$wb["backup_compression_options_txt"] = 'Compression options';
+$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it.";
+$wb["backup_encryption_options_txt"] = 'Encryption options';
+$wb["backup_enable_encryption_txt"] = 'Enable encryption';
+$wb["backup_password_txt"] = 'Password';
+$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)';
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_rar_txt"] = 'RAR';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
 ?>
diff --git a/interface/web/sites/lib/lang/tr_web_backup_list.lng b/interface/web/sites/lib/lang/tr_web_backup_list.lng
index 31aea494ca..e304290f61 100644
--- a/interface/web/sites/lib/lang/tr_web_backup_list.lng
+++ b/interface/web/sites/lib/lang/tr_web_backup_list.lng
@@ -18,5 +18,36 @@ $wb['delete_pending_txt'] = 'Bekleyen bir yedek silme iÅŸlemi var.';
 $wb['backup_type_mongodb'] = 'MongoDB Veritabanı';
 $wb['backup_type_mysql'] = 'MySQL Veritabanı';
 $wb['backup_type_web'] = 'Web sitesi dosyaları';
-
+$wb['backup_pending_txt'] = 'There is already a pending backup job.';
+$wb['error_txt'] = 'Error';
+$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.';
+$wb["backup_format_txt"] = 'Backup format';
+$wb["backup_format_unknown_txt"] = 'Unknown';
+$wb["backup_job_txt"] = 'Scheduler';
+$wb["backup_job_manual_txt"] = 'Manual';
+$wb["backup_job_auto_txt"] = 'Auto';
+$wb["manual_backup_title_txt"] = 'Manual backup';
+$wb["make_backup_web_txt"] = 'Make backup of web files';
+$wb["make_backup_database_txt"] = 'Make backup of databases';
+$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?';
+$wb["yes_txt"] = 'Yes';
+$wb["no_txt"] = 'No';
+$wb["backup_is_encrypted_txt"] = "Encrypted";
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
+$wb["backup_format_rar_txt"] = 'RAR';
 ?>
diff --git a/interface/web/sites/lib/lang/tr_web_vhost_domain.lng b/interface/web/sites/lib/lang/tr_web_vhost_domain.lng
index a190375c37..071df396e4 100644
--- a/interface/web/sites/lib/lang/tr_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/tr_web_vhost_domain.lng
@@ -158,4 +158,31 @@ $wb['https_port_error_regex'] = 'HTTPS kapı numarası geçersiz.';
 $wb['enable_pagespeed_txt'] = 'PageSpeed Kullanılsın';
 $wb['log_retention_txt'] = 'Günlük Dosyalarının Silinme Sıklığı';
 $wb['log_retention_error_regex'] = 'Gün cinsinden günlük dosyalarının silinme sıklığı (En küçük: 0 - En büyük: 9999)';
+$wb["backup_format_web_txt"] = 'Backup format for web files';
+$wb["backup_format_db_txt"] = 'Backup format for database';
+$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.';
+$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: ';
+$wb["backup_compression_options_txt"] = 'Compression options';
+$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it.";
+$wb["backup_encryption_options_txt"] = 'Encryption options';
+$wb["backup_enable_encryption_txt"] = 'Enable encryption';
+$wb["backup_password_txt"] = 'Password';
+$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)';
+$wb["backup_format_zip_txt"] = 'zip (deflate)';
+$wb["backup_format_gzip_txt"] = 'gzip';
+$wb["backup_format_bzip2_txt"] = 'bzip2';
+$wb["backup_format_xz_txt"] = 'xz';
+$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)';
+$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)';
+$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)';
+$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)';
+$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)';
+$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)';
+$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)';
+$wb["backup_format_tar_xz_txt"] = 'tar (xz)';
+$wb["backup_format_rar_txt"] = 'RAR';
+$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)';
+$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)';
+$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)';
+$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)';
 ?>
diff --git a/interface/web/sites/templates/web_backup_list.htm b/interface/web/sites/templates/web_backup_list.htm
index 31028a703c..95c51d0c15 100644
--- a/interface/web/sites/templates/web_backup_list.htm
+++ b/interface/web/sites/templates/web_backup_list.htm
@@ -1,12 +1,18 @@
+<h3><tmpl_var name="manual_backup_title_txt"></h3>
+<button class="btn btn-default formbutton-default" type="button" onclick="ISPConfig.confirm_action('sites/web_vhost_domain_edit.php?id={tmpl_var name='parent_id'}&next_tab=backup&make_backup=database&','{tmpl_var name='make_backup_confirm_txt'}');">{tmpl_var name="make_backup_database_txt"}</button>
+<button class="btn btn-default formbutton-default" type="button" onclick="ISPConfig.confirm_action('sites/web_vhost_domain_edit.php?id={tmpl_var name='parent_id'}&next_tab=backup&make_backup=web&','{tmpl_var name='make_backup_confirm_txt'}');">{tmpl_var name="make_backup_web_txt"}</button>
+
 <tmpl_if name="msg">
-    <div id="OKMsg"><p><tmpl_var name="msg"></p></div>
+    <div id="OKMsg" class="tab-content bg-success text-success text-center"><p><tmpl_var name="msg"></p></div>
 </tmpl_if>
 <tmpl_if name="error">
-    <div id="errorMsg"><h3><tmpl_var name="error_txt"></h3><ol><tmpl_var name="error"></ol></div>
+    <div id="errorMsg" class="tab-content bg-danger text-danger text-center">
+        <h4><tmpl_var name="error_txt"></h4>
+        <p><tmpl_var name="error"></p>
+    </div>
 </tmpl_if>
 <h3><tmpl_var name="list_head_txt"></h3>
 
-
         <p class="fieldset-legend"><tmpl_var name="list_head_txt"></p>
             <div class="table-wrapper marginTop15">
 <table class="table table-auto table-striped" style="padding: 5px;">
@@ -14,6 +20,9 @@
                     <tr>
                         <th data-column="date"><tmpl_var name="date_txt"></th>
                         <th data-column="backup_type"><tmpl_var name="backup_type_txt"></th>
+                        <th data-column="backup_format"><tmpl_var name="backup_format_txt"></th>
+                        <th data-column="backup_job"><tmpl_var name="backup_job_txt"></th>
+                        <th data-column="backup_encrypted"><tmpl_var name="backup_is_encrypted_txt"></th>
                         <th data-column="filename"><tmpl_var name="filename_txt"></th>
                         <th data-column="filesize"><tmpl_var name="filesize_txt"></th>
                         <th class="small-col text-right">{tmpl_var name='search_limit'}</th>
@@ -24,6 +33,9 @@
                         <tr>
                             <td>{tmpl_var name="date"}</td>
                             <td>{tmpl_var name="backup_type"}</td>
+                            <td>{tmpl_var name="backup_format"}</td>
+                            <td>{tmpl_var name="backup_job"}</td>
+                            <td>{tmpl_var name="backup_encrypted"}</td>
                             <td>{tmpl_var name="filename"}</td>
                             <td>{tmpl_var name="filesize"}</td>
                             <td class="text-center">
diff --git a/interface/web/sites/templates/web_vhost_domain_backup.htm b/interface/web/sites/templates/web_vhost_domain_backup.htm
index c31a579fc2..b28b830188 100644
--- a/interface/web/sites/templates/web_vhost_domain_backup.htm
+++ b/interface/web/sites/templates/web_vhost_domain_backup.htm
@@ -29,7 +29,53 @@
                 <label for="backup_excludes" class="col-sm-3 control-label">{tmpl_var name='backup_excludes_txt'}</label>
                 <div class="col-sm-6"><input type="text" name="backup_excludes" id="backup_excludes" value="{tmpl_var name='backup_excludes'}" class="form-control" /></div><div class="col-sm-3 input-sm">&nbsp;{tmpl_var name='backup_excludes_note_txt'}
             </div></div>
-        
+
+            <legend>{tmpl_var name='backup_compression_options_txt'}</legend>
+            <div class="tab-content">
+                {tmpl_var name='backup_format_web_note_txt'}
+            </div>
+            <tmpl_if name="missing_utils">
+                <div class="tab-content bg-warning text-warning">
+                    {tmpl_var name='backup_missing_utils_txt'} {tmpl_var name='missing_utils'}
+                </div>
+            </tmpl_if>
+            <div class="form-group">
+                <label for="backup_format_web" class="col-sm-3 control-label">{tmpl_var name='backup_format_web_txt'}</label>
+                <div class="col-sm-9">
+                    <select name="backup_format_web" id="backup_format_web" class="form-control">
+                        {tmpl_var name='backup_format_web'}
+                    </select>
+                </div>
+            </div>
+            <div class="form-group">
+                <label for="backup_format_db" class="col-sm-3 control-label">{tmpl_var name='backup_format_db_txt'}</label>
+                <div class="col-sm-9">
+                    <select name="backup_format_db" id="backup_format_db" class="form-control">
+                        {tmpl_var name='backup_format_db'}
+                    </select>
+                </div>
+            </div>
+
+            <legend>{tmpl_var name='backup_encryption_options_txt'}</legend>
+            <div class="tab-content">
+                {tmpl_var name='backup_encryption_note_txt'}
+            </div>
+            <div class="form-group">
+                <label class="col-sm-3 control-label">
+                    {tmpl_var name='backup_enable_encryption_txt'}
+                </label>
+                <div class="col-sm-9">
+                    {tmpl_var name="backup_encrypt"}
+                </div>
+            </div>
+            <div class="form-group">
+                <label for="backup_password" class="col-sm-3 control-label">
+                    {tmpl_var name='backup_password_txt'}
+                </label>
+                <div class="col-sm-9">
+                    <input type="text" name="backup_password" id="backup_password" value="{tmpl_var name='backup_password'}" class="form-control" />
+                </div>
+            </div>
 
         {tmpl_var name='backup_records'}
 
diff --git a/remoting_client/API-docs/sites_database_add.html b/remoting_client/API-docs/sites_database_add.html
index acf53e7bc0..143d034721 100644
--- a/remoting_client/API-docs/sites_database_add.html
+++ b/remoting_client/API-docs/sites_database_add.html
@@ -31,6 +31,8 @@
 <p class="margin"> remote_ips&nbsp;&nbsp;(<span class="paratype">text</span>)</p>
 <p class="margin"> backup_interval&nbsp;&nbsp;(<span class="paratype">varchar(255)</span>)</p>
 <p class="margin"> backup_copies&nbsp;&nbsp;(<span class="paratype">int(11)</span>)</p>
+<p class="margin"> backup_format_web&nbsp;&nbsp;(<span class="paratype">varchar(255)</span>)</p>
+<p class="margin"> backup_format_db&nbsp;&nbsp;(<span class="paratype">varchar(255)</span>)</p>
 <p class="margin"> active&nbsp;&nbsp;(<span class="paratype">enum('n','y')</span>)</p>
 <p class="headgrp">Output: </p> 
 <p class="margin"> Returns the ID of the newly added database.</p>
diff --git a/remoting_client/API-docs/sites_web_aliasdomain_add.html b/remoting_client/API-docs/sites_web_aliasdomain_add.html
index 12e313efcc..688b6cd139 100644
--- a/remoting_client/API-docs/sites_web_aliasdomain_add.html
+++ b/remoting_client/API-docs/sites_web_aliasdomain_add.html
@@ -59,6 +59,8 @@
 <p class="margin"> custom_php_ini&nbsp;&nbsp;(<span class="paratype">mediumtext</span>)</p>
 <p class="margin"> backup_interval&nbsp;&nbsp;(<span class="paratype">varchar(255)</span>)</p>
 <p class="margin"> backup_copies&nbsp;&nbsp;(<span class="paratype">int(11)</span>)</p>
+<p class="margin"> backup_format_web&nbsp;&nbsp;(<span class="paratype">varchar(255)</span>)</p>
+<p class="margin"> backup_format_db&nbsp;&nbsp;(<span class="paratype">varchar(255)</span>)</p>
 <p class="margin"> active&nbsp;&nbsp;(<span class="paratype">enum('n','y')</span>)</p>
 <p class="margin"> traffic_quota_lock&nbsp;&nbsp;(<span class="paratype">enum('n','y')</span>)</p>
 <p class="headgrp">Output: </p> 
diff --git a/remoting_client/API-docs/sites_web_aliasdomain_update.html b/remoting_client/API-docs/sites_web_aliasdomain_update.html
index 53daaa2b2b..52b118f58b 100644
--- a/remoting_client/API-docs/sites_web_aliasdomain_update.html
+++ b/remoting_client/API-docs/sites_web_aliasdomain_update.html
@@ -60,6 +60,8 @@
 <p class="margin"> custom_php_ini&nbsp;&nbsp;(<span class="paratype">mediumtext</span>)</p>
 <p class="margin"> backup_interval&nbsp;&nbsp;(<span class="paratype">varchar(255)</span>)</p>
 <p class="margin"> backup_copies&nbsp;&nbsp;(<span class="paratype">int(11)</span>)</p>
+<p class="margin"> backup_format_web&nbsp;&nbsp;(<span class="paratype">varchar(255)</span>)</p>
+<p class="margin"> backup_format_db&nbsp;&nbsp;(<span class="paratype">varchar(255)</span>)</p>
 <p class="margin"> active&nbsp;&nbsp;(<span class="paratype">enum('n','y')</span>)</p>
 <p class="margin"> traffic_quota_lock&nbsp;&nbsp;(<span class="paratype">enum('n','y')</span>)</p>
 <b>Output: </b> 
diff --git a/remoting_client/API-docs/sites_web_subdomain_add.html b/remoting_client/API-docs/sites_web_subdomain_add.html
index 3e884f4ec7..b2c5404a04 100644
--- a/remoting_client/API-docs/sites_web_subdomain_add.html
+++ b/remoting_client/API-docs/sites_web_subdomain_add.html
@@ -59,6 +59,8 @@
 <p class="margin"> custom_php_ini&nbsp;&nbsp;(<span class="paratype">mediumtext</span>)</p>
 <p class="margin"> backup_interval&nbsp;&nbsp;(<span class="paratype">varchar(255)</span>)</p>
 <p class="margin"> backup_copies&nbsp;&nbsp;(<span class="paratype">int(11)</span>)</p>
+<p class="margin"> backup_format_web&nbsp;&nbsp;(<span class="paratype">varchar(255)</span>)</p>
+<p class="margin"> backup_format_db&nbsp;&nbsp;(<span class="paratype">varchar(255)</span>)</p>
 <p class="margin"> active&nbsp;&nbsp;(<span class="paratype">enum('n','y')</span>)</p>
 <p class="margin"> traffic_quota_lock&nbsp;&nbsp;(<span class="paratype">enum('n','y')</span>)</p>
 <p class="headgrp">Output: </p> 
diff --git a/remoting_client/API-docs/sites_web_subdomain_update.html b/remoting_client/API-docs/sites_web_subdomain_update.html
index 4563912b59..a6b47245d6 100644
--- a/remoting_client/API-docs/sites_web_subdomain_update.html
+++ b/remoting_client/API-docs/sites_web_subdomain_update.html
@@ -59,6 +59,8 @@
 <p class="margin"> custom_php_ini&nbsp;&nbsp;(<span class="paratype">mediumtext</span>)</p>
 <p class="margin"> backup_interval&nbsp;&nbsp;(<span class="paratype">varchar(255)</span>)</p>
 <p class="margin"> backup_copies&nbsp;&nbsp;(<span class="paratype">int(11)</span>)</p>
+<p class="margin"> backup_format_web&nbsp;&nbsp;(<span class="paratype">varchar(255)</span>)</p>
+<p class="margin"> backup_format_db&nbsp;&nbsp;(<span class="paratype">varchar(255)</span>)</p>
 <p class="margin"> active&nbsp;&nbsp;(<span class="paratype">enum('n','y')</span>)</p>
 <p class="margin"> traffic_quota_lock&nbsp;&nbsp;(<span class="paratype">enum('n','y')</span>)</p>
 <b>Output: </b> 
diff --git a/remoting_client/examples/sites_database_add.php b/remoting_client/examples/sites_database_add.php
index c63ad551eb..9de1e6674b 100644
--- a/remoting_client/examples/sites_database_add.php
+++ b/remoting_client/examples/sites_database_add.php
@@ -28,6 +28,8 @@ try {
 		'remote_ips' => '',
 		'backup_interval' => 'none',
 		'backup_copies' => 1,
+		'backup_format_web' => 'default',
+		'backup_format_db' => 'gzip',
 		'active' => 'y'
 	);
 
diff --git a/remoting_client/examples/sites_web_aliasdomain_add.php b/remoting_client/examples/sites_web_aliasdomain_add.php
index c459e47b87..602b273dd1 100644
--- a/remoting_client/examples/sites_web_aliasdomain_add.php
+++ b/remoting_client/examples/sites_web_aliasdomain_add.php
@@ -57,6 +57,8 @@ try {
 		'custom_php_ini' => '',
 		'backup_interval' => '',
 		'backup_copies' => 1,
+		'backup_format_web' => 'default',
+		'backup_format_db' => 'gzip',
 		'active' => 'y',
 		'traffic_quota_lock' => 'n'
 	);
diff --git a/remoting_client/examples/sites_web_domain_add.php b/remoting_client/examples/sites_web_domain_add.php
index 1ddd21e136..0ee462ab7a 100644
--- a/remoting_client/examples/sites_web_domain_add.php
+++ b/remoting_client/examples/sites_web_domain_add.php
@@ -58,6 +58,8 @@ try {
 		'custom_php_ini' => '',
 		'backup_interval' => '',
 		'backup_copies' => 1,
+		'backup_format_web' => 'default',
+		'backup_format_db' => 'gzip',
 		'active' => 'y',
 		'traffic_quota_lock' => 'n',
 		'http_port' => '80',
diff --git a/remoting_client/examples/sites_web_subdomain_add.php b/remoting_client/examples/sites_web_subdomain_add.php
index ac319388f0..c5a92b4703 100644
--- a/remoting_client/examples/sites_web_subdomain_add.php
+++ b/remoting_client/examples/sites_web_subdomain_add.php
@@ -57,6 +57,8 @@ try {
 		'custom_php_ini' => '',
 		'backup_interval' => '',
 		'backup_copies' => 1,
+		'backup_format_web' => 'default',
+		'backup_format_db' => 'gzip',
 		'active' => 'y',
 		'traffic_quota_lock' => 'n'
 	);
diff --git a/server/backup-now.php b/server/backup-now.php
new file mode 100644
index 0000000000..aa73a84369
--- /dev/null
+++ b/server/backup-now.php
@@ -0,0 +1,108 @@
+<?php
+
+/*
+Copyright (c) 2007-2016, 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.
+*/
+
+define('SCRIPT_PATH', dirname($_SERVER["SCRIPT_FILENAME"]));
+require SCRIPT_PATH."/lib/config.inc.php";
+require SCRIPT_PATH."/lib/app.inc.php";
+
+set_time_limit(0);
+ini_set('error_reporting', E_ALL & ~E_NOTICE);
+
+/**
+ * Prints usage info
+ * @author Ramil Valitov <ramilvalitov@gmail.com>
+ */
+function printUsageInfo(){
+    echo <<<EOT
+Usage:
+	php backup-now.php --id=<4> [--type=<all>]
+Options:
+	--id		id of the website to backup.
+	--type		backup type: all, web or mysql. Default is all.
+
+EOT;
+}
+
+/**
+ * Makes a backup
+ * @param int $domain_id id of the domain
+ * @param string $type type: mysql, web or all
+ * @return bool true if success
+ * @uses backup::run_backup() to make backups
+ * @author Ramil Valitov <ramilvalitov@gmail.com>
+ */
+function makeBackup($domain_id, $type)
+{
+    global $app;
+
+    echo "Making backup of website id=" . $domain_id . ", type=" . $type . ", please wait...\n";
+
+    // Load required class
+    $app->load('backup');
+
+    switch ($type) {
+        case "all":
+            $success = backup::run_backup($domain_id, "web", "manual");
+            $success = $success && backup::run_backup($domain_id, "mysql", "manual");
+            break;
+        case "mysql":
+            $success = backup::run_backup($domain_id, "mysql", "manual");
+            break;
+        case "web":
+            $success = backup::run_backup($domain_id, "web", "manual");
+            break;
+        default:
+            echo "Unknown format=" . $type . "\n";
+            printUsageInfo();
+            $success = false;
+    }
+    return $success;
+}
+
+//** Get commandline options
+$cmd_opt = getopt('', array('id::', 'type::'));
+$id = filter_var($cmd_opt['id'], FILTER_VALIDATE_INT);;
+if (!isset($cmd_opt['id']) || !is_int($id)) {
+    printUsageInfo();
+    exit(1);
+}
+
+if (isset($cmd_opt['type']) && !empty($cmd_opt['type'])) {
+    $type = $cmd_opt['type'];
+} else
+    $type = "all";
+
+$success = makeBackup($id, $type);
+
+echo "All operations finished, status " . ($success ? "success" : "failed") . ".\n";
+
+exit($success ? 0 : 2);
+
+?>
diff --git a/server/lib/app.inc.php b/server/lib/app.inc.php
index 146f2465c0..ec8b1668d1 100644
--- a/server/lib/app.inc.php
+++ b/server/lib/app.inc.php
@@ -36,6 +36,10 @@ class app {
 	var $loaded_modules = array();
 	var $loaded_plugins = array();
 	var $_calling_script = '';
+	/**
+	 * @var db
+	 */
+	public $db;
 
 	function __construct() {
 
diff --git a/server/lib/classes/backup.inc.php b/server/lib/classes/backup.inc.php
new file mode 100644
index 0000000000..ea959a2f9c
--- /dev/null
+++ b/server/lib/classes/backup.inc.php
@@ -0,0 +1,1452 @@
+<?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.
+*/
+
+/**
+ * Class backup
+ * All code that makes actual backup and restore of web files and database is here.
+ * @author Ramil Valitov <ramilvalitov@gmail.com>
+ * @see backup::run_backup() to run a single backup
+ * @see backup::run_all_backups() to run all backups
+ * @see backup::restoreBackupDatabase() to restore a database
+ * @see backup::restoreBackupWebFiles() to restore web files
+ */
+class backup
+{
+    /**
+     * Returns file extension for specified backup format
+     * @param string $format backup format
+     * @return string|null
+     * @author Ramil Valitov <ramilvalitov@gmail.com>
+     */
+    protected static function getBackupDbExtension($format)
+    {
+        $prefix = '.sql';
+        switch ($format) {
+            case 'gzip':
+                return $prefix . '.gz';
+            case 'bzip2':
+                return $prefix . '.bz2';
+            case 'xz':
+                return $prefix . '.xz';
+            case 'zip':
+            case 'zip_bzip2':
+                return '.zip';
+            case 'rar':
+                return '.rar';
+        }
+        if (strpos($format, "7z_") === 0) {
+            return $prefix . '.7z';
+        }
+        return null;
+    }
+
+    /**
+     * Returns file extension for specified backup format
+     * @param string $format backup format
+     * @return string|null
+     * @author Ramil Valitov <ramilvalitov@gmail.com>
+     */
+    protected static function getBackupWebExtension($format)
+    {
+        switch ($format) {
+            case 'tar_gzip':
+                return '.tar.gz';
+            case 'tar_bzip2':
+                return '.tar.bz2';
+            case 'tar_xz':
+                return '.tar.xz';
+            case 'zip':
+            case 'zip_bzip2':
+                return '.zip';
+            case 'rar':
+                return '.rar';
+        }
+        if (strpos($format, "tar_7z_") === 0) {
+            return '.tar.7z';
+        }
+        return null;
+    }
+
+    /**
+     * Sets file ownership to $web_user for all files and folders except log, ssl and web/stats
+     * @param string $web_document_root
+     * @param string $web_user
+     * @author Ramil Valitov <ramilvalitov@gmail.com>
+     */
+    protected static function restoreFileOwnership($web_document_root, $web_user)
+    {
+        global $app;
+
+        $app->log('Restoring permissions for ' . $web_document_root, LOGLEVEL_DEBUG);
+        $app->system->exec_safe('cd ? && find . -not -path "./web/stats/*" -and -not -path "./log" -and -not -path "./log/*" -and -not -path "./ssl" -and -not -path "./ssl/*" -and -not -path "." -exec chown ?:? {} \;', $web_document_root, $web_user, $web_user);
+    }
+
+    /**
+     * Returns default backup format used in previous versions of ISPConfig
+     * @param string $backup_mode
+     * @param string $backup_type
+     * @return string
+     * @author Ramil Valitov <ramilvalitov@gmail.com>
+     */
+    protected static function getDefaultBackupFormat($backup_mode, $backup_type)
+    {
+        //We have a backup from old version of ISPConfig
+        switch ($backup_type) {
+            case 'mysql':
+                return 'gzip';
+            case 'web':
+                return ($backup_mode == 'userzip') ? 'zip' : 'tar_gzip';
+        }
+        return "";
+    }
+
+    /**
+     * Restores a database backup.
+     * The backup directory must be mounted before calling this method.
+     * @param string $backup_format
+     * @param string $password password for encrypted backup or empty string if archive is not encrypted
+     * @param string $backup_dir
+     * @param string $filename
+     * @param string $backup_mode
+     * @param string $backup_type
+     * @return bool true if succeeded
+     * @see backup_plugin::mount_backup_dir()
+     * @author Ramil Valitov <ramilvalitov@gmail.com>
+     */
+    public static function restoreBackupDatabase($backup_format, $password, $backup_dir, $filename, $backup_mode, $backup_type)
+    {
+        global $app;
+
+        //* Load sql dump into db
+        include 'lib/mysql_clientdb.conf';
+
+        if (empty($backup_format)) {
+            $backup_format = self::getDefaultBackupFormat($backup_mode, $backup_type);
+        }
+        $extension = self::getBackupDbExtension($backup_format);
+        if (!empty($extension)) {
+            //Replace dots for preg_match search
+            $extension = str_replace('.', '\.', $extension);
+        }
+        $success = false;
+        $full_filename = $backup_dir . '/' . $filename;
+
+        $app->log('Restoring MySQL backup ' . $full_filename . ', backup format "' . $backup_format . '", backup mode "' . $backup_mode . '"', LOGLEVEL_DEBUG);
+
+        if (file_exists($full_filename) && !empty($extension)) {
+            preg_match('@^(manual-)?db_(?P<db>.+)_\d{4}-\d{2}-\d{2}_\d{2}-\d{2}' . $extension . '$@', $filename, $matches);
+            if (!isset($matches['db']) || empty($matches['db'])) {
+                $app->log('Failed to detect database name during restore of ' . $full_filename, LOGLEVEL_ERROR);
+                return false;
+            }
+            $db_name = $matches['db'];
+            switch ($backup_format) {
+                case "gzip":
+                    $command = "gunzip --stdout ? | mysql -h ? -u ? -p? ?";
+                    break;
+                case "zip":
+                case "zip_bzip2":
+                    $command = "unzip -qq -p -P " . escapeshellarg($password) . " ? | mysql -h ? -u ? -p? ?";
+                    break;
+                case "bzip2":
+                    $command = "bunzip2 -q -c ? | mysql -h ? -u ? -p? ?";
+                    break;
+                case "xz":
+                    $command = "unxz -q -q -c ? | mysql -h ? -u ? -p? ?";
+                    break;
+                case "rar":
+                    //First, test that the archive is correct and we have a correct password
+                    $options = self::getUnrarOptions($password);
+                    $app->system->exec_safe("rar t " . $options . " ?", $full_filename);
+                    if ($app->system->last_exec_retcode() == 0) {
+                        $app->log('Archive test passed for ' . $full_filename, LOGLEVEL_DEBUG);
+                        $command = "rar x " . $options. " ? | mysql -h ? -u ? -p? ?";
+                    }
+                    break;
+            }
+            if (strpos($backup_format, "7z_") === 0) {
+                $options = self::get7zDecompressOptions($password);
+                //First, test that the archive is correct and we have a correct password
+                $app->system->exec_safe("7z t " . $options . " ?", $full_filename);
+                if ($app->system->last_exec_retcode() == 0) {
+                    $app->log('Archive test passed for ' . $full_filename, LOGLEVEL_DEBUG);
+                    $command = "7z x " . $options . " -so ? | mysql -h ? -u ? -p? ?";
+                } else
+                    $command = null;
+            }
+            if (!empty($command)) {
+                /** @var string $clientdb_host */
+                /** @var string $clientdb_user */
+                /** @var string $clientdb_password */
+                $app->system->exec_safe($command, $full_filename, $clientdb_host, $clientdb_user, $clientdb_password, $db_name);
+                $retval = $app->system->last_exec_retcode();
+                if ($retval == 0) {
+                    $app->log('Restored MySQL backup ' . $full_filename, LOGLEVEL_DEBUG);
+                    $success = true;
+                } else {
+                    $app->log('Failed to restore web backup ' . $full_filename . ', exit code ' . $retval, LOGLEVEL_ERROR);
+                }
+            } else {
+                $app->log('Archive test failed for ' . $full_filename, LOGLEVEL_DEBUG);
+            }
+        } else {
+            $app->log('Failed to process MySQL backup ' . $full_filename, LOGLEVEL_ERROR);
+        }
+        unset($clientdb_host);
+        unset($clientdb_user);
+        unset($clientdb_password);
+
+        return $success;
+    }
+
+    /**
+     * Restores web files backup.
+     * The backup directory must be mounted before calling this method.
+     * @param string $backup_format
+     * @param string $password password for encrypted backup or empty string if archive is not encrypted
+     * @param string $backup_dir
+     * @param string $filename
+     * @param string $backup_mode
+     * @param string $backup_type
+     * @param string $web_root
+     * @param string $web_user
+     * @param string $web_group
+     * @return bool true if succeed
+     * @see backup_plugin::mount_backup_dir()
+     * @author Ramil Valitov <ramilvalitov@gmail.com>
+     */
+    public static function restoreBackupWebFiles($backup_format, $password, $backup_dir, $filename, $backup_mode, $backup_type, $web_root, $web_user, $web_group)
+    {
+        global $app;
+
+        if (empty($backup_format)) {
+            $backup_format = self::getDefaultBackupFormat($backup_mode, $backup_type);
+        }
+        $full_filename = $backup_dir . '/' . $filename;
+        $result = false;
+
+        $app->log('Restoring web backup ' . $full_filename . ', backup format "' . $backup_format . '", backup mode "' . $backup_mode . '"', LOGLEVEL_DEBUG);
+
+        if (!empty($backup_format)) {
+            $app->system->web_folder_protection($web_root, false);
+            if ($backup_mode == 'userzip' || $backup_mode == 'rootgz') {
+                $user_mode = $backup_mode == 'userzip';
+                $filename = $user_mode ? ($web_root . '/backup/' . $filename) : $full_filename;
+
+                if (file_exists($full_filename) && $web_root != '' && $web_root != '/' && !stristr($full_filename, '..') && !stristr($full_filename, 'etc')) {
+                    if ($user_mode) {
+                        if (file_exists($filename)) rename($filename, $filename . '.bak');
+                        copy($full_filename, $filename);
+                        chgrp($filename, $web_group);
+                    }
+                    $user_prefix_cmd = $user_mode ? 'sudo -u ' . escapeshellarg($web_user) : '';
+                    $success = false;
+                    $retval = 0;
+                    switch ($backup_format) {
+                        case "tar_gzip":
+                        case "tar_bzip2":
+                        case "tar_xz":
+                            $command = $user_prefix_cmd . ' tar xf ? --directory ?';
+                            $app->system->exec_safe($command, $filename, $web_root);
+                            $retval = $app->system->last_exec_retcode();
+                            $success = ($retval == 0 || $retval == 2);
+                            break;
+                        case "zip":
+                        case "zip_bzip2":
+                            $command = $user_prefix_cmd . ' unzip -qq -P ' . escapeshellarg($password) . ' -o ? -d ? 2> /dev/null';
+                            $app->system->exec_safe($command, $filename, $web_root);
+                            $retval = $app->system->last_exec_retcode();
+                            /*
+                             * Exit code 50 can happen when zip fails to overwrite files that do not
+                             * belong to selected user, so we can consider this situation as success
+                             * with warnings.
+                             */
+                            $success = ($retval == 0 || $retval == 50);
+                            if ($success) {
+                                self::restoreFileOwnership($web_root, $web_user);
+                            }
+                            break;
+                        case 'rar':
+                            $options = self::getUnRarOptions($password);
+                            //First, test that the archive is correct and we have a correct password
+                            $command = $user_prefix_cmd . " rar t " . $options . " ? ?";
+                            //Rar requires trailing slash
+                            $app->system->exec_safe($command, $filename, $web_root . '/');
+                            $success = ($app->system->last_exec_retcode() == 0);
+                            if ($success) {
+                                //All good, now we can extract
+                                $app->log('Archive test passed for ' . $full_filename, LOGLEVEL_DEBUG);
+                                $command = $user_prefix_cmd . " rar x " . $options . " ? ?";
+                                //Rar requires trailing slash
+                                $app->system->exec_safe($command, $filename, $web_root . '/');
+                                $retval = $app->system->last_exec_retcode();
+                                //Exit code 9 can happen when we have file permission errors, in this case some
+                                //files will be skipped during extraction.
+                                $success = ($retval == 0 || $retval == 1 || $retval == 9);
+                            } else {
+                                $app->log('Archive test failed for ' . $full_filename, LOGLEVEL_DEBUG);
+                            }
+                            break;
+                    }
+                    if (strpos($backup_format, "tar_7z_") === 0) {
+                        $options = self::get7zDecompressOptions($password);
+                        //First, test that the archive is correct and we have a correct password
+                        $command = $user_prefix_cmd . " 7z t " . $options . " ?";
+                        $app->system->exec_safe($command, $filename);
+                        $success = ($app->system->last_exec_retcode() == 0);
+                        if ($success) {
+                            //All good, now we can extract
+                            $app->log('Archive test passed for ' . $full_filename, LOGLEVEL_DEBUG);
+                            $command = $user_prefix_cmd . " 7z x " . $options . " -so ? | tar xf - --directory ?";
+                            $app->system->exec_safe($command, $filename, $web_root);
+                            $retval = $app->system->last_exec_retcode();
+                            $success = ($retval == 0 || $retval == 2);
+                        } else {
+                            $app->log('Archive test failed for ' . $full_filename, LOGLEVEL_DEBUG);
+                        }
+                    }
+                    if ($user_mode) {
+                        unlink($filename);
+                        if (file_exists($filename . '.bak')) rename($filename . '.bak', $filename);
+                    }
+                    if ($success) {
+                        $app->log('Restored web backup ' . $full_filename, LOGLEVEL_DEBUG);
+                        $result = true;
+                    } else {
+                        $app->log('Failed to restore web backup ' . $full_filename . ', exit code ' . $retval, LOGLEVEL_ERROR);
+                    }
+                }
+            } else {
+                $app->log('Failed to restore web backup ' . $full_filename . ', backup mode "' . $backup_mode . '" not recognized.', LOGLEVEL_DEBUG);
+            }
+            $app->system->web_folder_protection($web_root, true);
+        } else {
+            $app->log('Failed to restore web backup ' . $full_filename . ', backup format not recognized.', LOGLEVEL_DEBUG);
+        }
+        return $result;
+    }
+
+    /**
+     * Returns a compression method, for example returns bzip2 for tar_7z_bzip2
+     * @param string $format
+     * @return false|string
+     * @author Ramil Valitov <ramilvalitov@gmail.com>
+     */
+    protected static function getCompressionMethod($format)
+    {
+        $pos = strrpos($format, "_");
+        return substr($format, $pos + 1);
+    }
+
+    /**
+     * Returns default options for compressing rar
+     * @param string $backup_tmp temporary directory that rar can use
+     * @param string|null $password backup password if any
+     * @return string options for rar
+     */
+    protected static function getRarOptions($backup_tmp, $password)
+    {
+        /**
+         * All rar options are listed here:
+         * https://documentation.help/WinRAR/HELPCommands.htm
+         * https://documentation.help/WinRAR/HELPSwitches.htm
+         * Some compression profiles and different versions of rar may use different default values, so it's better
+         * to specify everything explicitly.
+         * The difference between compression methods is not big in terms of file size, but is huge in terms of
+         * CPU and RAM consumption. Therefore it makes sense only to use fastest the compression method.
+         */
+        $options = array(
+            /**
+             * Start with fastest compression method (least compressive)
+             */
+            '-m1',
+
+            /**
+             * Disable solid archiving.
+             * Never use solid archive: it's very slow and requires to read and sort all files first
+             */
+            '-S-',
+
+            /**
+             * Ignore default profile and environment variables
+             * https://documentation.help/WinRAR/HELPSwCFGm.htm
+             */
+            '-CFG-',
+
+            /**
+             *  Disable error messages output
+             * https://documentation.help/WinRAR/HELPSwINUL.htm
+             */
+            '-inul',
+
+            /**
+             * Lock archive: this switch prevents any further archive modifications by rar
+             * https://documentation.help/WinRAR/HELPSwK.htm
+             */
+            '-k',
+
+            /**
+             * Create archive in RAR 5.0 format
+             * https://documentation.help/WinRAR/HELPSwMA.htm
+             */
+            '-ma',
+
+            /**
+             * Set dictionary size to 16Mb.
+             * When archiving, rar needs about 6x memory of specified dictionary size.
+             * https://documentation.help/WinRAR/HELPSwMD.htm
+             */
+            '-md16m',
+
+            /**
+             * Use only one CPU thread
+             * https://documentation.help/WinRAR/HELPSwMT.htm
+             */
+            '-mt1',
+
+            /**
+             * Use this switch when archiving to save file security information and when extracting to restore it.
+             * It stores file owner, group, file permissions and audit information.
+             * https://documentation.help/WinRAR/HELPSwOW.htm
+             */
+            '-ow',
+
+            /**
+             * Overwrite all
+             * https://documentation.help/WinRAR/HELPSwO.htm
+             */
+            '-o+',
+
+            /**
+             * Exclude base folder from names.
+             * Required for correct directory structure inside archive
+             * https://documentation.help/WinRAR/HELPSwEP1.htm
+             */
+            '-ep1',
+
+            /**
+             * Never add quick open information.
+             * This information is useful only if you want to read the contents of archive (list of files).
+             * Besides it can increase the archive size. As we need the archive only for future complete extraction,
+             * there's no need to use this information at all.
+             * https://documentation.help/WinRAR/HELPSwQO.htm
+             */
+            '-qo-',
+
+            /**
+             * Set lowest task priority (1) and 10ms sleep time between read/write operations.
+             * https://documentation.help/WinRAR/HELPSwRI.htm
+             */
+            '-ri1:10',
+
+            /**
+             * Temporary folder
+             * https://documentation.help/WinRAR/HELPSwW.htm
+             */
+            '-w' . escapeshellarg($backup_tmp),
+
+            /**
+             * Assume Yes on all queries
+             * https://documentation.help/WinRAR/HELPSwY.htm
+             */
+            '-y',
+        );
+
+        $options = implode(" ", $options);
+
+        if (!empty($password)) {
+            /**
+             * Encrypt both file data and headers
+             * https://documentation.help/WinRAR/HELPSwHP.htm
+             */
+            $options .= ' -HP' . escapeshellarg($password);
+        }
+        return $options;
+    }
+
+    /**
+     * Returns default options for decompressing rar
+     * @param string|null $password backup password if any
+     * @return string options for rar
+     */
+    protected static function getUnRarOptions($password)
+    {
+        /**
+         * All rar options are listed here:
+         * https://documentation.help/WinRAR/HELPCommands.htm
+         * https://documentation.help/WinRAR/HELPSwitches.htm
+         * Some compression profiles and different versions of rar may use different default values, so it's better
+         * to specify everything explicitly.
+         * The difference between compression methods is not big in terms of file size, but is huge in terms of
+         * CPU and RAM consumption. Therefore it makes sense only to use fastest the compression method.
+         */
+        $options = array(
+            /**
+             * Ignore default profile and environment variables
+             * https://documentation.help/WinRAR/HELPSwCFGm.htm
+             */
+            '-CFG-',
+
+            /**
+             *  Disable error messages output
+             * https://documentation.help/WinRAR/HELPSwINUL.htm
+             */
+            '-inul',
+
+            /**
+             * Use only one CPU thread
+             * https://documentation.help/WinRAR/HELPSwMT.htm
+             */
+            '-mt1',
+
+            /**
+             * Use this switch when archiving to save file security information and when extracting to restore it.
+             * It stores file owner, group, file permissions and audit information.
+             * https://documentation.help/WinRAR/HELPSwOW.htm
+             */
+            '-ow',
+
+            /**
+             * Overwrite all
+             * https://documentation.help/WinRAR/HELPSwO.htm
+             */
+            '-o+',
+
+            /**
+             * Set lowest task priority (1) and 10ms sleep time between read/write operations.
+             * https://documentation.help/WinRAR/HELPSwRI.htm
+             */
+            '-ri1:10',
+
+            /**
+             * Assume Yes on all queries
+             * https://documentation.help/WinRAR/HELPSwY.htm
+             */
+            '-y',
+        );
+
+        $options = implode(" ", $options);
+
+        if (!empty($password)) {
+            $options .= ' -P' . escapeshellarg($password);
+        }
+        return $options;
+    }
+
+    /**
+     * Returns compression options for 7z
+     * @param string $format compression format used in 7z
+     * @param string $password password if any
+     * @return string
+     */
+    protected static function get7zCompressOptions($format, $password)
+    {
+        $method = self::getCompressionMethod($format);
+        /**
+         * List of 7z options is here:
+         * https://linux.die.net/man/1/7z
+         * https://sevenzip.osdn.jp/chm/cmdline/syntax.htm
+         * https://sevenzip.osdn.jp/chm/cmdline/switches/
+         */
+        $options = array(
+            /**
+             * Use 7z format (container)
+             */
+            '-t7z',
+
+            /**
+             * Compression method (LZMA, LZMA2, etc.)
+             * https://sevenzip.osdn.jp/chm/cmdline/switches/method.htm
+             */
+            '-m0=' . $method,
+
+            /**
+             * Fastest compression method
+             */
+            '-mx=1',
+
+            /**
+             * Disable solid mode
+             */
+            '-ms=off',
+
+            /**
+             * Disable multithread mode, use less CPU
+             */
+            '-mmt=off',
+
+            /**
+             * Disable multithread mode for filters, use less CPU
+             */
+            '-mmtf=off',
+
+            /**
+             * Disable progress indicator
+             */
+            '-bd',
+
+            /**
+             * Assume yes on all queries
+             * https://sevenzip.osdn.jp/chm/cmdline/switches/yes.htm
+             */
+            '-y',
+        );
+        $options = implode(" ", $options);
+        switch (strtoupper($method)) {
+            case 'LZMA':
+            case 'LZMA2':
+                /**
+                 * Dictionary size is 5Mb.
+                 * 7z can use 12 times more RAM
+                 */
+                $options .= ' -md=5m';
+                break;
+            case 'PPMD':
+                /**
+                 * Dictionary size is 64Mb.
+                 * It's the maximum RAM that 7z is allowed to use.
+                 */
+                $options .= ' -mmem=64m';
+                break;
+        }
+        if (!empty($password)) {
+            $options .= ' -mhe=on -p' . escapeshellarg($password);
+        }
+        return $options;
+    }
+
+    /**
+     * Returns decompression options for 7z
+     * @param string $password password if any
+     * @return string
+     */
+    protected static function get7zDecompressOptions($password)
+    {
+        /**
+         * List of 7z options is here:
+         * https://linux.die.net/man/1/7z
+         * https://sevenzip.osdn.jp/chm/cmdline/syntax.htm
+         * https://sevenzip.osdn.jp/chm/cmdline/switches/
+         */
+        $options = array(
+            /**
+             * Disable multithread mode, use less CPU
+             */
+            '-mmt=off',
+
+            /**
+             * Disable progress indicator
+             */
+            '-bd',
+
+            /**
+             * Assume yes on all queries
+             * https://sevenzip.osdn.jp/chm/cmdline/switches/yes.htm
+             */
+            '-y',
+        );
+        $options = implode(" ", $options);
+        if (!empty($password)) {
+            $options .= ' -p' . escapeshellarg($password);
+        }
+        return $options;
+    }
+
+    /**
+     * Clears expired backups.
+     * The backup directory must be mounted before calling this method.
+     * @param integer $server_id
+     * @param integer $web_id id of the website
+     * @param integer $max_backup_copies number of backup copies to keep, all files beyond the limit will be erased
+     * @param string $backup_dir directory to scan
+     * @return bool
+     * @see backup_plugin::backups_garbage_collection() call this method first
+     * @see backup_plugin::mount_backup_dir()
+     * @author Ramil Valitov <ramilvalitov@gmail.com>
+     */
+    protected static function clearBackups($server_id, $web_id, $max_backup_copies, $backup_dir)
+    {
+        global $app;
+
+        $files = self::get_files($backup_dir);
+        usort($files, function ($a, $b) use ($backup_dir) {
+            $time_a = filemtime($backup_dir . '/' . $a);
+            $time_b = filemtime($backup_dir . '/' . $b);
+            return ($time_a > $time_b) ? -1 : 1;
+        });
+
+        $db_list = array($app->db);
+        if ($app->db->dbHost != $app->dbmaster->dbHost)
+            array_push($db_list, $app->dbmaster);
+
+        //Delete old files that are beyond the limit
+        for ($n = $max_backup_copies; $n < sizeof($files); $n++) {
+            $filename = $files[$n];
+            $full_filename = $backup_dir . '/' . $filename;
+            $app->log('Backup file ' . $full_filename . ' is beyond the limit of ' . $max_backup_copies . " copies and will be deleted from disk and database", LOGLEVEL_DEBUG);
+            $sql = "DELETE FROM web_backup WHERE server_id = ? AND parent_domain_id = ? AND filename = ?";
+            foreach ($db_list as $db) {
+                $db->query($sql, $server_id, $web_id, $filename);
+            }
+            @unlink($full_filename);
+        }
+        return true;
+    }
+
+    /**
+     * Garbage collection: deletes records from database about files that do not exist and deletes untracked files.
+     * The backup directory must be mounted before calling this method.
+     * @param int $server_id
+     * @param string|null $backup_type if defined then process only backups of this type
+     * @param string|null $domain_id if defined then process only backups that belong to this domain
+     * @author Ramil Valitov <ramilvalitov@gmail.com>
+     * @see backup_plugin::mount_backup_dir()
+     */
+    protected static function backups_garbage_collection($server_id, $backup_type = null, $domain_id = null)
+    {
+        global $app;
+
+        //First check that all records in database have related files and delete records without files on disk
+        $args = array();
+        $args_domains = array();
+        $server_config = $app->getconf->get_server_config($server_id, 'server');
+        $backup_dir = trim($server_config['backup_dir']);
+        $sql = "SELECT * FROM web_backup WHERE server_id = ?";
+        $sql_domains = "SELECT domain_id,system_user,system_group,backup_interval FROM web_domain WHERE server_id = ? AND (type = 'vhost' OR type = 'vhostsubdomain' OR type = 'vhostalias')";
+        array_push($args, $server_id);
+        array_push($args_domains, $server_id);
+        if (!empty($backup_type)) {
+            $sql .= " AND backup_type = ?";
+            array_push($args, $backup_type);
+        }
+        if (!empty($domain_id)) {
+            $sql .= " AND parent_domain_id = ?";
+            $sql_domains .= " AND domain_id = ?";
+            array_push($args, $domain_id);
+            array_push($args_domains, $domain_id);
+        }
+        array_unshift($args, $sql);
+        array_unshift($args_domains, $sql_domains);
+
+        $db_list = array($app->db);
+        if ($app->db->dbHost != $app->dbmaster->dbHost)
+            array_push($db_list, $app->dbmaster);
+
+        foreach ($db_list as $db) {
+            $backups = call_user_func_array(array($db, "queryAllRecords"), $args);
+            foreach ($backups as $backup) {
+                $backup_file = $backup_dir . '/web' . $backup['parent_domain_id'] . '/' . $backup['filename'];
+                if (!is_file($backup_file)) {
+                    $app->log('Backup file ' . $backup_file . ' does not exist on disk, deleting this entry from database', LOGLEVEL_DEBUG);
+                    $sql = "DELETE FROM web_backup WHERE backup_id = ?";
+                    $db->query($sql, $backup['backup_id']);
+                }
+            }
+        }
+
+        foreach ($db_list as $db) {
+            $domains = call_user_func_array(array($db, "queryAllRecords"), $args_domains);
+            foreach ($domains as $rec) {
+                $domain_id = $rec['domain_id'];
+                $domain_backup_dir = $backup_dir . '/web' . $domain_id;
+                $files = self::get_files($domain_backup_dir);
+
+                //Delete files that are in backup directory, but do not exist in database
+                if (!empty($files)) {
+                    $sql = "SELECT backup_id,filename FROM web_backup WHERE server_id = ? AND parent_domain_id = ?";
+                    $backups = $db->queryAllRecords($sql, $server_id, $domain_id);
+                    foreach ($backups as $backup) {
+                        if (!in_array($backup['filename'],$files)) {
+                            $backup_file = $backup_dir . '/web' . $domain_id . '/' . $backup['filename'];
+                            $app->log('Backup file ' . $backup_file . ' is not contained in database, deleting this file from disk', LOGLEVEL_DEBUG);
+                            @unlink($backup_file);
+                        }
+                    }
+                }
+
+                //Remove backupdir symlink and create as directory instead
+                $web_path = $rec['document_root'];
+                $app->system->web_folder_protection($web_path, false);
+
+                $backup_download_dir = $web_path . '/backup';
+                if (is_link($backup_download_dir)) {
+                    unlink($backup_download_dir);
+                }
+                if (!is_dir($backup_download_dir)) {
+                    mkdir($backup_download_dir);
+                    chown($backup_download_dir, $rec['system_user']);
+                    chgrp($backup_download_dir, $rec['system_group']);
+                }
+
+                $app->system->web_folder_protection($web_path, true);
+
+                // delete old files from backup download dir (/var/www/example.com/backup)
+                if (is_dir($backup_download_dir)) {
+                    $dir_handle = dir($backup_download_dir);
+                    $now = time();
+                    while (false !== ($entry = $dir_handle->read())) {
+                        $full_filename = $backup_download_dir . '/' . $entry;
+                        if ($entry != '.' && $entry != '..' && is_file($full_filename)) {
+                            // delete files older than 3 days
+                            if ($now - filemtime($full_filename) >= 60 * 60 * 24 * 3) {
+                                $app->log('Backup file ' . $full_filename . ' is too old, deleting this file from disk', LOGLEVEL_DEBUG);
+                                @unlink($full_filename);
+                            }
+                        }
+                    }
+                    $dir_handle->close();
+                }
+            }
+        }
+    }
+
+    /**
+     * Gets list of files in directory
+     * @param string $directory
+     * @param string[]|null $prefix_list filter files that have one of the prefixes. Use null for default filtering.
+     * @param string[]|null $endings_list filter files that have one of the endings. Use null for default filtering.
+     * @return string[]
+     * @author Ramil Valitov <ramilvalitov@gmail.com>
+     */
+    protected static function get_files($directory, $prefix_list = null, $endings_list = null)
+    {
+        $default_prefix_list = array(
+            'web',
+            'manual-web',
+            'db_',
+            'manual-db_',
+        );
+        $default_endings_list = array(
+            '.gz',
+            '.7z',
+            '.rar',
+            '.zip',
+            '.xz',
+            '.bz2',
+        );
+        if (is_null($prefix_list))
+            $prefix_list = $default_prefix_list;
+        if (is_null($endings_list))
+            $endings_list = $default_endings_list;
+
+        $dir_handle = dir($directory);
+        $files = array();
+        while (false !== ($entry = $dir_handle->read())) {
+            $full_filename = $directory . '/' . $entry;
+            if ($entry != '.' && $entry != '..' && is_file($full_filename)) {
+                if (!empty($prefix_list)) {
+                    $add = false;
+                    foreach ($prefix_list as $prefix) {
+                        if (substr($entry, 0, strlen($prefix)) == $prefix) {
+                            $add = true;
+                            break;
+                        }
+                    }
+                } else
+                    $add = true;
+                if ($add && !empty($endings_list)) {
+                    $add = false;
+                    foreach ($endings_list as $ending) {
+                        if (substr($entry, -strlen($ending)) == $ending) {
+                            $add = true;
+                            break;
+                        }
+                    }
+                }
+                if ($add)
+                    array_push($files, $entry);
+            }
+        }
+        $dir_handle->close();
+
+        return $files;
+    }
+
+    /**
+     * Generates excludes list for compressors
+     * @param string[] $backup_excludes
+     * @param string $arg
+     * @return string
+     * @author Ramil Valitov <ramilvalitov@gmail.com>
+     */
+    protected static function generateExcludeList($backup_excludes, $arg)
+    {
+        $excludes = implode(" " . $arg, $backup_excludes);
+        if (!empty($excludes)) {
+            $excludes = $arg . $excludes;
+        }
+        return $excludes;
+    }
+
+    /**
+     * Runs a web compression routine
+     * @param string $format
+     * @param string[] $backup_excludes
+     * @param string $backup_mode
+     * @param string $web_path
+     * @param string $web_backup_dir
+     * @param string $web_backup_file
+     * @param string $web_user
+     * @param string $web_group
+     * @param string $http_server_user
+     * @param string $backup_tmp
+     * @param string|null $password
+     * @return bool true if success
+     * @author Ramil Valitov <ramilvalitov@gmail.com>
+     */
+    protected static function runWebCompression($format, $backup_excludes, $backup_mode, $web_path, $web_backup_dir, $web_backup_file, $web_user, $web_group, $http_server_user, $backup_tmp, $password)
+    {
+        global $app;
+
+        $find_user_files = 'cd ? && sudo -u ? find . -group ? -or -user ? -print 2> /dev/null';
+        $excludes = self::generateExcludeList($backup_excludes, '--exclude=');
+        $tar_dir = 'tar pcf - ' . $excludes . ' --directory ? .';
+        $tar_input = 'tar pcf --null -T -';
+
+        $app->log('Performing web files backup of ' . $web_path . ' in format ' . $format . ', mode ' . $backup_mode, LOGLEVEL_DEBUG);
+        switch ($format) {
+            case 'tar_gzip':
+                if ($app->system->is_installed('pigz')) {
+                    //use pigz
+                    if ($backup_mode == 'user_zip') {
+                        $app->system->exec_safe($find_user_files . ' | ' . $tar_input . ' | pigz > ?', $web_path, $web_user, $web_group, $http_server_user, $web_path, $web_backup_dir . '/' . $web_backup_file);
+                    } else {
+                        //Standard casual behaviour of ISPConfig
+                        $app->system->exec_safe($tar_dir . ' | pigz > ?', $web_path, $web_backup_dir . '/' . $web_backup_file);
+                    }
+                    $exit_code = $app->system->last_exec_retcode();
+                    return $exit_code == 0;
+                } else {
+                    //use gzip
+                    if ($backup_mode == 'user_zip') {
+                        $app->system->exec_safe($find_user_files . ' | tar pczf ? --null -T -', $web_path, $web_user, $web_group, $http_server_user, $web_backup_dir . '/' . $web_backup_file);
+                    } else {
+                        //Standard casual behaviour of ISPConfig
+                        $app->system->exec_safe('tar pczf ? ' . $excludes . ' --directory ? .', $web_backup_dir . '/' . $web_backup_file, $web_path);
+                    }
+                    $exit_code = $app->system->last_exec_retcode();
+                    // tar can return 1 and still create valid backups
+                    return ($exit_code == 0 || $exit_code == 1);
+                }
+            case 'zip':
+            case 'zip_bzip2':
+                $zip_options = ($format === 'zip_bzip2') ? ' -Z bzip2 ' : '';
+                if (!empty($password)) {
+                    $zip_options .= ' --password ' . escapeshellarg($password);
+                }
+                if ($backup_mode == 'user_zip') {
+                    //Standard casual behaviour of ISPConfig
+                    $app->system->exec_safe($find_user_files . ' | zip ' . $zip_options . ' -b ? ' . $excludes . ' --symlinks ? -@', $web_path, $web_user, $web_group, $http_server_user, $backup_tmp, $web_backup_dir . '/' . $web_backup_file);
+                } else {
+                    //Use cd to have a correct directory structure inside the archive, extra options to zip hidden (dot) files
+                    $app->system->exec_safe('cd ? && zip ' . $zip_options . ' -b ? ' . $excludes . ' --symlinks -r ? * .* -x "../*"', $web_path, $backup_tmp, $web_backup_dir . '/' . $web_backup_file);
+                }
+                $exit_code = $app->system->last_exec_retcode();
+                // zip can return 12(due to harmless warnings) and still create valid backups
+                return ($exit_code == 0 || $exit_code == 12);
+            case 'tar_bzip2':
+                if ($backup_mode == 'user_zip') {
+                    $app->system->exec_safe($find_user_files . ' | tar pcjf ? --null -T -', $web_path, $web_user, $web_group, $http_server_user, $web_backup_dir . '/' . $web_backup_file);
+                } else {
+                    $app->system->exec_safe('tar pcjf ? ' . $excludes . ' --directory ? .', $web_backup_dir . '/' . $web_backup_file, $web_path);
+                }
+                $exit_code = $app->system->last_exec_retcode();
+                // tar can return 1 and still create valid backups
+                return ($exit_code == 0 || $exit_code == 1);
+            case 'tar_xz':
+                if ($backup_mode == 'user_zip') {
+                    $app->system->exec_safe($find_user_files . ' | tar pcJf ? --null -T -', $web_path, $web_user, $web_group, $http_server_user, $web_backup_dir . '/' . $web_backup_file);
+                } else {
+                    $app->system->exec_safe('tar pcJf ? ' . $excludes . ' --directory ? .', $web_backup_dir . '/' . $web_backup_file, $web_path);
+                }
+                $exit_code = $app->system->last_exec_retcode();
+                // tar can return 1 and still create valid backups
+                return ($exit_code == 0 || $exit_code == 1);
+            case 'rar':
+                $options = self::getRarOptions($backup_tmp,$password);
+                if ($backup_mode != 'user_zip') {
+                    //Recurse subfolders, otherwise we will pass a list of files to compress
+                    $options .= ' -r';
+                }
+                $excludes = self::generateExcludeList($backup_excludes, '-x');
+                $zip_command = 'rar a ' . $options . ' '.$excludes.' ?';
+                if ($backup_mode == 'user_zip') {
+                    $app->system->exec_safe($find_user_files . ' | ' . $zip_command . ' ? @', $web_path, $web_user, $web_group, $http_server_user, $web_path, $web_backup_dir . '/' . $web_backup_file);
+                } else {
+                    $app->system->exec_safe('cd ? && ' . $zip_command . ' .', $web_path, $web_backup_dir . '/' . $web_backup_file);
+                }
+                $exit_code = $app->system->last_exec_retcode();
+                return ($exit_code == 0 || $exit_code == 1);
+        }
+        if (strpos($format, "tar_7z_") === 0) {
+            $options = self::get7zCompressOptions($format, $password);
+            $zip_command = '7z a ' . $options . ' -si ?';
+            if ($backup_mode == 'user_zip') {
+                $app->system->exec_safe($find_user_files . ' | ' . $tar_input . ' | '. $zip_command, $web_path, $web_user, $web_group, $http_server_user, $web_path, $web_backup_dir . '/' . $web_backup_file);
+            } else {
+                $app->system->exec_safe($tar_dir . ' | ' . $zip_command, $web_path, $web_backup_dir . '/' . $web_backup_file);
+            }
+            $exit_code = $app->system->last_exec_retcode();
+            return $exit_code == 0;
+        }
+        return false;
+    }
+
+    /**
+     * Runs a database compression routine
+     * @param string $format
+     * @param string $db_backup_dir
+     * @param string $db_backup_file
+     * @param string $compressed_backup_file
+     * @param string $backup_tmp
+     * @param string|null $password
+     * @return bool true if success
+     * @author Ramil Valitov <ramilvalitov@gmail.com>
+     */
+    protected static function runDatabaseCompression($format, $db_backup_dir, $db_backup_file, $compressed_backup_file, $backup_tmp, $password)
+    {
+        global $app;
+
+        $app->log('Performing database backup to file ' . $compressed_backup_file . ' in format ' . $format, LOGLEVEL_DEBUG);
+        switch ($format) {
+            case 'gzip':
+                if ($app->system->is_installed('pigz')) {
+                    //use pigz
+                    $zip_cmd = 'pigz';
+                } else {
+                    //use gzip
+                    $zip_cmd = 'gzip';
+                }
+                $app->system->exec_safe($zip_cmd . " -c ? > ?", $db_backup_dir . '/' . $db_backup_file, $db_backup_dir . '/' . $compressed_backup_file);
+                $exit_code = $app->system->last_exec_retcode();
+                return $exit_code == 0;
+            case 'zip':
+            case 'zip_bzip2':
+                $zip_options = ($format === 'zip_bzip2') ? ' -Z bzip2 ' : '';
+                if (!empty($password)) {
+                    $zip_options .= ' --password ' . escapeshellarg($password);
+                }
+                $app->system->exec_safe('zip ' . $zip_options . ' -j -b ? ? ?', $backup_tmp, $db_backup_dir . '/' . $compressed_backup_file, $db_backup_dir . '/' . $db_backup_file);
+                $exit_code = $app->system->last_exec_retcode();
+                // zip can return 12(due to harmless warnings) and still create valid backups
+                return ($exit_code == 0 || $exit_code == 12);
+            case 'bzip2':
+                $app->system->exec_safe("bzip2 -q -c ? > ?", $db_backup_dir . '/' . $db_backup_file, $db_backup_dir . '/' . $compressed_backup_file);
+                $exit_code = $app->system->last_exec_retcode();
+                return $exit_code == 0;
+            case 'xz':
+                $app->system->exec_safe("xz -q -q -c ? > ?", $db_backup_dir . '/' . $db_backup_file, $db_backup_dir . '/' . $compressed_backup_file);
+                $exit_code = $app->system->last_exec_retcode();
+                return $exit_code == 0;
+            case 'rar':
+                $options = self::getRarOptions($backup_tmp, $password);
+                $zip_command = 'rar a ' . $options . ' ? ?';
+                $app->system->exec_safe($zip_command, $db_backup_dir . '/' . $compressed_backup_file, $db_backup_dir . '/' . $db_backup_file);
+                $exit_code = $app->system->last_exec_retcode();
+                return ($exit_code == 0 || $exit_code == 1);
+        }
+        if (strpos($format, "7z_") === 0) {
+            $options = self::get7zCompressOptions($format, $password);
+            $zip_command = '7z a ' . $options . ' ? ?';
+            $app->system->exec_safe($zip_command, $db_backup_dir . '/' . $compressed_backup_file, $db_backup_dir . '/' . $db_backup_file);
+            $exit_code = $app->system->last_exec_retcode();
+            return $exit_code == 0;
+        }
+        return false;
+    }
+
+    /**
+     * Mounts the backup directory if required
+     * @param int $server_id
+     * @return bool true if success
+     * @author Ramil Valitov <ramilvalitov@gmail.com>
+     * @see backup_plugin::unmount_backup_dir()
+     */
+    public static function mount_backup_dir($server_id)
+    {
+        global $app;
+
+        $server_config = $app->getconf->get_server_config($server_id, 'server');
+        if ($server_config['backup_dir_is_mount'] == 'y')
+            return $app->system->mount_backup_dir($server_config['backup_dir']);
+        return true;
+    }
+
+    /**
+     * Unmounts the backup directory if required
+     * @param int $server_id
+     * @return bool true if success
+     * @author Ramil Valitov <ramilvalitov@gmail.com>
+     * @see backup_plugin::mount_backup_dir()
+     */
+    public static function unmount_backup_dir($server_id)
+    {
+        global $app;
+
+        $server_config = $app->getconf->get_server_config($server_id, 'server');
+        if ($server_config['backup_dir_is_mount'] == 'y')
+            return $app->system->umount_backup_dir($server_config['backup_dir']);
+        return true;
+    }
+
+    /**
+     * Makes backup of database.
+     * The backup directory must be mounted before calling this method.
+     * This method is for private use only, don't call this method unless you know what you're doing.
+     * @param array $web_domain
+     * @param string $backup_job type of backup job: manual or auto
+     * @return bool true if success
+     * @author Ramil Valitov <ramilvalitov@gmail.com>
+     * @see backup_plugin::run_backup() recommeneded to use if you need to make backups
+     */
+    protected static function make_database_backup($web_domain, $backup_job)
+    {
+        global $app;
+
+        $server_id = intval($web_domain['server_id']);
+        $domain_id = intval($web_domain['domain_id']);
+        $server_config = $app->getconf->get_server_config($server_id, 'server');
+        $backup_dir = trim($server_config['backup_dir']);
+        $backup_tmp = trim($server_config['backup_tmp']);
+        $db_backup_dir = $backup_dir . '/web' . $domain_id;
+        $success = false;
+
+        if (empty($backup_job))
+            $backup_job = "auto";
+
+        $records = $app->db->queryAllRecords("SELECT * FROM web_database WHERE server_id = ? AND parent_domain_id = ?", $server_id, $domain_id);
+        if (empty($records)){
+            $app->log('Skipping database backup for domain ' . $web_domain['domain_id'] . ', because no related databases found.', LOGLEVEL_ERROR);
+            return true;
+        }
+
+        self::prepare_backup_dir($server_id, $web_domain);
+
+        include '/usr/local/ispconfig/server/lib/mysql_clientdb.conf';
+
+        //* Check mysqldump capabilities
+        exec('mysqldump --help', $tmp);
+        $mysqldump_routines = (strpos(implode($tmp), '--routines') !== false) ? '--routines' : '';
+        unset($tmp);
+
+        foreach ($records as $rec) {
+            $password = ($web_domain['backup_encrypt'] == 'y') ? trim($web_domain['backup_password']) : '';
+            $backup_format_db = $web_domain['backup_format_db'];
+            if (empty($backup_format_db)) {
+                $backup_format_db = 'gzip';
+            }
+            $backup_extension_db = self::getBackupDbExtension($backup_format_db);
+
+            if (!empty($backup_extension_db)) {
+                //* Do the mysql database backup with mysqldump
+                $db_name = $rec['database_name'];
+                $db_file_prefix = 'db_' . $db_name . '_' . date('Y-m-d_H-i');
+                $db_backup_file = $db_file_prefix . '.sql';
+                $db_compressed_file = ($backup_job == 'manual' ? 'manual-' : '') . $db_file_prefix . $backup_extension_db;
+                $command = "mysqldump -h ? -u ? -p? -c --add-drop-table --create-options --quick --max_allowed_packet=512M " . $mysqldump_routines . " --result-file=? ?";
+                /** @var string $clientdb_host */
+                /** @var string $clientdb_user */
+                /** @var string $clientdb_password */
+                $app->system->exec_safe($command, $clientdb_host, $clientdb_user, $clientdb_password, $db_backup_dir . '/' . $db_backup_file, $db_name);
+                $exit_code = $app->system->last_exec_retcode();
+
+                //* Compress the backup
+                if ($exit_code == 0) {
+                    $exit_code = self::runDatabaseCompression($backup_format_db, $db_backup_dir, $db_backup_file, $db_compressed_file, $backup_tmp, $password) ? 0 : 1;
+                    if ($exit_code !== 0)
+                        $app->log('Failed to make backup of database ' . $rec['database_name'], LOGLEVEL_ERROR);
+                } else {
+                    $app->log('Failed to make backup of database ' . $rec['database_name'] . ', because mysqldump failed', LOGLEVEL_ERROR);
+                }
+
+                if ($exit_code == 0) {
+                    if (is_file($db_backup_dir . '/' . $db_compressed_file)) {
+                        chmod($db_backup_dir . '/' . $db_compressed_file, 0750);
+                        chown($db_backup_dir . '/' . $db_compressed_file, fileowner($db_backup_dir));
+                        chgrp($db_backup_dir . '/' . $db_compressed_file, filegroup($db_backup_dir));
+
+                        //* Insert web backup record in database
+                        $file_size = filesize($db_backup_dir . '/' . $db_compressed_file);
+                        $sql = "INSERT INTO web_backup (server_id, parent_domain_id, backup_type, backup_mode, backup_format, tstamp, filename, filesize, backup_password) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
+                        //Making compatible with previous versions of ISPConfig:
+                        $sql_mode = ($backup_format_db == 'gzip') ? 'sqlgz' : ('sql' . $backup_format_db);
+                        $app->db->query($sql, $server_id, $domain_id, 'mysql', $sql_mode, $backup_format_db, time(), $db_compressed_file, $file_size, $password);
+                        if ($app->db->dbHost != $app->dbmaster->dbHost)
+                            $app->dbmaster->query($sql, $server_id, $domain_id, 'mysql', $sql_mode, $backup_format_db, time(), $db_compressed_file, $file_size, $password);
+                        $success = true;
+                    }
+                } else {
+                    if (is_file($db_backup_dir . '/' . $db_compressed_file)) unlink($db_backup_dir . '/' . $db_compressed_file);
+                }
+                //* Remove the uncompressed file
+                if (is_file($db_backup_dir . '/' . $db_backup_file)) unlink($db_backup_dir . '/' . $db_backup_file);
+
+                //* Remove old backups
+                self::backups_garbage_collection($server_id, 'mysql', $domain_id);
+                self::clearBackups($server_id, $domain_id, intval($rec['backup_copies']), $db_backup_dir);
+            } else {
+                $app->log('Failed to process mysql backup format ' . $backup_format_db . ' for database ' . $rec['database_name'], LOGLEVEL_ERROR);
+            }
+        }
+
+        unset($clientdb_host);
+        unset($clientdb_user);
+        unset($clientdb_password);
+
+        return $success;
+    }
+
+    /**
+     * Makes backup of web files.
+     * The backup directory must be mounted before calling this method.
+     * This method is for private use only, don't call this method unless you know what you're doing
+     * @param array $web_domain info about domain to backup, SQL record of table 'web_domain'
+     * @param string $backup_job type of backup job: manual or auto
+     * @return bool true if success
+     * @author Ramil Valitov <ramilvalitov@gmail.com>
+     * @see backup_plugin::mount_backup_dir()
+     * @see backup_plugin::run_backup() recommeneded to use if you need to make backups
+     */
+    protected static function make_web_backup($web_domain, $backup_job)
+    {
+        global $app;
+
+        $server_id = intval($web_domain['server_id']);
+        $domain_id = intval($web_domain['domain_id']);
+        $server_config = $app->getconf->get_server_config($server_id, 'server');
+        $global_config = $app->getconf->get_global_config('sites');
+        $backup_dir = trim($server_config['backup_dir']);
+        $backup_mode = $server_config['backup_mode'];
+        $backup_tmp = trim($server_config['backup_tmp']);
+        if (empty($backup_mode))
+            $backup_mode = 'userzip';
+
+        $web_config = $app->getconf->get_server_config($server_id, 'web');
+        $http_server_user = $web_config['user'];
+
+        if (empty($backup_dir)) {
+            $app->log('Failed to make backup of web files for domain id ' . $domain_id . ' on server id ' . $server_id . ', because backup directory is not defined', LOGLEVEL_ERROR);
+            return false;
+        }
+        if (empty($backup_job))
+            $backup_job = "auto";
+
+        $backup_format_web = $web_domain['backup_format_web'];
+        //Check if we're working with data saved in old version of ISPConfig
+        if (empty($backup_format_web)) {
+            $backup_format_web = 'default';
+        }
+        if ($backup_format_web == 'default') {
+            if ($backup_mode == 'userzip')
+                $backup_format_web = 'zip';
+            else
+                $backup_format_web = 'gzip';
+        }
+        $password = ($web_domain['backup_encrypt'] == 'y') ? trim($web_domain['backup_password']) : '';
+        $backup_extension_web = self::getBackupWebExtension($backup_format_web);
+        if (empty($backup_extension_web)) {
+            $app->log('Failed to make backup of web files, because of unknown backup format ' . $backup_format_web . ' for website ' . $web_domain['domain'], LOGLEVEL_ERROR);
+            return false;
+        }
+
+        $web_path = $web_domain['document_root'];
+        $web_user = $web_domain['system_user'];
+        $web_group = $web_domain['system_group'];
+        $web_id = $web_domain['domain_id'];
+
+        self::prepare_backup_dir($server_id, $web_domain);
+        $web_backup_dir = $backup_dir . '/web' . $web_id;
+
+        $backup_excludes = array(escapeshellarg('./backup\*'));
+        $b_excludes = explode(',', trim($web_domain['backup_excludes']));
+        if (is_array($b_excludes) && !empty($b_excludes)) {
+            foreach ($b_excludes as $b_exclude) {
+                $b_exclude = trim($b_exclude);
+                if ($b_exclude != '') {
+                    array_push($backup_excludes, escapeshellarg($b_exclude));
+                }
+            }
+        }
+
+        $web_backup_file = ($backup_job == 'manual' ? 'manual-' : '') . 'web' . $web_id . '_' . date('Y-m-d_H-i') . $backup_extension_web;
+        $full_filename = $web_backup_dir . '/' . $web_backup_file;
+        if (self::runWebCompression($backup_format_web, $backup_excludes, $backup_mode, $web_path, $web_backup_dir, $web_backup_file, $web_user, $web_group, $http_server_user, $backup_tmp, $password)) {
+            if (is_file($full_filename)) {
+                $backup_username = ($global_config['backups_include_into_web_quota'] == 'y') ? $web_user : 'root';
+                $backup_group = ($global_config['backups_include_into_web_quota'] == 'y') ? $web_group : 'root';
+                chown($full_filename, $backup_username);
+                chgrp($full_filename, $backup_group);
+                chmod($full_filename, 0750);
+
+                //Insert web backup record in database
+                $file_size = filesize($full_filename);
+                $sql = "INSERT INTO web_backup (server_id, parent_domain_id, backup_type, backup_mode, backup_format, tstamp, filename, filesize, backup_password) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
+                $app->db->query($sql, $server_id, $web_id, 'web', $backup_mode, $backup_format_web, time(), $web_backup_file, $file_size, $password);
+                if ($app->db->dbHost != $app->dbmaster->dbHost)
+                    $app->dbmaster->query($sql, $server_id, $web_id, 'web', $backup_mode, $backup_format_web, time(), $web_backup_file, $file_size, $password);
+                unset($file_size);
+                $app->log('Backup of web files for domain ' . $web_domain['domain'] . ' completed successfully to file ' . $full_filename, LOGLEVEL_DEBUG);
+            } else {
+                $app->log('Backup of web files for domain ' . $web_domain['domain'] . ' reported success, but the resulting file ' . $full_filename . ' not found.', LOGLEVEL_ERROR);
+            }
+
+        } else {
+            if (is_file($full_filename))
+                unlink($full_filename);
+            $app->log('Backup of web files for domain ' . $web_domain['domain'] . ' failed using path ' . $web_path . ' failed.', LOGLEVEL_ERROR);
+        }
+
+        self::clearBackups($server_id, $web_id, intval($web_domain['backup_copies']), $web_backup_dir);
+        return true;
+    }
+
+    /**
+     * Creates and prepares a backup dir
+     * @param int $server_id
+     * @param array $domain_data
+     * @author Ramil Valitov <ramilvalitov@gmail.com>
+     */
+    protected static function prepare_backup_dir($server_id, $domain_data)
+    {
+        global $app;
+
+        $server_config = $app->getconf->get_server_config($server_id, 'server');
+        $global_config = $app->getconf->get_global_config('sites');
+
+        if (isset($server_config['backup_dir_ftpread']) && $server_config['backup_dir_ftpread'] == 'y') {
+            $backup_dir_permissions = 0755;
+        } else {
+            $backup_dir_permissions = 0750;
+        }
+
+        $backup_dir = $server_config['backup_dir'];
+
+        if (!is_dir($backup_dir)) {
+            mkdir($backup_dir, $backup_dir_permissions, true);
+        } else {
+            chmod($backup_dir, $backup_dir_permissions);
+        }
+
+        $web_backup_dir = $backup_dir . '/web' . $domain_data['domain_id'];
+        if (!is_dir($web_backup_dir))
+            mkdir($web_backup_dir, 0750);
+        chmod($web_backup_dir, 0750);
+
+        $backup_username = 'root';
+        $backup_group = 'root';
+
+        if ($global_config['backups_include_into_web_quota'] == 'y') {
+            $backup_username = $domain_data['system_user'];
+            $backup_group = $domain_data['system_group'];
+        }
+        chown($web_backup_dir, $backup_username);
+        chgrp($web_backup_dir, $backup_group);
+    }
+
+    /**
+     * Makes a backup of website files or database.
+     * @param string|int $domain_id
+     * @param string $type backup type: web or mysql
+     * @param string $backup_job how the backup is initiated: manual or auto
+     * @param bool $mount if true, then the backup dir will be mounted and unmounted automatically
+     * @return bool returns true if success
+     * @author Ramil Valitov <ramilvalitov@gmail.com>
+     */
+    public static function run_backup($domain_id, $type, $backup_job, $mount = true)
+    {
+        global $app;
+
+        $domain_id = intval($domain_id);
+
+        $sql = "SELECT * FROM web_domain WHERE (type = 'vhost' OR type = 'vhostsubdomain' OR type = 'vhostalias') AND domain_id = ?";
+        $rec = $app->db->queryOneRecord($sql, $domain_id);
+        if (empty($rec)) {
+            $app->log('Failed to make backup of type ' . $type . ', because no information present about requested domain id ' . $domain_id, LOGLEVEL_ERROR);
+            return false;
+        }
+        $server_id = intval($rec['server_id']);
+
+        if ($mount && !self::mount_backup_dir($server_id)) {
+            $app->log('Failed to make backup of type ' . $type . ' for domain id ' . $domain_id . ', because failed to mount backup directory', LOGLEVEL_ERROR);
+            return false;
+        }
+        $ok = false;
+
+        switch ($type) {
+            case 'web':
+                $ok = self::make_web_backup($rec, $backup_job);
+                break;
+            case 'mysql':
+                $ok = self::make_database_backup($rec, $backup_job);
+                break;
+            default:
+                $app->log('Failed to make backup, because backup type is unknown: ' . $type, LOGLEVEL_ERROR);
+                break;
+        }
+        if ($mount)
+            self::unmount_backup_dir($server_id);
+        return $ok;
+    }
+
+    /**
+     * Runs backups of all websites that have backups enabled with respect to their backup interval settings
+     * @param int $server_id
+     * @param string $backup_job backup tupe: auto or manual
+     * @author Ramil Valitov <ramilvalitov@gmail.com>
+     */
+    public static function run_all_backups($server_id, $backup_job = "auto")
+    {
+        global $app;
+
+        $server_id = intval($server_id);
+
+        $sql = "SELECT * FROM web_domain WHERE server_id = ? AND (type = 'vhost' OR type = 'vhostsubdomain' OR type = 'vhostalias') AND active = 'y' AND backup_interval != 'none' AND backup_interval != ''";
+        $domains = $app->db->queryAllRecords($sql, $server_id);
+
+        if (!self::mount_backup_dir($server_id)) {
+            $app->log('Failed to run regular backups routine because failed to mount backup directory', LOGLEVEL_ERROR);
+            return;
+        }
+        self::backups_garbage_collection($server_id);
+
+        $date_of_week = date('w');
+        $date_of_month = date('d');
+        foreach ($domains as $domain) {
+            if (($domain['backup_interval'] == 'daily' or ($domain['backup_interval'] == 'weekly' && $date_of_week == 0) or ($domain['backup_interval'] == 'monthly' && $date_of_month == '01'))) {
+                self::run_backup($domain['domain_id'], 'web', $backup_job, false);
+                self::run_backup($domain['domain_id'], 'mysql', $backup_job, false);
+            }
+        }
+        self::unmount_backup_dir($server_id);
+    }
+}
+
+?>
+
diff --git a/server/lib/classes/cron.d/500-backup.inc.php b/server/lib/classes/cron.d/500-backup.inc.php
index 9329be7c2e..cf4272991e 100644
--- a/server/lib/classes/cron.d/500-backup.inc.php
+++ b/server/lib/classes/cron.d/500-backup.inc.php
@@ -33,11 +33,6 @@ class cronjob_backup extends cronjob {
 	// job schedule
 	protected $_schedule = '0 0 * * *';
 
-	/**
-	 * The maximum number of backups that ISPConfig can store.
-	 */
-	const max_backups = 30;
-
 	/* this function is optional if it contains no custom code */
 	public function onPrepare() {
 		global $app;
@@ -55,363 +50,8 @@ class cronjob_backup extends cronjob {
 	public function onRunJob() {
 		global $app, $conf;
 
-		$server_config = $app->getconf->get_server_config($conf['server_id'], 'server');
-		$global_config = $app->getconf->get_global_config('sites');
-		$backup_dir = trim($server_config['backup_dir']);
-		$backup_mode = $server_config['backup_mode'];
-		$backup_tmp = trim($server_config['backup_tmp']);
-		if($backup_mode == '') $backup_mode = 'userzip';
-
-		$web_config = $app->getconf->get_server_config($conf['server_id'], 'web');
-		$http_server_user = $web_config['user'];
-
-		if($backup_dir != '') {
-
-			if(isset($server_config['backup_dir_ftpread']) && $server_config['backup_dir_ftpread'] == 'y') {
-				$backup_dir_permissions = 0755;
-			} else {
-				$backup_dir_permissions = 0750;
-			}
-
-			if(!is_dir($backup_dir)) {
-				mkdir($backup_dir, $backup_dir_permissions, true);
-			} else {
-				chmod($backup_dir, $backup_dir_permissions);
-			}
-            $run_backups = true;
-            //* mount backup directory, if necessary
-            if( $server_config['backup_dir_is_mount'] == 'y' && !$app->system->mount_backup_dir($backup_dir) ) $run_backups = false;
-			if($run_backups){
-				$web_array = array();
-
-				system('which pigz > /dev/null', $ret);
-				if($ret === 0) {
-					$use_pigz = true;
-					$zip_cmd = 'pigz'; // db-backups
-				} else {
-					$use_pigz = false;
-					$zip_cmd = 'gzip'; // db-backups
-				}
-				
-				//* backup only active domains
-				$sql = "SELECT * FROM web_domain WHERE server_id = ? AND (type = 'vhost' OR type = 'vhostsubdomain' OR type = 'vhostalias') AND active = 'y'";
-				$records = $app->db->queryAllRecords($sql, $conf['server_id']);
-				if(is_array($records)) {
-					foreach($records as $rec) {
-
-						//* Do the website backup
-						if($rec['backup_interval'] == 'daily' or ($rec['backup_interval'] == 'weekly' && date('w') == 0) or ($rec['backup_interval'] == 'monthly' && date('d') == '01')) {
-
-							$web_path = $rec['document_root'];
-							$web_user = $rec['system_user'];
-							$web_group = $rec['system_group'];
-							$web_id = $rec['domain_id'];
-							if(!in_array($web_id, $web_array)) $web_array[] = $web_id;
-							$web_backup_dir = $backup_dir.'/web'.$web_id;
-							if(!is_dir($web_backup_dir)) mkdir($web_backup_dir, 0750);
-							chmod($web_backup_dir, 0750);
-							//if(isset($server_config['backup_dir_ftpread']) && $server_config['backup_dir_ftpread'] == 'y') {
-							chown($web_backup_dir, $rec['system_user']);
-							chgrp($web_backup_dir, $rec['system_group']);
-							/*} else {
-								chown($web_backup_dir, 'root');
-								chgrp($web_backup_dir, 'root');
-							}*/
-						
-							$backup_excludes = '';
-							$b_excludes = explode(',', trim($rec['backup_excludes']));
-							if(is_array($b_excludes) && !empty($b_excludes)){
-								foreach($b_excludes as $b_exclude){
-									$b_exclude = trim($b_exclude);
-									if($b_exclude != ''){
-										$backup_excludes .= ' --exclude='.escapeshellarg($b_exclude);
-									}
-								}
-							}
-						
-							if($backup_mode == 'userzip') {
-								//* Create a .zip backup as web user and include also files owned by apache / nginx user
-								$web_backup_file = 'web'.$web_id.'_'.date('Y-m-d_H-i').'.zip';
-								$app->system->exec_safe('cd ? && sudo -u ? find . -group ? -or -user ? -print 2> /dev/null | zip -b ? --exclude=./backup\*'.$backup_excludes.' --symlinks ? -@', $web_path, $web_user, $web_group, $http_server_user, $backup_tmp, $web_backup_dir.'/'.$web_backup_file);
-								$retval = $app->system->last_exec_retcode();
-							} else {
-								//* Create a tar.gz backup as root user
-								$web_backup_file = 'web'.$web_id.'_'.date('Y-m-d_H-i').'.tar.gz';
-								if ($use_pigz) {
-									$app->system->exec_safe('tar pcf - --exclude=./backup\*'.$backup_excludes.' --directory ? . | pigz > ?', $web_path, $web_backup_dir.'/'.$web_backup_file);
-									$retval = $app->system->last_exec_retcode();
-								} else {
-									$app->system->exec_safe('tar pczf ? --exclude=./backup\*'.$backup_excludes.' --directory ? .', $web_backup_dir.'/'.$web_backup_file, $web_path);
-									$retval = $app->system->last_exec_retcode();
-								}
-							}
-							if($retval == 0 || ($backup_mode != 'userzip' && $retval == 1) || ($backup_mode == 'userzip' && $retval == 12)) { // tar can return 1, zip can return 12(due to harmless warings) and still create valid backups  
-								if(is_file($web_backup_dir.'/'.$web_backup_file)){
-									$backupusername = ($global_config['backups_include_into_web_quota'] == 'y') ? $web_user : 'root';
-									$backupgroup = ($global_config['backups_include_into_web_quota'] == 'y') ? $web_group : 'root';
-									chown($web_backup_dir.'/'.$web_backup_file, $backupusername);
-									chgrp($web_backup_dir.'/'.$web_backup_file, $backupgroup);
-									chmod($web_backup_dir.'/'.$web_backup_file, 0750);
-
-									//* Insert web backup record in database
-									$filesize = filesize($web_backup_dir.'/'.$web_backup_file);
-									$sql = "INSERT INTO web_backup (server_id, parent_domain_id, backup_type, backup_mode, tstamp, filename, filesize) VALUES (?, ?, ?, ?, ?, ?, ?)";
-									$app->db->query($sql, $conf['server_id'], $web_id, 'web', $backup_mode, time(), $web_backup_file, $filesize);
-									if($app->db->dbHost != $app->dbmaster->dbHost) 
-										$app->dbmaster->query($sql, $conf['server_id'], $web_id, 'web', $backup_mode, time(), $web_backup_file, $filesize);
-									unset($filesize);
-								}
-							} else {
-								if(is_file($web_backup_dir.'/'.$web_backup_file)) unlink($web_backup_dir.'/'.$web_backup_file);
-								$app->log('Backup of '.$web_path.' failed.', LOGLEVEL_WARN);
-							}
-
-							//* Remove old backups
-							$backup_copies = intval($rec['backup_copies']);
-
-							$dir_handle = dir($web_backup_dir);
-							$files = array();
-							while (false !== ($entry = $dir_handle->read())) {
-								if($entry != '.' && $entry != '..' && substr($entry, 0, 3) == 'web' && is_file($web_backup_dir.'/'.$entry)) {
-									$files[] = $entry;
-								}
-							}
-							$dir_handle->close();
-
-							rsort($files);
-
-							for ($n = $backup_copies; $n <= self::max_backups; $n++) {
-								if(isset($files[$n]) && is_file($web_backup_dir.'/'.$files[$n])) {
-									$sql = "DELETE FROM web_backup WHERE server_id = ? AND parent_domain_id = ? AND filename = ?";
-									$app->db->query($sql, $conf['server_id'], $web_id, $files[$n]);
-									if($app->db->dbHost != $app->dbmaster->dbHost) $app->dbmaster->query($sql, $conf['server_id'],  $web_id, $files[$n]);
-									@unlink($web_backup_dir.'/'.$files[$n]);
-								}
-							}
-
-							unset($files);
-							unset($dir_handle);
-
-							//* Remove backupdir symlink and create as directory instead
-							$app->system->web_folder_protection($web_path, false);
-
-							if(is_link($web_path.'/backup')) {
-								unlink($web_path.'/backup');
-							}
-							if(!is_dir($web_path.'/backup')) {
-								mkdir($web_path.'/backup');
-								chown($web_path.'/backup', $rec['system_user']);
-								chgrp($web_path.'/backup', $rec['system_group']);
-							}
-
-							$app->system->web_folder_protection($web_path, true);
-						}
-
-						/* If backup_interval is set to none and we have a
-						backup directory for the website, then remove the backups */
-						if($rec['backup_interval'] == 'none' || $rec['backup_interval'] == '') {
-							$web_id = $rec['domain_id'];
-							$web_user = $rec['system_user'];
-							$web_backup_dir = realpath($backup_dir.'/web'.$web_id);
-							if(is_dir($web_backup_dir)) {
-								$dir_handle = opendir($web_backup_dir.'/');
-								while ($file = readdir($dir_handle)) {
-									if(!is_dir($file)) {
-										unlink ("$web_backup_dir/"."$file");
-									}
-								}
-							}
-							$sql = "DELETE FROM web_backup WHERE server_id = ? AND parent_domain_id = ?";
-							$app->db->query($sql, $conf['server_id'], $web_id);
-							if($app->db->dbHost != $app->dbmaster->dbHost) $app->dbmaster->query($sql, $conf['server_id'], $web_id);
-						}
-					}
-				}
-
-				$records = $app->db->queryAllRecords("SELECT * FROM web_database WHERE server_id = ? AND backup_interval != 'none' AND backup_interval != ''", $conf['server_id']);
-				if(is_array($records)) {
-
-					include '/usr/local/ispconfig/server/lib/mysql_clientdb.conf';
-					
-					//* Check mysqldump capabilities
-					exec('mysqldump --help',$tmp);
-					$mysqldump_routines = (strpos(implode($tmp),'--routines') !== false)?'--routines':'';
-					unset($tmp);
-
-					foreach($records as $rec) {
-
-						//* Do the database backup
-						if($rec['backup_interval'] == 'daily' or ($rec['backup_interval'] == 'weekly' && date('w') == 0) or ($rec['backup_interval'] == 'monthly' && date('d') == '01')) {
-
-							$web_id = $rec['parent_domain_id'];
-							if(!in_array($web_id, $web_array)) $web_array[] = $web_id;
-							$db_backup_dir = $backup_dir.'/web'.$web_id;
-							if(!is_dir($db_backup_dir)) mkdir($db_backup_dir, 0750);
-							chmod($db_backup_dir, 0750);
-							$backupusername = 'root';
-							$backupgroup = 'root';
-							if ($global_config['backups_include_into_web_quota'] == 'y') {
-								$sql = "SELECT * FROM web_domain WHERE domain_id = ".$rec['parent_domain_id'];
-								$webdomain = $app->db->queryOneRecord($sql);
-								$backupusername = $webdomain['system_user'];
-								$backupgroup = $webdomain['system_group'];
-							}
-							chown($db_backup_dir, $backupusername);
-							chgrp($db_backup_dir, $backupgroup);
-
-							//* Do the mysql database backup with mysqldump
-							$db_id = $rec['database_id'];
-							$db_name = $rec['database_name'];
-							$db_backup_file = 'db_'.$db_name.'_'.date('Y-m-d_H-i').'.sql';
-							$command = "mysqldump -h ? -u ? -p? -c --add-drop-table --create-options --quick --max_allowed_packet=512M ".$mysqldump_routines." --result-file=? ?";
-							$app->system->exec_safe($command, $clientdb_host, $clientdb_user, $clientdb_password, $db_backup_dir.'/'.$db_backup_file, $db_name);
-							$retval = $app->system->last_exec_retcode();
-							
-							//* Compress the backup with gzip / pigz
-							if($retval == 0) {
-								$app->system->exec_safe("$zip_cmd -c ? > ?", $db_backup_dir.'/'.$db_backup_file, $db_backup_dir.'/'.$db_backup_file . '.gz');
-								$retval = $app->system->last_exec_retcode();
-							}
-							
-							if($retval == 0){
-								if(is_file($db_backup_dir.'/'.$db_backup_file.'.gz')){
-									chmod($db_backup_dir.'/'.$db_backup_file.'.gz', 0750);
-									chown($db_backup_dir.'/'.$db_backup_file.'.gz', fileowner($db_backup_dir));
-									chgrp($db_backup_dir.'/'.$db_backup_file.'.gz', filegroup($db_backup_dir));
-
-									//* Insert web backup record in database
-									$filesize = filesize($db_backup_dir.'/'.$db_backup_file.'.gz');
-									$sql = "INSERT INTO web_backup (server_id, parent_domain_id, backup_type, backup_mode, tstamp, filename, filesize) VALUES (?, ?, ?, ?, ?, ?, ?)";
-									$app->db->query($sql, $conf['server_id'], $web_id, 'mysql', 'sqlgz', time(), $db_backup_file.'.gz', $filesize);
-									if($app->db->dbHost != $app->dbmaster->dbHost) 
-										$app->dbmaster->query($sql, $conf['server_id'], $web_id, 'mysql', 'sqlgz', time(), $db_backup_file.'.gz', $filesize);
-									unset($filesize);
-								}
-							} else {
-								if(is_file($db_backup_dir.'/'.$db_backup_file.'.gz')) unlink($db_backup_dir.'/'.$db_backup_file.'.gz');
-							}
-							//* Remove the uncompressed file
-							if(is_file($db_backup_dir.'/'.$db_backup_file)) unlink($db_backup_dir.'/'.$db_backup_file);
-
-							//* Remove old backups
-							$backup_copies = intval($rec['backup_copies']);
-
-							$dir_handle = dir($db_backup_dir);
-							$files = array();
-							while (false !== ($entry = $dir_handle->read())) {
-								if($entry != '.' && $entry != '..' && preg_match('/^db_('.$db_name.')_\d{4}-\d{2}-\d{2}_\d{2}-\d{2}\.sql.gz$/', $entry, $matches) && is_file($db_backup_dir.'/'.$entry)) {
-									if(array_key_exists($matches[1], $files) == false) $files[$matches[1]] = array();
-									$files[$matches[1]][] = $entry;
-								}
-							}
-							$dir_handle->close();
-
-							reset($files);
-							foreach($files as $db_name => $filelist) {
-								rsort($filelist);
-								for ($n = $backup_copies; $n <= self::max_backups; $n++) {
-									if(isset($filelist[$n]) && is_file($db_backup_dir.'/'.$filelist[$n])) {
-										$sql = "DELETE FROM web_backup WHERE server_id = ? AND parent_domain_id = ? AND filename = ?";
-										$app->db->query($sql, $conf['server_id'], $web_id, $filelist[$n]);
-										if($app->db->dbHost != $app->dbmaster->dbHost) $app->dbmaster->query($sql, $conf['server_id'], $web_id, $filelist[$n]);
-										@unlink($db_backup_dir.'/'.$filelist[$n]);
-									}
-								}
-							}
-
-							unset($files);
-							unset($dir_handle);
-						}
-					}
-
-					unset($clientdb_host);
-					unset($clientdb_user);
-					unset($clientdb_password);
-
-				}
-
-				// remove non-existing backups from database
-				$backups = $app->db->queryAllRecords("SELECT * FROM web_backup WHERE server_id = ?", $conf['server_id']);
-				if(is_array($backups) && !empty($backups)){
-					foreach($backups as $backup){
-						$backup_file = $backup_dir.'/web'.$backup['parent_domain_id'].'/'.$backup['filename'];
-						if(!is_file($backup_file)){
-							$sql = "DELETE FROM web_backup WHERE server_id = ? AND parent_domain_id = ? AND filename = ?";
-							$app->db->query($sql, $conf['server_id'], $backup['parent_domain_id'], $backup['filename']);
-						}
-					}
-				}
-				if($app->db->dbHost != $app->dbmaster->dbHost){
-					$backups = $app->dbmaster->queryAllRecords("SELECT * FROM web_backup WHERE server_id = ?", $conf['server_id']);
-					if(is_array($backups) && !empty($backups)){
-						foreach($backups as $backup){
-							$backup_file = $backup_dir.'/web'.$backup['parent_domain_id'].'/'.$backup['filename'];
-							if(!is_file($backup_file)){
-								$sql = "DELETE FROM web_backup WHERE server_id = ? AND parent_domain_id = ? AND filename = ?";
-								$app->dbmaster->query($sql, $conf['server_id'], $backup['parent_domain_id'], $backup['filename']);
-							}
-						}
-					}
-				}
-				
-				// garbage collection (non-existing databases)
-				if(is_array($web_array) && !empty($web_array)){
-					foreach($web_array as $tmp_web_id){
-						$tmp_backup_dir = $backup_dir.'/web'.$tmp_web_id;
-						if(is_dir($tmp_backup_dir)){
-							$dir_handle = dir($tmp_backup_dir);
-							$files = array();
-							while (false !== ($entry = $dir_handle->read())) {
-								if($entry != '.' && $entry != '..' && preg_match('/^db_(.*?)_\d{4}-\d{2}-\d{2}_\d{2}-\d{2}\.sql.gz$/', $entry, $matches) && is_file($tmp_backup_dir.'/'.$entry)) {
-
-									$tmp_db_name = $matches[1];
-									$tmp_database = $app->db->queryOneRecord("SELECT * FROM web_database WHERE server_id = ? AND parent_domain_id = ? AND database_name = ?", $conf['server_id'], $tmp_web_id, $tmp_db_name);
-
-									if(is_array($tmp_database) && !empty($tmp_database)){
-										if($tmp_database['backup_interval'] == 'none' || intval($tmp_database['backup_copies']) == 0){
-											@unlink($tmp_backup_dir.'/'.$entry);
-											$sql = "DELETE FROM web_backup WHERE server_id = ? AND parent_domain_id = ? AND filename = ?";
-											$app->db->query($sql, $conf['server_id'], $tmp_web_id, $entry);
-											if($app->db->dbHost != $app->dbmaster->dbHost) $app->dbmaster->query($sql, $conf['server_id'], $tmp_web_id, $entry);
-										}
-									} else {
-										@unlink($tmp_backup_dir.'/'.$entry);
-										$sql = "DELETE FROM web_backup WHERE server_id = ? AND parent_domain_id = ? AND filename = ?";
-										$app->db->query($sql, $conf['server_id'], $tmp_web_id, $entry);
-										if($app->db->dbHost != $app->dbmaster->dbHost) $app->dbmaster->query($sql, $conf['server_id'], $tmp_web_id, $entry);
-									}
-								}
-							}
-							$dir_handle->close();
-						}
-					}
-				}
-				//* end run_backups
-				if( $server_config['backup_dir_is_mount'] == 'y' ) $app->system->umount_backup_dir($backup_dir);
-			} 
-		}
-		
-		// delete files from backup download dir (/var/www/example.com/backup)
-		unset($records, $entry, $files);
-		$sql = "SELECT * FROM web_domain WHERE server_id = ? AND (type = 'vhost' OR type = 'vhostsubdomain' OR type = 'vhostalias') AND active = 'y'";
-		$records = $app->db->queryAllRecords($sql, $conf['server_id']);
-		if(is_array($records)) {
-			foreach($records as $rec) {
-				$backup_download_dir = $rec['document_root'].'/backup';
-				if(is_dir($backup_download_dir)){
-					$dir_handle = dir($backup_download_dir);
-					$files = array();
-					while (false !== ($entry = $dir_handle->read())) {
-						if($entry != '.' && $entry != '..' && is_file($backup_download_dir.'/'.$entry)) {
-							// delete files older than 3 days
-							if(time() - filemtime($backup_download_dir.'/'.$entry) >= 60*60*24*3) @unlink($backup_download_dir.'/'.$entry);
-						}
-					}
-					$dir_handle->close();
-				}
-			}
-		}
-
+		$app->load("backup");
+		backup::run_all_backups($conf['server_id'], "auto");
 		parent::onRunJob();
 	}
 
diff --git a/server/plugins-available/backup_plugin.inc.php b/server/plugins-available/backup_plugin.inc.php
index 3308289d41..607491216d 100644
--- a/server/plugins-available/backup_plugin.inc.php
+++ b/server/plugins-available/backup_plugin.inc.php
@@ -54,6 +54,8 @@ class backup_plugin {
 		$app->plugins->registerAction('backup_download', $this->plugin_name, 'backup_action');
 		$app->plugins->registerAction('backup_restore', $this->plugin_name, 'backup_action');
 		$app->plugins->registerAction('backup_delete', $this->plugin_name, 'backup_action');
+		$app->plugins->registerAction('backup_web_files', $this->plugin_name, 'make_backup_callback');
+		$app->plugins->registerAction('backup_database', $this->plugin_name, 'make_backup_callback');
 		//$app->plugins->registerAction('backup_download_mail', $this->plugin_name, 'backup_action_mail');
 		$app->plugins->registerAction('backup_restore_mail', $this->plugin_name, 'backup_action_mail');
 		$app->plugins->registerAction('backup_delete_mail', $this->plugin_name, 'backup_action_mail');
@@ -69,6 +71,7 @@ class backup_plugin {
 		if(is_array($backup)) {
 
 			$app->uses('ini_parser,file,getconf,system');
+			$app->load("backup");
 
 			$web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ?", $backup['parent_domain_id']);
 			$server_config = $app->getconf->get_server_config($conf['server_id'], 'server');
@@ -78,7 +81,8 @@ class backup_plugin {
 			
 			$backup_dir_is_ready = true;
             //* mount backup directory, if necessary
-            if( $server_config['backup_dir_is_mount'] == 'y' && !$app->system->mount_backup_dir($server_config['backup_dir']) ) $backup_dir_is_ready = false;
+			if (!backup::mount_backup_dir($conf['server_id']))
+				$backup_dir_is_ready = false;
 
 			if($backup_dir_is_ready){
 				//* Make backup available for download
@@ -121,47 +125,12 @@ class backup_plugin {
 
 				//* Restore a mysql backup
 				if($action_name == 'backup_restore' && $backup['backup_type'] == 'mysql') {
-					//* Load sql dump into db
-					include 'lib/mysql_clientdb.conf';
-
-					if(file_exists($backup_dir.'/'.$backup['filename'])) {
-						//$parts = explode('_',$backup['filename']);
-						//$db_name = $parts[1];
-						preg_match('@^db_(.+)_\d{4}-\d{2}-\d{2}_\d{2}-\d{2}\.sql\.gz$@', $backup['filename'], $matches);
-						$db_name = $matches[1];
-						$command = "gunzip --stdout ? | mysql -h ? -u ? -p? ?";
-						$app->system->exec_safe($command, $backup_dir.'/'.$backup['filename'], $clientdb_host, $clientdb_user, $clientdb_password, $db_name);
-					}
-					unset($clientdb_host);
-					unset($clientdb_user);
-					unset($clientdb_password);
-					$app->log('Restored MySQL backup '.$backup_dir.'/'.$backup['filename'], LOGLEVEL_DEBUG);
+					backup::restoreBackupDatabase($backup['backup_format'], trim($backup['backup_password']), $backup_dir, $backup['filename'], $backup['backup_mode'], $backup['backup_type']);
 				}
 
 				//* Restore a web backup
 				if($action_name == 'backup_restore' && $backup['backup_type'] == 'web') {
-					$app->system->web_folder_protection($web['document_root'], false);
-					if($backup['backup_mode'] == 'userzip') {
-						if(file_exists($backup_dir.'/'.$backup['filename']) && $web['document_root'] != '' && $web['document_root'] != '/' && !stristr($backup_dir.'/'.$backup['filename'], '..') && !stristr($backup_dir.'/'.$backup['filename'], 'etc')) {
-							if(file_exists($web['document_root'].'/backup/'.$backup['filename'])) rename($web['document_root'].'/backup/'.$backup['filename'], $web['document_root'].'/backup/'.$backup['filename'].'.bak');
-							copy($backup_dir.'/'.$backup['filename'], $web['document_root'].'/backup/'.$backup['filename']);
-							chgrp($web['document_root'].'/backup/'.$backup['filename'], $web['system_group']);
-							//chown($web['document_root'].'/backup/'.$backup['filename'],$web['system_user']);
-							$command = 'sudo -u ? unzip -qq -o ? -d ? 2> /dev/null';
-							$app->system->exec_safe($command, $web['system_user'], $web['document_root'].'/backup/'.$backup['filename'], $web['document_root']);
-							unlink($web['document_root'].'/backup/'.$backup['filename']);
-							if(file_exists($web['document_root'].'/backup/'.$backup['filename'].'.bak')) rename($web['document_root'].'/backup/'.$backup['filename'].'.bak', $web['document_root'].'/backup/'.$backup['filename']);
-							$app->log('Restored Web backup '.$backup_dir.'/'.$backup['filename'], LOGLEVEL_DEBUG);
-						}
-					}
-					if($backup['backup_mode'] == 'rootgz') {
-						if(file_exists($backup_dir.'/'.$backup['filename']) && $web['document_root'] != '' && $web['document_root'] != '/' && !stristr($backup_dir.'/'.$backup['filename'], '..') && !stristr($backup_dir.'/'.$backup['filename'], 'etc')) {
-							$command = 'tar xzf ? --directory ?';
-							$app->system->exec_safe($command, $backup_dir.'/'.$backup['filename'], $web['document_root']);
-							$app->log('Restored Web backup '.$backup_dir.'/'.$backup['filename'], LOGLEVEL_DEBUG);
-						}
-					}
-					$app->system->web_folder_protection($web['document_root'], true);
+					backup::restoreBackupWebFiles($backup['backup_format'], trim($backup['backup_password']), $backup_dir, $backup['filename'], $backup['backup_mode'], $backup['backup_type'], $web['document_root'], $web['system_user'], $web['system_group']);
 				}
 				
 				if($action_name == 'backup_delete') {
@@ -175,7 +144,7 @@ class backup_plugin {
 					}
 				}
 
-				if( $server_config['backup_dir_is_mount'] == 'y' ) $app->system->umount_backup_dir($backup_dir);
+				backup::unmount_backup_dir($conf['server_id']);
 			} else {
 				$app->log('Backup directory not ready.', LOGLEVEL_DEBUG);
 			}
@@ -186,6 +155,37 @@ class backup_plugin {
 		return 'ok';
 	}
 
+	/**
+	 * Makes a backup of website files or database, it's triggered by action and required for the plugin to work.
+	 * Please, don't call this function directly unless you know what you're doing.
+	 * @param string $action_name is the backup source: web files or database
+	 * @param string|int $domain_id
+	 * @return string
+	 * @author Ramil Valitov <ramilvalitov@gmail.com>
+	 * @uses backup_plugin::run_backup() recommended to use if you need to make backups
+	 */
+	public function make_backup_callback($action_name, $domain_id)
+	{
+		global $app;
+
+		//Load backup class
+		$app->load('backup');
+		$app->log('Triggered backup routine for domain id ' . $domain_id . ', action name ' . $action_name, LOGLEVEL_DEBUG);
+
+		switch ($action_name) {
+			case 'backup_web_files':
+				backup::run_backup($domain_id, 'web', "manual");
+				break;
+			case 'backup_database':
+				backup::run_backup($domain_id, 'mysql', "manual");
+				break;
+			default:
+				$app->log('Unknown backup action name: ' . $action_name, LOGLEVEL_ERROR);
+				break;
+		}
+		return 'ok';
+	}
+
 	//* Restore a mail backup - florian@schaal-24.de
 	public function backup_action_mail($action_name, $data) {
 		global $app, $conf;
-- 
GitLab


From 0fb97725700fa1facb5006566f9b283e160650d1 Mon Sep 17 00:00:00 2001
From: Ramil Valitov <ramilvalitov@gmail.com>
Date: Fri, 29 May 2020 12:18:28 +0300
Subject: [PATCH 226/242] [fix] correct default format detection

---
 server/lib/classes/backup.inc.php | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/server/lib/classes/backup.inc.php b/server/lib/classes/backup.inc.php
index ea959a2f9c..f996340bd5 100644
--- a/server/lib/classes/backup.inc.php
+++ b/server/lib/classes/backup.inc.php
@@ -110,8 +110,8 @@ class backup
 
     /**
      * Returns default backup format used in previous versions of ISPConfig
-     * @param string $backup_mode
-     * @param string $backup_type
+     * @param string $backup_mode can be 'userzip' or 'rootgz'
+     * @param string $backup_type can be 'web' or 'mysql'
      * @return string
      * @author Ramil Valitov <ramilvalitov@gmail.com>
      */
@@ -1264,10 +1264,7 @@ class backup
             $backup_format_web = 'default';
         }
         if ($backup_format_web == 'default') {
-            if ($backup_mode == 'userzip')
-                $backup_format_web = 'zip';
-            else
-                $backup_format_web = 'gzip';
+            $backup_format_web = self::getDefaultBackupFormat($backup_mode, 'web');
         }
         $password = ($web_domain['backup_encrypt'] == 'y') ? trim($web_domain['backup_password']) : '';
         $backup_extension_web = self::getBackupWebExtension($backup_format_web);
-- 
GitLab


From b36e2a011b5add564f39ebbcc41ccfefe98dd23d Mon Sep 17 00:00:00 2001
From: Thom Pol <thom@amsterdamtech.nl>
Date: Mon, 1 Jun 2020 22:47:18 +0200
Subject: [PATCH 227/242] Removed double/empty titles and descriptions

---
 interface/web/mailuser/templates/index.htm           |  3 +--
 .../templates/mail_user_autoresponder_edit.htm       | 12 +++---------
 .../web/mailuser/templates/mail_user_cc_edit.htm     |  9 +--------
 .../web/mailuser/templates/mail_user_filter_edit.htm |  9 +--------
 .../mailuser/templates/mail_user_password_edit.htm   |  9 +--------
 .../mailuser/templates/mail_user_spamfilter_edit.htm |  9 +--------
 6 files changed, 8 insertions(+), 43 deletions(-)

diff --git a/interface/web/mailuser/templates/index.htm b/interface/web/mailuser/templates/index.htm
index 8f87035562..5f065f9fa4 100644
--- a/interface/web/mailuser/templates/index.htm
+++ b/interface/web/mailuser/templates/index.htm
@@ -1,7 +1,6 @@
 <div class='page-header'>
 	<h1><tmpl_var name="page_head_txt"></h1>
 </div>
-<p><tmpl_var name="page_desc_txt"></p>
 
 <div class="panel panel_mailuser">
 
@@ -33,4 +32,4 @@
     
   </div>
   
-</div>
\ No newline at end of file
+</div>
diff --git a/interface/web/mailuser/templates/mail_user_autoresponder_edit.htm b/interface/web/mailuser/templates/mail_user_autoresponder_edit.htm
index 98b28cebf8..898f285e53 100644
--- a/interface/web/mailuser/templates/mail_user_autoresponder_edit.htm
+++ b/interface/web/mailuser/templates/mail_user_autoresponder_edit.htm
@@ -1,13 +1,7 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="autoresponder_subject" class="col-sm-3 control-label">{tmpl_var name='autoresponder_subject_txt'}</label>
-                <div class="col-sm-9"><input class="form-control" type="text" name="autoresponder_subject" id="autoresponder_subject" value="{tmpl_var name='autoresponder_subject'}" /></div></div>
+                <div class="col-sm-9"><input class="form-control" type="text" name="autoresponder_subject" id="autoresponder_subject" value="{tmpl_var name='autoresponder_subject'}" /></div>
+            </div>
             <div class="form-group">
                 <label for="autoresponder_text" class="col-sm-3 control-label">{tmpl_var name='autoresponder_text_txt'}</label>
                 <div class="col-sm-9"><textarea class="form-control" name="autoresponder_text" id="autoresponder_text" rows='15' cols='30'>{tmpl_var name='autoresponder_text'}</textarea></div>
@@ -30,4 +24,4 @@
             <button class="btn btn-default formbutton-success" type="button"
                     value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="mailuser/mail_user_autoresponder_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="mailuser/index.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/mailuser/templates/mail_user_cc_edit.htm b/interface/web/mailuser/templates/mail_user_cc_edit.htm
index 7c59fadf11..914f74ae3f 100644
--- a/interface/web/mailuser/templates/mail_user_cc_edit.htm
+++ b/interface/web/mailuser/templates/mail_user_cc_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label class="col-sm-3 control-label">{tmpl_var name='email_txt'}</label>
                 <div class="col-sm-9"><div class="checkbox">{tmpl_var name='email'}</div></div>
@@ -20,4 +13,4 @@
         <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="mailuser/mail_user_cc_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="mailuser/index.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/mailuser/templates/mail_user_filter_edit.htm b/interface/web/mailuser/templates/mail_user_filter_edit.htm
index b09874263b..441ffba484 100644
--- a/interface/web/mailuser/templates/mail_user_filter_edit.htm
+++ b/interface/web/mailuser/templates/mail_user_filter_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label for="rulename" class="col-sm-3 control-label">{tmpl_var name='rulename_txt'}</label>
                 <div class="col-sm-9"><input type="text" id="rulename" name="rulename" value="{tmpl_var name='rulename'}" class="form-control"></div></div>
@@ -29,4 +22,4 @@
         <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="mailuser/mail_user_filter_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="mailuser/mail_user_filter_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/mailuser/templates/mail_user_password_edit.htm b/interface/web/mailuser/templates/mail_user_password_edit.htm
index b487a1e9b2..c7a28dc48e 100644
--- a/interface/web/mailuser/templates/mail_user_password_edit.htm
+++ b/interface/web/mailuser/templates/mail_user_password_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label class="col-sm-3 control-label">{tmpl_var name='email_txt'}</label>
                 <div class="col-sm-9">
@@ -44,4 +37,4 @@
         <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="mailuser/mail_user_password_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="mailuser/index.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/mailuser/templates/mail_user_spamfilter_edit.htm b/interface/web/mailuser/templates/mail_user_spamfilter_edit.htm
index 3528daead1..6675846769 100644
--- a/interface/web/mailuser/templates/mail_user_spamfilter_edit.htm
+++ b/interface/web/mailuser/templates/mail_user_spamfilter_edit.htm
@@ -1,10 +1,3 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
-
-
-        
             <div class="form-group">
                 <label class="col-sm-3 control-label">{tmpl_var name='email_txt'}</label>
                 <div class="col-sm-9">
@@ -24,4 +17,4 @@
         <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="mailuser/mail_user_spamfilter_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="mailuser/index.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
-- 
GitLab


From 09cf5d6507c0aea27edefe0c1e2ea17c9f7b3719 Mon Sep 17 00:00:00 2001
From: Jesse Norell <jesse@kci.net>
Date: Tue, 2 Jun 2020 17:28:23 -0600
Subject: [PATCH 228/242] update sql patch instructions.  fixes #5630

---
 install/sql/README.txt | 26 ++++++++++++++++----------
 1 file changed, 16 insertions(+), 10 deletions(-)

diff --git a/install/sql/README.txt b/install/sql/README.txt
index fe15ce5403..d1294363c1 100644
--- a/install/sql/README.txt
+++ b/install/sql/README.txt
@@ -9,18 +9,24 @@ then follow these steps:
 1) Add the field or table in the ispconfig3.sql file. This file contains the
    complete database dump which is used when ISPConfig gets installed.
    
-2) Create a new file in the "incremental" subfolder wich contains the alter 
-   table, or if it is a complete new table then the add table, statement(s) in 
-   MySQL syntax which is/are required to modify the current ispconfig database 
-   during update. The naming scheme of the sql patch update files is 
-   upd_0001.sql, upd_0002.sql, upd_0003.sql etc. Ensure that the number that 
-   you choose for the new file is a +1 increment of the number of the last
-   existing file and that the number is formatted with 4 digits.
+2) Edit the file "incremental/upd_dev_collection.sql" which contains the SQL
+   statements (alter table, add table, update, etc.) in MySQL syntax which
+   are required to modify the current ispconfig database during update.
+
+   The upd_dev_collection.sql file contains all db schema modifications
+   for changes made since the last ISPConfig release.  If SQL statements
+   are already present in the file when you make your additions, add yours
+   to the end of the file, and do not remove any existing statements.
+
+   When a new ISPConfig update is released, the contents of
+   upd_dev_collections.sql will move to an sql patch file, using the naming
+   scheme upd_0001.sql, upd_0002.sql, upd_0003.sql etc.
    
-   A patch file may contain one or more alter table statements. Every patch file
-   gets executed once in the database, so do not modify older (already released) 
+   A patch file may contain one or more SQL modification statements. Every patch
+   file gets executed once in the database, so do not modify older (already released)
    patch files, they will not get executed again if the update was already run 
-   once on a system.
+   once on a system, and will result in missing updates on any system where they
+   have not run yet.
    
    After a patch has been executed, the dbversion field in the server table gets
    increeased to the version number of the last installed patch.
-- 
GitLab


From 8e584ee86a155a02cb29a478ef3f298af744f8ec Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Wed, 3 Jun 2020 09:10:14 +0200
Subject: [PATCH 229/242] - updated README for incremental sql files

---
 install/sql/README.txt | 19 ++++++++-----------
 1 file changed, 8 insertions(+), 11 deletions(-)

diff --git a/install/sql/README.txt b/install/sql/README.txt
index fe15ce5403..97a07a4863 100644
--- a/install/sql/README.txt
+++ b/install/sql/README.txt
@@ -9,18 +9,15 @@ then follow these steps:
 1) Add the field or table in the ispconfig3.sql file. This file contains the
    complete database dump which is used when ISPConfig gets installed.
    
-2) Create a new file in the "incremental" subfolder wich contains the alter 
-   table, or if it is a complete new table then the add table, statement(s) in 
-   MySQL syntax which is/are required to modify the current ispconfig database 
-   during update. The naming scheme of the sql patch update files is 
-   upd_0001.sql, upd_0002.sql, upd_0003.sql etc. Ensure that the number that 
-   you choose for the new file is a +1 increment of the number of the last
-   existing file and that the number is formatted with 4 digits.
+2) Add your ALTER TABLE, or if it is a complete new table then the add table,
+   statement(s) in MySQL syntax which is/are required to modify the current
+   ispconfig database during update to the file upd_dev_collection.sql in the
+   sql/incremental subfolder.
    
-   A patch file may contain one or more alter table statements. Every patch file
-   gets executed once in the database, so do not modify older (already released) 
-   patch files, they will not get executed again if the update was already run 
-   once on a system.
+   Please do not create new patch sql files as those will be generated on
+   new releases from the upd_dev_collection.sql file. Also please do not
+   modify older (already released) patch files, they will not get executed
+   again if the update was already run once on a system.
    
    After a patch has been executed, the dbversion field in the server table gets
    increeased to the version number of the last installed patch.
-- 
GitLab


From b34b1ad5bbc8d75db927116b517e6a23761e42bb Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Thu, 4 Jun 2020 13:53:35 +0200
Subject: [PATCH 230/242] Improved cron debug script

---
 server/cron_debug.php | 27 ++++++++++++++++++++++-----
 1 file changed, 22 insertions(+), 5 deletions(-)

diff --git a/server/cron_debug.php b/server/cron_debug.php
index 74065f02c4..fbf59ebc26 100644
--- a/server/cron_debug.php
+++ b/server/cron_debug.php
@@ -39,20 +39,25 @@ ini_set('error_reporting', E_ALL & ~E_NOTICE);
 $conf['server_id'] = intval($conf['server_id']);
 
 // Load required base-classes
-$app->uses('modules,plugins,ini_parser,file,services,getconf,system,cron,functions');
+$app->uses('ini_parser,file,services,getconf,system,cron,functions');
 $app->load('libdatetime,cronjob');
 
 // Path settings
 $path = SCRIPT_PATH . '/lib/classes/cron.d';
 
 //** Get commandline options
-$cmd_opt = getopt('', array('cronjob::'));
+$cmd_opt = getopt('', array('cronjob::', 'force', 'firstrun'));
 
 if(isset($cmd_opt['cronjob']) && is_file($path.'/'.$cmd_opt['cronjob'])) {
 	// Cronjob that shell be run
 	$cronjob_file = $cmd_opt['cronjob'];
 } else {
-	die('Usage example: php cron_debug.php --cronjob=100-mailbox_stats.inc.php');
+	echo "Usage example: php cron_debug.php --cronjob=100-mailbox_stats.inc.php [--force] [--firstrun]\n" ;
+	echo "Available cronjobs:\n";
+	foreach(glob($path.'/*-*.inc.php') as $cronjob) {
+		echo basename($cronjob)."\n";
+	}
+	die();
 }
 
 // Load and run the cronjob
@@ -61,8 +66,20 @@ if(preg_match('/^\d+\-(.*)$/', $name, $match)) $name = $match[1]; // strip numer
 include $path . '/' . $cronjob_file;
 $class_name = 'cronjob_' . $name;
 $cronjob = new $class_name();
-$cronjob->run(true);
+
+if(isset($cmd_opt['force'])) {
+	$app->db->query("UPDATE `sys_cron` SET `running` = 0 WHERE `name` = ?", $class_name);
+}
+
+$cronjob->onPrepare();
+$cronjob->onBeforeRun(isset($cmd_opt['firstrun']));
+if(!$cronjob->isRunning()) {
+	$app->db->query("UPDATE `sys_cron` SET `running` = ? WHERE `name` = ?", ($cronjob->canBeRunInParallel() !== true ? "1" : "0"), $class_name);
+	$cronjob->onRunJob();
+	$cronjob->onAfterRun();
+	$cronjob->onCompleted();
+}
 
 die("finished.\n");
 
-?>
+?>
\ No newline at end of file
-- 
GitLab


From c798155c8fe85e102ef00e7b939ffa5bade22fd5 Mon Sep 17 00:00:00 2001
From: Thom Pol <thom@amsterdamtech.nl>
Date: Sat, 6 Jun 2020 21:23:27 +0200
Subject: [PATCH 231/242] Added translations from #5477

---
 interface/web/mail/lib/lang/de_mail_user.lng | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/interface/web/mail/lib/lang/de_mail_user.lng b/interface/web/mail/lib/lang/de_mail_user.lng
index 2c230e34ff..b60a756b09 100644
--- a/interface/web/mail/lib/lang/de_mail_user.lng
+++ b/interface/web/mail/lib/lang/de_mail_user.lng
@@ -57,9 +57,9 @@ $wb['daily_backup_txt'] = 'taeglich';
 $wb['weekly_backup_txt'] = 'woechentlich';
 $wb['monthly_backup_txt'] = 'monatlich';
 $wb['cc_note_txt'] = '(Mehrere E-Mail-Adressen mit Kommas trennen)';
-$wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.';
-$wb['sender_cc_txt'] = 'Send outgoing BCC to';
-$wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address';
-$wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)';
+$wb['autoresponder_start_date_is_required'] = 'Startdatum muss angegeben werden.';
+$wb['sender_cc_txt'] = 'Kopie ausgehender Emails senden an (BCC)';
+$wb['sender_cc_error_isemail'] = '-Kopie ausgehender Emails senden an- Feld enthält keine gültige Emailadresse';
+$wb['sender_cc_note_txt'] = '(Mehrere E-Mail-Adressen mit Kommas trennen)';
 $wb['password_click_to_set_txt'] = 'Click to set';
 ?>
-- 
GitLab


From 39c195b86a60fb1892d2836a59afe5495b434051 Mon Sep 17 00:00:00 2001
From: Thom Pol <thom@amsterdamtech.nl>
Date: Sat, 6 Jun 2020 21:26:23 +0200
Subject: [PATCH 232/242] Added translations from #4962

---
 interface/web/sites/lib/lang/de_web_childdomain_list.lng | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/interface/web/sites/lib/lang/de_web_childdomain_list.lng b/interface/web/sites/lib/lang/de_web_childdomain_list.lng
index a9bdf2861a..3ba596cbcd 100644
--- a/interface/web/sites/lib/lang/de_web_childdomain_list.lng
+++ b/interface/web/sites/lib/lang/de_web_childdomain_list.lng
@@ -10,8 +10,8 @@ $wb['domain_error_regex'] = 'Domain Name ist ungültig.';
 $wb['no_redirect_txt'] = 'Keine Weiterleitung';
 $wb['no_flag_txt'] = 'Keine Optionen';
 $wb['none_txt'] = 'Keine';
-$wb['add_new_subdomain_txt'] = 'Add new Subdomain';
-$wb['add_new_aliasdomain_txt'] = 'Add new Aliasdomain';
+$wb['add_new_subdomain_txt'] = 'Neue Subdomain hinzufügen';
+$wb['add_new_aliasdomain_txt'] = 'Neue Aliasdomain hinzufügen';
 $wb['aliasdomain_list_head_txt'] = 'Aliasdomains';
 $wb['subdomain_list_head_txt'] = 'Subdomains';
 $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.';
-- 
GitLab


From 413bc63b61f5d382d1a0c888b4002bc8e54d4236 Mon Sep 17 00:00:00 2001
From: Thom Pol <thom@amsterdamtech.nl>
Date: Sat, 6 Jun 2020 22:26:58 +0200
Subject: [PATCH 233/242] Add translation for Zone File Import (#4311)

---
 interface/web/dns/lib/lang/ar_dns_soa_admin_list.lng | 1 +
 interface/web/dns/lib/lang/bg_dns_soa_admin_list.lng | 1 +
 interface/web/dns/lib/lang/br_dns_soa_list.lng       | 1 +
 interface/web/dns/lib/lang/ca_dns_soa_admin_list.lng | 1 +
 interface/web/dns/lib/lang/cz_dns_soa_admin_list.lng | 1 +
 interface/web/dns/lib/lang/de_dns_soa_admin_list.lng | 1 +
 interface/web/dns/lib/lang/dk_dns_soa_admin_list.lng | 1 +
 interface/web/dns/lib/lang/el_dns_soa_admin_list.lng | 1 +
 interface/web/dns/lib/lang/en_dns_soa_admin_list.lng | 1 +
 interface/web/dns/lib/lang/es_dns_soa_admin_list.lng | 1 +
 interface/web/dns/lib/lang/fi_dns_soa_admin_list.lng | 1 +
 interface/web/dns/lib/lang/fr_dns_soa_admin_list.lng | 1 +
 interface/web/dns/lib/lang/hr_dns_soa_admin_list.lng | 1 +
 interface/web/dns/lib/lang/hu_dns_soa_admin_list.lng | 1 +
 interface/web/dns/lib/lang/id_dns_soa_admin_list.lng | 1 +
 interface/web/dns/lib/lang/it_dns_soa_admin_list.lng | 1 +
 interface/web/dns/lib/lang/ja_dns_soa_admin_list.lng | 1 +
 interface/web/dns/lib/lang/nl_dns_soa_admin_list.lng | 1 +
 interface/web/dns/lib/lang/pl_dns_soa_admin_list.lng | 1 +
 interface/web/dns/lib/lang/pt_dns_soa_admin_list.lng | 1 +
 interface/web/dns/lib/lang/ro_dns_soa_admin_list.lng | 1 +
 interface/web/dns/lib/lang/ru_dns_soa_admin_list.lng | 1 +
 interface/web/dns/lib/lang/se_dns_soa_admin_list.lng | 1 +
 interface/web/dns/lib/lang/sk_dns_soa_admin_list.lng | 1 +
 interface/web/dns/lib/lang/tr_dns_soa_admin_list.lng | 1 +
 interface/web/dns/templates/dns_soa_admin_list.htm   | 2 +-
 26 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/interface/web/dns/lib/lang/ar_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/ar_dns_soa_admin_list.lng
index 183d1a8349..74ba785900 100644
--- a/interface/web/dns/lib/lang/ar_dns_soa_admin_list.lng
+++ b/interface/web/dns/lib/lang/ar_dns_soa_admin_list.lng
@@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS';
 $wb['mbox_txt'] = 'Email';
 $wb['add_new_record_wizard_txt'] = 'Add new DNS Zone with Wizard';
 $wb['add_new_record_txt'] = 'Add new DNS Zone manually';
+$wb['import_zone_file_txt'] = 'Import Zone File';
 $wb['sys_groupid_txt'] = 'Client';
 ?>
diff --git a/interface/web/dns/lib/lang/bg_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/bg_dns_soa_admin_list.lng
index 183d1a8349..74ba785900 100644
--- a/interface/web/dns/lib/lang/bg_dns_soa_admin_list.lng
+++ b/interface/web/dns/lib/lang/bg_dns_soa_admin_list.lng
@@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS';
 $wb['mbox_txt'] = 'Email';
 $wb['add_new_record_wizard_txt'] = 'Add new DNS Zone with Wizard';
 $wb['add_new_record_txt'] = 'Add new DNS Zone manually';
+$wb['import_zone_file_txt'] = 'Import Zone File';
 $wb['sys_groupid_txt'] = 'Client';
 ?>
diff --git a/interface/web/dns/lib/lang/br_dns_soa_list.lng b/interface/web/dns/lib/lang/br_dns_soa_list.lng
index 969df1d2a9..d9fb674b87 100644
--- a/interface/web/dns/lib/lang/br_dns_soa_list.lng
+++ b/interface/web/dns/lib/lang/br_dns_soa_list.lng
@@ -7,4 +7,5 @@ $wb['ns_txt'] = 'NS';
 $wb['mbox_txt'] = 'e-Mail';
 $wb['add_new_record_wizard_txt'] = 'Adicionar nova zona dns através do assistente';
 $wb['add_new_record_txt'] = 'Adicionar nova zona dns manualmente';
+$wb['zone_file_import_txt'] = 'Importar arquivo de zona';
 ?>
diff --git a/interface/web/dns/lib/lang/ca_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/ca_dns_soa_admin_list.lng
index ff6fe695ae..0f477a473a 100644
--- a/interface/web/dns/lib/lang/ca_dns_soa_admin_list.lng
+++ b/interface/web/dns/lib/lang/ca_dns_soa_admin_list.lng
@@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS';
 $wb['mbox_txt'] = 'Courriel';
 $wb['add_new_record_wizard_txt'] = 'Assistant de création de zone';
 $wb['add_new_record_txt'] = 'Création manuel de zone';
+$wb['import_zone_file_txt'] = 'Import Zone File';
 $wb['sys_groupid_txt'] = 'Client';
 ?>
diff --git a/interface/web/dns/lib/lang/cz_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/cz_dns_soa_admin_list.lng
index 0ec5de4f6d..a4f27d2472 100644
--- a/interface/web/dns/lib/lang/cz_dns_soa_admin_list.lng
+++ b/interface/web/dns/lib/lang/cz_dns_soa_admin_list.lng
@@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS';
 $wb['mbox_txt'] = 'E-mail';
 $wb['add_new_record_wizard_txt'] = 'Vytvořit DNS zónu pomocí průvodce';
 $wb['add_new_record_txt'] = 'Vytvořit DNS zónu manuálně';
+$wb['import_zone_file_txt'] = 'Importovat DNS zonový soubor';
 $wb['sys_groupid_txt'] = 'Klient';
 ?>
diff --git a/interface/web/dns/lib/lang/de_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/de_dns_soa_admin_list.lng
index 363369c65b..294cd3b128 100644
--- a/interface/web/dns/lib/lang/de_dns_soa_admin_list.lng
+++ b/interface/web/dns/lib/lang/de_dns_soa_admin_list.lng
@@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS';
 $wb['mbox_txt'] = 'E-Mail';
 $wb['add_new_record_txt'] = 'Neue DNS Zone (SOA) hinzufügen';
 $wb['add_new_record_wizard_txt'] = 'Neue DNS Zone per Assistent hinzufügen';
+$wb['import_zone_file_txt'] = 'Import Zone File';
 $wb['sys_groupid_txt'] = 'Kunde';
 ?>
diff --git a/interface/web/dns/lib/lang/dk_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/dk_dns_soa_admin_list.lng
index 32728405bb..f25d33ee67 100644
--- a/interface/web/dns/lib/lang/dk_dns_soa_admin_list.lng
+++ b/interface/web/dns/lib/lang/dk_dns_soa_admin_list.lng
@@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS';
 $wb['mbox_txt'] = 'E-mail';
 $wb['add_new_record_wizard_txt'] = 'Tilføj ny DNS Zone med Guide';
 $wb['add_new_record_txt'] = 'Tilføj ny DNS Zone manuelt';
+$wb['import_zone_file_txt'] = 'Import Zone File';
 $wb['sys_groupid_txt'] = 'Kunde';
 ?>
diff --git a/interface/web/dns/lib/lang/el_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/el_dns_soa_admin_list.lng
index 183d1a8349..74ba785900 100644
--- a/interface/web/dns/lib/lang/el_dns_soa_admin_list.lng
+++ b/interface/web/dns/lib/lang/el_dns_soa_admin_list.lng
@@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS';
 $wb['mbox_txt'] = 'Email';
 $wb['add_new_record_wizard_txt'] = 'Add new DNS Zone with Wizard';
 $wb['add_new_record_txt'] = 'Add new DNS Zone manually';
+$wb['import_zone_file_txt'] = 'Import Zone File';
 $wb['sys_groupid_txt'] = 'Client';
 ?>
diff --git a/interface/web/dns/lib/lang/en_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/en_dns_soa_admin_list.lng
index 44cec900b9..f7f815079d 100644
--- a/interface/web/dns/lib/lang/en_dns_soa_admin_list.lng
+++ b/interface/web/dns/lib/lang/en_dns_soa_admin_list.lng
@@ -7,5 +7,6 @@ $wb["ns_txt"] = 'NS';
 $wb["mbox_txt"] = 'Email';
 $wb["add_new_record_wizard_txt"] = 'Add new DNS Zone with Wizard';
 $wb["add_new_record_txt"] = 'Add new DNS Zone manually';
+$wb['import_zone_file_txt'] = 'Import Zone File';
 $wb["sys_groupid_txt"] = 'Client';
 ?>
diff --git a/interface/web/dns/lib/lang/es_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/es_dns_soa_admin_list.lng
index aeb2618de3..087ebd80ed 100755
--- a/interface/web/dns/lib/lang/es_dns_soa_admin_list.lng
+++ b/interface/web/dns/lib/lang/es_dns_soa_admin_list.lng
@@ -2,6 +2,7 @@
 $wb['active_txt'] = 'Habilitado';
 $wb['add_new_record_txt'] = 'Añadir nueva Zona DNS manualmente';
 $wb['add_new_record_wizard_txt'] = 'Añadir nueva Zona DNS usando el asistente';
+$wb['import_zone_file_txt'] = 'Importar archivo de zona';
 $wb['list_head_txt'] = 'Zonas DNS';
 $wb['mbox_txt'] = 'Email';
 $wb['ns_txt'] = 'NS';
diff --git a/interface/web/dns/lib/lang/fi_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/fi_dns_soa_admin_list.lng
index 183d1a8349..74ba785900 100644
--- a/interface/web/dns/lib/lang/fi_dns_soa_admin_list.lng
+++ b/interface/web/dns/lib/lang/fi_dns_soa_admin_list.lng
@@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS';
 $wb['mbox_txt'] = 'Email';
 $wb['add_new_record_wizard_txt'] = 'Add new DNS Zone with Wizard';
 $wb['add_new_record_txt'] = 'Add new DNS Zone manually';
+$wb['import_zone_file_txt'] = 'Import Zone File';
 $wb['sys_groupid_txt'] = 'Client';
 ?>
diff --git a/interface/web/dns/lib/lang/fr_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/fr_dns_soa_admin_list.lng
index e4d52ffee5..0e5779a0a2 100644
--- a/interface/web/dns/lib/lang/fr_dns_soa_admin_list.lng
+++ b/interface/web/dns/lib/lang/fr_dns_soa_admin_list.lng
@@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS';
 $wb['mbox_txt'] = 'E-mail';
 $wb['add_new_record_wizard_txt'] = 'Add new DNS Zone with Wizard';
 $wb['add_new_record_txt'] = 'Add new DNS Zone manually';
+$wb['import_zone_file_txt'] = 'Import Zone File';
 $wb['sys_groupid_txt'] = 'Client';
 ?>
diff --git a/interface/web/dns/lib/lang/hr_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/hr_dns_soa_admin_list.lng
index 1dc2853bcf..f8753a3465 100644
--- a/interface/web/dns/lib/lang/hr_dns_soa_admin_list.lng
+++ b/interface/web/dns/lib/lang/hr_dns_soa_admin_list.lng
@@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS';
 $wb['mbox_txt'] = 'Email';
 $wb['add_new_record_wizard_txt'] = 'Dodaj novu DNS zonu sa čarobnjakom';
 $wb['add_new_record_txt'] = 'Dodaj novu DNS zonu ručno';
+$wb['import_zone_file_txt'] = 'Import Zone File';
 $wb['sys_groupid_txt'] = 'Klijent';
 ?>
diff --git a/interface/web/dns/lib/lang/hu_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/hu_dns_soa_admin_list.lng
index 183d1a8349..74ba785900 100644
--- a/interface/web/dns/lib/lang/hu_dns_soa_admin_list.lng
+++ b/interface/web/dns/lib/lang/hu_dns_soa_admin_list.lng
@@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS';
 $wb['mbox_txt'] = 'Email';
 $wb['add_new_record_wizard_txt'] = 'Add new DNS Zone with Wizard';
 $wb['add_new_record_txt'] = 'Add new DNS Zone manually';
+$wb['import_zone_file_txt'] = 'Import Zone File';
 $wb['sys_groupid_txt'] = 'Client';
 ?>
diff --git a/interface/web/dns/lib/lang/id_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/id_dns_soa_admin_list.lng
index 183d1a8349..74ba785900 100644
--- a/interface/web/dns/lib/lang/id_dns_soa_admin_list.lng
+++ b/interface/web/dns/lib/lang/id_dns_soa_admin_list.lng
@@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS';
 $wb['mbox_txt'] = 'Email';
 $wb['add_new_record_wizard_txt'] = 'Add new DNS Zone with Wizard';
 $wb['add_new_record_txt'] = 'Add new DNS Zone manually';
+$wb['import_zone_file_txt'] = 'Import Zone File';
 $wb['sys_groupid_txt'] = 'Client';
 ?>
diff --git a/interface/web/dns/lib/lang/it_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/it_dns_soa_admin_list.lng
index 5f0c730599..a7cce01001 100644
--- a/interface/web/dns/lib/lang/it_dns_soa_admin_list.lng
+++ b/interface/web/dns/lib/lang/it_dns_soa_admin_list.lng
@@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS';
 $wb['mbox_txt'] = 'Email';
 $wb['add_new_record_wizard_txt'] = 'Aggiungi un nuovo  DNS Zone with Wizard';
 $wb['add_new_record_txt'] = 'Aggiungi un nuovo  DNS Zone manually';
+$wb['import_zone_file_txt'] = 'Import Zone File';
 $wb['sys_groupid_txt'] = 'Cliente';
 ?>
diff --git a/interface/web/dns/lib/lang/ja_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/ja_dns_soa_admin_list.lng
index 183d1a8349..74ba785900 100644
--- a/interface/web/dns/lib/lang/ja_dns_soa_admin_list.lng
+++ b/interface/web/dns/lib/lang/ja_dns_soa_admin_list.lng
@@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS';
 $wb['mbox_txt'] = 'Email';
 $wb['add_new_record_wizard_txt'] = 'Add new DNS Zone with Wizard';
 $wb['add_new_record_txt'] = 'Add new DNS Zone manually';
+$wb['import_zone_file_txt'] = 'Import Zone File';
 $wb['sys_groupid_txt'] = 'Client';
 ?>
diff --git a/interface/web/dns/lib/lang/nl_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/nl_dns_soa_admin_list.lng
index 2ac184dd91..5231e47e22 100644
--- a/interface/web/dns/lib/lang/nl_dns_soa_admin_list.lng
+++ b/interface/web/dns/lib/lang/nl_dns_soa_admin_list.lng
@@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS';
 $wb['mbox_txt'] = 'E-mail';
 $wb['add_new_record_wizard_txt'] = 'DNS Zone via wizard toevoegen';
 $wb['add_new_record_txt'] = 'DNS Zone manueel toevoegen';
+$wb['import_zone_file_txt'] = 'Importeer zone bestand';
 $wb['sys_groupid_txt'] = 'Klant';
 ?>
diff --git a/interface/web/dns/lib/lang/pl_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/pl_dns_soa_admin_list.lng
index 183d1a8349..74ba785900 100644
--- a/interface/web/dns/lib/lang/pl_dns_soa_admin_list.lng
+++ b/interface/web/dns/lib/lang/pl_dns_soa_admin_list.lng
@@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS';
 $wb['mbox_txt'] = 'Email';
 $wb['add_new_record_wizard_txt'] = 'Add new DNS Zone with Wizard';
 $wb['add_new_record_txt'] = 'Add new DNS Zone manually';
+$wb['import_zone_file_txt'] = 'Import Zone File';
 $wb['sys_groupid_txt'] = 'Client';
 ?>
diff --git a/interface/web/dns/lib/lang/pt_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/pt_dns_soa_admin_list.lng
index 183d1a8349..74ba785900 100644
--- a/interface/web/dns/lib/lang/pt_dns_soa_admin_list.lng
+++ b/interface/web/dns/lib/lang/pt_dns_soa_admin_list.lng
@@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS';
 $wb['mbox_txt'] = 'Email';
 $wb['add_new_record_wizard_txt'] = 'Add new DNS Zone with Wizard';
 $wb['add_new_record_txt'] = 'Add new DNS Zone manually';
+$wb['import_zone_file_txt'] = 'Import Zone File';
 $wb['sys_groupid_txt'] = 'Client';
 ?>
diff --git a/interface/web/dns/lib/lang/ro_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/ro_dns_soa_admin_list.lng
index 183d1a8349..74ba785900 100644
--- a/interface/web/dns/lib/lang/ro_dns_soa_admin_list.lng
+++ b/interface/web/dns/lib/lang/ro_dns_soa_admin_list.lng
@@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS';
 $wb['mbox_txt'] = 'Email';
 $wb['add_new_record_wizard_txt'] = 'Add new DNS Zone with Wizard';
 $wb['add_new_record_txt'] = 'Add new DNS Zone manually';
+$wb['import_zone_file_txt'] = 'Import Zone File';
 $wb['sys_groupid_txt'] = 'Client';
 ?>
diff --git a/interface/web/dns/lib/lang/ru_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/ru_dns_soa_admin_list.lng
index 47940f9e8d..d3d7be7183 100644
--- a/interface/web/dns/lib/lang/ru_dns_soa_admin_list.lng
+++ b/interface/web/dns/lib/lang/ru_dns_soa_admin_list.lng
@@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS';
 $wb['mbox_txt'] = 'Адрес эл. почты';
 $wb['add_new_record_wizard_txt'] = 'Добавить новую DNS-зону с помощью мастера';
 $wb['add_new_record_txt'] = 'Добавить новую DNS-зону вручную';
+$wb['import_zone_file_txt'] = 'Импорт файла зоны';
 $wb['sys_groupid_txt'] = 'Клиент';
 ?>
diff --git a/interface/web/dns/lib/lang/se_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/se_dns_soa_admin_list.lng
index 183d1a8349..74ba785900 100644
--- a/interface/web/dns/lib/lang/se_dns_soa_admin_list.lng
+++ b/interface/web/dns/lib/lang/se_dns_soa_admin_list.lng
@@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS';
 $wb['mbox_txt'] = 'Email';
 $wb['add_new_record_wizard_txt'] = 'Add new DNS Zone with Wizard';
 $wb['add_new_record_txt'] = 'Add new DNS Zone manually';
+$wb['import_zone_file_txt'] = 'Import Zone File';
 $wb['sys_groupid_txt'] = 'Client';
 ?>
diff --git a/interface/web/dns/lib/lang/sk_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/sk_dns_soa_admin_list.lng
index 183d1a8349..74ba785900 100644
--- a/interface/web/dns/lib/lang/sk_dns_soa_admin_list.lng
+++ b/interface/web/dns/lib/lang/sk_dns_soa_admin_list.lng
@@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS';
 $wb['mbox_txt'] = 'Email';
 $wb['add_new_record_wizard_txt'] = 'Add new DNS Zone with Wizard';
 $wb['add_new_record_txt'] = 'Add new DNS Zone manually';
+$wb['import_zone_file_txt'] = 'Import Zone File';
 $wb['sys_groupid_txt'] = 'Client';
 ?>
diff --git a/interface/web/dns/lib/lang/tr_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/tr_dns_soa_admin_list.lng
index 490cdc7b4f..6f0bc7f985 100644
--- a/interface/web/dns/lib/lang/tr_dns_soa_admin_list.lng
+++ b/interface/web/dns/lib/lang/tr_dns_soa_admin_list.lng
@@ -7,5 +7,6 @@ $wb['ns_txt'] = 'Ad Sunucusu';
 $wb['mbox_txt'] = 'E-posta';
 $wb['add_new_record_wizard_txt'] = 'Yardımcı ile DNS Bölgesi Ekle';
 $wb['add_new_record_txt'] = 'El ile DNS Bölgesi Ekle';
+$wb['import_zone_file_txt'] = 'Bölge Dosyasını İçe Aktar';
 $wb['sys_groupid_txt'] = 'Müşteri';
 ?>
diff --git a/interface/web/dns/templates/dns_soa_admin_list.htm b/interface/web/dns/templates/dns_soa_admin_list.htm
index 79faa645fe..646b129578 100644
--- a/interface/web/dns/templates/dns_soa_admin_list.htm
+++ b/interface/web/dns/templates/dns_soa_admin_list.htm
@@ -24,7 +24,7 @@
             
                 <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_wizard.php">{tmpl_var name="add_new_record_wizard_txt"}</button>
                 <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_soa_edit.php">{tmpl_var name="add_new_record_txt"}</button>
-                <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_import.php">Import Zone File</button>
+                <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_import.php">{tmpl_var name="import_zone_file_txt"}</button>
             
         
 
-- 
GitLab


From cab126e67f196e4c26794007d95637811ea711a2 Mon Sep 17 00:00:00 2001
From: Thom Pol <thom@amsterdamtech.nl>
Date: Sat, 6 Jun 2020 23:11:55 +0200
Subject: [PATCH 234/242] Added translation function for Server Config (#2410)

---
 interface/web/admin/form/server_config.tform.php  | 4 ++--
 interface/web/admin/lib/lang/ar_server_config.lng | 1 +
 interface/web/admin/lib/lang/bg_server_config.lng | 1 +
 interface/web/admin/lib/lang/br_server_config.lng | 1 +
 interface/web/admin/lib/lang/ca_server_config.lng | 1 +
 interface/web/admin/lib/lang/cz_server_config.lng | 1 +
 interface/web/admin/lib/lang/de_server_config.lng | 1 +
 interface/web/admin/lib/lang/dk_server_config.lng | 1 +
 interface/web/admin/lib/lang/el_server_config.lng | 1 +
 interface/web/admin/lib/lang/en_server_config.lng | 1 +
 interface/web/admin/lib/lang/es_server_config.lng | 1 +
 interface/web/admin/lib/lang/fi_server_config.lng | 1 +
 interface/web/admin/lib/lang/fr_server_config.lng | 1 +
 interface/web/admin/lib/lang/hr_server_config.lng | 1 +
 interface/web/admin/lib/lang/hu_server_config.lng | 1 +
 interface/web/admin/lib/lang/id_server_config.lng | 1 +
 interface/web/admin/lib/lang/it_server_config.lng | 1 +
 interface/web/admin/lib/lang/ja_server_config.lng | 1 +
 interface/web/admin/lib/lang/nl_server_config.lng | 1 +
 interface/web/admin/lib/lang/pl_server_config.lng | 1 +
 interface/web/admin/lib/lang/pt_server_config.lng | 1 +
 interface/web/admin/lib/lang/ro_server_config.lng | 1 +
 interface/web/admin/lib/lang/ru_server_config.lng | 1 +
 interface/web/admin/lib/lang/se_server_config.lng | 1 +
 interface/web/admin/lib/lang/sk_server_config.lng | 1 +
 interface/web/admin/lib/lang/tr_server_config.lng | 1 +
 26 files changed, 27 insertions(+), 2 deletions(-)

diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php
index 945e422da2..bbd6899761 100644
--- a/interface/web/admin/form/server_config.tform.php
+++ b/interface/web/admin/form/server_config.tform.php
@@ -33,7 +33,7 @@
 
  */
 
-$form["title"] = "Server Config";
+$form["title"] = "server_config";
 $form["description"] = "";
 $form["name"] = "server_config";
 $form["action"] = "server_config_edit.php";
@@ -2022,4 +2022,4 @@ if(!isset($mail_config['rspamd_available']) || $mail_config['rspamd_available']
 	$form['tabs']['mail']['fields']['content_filter']['default'] = 'amavisd';
 	unset($form['tabs']['mail']['fields']['content_filter']['value']['rspamd']);
 	unset($form['tabs']['mail']['fields']['rspamd_password']);
-}*/
\ No newline at end of file
+}*/
diff --git a/interface/web/admin/lib/lang/ar_server_config.lng b/interface/web/admin/lib/lang/ar_server_config.lng
index 520fdb1028..bfefeec22c 100644
--- a/interface/web/admin/lib/lang/ar_server_config.lng
+++ b/interface/web/admin/lib/lang/ar_server_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['server_config'] = 'Server Config';
 $wb['jailkit_chroot_home_txt'] = 'Jailkit chroot home';
 $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit chroot app sections';
 $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chrooted applications';
diff --git a/interface/web/admin/lib/lang/bg_server_config.lng b/interface/web/admin/lib/lang/bg_server_config.lng
index 1ca873fd2d..2003a6476d 100644
--- a/interface/web/admin/lib/lang/bg_server_config.lng
+++ b/interface/web/admin/lib/lang/bg_server_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['server_config'] = 'Server Config';
 $wb['jailkit_chroot_home_txt'] = 'Jailkit chroot home';
 $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit chroot app sections';
 $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chrooted applications';
diff --git a/interface/web/admin/lib/lang/br_server_config.lng b/interface/web/admin/lib/lang/br_server_config.lng
index 79a956cfad..4fc1e043fa 100644
--- a/interface/web/admin/lib/lang/br_server_config.lng
+++ b/interface/web/admin/lib/lang/br_server_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['server_config'] = 'Server Config';
 $wb['ufw_enable_txt'] = 'Habilitar';
 $wb['ufw_manage_builtins_txt'] = 'Gerenciar regras embutidas';
 $wb['ufw_ipv6_txt'] = 'Habilitar IPv6';
diff --git a/interface/web/admin/lib/lang/ca_server_config.lng b/interface/web/admin/lib/lang/ca_server_config.lng
index b1ac3545e7..e016135c8d 100644
--- a/interface/web/admin/lib/lang/ca_server_config.lng
+++ b/interface/web/admin/lib/lang/ca_server_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['server_config'] = 'Server Config';
 $wb['ufw_enable_txt'] = 'Enable';
 $wb['ufw_manage_builtins_txt'] = 'Manage Builtin Rules';
 $wb['ufw_ipv6_txt'] = 'Enable IPv6';
diff --git a/interface/web/admin/lib/lang/cz_server_config.lng b/interface/web/admin/lib/lang/cz_server_config.lng
index a4219cafa3..2a91f3af6e 100644
--- a/interface/web/admin/lib/lang/cz_server_config.lng
+++ b/interface/web/admin/lib/lang/cz_server_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['server_config'] = 'Server Config';
 $wb['jailkit_chroot_home_txt'] = 'Jailkit chroot adresář';
 $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit chroot app sekce';
 $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chrootované aplikace';
diff --git a/interface/web/admin/lib/lang/de_server_config.lng b/interface/web/admin/lib/lang/de_server_config.lng
index aa7818f9ad..9159198579 100644
--- a/interface/web/admin/lib/lang/de_server_config.lng
+++ b/interface/web/admin/lib/lang/de_server_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['server_config'] = 'Server Config';
 $wb['jailkit_chroot_home_txt'] = 'Jailkit Chroot home';
 $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit Chroot Anwendungsbereiche';
 $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit Chrooted Anwendungen';
diff --git a/interface/web/admin/lib/lang/dk_server_config.lng b/interface/web/admin/lib/lang/dk_server_config.lng
index 0020d5347a..3a5f00b7af 100644
--- a/interface/web/admin/lib/lang/dk_server_config.lng
+++ b/interface/web/admin/lib/lang/dk_server_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['server_config'] = 'Server Config';
 $wb['ufw_enable_txt'] = 'Enable';
 $wb['ufw_manage_builtins_txt'] = 'Administrer Builtin Rules';
 $wb['ufw_ipv6_txt'] = 'Enable IPv6';
diff --git a/interface/web/admin/lib/lang/el_server_config.lng b/interface/web/admin/lib/lang/el_server_config.lng
index 29ad1bf454..cd40efc993 100644
--- a/interface/web/admin/lib/lang/el_server_config.lng
+++ b/interface/web/admin/lib/lang/el_server_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['server_config'] = 'Server Config';
 $wb['jailkit_chroot_home_txt'] = 'Jailkit chroot home';
 $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit chroot app sections';
 $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chrooted applications';
diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng
index 9093ac6baa..e66864c846 100644
--- a/interface/web/admin/lib/lang/en_server_config.lng
+++ b/interface/web/admin/lib/lang/en_server_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['server_config'] = 'Server Config';
 $wb["ufw_enable_txt"] = 'Enable';
 $wb["ufw_manage_builtins_txt"] = 'Manage Builtin Rules';
 $wb["ufw_ipv6_txt"] = 'Enable IPv6';
diff --git a/interface/web/admin/lib/lang/es_server_config.lng b/interface/web/admin/lib/lang/es_server_config.lng
index 2b1ca0a221..014a3879da 100755
--- a/interface/web/admin/lib/lang/es_server_config.lng
+++ b/interface/web/admin/lib/lang/es_server_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['server_config'] = 'Server Config';
 $wb['add_web_users_to_sshusers_group_txt'] = 'Añadir usuarios web al grupo -sshusers-';
 $wb['admin_notify_events_txt'] = 'Enviar correo al administrador a partir de siguiente nivel';
 $wb['apache_group_error_empty'] = 'El grupo de Apache está vacío.';
diff --git a/interface/web/admin/lib/lang/fi_server_config.lng b/interface/web/admin/lib/lang/fi_server_config.lng
index 6724ea0e85..8aa91fdd8f 100755
--- a/interface/web/admin/lib/lang/fi_server_config.lng
+++ b/interface/web/admin/lib/lang/fi_server_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['server_config'] = 'Server Config';
 $wb['jailkit_chroot_home_txt'] = 'Jailkit chroot-kotikansio';
 $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit chroot-ohjelmaosiot';
 $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chrooted-ohjelmat';
diff --git a/interface/web/admin/lib/lang/fr_server_config.lng b/interface/web/admin/lib/lang/fr_server_config.lng
index a505ceef37..7f8f48374e 100644
--- a/interface/web/admin/lib/lang/fr_server_config.lng
+++ b/interface/web/admin/lib/lang/fr_server_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['server_config'] = 'Server Config';
 $wb['jailkit_chroot_home_txt'] = 'Accueil du chroot Jailkit';
 $wb['jailkit_chroot_app_sections_txt'] = 'Sections des applications chrootées Jailkit';
 $wb['jailkit_chroot_app_programs_txt'] = 'Applications chrootées Jailkit';
diff --git a/interface/web/admin/lib/lang/hr_server_config.lng b/interface/web/admin/lib/lang/hr_server_config.lng
index a390c29e6c..1559a484b2 100644
--- a/interface/web/admin/lib/lang/hr_server_config.lng
+++ b/interface/web/admin/lib/lang/hr_server_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['server_config'] = 'Server Config';
 $wb['jailkit_chroot_home_txt'] = 'Jailkit chroot direktorij';
 $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit chroot app sekcije';
 $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chrootane aplikacije';
diff --git a/interface/web/admin/lib/lang/hu_server_config.lng b/interface/web/admin/lib/lang/hu_server_config.lng
index 3da2d0ad4e..46c1e11f2a 100644
--- a/interface/web/admin/lib/lang/hu_server_config.lng
+++ b/interface/web/admin/lib/lang/hu_server_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['server_config'] = 'Server Config';
 $wb['jailkit_chroot_home_txt'] = 'Jailkit chroot home';
 $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit chroot app sections';
 $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chrooted applications';
diff --git a/interface/web/admin/lib/lang/id_server_config.lng b/interface/web/admin/lib/lang/id_server_config.lng
index c79b296072..28cf2d2eb8 100644
--- a/interface/web/admin/lib/lang/id_server_config.lng
+++ b/interface/web/admin/lib/lang/id_server_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['server_config'] = 'Server Config';
 $wb['jailkit_chroot_home_txt'] = 'Home chroot Jailkit';
 $wb['jailkit_chroot_app_sections_txt'] = 'Bagian app chroot';
 $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit aplikasi yang ter-chroot';
diff --git a/interface/web/admin/lib/lang/it_server_config.lng b/interface/web/admin/lib/lang/it_server_config.lng
index 89491ae497..53e0c8f7e8 100644
--- a/interface/web/admin/lib/lang/it_server_config.lng
+++ b/interface/web/admin/lib/lang/it_server_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['server_config'] = 'Server Config';
 $wb['jailkit_chroot_home_txt'] = 'Jailkit chroot home';
 $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit chroot app sections';
 $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chrooted applications';
diff --git a/interface/web/admin/lib/lang/ja_server_config.lng b/interface/web/admin/lib/lang/ja_server_config.lng
index 6569591233..0a8650b755 100644
--- a/interface/web/admin/lib/lang/ja_server_config.lng
+++ b/interface/web/admin/lib/lang/ja_server_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['server_config'] = 'Server Config';
 $wb['jailkit_chroot_home_txt'] = 'chroot ホーム';
 $wb['jailkit_chroot_app_sections_txt'] = '利用可能アプリケーションセクション';
 $wb['jailkit_chroot_app_programs_txt'] = '利用可能アプリケーション';
diff --git a/interface/web/admin/lib/lang/nl_server_config.lng b/interface/web/admin/lib/lang/nl_server_config.lng
index 1e398f9bdc..0fc75f7c6e 100644
--- a/interface/web/admin/lib/lang/nl_server_config.lng
+++ b/interface/web/admin/lib/lang/nl_server_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['server_config'] = 'Server Config';
 $wb['jailkit_chroot_home_txt'] = 'Jailkit chroot home';
 $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit chroot app secties';
 $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chrooted applicaties';
diff --git a/interface/web/admin/lib/lang/pl_server_config.lng b/interface/web/admin/lib/lang/pl_server_config.lng
index 87ec7fc285..3bcd924c80 100644
--- a/interface/web/admin/lib/lang/pl_server_config.lng
+++ b/interface/web/admin/lib/lang/pl_server_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['server_config'] = 'Server Config';
 $wb['jailkit_chroot_home_txt'] = 'Adres roota Jailkit';
 $wb['jailkit_chroot_app_sections_txt'] = 'Sekcje aplikacji roota Jailkit';
 $wb['jailkit_chroot_app_programs_txt'] = 'Ścieżki aplikacji roota Jailkit';
diff --git a/interface/web/admin/lib/lang/pt_server_config.lng b/interface/web/admin/lib/lang/pt_server_config.lng
index e1df35f548..4f548697b8 100644
--- a/interface/web/admin/lib/lang/pt_server_config.lng
+++ b/interface/web/admin/lib/lang/pt_server_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['server_config'] = 'Server Config';
 $wb['jailkit_chroot_home_txt'] = 'Raiz do Chroot Jailkit';
 $wb['jailkit_chroot_app_sections_txt'] = 'Aplicações Jailkit chroot (Sessões)';
 $wb['jailkit_chroot_app_programs_txt'] = 'Aplicações Jailkit em ambiente chroot';
diff --git a/interface/web/admin/lib/lang/ro_server_config.lng b/interface/web/admin/lib/lang/ro_server_config.lng
index 6d7dc3d8ca..40cfd9caa3 100644
--- a/interface/web/admin/lib/lang/ro_server_config.lng
+++ b/interface/web/admin/lib/lang/ro_server_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['server_config'] = 'Server Config';
 $wb['jailkit_chroot_home_txt'] = 'Jailkit chroot home';
 $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit chroot app sections';
 $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chrooted applications';
diff --git a/interface/web/admin/lib/lang/ru_server_config.lng b/interface/web/admin/lib/lang/ru_server_config.lng
index 027e41c13e..902803ea36 100644
--- a/interface/web/admin/lib/lang/ru_server_config.lng
+++ b/interface/web/admin/lib/lang/ru_server_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['server_config'] = 'Server Config';
 $wb['jailkit_chroot_home_txt'] = 'Путь к домашней папке Jailkit chroot';
 $wb['jailkit_chroot_app_sections_txt'] = 'Пакеты программ Jailkit chroot';
 $wb['jailkit_chroot_app_programs_txt'] = 'Программы Jailkit chrooted';
diff --git a/interface/web/admin/lib/lang/se_server_config.lng b/interface/web/admin/lib/lang/se_server_config.lng
index be8742f80c..6afbe56978 100644
--- a/interface/web/admin/lib/lang/se_server_config.lng
+++ b/interface/web/admin/lib/lang/se_server_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['server_config'] = 'Server Config';
 $wb['jailkit_chroot_home_txt'] = 'Jailkit chroot home';
 $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit chroot app sections';
 $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chrooted applications';
diff --git a/interface/web/admin/lib/lang/sk_server_config.lng b/interface/web/admin/lib/lang/sk_server_config.lng
index 659a83e7d4..12fda6bb81 100644
--- a/interface/web/admin/lib/lang/sk_server_config.lng
+++ b/interface/web/admin/lib/lang/sk_server_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['server_config'] = 'Server Config';
 $wb['jailkit_chroot_home_txt'] = 'Jailkit chroot domov';
 $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit chroot app sekcia';
 $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chrooted aplikácia';
diff --git a/interface/web/admin/lib/lang/tr_server_config.lng b/interface/web/admin/lib/lang/tr_server_config.lng
index 76812dd90d..92e7c2dcc9 100644
--- a/interface/web/admin/lib/lang/tr_server_config.lng
+++ b/interface/web/admin/lib/lang/tr_server_config.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['server_config'] = 'Server Config';
 $wb['ufw_enable_txt'] = 'Etkin';
 $wb['ufw_manage_builtins_txt'] = 'İç Kural Yönetimi';
 $wb['ufw_ipv6_txt'] = 'IPv6 Kullanılsın';
-- 
GitLab


From 63e091f12c22df2baeb6095bfc4c6f848478026f Mon Sep 17 00:00:00 2001
From: Thom Pol <thom@amsterdamtech.nl>
Date: Sat, 6 Jun 2020 23:13:43 +0200
Subject: [PATCH 235/242] Changed Server Config translation

---
 interface/web/admin/lib/lang/nl_server_config.lng | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/interface/web/admin/lib/lang/nl_server_config.lng b/interface/web/admin/lib/lang/nl_server_config.lng
index 0fc75f7c6e..8cb0a1e140 100644
--- a/interface/web/admin/lib/lang/nl_server_config.lng
+++ b/interface/web/admin/lib/lang/nl_server_config.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['server_config'] = 'Server Config';
+$wb['server_config'] = 'Server Configuratie';
 $wb['jailkit_chroot_home_txt'] = 'Jailkit chroot home';
 $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit chroot app secties';
 $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chrooted applicaties';
-- 
GitLab


From 870f610bfc75c329581bbaeb72b7a9a40ab11e18 Mon Sep 17 00:00:00 2001
From: Thom Pol <thom@amsterdamtech.nl>
Date: Sun, 7 Jun 2020 00:03:05 +0200
Subject: [PATCH 236/242] Added translation function for User (#2410)

---
 interface/web/admin/form/remote_user.tform.php  | 4 ++--
 interface/web/admin/form/users.tform.php        | 4 ++--
 interface/web/admin/lib/lang/ar_remote_user.lng | 1 +
 interface/web/admin/lib/lang/ar_users.lng       | 1 +
 interface/web/admin/lib/lang/bg_remote_user.lng | 1 +
 interface/web/admin/lib/lang/bg_users.lng       | 1 +
 interface/web/admin/lib/lang/br_remote_user.lng | 1 +
 interface/web/admin/lib/lang/br_users.lng       | 1 +
 interface/web/admin/lib/lang/ca_remote_user.lng | 1 +
 interface/web/admin/lib/lang/ca_users.lng       | 1 +
 interface/web/admin/lib/lang/cz_remote_user.lng | 1 +
 interface/web/admin/lib/lang/cz_users.lng       | 1 +
 interface/web/admin/lib/lang/de_remote_user.lng | 1 +
 interface/web/admin/lib/lang/de_users.lng       | 1 +
 interface/web/admin/lib/lang/dk_remote_user.lng | 1 +
 interface/web/admin/lib/lang/dk_users.lng       | 1 +
 interface/web/admin/lib/lang/el_remote_user.lng | 1 +
 interface/web/admin/lib/lang/el_users.lng       | 1 +
 interface/web/admin/lib/lang/en_remote_user.lng | 1 +
 interface/web/admin/lib/lang/en_users.lng       | 1 +
 interface/web/admin/lib/lang/es_remote_user.lng | 1 +
 interface/web/admin/lib/lang/es_users.lng       | 1 +
 interface/web/admin/lib/lang/fi_remote_user.lng | 1 +
 interface/web/admin/lib/lang/fi_users.lng       | 1 +
 interface/web/admin/lib/lang/fr_remote_user.lng | 1 +
 interface/web/admin/lib/lang/fr_users.lng       | 1 +
 interface/web/admin/lib/lang/hr_remote_user.lng | 1 +
 interface/web/admin/lib/lang/hr_users.lng       | 1 +
 interface/web/admin/lib/lang/hu_remote_user.lng | 1 +
 interface/web/admin/lib/lang/hu_users.lng       | 1 +
 interface/web/admin/lib/lang/id_remote_user.lng | 1 +
 interface/web/admin/lib/lang/id_users.lng       | 1 +
 interface/web/admin/lib/lang/it_remote_user.lng | 1 +
 interface/web/admin/lib/lang/it_users.lng       | 1 +
 interface/web/admin/lib/lang/ja_remote_user.lng | 1 +
 interface/web/admin/lib/lang/ja_users.lng       | 1 +
 interface/web/admin/lib/lang/nl_remote_user.lng | 1 +
 interface/web/admin/lib/lang/nl_users.lng       | 1 +
 interface/web/admin/lib/lang/pl_remote_user.lng | 1 +
 interface/web/admin/lib/lang/pl_users.lng       | 1 +
 interface/web/admin/lib/lang/pt_remote_user.lng | 1 +
 interface/web/admin/lib/lang/pt_users.lng       | 1 +
 interface/web/admin/lib/lang/ro_remote_user.lng | 1 +
 interface/web/admin/lib/lang/ro_users.lng       | 1 +
 interface/web/admin/lib/lang/ru_remote_user.lng | 1 +
 interface/web/admin/lib/lang/ru_users.lng       | 1 +
 interface/web/admin/lib/lang/se_remote_user.lng | 1 +
 interface/web/admin/lib/lang/se_users.lng       | 1 +
 interface/web/admin/lib/lang/sk_remote_user.lng | 1 +
 interface/web/admin/lib/lang/sk_users.lng       | 1 +
 interface/web/admin/lib/lang/tr_remote_user.lng | 1 +
 interface/web/admin/lib/lang/tr_users.lng       | 1 +
 52 files changed, 54 insertions(+), 4 deletions(-)

diff --git a/interface/web/admin/form/remote_user.tform.php b/interface/web/admin/form/remote_user.tform.php
index 3b920ccb4a..9263266a27 100644
--- a/interface/web/admin/form/remote_user.tform.php
+++ b/interface/web/admin/form/remote_user.tform.php
@@ -45,7 +45,7 @@ if(is_array($modules)) {
 	}
 }
 
-$form["title"]    = "Remote user";
+$form["title"]    = "remote_user_txt";
 $form["description"]  = "";
 $form["name"]    = "remote_user";
 $form["action"]   = "remote_user_edit.php";
@@ -63,7 +63,7 @@ $form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update,
 $form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete
 
 $form["tabs"]['remote_user'] = array (
-	'title'  => "Remote User",
+	'title'  => "remote_user_txt",
 	'width'  => 100,
 	'template'  => "templates/remote_user_edit.htm",
 	'fields'  => array (
diff --git a/interface/web/admin/form/users.tform.php b/interface/web/admin/form/users.tform.php
index be77122b10..4f08de4098 100644
--- a/interface/web/admin/form/users.tform.php
+++ b/interface/web/admin/form/users.tform.php
@@ -60,7 +60,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 */
 
-$form['title']   = 'Users';
+$form['title']   = 'users_txt';
 $form['description']  = 'Form to edit systemusers.';
 $form['name']   = 'users';
 $form['action']  = 'users_edit.php';
@@ -129,7 +129,7 @@ if(is_array($tmp_records)) {
 }
 
 $form['tabs']['users'] = array (
-	'title'  => 'Users',
+	'title'  => 'users_txt',
 	'width'  => 80,
 	'template'  => 'templates/users_user_edit.htm',
 	'fields'  => array (
diff --git a/interface/web/admin/lib/lang/ar_remote_user.lng b/interface/web/admin/lib/lang/ar_remote_user.lng
index d0504005e3..8c70904102 100644
--- a/interface/web/admin/lib/lang/ar_remote_user.lng
+++ b/interface/web/admin/lib/lang/ar_remote_user.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['remote_user_txt'] = 'Remote User'
 $wb['username_txt'] = 'Username';
 $wb['password_txt'] = 'Password';
 $wb['function_txt'] = 'Functions';
diff --git a/interface/web/admin/lib/lang/ar_users.lng b/interface/web/admin/lib/lang/ar_users.lng
index dcbc4f4727..dd4ef0143d 100644
--- a/interface/web/admin/lib/lang/ar_users.lng
+++ b/interface/web/admin/lib/lang/ar_users.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['users_txt'] = 'Users';
 $wb['username_txt'] = 'Username';
 $wb['username_err'] = 'The username is too long or contains invalid characters.';
 $wb['username_empty'] = 'The username is empty.';
diff --git a/interface/web/admin/lib/lang/bg_remote_user.lng b/interface/web/admin/lib/lang/bg_remote_user.lng
index 6eac31e4fe..35132ab452 100644
--- a/interface/web/admin/lib/lang/bg_remote_user.lng
+++ b/interface/web/admin/lib/lang/bg_remote_user.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['remote_user_txt'] = 'Remote User'
 $wb['username_txt'] = 'Потребителско име';
 $wb['password_txt'] = 'Парола';
 $wb['function_txt'] = 'Функции';
diff --git a/interface/web/admin/lib/lang/bg_users.lng b/interface/web/admin/lib/lang/bg_users.lng
index e8dc631a59..801d9e70a6 100644
--- a/interface/web/admin/lib/lang/bg_users.lng
+++ b/interface/web/admin/lib/lang/bg_users.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['users_txt'] = 'Users';
 $wb['username_txt'] = 'Потребителско име';
 $wb['username_err'] = 'Потребителското име е твърде дълго или съдържа непозволени символи.';
 $wb['username_empty'] = 'Полето с потребителското име е празно.';
diff --git a/interface/web/admin/lib/lang/br_remote_user.lng b/interface/web/admin/lib/lang/br_remote_user.lng
index fcaa6732c8..b698af128d 100644
--- a/interface/web/admin/lib/lang/br_remote_user.lng
+++ b/interface/web/admin/lib/lang/br_remote_user.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['remote_user_txt'] = 'Remote User'
 $wb['username_txt'] = 'Usuário';
 $wb['password_txt'] = 'Senha';
 $wb['function_txt'] = 'Funções';
diff --git a/interface/web/admin/lib/lang/br_users.lng b/interface/web/admin/lib/lang/br_users.lng
index 6d71a39e4c..18e6085b83 100644
--- a/interface/web/admin/lib/lang/br_users.lng
+++ b/interface/web/admin/lib/lang/br_users.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['users_txt'] = 'Users';
 $wb['username_txt'] = 'Usuário';
 $wb['username_err'] = 'O nome do usuário é muito longo ou contém caracteres inválidos.';
 $wb['username_empty'] = 'O nome do usuário está em branco.';
diff --git a/interface/web/admin/lib/lang/ca_remote_user.lng b/interface/web/admin/lib/lang/ca_remote_user.lng
index 2fc633b555..dc39a8e798 100644
--- a/interface/web/admin/lib/lang/ca_remote_user.lng
+++ b/interface/web/admin/lib/lang/ca_remote_user.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['remote_user_txt'] = 'Remote User'
 $wb['username_txt'] = 'Username';
 $wb['password_txt'] = 'Password';
 $wb['function_txt'] = 'Functions';
diff --git a/interface/web/admin/lib/lang/ca_users.lng b/interface/web/admin/lib/lang/ca_users.lng
index dcbc4f4727..dd4ef0143d 100644
--- a/interface/web/admin/lib/lang/ca_users.lng
+++ b/interface/web/admin/lib/lang/ca_users.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['users_txt'] = 'Users';
 $wb['username_txt'] = 'Username';
 $wb['username_err'] = 'The username is too long or contains invalid characters.';
 $wb['username_empty'] = 'The username is empty.';
diff --git a/interface/web/admin/lib/lang/cz_remote_user.lng b/interface/web/admin/lib/lang/cz_remote_user.lng
index aeacc442ca..f8d0f3d5e5 100644
--- a/interface/web/admin/lib/lang/cz_remote_user.lng
+++ b/interface/web/admin/lib/lang/cz_remote_user.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['remote_user_txt'] = 'Remote User'
 $wb['username_txt'] = 'Uživatelské jméno:';
 $wb['password_txt'] = 'Heslo:';
 $wb['function_txt'] = 'Funkce:';
diff --git a/interface/web/admin/lib/lang/cz_users.lng b/interface/web/admin/lib/lang/cz_users.lng
index b517d73290..9aa92402f0 100644
--- a/interface/web/admin/lib/lang/cz_users.lng
+++ b/interface/web/admin/lib/lang/cz_users.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['users_txt'] = 'Users';
 $wb['username_txt'] = 'Uživatelské jméno';
 $wb['username_err'] = 'Uživatelské jméno je příliš dlouhé nebo obsahuje neplatné znaky.';
 $wb['username_empty'] = 'Uživatelské jméno je prázdné.';
diff --git a/interface/web/admin/lib/lang/de_remote_user.lng b/interface/web/admin/lib/lang/de_remote_user.lng
index 164a0fb81a..e1f932a904 100644
--- a/interface/web/admin/lib/lang/de_remote_user.lng
+++ b/interface/web/admin/lib/lang/de_remote_user.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['remote_user_txt'] = 'Remote User'
 $wb['username_txt'] = 'Benutzername';
 $wb['password_txt'] = 'Passwort';
 $wb['function_txt'] = 'Funktionen';
diff --git a/interface/web/admin/lib/lang/de_users.lng b/interface/web/admin/lib/lang/de_users.lng
index 255e7bca0b..9bc13061c0 100644
--- a/interface/web/admin/lib/lang/de_users.lng
+++ b/interface/web/admin/lib/lang/de_users.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['users_txt'] = 'Users';
 $wb['username_txt'] = 'Benutzername';
 $wb['username_err'] = 'Der Benutzername enthält ungültige Zeichen.';
 $wb['passwort_txt'] = 'Passwort';
diff --git a/interface/web/admin/lib/lang/dk_remote_user.lng b/interface/web/admin/lib/lang/dk_remote_user.lng
index 80f61c8929..e7f020e411 100644
--- a/interface/web/admin/lib/lang/dk_remote_user.lng
+++ b/interface/web/admin/lib/lang/dk_remote_user.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['remote_user_txt'] = 'Remote User'
 $wb['username_txt'] = 'Brugernavn:';
 $wb['password_txt'] = 'Adgangskode:';
 $wb['function_txt'] = 'Funktioner:';
diff --git a/interface/web/admin/lib/lang/dk_users.lng b/interface/web/admin/lib/lang/dk_users.lng
index 2e86ab4ca9..f5811d771d 100644
--- a/interface/web/admin/lib/lang/dk_users.lng
+++ b/interface/web/admin/lib/lang/dk_users.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['users_txt'] = 'Users';
 $wb['username_txt'] = 'Brugernavn';
 $wb['username_err'] = 'Brugernavnet er for langt eller indeholder ugyldige karaktere.';
 $wb['username_empty'] = 'Brugernavnet er tomt.';
diff --git a/interface/web/admin/lib/lang/el_remote_user.lng b/interface/web/admin/lib/lang/el_remote_user.lng
index c38f1de2f0..72d9eb29dd 100644
--- a/interface/web/admin/lib/lang/el_remote_user.lng
+++ b/interface/web/admin/lib/lang/el_remote_user.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['remote_user_txt'] = 'Remote User'
 $wb['username_txt'] = 'Όνομα Χρήστη:';
 $wb['password_txt'] = 'Συνθηματικό:';
 $wb['function_txt'] = 'Ενέργειες:';
diff --git a/interface/web/admin/lib/lang/el_users.lng b/interface/web/admin/lib/lang/el_users.lng
index f0307b95ec..e25fbe17fa 100644
--- a/interface/web/admin/lib/lang/el_users.lng
+++ b/interface/web/admin/lib/lang/el_users.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['users_txt'] = 'Users';
 $wb['username_txt'] = 'Όνομα Χρήστη';
 $wb['username_err'] = 'Το όνομα χρήστη είναι πολύ μεγάλο ή περιέχει μη επιτρεπόμενους χαρακτήρες';
 $wb['username_empty'] = 'Το όνομα χρήστη δεν έχει οριστεί.';
diff --git a/interface/web/admin/lib/lang/en_remote_user.lng b/interface/web/admin/lib/lang/en_remote_user.lng
index 2fc633b555..dc39a8e798 100644
--- a/interface/web/admin/lib/lang/en_remote_user.lng
+++ b/interface/web/admin/lib/lang/en_remote_user.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['remote_user_txt'] = 'Remote User'
 $wb['username_txt'] = 'Username';
 $wb['password_txt'] = 'Password';
 $wb['function_txt'] = 'Functions';
diff --git a/interface/web/admin/lib/lang/en_users.lng b/interface/web/admin/lib/lang/en_users.lng
index 931c73e8eb..72d93eb4d2 100644
--- a/interface/web/admin/lib/lang/en_users.lng
+++ b/interface/web/admin/lib/lang/en_users.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['users_txt'] = 'Users';
 $wb["username_txt"] = 'Username';
 $wb["username_err"] = 'The username is too long or contains invalid characters.';
 $wb["username_empty"] = 'The username is empty.';
diff --git a/interface/web/admin/lib/lang/es_remote_user.lng b/interface/web/admin/lib/lang/es_remote_user.lng
index 7cefa1e5db..b14c4b408b 100755
--- a/interface/web/admin/lib/lang/es_remote_user.lng
+++ b/interface/web/admin/lib/lang/es_remote_user.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['remote_user_txt'] = 'Remote User'
 $wb['Client functions'] = 'Funciones para clientes';
 $wb['DNS a functions'] = 'Funciones DNS para registro A';
 $wb['DNS aaaa functions'] = 'Funciones DNS para registro AAAA';
diff --git a/interface/web/admin/lib/lang/es_users.lng b/interface/web/admin/lib/lang/es_users.lng
index 65baeb666f..127d5431e2 100755
--- a/interface/web/admin/lib/lang/es_users.lng
+++ b/interface/web/admin/lib/lang/es_users.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['users_txt'] = 'Users';
 $wb['active_txt'] = 'Habilitado';
 $wb['app_theme_txt'] = 'Diseño';
 $wb['client_not_admin_err'] = 'Un usuario que pertenece a un cliente no puede ser del tipo: admin';
diff --git a/interface/web/admin/lib/lang/fi_remote_user.lng b/interface/web/admin/lib/lang/fi_remote_user.lng
index 2ae3420d62..8b943d3e52 100644
--- a/interface/web/admin/lib/lang/fi_remote_user.lng
+++ b/interface/web/admin/lib/lang/fi_remote_user.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['remote_user_txt'] = 'Remote User'
 $wb['username_txt'] = 'Käyttäjätunnus';
 $wb['password_txt'] = 'Salasana';
 $wb['function_txt'] = 'Toiminnot';
diff --git a/interface/web/admin/lib/lang/fi_users.lng b/interface/web/admin/lib/lang/fi_users.lng
index 199601f520..3e44e56678 100755
--- a/interface/web/admin/lib/lang/fi_users.lng
+++ b/interface/web/admin/lib/lang/fi_users.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['users_txt'] = 'Users';
 $wb['username_txt'] = 'Käyttäjätunnus';
 $wb['username_err'] = 'Käyttäjätunnus on liian pitkä tai sisältää kiellettyjä merkkejä.';
 $wb['username_empty'] = 'Käyttäjätunnus on tyhjä.';
diff --git a/interface/web/admin/lib/lang/fr_remote_user.lng b/interface/web/admin/lib/lang/fr_remote_user.lng
index 1594e60fb4..f2f8098945 100644
--- a/interface/web/admin/lib/lang/fr_remote_user.lng
+++ b/interface/web/admin/lib/lang/fr_remote_user.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['remote_user_txt'] = 'Remote User'
 $wb['username_txt'] = 'Identifiant';
 $wb['password_txt'] = 'Mot de passe';
 $wb['function_txt'] = 'Fonctions';
diff --git a/interface/web/admin/lib/lang/fr_users.lng b/interface/web/admin/lib/lang/fr_users.lng
index 6cc3e116b4..2f91cab83a 100644
--- a/interface/web/admin/lib/lang/fr_users.lng
+++ b/interface/web/admin/lib/lang/fr_users.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['users_txt'] = 'Users';
 $wb['username_txt'] = 'Nom d’utilisateur';
 $wb['username_err'] = 'Le nom d’utilisateur est trop long ou contient des caractères invalides.';
 $wb['passwort_txt'] = 'Mot de passe';
diff --git a/interface/web/admin/lib/lang/hr_remote_user.lng b/interface/web/admin/lib/lang/hr_remote_user.lng
index 069177e5ed..200e15544b 100644
--- a/interface/web/admin/lib/lang/hr_remote_user.lng
+++ b/interface/web/admin/lib/lang/hr_remote_user.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['remote_user_txt'] = 'Remote User'
 $wb['username_txt'] = 'Korisničko ime';
 $wb['password_txt'] = 'Å ifra';
 $wb['function_txt'] = 'Funkcije';
diff --git a/interface/web/admin/lib/lang/hr_users.lng b/interface/web/admin/lib/lang/hr_users.lng
index 7be3f968f2..c274a9498d 100644
--- a/interface/web/admin/lib/lang/hr_users.lng
+++ b/interface/web/admin/lib/lang/hr_users.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['users_txt'] = 'Users';
 $wb['username_txt'] = 'Korisničko ime';
 $wb['username_err'] = 'Korisničko ime je predugačko ili sadrži nedozvoljene znakove.';
 $wb['username_empty'] = 'Korisničko ime je prazno.';
diff --git a/interface/web/admin/lib/lang/hu_remote_user.lng b/interface/web/admin/lib/lang/hu_remote_user.lng
index bae9d82f53..278d2d0434 100644
--- a/interface/web/admin/lib/lang/hu_remote_user.lng
+++ b/interface/web/admin/lib/lang/hu_remote_user.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['remote_user_txt'] = 'Remote User'
 $wb['username_txt'] = 'Felhasználónév';
 $wb['password_txt'] = 'Jelszó';
 $wb['function_txt'] = 'Funkciók';
diff --git a/interface/web/admin/lib/lang/hu_users.lng b/interface/web/admin/lib/lang/hu_users.lng
index e2cf25fb79..5cb86c850a 100644
--- a/interface/web/admin/lib/lang/hu_users.lng
+++ b/interface/web/admin/lib/lang/hu_users.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['users_txt'] = 'Users';
 $wb['username_txt'] = 'Felhasználónév';
 $wb['username_err'] = 'A Felhasználónév túl hosszú vagy érvénytelen karaktereket tartalmaz';
 $wb['username_empty'] = 'A Felhasználónév üres.';
diff --git a/interface/web/admin/lib/lang/id_remote_user.lng b/interface/web/admin/lib/lang/id_remote_user.lng
index cc6efb627a..740ed6fe71 100644
--- a/interface/web/admin/lib/lang/id_remote_user.lng
+++ b/interface/web/admin/lib/lang/id_remote_user.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['remote_user_txt'] = 'Remote User'
 $wb['username_txt'] = 'Nama pengguna';
 $wb['password_txt'] = 'Kata Sandi';
 $wb['function_txt'] = 'Fungsi';
diff --git a/interface/web/admin/lib/lang/id_users.lng b/interface/web/admin/lib/lang/id_users.lng
index f9e961192c..e6ed3d5bef 100644
--- a/interface/web/admin/lib/lang/id_users.lng
+++ b/interface/web/admin/lib/lang/id_users.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['users_txt'] = 'Users';
 $wb['username_txt'] = 'Nama Pengguna';
 $wb['username_err'] = 'Nama pengguna terlalu panjang atau mengandung karakter yang tidak valid.';
 $wb['username_empty'] = 'Nama pengguna kosong.';
diff --git a/interface/web/admin/lib/lang/it_remote_user.lng b/interface/web/admin/lib/lang/it_remote_user.lng
index caef58a8c6..0d5e550d05 100644
--- a/interface/web/admin/lib/lang/it_remote_user.lng
+++ b/interface/web/admin/lib/lang/it_remote_user.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['remote_user_txt'] = 'Remote User'
 $wb['username_txt'] = 'Nome Utente';
 $wb['password_txt'] = 'Password';
 $wb['function_txt'] = 'Funzioni';
diff --git a/interface/web/admin/lib/lang/it_users.lng b/interface/web/admin/lib/lang/it_users.lng
index 1bde73a67b..60c80063f4 100644
--- a/interface/web/admin/lib/lang/it_users.lng
+++ b/interface/web/admin/lib/lang/it_users.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['users_txt'] = 'Users';
 $wb['username_txt'] = 'Nome utente';
 $wb['username_err'] = 'Nome utente troppo lungo o avente caratteri non validi.';
 $wb['username_empty'] = 'Nome utente mancante.';
diff --git a/interface/web/admin/lib/lang/ja_remote_user.lng b/interface/web/admin/lib/lang/ja_remote_user.lng
index 2b9ce2bbf0..adaaf54688 100644
--- a/interface/web/admin/lib/lang/ja_remote_user.lng
+++ b/interface/web/admin/lib/lang/ja_remote_user.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['remote_user_txt'] = 'Remote User'
 $wb['username_txt'] = 'ユーザー名';
 $wb['password_txt'] = 'パスワード';
 $wb['function_txt'] = '機能';
diff --git a/interface/web/admin/lib/lang/ja_users.lng b/interface/web/admin/lib/lang/ja_users.lng
index 64f8339ffa..7d77bb8ac0 100644
--- a/interface/web/admin/lib/lang/ja_users.lng
+++ b/interface/web/admin/lib/lang/ja_users.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['users_txt'] = 'Users';
 $wb['username_txt'] = 'ユーザー名';
 $wb['username_err'] = 'ユーザー名が長すぎるか、または不正な文字を含んでいます。';
 $wb['username_empty'] = 'ユーザー名を入力してください。';
diff --git a/interface/web/admin/lib/lang/nl_remote_user.lng b/interface/web/admin/lib/lang/nl_remote_user.lng
index f049116094..3d2baac1fd 100644
--- a/interface/web/admin/lib/lang/nl_remote_user.lng
+++ b/interface/web/admin/lib/lang/nl_remote_user.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['remote_user_txt'] = 'Externe Gebruiker'
 $wb['username_txt'] = 'Gebruikersnaam';
 $wb['password_txt'] = 'Wachtwoord';
 $wb['function_txt'] = 'Funties';
diff --git a/interface/web/admin/lib/lang/nl_users.lng b/interface/web/admin/lib/lang/nl_users.lng
index 1e6d4ef586..53611ff56e 100644
--- a/interface/web/admin/lib/lang/nl_users.lng
+++ b/interface/web/admin/lib/lang/nl_users.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['users_txt'] = 'Gebruikers';
 $wb['username_txt'] = 'Gebruikersnaam';
 $wb['username_err'] = 'De gebruikersnaam is te lang of bevat ongeldige karakters.';
 $wb['username_empty'] = 'De gebruikersnaam is niet ingvuld.';
diff --git a/interface/web/admin/lib/lang/pl_remote_user.lng b/interface/web/admin/lib/lang/pl_remote_user.lng
index 5df48fb29b..2a6a726bcb 100644
--- a/interface/web/admin/lib/lang/pl_remote_user.lng
+++ b/interface/web/admin/lib/lang/pl_remote_user.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['remote_user_txt'] = 'Remote User'
 $wb['username_txt'] = 'Nazwa użytkownika';
 $wb['password_txt'] = 'Hasło';
 $wb['function_txt'] = 'Funkcje';
diff --git a/interface/web/admin/lib/lang/pl_users.lng b/interface/web/admin/lib/lang/pl_users.lng
index e6dfcb57b2..c303b1ab1e 100644
--- a/interface/web/admin/lib/lang/pl_users.lng
+++ b/interface/web/admin/lib/lang/pl_users.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['users_txt'] = 'Users';
 $wb['username_txt'] = 'Nazwa użytkownika';
 $wb['username_err'] = 'Nazwa użytkownika jest za długa lub zawiera niedozwolone znaki.';
 $wb['username_empty'] = 'Nazwa użytkownika jest pusta.';
diff --git a/interface/web/admin/lib/lang/pt_remote_user.lng b/interface/web/admin/lib/lang/pt_remote_user.lng
index f23a6abd5c..b521beb5e4 100644
--- a/interface/web/admin/lib/lang/pt_remote_user.lng
+++ b/interface/web/admin/lib/lang/pt_remote_user.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['remote_user_txt'] = 'Remote User'
 $wb['username_txt'] = 'Nome do utilizador';
 $wb['password_txt'] = 'Senha';
 $wb['function_txt'] = 'Funções';
diff --git a/interface/web/admin/lib/lang/pt_users.lng b/interface/web/admin/lib/lang/pt_users.lng
index 67cfe4f572..3e620e02cd 100644
--- a/interface/web/admin/lib/lang/pt_users.lng
+++ b/interface/web/admin/lib/lang/pt_users.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['users_txt'] = 'Users';
 $wb['username_txt'] = 'Utilizador ';
 $wb['username_err'] = 'O Nome do utilizador é muito longo ou contém caracteres inválidos!';
 $wb['username_empty'] = 'Por favor, entre com um nome de utilizador .';
diff --git a/interface/web/admin/lib/lang/ro_remote_user.lng b/interface/web/admin/lib/lang/ro_remote_user.lng
index d0504005e3..8c70904102 100644
--- a/interface/web/admin/lib/lang/ro_remote_user.lng
+++ b/interface/web/admin/lib/lang/ro_remote_user.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['remote_user_txt'] = 'Remote User'
 $wb['username_txt'] = 'Username';
 $wb['password_txt'] = 'Password';
 $wb['function_txt'] = 'Functions';
diff --git a/interface/web/admin/lib/lang/ro_users.lng b/interface/web/admin/lib/lang/ro_users.lng
index dcbc4f4727..dd4ef0143d 100644
--- a/interface/web/admin/lib/lang/ro_users.lng
+++ b/interface/web/admin/lib/lang/ro_users.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['users_txt'] = 'Users';
 $wb['username_txt'] = 'Username';
 $wb['username_err'] = 'The username is too long or contains invalid characters.';
 $wb['username_empty'] = 'The username is empty.';
diff --git a/interface/web/admin/lib/lang/ru_remote_user.lng b/interface/web/admin/lib/lang/ru_remote_user.lng
index 2d556b0800..38eb3a3c33 100644
--- a/interface/web/admin/lib/lang/ru_remote_user.lng
+++ b/interface/web/admin/lib/lang/ru_remote_user.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['remote_user_txt'] = 'Remote User'
 $wb['username_txt'] = 'Логин';
 $wb['password_txt'] = 'Пароль';
 $wb['function_txt'] = 'Функции';
diff --git a/interface/web/admin/lib/lang/ru_users.lng b/interface/web/admin/lib/lang/ru_users.lng
index 63f081f917..9ed98ca021 100644
--- a/interface/web/admin/lib/lang/ru_users.lng
+++ b/interface/web/admin/lib/lang/ru_users.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['users_txt'] = 'Users';
 $wb['username_txt'] = 'Логин';
 $wb['username_err'] = 'Ошибка в логине';
 $wb['passwort_txt'] = 'Пароль';
diff --git a/interface/web/admin/lib/lang/se_remote_user.lng b/interface/web/admin/lib/lang/se_remote_user.lng
index 657e5878f1..39ae0ed375 100644
--- a/interface/web/admin/lib/lang/se_remote_user.lng
+++ b/interface/web/admin/lib/lang/se_remote_user.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['remote_user_txt'] = 'Remote User'
 $wb['username_txt'] = 'Användarnamn';
 $wb['password_txt'] = 'Lösenord';
 $wb['function_txt'] = 'Funktioner';
diff --git a/interface/web/admin/lib/lang/se_users.lng b/interface/web/admin/lib/lang/se_users.lng
index ac56cdf083..4f8814842c 100644
--- a/interface/web/admin/lib/lang/se_users.lng
+++ b/interface/web/admin/lib/lang/se_users.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['users_txt'] = 'Users';
 $wb['username_txt'] = 'Användarnamn';
 $wb['username_err'] = 'användarnamn_fel';
 $wb['passwort_txt'] = 'Lösenord';
diff --git a/interface/web/admin/lib/lang/sk_remote_user.lng b/interface/web/admin/lib/lang/sk_remote_user.lng
index 200cd28861..e8fac2a0b9 100644
--- a/interface/web/admin/lib/lang/sk_remote_user.lng
+++ b/interface/web/admin/lib/lang/sk_remote_user.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['remote_user_txt'] = 'Remote User'
 $wb['username_txt'] = 'Uživateľ';
 $wb['password_txt'] = 'Heslo';
 $wb['function_txt'] = 'Funkcia';
diff --git a/interface/web/admin/lib/lang/sk_users.lng b/interface/web/admin/lib/lang/sk_users.lng
index d71952fa3e..b037e307c0 100644
--- a/interface/web/admin/lib/lang/sk_users.lng
+++ b/interface/web/admin/lib/lang/sk_users.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['users_txt'] = 'Users';
 $wb['username_txt'] = 'Užívateľské meno';
 $wb['username_err'] = 'Užívateľské meno je príliš dlhá alebo obsahuje neplatné znaky.';
 $wb['username_empty'] = 'Užívateľské meno je prázdne.';
diff --git a/interface/web/admin/lib/lang/tr_remote_user.lng b/interface/web/admin/lib/lang/tr_remote_user.lng
index a713cad0d4..24fc6497f2 100644
--- a/interface/web/admin/lib/lang/tr_remote_user.lng
+++ b/interface/web/admin/lib/lang/tr_remote_user.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['remote_user_txt'] = 'Remote User'
 $wb['username_txt'] = 'Kullanıcı Adı:';
 $wb['password_txt'] = 'Parola:';
 $wb['function_txt'] = 'Ä°ÅŸlevler:';
diff --git a/interface/web/admin/lib/lang/tr_users.lng b/interface/web/admin/lib/lang/tr_users.lng
index 72aa9d1813..307cdd37b2 100644
--- a/interface/web/admin/lib/lang/tr_users.lng
+++ b/interface/web/admin/lib/lang/tr_users.lng
@@ -1,4 +1,5 @@
 <?php
+$wb['users_txt'] = 'Users';
 $wb['username_txt'] = 'Kullanıcı Adı';
 $wb['username_err'] = 'Kullanıcı adı çok uzun ya da geçersiz karakterler içeriyor.';
 $wb['username_empty'] = 'Kullanıcı adı boş olamaz.';
-- 
GitLab


From fab638d96b6fd31e160df66ff02dc0281f9debb4 Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Sun, 7 Jun 2020 22:26:50 +0200
Subject: [PATCH 237/242] - migrated changes from interface to server

---
 server/lib/classes/ispcmail.inc.php | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/server/lib/classes/ispcmail.inc.php b/server/lib/classes/ispcmail.inc.php
index cc83c74137..fbf5f84dca 100644
--- a/server/lib/classes/ispcmail.inc.php
+++ b/server/lib/classes/ispcmail.inc.php
@@ -169,7 +169,7 @@ class ispcmail {
 			$this->smtp_host = $value;
 			break;
 		case 'smtp_port':
-			$this->smtp_port = $value;
+			if(intval($value) > 0) $this->smtp_port = $value;
 			break;
 		case 'smtp_user':
 			$this->smtp_user = $value;
@@ -586,8 +586,8 @@ class ispcmail {
 	 */
 	private function _smtp_login() {
 		$this->_smtp_conn = fsockopen(($this->smtp_crypt == 'ssl' ? 'tls://' : '') . $this->smtp_host, $this->smtp_port, $errno, $errstr, 30);
-		$response = fgets($this->_smtp_conn, 515);
 		if(empty($this->_smtp_conn)) return false;
+		$response = fgets($this->_smtp_conn, 515);
 
 		//Say Hello to SMTP
 		if($this->smtp_helo == '') $this->detectHelo();
@@ -598,13 +598,20 @@ class ispcmail {
 		if($this->smtp_crypt == 'tls') {
 			fputs($this->_smtp_conn, 'STARTTLS' . $this->_crlf);
 			fgets($this->_smtp_conn, 515);
+			
 			$crypto_method = STREAM_CRYPTO_METHOD_TLS_CLIENT;
 
 			if (defined('STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT')) {
 				$crypto_method |= STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT;
 				$crypto_method |= STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT;
 			}
-			stream_socket_enable_crypto($this->_smtp_conn, true, $crypto_method);
+			stream_context_set_option($this->_smtp_conn, 'ssl', 'verify_host', false);
+			stream_context_set_option($this->_smtp_conn, 'ssl', 'verify_peer', false);
+			stream_context_set_option($this->_smtp_conn, 'ssl', 'verify_peer_name', false);
+			stream_context_set_option($this->_smtp_conn, 'ssl', 'allow_self_signed', true);
+			if (stream_socket_enable_crypto($this->_smtp_conn, true, $crypto_method) != true) {
+				return false;
+			}
 		}
 
 		//AUTH LOGIN
-- 
GitLab


From d4b1707086848838da7151c7bf34031f27aaad0a Mon Sep 17 00:00:00 2001
From: Thom Pol <thom@amsterdamtech.nl>
Date: Sun, 7 Jun 2020 23:14:22 +0200
Subject: [PATCH 238/242] New translations

---
 interface/web/admin/lib/lang/nl.lng                | 14 +++++++-------
 .../web/admin/lib/lang/nl_directive_snippets.lng   | 12 ++++++------
 .../admin/lib/lang/nl_directive_snippets_list.lng  |  8 ++++----
 interface/web/admin/lib/lang/nl_firewall.lng       |  4 ++--
 interface/web/admin/lib/lang/nl_firewall_list.lng  |  2 +-
 interface/web/admin/lib/lang/nl_groups.lng         |  2 +-
 interface/web/admin/lib/lang/nl_language_add.lng   |  8 ++++----
 .../web/admin/lib/lang/nl_language_import.lng      |  2 +-
 8 files changed, 26 insertions(+), 26 deletions(-)

diff --git a/interface/web/admin/lib/lang/nl.lng b/interface/web/admin/lib/lang/nl.lng
index 26d231ffcd..99a4b53da1 100644
--- a/interface/web/admin/lib/lang/nl.lng
+++ b/interface/web/admin/lib/lang/nl.lng
@@ -1,6 +1,6 @@
 <?php
-$wb['1001'] = 'Username or password is empty.';
-$wb['1002'] = 'Username or password is wrong.';
+$wb['1001'] = 'Gebruikersnaam of wachtwoord is leeg.';
+$wb['1002'] = 'Gebruikersnaam of wachtwoord is incorrect.';
 $wb['Groups'] = 'Groepen';
 $wb['groups_description'] = 'Formulier om systeemgebruiker groepen te wijzigen.';
 $wb['Servers'] = 'Servers';
@@ -12,13 +12,13 @@ $wb['Edit group'] = 'Wijzigen groep';
 $wb['Edit server'] = 'Wijzigen server';
 $wb['Sync. Now'] = 'Sync. nu';
 $wb['DB Sync.'] = 'DB Sync.';
-$wb['User Management'] = 'User Management';
+$wb['User Management'] = 'Gebruikers beheren';
 $wb['CP Users'] = 'CP Gebruikers';
 $wb['Remote Users'] = 'Remote gebruikers';
-$wb['System'] = 'System';
+$wb['System'] = 'Systeem';
 $wb['Server Services'] = 'Server Services';
 $wb['Services'] = 'Services';
-$wb['Server Config'] = 'Server Config';
+$wb['Server Config'] = 'Server Configuratie';
 $wb['Server'] = 'Server';
 $wb['Mail'] = 'Mail';
 $wb['Getmail'] = 'Getmail';
@@ -27,10 +27,10 @@ $wb['FastCGI'] = 'FastCGI';
 $wb['Jailkit'] = 'Jailkit';
 $wb['Rescue'] = 'Rescue';
 $wb['Server IP addresses'] = 'Server IP adressen';
-$wb['Additional PHP Versions'] = 'Additional PHP Versions';
+$wb['Additional PHP Versions'] = 'Additionele PHP Versies';
 $wb['Firewall'] = 'Firewall';
 $wb['Interface'] = 'Interface';
-$wb['Interface Config'] = 'Main Config';
+$wb['Interface Config'] = 'Interface configuratie';
 $wb['Domains'] = 'Domains';
 $wb['Misc'] = 'Misc';
 $wb['Software'] = 'Apps & addons';
diff --git a/interface/web/admin/lib/lang/nl_directive_snippets.lng b/interface/web/admin/lib/lang/nl_directive_snippets.lng
index 0616afad8b..a4f610634e 100644
--- a/interface/web/admin/lib/lang/nl_directive_snippets.lng
+++ b/interface/web/admin/lib/lang/nl_directive_snippets.lng
@@ -1,12 +1,12 @@
 <?php
 $wb['Directive Snippets'] = 'Directive Snippets';
-$wb['name_txt'] = 'Name of Snippet';
+$wb['name_txt'] = 'Naam van de Snippet';
 $wb['type_txt'] = 'Type';
 $wb['snippet_txt'] = 'Snippet';
 $wb['active_txt'] = 'Active';
-$wb['directive_snippets_name_empty'] = 'Please specify a name for the snippet.';
-$wb['directive_snippets_name_error_unique'] = 'There is already a directive snippet with this name.';
-$wb['variables_txt'] = 'Variables';
-$wb['customer_viewable_txt'] = 'Customer viewable';
-$wb['required_php_snippets_txt'] = 'Requiered PHP Snippet';
+$wb['directive_snippets_name_empty'] = 'Geef de Directive Snippet een naam.';
+$wb['directive_snippets_name_error_unique'] = 'Er is al een Directive Snippet met deze naam.';
+$wb['variables_txt'] = 'Variabelen';
+$wb['customer_viewable_txt'] = 'Zichtbaar voor klanten';
+$wb['required_php_snippets_txt'] = 'Vereiste PHP Snippet';
 ?>
diff --git a/interface/web/admin/lib/lang/nl_directive_snippets_list.lng b/interface/web/admin/lib/lang/nl_directive_snippets_list.lng
index 8e189f9f79..5c12ac4808 100644
--- a/interface/web/admin/lib/lang/nl_directive_snippets_list.lng
+++ b/interface/web/admin/lib/lang/nl_directive_snippets_list.lng
@@ -1,8 +1,8 @@
 <?php
 $wb['list_head_txt'] = 'Directive Snippets';
-$wb['active_txt'] = 'Active';
-$wb['name_txt'] = 'Name of Snippet';
+$wb['active_txt'] = 'Actief';
+$wb['name_txt'] = 'Naam';
 $wb['type_txt'] = 'Type';
-$wb['add_new_record_txt'] = 'Add Directive Snippet';
-$wb['customer_viewable_txt'] = 'Customer viewable';
+$wb['add_new_record_txt'] = 'Directive Snippet toevoegen';
+$wb['customer_viewable_txt'] = 'Zichtbaar voor klanten';
 ?>
diff --git a/interface/web/admin/lib/lang/nl_firewall.lng b/interface/web/admin/lib/lang/nl_firewall.lng
index 443aca29e6..284af5c435 100644
--- a/interface/web/admin/lib/lang/nl_firewall.lng
+++ b/interface/web/admin/lib/lang/nl_firewall.lng
@@ -6,6 +6,6 @@ $wb['tcp_port_help_txt'] = 'Gescheiden door komma';
 $wb['udp_port_help_txt'] = 'Gescheiden door komma';
 $wb['active_txt'] = 'Actief';
 $wb['firewall_error_unique'] = 'Er is al een firewall record voor deze server.';
-$wb['tcp_ports_error_regex'] = 'Karakter niet toegestaan in tcp port definitie. Toegestane karakters zijn nummers, : en ,.';
-$wb['udp_ports_error_regex'] = 'Karakter niet toegestaan in udp port definitie. Toegestane karakters zijn nummers, : en ,.';
+$wb['tcp_ports_error_regex'] = 'Karakter niet toegestaan in TCP port definitie. Toegestane karakters zijn nummers, : en ,.';
+$wb['udp_ports_error_regex'] = 'Karakter niet toegestaan in UDP port definitie. Toegestane karakters zijn nummers, : en ,.';
 ?>
diff --git a/interface/web/admin/lib/lang/nl_firewall_list.lng b/interface/web/admin/lib/lang/nl_firewall_list.lng
index 394d093493..11746c6e5b 100644
--- a/interface/web/admin/lib/lang/nl_firewall_list.lng
+++ b/interface/web/admin/lib/lang/nl_firewall_list.lng
@@ -4,5 +4,5 @@ $wb['active_txt'] = 'Actief';
 $wb['server_id_txt'] = 'Server';
 $wb['tcp_port_txt'] = 'Open TCP poorten';
 $wb['udp_port_txt'] = 'Open UDP poorten';
-$wb['add_new_record_txt'] = 'Toevoegen Firewall record';
+$wb['add_new_record_txt'] = 'Firewall regel toevoegen';
 ?>
diff --git a/interface/web/admin/lib/lang/nl_groups.lng b/interface/web/admin/lib/lang/nl_groups.lng
index e3ec317a4e..cdc75880ce 100644
--- a/interface/web/admin/lib/lang/nl_groups.lng
+++ b/interface/web/admin/lib/lang/nl_groups.lng
@@ -1,5 +1,5 @@
 <?php
 $wb['description_txt'] = 'Omschrijving';
 $wb['name_txt'] = 'Groep';
-$wb['name_err'] = 'Groep moet min. 1, max. 30 karakters zijn.';
+$wb['name_err'] = 'Groepsnaam moet uit minimaal 1, en maximaal 30 karakters bestaan.';
 ?>
diff --git a/interface/web/admin/lib/lang/nl_language_add.lng b/interface/web/admin/lib/lang/nl_language_add.lng
index c746351827..f1541093e6 100644
--- a/interface/web/admin/lib/lang/nl_language_add.lng
+++ b/interface/web/admin/lib/lang/nl_language_add.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['list_head_txt'] = 'Toevoegen nieuwe taal';
-$wb['language_select_txt'] = 'Selecteer taal basis';
+$wb['list_head_txt'] = 'Nieuwe taal toevoegen';
+$wb['language_select_txt'] = 'Selecteer basistaal';
 $wb['language_new_txt'] = 'Nieuwe taal';
-$wb['language_new_hint_txt'] = '2 karakters ISO 639-1 language-code (See http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)';
-$wb['btn_save_txt'] = 'Aanmaken nieuwe nieuw taalbestand set';
+$wb['language_new_hint_txt'] = '2 karakters ISO 639-1 taal-code (Zie http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)';
+$wb['btn_save_txt'] = 'Maak nieuwe taalbestanden aan';
 $wb['btn_cancel_txt'] = 'Terug';
 ?>
diff --git a/interface/web/admin/lib/lang/nl_language_import.lng b/interface/web/admin/lib/lang/nl_language_import.lng
index ae407efecb..bec27a9528 100644
--- a/interface/web/admin/lib/lang/nl_language_import.lng
+++ b/interface/web/admin/lib/lang/nl_language_import.lng
@@ -5,5 +5,5 @@ $wb['btn_save_txt'] = 'Importeer het geselecteerde taalbestand';
 $wb['language_overwrite_txt'] = 'Overschrijf bestand, als dit bestaat.';
 $wb['btn_cancel_txt'] = 'Terug';
 $wb['ignore_version_txt'] = 'Sla ISPConfig versie controle over';
-$wb['list_desc_txt'] = 'WARNING: Do not import language files from untrustworthy sources.';
+$wb['list_desc_txt'] = 'Waarschuwing: Importeer geen taalbestanden van onvertrouwde bronnen.';
 ?>
-- 
GitLab


From 58102c14632b827b8609056fea306f11ffdaf1e1 Mon Sep 17 00:00:00 2001
From: Thom Pol <thom@amsterdamtech.nl>
Date: Mon, 8 Jun 2020 01:09:23 +0200
Subject: [PATCH 239/242] Remove description

---
 interface/web/admin/form/users.tform.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/interface/web/admin/form/users.tform.php b/interface/web/admin/form/users.tform.php
index 4f08de4098..1aab0a4298 100644
--- a/interface/web/admin/form/users.tform.php
+++ b/interface/web/admin/form/users.tform.php
@@ -61,7 +61,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 
 $form['title']   = 'users_txt';
-$form['description']  = 'Form to edit systemusers.';
+//$form['description']  = 'Form to edit systemusers.';
 $form['name']   = 'users';
 $form['action']  = 'users_edit.php';
 $form['db_table'] = 'sys_user';
-- 
GitLab


From 857b4eaa316a22dce7d8ac4a93593c68649f7f90 Mon Sep 17 00:00:00 2001
From: Thom Pol <thom@amsterdamtech.nl>
Date: Mon, 8 Jun 2020 13:03:08 +0200
Subject: [PATCH 240/242] Rename Comodo to "Sectigo / Comodo CA"

---
 install/sql/incremental/upd_dev_collection.sql | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql
index d07b33d4ba..1acc274a99 100644
--- a/install/sql/incremental/upd_dev_collection.sql
+++ b/install/sql/incremental/upd_dev_collection.sql
@@ -13,3 +13,6 @@ ALTER TABLE `web_domain` ADD  `backup_password` VARCHAR( 255 ) NOT NULL DEFAULT
 ALTER TABLE `web_backup` ADD  `backup_format` VARCHAR( 64 ) NOT NULL DEFAULT '' AFTER `backup_mode`;
 ALTER TABLE `web_backup` ADD  `backup_password` VARCHAR( 255 ) NOT NULL DEFAULT '' AFTER `filesize`;
 -- end of backup encryption
+
+-- rename Comodo to "Sectigo / Comodo CA"
+UPDATE `dns_ssl_ca` SET `ca_name` = 'Sectigo / Comodo CA' WHERE `ca_issue` = 'comodoca.com';
-- 
GitLab


From 663531068b0d44ac98884435b35a7d77909333c4 Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Tue, 9 Jun 2020 07:42:14 +0200
Subject: [PATCH 241/242] - add checker for mr

---
 .gitlab-ci.yml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 2ee654e1f2..cdcc6edb29 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -13,6 +13,7 @@ syntax:lint:
   only:
     - schedules
     - web
+    - merge_requests
 
   script:
     - composer require overtrue/phplint
-- 
GitLab


From cbc92c24b3a6ae3be640aadb6351d5d17e3b4e6b Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Tue, 9 Jun 2020 07:46:17 +0200
Subject: [PATCH 242/242] - fixed language syntax errors from !1010

---
 interface/web/admin/lib/lang/ar_remote_user.lng | 2 +-
 interface/web/admin/lib/lang/bg_remote_user.lng | 2 +-
 interface/web/admin/lib/lang/br_remote_user.lng | 2 +-
 interface/web/admin/lib/lang/ca_remote_user.lng | 2 +-
 interface/web/admin/lib/lang/cz_remote_user.lng | 2 +-
 interface/web/admin/lib/lang/de_remote_user.lng | 2 +-
 interface/web/admin/lib/lang/dk_remote_user.lng | 2 +-
 interface/web/admin/lib/lang/el_remote_user.lng | 2 +-
 interface/web/admin/lib/lang/en_remote_user.lng | 2 +-
 interface/web/admin/lib/lang/es_remote_user.lng | 2 +-
 interface/web/admin/lib/lang/fi_remote_user.lng | 2 +-
 interface/web/admin/lib/lang/fr_remote_user.lng | 2 +-
 interface/web/admin/lib/lang/hr_remote_user.lng | 2 +-
 interface/web/admin/lib/lang/hu_remote_user.lng | 2 +-
 interface/web/admin/lib/lang/id_remote_user.lng | 2 +-
 interface/web/admin/lib/lang/it_remote_user.lng | 2 +-
 interface/web/admin/lib/lang/ja_remote_user.lng | 2 +-
 interface/web/admin/lib/lang/pl_remote_user.lng | 2 +-
 interface/web/admin/lib/lang/pt_remote_user.lng | 2 +-
 interface/web/admin/lib/lang/ro_remote_user.lng | 2 +-
 interface/web/admin/lib/lang/ru_remote_user.lng | 2 +-
 interface/web/admin/lib/lang/se_remote_user.lng | 2 +-
 interface/web/admin/lib/lang/sk_remote_user.lng | 2 +-
 interface/web/admin/lib/lang/tr_remote_user.lng | 2 +-
 24 files changed, 24 insertions(+), 24 deletions(-)

diff --git a/interface/web/admin/lib/lang/ar_remote_user.lng b/interface/web/admin/lib/lang/ar_remote_user.lng
index 8c70904102..b1db64e8e6 100644
--- a/interface/web/admin/lib/lang/ar_remote_user.lng
+++ b/interface/web/admin/lib/lang/ar_remote_user.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['remote_user_txt'] = 'Remote User'
+$wb['remote_user_txt'] = 'Remote User';
 $wb['username_txt'] = 'Username';
 $wb['password_txt'] = 'Password';
 $wb['function_txt'] = 'Functions';
diff --git a/interface/web/admin/lib/lang/bg_remote_user.lng b/interface/web/admin/lib/lang/bg_remote_user.lng
index 35132ab452..2ad534da45 100644
--- a/interface/web/admin/lib/lang/bg_remote_user.lng
+++ b/interface/web/admin/lib/lang/bg_remote_user.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['remote_user_txt'] = 'Remote User'
+$wb['remote_user_txt'] = 'Remote User';
 $wb['username_txt'] = 'Потребителско име';
 $wb['password_txt'] = 'Парола';
 $wb['function_txt'] = 'Функции';
diff --git a/interface/web/admin/lib/lang/br_remote_user.lng b/interface/web/admin/lib/lang/br_remote_user.lng
index b698af128d..7fbcbdf372 100644
--- a/interface/web/admin/lib/lang/br_remote_user.lng
+++ b/interface/web/admin/lib/lang/br_remote_user.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['remote_user_txt'] = 'Remote User'
+$wb['remote_user_txt'] = 'Remote User';
 $wb['username_txt'] = 'Usuário';
 $wb['password_txt'] = 'Senha';
 $wb['function_txt'] = 'Funções';
diff --git a/interface/web/admin/lib/lang/ca_remote_user.lng b/interface/web/admin/lib/lang/ca_remote_user.lng
index dc39a8e798..638882de55 100644
--- a/interface/web/admin/lib/lang/ca_remote_user.lng
+++ b/interface/web/admin/lib/lang/ca_remote_user.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['remote_user_txt'] = 'Remote User'
+$wb['remote_user_txt'] = 'Remote User';
 $wb['username_txt'] = 'Username';
 $wb['password_txt'] = 'Password';
 $wb['function_txt'] = 'Functions';
diff --git a/interface/web/admin/lib/lang/cz_remote_user.lng b/interface/web/admin/lib/lang/cz_remote_user.lng
index f8d0f3d5e5..1c53a5c5b7 100644
--- a/interface/web/admin/lib/lang/cz_remote_user.lng
+++ b/interface/web/admin/lib/lang/cz_remote_user.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['remote_user_txt'] = 'Remote User'
+$wb['remote_user_txt'] = 'Remote User';
 $wb['username_txt'] = 'Uživatelské jméno:';
 $wb['password_txt'] = 'Heslo:';
 $wb['function_txt'] = 'Funkce:';
diff --git a/interface/web/admin/lib/lang/de_remote_user.lng b/interface/web/admin/lib/lang/de_remote_user.lng
index e1f932a904..9bfb9c43a0 100644
--- a/interface/web/admin/lib/lang/de_remote_user.lng
+++ b/interface/web/admin/lib/lang/de_remote_user.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['remote_user_txt'] = 'Remote User'
+$wb['remote_user_txt'] = 'Remote User';
 $wb['username_txt'] = 'Benutzername';
 $wb['password_txt'] = 'Passwort';
 $wb['function_txt'] = 'Funktionen';
diff --git a/interface/web/admin/lib/lang/dk_remote_user.lng b/interface/web/admin/lib/lang/dk_remote_user.lng
index e7f020e411..c592247b83 100644
--- a/interface/web/admin/lib/lang/dk_remote_user.lng
+++ b/interface/web/admin/lib/lang/dk_remote_user.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['remote_user_txt'] = 'Remote User'
+$wb['remote_user_txt'] = 'Remote User';
 $wb['username_txt'] = 'Brugernavn:';
 $wb['password_txt'] = 'Adgangskode:';
 $wb['function_txt'] = 'Funktioner:';
diff --git a/interface/web/admin/lib/lang/el_remote_user.lng b/interface/web/admin/lib/lang/el_remote_user.lng
index 72d9eb29dd..43d04d0e02 100644
--- a/interface/web/admin/lib/lang/el_remote_user.lng
+++ b/interface/web/admin/lib/lang/el_remote_user.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['remote_user_txt'] = 'Remote User'
+$wb['remote_user_txt'] = 'Remote User';
 $wb['username_txt'] = 'Όνομα Χρήστη:';
 $wb['password_txt'] = 'Συνθηματικό:';
 $wb['function_txt'] = 'Ενέργειες:';
diff --git a/interface/web/admin/lib/lang/en_remote_user.lng b/interface/web/admin/lib/lang/en_remote_user.lng
index dc39a8e798..638882de55 100644
--- a/interface/web/admin/lib/lang/en_remote_user.lng
+++ b/interface/web/admin/lib/lang/en_remote_user.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['remote_user_txt'] = 'Remote User'
+$wb['remote_user_txt'] = 'Remote User';
 $wb['username_txt'] = 'Username';
 $wb['password_txt'] = 'Password';
 $wb['function_txt'] = 'Functions';
diff --git a/interface/web/admin/lib/lang/es_remote_user.lng b/interface/web/admin/lib/lang/es_remote_user.lng
index b14c4b408b..2bd9c6f2ce 100644
--- a/interface/web/admin/lib/lang/es_remote_user.lng
+++ b/interface/web/admin/lib/lang/es_remote_user.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['remote_user_txt'] = 'Remote User'
+$wb['remote_user_txt'] = 'Remote User';
 $wb['Client functions'] = 'Funciones para clientes';
 $wb['DNS a functions'] = 'Funciones DNS para registro A';
 $wb['DNS aaaa functions'] = 'Funciones DNS para registro AAAA';
diff --git a/interface/web/admin/lib/lang/fi_remote_user.lng b/interface/web/admin/lib/lang/fi_remote_user.lng
index 8b943d3e52..f225bb8416 100644
--- a/interface/web/admin/lib/lang/fi_remote_user.lng
+++ b/interface/web/admin/lib/lang/fi_remote_user.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['remote_user_txt'] = 'Remote User'
+$wb['remote_user_txt'] = 'Remote User';
 $wb['username_txt'] = 'Käyttäjätunnus';
 $wb['password_txt'] = 'Salasana';
 $wb['function_txt'] = 'Toiminnot';
diff --git a/interface/web/admin/lib/lang/fr_remote_user.lng b/interface/web/admin/lib/lang/fr_remote_user.lng
index f2f8098945..99a8f2e4f9 100644
--- a/interface/web/admin/lib/lang/fr_remote_user.lng
+++ b/interface/web/admin/lib/lang/fr_remote_user.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['remote_user_txt'] = 'Remote User'
+$wb['remote_user_txt'] = 'Remote User';
 $wb['username_txt'] = 'Identifiant';
 $wb['password_txt'] = 'Mot de passe';
 $wb['function_txt'] = 'Fonctions';
diff --git a/interface/web/admin/lib/lang/hr_remote_user.lng b/interface/web/admin/lib/lang/hr_remote_user.lng
index 200e15544b..e5cef6a179 100644
--- a/interface/web/admin/lib/lang/hr_remote_user.lng
+++ b/interface/web/admin/lib/lang/hr_remote_user.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['remote_user_txt'] = 'Remote User'
+$wb['remote_user_txt'] = 'Remote User';
 $wb['username_txt'] = 'Korisničko ime';
 $wb['password_txt'] = 'Å ifra';
 $wb['function_txt'] = 'Funkcije';
diff --git a/interface/web/admin/lib/lang/hu_remote_user.lng b/interface/web/admin/lib/lang/hu_remote_user.lng
index 278d2d0434..ad34bf0823 100644
--- a/interface/web/admin/lib/lang/hu_remote_user.lng
+++ b/interface/web/admin/lib/lang/hu_remote_user.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['remote_user_txt'] = 'Remote User'
+$wb['remote_user_txt'] = 'Remote User';
 $wb['username_txt'] = 'Felhasználónév';
 $wb['password_txt'] = 'Jelszó';
 $wb['function_txt'] = 'Funkciók';
diff --git a/interface/web/admin/lib/lang/id_remote_user.lng b/interface/web/admin/lib/lang/id_remote_user.lng
index 740ed6fe71..1a31ae3274 100644
--- a/interface/web/admin/lib/lang/id_remote_user.lng
+++ b/interface/web/admin/lib/lang/id_remote_user.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['remote_user_txt'] = 'Remote User'
+$wb['remote_user_txt'] = 'Remote User';
 $wb['username_txt'] = 'Nama pengguna';
 $wb['password_txt'] = 'Kata Sandi';
 $wb['function_txt'] = 'Fungsi';
diff --git a/interface/web/admin/lib/lang/it_remote_user.lng b/interface/web/admin/lib/lang/it_remote_user.lng
index 0d5e550d05..967270222b 100644
--- a/interface/web/admin/lib/lang/it_remote_user.lng
+++ b/interface/web/admin/lib/lang/it_remote_user.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['remote_user_txt'] = 'Remote User'
+$wb['remote_user_txt'] = 'Remote User';
 $wb['username_txt'] = 'Nome Utente';
 $wb['password_txt'] = 'Password';
 $wb['function_txt'] = 'Funzioni';
diff --git a/interface/web/admin/lib/lang/ja_remote_user.lng b/interface/web/admin/lib/lang/ja_remote_user.lng
index adaaf54688..5ffbecd22a 100644
--- a/interface/web/admin/lib/lang/ja_remote_user.lng
+++ b/interface/web/admin/lib/lang/ja_remote_user.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['remote_user_txt'] = 'Remote User'
+$wb['remote_user_txt'] = 'Remote User';
 $wb['username_txt'] = 'ユーザー名';
 $wb['password_txt'] = 'パスワード';
 $wb['function_txt'] = '機能';
diff --git a/interface/web/admin/lib/lang/pl_remote_user.lng b/interface/web/admin/lib/lang/pl_remote_user.lng
index 2a6a726bcb..1e611ffbe1 100644
--- a/interface/web/admin/lib/lang/pl_remote_user.lng
+++ b/interface/web/admin/lib/lang/pl_remote_user.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['remote_user_txt'] = 'Remote User'
+$wb['remote_user_txt'] = 'Remote User';
 $wb['username_txt'] = 'Nazwa użytkownika';
 $wb['password_txt'] = 'Hasło';
 $wb['function_txt'] = 'Funkcje';
diff --git a/interface/web/admin/lib/lang/pt_remote_user.lng b/interface/web/admin/lib/lang/pt_remote_user.lng
index b521beb5e4..b1e8e08899 100644
--- a/interface/web/admin/lib/lang/pt_remote_user.lng
+++ b/interface/web/admin/lib/lang/pt_remote_user.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['remote_user_txt'] = 'Remote User'
+$wb['remote_user_txt'] = 'Remote User';
 $wb['username_txt'] = 'Nome do utilizador';
 $wb['password_txt'] = 'Senha';
 $wb['function_txt'] = 'Funções';
diff --git a/interface/web/admin/lib/lang/ro_remote_user.lng b/interface/web/admin/lib/lang/ro_remote_user.lng
index 8c70904102..b1db64e8e6 100644
--- a/interface/web/admin/lib/lang/ro_remote_user.lng
+++ b/interface/web/admin/lib/lang/ro_remote_user.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['remote_user_txt'] = 'Remote User'
+$wb['remote_user_txt'] = 'Remote User';
 $wb['username_txt'] = 'Username';
 $wb['password_txt'] = 'Password';
 $wb['function_txt'] = 'Functions';
diff --git a/interface/web/admin/lib/lang/ru_remote_user.lng b/interface/web/admin/lib/lang/ru_remote_user.lng
index 38eb3a3c33..e1266951aa 100644
--- a/interface/web/admin/lib/lang/ru_remote_user.lng
+++ b/interface/web/admin/lib/lang/ru_remote_user.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['remote_user_txt'] = 'Remote User'
+$wb['remote_user_txt'] = 'Remote User';
 $wb['username_txt'] = 'Логин';
 $wb['password_txt'] = 'Пароль';
 $wb['function_txt'] = 'Функции';
diff --git a/interface/web/admin/lib/lang/se_remote_user.lng b/interface/web/admin/lib/lang/se_remote_user.lng
index 39ae0ed375..c71d09f54f 100644
--- a/interface/web/admin/lib/lang/se_remote_user.lng
+++ b/interface/web/admin/lib/lang/se_remote_user.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['remote_user_txt'] = 'Remote User'
+$wb['remote_user_txt'] = 'Remote User';
 $wb['username_txt'] = 'Användarnamn';
 $wb['password_txt'] = 'Lösenord';
 $wb['function_txt'] = 'Funktioner';
diff --git a/interface/web/admin/lib/lang/sk_remote_user.lng b/interface/web/admin/lib/lang/sk_remote_user.lng
index e8fac2a0b9..4e867066c7 100644
--- a/interface/web/admin/lib/lang/sk_remote_user.lng
+++ b/interface/web/admin/lib/lang/sk_remote_user.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['remote_user_txt'] = 'Remote User'
+$wb['remote_user_txt'] = 'Remote User';
 $wb['username_txt'] = 'Uživateľ';
 $wb['password_txt'] = 'Heslo';
 $wb['function_txt'] = 'Funkcia';
diff --git a/interface/web/admin/lib/lang/tr_remote_user.lng b/interface/web/admin/lib/lang/tr_remote_user.lng
index 24fc6497f2..aacb7f4c35 100644
--- a/interface/web/admin/lib/lang/tr_remote_user.lng
+++ b/interface/web/admin/lib/lang/tr_remote_user.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['remote_user_txt'] = 'Remote User'
+$wb['remote_user_txt'] = 'Remote User';
 $wb['username_txt'] = 'Kullanıcı Adı:';
 $wb['password_txt'] = 'Parola:';
 $wb['function_txt'] = 'Ä°ÅŸlevler:';
-- 
GitLab