refactor: remove unused aliases and IP sets sections from Proxmox Firewall view to streamline interface and improve user experience
This commit is contained in:
@@ -274,161 +274,11 @@
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<!-- Aliases Card -->
|
||||
<div class="bg-background border border-neutral rounded-lg p-6">
|
||||
<div class="flex items-center justify-between mb-4">
|
||||
<div class="flex items-center gap-3">
|
||||
<div class="flex items-center justify-center w-10 h-10 rounded-lg bg-primary/10">
|
||||
<x-ri-bookmark-line class="size-5 text-primary" />
|
||||
</div>
|
||||
<div>
|
||||
<h2 class="text-xl font-semibold">Aliases</h2>
|
||||
<p class="text-sm text-base/60 mt-1">Create named aliases for IP addresses and networks</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Create Alias Form -->
|
||||
<div class="bg-background-secondary border border-neutral/20 rounded-lg p-4 mb-4">
|
||||
<h3 class="text-lg font-semibold mb-4">Create New Alias</h3>
|
||||
<div class="grid grid-cols-1 md:grid-cols-3 gap-4">
|
||||
<div>
|
||||
<label class="block text-sm font-medium mb-2">Name</label>
|
||||
<input type="text" wire:model="aliasName" placeholder="e.g., trusted-network" class="w-full px-3 py-2 border border-neutral rounded-lg bg-background">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium mb-2">CIDR</label>
|
||||
<input type="text" wire:model="aliasCidr" placeholder="e.g., 192.168.1.0/24" class="w-full px-3 py-2 border border-neutral rounded-lg bg-background">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium mb-2">Comment</label>
|
||||
<input type="text" wire:model="aliasComment" placeholder="Optional description" class="w-full px-3 py-2 border border-neutral rounded-lg bg-background">
|
||||
</div>
|
||||
</div>
|
||||
<button
|
||||
wire:click="createAlias"
|
||||
wire:loading.attr="disabled"
|
||||
class="mt-4 px-4 py-2 bg-primary text-white rounded-lg hover:bg-primary/90 transition-colors text-sm font-medium">
|
||||
Create Alias
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<!-- Aliases Table -->
|
||||
@if(count($aliases) > 0)
|
||||
<div class="overflow-x-auto">
|
||||
<table class="w-full border-collapse">
|
||||
<thead>
|
||||
<tr class="border-b border-neutral">
|
||||
<th class="text-left py-3 px-4 font-semibold text-sm">Name</th>
|
||||
<th class="text-left py-3 px-4 font-semibold text-sm">CIDR</th>
|
||||
<th class="text-left py-3 px-4 font-semibold text-sm">Comment</th>
|
||||
<th class="text-left py-3 px-4 font-semibold text-sm">Actions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($aliases as $alias)
|
||||
<tr class="border-b border-neutral/20 hover:bg-background-secondary/50">
|
||||
<td class="py-3 px-4 text-sm font-medium">{{ $alias['name'] ?? '-' }}</td>
|
||||
<td class="py-3 px-4 text-sm"><code>{{ $alias['cidr'] ?? '-' }}</code></td>
|
||||
<td class="py-3 px-4 text-sm">{{ $alias['comment'] ?? '-' }}</td>
|
||||
<td class="py-3 px-4 text-sm">
|
||||
<button
|
||||
wire:click="deleteAlias('{{ $alias['name'] ?? '' }}')"
|
||||
wire:confirm="Are you sure you want to delete this alias?"
|
||||
class="text-error hover:text-error/80 transition-colors">
|
||||
<x-ri-delete-bin-line class="size-4" />
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@else
|
||||
<div class="text-center py-8 text-base/60">
|
||||
<x-ri-bookmark-line class="size-12 mx-auto mb-3 opacity-50" />
|
||||
<p>No aliases configured</p>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<!-- IP Sets Card -->
|
||||
<div class="bg-background border border-neutral rounded-lg p-6">
|
||||
<div class="flex items-center justify-between mb-4">
|
||||
<div class="flex items-center gap-3">
|
||||
<div class="flex items-center justify-center w-10 h-10 rounded-lg bg-primary/10">
|
||||
<x-ri-stack-line class="size-5 text-primary" />
|
||||
</div>
|
||||
<div>
|
||||
<h2 class="text-xl font-semibold">IP Sets</h2>
|
||||
<p class="text-sm text-base/60 mt-1">Manage sets of IP addresses for use in firewall rules</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Create IP Set Form -->
|
||||
<div class="bg-background-secondary border border-neutral/20 rounded-lg p-4 mb-4">
|
||||
<h3 class="text-lg font-semibold mb-4">Create New IP Set</h3>
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
|
||||
<div>
|
||||
<label class="block text-sm font-medium mb-2">Name</label>
|
||||
<input type="text" wire:model="ipsetName" placeholder="e.g., blocked-ips" class="w-full px-3 py-2 border border-neutral rounded-lg bg-background">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium mb-2">Comment</label>
|
||||
<input type="text" wire:model="ipsetComment" placeholder="Optional description" class="w-full px-3 py-2 border border-neutral rounded-lg bg-background">
|
||||
</div>
|
||||
</div>
|
||||
<button
|
||||
wire:click="createIpset"
|
||||
wire:loading.attr="disabled"
|
||||
class="mt-4 px-4 py-2 bg-primary text-white rounded-lg hover:bg-primary/90 transition-colors text-sm font-medium">
|
||||
Create IP Set
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<!-- IP Sets Table -->
|
||||
@if(count($ipsets) > 0)
|
||||
<div class="overflow-x-auto">
|
||||
<table class="w-full border-collapse">
|
||||
<thead>
|
||||
<tr class="border-b border-neutral">
|
||||
<th class="text-left py-3 px-4 font-semibold text-sm">Name</th>
|
||||
<th class="text-left py-3 px-4 font-semibold text-sm">Comment</th>
|
||||
<th class="text-left py-3 px-4 font-semibold text-sm">Actions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($ipsets as $ipset)
|
||||
<tr class="border-b border-neutral/20 hover:bg-background-secondary/50">
|
||||
<td class="py-3 px-4 text-sm font-medium">{{ $ipset['name'] ?? '-' }}</td>
|
||||
<td class="py-3 px-4 text-sm">{{ $ipset['comment'] ?? '-' }}</td>
|
||||
<td class="py-3 px-4 text-sm">
|
||||
<button
|
||||
wire:click="deleteIpset('{{ $ipset['name'] ?? '' }}')"
|
||||
wire:confirm="Are you sure you want to delete this IP set?"
|
||||
class="text-error hover:text-error/80 transition-colors">
|
||||
<x-ri-delete-bin-line class="size-4" />
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@else
|
||||
<div class="text-center py-8 text-base/60">
|
||||
<x-ri-stack-line class="size-12 mx-auto mb-3 opacity-50" />
|
||||
<p>No IP sets configured</p>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
@else
|
||||
<div class="bg-background-secondary border border-neutral/20 rounded-lg p-8 text-center">
|
||||
<x-ri-shield-line class="size-16 mx-auto mb-4 opacity-50" />
|
||||
<h3 class="text-lg font-semibold mb-2">Firewall is Disabled</h3>
|
||||
<p class="text-base/60">Enable the firewall above to manage rules, aliases, and IP sets.</p>
|
||||
<p class="text-base/60">Enable the firewall above to manage firewall rules.</p>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user