index daad88908e19a8211f9338350e61f0021f146f40..5ac8483793bb5c6b1f00e453e0cc6ad6b9da5b3a 100644 (file)
<?php
/*
<?php
/*
- This code is part of GOsa (https://gosa.gonicus.de)
- Copyright (C) 2003 Cajus Pollmeier
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * This code is part of GOsa (http://www.gosa-project.org)
+ * Copyright (C) 2003-2008 GONICUS GmbH
+ *
+ * ID: $$Id$$
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
*/
-
/*! \brief The logging base class
\author Fabian Hickert <hickert@gonicus.de>
\version 2.6
/*! \brief The logging base class
\author Fabian Hickert <hickert@gonicus.de>
\version 2.6
}
$entry = array();
}
$entry = array();
- if(!isset($_SESSION['config'])){
+ if(!session::is_set('config')){
$entry['user']= "unkown";
}else{
$entry['user']= "unkown";
}else{
- $this->config = &$_SESSION['config'];
+ $this->config = session::get('config');
$ui = get_userinfo();
$entry['user']= @$ui->dn;
}
$ui = get_userinfo();
$entry['user']= @$ui->dn;
}
if(count($msgs)){
foreach($msgs as $msg){
trigger_error("Logging failed, reason was: ".$msg);
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{
}
}else{
$msgs = array();
if(!isset($entry['action']) || !in_array($entry['action'],array("modify","create","remove","copy","snapshot","view","security","debug"))){
$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'])){
}
if(!isset($entry['objecttype']) || empty($entry['objecttype'])){
- $msgs[] = "Specified objectType is empty or invalid.";
+ $msgs[] = _("Specified objectType is empty or invalid");
}
return($msgs);
}
return($msgs);
if(isset($this->config->data['SERVERS']['LOGGING'])){
$servers = $this->config->data['SERVERS']['LOGGING'];
}else{
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"), _("You have enabled the logging into mysql database, but there are no logging servers available."), ERROR_DIALOG);
return(FALSE);
}
return(FALSE);
}
+ /* Log into each configured server
+ */
foreach($servers as $server_name => $server){
foreach($servers as $server_name => $server){
+ /* Connect to the database
+ */
$con = @mysql_pconnect($server_name,$server['USER'],$server['PWD']);
if(!$con){
$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"), sprintf(_("Cannot connect to logging server '%s'."),$server_name), ERROR_DIALOG);
return(FALSE);
}else{
return(FALSE);
}else{
+
+ /* Check if the database is available
+ */
$db = mysql_select_db($server['DB'],$con);
if(!$db){
$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"), sprintf(_("Cannot select database '%s' on server '%s': %s"),$server['DB'],$server['SERVER'], mysql_error($con)), ERROR_DIALOG);
return(FALSE);
}else{
return(FALSE);
}else{
+ /* Check for required tables
+ */
+ $query = "SHOW TABLES;";
+ $res = @mysql_query($query,$con);
+ $tables = array();
+ while($attrs = mysql_fetch_row($res)){
+ $tables[] = $attrs[0];
+ }
+ $error = FALSE;
+ foreach(array("gosa_log","gosa_locations") as $required){
+ if(!in_array($required,$tables)){
+ msg_dialog::display(_("Error"),
+ sprintf(_("Missing logging table (%s.%s) update your GOsa logging database schema."),
+ $server['DB'],$required), ERROR_DIALOG);
+ $error = TRUE;
+ }
+ if($error) return(FALSE);
+ }
+
+ /* 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);
+ $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."');";
+ mysql_query($query,$con);
+
+ /* 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(_("Couldn't add your location to the logging database, the error was: %s."),
+ mysql_error($con)), ERROR_DIALOG);
+ return(FALSE);
+ }
+ }
+
/* Create mysql syntax */
$query ="INSERT INTO gosa_log
/* 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){
$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"), sprintf(_("Cannot query database '%s' on server '%s': %s"),
+ $server['DB'],$server['SERVER'], mysql_error($con)), ERROR_DIALOG);
return(FALSE);
}
}
return(FALSE);
}
}