瀏覽代碼

Fix sing-box by disabling all rule types but Domain & IP

Due to how sing-box rules are composed, it is impossible for me to fully
compatible with it
SukkaW 7 月之前
父節點
當前提交
6354a1972e
共有 1 個文件被更改,包括 71 次插入66 次删除
  1. 71 66
      Build/lib/writing-strategy/singbox.ts

+ 71 - 66
Build/lib/writing-strategy/singbox.ts

@@ -2,7 +2,6 @@ import { BaseWriteStrategy } from './base';
 import { appendArrayInPlace } from 'foxts/append-array-in-place';
 import { noop } from 'foxts/noop';
 import { withIdentityContent } from '../misc';
-import { fastIpVersion } from 'foxts/fast-ip-version';
 import stringify from 'json-stringify-pretty-compact';
 import { OUTPUT_SINGBOX_DIR } from '../../constants/dir';
 import { MARKER_DOMAIN } from '../../constants/description';
@@ -79,19 +78,21 @@ export class SingboxSource extends BaseWriteStrategy {
 
   writeUserAgents = noop;
 
-  writeProcessNames(processName: Set<string>): void {
-    appendArrayInPlace(
-      this.singbox.process_name ??= [],
-      Array.from(processName)
-    );
-  }
-
-  writeProcessPaths(processPath: Set<string>): void {
-    appendArrayInPlace(
-      this.singbox.process_path ??= [],
-      Array.from(processPath)
-    );
-  }
+  writeProcessNames = noop;
+  // writeProcessNames(processName: Set<string>): void {
+  //   appendArrayInPlace(
+  //     this.singbox.process_name ??= [],
+  //     Array.from(processName)
+  //   );
+  // }
+
+  writeProcessPaths = noop;
+  // writeProcessPaths(processPath: Set<string>): void {
+  //   appendArrayInPlace(
+  //     this.singbox.process_path ??= [],
+  //     Array.from(processPath)
+  //   );
+  // }
 
   writeUrlRegexes = noop;
 
@@ -113,58 +114,62 @@ export class SingboxSource extends BaseWriteStrategy {
 
   writeIpAsns = noop;
 
-  writeSourceIpCidrs(sourceIpCidr: string[]): void {
-    this.singbox.source_ip_cidr ??= [];
-    for (let i = 0, len = sourceIpCidr.length; i < len; i++) {
-      const value = sourceIpCidr[i];
-      if (value.includes('/')) {
-        this.singbox.source_ip_cidr.push(value);
-        continue;
-      }
-      const v = fastIpVersion(value);
-      if (v === 4) {
-        this.singbox.source_ip_cidr.push(`${value}/32`);
-        continue;
-      }
-      if (v === 6) {
-        this.singbox.source_ip_cidr.push(`${value}/128`);
-        continue;
-      }
-    }
-  }
-
-  writeSourcePorts(port: Set<string>): void {
-    this.singbox.source_port ??= [];
-
-    for (const i of port) {
-      const tmp = Number(i);
-      if (!Number.isNaN(tmp)) {
-        this.singbox.source_port.push(tmp);
-      }
-    }
-  }
-
-  writeDestinationPorts(port: Set<string>): void {
-    this.singbox.port ??= [];
-
-    for (const i of port) {
-      const tmp = Number(i);
-      if (!Number.isNaN(tmp)) {
-        this.singbox.port.push(tmp);
-      }
-    }
-  }
-
-  writeProtocols(protocol: Set<string>): void {
-    this.singbox.network ??= [];
-    // protocol has already be normalized and will only be uppercase
-    if (protocol.has('UDP')) {
-      this.singbox.network.push('udp');
-    }
-    if (protocol.has('TCP')) {
-      this.singbox.network.push('tcp');
-    }
-  }
+  writeSourceIpCidrs = noop;
+  // writeSourceIpCidrs(sourceIpCidr: string[]): void {
+  //   this.singbox.source_ip_cidr ??= [];
+  //   for (let i = 0, len = sourceIpCidr.length; i < len; i++) {
+  //     const value = sourceIpCidr[i];
+  //     if (value.includes('/')) {
+  //       this.singbox.source_ip_cidr.push(value);
+  //       continue;
+  //     }
+  //     const v = fastIpVersion(value);
+  //     if (v === 4) {
+  //       this.singbox.source_ip_cidr.push(`${value}/32`);
+  //       continue;
+  //     }
+  //     if (v === 6) {
+  //       this.singbox.source_ip_cidr.push(`${value}/128`);
+  //       continue;
+  //     }
+  //   }
+  // }
+
+  writeSourcePorts = noop;
+  // writeSourcePorts(port: Set<string>): void {
+  //   this.singbox.source_port ??= [];
+
+  //   for (const i of port) {
+  //     const tmp = Number(i);
+  //     if (!Number.isNaN(tmp)) {
+  //       this.singbox.source_port.push(tmp);
+  //     }
+  //   }
+  // }
+
+  writeDestinationPorts = noop;
+  // writeDestinationPorts(port: Set<string>): void {
+  //   this.singbox.port ??= [];
+
+  //   for (const i of port) {
+  //     const tmp = Number(i);
+  //     if (!Number.isNaN(tmp)) {
+  //       this.singbox.port.push(tmp);
+  //     }
+  //   }
+  // }
+
+  writeProtocols = noop;
+  // writeProtocols(protocol: Set<string>): void {
+  //   this.singbox.network ??= [];
+  //   // protocol has already be normalized and will only be uppercase
+  //   if (protocol.has('UDP')) {
+  //     this.singbox.network.push('udp');
+  //   }
+  //   if (protocol.has('TCP')) {
+  //     this.singbox.network.push('tcp');
+  //   }
+  // }
 
   writeOtherRules = noop;
 }