diff --git a/bin/src/stats.rs b/bin/src/stats.rs index 9759167..821f98f 100644 --- a/bin/src/stats.rs +++ b/bin/src/stats.rs @@ -7,6 +7,7 @@ use axum::extract::State; use axum::http::StatusCode; use axum::Json; use log::error; +use rayhunter::util::RuntimeMetadata; use serde::Serialize; use tokio::process::Command; @@ -14,6 +15,7 @@ use tokio::process::Command; pub struct SystemStats { pub disk_stats: DiskStats, pub memory_stats: MemoryStats, + pub runtime_metadata: RuntimeMetadata, } impl SystemStats { @@ -21,6 +23,7 @@ impl SystemStats { Ok(Self { disk_stats: DiskStats::new(qmdl_path).await?, memory_stats: MemoryStats::new().await?, + runtime_metadata: RuntimeMetadata::new(), }) } } diff --git a/bin/web/src/lib/components/ManifestTableRow.svelte b/bin/web/src/lib/components/ManifestTableRow.svelte index cd49e43..8f7587f 100644 --- a/bin/web/src/lib/components/ManifestTableRow.svelte +++ b/bin/web/src/lib/components/ManifestTableRow.svelte @@ -15,31 +15,40 @@ timeStyle: "long", dateStyle: "short", }); - let normal_row_color = i % 2 == 0 ? "bg-white" : "bg-gray-100"; - let row_color = current ? "bg-green-100" : normal_row_color; + let alternating_row_color = $derived(i % 2 == 0 ? "bg-white" : "bg-gray-100"); + let status_row_color = $derived.by(() => { + const num_warnings = entry.get_num_warnings(); + if (num_warnings !== undefined && num_warnings > 0) { + return "bg-red-100"; + } + return current ? "bg-green-100" : alternating_row_color + }); let analysis_visible = $state(false); + function toggle_analysis_visibility() { + analysis_visible = !analysis_visible; + } - + {entry.name} {date_formatter.format(entry.start_time)} {date_formatter.format(entry.last_message_time)} {entry.qmdl_size_bytes} - - - { analysis_visible = !analysis_visible; }} entry={entry} /> + + + {#if current} {:else} {/if} - + diff --git a/bin/web/src/lib/components/SystemStatsTable.svelte b/bin/web/src/lib/components/SystemStatsTable.svelte index 8265b9a..4d4b72d 100644 --- a/bin/web/src/lib/components/SystemStatsTable.svelte +++ b/bin/web/src/lib/components/SystemStatsTable.svelte @@ -10,6 +10,12 @@

System Stats

+ + + +
+ Rayhunter version + {stats.runtime_metadata.rayhunter_version}
Storage diff --git a/bin/web/src/lib/manifest.svelte.ts b/bin/web/src/lib/manifest.svelte.ts index f8f0ea8..bb5d607 100644 --- a/bin/web/src/lib/manifest.svelte.ts +++ b/bin/web/src/lib/manifest.svelte.ts @@ -69,19 +69,26 @@ export class ManifestEntry { } } - getPcapUrl(): string { + get_num_warnings(): number | undefined { + if (this.analysis_report === undefined || typeof(this.analysis_report) === 'string') { + return undefined; + } + return this.analysis_report.statistics.num_warnings; + } + + get_pcap_url(): string { return `/api/pcap/${this.name}`; } - getQmdlUrl(): string { + get_qmdl_url(): string { return `/api/qmdl/${this.name}`; } - getAnalysisReportUrl(): string { + get_analysis_report_url(): string { return `/api/analysis-report/${this.name}`; } - getDeleteUrl(): string { + get_delete_url(): string { return `/api/delete-recording/${this.name}`; } } diff --git a/bin/web/src/lib/systemStats.ts b/bin/web/src/lib/systemStats.ts index 41d1386..4fe5fb3 100644 --- a/bin/web/src/lib/systemStats.ts +++ b/bin/web/src/lib/systemStats.ts @@ -1,6 +1,13 @@ export interface SystemStats { disk_stats: DiskStats; memory_stats: MemoryStats; + runtime_metadata: RuntimeMetadata; +} + +export interface RuntimeMetadata { + rayhunter_version: string, + system_os: string, + arch: string, } export interface DiskStats {