nestjs-yookassa
Version:
A NestJS library for integrating with YooKassa API
31 lines (30 loc) • 849 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.isIpAllowed = isIpAllowed;
const ipaddr = require("ipaddr.js");
/**
* Проверяет, входит ли IP-адрес в список разрешённых CIDR / IP.
*
* Поддерживает:
* - IPv4
* - IPv6
* - одиночные IP
* - CIDR-диапазоны
*/
function isIpAllowed(clientIp, whitelist) {
if (!clientIp)
return false;
try {
const ip = ipaddr.parse(clientIp);
return whitelist.some(rule => {
if (rule.includes('/')) {
const [range, prefix] = ipaddr.parseCIDR(rule);
return ip.match(range, prefix);
}
return ip.toString() === ipaddr.parse(rule).toString();
});
}
catch (_a) {
return false;
}
}