diff --git a/extensions/Servers/Proxmox/views/firewall.blade.php b/extensions/Servers/Proxmox/views/firewall.blade.php index 7726d51df..3ffcd0241 100644 --- a/extensions/Servers/Proxmox/views/firewall.blade.php +++ b/extensions/Servers/Proxmox/views/firewall.blade.php @@ -1601,123 +1601,455 @@ @click="showStateModal = false" @keydown.escape.window="showStateModal = false" class="fixed inset-0 z-50 bg-black/50 backdrop-blur-sm flex items-center justify-center p-4" - style="display: none;"> -
+ style="display: none;" + x-data="{ + activeTab: 'overview', + parseRawLog(raw) { + if (!raw) return {}; + const fields = {}; + // Parse common firewall log fields + const patterns = { + LEN: /LEN=(\d+)/, + TOS: /TOS=(0x[0-9A-Fa-f]+)/, + PREC: /PREC=(0x[0-9A-Fa-f]+)/, + TTL: /TTL=(\d+)/, + ID: /ID=(\d+)/, + DF: /\bDF\b/, + MF: /\bMF\b/, + FRAG: /FRAG=(\d+)/, + WINDOW: /WINDOW=(\d+)/, + RES: /RES=(0x[0-9A-Fa-f]+)/, + SYN: /\bSYN\b/, + ACK: /\bACK\b/, + FIN: /\bFIN\b/, + RST: /\bRST\b/, + PSH: /\bPSH\b/, + URG: /\bURG\b/, + URGP: /URGP=(\d+)/, + SEQ: /SEQ=(\d+)/, + TYPE: /TYPE=(\d+)/, + CODE: /CODE=(\d+)/ + }; + + for (const [key, pattern] of Object.entries(patterns)) { + const match = raw.match(pattern); + if (match) { + fields[key] = match[1] || 'Yes'; + } + } + return fields; + } + }"> +
-
- -
-
+ +
+
+
-
-

Connection State

-

+
+
+

Firewall Event Details

+ +
+
+ + +
+
+
+
+ + +
+ + + +
+ + +
+ + +
+ + +
+
+ +

Connection Flow

+
+
+ +
+
+
+ +
+ Source +
+
+
+
IP Address
+
+
+
+
Port
+
+
+
+
+ + +
+ +
+
+ + +
+
+
+ +
+ Destination +
+
+
+
IP Address
+
+
+
+
Port
+
+
+
+
+
+
+ + +
+
+
Protocol
+
+
+
+
Level
+
+ +
+
+
+
Interface
+
+
+
+
MAC Address
+
+
- -
- -
- - -
- -
-
- - Source + +
+ + +
+
+ +

IP Header

-
-
- IP Address -

-
-
- Port -

-
+
+ + + + +
+ + +
- -
-
- - Destination -
-
-
- IP Address -

+ + - -
-
-
- Protocol -

+ + - -