From 950280a97b4b2acf6505b242acac392ba7f55ca5 Mon Sep 17 00:00:00 2001 From: anti Date: Tue, 7 Apr 2026 15:56:45 -0400 Subject: [PATCH] feat: render structured syslog tags and msg in Dashboard --- decnet_web/src/components/Dashboard.tsx | 52 ++++++++++++++++++++----- 1 file changed, 43 insertions(+), 9 deletions(-) diff --git a/decnet_web/src/components/Dashboard.tsx b/decnet_web/src/components/Dashboard.tsx index 27e9ae9..bb1ea13 100644 --- a/decnet_web/src/components/Dashboard.tsx +++ b/decnet_web/src/components/Dashboard.tsx @@ -17,6 +17,8 @@ interface LogEntry { event_type: string | null; attacker_ip: string; raw_line: string; + fields: string | null; + msg: string | null; } interface DashboardProps { @@ -88,15 +90,47 @@ const Dashboard: React.FC = ({ searchQuery }) => { - {logs.length > 0 ? logs.map(log => ( - - {new Date(log.timestamp).toLocaleString()} - {log.decky} - {log.service} - {log.attacker_ip} - {log.raw_line} - - )) : ( + {logs.length > 0 ? logs.map(log => { + let parsedFields: Record = {}; + if (log.fields) { + try { + parsedFields = JSON.parse(log.fields); + } catch (e) { + // Ignore parsing errors + } + } + + return ( + + {new Date(log.timestamp).toLocaleString()} + {log.decky} + {log.service} + {log.attacker_ip} + +
+
+ {log.event_type} {log.msg && log.msg !== '-' && — {log.msg}} +
+ {Object.keys(parsedFields).length > 0 && ( +
+ {Object.entries(parsedFields).map(([k, v]) => ( + + {k}: {v} + + ))} +
+ )} +
+ + + ); + }) : ( NO INTERACTION DETECTED