From 9f821b84cafcf035ca42f6763480b137371b52e7 Mon Sep 17 00:00:00 2001 From: SukkaW Date: Tue, 13 May 2025 20:57:19 +0800 Subject: [PATCH] Chore: update ruleset marker --- Build/constants/description.ts | 3 +++ Build/lib/writing-strategy/clash.ts | 5 +++-- Build/lib/writing-strategy/legacy-clash-premium.ts | 3 ++- Build/lib/writing-strategy/singbox.ts | 9 +++++---- Build/lib/writing-strategy/surfboard.ts | 3 ++- Build/lib/writing-strategy/surge.ts | 5 +++-- Build/validate-global-tld.ts | 3 ++- 7 files changed, 20 insertions(+), 11 deletions(-) diff --git a/Build/constants/description.ts b/Build/constants/description.ts index e1219b37..ea874ef0 100644 --- a/Build/constants/description.ts +++ b/Build/constants/description.ts @@ -7,3 +7,6 @@ export function createFileDescription(license = 'AGPL 3.0') { } export const SHARED_DESCRIPTION = createFileDescription('AGPL 3.0'); + +// this_ruleset_is_made_by_sukkaw.ruleset.skk.moe +export const MARKER_DOMAIN = 'th1s_rule5et_1s_m4d3_by_5ukk4w_ruleset.skk.moe'; diff --git a/Build/lib/writing-strategy/clash.ts b/Build/lib/writing-strategy/clash.ts index 2f5373d5..569b8aad 100644 --- a/Build/lib/writing-strategy/clash.ts +++ b/Build/lib/writing-strategy/clash.ts @@ -4,6 +4,7 @@ import { noop } from 'foxts/noop'; import { fastIpVersion, notSupported, withBannerArray } from '../misc'; import { OUTPUT_CLASH_DIR } from '../../constants/dir'; import { appendArrayInPlace } from 'foxts/append-array-in-place'; +import { MARKER_DOMAIN } from '../../constants/description'; export class ClashDomainSet extends BaseWriteStrategy { public readonly name = 'clash domainset'; @@ -12,7 +13,7 @@ export class ClashDomainSet extends BaseWriteStrategy { readonly fileExtension = 'txt'; readonly type = 'domainset'; - protected result: string[] = ['this_ruleset_is_made_by_sukkaw.ruleset.skk.moe']; + protected result: string[] = [MARKER_DOMAIN]; constructor(public readonly outputDir = OUTPUT_CLASH_DIR) { super(outputDir); @@ -90,7 +91,7 @@ export class ClashClassicRuleSet extends BaseWriteStrategy { readonly fileExtension = 'txt'; - protected result: string[] = ['DOMAIN,this_ruleset_is_made_by_sukkaw.ruleset.skk.moe']; + protected result: string[] = [`DOMAIN,${MARKER_DOMAIN}`]; constructor(public readonly type: 'ip' | 'non_ip' /* | (string & {}) */, public readonly outputDir = OUTPUT_CLASH_DIR) { super(outputDir); diff --git a/Build/lib/writing-strategy/legacy-clash-premium.ts b/Build/lib/writing-strategy/legacy-clash-premium.ts index b420e2fe..ac2a5ee9 100644 --- a/Build/lib/writing-strategy/legacy-clash-premium.ts +++ b/Build/lib/writing-strategy/legacy-clash-premium.ts @@ -1,13 +1,14 @@ import { noop } from 'foxts/noop'; import { OUTPUT_LEAGCY_CLASH_PREMIUM_DIR } from '../../constants/dir'; import { ClashClassicRuleSet } from './clash'; +import { MARKER_DOMAIN } from '../../constants/description'; export class LegacyClashPremiumClassicRuleSet extends ClashClassicRuleSet { public override readonly name = 'legacy clash premium classic ruleset'; readonly fileExtension = 'txt'; - protected result: string[] = ['DOMAIN,this_ruleset_is_made_by_sukkaw.ruleset.skk.moe']; + protected result: string[] = [`DOMAIN,${MARKER_DOMAIN}`]; constructor(public readonly type: 'ip' | 'non_ip' /* | (string & {}) */, public readonly outputDir = OUTPUT_LEAGCY_CLASH_PREMIUM_DIR) { super(type, outputDir); diff --git a/Build/lib/writing-strategy/singbox.ts b/Build/lib/writing-strategy/singbox.ts index da79c195..60a6a860 100644 --- a/Build/lib/writing-strategy/singbox.ts +++ b/Build/lib/writing-strategy/singbox.ts @@ -4,10 +4,11 @@ import { noop } from 'foxts/noop'; import { fastIpVersion, withIdentityContent } from '../misc'; import stringify from 'json-stringify-pretty-compact'; import { OUTPUT_SINGBOX_DIR } from '../../constants/dir'; +import { MARKER_DOMAIN } from '../../constants/description'; interface SingboxHeadlessRule { - domain: string[], // this_ruleset_is_made_by_sukkaw.ruleset.skk.moe - domain_suffix: string[], // this_ruleset_is_made_by_sukkaw.ruleset.skk.moe + domain: string[], + domain_suffix: string[], domain_keyword?: string[], domain_regex?: string[], source_ip_cidr?: string[], @@ -34,8 +35,8 @@ export class SingboxSource extends BaseWriteStrategy { static readonly jsonToLines = (json: unknown): string[] => stringify(json).split('\n'); private singbox: SingboxHeadlessRule = { - domain: ['this_ruleset_is_made_by_sukkaw.ruleset.skk.moe'], - domain_suffix: ['this_ruleset_is_made_by_sukkaw.ruleset.skk.moe'] + domain: [MARKER_DOMAIN], + domain_suffix: [MARKER_DOMAIN] }; protected get result() { diff --git a/Build/lib/writing-strategy/surfboard.ts b/Build/lib/writing-strategy/surfboard.ts index a370115a..aace48f3 100644 --- a/Build/lib/writing-strategy/surfboard.ts +++ b/Build/lib/writing-strategy/surfboard.ts @@ -2,11 +2,12 @@ import { noop } from 'foxts/noop'; import { SurgeRuleSet } from './surge'; import { OUTPUT_SURFBOARD_DIR } from '../../constants/dir'; import { appendSetElementsToArray } from 'foxts/append-set-elements-to-array'; +import { MARKER_DOMAIN } from '../../constants/description'; export class SurfboardRuleSet extends SurgeRuleSet { public override readonly name: string = 'surfboard for android ruleset'; - protected result: string[] = ['DOMAIN,this_ruleset_is_made_by_sukkaw.ruleset.skk.moe']; + protected result: string[] = [`DOMAIN,${MARKER_DOMAIN}`]; constructor(public readonly type: 'ip' | 'non_ip' /* | (string & {}) */, public readonly outputDir = OUTPUT_SURFBOARD_DIR) { super(type, outputDir); } diff --git a/Build/lib/writing-strategy/surge.ts b/Build/lib/writing-strategy/surge.ts index 1f6f765b..109a2347 100644 --- a/Build/lib/writing-strategy/surge.ts +++ b/Build/lib/writing-strategy/surge.ts @@ -7,6 +7,7 @@ import picocolors from 'picocolors'; import { normalizeDomain } from '../normalize-domain'; import { OUTPUT_MODULES_DIR, OUTPUT_SURGE_DIR } from '../../constants/dir'; import { withBannerArray, withIdentityContent } from '../misc'; +import { MARKER_DOMAIN } from '../../constants/description'; export class SurgeDomainSet extends BaseWriteStrategy { public readonly name = 'surge domainset'; @@ -15,7 +16,7 @@ export class SurgeDomainSet extends BaseWriteStrategy { readonly fileExtension = 'conf'; type = 'domainset'; - protected result: string[] = ['this_ruleset_is_made_by_sukkaw.ruleset.skk.moe']; + protected result: string[] = [MARKER_DOMAIN]; constructor(outputDir = OUTPUT_SURGE_DIR) { super(outputDir); @@ -53,7 +54,7 @@ export class SurgeRuleSet extends BaseWriteStrategy { readonly fileExtension = 'conf'; - protected result: string[] = ['DOMAIN,this_ruleset_is_made_by_sukkaw.ruleset.skk.moe']; + protected result: string[] = [`DOMAIN,${MARKER_DOMAIN}`]; constructor( /** Surge RULE-SET can be both ip or non_ip, so this needs to be specified */ diff --git a/Build/validate-global-tld.ts b/Build/validate-global-tld.ts index b7d07ae0..a33e3adf 100644 --- a/Build/validate-global-tld.ts +++ b/Build/validate-global-tld.ts @@ -5,13 +5,14 @@ import { ICP_TLD } from './constants/domains'; import tldts from 'tldts-experimental'; import { looseTldtsOpt } from './constants/loose-tldts-opt'; import runAgainstSourceFile from './lib/run-against-source-file'; +import { MARKER_DOMAIN } from './constants/description'; (async () => { const trie = new HostnameSmolTrie(); const extraWhiteTLDs = new Set(); await runAgainstSourceFile(path.join(OUTPUT_SURGE_DIR, 'non_ip', 'domestic.conf'), (domain) => { - if (domain === 'this_ruleset_is_made_by_sukkaw.ruleset.skk.moe') { + if (domain === MARKER_DOMAIN) { return; } const tld = tldts.getPublicSuffix(domain, looseTldtsOpt);