import { API, setupCopyBtn, showError } from '../shared.js'; export const page = { title: 'DNS Lookup', template: () => `

DNS Lookup

`, async init(search) { const input = document.getElementById('dns-domain-input'); const select = document.getElementById('dns-type-select'); const btn = document.getElementById('dns-lookup-button'); const errorEl = document.getElementById('dns-lookup-error'); const section = document.getElementById('dns-lookup-results-section'); const queryEl = document.getElementById('dns-lookup-query'); const loader = document.getElementById('dns-lookup-loader'); const output = document.getElementById('dns-lookup-output'); const copyBtn = document.getElementById('copy-dns-btn'); const syncBtn = () => { btn.disabled = !input.value.trim(); }; input.addEventListener('input', syncBtn); setupCopyBtn(copyBtn, () => output.textContent); async function doLookup() { const domain = input.value.trim(); const type = select.value; if (!domain) return; const url = new URL(location.href); url.searchParams.set('domain', domain); url.searchParams.set('type', type); history.replaceState({}, '', url); showError(errorEl, null); section.classList.remove('hidden'); loader.classList.remove('hidden'); output.textContent = ''; queryEl.textContent = `${domain} (${type})`; try { const r = await fetch(`${API}/dns-lookup?domain=${encodeURIComponent(domain)}&type=${encodeURIComponent(type)}`); const data = await r.json(); if (!r.ok || !data.success) throw new Error(data.error || `HTTP ${r.status}`); output.textContent = JSON.stringify(data.records, null, 2); } catch (err) { showError(errorEl, err.message); output.textContent = ''; } finally { loader.classList.add('hidden'); } } btn.addEventListener('click', doLookup); input.addEventListener('keypress', e => { if (e.key === 'Enter' && !btn.disabled) doLookup(); }); const params = new URLSearchParams(search); const d = params.get('domain'); if (d) { input.value = d; const t = params.get('type'); if (t) select.value = t; syncBtn(); doLookup(); } } };