n8n
Version:
n8n Workflow Automation Tool
52 lines • 1.63 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.buildIpRangeList = buildIpRangeList;
const n8n_workflow_1 = require("n8n-workflow");
const node_net_1 = require("node:net");
const zod_1 = require("zod");
function buildIpRangeList(cidrRanges) {
const list = new node_net_1.BlockList();
const issues = [];
for (const rawEntry of cidrRanges) {
const entry = rawEntry.trim();
if (entry.length === 0) {
continue;
}
try {
const cidr = parseCidr(entry);
if (!cidr) {
issues.push({ entry, error: 'Invalid CIDR notation' });
continue;
}
list.addSubnet(cidr.network, cidr.prefix, cidr.family);
}
catch (e) {
const error = (0, n8n_workflow_1.ensureError)(e);
issues.push({ entry, error: `Failed to add IP range: ${error.message}` });
}
}
return { list, issues };
}
function parseCidr(entry) {
const result = cidrSchema.safeParse(entry);
if (!result.success) {
return null;
}
const [network, prefixStr] = result.data.split('/');
const family = validateIp(network);
if (family === null) {
return null;
}
const prefix = Number.parseInt(prefixStr, 10);
return { network, prefix, family };
}
const cidrSchema = zod_1.z.string().cidr();
function validateIp(ip) {
const version = (0, node_net_1.isIP)(ip);
if (version === 4)
return 'ipv4';
if (version === 6)
return 'ipv6';
return null;
}
//# sourceMappingURL=ip-range-builder.js.map