24 lines
1.3 KiB
JavaScript
24 lines
1.3 KiB
JavaScript
// ═══════════════════════════════════════════════════════
|
|
// IP Lookup
|
|
// ═══════════════════════════════════════════════════════
|
|
async function lookupIP() {
|
|
const ip = document.getElementById('ipInput').value.trim();
|
|
setStatus('ipStatus','info','Looking up...');
|
|
const d = await apiGet(ip ? '/api/ip/' + ip : '/api/ip');
|
|
if (d.success && d.status !== 'fail') {
|
|
const fields = [
|
|
['IP Address', d.query], ['Country', d.country], ['Region', d.regionName],
|
|
['City', d.city], ['ZIP', d.zip], ['Latitude', d.lat],
|
|
['Longitude', d.lon], ['Timezone', d.timezone], ['ISP', d.isp],
|
|
['Organization', d.org], ['AS', d.as]
|
|
];
|
|
document.getElementById('ipResults').innerHTML = fields.map(([l, v]) =>
|
|
`<div class="ip-card"><div class="label">${l}</div><div class="value">${v || '—'}</div></div>`).join('');
|
|
setStatus('ipStatus','success','Lookup complete ✓');
|
|
} else setStatus('ipStatus','error', d.message || d.error || 'Lookup failed');
|
|
}
|
|
|
|
// Keyboard shortcut
|
|
document.getElementById('ipInput').addEventListener('keydown', e => { if(e.key==='Enter') lookupIP(); });
|
|
|