function detectIpVersion(ip){ const ipv4Regex=/^(\d{1,3}\.){3}\d{1,3}(\/\d{1,2})?$/; const ipv6Regex=/^([0-9a-fA-F:]+)(\/\d{1,3})?$/; if(ipv4Regex.test(ip)){ return"ipv4"; }else if(ipv6Regex.test(ip)){ return"ipv6"; }else{ return null; } } function highlightBGPOutput(text){ text=text.replace(/\b215085\b/g,'215085'); text=text.replace(/\b\d{4,6}\b/g,match=>{ if(match==='215085')return match; return`${match}`; }); text=text.split('\n').map(line=>{ if(line.toLowerCase().includes('best')){ return`${line}`; } return line; }).join('\n'); text=text.split('\n').map(line=>{ if(line.toLowerCase().includes('table entry')){ return`${line}`; } return line; }).join('\n'); text=text.split('\n').map(line=>{ if(line.toLowerCase().includes('multipath')){ return`${line}`; } return line; }).join('\n'); return text.replace(/\n/g,'
'); } function displayBGPRoute(data){ const outputElem=document.getElementById("bgpOutput"); const rawText=data.data||JSON.stringify(data,null,2); const highlighted=highlightBGPOutput(rawText); outputElem.innerHTML=highlighted; } async function loadBGPRoute(){ const outputElem=document.getElementById("bgpOutput"); const prefix=document.getElementById("prefixInput").value.trim(); if(!prefix){ outputElem.textContent="Enter a valid prefix first."; return; } const ip_version=detectIpVersion(prefix); if(!ip_version){ outputElem.textContent="Invalid IP address or prefix."; return; } outputElem.textContent="Loading..."; const postData={ ip_version:ip_version, bgprouteprefix:prefix }; try{ const response=await fetch("/bgp-route/lookup",{ method:"POST", headers:{ "Content-Type":"application/json", }, body:JSON.stringify(postData), }); if(!response.ok)throw new Error("Network response was not ok"); const data=await response.json(); if(data.error){ outputElem.textContent="Error: "+data.error; return; } displayBGPRoute(data); }catch(error){ outputElem.textContent="Error retrieving data: "+error.message; } }