Add static/js/pages/rpki.js
This commit is contained in:
parent
0fc752f1e7
commit
acf3c96ad4
1 changed files with 99 additions and 0 deletions
99
static/js/pages/rpki.js
Normal file
99
static/js/pages/rpki.js
Normal file
|
|
@ -0,0 +1,99 @@
|
||||||
|
function lookupRpki() {
|
||||||
|
const rpkiInput = document.getElementById('rpkiInput').value;
|
||||||
|
const rpkiOutput = document.getElementById('rpkiOutput');
|
||||||
|
rpkiOutput.innerHTML = 'Looking up...';
|
||||||
|
|
||||||
|
fetch('/rpki/lookup', {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
},
|
||||||
|
body: JSON.stringify({ query: rpkiInput }),
|
||||||
|
})
|
||||||
|
.then(response => response.json())
|
||||||
|
.then(data => {
|
||||||
|
rpkiOutput.innerHTML = '';
|
||||||
|
|
||||||
|
if (data.prefixes && data.prefixes.length > 0) {
|
||||||
|
const table = document.createElement('table');
|
||||||
|
table.className = 'table table-borderless';
|
||||||
|
|
||||||
|
const thead = document.createElement('thead');
|
||||||
|
thead.innerHTML = `
|
||||||
|
<tr>
|
||||||
|
<th>Prefix</th>
|
||||||
|
<th>Prefix Length</th>
|
||||||
|
<th>Origin-AS</th>
|
||||||
|
</tr>
|
||||||
|
`;
|
||||||
|
table.appendChild(thead);
|
||||||
|
|
||||||
|
const tbody = document.createElement('tbody');
|
||||||
|
data.prefixes.forEach(pfx => {
|
||||||
|
const row = document.createElement('tr');
|
||||||
|
row.innerHTML = `
|
||||||
|
<td>${pfx.prefix}</td>
|
||||||
|
<td>${pfx.length}</td>
|
||||||
|
<td>${pfx.as}</td>
|
||||||
|
`;
|
||||||
|
tbody.appendChild(row);
|
||||||
|
});
|
||||||
|
table.appendChild(tbody);
|
||||||
|
|
||||||
|
rpkiOutput.appendChild(table);
|
||||||
|
|
||||||
|
if (data.summary && data.summary.length > 0) {
|
||||||
|
const summaryDiv = document.createElement('div');
|
||||||
|
summaryDiv.style.marginTop = '1rem';
|
||||||
|
summaryDiv.innerHTML = data.summary.join('<br>');
|
||||||
|
rpkiOutput.appendChild(summaryDiv);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
rpkiOutput.textContent = JSON.stringify(data, null, 2);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
rpkiOutput.textContent = 'Error: ' + error;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function getRpkiStatus() {
|
||||||
|
const rpkiStatusOutput = document.getElementById('rpkiStatusOutput');
|
||||||
|
|
||||||
|
fetch('/rpki/status')
|
||||||
|
.then(response => response.json())
|
||||||
|
.then(servers => {
|
||||||
|
rpkiStatusOutput.innerHTML = '';
|
||||||
|
|
||||||
|
if (servers && servers.length > 0) {
|
||||||
|
const list = document.createElement('ul');
|
||||||
|
list.className = 'list-group';
|
||||||
|
|
||||||
|
servers.forEach(server => {
|
||||||
|
const listItem = document.createElement('li');
|
||||||
|
listItem.className = 'list-group-item';
|
||||||
|
|
||||||
|
const statusBadgeClass = server.status === 'Connected' ? 'badge bg-success' : 'badge bg-secondary';
|
||||||
|
|
||||||
|
listItem.innerHTML = `
|
||||||
|
Server: <strong>${server.ip_address}:${server.port}</strong>
|
||||||
|
<span class="${statusBadgeClass} float-end">${server.status}</span>
|
||||||
|
<br>
|
||||||
|
<small>Preference: ${server.preference}</small>
|
||||||
|
`;
|
||||||
|
list.appendChild(listItem);
|
||||||
|
});
|
||||||
|
rpkiStatusOutput.appendChild(list);
|
||||||
|
} else {
|
||||||
|
rpkiStatusOutput.innerHTML = '<p>No RPKI cache servers found or could not parse data.</p>';
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
rpkiStatusOutput.innerHTML = '<p class="text-danger">Error fetching status: ' + error + '</p>';
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
getRpkiStatus();
|
||||||
|
});
|
||||||
Loading…
Add table
Add a link
Reference in a new issue