diff --git a/.gitignore b/.gitignore index 7ef4f9ab..bb95dc7f 100644 --- a/.gitignore +++ b/.gitignore @@ -11,8 +11,11 @@ List/domainset/reject_sukka.conf List/domainset/apple_cdn.conf List/domainset/speedtest.conf List/non_ip/cdn.conf +List/non_ip/domestic.conf List/non_ip/apple_cdn.conf List/ip/telegram.conf List/ip/reject.conf List/ip/china_ip.conf List/internal/ + +Modules/sukka_local_dns_mapping.sgmodule diff --git a/Build/build-domestic-ruleset.js b/Build/build-domestic-ruleset.js new file mode 100644 index 00000000..0810f98e --- /dev/null +++ b/Build/build-domestic-ruleset.js @@ -0,0 +1,58 @@ +// @ts-check +const path = require('path'); +const { DOMESTICS } = require('../Source/non_ip/domestic'); +const { readFileByLine } = require('./lib/fetch-remote-text-by-line'); +const { processLine } = require('./lib/process-line'); +const { withBannerArray } = require('./lib/with-banner'); +const { compareAndWriteFile } = require('./lib/string-array-compare'); + +(async () => { + const rl = readFileByLine(path.resolve(__dirname, '../Source/non_ip/domestic.conf')); + const results = []; + for await (const l of rl) { + const line = processLine(l); + if (line) { + results.push(line); + } + } + + results.push( + ...Object.entries(DOMESTICS) + .filter(([key]) => key !== 'SYSTEM') + .flatMap(([, { domains }]) => domains) + .sort() + .map((domain) => `DOMAIN-SUFFIX,${domain}`) + ); + + await Promise.all([ + compareAndWriteFile( + withBannerArray( + 'Sukka\'s Surge Rules - Domestic Domain', + [ + 'License: AGPL 3.0', + 'Homepage: https://ruleset.skk.moe', + 'GitHub: https://github.com/SukkaW/Surge', + '', + 'This file contains known addresses that are avaliable in the Mainland China.' + ], + new Date(), + results + ), + path.resolve(__dirname, '../List/non_ip/domestic.conf') + ), + compareAndWriteFile( + [ + '#!name=[Sukka] Local DNS Mapping', + `#!desc=Last Updated: ${new Date().toISOString()}`, + '', + '[Host]', + ...Object.entries(DOMESTICS) + .flatMap( + ([, { domains, dns }]) => domains.map((domain) => `${domain} = server:${dns}`) + ), + '' + ], + path.resolve(__dirname, '../Modules/sukka_local_dns_mapping.sgmodule') + ) + ]); +})(); diff --git a/List/non_ip/domestic.conf b/Source/non_ip/domestic.conf similarity index 79% rename from List/non_ip/domestic.conf rename to Source/non_ip/domestic.conf index 7a1cd9cf..51d866d8 100644 --- a/List/non_ip/domestic.conf +++ b/Source/non_ip/domestic.conf @@ -1,5 +1,3 @@ -# --- Mainland China Available -- - # >> 360 DOMAIN-SUFFIX,qhimg.com DOMAIN-SUFFIX,qhres.com @@ -8,26 +6,6 @@ DOMAIN-SUFFIX,qhres.com DOMAIN-SUFFIX,akadns.net # >> Alibaba -DOMAIN-SUFFIX,alibaba.com -DOMAIN-SUFFIX,alicdn.com -DOMAIN-SUFFIX,aliyun.com -DOMAIN-SUFFIX,aliyuncs.com -DOMAIN-SUFFIX,alikunlun.com -DOMAIN-SUFFIX,alipay.com -DOMAIN-SUFFIX,amap.com -DOMAIN-SUFFIX,autonavi.com -DOMAIN-SUFFIX,dingtalk.com -DOMAIN-SUFFIX,mxhichina.com -DOMAIN-SUFFIX,soku.com -DOMAIN-SUFFIX,taobao.com -DOMAIN-SUFFIX,tmall.com -DOMAIN-SUFFIX,tmall.hk -DOMAIN-SUFFIX,xiami.com -DOMAIN-SUFFIX,xiami.net -DOMAIN-SUFFIX,ykimg.com -DOMAIN-SUFFIX,youku.com -DOMAIN-SUFFIX,elemecdn.com - USER-AGENT,%E4%BC%98%E9%85%B7* # >> Apple @@ -35,37 +13,12 @@ DOMAIN-SUFFIX,icloud.com.cn DOMAIN-SUFFIX,gspe19-cn-ssl.ls.apple.com DOMAIN,gs-loc-cn.apple.com -# >> Baidu -DOMAIN-SUFFIX,baidu.com -DOMAIN-SUFFIX,baidubcr.com -DOMAIN-SUFFIX,bdstatic.com -DOMAIN-SUFFIX,yunjiasu-cdn.net - -# >> bilibili -DOMAIN-SUFFIX,acg.tv -DOMAIN-SUFFIX,b23.tv -DOMAIN-SUFFIX,acgvideo.com -DOMAIN-SUFFIX,bilibili.cn -DOMAIN-SUFFIX,bilibili.com -DOMAIN-SUFFIX,bilibili.tv -DOMAIN-SUFFIX,bilivideo.com -DOMAIN-SUFFIX,bilivideo.cn -DOMAIN-SUFFIX,hdslb.com - # >> Blizzard DOMAIN-SUFFIX,battle.net DOMAIN-SUFFIX,blizzard.com # DOMAIN,blzddist1-a.akamaihd.net -# >> ByteDance -DOMAIN-SUFFIX,bytecdn.cn -DOMAIN-SUFFIX,feiliao.com -DOMAIN-SUFFIX,iesdouyin.com -DOMAIN-SUFFIX,pstatp.com -DOMAIN-SUFFIX,snssdk.com -DOMAIN-SUFFIX,toutiao.com - # > CCTV DOMAIN-SUFFIX,cctv.com DOMAIN-SUFFIX,cctvpic.com @@ -125,14 +78,6 @@ DOMAIN-SUFFIX,meitu.com DOMAIN-SUFFIX,meitudata.com DOMAIN-SUFFIX,meitustat.com -# >> MI -DOMAIN-SUFFIX,duokan.com -DOMAIN-SUFFIX,mi-img.com -DOMAIN-SUFFIX,mifile.cn -DOMAIN-SUFFIX,miui.com -DOMAIN-SUFFIX,miwifi.com -DOMAIN-SUFFIX,xiaomi.com - # >> Microsoft DOMAIN-KEYWORD,officecdn @@ -190,8 +135,6 @@ DOMAIN-SUFFIX,v-56.com DOMAIN-SUFFIX,sogo.com DOMAIN-SUFFIX,sogou.com DOMAIN-SUFFIX,sogoucdn.com -DOMAIN,info.pinyin.sogou.com -DOMAIN,ping.pinyin.sogou.com DOMAIN-SUFFIX,push.sogou.com DOMAIN-SUFFIX,zhushou.sogou.com @@ -199,23 +142,6 @@ DOMAIN-SUFFIX,zhushou.sogou.com DOMAIN-SUFFIX,jstarkan.com # >> Tencent -DOMAIN-SUFFIX,dns.pub -DOMAIN-SUFFIX,doh.pub -DOMAIN-SUFFIX,qcloud.com - -DOMAIN-SUFFIX,gtimg.com -DOMAIN-SUFFIX,idqqimg.com -DOMAIN-SUFFIX,igamecj.com -DOMAIN-SUFFIX,myapp.com -DOMAIN-SUFFIX,myqcloud.com -DOMAIN-SUFFIX,qpic.cn -DOMAIN-SUFFIX,qlogo.cn -DOMAIN-SUFFIX,qq.com -DOMAIN-SUFFIX,qq.com.cn -DOMAIN-SUFFIX,tencent-cloud.net -DOMAIN-SUFFIX,tencent.com -DOMAIN-SUFFIX,weixinbridge.com - USER-AGENT,MicroMessenger%20Client USER-AGENT,WeChat* PROCESS-NAME,WeChat @@ -372,5 +298,3 @@ DOMAIN-SUFFIX,zhuihd.com DOMAIN-SUFFIX,gitee.com DOMAIN-SUFFIX,2144.cn DOMAIN-SUFFIX,chinaz.com - -# --- End of Mainland China Available Section --- diff --git a/Source/non_ip/domestic.js b/Source/non_ip/domestic.js new file mode 100644 index 00000000..66bae298 --- /dev/null +++ b/Source/non_ip/domestic.js @@ -0,0 +1,127 @@ +// @ts-check +module.exports.DOMESTICS = /** @type {const} */({ + ALIBABA: { + dns: 'https://223.5.5.5/dns-query', + domains: [ + 'uc.cn', + 'alibaba.com', + 'alicdn.com', + 'aliyun.com', + 'aliyuncs.com', + 'alikunlun.com', + 'alipay.com', + 'cainiao.com', + 'etao.com', + '1688.com', + 'amap.com', + 'autonavi.com', + 'dingtalk.com', + 'dingtalk.com', + 'mxhichina.com', + 'soku.com', + 'taobao.com', + 'tmall.com', + 'tmall.hk', + 'xiami.com', + 'xiami.net', + 'ykimg.com', + 'youku.com', + 'ele.me', + 'elemecdn.com', + 'taopiaopiao.com', + 'fliggy.com', + 'koubei.com', + 'guoguo-app.com', + 'mybank.cn' + ] + }, + TENCENT: { + dns: 'https://120.53.53.53/dns-query', + domains: [ + 'dns.pub', + 'doh.pub', + 'qcloud.com', + 'gtimg.com', + 'idqqimg.com', + 'igamecj.com', + 'myapp.com', + 'myqcloud.com', + 'qpic.cn', + 'qlogo.cn', + 'qq.com', + 'qq.com.cn', + 'tencent-cloud.net', + 'tencent.com', + 'weixinbridge.com', + 'weixin.com' + ] + }, + BILIBILI: { + dns: 'https://120.53.53.53/dns-query', + domains: [ + 'acg.tv', + 'b23.tv', + 'acgvideo.com', + 'bilibili.cn', + 'bilibili.com', + 'bilibili.tv', + 'bilivideo.com', + 'bilivideo.cn', + 'hdslb.com' + ] + }, + XIAOMI: { + dns: 'https://120.53.53.53/dns-query', + domains: [ + 'mi.com', + 'duokan.com', + 'mi-img.com', + 'mifile.cn', + 'miui.com', + 'miwifi.com', + 'xiaomi.com' + ] + }, + BYTEDANCE: { + // Currently, bytedance all NS are pointed to AliDNS + dns: '180.184.2.2', + domains: [ + 'bytecdn.cn', + // 'bytescm.com', + // 'bytetcc.com', + // 'byteimg.com', + // 'bytednsdoc.com', + 'toutiaoimg.com', + 'feiliao.com', + 'iesdouyin.com', + 'pstatp.com', + 'snssdk.com', + 'toutiao.com', + 'feishu.cn', + 'douyin.com', + 'douyinpic.com', + 'douyinstatic.com' + ] + }, + BAIDU: { + dns: '180.76.76.76', + domains: [ + 'baidu.com', + 'iqiyi.com', + 'bdstatic.com', + 'baidubcr.com', + 'yunjiasu-cdn.net' + ] + }, + SYSTEM: { + dns: 'system', + domains: [ + 'routerlogin.net', + '_hotspot_.m2m', + 'router.asus.com', + 'hotspot.cslwifi.com', + 'amplifi.lan', + '*.lan' + ] + } +}); diff --git a/package.json b/package.json index b93d3563..6f88190a 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "build:internal-cdn-rules": "wireit", "build:internal-reverse-chn-cidr": "wireit", "build:internal-chn-domains": "wireit", + "build:domestic-ruleset": "wireit", "validate:domainset": "wireit" }, "wireit": { @@ -85,6 +86,12 @@ "build:internal-chn-domains": { "command": "node ./Build/build-internal-chn-domains.js" }, + "build:domestic-ruleset": { + "command": "node ./Build/build-domestic-ruleset.js", + "dependencies": [ + "download-previous-build" + ] + }, "build:public": { "command": "node ./Build/build-public.js", "dependencies": [ @@ -96,7 +103,8 @@ "build:internal-chn-domains", "build:reject-domainset", "build:telegram-cidr", - "build:speedtest-domainset" + "build:speedtest-domainset", + "build:domestic-ruleset" ] }, "validate:domainset": { @@ -120,6 +128,7 @@ "build:internal-reverse-chn-cidr", "build:internal-chn-domains", "build:speedtest-domainset", + "build:domestic-ruleset", "build:public", "validate:domainset" ]