From 26739b9dd7832c4b1fc437bba1ddfcf79f71c6fb Mon Sep 17 00:00:00 2001 From: SukkaW Date: Sun, 22 Sep 2024 01:04:30 +0800 Subject: [PATCH] Fix: ip cidr format --- Build/lib/rules/base.ts | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/Build/lib/rules/base.ts b/Build/lib/rules/base.ts index 6971da49..9be186ad 100644 --- a/Build/lib/rules/base.ts +++ b/Build/lib/rules/base.ts @@ -198,30 +198,38 @@ export abstract class RuleOutput { return this; } - bulkAddCIDR4(cidr: string[]) { - for (let i = 0, len = cidr.length; i < len; i++) { - this.ipcidr.add(cidr[i]); + static ipToCidr = (ip: string, version: 4 | 6 = 4) => { + if (ip.includes('/')) return ip; + if (version === 4) { + return ip + '/32'; + } + return ip + '/128'; + }; + + bulkAddCIDR4(cidrs: string[]) { + for (let i = 0, len = cidrs.length; i < len; i++) { + this.ipcidr.add(RuleOutput.ipToCidr(cidrs[i], 4)); } return this; } - bulkAddCIDR4NoResolve(cidr: string[]) { - for (let i = 0, len = cidr.length; i < len; i++) { - this.ipcidrNoResolve.add(cidr[i]); + bulkAddCIDR4NoResolve(cidrs: string[]) { + for (let i = 0, len = cidrs.length; i < len; i++) { + this.ipcidrNoResolve.add(RuleOutput.ipToCidr(cidrs[i], 4)); } return this; } - bulkAddCIDR6(cidr: string[]) { - for (let i = 0, len = cidr.length; i < len; i++) { - this.ipcidr6.add(cidr[i]); + bulkAddCIDR6(cidrs: string[]) { + for (let i = 0, len = cidrs.length; i < len; i++) { + this.ipcidr6.add(RuleOutput.ipToCidr(cidrs[i], 6)); } return this; } - bulkAddCIDR6NoResolve(cidr: string[]) { - for (let i = 0, len = cidr.length; i < len; i++) { - this.ipcidr6NoResolve.add(cidr[i]); + bulkAddCIDR6NoResolve(cidrs: string[]) { + for (let i = 0, len = cidrs.length; i < len; i++) { + this.ipcidr6NoResolve.add(RuleOutput.ipToCidr(cidrs[i], 6)); } return this; }