X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-core%2Finclude%2Fclass_log.inc;h=35d8c0c3e4ec77f62ebf27f50559e102544bb45b;hb=438c90a4a3284b15c58a372429c181d086870ebd;hp=022d2fe6281b41c2c3bdc8ca9575eb192fa16bf5;hpb=96bcf1c6774971212667efa11268cd701e622790;p=gosa.git diff --git a/gosa-core/include/class_log.inc b/gosa-core/include/class_log.inc index 022d2fe62..35d8c0c3e 100644 --- a/gosa-core/include/class_log.inc +++ b/gosa-core/include/class_log.inc @@ -1,24 +1,25 @@ \version 2.6 @@ -55,7 +56,7 @@ class log { $entry['user']= "unkown"; }else{ - $this->config = &$_SESSION['config']; + $this->config = session::get('config'); $ui = get_userinfo(); $entry['user']= @$ui->dn; } @@ -84,7 +85,7 @@ class log { if(count($msgs)){ foreach($msgs as $msg){ trigger_error("Logging failed, reason was: ".$msg); - print_red("Logging failed, reason was: ".$msg); + msg_dialog::display(_("Internal error"), sprintf(_("Logging failed: %s"), $msg), ERROR_DIALOG); } }else{ @@ -103,7 +104,7 @@ class log { if(!$res){ global $config; $config->current['LOGGING'] = preg_replace("/(^|,)mysql(,|$)/",",",$config->current['LOGGING']); - msg_dialog::display(_("Logging to MySQL disabled"),_("The logging to a MySQL database is now disabled for this session of GOsa, due to communication errors with the specified logging database."), INFO_DIALOG); + msg_dialog::display(_("MySQL error"),_("Logging to MySQL database will be disabled for this session!"), INFO_DIALOG); } } } @@ -116,11 +117,11 @@ class log { $msgs = array(); if(!isset($entry['action']) || !in_array($entry['action'],array("modify","create","remove","copy","snapshot","view","security","debug"))){ - $msgs[] = "Invalid option specified '".$entry['action']."'"; + $msgs[] = sprintf(_("Invalid option '%s' specified!"), $entry['action']); } if(!isset($entry['objecttype']) || empty($entry['objecttype'])){ - $msgs[] = "Specified objectType is empty or invalid."; + $msgs[] = _("Specified objectType is empty or invalid!"); } return($msgs); @@ -141,40 +142,90 @@ class log { if(isset($this->config->data['SERVERS']['LOGGING'])){ $servers = $this->config->data['SERVERS']['LOGGING']; }else{ - print_red(_("You have enabled the logging into mysql databse, but there are no logging servers available.")); + msg_dialog::display(_("Error"), msgPool::noserver(_("MySQL logging")), ERROR_DIALOG); return(FALSE); } + /* Log into each configured server + */ foreach($servers as $server_name => $server){ + /* Connect to the database + */ $con = @mysql_pconnect($server_name,$server['USER'],$server['PWD']); if(!$con){ - print_red(sprintf(_("Could not connect to logging server %s."),$server_name)); + msg_dialog::display(_("Error"), msgPool::dbconnect(_("MySQL logging")), ERROR_DIALOG); return(FALSE); }else{ + + /* Check if the database is available + */ $db = mysql_select_db($server['DB'],$con); if(!$db){ - print_red(sprintf(_("Could not select database %s on server %s. Server says :%s"),$server['DB'],$server['SERVER'],mysql_error($con))); + msg_dialog::display(_("Error"), msgPool::dbselect(_("MySQL logging"), mysql_error($con)), ERROR_DIALOG); return(FALSE); }else{ + /* Check if our current location is already registerd + in this case get its id. + If it wasn't registered yet, create it. + */ + $base = mysql_escape_string($this->config->current['BASE']); + $query= "SELECT id FROM gosa_locations WHERE location=\"".$base."\";"; + $res = mysql_query($query); + if(!$res){ + msg_dialog::display(_("Error"), msgPool::dbquery(_("MySQL logging"), mysql_error($con)), ERROR_DIALOG); + } + + $location_id = -1; + while($attrs = mysql_fetch_assoc($res)){ + $location_id = $attrs['id']; + break; + } + + /* No location found that matches our location. + Create it. + */ + if($location_id == -1){ + $query = "INSERT INTO gosa_locations (location) VALUES ('".$base."');"; + if(!mysql_query($query,$con)){ + msg_dialog::display(_("Error"), msgPool::dbquery(_("MySQL logging"), mysql_error($con)), ERROR_DIALOG); + } + + /* Try to detect the location again + */ + $query= "SELECT id FROM gosa_locations WHERE location=\"".$base."\";"; + $res = mysql_query($query); + $location_id = -1; + while($attrs = mysql_fetch_assoc($res)){ + $location_id = $attrs['id']; + break; + } + if($location_id == -1){ + msg_dialog::display(_("Error"), sprintf(_("Cannot add location to the database!")."

"._("Error").": %s", + mysql_error($con)), ERROR_DIALOG); + return(FALSE); + } + } + /* Create mysql syntax */ $query ="INSERT INTO gosa_log - (timestamp,user,action,objecttype,object,changes,result) - VALUES - ( - \"".addslashes($entry['timestamp'])."\", - \"".addslashes($entry['user'])."\", - \"".addslashes($entry['action'])."\", - \"".addslashes($entry['objecttype'])."\", - \"".addslashes($entry['object'])."\", - \"".addslashes($entry['changes'])."\", - \"".addslashes($entry['result'])."\" - ); - "; + (timestamp,user,action,objecttype,object,changes,result,location_id) + VALUES + ( + \"".mysql_escape_string($entry['timestamp'])."\", + \"".mysql_escape_string($entry['user'])."\", + \"".mysql_escape_string($entry['action'])."\", + \"".mysql_escape_string($entry['objecttype'])."\", + \"".mysql_escape_string($entry['object'])."\", + \"".mysql_escape_string($entry['changes'])."\", + \"".mysql_escape_string($entry['result'])."\", + \"".mysql_escape_string($location_id)."\" + ); + "; $res = mysql_query($query,$con); if(!$res){ - print_red(sprintf(_("Could not query database %s on server %s. Server says :%s"),$server['DB'],$server['SERVER'],mysql_error($con))); + msg_dialog::display(_("Error"), msgPool::dbquery(_("MySQL logging"), mysql_error($con)), ERROR_DIALOG); return(FALSE); } }