From 6354a1972eba5d895ddcf032260db3f009b58e1b Mon Sep 17 00:00:00 2001 From: SukkaW Date: Sat, 30 Aug 2025 00:49:25 +0800 Subject: [PATCH] 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 --- Build/lib/writing-strategy/singbox.ts | 125 +++++++++++++------------- 1 file changed, 65 insertions(+), 60 deletions(-) diff --git a/Build/lib/writing-strategy/singbox.ts b/Build/lib/writing-strategy/singbox.ts index e1da378e..e826dfee 100644 --- a/Build/lib/writing-strategy/singbox.ts +++ b/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): void { - appendArrayInPlace( - this.singbox.process_name ??= [], - Array.from(processName) - ); - } + writeProcessNames = noop; + // writeProcessNames(processName: Set): void { + // appendArrayInPlace( + // this.singbox.process_name ??= [], + // Array.from(processName) + // ); + // } - writeProcessPaths(processPath: Set): void { - appendArrayInPlace( - this.singbox.process_path ??= [], - Array.from(processPath) - ); - } + writeProcessPaths = noop; + // writeProcessPaths(processPath: Set): 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; - } - } - } + 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(port: Set): void { - this.singbox.source_port ??= []; + writeSourcePorts = noop; + // writeSourcePorts(port: Set): void { + // this.singbox.source_port ??= []; - for (const i of port) { - const tmp = Number(i); - if (!Number.isNaN(tmp)) { - this.singbox.source_port.push(tmp); - } - } - } + // for (const i of port) { + // const tmp = Number(i); + // if (!Number.isNaN(tmp)) { + // this.singbox.source_port.push(tmp); + // } + // } + // } - writeDestinationPorts(port: Set): void { - this.singbox.port ??= []; + writeDestinationPorts = noop; + // writeDestinationPorts(port: Set): void { + // this.singbox.port ??= []; - for (const i of port) { - const tmp = Number(i); - if (!Number.isNaN(tmp)) { - this.singbox.port.push(tmp); - } - } - } + // for (const i of port) { + // const tmp = Number(i); + // if (!Number.isNaN(tmp)) { + // this.singbox.port.push(tmp); + // } + // } + // } - writeProtocols(protocol: Set): 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'); - } - } + writeProtocols = noop; + // writeProtocols(protocol: Set): 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; }