import dns from "node:dns/promises" /** RouterOS «src-address» для /tool/ping и /tool/traceroute ожидает IPv4, не FQDN. */ export function isIpv4Literal(host: string): boolean { const s = host.trim() if (!/^\d{1,3}(\.\d{1,3}){3}$/.test(s)) return false return s.split(".").every((p) => { const n = Number.parseInt(p, 10) return Number.isFinite(n) && n >= 0 && n <= 255 }) } /** Возвращает первый A-запись IPv4 для управления; если host уже IPv4 — как есть. */ export async function resolveRosSrcIpv4(host: string): Promise { const h = host.trim() if (!h) return null if (isIpv4Literal(h)) return h try { const addrs = await dns.resolve4(h) return addrs[0] ?? null } catch { return null } }