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 = ` Prefix Prefix Length Origin-AS `; table.appendChild(thead); const tbody = document.createElement('tbody'); data.prefixes.forEach(pfx => { const row = document.createElement('tr'); row.innerHTML = ` ${pfx.prefix} ${pfx.length} ${pfx.as} `; 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('
'); 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: ${server.ip_address}:${server.port} ${server.status}
Preference: ${server.preference} `; list.appendChild(listItem); }); rpkiStatusOutput.appendChild(list); } else { rpkiStatusOutput.innerHTML = '

No RPKI cache servers found or could not parse data.

'; } }) .catch((error) => { rpkiStatusOutput.innerHTML = '

Error fetching status: ' + error + '

'; }); } document.addEventListener('DOMContentLoaded', function() { getRpkiStatus(); });