From e94a9fb5e4b6a2bc07e0bb4cf8ea35fc70c4bbf0 Mon Sep 17 00:00:00 2001
From: tbrehm <t.brehm@ispconfig.org>
Date: Thu, 10 May 2012 16:31:27 +0000
Subject: [PATCH] Merged revisions
 3049-3051,3053-3054,3058,3070,3074-3077,3082,3086-3088,3091-3092,3094-3095
 from stable branch.

---
 install/dist/conf/opensuse110.conf.php        |   2 +-
 install/dist/lib/fedora.lib.php               |   5 +-
 install/dist/lib/gentoo.lib.php               |   5 +-
 install/dist/lib/opensuse.lib.php             |   5 +-
 install/lib/installer_base.lib.php            |   5 +-
 interface/lib/classes/validate_client.inc.php |  30 ++
 .../lib/plugins/vm_openvz_plugin.inc.php      |   1 +
 interface/web/client/client_edit.php          |   2 +-
 interface/web/client/client_message.php       | 110 +++++++
 interface/web/client/form/client.tform.php    |   6 +-
 interface/web/client/form/reseller.tform.php  |   6 +-
 interface/web/client/lib/lang/ar.lng          |   2 +
 interface/web/client/lib/lang/ar_client.lng   |   1 +
 .../web/client/lib/lang/ar_client_message.lng |  13 +
 interface/web/client/lib/lang/ar_reseller.lng |   1 +
 interface/web/client/lib/lang/bg.lng          |   2 +
 interface/web/client/lib/lang/bg_client.lng   |   1 +
 .../web/client/lib/lang/bg_client_message.lng |  13 +
 interface/web/client/lib/lang/bg_reseller.lng |   1 +
 interface/web/client/lib/lang/br.lng          |   2 +
 interface/web/client/lib/lang/br_client.lng   |   1 +
 .../web/client/lib/lang/br_client_message.lng |  13 +
 interface/web/client/lib/lang/br_reseller.lng |   1 +
 interface/web/client/lib/lang/cz.lng          |   2 +
 interface/web/client/lib/lang/cz_client.lng   |   1 +
 .../web/client/lib/lang/cz_client_message.lng |  13 +
 interface/web/client/lib/lang/cz_reseller.lng |   1 +
 interface/web/client/lib/lang/de.lng          |   2 +
 interface/web/client/lib/lang/de_client.lng   |   1 +
 .../web/client/lib/lang/de_client_message.lng |  13 +
 interface/web/client/lib/lang/de_reseller.lng |   1 +
 interface/web/client/lib/lang/el.lng          |   2 +
 interface/web/client/lib/lang/el_client.lng   |   1 +
 .../web/client/lib/lang/el_client_message.lng |  13 +
 interface/web/client/lib/lang/el_reseller.lng |   1 +
 interface/web/client/lib/lang/en.lng          |   2 +
 interface/web/client/lib/lang/en_client.lng   |   1 +
 .../web/client/lib/lang/en_client_message.lng |  13 +
 interface/web/client/lib/lang/en_reseller.lng |   1 +
 interface/web/client/lib/lang/es.lng          |   2 +
 interface/web/client/lib/lang/es_client.lng   |   1 +
 .../web/client/lib/lang/es_client_message.lng |  13 +
 interface/web/client/lib/lang/es_reseller.lng |   1 +
 interface/web/client/lib/lang/fi.lng          |   2 +
 interface/web/client/lib/lang/fi_client.lng   |   1 +
 .../web/client/lib/lang/fi_client_message.lng |  13 +
 interface/web/client/lib/lang/fi_reseller.lng |   1 +
 interface/web/client/lib/lang/fr.lng          |   2 +
 interface/web/client/lib/lang/fr_client.lng   |   1 +
 .../web/client/lib/lang/fr_client_message.lng |  13 +
 interface/web/client/lib/lang/fr_reseller.lng |   1 +
 interface/web/client/lib/lang/hr.lng          |   2 +
 interface/web/client/lib/lang/hr_client.lng   |   1 +
 .../web/client/lib/lang/hr_client_message.lng |  13 +
 interface/web/client/lib/lang/hr_reseller.lng |   1 +
 interface/web/client/lib/lang/hu.lng          |   2 +
 interface/web/client/lib/lang/hu_client.lng   |   1 +
 .../web/client/lib/lang/hu_client_message.lng |  13 +
 interface/web/client/lib/lang/hu_reseller.lng |   1 +
 interface/web/client/lib/lang/id.lng          |   2 +
 interface/web/client/lib/lang/id_client.lng   |   1 +
 .../web/client/lib/lang/id_client_message.lng |  13 +
 interface/web/client/lib/lang/id_reseller.lng |   1 +
 interface/web/client/lib/lang/it.lng          |   2 +
 interface/web/client/lib/lang/it_client.lng   |   1 +
 .../web/client/lib/lang/it_client_message.lng |  13 +
 interface/web/client/lib/lang/it_reseller.lng |   1 +
 interface/web/client/lib/lang/ja.lng          |   2 +
 interface/web/client/lib/lang/ja_client.lng   |   1 +
 .../web/client/lib/lang/ja_client_message.lng |  13 +
 interface/web/client/lib/lang/ja_reseller.lng |   1 +
 interface/web/client/lib/lang/nl.lng          |   2 +
 interface/web/client/lib/lang/nl_client.lng   |   1 +
 .../web/client/lib/lang/nl_client_message.lng |  13 +
 interface/web/client/lib/lang/nl_reseller.lng |   1 +
 interface/web/client/lib/lang/pl.lng          |   2 +
 interface/web/client/lib/lang/pl_client.lng   |   1 +
 .../web/client/lib/lang/pl_client_message.lng |  13 +
 interface/web/client/lib/lang/pl_reseller.lng |   1 +
 interface/web/client/lib/lang/pt.lng          |   2 +
 interface/web/client/lib/lang/pt_client.lng   |   1 +
 .../web/client/lib/lang/pt_client_message.lng |  13 +
 interface/web/client/lib/lang/pt_reseller.lng |   1 +
 interface/web/client/lib/lang/ro.lng          |   2 +
 interface/web/client/lib/lang/ro_client.lng   |   1 +
 .../web/client/lib/lang/ro_client_message.lng |  13 +
 interface/web/client/lib/lang/ro_reseller.lng |   1 +
 interface/web/client/lib/lang/ru.lng          |   2 +
 interface/web/client/lib/lang/ru_client.lng   |   1 +
 .../web/client/lib/lang/ru_client_message.lng |  13 +
 interface/web/client/lib/lang/ru_reseller.lng |   1 +
 interface/web/client/lib/lang/se.lng          |   2 +
 interface/web/client/lib/lang/se_client.lng   |   1 +
 .../web/client/lib/lang/se_client_message.lng |  13 +
 interface/web/client/lib/lang/se_reseller.lng |   1 +
 interface/web/client/lib/lang/sk.lng          |   2 +
 interface/web/client/lib/lang/sk_client.lng   |   1 +
 .../web/client/lib/lang/sk_client_message.lng |  13 +
 interface/web/client/lib/lang/sk_reseller.lng |   1 +
 interface/web/client/lib/lang/tr.lng          |   2 +
 interface/web/client/lib/lang/tr_client.lng   |   1 +
 .../web/client/lib/lang/tr_client_message.lng |  13 +
 interface/web/client/lib/lang/tr_reseller.lng |   1 +
 interface/web/client/lib/module.conf.php      |  10 +
 .../web/client/templates/client_message.htm   |  31 ++
 interface/web/dns/lib/lang/ar_dns_import.lng  |   7 +-
 interface/web/dns/lib/lang/bg_dns_import.lng  |   7 +-
 interface/web/dns/lib/lang/br_dns_import.lng  |   7 +-
 interface/web/dns/lib/lang/cz_dns_import.lng  |   7 +-
 interface/web/dns/lib/lang/de_dns_import.lng  |   7 +-
 interface/web/dns/lib/lang/el_dns_import.lng  |   7 +-
 interface/web/dns/lib/lang/es_dns_import.lng  |   7 +-
 interface/web/dns/lib/lang/fi_dns_import.lng  |   7 +-
 interface/web/dns/lib/lang/fr_dns_import.lng  |   7 +-
 interface/web/dns/lib/lang/hr_dns_import.lng  |   7 +-
 interface/web/dns/lib/lang/hu_dns_import.lng  |   7 +-
 interface/web/dns/lib/lang/id_dns_import.lng  |   7 +-
 interface/web/dns/lib/lang/it_dns_import.lng  |   7 +-
 interface/web/dns/lib/lang/ja_dns_import.lng  |   7 +-
 interface/web/dns/lib/lang/nl_dns_import.lng  |   7 +-
 interface/web/dns/lib/lang/pl_dns_import.lng  |   7 +-
 interface/web/dns/lib/lang/pt_dns_import.lng  |   7 +-
 interface/web/dns/lib/lang/ro_dns_import.lng  |   7 +-
 interface/web/dns/lib/lang/ru_dns_import.lng  |   7 +-
 interface/web/dns/lib/lang/se_dns_import.lng  |   7 +-
 interface/web/dns/lib/lang/sk_dns_import.lng  |   7 +-
 interface/web/dns/lib/lang/tr_dns_import.lng  |   7 +-
 interface/web/dns/list/dns_a.list.php         |   2 +-
 interface/web/dns/list/dns_slave.list.php     |   2 +-
 interface/web/dns/templates/dns_a_list.htm    |   2 +-
 .../web/dns/templates/dns_slave_list.htm      |   2 +-
 interface/web/mail/lib/lang/de_mail_user.lng  |   2 +-
 interface/web/mail/lib/lang/en_mail_user.lng  |   2 +-
 interface/web/monitor/show_sys_state.php      |   4 +-
 interface/web/tools/dns_import_tupa.php       | 156 +++++++++
 interface/web/tools/dns_resync.php            |  84 -----
 interface/web/tools/import_ispconfig.php      | 303 ++++++++++++++++++
 interface/web/tools/lib/lang/ar.lng           |   5 +-
 .../tools/lib/lang/ar_import_ispconfig.lng    |  24 ++
 interface/web/tools/lib/lang/ar_resync.lng    |  13 +
 interface/web/tools/lib/lang/bg.lng           |   5 +-
 .../tools/lib/lang/bg_import_ispconfig.lng    |  24 ++
 interface/web/tools/lib/lang/bg_resync.lng    |  13 +
 interface/web/tools/lib/lang/br.lng           |   5 +-
 .../tools/lib/lang/br_import_ispconfig.lng    |  24 ++
 interface/web/tools/lib/lang/br_resync.lng    |  13 +
 interface/web/tools/lib/lang/cz.lng           |   5 +-
 .../tools/lib/lang/cz_import_ispconfig.lng    |  24 ++
 interface/web/tools/lib/lang/cz_resync.lng    |  13 +
 interface/web/tools/lib/lang/de.lng           |   5 +-
 .../tools/lib/lang/de_import_ispconfig.lng    |  24 ++
 interface/web/tools/lib/lang/de_resync.lng    |  13 +
 interface/web/tools/lib/lang/el.lng           |   5 +-
 .../tools/lib/lang/el_import_ispconfig.lng    |  24 ++
 interface/web/tools/lib/lang/el_resync.lng    |  13 +
 interface/web/tools/lib/lang/en.lng           |   5 +-
 .../tools/lib/lang/en_import_ispconfig.lng    |  24 ++
 interface/web/tools/lib/lang/en_resync.lng    |  13 +
 interface/web/tools/lib/lang/es.lng           |   5 +-
 .../tools/lib/lang/es_import_ispconfig.lng    |  24 ++
 interface/web/tools/lib/lang/es_resync.lng    |  13 +
 interface/web/tools/lib/lang/fi.lng           |   5 +-
 .../tools/lib/lang/fi_import_ispconfig.lng    |  24 ++
 interface/web/tools/lib/lang/fi_resync.lng    |  13 +
 interface/web/tools/lib/lang/fr.lng           |   5 +-
 .../tools/lib/lang/fr_import_ispconfig.lng    |  24 ++
 interface/web/tools/lib/lang/fr_resync.lng    |  13 +
 interface/web/tools/lib/lang/hr.lng           |   5 +-
 .../tools/lib/lang/hr_import_ispconfig.lng    |  24 ++
 interface/web/tools/lib/lang/hr_resync.lng    |  13 +
 interface/web/tools/lib/lang/hu.lng           |   5 +-
 .../tools/lib/lang/hu_import_ispconfig.lng    |  24 ++
 interface/web/tools/lib/lang/hu_resync.lng    |  13 +
 interface/web/tools/lib/lang/id.lng           |   5 +-
 .../tools/lib/lang/id_import_ispconfig.lng    |  24 ++
 interface/web/tools/lib/lang/id_resync.lng    |  13 +
 interface/web/tools/lib/lang/it.lng           |   5 +-
 .../tools/lib/lang/it_import_ispconfig.lng    |  24 ++
 interface/web/tools/lib/lang/it_resync.lng    |  13 +
 interface/web/tools/lib/lang/ja.lng           |   5 +-
 .../tools/lib/lang/ja_import_ispconfig.lng    |  24 ++
 interface/web/tools/lib/lang/ja_resync.lng    |  13 +
 interface/web/tools/lib/lang/nl.lng           |   5 +-
 .../tools/lib/lang/nl_import_ispconfig.lng    |  24 ++
 interface/web/tools/lib/lang/nl_resync.lng    |  13 +
 interface/web/tools/lib/lang/pl.lng           |   5 +-
 .../tools/lib/lang/pl_import_ispconfig.lng    |  24 ++
 interface/web/tools/lib/lang/pl_resync.lng    |  13 +
 interface/web/tools/lib/lang/pt.lng           |   5 +-
 .../tools/lib/lang/pt_import_ispconfig.lng    |  24 ++
 interface/web/tools/lib/lang/pt_resync.lng    |  13 +
 interface/web/tools/lib/lang/ro.lng           |   5 +-
 .../tools/lib/lang/ro_import_ispconfig.lng    |  24 ++
 interface/web/tools/lib/lang/ro_resync.lng    |  13 +
 interface/web/tools/lib/lang/ru.lng           |   5 +-
 .../tools/lib/lang/ru_import_ispconfig.lng    |  24 ++
 interface/web/tools/lib/lang/ru_resync.lng    |  13 +
 interface/web/tools/lib/lang/se.lng           |   5 +-
 .../tools/lib/lang/se_import_ispconfig.lng    |  24 ++
 interface/web/tools/lib/lang/se_resync.lng    |  13 +
 interface/web/tools/lib/lang/sk.lng           |   5 +-
 .../tools/lib/lang/sk_import_ispconfig.lng    |  24 ++
 interface/web/tools/lib/lang/sk_resync.lng    |  13 +
 interface/web/tools/lib/lang/tr.lng           |   5 +-
 .../tools/lib/lang/tr_import_ispconfig.lng    |  24 ++
 interface/web/tools/lib/lang/tr_resync.lng    |  13 +
 .../web/tools/lib/menu.d/import.menu.php      |  26 ++
 .../{dns_resync.menu.php => resync.menu.php}  |   4 +-
 interface/web/tools/lib/module.conf.php       |   2 +-
 interface/web/tools/resync.php                | 166 ++++++++++
 .../web/tools/templates/dns_import_tupa.htm   |  56 ++++
 interface/web/tools/templates/dns_resync.htm  |  31 --
 .../web/tools/templates/import_ispconfig.htm  | 105 ++++++
 interface/web/tools/templates/resync.htm      |  67 ++++
 interface/web/vm/templates/openvz.conf.tpl    |   1 +
 .../examples/mail_catchall_add.php            |   2 +-
 server/conf/sieve_filter.master               |   3 +-
 server/conf/sieve_filter_1.2.master           |   3 +-
 server/conf/vhost.conf.master                 |   1 +
 .../plugins-available/apache2_plugin.inc.php  |  21 +-
 220 files changed, 2515 insertions(+), 261 deletions(-)
 create mode 100644 interface/web/client/client_message.php
 create mode 100644 interface/web/client/lib/lang/ar_client_message.lng
 create mode 100644 interface/web/client/lib/lang/bg_client_message.lng
 create mode 100644 interface/web/client/lib/lang/br_client_message.lng
 create mode 100644 interface/web/client/lib/lang/cz_client_message.lng
 create mode 100644 interface/web/client/lib/lang/de_client_message.lng
 create mode 100644 interface/web/client/lib/lang/el_client_message.lng
 create mode 100644 interface/web/client/lib/lang/en_client_message.lng
 create mode 100644 interface/web/client/lib/lang/es_client_message.lng
 create mode 100644 interface/web/client/lib/lang/fi_client_message.lng
 create mode 100644 interface/web/client/lib/lang/fr_client_message.lng
 create mode 100644 interface/web/client/lib/lang/hr_client_message.lng
 create mode 100644 interface/web/client/lib/lang/hu_client_message.lng
 create mode 100644 interface/web/client/lib/lang/id_client_message.lng
 create mode 100644 interface/web/client/lib/lang/it_client_message.lng
 create mode 100644 interface/web/client/lib/lang/ja_client_message.lng
 create mode 100644 interface/web/client/lib/lang/nl_client_message.lng
 create mode 100644 interface/web/client/lib/lang/pl_client_message.lng
 create mode 100644 interface/web/client/lib/lang/pt_client_message.lng
 create mode 100644 interface/web/client/lib/lang/ro_client_message.lng
 create mode 100644 interface/web/client/lib/lang/ru_client_message.lng
 create mode 100644 interface/web/client/lib/lang/se_client_message.lng
 create mode 100644 interface/web/client/lib/lang/sk_client_message.lng
 create mode 100644 interface/web/client/lib/lang/tr_client_message.lng
 create mode 100644 interface/web/client/templates/client_message.htm
 create mode 100644 interface/web/tools/dns_import_tupa.php
 delete mode 100644 interface/web/tools/dns_resync.php
 create mode 100644 interface/web/tools/import_ispconfig.php
 create mode 100644 interface/web/tools/lib/lang/ar_import_ispconfig.lng
 create mode 100644 interface/web/tools/lib/lang/ar_resync.lng
 create mode 100644 interface/web/tools/lib/lang/bg_import_ispconfig.lng
 create mode 100644 interface/web/tools/lib/lang/bg_resync.lng
 create mode 100644 interface/web/tools/lib/lang/br_import_ispconfig.lng
 create mode 100644 interface/web/tools/lib/lang/br_resync.lng
 create mode 100644 interface/web/tools/lib/lang/cz_import_ispconfig.lng
 create mode 100644 interface/web/tools/lib/lang/cz_resync.lng
 create mode 100644 interface/web/tools/lib/lang/de_import_ispconfig.lng
 create mode 100644 interface/web/tools/lib/lang/de_resync.lng
 create mode 100644 interface/web/tools/lib/lang/el_import_ispconfig.lng
 create mode 100644 interface/web/tools/lib/lang/el_resync.lng
 create mode 100644 interface/web/tools/lib/lang/en_import_ispconfig.lng
 create mode 100644 interface/web/tools/lib/lang/en_resync.lng
 create mode 100644 interface/web/tools/lib/lang/es_import_ispconfig.lng
 create mode 100644 interface/web/tools/lib/lang/es_resync.lng
 create mode 100644 interface/web/tools/lib/lang/fi_import_ispconfig.lng
 create mode 100644 interface/web/tools/lib/lang/fi_resync.lng
 create mode 100644 interface/web/tools/lib/lang/fr_import_ispconfig.lng
 create mode 100644 interface/web/tools/lib/lang/fr_resync.lng
 create mode 100644 interface/web/tools/lib/lang/hr_import_ispconfig.lng
 create mode 100644 interface/web/tools/lib/lang/hr_resync.lng
 create mode 100644 interface/web/tools/lib/lang/hu_import_ispconfig.lng
 create mode 100644 interface/web/tools/lib/lang/hu_resync.lng
 create mode 100644 interface/web/tools/lib/lang/id_import_ispconfig.lng
 create mode 100644 interface/web/tools/lib/lang/id_resync.lng
 create mode 100644 interface/web/tools/lib/lang/it_import_ispconfig.lng
 create mode 100644 interface/web/tools/lib/lang/it_resync.lng
 create mode 100644 interface/web/tools/lib/lang/ja_import_ispconfig.lng
 create mode 100644 interface/web/tools/lib/lang/ja_resync.lng
 create mode 100644 interface/web/tools/lib/lang/nl_import_ispconfig.lng
 create mode 100644 interface/web/tools/lib/lang/nl_resync.lng
 create mode 100644 interface/web/tools/lib/lang/pl_import_ispconfig.lng
 create mode 100644 interface/web/tools/lib/lang/pl_resync.lng
 create mode 100644 interface/web/tools/lib/lang/pt_import_ispconfig.lng
 create mode 100644 interface/web/tools/lib/lang/pt_resync.lng
 create mode 100644 interface/web/tools/lib/lang/ro_import_ispconfig.lng
 create mode 100644 interface/web/tools/lib/lang/ro_resync.lng
 create mode 100644 interface/web/tools/lib/lang/ru_import_ispconfig.lng
 create mode 100644 interface/web/tools/lib/lang/ru_resync.lng
 create mode 100644 interface/web/tools/lib/lang/se_import_ispconfig.lng
 create mode 100644 interface/web/tools/lib/lang/se_resync.lng
 create mode 100644 interface/web/tools/lib/lang/sk_import_ispconfig.lng
 create mode 100644 interface/web/tools/lib/lang/sk_resync.lng
 create mode 100644 interface/web/tools/lib/lang/tr_import_ispconfig.lng
 create mode 100644 interface/web/tools/lib/lang/tr_resync.lng
 create mode 100644 interface/web/tools/lib/menu.d/import.menu.php
 rename interface/web/tools/lib/menu.d/{dns_resync.menu.php => resync.menu.php} (69%)
 create mode 100644 interface/web/tools/resync.php
 create mode 100644 interface/web/tools/templates/dns_import_tupa.htm
 delete mode 100644 interface/web/tools/templates/dns_resync.htm
 create mode 100644 interface/web/tools/templates/import_ispconfig.htm
 create mode 100644 interface/web/tools/templates/resync.htm

