Browse Source

Build domestic conf

SukkaW 2 years ago
parent
commit
6b324f4079
5 changed files with 198 additions and 77 deletions
  1. 3 0
      .gitignore
  2. 58 0
      Build/build-domestic-ruleset.js
  3. 0 76
      Source/non_ip/domestic.conf
  4. 127 0
      Source/non_ip/domestic.js
  5. 10 1
      package.json

+ 3 - 0
.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

+ 58 - 0
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')
+    )
+  ]);
+})();

+ 0 - 76
List/non_ip/domestic.conf → 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 ---

+ 127 - 0
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'
+    ]
+  }
+});

+ 10 - 1
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"
       ]