浏览代码

Fix: ip cidr format

SukkaW 1 年之前
父节点
当前提交
26739b9dd7
共有 1 个文件被更改,包括 20 次插入12 次删除
  1. 20 12
      Build/lib/rules/base.ts

+ 20 - 12
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;
   }