diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php
index 09f68ea30bf7a8ff5cf121122f6f65564157aea2..89a35d067794d2c97110a4e5add8be8ea741588b 100644
--- a/install/dist/lib/fedora.lib.php
+++ b/install/dist/lib/fedora.lib.php
@@ -670,7 +670,7 @@ class installer_dist extends installer_base {
 		
 		//copy('tpl/apache_ispconfig.vhost.master', "$vhost_conf_dir/ispconfig.vhost");
 		//* and create the symlink
-		if($this->install_ispconfig_interface == true) {
+		if($this->install_ispconfig_interface == true && $this->is_update == false) {
 			if(@is_link("$vhost_conf_enabled_dir/ispconfig.vhost")) unlink("$vhost_conf_enabled_dir/ispconfig.vhost");
 			if(!@is_link("$vhost_conf_enabled_dir/000-ispconfig.vhost")) {
 				exec("ln -s $vhost_conf_dir/ispconfig.vhost $vhost_conf_enabled_dir/000-ispconfig.vhost");
diff --git a/install/dist/lib/opensuse.lib.php b/install/dist/lib/opensuse.lib.php
index 83803a9d7bce51317d5e9128e60c466c0030feee..9426e3709bddd9393b1e6d45efb117811ea200c4 100644
--- a/install/dist/lib/opensuse.lib.php
+++ b/install/dist/lib/opensuse.lib.php
@@ -688,7 +688,7 @@ class installer_dist extends installer_base {
 		
 		//copy('tpl/apache_ispconfig.vhost.master', "$vhost_conf_dir/ispconfig.vhost");
 		//* and create the symlink
-		if($this->install_ispconfig_interface == true) {
+		if($this->install_ispconfig_interface == true && $this->is_update == false) {
 			if(@is_link("$vhost_conf_enabled_dir/ispconfig.vhost")) unlink("$vhost_conf_enabled_dir/ispconfig.vhost");
 			if(!@is_link("$vhost_conf_enabled_dir/000-ispconfig.vhost")) {
 				exec("ln -s $vhost_conf_dir/ispconfig.vhost $vhost_conf_enabled_dir/000-ispconfig.vhost");
diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php
index fb4cd7060347fa558f6672eff593a6b51d4cffbe..c8337ab892bc7774a9ccbb78b056075720f76e90 100644
--- a/install/lib/installer_base.lib.php
+++ b/install/lib/installer_base.lib.php
@@ -35,7 +35,7 @@ class installer_base {
 	var $db;
 	public $conf;
 	public $install_ispconfig_interface = true;
-	
+	public $is_update = false; // true if it is an update, falsi if it is a new install
 
 
     public function __construct()
@@ -938,13 +938,11 @@ class installer_base {
 		caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
 		
 		//* Copy the ISPConfig vhost for the controlpanel
-        // TODO: These are missing! should they be "vhost_dist_*_dir" ?
         $vhost_conf_dir = $conf['apache']['vhost_conf_dir'];
         $vhost_conf_enabled_dir = $conf['apache']['vhost_conf_enabled_dir'];
         
         
         // Dont just copy over the virtualhost template but add some custom settings
-         
         $content = rf("tpl/apache_ispconfig.vhost.master");
 		$content = str_replace('{vhost_port}', $conf['apache']['vhost_port'], $content);
 		
@@ -959,7 +957,7 @@ class installer_base {
 		
 		//copy('tpl/apache_ispconfig.vhost.master', "$vhost_conf_dir/ispconfig.vhost");
 		//* and create the symlink
-		if($this->install_ispconfig_interface == true) {
+		if($this->install_ispconfig_interface == true && $this->is_update == false) {
 			if(@is_link("$vhost_conf_enabled_dir/ispconfig.vhost")) unlink("$vhost_conf_enabled_dir/ispconfig.vhost");
 			if(!@is_link("$vhost_conf_enabled_dir/000-ispconfig.vhost")) {
 				exec("ln -s $vhost_conf_dir/ispconfig.vhost $vhost_conf_enabled_dir/000-ispconfig.vhost");
diff --git a/install/update.php b/install/update.php
index 481d8a9e65d470a95d78ddde90220aac615fa172..10e72825fd7b8390a2b00c39361c8da32376358b 100644
--- a/install/update.php
+++ b/install/update.php
@@ -101,6 +101,7 @@ $conf['server_id'] = intval($conf_old["server_id"]);
 $conf['ispconfig_log_priority'] = $conf_old["log_priority"];
 
 $inst = new installer();
+$inst->is_update = true;
 
 //** Detect the installed applications
 $inst->find_installed_apps();
diff --git a/interface/web/login/index.php b/interface/web/login/index.php
index 3698f086d9b98743ba939941cb4c3b0abb6d90a2..90b6cafb93723ea5281ed01adbb7af758e53e8c6 100644
--- a/interface/web/login/index.php
+++ b/interface/web/login/index.php
@@ -92,7 +92,8 @@ class login_index {
 				}
 
 	        	//* Check if there already wrong logins
-	        	$sql = "SELECT * FROM `attempts_login` WHERE `ip`= '{$ip}' AND  `login_time` < NOW() + INTERVAL 15 MINUTE LIMIT 1";
+	        	$sql = "SELECT * FROM `attempts_login` WHERE `ip`= '{$ip}' AND  `login_time` > (NOW() - INTERVAL 1 MINUTE) LIMIT 1";
+				echo $sql;
 	        	$alreadyfailed = $app->db->queryOneRecord($sql);
 	        	//* login to much wrong
 	        	if($alreadyfailed['times'] > 5) {
diff --git a/interface/web/sites/ajax_get_ip.php b/interface/web/sites/ajax_get_ip.php
index 7c11bcb9d5902b511fa877997e6b55993be78171..fbe92031a503a9c0b4902e832ac492ceb59af243 100644
--- a/interface/web/sites/ajax_get_ip.php
+++ b/interface/web/sites/ajax_get_ip.php
@@ -41,7 +41,7 @@ if($_SESSION["s"]["user"]["typ"] == 'admin') {
 	$sql = "SELECT ip_address FROM server_ip WHERE server_id = $server_id";
 	$ips = $app->db->queryAllRecords($sql);
 	// $ip_select = "<option value=''></option>";
-	$ip_select = "";
+	$ip_select = "<option value='*'>*</option>\r\n";
 	if(is_array($ips)) {
 		foreach( $ips as $ip) {
 			//$selected = ($ip["ip_address"] == $this->dataRecord["ip_address"])?'SELECTED':'';
diff --git a/server/lib/classes/modules.inc.php b/server/lib/classes/modules.inc.php
index aaa2f4b49cddab92c80125568d4f01e8f1cc7ad9..b9b875c63c9a84caba28feff3d659f11169d73cd 100644
--- a/server/lib/classes/modules.inc.php
+++ b/server/lib/classes/modules.inc.php
@@ -88,74 +88,80 @@ class modules {
 			$records = $app->dbmaster->queryAllRecords($sql);
 			foreach($records as $d) {
 				
-				$data = unserialize(stripslashes($d["data"]));
+				if(!$data = unserialize(stripslashes($d["data"]))) {
+					$data = unserialize($d["data"]);
+				}
 				$replication_error = false;
 				
 				$this->current_datalog_id = $d["datalog_id"];
 				
-				if($d["action"] == 'i') {
-					$idx = explode(":",$d["dbidx"]);
-					$tmp_sql1 = '';
-					$tmp_sql2 = '';
-					foreach($data['new'] as $fieldname => $val) {
-						$tmp_sql1 .= "`$fieldname`,";
-						$tmp_sql2 .= "'$val',";
-					}
-					$tmp_sql1 = substr($tmp_sql1,0,-1);
-					$tmp_sql2 = substr($tmp_sql2,0,-1);
-					//$tmp_sql1 .= "$idx[0]";
-					//$tmp_sql2 .= "$idx[1]";
-					$sql = "REPLACE INTO $d[dbtable] ($tmp_sql1) VALUES ($tmp_sql2)";
-					$app->db->query($sql);
-					if($app->db->errorNumber > 0) {
-						$replication_error = true;
-						$app->log("Replication failed. Error: (" . $d[dbtable] . ") " . $app->db->errorMessage . " # SQL: " . $sql,LOGLEVEL_ERROR);
-					}
-					$app->log("Replicated from master: ".$sql,LOGLEVEL_DEBUG);
-				}
-			
-				if($d["action"] == 'u') {
-					$sql = "UPDATE $d[dbtable] SET ";
-					foreach($data['new'] as $fieldname => $val) {
-						$sql .= "`$fieldname` = '$val',";
+				if(count($data['new']) > 0) {
+					if($d["action"] == 'i' || $d["action"] == 'u') {
+						$idx = explode(":",$d["dbidx"]);
+						$tmp_sql1 = '';
+						$tmp_sql2 = '';
+						foreach($data['new'] as $fieldname => $val) {
+							$tmp_sql1 .= "`$fieldname`,";
+							$tmp_sql2 .= "'$val',";
+						}
+						$tmp_sql1 = substr($tmp_sql1,0,-1);
+						$tmp_sql2 = substr($tmp_sql2,0,-1);
+						//$tmp_sql1 .= "$idx[0]";
+						//$tmp_sql2 .= "$idx[1]";
+						$sql = "REPLACE INTO $d[dbtable] ($tmp_sql1) VALUES ($tmp_sql2)";
+						$app->db->query($sql);
+						if($app->db->errorNumber > 0) {
+							$replication_error = true;
+							$app->log("Replication failed. Error: (" . $d[dbtable] . ") " . $app->db->errorMessage . " # SQL: " . $sql,LOGLEVEL_ERROR);
+						}
+						$app->log("Replicated from master: ".$sql,LOGLEVEL_DEBUG);
 					}
-					$sql = substr($sql,0,-1);
-					$idx = explode(":",$d["dbidx"]);
-					$sql .= " WHERE $idx[0] = $idx[1]";
-					$app->db->query($sql);
-					if($app->db->errorNumber > 0) {
-						$replication_error = true;
-						$app->log("Replication failed. Error: (" . $d[dbtable] . ") " . $app->db->errorMessage . " # SQL: " . $sql,LOGLEVEL_ERROR);
+					/*
+					if($d["action"] == 'u') {
+						$sql = "UPDATE $d[dbtable] SET ";
+						foreach($data['new'] as $fieldname => $val) {
+							$sql .= "`$fieldname` = '$val',";
+						}
+						$sql = substr($sql,0,-1);
+						$idx = explode(":",$d["dbidx"]);
+						$sql .= " WHERE $idx[0] = $idx[1]";
+						$app->db->query($sql);
+						if($app->db->errorNumber > 0) {
+							$replication_error = true;
+							$app->log("Replication failed. Error: (" . $d[dbtable] . ") " . $app->db->errorMessage . " # SQL: " . $sql,LOGLEVEL_ERROR);
+						}
+						$app->log("Replicated from master: ".$sql,LOGLEVEL_DEBUG);
 					}
-					$app->log("Replicated from master: ".$sql,LOGLEVEL_DEBUG);
-				}
-			
-				if($d["action"] == 'd') {
-					$idx = explode(":",$d["dbidx"]);
-					$sql = "DELETE FROM $d[dbtable] ";
-					$sql .= " WHERE $idx[0] = $idx[1]";
-					$app->db->query($sql);
-					if($app->db->errorNumber > 0) {
-						$replication_error = true;
-						$app->log("Replication failed. Error: (" . $d[dbtable] . ") " . $app->db->errorMessage . " # SQL: " . $sql,LOGLEVEL_ERROR);
+					*/
+					if($d["action"] == 'd') {
+						$idx = explode(":",$d["dbidx"]);
+						$sql = "DELETE FROM $d[dbtable] ";
+						$sql .= " WHERE $idx[0] = $idx[1]";
+						$app->db->query($sql);
+						if($app->db->errorNumber > 0) {
+							$replication_error = true;
+							$app->log("Replication failed. Error: (" . $d[dbtable] . ") " . $app->db->errorMessage . " # SQL: " . $sql,LOGLEVEL_ERROR);
+						}
+						$app->log("Replicated from master: ".$sql,LOGLEVEL_DEBUG);
 					}
-					$app->log("Replicated from master: ".$sql,LOGLEVEL_DEBUG);
-				}
 				
 				
-				if($replication_error == false) {
-					$this->raiseTableHook($d["dbtable"],$d["action"],$data);
-					//$app->dbmaster->query("DELETE FROM sys_datalog WHERE datalog_id = ".$d["datalog_id"]);
-					//$app->log("Deleting sys_datalog ID ".$d["datalog_id"],LOGLEVEL_DEBUG);
-					$app->dbmaster->query("UPDATE server SET updated = ".$d["datalog_id"]." WHERE server_id = ".$conf["server_id"]);
-					$app->log("Processed datalog_id ".$d["datalog_id"],LOGLEVEL_DEBUG);
+					if($replication_error == false) {
+						$this->raiseTableHook($d["dbtable"],$d["action"],$data);
+						//$app->dbmaster->query("DELETE FROM sys_datalog WHERE datalog_id = ".$d["datalog_id"]);
+						//$app->log("Deleting sys_datalog ID ".$d["datalog_id"],LOGLEVEL_DEBUG);
+						$app->dbmaster->query("UPDATE server SET updated = ".$d["datalog_id"]." WHERE server_id = ".$conf["server_id"]);
+						$app->log("Processed datalog_id ".$d["datalog_id"],LOGLEVEL_DEBUG);
+					} else {
+						$app->log("Error in Replication, changes were not processed.",LOGLEVEL_ERROR);
+						/*
+						 * If there is any error in processing the datalog we can't continue, because
+						 * we do not know if the newer actions require this (old) one.
+						 */
+						return;
+					}
 				} else {
-					$app->log("Error in Replication, changes were not processed.",LOGLEVEL_ERROR);
-					/*
-					 * If there is any error in processing the datalog we can't continue, because
-					 * we do not know if the newer actions require this (old) one.
-					 */
-					return;
+					$app->log("Datalog does not conatin any changes for this record ".$d["datalog_id"],LOGLEVEL_DEBUG);
 				}
 			}
 			
@@ -164,7 +170,9 @@ class modules {
 			$sql = "SELECT * FROM sys_datalog WHERE datalog_id > ".$conf['last_datalog_id']." AND (server_id = ".$conf["server_id"]." OR server_id = 0) ORDER BY datalog_id";
 			$records = $app->db->queryAllRecords($sql);
 			foreach($records as $d) {
-				$data = unserialize(stripslashes($d["data"]));
+				if(!$data = unserialize(stripslashes($d["data"]))) {
+					$data = unserialize($d["data"]);
+				}
 				$this->current_datalog_id = $d["datalog_id"];
 				$this->raiseTableHook($d["dbtable"],$d["action"],$data);
 				//$app->db->query("DELETE FROM sys_datalog WHERE datalog_id = ".$rec["datalog_id"]);