Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 1m34s
63 lines
1.5 KiB
JavaScript
63 lines
1.5 KiB
JavaScript
/**
|
|
* Утилиты валидации
|
|
* Централизация всех функций валидации
|
|
*/
|
|
|
|
/**
|
|
* Валидация 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);
|
|
}
|
|
|