Private
Public Access
1
0

fix(proxmox): harden console sessions and firewall rollout safety

Reduce security and reliability risk across the Proxmox extension by removing password exposure from Livewire state, hardening console auth/cookie handling, and improving sanitized error paths. Improve firewall and router performance by adding safer lazy loading, bounded pagination, cross-server compatibility guards, and lower-overhead API workflows.

Made-with: Cursor
This commit is contained in:
2026-03-28 19:34:46 -04:00
parent 9f996035db
commit 68043f0416
39 changed files with 1106 additions and 5013 deletions

View File

@@ -1,4 +1,4 @@
<x-proxmox::layout :server="$server" view="system" :status="$status" :status-polling="true" :status-polling-interval="'2s'">
<x-proxmox::layout :server="$server" view="system" :status="$status" :status-polling="true" :status-polling-interval="'30s'">
<div class="space-y-6">
<div class="flex items-center gap-1.5 text-xs text-base/50 mb-2">
<a href="{{ route('proxmox.server.overview', ['server' => $server->id]) }}" wire:navigate class="hover:text-primary transition-colors">Overview</a>
@@ -375,7 +375,7 @@
<span class="font-semibold text-base/90">Purpose:</span> UEFI guests require an EFI storage chip to store firmware variables, boot entries, and Secure Boot configuration.
</p>
<p class="block font-sans text-xs font-normal leading-relaxed text-base/75">
<span class="font-semibold text-base/90">Storage:</span> EFI disks are automatically provisioned on cephpool storage with a fixed 4MB size in raw format. Each entry maps to an efidisk slot in the QEMU configuration.
<span class="font-semibold text-base/90">Storage:</span> EFI disks are automatically provisioned on the node storage backend with a fixed 4MB size in raw format. Each entry maps to an efidisk slot in the QEMU configuration.
</p>
<p class="block font-sans text-xs font-normal leading-relaxed text-base/75">
<span class="font-semibold text-base/90">Preenroll Keys:</span> When enabled, Secure Boot keys are pre-enrolled during EFI disk creation, enabling Secure Boot by default for UEFI guests.
@@ -421,7 +421,7 @@
<div class="border border-neutral/60 rounded-md p-3 space-y-2">
<h4 class="text-sm font-semibold">Add EFI Disk</h4>
<div class="grid gap-2">
<p class="text-xs text-base/50">EFI disks are provisioned automatically on cephpool with a fixed 4M size in raw format.</p>
<p class="text-xs text-base/50">EFI disks are provisioned automatically on the configured node storage backend with a fixed 4M size in raw format.</p>
<div class="flex flex-col gap-1">
<label class="inline-flex items-center gap-2 text-xs font-semibold text-base/60">
<input type="checkbox" wire:model="newEfiPreenroll"
@@ -493,7 +493,7 @@
<span class="font-semibold text-base/90">Purpose:</span> Virtual TPM devices expose TPM functionality to the guest OS, enabling features like Secure Boot, BitLocker disk encryption, and Windows Device Guard.
</p>
<p class="block font-sans text-xs font-normal leading-relaxed text-base/75">
<span class="font-semibold text-base/90">Storage:</span> TPM devices are provisioned on cephpool storage with a fixed 4MB state file that stores the TPM's persistent state and keys.
<span class="font-semibold text-base/90">Storage:</span> TPM devices are provisioned on the node storage backend with a fixed 4MB state file that stores the TPM's persistent state and keys.
</p>
<p class="block font-sans text-xs font-normal leading-relaxed text-base/75">
<span class="font-semibold text-base/90">Versions:</span> TPM v2.0 is recommended for modern operating systems and provides better security features. TPM v1.2 is available for legacy compatibility.
@@ -540,7 +540,7 @@
<div class="border border-neutral/60 rounded-md p-3 space-y-2">
<h4 class="text-sm font-semibold">Add TPM Device</h4>
<div class="grid gap-2">
<p class="text-xs text-base/50">TPM devices are provisioned on cephpool with a fixed 4M state file.</p>
<p class="text-xs text-base/50">TPM devices are provisioned on the configured node storage backend with a fixed 4M state file.</p>
<div class="flex flex-col gap-1">
<label class="text-xs font-semibold text-base/60">Version</label>
<select wire:model="newTpmVersion"