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'] . "'";