diff --git a/install/autoupdate.php b/install/autoupdate.php
index de53b241f69be9036df03cfdffd07a84d6970d67..52cab345d579b8dbf0c1c0b44b8fcb0111cda2f3 100644
--- a/install/autoupdate.php
+++ b/install/autoupdate.php
@@ -303,30 +303,32 @@ $inst->install_crontab();
 
 //** Restart services:
 swriteln('Restarting services ...');
-if($conf['mysql']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['mysql']['init_script']))					system($conf['init_scripts'].'/'.$conf['mysql']['init_script'].' reload');
+if($conf['mysql']['installed'] == true && $conf['mysql']['init_script'] != '') system($inst->getinitcommand($conf['mysql']['init_script'], 'reload'));
 if($conf['services']['mail']) {
-	if($conf['postfix']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['postfix']['init_script']))				system($conf['init_scripts'].'/'.$conf['postfix']['init_script'].' restart');
-	if($conf['saslauthd']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['saslauthd']['init_script']))			system($conf['init_scripts'].'/'.$conf['saslauthd']['init_script'].' restart');
-	if($conf['amavis']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['amavis']['init_script']))					system($conf['init_scripts'].'/'.$conf['amavis']['init_script'].' restart');
-	if($conf['clamav']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['clamav']['init_script']))					system($conf['init_scripts'].'/'.$conf['clamav']['init_script'].' restart');
-	if($conf['courier']['courier-authdaemon'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-authdaemon'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-authdaemon'].' restart');
-	if($conf['courier']['courier-imap'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-imap'])) 			system($conf['init_scripts'].'/'.$conf['courier']['courier-imap'].' restart');
-	if($conf['courier']['courier-imap-ssl'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-imap-ssl'])) 	system($conf['init_scripts'].'/'.$conf['courier']['courier-imap-ssl'].' restart');
-	if($conf['courier']['courier-pop'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-pop'])) 				system($conf['init_scripts'].'/'.$conf['courier']['courier-pop'].' restart');
-	if($conf['courier']['courier-pop-ssl'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-pop-ssl'])) 		system($conf['init_scripts'].'/'.$conf['courier']['courier-pop-ssl'].' restart');
-	if($conf['dovecot']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['dovecot']['init_script'])) 		system($conf['init_scripts'].'/'.$conf['dovecot']['init_script'].' restart');
-	if($conf['mailman']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['mailman']['init_script'])) 		system($conf['init_scripts'].'/'.$conf['mailman']['init_script'].' restart');
+	if($conf['postfix']['installed'] == true && $conf['postfix']['init_script'] != '') system($inst->getinitcommand($conf['postfix']['init_script'], 'restart'));
+	if($conf['saslauthd']['installed'] == true && $conf['saslauthd']['init_script'] != '') system($inst->getinitcommand($conf['saslauthd']['init_script'], 'restart'));
+	if($conf['amavis']['installed'] == true && $conf['amavis']['init_script'] != '') system($inst->getinitcommand($conf['amavis']['init_script'], 'restart'));
+	if($conf['clamav']['installed'] == true && $conf['clamav']['init_script'] != '') system($inst->getinitcommand($conf['clamav']['init_script'], 'restart'));
+	if($conf['courier']['installed'] == true){
+		if($conf['courier']['courier-authdaemon'] != '') system($inst->getinitcommand($conf['courier']['courier-authdaemon'], 'restart'));
+		if($conf['courier']['courier-imap'] != '') system($inst->getinitcommand($conf['courier']['courier-imap'], 'restart'));
+		if($conf['courier']['courier-imap-ssl'] != '') system($inst->getinitcommand($conf['courier']['courier-imap-ssl'], 'restart'));
+		if($conf['courier']['courier-pop'] != '') system($inst->getinitcommand($conf['courier']['courier-pop'], 'restart'));
+		if($conf['courier']['courier-pop-ssl'] != '') system($inst->getinitcommand($conf['courier']['courier-pop-ssl'], 'restart'));
+	}
+	if($conf['dovecot']['installed'] == true && $conf['dovecot']['init_script'] != '') system($inst->getinitcommand($conf['dovecot']['init_script'], 'restart'));
+	if($conf['mailman']['installed'] == true && $conf['mailman']['init_script'] != '') system($inst->getinitcommand($conf['mailman']['init_script'], 'restart'));
 }
 if($conf['services']['web']) {
-	if($conf['webserver']['server_type'] == 'apache' && $conf['apache']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['apache']['init_script'])) 				system($conf['init_scripts'].'/'.$conf['apache']['init_script'].' restart');
+	if($conf['webserver']['server_type'] == 'apache' && $conf['apache']['init_script'] != '') system($inst->getinitcommand($conf['apache']['init_script'], 'restart'));
 	//* Reload is enough for nginx
-	if($conf['webserver']['server_type'] == 'nginx' && $conf['nginx']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['nginx']['init_script'])) 				system($conf['init_scripts'].'/'.$conf['nginx']['init_script'].' reload');
-	if($conf['pureftpd']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['pureftpd']['init_script']))				system($conf['init_scripts'].'/'.$conf['pureftpd']['init_script'].' restart');
+	if($conf['webserver']['server_type'] == 'nginx' && $conf['nginx']['init_script'] != '') system($inst->getinitcommand($conf['nginx']['init_script'], 'reload'));
+	if($conf['pureftpd']['installed'] == true && $conf['pureftpd']['init_script'] != '') system($inst->getinitcommand($conf['pureftpd']['init_script'], 'restart'));
 }
 if($conf['services']['dns']) {
-	if($conf['mydns']['installed'] == true && $conf['mydns']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['mydns']['init_script']))					system($conf['init_scripts'].'/'.$conf['mydns']['init_script'].' restart &> /dev/null');
-	if($conf['powerdns']['installed'] == true && $conf['powerdns']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['powerdns']['init_script']))					system($conf['init_scripts'].'/'.$conf['powerdns']['init_script'].' restart &> /dev/null');
-	if($conf['bind']['installed'] == true && $conf['bind']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['bind']['init_script']))					system($conf['init_scripts'].'/'.$conf['bind']['init_script'].' restart &> /dev/null');
+	if($conf['mydns']['installed'] == true && $conf['mydns']['init_script'] != '') system($inst->getinitcommand($conf['mydns']['init_script'], 'restart').' &> /dev/null');
+	if($conf['powerdns']['installed'] == true && $conf['powerdns']['init_script'] != '') system($inst->getinitcommand($conf['powerdns']['init_script'], 'restart').' &> /dev/null');
+	if($conf['bind']['installed'] == true && $conf['bind']['init_script'] != '') system($inst->getinitcommand($conf['bind']['init_script'], 'restart').' &> /dev/null');
 }
 
 echo "Update finished.\n";
diff --git a/install/install.php b/install/install.php
index cbdf5d1c55df492f279009452470aaab3420b359..170cbdcea1c777fc4fcd5b28af9efc09e3507f33 100644
--- a/install/install.php
+++ b/install/install.php
@@ -314,32 +314,33 @@ if($install_mode == 'standard') {
 	$inst->install_crontab();
 	
 	swriteln('Restarting services ...');
-	if($conf['mysql']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['mysql']['init_script']))					system($conf['init_scripts'].'/'.$conf['mysql']['init_script'].' restart');
-	if($conf['postfix']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['postfix']['init_script']))				system($conf['init_scripts'].'/'.$conf['postfix']['init_script'].' restart');
-	if($conf['saslauthd']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['saslauthd']['init_script']))			system($conf['init_scripts'].'/'.$conf['saslauthd']['init_script'].' restart');
-	if($conf['amavis']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['amavis']['init_script']))					system($conf['init_scripts'].'/'.$conf['amavis']['init_script'].' restart');
-	if($conf['clamav']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['clamav']['init_script']))					system($conf['init_scripts'].'/'.$conf['clamav']['init_script'].' restart');
-	if($conf['courier']['courier-authdaemon'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-authdaemon'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-authdaemon'].' restart');
-	if($conf['courier']['courier-imap'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-imap'])) 			system($conf['init_scripts'].'/'.$conf['courier']['courier-imap'].' restart');
-	if($conf['courier']['courier-imap-ssl'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-imap-ssl'])) 	system($conf['init_scripts'].'/'.$conf['courier']['courier-imap-ssl'].' restart');
-	if($conf['courier']['courier-pop'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-pop'])) 				system($conf['init_scripts'].'/'.$conf['courier']['courier-pop'].' restart');
-	if($conf['courier']['courier-pop-ssl'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-pop-ssl'])) 		system($conf['init_scripts'].'/'.$conf['courier']['courier-pop-ssl'].' restart');
-	if($conf['dovecot']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['dovecot']['init_script'])) 		system($conf['init_scripts'].'/'.$conf['dovecot']['init_script'].' restart');
-	if($conf['mailman']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['mailman']['init_script'])) 		system('nohup '.$conf['init_scripts'].'/'.$conf['mailman']['init_script'].' restart >/dev/null 2>&1 &');
-	if($conf['apache']['installed'] == true && $conf['apache']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['apache']['init_script'])) 				system($conf['init_scripts'].'/'.$conf['apache']['init_script'].' restart');
+	if($conf['mysql']['installed'] == true && $conf['mysql']['init_script'] != '') system($inst->getinitcommand($conf['mysql']['init_script'], 'restart'));
+	if($conf['postfix']['installed'] == true && $conf['postfix']['init_script'] != '') system($inst->getinitcommand($conf['postfix']['init_script'], 'restart'));
+	if($conf['saslauthd']['installed'] == true && $conf['saslauthd']['init_script'] != '') system($inst->getinitcommand($conf['saslauthd']['init_script'], 'restart'));
+	if($conf['amavis']['installed'] == true && $conf['amavis']['init_script'] != '') system($inst->getinitcommand($conf['amavis']['init_script'], 'restart'));
+	if($conf['clamav']['installed'] == true && $conf['clamav']['init_script'] != '') system($inst->getinitcommand($conf['clamav']['init_script'], 'restart'));
+	if($conf['courier']['installed'] == true){
+		if($conf['courier']['courier-authdaemon'] != '') system($inst->getinitcommand($conf['courier']['courier-authdaemon'], 'restart'));
+		if($conf['courier']['courier-imap'] != '') system($inst->getinitcommand($conf['courier']['courier-imap'], 'restart'));
+		if($conf['courier']['courier-imap-ssl'] != '') system($inst->getinitcommand($conf['courier']['courier-imap-ssl'], 'restart'));
+		if($conf['courier']['courier-pop'] != '') system($inst->getinitcommand($conf['courier']['courier-pop'], 'restart'));
+		if($conf['courier']['courier-pop-ssl'] != '') system($inst->getinitcommand($conf['courier']['courier-pop-ssl'], 'restart'));
+	}
+	if($conf['dovecot']['installed'] == true && $conf['dovecot']['init_script'] != '') system($inst->getinitcommand($conf['dovecot']['init_script'], 'restart'));
+	if($conf['mailman']['installed'] == true && $conf['mailman']['init_script'] != '') system('nohup '.$inst->getinitcommand($conf['mailman']['init_script'], 'restart').' >/dev/null 2>&1 &');
+	if($conf['apache']['installed'] == true && $conf['apache']['init_script'] != '') system($inst->getinitcommand($conf['apache']['init_script'], 'restart'));
 	//* Reload is enough for nginx
 	if($conf['nginx']['installed'] == true){
-		if($conf['nginx']['php_fpm_init_script'] != '' && @is_file($conf['init_scripts'].'/'.$conf['nginx']['php_fpm_init_script'])) system($conf['init_scripts'].'/'.$conf['nginx']['php_fpm_init_script'].' reload');
-		if($conf['nginx']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['nginx']['init_script'])) 				system($conf['init_scripts'].'/'.$conf['nginx']['init_script'].' reload');
+		if($conf['nginx']['php_fpm_init_script'] != '') system($inst->getinitcommand($conf['nginx']['php_fpm_init_script'], 'reload'));
+		if($conf['nginx']['init_script'] != '') system($inst->getinitcommand($conf['nginx']['init_script'], 'reload'));
 	}
-	if($conf['pureftpd']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['pureftpd']['init_script']))				system($conf['init_scripts'].'/'.$conf['pureftpd']['init_script'].' restart');
-	if($conf['mydns']['installed'] == true && $conf['mydns']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['mydns']['init_script']))					system($conf['init_scripts'].'/'.$conf['mydns']['init_script'].' restart &> /dev/null');
-	if($conf['powerdns']['installed'] == true && $conf['powerdns']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['powerdns']['init_script']))					system($conf['init_scripts'].'/'.$conf['powerdns']['init_script'].' restart &> /dev/null');
-	if($conf['bind']['installed'] == true && $conf['bind']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['bind']['init_script']))					system($conf['init_scripts'].'/'.$conf['bind']['init_script'].' restart &> /dev/null');
+	if($conf['pureftpd']['installed'] == true && $conf['pureftpd']['init_script'] != '') system($inst->getinitcommand($conf['pureftpd']['init_script'], 'restart'));
+	if($conf['mydns']['installed'] == true && $conf['mydns']['init_script'] != '') system($inst->getinitcommand($conf['mydns']['init_script'], 'restart').' &> /dev/null');
+	if($conf['powerdns']['installed'] == true && $conf['powerdns']['init_script'] != '') system($inst->getinitcommand($conf['powerdns']['init_script'], 'restart').' &> /dev/null');
+	if($conf['bind']['installed'] == true && $conf['bind']['init_script'] != '') system($inst->getinitcommand($conf['bind']['init_script'], 'restart').' &> /dev/null');
 	//if($conf['squid']['installed'] == true && $conf['squid']['init_script'] != '' && is_file($conf['init_scripts'].'/'.$conf['squid']['init_script']))					system($conf['init_scripts'].'/'.$conf['squid']['init_script'].' restart &> /dev/null');
