Surge_by_SukkaW/Build/build-sgmodule-always-realip.ts

59 lines
1.7 KiB
TypeScript

import path from 'path';
import { task } from './trace';
import { compareAndWriteFile } from './lib/create-file';
import { DIRECTS } from '../Source/non_ip/direct';
const HOSTNAMES = [
// Intranet, Router Setup, and mant more
...(Object.entries(DIRECTS)).flatMap(([, { domains }]) => domains.flatMap((domain) => [`*.${domain}`, domain])),
// Network Detection, Captive Portal
'msftncsi.com',
'msftconnecttest.com',
'*.msftncsi.com',
'*.msftconnecttest.com',
'network-test.debian.org',
'detectportal.firefox.com',
'resolver1.opendns.com',
'*.ipv6.microsoft.com',
// Handle SNAT conversation properly
'*.srv.nintendo.net',
'*.stun.playstation.net',
'xbox.*.microsoft.com',
'*.xboxlive.com',
'turn.twilio.com',
'*.turn.twilio.com',
'stun.twilio.com',
'*.stun.twilio.com',
'stun.syncthing.net',
'stun.*',
'controlplane.tailscale.com',
// NTP
'time.*.com', 'time.*.gov, time.*.edu.cn, time.*.apple.com', 'time?.*.com', 'ntp.*.com', 'ntp?.*.com', '*.time.edu.cn', '*.ntp.org.cn', '*.pool.ntp.org', 'time*.cloud.tencent.com',
// QQ Login
'localhost.ptlogin2.qq.com',
'localhost.sec.qq.com',
'localhost.work.weixin.qq.com',
// Microsoft Auto Discovery
'PDC._msDCS.*.*',
'DC._msDCS.*.*',
'GC._msDCS.*.*',
// Misc,
'*.battlenet.com.cn',
'*.blzstatic.cn',
'*.battlenet.com'
] as const;
export const buildAlwaysRealIPModule = task(import.meta.main, import.meta.path)(async (span) => {
return compareAndWriteFile(
span,
[
'#!name=[Sukka] Always Real IP Plus',
`#!desc=Last Updated: ${new Date().toISOString()}`,
'',
'[General]',
`always-real-ip = %APPEND% ${HOSTNAMES.join(', ')}`
],
path.resolve(import.meta.dir, '../Modules/sukka_common_always_realip.sgmodule')
);
});