| 123456789101112131415161718192021222324252627282930313233343536 |
- import { appendArrayInPlace } from 'foxts/append-array-in-place';
- import { GLOBAL } from '../Source/non_ip/global';
- import { createGetDnsMappingRule } from './build-domestic-direct-lan-ruleset-dns-mapping-module';
- import { SOURCE_DIR } from './constants/dir';
- import { task } from './trace';
- import { once } from 'foxts/once';
- import path from 'node:path';
- import { readFileIntoProcessedArray } from './lib/fetch-text-by-line';
- import { SHARED_DESCRIPTION } from './constants/description';
- import { RulesetOutput } from './lib/rules/ruleset';
- export const getGlobalRulesetPromise = once(async () => {
- const globals = await readFileIntoProcessedArray(path.join(SOURCE_DIR, 'non_ip/global.conf'));
- const getDnsMappingRuleWithWildcard = createGetDnsMappingRule(true);
- [GLOBAL].forEach((item) => {
- Object.values(item).forEach(({ domains }) => {
- appendArrayInPlace(globals, domains.flatMap(getDnsMappingRuleWithWildcard));
- });
- });
- return [globals] as const;
- });
- export const buildGlobalRuleset = task(require.main === module, __filename)(async (span) => {
- const [globals] = await getGlobalRulesetPromise();
- return new RulesetOutput(span, 'global', 'non_ip')
- .withTitle('Sukka\'s Ruleset - General Global Services')
- .appendDescription(
- SHARED_DESCRIPTION,
- '',
- 'This file contains rules for services that are NOT available inside the Mainland China.'
- )
- .addFromRuleset(globals)
- .write();
- });
|