-	if($conf['nginx']['installed'] == true && $conf['nginx']['init_script'] != '' && is_file($conf['init_scripts'].'/'.$conf['nginx']['init_script']))					system($conf['init_scripts'].'/'.$conf['nginx']['init_script'].' restart &> /dev/null');
-	if($conf['ufw']['installed'] == true && $conf['ufw']['init_script'] != '' && is_file($conf['init_scripts'].'/'.$conf['ufw']['init_script']))					system($conf['init_scripts'].'/'.$conf['ufw']['init_script'].' restart &> /dev/null');
-}else{
+	if($conf['nginx']['installed'] == true && $conf['nginx']['init_script'] != '') system($inst->getinitcommand($conf['nginx']['init_script'], 'restart').' &> /dev/null');
+	if($conf['ufw']['installed'] == true && $conf['ufw']['init_script'] != '') system($inst->getinitcommand($conf['ufw']['init_script'], 'restart').' &> /dev/null');
 	
 	//* In expert mode, we select the services in the following steps, only db is always available
 	$conf['services']['mail'] = false;
@@ -453,17 +454,19 @@ if($install_mode == 'standard') {
 		swriteln('Configuring Getmail');
 		$inst->configure_getmail();
 		
-		if($conf['postfix']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['postfix']['init_script']))				system($conf['init_scripts'].'/'.$conf['postfix']['init_script'].' restart');
-		if($conf['saslauthd']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['saslauthd']['init_script']))			system($conf['init_scripts'].'/'.$conf['saslauthd']['init_script'].' restart');
-		if($conf['amavis']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['amavis']['init_script']))					system($conf['init_scripts'].'/'.$conf['amavis']['init_script'].' restart');
-		if($conf['clamav']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['clamav']['init_script']))					system($conf['init_scripts'].'/'.$conf['clamav']['init_script'].' restart');
-		if($conf['courier']['courier-authdaemon'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-authdaemon'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-authdaemon'].' restart');
-		if($conf['courier']['courier-imap'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-imap'])) 			system($conf['init_scripts'].'/'.$conf['courier']['courier-imap'].' restart');
-		if($conf['courier']['courier-imap-ssl'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-imap-ssl'])) 	system($conf['init_scripts'].'/'.$conf['courier']['courier-imap-ssl'].' restart');
-		if($conf['courier']['courier-pop'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-pop'])) 				system($conf['init_scripts'].'/'.$conf['courier']['courier-pop'].' restart');
-		if($conf['courier']['courier-pop-ssl'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-pop-ssl'])) 		system($conf['init_scripts'].'/'.$conf['courier']['courier-pop-ssl'].' restart');
-		if($conf['dovecot']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['dovecot']['init_script'])) 		system($conf['init_scripts'].'/'.$conf['dovecot']['init_script'].' restart');
-		if($conf['mailman']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['mailman']['init_script'])) 		system('nohup '.$conf['init_scripts'].'/'.$conf['mailman']['init_script'].' restart >/dev/null 2>&1 &');
+		if($conf['postfix']['installed'] == true && $conf['postfix']['init_script'] != '') system($inst->getinitcommand($conf['postfix']['init_script'], 'restart'));
+		if($conf['saslauthd']['installed'] == true && $conf['saslauthd']['init_script'] != '') system($inst->getinitcommand($conf['saslauthd']['init_script'], 'restart'));
+		if($conf['amavis']['installed'] == true && $conf['amavis']['init_script'] != '') system($inst->getinitcommand($conf['amavis']['init_script'], 'restart'));
+		if($conf['clamav']['installed'] == true && $conf['clamav']['init_script'] != '') system($inst->getinitcommand($conf['clamav']['init_script'], 'restart'));
+		if($conf['courier']['installed'] == true){
+			if($conf['courier']['courier-authdaemon'] != '') system($inst->getinitcommand($conf['courier']['courier-authdaemon'], 'restart'));
+			if($conf['courier']['courier-imap'] != '') system($inst->getinitcommand($conf['courier']['courier-imap'], 'restart'));
+			if($conf['courier']['courier-imap-ssl'] != '') system($inst->getinitcommand($conf['courier']['courier-imap-ssl'], 'restart'));
+			if($conf['courier']['courier-pop'] != '') system($inst->getinitcommand($conf['courier']['courier-pop'], 'restart'));
+			if($conf['courier']['courier-pop-ssl'] != '') system($inst->getinitcommand($conf['courier']['courier-pop-ssl'], 'restart'));
+		}
+		if($conf['dovecot']['installed'] == true && $conf['dovecot']['init_script'] != '') system($inst->getinitcommand($conf['dovecot']['init_script'], 'restart'));
+		if($conf['mailman']['installed'] == true && $conf['mailman']['init_script'] != '') system('nohup '.$inst->getinitcommand($conf['mailman']['init_script'], 'restart').' >/dev/null 2>&1 &');
 	}
 	
 	//** Configure Jailkit
@@ -476,7 +479,7 @@ if($install_mode == 'standard') {
 	if(strtolower($inst->simple_query('Configure FTP Server', array('y','n'),'y') ) == 'y') {	
 		swriteln('Configuring Pureftpd');
 		$inst->configure_pureftpd();
-		if($conf['pureftpd']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['pureftpd']['init_script'])) system($conf['init_scripts'].'/'.$conf['pureftpd']['init_script'].' restart');
+		if($conf['pureftpd']['installed'] == true && $conf['pureftpd']['init_script'] != '') system($inst->getinitcommand($conf['pureftpd']['init_script'], 'restart'));
 	}
 	
 	//** Configure DNS
@@ -486,15 +489,15 @@ if($install_mode == 'standard') {
 		if($conf['powerdns']['installed'] == true) {
 			swriteln('Configuring PowerDNS');
 			$inst->configure_powerdns();
-			if($conf['powerdns']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['powerdns']['init_script']))					system($conf['init_scripts'].'/'.$conf['powerdns']['init_script'].' restart &> /dev/null');
+			if($conf['powerdns']['init_script'] != '') system($inst->getinitcommand($conf['powerdns']['init_script'], 'restart').' &> /dev/null');
 		} elseif($conf['bind']['installed'] == true) {
 			swriteln('Configuring BIND');
 			$inst->configure_bind();
-			if($conf['bind']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['bind']['init_script']))					system($conf['init_scripts'].'/'.$conf['bind']['init_script'].' restart &> /dev/null');
+			if($conf['bind']['init_script'] != '') system($inst->getinitcommand($conf['bind']['init_script'], 'restart').' &> /dev/null');
 		} else {
 			swriteln('Configuring MyDNS');
 			$inst->configure_mydns();
-			if($conf['mydns']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['mydns']['init_script']))					system($conf['init_scripts'].'/'.$conf['mydns']['init_script'].' restart &> /dev/null');
+			if($conf['mydns']['init_script'] != '') system($inst->getinitcommand($conf['mydns']['init_script'], 'restart').' &> /dev/null');
 		}
 		
 	}
@@ -617,11 +620,11 @@ if($install_mode == 'standard') {
 	//* Configure ISPConfig
 	swriteln('Installing ISPConfig crontab');
 	$inst->install_crontab();
-	if($conf['apache']['installed'] == true && $conf['apache']['init_script'] != '' && @is_file($conf['init_scripts'].'/'.$conf['apache']['init_script'])) system($conf['init_scripts'].'/'.$conf['apache']['init_script'].' restart');
+	if($conf['apache']['installed'] == true && $conf['apache']['init_script'] != '') system($inst->getinitcommand($conf['apache']['init_script'], 'restart'));
 	//* Reload is enough for nginx
 	if($conf['nginx']['installed'] == true){
-		if($conf['nginx']['php_fpm_init_script'] != '' && @is_file($conf['init_scripts'].'/'.$conf['nginx']['php_fpm_init_script'])) system($conf['init_scripts'].'/'.$conf['nginx']['php_fpm_init_script'].' reload');
-		if($conf['nginx']['init_script'] != '' && @is_file($conf['init_scripts'].'/'.$conf['nginx']['init_script'])) system($conf['init_scripts'].'/'.$conf['nginx']['init_script'].' reload');
+		if($conf['nginx']['php_fpm_init_script'] != '') system($inst->getinitcommand($conf['nginx']['php_fpm_init_script'], 'reload'));
+		if($conf['nginx']['init_script'] != '') system($inst->getinitcommand($conf['nginx']['init_script'], 'reload'));
 	}
 	
 	
diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php
index d77ab2170c0d11490b219de7cc1ab903c874a2f9..e46d977829f4e14679b4ce77d856d6e64a7d34a1 100644
--- a/install/lib/installer_base.lib.php
+++ b/install/lib/installer_base.lib.php
@@ -1131,7 +1131,8 @@ class installer_base {
 
 		if(is_file('/etc/inetd.conf')) {
 			replaceLine('/etc/inetd.conf','/usr/sbin/pure-ftpd-wrapper','#ftp     stream  tcp     nowait  root    /usr/sbin/tcpd /usr/sbin/pure-ftpd-wrapper',0,0);
-			if(is_file($conf['init_scripts'].'/'.'openbsd-inetd')) exec($conf['init_scripts'].'/'.'openbsd-inetd restart');
+			exec($this->getinitcommand('openbsd-inetd', 'restart'));
+			//if(is_file($conf['init_scripts'].'/'.'openbsd-inetd')) exec($conf['init_scripts'].'/'.'openbsd-inetd restart');
 		}
 
 		if(!is_file('/etc/pure-ftpd/conf/DontResolve')) exec('echo "yes" > /etc/pure-ftpd/conf/DontResolve');
@@ -2164,6 +2165,23 @@ class installer_base {
 		chmod($conf['ispconfig_log_dir'].'/cron.log', 0660);
 
 	}
+	
+	public function getinitcommand($servicename, $action, $init_script_directory = ''){
+		global $conf;
+		// systemd
+		if(is_executable('/bin/systemd')){
+			return 'systemctl '.$action.' '.$servicename.'.service';
+		}
+		// upstart
+		if(is_executable('/sbin/initctl')){
+			exec('/sbin/initctl version 2>/dev/null | /bin/grep -q upstart', $retval['output'], $retval['retval']);
+			if(intval($retval['retval']) == 0) return 'service '.$servicename.' '.$action;
+		}
+		// sysvinit
+		if($init_script_directory == '') $init_script_directory = $conf['init_scripts'];
+		if(substr($init_script_directory, -1) === '/') $init_script_directory = substr($init_script_directory, 0, -1);
+		return $init_script_directory.'/'.$servicename.' '.$action;
+	}
 
 	/**
 	 * Helper function - get the path to a template file based on
diff --git a/install/sql/incremental/upd_0059.sql b/install/sql/incremental/upd_0059.sql
new file mode 100644
index 0000000000000000000000000000000000000000..247bb474cbbfcfe0a272a6b8c586293027765131
--- /dev/null
+++ b/install/sql/incremental/upd_0059.sql
@@ -0,0 +1 @@
+ALTER TABLE `client` CHANGE `company_id` `company_id` VARCHAR( 255 ) NULL DEFAULT NULL ;
\ No newline at end of file
diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql
index eb0d1992c4fbb54fb9ddfbe00abe8097fd0317ff..f97cba0ac0077de6da8a312b0c4ebcb693f238f7 100644
--- a/install/sql/ispconfig3.sql
+++ b/install/sql/ispconfig3.sql
@@ -144,7 +144,7 @@ CREATE TABLE `client` (
   `sys_perm_group` varchar(5) DEFAULT NULL,
   `sys_perm_other` varchar(5) DEFAULT NULL,
   `company_name` varchar(64) DEFAULT NULL,
-  `company_id` varchar(30) DEFAULT NULL,
+  `company_id` varchar(255) DEFAULT NULL,
   `gender` enum('','m','f') NOT NULL DEFAULT '',
   `contact_name` varchar(64) DEFAULT NULL,
   `customer_no` varchar(64) DEFAULT NULL,
diff --git a/install/update.php b/install/update.php
index 3fd346a78b827abcc2f9ac6f4ef876344816cc3e..a7c8a931222e8184db1bfe75c3be176abcd2d8a8 100644
--- a/install/update.php
+++ b/install/update.php
@@ -369,7 +369,12 @@ if($reconfigure_services_answer == 'yes') {
 
 //** Configure ISPConfig
 swriteln('Updating ISPConfig');
-
+if($conf['apache']['installed'] == true){
+	if(!is_file($conf['apache']['vhost_conf_dir'].'/ispconfig.vhost')) $inst->install_ispconfig_interface = false;
+}
+if($conf['nginx']['installed'] == true){
+	if(!is_file($conf['nginx']['vhost_conf_dir'].'/ispconfig.vhost')) $inst->install_ispconfig_interface = false;
+}
 
 if ($conf['services']['web'] && $inst->install_ispconfig_interface) {
 	//** Customise the port ISPConfig runs on
@@ -399,38 +404,40 @@ if($update_crontab_answer == 'yes') {
 //** Restart services:
 if($reconfigure_services_answer == 'yes') {
 	swriteln('Restarting services ...');
-	if($conf['mysql']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['mysql']['init_script']))					system($conf['init_scripts'].'/'.$conf['mysql']['init_script'].' restart');
+	if($conf['mysql']['installed'] == true && $conf['mysql']['init_script'] != '') system($inst->getinitcommand($conf['mysql']['init_script'], 'restart'));
 	if($conf['services']['mail']) {
-		if($conf['postfix']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['postfix']['init_script']))				system($conf['init_scripts'].'/'.$conf['postfix']['init_script'].' restart');
-		if($conf['saslauthd']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['saslauthd']['init_script']))			system($conf['init_scripts'].'/'.$conf['saslauthd']['init_script'].' restart');
-		if($conf['amavis']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['amavis']['init_script']))					system($conf['init_scripts'].'/'.$conf['amavis']['init_script'].' restart');
-		if($conf['clamav']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['clamav']['init_script']))					system($conf['init_scripts'].'/'.$conf['clamav']['init_script'].' restart');
-		if($conf['courier']['courier-authdaemon'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-authdaemon'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-authdaemon'].' restart');
-		if($conf['courier']['courier-imap'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-imap'])) 			system($conf['init_scripts'].'/'.$conf['courier']['courier-imap'].' restart');
-		if($conf['courier']['courier-imap-ssl'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-imap-ssl'])) 	system($conf['init_scripts'].'/'.$conf['courier']['courier-imap-ssl'].' restart');
-		if($conf['courier']['courier-pop'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-pop'])) 				system($conf['init_scripts'].'/'.$conf['courier']['courier-pop'].' restart');
-		if($conf['courier']['courier-pop-ssl'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-pop-ssl'])) 		system($conf['init_scripts'].'/'.$conf['courier']['courier-pop-ssl'].' restart');
-		if($conf['dovecot']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['dovecot']['init_script'])) 		system($conf['init_scripts'].'/'.$conf['dovecot']['init_script'].' restart');
-		if($conf['mailman']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['mailman']['init_script'])) 		system('nohup '.$conf['init_scripts'].'/'.$conf['mailman']['init_script'].' restart >/dev/null 2>&1 &');
+		if($conf['postfix']['installed'] == true && $conf['postfix']['init_script'] != '') system($inst->getinitcommand($conf['postfix']['init_script'], 'restart'));
+		if($conf['saslauthd']['installed'] == true && $conf['saslauthd']['init_script'] != '') system($inst->getinitcommand($conf['saslauthd']['init_script'], 'restart'));
+		if($conf['amavis']['installed'] == true && $conf['amavis']['init_script'] != '') system($inst->getinitcommand($conf['amavis']['init_script'], 'restart'));
+		if($conf['clamav']['installed'] == true && $conf['clamav']['init_script'] != '') system($inst->getinitcommand($conf['clamav']['init_script'], 'restart'));
+		if($conf['courier']['installed'] == true){
+			if($conf['courier']['courier-authdaemon'] != '') system($inst->getinitcommand($conf['courier']['courier-authdaemon'], 'restart'));
+			if($conf['courier']['courier-imap'] != '') system($inst->getinitcommand($conf['courier']['courier-imap'], 'restart'));
+			if($conf['courier']['courier-imap-ssl'] != '') system($inst->getinitcommand($conf['courier']['courier-imap-ssl'], 'restart'));
+			if($conf['courier']['courier-pop'] != '') system($inst->getinitcommand($conf['courier']['courier-pop'], 'restart'));
+			if($conf['courier']['courier-pop-ssl'] != '') system($inst->getinitcommand($conf['courier']['courier-pop-ssl'], 'restart'));
+		}
+		if($conf['dovecot']['installed'] == true && $conf['dovecot']['init_script'] != '') system($inst->getinitcommand($conf['dovecot']['init_script'], 'restart'));
+		if($conf['mailman']['installed'] == true && $conf['mailman']['init_script'] != '') system('nohup '.$inst->getinitcommand($conf['mailman']['init_script'], 'restart').' >/dev/null 2>&1 &');
 	}
 	if($conf['services']['web']) {
-		if($conf['webserver']['server_type'] == 'apache' && $conf['apache']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['apache']['init_script'])) 				system($conf['init_scripts'].'/'.$conf['apache']['init_script'].' restart');
+		if($conf['webserver']['server_type'] == 'apache' && $conf['apache']['init_script'] != '') system($inst->getinitcommand($conf['apache']['init_script'], 'restart'));
 		//* Reload is enough for nginx
 		if($conf['webserver']['server_type'] == 'nginx'){
-			if($conf['nginx']['php_fpm_init_script'] != '' && @is_file($conf['init_scripts'].'/'.$conf['nginx']['php_fpm_init_script'])) system($conf['init_scripts'].'/'.$conf['nginx']['php_fpm_init_script'].' reload');
-			if($conf['nginx']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['nginx']['init_script'])) 				system($conf['init_scripts'].'/'.$conf['nginx']['init_script'].' reload');
+			if($conf['nginx']['php_fpm_init_script'] != '') system($inst->getinitcommand($conf['nginx']['php_fpm_init_script'], 'reload'));
+			if($conf['nginx']['init_script'] != '') system($inst->getinitcommand($conf['nginx']['init_script'], 'reload'));
 		}
-		if($conf['pureftpd']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['pureftpd']['init_script']))				system($conf['init_scripts'].'/'.$conf['pureftpd']['init_script'].' restart');
+		if($conf['pureftpd']['installed'] == true && $conf['pureftpd']['init_script'] != '') system($inst->getinitcommand($conf['pureftpd']['init_script'], 'restart'));
 	}
 	if($conf['services']['dns']) {
-		if($conf['mydns']['installed'] == true && $conf['mydns']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['mydns']['init_script']))					system($conf['init_scripts'].'/'.$conf['mydns']['init_script'].' restart &> /dev/null');
-		if($conf['powerdns']['installed'] == true && $conf['powerdns']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['powerdns']['init_script']))					system($conf['init_scripts'].'/'.$conf['powerdns']['init_script'].' restart &> /dev/null');
-		if($conf['bind']['installed'] == true && $conf['bind']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['bind']['init_script']))					system($conf['init_scripts'].'/'.$conf['bind']['init_script'].' restart &> /dev/null');
+		if($conf['mydns']['installed'] == true && $conf['mydns']['init_script'] != '') system($inst->getinitcommand($conf['mydns']['init_script'], 'restart').' &> /dev/null');
+		if($conf['powerdns']['installed'] == true && $conf['powerdns']['init_script'] != '') system($inst->getinitcommand($conf['powerdns']['init_script'], 'restart').' &> /dev/null');
+		if($conf['bind']['installed'] == true && $conf['bind']['init_script'] != '') system($inst->getinitcommand($conf['bind']['init_script'], 'restart').' &> /dev/null');
 	}
 	
 	if($conf['services']['proxy']) {
 		// if($conf['squid']['installed'] == true && $conf['squid']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['squid']['init_script']))					system($conf['init_scripts'].'/'.$conf['squid']['init_script'].' restart &> /dev/null');
-		if($conf['nginx']['installed'] == true && $conf['nginx']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['nginx']['init_script']))					system($conf['init_scripts'].'/'.$conf['nginx']['init_script'].' restart &> /dev/null');
+		if($conf['nginx']['installed'] == true && $conf['nginx']['init_script'] != '') system($inst->getinitcommand($conf['nginx']['init_script'], 'restart').' &> /dev/null');
 	}
 	
 	if($conf['services']['firewall']) {
diff --git a/interface/lib/classes/aps_guicontroller.inc.php b/interface/lib/classes/aps_guicontroller.inc.php
index ddb570aad8f0f824b5e50442429a878436e258ac..453caef0062b0ff321f6233936176827de453d74 100644
--- a/interface/lib/classes/aps_guicontroller.inc.php
+++ b/interface/lib/classes/aps_guicontroller.inc.php
@@ -728,9 +728,8 @@ class ApsGUIController extends ApsBase
             // Using parse_url() to filter malformed URLs
             $path = dirname(parse_url($_SERVER['PHP_SELF'], PHP_URL_PATH)).'/'.
                     basename($this->interface_pkg_dir).'/'.$pkg['path'].'/'.basename((string)$icon);
-	    // nginx: if $_SERVER['PHP_SELF'] is doubled, remove /sites/aps_packagedetails_show.php from beginning of path
-	    $path = preg_replace('@^/sites/aps_packagedetails_show.php(.*)@', '$1', $path);
-
+			// nginx: if $_SERVER['PHP_SELF'] is doubled, remove /sites/aps_packagedetails_show.php from beginning of path
+			$path = preg_replace('@^/sites/aps_packagedetails_show.php(.*)@', '$1', $path);
             $pkg['Icon'] = $path;
         }
         else $pkg['Icon'] = '';
@@ -744,8 +743,8 @@ class ApsGUIController extends ApsBase
                 // Using parse_url() to filter malformed URLs
                 $path = dirname(parse_url($_SERVER['PHP_SELF'], PHP_URL_PATH)).'/'.
                         basename($this->interface_pkg_dir).'/'.$pkg['path'].'/'.basename((string)$screen['path']);
-		// nginx: if $_SERVER['PHP_SELF'] is doubled, remove /sites/aps_packagedetails_show.php from beginning of path
-		$path = preg_replace('@^/sites/aps_packagedetails_show.php(.*)@', '$1', $path);
+				// nginx: if $_SERVER['PHP_SELF'] is doubled, remove /sites/aps_packagedetails_show.php from beginning of path		
+				$path = preg_replace('@^/sites/aps_packagedetails_show.php(.*)@', '$1', $path);
 
                 $pkg['Screenshots'][] = array('ScreenPath' => $path,
                                               'ScreenDescription' => htmlspecialchars(trim((string)$screen->description)));
diff --git a/interface/lib/classes/custom_datasource.inc.php b/interface/lib/classes/custom_datasource.inc.php
index 35bf7d55dc29f63b30cb6cf0f0b3bf40cd1607a1..44fee19d9171cd26b846ccbcf36c852f962d91a6 100644
--- a/interface/lib/classes/custom_datasource.inc.php
+++ b/interface/lib/classes/custom_datasource.inc.php
@@ -63,6 +63,28 @@ class custom_datasource {
 		return $records_new;
 	}
 	
+	function slave_dns_servers($field, $record) {
+		global $app, $conf;
+		
+		if($_SESSION["s"]["user"]["typ"] == 'user') {
+			// Get the limits of the client
+			$client_group_id = $_SESSION["s"]["user"]["default_group"];
+			$client = $app->db->queryOneRecord("SELECT default_slave_dnsserver FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
+			$sql = "SELECT server_id,server_name FROM server WHERE server_id = ".$client['default_slave_dnsserver'];
+		} else {
+			$sql = "SELECT server_id,server_name FROM server WHERE dns_server = 1 ORDER BY server_name";
+		}
+		$records = $app->db->queryAllRecords($sql);
+		$records_new = array();
+		if(is_array($records)) {
+			foreach($records as $rec) {
+				$key = $rec['server_id'];
+				$records_new[$key] = $rec['server_name'];
+			}
+		}
+		return $records_new;
+	}
+	
 	function webdav_domains($field, $record) {
 		global $app, $conf;
 		
@@ -77,13 +99,13 @@ class custom_datasource {
 		}
 		if(count($server_ids) == 0) return array();
 		$server_ids = implode(',', $server_ids);
-		$records = $app->db->queryAllRecords("SELECT domain_id,domain FROM web_domain WHERE type = 'vhost' AND server_id IN (".$server_ids.") AND ".$app->tform->getAuthSQL('r')." ORDER BY domain");
+		$records = $app->db->queryAllRecords("SELECT web_domain.domain_id, CONCAT(web_domain.domain, ' :: ', server.server_name) AS parent_domain FROM web_domain, server WHERE web_domain.type = 'vhost' AND web_domain.server_id IN (".$server_ids.") AND web_domain.server_id = server.server_id AND ".$app->tform->getAuthSQL('r', 'web_domain')." ORDER BY web_domain.domain");
 		
 		$records_new = array();
 		if(is_array($records)) {
 			foreach($records as $rec) {
 				$key = $rec['domain_id'];
-				$records_new[$key] = $rec['domain'];
+				$records_new[$key] = $rec['parent_domain'];
 			}
 		}
 		return $records_new;
diff --git a/interface/lib/classes/functions.inc.php b/interface/lib/classes/functions.inc.php
index 5b98c20c8d27ce742cd9cafd90bfcb28f01cdbd1..0028b3974be50bf36c25fddbaf766e97c8a9bca2 100644
--- a/interface/lib/classes/functions.inc.php
+++ b/interface/lib/classes/functions.inc.php
@@ -83,6 +83,20 @@ class functions {
 		return number_format((double)$number, $number_format_decimals, $number_format_dec_point, $number_format_thousands_sep);
 	}
 	
+	//* convert currency formatted number back to floating number
+	public function currency_unformat($number) {
+		global $app;
+        
+		$number_format_dec_point = $app->lng('number_format_dec_point');
+		$number_format_thousands_sep = $app->lng('number_format_thousands_sep');
+		if($number_format_thousands_sep == 'number_format_thousands_sep') $number_format_thousands_sep = '';
+		
+		if($number_format_thousands_sep != '') $number = str_replace($number_format_thousands_sep, '', $number);
+		if($number_format_dec_point != '.' && $number_format_dec_point != '') $number = str_replace($number_format_dec_point, '.', $number);
+		
+		return (double)$number;
+	}
+	
 	public function get_ispconfig_url() {
 		global $app;
 		
@@ -177,12 +191,24 @@ class functions {
 			// IPv6
 			$regex = "/^(\:\:([a-f0-9]{1,4}\:){0,6}?[a-f0-9]{0,4}|[a-f0-9]{1,4}(\:[a-f0-9]{1,4}){0,6}?\:\:|[a-f0-9]{1,4}(\:[a-f0-9]{1,4}){1,6}?\:\:([a-f0-9]{1,4}\:){1,6}?[a-f0-9]{1,4})(\/\d{1,3})?$/i";
 		}
+		
+		$server_by_id = array();
+		$server_by_ip = array();
+		$servers = $app->db->queryAllRecords("SELECT * FROM server");
+		if(is_array($servers) && !empty($servers)){
+			foreach($servers as $server){
+				$server_by_id[$server['server_id']] = $server['server_name'];
+			}
+		}
 	
 		$ips = array();
-		$results = $app->db->queryAllRecords("SELECT ip_address AS ip FROM server_ip WHERE ip_type = '".$type."'");
+		$results = $app->db->queryAllRecords("SELECT ip_address AS ip, server_id FROM server_ip WHERE ip_type = '".$type."'");
 		if(!empty($results) && is_array($results)){
 			foreach($results as $result){
-				if(preg_match($regex, $result['ip'])) $ips[] = $result['ip'];
+				if(preg_match($regex, $result['ip'])){
+					$ips[] = $result['ip'];
+					$server_by_ip[$result['ip']] = $server_by_id[$result['server_id']];
+				}
 			}
 		}
 		$results = $app->db->queryAllRecords("SELECT ip_address AS ip FROM openvz_ip");
@@ -257,7 +283,7 @@ class functions {
 	
 			foreach($ips as $ip){
 				$result_array['cdata'][] = array(	'title' => $ip,
-													'description' => $type,
+													'description' => $type.($server_by_ip[$ip] != ''? ' > '.$server_by_ip[$ip] : ''),
 													'onclick' => '',
 													'fill_text' => $ip
 												);
diff --git a/interface/lib/classes/listform.inc.php b/interface/lib/classes/listform.inc.php
index ef3a52f868dc2d11c1c4e53df14399d0baba4279..cf8f6410f415b18acc94e713735c9719db4086f7 100644
--- a/interface/lib/classes/listform.inc.php
+++ b/interface/lib/classes/listform.inc.php
@@ -181,15 +181,68 @@ class listform {
             foreach($this->listDef['item'] as $i) {
                 $field = $i['field'];
 				$table = $i['table'];
+				
+				$searchval = $_SESSION['search'][$list_name][$search_prefix.$field];
+				// format user date format to MySQL date format 0000-00-00
+				if($i['datatype'] == 'DATE' && $this->lng('conf_format_dateshort') != 'Y-m-d'){
+					$dateformat = preg_replace("@[^Ymd]@", "", $this->lng('conf_format_dateshort'));
+					$yearpos = strpos($dateformat, 'Y') + 1;
+					$monthpos = strpos($dateformat, 'm') + 1;
+					$daypos = strpos($dateformat, 'd') + 1;
+						
+					$full_date_trans = array	('Y' => '((?:19|20)\d\d)',
+									 'm' => '(0[1-9]|1[012])',
+									 'd' => '(0[1-9]|[12][0-9]|3[01])'
+									);
+					// d.m.Y  Y/m/d				
+					$full_date_regex = strtr(preg_replace("@[^Ymd]@", "[^0-9]", $this->lng('conf_format_dateshort')), $full_date_trans);
+					//echo $full_date_regex;
+					
+					if (preg_match("@^\d+$@", $_SESSION['search'][$list_name][$search_prefix.$field])) { // we just have digits
+						$searchval = $_SESSION['search'][$list_name][$search_prefix.$field];
+					} elseif(preg_match("@^[^0-9]?\d+[^0-9]?$@", $_SESSION['search'][$list_name][$search_prefix.$field])){ // 10. or .10.
+						$searchval = preg_replace("@[^0-9]@", "", $_SESSION['search'][$list_name][$search_prefix.$field]);
+					} elseif(preg_match("@^[^0-9]?(\d{1,2})[^0-9]((?:19|20)\d\d)$@", $_SESSION['search'][$list_name][$search_prefix.$field], $matches)){ // 10.2013
+						$month = $matches[1];
+						$year = $matches[2];
+						$searchval = $year.'-'.$month;
+					} elseif(preg_match("@^((?:19|20)\d\d)[^0-9](\d{1,2})[^0-9]?$@", $_SESSION['search'][$list_name][$search_prefix.$field], $matches)){ // 2013-10
+						$month = $matches[2];
+						$year = $matches[1];
+						$searchval = $year.'-'.$month;
+					} elseif(preg_match("@^[^0-9]?(\d{1,2})[^0-9](\d{1,2})[^0-9]?$@", $_SESSION['search'][$list_name][$search_prefix.$field], $matches)){ // 04.10.
+						if($monthpos < $daypos){
+						$month = $matches[1];
+						$day = $matches[2];
+						} else {
+							$month = $matches[2];
+							$day = $matches[1];
+						}
+						$searchval = $month.'-'.$day;
+					} elseif (preg_match("@^".$full_date_regex."$@", $_SESSION['search'][$list_name][$search_prefix.$field], $matches)) {
+						//print_r($matches);
+						$day = $matches[$daypos];
+						$month = $matches[$monthpos];
+						$year = $matches[$yearpos];
+						$searchval = $year.'-'.$month.'-'.$day;
+					}
+				}
+				
                 // if($_REQUEST[$search_prefix.$field] != '') $sql_where .= " $field ".$i["op"]." '".$i["prefix"].$_REQUEST[$search_prefix.$field].$i["suffix"]."' and";
-		        if(isset($_SESSION['search'][$list_name][$search_prefix.$field]) && $_SESSION['search'][$list_name][$search_prefix.$field] != ''){
-                    $sql_where .= " ".($table != ''? $table.'.' : $this->listDef['table'].'.')."$field ".$i['op']." '".$app->db->quote($i['prefix'].$_SESSION['search'][$list_name][$search_prefix.$field].$i['suffix'])."' and";
+		        if(isset($searchval) && $searchval != ''){
+                    $sql_where .= " ".($table != ''? $table.'.' : $this->listDef['table'].'.')."$field ".$i['op']." '".$app->db->quote($i['prefix'].$searchval.$i['suffix'])."' and";
                 }
             }
         }
         return ( $sql_where != '' ) ? $sql_where = substr($sql_where,0,-3) : '1';
     }
-
+	
+	public function getPagingValue($key) {
+		if(!is_array($this->pagingValues)) return null;
+		if(!array_key_exists($key, $this->pagingValues)) return null;
+		return $this->pagingValues[$key];
+	}
+	
     public function getPagingSQL($sql_where = '1') 
     {
         global $app, $conf;
@@ -234,6 +287,8 @@ class listform {
         $vars['max_pages']      = $pages + 1;
         $vars['records_gesamt'] = $record_count['anzahl'];
         $vars['page_params']    = (isset($this->listDef['page_params'])) ? $this->listDef['page_params'] : '';
+        $vars['offset'] 		= $sql_von;
+        $vars['records_per_page'] = $records_per_page;
         //$vars['module'] = $_SESSION['s']['module']['name'];
 
         if($_SESSION['search'][$list_name]['page'] > 0) $vars['show_page_back'] = 1;
diff --git a/interface/lib/classes/listform_actions.inc.php b/interface/lib/classes/listform_actions.inc.php
index acb0b96d1a6ca3895ed5b94724b70f1ce2917196..fe167a90a59ca70641c8d68e836f921f98209444 100644
--- a/interface/lib/classes/listform_actions.inc.php
+++ b/interface/lib/classes/listform_actions.inc.php
@@ -125,8 +125,10 @@ class listform_actions {
 		  }
 		}
 		
+		if($_SESSION['search'][$_SESSION['s']['module']['name'].$app->listform->listDef["name"].$app->listform->listDef['table']]['order_in_php']) $php_sort = true;
+		
 		// Getting Datasets from DB
-		$records = $app->db->queryAllRecords($this->getQueryString());
+		$records = $app->db->queryAllRecords($this->getQueryString($php_sort));
 
 		$this->DataRowColor = "#FFFFFF";
 		$records_new = '';
@@ -147,6 +149,9 @@ class listform_actions {
             $this->sortKeys = array($order_by => $order_dir);
             uasort($records_new, array($this, '_sort'));
         }
+        if($php_sort) {
+			$records_new = array_slice($records_new, $app->listform->getPagingValue('offset'), $app->listform->getPagingValue('records_per_page'));
+		}
         
 		$app->tpl->setLoop('records',$records_new);
 
@@ -185,7 +190,7 @@ class listform_actions {
 		return $rec;
 	}
 	
-	public function getQueryString() {
+	public function getQueryString($no_limit = false) {
 		global $app;
 		$sql_where = '';
 
@@ -231,7 +236,8 @@ class listform_actions {
 		}
 		$select = implode(', ', $table_selects);
 
-		$sql = 'SELECT '.$select.$extselect.' FROM '.$app->listform->listDef['table'].($app->listform->listDef['additional_tables'] != ''? ','.$app->listform->listDef['additional_tables'] : '')."$join WHERE $sql_where $order_by_sql $limit_sql";
+		$sql = 'SELECT '.$select.$extselect.' FROM '.$app->listform->listDef['table'].($app->listform->listDef['additional_tables'] != ''? ','.$app->listform->listDef['additional_tables'] : '')."$join WHERE $sql_where $order_by_sql";
+		if($no_limit == false) $sql .= " $limit_sql";
 		//echo $sql;
 		return $sql;
 	}
diff --git a/interface/lib/classes/plugin_backuplist.inc.php b/interface/lib/classes/plugin_backuplist.inc.php
index a527f233ee31a8170417e79c079d5f66b0423630..1f90496142764792f74927646484e1e636ad2e93 100644
--- a/interface/lib/classes/plugin_backuplist.inc.php
+++ b/interface/lib/classes/plugin_backuplist.inc.php
@@ -108,7 +108,8 @@ class plugin_backuplist extends plugin_base {
 				}
 				
 				//* Get the data
-				$sql = "SELECT * FROM web_backup WHERE parent_domain_id = ".$this->form->id." ORDER BY tstamp DESC, backup_type ASC";
+				$web = $app->db->queryOneRecord("SELECT server_id FROM web_domain WHERE domain_id = ".$this->form->id);
+				$sql = "SELECT * FROM web_backup WHERE parent_domain_id = ".$this->form->id." AND server_id = ".$web['server_id']." ORDER BY tstamp DESC, backup_type ASC";
                 $records = $app->db->queryAllRecords($sql);
 
                 $bgcolor = "#FFFFFF";
diff --git a/interface/lib/classes/tform_actions.inc.php b/interface/lib/classes/tform_actions.inc.php
index b181be01989cf2a90f3608a329c26cf15b54ccdf..4db3157e53da50e9bca54f0ab97fd76fac6254e3 100644
--- a/interface/lib/classes/tform_actions.inc.php
+++ b/interface/lib/classes/tform_actions.inc.php
@@ -313,7 +313,8 @@ class tform_actions {
 						$this->dataRecord = $app->tform->getDataRecord($this->id);
 						
 						$this->onBeforeDelete();
-
+						$app->plugin->raiseEvent($_SESSION['s']['module']['name'].':'.$app->tform->formDef['name'].':'.'on_before_delete',$this);
+						
                         // Saving record to datalog when db_history enabled
                         if($app->tform->formDef["db_history"] == 'yes') {
 							//$old_data_record = $app->tform->getDataRecord($this->id);
diff --git a/interface/lib/lang/de.lng b/interface/lib/lang/de.lng
index 8a1a971d15edec0bfec16bce1a33ebec579e5f52..6c3b0d0a8c861eeab4b5124247b00e49b07e6ad0 100644
--- a/interface/lib/lang/de.lng
+++ b/interface/lib/lang/de.lng
@@ -136,4 +136,7 @@ $wb['no_destination_perm'] = 'Sie haben keine Berechtigung für dieses Ziel.';
 $wb['client_you_are_locked'] = 'Sie haben keine Berechtigung, Einstellungen zu verändern.';
 $wb['gender_m_txt'] = 'Herr';
 $wb['gender_f_txt'] = 'Frau';
+$wb['client_cannot_be_deleted_because_of_billing_module_txt'] = 'Für den Kunden existieren Einträge im Billing-Modul, daher kann er nicht gelöscht werden.';
+$wb['yes_txt'] = 'Ja';
+$wb['no_txt'] = 'Nein';
 ?>
diff --git a/interface/lib/lang/en.lng b/interface/lib/lang/en.lng
index 1d689f01040a726f4b5ac3c29e0db1e811712b3c..a8939b997a97031656f09245269443bb512f9b9a 100644
--- a/interface/lib/lang/en.lng
+++ b/interface/lib/lang/en.lng
@@ -138,4 +138,7 @@ $wb["no_destination_perm"] = 'You have no permission for this destination.';
 $wb['client_you_are_locked'] = 'You have no permission to change any settings.';
 $wb['gender_m_txt'] = 'Mr.';
 $wb['gender_f_txt'] = 'Ms.';
+$wb['client_cannot_be_deleted_because_of_billing_module_txt'] = 'This client has records in the billing module, therefore he cannot be deleted.';
+$wb['yes_txt'] = 'Yes';
+$wb['no_txt'] = 'No';
 ?>
diff --git a/interface/web/admin/lib/lang/de_language_import.lng b/interface/web/admin/lib/lang/de_language_import.lng
index 2c3eff543cc2b53cbf5e5bdbf7f62c40d8b7d6be..af829a3623518bdb1ac73d489b4161e58642833a 100644
--- a/interface/web/admin/lib/lang/de_language_import.lng
+++ b/interface/web/admin/lib/lang/de_language_import.lng
@@ -5,5 +5,5 @@ $wb['btn_save_txt'] = 'Ausgewählte Sprache importieren';
 $wb['language_overwrite_txt'] = 'Datei überschreiben, falls diese schon existiert.';
 $wb['btn_cancel_txt'] = 'Abbrechen';
 $wb['ignore_version_txt'] = 'ISPConfig Versionsüberprüfung überspringen';
-$wb['list_desc_txt'] = 'WARNING: Do not import language files from untrustworthy sources.';
+$wb['list_desc_txt'] = 'WARNUNG: Importieren Sie keine Sprachdateien aus nicht-vertrauenswürdigen Quellen.';
 ?>
diff --git a/interface/web/admin/lib/lang/de_server_config.lng b/interface/web/admin/lib/lang/de_server_config.lng
index e919ce4daf3aa31b5bc4a1e56618776a49cc1299..6ae048bf0a5a32fb20f13bca34c3b829217922b7 100644
--- a/interface/web/admin/lib/lang/de_server_config.lng
+++ b/interface/web/admin/lib/lang/de_server_config.lng
@@ -174,21 +174,21 @@ $wb['web_folder_protection_txt'] = 'Webverzeichnis unveränderlich machen (erwei
 $wb['overtraffic_notify_admin_txt'] = 'Ãœberschreiten des Datentransfer Limits an den Administrator senden';
 $wb['overtraffic_notify_client_txt'] = 'Ãœberschreiten des Datentransfer Limits an den Kunden senden';
 $wb['rbl_error_regex'] = 'Bitte geben Sie gültige RBL-Hostnamen an.';
-$wb['overquota_notify_admin_txt'] = 'Warung bei Erreichen einer Beschränkung per E-Mail an den Administrator senden';
-$wb['overquota_notify_client_txt'] = 'Warnung bei Erreichen einer Beschränkung per E-Mail an den Kunden senden';
-$wb['overquota_notify_onok_txt'] = 'Meldung an den Kunden senden, wenn Beschränkung wieder OK ist';
-$wb['overquota_notify_freq_txt'] = 'Warnung der Beschränkung alle X Tage versenden';
+$wb['overquota_notify_admin_txt'] = 'Quota-Warnungen an den Administrator senden';
+$wb['overquota_notify_client_txt'] = 'Quota-Warnungen an den Kunden senden';
+$wb['overquota_notify_onok_txt'] = 'Meldung an den Kunden senden, wenn Belegung wieder ok';
+$wb['overquota_notify_freq_txt'] = 'Quota-Warnung alle X Tage versenden';
 $wb['overquota_notify_freq_note_txt'] = '0 = Meldung nur einmalig versenden, keine Wiederholung';
 $wb['admin_notify_events_txt'] = 'Sende E-Mail an Administrator ab folgendem Level';
 $wb['no_notifications_txt'] = 'Keine Benachrichtigungen';
-$wb['monit_url_txt'] = 'Monit URL';
-$wb['monit_user_txt'] = 'Monit Benutzer';
-$wb['monit_password_txt'] = 'Monit Passwort';
-$wb['monit_url_error_regex'] = 'Ungültige Monit URL';
+$wb['monit_url_txt'] = 'Monit-URL';
+$wb['monit_user_txt'] = 'Monit-Benutzer';
+$wb['monit_password_txt'] = 'Monit-Passwort';
+$wb['monit_url_error_regex'] = 'Ungültige Monit-URL';
 $wb['monit_url_note_txt'] = 'Platzhalter:';
-$wb['munin_url_txt'] = 'Munin URL';
-$wb['munin_user_txt'] = 'Munin Benutzer';
-$wb['munin_password_txt'] = 'Munin Passwort';
-$wb['munin_url_error_regex'] = 'Ungültige Munin URL';
+$wb['munin_url_txt'] = 'Munin-URL';
+$wb['munin_user_txt'] = 'Munin-Benutzer';
+$wb['munin_password_txt'] = 'Munin-Passwort';
+$wb['munin_url_error_regex'] = 'Ungültige Munin-URL';
 $wb['munin_url_note_txt'] = 'Platzhalter:';
 ?>
diff --git a/interface/web/admin/lib/lang/de_software_package_install.lng b/interface/web/admin/lib/lang/de_software_package_install.lng
index f8ef069cae0978bd5788b630fdccb2fec5963df5..1ef69d13d32b0fd9cebc50cefc2e3b7b61623513 100644
--- a/interface/web/admin/lib/lang/de_software_package_install.lng
+++ b/interface/web/admin/lib/lang/de_software_package_install.lng
@@ -1,6 +1,6 @@
 <?php
 $wb['head_txt'] = 'Softwarepaket installieren';
-$wb['install_key_txt'] = 'Installationsschlüssel eingeben';
+$wb['install_key_txt'] = 'Installationskey eingeben';
 $wb['btn_save_txt'] = 'Installation starten';
 $wb['btn_cancel_txt'] = 'Abbrechen';
 ?>
diff --git a/interface/web/admin/lib/lang/de_software_package_list.lng b/interface/web/admin/lib/lang/de_software_package_list.lng
index b68e7d93888fc5f9bbb3f4544ecd6bf9da53bbf9..75b7504390489492a4d84de033807463aaef0540 100644
--- a/interface/web/admin/lib/lang/de_software_package_list.lng
+++ b/interface/web/admin/lib/lang/de_software_package_list.lng
@@ -1,13 +1,13 @@
 <?php
 $wb['list_head_txt'] = 'Softwarepakete';
 $wb['installed_txt'] = 'Status';
-$wb['package_title_txt'] = 'Softwarepaket';
+$wb['package_title_txt'] = 'Paket';
 $wb['package_description_txt'] = 'Beschreibung';
 $wb['action_txt'] = 'Aktion';
-$wb['toolsarea_head_txt'] = 'Softwarepakete';
+$wb['toolsarea_head_txt'] = 'Pakete';
 $wb['repoupdate_txt'] = 'Softwarepakete Liste updaten';
-$wb['package_id_txt'] = 'Lokale Softwarepaket ID';
-$wb['no_packages_txt'] = 'Keine Softwarepakete verfügbar';
+$wb['package_id_txt'] = 'Lokale App ID';
+$wb['no_packages_txt'] = 'Keine Pakete verfügbar';
 $wb['edit_txt'] = 'Bearbeiten';
 $wb['delete_txt'] = 'Löschen';
 ?>
diff --git a/interface/web/admin/lib/lang/de_software_repo.lng b/interface/web/admin/lib/lang/de_software_repo.lng
index ec672430be0ed328b6627000c3a6d6a8c4392bc3..242611cd08616fc1159c5dca536282ce672098f8 100644
--- a/interface/web/admin/lib/lang/de_software_repo.lng
+++ b/interface/web/admin/lib/lang/de_software_repo.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['repo_name_txt'] = 'Archiv Name';
+$wb['repo_name_txt'] = 'Repository';
 $wb['repo_url_txt'] = 'URL';
 $wb['repo_username_txt'] = 'Benutzername (optional)';
 $wb['repo_password_txt'] = 'Passwort (optional)';
diff --git a/interface/web/admin/lib/lang/de_software_repo_list.lng b/interface/web/admin/lib/lang/de_software_repo_list.lng
index ccde58d6717cbba32eb7bb5e744fe90dd9cec6d2..db6f49fd4edd70c55ebc84f05dc84fc704e861ce 100644
--- a/interface/web/admin/lib/lang/de_software_repo_list.lng
+++ b/interface/web/admin/lib/lang/de_software_repo_list.lng
@@ -1,6 +1,6 @@
 <?php
-$wb['list_head_txt'] = 'Archiv';
+$wb['list_head_txt'] = 'Repository';
 $wb['active_txt'] = 'Aktiv';
-$wb['repo_name_txt'] = 'Archiv Name';
+$wb['repo_name_txt'] = 'Repository';
 $wb['repo_url_txt'] = 'URL';
 ?>
diff --git a/interface/web/client/form/client.tform.php b/interface/web/client/form/client.tform.php
index 03624809510ccc2b82089258bd0b51d06025edec..37d51bdd8a17ee05fea2420a3f4854df946978fd 100644
--- a/interface/web/client/form/client.tform.php
+++ b/interface/web/client/form/client.tform.php
@@ -356,7 +356,7 @@ $form["tabs"]['address'] = array (
 			'value'		=> '',
 			'separator'	=> '',
 			'width'		=> '30',
-			'maxlength'	=> '20',
+			'maxlength'	=> '255',
 			'rows'		=> '',
 			'cols'		=> ''
 		),
diff --git a/interface/web/client/lib/lang/de.lng b/interface/web/client/lib/lang/de.lng
index fea2cee39fa320969a5cbaa51584ece42240ecd6..ba66401d9ed70d257fa914a9ff424f1d01dc4de8 100644
--- a/interface/web/client/lib/lang/de.lng
+++ b/interface/web/client/lib/lang/de.lng
@@ -1,7 +1,7 @@
 <?php
 $wb['Client'] = 'Kunden';
 $wb['Address'] = 'Adresse';
-$wb['Limits'] = 'Beschränkungen';
+$wb['Limits'] = 'Limits';
 $wb['Add Client'] = 'Kunde hinzufügen';
 $wb['Edit Client'] = 'Kunde bearbeiten';
 $wb['Clients'] = 'Kunden';
diff --git a/interface/web/client/lib/lang/de_client.lng b/interface/web/client/lib/lang/de_client.lng
index 0bb652449303dfd937edb3358d47f5d84147bbb3..4aa8abdfcb315fee024e1c62ba077c343e63507c 100644
--- a/interface/web/client/lib/lang/de_client.lng
+++ b/interface/web/client/lib/lang/de_client.lng
@@ -37,7 +37,7 @@ $wb['surname_txt'] = 'Nachname';
 $wb['limit_client_txt'] = 'Max. Anzahl an Kunden';
 $wb['limit_domain_txt'] = 'Max. Anzahl an Domains';
 $wb['limit_subdomain_txt'] = 'Max. Anzahl an Subdomains';
-$wb['limit_webquota_txt'] = 'Max. Speicherplatz Beschränkung';
+$wb['limit_webquota_txt'] = 'Max. Webbeschränkung';
 $wb['limit_database_txt'] = 'Max. Anzahl an Datenbanken';
 $wb['limit_cron_txt'] = 'Max. Anzahl an Cronjobs';
 $wb['limit_cron_type_txt'] = 'Erlaubte Cronjob Typen (chrooted und full erlauben auch url)';
@@ -57,28 +57,28 @@ $wb['limit_dns_record_txt'] = 'Max. Anzahl an DNS Einträgen';
 $wb['limit_shell_user_txt'] = 'Max. Anzahl an Shell Benutzer';
 $wb['username_error_empty'] = 'Benutzername ist leer.';
 $wb['username_error_unique'] = 'Der Benutzername muss einzigartig sein.';
-$wb['limit_maildomain_error_notint'] = 'Die E-Mail Domain Beschränkung muss eine Zahl sein.';
-$wb['limit_mailbox_error_notint'] = 'Die E-Mail Konto Beschränkung muss eine Zahl sein.';
-$wb['limit_mailalias_error_notint'] = 'Die E-Mail Alias Beschränkung muss eine Zahl sein.';
-$wb['limit_mailforward_error_notint'] = 'Die E-Mail Weiterleitung Beschränkung muss eine Zahl sein.';
-$wb['limit_mailcatchall_error_notint'] = 'Die E-Mail Catchall Beschränkung muss eine Zahl sein.';
-$wb['limit_mailrouting_error_notint'] = 'Die E-Mail Routing Beschränkung muss eine Zahl sein.';
-$wb['limit_mailfilter_error_notint'] = 'Die E-Mail Filter Beschränkung muss eine Zahl sein.';
-$wb['limit_mailfetchmail_error_notint'] = 'Die Fetchmail Beschränkung muss eine Zahl sein.';
-$wb['limit_mailquota_error_notint'] = 'Die E-Mailbeschränkungs Beschränkung muss eine Zahl sein.';
-$wb['limit_spamfilter_wblist_error_notint'] = 'Die Spamfilter White-/Blacklist Limit muss eine Zahl sein.';
-$wb['limit_spamfilter_user_error_notint'] = 'Die Spamfilter Benutzer Beschränkung muss eine Zahl sein.';
-$wb['limit_spamfilter_policy_error_notint'] = 'Die Spamfilter Richtlinien Beschränkung muss eine Zahl sein.';
-$wb['limit_web_domain_error_notint'] = 'Die Domain Beschränkung muss eine Zahl sein.';
-$wb['limit_web_aliasdomain_error_notint'] = 'Die Aliasdomain Beschränkung muss eine Zahl sein.';
-$wb['limit_web_subdomain_error_notint'] = 'Die Subdomain Beschränkung muss eine Zahl sein.';
-$wb['limit_ftp_user_error_notint'] = 'Die FTP Benutzer Beschränkung muss eine Zahl sein.';
-$wb['limit_shell_user_error_notint'] = 'Die Shell Benutzer Beschränkung muss eine Zahl sein.';
-$wb['limit_dns_zone_error_notint'] = 'Die DNS Beschränkung muss eine Zahl sein.';
+$wb['limit_maildomain_error_notint'] = 'Das E-Mail Domain Limit muss eine Zahl sein.';
+$wb['limit_mailbox_error_notint'] = 'Das E-Mail Konto Limit muss eine Zahl sein.';
+$wb['limit_mailalias_error_notint'] = 'Das E-Mail Alias Limit muss eine Zahl sein.';
+$wb['limit_mailforward_error_notint'] = 'Das E-Mail Weiterleitung Limit muss eine Zahl sein.';
+$wb['limit_mailcatchall_error_notint'] = 'Das E-Mail Catchall Limit muss eine Zahl sein.';
+$wb['limit_mailrouting_error_notint'] = 'Das E-Mail Routing Limit muss eine Zahl sein.';
+$wb['limit_mailfilter_error_notint'] = 'Das E-Mail Filter Limit muss eine Zahl sein.';
+$wb['limit_mailfetchmail_error_notint'] = 'Das Fetchmail Limit muss eine Zahl sein.';
+$wb['limit_mailquota_error_notint'] = 'Das E-Mailbeschränkungs Limit muss eine Zahl sein.';
+$wb['limit_spamfilter_wblist_error_notint'] = 'Das Spamfilter White-/Blacklist Limit muss eine Zahl sein.';
+$wb['limit_spamfilter_user_error_notint'] = 'Das Spamfilter Benutzer Limit muss eine Zahl sein.';
+$wb['limit_spamfilter_policy_error_notint'] = 'Das Spamfilter Richtlinien Limit muss eine Zahl sein.';
+$wb['limit_web_domain_error_notint'] = 'Das Domain Limit muss eine Zahl sein.';
+$wb['limit_web_aliasdomain_error_notint'] = 'Das Aliasdomain Limit muss eine Zahl sein.';
+$wb['limit_web_subdomain_error_notint'] = 'Das Subdomain Limit muss eine Zahl sein.';
+$wb['limit_ftp_user_error_notint'] = 'Das FTP Benutzer Limit muss eine Zahl sein.';
+$wb['limit_shell_user_error_notint'] = 'Das Shell Benutzer Limit muss eine Zahl sein.';
+$wb['limit_dns_zone_error_notint'] = 'Das DNS Einträge Limit muss eine Zahl sein.';
 $wb['default_dbserver_txt'] = 'Standarddatenbankserver';
-$wb['limit_database_error_notint'] = 'Die Datenbank Beschränkung muss eine Zahl sein.';
-$wb['limit_cron_error_notint'] = 'Die Cronjob Beschränkung muss eine Zahl sein.';
-$wb['limit_cron_error_frequency'] = 'Der Cronjob Intervall muss eine Zahl sein.';
+$wb['limit_database_error_notint'] = 'Das Datenbank Limit muss eine Zahl sein.';
+$wb['limit_cron_error_notint'] = 'Das Cronjob Limit muss eine Zahl sein.';
+$wb['limit_cron_error_frequency'] = 'Das Cronjob Intervall muss eine Zahl sein.';
 $wb['username_error_regex'] = 'Der Benutzername enthält ungültige Zeichen.';
 $wb['password_strength_txt'] = 'Passwortkomplexität';
 $wb['template_master_txt'] = 'Mastervorlage';
@@ -97,25 +97,25 @@ $wb['force_suexec_txt'] = 'SuEXEC erzwungen';
 $wb['limit_hterror_txt'] = 'Eigene Fehlerseiten verfügbar';
 $wb['limit_wildcard_txt'] = 'Wildcard Subdomain verfügbar';
 $wb['limit_ssl_txt'] = 'SSL verfügbar';
-$wb['limit_client_error'] = 'Die max. Anzahl an Kunden wurde erreicht.';
+$wb['limit_client_error'] = 'Die maximale Anzahl an Kunden wurde erreicht.';
 $wb['limit_mailaliasdomain_txt'] = 'Max. Anzahl an Domain Aliases';
-$wb['limit_mailaliasdomain_error_notint'] = 'Das E-Mail Domain Alias Beschränkung muss eine Zahl sein.';
-$wb['limit_web_quota_txt'] = 'Speicherplatz Beschränkung';
-$wb['limit_traffic_quota_txt'] = 'Datentransfer Beschränkung';
-$wb['limit_trafficquota_error_notint'] = 'Datentransfer Beschränkung muss eine Zahl sein.';
+$wb['limit_mailaliasdomain_error_notint'] = 'Das E-Mail Domain Alias Limit muss eine Zahl sein.';
+$wb['limit_web_quota_txt'] = 'Webbeschränkung';
+$wb['limit_traffic_quota_txt'] = 'Trafficbeschränkung';
+$wb['limit_trafficquota_error_notint'] = 'Trafficbeschränkung muss eine Zahl sein.';
 $wb['limit_dns_slave_zone_txt'] = 'Max. Anzahl an Secondary DNS Zonen';
 $wb['limit_webdav_user_txt'] = 'Max. Anzahl an WebDAV Benutzern';
-$wb['limit_webdav_user_error_notint'] = 'Die WebDAV Benutzer Beschränkung muss eine Zahl sein.';
-$wb['limit_dns_slave_zone_error_notint'] = 'Die Secondary DNS Zonen Beschränkung muss eine Zahl sein.';
+$wb['limit_webdav_user_error_notint'] = 'Das WebDAV Benutzer Limit muss eine Zahl sein.';
+$wb['limit_dns_slave_zone_error_notint'] = 'Das Secondary DNS Zonen Limit muss eine Zahl sein.';
 $wb['customer_no_txt'] = 'Kundennummer';
 $wb['vat_id_txt'] = 'USt-ID';
 $wb['required_fields_txt'] = '* Benötigte Felder';
 $wb['limit_mailmailinglist_txt'] = 'Max. Anzahl an Mailinglisten';
-$wb['limit_mailmailinglist_error_notint'] = 'Die Mailinglisten Beschränkung muss eine Zahl sein.';
+$wb['limit_mailmailinglist_error_notint'] = 'Das Mailinglisten Limit muss eine Zahl sein.';
 $wb['company_id_txt'] = 'Firmen/Entrepreneur ID';
 $wb['limit_openvz_vm_txt'] = 'Max. Anzahl an virtuellen Servern';
 $wb['limit_openvz_vm_template_id_txt'] = 'Template für virtuelle Server erzwingen';
-$wb['limit_openvz_vm_error_notint'] = 'Die Beschränkung virtueller Server muss eine Zahl sein.';
+$wb['limit_openvz_vm_error_notint'] = 'Das Limit virtueller Server muss eine Zahl sein.';
 $wb['web_php_options_notempty'] = 'Keine PHP Option ausgewählt. Wähle mindestens eine PHP Option.';
 $wb['ssh_chroot_notempty'] = 'Keine SSH Chroot Option ausgewählt. Wähle mindestens eine SSH Option.';
 $wb['username_error_collision'] = 'Der Benutzername sollte nicht mit dem Wort -web- oder -web- gefolgt von einer Nummer anfangen.';
@@ -125,12 +125,12 @@ $wb['bank_code_txt'] = 'BLZ';
 $wb['bank_name_txt'] = 'Bank';
 $wb['bank_account_iban_txt'] = 'IBAN';
 $wb['bank_account_swift_txt'] = 'BIC';
-$wb['web_limits_txt'] = 'Web Beschränkungen';
-$wb['email_limits_txt'] = 'E-Mail Beschränkungen';
-$wb['database_limits_txt'] = 'Datenbank Beschränkungen';
-$wb['cron_job_limits_txt'] = 'Cronjob Beschränkungen';
-$wb['dns_limits_txt'] = 'DNS Beschränkungen';
-$wb['virtualization_limits_txt'] = 'Virtuelle Server Beschränkungen';
+$wb['web_limits_txt'] = 'Web Limits';
+$wb['email_limits_txt'] = 'E-Mail Limits';
+$wb['database_limits_txt'] = 'Datenbank Limits';
+$wb['cron_job_limits_txt'] = 'Cronjob Limits';
+$wb['dns_limits_txt'] = 'DNS Limits';
+$wb['virtualization_limits_txt'] = 'Virtualisierungs Limits';
 $wb['generate_password_txt'] = 'Passwort erzeugen';
 $wb['repeat_password_txt'] = 'Passwort wiederholen';
 $wb['password_mismatch_txt'] = 'Die Passwörter stimmen nicht überein.';
@@ -140,9 +140,9 @@ $wb['email_error_isemail'] = 'Bitte geben Sie eine gültige E-Mail Adresse an.';
 $wb['paypal_email_error_isemail'] = 'Bitte geben Sie eine gültige PayPal E-Mail Adresse an.';
 $wb['paypal_email_txt'] = 'PayPal E-Mail';
 $wb['err_msg_master_tpl_set'] = 'Die hier eingestellten Werte werden ignoriert, wenn als Mastervorlage nicht  -Custom- ausgewählt ist!';
-$wb['aps_limits_txt'] = 'APS Installationsassistent Beschränkungen';
-$wb['limit_aps_txt'] = 'Max. Anzahl an APS Instanzen';
-$wb['limit_aps_error_notint'] = 'Die APS Instanzen Beschränkung muss eine Zahl sein.';
+$wb['aps_limits_txt'] = 'APS Installationsassistent Limits';
+$wb['limit_aps_txt'] = 'Max. Anzahl an APS-Instanzen';
+$wb['limit_aps_error_notint'] = 'Das APS Instanzen Limit muss eine Zahl sein.';
 $wb['default_slave_dnsserver_txt'] = 'Standard Secondary DNS Server';
 $wb['locked_txt'] = 'Gesperrt (deaktiviert alle Webs, etc.)';
 $wb['canceled_txt'] = 'Gek&uuml;ndigt (verhindert Kundenlogin)';
diff --git a/interface/web/dashboard/dashlets/quota.php b/interface/web/dashboard/dashlets/quota.php
index a46649ad242b897a3b1b22d5838e05dd85ac7887..29d1d3b832e8201997d722e1c561b777c7130e7b 100644
--- a/interface/web/dashboard/dashlets/quota.php
+++ b/interface/web/dashboard/dashlets/quota.php
@@ -30,7 +30,7 @@ class dashlet_quota {
 		
 		$has_quota = false;
 		// select websites belonging to client
-		$sites = $app->db->queryAllRecords("SELECT * FROM web_domain WHERE active = 'y'".$sql_where);
+		$sites = $app->db->queryAllRecords("SELECT * FROM web_domain WHERE active = 'y' AND type = 'vhost'".$sql_where);
 		//print_r($sites);
 		if(is_array($sites) && !empty($sites)){
 			for($i=0;$i<sizeof($sites);$i++){
diff --git a/interface/web/dashboard/lib/lang/de_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/de_dashlet_mailquota.lng
index 65984f25b55a08db1c656a3d71c85378c9a877ee..92168811936d835f41d660899cfea011015efa1f 100644
--- a/interface/web/dashboard/lib/lang/de_dashlet_mailquota.lng
+++ b/interface/web/dashboard/lib/lang/de_dashlet_mailquota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['mailquota_txt'] = 'E-Mail Konten Speicherplatz';
-$wb['email_txt'] = 'E-Mail Adresse';
+$wb['mailquota_txt'] = 'Mailbox-Speicherplatz';
+$wb['email_txt'] = 'E-Mail-Adresse';
 $wb['name_txt'] = 'Name';
 $wb['used_txt'] = 'Verwendet';
 $wb['quota_txt'] = 'Verfügbar';
-$wb['no_email_accounts_txt'] = 'Kein E-Mail Konto gefunden.';
+$wb['no_email_accounts_txt'] = 'Kein E-Mail-Konto gefunden.';
 ?>
diff --git a/interface/web/designer/lib/lang/de_form_show.lng b/interface/web/designer/lib/lang/de_form_show.lng
index c4b2c1d19570174d24699db67ed6b346e1d52134..02a81627f708fef8c6e47b3069649612bb59a5a0 100644
--- a/interface/web/designer/lib/lang/de_form_show.lng
+++ b/interface/web/designer/lib/lang/de_form_show.lng
@@ -15,5 +15,4 @@ $wb['description_txt'] = 'Beschreibung';
 $wb['module_del_txt'] = 'Modul und alle Unterverzeichnisse löschen?';
 $wb['menu_del_txt'] = 'Menü samt Menüeinträgen löschen?';
 $wb['item_del_txt'] = 'Menüeintrag löschen?';
-?>
-
+?>
\ No newline at end of file
diff --git a/interface/web/dns/list/dns_slave.list.php b/interface/web/dns/list/dns_slave.list.php
index 5276557170899fa471b7be1ba46e62745e09f745..f00d33baf5b77bcb808f0f0c36945f6e3593beec 100644
--- a/interface/web/dns/list/dns_slave.list.php
+++ b/interface/web/dns/list/dns_slave.list.php
@@ -64,9 +64,9 @@ $liste["item"][] = array(   'field'	=> "server_id",
                             'op'	=> "like",
                             'prefix'	=> "%",
                             'suffix'	=> "%",
-                            'datasource'=> array (  'type'   => 'CUSTOM',
-                                                    'class'=> 'custom_datasource',
-                                                    'function'=> 'dns_servers'
+                            'datasource'=> array (  'type' => 'CUSTOM',
+                                                    'class' => 'custom_datasource',
+                                                    'function' => 'slave_dns_servers'
                                                 ),
                             'width'	=> "",
                             'value'	=> "");
diff --git a/interface/web/mail/lib/lang/de_mail_domain.lng b/interface/web/mail/lib/lang/de_mail_domain.lng
index 3d1b1505655647a9215c09169524e29a58e4f058..6d057288739d2abe58fad279fb55964437643c36 100644
--- a/interface/web/mail/lib/lang/de_mail_domain.lng
+++ b/interface/web/mail/lib/lang/de_mail_domain.lng
@@ -3,7 +3,7 @@ $wb['server_id_txt'] = 'Server';
 $wb['domain_txt'] = 'Domain';
 $wb['type_txt'] = 'Typ';
 $wb['active_txt'] = 'Aktiv';
-$wb["dkim_txt"] = 'DKIM aktivieren
+$wb["dkim_txt"] = 'DKIM aktivieren';
 $wb["dkim_private_txt"] = 'DKIM Private-key';
 $wb["dkim_public_txt"] = 'DKIM Public-key\nfor information only';
 $wb["dkim_generate_txt"] = 'erstelle DKIM Private-key';
diff --git a/interface/web/monitor/show_monit.php b/interface/web/monitor/show_monit.php
index 3dd8f0364b6fd242cbb554dda277b3c14c15ba83..0121a688464411e9b6af6efaa5e99ab22ad3fe73 100644
--- a/interface/web/monitor/show_monit.php
+++ b/interface/web/monitor/show_monit.php
@@ -58,10 +58,10 @@ if($_SESSION["s"]["user"]["typ"] == 'admin'){
 		$monit_password = trim($server_config['monit_password']);
 		$auth_string = '';
 		if($monit_user != ''){
-			$auth_string = $monit_user;
+			$auth_string = rawurlencode($monit_user);
 		}
 		if($monit_user != '' && $monit_password != ''){
-			$auth_string .= ':'.$monit_password;
+			$auth_string .= ':'.rawurlencode($monit_password);
 		}
 		if($auth_string != '') $auth_string .= '@';
 	
diff --git a/interface/web/monitor/show_munin.php b/interface/web/monitor/show_munin.php
index b193d587c1577d10e12252d4704ae463946b2f0d..5db6adf6f153368d7aa6e71f91f55a1db3121b05 100644
--- a/interface/web/monitor/show_munin.php
+++ b/interface/web/monitor/show_munin.php
@@ -58,10 +58,10 @@ if($_SESSION["s"]["user"]["typ"] == 'admin'){
 		$munin_password = trim($server_config['munin_password']);
 		$auth_string = '';
 		if($munin_user != ''){
-			$auth_string = $munin_user;
+			$auth_string = rawurlencode($munin_user);
 		}
 		if($munin_user != '' && $munin_password != ''){
-			$auth_string .= ':'.$munin_password;
+			$auth_string .= ':'.rawurlencode($munin_password);
 		}
 		if($auth_string != '') $auth_string .= '@';
 	
diff --git a/interface/web/sites/form/cron.tform.php b/interface/web/sites/form/cron.tform.php
index 3a7bd6deccb11e4ddca58508c3df6c3d274e7271..41c2a3199c001ebf659ececd3be1220a9e8ec875 100644
--- a/interface/web/sites/form/cron.tform.php
+++ b/interface/web/sites/form/cron.tform.php
@@ -79,9 +79,9 @@ $form["tabs"]['cron'] = array (
             'formtype'  => 'SELECT',
             'default'   => '',
             'datasource'    => array (  'type'  => 'SQL',
-                                        'querystring' => "SELECT domain_id,domain FROM web_domain WHERE type = 'vhost' AND {AUTHSQL} ORDER BY domain",
+                                        'querystring' => "SELECT web_domain.domain_id, CONCAT(web_domain.domain, ' :: ', server.server_name) AS parent_domain FROM web_domain, server WHERE web_domain.type = 'vhost' AND web_domain.server_id = server.server_id AND {AUTHSQL::web_domain} ORDER BY web_domain.domain",
                                         'keyfield'=> 'domain_id',
-                                        'valuefield'=> 'domain'
+                                        'valuefield'=> 'parent_domain'
                                      ),
             'value'     => ''
         ),
diff --git a/interface/web/sites/form/database.tform.php b/interface/web/sites/form/database.tform.php
index 2a9da3fafb194ecc35e2487b6d05a1885ced5848..e458e066d6954d3384cb1d8852bf34ca45be6095 100644
--- a/interface/web/sites/form/database.tform.php
+++ b/interface/web/sites/form/database.tform.php
@@ -79,9 +79,9 @@ $form["tabs"]['database'] = array (
 			'formtype'	=> 'SELECT',
 			'default'	=> '',
 			'datasource'	=> array ( 	'type'	=> 'SQL',
-										'querystring' => "SELECT domain_id,domain FROM web_domain WHERE type = 'vhost' AND {AUTHSQL} ORDER BY domain",
+										'querystring' => "SELECT web_domain.domain_id, CONCAT(web_domain.domain, ' :: ', server.server_name) AS parent_domain FROM web_domain, server WHERE web_domain.type = 'vhost' AND web_domain.server_id = server.server_id AND {AUTHSQL::web_domain} ORDER BY web_domain.domain",
 										'keyfield'=> 'domain_id',
-										'valuefield'=> 'domain'
+										'valuefield'=> 'parent_domain'
 									 ),
 			'value'		=> array('0' => 'select_site_txt')
 		),
diff --git a/interface/web/sites/form/ftp_user.tform.php b/interface/web/sites/form/ftp_user.tform.php
index 543d863a9d84d140a58c9a90bb996934ddd042fd..7dece14fae99661f2aaecd7d0828940fb3355b1a 100644
--- a/interface/web/sites/form/ftp_user.tform.php
+++ b/interface/web/sites/form/ftp_user.tform.php
@@ -79,9 +79,9 @@ $form["tabs"]['ftp'] = array (
 			'formtype'	=> 'SELECT',
 			'default'	=> '',
 			'datasource'	=> array ( 	'type'	=> 'SQL',
-										'querystring' => "SELECT domain_id,domain FROM web_domain WHERE type = 'vhost' AND {AUTHSQL} ORDER BY domain",
+										'querystring' => "SELECT web_domain.domain_id, CONCAT(web_domain.domain, ' :: ', server.server_name) AS parent_domain FROM web_domain, server WHERE web_domain.type = 'vhost' AND web_domain.server_id = server.server_id AND {AUTHSQL::web_domain} ORDER BY web_domain.domain",
 										'keyfield'=> 'domain_id',
-										'valuefield'=> 'domain'
+										'valuefield'=> 'parent_domain'
 									 ),
 			'value'		=> ''
 		),
diff --git a/interface/web/sites/form/shell_user.tform.php b/interface/web/sites/form/shell_user.tform.php
index 61d92b3a52ddfccc57a2e9b565a9d12fa14c6e48..1ae077d286d58f3b1862fdd8d8a8ab64820a49b8 100644
--- a/interface/web/sites/form/shell_user.tform.php
+++ b/interface/web/sites/form/shell_user.tform.php
@@ -79,9 +79,9 @@ $form["tabs"]['shell'] = array (
 			'formtype'	=> 'SELECT',
 			'default'	=> '',
 			'datasource'	=> array ( 	'type'	=> 'SQL',
-										'querystring' => "SELECT domain_id,domain FROM web_domain WHERE type = 'vhost' AND {AUTHSQL} ORDER BY domain",
+										'querystring' => "SELECT web_domain.domain_id, CONCAT(web_domain.domain, ' :: ', server.server_name) AS parent_domain FROM web_domain, server WHERE web_domain.type = 'vhost' AND web_domain.server_id = server.server_id AND {AUTHSQL::web_domain} ORDER BY web_domain.domain",
 										'keyfield'=> 'domain_id',
-										'valuefield'=> 'domain'
+										'valuefield'=> 'parent_domain'
 									 ),
 			'value'		=> ''
 		),
diff --git a/interface/web/sites/form/web_aliasdomain.tform.php b/interface/web/sites/form/web_aliasdomain.tform.php
index e815034bda6a00df61fd8a416c45217518cfc5b4..528234a6d58a630b7376a0bd0cd509f61c7f64f7 100644
--- a/interface/web/sites/form/web_aliasdomain.tform.php
+++ b/interface/web/sites/form/web_aliasdomain.tform.php
@@ -106,9 +106,9 @@ $form["tabs"]['domain'] = array (
 			'formtype'	=> 'SELECT',
 			'default'	=> '',
 			'datasource'	=> array ( 	'type'	=> 'SQL',
-										'querystring' => "SELECT domain_id,domain FROM web_domain WHERE type = 'vhost' AND {AUTHSQL} ORDER BY domain",
+										'querystring' => "SELECT web_domain.domain_id, CONCAT(web_domain.domain, ' :: ', server.server_name) AS parent_domain FROM web_domain, server WHERE web_domain.type = 'vhost' AND web_domain.server_id = server.server_id AND {AUTHSQL::web_domain} ORDER BY web_domain.domain",
 										'keyfield'=> 'domain_id',
-										'valuefield'=> 'domain'
+										'valuefield'=> 'parent_domain'
 									 ),
 			'value'		=> ''
 		),
diff --git a/interface/web/sites/form/web_domain.tform.php b/interface/web/sites/form/web_domain.tform.php
index 233b464b8a960bf9666a07b95060f8c5a55b77d5..861a3d5defe1ff447c478ecb63af5ee49485ad39 100644
--- a/interface/web/sites/form/web_domain.tform.php
+++ b/interface/web/sites/form/web_domain.tform.php
@@ -346,7 +346,7 @@ $form["tabs"]['ssl'] = array (
 			'datatype'	=> 'VARCHAR',
 			'formtype'	=> 'TEXT',
 			'validators'	=> array ( 	0 => array (	'type'	=> 'REGEX',
-														'regex' => '/^(([\.]{0})|([a-zA-Z0-9\ \.\-\_\,]{1,255}))$/',
+														'regex' => '/^(([\.]{0})|([-a-zA-Z0-9._,&äöüÄÖÜ ]{1,255}))$/',
 														'errmsg'=> 'ssl_state_error_regex'),
 									),
 			'default'	=> '',
@@ -358,7 +358,7 @@ $form["tabs"]['ssl'] = array (
 			'datatype'	=> 'VARCHAR',
 			'formtype'	=> 'TEXT',
 			'validators'	=> array ( 	0 => array (	'type'	=> 'REGEX',
-														'regex' => '/^(([\.]{0})|([a-zA-Z0-9\ \.\-\_\,]{1,255}))$/',
+														'regex' => '/^(([\.]{0})|([-a-zA-Z0-9._,&äöüÄÖÜ ]{1,255}))$/',
 														'errmsg'=> 'ssl_locality_error_regex'),
 									),
 			'default'	=> '',
@@ -370,7 +370,7 @@ $form["tabs"]['ssl'] = array (
 			'datatype'	=> 'VARCHAR',
 			'formtype'	=> 'TEXT',
 			'validators'	=> array ( 	0 => array (	'type'	=> 'REGEX',
-														'regex' => '/^(([\.]{0})|([a-zA-Z0-9\ \.\-\_\,]{1,255}))$/',
+														'regex' => '/^(([\.]{0})|([-a-zA-Z0-9._,&äöüÄÖÜ ]{1,255}))$/',
 														'errmsg'=> 'ssl_organisation_error_regex'),
 									),
 			'default'	=> '',
@@ -382,7 +382,7 @@ $form["tabs"]['ssl'] = array (
 			'datatype'	=> 'VARCHAR',
 			'formtype'	=> 'TEXT',
 			'validators'	=> array ( 	0 => array (	'type'	=> 'REGEX',
-														'regex' => '/^(([\.]{0})|([a-zA-Z0-9\ \.\-\_\,]{1,255}))$/',
+														'regex' => '/^(([\.]{0})|([-a-zA-Z0-9._,&äöüÄÖÜ ]{1,255}))$/',
 														'errmsg'=> 'ssl_organistaion_unit_error_regex'),
 									),
 			'default'	=> '',
diff --git a/interface/web/sites/form/web_folder.tform.php b/interface/web/sites/form/web_folder.tform.php
index 5a6e565883b6cd8479622b83012301f07114d1a7..2cef461dcc3c576acbe0dd4869d25ad867003224 100644
--- a/interface/web/sites/form/web_folder.tform.php
+++ b/interface/web/sites/form/web_folder.tform.php
@@ -74,9 +74,9 @@ $form["tabs"]['folder'] = array (
 			'formtype'	=> 'SELECT',
 			'default'	=> '',
 			'datasource'	=> array ( 	'type'	=> 'SQL',
-										'querystring' => "SELECT domain_id,domain FROM web_domain WHERE (type = 'vhost' OR type = 'vhostsubdomain') AND {AUTHSQL} ORDER BY domain",
+										'querystring' => "SELECT web_domain.domain_id, CONCAT(web_domain.domain, ' :: ', server.server_name) AS parent_domain FROM web_domain, server WHERE (web_domain.type = 'vhost' OR web_domain.type = 'vhostsubdomain') AND web_domain.server_id = server.server_id AND {AUTHSQL::web_domain} ORDER BY web_domain.domain",
 										'keyfield'=> 'domain_id',
-										'valuefield'=> 'domain'
+										'valuefield'=> 'parent_domain'
 									 ),
 			'value'		=> ''
 		),
diff --git a/interface/web/sites/form/web_folder_user.tform.php b/interface/web/sites/form/web_folder_user.tform.php
index 187bd54ff2fed0934161e84fbba6f7d323d7de00..1a034dfaa27ee2c32e43ed8171803b1368acc381 100644
--- a/interface/web/sites/form/web_folder_user.tform.php
+++ b/interface/web/sites/form/web_folder_user.tform.php
@@ -50,8 +50,6 @@ $form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update,
 $form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete
 $form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete
 
-$auth_sql = (isset($app->tform) ? $app->tform->getAuthSQL('r', 'web_domain') : '1');
-
 $form["tabs"]['user'] = array (
 	'title' 	=> "Folder",
 	'width' 	=> 100,
@@ -76,7 +74,7 @@ $form["tabs"]['user'] = array (
 			'formtype'	=> 'SELECT',
 			'default'	=> '',
 			'datasource'	=> array ( 	'type'	=> 'SQL',
-										'querystring' => "Select concat(web_domain.domain,' ',web_folder.path) as name, web_folder.web_folder_id from web_domain, web_folder WHERE web_domain.domain_id = web_folder.parent_domain_id AND ".$auth_sql." ORDER BY web_domain.domain",
+										'querystring' => "Select concat(web_domain.domain,' ',web_folder.path, ' :: ', server.server_name) as name, web_folder.web_folder_id from web_domain, web_folder, server WHERE web_domain.domain_id = web_folder.parent_domain_id AND web_domain.server_id = server.server_id AND {AUTHSQL::web_domain} ORDER BY web_domain.domain",
 										'keyfield'=> 'web_folder_id',
 										'valuefield'=> 'name'
 									 ),
diff --git a/interface/web/sites/form/web_subdomain.tform.php b/interface/web/sites/form/web_subdomain.tform.php
index 0205c56d40e6a60f9205d74de26bf54148016880..385945c8daf3abf89b0b4ae62ef6a90f0f2e292a 100644
--- a/interface/web/sites/form/web_subdomain.tform.php
+++ b/interface/web/sites/form/web_subdomain.tform.php
@@ -106,9 +106,9 @@ $form["tabs"]['domain'] = array (
 			'formtype'	=> 'SELECT',
 			'default'	=> '',
 			'datasource'	=> array ( 	'type'	=> 'SQL',
-										'querystring' => "SELECT domain_id,domain FROM web_domain WHERE type = 'vhost' AND {AUTHSQL} ORDER BY domain",
+										'querystring' => "SELECT web_domain.domain_id, CONCAT(web_domain.domain, ' :: ', server.server_name) AS parent_domain FROM web_domain, server WHERE web_domain.type = 'vhost' AND web_domain.server_id = server.server_id AND {AUTHSQL::web_domain} ORDER BY web_domain.domain",
 										'keyfield'=> 'domain_id',
-										'valuefield'=> 'domain'
+										'valuefield'=> 'parent_domain'
 									 ),
 			'value'		=> '',
 			'searchable' => 2
diff --git a/interface/web/sites/form/web_vhost_subdomain.tform.php b/interface/web/sites/form/web_vhost_subdomain.tform.php
index e71d5809f2eb5effe963f2e611b7defaa819abe7..7c123d0f69a9204b57cf330a8427519b50c074ce 100644
--- a/interface/web/sites/form/web_vhost_subdomain.tform.php
+++ b/interface/web/sites/form/web_vhost_subdomain.tform.php
@@ -143,9 +143,9 @@ $form["tabs"]['domain'] = array (
 			'formtype'	=> 'SELECT',
 			'default'	=> '',
 			'datasource'	=> array ( 	'type'	=> 'SQL',
-										'querystring' => "SELECT domain_id,domain FROM web_domain WHERE type = 'vhost' AND {AUTHSQL} ORDER BY domain",
+										'querystring' => "SELECT web_domain.domain_id, CONCAT(web_domain.domain, ' :: ', server.server_name) AS parent_domain FROM web_domain, server WHERE web_domain.type = 'vhost' AND web_domain.server_id = server.server_id AND {AUTHSQL::web_domain} ORDER BY web_domain.domain",
 										'keyfield'=> 'domain_id',
-										'valuefield'=> 'domain'
+										'valuefield'=> 'parent_domain'
 									 ),
 			'value'		=> ''
 		),
diff --git a/interface/web/sites/lib/lang/de.lng b/interface/web/sites/lib/lang/de.lng
index 544824a5a59da74dc09cf2f67c3a4f4b719f31e0..48e0a9a9a77432462558a73e0e1b1f5cf5be2c09 100644
--- a/interface/web/sites/lib/lang/de.lng
+++ b/interface/web/sites/lib/lang/de.lng
@@ -23,7 +23,7 @@ $wb['Webdav'] = 'WebDAV';
 $wb['FTP'] = 'FTP';
 $wb['Options'] = 'Optionen';
 $wb['Domain'] = 'Domain';
-$wb['Redirect'] = 'Weiterleitung';
+$wb['Redirect'] = 'Umleitung';
 $wb['SSL'] = 'SSL';
 $wb['Sites'] = 'Seiten';
 $wb['APS Installer'] = 'APS Installationsassistent';
diff --git a/interface/web/sites/lib/lang/de_cron.lng b/interface/web/sites/lib/lang/de_cron.lng
index 57d8ca3fc205c3ed6b60072a64eb248cfb1804d9..e9fed6846dd810ed1c5404c64e462b27e0381634 100644
--- a/interface/web/sites/lib/lang/de_cron.lng
+++ b/interface/web/sites/lib/lang/de_cron.lng
@@ -18,4 +18,5 @@ $wb['run_month_error_format'] = 'Das Format für Monate ist nicht korrekt.';
 $wb['run_wday_error_format'] = 'Das Format für Wochentage ist nicht korrekt.';
 $wb['command_error_format'] = 'Das Format für den Befehl ist nicht korrekt. Beachten Sie, dass bei einem URL Aufruf nur http und https erlaubt ist.';
 $wb['unknown_fieldtype_error'] = 'Es wurde ein unbekanntes Feld verwendet.';
+$wb['server_id_error_empty'] = 'Die Server-ID ist leer.';
 ?>
diff --git a/interface/web/sites/lib/lang/de_database.lng b/interface/web/sites/lib/lang/de_database.lng
index 2108673feda3aaa7ea64213a042b139e1f819811..0136d5a81a1a38e837ce0924981371d9182a8b00 100644
--- a/interface/web/sites/lib/lang/de_database.lng
+++ b/interface/web/sites/lib/lang/de_database.lng
@@ -1,33 +1,33 @@
 <?php
 $wb['server_id_txt'] = 'Server';
 $wb['type_txt'] = 'Typ';
-$wb['database_name_txt'] = 'Datenbankname';
-$wb['database_user_txt'] = 'Datenbankbenutzer';
-$wb['database_ro_user_txt'] = 'Nur Lesen Datenbankbenutzer';
+$wb['database_name_txt'] = 'Datenbank-Name';
+$wb['database_user_txt'] = 'Datenbank-Benutzer';
+$wb['database_ro_user_txt'] = 'Nur Lesen Datenbank-Benutzer';
 $wb['optional_txt'] = 'optional';
-$wb['database_password_txt'] = 'Datenbank Passwort';
-$wb['database_charset_txt'] = 'Datenbank Zeichensatz';
-$wb['select_dbuser_txt'] = 'Datenbankbenutzer auswählen';
+$wb['database_password_txt'] = 'Datenbank-Passwort';
+$wb['database_charset_txt'] = 'Datenbank-Zeichensatz';
+$wb['select_dbuser_txt'] = 'Datenbank-Benutzer auswählen';
 $wb['no_dbuser_txt'] = 'Keiner';
 $wb['remote_access_txt'] = 'Entfernter Zugriff';
 $wb['remote_ips_txt'] = 'Entfernter Zugriff IP Adressen (Mehrere mit Komma trennen, keine Angabe für <i>alle</i>)';
-$wb['database_remote_error_ips'] = 'Mindestens eine der angegebenen IP Adressen ist ungültig.';
+$wb['database_remote_error_ips'] = 'Mindestens eine der angegebenen IP-Adressen ist ungültig.';
 $wb['client_txt'] = 'Kunde';
 $wb['active_txt'] = 'Aktiv';
-$wb['database_client_differs_txt'] = 'Der Kunde dieser Datenbank passt nicht zum Kunden des Datenbankbenutzers.';
-$wb['database_name_error_empty'] = 'Datenbankname ist leer.';
-$wb['database_name_error_unique'] = 'Es existiert bereits eine Datenbank mit diesem Namen am Server. Um einen eindeutigen Namen zu erhalten können sie z.B. den Domainnamen vor dem Datenbanknamen verwenden.';
-$wb['database_name_error_regex'] = 'Ungültiger Datenbankname. Der Datenbank Name darf die Zeichen: a-z, A-Z, 0-9 und den Unterstrich beinhalten. Länge: 2 - 64 Zeichen.';
-$wb['database_user_error_empty'] = 'Datenbankbenutzer ist leer.';
+$wb['database_client_differs_txt'] = 'Der Kunde dieser Datenbank passt nicht zum Kunden des Datenbank-Benutzers.';
+$wb['database_name_error_empty'] = 'Datenbank-Name ist leer.';
+$wb['database_name_error_unique'] = 'Es existiert bereits eine Datenbank mit diesem Namen am Server. Um einen eindeutigen Namen zu erhalten können sie z.B. den Domainnamen vor dem Datenbank-Namen verwenden.';
+$wb['database_name_error_regex'] = 'Ungültiger Datenbank-Name. Der Datenbank-Name darf die Zeichen: a-z, A-Z, 0-9 und den Unterstrich beinhalten. Länge: 2 - 64 Zeichen.';
+$wb['database_user_error_empty'] = 'Datenbank-Benutzer ist leer.';
 $wb['database_user_error_unique'] = 'Es existiert bereits ein Benutzer mit diesem Namen am Server. Um einen eindeutigen Namen zu erhalten können sie z.B. den Domainnamen vor dem Benutzernamen verwenden.';
 $wb['database_user_error_regex'] = 'Ungültiger Benutzername. Der Benutzername darf die Zeichen: a-z, A-Z, 0-9 und den Unterstrich beinhalten. Länge: 2 - 64 Zeichen.';
 $wb['limit_database_txt'] = 'Die max. Anzahl an Datenbanken wurde erreicht.';
-$wb['database_name_change_txt'] = 'Der Datenbankname kann nicht geändert werden.';
-$wb['database_user_missing_txt'] = 'Bitte wählen Sie einen Datenbankbennutzer für die Datenbank aus.';
+$wb['database_name_change_txt'] = 'Der Datenbank-Name kann nicht geändert werden.';
+$wb['database_user_missing_txt'] = 'Bitte wählen Sie einen Datenbank-Bennutzer für die Datenbank aus.';
 $wb['database_charset_change_txt'] = 'Der Zeichensatz der Datenbank kann nicht geändert werden.';
 $wb['password_strength_txt'] = 'Passwortkomplexität';
-$wb['database_name_error_len'] = 'Datenbankname - {db} - zu lang. Die max. Datenbanknamen Länge inkl. Präfix ist 64 Zeichen.';
-$wb['database_user_error_len'] = 'Datenbankbenutzername - {user} - zu lang. Die max. Datenbankbenutzernamen Länge inkl. Präfix ist 16 Zeichen.';
+$wb['database_name_error_len'] = 'Datenbank-Name - {db} - zu lang. Die max. Datenbank-Namen-Länge inkl. Präfix ist 64 Zeichen.';
+$wb['database_user_error_len'] = 'Datenbank-Benutzername - {user} - zu lang. Die max. Datenbank-Benutzernamen-Länge inkl. Präfix ist 16 Zeichen.';
 $wb['generate_password_txt'] = 'Passwort erzeugen';
 $wb['repeat_password_txt'] = 'Passwort wiederholen';
 $wb['password_mismatch_txt'] = 'Die Passwörter stimmen nicht überein.';
diff --git a/interface/web/sites/lib/lang/de_database_admin_list.lng b/interface/web/sites/lib/lang/de_database_admin_list.lng
index b479d06cff0a238531eb4f884719391316dc6b06..d15d2583c13c136e832d1ae4d263c2312ccba04e 100644
--- a/interface/web/sites/lib/lang/de_database_admin_list.lng
+++ b/interface/web/sites/lib/lang/de_database_admin_list.lng
@@ -1,10 +1,10 @@
 <?php
 $wb['list_head_txt'] = 'Datenbank';
 $wb['active_txt'] = 'Aktiv';
-$wb['remote_access_txt'] = 'Entfernter Zugriff';
+$wb['remote_access_txt'] = 'Remotezugriff';
 $wb['server_id_txt'] = 'Server';
-$wb['database_user_txt'] = 'Datenbank Benutzer';
-$wb['database_name_txt'] = 'Datenbank Name';
+$wb['database_user_txt'] = 'Datenbank-Benutzer';
+$wb['database_name_txt'] = 'Datenbank-Name';
 $wb['add_new_record_txt'] = 'Neue Datenbank hinzufügen';
 $wb['sys_groupid_txt'] = 'Kunde';
 $wb['parent_domain_id_txt'] = 'Domain';
diff --git a/interface/web/sites/lib/lang/de_database_list.lng b/interface/web/sites/lib/lang/de_database_list.lng
index 7cfe03547d578d2ceea3eb5fa91f5a8f9a165777..75acd08dda5a65a640c4f45dafd504786cffa099 100644
--- a/interface/web/sites/lib/lang/de_database_list.lng
+++ b/interface/web/sites/lib/lang/de_database_list.lng
@@ -4,8 +4,8 @@ $wb['active_txt'] = 'Aktiv';
 $wb['remote_access_txt'] = 'Remotezugriff';
 $wb['type_txt'] = 'Typ';
 $wb['server_id_txt'] = 'Server';
-$wb['database_name_txt'] = 'Datenbank Name';
+$wb['database_name_txt'] = 'Datenbank-Name';
 $wb['add_new_record_txt'] = 'Neue Datenbank hinzufügen';
-$wb['database_user_txt'] = 'Datenbank Benutzer';
+$wb['database_user_txt'] = 'Datenbank-Benutzer';
 $wb['parent_domain_id_txt'] = 'Domain';
 ?>
diff --git a/interface/web/sites/lib/lang/de_database_user.lng b/interface/web/sites/lib/lang/de_database_user.lng
index ab4601720d797f720fe0eb5c8c5f7a67aaadf2f1..dc175f1a40405eb70c9ecf229c60ff1f8fc2b484 100644
--- a/interface/web/sites/lib/lang/de_database_user.lng
+++ b/interface/web/sites/lib/lang/de_database_user.lng
@@ -1,13 +1,13 @@
 <?php
-$wb['database_user_txt'] = 'Datenbank Benutzer';
-$wb['database_password_txt'] = 'Datenbank Passwort';
+$wb['database_user_txt'] = 'Datenbank-Benutzer';
+$wb['database_password_txt'] = 'Datenbank-Passwort';
 $wb['client_txt'] = 'Kunde';
 $wb['active_txt'] = 'Aktiv';
-$wb['database_user_error_empty'] = 'Datenbank Benutzer ist leer.';
+$wb['database_user_error_empty'] = 'Datenbank-Benutzer ist leer.';
 $wb['database_user_error_unique'] = 'Es existiert bereits ein Benutzer mit diesem Namen am Server. Um einen eindeutigen Namen zu erhalten können sie z.B. den Domainnamen vor dem Benutzernamen verwenden.';
 $wb['database_user_error_regex'] = 'Ungültiger Benutzername. Der Benutzername darf die Zeichen: a-z, A-Z, 0-9 und den Unterstrich beinhalten. Länge: 2 - 64 Zeichen.';
 $wb['password_strength_txt'] = 'Passwortkomplexität';
-$wb['database_user_error_len'] = 'Datenbank Benutzername - {user} - zu lang. Die max. Datenbank Benutzernamen Länge inkl. Präfix ist 16 Zeichen.';
+$wb['database_user_error_len'] = 'Datenbank-Benutzername - {user} - zu lang. Die max. Datenbank-Benutzernamen-Länge inkl. Präfix ist 16 Zeichen.';
 $wb['generate_password_txt'] = 'Passwort erzeugen';
 $wb['repeat_password_txt'] = 'Passwort wiederholen';
 $wb['password_mismatch_txt'] = 'Die Passwörter stimmen nicht überein.';
diff --git a/interface/web/sites/lib/lang/de_database_user_admin_list.lng b/interface/web/sites/lib/lang/de_database_user_admin_list.lng
index 82c09fcf138e7fc6bd71350fa3a194889f36960d..134551d77b345d8b99fb4519ff870a9b132f3f3c 100644
--- a/interface/web/sites/lib/lang/de_database_user_admin_list.lng
+++ b/interface/web/sites/lib/lang/de_database_user_admin_list.lng
@@ -1,6 +1,6 @@
 <?php
-$wb['list_head_txt'] = 'Datenbank Benutzer';
+$wb['list_head_txt'] = 'Datenbank-Benutzer';
 $wb['add_new_record_txt'] = 'Neuen Benutzer hinzufügen';
-$wb['database_user_txt'] = 'Datenbank Benutzer';
+$wb['database_user_txt'] = 'Datenbank-Benutzer';
 $wb['sys_groupid_txt'] = 'Kunde';
 ?>
diff --git a/interface/web/sites/lib/lang/de_database_user_list.lng b/interface/web/sites/lib/lang/de_database_user_list.lng
index 7ee8222dcb17df2eab716dbe7c6b8b06a48d578f..a2fef7c7b697e65e2994c0cd31209fca90adcca0 100644
--- a/interface/web/sites/lib/lang/de_database_user_list.lng
+++ b/interface/web/sites/lib/lang/de_database_user_list.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['list_head_txt'] = 'Datenbank Benutzer';
+$wb['list_head_txt'] = 'Datenbank-Benutzer';
 $wb['add_new_record_txt'] = 'Neuen Benutzer hinzufügen';
-$wb['database_user_txt'] = 'Datenbank Benutzer';
+$wb['database_user_txt'] = 'Datenbank-Benutzer';
 ?>
diff --git a/interface/web/sites/lib/lang/de_ftp_user.lng b/interface/web/sites/lib/lang/de_ftp_user.lng
index 2a3a98b21f904b1c8785eeaec144bf54bd94975e..829b8ff9d18920910b3510ad3907b001843d3973 100644
--- a/interface/web/sites/lib/lang/de_ftp_user.lng
+++ b/interface/web/sites/lib/lang/de_ftp_user.lng
@@ -12,13 +12,13 @@ $wb['server_id_txt'] = 'Server';
 $wb['parent_domain_id_txt'] = 'Domain';
 $wb['username_txt'] = 'Benutzername';
 $wb['password_txt'] = 'Passwort';
-$wb['quota_size_txt'] = 'Speicherplatz Beschränkung';
+$wb['quota_size_txt'] = 'Speicherplatz-Beschränkung';
 $wb['active_txt'] = 'Aktiv';
 $wb['limit_ftp_user_txt'] = 'Die max. Anzahl an FTP Benutzern für Ihr Konto wurde erreicht.';
 $wb['username_error_empty'] = 'Benutzername ist leer.';
 $wb['username_error_unique'] = 'Der Benutzername muss einzigartig sein.';
 $wb['username_error_regex'] = 'Der Benutzername enthält nicht erlaubte Zeichen.';
-$wb['quota_size_error_empty'] = 'Speicherplatz Beschränkung ist leer.';
+$wb['quota_size_error_empty'] = 'Speicherplatz-Beschränkung ist leer.';
 $wb['uid_error_empty'] = 'GID ist leer.';
 $wb['directory_error_empty'] = 'Verzeichnis ist leer.';
 $wb['password_strength_txt'] = 'Passwortkomplexität';
diff --git a/interface/web/sites/lib/lang/de_shell_user.lng b/interface/web/sites/lib/lang/de_shell_user.lng
index 4f04562f7469ec49908b0fd04a3481fba36b370d..33d71a5eb4460463c0240c42ab846722aa84b441 100644
--- a/interface/web/sites/lib/lang/de_shell_user.lng
+++ b/interface/web/sites/lib/lang/de_shell_user.lng
@@ -6,20 +6,20 @@ $wb['parent_domain_id_txt'] = 'Webseite';
 $wb['username_txt'] = 'Benutzername';
 $wb['password_txt'] = 'Passwort';
 $wb['chroot_txt'] = 'Chroot Shell';
-$wb['quota_size_txt'] = 'Beschränkung';
+$wb['quota_size_txt'] = 'Quota';
 $wb['active_txt'] = 'Aktiv';
 $wb['username_error_empty'] = 'Benutzername ist leer.';
 $wb['username_error_unique'] = 'Der Benutzername muss eindeutig sein.';
 $wb['username_error_regex'] = 'Der Benutzername enthält ungültige Zeichen.';
-$wb['quota_size_error_empty'] = 'Beschränkung ist leer';
+$wb['quota_size_error_empty'] = 'Quota ist leer';
 $wb['uid_error_empty'] = 'GID ist leer.';
 $wb['directory_error_empty'] = 'Verzeichnis ist leer.';
-$wb['limit_shell_user_txt'] = 'Die max. Anzahl an Shell Benutzer wurde erreicht.';
+$wb['limit_shell_user_txt'] = 'Die maximale Anzahl an Shell Benutzer wurde erreicht.';
 $wb['password_strength_txt'] = 'Passwortkomplexität';
 $wb['parent_domain_id_error_empty'] = 'Keine Webseite ausgewählt.';
 $wb['puser_txt'] = 'Web Benutzername';
 $wb['pgroup_txt'] = 'Web Gruppe';
-$wb['ssh_rsa_txt'] = 'SSH RSA öffentlicher Schlüssel (Für Schlüssel basierte Logins)';
+$wb['ssh_rsa_txt'] = 'SSH RSA Public Key (für key-basierte Logins)';
 $wb['dir_dot_error'] = 'Kein .. im Pfad erlaubt.';
 $wb['dir_slashdot_error'] = 'Kein ./ im Pfad erlaubt.';
 $wb['generate_password_txt'] = 'Passwort erzeugen';
diff --git a/interface/web/sites/lib/lang/de_user_quota_stats_list.lng b/interface/web/sites/lib/lang/de_user_quota_stats_list.lng
index 679e16ad7b9cda358dbff2ace9001ce2c576a734..acede01d2680c3a132b458458576761cc1824b3c 100644
--- a/interface/web/sites/lib/lang/de_user_quota_stats_list.lng
+++ b/interface/web/sites/lib/lang/de_user_quota_stats_list.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['list_head_txt'] = 'Webseiten Speicherplatz';
-$wb['domain_txt'] = 'Domain';
-$wb['system_user_txt'] = 'System Benutzer';
+$wb['list_head_txt'] = 'Webseiten-Festplattenbeschränkung';
+$wb['domain_txt'] = 'Domain / Webseite';
+$wb['system_user_txt'] = 'Linux-Benutzer';
 $wb['used_txt'] = 'Verwendeter Speicherplatz';
 $wb['hard_txt'] = 'Hard Limit';
 $wb['soft_txt'] = 'Soft Limit';
diff --git a/interface/web/sites/lib/lang/de_web_aliasdomain.lng b/interface/web/sites/lib/lang/de_web_aliasdomain.lng
index 5f0fb3a19e070e8d39d7e2063e20731bb8c98147..5889b17d5745a6082ee2ea40693551600c938941 100644
--- a/interface/web/sites/lib/lang/de_web_aliasdomain.lng
+++ b/interface/web/sites/lib/lang/de_web_aliasdomain.lng
@@ -1,18 +1,18 @@
 <?php
 $wb['domain_txt'] = 'Aliasdomain';
-$wb['backup_interval_txt'] = 'Backup Intervall';
+$wb['backup_interval_txt'] = 'Backup-Intervall';
 $wb['backup_copies_txt'] = 'Anzahl der Backups';
 $wb['ssl_state_txt'] = 'Bundesland';
 $wb['ssl_locality_txt'] = 'Ort';
 $wb['ssl_organisation_txt'] = 'Firma';
 $wb['ssl_organisation_unit_txt'] = 'Abteilung';
 $wb['ssl_country_txt'] = 'Land';
-$wb['ssl_key_txt'] = 'SSL Schlüssel';
-$wb['ssl_request_txt'] = 'SSL Anfrage';
-$wb['ssl_cert_txt'] = 'SSL Zertifikat';
-$wb['ssl_bundle_txt'] = 'SSL Bundle';
-$wb['ssl_action_txt'] = 'SSL Aktion';
-$wb['ssl_domain_txt'] = 'SSL Domain';
+$wb['ssl_key_txt'] = 'SSL-Schlüssel';
+$wb['ssl_request_txt'] = 'SSL-Anfrage';
+$wb['ssl_cert_txt'] = 'SSL-Zertifikat';
+$wb['ssl_bundle_txt'] = 'SSL-Bundle';
+$wb['ssl_action_txt'] = 'SSL-Aktion';
+$wb['ssl_domain_txt'] = 'SSL-Domain';
 $wb['server_id_txt'] = 'Server';
 $wb['web_folder_error_regex'] = 'Ungültige Ordnerangabe. Bitte geben Sie keinen Schrägstrich ein.';
 $wb['type_txt'] = 'Typ';
@@ -21,13 +21,13 @@ $wb['redirect_type_txt'] = 'Weiterleitungstyp';
 $wb['redirect_path_txt'] = 'Weiterleitungsziel';
 $wb['active_txt'] = 'Aktiv';
 $wb['document_root_txt'] = 'Documentroot';
-$wb['system_user_txt'] = 'System Benutzer';
-$wb['system_group_txt'] = 'System Gruppe';
-$wb['ip_address_txt'] = 'IPv4 Adresse';
-$wb['ipv6_address_txt'] = 'IPv6 Adresse';
-$wb['vhost_type_txt'] = 'vHost Typ';
-$wb['hd_quota_txt'] = 'Speicherplatz Beschränkung';
-$wb['traffic_quota_txt'] = 'Datentransfer Beschränkung';
+$wb['system_user_txt'] = 'System-Benutzer';
+$wb['system_group_txt'] = 'System-Gruppe';
+$wb['ip_address_txt'] = 'IPv4-Adresse';
+$wb['ipv6_address_txt'] = 'IPv6-Adresse';
+$wb['vhost_type_txt'] = 'vHost-Typ';
+$wb['hd_quota_txt'] = 'Speicherplatz-Beschränkung';
+$wb['traffic_quota_txt'] = 'Datentransfer-Beschränkung';
 $wb['cgi_txt'] = 'CGI';
 $wb['ssi_txt'] = 'SSI';
 $wb['errordocs_txt'] = 'Eigene Fehlerseiten';
@@ -39,44 +39,44 @@ $wb['client_txt'] = 'Kunde';
 $wb['limit_web_domain_txt'] = 'Die max. Anzahl an Webdomains für Ihr Konto ist erreicht.';
 $wb['limit_web_aliasdomain_txt'] = 'Die max. Anzahl an Aliasdomains für Ihr Konto ist erreicht.';
 $wb['limit_web_subdomain_txt'] = 'Die max. Anzahl an Web Subdomains für Ihr Konto ist erreicht.';
-$wb['apache_directives_txt'] = 'Apache Direktiven';
+$wb['apache_directives_txt'] = 'Apache-Direktiven';
 $wb['domain_error_empty'] = 'Domain ist leer.';
-$wb['domain_error_unique'] = 'Es existiert bereits eine Webseite oder Sub- Aliasdomain mit diesem Domain Namen.';
-$wb['domain_error_regex'] = 'Domain Name ungültig.';
+$wb['domain_error_unique'] = 'Es existiert bereits eine Webseite oder Sub- Aliasdomain mit diesem Domain-Namen.';
+$wb['domain_error_regex'] = 'Domain-Name ungültig.';
 $wb['domain_error_autosub'] = 'Es existiert bereits eine Subdomain mit diesen Einstellungen.';
-$wb['hd_quota_error_empty'] = 'Speicherplatz Beschränkung ist 0 oder leer.';
-$wb['traffic_quota_error_empty'] = 'Datentransfer Beschränkung ist leer.';
-$wb['error_ssl_state_empty'] = 'SSL Bundesland ist leet.';
-$wb['error_ssl_locality_empty'] = 'SSL Ort ist leer.';
-$wb['error_ssl_organisation_empty'] = 'SSL Firma ist leer.';
-$wb['error_ssl_organisation_unit_empty'] = 'SSL Abteilung ist leer.';
-$wb['error_ssl_country_empty'] = 'SSL Land ist leer.';
-$wb['error_ssl_cert_empty'] = 'SSL Zertifikat Feld ist leer.';
+$wb['hd_quota_error_empty'] = 'Speicherplatz-Beschränkung ist 0 oder leer.';
+$wb['traffic_quota_error_empty'] = 'Datentransfer-Beschränkung ist leer.';
+$wb['error_ssl_state_empty'] = 'SSL-Bundesland ist leer.';
+$wb['error_ssl_locality_empty'] = 'SSL-Ort ist leer.';
+$wb['error_ssl_organisation_empty'] = 'SSL-Firma ist leer.';
+$wb['error_ssl_organisation_unit_empty'] = 'SSL-Abteilung ist leer.';
+$wb['error_ssl_country_empty'] = 'SSL-Land ist leer.';
+$wb['error_ssl_cert_empty'] = 'SSL-Zertifikat-Feld ist leer.';
 $wb['client_group_id_txt'] = 'Kunde';
-$wb['stats_password_txt'] = 'Webstatistiken Passwort';
+$wb['stats_password_txt'] = 'Webstatistiken-Passwort';
 $wb['allow_override_txt'] = 'Apache AllowOverride';
 $wb['limit_web_quota_free_txt'] = 'Max. verfügbarer Speicherplatz';
-$wb['ssl_state_error_regex'] = 'Ungültiges SSL Bundesland. Mögliche Zeichen sind: a-z, 0-9 and .,-_';
-$wb['ssl_locality_error_regex'] = 'Ungültiger SSL Ort. Mögliche Zeichen sind: a-z, 0-9 and .,-_';
-$wb['ssl_organisation_error_regex'] = 'Ungültige SSL Firma. Mögliche Zeichen sind: a-z, 0-9 and .,-_';
-$wb['ssl_organistaion_unit_error_regex'] = 'Ungültige SSL Abteilung. Mögliche Zeichen sind: a-z, 0-9 and .,-_';
-$wb['ssl_country_error_regex'] = 'Ungültiges SSL Land. Mögliche Zeichen sind: A-Z';
+$wb['ssl_state_error_regex'] = 'Ungültiges SSL-Bundesland. Mögliche Zeichen sind: a-z, 0-9 and .,-_';
+$wb['ssl_locality_error_regex'] = 'Ungültiger SSL-Ort. Mögliche Zeichen sind: a-z, 0-9 and .,-_';
+$wb['ssl_organisation_error_regex'] = 'Ungültige SSL-Firma. Mögliche Zeichen sind: a-z, 0-9 and .,-_';
+$wb['ssl_organistaion_unit_error_regex'] = 'Ungültige SSL-Abteilung. Mögliche Zeichen sind: a-z, 0-9 and .,-_';
+$wb['ssl_country_error_regex'] = 'Ungültiges SSL-Land. Mögliche Zeichen sind: A-Z';
 $wb['limit_traffic_quota_free_txt'] = 'Max. verfügbarer Datentransfer';
 $wb['redirect_error_regex'] = 'Ungültiges Weiterleitungsziel. Gültige Weiterleitungsziele sind zum Beispiel: /test/ oder http://www.domain.tld/test/';
 $wb['php_open_basedir_txt'] = 'PHP open_basedir';
 $wb['traffic_quota_exceeded_txt'] = 'Datentransfervolumen überschritten';
 $wb['ruby_txt'] = 'Ruby';
-$wb['stats_user_txt'] = 'Webstatistiken Benutzername';
-$wb['stats_type_txt'] = 'Webstatistiken Programm';
-$wb['custom_php_ini_txt'] = 'Benutzerdefinierte php.ini Einstellungen';
-$wb['none_txt'] = 'Keine Subdomain';
+$wb['stats_user_txt'] = 'Webstatistiken-Benutzername';
+$wb['stats_type_txt'] = 'Webstatistiken-Programm';
+$wb['custom_php_ini_txt'] = 'Benutzerdefinierte php.ini-Einstellungen';
+$wb['none_txt'] = 'Keine';
 $wb['disabled_txt'] = 'Deaktiviert';
 $wb['no_redirect_txt'] = 'Keine Weiterleitung';
-$wb['no_flag_txt'] = 'Keine Option';
+$wb['no_flag_txt'] = 'Kein Flag';
 $wb['save_certificate_txt'] = 'Zertifikat speichern';
 $wb['create_certificate_txt'] = 'Zertifikat erstellen';
 $wb['delete_certificate_txt'] = 'Zertifikat löschen';
-$wb['nginx_directives_txt'] = 'nginx Direktiven';
+$wb['nginx_directives_txt'] = 'nginx-Direktiven';
 $wb['seo_redirect_txt'] = 'SEO Weiterleitung';
 $wb['non_www_to_www_txt'] = 'Non-www -> www';
 $wb['www_to_non_www_txt'] = 'www -> non-www';
@@ -93,23 +93,23 @@ $wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children muss ein positiver
 $wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers muss ein positiver integer Wert sein.';
 $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers muss ein positiver integer Wert sein.';
 $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers muss ein positiver integer Wert sein.';
-$wb['hd_quota_error_regex'] = 'Speicherplatz Beschränkung ist ungültig.';
-$wb['traffic_quota_error_regex'] = 'Datentransfer Beschränkung ist ungültig.';
-$wb['fastcgi_php_version_txt'] = 'PHP Version';
+$wb['hd_quota_error_regex'] = 'Speicherplatz-Beschränkung ist ungültig.';
+$wb['traffic_quota_error_regex'] = 'Datentransfer-Beschränkung ist ungültig.';
+$wb['fastcgi_php_version_txt'] = 'PHP-Version';
 $wb['pm_txt'] = 'PHP-FPM Prozess Manager';
 $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
 $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
-$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout muss eine positiver integer Wert sein.';
-$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests muss ein integer Wert >= 0 sein.';
-$wb['pm_ondemand_hint_txt'] = 'Bitte beachte Sie, dass Sie mindesten PHP Version >= 5.3.9 verwenden um den Ondemand Prozess Manager zu verwenden. Wenn Sie Ondemand für eine ältere PHP Version aktivieren wird PHP nicht mehr funktionieren!';
+$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout muss ein positiver Integer-Wert sein.';
+$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests muss ein Integer-Wert >= 0 sein.';
+$wb['pm_ondemand_hint_txt'] = 'Bitte beachten Sie, dass Sie mindestens PHP Version >= 5.3.9 verwenden um den Ondemand Prozess Manager zu verwenden. Wenn Sie Ondemand für eine ältere PHP Version aktivieren wird PHP nicht mehr funktionieren!';
 $wb['generate_password_txt'] = 'Passwort generieren';
 $wb['repeat_password_txt'] = 'Passwort wiederholen';
 $wb['password_mismatch_txt'] = 'Die Passwörter stimmer nicht überein.';
 $wb['password_match_txt'] = 'Die Passwörter stimmer überein.';
-$wb['available_php_directive_snippets_txt'] = 'Verfügbare PHP Direktiven Schnipsel:';
-$wb['available_apache_directive_snippets_txt'] = 'Verfügbare Apache Direktiven Schnipsel:';
-$wb['available_nginx_directive_snippets_txt'] = 'Verfügbare nginx Direktiven Schnipsel:';
-$wb['proxy_directives_txt'] = 'Proxy Direktiven';
-$wb['available_proxy_directive_snippets_txt'] = 'Verfügbare Proxy Direktiven Schnipsel:';
+$wb['available_php_directive_snippets_txt'] = 'Verfügbare PHP-Direktiven-Schnipsel:';
+$wb['available_apache_directive_snippets_txt'] = 'Verfügbare Apache-Direktiven-Schnipsel:';
+$wb['available_nginx_directive_snippets_txt'] = 'Verfügbare nginx-Direktiven-Schnipsel:';
+$wb['proxy_directives_txt'] = 'Proxy-Direktiven';
+$wb['available_proxy_directive_snippets_txt'] = 'Verfügbare Proxy-Direktiven-Schnipsel:';
 $wb['Domain'] = 'Aliasdomain';
 ?>
diff --git a/interface/web/sites/lib/lang/de_web_aliasdomain_list.lng b/interface/web/sites/lib/lang/de_web_aliasdomain_list.lng
index 9e27e3cef9057955f71e0c3a8627e721d056ef1c..2f47883c1ca13fd8a094d2fc0cee98e2c78f2b98 100644
--- a/interface/web/sites/lib/lang/de_web_aliasdomain_list.lng
+++ b/interface/web/sites/lib/lang/de_web_aliasdomain_list.lng
@@ -6,7 +6,7 @@ $wb['parent_domain_id_txt'] = 'Domain';
 $wb['domain_txt'] = 'Aliasdomain';
 $wb['add_new_record_txt'] = 'Neue Aliasdomain hinzufügen';
 $wb['domain_error_empty'] = 'Domain ist leer.';
-$wb['domain_error_unique'] = 'Domain ist schon als Webdomain in Verwendung.';
+$wb['domain_error_unique'] = 'Domain muss eindeutig sein.';
 $wb['domain_error_regex'] = 'Domain Name ist ungültig.';
 $wb['no_redirect_txt'] = 'Keine Weiterleitung';
 $wb['no_flag_txt'] = 'Keine Optionen';
diff --git a/interface/web/sites/lib/lang/de_web_backup_list.lng b/interface/web/sites/lib/lang/de_web_backup_list.lng
index 5d39ebec65125c2eaf6f5fd5ea7e374dccc85975..316743aea54a81cf83796ca100f92207ba6d8ffa 100644
--- a/interface/web/sites/lib/lang/de_web_backup_list.lng
+++ b/interface/web/sites/lib/lang/de_web_backup_list.lng
@@ -2,15 +2,15 @@
 $wb['list_head_txt'] = 'Bestehende Backups';
 $wb['date_txt'] = 'Datum';
 $wb['backup_type_txt'] = 'Typ';
-$wb['filename_txt'] = 'Backup Datei';
+$wb['filename_txt'] = 'Backup-Datei';
 $wb['restore_backup_txt'] = 'Backup wiederherstellen';
 $wb['download_backup_txt'] = 'Backup herunterladen';
-$wb['download_info_txt'] = 'Die Backup Datei steht in ein paar Minuten als Download im Backup Verzeichnis zur Verfügung.';
+$wb['download_info_txt'] = 'Die Backup-Datei steht in ein paar Minuten als Download im Backup-Verzeichnis zur Verfügung.';
 $wb['restore_info_txt'] = 'Die Wiederherstellung des Backups hat begonnen. Diese Aktion kann bis zur Fertigstellung einige Minuten dauern.';
 $wb['restore_confirm_txt'] = 'Die Wiederherstellung wird existierende Dateien in Ihrer Website überschreiben. Möchten Sie dieses Backup wirklich wiederherstellen?';
-$wb['download_pending_txt'] = 'Es liegt bereits ein Backup Download Job an.';
-$wb['restore_pending_txt'] = 'Es liegt bereits ein Backup Wiederherstellungs Job an.';
 $wb['backup_type_mongodb'] = 'MongoDB Datenbank';
-$wb['backup_type_mysql'] = 'MySQL Datenbank';
-$wb['backup_type_web'] = 'Webseiten Dateien';
+$wb['download_pending_txt'] = 'Es liegt bereits ein Backup-Download-Job an.';
+$wb['restore_pending_txt'] = 'Es liegt bereits ein Backup-Wiederherstellungs-Job an.';
+$wb['backup_type_mysql'] = 'MySQL-Datenbank';
+$wb['backup_type_web'] = 'Webseiten-Dateien';
 ?>
diff --git a/interface/web/sites/lib/lang/de_web_domain.lng b/interface/web/sites/lib/lang/de_web_domain.lng
index 79fe72614dc3f0b535be5d635fb7542a89fb3314..d5e32d0b6abb23f868c6742b3fbf597884c86f77 100644
--- a/interface/web/sites/lib/lang/de_web_domain.lng
+++ b/interface/web/sites/lib/lang/de_web_domain.lng
@@ -4,65 +4,65 @@ $wb['ssl_locality_txt'] = 'Ort';
 $wb['ssl_organisation_txt'] = 'Firma';
 $wb['ssl_organisation_unit_txt'] = 'Abteilung';
 $wb['ssl_country_txt'] = 'Land';
-$wb['ssl_key_txt'] = 'SSL Schlüssel';
-$wb['ssl_request_txt'] = 'SSL Anfrage';
-$wb['ssl_cert_txt'] = 'SSL Zertifikat';
-$wb['ssl_bundle_txt'] = 'SSL Bundle';
-$wb['ssl_action_txt'] = 'SSL Aktion';
+$wb['ssl_key_txt'] = 'SSL-Key';
+$wb['ssl_request_txt'] = 'SSL-Request';
+$wb['ssl_cert_txt'] = 'SSL-Zertifikat';
+$wb['ssl_bundle_txt'] = 'SSL-Bundle';
+$wb['ssl_action_txt'] = 'SSL-Aktion';
 $wb['server_id_txt'] = 'Server';
 $wb['domain_txt'] = 'Domain';
 $wb['type_txt'] = 'Typ';
 $wb['parent_domain_id_txt'] = 'Zugehörige Webseite';
-$wb['web_folder_error_regex'] = 'Ungültige Ordnerangabe, bitte keinen / eingeben.';
+$wb['web_folder_error_regex'] = 'Ungültige Verzeichnisangabe, bitte keinen / eingeben.';
 $wb['redirect_type_txt'] = 'Weiterleitungstyp';
 $wb['redirect_path_txt'] = 'Weiterleitungspfad';
 $wb['active_txt'] = 'Aktiv';
 $wb['document_root_txt'] = 'Documentroot';
-$wb['system_user_txt'] = 'System Benutzer';
-$wb['system_group_txt'] = 'System Gruppe';
-$wb['ip_address_txt'] = 'IP Adresse';
-$wb['vhost_type_txt'] = 'vHost Type';
-$wb['hd_quota_txt'] = 'Speicherplatz Beschränkung';
-$wb['traffic_quota_txt'] = 'Datentransfer Beschränkung';
+$wb['system_user_txt'] = 'Linux-Benutzer';
+$wb['system_group_txt'] = 'Linux-Gruppe';
+$wb['ip_address_txt'] = 'IP-Adresse';
+$wb['vhost_type_txt'] = 'vHost-Typ';
+$wb['hd_quota_txt'] = 'Speicherplatzbeschränkung';
+$wb['traffic_quota_txt'] = 'Transfervolumenbeschränkung';
 $wb['cgi_txt'] = 'CGI';
 $wb['ssi_txt'] = 'SSI';
 $wb['ssl_txt'] = 'SSL';
 $wb['suexec_txt'] = 'SuEXEC';
 $wb['php_txt'] = 'PHP';
 $wb['client_txt'] = 'Kunde';
-$wb['limit_web_domain_txt'] = 'Die max. Anzahl an Webdomains für Ihr Konto wurde erreicht.';
-$wb['limit_web_aliasdomain_txt'] = 'Die max. Anzahl an Aliasdomains für Ihr Konto wurde erreicht.';
-$wb['limit_web_subdomain_txt'] = 'Die max. Anzahl an Subdomains für Ihr Konto wurde erreicht.';
+$wb['limit_web_domain_txt'] = 'Die maximale Anzahl an Webdomains für Ihr Konto wurde erreicht.';
+$wb['limit_web_aliasdomain_txt'] = 'Die maximale Anzahl an Aliasdomains für Ihr Konto wurde erreicht.';
+$wb['limit_web_subdomain_txt'] = 'Die maximale Anzahl an Subdomains für Ihr Konto wurde erreicht.';
 $wb['apache_directives_txt'] = 'Apache Direktiven';
 $wb['domain_error_empty'] = 'Domain ist leer.';
-$wb['domain_error_unique'] = 'Domain ist schon als Aliasdomain in Verwendung';
+$wb['domain_error_unique'] = 'Domain muss eindeutig sein';
 $wb['domain_error_regex'] = 'Domain Name ungültig.';
 $wb['domain_error_autosub'] = 'Es existiert bereits eine Subdomain mit diesen Einstellungen.';
-$wb['hd_quota_error_empty'] = 'Speicherplatz Beschränkung ist leer.';
-$wb['traffic_quota_error_empty'] = 'Datentransfer Beschränkung ist leer.';
+$wb['hd_quota_error_empty'] = 'Speicherplatzbeschränkung ist leer.';
+$wb['traffic_quota_error_empty'] = 'Transfervolumenbeschränkung ist leer.';
 $wb['errordocs_txt'] = 'Eigene Fehlerseiten';
-$wb['error_ssl_state_empty'] = 'SSL Bundesland ist leer.';
-$wb['error_ssl_locality_empty'] = 'SSL Ort ist leer.';
-$wb['error_ssl_organisation_empty'] = 'SSL Firma ist leer.';
-$wb['error_ssl_organisation_unit_empty'] = 'SSL Abteilung ist leer.';
-$wb['error_ssl_country_empty'] = 'SSL Land ist leer.';
+$wb['error_ssl_state_empty'] = 'Bundesland (SSL) ist leer.';
+$wb['error_ssl_locality_empty'] = 'Ort (SSL) ist leer.';
+$wb['error_ssl_organisation_empty'] = 'Organisation (SSL) ist leer.';
+$wb['error_ssl_organisation_unit_empty'] = 'Abteilung (SSL) ist leer.';
+$wb['error_ssl_country_empty'] = 'Land (SSL) ist leer.';
 $wb['subdomain_txt'] = 'Auto Subdomain';
 $wb['client_group_id_txt'] = 'Kunde';
 $wb['stats_password_txt'] = 'Webstatistik Passwort';
 $wb['ssl_domain_txt'] = 'SSL Domain';
 $wb['allow_override_txt'] = 'Allow Override';
-$wb['limit_web_quota_free_txt'] = 'Max. möglicher Speicherplatz';
-$wb['ssl_state_error_regex'] = 'Ungültiges SSL Bundesland. Gültige Zeichen sind: a-z, 0-9 und .,-_';
-$wb['ssl_locality_error_regex'] = 'Ungültiger SSL Ort. Gülige Zeichen sind: a-z, 0-9 und .,-_';
-$wb['ssl_organisation_error_regex'] = 'Ungültige SSL Firma. Gültige Zeichen sind: a-z, 0-9 und .,-_';
-$wb['ssl_organistaion_unit_error_regex'] = 'Ungültige SSL Abteilung. Gültige Zeichen sind: a-z, 0-9 und .,-_';
-$wb['ssl_country_error_regex'] = 'Ungültiges SSL Land. Gültige Zeichen sind: A-Z';
-$wb['limit_traffic_quota_free_txt'] = 'Max. möglicher Datentransfer';
+$wb['limit_web_quota_free_txt'] = 'Max. mögliche Speicherplatzbeschränkung';
+$wb['ssl_state_error_regex'] = 'Ungültiges SSL-Bundesland. Gültige Zeichen sind: a-z, 0-9 und .,-_&äöüÄÖÜ';
+$wb['ssl_locality_error_regex'] = 'Ungültiger SSL-Ort. Gülige Zeichen sind: a-z, 0-9 und .,-_&äöüÄÖÜ';
+$wb['ssl_organisation_error_regex'] = 'Ungültige SSL-Firma. Gültige Zeichen sind: a-z, 0-9 und .,-_&äöüÄÖÜ';
+$wb['ssl_organistaion_unit_error_regex'] = 'Ungültige SSL-Abteilung. Gültige Zeichen sind: a-z, 0-9 und .,-_&äöüÄÖÜ';
+$wb['ssl_country_error_regex'] = 'Ungültiges SSL-Land. Gültige Zeichen sind: A-Z';
+$wb['limit_traffic_quota_free_txt'] = 'Max. mögliche Transfervolumenbeschränkung';
 $wb['redirect_error_regex'] = 'Ungültiger Weiterleitungspfad. Gültige Angaben sind beispielsweise: /test/ oder http://www.domain.tld/test/';
 $wb['php_open_basedir_txt'] = 'PHP open_basedir';
 $wb['backup_interval_txt'] = 'Backup Intervall';
 $wb['backup_copies_txt'] = 'Anzahl an Backups';
-$wb['traffic_quota_exceeded_txt'] = 'Das Datentransfervolumen ist verbraucht.';
+$wb['traffic_quota_exceeded_txt'] = 'Transfervolumen verbraucht.';
 $wb['ruby_txt'] = 'Ruby';
 $wb['stats_user_txt'] = 'Webstatistik Benutzername';
 $wb['stats_type_txt'] = 'Webstatistik Programm';
@@ -70,13 +70,13 @@ $wb['custom_php_ini_txt'] = 'Individuelle php.ini Einstellungen';
 $wb['error_ssl_cert_empty'] = 'SSL Zertifikat Feld ist leer.';
 $wb['none_txt'] = 'Keine';
 $wb['disabled_txt'] = 'Deaktiviert';
-$wb['no_redirect_txt'] = 'Keine Weiterleitung';
-$wb['no_flag_txt'] = 'Keine Option';
+$wb['no_redirect_txt'] = 'Kein Redirect';
+$wb['no_flag_txt'] = 'Kein Flag';
 $wb['save_certificate_txt'] = 'Zertifikat speichern';
 $wb['create_certificate_txt'] = 'Zertifikat erstellen';
 $wb['delete_certificate_txt'] = 'Zertifikat löschen';
 $wb['nginx_directives_txt'] = 'nginx Direktiven';
-$wb['seo_redirect_txt'] = 'SEO Weiterleitung';
+$wb['seo_redirect_txt'] = 'SEO Redirect';
 $wb['non_www_to_www_txt'] = 'Nicht-www -> www';
 $wb['www_to_non_www_txt'] = 'www -> Nicht-www';
 $wb['php_fpm_use_socket_txt'] = 'Benutze Socket für PHP-FPM';
@@ -93,8 +93,8 @@ $wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children muß eine positive
 $wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers muß eine positive ganze Zahl sein.';
 $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers muß eine positive ganze Zahl sein.';
 $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers muß eine positive ganze Zahl sein.';
-$wb['hd_quota_error_regex'] = 'Speicherplatz Beschränkung ist ungültig.';
-$wb['traffic_quota_error_regex'] = 'Datentransfer Beschränkung ist ungültig.';
+$wb['hd_quota_error_regex'] = 'Speicherplatzbeschränkung ist ungültig.';
+$wb['traffic_quota_error_regex'] = 'Transfervolumenbeschränkung ist ungültig.';
 $wb['fastcgi_php_version_txt'] = 'PHP Version';
 $wb['pm_txt'] = 'PHP-FPM FastCGI Prozess Manager';
 $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
diff --git a/interface/web/sites/lib/lang/de_web_sites_stats_list.lng b/interface/web/sites/lib/lang/de_web_sites_stats_list.lng
index 611b8297d4385ebf129821069ba69c81421763bf..c834793ce116e091ef256d56ecbc29f7001cbc19 100644
--- a/interface/web/sites/lib/lang/de_web_sites_stats_list.lng
+++ b/interface/web/sites/lib/lang/de_web_sites_stats_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['list_head_txt'] = 'Webseiten Datentransfer';
+$wb['list_head_txt'] = 'Webseiten-Datentransfer';
 $wb['domain_txt'] = 'Domain';
 $wb['this_month_txt'] = 'Aktueller Monat';
-$wb['last_month_txt'] = 'Vergangenes Monat';
+$wb['last_month_txt'] = 'Vergangener Monat';
 $wb['this_year_txt'] = 'Aktuelles Jahr';
 $wb['last_year_txt'] = 'Vergangenes Jahr';
 $wb['sum_txt'] = 'Summe';
diff --git a/interface/web/sites/lib/lang/de_web_subdomain.lng b/interface/web/sites/lib/lang/de_web_subdomain.lng
index c74bf92a76846f9b5ba2850bd668d29b8e3e9991..5c23f08a4dd903f2fc82c0af408e3f045d15e229 100644
--- a/interface/web/sites/lib/lang/de_web_subdomain.lng
+++ b/interface/web/sites/lib/lang/de_web_subdomain.lng
@@ -16,12 +16,12 @@ $wb['redirect_type_txt'] = 'Weiterleitungstyp';
 $wb['redirect_path_txt'] = 'Weiterleitungsziel';
 $wb['active_txt'] = 'Aktiv';
 $wb['document_root_txt'] = 'Documentroot';
-$wb['system_user_txt'] = 'System Benutzer';
-$wb['system_group_txt'] = 'System Gruppe';
-$wb['ip_address_txt'] = 'IP Adresse';
-$wb['vhost_type_txt'] = 'vHost Typ';
-$wb['hd_quota_txt'] = 'Speicherplatz Begränzung';
-$wb['traffic_quota_txt'] = 'Datentransfer Beschränkung';
+$wb['system_user_txt'] = 'Linux-Benutzer';
+$wb['system_group_txt'] = 'Linux-Gruppe';
+$wb['ip_address_txt'] = 'IP-Adresse';
+$wb['vhost_type_txt'] = 'vHost-Typ';
+$wb['hd_quota_txt'] = 'Festplatten-Quota';
+$wb['traffic_quota_txt'] = 'Traffic-Quota';
 $wb['cgi_txt'] = 'CGI';
 $wb['ssi_txt'] = 'SSI';
 $wb['ssl_txt'] = 'SSL';
@@ -30,17 +30,17 @@ $wb['php_txt'] = 'PHP';
 $wb['client_txt'] = 'Kunde';
 $wb['limit_web_domain_txt'] = 'Die max. Anzahl an Webdomains für Ihr Konto wurde erreicht.';
 $wb['limit_web_aliasdomain_txt'] = 'Die max. Anzahl an Aliasdomains für Ihr Konto wurde erreicht.';
-$wb['limit_web_subdomain_txt'] = 'Die max. Anzahl an Web Subdomains für Ihr Konto wurde erreicht.';
-$wb['apache_directives_txt'] = 'Apache Direktiven';
+$wb['limit_web_subdomain_txt'] = 'Die max. Anzahl an Web-Subdomains für Ihr Konto wurde erreicht.';
+$wb['apache_directives_txt'] = 'Apache-Direktiven';
 $wb['domain_error_empty'] = 'Domain ist leer.';
-$wb['domain_error_unique'] = 'Domain ist schon in Verwendung.';
-$wb['domain_error_regex'] = 'Domain Name ist ungültig.';
+$wb['domain_error_unique'] = 'Domain muss eindeutig sein.';
+$wb['domain_error_regex'] = 'Domain-Name ist ungültig.';
 $wb['domain_error_wildcard'] = 'Wildcard Subdomains sind nicht erlaubt.';
 $wb['host_txt'] = 'Host';
-$wb['redirect_error_regex'] = 'Ungültiger redirect Pfad. Gültige Pfade sind beispielsweise: /test/ oder http://www.domain.tld/test/';
-$wb['no_redirect_txt'] = 'Keine Weiterleitung';
-$wb['no_flag_txt'] = 'Keine Option';
-$wb['proxy_directives_txt'] = 'Proxy Direktiven';
+$wb['redirect_error_regex'] = 'Ungültiger Redirect-Pfad. Gültige Pfade sind beispielsweise: /test/ oder http://www.domain.tld/test/';
+$wb['no_redirect_txt'] = 'Kein Redirect';
+$wb['no_flag_txt'] = 'Kein Flag';
+$wb['proxy_directives_txt'] = 'Proxy-Direktiven';
 $wb['available_proxy_directive_snippets_txt'] = 'Verfügbare Proxy Direktiven Schnipsel:';
 $wb['error_proxy_requires_url'] = 'Weiterleitungstyp \\"proxy\\" erfordert eine URL als Weiterleitungspfad.';
 ?>
diff --git a/interface/web/sites/lib/lang/de_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/de_web_vhost_subdomain.lng
index 9dc798f43543cd7cc78dba5ac3076249486fa5f4..311a68bec1da934b80e80f8a59798e47f023ec26 100644
--- a/interface/web/sites/lib/lang/de_web_vhost_subdomain.lng
+++ b/interface/web/sites/lib/lang/de_web_vhost_subdomain.lng
@@ -8,26 +8,26 @@ $wb['ssl_locality_txt'] = 'Ort';
 $wb['ssl_organisation_txt'] = 'Firma';
 $wb['ssl_organisation_unit_txt'] = 'Abteilung';
 $wb['ssl_country_txt'] = 'Land';
-$wb['ssl_key_txt'] = 'SSL Schlüssel';
-$wb['ssl_request_txt'] = 'SSL Anfrage';
-$wb['ssl_cert_txt'] = 'SSL Zertifikat';
-$wb['ssl_bundle_txt'] = 'SSL Bundle';
-$wb['ssl_action_txt'] = 'SSL Aktion';
+$wb['ssl_key_txt'] = 'SSL-Key';
+$wb['ssl_request_txt'] = 'SSL-Request';
+$wb['ssl_cert_txt'] = 'SSL-Zertifikat';
+$wb['ssl_bundle_txt'] = 'SSL-Bundle';
+$wb['ssl_action_txt'] = 'SSL-Aktion';
 $wb['server_id_txt'] = 'Server';
 $wb['domain_txt'] = 'Domain';
 $wb['host_txt'] = 'Host';
 $wb['type_txt'] = 'Typ';
 $wb['web_folder_error_regex'] = 'Ungültige Ordnerangabe, bitte keinen / eingeben.';
-$wb['redirect_type_txt'] = 'WeiterleitungsTyp';
-$wb['redirect_path_txt'] = 'Weiterleitungsziel';
+$wb['redirect_type_txt'] = 'Redirect-Typ';
+$wb['redirect_path_txt'] = 'Redirect-Pfad';
 $wb['active_txt'] = 'Aktiv';
 $wb['document_root_txt'] = 'Documentroot';
-$wb['system_user_txt'] = 'Linux Benutzer';
-$wb['system_group_txt'] = 'Linux Gruppe';
+$wb['system_user_txt'] = 'Linux-Benutzer';
+$wb['system_group_txt'] = 'Linux-Gruppe';
 $wb['ip_address_txt'] = 'IP Adresse';
-$wb['vhost_type_txt'] = 'vHost Type';
-$wb['hd_quota_txt'] = 'Speicherplatz Beschränkung';
-$wb['traffic_quota_txt'] = 'Datentransfer Beschränkung';
+$wb['vhost_type_txt'] = 'vHost-Typ';
+$wb['hd_quota_txt'] = 'Festplatten-Quota';
+$wb['traffic_quota_txt'] = 'Traffic-Quota';
 $wb['cgi_txt'] = 'CGI';
 $wb['ssi_txt'] = 'SSI';
 $wb['ssl_txt'] = 'SSL';
@@ -37,55 +37,55 @@ $wb['client_txt'] = 'Kunde';
 $wb['limit_web_domain_txt'] = 'Die max. Anzahl an Webdomains für Ihr Konto wurde erreicht.';
 $wb['limit_web_aliasdomain_txt'] = 'Die max. Anzahl an Aliasdomains für Ihr Konto wurde erreicht.';
 $wb['limit_web_subdomain_txt'] = 'Die max. Anzahl an Subdomains für Ihr Konto wurde erreicht.';
-$wb['apache_directives_txt'] = 'Apache Direktiven';
+$wb['apache_directives_txt'] = 'Apache-Direktiven';
 $wb['domain_error_empty'] = 'Domain ist leer.';
-$wb['domain_error_unique'] = 'Domain ist schon in Verwendung';
-$wb['domain_error_regex'] = 'Domain Name ungültig.';
-$wb['domain_error_wildcard'] = 'Wildcard Subdomains sind nicht erlaubt.';
-$wb['hd_quota_error_empty'] = 'Speicherplatz Beschränkung ist leer.';
-$wb['traffic_quota_error_empty'] = 'Datentransfer Beschränkung ist leer.';
+$wb['domain_error_unique'] = 'Domain muss eindeutig sein';
+$wb['domain_error_regex'] = 'Domain-Name ungültig.';
+$wb['domain_error_wildcard'] = 'Wildcard-Subdomains sind nicht erlaubt.';
+$wb['hd_quota_error_empty'] = 'Harddisk-Quota ist leer.';
+$wb['traffic_quota_error_empty'] = 'Traffic-Quota ist leer.';
 $wb['errordocs_txt'] = 'Eigene Fehlerseiten';
-$wb['error_ssl_state_empty'] = 'SSL Status ist leer.';
+$wb['error_ssl_state_empty'] = 'Bundesland (SSL) ist leer.';
 $wb['error_ssl_locality_empty'] = 'Ort (SSL) ist leer.';
 $wb['error_ssl_organisation_empty'] = 'Organisation (SSL) ist leer.';
 $wb['error_ssl_organisation_unit_empty'] = 'Abteilung (SSL) ist leer.';
 $wb['error_ssl_country_empty'] = 'Land (SSL) ist leer.';
-$wb['subdomain_txt'] = 'Auto Subdomain';
+$wb['subdomain_txt'] = 'Auto-Subdomain';
 $wb['client_group_id_txt'] = 'Kunde';
-$wb['stats_password_txt'] = 'Webstatistik Passwort';
-$wb['ssl_domain_txt'] = 'SSL Domain';
+$wb['stats_password_txt'] = 'Webstatistik-Passwort';
+$wb['ssl_domain_txt'] = 'SSL-Domain';
 $wb['allow_override_txt'] = 'Allow Override';
-$wb['limit_web_quota_free_txt'] = 'Max. mögliche Festplattenspeicher Beschränkung';
-$wb['ssl_state_error_regex'] = 'Ungültiges SSL Bundesland. Gültige Zeichen sind: a-z, 0-9 und .,-_';
-$wb['ssl_locality_error_regex'] = 'Ungültiger SSL Ort. Gülige Zeichen sind: a-z, 0-9 und .,-_';
-$wb['ssl_organisation_error_regex'] = 'Ungültige SSL Firma. Gültige Zeichen sind: a-z, 0-9 und .,-_';
-$wb['ssl_organistaion_unit_error_regex'] = 'Ungültige SSL Abteilung. Gültige Zeichen sind: a-z, 0-9 und .,-_';
-$wb['ssl_country_error_regex'] = 'Ungültiges SSL Land. Gültige Zeichen sind: A-Z';
-$wb['limit_traffic_quota_free_txt'] = 'Max. mögliche Datentransfer Beschränkung';
-$wb['redirect_error_regex'] = 'Ungültiger redirect Pfad. Gültige Angaben sind beispielsweise: /test/ oder http://www.domain.tld/test/';
+$wb['limit_web_quota_free_txt'] = 'Max. mögliches Festplatten-Quota';
+$wb['ssl_state_error_regex'] = 'Ungültiges SSL-Bundesland. Gültige Zeichen sind: a-z, 0-9 und .,-_';
+$wb['ssl_locality_error_regex'] = 'Ungültiger SSL-Ort. Gülige Zeichen sind: a-z, 0-9 und .,-_';
+$wb['ssl_organisation_error_regex'] = 'Ungültige SSL-Firma. Gültige Zeichen sind: a-z, 0-9 und .,-_';
+$wb['ssl_organistaion_unit_error_regex'] = 'Ungültige SSL-Abteilung. Gültige Zeichen sind: a-z, 0-9 und .,-_';
+$wb['ssl_country_error_regex'] = 'Ungültiges SSL-Land. Gültige Zeichen sind: A-Z';
+$wb['limit_traffic_quota_free_txt'] = 'Max. mögliches Traffic-Quota';
+$wb['redirect_error_regex'] = 'Ungültiger Redirect-Pfad. Gültige Angaben sind beispielsweise: /test/ oder http://www.domain.tld/test/';
 $wb['php_open_basedir_txt'] = 'PHP open_basedir';
-$wb['backup_interval_txt'] = 'Backup Intervall';
+$wb['backup_interval_txt'] = 'Backup-Intervall';
 $wb['backup_copies_txt'] = 'Anzahl an Backups';
 $wb['traffic_quota_exceeded_txt'] = 'Max. Datentransfer verbraucht.';
 $wb['ruby_txt'] = 'Ruby';
-$wb['stats_user_txt'] = 'Webstatistik Benutzername';
-$wb['stats_type_txt'] = 'Webstatistik Programm';
-$wb['custom_php_ini_txt'] = 'Individuelle php.ini Einstellungen';
-$wb['error_ssl_cert_empty'] = 'SSL Zertifikat Feld ist leer.';
+$wb['stats_user_txt'] = 'Webstatistik-Benutzername';
+$wb['stats_type_txt'] = 'Webstatistik-Programm';
+$wb['custom_php_ini_txt'] = 'Individuelle php.ini-Einstellungen';
+$wb['error_ssl_cert_empty'] = 'SSL-Zertifikat-Feld ist leer.';
 $wb['none_txt'] = 'Keine';
 $wb['disabled_txt'] = 'Deaktiviert';
-$wb['no_redirect_txt'] = 'Keine Weiterleitung';
-$wb['no_flag_txt'] = 'Keine Option';
+$wb['no_redirect_txt'] = 'Kein Redirect';
+$wb['no_flag_txt'] = 'Kein Flag';
 $wb['save_certificate_txt'] = 'Zertifikat speichern';
 $wb['create_certificate_txt'] = 'Zertifikat erstellen';
 $wb['delete_certificate_txt'] = 'Zertifikat löschen';
-$wb['nginx_directives_txt'] = 'nginx Direktiven';
-$wb['seo_redirect_txt'] = 'SEO Weiterleitung';
+$wb['nginx_directives_txt'] = 'nginx-Direktiven';
+$wb['seo_redirect_txt'] = 'SEO-Redirect';
 $wb['non_www_to_www_txt'] = 'Nicht-www -> www';
 $wb['www_to_non_www_txt'] = 'www -> Nicht-www';
 $wb['php_fpm_use_socket_txt'] = 'Benutze Socket für PHP-FPM';
-$wb['ipv6_address_txt'] = 'IPv6 Adresse';
-$wb['error_no_sni_txt'] = 'SNI für SSL ist auf diesem Server nicht aktiviert. Sie können daher nur ein SSL Zertifikat pro IP Adresse eintragen.';
+$wb['ipv6_address_txt'] = 'IPv6-Adresse';
+$wb['error_no_sni_txt'] = 'SNI für SSL ist auf diesem Server nicht aktiviert. Sie können daher nur ein SSL-Zertifikat pro IP-Adresse eintragen.';
 $wb['python_txt'] = 'Python';
 $wb['perl_txt'] = 'Perl';
 $wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children';
@@ -97,24 +97,24 @@ $wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children muß eine positive
 $wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers muß eine positive ganze Zahl sein.';
 $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers muß eine positive ganze Zahl sein.';
 $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers muß eine positive ganze Zahl sein.';
-$wb['hd_quota_error_regex'] = 'Festplattenspeicher Beschränkung ist ungültig.';
-$wb['traffic_quota_error_regex'] = 'Datentransfer Beschränkung ist ungültig.';
-$wb['fastcgi_php_version_txt'] = 'PHP Version';
+$wb['hd_quota_error_regex'] = 'Harddisk-Quota ist ungültig.';
+$wb['traffic_quota_error_regex'] = 'Traffic-Quota ist ungültig.';
+$wb['fastcgi_php_version_txt'] = 'PHP-Version';
 $wb['pm_txt'] = 'PHP-FPM Prozess Manager';
 $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
 $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
 $wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout muß eine positive ganze Zahl sein.';
 $wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests muß eine ganze Zahl >= 0 sein.';
-$wb['pm_ondemand_hint_txt'] = 'Bitte beachten Sie, daß Ihre PHP Version >= 5.3.9 sein muß, wenn Sie den ondemand Prozess Manager nutzen möchten. Wenn Sie ondemand für eine ältere PHP Version auswählen, wird PHP nicht mehr starten!';
+$wb['pm_ondemand_hint_txt'] = 'Bitte beachten Sie, daß Ihre PHP Version >= 5.3.9 sein muß, wenn Sie den ondemand Prozess Manager nutzen möchten. Wenn Sie ondemand für eine ältere PHP-Version auswählen, wird PHP nicht mehr starten!';
 $wb['generate_password_txt'] = 'Passwort erzeugen';
 $wb['repeat_password_txt'] = 'Passwort wiederholen';
 $wb['password_mismatch_txt'] = 'Die Passwörter stimmen nicht überein.';
 $wb['password_match_txt'] = 'Die Passwörter stimmen überein.';
-$wb['available_php_directive_snippets_txt'] = 'Verfügbare PHP Direktiven Schnipsel:';
-$wb['available_apache_directive_snippets_txt'] = 'Verfügbare Apache Direktiven Schnipsel:';
-$wb['available_nginx_directive_snippets_txt'] = 'Verfügbare nginx Direktiven Schnipsel:';
-$wb['proxy_directives_txt'] = 'Proxy Direktiven';
-$wb['available_proxy_directive_snippets_txt'] = 'Verfügbare Proxy Direktiven Schnipsel:';
+$wb['available_php_directive_snippets_txt'] = 'Verfügbare PHP-Direktiven-Schnipsel:';
+$wb['available_apache_directive_snippets_txt'] = 'Verfügbare Apache-Direktiven-Schnipsel:';
+$wb['available_nginx_directive_snippets_txt'] = 'Verfügbare nginx-Direktiven-Schnipsel:';
+$wb['proxy_directives_txt'] = 'Proxy-Direktiven';
+$wb['available_proxy_directive_snippets_txt'] = 'Verfügbare Proxy-Direktiven-Schnipsel:';
 $wb['rewrite_rules_txt'] = 'Rewrite Rules';
 $wb['invalid_rewrite_rules_txt'] = 'Unzulässige Rewrite Rules';
 $wb['allowed_rewrite_rule_directives_txt'] = 'Erlaubte Direktiven:';
diff --git a/interface/web/sites/lib/lang/en_cron.lng b/interface/web/sites/lib/lang/en_cron.lng
index 8cb7f08e6d54bea35b9da3d9a60f4479fe786c45..e6ba8ad3dc1a4133cf728403d6d883c63767f978 100644
--- a/interface/web/sites/lib/lang/en_cron.lng
+++ b/interface/web/sites/lib/lang/en_cron.lng
@@ -18,4 +18,5 @@ $wb['run_month_error_format'] = 'Invalid format for months.';
 $wb['run_wday_error_format'] = 'Invalid format for days of the week.';
 $wb['command_error_format'] = 'Invalid command format. Please note that in case of an url call only http/https is allowed.';
 $wb['unknown_fieldtype_error'] = 'An unknown field type has been used.';
+$wb['server_id_error_empty'] = 'The server ID is empty.';
 ?>
\ No newline at end of file
diff --git a/interface/web/sites/lib/lang/en_web_domain.lng b/interface/web/sites/lib/lang/en_web_domain.lng
index 6f5647b344599cb90cb709f7c23f071ca834d192..e4fb30e8b6ea8093cb0252f53eab4c0d0131a9e4 100644
--- a/interface/web/sites/lib/lang/en_web_domain.lng
+++ b/interface/web/sites/lib/lang/en_web_domain.lng
@@ -56,10 +56,10 @@ $wb["client_group_id_txt"] = 'Client';
 $wb["stats_password_txt"] = 'Set Webstatistics password';
 $wb["allow_override_txt"] = 'Apache AllowOverride';
 $wb["limit_web_quota_free_txt"] = 'Max. available Harddisk Quota';
-$wb["ssl_state_error_regex"] = 'Invalid SSL State. Valid characters are: a-z, 0-9 and .,-_';
-$wb["ssl_locality_error_regex"] = 'Invalid SSL Locality. Valid characters are: a-z, 0-9 and .,-_';
-$wb["ssl_organisation_error_regex"] = 'Invalid SSL Organisation. Valid characters are: a-z, 0-9 and .,-_';
-$wb["ssl_organistaion_unit_error_regex"] = 'Invalid SSL Organisation Unit. Valid characters are: a-z, 0-9 and .,-_';
+$wb["ssl_state_error_regex"] = 'Invalid SSL State. Valid characters are: a-z, 0-9 and .,-_&äöüÄÖÜ';
+$wb["ssl_locality_error_regex"] = 'Invalid SSL Locality. Valid characters are: a-z, 0-9 and .,-_&äöüÄÖÜ';
+$wb["ssl_organisation_error_regex"] = 'Invalid SSL Organisation. Valid characters are: a-z, 0-9 and .,-_&äöüÄÖÜ';
+$wb["ssl_organistaion_unit_error_regex"] = 'Invalid SSL Organisation Unit. Valid characters are: a-z, 0-9 and .,-_&äöüÄÖÜ';
 $wb["ssl_country_error_regex"] = 'Invalid SSL Country. Valid characters are: A-Z';
 $wb["limit_traffic_quota_free_txt"] = 'Max. available Traffic Quota';
 $wb["redirect_error_regex"] = 'Invalid redirect path. Valid redirects are for example: /test/ or http://www.domain.tld/test/';
diff --git a/interface/web/sites/web_domain_edit.php b/interface/web/sites/web_domain_edit.php
index 062529fda339b15d151f38d882a795c15cabf18b..ee3b2558e94dfae4ed9613cb9823e56735343480 100644
--- a/interface/web/sites/web_domain_edit.php
+++ b/interface/web/sites/web_domain_edit.php
@@ -572,9 +572,16 @@ class page_action extends tform_actions {
             if($client['limit_hterror'] != 'y') $this->dataRecord['errordocs'] = '-';
             if($client['limit_wildcard'] != 'y' && $this->dataRecord['subdomain'] == '*') $this->dataRecord['subdomain'] = '-';
             if($client['limit_ssl'] != 'y') $this->dataRecord['ssl'] = '-';
+			
+			// only generate quota and traffic warnings if value has changed
+			if($this->id > 0) {
+				$old_web_values = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".$app->functions->intval($this->id));
+			} else {
+				$old_web_values = $_POST;
+			}
             
 			//* Check the website quota of the client
-			if(isset($_POST["hd_quota"]) && $client["limit_web_quota"] >= 0) {
+			if(isset($_POST["hd_quota"]) && $client["limit_web_quota"] >= 0 && $_POST["hd_quota"] != $old_web_values["hd_quota"]) {
 				$tmp = $app->db->queryOneRecord("SELECT sum(hd_quota) as webquota FROM web_domain WHERE domain_id != ".$app->functions->intval($this->id)." AND type = 'vhost' AND ".$app->tform->getAuthSQL('u'));
 				$webquota = $tmp["webquota"];
 				$new_web_quota = $app->functions->intval($this->dataRecord["hd_quota"]);
@@ -590,7 +597,7 @@ class page_action extends tform_actions {
 			}
 
 			//* Check the traffic quota of the client
-			if(isset($_POST["traffic_quota"]) && $client["limit_traffic_quota"] > 0) {
+			if(isset($_POST["traffic_quota"]) && $client["limit_traffic_quota"] > 0 && $_POST["traffic_quota"] != $old_web_values["traffic_quota"]) {
 				$tmp = $app->db->queryOneRecord("SELECT sum(traffic_quota) as trafficquota FROM web_domain WHERE domain_id != ".$app->functions->intval($this->id)." AND ".$app->tform->getAuthSQL('u'));
 				$trafficquota = $tmp["trafficquota"];
 				$new_traffic_quota = $app->functions->intval($this->dataRecord["traffic_quota"]);
@@ -610,7 +617,7 @@ class page_action extends tform_actions {
 				$reseller = $app->db->queryOneRecord("SELECT limit_traffic_quota, limit_web_domain, default_webserver, limit_web_quota FROM client WHERE client_id = ".$client['parent_client_id']);
 
 				//* Check the website quota of the client
-				if(isset($_POST["hd_quota"]) && $reseller["limit_web_quota"] >= 0) {
+				if(isset($_POST["hd_quota"]) && $reseller["limit_web_quota"] >= 0 && $_POST["hd_quota"] != $old_web_values["hd_quota"]) {
 					$tmp = $app->db->queryOneRecord("SELECT sum(hd_quota) as webquota FROM web_domain WHERE domain_id != ".$app->functions->intval($this->id)." AND type = 'vhost' AND ".$app->tform->getAuthSQL('u'));
 					$webquota = $tmp["webquota"];
 					$new_web_quota = $app->functions->intval($this->dataRecord["hd_quota"]);
@@ -626,7 +633,7 @@ class page_action extends tform_actions {
 				}
 
 				//* Check the traffic quota of the client
-				if(isset($_POST["traffic_quota"]) && $reseller["limit_traffic_quota"] > 0) {
+				if(isset($_POST["traffic_quota"]) && $reseller["limit_traffic_quota"] > 0 && $_POST["traffic_quota"] != $old_web_values["traffic_quota"]) {
 					$tmp = $app->db->queryOneRecord("SELECT sum(traffic_quota) as trafficquota FROM web_domain WHERE domain_id != ".$app->functions->intval($this->id)." AND ".$app->tform->getAuthSQL('u'));
 					$trafficquota = $tmp["trafficquota"];
 					$new_traffic_quota = $app->functions->intval($this->dataRecord["traffic_quota"]);
diff --git a/interface/web/sites/web_vhost_subdomain_edit.php b/interface/web/sites/web_vhost_subdomain_edit.php
index a2c9da0b739e1419cf85655b2b0883c5c46de1dc..27a4d398713b0a1859680356b2100088cbb41a8d 100644
--- a/interface/web/sites/web_vhost_subdomain_edit.php
+++ b/interface/web/sites/web_vhost_subdomain_edit.php
@@ -440,9 +440,16 @@ class page_action extends tform_actions {
             if($client['limit_hterror'] != 'y') $this->dataRecord['errordocs'] = '-';
             if($client['limit_wildcard'] != 'y' && $this->dataRecord['subdomain'] == '*') $this->dataRecord['subdomain'] = '-';
             if($client['limit_ssl'] != 'y') $this->dataRecord['ssl'] = '-';
+			
+			// only generate quota and traffic warnings if value has changed
+			if($this->id > 0) {
+				$old_web_values = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".$app->functions->intval($this->id));
+			} else {
+				$old_web_values = $_POST;
+			}
 
 			//* Check the traffic quota of the client
-			if(isset($_POST["traffic_quota"]) && $client["limit_traffic_quota"] > 0) {
+			if(isset($_POST["traffic_quota"]) && $client["limit_traffic_quota"] > 0 && $_POST["traffic_quota"] != $old_web_values["traffic_quota"]) {
 				$tmp = $app->db->queryOneRecord("SELECT sum(traffic_quota) as trafficquota FROM web_domain WHERE domain_id != ".$app->functions->intval($this->id)." AND ".$app->tform->getAuthSQL('u'));
 				$trafficquota = $tmp["trafficquota"];
 				$new_traffic_quota = $app->functions->intval($this->dataRecord["traffic_quota"]);
@@ -462,7 +469,7 @@ class page_action extends tform_actions {
 				$reseller = $app->db->queryOneRecord("SELECT limit_traffic_quota, limit_web_subdomain, default_webserver, limit_web_quota FROM client WHERE client_id = ".$client['parent_client_id']);
 
 				//* Check the traffic quota of the client
-				if(isset($_POST["traffic_quota"]) && $reseller["limit_traffic_quota"] > 0) {
+				if(isset($_POST["traffic_quota"]) && $reseller["limit_traffic_quota"] > 0 && $_POST["traffic_quota"] != $old_web_values["traffic_quota"]) {
 					$tmp = $app->db->queryOneRecord("SELECT sum(traffic_quota) as trafficquota FROM web_domain WHERE domain_id != ".$app->functions->intval($this->id)." AND ".$app->tform->getAuthSQL('u'));
 					$trafficquota = $tmp["trafficquota"];
 					$new_traffic_quota = $app->functions->intval($this->dataRecord["traffic_quota"]);
diff --git a/interface/web/vm/lib/lang/de.lng b/interface/web/vm/lib/lang/de.lng
index cc6559f2204463355b516f9129f29c468cc4c2c2..474d2ac7b7c2a68a8f00f3841440390f21e3eac5 100644
--- a/interface/web/vm/lib/lang/de.lng
+++ b/interface/web/vm/lib/lang/de.lng
@@ -1,7 +1,7 @@
 <?php
 $wb['Virtual Servers'] = 'Virtuelle Server';
-$wb['OS Templates'] = 'OS Templates';
-$wb['VM Templates'] = 'VM Templates';
-$wb['IP addresses'] = 'IP Adressen';
+$wb['OS Templates'] = 'OS-Templates';
+$wb['VM Templates'] = 'VM-Templates';
+$wb['IP addresses'] = 'IP-Adressen';
 $wb['OpenVZ'] = 'OpenVZ';
 ?>
diff --git a/server/cron_daily.php b/server/cron_daily.php
index 1e0f238212357517bc8433f6655820d453aa3d2e..19fe2ad5b3b143c482347cc68dd3590fba46c19f 100644
--- a/server/cron_daily.php
+++ b/server/cron_daily.php
@@ -2,4 +2,4 @@
 
 # the cron daily file is no longer used and was replaced by cron.php
 
-?>
\ No newline at end of file
+?>
diff --git a/server/lib/classes/aps_installer.inc.php b/server/lib/classes/aps_installer.inc.php
index a0d79baeb9c207f20c17eaf0b6f15e2305f3312a..baf6e47f94a381baa016a2ec58e87dc6dc32a410 100644
--- a/server/lib/classes/aps_installer.inc.php
+++ b/server/lib/classes/aps_installer.inc.php
@@ -445,11 +445,11 @@ class ApsInstaller extends ApsBase
                 $this->file_owner_user = $owner_res['system_user']; 
                 $this->file_owner_group = $owner_res['system_group'];
                 exec('chown -R '.$this->file_owner_user.':'.$this->file_owner_group.' '.escapeshellarg($this->local_installpath));
-
-		//* Chown stats directory back
-		if(is_dir($this->local_installpath.'stats')) {
-			exec('chown -R root:root '.escapeshellarg($this->local_installpath.'stats'));
-		}
+				
+				//* Chown stats directory back
+				if(is_dir($this->local_installpath.'stats')) {
+					exec('chown -R root:root '.escapeshellarg($this->local_installpath.'stats'));
+				}
             }
         }
         catch(Exception $e)
diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php
index 57b1e1fae0f0ecbe419e6d2b4b0368563b673c99..a1e7c000d28ccfe249a982f4bd91e788b6f4131f 100644
--- a/server/lib/classes/system.inc.php
+++ b/server/lib/classes/system.inc.php
@@ -1597,6 +1597,23 @@ class system{
 		exec($cmd, $output, $return_var);
 		return $return_var == 0 ? true : false; 
 	}
+	
+	function getinitcommand($servicename, $action, $init_script_directory = ''){
+		global $conf;
+		// systemd
+		if(is_executable('/bin/systemd')){
+			return 'systemctl '.$action.' '.$servicename.'.service';
+		}
+		// upstart
+		if(is_executable('/sbin/initctl')){
+			exec('/sbin/initctl version 2>/dev/null | /bin/grep -q upstart', $retval['output'], $retval['retval']);
+			if(intval($retval['retval']) == 0) return 'service '.$servicename.' '.$action;
+		}
+		// sysvinit
+		if($init_script_directory == '') $init_script_directory = $conf['init_scripts'];
+		if(substr($init_script_directory, -1) === '/') $init_script_directory = substr($init_script_directory, 0, -1);
+		return $init_script_directory.'/'.$servicename.' '.$action;
+	}
 
 }
 ?>
diff --git a/server/mods-available/dns_module.inc.php b/server/mods-available/dns_module.inc.php
index 2a06361e6b1d1b3d639870f8392debf598d6ec20..9bab96e15e5b518c2b6646cce3c4392cfcb054be 100644
--- a/server/mods-available/dns_module.inc.php
+++ b/server/mods-available/dns_module.inc.php
@@ -121,6 +121,8 @@ class dns_module {
 	function restartBind($action = 'restart') {
 		global $app,$conf;
 		
+		$app->uses('system');
+		
 		$daemon = '';
 		if(is_file($conf['init_scripts'] . '/' . 'bind9')) {
 			$daemon = 'bind9';
@@ -130,9 +132,9 @@ class dns_module {
 		
 		$retval = array('output' => '', 'retval' => 0);
 		if($action == 'restart') {
-			exec($conf['init_scripts'] . '/' . $daemon . ' restart 2>&1', $retval['output'], $retval['retval']);
+			exec($app->system->getinitcommand($daemon, 'restart').' 2>&1', $retval['output'], $retval['retval']);
 		} else {
-			exec($conf['init_scripts'] . '/' . $daemon . ' reload 2>&1', $retval['output'], $retval['retval']);
+			exec($app->system->getinitcommand($daemon, 'reload').' 2>&1', $retval['output'], $retval['retval']);
 		}
 		return $retval;
 	}
@@ -140,6 +142,7 @@ class dns_module {
 	function restartPowerDNS($action = 'restart') {
 		global $app,$conf;
 	
+		$app->uses('system');
 		$app->log("restartPDNS called.",LOGLEVEL_DEBUG);
 
 /**     Since PowerDNS does not currently allow to limit AXFR for specific zones to specific
@@ -179,7 +182,7 @@ class dns_module {
 		}
 
 		$retval = array('output' => '', 'retval' => 0);
-		exec($conf['init_scripts'] . '/' . $daemon . ' restart 2>&1', $retval['output'], $retval['retval']);
+		exec($app->system->getinitcommand($daemon, 'restart').' 2>&1', $retval['output'], $retval['retval']);
 
 //     unset $tmps;
 		return $retval;
diff --git a/server/mods-available/rescue_core_module.inc.php b/server/mods-available/rescue_core_module.inc.php
index 050d32fd3bf2373f30852a01ca73277c040bceed..f1b25bda4bdb71be79d14c3b6821ef0ba8fbd40e 100644
--- a/server/mods-available/rescue_core_module.inc.php
+++ b/server/mods-available/rescue_core_module.inc.php
@@ -433,7 +433,8 @@ class rescue_core_module {
 	 */
 	private function _rescueDaemon($daemon){
 		global $conf;
-
+		
+		$app->uses('system');
 		// if you need to find all restarts search for "['init_scripts']"
 		/*
 		 * First we stop the running service "normally"
@@ -445,8 +446,8 @@ class rescue_core_module {
 		 * So we have to try to stop but if this will not work, we have to kill the stopping
 		 * of the service
 		 */
-		exec($conf['init_scripts'] . '/' . $daemon . ' stop && (sleep 3; kill $!; sleep 2; kill -9 $!) &> /dev/null');
-
+		exec($app->system->getinitcommand($daemon, 'stop').' && (sleep 3; kill $!; sleep 2; kill -9 $!) &> /dev/null');
+		
 		/*
 		 * OK, we tryed to stop it normally, maybe this worked maybe not. So we have to look
 		 * if the service is already running or not. If so, we have to kill them hard
@@ -456,7 +457,7 @@ class rescue_core_module {
 		/*
 		 * There are no more zombies left. Lets start the service..
 		 */
-		exec($conf['init_scripts'] . '/' . $daemon . ' start');
+		exec($app->system->getinitcommand($daemon, 'start'));
 	}
 }
 ?>
diff --git a/server/mods-available/web_module.inc.php b/server/mods-available/web_module.inc.php
index 868cf9e20c1249894196f792ed302b858b434e87..5d7fe66a09c31714d5b8d4f759f07192575ab1e9 100644
--- a/server/mods-available/web_module.inc.php
+++ b/server/mods-available/web_module.inc.php
@@ -194,7 +194,7 @@ class web_module {
 		global $app,$conf;
 		
 		// load the server configuration options
-		$app->uses('getconf');
+		$app->uses('getconf,system');
 		$web_config = $app->getconf->get_server_config($conf['server_id'], 'web');
 		
 		$daemon = '';
@@ -212,9 +212,10 @@ class web_module {
 
 		$retval = array('output' => '', 'retval' => 0);
 		if($action == 'restart') {
-			exec($conf['init_scripts'] . '/' . $daemon . ' restart 2>&1', $retval['output'], $retval['retval']);
+			exec($app->system->getinitcommand($daemon, 'restart').' 2>&1', $retval['output'], $retval['retval']);
+			
 		} else {
-			exec($conf['init_scripts'] . '/' . $daemon . ' reload 2>&1', $retval['output'], $retval['retval']);
+			exec($app->system->getinitcommand($daemon, 'reload').' 2>&1', $retval['output'], $retval['retval']);
 		}
 		return $retval;
 	}
@@ -223,15 +224,21 @@ class web_module {
 		global $app,$conf;
 		
 		// load the server configuration options
-		$app->uses('getconf');
+		$app->uses('getconf,system');
 		$web_config = $app->getconf->get_server_config($conf['server_id'], 'web');
 		
 		list($action, $init_script) = explode(':', $action);
 		
-		if(!$init_script) $init_script = $conf['init_scripts'].'/'.$web_config['php_fpm_init_script'];
+		if(!$init_script){
+			//$init_script = $conf['init_scripts'].'/'.$web_config['php_fpm_init_script'];
+			$initcommand = $app->system->getinitcommand($web_config['php_fpm_init_script'], $action);
+		} else {
+			$path_parts = pathinfo($init_script);
+			$initcommand = $app->system->getinitcommand($path_parts['basename'], $action, $path_parts['dirname']);
+		}
 		
 		$retval = array('output' => '', 'retval' => 0);
-		exec($init_script.' '.$action.' 2>&1', $retval['output'], $retval['retval']);
+		exec($initcommand.' 2>&1', $retval['output'], $retval['retval']);
 		return $retval;
 	}
 
diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php
index 62beafb4276cb806bf581bf379e69c4223905b06..3cd366363f69beef7beb06ed215b5365c365bf3f 100644
--- a/server/plugins-available/nginx_plugin.inc.php
+++ b/server/plugins-available/nginx_plugin.inc.php
@@ -2490,6 +2490,7 @@ class nginx_plugin {
 	private function nginx_replace($matches){
 		$location = 'location'.($matches[1] != '' ? ' '.$matches[1] : '').' '.$matches[2].' '.$matches[3];
 		if($matches[4] == '##merge##' || $matches[7] == '##merge##') $location .= ' ##merge##';
+		if($matches[4] == '##delete##' || $matches[7] == '##delete##') $location .= ' ##delete##';
 		$location .= "\n";
 		$location .= $matches[5]."\n";
 		$location .= $matches[6];
@@ -2528,7 +2529,7 @@ class nginx_plugin {
 					}
 				}
 				*/
-				$pattern = '/^[^\S\n]*location[^\S\n]+(?:(.+)[^\S\n]+)?(.+)[^\S\n]*(\{)[^\S\n]*(##merge##)?[^\S\n]*(.+)[^\S\n]*(\})[^\S\n]*(##merge##)?[^\S\n]*$/';
+				$pattern = '/^[^\S\n]*location[^\S\n]+(?:(.+)[^\S\n]+)?(.+)[^\S\n]*(\{)[^\S\n]*(##merge##|##delete##)?[^\S\n]*(.+)[^\S\n]*(\})[^\S\n]*(##merge##|##delete##)?[^\S\n]*$/';
 				$lines[$h] = preg_replace_callback($pattern, array($this, 'nginx_replace') ,$lines[$h]);
 			}
 		}
@@ -2540,6 +2541,7 @@ class nginx_plugin {
 			
 		if(is_array($lines) && !empty($lines)){	
 			$locations = array();
+			$locations_to_delete = array();
 			$islocation = false;
 			$linecount = sizeof($lines);
 			$server_count = 0;
@@ -2566,12 +2568,12 @@ class nginx_plugin {
 					unset($loc_parts);
 					
 					if(!isset($locations[$location]['action'])) $locations[$location]['action'] = 'replace';
-					if(substr($l, -9) == '##merge##'){
-						$locations[$location]['action'] = 'merge';
-					}
+					if(substr($l, -9) == '##merge##') $locations[$location]['action'] = 'merge';
+					if(substr($l, -10) == '##delete##') $locations[$location]['action'] = 'delete';
 					
 					if(!isset($locations[$location]['open_tag'])) $locations[$location]['open_tag'] = '        location '.$location.' {';
 					if(!isset($locations[$location]['location']) || $locations[$location]['action'] == 'replace') $locations[$location]['location'] = '';
+					if($locations[$location]['action'] == 'delete') $locations_to_delete[] = $location;
 					if(!isset($locations[$location]['end_tag'])) $locations[$location]['end_tag'] = '        }';
 					if(!isset($locations[$location]['start_line'])) $locations[$location]['start_line'] = $i;
 
@@ -2598,6 +2600,12 @@ class nginx_plugin {
 			}
 			
 			if(is_array($locations) && !empty($locations)){
+				if(is_array($locations_to_delete) && !empty($locations_to_delete)){
+					foreach($locations_to_delete as $location_to_delete){
+						if(isset($locations[$location_to_delete])) unset($locations[$location_to_delete]);
+					}
+				}
+			
 				foreach($locations as $key => $val){
 					$new_location = $val['open_tag']."\n".$val['location'].$val['end_tag'];
 					$lines[$val['start_line']] = $new_location;