/** * Утилиты валидации * Централизация всех функций валидации */ /** * Валидация FQDN домена */ export function isValidDomain(value) { const v = String(value).trim().toLowerCase(); return /^([a-z0-9-]+\.)+[a-z]{2,}$/i.test(v); } /** * Валидация ASN */ export function isValidAsn(value) { return /^[0-9]+$/.test(String(value).trim()); } /** * Валидация IPv4 адреса */ export function isValidIPv4(ip) { const octets = ip.split('.'); if (octets.length !== 4) return false; return octets.every(o => /^\d{1,3}$/.test(o) && Number(o) >= 0 && Number(o) <= 255); } /** * Валидация CIDR */ export function isValidCidr(value) { const v = String(value).trim(); const parts = v.split('/'); if (parts.length !== 2) return false; const [ip, mask] = parts; if (!isValidIPv4(ip)) return false; if (!/^\d{1,2}$/.test(mask)) return false; const m = Number(mask); return m >= 0 && m <= 32; } /** * Валидация BGP Community (поддержка числового и extended формата) */ export function isValidCommunity(value) { return /^(\d+|\d+:\d+)$/.test(String(value).trim()); } /** * Валидация IP адреса (поддержка IPv4 и IPv6) */ export function isValidIP(value) { // IPv4 if (isValidIPv4(value)) return true; // Упрощенная проверка IPv6 const ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::)$/; return ipv6Regex.test(value); }