authorize('manage', $vm); $data = $request->validate([ 'direction' => ['required', Rule::in(['in', 'out'])], 'action' => ['required', Rule::in(['ACCEPT', 'DROP', 'REJECT'])], 'protocol' => ['required', Rule::in(['tcp', 'udp', 'icmp'])], 'port' => ['nullable', 'string', 'max:32'], 'source' => ['nullable', 'string', 'max:64'], ]); $vm->firewallRules()->create([ ...$data, 'sort_order' => $vm->firewallRules()->count(), ]); try { $firewall->syncToProxmox($vm); } catch (\Throwable $e) { return back()->with('warning', 'Regel gespeichert, Proxmox-Sync fehlgeschlagen: '.$e->getMessage()); } return back()->with('success', 'Firewall-Regel hinzugefügt.'); } public function destroy(Customer $vm, int $rule, FirewallService $firewall): RedirectResponse { $this->authorize('manage', $vm); $vm->firewallRules()->whereKey($rule)->delete(); try { $firewall->syncToProxmox($vm); } catch (\Throwable) { // } return back()->with('success', 'Regel entfernt.'); } }