diff --git a/html/includes/print-syslog.inc b/html/includes/print-syslog.inc index 92a3277d1..9c25aad1e 100644 --- a/html/includes/print-syslog.inc +++ b/html/includes/print-syslog.inc @@ -1,12 +1,15 @@ + echo(" "); echo("" . $entry['date'] . ""); diff --git a/html/pages/front/default.php b/html/pages/front/default.php index 57e51fb98..14a508e60 100644 --- a/html/pages/front/default.php +++ b/html/pages/front/default.php @@ -102,7 +102,10 @@ if($config['enable_syslog']) { $sql = "SELECT *, DATE_FORMAT(datetime, '%D %b %T') AS date from syslog ORDER BY datetime DESC LIMIT 20"; $query = mysql_query($sql); echo(""); - while($entry = mysql_fetch_array($query)) { include("includes/print-syslog.inc"); } + while($entry = mysql_fetch_array($query)) { + $entry = array_merge($entry, device_by_id_cache($entry['device_id'])); + include("includes/print-syslog.inc"); + } echo("
"); echo(""); ## Close Syslog Div diff --git a/html/pages/front/demo.php b/html/pages/front/demo.php index 5ef2ace91..2706db9e9 100644 --- a/html/pages/front/demo.php +++ b/html/pages/front/demo.php @@ -72,8 +72,8 @@ echo("

Recent Syslog Messages

"); - -$sql = "SELECT *, DATE_FORMAT(datetime, '%D %b %T') AS date from syslog ORDER BY datetime DESC LIMIT 20"; +$sql = "SELECT *, DATE_FORMAT(datetime, '%D %b %T') AS date from syslog AS S, devices AS D + WHERE S.device_id = D.device_id ORDER BY datetime DESC LIMIT 20"; $query = mysql_query($sql); echo(""); while($entry = mysql_fetch_array($query)) { include("includes/print-syslog.inc"); } diff --git a/html/pages/syslog.php b/html/pages/syslog.php index 76fe8a1fe..1b61aced9 100644 --- a/html/pages/syslog.php +++ b/html/pages/syslog.php @@ -67,7 +67,10 @@ if($_SESSION['userlevel'] >= '5') { $query = mysql_query($sql); echo("
"); -while($entry = mysql_fetch_array($query)) { include("includes/print-syslog.inc"); } +while($entry = mysql_fetch_array($query)) { + $entry = array_merge($entry, device_by_id_cache($entry['device_id'])); + include("includes/print-syslog.inc"); +} echo("
"); ?> diff --git a/includes/functions.php b/includes/functions.php index 26acb016a..37f848e6c 100755 --- a/includes/functions.php +++ b/includes/functions.php @@ -24,6 +24,17 @@ require('collectd/config.php'); require('collectd/functions.php'); require('collectd/definitions.php'); +function device_by_id_cache($device_id) { + global $device_cache; + if(is_array($device_cache[$device_id])) { + $device = $device_cache[$device_id]; + } else { + $device = mysql_fetch_array(mysql_query("SELECT * FROM `devices` WHERE `device_id` = '".$device_id."'")); + $device_cache[$device_id] = $device; + } + return $device; +} + function mac_clean_to_readable($mac){ $r = substr($mac, 0, 2); diff --git a/includes/syslog.php b/includes/syslog.php index fa1b3e885..20a4ee2b8 100755 --- a/includes/syslog.php +++ b/includes/syslog.php @@ -13,17 +13,23 @@ function process_syslog ($entry, $update) { $device_id_host = @mysql_result(mysql_query("SELECT device_id FROM devices WHERE `hostname` = '".$entry['host']."'"),0); if($device_id_host) { - $device_id = $device_id_host; + $entry['device_id'] = $device_id_host; } else { - $device_id_ip = @mysql_result(mysql_query("SELECT D.device_id as device_id FROM ipv4_addresses AS A, interfaces AS I, devices AS D WHERE A.ipv4_address = '" . $entry['host']."' AND I.interface_id = A.interface_id AND D.device_id = I.device_id"),0); + $device_id_ip = @mysql_result(mysql_query("SELECT device_id FROM ipv4_addresses AS A, interfaces AS I WHERE + A.ipv4_address = '" . $entry['host']."' AND I.interface_id = A.interface_id"),0); + + echo("SELECT device_id FROM ipv4_addresses AS A, interfaces AS I WHERE + A.ipv4_address = '" . $entry['host']."' AND I.interface_id = A.interface_id"); + if($device_id_ip) { - $device_id = $device_id_ip; + $entry['device_id'] = $device_id_ip; } } - if($device_id && !$delete) { - $entry['device_id'] = $device_id; - $os = mysql_result(mysql_query("SELECT `os` FROM `devices` WHERE `device_id` = '$device_id'"),0); + print_r($entry); + + if($entry['device_id'] && !$delete) { + $os = mysql_result(mysql_query("SELECT `os` FROM `devices` WHERE `device_id` = '".$entry['device_id']."'"),0); if($os == "ios" || $os == "iosxe") { if(strstr($entry[msg], "%")) { $entry['msg'] = preg_replace("/^%(.+?):\ /", "\\1||", $entry['msg']); @@ -58,9 +64,9 @@ function process_syslog ($entry, $update) { list($entry['program'], $entry['msg']) = explode("||", $entry['msg']); } } - $x = "UPDATE `syslog` set `device_id` = '$device_id', `program` = '".$entry['program']."', `msg` = '" . mysql_real_escape_string($entry['msg']) . "', processed = '1' WHERE `seq` = '" . $entry['seq'] . "'"; + $x = "UPDATE `syslog` set `device_id` = '".$entry['device_id']."', `program` = '".$entry['program']."', `msg` = '" . mysql_real_escape_string($entry['msg']) . "', processed = '1' WHERE `seq` = '" . $entry['seq'] . "'"; $entry['processed'] = 1; - if($update) { mysql_query($x); } + if($update) { mysql_query($x); echo($x); } unset ($fix); } else { $x = "DELETE FROM `syslog` where `seq` = '" . $entry['seq'] . "'";