Add static/js/pages/firewall.js
This commit is contained in:
parent
ed6eafc1f2
commit
bea2752ae0
1 changed files with 80 additions and 0 deletions
80
static/js/pages/firewall.js
Normal file
80
static/js/pages/firewall.js
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
document.addEventListener("DOMContentLoaded", function () {
|
||||
fetchFirewallData();
|
||||
});
|
||||
|
||||
function renderRulesets(container, rulesets, ipVersion) {
|
||||
container.innerHTML = "";
|
||||
|
||||
if (!rulesets || rulesets.length === 0) {
|
||||
container.innerHTML = `<p class="text-muted">No ${ipVersion} firewall rulesets found.</p>`;
|
||||
return;
|
||||
}
|
||||
|
||||
rulesets.forEach(ruleset => {
|
||||
const card = document.createElement("div");
|
||||
card.className = "card mb-4";
|
||||
|
||||
let tableRows = '';
|
||||
ruleset.rules.forEach(rule => {
|
||||
tableRows += `
|
||||
<tr>
|
||||
<td>${rule.rule}</td>
|
||||
<td>${rule.action}</td>
|
||||
<td>${rule.protocol}</td>
|
||||
<td>${rule.packets}</td>
|
||||
<td>${rule.bytes}</td>
|
||||
<td style="word-break: break-all;">${rule.conditions}</td>
|
||||
</tr>
|
||||
`;
|
||||
});
|
||||
|
||||
card.innerHTML = `
|
||||
<div class="card-header">
|
||||
<strong>Firewall:</strong> ${ruleset.name}
|
||||
</div>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped table-bordered mb-0">
|
||||
<thead class="table-light">
|
||||
<tr>
|
||||
<th>Rule</th>
|
||||
<th>Action</th>
|
||||
<th>Protocol</th>
|
||||
<th>Packets</th>
|
||||
<th>Bytes</th>
|
||||
<th>Conditions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
${tableRows}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
`;
|
||||
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 = `<div class="alert alert-danger">Error loading IPv4 firewall data.</div>`;
|
||||
ipv6Container.innerHTML = `<div class="alert alert-danger">Error loading IPv6 firewall data.</div>`;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue