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"]);