document.addEventListener("DOMContentLoaded", function () { fetchFirewallData(); }); function renderRulesets(container, rulesets, ipVersion) { container.innerHTML = ""; if (!rulesets || rulesets.length === 0) { container.innerHTML = `

No ${ipVersion} firewall rulesets found.

`; return; } rulesets.forEach(ruleset => { const card = document.createElement("div"); card.className = "card mb-4"; let tableRows = ''; ruleset.rules.forEach(rule => { const logUrl = `/firewall/log/${ipVersion.toLowerCase()}/${ruleset.name}/${rule.rule}`; tableRows += ` ${rule.rule} ${rule.action} ${rule.protocol} ${rule.packets} ${rule.bytes} ${rule.conditions} Logs `; }); card.innerHTML = `
Firewall: ${ruleset.name}
${tableRows}
Rule Action Protocol Packets Bytes Conditions Actions
`; container.appendChild(card); }); } async function fetchFirewallData() { const ipv4Container = document.getElementById("ipv4-rulesets-container"); const ipv6Container = document.getElementById("ipv6-rulesets-container"); try { const response = await fetch("/firewall/json"); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } const data = await response.json(); if (data.error) { throw new Error(data.details || data.error); } renderRulesets(ipv4Container, data.ipv4, 'IPv4'); renderRulesets(ipv6Container, data.ipv6, 'IPv6'); } catch (error) { console.error("Error fetching firewall data:", error); ipv4Container.innerHTML = `
Error loading IPv4 firewall data.
`; ipv6Container.innerHTML = `
Error loading IPv6 firewall data.
`; } }