Chore: update ruleset marker
Some checks failed
Build / Build (push) Has been cancelled
Build / Diff output (push) Has been cancelled
Build / Deploy to Cloudflare Pages (3.114.6) (push) Has been cancelled
Build / Deploy to GitHub and GitLab (push) Has been cancelled

This commit is contained in:
SukkaW 2025-05-13 20:57:19 +08:00
parent 3aac2a8893
commit 9f821b84ca
7 changed files with 20 additions and 11 deletions

View File

@ -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';

View File

@ -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);

View File

@ -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);

View File

@ -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() {

View File

@ -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);
}

View File

@ -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 */

View File

@ -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<string>();
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);