index 35d8c0c3e4ec77f62ebf27f50559e102544bb45b..b03687de7ef086ec8acea8499efafc0957311f5b 100644 (file)
*/
class log {
- var $LOG_TO_MYSQL = FALSE;
- var $LOG_TO_SYSLOG= FALSE;
var $config;
/*! \brief logging constructor
}
$entry = array();
- if(!session::is_set('config')){
+ if(!session::global_is_set('config')){
$entry['user']= "unkown";
}else{
- $this->config = session::get('config');
+ $this->config = session::global_get('config');
$ui = get_userinfo();
$entry['user']= @$ui->dn;
}
$entry['changes'] = $changes;
$entry['result'] = $result;
- if(!isset($this->config->current['LOGGING']) && empty($entry['user'])){
+ if(!isset($this->config) && empty($entry['user'])){
$entry['user'] = "unknown";
}
-
+
/* Check if all given values are valid */
+ global $config;
$msgs = @log::check($entry);
if(count($msgs)){
foreach($msgs as $msg){
trigger_error("Logging failed, reason was: ".$msg);
msg_dialog::display(_("Internal error"), sprintf(_("Logging failed: %s"), $msg), ERROR_DIALOG);
}
-
}else{
-
- if(!isset($this->config->current['LOGGING'])){
+ if(is_object($config) && $config->boolValueIsTrue("core","logging")){
$this->log_into_syslog($entry);
- }else{
-
- /* Start logging for configured methods */
- if(isset($this->config->current['LOGGING']) && preg_match("/(^|,)syslog(,|$)/i",$this->config->current['LOGGING'])){
- $this->log_into_syslog($entry);
- }
- if(isset($this->config->current['LOGGING']) && preg_match("/(^|,)mysql(,|$)/i",$this->config->current['LOGGING'])){
- $res = $this->log_into_db($entry);
-
- if(!$res){
- global $config;
- $config->current['LOGGING'] = preg_replace("/(^|,)mysql(,|$)/",",",$config->current['LOGGING']);
- msg_dialog::display(_("MySQL error"),_("Logging to MySQL database will be disabled for this session!"), INFO_DIALOG);
- }
- }
}
}
}
$msgs = array();
if(!isset($entry['action']) || !in_array($entry['action'],array("modify","create","remove","copy","snapshot","view","security","debug"))){
- $msgs[] = sprintf(_("Invalid option '%s' specified!"), $entry['action']);
+ $msgs[] = sprintf(_("Invalid option %s specified!"), bold($entry['action']));
}
- if(!isset($entry['objecttype']) || empty($entry['objecttype'])){
- $msgs[] = _("Specified objectType is empty or invalid!");
+ if(!isset($entry['objecttype'])){
+ $msgs[] = _("Specified 'objectType' is empty or invalid!");
}
return($msgs);
/* This function is used to into the systems syslog */
function log_into_syslog($entry)
{
- $str = $entry['user']." ".$entry['action']." ".$entry['object']." from type ".$entry['objecttype']." ".$entry['changes']." : Result was ".$entry['result'];
- gosa_log($str);
- }
+ $str= "";
+ if(!empty($entry['action'])) $str .= "({$entry['action']}) ";
- /* Log into configured logging databses.*/
- function log_into_db($entry)
- {
- if(isset($this->config->data['SERVERS']['LOGGING'])){
- $servers = $this->config->data['SERVERS']['LOGGING'];
- }else{
- msg_dialog::display(_("Error"), msgPool::noserver(_("MySQL logging")), ERROR_DIALOG);
- return(FALSE);
+ // Add object and object type if set.
+ if(!empty($entry['object']) && !empty($entry['objecttype'])){
+ $str .= "{$entry['object']} of type {$entry['objecttype']} ";
+ }elseif(!empty($entry['object'])){
+ $str .= "{$entry['object']} ";
+ }elseif(!empty($entry['objecttype'])){
+ $str .= "{$entry['objecttype']} ";
}
+ if(!empty($entry['changes'])) $str .= "{$entry['changes']} ";
+ if(!empty($entry['result'])) $str .= ": {$entry['result']} ";
- /* 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){
- 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){
- 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!")."<br><br>"._("Error").": %s",
- mysql_error($con)), ERROR_DIALOG);
- return(FALSE);
- }
- }
-
- /* Create mysql syntax */
- $query ="INSERT INTO gosa_log
- (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){
- msg_dialog::display(_("Error"), msgPool::dbquery(_("MySQL logging"), mysql_error($con)), ERROR_DIALOG);
- return(FALSE);
- }
- }
- mysql_close($con);
- }
- }
- return(TRUE);
+ gosa_log($str);
}
+
}
// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: