From 081534a412421e910f1da2af903c40b15689640c Mon Sep 17 00:00:00 2001 From: "Joseph.Rawlings" Date: Thu, 4 Dec 2025 18:46:14 -0500 Subject: [PATCH] refactor: update Proxmox firewall view to improve UI elements, enhance log parsing with debug logging, and streamline network adapter management --- .../Servers/Proxmox/Livewire/Firewall.php | 15 +- .../Servers/Proxmox/views/firewall.blade.php | 152 +++++++++++------- 2 files changed, 105 insertions(+), 62 deletions(-) diff --git a/extensions/Servers/Proxmox/Livewire/Firewall.php b/extensions/Servers/Proxmox/Livewire/Firewall.php index 95b862f33..710b976d0 100644 --- a/extensions/Servers/Proxmox/Livewire/Firewall.php +++ b/extensions/Servers/Proxmox/Livewire/Firewall.php @@ -1250,7 +1250,7 @@ class Firewall extends Component } // Map fields to standardized names - return [ + $parsed = [ 'raw' => $line, 'timestamp' => $fields['timestamp'] ?? '-', 'timestamp_iso' => $this->convertTimestamp($fields['timestamp'] ?? ''), @@ -1267,6 +1267,19 @@ class Firewall extends Component 'protocol' => $fields['proto'] ?? '-', 'mac' => $fields['mac'] ?? '-', ]; + + // Debug log first entry to verify parsing + static $loggedOnce = false; + if (!$loggedOnce && count($fields) > 5) { + Log::info('Firewall log parse sample', [ + 'parsed_fields' => $fields, + 'protocol_value' => $parsed['protocol'], + 'source_value' => $parsed['source'], + ]); + $loggedOnce = true; + } + + return $parsed; } protected function convertTimestamp(string $timestamp): string diff --git a/extensions/Servers/Proxmox/views/firewall.blade.php b/extensions/Servers/Proxmox/views/firewall.blade.php index 37a9b5f61..0a353d96c 100644 --- a/extensions/Servers/Proxmox/views/firewall.blade.php +++ b/extensions/Servers/Proxmox/views/firewall.blade.php @@ -38,27 +38,97 @@
-

Firewall Status

+

Master Firewall Control

@if($firewallEnabled) - Active and protecting your virtual machine + ✓ Active - Your VM is protected by firewall rules @else - Currently disabled - your VM is not protected + ⚠ Disabled - Your VM has no firewall protection @endif

- +
+ {{ $firewallEnabled ? 'Enabled' : 'Disabled' }} + +
+ {{-- Network Adapters - Always Visible --}} +
+
+
+ +
+
+

Network Adapters (Per-Device Firewall)

+

Enable or disable firewall for each network adapter individually

+
+
+ + @if(!$firewallEnabled) +
+
+ +

+ Note: Per-adapter firewall settings can be configured here, but the Master Firewall above must be enabled for these settings to take effect. +

+
+
+ @endif + + @if(count($networkAdapters) > 0) +
+ @foreach($networkAdapters as $adapter) +
+
+
+
+ {{ $adapter['name'] }} + @if($adapterFirewallStates[$adapter['name']] ?? false) + Firewall Active + @else + Firewall Off + @endif +
+
+ Model: {{ ucfirst($adapter['model'] ?? 'Unknown') }} + @if($adapter['mac']) + MAC: {{ $adapter['mac'] }} + @endif +
+
+
+ {{ ($adapterFirewallStates[$adapter['name']] ?? false) ? 'On' : 'Off' }} + +
+
+
+ @endforeach +
+ @else +
+ +

No network adapters found

+
+ @endif +
+ {{-- Firewall Policies & Filters --}} @if($firewallEnabled)
@@ -118,51 +188,6 @@
- {{-- Network Adapters Card --}} -
-
-
- -
-
-

Network Adapters

-

Per-adapter firewall control

-
-
- - @if(count($networkAdapters) > 0) -
- @foreach($networkAdapters as $adapter) -
-
-
-
{{ $adapter['name'] }}
-
- Model: {{ ucfirst($adapter['model'] ?? 'Unknown') }} - @if($adapter['mac']) - MAC: {{ $adapter['mac'] }} - @endif -
-
- -
-
- @endforeach -
- @else -
- -

No network adapters found

-
- @endif -
{{-- Policy Info Modal --}} @@ -799,7 +824,7 @@ - @foreach(array_slice($firewallLogs, 0, 50) as $log) + @foreach(array_slice(array_reverse($firewallLogs), 0, 50) as $log) {{ $log['timestamp'] ?? '-' }} @@ -1056,7 +1081,7 @@ @if(count($firewallLogs) > 50)
- Showing first 50 of {{ count($firewallLogs) }} log entries + Showing latest 50 of {{ count($firewallLogs) }} log entries (most recent first)
@endif @else @@ -1239,11 +1264,16 @@ -
- -