diff --git a/extensions/Servers/Proxmox/Livewire/Firewall.php b/extensions/Servers/Proxmox/Livewire/Firewall.php index 3ffbd1367..e74f0cb03 100644 --- a/extensions/Servers/Proxmox/Livewire/Firewall.php +++ b/extensions/Servers/Proxmox/Livewire/Firewall.php @@ -124,6 +124,83 @@ class Firewall extends Component 'Whois' => 'Whois' ]; + // Macro Definitions with ports and protocols (as per Proxmox) + protected array $macroDefinitions = [ + 'Amanda' => ['proto' => 'tcp', 'dport' => '10080,10081,10082,10083'], + 'Auth' => ['proto' => 'tcp', 'dport' => '113'], + 'BGP' => ['proto' => 'tcp', 'dport' => '179'], + 'BitTorrent' => ['proto' => 'tcp', 'dport' => '6881:6889'], + 'BitTorrent32' => ['proto' => 'tcp', 'dport' => '32768:65535'], + 'Ceph' => ['proto' => 'tcp', 'dport' => '6789,6800:7300'], + 'CVSup' => ['proto' => 'tcp', 'dport' => '5999'], + 'DHCPfwd' => ['proto' => 'udp', 'dport' => '67:68'], + 'DHCPv6fwd' => ['proto' => 'udp', 'dport' => '546:547'], + 'DNS' => ['proto' => 'udp', 'dport' => '53'], + 'Distcc' => ['proto' => 'tcp', 'dport' => '3632'], + 'FTP' => ['proto' => 'tcp', 'dport' => '21'], + 'Git' => ['proto' => 'tcp', 'dport' => '9418'], + 'HKP' => ['proto' => 'tcp', 'dport' => '11371'], + 'HTTP' => ['proto' => 'tcp', 'dport' => '80'], + 'HTTPS' => ['proto' => 'tcp', 'dport' => '443'], + 'ICPV2' => ['proto' => 'udp', 'dport' => '3130'], + 'IMAP' => ['proto' => 'tcp', 'dport' => '143'], + 'IMAPS' => ['proto' => 'tcp', 'dport' => '993'], + 'IPsec' => ['proto' => 'udp', 'dport' => '500'], + 'IPsecah' => ['proto' => 'ah', 'dport' => ''], + 'IPsecnat' => ['proto' => 'udp', 'dport' => '4500'], + 'IRC' => ['proto' => 'tcp', 'dport' => '6667'], + 'Jetdirect' => ['proto' => 'tcp', 'dport' => '9100'], + 'L2TP' => ['proto' => 'udp', 'dport' => '1701'], + 'LDAP' => ['proto' => 'tcp', 'dport' => '389'], + 'LDAPS' => ['proto' => 'tcp', 'dport' => '636'], + 'MSNP' => ['proto' => 'tcp', 'dport' => '1863'], + 'MSSQL' => ['proto' => 'tcp', 'dport' => '1433'], + 'Mail' => ['proto' => 'tcp', 'dport' => '25,465,587'], + 'NFS' => ['proto' => 'tcp', 'dport' => '111,2049'], + 'NNTP' => ['proto' => 'tcp', 'dport' => '119'], + 'NNTPS' => ['proto' => 'tcp', 'dport' => '563'], + 'NTP' => ['proto' => 'udp', 'dport' => '123'], + 'OSPF' => ['proto' => 'ospf', 'dport' => ''], + 'OpenVPN' => ['proto' => 'udp', 'dport' => '1194'], + 'PCA' => ['proto' => 'tcp', 'dport' => '5631'], + 'PMG' => ['proto' => 'tcp', 'dport' => '26'], + 'POP3' => ['proto' => 'tcp', 'dport' => '110'], + 'POP3S' => ['proto' => 'tcp', 'dport' => '995'], + 'PPtP' => ['proto' => 'tcp', 'dport' => '1723'], + 'Ping' => ['proto' => 'icmp', 'dport' => ''], + 'PostgreSQL' => ['proto' => 'tcp', 'dport' => '5432'], + 'Printer' => ['proto' => 'tcp', 'dport' => '515'], + 'RDP' => ['proto' => 'tcp', 'dport' => '3389'], + 'RIP' => ['proto' => 'udp', 'dport' => '520'], + 'RNDC' => ['proto' => 'tcp', 'dport' => '953'], + 'Razor' => ['proto' => 'tcp', 'dport' => '2703'], + 'Rsyncd' => ['proto' => 'tcp', 'dport' => '873'], + 'SANE' => ['proto' => 'tcp', 'dport' => '6566'], + 'SMB' => ['proto' => 'tcp', 'dport' => '445'], + 'SMTP' => ['proto' => 'tcp', 'dport' => '25'], + 'SMTPS' => ['proto' => 'tcp', 'dport' => '465'], + 'SNMP' => ['proto' => 'udp', 'dport' => '161,162'], + 'SPAMD' => ['proto' => 'tcp', 'dport' => '783'], + 'SSH' => ['proto' => 'tcp', 'dport' => '22'], + 'SVN' => ['proto' => 'tcp', 'dport' => '3690'], + 'SixXS' => ['proto' => 'tcp', 'dport' => '3874'], + 'SpiceProxy' => ['proto' => 'tcp', 'dport' => '3128'], + 'Squid' => ['proto' => 'tcp', 'dport' => '3128'], + 'Submission' => ['proto' => 'tcp', 'dport' => '587'], + 'Syslog' => ['proto' => 'udp', 'dport' => '514'], + 'TFTP' => ['proto' => 'udp', 'dport' => '69'], + 'Telnet' => ['proto' => 'tcp', 'dport' => '23'], + 'Telnets' => ['proto' => 'tcp', 'dport' => '992'], + 'Time' => ['proto' => 'tcp', 'dport' => '37'], + 'Trcrt' => ['proto' => 'udp', 'dport' => '33434:33524'], + 'VNC' => ['proto' => 'tcp', 'dport' => '5900:5909'], + 'VNCL' => ['proto' => 'tcp', 'dport' => '5500:5509'], + 'Web' => ['proto' => 'tcp', 'dport' => '80,443'], + 'Webcache' => ['proto' => 'tcp', 'dport' => '3128,8080'], + 'Webmin' => ['proto' => 'tcp', 'dport' => '10000'], + 'Whois' => ['proto' => 'tcp', 'dport' => '43'], + ]; + // IP Aliases public array $aliases = []; public bool $showAliasForm = false; @@ -464,6 +541,22 @@ class Firewall extends Component } // ==================== RULES ==================== + + /** + * Get macro definitions for frontend use + */ + public function getMacroDefinitionsProperty(): array + { + return $this->macroDefinitions; + } + + /** + * Get details for a specific macro + */ + public function getMacroDetails(string $macro): ?array + { + return $this->macroDefinitions[$macro] ?? null; + } protected function loadFirewallRules(): void { diff --git a/extensions/Servers/Proxmox/views/firewall.blade.php b/extensions/Servers/Proxmox/views/firewall.blade.php index 9b5f22787..458ac996a 100644 --- a/extensions/Servers/Proxmox/views/firewall.blade.php +++ b/extensions/Servers/Proxmox/views/firewall.blade.php @@ -1116,7 +1116,25 @@ {{-- Rule Form Modal --}} @if($showRuleForm) -