2008-03-23 21:32:54 +00:00
<? php
2011-03-11 18:03:49 +00:00
function process_syslog ( $entry , $update )
{
2008-03-23 21:32:54 +00:00
global $config ;
2011-03-11 18:03:49 +00:00
foreach ( $config [ 'syslog_filter' ] as $bi )
{
if ( strstr ( $entry [ 'msg' ], $bi ) !== FALSE )
{
2008-03-23 21:32:54 +00:00
$delete = 1 ;
}
}
2010-02-19 23:57:50 +00:00
$device_id_host = @ mysql_result ( mysql_query ( "SELECT device_id FROM devices WHERE `hostname` = '" . $entry [ 'host' ] . "' OR `sysName` = '" . $entry [ 'host' ] . "'" ), 0 );
2008-03-23 21:32:54 +00:00
2011-03-11 18:03:49 +00:00
if ( $device_id_host )
{
2010-01-29 21:10:05 +00:00
$entry [ 'device_id' ] = $device_id_host ;
2011-03-11 18:03:49 +00:00
}
else
{
$device_id_ip = @ mysql_result ( mysql_query ( "SELECT device_id FROM ipv4_addresses AS A, ports AS I WHERE
2010-01-29 21:10:05 +00:00
A.ipv4_address = '" . $entry [ 'host' ] . "' AND I.interface_id = A.interface_id" ), 0 );
2011-03-11 18:03:49 +00:00
if ( $device_id_ip )
{
2010-01-29 21:10:05 +00:00
$entry [ 'device_id' ] = $device_id_ip ;
2008-03-23 21:32:54 +00:00
}
2011-03-11 18:03:49 +00:00
}
2008-03-23 21:32:54 +00:00
2011-03-11 18:03:49 +00:00
if ( $entry [ 'device_id' ] && ! $delete )
{
2010-01-29 21:10:05 +00:00
$os = mysql_result ( mysql_query ( "SELECT `os` FROM `devices` WHERE `device_id` = '" . $entry [ 'device_id' ] . "'" ), 0 );
2011-03-11 18:03:49 +00:00
if ( $os == "ios" || $os == "iosxe" )
{
if ( strstr ( $entry [ msg ], "%" ))
{
2009-04-23 21:13:56 +00:00
$entry [ 'msg' ] = preg_replace ( "/^%(.+?):\ /" , " \\ 1||" , $entry [ 'msg' ]);
2008-11-26 14:01:09 +00:00
list (, $entry [ msg ]) = split ( ": %" , $entry [ 'msg' ]);
$entry [ 'msg' ] = "%" . $entry [ 'msg' ];
2011-03-11 18:03:49 +00:00
$entry [ 'msg' ] = preg_replace ( "/^%(.+?):\ /" , " \\ 1||" , $entry [ 'msg' ]);
}
else
{
2009-04-11 19:10:48 +00:00
$entry [ 'msg' ] = preg_replace ( "/^.*[0-9]:/" , "" , $entry [ 'msg' ]);
$entry [ 'msg' ] = preg_replace ( "/^[0-9][0-9]\ [A-Z]{3}:/" , "" , $entry [ 'msg' ]);
$entry [ 'msg' ] = preg_replace ( "/^(.+?):\ /" , " \\ 1||" , $entry [ 'msg' ]);
}
2008-11-28 12:59:33 +00:00
$entry [ 'msg' ] = preg_replace ( "/^.+\.[0-9]{3}:/" , "" , $entry [ 'msg' ]);
$entry [ 'msg' ] = preg_replace ( "/^.+-Traceback=/" , "Traceback||" , $entry [ 'msg' ]);
2008-03-23 21:32:54 +00:00
list ( $entry [ 'program' ], $entry [ 'msg' ]) = explode ( "||" , $entry [ 'msg' ]);
2008-11-26 14:01:09 +00:00
$entry [ 'msg' ] = preg_replace ( "/^[0-9]+:/" , "" , $entry [ 'msg' ]);
2008-11-28 12:59:33 +00:00
2011-03-11 18:03:49 +00:00
if ( ! $entry [ 'program' ])
{
2008-11-28 12:59:33 +00:00
$entry [ 'msg' ] = preg_replace ( "/^([0-9A-Z\-]+?):\ /" , " \\ 1||" , $entry [ 'msg' ]);
list ( $entry [ 'program' ], $entry [ 'msg' ]) = explode ( "||" , $entry [ 'msg' ]);
}
2009-04-11 19:10:48 +00:00
if ( ! $entry [ 'msg' ]) { $entry [ 'msg' ] = $entry [ 'program' ]; unset ( $entry [ 'program' ]); }
2008-11-28 12:59:33 +00:00
2011-03-11 18:03:49 +00:00
}
else
{
2008-03-23 21:32:54 +00:00
$program = preg_quote ( $entry [ 'program' ], '/' );
$entry [ 'msg' ] = preg_replace ( "/^ $program :\ /" , "" , $entry [ 'msg' ]);
2010-06-13 14:39:09 +00:00
# if(preg_match("/^[a-zA-Z\/]+\[[0-9]+\]:/", $entry['msg'])) {
2008-03-23 21:32:54 +00:00
$entry [ 'msg' ] = preg_replace ( "/^(.+?)\[[0-9]+\]:\ /" , " \\ 1||" , $entry [ 'msg' ]);
2010-06-13 14:39:09 +00:00
if ( ! strstr ( $entry [ 'msg' ], "||" )) { $entry [ 'msg' ] = preg_replace ( "/^(.+?):\ /" , " \\ 1||" , $entry [ 'msg' ]);}
2008-03-23 21:32:54 +00:00
list ( $entry [ 'program' ], $entry [ 'msg' ]) = explode ( "||" , $entry [ 'msg' ]);
2010-06-13 14:39:09 +00:00
$entry [ 'program' ] = preg_replace ( "@\-[0-9]+@" , "" , $entry [ 'program' ]);
# }
2008-03-23 21:32:54 +00:00
}
2010-06-13 14:39:09 +00:00
$entry [ 'program' ] = strtoupper ( $entry [ 'program' ]);
2010-02-21 11:58:07 +00:00
$x = "UPDATE `syslog` set `device_id` = '" . $entry [ 'device_id' ] . "', `program` = '" . $entry [ 'program' ] . "', `msg` = '" . mres ( $entry [ 'msg' ]) . "', processed = '1' WHERE `seq` = '" . $entry [ 'seq' ] . "'" ;
2010-02-19 01:40:38 +00:00
$x = "INSERT INTO `syslog` (`device_id`,`program`,`facility`,`priority`, `level`, `tag`, `msg`, `timestamp`) " ;
2011-03-11 18:03:49 +00:00
$x .= "VALUES ('" . $entry [ 'device_id' ] . "','" . $entry [ 'program' ] . "','" . $entry [ 'facility' ] . "','" . $entry [ 'priority' ] . "', '" . $entry [ 'level' ] . "', '" . $entry [ 'tag' ] . "', '" . $entry [ 'msg' ] . "','" . $entry [ 'timestamp' ] . "')" ;
2010-02-19 23:57:50 +00:00
if ( $update && $entry [ 'device_id' ]) { mysql_query ( $x ); }
2008-03-23 21:32:54 +00:00
unset ( $fix );
2010-02-25 01:52:32 +00:00
} else { print_r ( $entry ); echo ( "D- $delete " );}
2008-03-23 21:32:54 +00:00
2011-03-11 18:03:49 +00:00
return $entry ;
2008-03-23 21:32:54 +00:00
}
2011-03-11 18:03:49 +00:00
?>