diff --git a/install/dist/conf/opensuse110.conf.php b/install/dist/conf/opensuse110.conf.php
index 19b6d7af9e..e57d9be467 100644
--- a/install/dist/conf/opensuse110.conf.php
+++ b/install/dist/conf/opensuse110.conf.php
@@ -97,7 +97,7 @@ $conf['web']['apps_vhost_user'] = 'ispapps';
 $conf['web']['apps_vhost_group'] = 'ispapps';
 
 //* Fastcgi
-$conf['fastcgi']['fastcgi_phpini_path'] = '/etc/php5/cgi/';
+$conf['fastcgi']['fastcgi_phpini_path'] = '/etc/php5/fastcgi/';
 $conf['fastcgi']['fastcgi_starter_path'] = '/srv/www/php-fcgi-scripts/[system_user]/';
 
 //* Postfix
diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php
index 4fbd4b5550..ba1c285fa2 100644
--- a/install/dist/lib/fedora.lib.php
+++ b/install/dist/lib/fedora.lib.php
@@ -1043,9 +1043,8 @@ class installer_dist extends installer_base {
 		replaceLine('/etc/sudoers','Defaults    requiretty','#Defaults    requiretty',0,0);
 		
 		if(is_dir($install_dir.'/interface/invoices')) {
-			chmod($install_dir.'/interface/invoices', 0770);
-			chown($install_dir.'/interface/invoices', 'ispconfig');
-			chgrp($install_dir.'/interface/invoices', 'ispconfig');
+			exec('chmod -R 770 '.escapeshellarg($install_dir.'/interface/invoices'));
+			exec('chown -R ispconfig:ispconfig '.escapeshellarg($install_dir.'/interface/invoices'));
 		}
 		
 	}
diff --git a/install/dist/lib/gentoo.lib.php b/install/dist/lib/gentoo.lib.php
index deb03f3001..5e5c93c2ae 100644
--- a/install/dist/lib/gentoo.lib.php
+++ b/install/dist/lib/gentoo.lib.php
@@ -874,9 +874,8 @@ class installer extends installer_base
 		}
 		
 		if(is_dir($install_dir.'/interface/invoices')) {
-			chmod($install_dir.'/interface/invoices', 0770);
-			chown($install_dir.'/interface/invoices', 'ispconfig');
-			chgrp($install_dir.'/interface/invoices', 'ispconfig');
+			exec('chmod -R 770 '.escapeshellarg($install_dir.'/interface/invoices'));
+			exec('chown -R ispconfig:ispconfig '.escapeshellarg($install_dir.'/interface/invoices'));
 		}
 		
 		// TODO: FIXME: add the www-data user to the ispconfig group. This is just for testing
diff --git a/install/dist/lib/opensuse.lib.php b/install/dist/lib/opensuse.lib.php
index 8a46e3c3a8..88f508a5c2 100644
--- a/install/dist/lib/opensuse.lib.php
+++ b/install/dist/lib/opensuse.lib.php
@@ -1084,9 +1084,8 @@ class installer_dist extends installer_base {
 		}
 		
 		if(is_dir($install_dir.'/interface/invoices')) {
-			chmod($install_dir.'/interface/invoices', 0770);
-			chown($install_dir.'/interface/invoices', 'ispconfig');
-			chgrp($install_dir.'/interface/invoices', 'ispconfig');
+			exec('chmod -R 770 '.escapeshellarg($install_dir.'/interface/invoices'));
+			exec('chown -R ispconfig:ispconfig '.escapeshellarg($install_dir.'/interface/invoices'));
 		}
 		
 		
diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php
index 4686aa3a09..94a176a78b 100644
--- a/install/lib/installer_base.lib.php
+++ b/install/lib/installer_base.lib.php
@@ -1784,9 +1784,8 @@ class installer_base {
 		}
 		
 		if(is_dir($install_dir.'/interface/invoices')) {
-			chmod($install_dir.'/interface/invoices', 0770);
-			chown($install_dir.'/interface/invoices', 'ispconfig');
-			chgrp($install_dir.'/interface/invoices', 'ispconfig');
+			exec('chmod -R 770 '.escapeshellarg($install_dir.'/interface/invoices'));
+			exec('chown -R ispconfig:ispconfig '.escapeshellarg($install_dir.'/interface/invoices'));
 		}
 
 		// TODO: FIXME: add the www-data user to the ispconfig group. This is just for testing
diff --git a/interface/lib/classes/validate_client.inc.php b/interface/lib/classes/validate_client.inc.php
index 97b9221822..9b0546a600 100644
--- a/interface/lib/classes/validate_client.inc.php
+++ b/interface/lib/classes/validate_client.inc.php
@@ -65,6 +65,36 @@ class validate_client {
 		}
 	}
 	
+	function username_collision($field_name, $field_value, $validator) {
+		global $app;
+		
+		if(isset($app->remoting_lib->primary_id)) {
+			$client_id = $app->remoting_lib->primary_id;
+		} else {
+			$client_id = $app->tform->primary_id;
+		}
+		
+		$app->uses('getconf');
+		$global_config = $app->getconf->get_global_config('sites');
+		
+		if((trim($field_value) == 'web' || preg_match('/^web[0-9]/',$field_value)) && 
+		  ($global_config['ftpuser_prefix'] == '[CLIENTNAME]' || 
+		   $global_config['ftpuser_prefix'] == '' ||
+		   $global_config['shelluser_prefix'] == '[CLIENTNAME]' ||
+		   $global_config['shelluser_prefix'] == '' )) {
+			$errmsg = $validator['errmsg'];
+			if(isset($app->tform->wordbook[$errmsg])) {
+				return $app->tform->wordbook[$errmsg]."<br>\r\n";
+			} else {
+				return $errmsg."<br>\r\n";
+			}
+		}
+		
+		
+		
+		
+	}
+	
 	
 	
 	
diff --git a/interface/lib/plugins/vm_openvz_plugin.inc.php b/interface/lib/plugins/vm_openvz_plugin.inc.php
index b1ce8e618d..42a653033b 100644
--- a/interface/lib/plugins/vm_openvz_plugin.inc.php
+++ b/interface/lib/plugins/vm_openvz_plugin.inc.php
@@ -173,6 +173,7 @@ class vm_openvz_plugin {
 		$tpl->setVar('numfile',$vm_template['numfile']);
 		$tpl->setVar('avnumproc',$vm_template['avnumproc']);
 		$tpl->setVar('numiptent',$vm_template['numiptent']);
+		$tpl->setVar('swappages',$vm_template['swappages']);
 		
 		$diskspace = $vm['diskspace']*1048576;
 		$diskinodes = $vm['diskspace']*524288;
diff --git a/interface/web/client/client_edit.php b/interface/web/client/client_edit.php
index c5d7ba4556..76616fc26f 100644
--- a/interface/web/client/client_edit.php
+++ b/interface/web/client/client_edit.php
@@ -1,6 +1,6 @@
 <?php
 /*
-Copyright (c) 2005 - 2008, Till Brehm, projektfarm Gmbh
+Copyright (c) 2005 - 2012, Till Brehm, projektfarm Gmbh, ISPConfig UG
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without modification,
diff --git a/interface/web/client/client_message.php b/interface/web/client/client_message.php
new file mode 100644
index 0000000000..f555c99955
--- /dev/null
+++ b/interface/web/client/client_message.php
@@ -0,0 +1,110 @@
+<?php
+/*
+Copyright (c) 2012, 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('../../lib/config.inc.php');
+require_once('../../lib/app.inc.php');
+
+//* Check permissions for module
+$app->auth->check_module_permissions('client');
+
+//* This function is not available in demo mode
+if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.');
+
+$app->uses('tpl');
+
+$app->tpl->newTemplate('form.tpl.htm');
+$app->tpl->setInclude('content_tpl', 'templates/client_message.htm');
+
+//* load language file 
+$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_client_message.lng';
+include($lng_file);
+$app->tpl->setVar($wb);
+
+$msg = '';
+$error = '';
+
+//* Save data
+if(isset($_POST) && count($_POST) > 1) {
+	
+	//* Check values
+	if(!preg_match("/^\w+[\w\.\-\+]*\w{0,}@\w+[\w.-]*\w+\.[a-zA-Z0-9\-]{2,30}$/i", $_POST['sender'])) $error .= $wb['sender_invalid_error'].'<br />';
+	if(empty($_POST['subject'])) $error .= $wb['subject_invalid_error'].'<br />';
+	if(empty($_POST['message'])) $error .= $wb['message_invalid_error'].'<br />';
+	
+	//* Send message
+	if($error == '') {
+		//* Select all clients and resellers
+		if($_SESSION["s"]["user"]["typ"] == 'admin'){
+			$sql = "SELECT * FROM client WHERE email != ''";
+		} else {
+			$client_id = intval($_SESSION['s']['user']['client_id']);
+			if($client_id == 0) die('Invalid Client ID.');
+			$sql = "SELECT * FROM client WHERE email != '' AND parent_client_id = '$client_id'";
+		}
+		
+		//* Get clients
+		$clients = $app->db->queryAllRecords($sql);
+		if(is_array($clients)) {
+			$msg = $wb['email_sent_to_txt'].' ';
+			foreach($clients as $client) {
+				
+				//* Parse cleint details into message
+				$message = $_POST['message'];
+				foreach($client as $key => $val) {
+					$message = str_replace('{'.$key.'}', $val, $message);
+				}
+				
+				//* Send the email
+				$app->functions->mail($client['email'], $_POST['subject'], $message, $_POST['sender']);
+				$msg .= $client['email'].', ';
+			}
+			$msg = substr($msg,0,-2);
+		}
+		
+	} else {
+		$app->tpl->setVar('sender',$_POST['sender']);
+		$app->tpl->setVar('subject',$_POST['subject']);
+		$app->tpl->setVar('message',$_POST['message']);
+	}
+}
+
+if($_SESSION["s"]["user"]["typ"] == 'admin'){
+	$app->tpl->setVar('form_legend_txt',$wb['form_legend_admin_txt']);
+} else {
+	$app->tpl->setVar('form_legend_txt',$wb['form_legend_client_txt']);
+}
+
+$app->tpl->setVar('okmsg',$msg);
+$app->tpl->setVar('error',$error);
+
+$app->tpl_defaults();
+$app->tpl->pparse();
+
+
+?>
diff --git a/interface/web/client/form/client.tform.php b/interface/web/client/form/client.tform.php
index 3fca605ef9..d29a54c8df 100644
--- a/interface/web/client/form/client.tform.php
+++ b/interface/web/client/form/client.tform.php
@@ -134,7 +134,11 @@ $form["tabs"]['address'] = array (
 														'class' => 'validate_client',
 														'function' => 'username_unique',
 														'errmsg'=> 'username_error_unique'),
-										2 => array (	'type'	=> 'REGEX',
+										2 => array (	'type'	=> 'CUSTOM',
+														'class' => 'validate_client',
+														'function' => 'username_collision',
+														'errmsg'=> 'username_error_collision'),
+										3 => array (	'type'	=> 'REGEX',
 														'regex' => '/^[\w\.\-\_]{0,64}$/',
 														'errmsg'=> 'username_error_regex'),
 										),
diff --git a/interface/web/client/form/reseller.tform.php b/interface/web/client/form/reseller.tform.php
index c60d136d97..f78e98a783 100644
--- a/interface/web/client/form/reseller.tform.php
+++ b/interface/web/client/form/reseller.tform.php
@@ -126,7 +126,11 @@ $form["tabs"]['address'] = array (
 														'class' => 'validate_client',
 														'function' => 'username_unique',
 														'errmsg'=> 'username_error_unique'),
-										2 => array (	'type'	=> 'REGEX',
+										2 => array (	'type'	=> 'CUSTOM',
+														'class' => 'validate_client',
+														'function' => 'username_collision',
+														'errmsg'=> 'username_error_collision'),
+										3 => array (	'type'	=> 'REGEX',
 														'regex' => '/^[\w\.\-\_]{0,64}$/',
 														'errmsg'=> 'username_error_regex'),
 										),
diff --git a/interface/web/client/lib/lang/ar.lng b/interface/web/client/lib/lang/ar.lng
index 9d70b064a8..44ad01a7d7 100644
--- a/interface/web/client/lib/lang/ar.lng
+++ b/interface/web/client/lib/lang/ar.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Resellers';
 $wb['error_has_clients'] = 'This reseller has clients. Delete the clients of the reseller first.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/ar_client.lng b/interface/web/client/lib/lang/ar_client.lng
index f688fd5f7d..cd252a060c 100644
--- a/interface/web/client/lib/lang/ar_client.lng
+++ b/interface/web/client/lib/lang/ar_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/ar_client_message.lng b/interface/web/client/lib/lang/ar_client_message.lng
new file mode 100644
index 0000000000..4f4ef3799f
--- /dev/null
+++ b/interface/web/client/lib/lang/ar_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$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:';
+?>
diff --git a/interface/web/client/lib/lang/ar_reseller.lng b/interface/web/client/lib/lang/ar_reseller.lng
index ea62daf721..e097df03ae 100644
--- a/interface/web/client/lib/lang/ar_reseller.lng
+++ b/interface/web/client/lib/lang/ar_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/bg.lng b/interface/web/client/lib/lang/bg.lng
index 5f1f246ff7..a1ad57d3b6 100644
--- a/interface/web/client/lib/lang/bg.lng
+++ b/interface/web/client/lib/lang/bg.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Resellers';
 $wb['error_has_clients'] = 'This reseller has clients. Delete the clients of the reseller first.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/bg_client.lng b/interface/web/client/lib/lang/bg_client.lng
index 830109f18e..650511ed00 100644
--- a/interface/web/client/lib/lang/bg_client.lng
+++ b/interface/web/client/lib/lang/bg_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/bg_client_message.lng b/interface/web/client/lib/lang/bg_client_message.lng
new file mode 100644
index 0000000000..4f4ef3799f
--- /dev/null
+++ b/interface/web/client/lib/lang/bg_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$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:';
+?>
diff --git a/interface/web/client/lib/lang/bg_reseller.lng b/interface/web/client/lib/lang/bg_reseller.lng
index ea62daf721..e097df03ae 100644
--- a/interface/web/client/lib/lang/bg_reseller.lng
+++ b/interface/web/client/lib/lang/bg_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/br.lng b/interface/web/client/lib/lang/br.lng
index c47aa91e65..886e81db29 100644
--- a/interface/web/client/lib/lang/br.lng
+++ b/interface/web/client/lib/lang/br.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Revendedores';
 $wb['error_has_clients'] = 'Este revendedor possui clientes. Você deve remover os clientes primeiro.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/br_client.lng b/interface/web/client/lib/lang/br_client.lng
index f900d5b831..70b33a6ecf 100644
--- a/interface/web/client/lib/lang/br_client.lng
+++ b/interface/web/client/lib/lang/br_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/br_client_message.lng b/interface/web/client/lib/lang/br_client_message.lng
new file mode 100644
index 0000000000..4f4ef3799f
--- /dev/null
+++ b/interface/web/client/lib/lang/br_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$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:';
+?>
diff --git a/interface/web/client/lib/lang/br_reseller.lng b/interface/web/client/lib/lang/br_reseller.lng
index 670d6756b5..3b47cc50bc 100644
--- a/interface/web/client/lib/lang/br_reseller.lng
+++ b/interface/web/client/lib/lang/br_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/cz.lng b/interface/web/client/lib/lang/cz.lng
index eeef0fcf6c..6cae801cb6 100644
--- a/interface/web/client/lib/lang/cz.lng
+++ b/interface/web/client/lib/lang/cz.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Distributoři';
 $wb['error_has_clients'] = 'Distributor má klienty. Nejdříve smažte tyto klienty.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/cz_client.lng b/interface/web/client/lib/lang/cz_client.lng
index b6a4d22e2f..df4a92778d 100644
--- a/interface/web/client/lib/lang/cz_client.lng
+++ b/interface/web/client/lib/lang/cz_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/cz_client_message.lng b/interface/web/client/lib/lang/cz_client_message.lng
new file mode 100644
index 0000000000..4f4ef3799f
--- /dev/null
+++ b/interface/web/client/lib/lang/cz_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$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:';
+?>
diff --git a/interface/web/client/lib/lang/cz_reseller.lng b/interface/web/client/lib/lang/cz_reseller.lng
index 75d4cf469e..90e6832cd9 100644
--- a/interface/web/client/lib/lang/cz_reseller.lng
+++ b/interface/web/client/lib/lang/cz_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/de.lng b/interface/web/client/lib/lang/de.lng
index 89617e20af..60c9d05702 100644
--- a/interface/web/client/lib/lang/de.lng
+++ b/interface/web/client/lib/lang/de.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Reseller';
 $wb['error_has_clients'] = 'Dieser Reseller besitzt Kunden. Bitte zuerst die Kunden löschen.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/de_client.lng b/interface/web/client/lib/lang/de_client.lng
index 587d0d5069..46c41a8c79 100644
--- a/interface/web/client/lib/lang/de_client.lng
+++ b/interface/web/client/lib/lang/de_client.lng
@@ -106,6 +106,7 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 $wb['bank_account_number_txt'] = 'Kontonr.';
 $wb['bank_code_txt'] = 'BLZ';
 $wb['bank_name_txt'] = 'Bank';
diff --git a/interface/web/client/lib/lang/de_client_message.lng b/interface/web/client/lib/lang/de_client_message.lng
new file mode 100644
index 0000000000..4f4ef3799f
--- /dev/null
+++ b/interface/web/client/lib/lang/de_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$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:';
+?>
diff --git a/interface/web/client/lib/lang/de_reseller.lng b/interface/web/client/lib/lang/de_reseller.lng
index b34bd1cccd..0664e88bf6 100644
--- a/interface/web/client/lib/lang/de_reseller.lng
+++ b/interface/web/client/lib/lang/de_reseller.lng
@@ -106,6 +106,7 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 $wb["web_limits_txt"] = 'Web-Limits';
 $wb["email_limits_txt"] = 'Email-Limits';
 $wb["database_limits_txt"] = 'Datenbank-Limits';
diff --git a/interface/web/client/lib/lang/el.lng b/interface/web/client/lib/lang/el.lng
index cc2433aba0..87294f6841 100644
--- a/interface/web/client/lib/lang/el.lng
+++ b/interface/web/client/lib/lang/el.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Μεταπωλητές';
 $wb['error_has_clients'] = 'Ο Μεταπωλητής έχει πελάτες. Διαγράψτε πρώτα τους πελάτες.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/el_client.lng b/interface/web/client/lib/lang/el_client.lng
index 6df5a00317..e0e1387a1a 100644
--- a/interface/web/client/lib/lang/el_client.lng
+++ b/interface/web/client/lib/lang/el_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Εξαναγκασμός προτύπ
 $wb['limit_openvz_vm_error_notint'] = 'Το όριο εικονικών server πρέπει να είναι αριθμός.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/el_client_message.lng b/interface/web/client/lib/lang/el_client_message.lng
new file mode 100644
index 0000000000..4f4ef3799f
--- /dev/null
+++ b/interface/web/client/lib/lang/el_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$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:';
+?>
diff --git a/interface/web/client/lib/lang/el_reseller.lng b/interface/web/client/lib/lang/el_reseller.lng
index 79e54efae0..3403175557 100644
--- a/interface/web/client/lib/lang/el_reseller.lng
+++ b/interface/web/client/lib/lang/el_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Εξαναγκασμός προτύπ
 $wb['limit_openvz_vm_error_notint'] = 'Το όριο εικονικών server πρέπει να είναι αριθμός.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/en.lng b/interface/web/client/lib/lang/en.lng
index 4b10b2b8e6..03e36b2ceb 100644
--- a/interface/web/client/lib/lang/en.lng
+++ b/interface/web/client/lib/lang/en.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Resellers';
 $wb["error_has_clients"] = 'This reseller has clients. Delete the clients of the reseller first.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
\ No newline at end of file
diff --git a/interface/web/client/lib/lang/en_client.lng b/interface/web/client/lib/lang/en_client.lng
index d912744554..3a9f30e31d 100644
--- a/interface/web/client/lib/lang/en_client.lng
+++ b/interface/web/client/lib/lang/en_client.lng
@@ -109,6 +109,7 @@ $wb["limit_openvz_vm_template_id_txt"] = 'Force virtual server template';
 $wb["limit_openvz_vm_error_notint"] = 'The virtual server limit must be a number.';
 $wb["web_php_options_notempty"] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb["ssh_chroot_notempty"] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb["username_error_collision"] = 'The username may not start with the word -web- or -web- followed by a number.';
 $wb["bank_account_number_txt"] = 'Bank account no.';
 $wb["bank_code_txt"] = 'Bank code';
 $wb["bank_name_txt"] = 'Bank name';
diff --git a/interface/web/client/lib/lang/en_client_message.lng b/interface/web/client/lib/lang/en_client_message.lng
new file mode 100644
index 0000000000..4f4ef3799f
--- /dev/null
+++ b/interface/web/client/lib/lang/en_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$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:';
+?>
diff --git a/interface/web/client/lib/lang/en_reseller.lng b/interface/web/client/lib/lang/en_reseller.lng
index df2ec24ace..4863a4eb09 100644
--- a/interface/web/client/lib/lang/en_reseller.lng
+++ b/interface/web/client/lib/lang/en_reseller.lng
@@ -108,6 +108,7 @@ $wb["limit_openvz_vm_template_id_txt"] = 'Force virtual server template';
 $wb["limit_openvz_vm_error_notint"] = 'The virtual server limit must be a number.';
 $wb["web_php_options_notempty"] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb["ssh_chroot_notempty"] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb["username_error_collision"] = 'The username may not start with the word -web- or -web- followed by a number.';
 $wb["web_limits_txt"] = 'Web Limits';
 $wb["email_limits_txt"] = 'Email Limits';
 $wb["database_limits_txt"] = 'Database Limits';
diff --git a/interface/web/client/lib/lang/es.lng b/interface/web/client/lib/lang/es.lng
index 9f72fe574b..8d77b9203f 100644
--- a/interface/web/client/lib/lang/es.lng
+++ b/interface/web/client/lib/lang/es.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Revendedores';
 $wb['error_has_clients'] = 'This reseller has clients. Delete the clients of the reseller first.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/es_client.lng b/interface/web/client/lib/lang/es_client.lng
index 3c461a54ad..047e70a2dd 100644
--- a/interface/web/client/lib/lang/es_client.lng
+++ b/interface/web/client/lib/lang/es_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/es_client_message.lng b/interface/web/client/lib/lang/es_client_message.lng
new file mode 100644
index 0000000000..4f4ef3799f
--- /dev/null
+++ b/interface/web/client/lib/lang/es_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$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:';
+?>
diff --git a/interface/web/client/lib/lang/es_reseller.lng b/interface/web/client/lib/lang/es_reseller.lng
index 23ea38e5e8..412bafe02d 100644
--- a/interface/web/client/lib/lang/es_reseller.lng
+++ b/interface/web/client/lib/lang/es_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/fi.lng b/interface/web/client/lib/lang/fi.lng
index 538902414f..243ac6db49 100755
--- a/interface/web/client/lib/lang/fi.lng
+++ b/interface/web/client/lib/lang/fi.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Jälleenmyyjät';
 $wb['error_has_clients'] = 'Tällä jälleenmyyjällä on asiakkaita, poista ne ensin.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/fi_client.lng b/interface/web/client/lib/lang/fi_client.lng
index 45fbefa3b2..30f111e94d 100755
--- a/interface/web/client/lib/lang/fi_client.lng
+++ b/interface/web/client/lib/lang/fi_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/fi_client_message.lng b/interface/web/client/lib/lang/fi_client_message.lng
new file mode 100644
index 0000000000..4f4ef3799f
--- /dev/null
+++ b/interface/web/client/lib/lang/fi_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$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:';
+?>
diff --git a/interface/web/client/lib/lang/fi_reseller.lng b/interface/web/client/lib/lang/fi_reseller.lng
index bc4b368654..0bc176186d 100644
--- a/interface/web/client/lib/lang/fi_reseller.lng
+++ b/interface/web/client/lib/lang/fi_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/fr.lng b/interface/web/client/lib/lang/fr.lng
index 624247c7f0..a7e1738015 100644
--- a/interface/web/client/lib/lang/fr.lng
+++ b/interface/web/client/lib/lang/fr.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Revendeurs';
 $wb['error_has_clients'] = 'Ce revendeur a des clients. Effacez dabord les clients de ce revendeur.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/fr_client.lng b/interface/web/client/lib/lang/fr_client.lng
index 3254ca0efb..38e85f6cf7 100644
--- a/interface/web/client/lib/lang/fr_client.lng
+++ b/interface/web/client/lib/lang/fr_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/fr_client_message.lng b/interface/web/client/lib/lang/fr_client_message.lng
new file mode 100644
index 0000000000..4f4ef3799f
--- /dev/null
+++ b/interface/web/client/lib/lang/fr_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$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:';
+?>
diff --git a/interface/web/client/lib/lang/fr_reseller.lng b/interface/web/client/lib/lang/fr_reseller.lng
index 40b3502cca..d9387747f0 100644
--- a/interface/web/client/lib/lang/fr_reseller.lng
+++ b/interface/web/client/lib/lang/fr_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/hr.lng b/interface/web/client/lib/lang/hr.lng
index 73850f43a3..f4126df215 100644
--- a/interface/web/client/lib/lang/hr.lng
+++ b/interface/web/client/lib/lang/hr.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Preprodavači';
 $wb['error_has_clients'] = 'Ovaj preprodavač ima klijente. Prvo morate obrisati klijente preprodavača.';
 $wb['add_additional_template_txt'] = 'Dodaj dodatni predložak';
 $wb['delete_additional_template_txt'] = 'Obriši dodatni predložak';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/hr_client.lng b/interface/web/client/lib/lang/hr_client.lng
index a635281957..2537d74c14 100644
--- a/interface/web/client/lib/lang/hr_client.lng
+++ b/interface/web/client/lib/lang/hr_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Primjeni predložak virtualnog servera
 $wb['limit_openvz_vm_error_notint'] = 'Broj virtualnih servera mora biti znamenka.';
 $wb['web_php_options_notempty'] = 'Nisu izabrane PHP opcije. Izaberite jednu PHP opciju.';
 $wb['ssh_chroot_notempty'] = 'Nisu izabrane SSH opcije. Izaberite jednu SSH opciju.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/hr_client_message.lng b/interface/web/client/lib/lang/hr_client_message.lng
new file mode 100644
index 0000000000..4f4ef3799f
--- /dev/null
+++ b/interface/web/client/lib/lang/hr_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$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:';
+?>
diff --git a/interface/web/client/lib/lang/hr_reseller.lng b/interface/web/client/lib/lang/hr_reseller.lng
index 3f932b16a9..241f3ce442 100644
--- a/interface/web/client/lib/lang/hr_reseller.lng
+++ b/interface/web/client/lib/lang/hr_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Primjeni predložak virtualnog servera
 $wb['limit_openvz_vm_error_notint'] = 'Broj virtualnih servera mora biti znamenka.';
 $wb['web_php_options_notempty'] = 'Nisu izabrane PHP opcije. Izaberite jednu PHP opciju.';
 $wb['ssh_chroot_notempty'] = 'Nisu izabrane SSH opcije. Izaberite jednu SSH opciju.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/hu.lng b/interface/web/client/lib/lang/hu.lng
index ee5a41d343..2ad20039aa 100644
--- a/interface/web/client/lib/lang/hu.lng
+++ b/interface/web/client/lib/lang/hu.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Viszonteladók';
 $wb['error_has_clients'] = 'This reseller has clients. Delete the clients of the reseller first.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/hu_client.lng b/interface/web/client/lib/lang/hu_client.lng
index 6bc3a8b830..f31ec8d278 100644
--- a/interface/web/client/lib/lang/hu_client.lng
+++ b/interface/web/client/lib/lang/hu_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/hu_client_message.lng b/interface/web/client/lib/lang/hu_client_message.lng
new file mode 100644
index 0000000000..4f4ef3799f
--- /dev/null
+++ b/interface/web/client/lib/lang/hu_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$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:';
+?>
diff --git a/interface/web/client/lib/lang/hu_reseller.lng b/interface/web/client/lib/lang/hu_reseller.lng
index b1d8e0135e..6e129d2887 100644
--- a/interface/web/client/lib/lang/hu_reseller.lng
+++ b/interface/web/client/lib/lang/hu_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/id.lng b/interface/web/client/lib/lang/id.lng
index 09bf4fb48e..78c0101b83 100644
--- a/interface/web/client/lib/lang/id.lng
+++ b/interface/web/client/lib/lang/id.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Reseller';
 $wb['error_has_clients'] = 'Reseller ini memiliki klien. Hapus klien dari reseller terlebih dahulu.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/id_client.lng b/interface/web/client/lib/lang/id_client.lng
index 5465034e55..f85bb00113 100644
--- a/interface/web/client/lib/lang/id_client.lng
+++ b/interface/web/client/lib/lang/id_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/id_client_message.lng b/interface/web/client/lib/lang/id_client_message.lng
new file mode 100644
index 0000000000..4f4ef3799f
--- /dev/null
+++ b/interface/web/client/lib/lang/id_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$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:';
+?>
diff --git a/interface/web/client/lib/lang/id_reseller.lng b/interface/web/client/lib/lang/id_reseller.lng
index 4ce86492bf..b03aae63eb 100644
--- a/interface/web/client/lib/lang/id_reseller.lng
+++ b/interface/web/client/lib/lang/id_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/it.lng b/interface/web/client/lib/lang/it.lng
index 44d29f733a..9ea1419ebe 100644
--- a/interface/web/client/lib/lang/it.lng
+++ b/interface/web/client/lib/lang/it.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Rivenditori';
 $wb['error_has_clients'] = 'Questo rivenditore ha dei clienti, bisogna cancellarli prima di procedere.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/it_client.lng b/interface/web/client/lib/lang/it_client.lng
index a0f5bba7fe..1682d848ef 100644
--- a/interface/web/client/lib/lang/it_client.lng
+++ b/interface/web/client/lib/lang/it_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/it_client_message.lng b/interface/web/client/lib/lang/it_client_message.lng
new file mode 100644
index 0000000000..4f4ef3799f
--- /dev/null
+++ b/interface/web/client/lib/lang/it_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$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:';
+?>
diff --git a/interface/web/client/lib/lang/it_reseller.lng b/interface/web/client/lib/lang/it_reseller.lng
index ea62daf721..e097df03ae 100644
--- a/interface/web/client/lib/lang/it_reseller.lng
+++ b/interface/web/client/lib/lang/it_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/ja.lng b/interface/web/client/lib/lang/ja.lng
index 66ed95ed7d..0eb9efe521 100644
--- a/interface/web/client/lib/lang/ja.lng
+++ b/interface/web/client/lib/lang/ja.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'リセラー';
 $wb['error_has_clients'] = 'This reseller has clients. Delete the clients of the reseller first.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/ja_client.lng b/interface/web/client/lib/lang/ja_client.lng
index edf1a4fac6..e8f0c2ae1c 100644
--- a/interface/web/client/lib/lang/ja_client.lng
+++ b/interface/web/client/lib/lang/ja_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/ja_client_message.lng b/interface/web/client/lib/lang/ja_client_message.lng
new file mode 100644
index 0000000000..4f4ef3799f
--- /dev/null
+++ b/interface/web/client/lib/lang/ja_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$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:';
+?>
diff --git a/interface/web/client/lib/lang/ja_reseller.lng b/interface/web/client/lib/lang/ja_reseller.lng
index b3b08a6a9b..35543702ab 100644
--- a/interface/web/client/lib/lang/ja_reseller.lng
+++ b/interface/web/client/lib/lang/ja_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/nl.lng b/interface/web/client/lib/lang/nl.lng
index abfdc9184d..e344124b1b 100644
--- a/interface/web/client/lib/lang/nl.lng
+++ b/interface/web/client/lib/lang/nl.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Resellers';
 $wb['error_has_clients'] = 'Deze reseller heeft klanten. Verwijder eerst de klanten van de reseller';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/nl_client.lng b/interface/web/client/lib/lang/nl_client.lng
index 35234e59b1..acbe70cdb3 100644
--- a/interface/web/client/lib/lang/nl_client.lng
+++ b/interface/web/client/lib/lang/nl_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/nl_client_message.lng b/interface/web/client/lib/lang/nl_client_message.lng
new file mode 100644
index 0000000000..4f4ef3799f
--- /dev/null
+++ b/interface/web/client/lib/lang/nl_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$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:';
+?>
diff --git a/interface/web/client/lib/lang/nl_reseller.lng b/interface/web/client/lib/lang/nl_reseller.lng
index 59913a1635..f9bd57ea6a 100644
--- a/interface/web/client/lib/lang/nl_reseller.lng
+++ b/interface/web/client/lib/lang/nl_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/pl.lng b/interface/web/client/lib/lang/pl.lng
index f0200d3784..ddecb90ff3 100644
--- a/interface/web/client/lib/lang/pl.lng
+++ b/interface/web/client/lib/lang/pl.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Resellerzy';
 $wb['error_has_clients'] = 'Reseller posiada klientów. Usuń ich zanim usuniesz resellera.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/pl_client.lng b/interface/web/client/lib/lang/pl_client.lng
index b822079e48..e2e3cabfb1 100644
--- a/interface/web/client/lib/lang/pl_client.lng
+++ b/interface/web/client/lib/lang/pl_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/pl_client_message.lng b/interface/web/client/lib/lang/pl_client_message.lng
new file mode 100644
index 0000000000..4f4ef3799f
--- /dev/null
+++ b/interface/web/client/lib/lang/pl_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$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:';
+?>
diff --git a/interface/web/client/lib/lang/pl_reseller.lng b/interface/web/client/lib/lang/pl_reseller.lng
index e0631f2b9e..e4ab1fb268 100644
--- a/interface/web/client/lib/lang/pl_reseller.lng
+++ b/interface/web/client/lib/lang/pl_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/pt.lng b/interface/web/client/lib/lang/pt.lng
index 8ec6dd1dc0..274c0f8560 100644
--- a/interface/web/client/lib/lang/pt.lng
+++ b/interface/web/client/lib/lang/pt.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Revendedores';
 $wb['error_has_clients'] = 'Este revendedor possui clientes. Deve remover os clientes primeiro.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/pt_client.lng b/interface/web/client/lib/lang/pt_client.lng
index bdc3f7eb87..7cf9c96042 100644
--- a/interface/web/client/lib/lang/pt_client.lng
+++ b/interface/web/client/lib/lang/pt_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/pt_client_message.lng b/interface/web/client/lib/lang/pt_client_message.lng
new file mode 100644
index 0000000000..4f4ef3799f
--- /dev/null
+++ b/interface/web/client/lib/lang/pt_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$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:';
+?>
diff --git a/interface/web/client/lib/lang/pt_reseller.lng b/interface/web/client/lib/lang/pt_reseller.lng
index 83c9fa94f8..ac55686f69 100644
--- a/interface/web/client/lib/lang/pt_reseller.lng
+++ b/interface/web/client/lib/lang/pt_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/ro.lng b/interface/web/client/lib/lang/ro.lng
index 9d70b064a8..44ad01a7d7 100644
--- a/interface/web/client/lib/lang/ro.lng
+++ b/interface/web/client/lib/lang/ro.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Resellers';
 $wb['error_has_clients'] = 'This reseller has clients. Delete the clients of the reseller first.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/ro_client.lng b/interface/web/client/lib/lang/ro_client.lng
index 1380813b1f..6712694f52 100644
--- a/interface/web/client/lib/lang/ro_client.lng
+++ b/interface/web/client/lib/lang/ro_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/ro_client_message.lng b/interface/web/client/lib/lang/ro_client_message.lng
new file mode 100644
index 0000000000..4f4ef3799f
--- /dev/null
+++ b/interface/web/client/lib/lang/ro_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$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:';
+?>
diff --git a/interface/web/client/lib/lang/ro_reseller.lng b/interface/web/client/lib/lang/ro_reseller.lng
index ea62daf721..e097df03ae 100644
--- a/interface/web/client/lib/lang/ro_reseller.lng
+++ b/interface/web/client/lib/lang/ro_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/ru.lng b/interface/web/client/lib/lang/ru.lng
index ec39c06294..d10a3cc05d 100644
--- a/interface/web/client/lib/lang/ru.lng
+++ b/interface/web/client/lib/lang/ru.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Реселлеры';
 $wb['error_has_clients'] = 'У реселлера есть клиенты. Вначале удалите их.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/ru_client.lng b/interface/web/client/lib/lang/ru_client.lng
index ab7c44803c..c18f5b81a2 100644
--- a/interface/web/client/lib/lang/ru_client.lng
+++ b/interface/web/client/lib/lang/ru_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/ru_client_message.lng b/interface/web/client/lib/lang/ru_client_message.lng
new file mode 100644
index 0000000000..4f4ef3799f
--- /dev/null
+++ b/interface/web/client/lib/lang/ru_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$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:';
+?>
diff --git a/interface/web/client/lib/lang/ru_reseller.lng b/interface/web/client/lib/lang/ru_reseller.lng
index 3c36e5bc2d..768a8bd8ce 100644
--- a/interface/web/client/lib/lang/ru_reseller.lng
+++ b/interface/web/client/lib/lang/ru_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/se.lng b/interface/web/client/lib/lang/se.lng
index 9d70b064a8..44ad01a7d7 100644
--- a/interface/web/client/lib/lang/se.lng
+++ b/interface/web/client/lib/lang/se.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Resellers';
 $wb['error_has_clients'] = 'This reseller has clients. Delete the clients of the reseller first.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/se_client.lng b/interface/web/client/lib/lang/se_client.lng
index bcefaddf21..214a56dab3 100644
--- a/interface/web/client/lib/lang/se_client.lng
+++ b/interface/web/client/lib/lang/se_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/se_client_message.lng b/interface/web/client/lib/lang/se_client_message.lng
new file mode 100644
index 0000000000..4f4ef3799f
--- /dev/null
+++ b/interface/web/client/lib/lang/se_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$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:';
+?>
diff --git a/interface/web/client/lib/lang/se_reseller.lng b/interface/web/client/lib/lang/se_reseller.lng
index ea62daf721..e097df03ae 100644
--- a/interface/web/client/lib/lang/se_reseller.lng
+++ b/interface/web/client/lib/lang/se_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/sk.lng b/interface/web/client/lib/lang/sk.lng
index a6f182ee2e..2f7fe8fdce 100644
--- a/interface/web/client/lib/lang/sk.lng
+++ b/interface/web/client/lib/lang/sk.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Predajcovia';
 $wb['error_has_clients'] = 'This reseller has clients. Delete the clients of the reseller first.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/sk_client.lng b/interface/web/client/lib/lang/sk_client.lng
index 72cd853231..4c088f4c46 100644
--- a/interface/web/client/lib/lang/sk_client.lng
+++ b/interface/web/client/lib/lang/sk_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/sk_client_message.lng b/interface/web/client/lib/lang/sk_client_message.lng
new file mode 100644
index 0000000000..4f4ef3799f
--- /dev/null
+++ b/interface/web/client/lib/lang/sk_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$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:';
+?>
diff --git a/interface/web/client/lib/lang/sk_reseller.lng b/interface/web/client/lib/lang/sk_reseller.lng
index 2008e6c1c6..859158bf03 100644
--- a/interface/web/client/lib/lang/sk_reseller.lng
+++ b/interface/web/client/lib/lang/sk_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/tr.lng b/interface/web/client/lib/lang/tr.lng
index 9caa4cb8c4..d336d75967 100644
--- a/interface/web/client/lib/lang/tr.lng
+++ b/interface/web/client/lib/lang/tr.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Resellerlar';
 $wb['error_has_clients'] = 'Bu reseller müşterilere sahip. Resellerı silmeden önce müşterilerini silmelisiniz.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/tr_client.lng b/interface/web/client/lib/lang/tr_client.lng
index 117eb4f4be..8da9085607 100644
--- a/interface/web/client/lib/lang/tr_client.lng
+++ b/interface/web/client/lib/lang/tr_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/tr_client_message.lng b/interface/web/client/lib/lang/tr_client_message.lng
new file mode 100644
index 0000000000..4f4ef3799f
--- /dev/null
+++ b/interface/web/client/lib/lang/tr_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$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:';
+?>
diff --git a/interface/web/client/lib/lang/tr_reseller.lng b/interface/web/client/lib/lang/tr_reseller.lng
index ba24fda9b8..5022db2d64 100644
--- a/interface/web/client/lib/lang/tr_reseller.lng
+++ b/interface/web/client/lib/lang/tr_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/module.conf.php b/interface/web/client/lib/module.conf.php
index f37461d0d9..3e36a26e88 100644
--- a/interface/web/client/lib/module.conf.php
+++ b/interface/web/client/lib/module.conf.php
@@ -52,9 +52,19 @@ $items[] = array( 'title' 	=> "Add Reseller",
 $module["nav"][] = array(	'title'	=> 'Resellers',
 							'open' 	=> 1,
 							'items'	=> $items);
+
+unset($items);
 }
 
+$items[] = array( 'title' 	=> "Send email",
+				  'target' 	=> 'content',
+				  'link'	=> 'client/client_message.php',
+				  'html_id' => 'reseller_add');
 
+$module["nav"][] = array(	'title'	=> 'Messaging',
+							'open' 	=> 1,
+							'items'	=> $items);
 
+unset($items);
 
 ?>
\ No newline at end of file
diff --git a/interface/web/client/templates/client_message.htm b/interface/web/client/templates/client_message.htm
new file mode 100644
index 0000000000..cc2183ed4b
--- /dev/null
+++ b/interface/web/client/templates/client_message.htm
@@ -0,0 +1,31 @@
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="form_desc_txt"></p>
+
+<div class="panel panel_client">
+  <div class="pnl_formsarea">
+    <fieldset class="inlineLabels"><legend>{tmpl_var name='form_legend_txt'}</legend>
+      <tmpl_if name="okmsg">
+	<div id="OKMsg"><p><tmpl_var name="okmsg"></p></div>
+  </tmpl_if>
+  <tmpl_if name="error">
+	<div id="errorMsg"><h3>ERROR</h3><ol><tmpl_var name="error"></ol></div>
+  </tmpl_if>
+	  <div class="ctrlHolder">
+      	<label for="sender">{tmpl_var name='sender_txt'}</label>
+        <input name="sender" id="sender" value="{tmpl_var name='sender'}" style="width:500px" size="30" maxlength="255" type="text" class="textInput" />
+	  </div>
+	  <div class="ctrlHolder">
+      	<label for="subject">{tmpl_var name='subject_txt'}</label>
+        <input name="subject" id="subject" value="{tmpl_var name='subject'}" style="width:500px" size="30" maxlength="255" type="text" class="textInput" />
+	  </div>
+      <div class="ctrlHolder">
+      	<label for="message">{tmpl_var name='message_txt'}</label>
+        <textarea name="message" id="message" rows='' cols='' style="width:500px">{tmpl_var name='message'}</textarea>
+      </div>
+    </fieldset>
+    <div class="buttonHolder buttons">
+      <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_send_txt'}" onClick="submitForm('pageForm','client/client_message.php');"><span>{tmpl_var name='btn_send_txt'}</span></button>
+      <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('client/client_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+    </div>
+  </div>
+</div>
diff --git a/interface/web/dns/lib/lang/ar_dns_import.lng b/interface/web/dns/lib/lang/ar_dns_import.lng
index 536c62f781..201a755b36 100644
--- a/interface/web/dns/lib/lang/ar_dns_import.lng
+++ b/interface/web/dns/lib/lang/ar_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/bg_dns_import.lng b/interface/web/dns/lib/lang/bg_dns_import.lng
index 536c62f781..201a755b36 100644
--- a/interface/web/dns/lib/lang/bg_dns_import.lng
+++ b/interface/web/dns/lib/lang/bg_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/br_dns_import.lng b/interface/web/dns/lib/lang/br_dns_import.lng
index 536c62f781..201a755b36 100644
--- a/interface/web/dns/lib/lang/br_dns_import.lng
+++ b/interface/web/dns/lib/lang/br_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/cz_dns_import.lng b/interface/web/dns/lib/lang/cz_dns_import.lng
index 536c62f781..201a755b36 100644
--- a/interface/web/dns/lib/lang/cz_dns_import.lng
+++ b/interface/web/dns/lib/lang/cz_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/de_dns_import.lng b/interface/web/dns/lib/lang/de_dns_import.lng
index 536c62f781..201a755b36 100644
--- a/interface/web/dns/lib/lang/de_dns_import.lng
+++ b/interface/web/dns/lib/lang/de_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/el_dns_import.lng b/interface/web/dns/lib/lang/el_dns_import.lng
index 536c62f781..201a755b36 100644
--- a/interface/web/dns/lib/lang/el_dns_import.lng
+++ b/interface/web/dns/lib/lang/el_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/es_dns_import.lng b/interface/web/dns/lib/lang/es_dns_import.lng
index 536c62f781..201a755b36 100644
--- a/interface/web/dns/lib/lang/es_dns_import.lng
+++ b/interface/web/dns/lib/lang/es_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/fi_dns_import.lng b/interface/web/dns/lib/lang/fi_dns_import.lng
index 536c62f781..201a755b36 100644
--- a/interface/web/dns/lib/lang/fi_dns_import.lng
+++ b/interface/web/dns/lib/lang/fi_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/fr_dns_import.lng b/interface/web/dns/lib/lang/fr_dns_import.lng
index 536c62f781..201a755b36 100644
--- a/interface/web/dns/lib/lang/fr_dns_import.lng
+++ b/interface/web/dns/lib/lang/fr_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/hr_dns_import.lng b/interface/web/dns/lib/lang/hr_dns_import.lng
index 536c62f781..201a755b36 100644
--- a/interface/web/dns/lib/lang/hr_dns_import.lng
+++ b/interface/web/dns/lib/lang/hr_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/hu_dns_import.lng b/interface/web/dns/lib/lang/hu_dns_import.lng
index 536c62f781..201a755b36 100644
--- a/interface/web/dns/lib/lang/hu_dns_import.lng
+++ b/interface/web/dns/lib/lang/hu_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/id_dns_import.lng b/interface/web/dns/lib/lang/id_dns_import.lng
index 536c62f781..201a755b36 100644
--- a/interface/web/dns/lib/lang/id_dns_import.lng
+++ b/interface/web/dns/lib/lang/id_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/it_dns_import.lng b/interface/web/dns/lib/lang/it_dns_import.lng
index 536c62f781..201a755b36 100644
--- a/interface/web/dns/lib/lang/it_dns_import.lng
+++ b/interface/web/dns/lib/lang/it_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/ja_dns_import.lng b/interface/web/dns/lib/lang/ja_dns_import.lng
index 536c62f781..201a755b36 100644
--- a/interface/web/dns/lib/lang/ja_dns_import.lng
+++ b/interface/web/dns/lib/lang/ja_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/nl_dns_import.lng b/interface/web/dns/lib/lang/nl_dns_import.lng
index 536c62f781..201a755b36 100644
--- a/interface/web/dns/lib/lang/nl_dns_import.lng
+++ b/interface/web/dns/lib/lang/nl_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/pl_dns_import.lng b/interface/web/dns/lib/lang/pl_dns_import.lng
index 536c62f781..201a755b36 100644
--- a/interface/web/dns/lib/lang/pl_dns_import.lng
+++ b/interface/web/dns/lib/lang/pl_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/pt_dns_import.lng b/interface/web/dns/lib/lang/pt_dns_import.lng
index 536c62f781..201a755b36 100644
--- a/interface/web/dns/lib/lang/pt_dns_import.lng
+++ b/interface/web/dns/lib/lang/pt_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/ro_dns_import.lng b/interface/web/dns/lib/lang/ro_dns_import.lng
index 536c62f781..201a755b36 100644
--- a/interface/web/dns/lib/lang/ro_dns_import.lng
+++ b/interface/web/dns/lib/lang/ro_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/ru_dns_import.lng b/interface/web/dns/lib/lang/ru_dns_import.lng
index 536c62f781..201a755b36 100644
--- a/interface/web/dns/lib/lang/ru_dns_import.lng
+++ b/interface/web/dns/lib/lang/ru_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/se_dns_import.lng b/interface/web/dns/lib/lang/se_dns_import.lng
index 536c62f781..201a755b36 100644
--- a/interface/web/dns/lib/lang/se_dns_import.lng
+++ b/interface/web/dns/lib/lang/se_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/sk_dns_import.lng b/interface/web/dns/lib/lang/sk_dns_import.lng
index 536c62f781..201a755b36 100644
--- a/interface/web/dns/lib/lang/sk_dns_import.lng
+++ b/interface/web/dns/lib/lang/sk_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/tr_dns_import.lng b/interface/web/dns/lib/lang/tr_dns_import.lng
index 536c62f781..201a755b36 100644
--- a/interface/web/dns/lib/lang/tr_dns_import.lng
+++ b/interface/web/dns/lib/lang/tr_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/list/dns_a.list.php b/interface/web/dns/list/dns_a.list.php
index 1f23439acb..ec32eb8234 100644
--- a/interface/web/dns/list/dns_a.list.php
+++ b/interface/web/dns/list/dns_a.list.php
@@ -55,7 +55,7 @@ $liste["item"][] = array(	'field'		=> "active",
 							'prefix'	=> "",
 							'suffix'	=> "",
 							'width'		=> "",
-							'value'		=> array('y' => "<div id=\"ir-Yes\" class=\"swap\"><span>Yes</span></div>",'n' => "<div class=\"swap\" id=\"ir-No\"><span>No</span></div>"));
+							'value'		=> array('Y' => "<div id=\"ir-Yes\" class=\"swap\"><span>Yes</span></div>",'N' => "<div class=\"swap\" id=\"ir-No\"><span>No</span></div>"));
 
 
 $liste["item"][] = array(	'field'		=> "server_id",
diff --git a/interface/web/dns/list/dns_slave.list.php b/interface/web/dns/list/dns_slave.list.php
index 5fa12e0a43..aaa09e0343 100644
--- a/interface/web/dns/list/dns_slave.list.php
+++ b/interface/web/dns/list/dns_slave.list.php
@@ -55,7 +55,7 @@ $liste["item"][] = array(	'field'		=> "active",
 							'prefix'	=> "",
 							'suffix'	=> "",
 							'width'		=> "",
-							'value'		=> array('y' => "<div id=\"ir-Yes\" class=\"swap\"><span>Yes</span></div>",'n' => "<div class=\"swap\" id=\"ir-No\"><span>No</span></div>"));
+							'value'		=> array('Y' => "<div id=\"ir-Yes\" class=\"swap\"><span>Yes</span></div>",'N' => "<div class=\"swap\" id=\"ir-No\"><span>No</span></div>"));
 
 
 $liste["item"][] = array(	'field'		=> "server_id",
diff --git a/interface/web/dns/templates/dns_a_list.htm b/interface/web/dns/templates/dns_a_list.htm
index 643cf9175d..1e2e569778 100644
--- a/interface/web/dns/templates/dns_a_list.htm
+++ b/interface/web/dns/templates/dns_a_list.htm
@@ -62,7 +62,7 @@
         <tbody>
           <tmpl_loop name="records">
           <tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
-            <td class="tbl_col_active"><a href="#" onClick="loadContent('dns/dns_{tmpl_var name='type_lowercase'}_edit.php?id={tmpl_var name='id'}');"><img src="themes/{tmpl_var name='theme'}/icons/{tmpl_var name='_active_'}" border="0" /></a></td>
+            <td class="tbl_col_active"><a href="#" onClick="loadContent('dns/dns_{tmpl_var name='type_lowercase'}_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="active"}</a></td>
             <td class="tbl_col_type"><a href="#" onClick="loadContent('dns/dns_{tmpl_var name='type_lowercase'}_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="type"}</a></td>
             <td class="tbl_col_name"><a href="#" onClick="loadContent('dns/dns_{tmpl_var name='type_lowercase'}_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="name"}</a></td>
             <td class="tbl_col_data"><a href="#" onClick="loadContent('dns/dns_{tmpl_var name='type_lowercase'}_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="data"}</a></td>
diff --git a/interface/web/dns/templates/dns_slave_list.htm b/interface/web/dns/templates/dns_slave_list.htm
index 351eb4bd37..d93701e0df 100644
--- a/interface/web/dns/templates/dns_slave_list.htm
+++ b/interface/web/dns/templates/dns_slave_list.htm
@@ -35,7 +35,7 @@
         <tbody>
           <tmpl_loop name="records">
           <tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
-            <td class="tbl_col_active"><a href="#" onClick="loadContent('dns/dns_slave_edit.php?id={tmpl_var name='id'}');"><img src="themes/{tmpl_var name='theme'}/icons/{tmpl_var name='_active_'}" border="0" /></a></td>
+            <td class="tbl_col_active"><a href="#" onClick="loadContent('dns/dns_slave_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="active"}</a></td>
             <td class="tbl_col_server_id"><a href="#" onClick="loadContent('dns/dns_slave_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="server_id"}</a></td>
             <td class="tbl_col_origin"><a href="#" onClick="loadContent('dns/dns_slave_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="origin"}</a></td>
             <td class="tbl_col_ns"><a href="#" onClick="loadContent('dns/dns_slave_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="ns"}</a></td>
diff --git a/interface/web/mail/lib/lang/de_mail_user.lng b/interface/web/mail/lib/lang/de_mail_user.lng
index 3bed84cf71..1d2fd3b16e 100644
--- a/interface/web/mail/lib/lang/de_mail_user.lng
+++ b/interface/web/mail/lib/lang/de_mail_user.lng
@@ -37,7 +37,7 @@ $wb['cc_txt'] = 'Send copy to';
 $wb['cc_error_isemail'] = 'The Send copy to field does not conatin a valid email address';
 $wb['login_error_unique'] = 'Login wird bereits verwendet.';
 $wb['login_error_regex'] = 'Zulässige Zeichen sind A-Z, a-z, 0-9, ., _ und -.';
-$wb['login_txt'] = 'Login (optional)';
+$wb['login_txt'] = 'Login';
 $wb['error_login_email_txt'] = 'Dieser Loginname ist nicht zulässig. Bitte verwenden Sie einen anderen Loginnamen oder die E-Mail-Adresse als Login.';
 $wb['domain_txt'] = 'Domain';
 $wb['now_txt'] = 'Now';
diff --git a/interface/web/mail/lib/lang/en_mail_user.lng b/interface/web/mail/lib/lang/en_mail_user.lng
index b66871dc8d..65c810f7a2 100644
--- a/interface/web/mail/lib/lang/en_mail_user.lng
+++ b/interface/web/mail/lib/lang/en_mail_user.lng
@@ -41,6 +41,6 @@ $wb['domain_txt'] = 'Domain';
 $wb['now_txt']='Now';
 $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)';
+$wb['login_txt'] = 'Login';
 $wb['error_login_email_txt'] = 'This login is not allowed. Please enter a different login or use the mail address as login.';
 ?>
diff --git a/interface/web/monitor/show_sys_state.php b/interface/web/monitor/show_sys_state.php
index 6d30fb9a6a..634880c520 100644
--- a/interface/web/monitor/show_sys_state.php
+++ b/interface/web/monitor/show_sys_state.php
@@ -302,8 +302,8 @@ function _getServerState($serverId, $serverName) {
 /*
 * gets the state from the db and process it
 */
-function _processDbState($type, $serverId) {
-	global $app, $serverState, $messages;
+function _processDbState($type, $serverId, $serverState, $messages) {
+	global $app;
 
 	/*
     * Always the NEWEST record of each monitoring is responsible for the
diff --git a/interface/web/tools/dns_import_tupa.php b/interface/web/tools/dns_import_tupa.php
new file mode 100644
index 0000000000..2e2cbcb8e9
--- /dev/null
+++ b/interface/web/tools/dns_import_tupa.php
@@ -0,0 +1,156 @@
+<?php
+/*
+Copyright (c) 2008, 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.
+*/
+
+require_once('../../lib/config.inc.php');
+require_once('../../lib/app.inc.php');
+
+//* Check permissions for module
+$app->auth->check_module_permissions('admin');
+
+//* This is only allowed for administrators
+if(!$app->auth->is_admin()) die('only allowed for administrators.');
+
+$app->uses('tpl,validate_dns');
+
+$app->tpl->newTemplate('form.tpl.htm');
+$app->tpl->setInclude('content_tpl', 'templates/dns_import_tupa.htm');
+$msg = '';
+$error = '';
+
+// Resyncing dns zones
+if(isset($_POST['start']) && $_POST['start'] == 1) {
+	
+	//* Set variable sin template
+	$app->tpl->setVar('dbhost',$_POST['dbhost']);
+	$app->tpl->setVar('dbname',$_POST['dbname']);
+	$app->tpl->setVar('dbuser',$_POST['dbuser']);
+	$app->tpl->setVar('dbpassword',$_POST['dbpassword']);
+	
+	//* Establish connection to external database
+	$msg .= 'Connecting to external database...<br />';
+	
+	//* Backup DB login details
+	$conf_bak['db_host'] = $conf['db_host'];
+	$conf_bak['db_database'] = $conf['db_database'];
+	$conf_bak['db_user'] = $conf['db_user'];
+	$conf_bak['db_password'] = $conf['db_password'];
+	
+	//* Set external Login details
+	$conf['db_host'] = $_POST['dbhost'];
+	$conf['db_database'] = $_POST['dbname'];
+	$conf['db_user'] = $_POST['dbuser'];
+	$conf['db_password'] = $_POST['dbpassword'];
+	
+	//* create new db object
+	$exdb = new db();
+	
+	$server_id = 1;
+	$sys_userid = 1;
+	$sys_groupid = 1;
+	
+	function addot($text) {
+		return trim($text) . '.';
+	}
+	
+	//* Connect to DB
+	if($exdb->connect()) {
+		$domains = $exdb->queryAllRecords("SELECT * FROM domains WHERE type = 'MASTER'");
+		if(is_array($domains)) {
+			foreach($domains as $domain) {
+				$soa = $exdb->queryOneRecord("SELECT * FROM records WHERE type = 'SOA' AND domain_id = ".$domain['id']);
+				if(is_array($soa)) {
+					$parts = explode(' ',$soa['content']);
+					$origin = addot($soa['name']);
+					$ns = addot($parts[0]);
+					$mbox = addot($parts[1]);
+					$serial = $parts[2];
+					$refresh = 7200;
+					$retry =  540;
+					$expire = 604800;
+					$minimum = 86400;
+					$ttl = $soa['ttl'];
+					
+					$insert_data = "(`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `origin`, `ns`, `mbox`, `serial`, `refresh`, `retry`, `expire`, `minimum`, `ttl`, `active`, `xfer`) VALUES
+					('$sys_userid', '$sys_groupid', 'riud', 'riud', '', '$server_id', '$origin', '$ns', '$mbox', '$serial', '$refresh', '$retry', '$expire', '$minimum', '$ttl', 'Y', '')";
+					$dns_soa_id = $app->db->datalogInsert('dns_soa', $insert_data, 'id');
+					unset($parts);
+					$msg .= 'Import Zone: '.$soa['name'].'<br />';
+					
+					//* Process the other records
+					$records = $exdb->queryAllRecords("SELECT * FROM records WHERE type != 'SOA' AND domain_id = ".$domain['id']);
+					if(is_array($records)) {
+						foreach($records as $rec) {
+							$rr = array();
+							
+							$rr['name'] = addot($rec['name']);
+							$rr['type'] = $rec['type'];
+							$rr['aux'] = $rec['prio'];
+							$rr['ttl'] = $rec['ttl'];
+							
+							if($rec['type'] == 'NS' || $rec['type'] == 'MX' || $rec['type'] == 'CNAME') {
+								$rr['data'] = addot($rec['content']);
+							} else {
+								$rr['data'] = $rec['content'];
+							}
+							
+							$insert_data = "(`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `zone`, `name`, `type`, `data`, `aux`, `ttl`, `active`) VALUES
+							('$sys_userid', '$sys_groupid', 'riud', 'riud', '', '$server_id', '$dns_soa_id', '$rr[name]', '$rr[type]', '$rr[data]', '$rr[aux]', '$rr[ttl]', 'Y')";
+							$dns_rr_id = $app->db->datalogInsert('dns_rr', $insert_data, 'id');
+							//$msg .= $insert_data.'<br />';
+							
+						}
+					}
+				}
+				
+			}
+		}
+		
+		
+		
+	} else {
+		$error .= $exdb->errorMessage;
+	}
+	
+	//* restore db login details
+	$conf['db_host'] = $conf_bak['db_host'];
+	$conf['db_database'] = $conf_bak['db_database'];
+	$conf['db_user'] = $conf_bak['db_user'];
+	$conf['db_password'] = $conf_bak['db_password'];
+	
+}
+
+$app->tpl->setVar('msg',$msg);
+$app->tpl->setVar('error',$error);
+
+
+$app->tpl_defaults();
+$app->tpl->pparse();
+
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/dns_resync.php b/interface/web/tools/dns_resync.php
deleted file mode 100644
index c80735df3e..0000000000
--- a/interface/web/tools/dns_resync.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-/*
-Copyright (c) 2008, 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.
-*/
-
-require_once('../../lib/config.inc.php');
-require_once('../../lib/app.inc.php');
-
-//* Check permissions for module
-$app->auth->check_module_permissions('admin');
-
-//* This is only allowed for administrators
-if(!$app->auth->is_admin()) die('only allowed for administrators.');
-
-$app->uses('tpl,validate_dns');
-
-$app->tpl->newTemplate('form.tpl.htm');
-$app->tpl->setInclude('content_tpl', 'templates/dns_resync.htm');
-$msg = '';
-$error = '';
-
-// Resyncing dns zones
-if(isset($_POST['resync']) && $_POST['resync'] == 1) {
-	$zones = $app->db->queryAllRecords("SELECT id,origin,serial FROM dns_soa WHERE active = 'Y'");
-	if(is_array($zones) && !empty($zones)) {
-		foreach($zones as $zone) {
-			$records = $app->db->queryAllRecords("SELECT id,serial FROM dns_rr WHERE zone = ".$zone['id']." AND active = 'Y'");
-			if(is_array($records)) {
-				foreach($records as $rec) {
-					$new_serial = $app->validate_dns->increase_serial($rec["serial"]);
-					$app->db->datalogUpdate('dns_rr', "serial = '".$new_serial."'", 'id', $rec['id']);
-					
-				}
-			}
-			$new_serial = $app->validate_dns->increase_serial($zone["serial"]);
-			$app->db->datalogUpdate('dns_soa', "serial = '".$new_serial."'", 'id', $zone['id']);
-			$msg .= "Resynced: ".$zone['origin'].'<br />';
-		}
-	} else {
-		$error .= "No zones found to sync.<br />";
-	}
-	
-}
-
-$app->tpl->setVar('msg',$msg);
-$app->tpl->setVar('error',$error);
-
-
-//* load language file
-/*
-$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_mailbox_import.lng';
-include($lng_file);
-$app->tpl->setVar($wb);
-*/
-
-$app->tpl_defaults();
-$app->tpl->pparse();
-
-
-?>
\ No newline at end of file
diff --git a/interface/web/tools/import_ispconfig.php b/interface/web/tools/import_ispconfig.php
new file mode 100644
index 0000000000..eb0a2f3b2e
--- /dev/null
+++ b/interface/web/tools/import_ispconfig.php
@@ -0,0 +1,303 @@
+<?php
+/*
+Copyright (c) 2012, Till Brehm, projektfarm Gmbh, 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('../../lib/config.inc.php');
+require_once('../../lib/app.inc.php');
+
+//* Check permissions for module
+$app->auth->check_module_permissions('admin');
+
+//* This is only allowed for administrators
+if(!$app->auth->is_admin()) die('only allowed for administrators.');
+
+$app->uses('tpl,validate_dns');
+
+$app->tpl->newTemplate('form.tpl.htm');
+$app->tpl->setInclude('content_tpl', 'templates/import_ispconfig.htm');
+$msg = '';
+$error = '';
+
+//* load language file
+$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_import_ispconfig.lng';
+include($lng_file);
+$app->tpl->setVar($wb);
+
+if(isset($_POST['connected'])) {
+	$connected = intval($_POST['connected']);
+	if($connected == 0) {
+
+		//* Try to connect to remote server
+		if(empty($_POST['remote_server'])) $error .= 'Remote Server is empty.</br>';
+		if(empty($_POST['remote_user'])) $error .= 'Remote User is empty.</br>';
+		if(empty($_POST['remote_password'])) $error .= 'Remote Password is empty.</br>';
+
+		if($error == '') {
+			try {
+				$client = new SoapClient(null, array('location' => $_POST['remote_server'],
+                                     'uri'      => $_POST['remote_server'].'/index.php',
+									 'trace' => 1,
+									 'exceptions' => 1));
+				
+				if($remote_session_id = $client->login($_POST['remote_user'],$_POST['remote_password'])) {
+					$connected = 1;
+					$msg .= 'Successfully connected to remote server.';
+				}
+			} catch (SoapFault $e) {
+				//echo $client->__getLastResponse();
+				$error .= $e->getMessage();
+				$connected = 0;
+			}
+		}
+	}
+	
+	if($connected == 1) {
+		
+		//* Fill the client select field
+		$sql = "SELECT groupid, name FROM sys_group WHERE client_id > 0 ORDER BY name";
+		$clients = $app->db->queryAllRecords($sql);
+		$client_select = "";
+		if(is_array($clients)) {
+			foreach( $clients as $client) {
+				$selected = @($client['groupid'] == $_POST['client_group_id'])?'SELECTED':'';
+				$client_select .= "<option value='$client[groupid]' $selected>$client[name]</option>\r\n";
+			}
+		}
+		$app->tpl->setVar("client_group_id",$client_select);
+		
+		
+		try {
+			$client = new SoapClient(null, array('location' => $_POST['remote_server'],
+                                'uri'      => $_POST['remote_server'].'/index.php',
+								'trace' => 1,
+								'exceptions' => 1));
+		
+		if(!isset($remote_session_id)) $remote_session_id = $_POST['remote_session_id'];
+		
+		//* Get all email domains
+		$mail_domains = $client->mail_domain_get($remote_session_id, array('active' => 'y'));
+		$mail_domain_select = '<option value="">-- select domain --</option>';
+		if(is_array($mail_domains)) {
+			foreach( $mail_domains as $mail_domain) {
+				$selected = @($mail_domain['domain'] == $_POST['mail_domain'])?'SELECTED':'';
+				$mail_domain_select .= "<option value='$mail_domain[domain]' $selected>$mail_domain[domain]</option>\r\n";
+			}
+		}
+		$app->tpl->setVar("mail_domain",$mail_domain_select);
+		
+		//* Do the import
+		if($_POST['mail_domain'] != '') start_domain_import($_POST['mail_domain']);
+		
+		
+		
+		} catch (SoapFault $e) {
+			//echo $client->__getLastResponse();
+			$error .= $e->getMessage();
+			$connected = 0;
+		}
+		
+	}
+	
+}
+
+$app->tpl->setVar('remote_server',$_POST['remote_server']);
+$app->tpl->setVar('remote_user',$_POST['remote_user']);
+$app->tpl->setVar('remote_password',$_POST['remote_password']);
+$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_defaults();
+$app->tpl->pparse();
+
+###########################################################
+
+function start_domain_import($mail_domain) {
+	global $app, $conf, $client, $msg, $error, $remote_session_id;
+	
+	//* Get the user and groupid for the new records
+	$sys_groupid = intval($_POST['client_group_id']);
+	$tmp = $app->db->queryOneRecord("SELECT userid FROM sys_user WHERE default_group = $sys_groupid");
+	$sys_userid = intval($tmp['userid']);
+	unset($tmp);
+	if($sys_groupid == 0) $error .= 'Inavlid groupid<br />';
+	if($sys_userid == 0) $error .= 'Inavlid Userid<br />';
+	
+	//* 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)) {
+		$mail_domain_rec = $mail_domain_rec[0];
+		$tmp = $app->db->queryOneRecord("SELECT count(domain_id) as number FROM mail_domain WHERE domain = '".$app->db->quote($mail_domain)."'");
+		if($tmp['number'] > 0) $error .= 'Domain '.$mail_domain.' exists already in local database.<br />';
+		unset($tmp);
+		
+		//* Change the record owner and remove the index field
+		$mail_domain_rec['sys_userid'] = $sys_userid;
+		$mail_domain_rec['sys_groupid'] = $sys_groupid;
+		unset($mail_domain_rec['domain_id']);
+		
+		//* Insert domain if no error occurred
+		if($error == '') {
+			$app->db->datalogInsert('mail_domain', $mail_domain_rec, 'domain_id');
+			$msg .= "Imported mail domain ".$mail_domain_rec['domain']."<br />";
+		} else {
+			return false;
+		}
+		
+		//* Import mailboxes
+		if(isset($_POST['import_mailbox']) && $_POST['import_mailbox'] == 1) {
+			$mail_users = $client->mail_user_get($remote_session_id, array('email' => '%@'.$mail_domain));
+			if(is_array($mail_users)) {
+				foreach($mail_users as $mail_user) {
+					$tmp = $app->db->queryOneRecord("SELECT count(mailuser_id) as number FROM mail_user WHERE email = '".$app->db->quote($mail_user['email'])."'");
+					if($tmp['number'] == 0) {
+						
+						//* Prepare record
+						$mail_user['sys_userid'] = $sys_userid;
+						$mail_user['sys_groupid'] = $sys_groupid;
+						$remote_mailuser_id = $mail_user['mailuser_id'];
+						unset($mail_user['mailuser_id']);
+						if(!isset($_POST['import_user_filter'])) $mail_user['custom_mailfilter'] = '';
+						
+						//* Insert record in DB
+						$local_mailuser_id = $app->db->datalogInsert('mail_user', $mail_user, 'mailuser_id');
+						$msg .= "Imported mailbox ".$mail_user['email']."<br />";
+						
+						//* Import mail user filters
+						if(isset($_POST['import_user_filter']) && $_POST['import_user_filter'] == 1 && $local_mailuser_id > 0) {
+							
+							$mail_user_filters = $client->mail_user_filter_get($remote_session_id, array('mailuser_id' => $remote_mailuser_id));
+							
+							if(is_array($mail_user_filters)) {
+								foreach($mail_user_filters as $mail_user_filter) {
+									$mail_user_filter['sys_userid'] = $sys_userid;
+									$mail_user_filter['sys_groupid'] = $sys_groupid;
+									$mail_user_filter['mailuser_id'] = $local_mailuser_id;
+									unset($mail_user_filter['filter_id']);
+									
+									//* Insert record in DB
+									$app->db->datalogInsert('mail_user_filter', $mail_user_filter, 'filter_id');
+									$msg .= "Imported mailbox filter ".$mail_user['email'].": ".$mail_user_filter['rulename']."<br />";
+								}
+							}
+						}
+					} else {
+						$error .= "Mailbox ".$mail_user['email']." exists in local database. Skipped import of mailbox<br />";
+					}
+					
+				}
+			}
+		}
+		
+		//* Import email aliases
+		if(isset($_POST['import_alias']) && $_POST['import_alias'] == 1) {
+			$mail_aliases = $client->mail_alias_get($remote_session_id, array('type' => 'alias', 'destination' => '%@'.$mail_domain));
+			if(is_array($mail_aliases)) {
+				foreach($mail_aliases as $mail_alias) {
+					$tmp = $app->db->queryOneRecord("SELECT count(forwarding_id) as number FROM mail_forwarding WHERE `type` = 'alias' AND source = '".$app->db->quote($mail_alias['source'])."' AND destination = '".$app->db->quote($mail_alias['destination'])."'");
+					if($tmp['number'] == 0) {
+						$mail_alias['sys_userid'] = $sys_userid;
+						$mail_alias['sys_groupid'] = $sys_groupid;
+						unset($mail_alias['forwarding_id']);
+						$app->db->datalogInsert('mail_forwarding', $mail_alias, 'forwarding_id');
+						$msg .= "Imported email alias ".$mail_alias['source']."<br />";
+					} else {
+						$error .= "Email alias ".$mail_alias['source']." exists in local database. Skipped import.<br />";
+					}
+					
+				}
+			}
+		}
+		
+		//* Import domain aliases
+		if(isset($_POST['import_aliasdomain']) && $_POST['import_aliasdomain'] == 1) {
+			$mail_aliases = $client->mail_alias_get($remote_session_id, array('type' => 'aliasdomain', 'destination' => '@'.$mail_domain));
+			if(is_array($mail_aliases)) {
+				foreach($mail_aliases as $mail_alias) {
+					$tmp = $app->db->queryOneRecord("SELECT count(forwarding_id) as number FROM mail_forwarding WHERE `type` = 'aliasdomain' AND source = '".$app->db->quote($mail_alias['source'])."' AND destination = '".$app->db->quote($mail_alias['destination'])."'");
+					if($tmp['number'] == 0) {
+						$mail_alias['sys_userid'] = $sys_userid;
+						$mail_alias['sys_groupid'] = $sys_groupid;
+						unset($mail_alias['forwarding_id']);
+						$app->db->datalogInsert('mail_forwarding', $mail_alias, 'forwarding_id');
+						$msg .= "Imported email aliasdomain ".$mail_alias['source']."<br />";
+					} else {
+						$error .= "Email aliasdomain ".$mail_alias['source']." exists in local database. Skipped import.<br />";
+					}
+					
+				}
+			}
+		}
+		
+		//* Import email forward
+		if(isset($_POST['import_forward']) && $_POST['import_forward'] == 1) {
+			$mail_forwards = $client->mail_forward_get($remote_session_id, array('type' => 'forward', 'source' => '%@'.$mail_domain));
+			if(is_array($mail_forwards)) {
+				foreach($mail_forwards as $mail_forward) {
+					$tmp = $app->db->queryOneRecord("SELECT count(forwarding_id) as number FROM mail_forwarding WHERE `type` = 'forward' AND source = '".$app->db->quote($mail_forward['source'])."' AND destination = '".$app->db->quote($mail_forward['destination'])."'");
+					if($tmp['number'] == 0) {
+						$mail_forward['sys_userid'] = $sys_userid;
+						$mail_forward['sys_groupid'] = $sys_groupid;
+						unset($mail_forward['forwarding_id']);
+						$app->db->datalogInsert('mail_forwarding', $mail_forward, 'forwarding_id');
+						$msg .= "Imported email forward ".$mail_forward['source']."<br />";
+					} else {
+						$error .= "Email forward ".$mail_forward['source']." exists in local database. Skipped import.<br />";
+					}
+					
+				}
+			}
+		}
+		
+		//* Import spamfilter
+		if(isset($_POST['import_spamfilter']) && $_POST['import_spamfilter'] == 1) {
+			$mail_spamfilters = $client->mail_spamfilter_user_get($remote_session_id, array('email' => '%@'.$mail_domain));
+			if(is_array($mail_spamfilters)) {
+				foreach($mail_spamfilters as $mail_spamfilter) {
+					$tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM spamfilter_users WHERE email = '".$app->db->quote($mail_spamfilter['email'])."'");
+					if($tmp['number'] == 0) {
+						$mail_spamfilter['sys_userid'] = $sys_userid;
+						$mail_spamfilter['sys_groupid'] = $sys_groupid;
+						unset($mail_spamfilter['id']);
+						$app->db->datalogInsert('spamfilter_users', $mail_spamfilter, 'id');
+						$msg .= "Imported spamfilter user ".$mail_spamfilter['email']."<br />";
+					} else {
+						$error .= "Spamfilter user ".$mail_spamfilter['email']." exists in local database. Skipped import.<br />";
+					}
+					
+				}
+			}
+		}
+
+	}
+	
+}
+
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/ar.lng b/interface/web/tools/lib/lang/ar.lng
index f33fe1a64f..eb2f76d18a 100644
--- a/interface/web/tools/lib/lang/ar.lng
+++ b/interface/web/tools/lib/lang/ar.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Settings';
 $wb['ISPConfig Tools'] = 'ISPConfig Tools';
 $wb['Password and Language'] = 'Password and Language';
 $wb['ispconfig_tools_note'] = 'This module allows you to change the password and language and to start a resync of the DNS records.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/ar_import_ispconfig.lng b/interface/web/tools/lib/lang/ar_import_ispconfig.lng
new file mode 100644
index 0000000000..65ea145980
--- /dev/null
+++ b/interface/web/tools/lib/lang/ar_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$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';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/ar_resync.lng b/interface/web/tools/lib/lang/ar_resync.lng
new file mode 100644
index 0000000000..f4cbf0d7fc
--- /dev/null
+++ b/interface/web/tools/lib/lang/ar_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/bg.lng b/interface/web/tools/lib/lang/bg.lng
index d302dc5166..472b603ae0 100644
--- a/interface/web/tools/lib/lang/bg.lng
+++ b/interface/web/tools/lib/lang/bg.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Настройки';
 $wb['ISPConfig Tools'] = 'ISPConfig инструменти';
 $wb['Password and Language'] = 'Парола и език';
 $wb['ispconfig_tools_note'] = 'This module allows you to change the password and language and to start a resync of the DNS records.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/bg_import_ispconfig.lng b/interface/web/tools/lib/lang/bg_import_ispconfig.lng
new file mode 100644
index 0000000000..65ea145980
--- /dev/null
+++ b/interface/web/tools/lib/lang/bg_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$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';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/bg_resync.lng b/interface/web/tools/lib/lang/bg_resync.lng
new file mode 100644
index 0000000000..f4cbf0d7fc
--- /dev/null
+++ b/interface/web/tools/lib/lang/bg_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/br.lng b/interface/web/tools/lib/lang/br.lng
index db8af60422..78f894ede5 100644
--- a/interface/web/tools/lib/lang/br.lng
+++ b/interface/web/tools/lib/lang/br.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Configurações';
 $wb['ISPConfig Tools'] = 'Ferramentas';
 $wb['Password and Language'] = 'Senha e Idioma';
 $wb['ispconfig_tools_note'] = 'This module allows you to change the password and language and to start a resync of the DNS records.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/br_import_ispconfig.lng b/interface/web/tools/lib/lang/br_import_ispconfig.lng
new file mode 100644
index 0000000000..65ea145980
--- /dev/null
+++ b/interface/web/tools/lib/lang/br_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$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';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/br_resync.lng b/interface/web/tools/lib/lang/br_resync.lng
new file mode 100644
index 0000000000..f4cbf0d7fc
--- /dev/null
+++ b/interface/web/tools/lib/lang/br_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/cz.lng b/interface/web/tools/lib/lang/cz.lng
index 7dc8e90981..491e515d05 100644
--- a/interface/web/tools/lib/lang/cz.lng
+++ b/interface/web/tools/lib/lang/cz.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Nastavení';
 $wb['ISPConfig Tools'] = 'ISPConfig nástroje';
 $wb['Password and Language'] = 'Heslo a jazyk';
 $wb['ispconfig_tools_note'] = 'This module allows you to change the password and language and to start a resync of the DNS records.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/cz_import_ispconfig.lng b/interface/web/tools/lib/lang/cz_import_ispconfig.lng
new file mode 100644
index 0000000000..65ea145980
--- /dev/null
+++ b/interface/web/tools/lib/lang/cz_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$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';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/cz_resync.lng b/interface/web/tools/lib/lang/cz_resync.lng
new file mode 100644
index 0000000000..f4cbf0d7fc
--- /dev/null
+++ b/interface/web/tools/lib/lang/cz_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/de.lng b/interface/web/tools/lib/lang/de.lng
index 5fc2d0345d..d595646a42 100644
--- a/interface/web/tools/lib/lang/de.lng
+++ b/interface/web/tools/lib/lang/de.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Einstellungen';
 $wb['ISPConfig Tools'] = 'Einstellungen';
 $wb['Password and Language'] = 'Passwort und Sprache';
 $wb['ispconfig_tools_note'] = 'Dieses Modul erlaubt Ihnen, das Passwort und die Sprache zu &auml;ndern sowie einen Resync der DNS-Records anzusto&szlig;en.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/de_import_ispconfig.lng b/interface/web/tools/lib/lang/de_import_ispconfig.lng
new file mode 100644
index 0000000000..65ea145980
--- /dev/null
+++ b/interface/web/tools/lib/lang/de_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$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';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/de_resync.lng b/interface/web/tools/lib/lang/de_resync.lng
new file mode 100644
index 0000000000..f4cbf0d7fc
--- /dev/null
+++ b/interface/web/tools/lib/lang/de_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/el.lng b/interface/web/tools/lib/lang/el.lng
index d473a6ee4a..56442c34f1 100644
--- a/interface/web/tools/lib/lang/el.lng
+++ b/interface/web/tools/lib/lang/el.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Ρυθμίσεις';
 $wb['ISPConfig Tools'] = 'Εργαλεία ISPConfig';
 $wb['Password and Language'] = 'Συνθηματικό και Γλώσσα';
 $wb['ispconfig_tools_note'] = 'Το άρθρωμα σας επιτρέπει να αλλάξετε το συνθηματικό και την γλώσσα και να ξεκινήσετε έναν επανασυγχρονισμό των εγγραφών DNS.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/el_import_ispconfig.lng b/interface/web/tools/lib/lang/el_import_ispconfig.lng
new file mode 100644
index 0000000000..65ea145980
--- /dev/null
+++ b/interface/web/tools/lib/lang/el_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$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';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/el_resync.lng b/interface/web/tools/lib/lang/el_resync.lng
new file mode 100644
index 0000000000..f4cbf0d7fc
--- /dev/null
+++ b/interface/web/tools/lib/lang/el_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/en.lng b/interface/web/tools/lib/lang/en.lng
index 1dee19df80..fee9301c06 100644
--- a/interface/web/tools/lib/lang/en.lng
+++ b/interface/web/tools/lib/lang/en.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Settings';
 $wb['ISPConfig Tools'] = 'ISPConfig Tools';
 $wb['Password and Language'] = 'Password and Language';
 $wb['ispconfig_tools_note'] = 'This module allows you to change the password and language and to start a resync of the DNS records.';
-$wb['Dns Tools'] = 'Dns Tools';
+$wb['Sync Tools'] = 'Sync Tools';
 $wb['Resync'] = 'Resync';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/en_import_ispconfig.lng b/interface/web/tools/lib/lang/en_import_ispconfig.lng
new file mode 100644
index 0000000000..65ea145980
--- /dev/null
+++ b/interface/web/tools/lib/lang/en_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$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';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/en_resync.lng b/interface/web/tools/lib/lang/en_resync.lng
new file mode 100644
index 0000000000..f4cbf0d7fc
--- /dev/null
+++ b/interface/web/tools/lib/lang/en_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/es.lng b/interface/web/tools/lib/lang/es.lng
index 41205f0ed5..1d8363ae4b 100644
--- a/interface/web/tools/lib/lang/es.lng
+++ b/interface/web/tools/lib/lang/es.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Configuraciones';
 $wb['ISPConfig Tools'] = 'Herramientas ISPConfig';
 $wb['Password and Language'] = 'Contraseña e Idioma';
 $wb['ispconfig_tools_note'] = 'Este módulo le permite cambiar la contraseña y el idioma y para iniciar una resincronización de los registros de DNS.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/es_import_ispconfig.lng b/interface/web/tools/lib/lang/es_import_ispconfig.lng
new file mode 100644
index 0000000000..65ea145980
--- /dev/null
+++ b/interface/web/tools/lib/lang/es_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$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';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/es_resync.lng b/interface/web/tools/lib/lang/es_resync.lng
new file mode 100644
index 0000000000..f4cbf0d7fc
--- /dev/null
+++ b/interface/web/tools/lib/lang/es_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/fi.lng b/interface/web/tools/lib/lang/fi.lng
index 1e21641171..93b19ea360 100755
--- a/interface/web/tools/lib/lang/fi.lng
+++ b/interface/web/tools/lib/lang/fi.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Asetukset';
 $wb['ISPConfig Tools'] = 'ISPConfig-työkalut';
 $wb['Password and Language'] = 'Salasanat ja kielet';
 $wb['ispconfig_tools_note'] = 'This module allows you to change the password and language and to start a resync of the DNS records.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/fi_import_ispconfig.lng b/interface/web/tools/lib/lang/fi_import_ispconfig.lng
new file mode 100644
index 0000000000..65ea145980
--- /dev/null
+++ b/interface/web/tools/lib/lang/fi_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$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';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/fi_resync.lng b/interface/web/tools/lib/lang/fi_resync.lng
new file mode 100644
index 0000000000..f4cbf0d7fc
--- /dev/null
+++ b/interface/web/tools/lib/lang/fi_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/fr.lng b/interface/web/tools/lib/lang/fr.lng
index 52320c2408..5b8c94282d 100644
--- a/interface/web/tools/lib/lang/fr.lng
+++ b/interface/web/tools/lib/lang/fr.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Paramètres';
 $wb['ISPConfig Tools'] = 'Outils ISPConfig';
 $wb['Password and Language'] = 'Mot de passe et Langue';
 $wb['ispconfig_tools_note'] = 'Ce module vous permet de changer le mot de passe utilisateur et la langue et de démarrer une resynchronisation des enregistrement DNS.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/fr_import_ispconfig.lng b/interface/web/tools/lib/lang/fr_import_ispconfig.lng
new file mode 100644
index 0000000000..65ea145980
--- /dev/null
+++ b/interface/web/tools/lib/lang/fr_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$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';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/fr_resync.lng b/interface/web/tools/lib/lang/fr_resync.lng
new file mode 100644
index 0000000000..f4cbf0d7fc
--- /dev/null
+++ b/interface/web/tools/lib/lang/fr_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/hr.lng b/interface/web/tools/lib/lang/hr.lng
index 817d63e44e..d08322a9fe 100644
--- a/interface/web/tools/lib/lang/hr.lng
+++ b/interface/web/tools/lib/lang/hr.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Postavke';
 $wb['ISPConfig Tools'] = 'Control panel alati';
 $wb['Password and Language'] = 'Å ifra i jezik';
 $wb['ispconfig_tools_note'] = 'Ovaj modul omogućava promjenu šifre i jezika te možete pokrenuti sinkronizaciju DNS zapisa.';
-$wb['Dns Tools'] = 'DNS alati';
 $wb['Resync'] = 'Sinkroniziraj DNS zapise';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/hr_import_ispconfig.lng b/interface/web/tools/lib/lang/hr_import_ispconfig.lng
new file mode 100644
index 0000000000..65ea145980
--- /dev/null
+++ b/interface/web/tools/lib/lang/hr_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$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';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/hr_resync.lng b/interface/web/tools/lib/lang/hr_resync.lng
new file mode 100644
index 0000000000..f4cbf0d7fc
--- /dev/null
+++ b/interface/web/tools/lib/lang/hr_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/hu.lng b/interface/web/tools/lib/lang/hu.lng
index e2c17f0032..7abe1d94d7 100644
--- a/interface/web/tools/lib/lang/hu.lng
+++ b/interface/web/tools/lib/lang/hu.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Beállítások';
 $wb['ISPConfig Tools'] = 'ISPConfig eszközök';
 $wb['Password and Language'] = 'Jelszó és nyelv';
 $wb['ispconfig_tools_note'] = 'This module allows you to change the password and language and to start a resync of the DNS records.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/hu_import_ispconfig.lng b/interface/web/tools/lib/lang/hu_import_ispconfig.lng
new file mode 100644
index 0000000000..65ea145980
--- /dev/null
+++ b/interface/web/tools/lib/lang/hu_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$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';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/hu_resync.lng b/interface/web/tools/lib/lang/hu_resync.lng
new file mode 100644
index 0000000000..f4cbf0d7fc
--- /dev/null
+++ b/interface/web/tools/lib/lang/hu_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/id.lng b/interface/web/tools/lib/lang/id.lng
index 9a2dc8f1e0..d8594f8d22 100644
--- a/interface/web/tools/lib/lang/id.lng
+++ b/interface/web/tools/lib/lang/id.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Pengaturan';
 $wb['ISPConfig Tools'] = 'Perkakas ISPConfig';
 $wb['Password and Language'] = 'Sandi dan Bahasa';
 $wb['ispconfig_tools_note'] = 'This module allows you to change the password and language and to start a resync of the DNS records.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/id_import_ispconfig.lng b/interface/web/tools/lib/lang/id_import_ispconfig.lng
new file mode 100644
index 0000000000..65ea145980
--- /dev/null
+++ b/interface/web/tools/lib/lang/id_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$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';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/id_resync.lng b/interface/web/tools/lib/lang/id_resync.lng
new file mode 100644
index 0000000000..f4cbf0d7fc
--- /dev/null
+++ b/interface/web/tools/lib/lang/id_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/it.lng b/interface/web/tools/lib/lang/it.lng
index 672bf853b2..69210332d9 100644
--- a/interface/web/tools/lib/lang/it.lng
+++ b/interface/web/tools/lib/lang/it.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Impostazioni';
 $wb['ISPConfig Tools'] = 'Strumenti ISPConfig';
 $wb['Password and Language'] = 'Password e Lingua';
 $wb['ispconfig_tools_note'] = 'This module allows you to change the password and language and to start a resync of the DNS records.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/it_import_ispconfig.lng b/interface/web/tools/lib/lang/it_import_ispconfig.lng
new file mode 100644
index 0000000000..65ea145980
--- /dev/null
+++ b/interface/web/tools/lib/lang/it_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$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';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/it_resync.lng b/interface/web/tools/lib/lang/it_resync.lng
new file mode 100644
index 0000000000..f4cbf0d7fc
--- /dev/null
+++ b/interface/web/tools/lib/lang/it_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/ja.lng b/interface/web/tools/lib/lang/ja.lng
index ecb77161b9..25f6acf435 100644
--- a/interface/web/tools/lib/lang/ja.lng
+++ b/interface/web/tools/lib/lang/ja.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = '設定';
 $wb['ISPConfig Tools'] = 'ISPConfig Tools';
 $wb['Password and Language'] = 'パスワードと言語';
 $wb['ispconfig_tools_note'] = 'This module allows you to change the password and language and to start a resync of the DNS records.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/ja_import_ispconfig.lng b/interface/web/tools/lib/lang/ja_import_ispconfig.lng
new file mode 100644
index 0000000000..65ea145980
--- /dev/null
+++ b/interface/web/tools/lib/lang/ja_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$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';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/ja_resync.lng b/interface/web/tools/lib/lang/ja_resync.lng
new file mode 100644
index 0000000000..f4cbf0d7fc
--- /dev/null
+++ b/interface/web/tools/lib/lang/ja_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/nl.lng b/interface/web/tools/lib/lang/nl.lng
index bc0f721b42..3c7eb23136 100644
--- a/interface/web/tools/lib/lang/nl.lng
+++ b/interface/web/tools/lib/lang/nl.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Instellingen';
 $wb['ISPConfig Tools'] = 'ISPConfig Tools';
 $wb['Password and Language'] = 'Wachtwoord en taal';
 $wb['ispconfig_tools_note'] = 'This module allows you to change the password and language and to start a resync of the DNS records.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/nl_import_ispconfig.lng b/interface/web/tools/lib/lang/nl_import_ispconfig.lng
new file mode 100644
index 0000000000..65ea145980
--- /dev/null
+++ b/interface/web/tools/lib/lang/nl_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$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';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/nl_resync.lng b/interface/web/tools/lib/lang/nl_resync.lng
new file mode 100644
index 0000000000..f4cbf0d7fc
--- /dev/null
+++ b/interface/web/tools/lib/lang/nl_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/pl.lng b/interface/web/tools/lib/lang/pl.lng
index 365e81b8f3..2063f3313b 100644
--- a/interface/web/tools/lib/lang/pl.lng
+++ b/interface/web/tools/lib/lang/pl.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Ustawienia';
 $wb['ISPConfig Tools'] = 'Narzędzia ISPConfig';
 $wb['Password and Language'] = 'Hasło i język';
 $wb['ispconfig_tools_note'] = 'Ten moduł pozwala na zmianę hasła i języka oraz na ponowną synchronizację rekordów DNS.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/pl_import_ispconfig.lng b/interface/web/tools/lib/lang/pl_import_ispconfig.lng
new file mode 100644
index 0000000000..65ea145980
--- /dev/null
+++ b/interface/web/tools/lib/lang/pl_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$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';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/pl_resync.lng b/interface/web/tools/lib/lang/pl_resync.lng
new file mode 100644
index 0000000000..f4cbf0d7fc
--- /dev/null
+++ b/interface/web/tools/lib/lang/pl_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/pt.lng b/interface/web/tools/lib/lang/pt.lng
index 637f100553..d17b74567d 100644
--- a/interface/web/tools/lib/lang/pt.lng
+++ b/interface/web/tools/lib/lang/pt.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Configurações';
 $wb['ISPConfig Tools'] = 'Ferramentas';
 $wb['Password and Language'] = 'Senha e Idioma';
 $wb['ispconfig_tools_note'] = 'This module allows you to change the password and language and to start a resync of the DNS records.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/pt_import_ispconfig.lng b/interface/web/tools/lib/lang/pt_import_ispconfig.lng
new file mode 100644
index 0000000000..65ea145980
--- /dev/null
+++ b/interface/web/tools/lib/lang/pt_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$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';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/pt_resync.lng b/interface/web/tools/lib/lang/pt_resync.lng
new file mode 100644
index 0000000000..f4cbf0d7fc
--- /dev/null
+++ b/interface/web/tools/lib/lang/pt_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/ro.lng b/interface/web/tools/lib/lang/ro.lng
index a120b37b1d..b4c1eec0ad 100644
--- a/interface/web/tools/lib/lang/ro.lng
+++ b/interface/web/tools/lib/lang/ro.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Setari';
 $wb['ISPConfig Tools'] = 'ISPConfig Utilitare';
 $wb['Password and Language'] = 'Parola si Limba';
 $wb['ispconfig_tools_note'] = 'This module allows you to change the password and language and to start a resync of the DNS records.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/ro_import_ispconfig.lng b/interface/web/tools/lib/lang/ro_import_ispconfig.lng
new file mode 100644
index 0000000000..65ea145980
--- /dev/null
+++ b/interface/web/tools/lib/lang/ro_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$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';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/ro_resync.lng b/interface/web/tools/lib/lang/ro_resync.lng
new file mode 100644
index 0000000000..f4cbf0d7fc
--- /dev/null
+++ b/interface/web/tools/lib/lang/ro_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/ru.lng b/interface/web/tools/lib/lang/ru.lng
index 5e7cf8d43f..6b6f5841c0 100644
--- a/interface/web/tools/lib/lang/ru.lng
+++ b/interface/web/tools/lib/lang/ru.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Установки';
 $wb['ISPConfig Tools'] = 'ISPConfig утилиты';
 $wb['Password and Language'] = 'Пароли и языки';
 $wb['ispconfig_tools_note'] = 'This module allows you to change the password and language and to start a resync of the DNS records.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/ru_import_ispconfig.lng b/interface/web/tools/lib/lang/ru_import_ispconfig.lng
new file mode 100644
index 0000000000..65ea145980
--- /dev/null
+++ b/interface/web/tools/lib/lang/ru_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$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';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/ru_resync.lng b/interface/web/tools/lib/lang/ru_resync.lng
new file mode 100644
index 0000000000..f4cbf0d7fc
--- /dev/null
+++ b/interface/web/tools/lib/lang/ru_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/se.lng b/interface/web/tools/lib/lang/se.lng
index f33fe1a64f..eb2f76d18a 100644
--- a/interface/web/tools/lib/lang/se.lng
+++ b/interface/web/tools/lib/lang/se.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Settings';
 $wb['ISPConfig Tools'] = 'ISPConfig Tools';
 $wb['Password and Language'] = 'Password and Language';
 $wb['ispconfig_tools_note'] = 'This module allows you to change the password and language and to start a resync of the DNS records.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/se_import_ispconfig.lng b/interface/web/tools/lib/lang/se_import_ispconfig.lng
new file mode 100644
index 0000000000..65ea145980
--- /dev/null
+++ b/interface/web/tools/lib/lang/se_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$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';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/se_resync.lng b/interface/web/tools/lib/lang/se_resync.lng
new file mode 100644
index 0000000000..f4cbf0d7fc
--- /dev/null
+++ b/interface/web/tools/lib/lang/se_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/sk.lng b/interface/web/tools/lib/lang/sk.lng
index 22b11ad1ef..98924486c7 100644
--- a/interface/web/tools/lib/lang/sk.lng
+++ b/interface/web/tools/lib/lang/sk.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Nastavenia';
 $wb['ISPConfig Tools'] = 'Nástroje';
 $wb['Password and Language'] = 'Heslo a jazyk';
 $wb['ispconfig_tools_note'] = 'This module allows you to change the password and language and to start a resync of the DNS records.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/sk_import_ispconfig.lng b/interface/web/tools/lib/lang/sk_import_ispconfig.lng
new file mode 100644
index 0000000000..65ea145980
--- /dev/null
+++ b/interface/web/tools/lib/lang/sk_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$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';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/sk_resync.lng b/interface/web/tools/lib/lang/sk_resync.lng
new file mode 100644
index 0000000000..f4cbf0d7fc
--- /dev/null
+++ b/interface/web/tools/lib/lang/sk_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/tr.lng b/interface/web/tools/lib/lang/tr.lng
index 4bcc975f15..6513fcef9c 100644
--- a/interface/web/tools/lib/lang/tr.lng
+++ b/interface/web/tools/lib/lang/tr.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Ayarlar';
 $wb['ISPConfig Tools'] = 'ISPConfig Araçları';
 $wb['Password and Language'] = 'Åžifre ve Dil';
 $wb['ispconfig_tools_note'] = 'This module allows you to change the password and language and to start a resync of the DNS records.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/tr_import_ispconfig.lng b/interface/web/tools/lib/lang/tr_import_ispconfig.lng
new file mode 100644
index 0000000000..65ea145980
--- /dev/null
+++ b/interface/web/tools/lib/lang/tr_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$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';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/tr_resync.lng b/interface/web/tools/lib/lang/tr_resync.lng
new file mode 100644
index 0000000000..f4cbf0d7fc
--- /dev/null
+++ b/interface/web/tools/lib/lang/tr_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/menu.d/import.menu.php b/interface/web/tools/lib/menu.d/import.menu.php
new file mode 100644
index 0000000000..cf5f9ebe3c
--- /dev/null
+++ b/interface/web/tools/lib/menu.d/import.menu.php
@@ -0,0 +1,26 @@
+<?php
+
+
+// Menu
+
+if($app->auth->is_admin()) {
+
+$items = array();
+
+$items[] = array( 'title' 	=> 'ISPConfig 3 mail',
+				  'target' 	=> 'content',
+				  'link'	=> 'tools/import_ispconfig.php');
+
+$items[] = array( 'title' 	=> 'PDNS Tupa',
+				  'target' 	=> 'content',
+				  'link'	=> 'tools/dns_import_tupa.php');
+
+				  
+$module['nav'][] = array(	'title'	=> 'Import',
+							'open' 	=> 1,
+							'items'	=> $items);
+
+unset($items);
+}
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/menu.d/dns_resync.menu.php b/interface/web/tools/lib/menu.d/resync.menu.php
similarity index 69%
rename from interface/web/tools/lib/menu.d/dns_resync.menu.php
rename to interface/web/tools/lib/menu.d/resync.menu.php
index f6b6ae00a6..3ef45fb0e7 100644
--- a/interface/web/tools/lib/menu.d/dns_resync.menu.php
+++ b/interface/web/tools/lib/menu.d/resync.menu.php
@@ -9,10 +9,10 @@ $items = array();
 
 $items[] = array( 'title' 	=> 'Resync',
 				  'target' 	=> 'content',
-				  'link'	=> 'tools/dns_resync.php');
+				  'link'	=> 'tools/resync.php');
 
 
-$module['nav'][] = array(	'title'	=> 'DNS Tools',
+$module['nav'][] = array(	'title'	=> 'Sync Tools',
 							'open' 	=> 1,
 							'items'	=> $items);
 
diff --git a/interface/web/tools/lib/module.conf.php b/interface/web/tools/lib/module.conf.php
index a88aab0b5e..3190d70557 100644
--- a/interface/web/tools/lib/module.conf.php
+++ b/interface/web/tools/lib/module.conf.php
@@ -29,7 +29,7 @@ if (is_dir($menu_dir)) {
 	if ($dh = opendir($menu_dir)) {
 		//** Go through all files in the menu dir
 		while (($file = readdir($dh)) !== false) {
-			if($file != '.' && $file != '..' && substr($file,-9,9) == '.menu.php') {
+			if($file != '.' && $file != '..' && substr($file,-9,9) == '.menu.php' && $file != 'dns_resync.menu.php') {
 				include_once($menu_dir.'/'.$file);
 			}
 		}
diff --git a/interface/web/tools/resync.php b/interface/web/tools/resync.php
new file mode 100644
index 0000000000..86ba27dfa9
--- /dev/null
+++ b/interface/web/tools/resync.php
@@ -0,0 +1,166 @@
+<?php
+/*
+Copyright (c) 2012, Till Brehm, projektfarm Gmbh, 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('../../lib/config.inc.php');
+require_once('../../lib/app.inc.php');
+
+//* Check permissions for module
+$app->auth->check_module_permissions('admin');
+
+//* This is only allowed for administrators
+if(!$app->auth->is_admin()) die('only allowed for administrators.');
+
+$app->uses('tpl,validate_dns');
+
+$app->tpl->newTemplate('form.tpl.htm');
+$app->tpl->setInclude('content_tpl', 'templates/resync.htm');
+$msg = '';
+$error = '';
+
+//* load language file
+$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_resync.lng';
+include($lng_file);
+$app->tpl->setVar($wb);
+
+//* Resyncing websites
+if(isset($_POST['resync_sites']) && $_POST['resync_sites'] == 1) {
+	$db_table = 'web_domain';
+	$index_field = 'domain_id';
+	$sql = "SELECT * FROM ".$db_table." WHERE active = 'y'";
+	$records = $app->db->queryAllRecords($sql);
+	if(is_array($records)) {
+		foreach($records as $rec) {
+			$app->db->datalogUpdate($db_table, $rec, $index_field, $rec[$index_field], true);
+			$msg .= "Resynced Website: ".$rec['domain'].'<br />';
+		}
+	}
+}
+
+//* Resyncing ftp
+if(isset($_POST['resync_ftp']) && $_POST['resync_ftp'] == 1) {
+	$db_table = 'ftp_user';
+	$index_field = 'ftp_user_id';
+	$sql = "SELECT * FROM ".$db_table." WHERE active = 'y'";
+	$records = $app->db->queryAllRecords($sql);
+	if(is_array($records)) {
+		foreach($records as $rec) {
+			$app->db->datalogUpdate($db_table, $rec, $index_field, $rec[$index_field], true);
+			$msg .= "Resynced FTP user: ".$rec['username'].'<br />';
+		}
+	}
+}
+
+//* Resyncing shell
+if(isset($_POST['resync_shell']) && $_POST['resync_shell'] == 1) {
+	$db_table = 'shell_user';
+	$index_field = 'shell_user_id';
+	$sql = "SELECT * FROM ".$db_table." WHERE active = 'y'";
+	$records = $app->db->queryAllRecords($sql);
+	if(is_array($records)) {
+		foreach($records as $rec) {
+			$app->db->datalogUpdate($db_table, $rec, $index_field, $rec[$index_field], true);
+			$msg .= "Resynced Shell user: ".$rec['username'].'<br />';
+		}
+	}
+}
+
+//* Resyncing Cronjobs
+if(isset($_POST['resync_cron']) && $_POST['resync_cron'] == 1) {
+	$db_table = 'cron';
+	$index_field = 'id';
+	$sql = "SELECT * FROM ".$db_table." WHERE active = 'y'";
+	$records = $app->db->queryAllRecords($sql);
+	if(is_array($records)) {
+		foreach($records as $rec) {
+			$app->db->datalogUpdate($db_table, $rec, $index_field, $rec[$index_field], true);
+			$msg .= "Resynced Cron: ".$rec['id'].'<br />';
+		}
+	}
+}
+
+//* Resyncing Databases
+if(isset($_POST['resync_db']) && $_POST['resync_db'] == 1) {
+	$db_table = 'web_database';
+	$index_field = 'database_id';
+	$sql = "SELECT * FROM ".$db_table." WHERE active = 'y'";
+	$records = $app->db->queryAllRecords($sql);
+	if(is_array($records)) {
+		foreach($records as $rec) {
+			$app->db->datalogUpdate($db_table, $rec, $index_field, $rec[$index_field], true);
+			$msg .= "Resynced Database: ".$rec['database_name'].'<br />';
+		}
+	}
+}
+
+//* Resyncing Mailboxes
+if(isset($_POST['resync_mailbox']) && $_POST['resync_mailbox'] == 1) {
+	$db_table = 'mail_user';
+	$index_field = 'mailuser_id';
+	$sql = "SELECT * FROM ".$db_table." WHERE active = 'y'";
+	$records = $app->db->queryAllRecords($sql);
+	if(is_array($records)) {
+		foreach($records as $rec) {
+			$app->db->datalogUpdate($db_table, $rec, $index_field, $rec[$index_field], true);
+			$msg .= "Resynced Mailbox: ".$rec['email'].'<br />';
+		}
+	}
+}
+
+
+//* Resyncing dns zones
+if(isset($_POST['resync_dns']) && $_POST['resync_dns'] == 1) {
+	$zones = $app->db->queryAllRecords("SELECT id,origin,serial FROM dns_soa WHERE active = 'Y'");
+	if(is_array($zones) && !empty($zones)) {
+		foreach($zones as $zone) {
+			$records = $app->db->queryAllRecords("SELECT id,serial FROM dns_rr WHERE zone = ".$zone['id']." AND active = 'Y'");
+			if(is_array($records)) {
+				foreach($records as $rec) {
+					$new_serial = $app->validate_dns->increase_serial($rec["serial"]);
+					$app->db->datalogUpdate('dns_rr', "serial = '".$new_serial."'", 'id', $rec['id']);
+					
+				}
+			}
+			$new_serial = $app->validate_dns->increase_serial($zone["serial"]);
+			$app->db->datalogUpdate('dns_soa', "serial = '".$new_serial."'", 'id', $zone['id']);
+			$msg .= "Resynced DNS zone: ".$zone['origin'].'<br />';
+		}
+	} else {
+		$error .= "No zones found to sync.<br />";
+	}
+	
+}
+
+$app->tpl->setVar('msg',$msg);
+$app->tpl->setVar('error',$error);
+
+$app->tpl_defaults();
+$app->tpl->pparse();
+
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/templates/dns_import_tupa.htm b/interface/web/tools/templates/dns_import_tupa.htm
new file mode 100644
index 0000000000..d616eba4d5
--- /dev/null
+++ b/interface/web/tools/templates/dns_import_tupa.htm
@@ -0,0 +1,56 @@
+<h2>Import DNS recods from Tupa PowerDNS controlpanel</h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_language_import">
+  
+  <div class="pnl_formsarea">
+    <fieldset class="inlineLabels"><legend>PowerDNS Tupa import</legend>
+	  <div class="ctrlHolder">
+		<p class="label">Tupa database hostname</p>
+		<div class="multiField">
+			<input id="dbhost" type="text" value="{tmpl_var name='dbhost'}" name="dbhost" />
+		</div>
+	  </div>
+	  <div class="ctrlHolder">
+		<p class="label">Tupa database name</p>
+		<div class="multiField">
+			<input id="dbname" type="text" value="{tmpl_var name='dbname'}" name="dbname" />
+		</div>
+	  </div>
+	  <div class="ctrlHolder">
+		<p class="label">Tupa database user</p>
+		<div class="multiField">
+			<input id="dbuser" type="text" value="{tmpl_var name='dbuser'}" name="dbuser" />
+		</div>
+	  </div>
+	  <div class="ctrlHolder">
+		<p class="label">Tupa database password</p>
+		<div class="multiField">
+			<input id="dbpassword" type="text" value="{tmpl_var name='dbpassword'}" name="dbpassword" />
+		</div>
+	  </div>
+	  
+	  <div class="ctrlHolder">
+				<p class="label">Import DNS Records</p>
+					<div class="multiField">
+						<input id="start" type="checkbox" value="1" name="start" checked/>
+					</div>
+	  </div>
+    </fieldset>
+	
+	<tmpl_if name="msg">
+	<div id="OKMsg"><p><tmpl_var name="msg"></p></div>
+  </tmpl_if>
+  <tmpl_if name="error">
+	<div id="errorMsg"><h3>ERROR</h3><ol><tmpl_var name="error"></ol></div>
+  </tmpl_if>
+	
+    <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+    <div class="buttonHolder buttons">
+      <button class="positive iconstxt icoPositive" type="button" value="Import" onClick="submitForm('pageForm','tools/dns_import_tupa.php');"><span>Start</span></button>
+      <button class="negative iconstxt icoNegative" type="button" value="Cancel" onClick="loadContent('tools/index.php');"><span>Cancel</span></button>
+    </div>
+  </div>
+  
+</div>
diff --git a/interface/web/tools/templates/dns_resync.htm b/interface/web/tools/templates/dns_resync.htm
deleted file mode 100644
index 372206af97..0000000000
--- a/interface/web/tools/templates/dns_resync.htm
+++ /dev/null
@@ -1,31 +0,0 @@
-<h2>DNS Resync</h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_language_import">
-  
-  <div class="pnl_formsarea">
-    <fieldset class="inlineLabels"><legend>DNS Resync</legend>
-	  <div class="ctrlHolder">
-				<p class="label">Resync DNS Records</p>
-					<div class="multiField">
-						<input id="resync" type="checkbox" value="1" name="resync" checked/>
-					</div>
-	  </div>
-    </fieldset>
-	
-	<tmpl_if name="msg">
-	<div id="OKMsg"><p><tmpl_var name="msg"></p></div>
-  </tmpl_if>
-  <tmpl_if name="error">
-	<div id="errorMsg"><h3>ERROR</h3><ol><tmpl_var name="error"></ol></div>
-  </tmpl_if>
-	
-    <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
-    <div class="buttonHolder buttons">
-      <button class="positive iconstxt icoPositive" type="button" value="Import" onClick="submitForm('pageForm','tools/dns_resync.php');"><span>Start</span></button>
-      <button class="negative iconstxt icoNegative" type="button" value="Cancel" onClick="loadContent('tools/index.php');"><span>Cancel</span></button>
-    </div>
-  </div>
-  
-</div>
diff --git a/interface/web/tools/templates/import_ispconfig.htm b/interface/web/tools/templates/import_ispconfig.htm
new file mode 100644
index 0000000000..4980dc42af
--- /dev/null
+++ b/interface/web/tools/templates/import_ispconfig.htm
@@ -0,0 +1,105 @@
+<h2>{tmpl_var name="head_txt"}</h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_language_import">
+  
+  <div class="pnl_formsarea">
+    <fieldset class="inlineLabels"><legend>{tmpl_var name="legend_txt"}</legend>
+	  <div class="ctrlHolder">
+		<p class="label">Remote API URL</p>
+		<div class="multiField">
+			<input id="remote_server" type="text" value="{tmpl_var name='remote_server'}" name="remote_server" /> (e.g. https://www.example.com:8080/remote/ )
+		</div>
+	  </div>
+	  <div class="ctrlHolder">
+		<p class="label">Remote User</p>
+		<div class="multiField">
+			<input id="remote_user" type="text" value="{tmpl_var name='remote_user'}" name="remote_user" />
+		</div>
+	  </div>
+	  <div class="ctrlHolder">
+		<p class="label">Remote password</p>
+		<div class="multiField">
+			<input id="remote_password" type="text" value="{tmpl_var name='remote_password'}" name="remote_password" />
+		</div>
+	  </div>
+	</fieldset>
+	  <tmpl_if name="connected">
+<div class="pnl_formsarea">
+    <fieldset class="inlineLabels"><legend>{tmpl_var name="legend2_txt"}</legend>
+	  <div class="ctrlHolder">
+      	<label for="mail_domain">{tmpl_var name='mail_domain_txt'}</label>
+        <select name="mail_domain" id="mail_domain" class="selectInput">
+					{tmpl_var name='mail_domain'}
+		</select>
+      </div>
+	  <div class="ctrlHolder">
+      	<label for="client_group_id">{tmpl_var name='client_group_id_txt'}</label>
+        <select name="client_group_id" id="client_group_id" class="selectInput">
+					{tmpl_var name='client_group_id'}
+		</select>
+      </div>
+	  <div class="ctrlHolder">
+		<p class="label">{tmpl_var name="import_mailbox_txt"}</p>
+		<div class="multiField">
+			<input id="import_mailbox" type="checkbox" value="1" name="import_mailbox" checked="checked" />
+		</div>
+	  </div>
+	  <div class="ctrlHolder">
+		<p class="label">{tmpl_var name="import_user_filter_txt"}</p>
+		<div class="multiField">
+			<input id="import_user_filter" type="checkbox" value="1" name="import_user_filter" checked="checked" />
+		</div>
+	  </div>
+	  <div class="ctrlHolder">
+		<p class="label">{tmpl_var name="import_spamfilter_txt"}</p>
+		<div class="multiField">
+			<input id="import_spamfilter" type="checkbox" value="1" name="import_spamfilter" checked="checked" />
+		</div>
+	  </div>
+	  <div class="ctrlHolder">
+		<p class="label">{tmpl_var name="import_alias_txt"}</p>
+		<div class="multiField">
+			<input id="import_alias" type="checkbox" value="1" name="import_alias" checked="checked" />
+		</div>
+	  </div>
+	  <div class="ctrlHolder">
+		<p class="label">{tmpl_var name="import_forward_txt"}</p>
+		<div class="multiField">
+			<input id="import_forward" type="checkbox" value="1" name="import_forward" checked="checked" />
+		</div>
+	  </div>
+	  <div class="ctrlHolder">
+		<p class="label">{tmpl_var name="import_aliasdomain_txt"}</p>
+		<div class="multiField">
+			<input id="import_aliasdomain" type="checkbox" value="1" name="import_aliasdomain" checked="checked" />
+		</div>
+	  </div>
+	</fieldset>
+	  </tmpl_if>
+	  
+
+	
+	<tmpl_if name="msg">
+	<div id="OKMsg"><p><tmpl_var name="msg"></p></div>
+  </tmpl_if>
+  <tmpl_if name="error">
+	<div id="errorMsg"><h3>ERROR</h3><ol><tmpl_var name="error"></ol></div>
+  </tmpl_if>
+	
+    <input type="hidden" name="remote_session_id" value="{tmpl_var name='remote_session_id'}">
+	<input type="hidden" name="connected" value="{tmpl_var name='connected'}">
+<tmpl_if name="connected">
+    <div class="buttonHolder buttons">
+      <button class="positive iconstxt icoPositive" type="button" value="Import" onClick="submitForm('pageForm','tools/import_ispconfig.php');"><span>{tmpl_var name="btn_start_txt"}</span></button>
+      <button class="negative iconstxt icoNegative" type="button" value="Cancel" onClick="loadContent('tools/index.php');"><span>{tmpl_var name="btn_cancel_txt"}</span></button>
+    </div>
+<tmpl_else>
+	<div class="buttonHolder buttons">
+      <button class="positive iconstxt icoPositive" type="button" value="Import" onClick="submitForm('pageForm','tools/import_ispconfig.php');"><span>{tmpl_var name="btn_connect_txt"}</span></button>
+      <button class="negative iconstxt icoNegative" type="button" value="Cancel" onClick="loadContent('tools/index.php');"><span>{tmpl_var name="btn_cancel_txt"}</span></button>
+    </div>
+</tmpl_if>
+  </div>
+  
+</div>
diff --git a/interface/web/tools/templates/resync.htm b/interface/web/tools/templates/resync.htm
new file mode 100644
index 0000000000..196fb7e0de
--- /dev/null
+++ b/interface/web/tools/templates/resync.htm
@@ -0,0 +1,67 @@
+<h2>{tmpl_var name="head_txt"}</h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_language_import">
+  
+  <div class="pnl_formsarea">
+    <fieldset class="inlineLabels"><legend>{tmpl_var name="legend_txt"}</legend>
+	  <div class="ctrlHolder">
+		<p class="label">{tmpl_var name="resync_sites_txt"}</p>
+		<div class="multiField">
+			<input id="resync_sites" type="checkbox" value="1" name="resync_sites" />
+		</div>
+	  </div>
+	  <div class="ctrlHolder">
+		<p class="label">{tmpl_var name="resync_ftp_txt"}</p>
+		<div class="multiField">
+			<input id="resync_ftp" type="checkbox" value="1" name="resync_ftp" />
+		</div>
+	  </div>
+	  <div class="ctrlHolder">
+		<p class="label">{tmpl_var name="resync_shell_txt"}</p>
+		<div class="multiField">
+			<input id="resync_shell" type="checkbox" value="1" name="resync_shell" />
+		</div>
+	  </div>
+	  <div class="ctrlHolder">
+		<p class="label">{tmpl_var name="resync_cron_txt"}</p>
+		<div class="multiField">
+			<input id="resync_cron" type="checkbox" value="1" name="resync_cron" />
+		</div>
+	  </div>
+	  <div class="ctrlHolder">
+		<p class="label">{tmpl_var name="resync_db_txt"}</p>
+		<div class="multiField">
+			<input id="resync_db" type="checkbox" value="1" name="resync_db" />
+		</div>
+	  </div>
+	  <div class="ctrlHolder">
+		<p class="label">{tmpl_var name="resync_mailbox_txt"}</p>
+		<div class="multiField">
+			<input id="resync_mailbox" type="checkbox" value="1" name="resync_mailbox" />
+		</div>
+	  </div>
+	  <div class="ctrlHolder">
+		<p class="label">{tmpl_var name="resync_dns_txt"}</p>
+		<div class="multiField">
+			<input id="resync_dns" type="checkbox" value="1" name="resync_dns" />
+		</div>
+	  </div>
+    </fieldset>
+	
+	<tmpl_if name="msg">
+	<div id="OKMsg"><p><tmpl_var name="msg"></p></div>
+  </tmpl_if>
+  <tmpl_if name="error">
+	<div id="errorMsg"><h3>ERROR</h3><ol><tmpl_var name="error"></ol></div>
+  </tmpl_if>
+	
+    <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+    <div class="buttonHolder buttons">
+      <button class="positive iconstxt icoPositive" type="button" value="Import" onClick="submitForm('pageForm','tools/resync.php');"><span>{tmpl_var name="btn_start_txt"}</span></button>
+      <button class="negative iconstxt icoNegative" type="button" value="Cancel" onClick="loadContent('tools/index.php');"><span>{tmpl_var name="btn_cancel_txt"}</span></button>
+    </div>
+  </div>
+  
+</div>
diff --git a/interface/web/vm/templates/openvz.conf.tpl b/interface/web/vm/templates/openvz.conf.tpl
index 06e6ac515d..5bdd385a46 100644
--- a/interface/web/vm/templates/openvz.conf.tpl
+++ b/interface/web/vm/templates/openvz.conf.tpl
@@ -45,5 +45,6 @@ IP_ADDRESS="{tmpl_var name='ip_address'}"
 NAMESERVER="{tmpl_var name='nameserver'}"
 # alternative meminfo: "pages:256000"
 MEMINFO="privvmpages:1"
+# SWAPPAGES="{tmpl_var name='swappages'}"
 
 CAPABILITY="{tmpl_var name='capability'}"
diff --git a/remoting_client/examples/mail_catchall_add.php b/remoting_client/examples/mail_catchall_add.php
index 8bf320675d..8b5d6f3254 100644
--- a/remoting_client/examples/mail_catchall_add.php
+++ b/remoting_client/examples/mail_catchall_add.php
@@ -18,7 +18,7 @@ try {
 	$client_id = 1;
 	$params = array(
 			'server_id' => 1,
-			'source' => 'hallo@test.int',
+			'source' => '@test.int',
 			'destination' => 'ciao@test.int',
 			'type' => 'catchall',
 			'active' => 'y'
diff --git a/server/conf/sieve_filter.master b/server/conf/sieve_filter.master
index acc62e5f79..33ddc37c40 100644
--- a/server/conf/sieve_filter.master
+++ b/server/conf/sieve_filter.master
@@ -3,7 +3,6 @@ require ["fileinto", "regex", "vacation"];
 <tmpl_if name="cc">
 # Send a copy of email to
 redirect "<tmpl_var name='cc'>";
-keep;
 </tmpl_if>
 
 <tmpl_if name="move_junk" op="==" value="y">
@@ -17,6 +16,8 @@ if header :contains "X-Spam-Flag" "YES" {
 
 <tmpl_var name='custom_mailfilter'>
 
+keep;
+
 <tmpl_if name="autoresponder" op="==" value="y">
 #################################################################
 # Autoreply
diff --git a/server/conf/sieve_filter_1.2.master b/server/conf/sieve_filter_1.2.master
index 78a9355166..1c63ddf394 100644
--- a/server/conf/sieve_filter_1.2.master
+++ b/server/conf/sieve_filter_1.2.master
@@ -3,7 +3,6 @@ require ["fileinto", "regex", "date", "relational", "vacation"];
 <tmpl_if name="cc">
 # Send a copy of email to
 redirect "<tmpl_var name='cc'>";
-keep;
 </tmpl_if>
 
 <tmpl_if name="move_junk" op="==" value="y">
@@ -17,6 +16,8 @@ if header :contains "X-Spam-Flag" "YES" {
 
 <tmpl_var name='custom_mailfilter'>
 
+keep;
+
 <tmpl_if name="autoresponder" op="==" value="y">
 #################################################################
 # Autoreply
diff --git a/server/conf/vhost.conf.master b/server/conf/vhost.conf.master
index b3d5ca74ae..d65ea85214 100644
--- a/server/conf/vhost.conf.master
+++ b/server/conf/vhost.conf.master
@@ -256,6 +256,7 @@
           SetHandler None
         </FilesMatch>
       </Directory>
+      DavLockDB {tmpl_var name='document_root'}/tmp/DavLock
       # DO NOT REMOVE THE COMMENTS!
       # IF YOU REMOVE THEM, WEBDAV WILL NOT WORK ANYMORE!
       # WEBDAV BEGIN
diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php
index 55d65432f9..30eecfea39 100644
--- a/server/plugins-available/apache2_plugin.inc.php
+++ b/server/plugins-available/apache2_plugin.inc.php
@@ -110,6 +110,13 @@ class apache2_plugin {
 
 		//* Create a SSL Certificate
 		if($data['new']['ssl_action'] == 'create') {
+			
+			//* Rename files if they exist
+			if(file_exists($key_file)) rename($key_file,$key_file.'.bak');
+			if(file_exists($key_file2)) rename($key_file2,$key_file2.'.bak');
+			if(file_exists($csr_file)) rename($csr_file,$csr_file.'.bak');
+			if(file_exists($crt_file)) rename($crt_file,$crt_file.'.bak');
+			
 			$rand_file = $ssl_dir.'/random_file';
 			$rand_data = md5(uniqid(microtime(),1));
 			for($i=0; $i<1000; $i++) {
@@ -133,11 +140,11 @@ class apache2_plugin {
         output_password        = $ssl_password
 
         [ req_distinguished_name ]
-        C                      = ".$data['new']['ssl_country']."
-        ST                     = ".$data['new']['ssl_state']."
-        L                      = ".$data['new']['ssl_locality']."
-        O                      = ".$data['new']['ssl_organisation']."
-        OU                     = ".$data['new']['ssl_organisation_unit']."
+        C                      = ".trim($data['new']['ssl_country'])."
+        ST                     = ".trim($data['new']['ssl_state'])."
+        L                      = ".trim($data['new']['ssl_locality'])."
+        O                      = ".trim($data['new']['ssl_organisation'])."
+        OU                     = ".trim($data['new']['ssl_organisation_unit'])."
         CN                     = $domain
         emailAddress           = webmaster@".$data['new']['domain']."
 
@@ -288,6 +295,10 @@ class apache2_plugin {
 			$app->log('Websites cannot be owned by the root user or group.',LOGLEVEL_WARN);
 			return 0;
 		}
+		if(trim($data['new']['domain']) == '') {
+			$app->log('domain is empty',LOGLEVEL_WARN);
+			return 0;
+		}
 		
 		// Create group and user, if not exist
 		$app->uses('system');
-- 
GitLab