diff --git a/luci-app-aria2/po/bg/aria2.po b/luci-app-aria2/po/bg/aria2.po index b3c91393..982d83f8 100644 --- a/luci-app-aria2/po/bg/aria2.po +++ b/luci-app-aria2/po/bg/aria2.po @@ -1,15 +1,14 @@ msgid "" msgstr "" -"PO-Revision-Date: 2025-10-27 15:04+0000\n" -"Last-Translator: 109247019824 " -"<109247019824@users.noreply.hosted.weblate.org>\n" +"PO-Revision-Date: 2026-03-15 08:27+0000\n" +"Last-Translator: Daniel Konstantinov \n" "Language-Team: Bulgarian \n" "Language: bg\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.14.1-dev\n" +"X-Generator: Weblate 5.17-dev\n" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/config.js:433 msgid "LPD enabled" @@ -778,12 +777,12 @@ msgstr "" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/config.js:594 msgid "falloc" -msgstr "" +msgstr "falloc" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/config.js:592 msgid "prealloc" -msgstr "" +msgstr "prealloc" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/config.js:593 msgid "trunc" -msgstr "" +msgstr "trunc" diff --git a/luci-app-aria2/po/cs/aria2.po b/luci-app-aria2/po/cs/aria2.po index 9420a2a7..de4a4d7a 100644 --- a/luci-app-aria2/po/cs/aria2.po +++ b/luci-app-aria2/po/cs/aria2.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"PO-Revision-Date: 2026-01-28 10:51+0000\n" +"PO-Revision-Date: 2026-03-08 17:29+0000\n" "Last-Translator: Pavel Borecki \n" "Language-Team: Czech \n" @@ -8,7 +8,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n" -"X-Generator: Weblate 5.16-dev\n" +"X-Generator: Weblate 5.17-dev\n" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/config.js:433 msgid "LPD enabled" @@ -262,7 +262,7 @@ msgstr "" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/config.js:231 msgid "Info" -msgstr "Pro informaci" +msgstr "Info" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/config.js:41 msgid "Installed web interface:" diff --git a/luci-app-aria2/po/ga/aria2.po b/luci-app-aria2/po/ga/aria2.po index 65270289..2eafd648 100644 --- a/luci-app-aria2/po/ga/aria2.po +++ b/luci-app-aria2/po/ga/aria2.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"PO-Revision-Date: 2026-02-10 18:11+0000\n" +"PO-Revision-Date: 2026-03-09 19:10+0000\n" "Last-Translator: Aindriú Mac Giolla Eoin \n" "Language-Team: Irish \n" @@ -9,7 +9,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : (n>2 && n<7) ? 2 :" "(n>6 && n<11) ? 3 : 4;\n" -"X-Generator: Weblate 5.16-dev\n" +"X-Generator: Weblate 5.17-dev\n" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/config.js:433 msgid "LPD enabled" @@ -265,7 +265,7 @@ msgstr "" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/config.js:231 msgid "Info" -msgstr "Faisnéis" +msgstr "Eolas" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/config.js:41 msgid "Installed web interface:" diff --git a/luci-app-aria2/po/ko/aria2.po b/luci-app-aria2/po/ko/aria2.po index a83d4151..ac2c305b 100644 --- a/luci-app-aria2/po/ko/aria2.po +++ b/luci-app-aria2/po/ko/aria2.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"PO-Revision-Date: 2026-02-15 08:21+0000\n" +"PO-Revision-Date: 2026-03-14 19:10+0000\n" "Last-Translator: Hyeonjeong Lee \n" "Language-Team: Korean \n" @@ -8,11 +8,11 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 5.16-dev\n" +"X-Generator: Weblate 5.17-dev\n" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/config.js:433 msgid "LPD enabled" -msgstr "" +msgstr "LPD 활성화" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/config.js:551 msgid "Additional BT tracker" diff --git a/luci-app-aria2/po/pt_BR/aria2.po b/luci-app-aria2/po/pt_BR/aria2.po index fec27f8d..87b3690e 100644 --- a/luci-app-aria2/po/pt_BR/aria2.po +++ b/luci-app-aria2/po/pt_BR/aria2.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2026-01-20 07:02+0000\n" -"Last-Translator: Nicolas Aigner \n" +"PO-Revision-Date: 2026-03-10 02:29+0000\n" +"Last-Translator: Volenski \n" "Language-Team: Portuguese (Brazil) \n" "Language: pt_BR\n" @@ -11,7 +11,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 5.16-dev\n" +"X-Generator: Weblate 5.17-dev\n" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/config.js:433 msgid "LPD enabled" @@ -99,7 +99,7 @@ msgstr "Diretório dos arquivos de configuração" #: applications/luci-app-aria2/root/usr/share/luci/menu.d/luci-app-aria2.json:15 msgid "Configuration" -msgstr "Configurações" +msgstr "Configuração" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/config.js:367 msgid "Connect timeout" @@ -590,8 +590,8 @@ msgid "" "you can add Cache-Control header with a directive you like using \"Header\" " "option." msgstr "" -"Envie os cabeçalhos Cache-Control: no-cache e Pragma: " -"no-cache para evitar a cache de conteúdo. Se desativado, estes " +"Enviar cabeçalho Cache-Control: no-cache e Pragma: no-" +"cache para evitar conteúdo armazenado em cache. Se desativado, estes " "cabeçalhos não são enviados e você pode adicionar o cabeçalho Cache-Control " "com uma diretiva que você gosta usando a opção \"Cabeçalho\"." diff --git a/luci-app-aria2/po/zh_Hans/aria2.po b/luci-app-aria2/po/zh_Hans/aria2.po index 5eede0fa..652ba9a5 100644 --- a/luci-app-aria2/po/zh_Hans/aria2.po +++ b/luci-app-aria2/po/zh_Hans/aria2.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"PO-Revision-Date: 2026-03-06 07:15+0000\n" +"PO-Revision-Date: 2026-03-09 19:11+0000\n" "Last-Translator: nKsyn \n" "Language-Team: Chinese (Simplified Han script) \n" @@ -377,7 +377,7 @@ msgstr "无" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/config.js:232 msgid "Notice" -msgstr "通知" +msgstr "通知 (Notice)" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/config.js:242 msgid "Pause" diff --git a/luci-app-aria2/po/zh_Hant/aria2.po b/luci-app-aria2/po/zh_Hant/aria2.po index f5ecaee1..1dc32a7a 100644 --- a/luci-app-aria2/po/zh_Hant/aria2.po +++ b/luci-app-aria2/po/zh_Hant/aria2.po @@ -3,7 +3,7 @@ # msgid "" msgstr "" -"PO-Revision-Date: 2026-02-28 09:35+0000\n" +"PO-Revision-Date: 2026-03-11 18:10+0000\n" "Last-Translator: EESF-2 \n" "Language-Team: Chinese (Traditional Han script) \n" @@ -11,7 +11,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 5.16.1-dev\n" +"X-Generator: Weblate 5.17-dev\n" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/config.js:433 msgid "LPD enabled" @@ -124,7 +124,7 @@ msgstr "" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/config.js:577 msgid "Disk cache" -msgstr "磁碟快取" +msgstr "硬碟快取" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/config.js:396 msgid "Don't split less than 2*SIZE byte range. Possible values: 1M-1024M." @@ -156,11 +156,11 @@ msgstr "啟用對等點交換擴充。" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/config.js:579 msgid "Enable disk cache (in bytes), set 0 to disabled." -msgstr "啟用磁碟快取 (Bytes),設定 0 為停用。" +msgstr "啟用硬碟快取 (Bytes),設定 0 為停用。" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/config.js:220 msgid "Enable logging" -msgstr "啟用日誌" +msgstr "啟用紀錄" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/config.js:442 msgid "Enable peer exchange" @@ -275,11 +275,11 @@ msgstr "保留在記憶體中" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/log.js:31 msgid "Last 50 lines of log file:" -msgstr "日誌檔案最後 50 行:" +msgstr "紀錄檔案最後 50 行:" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/log.js:36 msgid "Last 50 lines of syslog:" -msgstr "系統日誌最後 50 行:" +msgstr "系統紀錄最後 50 行:" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/config.js:210 msgid "Leave blank to use default user." @@ -303,19 +303,19 @@ msgstr "載入中" #: applications/luci-app-aria2/root/usr/share/luci/menu.d/luci-app-aria2.json:33 msgid "Log" -msgstr "日誌" +msgstr "紀錄" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/log.js:58 msgid "Log Data" -msgstr "日誌資料" +msgstr "紀錄資料" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/config.js:223 msgid "Log file" -msgstr "日誌檔案" +msgstr "紀錄檔案" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/config.js:228 msgid "Log level" -msgstr "日誌等級" +msgstr "紀錄等級" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/config.js:377 msgid "Lowest speed limit" @@ -372,7 +372,7 @@ msgstr "無認證" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/log.js:33 #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/log.js:38 msgid "No log data." -msgstr "無日誌資料。" +msgstr "無紀錄資料。" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/config.js:591 msgid "None" @@ -408,7 +408,7 @@ msgstr "Peer ID 前綴" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/config.js:341 msgid "Private key" -msgstr "私密金鑰" +msgstr "私鑰" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/config.js:317 msgid "Proxy password" @@ -440,7 +440,7 @@ msgstr "RPC 連接埠" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/config.js:293 msgid "RPC private key" -msgstr "RPC 私密金鑰" +msgstr "RPC 私鑰" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/config.js:276 msgid "RPC secure" @@ -476,7 +476,7 @@ msgid "" "Please use this option with care because it will actually remove files from " "your disk." msgstr "" -"BitTorrent 下載完成後刪除未選檔案。請小心使用此選項,因為它實際上會從磁碟中刪" +"BitTorrent 下載完成後刪除未選檔案。請小心使用此選項,因為它實際上會從硬碟中刪" "除檔案。" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/config.js:514 @@ -725,7 +725,7 @@ msgstr "儲存下載檔案的目錄。例如: /mnt/sda1。" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/config.js:224 msgid "The file name of the log file." -msgstr "日誌檔案名稱。" +msgstr "紀錄檔案名稱。" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/config.js:386 msgid "The maximum number of connections to one server for each download." @@ -771,9 +771,10 @@ msgid "" msgstr "" "RPC 伺服器使用的憑證檔案。憑證格式必須為 PKCS12 (.p12, .pfx) 或 PEM。
PKCS12 檔案必須包含憑證、金鑰以及可選的附加憑證鏈,且該檔案不能有匯入密碼!" -"
使用 PEM 時,您必須同時指定 RPC 私密金鑰。" +"
使用 PEM 時,您必須同時指定 RPC 私鑰。" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/config.js:335 +#, fuzzy msgid "" "Use the client certificate in FILE. The certificate must be either in PKCS12 " "(.p12, .pfx) or in PEM format.
PKCS12 files must contain the " @@ -783,19 +784,20 @@ msgid "" msgstr "" "用戶端使用的憑證檔案。憑證格式必須為 PKCS12 (.p12, .pfx) 或 PEM。
PKCS12 " "檔案必須包含憑證、金鑰以及可選的附加憑證鏈,且該檔案不能有匯入密碼!
使" -"用 PEM 時,您必須同時指定私密金鑰。" +"用 PEM 時,您必須同時指定私鑰。" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/config.js:294 msgid "" "Use the private key in FILE for RPC server. The private key must be " "decrypted and in PEM format." -msgstr "RPC 伺服器使用的私密金鑰檔案。私密金鑰必須被解密,且格式為 PEM。" +msgstr "RPC 伺服器使用的私鑰檔案。私鑰必須被解密,且格式為 PEM。" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/config.js:342 +#, fuzzy msgid "" "Use the private key in FILE. The private key must be decrypted and in PEM " "format. The behavior when encrypted one is given is undefined." -msgstr "使用的私密金鑰檔案。其必須被解密且為 PEM 格式。" +msgstr "使用的私鑰檔案。其必須被解密且為 PEM 格式。" #: applications/luci-app-aria2/htdocs/luci-static/resources/view/aria2/config.js:408 msgid "User agent" diff --git a/luci-app-ddns/po/bg/ddns.po b/luci-app-ddns/po/bg/ddns.po index f104de2e..e2c0db07 100644 --- a/luci-app-ddns/po/bg/ddns.po +++ b/luci-app-ddns/po/bg/ddns.po @@ -1,15 +1,14 @@ msgid "" msgstr "" -"PO-Revision-Date: 2025-10-27 15:04+0000\n" -"Last-Translator: 109247019824 " -"<109247019824@users.noreply.hosted.weblate.org>\n" +"PO-Revision-Date: 2026-03-15 08:27+0000\n" +"Last-Translator: Daniel Konstantinov \n" "Language-Team: Bulgarian \n" "Language: bg\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.14.1-dev\n" +"X-Generator: Weblate 5.17-dev\n" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:423 msgid "\"../\" not allowed in path for Security Reason." @@ -17,7 +16,7 @@ msgstr "\"../\" не се разрешава в пътя заради сигур #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:763 msgid "A.k.a. the TOKEN at e.g. afraid.org" -msgstr "" +msgstr "Познат още като TOKEN, например на afraid.org" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:458 #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:526 diff --git a/luci-app-ddns/po/ca/ddns.po b/luci-app-ddns/po/ca/ddns.po index 3d943581..7c8382b3 100644 --- a/luci-app-ddns/po/ca/ddns.po +++ b/luci-app-ddns/po/ca/ddns.po @@ -2,8 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: luci-app-ddns 2.4.0-1\n" "POT-Creation-Date: 2016-01-30 11:07+0100\n" -"PO-Revision-Date: 2025-12-02 19:00+0000\n" -"Last-Translator: Alfonso Montero López \n" +"PO-Revision-Date: 2026-03-08 17:33+0000\n" +"Last-Translator: Christopher Picón " +"\n" "Language-Team: Catalan \n" "Language: ca\n" @@ -11,11 +12,11 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.15-dev\n" +"X-Generator: Weblate 5.17-dev\n" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:423 msgid "\"../\" not allowed in path for Security Reason." -msgstr "" +msgstr "No es permet «../» a la ruta per motius de seguretat." #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:763 msgid "A.k.a. the TOKEN at e.g. afraid.org" @@ -28,7 +29,7 @@ msgstr "" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:607 msgid "Advanced Settings" -msgstr "Configuració avançada" +msgstr "Configuració Avançada" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:392 msgid "Allow non-public IPs" @@ -115,7 +116,6 @@ msgid "Custom update script for updating your DDNS Provider." msgstr "" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:708 -#, fuzzy msgid "Custom update-URL" msgstr "URL d'actualització personalitzada" diff --git a/luci-app-ddns/po/cs/ddns.po b/luci-app-ddns/po/cs/ddns.po index b11ec711..4bcda853 100644 --- a/luci-app-ddns/po/cs/ddns.po +++ b/luci-app-ddns/po/cs/ddns.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: luci-app-ddns 2.4.0-1\n" "POT-Creation-Date: 2016-01-30 11:07+0100\n" -"PO-Revision-Date: 2026-01-28 10:51+0000\n" +"PO-Revision-Date: 2026-03-08 17:30+0000\n" "Last-Translator: Pavel Borecki \n" "Language-Team: Czech \n" @@ -11,7 +11,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n" -"X-Generator: Weblate 5.16-dev\n" +"X-Generator: Weblate 5.17-dev\n" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:423 msgid "\"../\" not allowed in path for Security Reason." @@ -297,7 +297,7 @@ msgstr "" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:806 msgid "IP address source" -msgstr "Zdrojová IP adresa" +msgstr "Zdroj IP adresy" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:503 #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:629 @@ -354,7 +354,7 @@ msgstr "" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:963 msgid "Info" -msgstr "Pro informaci" +msgstr "Info" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:264 msgid "Information" @@ -930,7 +930,7 @@ msgstr "nebo aktualizujte systém na nejnovější verzi OpenWrt" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1000 #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1062 msgid "seconds" -msgstr "sekundy/sekund" +msgstr "sekund" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:793 msgid "to run HTTPS without verification of server certificates (insecure)" diff --git a/luci-app-ddns/po/es/ddns.po b/luci-app-ddns/po/es/ddns.po index a451583a..7fecbac4 100644 --- a/luci-app-ddns/po/es/ddns.po +++ b/luci-app-ddns/po/es/ddns.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: luci-app-ddns 2.4.0-1\n" "POT-Creation-Date: 2016-01-30 11:07+0100\n" -"PO-Revision-Date: 2026-03-05 00:31+0000\n" +"PO-Revision-Date: 2026-03-13 14:10+0000\n" "Last-Translator: Franco Castillo \n" "Language-Team: Spanish \n" diff --git a/luci-app-ddns/po/ga/ddns.po b/luci-app-ddns/po/ga/ddns.po index 02e1bfed..7c5ca036 100644 --- a/luci-app-ddns/po/ga/ddns.po +++ b/luci-app-ddns/po/ga/ddns.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"PO-Revision-Date: 2026-02-05 11:43+0000\n" +"PO-Revision-Date: 2026-03-09 19:11+0000\n" "Last-Translator: Aindriú Mac Giolla Eoin \n" "Language-Team: Irish \n" @@ -9,7 +9,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : (n>2 && n<7) ? 2 :" "(n>6 && n<11) ? 3 : 4;\n" -"X-Generator: Weblate 5.16-dev\n" +"X-Generator: Weblate 5.17-dev\n" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:423 msgid "\"../\" not allowed in path for Security Reason." @@ -351,7 +351,7 @@ msgstr "" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:963 msgid "Info" -msgstr "Faisnéis" +msgstr "Eolas" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:264 msgid "Information" diff --git a/luci-app-ddns/po/pt_BR/ddns.po b/luci-app-ddns/po/pt_BR/ddns.po index 787ba809..7797b70b 100644 --- a/luci-app-ddns/po/pt_BR/ddns.po +++ b/luci-app-ddns/po/pt_BR/ddns.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: luci-app-ddns 2.4.0-1\n" "POT-Creation-Date: 2016-01-30 11:07+0100\n" -"PO-Revision-Date: 2026-01-20 07:02+0000\n" -"Last-Translator: Nicolas Aigner \n" +"PO-Revision-Date: 2026-03-09 19:11+0000\n" +"Last-Translator: Volenski \n" "Language-Team: Portuguese (Brazil) \n" "Language: pt_BR\n" @@ -11,7 +11,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 5.16-dev\n" +"X-Generator: Weblate 5.17-dev\n" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:423 msgid "\"../\" not allowed in path for Security Reason." @@ -36,7 +36,7 @@ msgstr "Permitir IPs não-públicos" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:606 msgid "Basic Settings" -msgstr "Configurações básicas" +msgstr "Configurações Básicas" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:903 msgid "Bind Network" @@ -88,7 +88,7 @@ msgstr "Verificar a Unidade" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/status/include/70_ddns.js:27 msgid "Configuration" -msgstr "Configurações" +msgstr "Configuração" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:226 #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1134 @@ -814,7 +814,7 @@ msgstr "Script definido pelo usuário para ler endereço IP do sistema" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:754 msgid "Username" -msgstr "Nome do usuário" +msgstr "Nome de usuário" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:371 msgid "Using specific DNS Server not supported" diff --git a/luci-app-ddns/po/zh_Hans/ddns.po b/luci-app-ddns/po/zh_Hans/ddns.po index a71f180c..c94ec1cb 100644 --- a/luci-app-ddns/po/zh_Hans/ddns.po +++ b/luci-app-ddns/po/zh_Hans/ddns.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: luci-app-ddns 2.4.0-1\n" "POT-Creation-Date: 2016-01-30 11:07+0100\n" -"PO-Revision-Date: 2026-03-06 07:15+0000\n" +"PO-Revision-Date: 2026-03-09 19:11+0000\n" "Last-Translator: nKsyn \n" "Language-Team: Chinese (Simplified Han script) \n" @@ -498,7 +498,7 @@ msgstr "未在运行" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:964 msgid "Notice" -msgstr "通知" +msgstr "通知 (Notice)" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:429 msgid "Number of last lines stored in log files" diff --git a/luci-app-ddns/po/zh_Hant/ddns.po b/luci-app-ddns/po/zh_Hant/ddns.po index 948a1e01..3b43f38b 100644 --- a/luci-app-ddns/po/zh_Hant/ddns.po +++ b/luci-app-ddns/po/zh_Hant/ddns.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: luci-app-ddns 2.4.0-1\n" "POT-Creation-Date: 2016-01-30 11:07+0100\n" -"PO-Revision-Date: 2026-02-20 00:33+0000\n" +"PO-Revision-Date: 2026-03-09 19:12+0000\n" "Last-Translator: EESF-2 \n" "Language-Team: Chinese (Traditional Han script) \n" @@ -14,7 +14,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 5.16.1-dev\n" +"X-Generator: Weblate 5.17-dev\n" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:423 msgid "\"../\" not allowed in path for Security Reason." @@ -96,7 +96,7 @@ msgstr "配置錯誤" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:417 msgid "Contains Log files for each running section." -msgstr "包含每個執行區域的日誌檔案。" +msgstr "包含每個執行區域的紀錄檔案。" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:411 msgid "Contains PID and other status information for each running section." @@ -389,15 +389,15 @@ msgstr "最後更新" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:609 msgid "Log File Viewer" -msgstr "日誌檔案檢視器" +msgstr "紀錄檔案檢視器" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:416 msgid "Log directory" -msgstr "日誌目錄" +msgstr "紀錄目錄" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:428 msgid "Log length" -msgstr "日誌長度" +msgstr "紀錄長度" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:969 msgid "Log to file" @@ -405,7 +405,7 @@ msgstr "記錄至檔案" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:957 msgid "Log to syslog" -msgstr "記錄至系統日誌" +msgstr "記錄至系統紀錄" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:621 #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1130 @@ -482,7 +482,7 @@ msgstr "未找到憑證" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:962 msgid "No logging" -msgstr "無日誌" +msgstr "無紀錄" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:393 msgid "Non-public and by default blocked IPs" @@ -499,7 +499,7 @@ msgstr "注意" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:429 msgid "Number of last lines stored in log files" -msgstr "日誌檔案中儲存的最後行數" +msgstr "紀錄檔案中儲存的最後行數" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:916 msgid "OPTIONAL: Force the usage of pure IPv4/IPv6 only communication." @@ -570,7 +570,7 @@ msgstr "提供更新指令碼或更新 URL" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1069 msgid "Read / Reread log file" -msgstr "讀取 / 重讀日誌檔案" +msgstr "讀取 / 重讀紀錄檔案" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:693 msgid "Really switch service?" @@ -722,7 +722,7 @@ msgstr "" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1085 msgid "This is the current content of the log file in %h for this service." -msgstr "這是此服務在 %h 中日誌檔案的當前內容。" +msgstr "這是此服務在 %h 中紀錄檔案的當前內容。" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:210 #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:277 @@ -817,13 +817,13 @@ msgstr "重試計數器使用的時間單位。" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:974 msgid "" "Writes detailed messages to log file. File will be truncated automatically." -msgstr "將詳細訊息寫入日誌檔案。檔案會自動截斷。" +msgstr "將詳細訊息寫入紀錄檔案。檔案會自動截斷。" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:958 msgid "" "Writes log messages to syslog. Critical Errors will always be written to " "syslog." -msgstr "將日誌訊息寫入系統日誌。嚴重錯誤將始終寫入系統日誌。" +msgstr "將紀錄訊息寫入系統紀錄。嚴重錯誤將始終寫入系統紀錄。" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:375 msgid "" diff --git a/luci-app-ksmbd/po/bg/ksmbd.po b/luci-app-ksmbd/po/bg/ksmbd.po index bc05dbe0..7d0039ec 100644 --- a/luci-app-ksmbd/po/bg/ksmbd.po +++ b/luci-app-ksmbd/po/bg/ksmbd.po @@ -1,7 +1,7 @@ msgid "" msgstr "" -"PO-Revision-Date: 2026-03-05 17:52+0000\n" -"Last-Translator: Nikolay Tsanov \n" +"PO-Revision-Date: 2026-03-15 08:27+0000\n" +"Last-Translator: Daniel Konstantinov \n" "Language-Team: Bulgarian \n" "Language: bg\n" @@ -17,7 +17,7 @@ msgstr "" #: applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js:57 msgid "Allow guest on IPC$." -msgstr "" +msgstr "Разреши гост достъп до IPC$." #: applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js:103 msgid "Allow guests" @@ -25,13 +25,15 @@ msgstr "Разрешаване на гости" #: applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js:60 msgid "Allow legacy (insecure) protocols/authentication." -msgstr "" +msgstr "Разреши стари (несигурни) протоколи/автентикация." #: applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js:61 msgid "" "Allow legacy smb(v1)/Lanman connections, needed for older devices without " "smb(v2.1/3) support." msgstr "" +"Разреши стари smb(v1)/Lanman връзки, необходими за по-стари устройства без " +"поддръжка на smb(v2.1/3)." #: applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js:100 msgid "Allowed users" diff --git a/luci-app-ksmbd/po/ca/ksmbd.po b/luci-app-ksmbd/po/ca/ksmbd.po index 92278d5a..194c8066 100644 --- a/luci-app-ksmbd/po/ca/ksmbd.po +++ b/luci-app-ksmbd/po/ca/ksmbd.po @@ -1,14 +1,15 @@ msgid "" msgstr "" -"PO-Revision-Date: 2022-07-25 17:15+0000\n" -"Last-Translator: dtalens \n" +"PO-Revision-Date: 2026-03-08 17:32+0000\n" +"Last-Translator: Christopher Picón " +"\n" "Language-Team: Catalan \n" "Language: ca\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.14-dev\n" +"X-Generator: Weblate 5.17-dev\n" #: applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js:58 msgid "Add optional guest access to IPC$ share, disabled by default" @@ -20,7 +21,7 @@ msgstr "" #: applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js:103 msgid "Allow guests" -msgstr "" +msgstr "Permet convidats" #: applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js:60 msgid "Allow legacy (insecure) protocols/authentication." diff --git a/luci-app-ksmbd/po/hu/ksmbd.po b/luci-app-ksmbd/po/hu/ksmbd.po index 3eda939d..4c8c849f 100644 --- a/luci-app-ksmbd/po/hu/ksmbd.po +++ b/luci-app-ksmbd/po/hu/ksmbd.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"PO-Revision-Date: 2025-05-08 13:02+0000\n" +"PO-Revision-Date: 2026-03-08 17:30+0000\n" "Last-Translator: hmzs \n" "Language-Team: Hungarian \n" @@ -8,7 +8,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.12-dev\n" +"X-Generator: Weblate 5.17-dev\n" #: applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js:58 msgid "Add optional guest access to IPC$ share, disabled by default" diff --git a/luci-app-openclash/Makefile b/luci-app-openclash/Makefile index 371a4187..fe0fc3c2 100644 --- a/luci-app-openclash/Makefile +++ b/luci-app-openclash/Makefile @@ -1,8 +1,8 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-openclash -PKG_VERSION:=0.47.055 -PKG_RELEASE:=1 +PKG_VERSION:=0.47.071 +PKG_RELEASE:=2 PKG_MAINTAINER:=vernesong PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME) @@ -33,7 +33,6 @@ define Build/Prepare mkdir -p $(PKG_BUILD_DIR)/root/etc/openclash/config mkdir -p $(PKG_BUILD_DIR)/root/etc/openclash/rule_provider mkdir -p $(PKG_BUILD_DIR)/root/etc/openclash/proxy_provider - mkdir -p $(PKG_BUILD_DIR)/root/etc/openclash/backup mkdir -p $(PKG_BUILD_DIR)/root/etc/openclash/core mkdir -p $(PKG_BUILD_DIR)/root/usr/share/openclash/backup/overwrite cp -f "$(PKG_BUILD_DIR)/root/etc/config/openclash" "$(PKG_BUILD_DIR)/root/usr/share/openclash/backup/openclash" >/dev/null 2>&1 @@ -83,8 +82,6 @@ endef define Package/$(PKG_NAME)/prerm #!/bin/sh - uci -q set openclash.config.enable=0 - uci -q commit openclash [ -n "$(pidof clash)" ] && /etc/init.d/openclash stop 2>/dev/null if [ -f "/etc/config/openclash" ] && [ ! -f "/tmp/openclash.bak" ]; then cp -f "/etc/config/openclash" "/tmp/openclash.bak" >/dev/null 2>&1 @@ -110,17 +107,12 @@ define Package/$(PKG_NAME)/postrm rm -rf /tmp/openclash_start.log >/dev/null 2>&1 rm -rf /tmp/openclash_last_version >/dev/null 2>&1 rm -rf /tmp/openclash.change >/dev/null 2>&1 - rm -rf /tmp/Proxy_Group >/dev/null 2>&1 - rm -rf /tmp/rules_name >/dev/null 2>&1 - rm -rf /tmp/rule_providers_name >/dev/null 2>&1 rm -rf /tmp/clash_last_version >/dev/null 2>&1 rm -rf /usr/share/openclash >/dev/null 2>&1 rm -rf ${DNSMASQ_CONF_DIR}/dnsmasq_openclash_custom_domain.conf >/dev/null 2>&1 rm -rf ${DNSMASQ_CONF_DIR}/dnsmasq_openclash_chnroute_pass.conf >/dev/null 2>&1 rm -rf ${DNSMASQ_CONF_DIR}/dnsmasq_openclash_chnroute6_pass.conf >/dev/null 2>&1 - rm -rf /tmp/dler* >/dev/null 2>&1 rm -rf /tmp/etc/openclash >/dev/null 2>&1 - rm -rf /tmp/openclash_edit_file_name >/dev/null 2>&1 rm -rf /tmp/openclash_announcement >/dev/null 2>&1 rm -rf /www/luci-static/resources/openclash >/dev/null 2>&1 sed -i '/OpenClash Append/,/OpenClash Append End/d' "/usr/lib/lua/luci/model/network.lua" >/dev/null 2>&1 diff --git a/luci-app-openclash/luasrc/controller/openclash.lua b/luci-app-openclash/luasrc/controller/openclash.lua index e8b9b974..6906d09f 100644 --- a/luci-app-openclash/luasrc/controller/openclash.lua +++ b/luci-app-openclash/luasrc/controller/openclash.lua @@ -42,11 +42,6 @@ function index() entry({"admin", "services", "openclash", "one_key_update_check"}, call("action_one_key_update_check")) entry({"admin", "services", "openclash", "switch_mode"}, call("action_switch_mode")) entry({"admin", "services", "openclash", "op_mode"}, call("action_op_mode")) - entry({"admin", "services", "openclash", "dler_info"}, call("action_dler_info")) - entry({"admin", "services", "openclash", "dler_checkin"}, call("action_dler_checkin")) - entry({"admin", "services", "openclash", "dler_logout"}, call("action_dler_logout")) - entry({"admin", "services", "openclash", "dler_login"}, call("action_dler_login")) - entry({"admin", "services", "openclash", "dler_login_info_save"}, call("action_dler_login_info_save")) entry({"admin", "services", "openclash", "sub_info_get"}, call("sub_info_get")) entry({"admin", "services", "openclash", "config_name"}, call("action_config_name")) entry({"admin", "services", "openclash", "switch_config"}, call("action_switch_config")) @@ -75,22 +70,17 @@ function index() entry({"admin", "services", "openclash", "announcement"}, call("action_announcement")) entry({"admin", "services", "openclash", "settings"},cbi("openclash/settings"),_("Plugin Settings"), 30).leaf = true entry({"admin", "services", "openclash", "config-overwrite"},cbi("openclash/config-overwrite"),_("Overwrite Settings"), 40).leaf = true - entry({"admin", "services", "openclash", "servers"},cbi("openclash/servers"),_("Onekey Create"), 50).leaf = true + entry({"admin", "services", "openclash", "config-subscribe"},cbi("openclash/config-subscribe"),_("Config Subscribe"), 60).leaf = true + entry({"admin", "services", "openclash", "servers"},cbi("openclash/servers"),nil).leaf = true entry({"admin", "services", "openclash", "other-rules-edit"},cbi("openclash/other-rules-edit"), nil).leaf = true entry({"admin", "services", "openclash", "custom-dns-edit"},cbi("openclash/custom-dns-edit"), nil).leaf = true entry({"admin", "services", "openclash", "other-file-edit"},cbi("openclash/other-file-edit"), nil).leaf = true - entry({"admin", "services", "openclash", "rule-providers-settings"},cbi("openclash/rule-providers-settings"),_("Rule Providers Append"), 60).leaf = true - entry({"admin", "services", "openclash", "game-rules-manage"},form("openclash/game-rules-manage"), nil).leaf = true - entry({"admin", "services", "openclash", "rule-providers-manage"},form("openclash/rule-providers-manage"), nil).leaf = true entry({"admin", "services", "openclash", "proxy-provider-file-manage"},form("openclash/proxy-provider-file-manage"), nil).leaf = true entry({"admin", "services", "openclash", "rule-providers-file-manage"},form("openclash/rule-providers-file-manage"), nil).leaf = true - entry({"admin", "services", "openclash", "game-rules-file-manage"},form("openclash/game-rules-file-manage"), nil).leaf = true - entry({"admin", "services", "openclash", "config-subscribe"},cbi("openclash/config-subscribe"),_("Config Subscribe"), 70).leaf = true entry({"admin", "services", "openclash", "config-subscribe-edit"},cbi("openclash/config-subscribe-edit"), nil).leaf = true entry({"admin", "services", "openclash", "servers-config"},cbi("openclash/servers-config"), nil).leaf = true entry({"admin", "services", "openclash", "groups-config"},cbi("openclash/groups-config"), nil).leaf = true entry({"admin", "services", "openclash", "proxy-provider-config"},cbi("openclash/proxy-provider-config"), nil).leaf = true - entry({"admin", "services", "openclash", "rule-providers-config"},cbi("openclash/rule-providers-config"), nil).leaf = true entry({"admin", "services", "openclash", "config"},form("openclash/config"),_("Config Manage"), 80).leaf = true entry({"admin", "services", "openclash", "log"},cbi("openclash/log"),_("Server Logs"), 90).leaf = true entry({"admin", "services", "openclash", "myip_check"}, call("action_myip_check")) @@ -177,19 +167,13 @@ end local function startlog() local info = "" - local line_trans = "" if fs.access("/tmp/openclash_start.log") then info = luci.sys.exec("sed -n '$p' /tmp/openclash_start.log 2>/dev/null") - line_trans = info if string.len(info) > 0 then - if not string.find (info, "【") or not string.find (info, "】") then - line_trans = trans_line_nolabel(info) - else - line_trans = trans_line(info) - end - end + info = trans_line(info) + end end - return line_trans + return info end local function pkg_type() @@ -234,23 +218,19 @@ local function coremetacv() end local function corelv() - local status = process_status("/usr/share/openclash/clash_version.sh") local core_meta_lv = "" local core_smart_enable = fs.uci_get_config("config", "smart_enable") or "0" - if not status then - if fs.access("/tmp/clash_last_version") and tonumber(os.time() - fs.mtime("/tmp/clash_last_version")) < 1800 then - if core_smart_enable == "1" then - core_meta_lv = luci.sys.exec("sed -n 2p /tmp/clash_last_version 2>/dev/null |tr -d '\n'") - else - core_meta_lv = luci.sys.exec("sed -n 1p /tmp/clash_last_version 2>/dev/null |tr -d '\n'") - end + if fs.access("/tmp/clash_last_version") then + if core_smart_enable == "1" then + core_meta_lv = luci.sys.exec("sed -n 2p /tmp/clash_last_version 2>/dev/null |tr -d '\n'") else - action_get_last_version() - core_meta_lv = "loading..." + core_meta_lv = luci.sys.exec("sed -n 1p /tmp/clash_last_version 2>/dev/null |tr -d '\n'") end else core_meta_lv = "loading..." end + + action_get_last_version() return core_meta_lv end @@ -274,23 +254,19 @@ local function opcv() end local function oplv() - local status = process_status("/usr/share/openclash/openclash_version.sh") local oplv = "" - if not status then - if fs.access("/tmp/openclash_last_version") and tonumber(os.time() - fs.mtime("/tmp/openclash_last_version")) < 1800 then - oplv = luci.sys.exec("sed -n 1p /tmp/openclash_last_version 2>/dev/null |tr -d '\n'") - else - action_get_last_version() - oplv = "loading..." - end + + if fs.access("/tmp/openclash_last_version") then + oplv = luci.sys.exec("sed -n 1p /tmp/openclash_last_version 2>/dev/null |tr -d '\n'") else oplv = "loading..." end + + action_get_last_version() return oplv end local function opup() - luci.sys.call("rm -rf /tmp/*_last_version 2>/dev/null && bash /usr/share/openclash/openclash_version.sh >/dev/null 2>&1") return luci.sys.call("bash /usr/share/openclash/openclash_update.sh >/dev/null 2>&1 &") end @@ -298,7 +274,6 @@ local function coreup() uci:set("openclash", "config", "enable", "1") uci:commit("openclash") local type = luci.http.formvalue("core_type") - luci.sys.call("rm -rf /tmp/*_last_version 2>/dev/null && bash /usr/share/openclash/clash_version.sh >/dev/null 2>&1") return luci.sys.call(string.format("/usr/share/openclash/openclash_core.sh '%s' >/dev/null 2>&1 &", type)) end @@ -346,21 +321,13 @@ end function core_download() local cdn_url = luci.http.formvalue("url") if cdn_url then - luci.sys.call(string.format("rm -rf /tmp/clash_last_version 2>/dev/null && bash /usr/share/openclash/clash_version.sh '%s' >/dev/null 2>&1", cdn_url)) luci.sys.call(string.format("bash /usr/share/openclash/openclash_core.sh 'Meta' '%s' >/dev/null 2>&1 &", cdn_url)) else - luci.sys.call("rm -rf /tmp/clash_last_version 2>/dev/null && bash /usr/share/openclash/clash_version.sh >/dev/null 2>&1") luci.sys.call("bash /usr/share/openclash/openclash_core.sh 'Meta' >/dev/null 2>&1 &") end end -function download_rule() - local filename = luci.http.formvalue("filename") - local state = luci.sys.call(string.format('/usr/share/openclash/openclash_download_rule_list.sh "%s" >/dev/null 2>&1',filename)) - return state -end - function action_flush_dns_cache() local state = 0 if is_running() then @@ -368,8 +335,8 @@ function action_flush_dns_cache() local dase = dase() or "" local cn_port = cn_port() if not daip or not cn_port then return end - fake_ip_state = luci.sys.exec(string.format('curl -sL -m 3 -H "Content-Type: application/json" -H "Authorization: Bearer %s" -XPOST http://"%s":"%s"/cache/fakeip/flush', dase, daip, cn_port)) - dns_state = luci.sys.exec(string.format('curl -sL -m 3 -H "Content-Type: application/json" -H "Authorization: Bearer %s" -XPOST http://"%s":"%s"/cache/dns/flush', dase, daip, cn_port)) + fake_ip_state = luci.sys.exec(string.format('curl -sL -m 3 --retry 2 -H "Content-Type: application/json" -H "Authorization: Bearer %s" -XPOST http://"%s":"%s"/cache/fakeip/flush', dase, daip, cn_port)) + dns_state = luci.sys.exec(string.format('curl -sL -m 3 --retry 2-H "Content-Type: application/json" -H "Authorization: Bearer %s" -XPOST http://"%s":"%s"/cache/dns/flush', dase, daip, cn_port)) end luci.http.prepare_content("application/json") luci.http.write_json({ @@ -384,7 +351,7 @@ function action_flush_smart_cache() local dase = dase() or "" local cn_port = cn_port() if not daip or not cn_port then return end - flush_state = luci.sys.exec(string.format('curl -sL -m 3 -H "Content-Type: application/json" -H "Authorization: Bearer %s" -XPOST http://"%s":"%s"/cache/smart/flush', dase, daip, cn_port)) + flush_state = luci.sys.exec(string.format('curl -sL -m 3 --retry 2 -H "Content-Type: application/json" -H "Authorization: Bearer %s" -XPOST http://"%s":"%s"/cache/smart/flush', dase, daip, cn_port)) end luci.http.prepare_content("application/json") luci.http.write_json({ @@ -393,13 +360,8 @@ function action_flush_smart_cache() end function action_update_config() - -- filename or config_file is basename + -- filename is basename local filename = luci.http.formvalue("filename") - local config_file = luci.http.formvalue("config_file") - - if not filename and config_file then - filename = config_file - end luci.http.prepare_content("application/json") @@ -450,195 +412,9 @@ end function action_one_key_update() local cdn_url = luci.http.formvalue("url") if cdn_url then - return luci.sys.call(string.format("rm -rf /tmp/*_last_version 2>/dev/null && bash /usr/share/openclash/openclash_update.sh 'one_key_update' '%s' >/dev/null 2>&1 &", cdn_url)) + return luci.sys.call(string.format("bash /usr/share/openclash/openclash_update.sh 'one_key_update' '%s' >/dev/null 2>&1 &", cdn_url)) else - return luci.sys.call("rm -rf /tmp/*_last_version 2>/dev/null && bash /usr/share/openclash/openclash_update.sh 'one_key_update' >/dev/null 2>&1 &") - end -end - -local function dler_login_info_save() - uci:set("openclash", "config", "dler_email", luci.http.formvalue("email")) - uci:set("openclash", "config", "dler_passwd", luci.http.formvalue("passwd")) - uci:set("openclash", "config", "dler_checkin", luci.http.formvalue("checkin")) - uci:set("openclash", "config", "dler_checkin_interval", luci.http.formvalue("interval")) - if tonumber(luci.http.formvalue("multiple")) > 100 then - uci:set("openclash", "config", "dler_checkin_multiple", "100") - elseif tonumber(luci.http.formvalue("multiple")) < 1 or not tonumber(luci.http.formvalue("multiple")) then - uci:set("openclash", "config", "dler_checkin_multiple", "1") - else - uci:set("openclash", "config", "dler_checkin_multiple", luci.http.formvalue("multiple")) - end - uci:commit("openclash") - return "success" -end - -local function dler_login() - local info, token, get_sub, sub_info, sub_key, sub_match, sub_convert, sid - local sub_path = "/tmp/dler_sub" - local email = fs.uci_get_config("config", "dler_email") - local passwd = fs.uci_get_config("config", "dler_passwd") - if email and passwd then - info = luci.sys.exec(string.format("curl -sL -H 'Content-Type: application/json' -d '{\"email\":\"%s\", \"passwd\":\"%s\", \"token_expire\":\"365\" }' -X POST https://dler.cloud/api/v1/login", email, passwd)) - if info then - info = json.parse(info) - end - if info and info.ret == 200 then - token = info.data.token - uci:set("openclash", "config", "dler_token", token) - uci:commit("openclash") - get_sub = string.format("curl -sL -H 'Content-Type: application/json' -d '{\"access_token\":\"%s\"}' -X POST https://dler.cloud/api/v1/managed/clash -o %s", token, sub_path) - luci.sys.exec(get_sub) - sub_info = fs.readfile(sub_path) - if sub_info then - sub_info = json.parse(sub_info) - end - if sub_info and sub_info.ret == 200 then - sub_key = {"smart","ss","vmess","trojan"} - for _,v in ipairs(sub_key) do - while true do - sub_match = false - sub_convert = false - uci:foreach("openclash", "config_subscribe", - function(s) - if s.name == "Dler Cloud - " .. v and s.address == sub_info[v] then - sub_match = true - end - if s.name == "Dler Cloud - " .. v and s.address ~= sub_info[v] then - sub_convert = true - sid = s['.name'] - end - end) - if sub_match then break end - if sub_convert then - uci:set("openclash", sid, "address", sub_info[v]) - else - sid = uci:add("openclash", "config_subscribe") - uci:set("openclash", sid, "name", "Dler Cloud - " .. v) - uci:set("openclash", sid, "address", sub_info[v]) - end - uci:commit("openclash") - break - end - luci.sys.exec(string.format('curl -sL -m 3 --retry 2 --user-agent "clash" "%s" -o "/etc/openclash/config/Dler Cloud - %s.yaml" >/dev/null 2>&1', sub_info[v], v)) - end - end - return info.ret - else - uci:delete("openclash", "config", "dler_token") - uci:commit("openclash") - fs.unlink(sub_path) - fs.unlink("/tmp/dler_checkin") - fs.unlink("/tmp/dler_info") - if info and info.msg then - return info.msg - else - return "login faild" - end - end - else - uci:delete("openclash", "config", "dler_token") - uci:commit("openclash") - fs.unlink(sub_path) - fs.unlink("/tmp/dler_checkin") - fs.unlink("/tmp/dler_info") - return "email or passwd is wrong" - end -end - -local function dler_logout() - local info, token - local token = fs.uci_get_config("config", "dler_token") - if token then - info = luci.sys.exec(string.format("curl -sL -H 'Content-Type: application/json' -d '{\"access_token\":\"%s\"}' -X POST https://dler.cloud/api/v1/logout", token)) - if info then - info = json.parse(info) - end - if info and info.ret == 200 then - uci:delete("openclash", "config", "dler_token") - uci:delete("openclash", "config", "dler_checkin") - uci:delete("openclash", "config", "dler_checkin_interval") - uci:delete("openclash", "config", "dler_checkin_multiple") - uci:commit("openclash") - fs.unlink("/tmp/dler_sub") - fs.unlink("/tmp/dler_checkin") - fs.unlink("/tmp/dler_info") - return info.ret - else - if info and info.msg then - return info.msg - else - return "logout faild" - end - end - else - return "logout faild" - end -end - -local function dler_info() - local info, path, get_info - local token = fs.uci_get_config("config", "dler_token") - path = "/tmp/dler_info" - if token then - get_info = string.format("curl -sL -H 'Content-Type: application/json' -d '{\"access_token\":\"%s\"}' -X POST https://dler.cloud/api/v1/information -o %s", token, path) - if not fs.access(path) then - luci.sys.exec(get_info) - else - if fs.readfile(path) == "" or not fs.readfile(path) then - luci.sys.exec(get_info) - else - if (os.time() - fs.mtime(path) > 900) then - luci.sys.exec(get_info) - end - end - end - info = fs.readfile(path) - if info then - info = json.parse(info) - end - if info and info.ret == 200 and info.data then - return info.data - elseif info and info.msg and info.msg ~= "api error, ignore" then - luci.sys.exec(string.format("echo -e %s Dler Cloud Account Login Failed, The Error Info is【%s】 >> /tmp/openclash.log", os.date("%Y-%m-%d %H:%M:%S"), info.msg)) - info.msg = "api error, ignore" - fs.writefile(path, json.stringify(info)) - elseif info and info.msg and info.msg == "api error, ignore" then - return "error" - else - fs.unlink(path) - luci.sys.exec(string.format("echo -e %s Dler Cloud Account Login Failed! Please Check And Try Again... >> /tmp/openclash.log", os.date("%Y-%m-%d %H:%M:%S"))) - end - return "error" - else - return "error" - end -end - -local function dler_checkin() - local info - local path = "/tmp/dler_checkin" - local token = fs.uci_get_config("config", "dler_token") - local multiple = fs.uci_get_config("config", "dler_checkin_multiple") or 1 - if token then - info = luci.sys.exec(string.format("curl -sL -H 'Content-Type: application/json' -d '{\"access_token\":\"%s\", \"multiple\":\"%s\"}' -X POST https://dler.cloud/api/v1/checkin", token, multiple)) - if info then - info = json.parse(info) - end - if info and info.ret == 200 then - fs.unlink("/tmp/dler_info") - fs.writefile(path, info) - luci.sys.exec(string.format("echo -e %s Dler Cloud Checkin Successful, Result:【%s】 >> /tmp/openclash.log", os.date("%Y-%m-%d %H:%M:%S"), info.data.checkin)) - return info - else - if info and info.msg then - luci.sys.exec(string.format("echo -e %s Dler Cloud Checkin Failed, Result:【%s】 >> /tmp/openclash.log", os.date("%Y-%m-%d %H:%M:%S"), info.msg)) - else - luci.sys.exec(string.format("echo -e %s Dler Cloud Checkin Failed! Please Check And Try Again... >> /tmp/openclash.log",os.date("%Y-%m-%d %H:%M:%S"))) - end - return info - end - else - return "error" + return luci.sys.call("bash /usr/share/openclash/openclash_update.sh 'one_key_update' >/dev/null 2>&1 &") end end @@ -761,10 +537,10 @@ function fetch_sub_info(sub_url, sub_ua) local info, upload, download, total, day_expire, http_code local used, expire, day_left, percent, surplus - info = luci.sys.exec(string.format("curl -sLI -X GET -m 10 -w 'http_code=%%{http_code}' -H 'User-Agent: %s' '%s'", sub_ua, sub_url)) + info = luci.sys.exec(string.format("curl -sLI -X GET -m 10 --retry 2 -w 'http_code=%%{http_code}' -H 'User-Agent: %s' '%s'", sub_ua, sub_url)) local http_match = string.match(info, "http_code=(%d+)") if not info or not http_match or tonumber(http_match) ~= 200 then - info = luci.sys.exec(string.format("curl -sLI -X GET -m 10 -w 'http_code=%%{http_code}' -H 'User-Agent: Quantumultx' '%s'", sub_url)) + info = luci.sys.exec(string.format("curl -sLI -X GET -m 10 --retry 2 -w 'http_code=%%{http_code}' -H 'User-Agent: Quantumultx' '%s'", sub_url)) http_match = string.match(info, "http_code=(%d+)") end @@ -972,7 +748,7 @@ function get_sub_url(filename) end function sub_info_get() - local sub_ua, filename, sub_info + local sub_ua, filename, sub_info, url_result local providers_data = {} filename = luci.http.formvalue("filename") @@ -988,7 +764,7 @@ function sub_info_get() ) if filename and not is_start() then - local url_result = get_sub_url(filename) + url_result = get_sub_url(filename) if not url_result then sub_info = "No Sub Info Found" @@ -1021,7 +797,8 @@ function sub_info_get() luci.http.write_json({ sub_info = sub_info, providers = providers_data, - get_time = os.time() + get_time = os.time(), + url_result = url_result }) end @@ -1032,7 +809,7 @@ function action_rule_mode() local dase = dase() or "" local cn_port = cn_port() if not daip or not cn_port then return end - info = json.parse(luci.sys.exec(string.format('curl -sL -m 3 -H "Content-Type: application/json" -H "Authorization: Bearer %s" -XGET http://"%s":"%s"/configs', dase, daip, cn_port))) + info = json.parse(luci.sys.exec(string.format('curl -sL -m 3 --retry 2 -H "Content-Type: application/json" -H "Authorization: Bearer %s" -XGET http://"%s":"%s"/configs', dase, daip, cn_port))) if info then mode = info["mode"] else @@ -1061,7 +838,7 @@ function action_switch_rule_mode() if is_running() then if not daip or not cn_port then luci.http.status(500, "Switch Faild") return end - info = luci.sys.exec(string.format('curl -sL -m 3 -H "Content-Type: application/json" -H "Authorization: Bearer %s" -XPATCH http://"%s":"%s"/configs -d \'{\"mode\": \"%s\"}\'', dase, daip, cn_port, mode)) + info = luci.sys.exec(string.format('curl -sL -m 3 --retry 2 -H "Content-Type: application/json" -H "Authorization: Bearer %s" -XPATCH http://"%s":"%s"/configs -d \'{\"mode\": \"%s\"}\'', dase, daip, cn_port, mode)) if info ~= "" then luci.http.status(500, "Switch Faild") end @@ -1111,7 +888,7 @@ function action_log_level() local dase = dase() or "" local cn_port = cn_port() if not daip or not cn_port then return end - info = json.parse(luci.sys.exec(string.format('curl -sL -m 3 -H "Content-Type: application/json" -H "Authorization: Bearer %s" -XGET http://"%s":"%s"/configs', dase, daip, cn_port))) + info = json.parse(luci.sys.exec(string.format('curl -sL -m 3 --retry 2 -H "Content-Type: application/json" -H "Authorization: Bearer %s" -XGET http://"%s":"%s"/configs', dase, daip, cn_port))) if info then level = info["log-level"] else @@ -1126,27 +903,6 @@ function action_log_level() }) end -function action_switch_log() - local level, info - if is_running() then - local daip = daip() - local dase = dase() or "" - local cn_port = cn_port() - level = luci.http.formvalue("log_level") - if not daip or not cn_port or not level then luci.http.status(500, "Switch Faild") return end - info = luci.sys.exec(string.format('curl -sL -m 3 -H "Content-Type: application/json" -H "Authorization: Bearer %s" -XPATCH http://"%s":"%s"/configs -d \'{\"log-level\": \"%s\"}\'', dase, daip, cn_port, level)) - if info ~= "" then - luci.http.status(500, "Switch Faild") - end - else - luci.http.status(500, "Switch Faild") - end - luci.http.prepare_content("application/json") - luci.http.write_json({ - info = info; - }) -end - local function s(e) local t=0 local a={' B/S',' KB/S',' MB/S',' GB/S',' TB/S',' PB/S'} @@ -1208,8 +964,8 @@ function action_toolbar_show() local cn_port = cn_port() if not daip or not cn_port then return end - traffic = json.parse(luci.sys.exec(string.format('curl -sL -m 3 -H "Content-Type: application/json" -H "Authorization: Bearer %s" -XGET http://"%s":"%s"/traffic', dase, daip, cn_port))) - connections = json.parse(luci.sys.exec(string.format('curl -sL -m 3 -H "Content-Type: application/json" -H "Authorization: Bearer %s" -XGET http://"%s":"%s"/connections', dase, daip, cn_port))) + traffic = json.parse(luci.sys.exec(string.format('curl -sL -m 3 --retry 2 -H "Content-Type: application/json" -H "Authorization: Bearer %s" -XGET http://"%s":"%s"/traffic', dase, daip, cn_port))) + connections = json.parse(luci.sys.exec(string.format('curl -sL -m 3 --retry 2 -H "Content-Type: application/json" -H "Authorization: Bearer %s" -XGET http://"%s":"%s"/connections', dase, daip, cn_port))) if traffic and connections and connections.connections then connection = #(connections.connections) @@ -1283,41 +1039,6 @@ function action_save_corever_branch() }) end -function action_dler_login_info_save() - luci.http.prepare_content("application/json") - luci.http.write_json({ - dler_login_info_save = dler_login_info_save(); - }) -end - -function action_dler_info() - luci.http.prepare_content("application/json") - luci.http.write_json({ - dler_info = dler_info(); - }) -end - -function action_dler_checkin() - luci.http.prepare_content("application/json") - luci.http.write_json({ - dler_checkin = dler_checkin(); - }) -end - -function action_dler_logout() - luci.http.prepare_content("application/json") - luci.http.write_json({ - dler_logout = dler_logout(); - }) -end - -function action_dler_login() - luci.http.prepare_content("application/json") - luci.http.write_json({ - dler_login = dler_login(); - }) -end - function action_one_key_update_check() luci.http.prepare_content("application/json") luci.http.write_json({ @@ -1366,7 +1087,7 @@ function action_switch_dashboard() local switch_name = luci.http.formvalue("name") local switch_type = luci.http.formvalue("type") local state = luci.sys.call(string.format('/usr/share/openclash/openclash_download_dashboard.sh "%s" "%s" >/dev/null 2>&1', switch_name, switch_type)) - if switch_name == "Dashboard" and tonumber(state) == 1 then + if switch_name == "Dashboard" and tonumber(state) == 0 then if switch_type == "Official" then uci:set("openclash", "config", "dashboard_type", "Official") uci:commit("openclash") @@ -1374,7 +1095,7 @@ function action_switch_dashboard() uci:set("openclash", "config", "dashboard_type", "Meta") uci:commit("openclash") end - elseif switch_name == "Yacd" and tonumber(state) == 1 then + elseif switch_name == "Yacd" and tonumber(state) == 0 then if switch_type == "Official" then uci:set("openclash", "config", "yacd_type", "Official") uci:commit("openclash") @@ -1492,10 +1213,14 @@ end function action_get_last_version() if not process_status("/usr/share/openclash/clash_version.sh") then - luci.sys.call("bash /usr/share/openclash/clash_version.sh &") + if tonumber(os.time() - (fs.mtime("/tmp/clash_last_version") or 0)) > 1800 then + luci.sys.call("bash /usr/share/openclash/clash_version.sh &") + end end if not process_status("/usr/share/openclash/openclash_version.sh") then - luci.sys.call("bash /usr/share/openclash/openclash_version.sh &") + if tonumber(os.time() - (fs.mtime("/tmp/openclash_last_version") or 0)) > 1800 then + luci.sys.call("bash /usr/share/openclash/openclash_version.sh &") + end end end @@ -1570,6 +1295,7 @@ function action_refresh_log() luci.http.prepare_content("application/json") local logfile = "/tmp/openclash.log" local log_len = tonumber(luci.http.formvalue("log_len")) or 0 + local core_refresh = luci.http.formvalue("core_refresh") == "true" if not fs.access(logfile) then luci.http.write_json({ @@ -1594,54 +1320,54 @@ function action_refresh_log() end local exclude_pattern = "UDP%-Receive%-Buffer%-Size|^Sec%-Fetch%-Mode|^User%-Agent|^Access%-Control|^Accept|^Origin|^Referer|^Connection|^Pragma|^Cache%-" - local core_pattern = " DBG | INF |level=| WRN | ERR | FTL " + local core_pattern = "level=|^time=" local limit = 1000 local start_line = (log_len > 0 and total_lines > log_len) and (log_len + 1) or 1 + local core_cmd, oc_cmd, core_raw, oc_raw + local core_logs = {} + local oc_logs = {} - local core_cmd = string.format( + core_cmd = string.format( "tail -n +%d '%s' | grep -v -E '%s' | grep -E '%s' | tail -n %d", start_line, logfile, exclude_pattern, core_pattern, limit ) - local core_raw = luci.sys.exec(core_cmd) - local oc_cmd = string.format( + oc_cmd = string.format( "tail -n +%d '%s' | grep -v -E '%s' | grep -v -E '%s' | tail -n %d", start_line, logfile, exclude_pattern, core_pattern, limit ) - local oc_raw = luci.sys.exec(oc_cmd) - local core_log = "" + if core_refresh then + core_raw = luci.sys.exec(core_cmd) + end + + oc_raw = luci.sys.exec(oc_cmd) + if core_raw and core_raw ~= "" then - local core_logs = {} for line in core_raw:gmatch("[^\n]+") do - local line_trans = line - if string.match(string.sub(line, 0, 8), "%d%d:%d%d:%d%d") then - line_trans = '"'..os.date("%Y-%m-%d", os.time()).. " "..os.date("%H:%M:%S", tonumber(string.sub(line, 0, 8)))..'"'..string.sub(line, 9, -1) - end - table.insert(core_logs, line_trans) - end - if #core_logs > 0 then - core_log = table.concat(core_logs, "\n") + table.insert(core_logs, line) end end - local oc_log = "" if oc_raw and oc_raw ~= "" then - local oc_logs = {} for line in oc_raw:gmatch("[^\n]+") do - local line_trans - if not string.find(line, "【") or not string.find(line, "】") then - line_trans = trans_line_nolabel(line) - else - line_trans = trans_line(line) + if not string.match(string.sub(line, 1, 19), "%d%d%d%d%-%d%d%-%d%d %d%d:%d%d:%d%d") then + line = os.date("%Y-%m-%d %H:%M:%S") .. ' [Fatal] ' .. line end - table.insert(oc_logs, line_trans) - end - if #oc_logs > 0 then - oc_log = table.concat(oc_logs, "\n") + table.insert(oc_logs, trans_line(line)) end end + if #core_logs > limit then + core_logs = {table.unpack(core_logs, #core_logs - limit + 1)} + end + if #oc_logs > limit then + oc_logs = {table.unpack(oc_logs, #oc_logs - limit + 1)} + end + + local core_log = #core_logs > 0 and table.concat(core_logs, "\n") or "" + local oc_log = #oc_logs > 0 and table.concat(oc_logs, "\n") or "" + luci.http.write_json({ len = total_lines, update = true, @@ -1872,8 +1598,6 @@ function rename_file() local new_file_path = file_path .. new_file_name local old_run_file_path = "/etc/openclash/" .. old_file_name local new_run_file_path = "/etc/openclash/" .. new_file_name - local old_backup_file_path = "/etc/openclash/backup/" .. old_file_name - local new_backup_file_path = "/etc/openclash/backup/" .. new_file_name if fs.rename(old_file_path, new_file_path) then if file_path == "/etc/openclash/config/" then if fs.uci_get_config("config", "config_path") == old_file_path then @@ -1884,10 +1608,6 @@ function rename_file() fs.rename(old_run_file_path, new_run_file_path) end - if fs.isfile(old_backup_file_path) then - fs.rename(old_backup_file_path, new_backup_file_path) - end - uci:foreach("openclash", "config_subscribe", function(s) if s.name == fs.filename(old_file_name) and fs.filename(new_file_name) ~= new_file_name then @@ -1895,13 +1615,6 @@ function rename_file() end end) - uci:foreach("openclash", "other_rules", - function(s) - if s.config == old_file_name and fs.filename(new_file_name) ~= new_file_name then - uci:set("openclash", s[".name"], "config", new_file_name) - end - end) - uci:foreach("openclash", "groups", function(s) if s.config == old_file_name and fs.filename(new_file_name) ~= new_file_name then @@ -1916,13 +1629,6 @@ function rename_file() end end) - uci:foreach("openclash", "rule_provider_config", - function(s) - if s.config == old_file_name and fs.filename(new_file_name) ~= new_file_name then - uci:set("openclash", s[".name"], "config", new_file_name) - end - end) - uci:foreach("openclash", "servers", function(s) if s.config == old_file_name and fs.filename(new_file_name) ~= new_file_name then @@ -1930,20 +1636,6 @@ function rename_file() end end) - uci:foreach("openclash", "game_config", - function(s) - if s.config == old_file_name and fs.filename(new_file_name) ~= new_file_name then - uci:set("openclash", s[".name"], "config", new_file_name) - end - end) - - uci:foreach("openclash", "rule_providers", - function(s) - if s.config == old_file_name and fs.filename(new_file_name) ~= new_file_name then - uci:set("openclash", s[".name"], "config", new_file_name) - end - end) - uci:commit("openclash") end luci.http.status(200, "Rename File Successful") @@ -1956,19 +1648,13 @@ end function manual_stream_unlock_test() local type = luci.http.formvalue("type") local cmd = string.format('/usr/share/openclash/openclash_streaming_unlock.lua "%s"', type) - local line_trans luci.http.prepare_content("text/plain; charset=utf-8") local util = io.popen(cmd) if util and util ~= "" then while true do local ln = util:read("*l") if ln then - if not string.find (ln, "【") or not string.find (ln, "】") then - line_trans = trans_line_nolabel(ln) - else - line_trans = trans_line(ln) - end - luci.http.write(line_trans) + luci.http.write(trans_line(ln)) luci.http.write("\n") end if not process_status("openclash_streaming_unlock.lua "..type) or not process_status("openclash_streaming_unlock.lua ") then @@ -1984,19 +1670,13 @@ end function all_proxies_stream_test() local type = luci.http.formvalue("type") local cmd = string.format('/usr/share/openclash/openclash_streaming_unlock.lua "%s" "%s"', type, "all") - local line_trans luci.http.prepare_content("text/plain; charset=utf-8") local util = io.popen(cmd) if util and util ~= "" then while true do local ln = util:read("*l") if ln then - if not string.find (ln, "【") or not string.find (ln, "】") then - line_trans = trans_line_nolabel(ln) - else - line_trans = trans_line(ln) - end - luci.http.write(line_trans) + luci.http.write(trans_line(ln)) luci.http.write("\n") end if not process_status("openclash_streaming_unlock.lua "..type) or not process_status("openclash_streaming_unlock.lua ") then @@ -2009,95 +1689,70 @@ function all_proxies_stream_test() luci.http.status(500, "Something Wrong While Testing...") end -function trans_line_nolabel(data) - if data == nil or data == "" then - return "" - end - - local line_trans = "" - if string.len(data) >= 19 and string.match(string.sub(data, 0, 19), "%d%d%d%d%-%d%d%-%d%d %d%d:%d%d:%d%d") then - line_trans = string.sub(data, 0, 20)..luci.i18n.translate(string.sub(data, 21, -1)) - else - line_trans = luci.i18n.translate(data) - end - return line_trans -end - function trans_line(data) if data == nil or data == "" then return "" end - local no_trans = {} local line_trans = "" - local a = string.find(data, "【") - if not a then - if string.len(data) >= 19 and string.match(string.sub(data, 0, 19), "%d%d%d%d%-%d%d%-%d%d %d%d:%d%d:%d%d") then - return string.sub(data, 0, 20) .. luci.i18n.translate(string.sub(data, 21, -1)) - else - return luci.i18n.translate(data) + local has_timestamp = string.len(data) >= 19 and string.match(string.sub(data, 1, 19), "%d%d%d%d%-%d%d%-%d%d %d%d:%d%d:%d%d") + local time_part = "" + local level_part = "" + local content_start = has_timestamp and 21 or 1 + + if has_timestamp then + time_part = string.sub(data, 1, 20) + local level_start, level_end, level_content = string.find(data, "%[([^%]]+)%]", 21) + if level_start and level_end and level_start == 21 then + level_part = "[" .. luci.i18n.translate(level_content) .. "] " + content_start = level_end + 2 end end - local b_pos = string.find(data, "】") - if not b_pos then - return luci.i18n.translate(data) - end + local segments = {} + local last_pos = content_start + local pos = string.find(data, "【", content_start) - local b = b_pos + 2 - local c = 21 - local d = 0 - local v - local x + while pos do + if pos > last_pos then + table.insert(segments, { + type = "trans", + text = string.sub(data, last_pos, pos - 1) + }) + end - while true do - table.insert(no_trans, a) - table.insert(no_trans, b) - - local next_a = string.find(data, "【", b+1) - local next_b = string.find(data, "】", b+1) - - if next_a and next_b then - a = next_a - b = next_b + 2 - else + local close_pos = string.find(data, "】", pos + 1) + if not close_pos then + table.insert(segments, { + type = "trans", + text = string.sub(data, pos, -1) + }) break end + + table.insert(segments, { + type = "no_trans", + text = string.sub(data, pos, close_pos + 2) + }) + + last_pos = close_pos + 3 + pos = string.find(data, "【", last_pos) end - if #no_trans % 2 ~= 0 then - table.remove(no_trans) + if last_pos <= string.len(data) then + table.insert(segments, { + type = "trans", + text = string.sub(data, last_pos, -1) + }) end - for k = 1, #no_trans, 2 do - x = no_trans[k] - v = no_trans[k+1] - - if x and v then - if x <= 21 or not string.match(string.sub(data, 0, 19), "%d%d%d%d%-%d%d%-%d%d %d%d:%d%d:%d%d") then - line_trans = line_trans .. luci.i18n.translate(string.sub(data, d, x - 1)) .. string.sub(data, x, v) - d = v + 1 - elseif v <= string.len(data) then - line_trans = line_trans .. luci.i18n.translate(string.sub(data, c, x - 1)) .. string.sub(data, x, v) - end - c = v + 1 - end - end - - if c > string.len(data) then - if d == 0 then - if string.match(string.sub(data, 0, 19), "%d%d%d%d%-%d%d%-%d%d %d%d:%d%d:%d%d") then - line_trans = string.sub(data, 0, 20) .. line_trans - end - end - else - if d == 0 then - if string.match(string.sub(data, 0, 19), "%d%d%d%d%-%d%d%-%d%d %d%d:%d%d:%d%d") then - line_trans = string.sub(data, 0, 20) .. line_trans .. luci.i18n.translate(string.sub(data, c, -1)) - end + line_trans = time_part .. level_part + for _, seg in ipairs(segments) do + if seg.type == "trans" then + line_trans = line_trans .. luci.i18n.translate(seg.text) else - line_trans = line_trans .. luci.i18n.translate(string.sub(data, c, -1)) + line_trans = line_trans .. seg.text end end @@ -2364,7 +2019,7 @@ function action_myip_check() if result.ipify and result.ipify.ip then local geo_cmd = string.format( - 'curl -sL -m 5 -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" "https://api-ipv4.ip.sb/geoip/%s" 2>/dev/null', + 'curl -sL -m 5 --retry 2 -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" "https://api-ipv4.ip.sb/geoip/%s" 2>/dev/null', result.ipify.ip ) local geo_data = luci.sys.exec(geo_cmd) @@ -2417,7 +2072,7 @@ function action_website_check() end local cmd = string.format( - 'curl -sL -m 5 --connect-timeout 3 -w "%%{http_code},%%{time_total},%%{time_connect},%%{time_appconnect}" "%s" -o /dev/null 2>/dev/null', + 'curl -sL -m 5 --connect-timeout 3 --retry 2 -w "%%{http_code},%%{time_total},%%{time_connect},%%{time_appconnect}" "%s" -o /dev/null 2>/dev/null', test_url ) @@ -2606,7 +2261,7 @@ function action_switch_oc_setting() return false end - local reload_result = luci.sys.exec(string.format('curl -sL -m 5 --connect-timeout 2 -H "Content-Type: application/json" -H "Authorization: Bearer %s" -XPUT http://"%s":"%s"/configs?force=true -d \'{"path":"%s"}\' 2>&1', dase, daip, cn_port, runtime_config_path)) + local reload_result = luci.sys.exec(string.format('curl -sL -m 5 --connect-timeout 2 --retry 2 -H "Content-Type: application/json" -H "Authorization: Bearer %s" -XPUT http://"%s":"%s"/configs?force=true -d \'{"path":"%s"}\' 2>&1', dase, daip, cn_port, runtime_config_path)) if reload_result ~= "" then luci.http.status(500, "Switch Failed") @@ -2839,7 +2494,7 @@ function action_generate_pac() local mixed_port = fs.uci_get_config("config", "mixed_port") or "7893" if not proxy_ip then - result.error = "Unable to get proxy IP" + result.error = luci.i18n.translate("Unable to get proxy IP") luci.http.prepare_content("application/json") luci.http.write_json(result) return @@ -2959,7 +2614,7 @@ function action_generate_pac() luci.sys.call("chmod 644 " .. pac_file_path) else - result.error = "Failed to write PAC file" + result.error = luci.i18n.translate("Failed to write PAC file") luci.http.prepare_content("application/json") luci.http.write_json(result) return @@ -2972,7 +2627,7 @@ function action_generate_pac() result.pac_url = pac_url if not auth_exists then - result.error = "warning: No authentication configured, please be aware of the risk of information leakage!" + result.error = luci.i18n.translate("No authentication configured, please be aware of the risk of information leakage!") end luci.http.prepare_content("application/json") @@ -3640,7 +3295,7 @@ function action_add_subscription() local address = luci.http.formvalue("address") local sub_ua = luci.http.formvalue("sub_ua") or "clash.meta" local sub_convert = luci.http.formvalue("sub_convert") or "0" - local convert_address = luci.http.formvalue("convert_address") or "https://api.dler.io/sub" + local convert_address = luci.http.formvalue("convert_address") or "" local template = luci.http.formvalue("template") or "" local emoji = luci.http.formvalue("emoji") or "false" local udp = luci.http.formvalue("udp") or "false" @@ -4129,7 +3784,7 @@ function action_overwrite_subscribe_info() local overwrite_dir = "/etc/openclash/overwrite/" local file_path = overwrite_dir .. section_name if url and url ~= "" then - local cmd = string.format('curl -sL --connect-timeout 5 -m 15 "%s" -o "%s"', url, file_path) + local cmd = string.format('curl -sL --connect-timeout 5 -m 15 --retry 2 "%s" -o "%s"', url, file_path) local ret = luci.sys.call(cmd) if not fs.access(file_path) then fs.writefile(file_path, "") @@ -4259,14 +3914,6 @@ function action_get_subscribe_info_data() luci.http.status(400, "Bad Request") return end - - local data = {} - uci:foreach("openclash", "subscribe_info", function(s) - if s.name == filename then - data = s - end - end) - luci.http.prepare_content("application/json") - luci.http.write_json(data) + luci.http.write_json(get_sub_url(filename)) end \ No newline at end of file diff --git a/luci-app-openclash/luasrc/model/cbi/openclash/client.lua b/luci-app-openclash/luasrc/model/cbi/openclash/client.lua index 0e5b5690..893cfcb7 100644 --- a/luci-app-openclash/luasrc/model/cbi/openclash/client.lua +++ b/luci-app-openclash/luasrc/model/cbi/openclash/client.lua @@ -8,14 +8,11 @@ local fs = require "luci.openclash" local uci = require("luci.model.uci").cursor() m = SimpleForm("openclash",translate("OpenClash")) -m.description = translate("A Clash Client For OpenWrt") +m.description = translate("A Mihomo(Clash) Client For OpenWrt") m.reset = false m.submit = false m:section(SimpleSection).template = "openclash/status" -if fs.uci_get_config("config", "dler_token") then - m:append(Template("openclash/dlercloud")) -end m:append(Template("openclash/myip")) m:append(Template("openclash/developer")) diff --git a/luci-app-openclash/luasrc/model/cbi/openclash/config-overwrite.lua b/luci-app-openclash/luasrc/model/cbi/openclash/config-overwrite.lua index f255bb3d..c84e00bc 100644 --- a/luci-app-openclash/luasrc/model/cbi/openclash/config-overwrite.lua +++ b/luci-app-openclash/luasrc/model/cbi/openclash/config-overwrite.lua @@ -56,7 +56,6 @@ s:tab("dns", "DNS "..translate("Settings")) s:tab("meta", translate("Meta Settings")) s:tab("smart", translate("Smart Settings")) s:tab("rules", translate("Rules Setting")) -s:tab("developer", translate("Developer Settings")) ----- General Settings o = s:taboption("settings", ListValue, "interface_name", translate("Bind Network Interface")) @@ -444,10 +443,6 @@ o = s:taboption("smart", DummyValue, "flush_smart_cache", translate("Flush Smart o.template = "openclash/flush_smart_cache" ---- Rules Settings -o = s:taboption("rules", Flag, "rule_source", translate("Enable Other Rules")) -o.description = translate("Use Other Rules") -o.default = 0 - o = s:taboption("rules", Flag, "enable_rule_proxy", translate("Rule Match Proxy Mode")) o.description = translate("Append Some Rules to Config, Allow Only Traffic Proxies that Match the Rule, Prevent BT/P2P Passing") o.default = 0 @@ -496,36 +491,20 @@ function custom_rules_2.write(self, section, value) end end ----- developer -o = s:taboption("developer", Value, "ymchange_custom") -o.template = "cbi/tvalue" -o.description = translate("Custom Config Overwrite Scripts Which Will Run After Plugin Own Completely, Please Be Careful, The Wrong Changes May Lead to Exceptions") -o.rows = 30 -o.wrap = "off" - -function o.cfgvalue(self, section) - return NXFS.readfile("/etc/openclash/custom/openclash_custom_overwrite.sh") or "" -end -function o.write(self, section, value) - if value then - value = value:gsub("\r\n?", "\n") - local old_value = NXFS.readfile("/etc/openclash/custom/openclash_custom_overwrite.sh") - if value ~= old_value then - NXFS.writefile("/etc/openclash/custom/openclash_custom_overwrite.sh", value) - end - end -end - -- [[ Edit Custom DNS ]] -- ds = m:section(TypedSection, "dns_servers", translate("Add Custom DNS Servers")..translate("(Take Effect After Choose Above)")) ds.anonymous = true ds.addremove = true ds.sortable = true -ds.template = "openclash/tblsection_dns" +ds.template = "openclash/tblsection" ds.extedit = luci.dispatcher.build_url("admin/services/openclash/custom-dns-edit/%s") -function ds.create(...) - local sid = TypedSection.create(...) +function ds.create(self, section) + local sid = TypedSection.create(self, section) if sid then + local name = luci.http.formvalue("cbi.cts.tagname.".. self.config .. "." .. self.sectiontype) + if name and #name > 0 then + self.map.uci:set("openclash", sid, "group", name) + end luci.http.redirect(ds.extedit % sid) return end @@ -541,9 +520,9 @@ end ---- group o = ds:option(ListValue, "group", translate("DNS Server Group")) -o:value("nameserver", translate("NameServer ")) -o:value("fallback", translate("FallBack ")) -o:value("default", translate("Default-NameServer")) +o:value("nameserver", translate("nameserver ")) +o:value("fallback", translate("fallback ")) +o:value("default", translate("default-nameserver")) o.default = "nameserver" o.rempty = false @@ -573,53 +552,6 @@ o = ds:option(Flag, "disable_ipv6", translate("Disable-IPv6")) o.rmempty = false o.default = o.disbled --- [[ Other Rules Manage ]]-- -ss = m:section(TypedSection, "other_rules", translate("Other Rules Edit")..translate("(Take Effect After Choose Above)")) -ss.anonymous = true -ss.addremove = true -ss.sortable = true -ss.template = "cbi/tblsection" -ss.extedit = luci.dispatcher.build_url("admin/services/openclash/other-rules-edit/%s") -function ss.create(...) - local sid = TypedSection.create(...) - if sid then - luci.http.redirect(ss.extedit % sid) - return - end -end -ss.render = function(self, ...) - Map.render(self, ...) - if type(optimize_cbi_ui) == "function" then - optimize_cbi_ui() - end -end - -o = ss:option(Flag, "enabled", translate("Enable")) -o.rmempty = false -o.default = o.enabled -o.cfgvalue = function(...) - return Flag.cfgvalue(...) or "1" -end - -o = ss:option(DummyValue, "config", translate("Config File")) -function o.cfgvalue(...) - return Value.cfgvalue(...) or translate("None") -end - -o = ss:option(DummyValue, "rule_name", translate("Other Rules Name")) -function o.cfgvalue(...) - if Value.cfgvalue(...) == "lhie1" then - return translate("lhie1 Rules") - else - return translate("None") - end -end - -o = ss:option(DummyValue, "Note", translate("Note")) -function o.cfgvalue(...) - return Value.cfgvalue(...) or translate("None") -end - -- [[ Edit Authentication ]] -- s = m:section(TypedSection, "authentication", translate("Set Authentication of SOCKS5/HTTP(S)")) s.anonymous = true diff --git a/luci-app-openclash/luasrc/model/cbi/openclash/config-subscribe-edit.lua b/luci-app-openclash/luasrc/model/cbi/openclash/config-subscribe-edit.lua index c1e926de..1b9f853e 100644 --- a/luci-app-openclash/luasrc/model/cbi/openclash/config-subscribe-edit.lua +++ b/luci-app-openclash/luasrc/model/cbi/openclash/config-subscribe-edit.lua @@ -17,8 +17,6 @@ m = Map(openclash, translate("Config Subscribe Edit")) m.pageaction = false m.description=translate("Convert Subscribe function of Online is Supported By subconverter Written By tindy X") .. "
".. -"
"..translate("API By tindy X & lhie1").. -"
".. "
"..translate("Subconverter external configuration (subscription conversion template) Description: https://github.com/tindy2013/subconverter#external-configuration-file").. "
".. "
"..translate("If you need to customize the external configuration file (subscription conversion template), please write it according to the instructions, upload it to the accessible location of the external network, and fill in the address correctly when using it").. @@ -57,32 +55,6 @@ function o.validate(self, value) return value end -local sub_path = "/tmp/dler_sub" -local info, token, get_sub, sub_info -local token = fs.uci_get_config("config", "dler_token") -if token then - get_sub = string.format("curl -sL -H 'Content-Type: application/json' --connect-timeout 2 -d '{\"access_token\":\"%s\"}' -X POST https://dler.cloud/api/v1/managed/clash -o %s", token, sub_path) - if not nixio.fs.access(sub_path) then - luci.sys.exec(get_sub) - else - if fs.readfile(sub_path) == "" or not fs.readfile(sub_path) then - luci.sys.exec(get_sub) - end - end - sub_info = fs.readfile(sub_path) - if sub_info then - sub_info = json.parse(sub_info) - end - if sub_info and sub_info.ret == 200 then - o:value(sub_info.smart) - o:value(sub_info.ss) - o:value(sub_info.vmess) - o:value(sub_info.trojan) - else - fs.unlink(sub_path) - end -end - ---- UA o = s:option(Value, "sub_ua", "User-Agent") o.description = font_red..bold_on..translate("Used for Downloading Subscriptions, Defaults to Clash")..bold_off..font_off @@ -102,11 +74,10 @@ o = s:option(Value, "convert_address", translate("Convert Address")) o.rmempty = true o.description = font_red..bold_on..translate("Note: There is A Risk of Privacy Leakage in Online Convert")..bold_off..font_off o:depends("sub_convert", "1") -o:value("https://api.dler.io/sub", translate("api.dler.io")..translate("(Default)")) o:value("https://api.wcc.best/sub", translate("api.wcc.best")) o:value("https://api.asailor.org/sub", translate("api.asailor.org")) -o.default = "https://api.dler.io/sub" -o.placeholder = "https://api.dler.io/sub" +o.default = "https://api.wcc.best/sub" +o.placeholder = "https://api.wcc.best/sub" ---- Template o = s:option(ListValue, "template", translate("Template Name")) @@ -196,10 +167,10 @@ o.rmempty = true ---- de_exkey o = s:option(MultiValue, "de_ex_keyword", font_red..bold_on..translate("Exclude Keyword Match Default")..bold_off..font_off) o.rmempty = true -o:value("过期时间") -o:value("剩余流量") -o:value("TG群") -o:value("官网") +o:value(translate("Expire")) +o:value(translate("Traffic")) +o:value(translate("Plan")) +o:value(translate("Official")) local t = { {Commit, Back} diff --git a/luci-app-openclash/luasrc/model/cbi/openclash/config-subscribe.lua b/luci-app-openclash/luasrc/model/cbi/openclash/config-subscribe.lua index 93d25512..7fd27a74 100644 --- a/luci-app-openclash/luasrc/model/cbi/openclash/config-subscribe.lua +++ b/luci-app-openclash/luasrc/model/cbi/openclash/config-subscribe.lua @@ -149,7 +149,6 @@ o = a:option(Button, "Commit", " ") o.inputtitle = translate("Commit Settings") o.inputstyle = "apply" o.write = function() - fs.unlink("/tmp/Proxy_Group") m.uci:commit("openclash") end @@ -157,18 +156,8 @@ o = a:option(Button, "Apply", " ") o.inputtitle = translate("Update Config") o.inputstyle = "apply" o.write = function() - fs.unlink("/tmp/Proxy_Group") m.uci:set("openclash", "config", "enable", 1) m.uci:commit("openclash") - uci:foreach("openclash", "config_subscribe", - function(s) - if s.name ~= "" and s.name ~= nil and s.enabled == "1" then - local back_cfg_path_yaml="/etc/openclash/backup/" .. s.name .. ".yaml" - local back_cfg_path_yml="/etc/openclash/backup/" .. s.name .. ".yml" - fs.unlink(back_cfg_path_yaml) - fs.unlink(back_cfg_path_yml) - end - end) SYS.call("/usr/share/openclash/openclash.sh >/dev/null 2>&1 &") HTTP.redirect(DISP.build_url("admin", "services", "openclash")) end diff --git a/luci-app-openclash/luasrc/model/cbi/openclash/config.lua b/luci-app-openclash/luasrc/model/cbi/openclash/config.lua index 9cfaa8bc..0f691971 100644 --- a/luci-app-openclash/luasrc/model/cbi/openclash/config.lua +++ b/luci-app-openclash/luasrc/model/cbi/openclash/config.lua @@ -57,16 +57,11 @@ um = sul:option(DummyValue, "", nil) um.template = "openclash/dvalue" local dir, fd, clash -clash = "/etc/openclash/clash" dir = "/etc/openclash/config/" -bakck_dir="/etc/openclash/backup" proxy_pro_dir="/etc/openclash/proxy_provider/" rule_pro_dir="/etc/openclash/rule_provider/" core_dir="/etc/openclash/core/core/" backup_dir="/tmp/" -create_bakck_dir=fs.mkdir(bakck_dir) -create_proxy_pro_dir=fs.mkdir(proxy_pro_dir) -create_rule_pro_dir=fs.mkdir(rule_pro_dir) HTTP.setfilehandler( function(meta, chunk, eof) @@ -101,15 +96,11 @@ HTTP.setfilehandler( if fp == "config" then CHIF = "1" if IsYamlFile(meta.file) then - local yamlbackup="/etc/openclash/backup/" .. meta.file - local c=fs.copy(dir .. meta.file,yamlbackup) default_config_set(meta.file) end if IsYmlFile(meta.file) then local ymlname=string.lower(string.sub(meta.file,0,-5)) - local ymlbackup="/etc/openclash/backup/".. ymlname .. ".yaml" local c=fs.rename(dir .. meta.file,"/etc/openclash/config/".. ymlname .. ".yaml") - local c=fs.copy("/etc/openclash/config/".. ymlname .. ".yaml",ymlbackup) local yamlname=ymlname .. ".yaml" default_config_set(yamlname) end @@ -160,7 +151,6 @@ HTTP.setfilehandler( fs.unlink(backup_dir .. meta.file) um.value = translate("Backup File Restore Successful!") end - fs.unlink("/tmp/Proxy_Group") end end ) @@ -177,12 +167,7 @@ a=fs.stat(o) if a then e[t]={} e[t].name=fs.basename(o) -BACKUP_FILE="/etc/openclash/backup/".. e[t].name -if fs.mtime(BACKUP_FILE) then - e[t].mtime=os.date("%Y-%m-%d %H:%M:%S",fs.mtime(BACKUP_FILE)) -else - e[t].mtime=os.date("%Y-%m-%d %H:%M:%S",a.mtime) -end +e[t].mtime=os.date("%Y-%m-%d %H:%M:%S",a.mtime) if fs.uci_get_config("config", "config_path") and string.sub(fs.uci_get_config("config", "config_path"), 23, -1) == e[t].name then e[t].state=translate("Enabled") else @@ -206,22 +191,27 @@ st.template="openclash/cfg_check" sb.template="openclash/sub_info_show" btnis=tb:option(Button,"switch",translate("SwiTch")) -btnis.template="openclash/other_button" btnis.render=function(o,t,a) -if not e[t] then return false end -if IsYamlFile(e[t].name) or IsYmlFile(e[t].name) then -a.display="" -else -a.display="none" -end -o.inputstyle="apply" -Button.render(o,t,a) + if not e[t] then return false end + if IsYamlFile(e[t].name) or IsYmlFile(e[t].name) then + a.display="" + else + a.display="none" + end + o.inputstyle="apply" + Button.render(o,t,a) end btnis.write=function(a,t) -fs.unlink("/tmp/Proxy_Group") -uci:set("openclash", "config", "config_path", "/etc/openclash/config/"..e[t].name) -uci:commit("openclash") -HTTP.redirect(luci.dispatcher.build_url("admin", "services", "openclash", "config")) + uci:set("openclash", "config", "config_path", "/etc/openclash/config/"..e[t].name) + uci:commit("openclash") + HTTP.redirect(luci.dispatcher.build_url("admin", "services", "openclash", "config")) +end + +btned=tb:option(Button,"edit",translate("Edit")) +btned.inputstyle="apply" +btned.write=function(a,t) + local file_path = "etc/openclash/config/" .. fs.basename(e[t].name) + HTTP.redirect(DISP.build_url("admin", "services", "openclash", "other-file-edit", "config", "%s") % file_path) end btnrn=tb:option(DummyValue,"/etc/openclash/config/",translate("Rename")) @@ -238,9 +228,9 @@ actions.render = function(self, t, a) if not e[t] then return end self.keylist = {} self.vallist = {} - -- Edit - table.insert(self.keylist, "edit") - table.insert(self.vallist, translate("Edit")) + -- Servers manage + table.insert(self.keylist, "servers_manage") + table.insert(self.vallist, translate("Servers Manage")) -- Copy if IsYamlFile(e[t].name) or IsYmlFile(e[t].name) then @@ -271,9 +261,9 @@ btnapply.write = function(self, t) if not e[t] then return end local action = self.map:formvalue("cbid." .. self.map.config .. "." .. t .. ".actions") - if action == "edit" then + if action == "servers_manage" then local file_path = "etc/openclash/config/" .. fs.basename(e[t].name) - HTTP.redirect(DISP.build_url("admin", "services", "openclash", "other-file-edit", "config", "%s") % file_path) + HTTP.redirect(DISP.build_url("admin", "services", "openclash", "servers", "%s") % file_path) elseif action == "copy" then local num = 1 while true do @@ -325,8 +315,6 @@ btnapply.write = function(self, t) fd:close() HTTP.close() elseif action == "remove" then - fs.unlink("/tmp/Proxy_Group") - fs.unlink("/etc/openclash/backup/"..fs.basename(e[t].name)) fs.unlink("/etc/openclash/history/"..fs.filename(e[t].name)..".db") fs.unlink("/etc/openclash/"..fs.basename(e[t].name)) local a=fs.unlink("/etc/openclash/config/"..fs.basename(e[t].name)) @@ -341,7 +329,7 @@ p.reset = false p.submit = false local provider_manage = { - {proxy_mg, rule_mg, game_mg} + {proxy_mg, rule_mg} } promg = p:section(Table, provider_manage) @@ -360,13 +348,6 @@ o.write = function() HTTP.redirect(DISP.build_url("admin", "services", "openclash", "rule-providers-file-manage")) end -o = promg:option(Button, "game_mg", " ") -o.inputtitle = translate("Game Rules File List") -o.inputstyle = "reload" -o.write = function() - HTTP.redirect(DISP.build_url("admin", "services", "openclash", "game-rules-file-manage")) -end - m = SimpleForm("openclash",translate("Config File Edit")) m.reset = false m.submit = false @@ -429,7 +410,6 @@ o = a:option(Button, "Commit", " ") o.inputtitle = translate("Commit Settings") o.inputstyle = "apply" o.write = function() - fs.unlink("/tmp/Proxy_Group") uci:commit("openclash") end @@ -442,7 +422,6 @@ o = a:option(Button, "Apply", " ") o.inputtitle = translate("Apply Settings") o.inputstyle = "apply" o.write = function() - fs.unlink("/tmp/Proxy_Group") uci:set("openclash", "config", "enable", 1) uci:commit("openclash") SYS.call("/etc/init.d/openclash restart >/dev/null 2>&1 &") diff --git a/luci-app-openclash/luasrc/model/cbi/openclash/custom-dns-edit.lua b/luci-app-openclash/luasrc/model/cbi/openclash/custom-dns-edit.lua index 3a16ade3..365f7ed2 100644 --- a/luci-app-openclash/luasrc/model/cbi/openclash/custom-dns-edit.lua +++ b/luci-app-openclash/luasrc/model/cbi/openclash/custom-dns-edit.lua @@ -78,6 +78,12 @@ o = s:option(Flag, "node_resolve", translate("Node Domain Resolve"), translate(" o.rmempty = false o.default = o.disbled +---- disable-reuse +o = s:option(Flag, "disable_reuse", translate("Disable Reuse"), translate("Disable Reuse The Connection")) +o:depends("type", "tls") +o.rmempty = false +o.default = o.disbled + ---- Force HTTP/3 o = s:option(Flag, "http3", translate("Force HTTP/3"), translate("Force HTTP/3 to connect")) o:depends("type", "https") diff --git a/luci-app-openclash/luasrc/model/cbi/openclash/game-rules-file-manage.lua b/luci-app-openclash/luasrc/model/cbi/openclash/game-rules-file-manage.lua deleted file mode 100644 index 26be4bc7..00000000 --- a/luci-app-openclash/luasrc/model/cbi/openclash/game-rules-file-manage.lua +++ /dev/null @@ -1,123 +0,0 @@ - -local rule_form -local openclash = "openclash" -local NXFS = require "nixio.fs" -local SYS = require "luci.sys" -local HTTP = require "luci.http" -local DISP = require "luci.dispatcher" -local UTIL = require "luci.util" -local fs = require "luci.openclash" -local uci = require "luci.model.uci".cursor() - -local g,h={} -for n,m in ipairs(fs.glob("/etc/openclash/game_rules/*"))do -h=fs.stat(m) -if h then -g[n]={} -g[n].num=string.format(n) -g[n].name=fs.basename(m) -g[n].mtime=os.date("%Y-%m-%d %H:%M:%S",h.mtime) -g[n].size=fs.filesize(h.size) -g[n].remove=0 -g[n].enable=false -end -end - -rule_form=SimpleForm("game_rules_file_list",translate("Game Rules File List")) -rule_form.reset=false -rule_form.submit=false -tb2=rule_form:section(Table,g) -nu2=tb2:option(DummyValue,"num",translate("Serial Number")) -nm2=tb2:option(DummyValue,"name",translate("File Name")) -mt2=tb2:option(DummyValue,"mtime",translate("Update Time")) -sz2=tb2:option(DummyValue,"size",translate("Size")) - -btned1=tb2:option(Button,"edit",translate("Edit")) -btned1.render=function(g,n,h) -g.inputstyle="apply" -Button.render(g,n,h) -end -btned1.write=function(h,n) - local file_path = "etc/openclash/game_rules/" .. fs.basename(g[n].name) - HTTP.redirect(DISP.build_url("admin", "services", "openclash", "other-file-edit", "game-rules-file-manage", "%s") %file_path) -end - -btndl2 = tb2:option(Button,"download2",translate("Download Config")) -btndl2.template="openclash/other_button" -btndl2.render=function(m,n,h) -m.inputstyle="remove" -Button.render(m,n,h) -end -btndl2.write = function (h,n) - local sPath, sFile, fd, block - sPath = "/etc/openclash/game_rules/"..g[n].name - sFile = NXFS.basename(sPath) - if fs.isdirectory(sPath) then - fd = io.popen('tar -C "%s" -cz .' % {sPath}, "r") - sFile = sFile .. ".tar.gz" - else - fd = nixio.open(sPath, "r") - end - if not fd then - return - end - HTTP.header('Content-Disposition', 'attachment; filename="%s"' % {sFile}) - HTTP.prepare_content("application/octet-stream") - while true do - block = fd:read(nixio.const.buffersize) - if (not block) or (#block ==0) then - break - else - HTTP.write(block) - end - end - fd:close() - HTTP.close() -end - -btnrm2=tb2:option(Button,"remove2",translate("Remove")) -btnrm2.render=function(g,n,h) -g.inputstyle="reset" -Button.render(g,n,h) -end -btnrm2.write=function(h,n) -local h=fs.unlink("/etc/openclash/game_rules/"..luci.openclash.basename(g[n].name)) -if h then table.remove(g,n)end -return h -end - -local t = { - {Refresh, Create, Delete_all, Apply} -} - -a = rule_form:section(Table, t) - -o = a:option(Button, "Refresh", " ") -o.inputtitle = translate("Refresh Page") -o.inputstyle = "apply" -o.write = function() - HTTP.redirect(DISP.build_url("admin", "services", "openclash", "game-rules-file-manage")) -end - -o = a:option(DummyValue, "Create", " ") -o.rawhtml = true -o.template = "openclash/input_file_name" -o.value = "/etc/openclash/game_rules/" - -o = a:option(Button, "Delete_all", " ") -o.inputtitle = translate("Delete All File") -o.inputstyle = "remove" -o.write = function() - luci.sys.call("rm -rf /etc/openclash/game_rules/* >/dev/null 2>&1") - HTTP.redirect(DISP.build_url("admin", "services", "openclash", "game-rules-file-manage")) -end - -o = a:option(Button, "Apply", " ") -o.inputtitle = translate("Back Settings") -o.inputstyle = "reset" -o.write = function() - HTTP.redirect(DISP.build_url("admin", "services", "openclash", "config")) -end - -rule_form:append(Template("openclash/toolbar_show")) -return rule_form diff --git a/luci-app-openclash/luasrc/model/cbi/openclash/game-rules-manage.lua b/luci-app-openclash/luasrc/model/cbi/openclash/game-rules-manage.lua deleted file mode 100644 index 6b499415..00000000 --- a/luci-app-openclash/luasrc/model/cbi/openclash/game-rules-manage.lua +++ /dev/null @@ -1,100 +0,0 @@ - -local form, m -local openclash = "openclash" -local NXFS = require "nixio.fs" -local SYS = require "luci.sys" -local HTTP = require "luci.http" -local DISP = require "luci.dispatcher" -local UTIL = require "luci.util" -local fs = require "luci.openclash" -local uci = require "luci.model.uci".cursor() - -m = SimpleForm("openclash", translate("Game Rules List")) -m.description=translate("Rule Project:").." SSTap-Rule ( https://github.com/FQrabbit/SSTap-Rule )" -m.reset = false -m.submit = false - -local t = { - {Refresh, Apply} -} - -a = m:section(Table, t) - -o = a:option(Button, "Refresh", " ") -o.inputtitle = translate("Refresh Page") -o.inputstyle = "apply" -o.write = function() - SYS.call("rm -rf /tmp/rules_name 2>/dev/null") - HTTP.redirect(DISP.build_url("admin", "services", "openclash", "game-rules-manage")) -end - -o = a:option(Button, "Apply", " ") -o.inputtitle = translate("Back Settings") -o.inputstyle = "reset" -o.write = function() - HTTP.redirect(DISP.build_url("admin", "services", "openclash", "rule-providers-settings")) -end - -if not NXFS.access("/tmp/rules_name") then - SYS.call("awk -F ',' '{print $1}' /usr/share/openclash/res/game_rules.list > /tmp/rules_name 2>/dev/null") -end -file = io.open("/tmp/rules_name", "r"); - ----- Rules List -local e={},o,t -if NXFS.access("/tmp/rules_name") then -for o in file:lines() do -table.insert(e,o) -end -for t,o in ipairs(e) do -e[t]={} -e[t].num=string.format(t) -e[t].name=o -e[t].filename=string.sub(luci.sys.exec(string.format("grep -F '%s,' /usr/share/openclash/res/game_rules.list |awk -F ',' '{print $3}' 2>/dev/null",e[t].name)),1,-2) -if e[t].filename == "" then -e[t].filename=string.sub(luci.sys.exec(string.format("grep -F '%s,' /usr/share/openclash/res/game_rules.list |awk -F ',' '{print $2}' 2>/dev/null",e[t].name)),1,-2) -end -RULE_FILE="/etc/openclash/game_rules/".. e[t].filename -if fs.mtime(RULE_FILE) then -e[t].size=fs.filesize(fs.stat(RULE_FILE).size) -e[t].mtime=os.date("%Y-%m-%d %H:%M:%S",fs.mtime(RULE_FILE)) -else -e[t].size="/" -e[t].mtime="/" -end -if fs.isfile(RULE_FILE) then - e[t].exist=translate("Exist") -else - e[t].exist=translate("Not Exist") -end -e[t].remove=0 -end -end -file:close() - -form=SimpleForm("filelist") -form.reset=false -form.submit=false -tb=form:section(Table,e) -nu=tb:option(DummyValue,"num",translate("Serial Number")) -st=tb:option(DummyValue,"exist",translate("State")) -st.template="openclash/cfg_check" -nm=tb:option(DummyValue,"name",translate("Rule Name")) -fm=tb:option(DummyValue,"filename",translate("File Name")) -sz=tb:option(DummyValue,"size",translate("Size")) -mt=tb:option(DummyValue,"mtime",translate("Update Time")) - -btnis=tb:option(DummyValue,"filename",translate("Download Rule")) -btnis.template="openclash/download_rule" - -btnrm=tb:option(Button,"remove",translate("Remove")) -btnrm.render=function(e,t,a) -e.inputstyle="reset" -Button.render(e,t,a) -end -btnrm.write=function(a,t) -fs.unlink("/etc/openclash/game_rules/"..e[t].filename) -HTTP.redirect(DISP.build_url("admin", "services", "openclash", "game-rules-manage")) -end - -return m, form diff --git a/luci-app-openclash/luasrc/model/cbi/openclash/groups-config.lua b/luci-app-openclash/luasrc/model/cbi/openclash/groups-config.lua index 5c7f5121..3a6ae236 100644 --- a/luci-app-openclash/luasrc/model/cbi/openclash/groups-config.lua +++ b/luci-app-openclash/luasrc/model/cbi/openclash/groups-config.lua @@ -5,6 +5,15 @@ local uci = luci.model.uci.cursor() local fs = require "luci.openclash" local sys = require "luci.sys" local sid = arg[1] +local file_path = "" + +for i = 2, #(arg) do + file_path = file_path .. "/" .. luci.http.urlencode(arg[i]) +end + +if not fs.isfile(file_path) and file_path ~= "" then + file_path = luci.http.urldecode(file_path) +end font_red = [[]] font_off = [[]] @@ -24,7 +33,7 @@ end m = Map(openclash, translate("Edit Group")) m.pageaction = false -m.redirect = luci.dispatcher.build_url("admin/services/openclash/servers") +m.redirect = luci.dispatcher.build_url("admin/services/openclash/servers%s" % file_path) if m.uci:get(openclash, sid) ~= "groups" then luci.http.redirect(m.redirect) return @@ -182,11 +191,11 @@ o = s:option(DynamicList, "other_group", translate("Other Group (Support Regex)" o.description = font_red..bold_on..translate("The Added Proxy Groups Must Exist Except 'DIRECT' & 'REJECT' & 'REJECT-DROP' & 'PASS' & 'GLOBAL'")..bold_off..font_off o:value("all", translate("All Groups")) uci:foreach("openclash", "groups", - function(s) - if s.name ~= "" and s.name ~= nil and s.name ~= m.uci:get(openclash, sid, "name") then - o:value(s.name) - end - end) + function(s) + if s.name ~= "" and s.name ~= nil and s.name ~= m.uci:get(openclash, sid, "name") and (s.config == m.uci:get(openclash, sid, "config") or s.config == "all") then + o:value(s.name) + end + end) o:value("DIRECT") o:value("REJECT") o:value("REJECT-DROP") @@ -194,6 +203,107 @@ o:value("PASS") o:value("GLOBAL") o.rmempty = true +local function sync_group_name(section, old_name, new_name) + if old_name == "" or old_name == nil or old_name == new_name then + return + end + + local function matches(value, pattern) + if not value or not pattern then + return false + end + + local ok, result = pcall(function() return string.match(value, pattern) end) + if ok and result then + return true + end + return value == pattern + end + + -- servers 的 groups 列表 + uci:foreach(openclash, "servers", function(s) + local groups = uci:get(openclash, s[".name"], "groups") + if groups then + local new_groups = {} + local changed = false + for _, item in ipairs(groups) do + if matches(old_name, item) then + table.insert(new_groups, new_name) + changed = true + else + table.insert(new_groups, item) + end + end + if changed then + uci:delete(openclash, s[".name"], "groups") + uci:set_list(openclash, s[".name"], "groups", new_groups) + end + end + end) + + -- proxy-provider 的 groups 列表 + uci:foreach(openclash, "proxy-provider", function(s) + local groups = uci:get(openclash, s[".name"], "groups") + if groups then + local new_groups = {} + local changed = false + for _, item in ipairs(groups) do + if matches(old_name, item) then + table.insert(new_groups, new_name) + changed = true + else + table.insert(new_groups, item) + end + end + if changed then + uci:delete(openclash, s[".name"], "groups") + uci:set_list(openclash, s[".name"], "groups", new_groups) + end + end + end) + + -- groups 的 other_group 列表 + uci:foreach(openclash, "groups", function(s) + if s[".name"] ~= section then + local other_group = uci:get(openclash, s[".name"], "other_group") + if other_group then + local new_other = {} + local changed = false + for _, item in ipairs(other_group) do + if matches(old_name, item) then + table.insert(new_other, new_name) + changed = true + else + table.insert(new_other, item) + end + end + if changed then + uci:delete(openclash, s[".name"], "other_group") + uci:set_list(openclash, s[".name"], "other_group", new_other) + end + end + end + end) + + -- dns_servers 的 specific_group 选项 + uci:foreach(openclash, "dns_servers", function(s) + local specific_group = uci:get(openclash, s[".name"], "specific_group") + if matches(old_name, specific_group) then + uci:set(openclash, s[".name"], "specific_group", new_name) + end + end) + + -- servers 的 dialer_proxy 选项 + uci:foreach(openclash, "servers", function(s) + local dialer_proxy = uci:get(openclash, s[".name"], "dialer_proxy") + if matches(old_name, dialer_proxy) then + uci:set(openclash, s[".name"], "dialer_proxy", new_name) + end + end) + + uci:commit(openclash) +end + local t = { {Commit, Back} } @@ -203,8 +313,11 @@ o = a:option(Button,"Commit", " ") o.inputtitle = translate("Commit Settings") o.inputstyle = "apply" o.write = function() + local old_name = m.uci:get(openclash, sid, "old_name") or "" + local new_name = luci.http.formvalue("cbid.openclash." .. sid .. ".name") or m.uci:get(openclash, sid, "name") + sync_group_name(sid, old_name, new_name) + m.uci:set(openclash, sid, "old_name", new_name) m.uci:commit(openclash) - sys.call("/usr/share/openclash/yml_groups_name_ch.sh") luci.http.redirect(m.redirect) end diff --git a/luci-app-openclash/luasrc/model/cbi/openclash/other-file-edit.lua b/luci-app-openclash/luasrc/model/cbi/openclash/other-file-edit.lua index 4b60c681..1fd00ce3 100644 --- a/luci-app-openclash/luasrc/model/cbi/openclash/other-file-edit.lua +++ b/luci-app-openclash/luasrc/model/cbi/openclash/other-file-edit.lua @@ -3,7 +3,6 @@ local SYS = require "luci.sys" local HTTP = require "luci.http" local fs = require "luci.openclash" local file_path = "" -local edit_file_name = "/tmp/openclash_edit_file_name" for i = 2, #(arg) do file_path = file_path .. "/" .. luci.http.urlencode(arg[i]) @@ -13,16 +12,6 @@ if not fs.isfile(file_path) and file_path ~= "" then file_path = luci.http.urldecode(file_path) end ---re-get file path to save -if NXFS.readfile(edit_file_name) ~= file_path and fs.isfile(file_path) then - NXFS.writefile(edit_file_name, file_path) -else - if not fs.isfile(file_path) and fs.isfile(edit_file_name) then - file_path = NXFS.readfile(edit_file_name) - fs.unlink(edit_file_name) - end -end - m = Map("openclash", translate("File Edit")) m.pageaction = false m.redirect = luci.dispatcher.build_url("admin/services/openclash/"..arg[1]) diff --git a/luci-app-openclash/luasrc/model/cbi/openclash/other-rules-edit.lua b/luci-app-openclash/luasrc/model/cbi/openclash/other-rules-edit.lua deleted file mode 100644 index adc46290..00000000 --- a/luci-app-openclash/luasrc/model/cbi/openclash/other-rules-edit.lua +++ /dev/null @@ -1,347 +0,0 @@ - -local m, s, o -local openclash = "openclash" -local uci = luci.model.uci.cursor() -local fs = require "luci.openclash" -local sys = require "luci.sys" -local sid = arg[1] - -font_red = [[]] -font_green = [[]] -font_off = [[]] -bold_on = [[]] -bold_off = [[]] - -function IsYamlFile(e) - e=e or"" - local e=string.lower(string.sub(e,-5,-1)) - return e == ".yaml" -end -function IsYmlFile(e) - e=e or"" - local e=string.lower(string.sub(e,-4,-1)) - return e == ".yml" -end - -m = Map(openclash, translate("Other Rules Edit")) -m.pageaction = false -m.redirect = luci.dispatcher.build_url("admin/services/openclash/config-overwrite") -if m.uci:get(openclash, sid) ~= "other_rules" then - luci.http.redirect(m.redirect) - return -end - --- [[ Other Rules Setting ]]-- -s = m:section(NamedSection, sid, "other_rules") -s.anonymous = true -s.addremove = false - -o = s:option(Value, "Note", translate("Note")) -o.default = "default" -o.rmempty = false - -o = s:option(ListValue, "config", translate("Config File")) -local e,a={} -local groupnames,filename -local group_list = {} -for t,f in ipairs(fs.glob("/etc/openclash/config/*"))do - a=fs.stat(f) - if a then - e[t]={} - e[t].name=fs.basename(f) - if IsYamlFile(e[t].name) or IsYmlFile(e[t].name) then - o:value(e[t].name) - end - if e[t].name == m.uci:get(openclash, sid, "config") then - filename = e[t].name - groupnames = sys.exec(string.format('ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "YAML.load_file(\'%s\')[\'proxy-groups\'].each do |i| puts i[\'name\']+\'##\' end" 2>/dev/null',f)) - if groupnames then - for groupname in string.gmatch(groupnames, "([^'##\n']+)##") do - if groupname ~= nil and groupname ~= "" then - table.insert(group_list, groupname) - end - end - end - end - end -end - -m.uci:foreach("openclash", "groups", -function(s) - if s.name ~= "" and s.name ~= nil then - table.insert(group_list, s.name) - end -end) - -table.sort(group_list) -table.insert(group_list, "DIRECT") -table.insert(group_list, "REJECT") -table.insert(group_list, "REJECT-DROP") -table.insert(group_list, "PASS") -table.insert(group_list, "GLOBAL") - -o = s:option(Button, translate("Get Group Names")) -o.title = translate("Get Group Names") -o.inputtitle = translate("Get Group Names") -o.description = translate("Get Group Names After Select Config File") -o.inputstyle = "reload" -o.write = function() - m.uci:commit("openclash") - luci.http.redirect(luci.dispatcher.build_url("admin/services/openclash/other-rules-edit/%s") % sid) -end - -if group_list ~= nil and filename ~= nil then -o = s:option(ListValue, "rule_name", translate("Other Rules Name")) -o.rmempty = true -o:value("lhie1", translate("lhie1 Rules")) - -o = s:option(ListValue, "GlobalTV", translate("GlobalTV")) -o:depends("rule_name", "lhie1") -o.rmempty = true -for _, groupname in ipairs(group_list) do - o:value(groupname) -end - -o = s:option(ListValue, "AsianTV", translate("AsianTV")) -o:depends("rule_name", "lhie1") -o.rmempty = true -for _, groupname in ipairs(group_list) do - o:value(groupname) -end - -o = s:option(ListValue, "MainlandTV", translate("CN Mainland TV")) -o:depends("rule_name", "lhie1") -o.rmempty = true -for _, groupname in ipairs(group_list) do - o:value(groupname) -end - -o = s:option(ListValue, "Proxy", translate("Proxy")) -o:depends("rule_name", "lhie1") -o.rmempty = true -for _, groupname in ipairs(group_list) do - o:value(groupname) -end - -o = s:option(ListValue, "Youtube", translate("Youtube")) -o:depends("rule_name", "lhie1") -o.rmempty = true -for _, groupname in ipairs(group_list) do - o:value(groupname) -end - -o = s:option(ListValue, "Bilibili", translate("Bilibili")) -o:depends("rule_name", "lhie1") -o.rmempty = true -for _, groupname in ipairs(group_list) do - o:value(groupname) -end - -o = s:option(ListValue, "Bahamut", translate("Bahamut")) -o:depends("rule_name", "lhie1") -o.rmempty = true -for _, groupname in ipairs(group_list) do - o:value(groupname) -end - -o = s:option(ListValue, "HBOMax", translate("HBO Max")) -o:depends("rule_name", "lhie1") -o.rmempty = true -for _, groupname in ipairs(group_list) do - o:value(groupname) -end - -o = s:option(ListValue, "Pornhub", translate("Pornhub")) -o:depends("rule_name", "lhie1") -o.rmempty = true -for _, groupname in ipairs(group_list) do - o:value(groupname) -end - -o = s:option(ListValue, "Apple", translate("Apple")) -o:depends("rule_name", "lhie1") -o.rmempty = true -for _, groupname in ipairs(group_list) do - o:value(groupname) -end - -o = s:option(ListValue, "AppleTV", translate("Apple TV")) -o:depends("rule_name", "lhie1") -o.rmempty = true -for _, groupname in ipairs(group_list) do - o:value(groupname) -end - -o = s:option(ListValue, "GoogleFCM", translate("Google FCM")) -o:depends("rule_name", "lhie1") -o.rmempty = true -for _, groupname in ipairs(group_list) do - o:value(groupname) -end - -o = s:option(ListValue, "Scholar", translate("Scholar")) -o:depends("rule_name", "lhie1") -o.rmempty = true -for _, groupname in ipairs(group_list) do - o:value(groupname) -end - -o = s:option(ListValue, "Microsoft", translate("Microsoft")) -o:depends("rule_name", "lhie1") -o.rmempty = true -for _, groupname in ipairs(group_list) do - o:value(groupname) -end - -o = s:option(ListValue, "AI_Suite", translate("AI Suite")) -o:depends("rule_name", "lhie1") -o.rmempty = true -for _, groupname in ipairs(group_list) do - o:value(groupname) -end - -o = s:option(ListValue, "Netflix", translate("Netflix")) -o:depends("rule_name", "lhie1") -o.rmempty = true -for _, groupname in ipairs(group_list) do - o:value(groupname) -end - -o = s:option(ListValue, "Disney", translate("Disney Plus")) -o:depends("rule_name", "lhie1") -o.rmempty = true -for _, groupname in ipairs(group_list) do - o:value(groupname) -end - -o = s:option(ListValue, "Discovery", translate("Discovery Plus")) -o:depends("rule_name", "lhie1") -o.rmempty = true -for _, groupname in ipairs(group_list) do - o:value(groupname) -end - -o = s:option(ListValue, "DAZN", translate("DAZN")) -o:depends("rule_name", "lhie1") -o.rmempty = true -for _, groupname in ipairs(group_list) do - o:value(groupname) -end - -o = s:option(ListValue, "Spotify", translate("Spotify")) -o:depends("rule_name", "lhie1") -o.rmempty = true -for _, groupname in ipairs(group_list) do - o:value(groupname) -end - -o = s:option(ListValue, "Steam", translate("Steam")) -o:depends("rule_name", "lhie1") -o.rmempty = true -for _, groupname in ipairs(group_list) do - o:value(groupname) -end - -o = s:option(ListValue, "TikTok", translate("TikTok")) -o:depends("rule_name", "lhie1") -o.rmempty = true -for _, groupname in ipairs(group_list) do - o:value(groupname) -end - -o = s:option(ListValue, "miHoYo", translate("miHoYo")) -o:depends("rule_name", "lhie1") -o.rmempty = true -for _, groupname in ipairs(group_list) do - o:value(groupname) -end - -o = s:option(ListValue, "Speedtest", translate("Speedtest")) -o:depends("rule_name", "lhie1") -o.rmempty = true -for _, groupname in ipairs(group_list) do - o:value(groupname) -end - -o = s:option(ListValue, "Telegram", translate("Telegram")) -o:depends("rule_name", "lhie1") -o.rmempty = true -for _, groupname in ipairs(group_list) do - o:value(groupname) -end - -o = s:option(ListValue, "Crypto", translate("Crypto")) -o:depends("rule_name", "lhie1") -o.rmempty = true -for _, groupname in ipairs(group_list) do - o:value(groupname) -end - -o = s:option(ListValue, "Discord", translate("Discord")) -o:depends("rule_name", "lhie1") -o.rmempty = true -for _, groupname in ipairs(group_list) do - o:value(groupname) -end - -o = s:option(ListValue, "PayPal", translate("PayPal")) -o:depends("rule_name", "lhie1") -o.rmempty = true -for _, groupname in ipairs(group_list) do - o:value(groupname) -end - -o = s:option(ListValue, "AdBlock", translate("AdBlock")) -o:depends("rule_name", "lhie1") -o.rmempty = true -for _, groupname in ipairs(group_list) do - o:value(groupname) -end - -o = s:option(ListValue, "HTTPDNS", translate("HTTPDNS")) -o:depends("rule_name", "lhie1") -o.rmempty = true -for _, groupname in ipairs(group_list) do - o:value(groupname) -end - -o = s:option(ListValue, "Domestic", translate("Domestic")) -o:depends("rule_name", "lhie1") -o.rmempty = true -for _, groupname in ipairs(group_list) do - o:value(groupname) -end - -o = s:option(ListValue, "Others", translate("Others")) -o:depends("rule_name", "lhie1") -o.rmempty = true -o.description = translate("Choose Proxy Groups, Base On Your Config File").." ( "..font_green..bold_on..filename..bold_off..font_off.." )" -for _, groupname in ipairs(group_list) do - o:value(groupname) -end - -end - -local t = { - {Commit, Back} -} -a = m:section(Table, t) - -o = a:option(Button,"Commit", " ") -o.inputtitle = translate("Commit Settings") -o.inputstyle = "apply" -o.write = function() - m.uci:commit(openclash) - --luci.http.redirect(m.redirect) -end - -o = a:option(Button,"Back", " ") -o.inputtitle = translate("Back Settings") -o.inputstyle = "reset" -o.write = function() - m.uci:revert(openclash, sid) - luci.http.redirect(m.redirect) -end - -m:append(Template("openclash/toolbar_show")) -return m diff --git a/luci-app-openclash/luasrc/model/cbi/openclash/proxy-provider-config.lua b/luci-app-openclash/luasrc/model/cbi/openclash/proxy-provider-config.lua index 242bed72..4c37e766 100644 --- a/luci-app-openclash/luasrc/model/cbi/openclash/proxy-provider-config.lua +++ b/luci-app-openclash/luasrc/model/cbi/openclash/proxy-provider-config.lua @@ -5,6 +5,15 @@ local uci = luci.model.uci.cursor() local sys = require "luci.sys" local sid = arg[1] local fs = require "luci.openclash" +local file_path = "" + +for i = 2, #(arg) do + file_path = file_path .. "/" .. luci.http.urlencode(arg[i]) +end + +if not fs.isfile(file_path) and file_path ~= "" then + file_path = luci.http.urldecode(file_path) +end font_red = [[]] font_off = [[]] @@ -24,7 +33,7 @@ end m = Map(openclash, translate("Edit Proxy-Provider")) m.pageaction = false -m.redirect = luci.dispatcher.build_url("admin/services/openclash/servers") +m.redirect = luci.dispatcher.build_url("admin/services/openclash/servers%s" % file_path) if m.uci:get(openclash, sid) ~= "proxy-provider" then luci.http.redirect(m.redirect) return @@ -49,11 +58,6 @@ for t,f in ipairs(fs.glob("/etc/openclash/config/*"))do end end -o = s:option(Flag, "manual", translate("Custom Tag")) -o.rmempty = false -o.default = "0" -o.description = translate("Mark as Custom Node to Prevent Retention config from being Deleted When Enabled") - o = s:option(ListValue, "type", translate("Provider Type")) o.rmempty = true o.description = translate("Choose The Provider Type") @@ -158,12 +162,12 @@ function o.validate(self, value) end o = s:option(DynamicList, "groups", translate("Proxy Group (Support Regex)")) -o.description = font_red..bold_on..translate("No Need Set when Config Create, The added Proxy Groups Must Exist")..bold_off..font_off +o.description = font_red..bold_on..translate("The added Proxy Groups Must Exist")..bold_off..font_off o.rmempty = true o:value("all", translate("All Groups")) m.uci:foreach("openclash", "groups", function(s) - if s.name ~= "" and s.name ~= nil then + if s.name ~= "" and s.name ~= nil and (s.config == m.uci:get(openclash, sid, "config") or s.config == "all") then o:value(s.name) end end) diff --git a/luci-app-openclash/luasrc/model/cbi/openclash/proxy-provider-file-manage.lua b/luci-app-openclash/luasrc/model/cbi/openclash/proxy-provider-file-manage.lua index 4549b19f..fcaa747d 100644 --- a/luci-app-openclash/luasrc/model/cbi/openclash/proxy-provider-file-manage.lua +++ b/luci-app-openclash/luasrc/model/cbi/openclash/proxy-provider-file-manage.lua @@ -43,7 +43,6 @@ btned1.write=function(r,x) end btndl1 = tb1:option(Button,"download1",translate("Download Config")) -btndl1.template="openclash/other_button" btndl1.render=function(y,x,r) y.inputstyle="remove" Button.render(y,x,r) diff --git a/luci-app-openclash/luasrc/model/cbi/openclash/rule-providers-config.lua b/luci-app-openclash/luasrc/model/cbi/openclash/rule-providers-config.lua deleted file mode 100644 index 1d47c967..00000000 --- a/luci-app-openclash/luasrc/model/cbi/openclash/rule-providers-config.lua +++ /dev/null @@ -1,208 +0,0 @@ - -local m, s, o -local openclash = "openclash" -local uci = luci.model.uci.cursor() -local fs = require "luci.openclash" -local sys = require "luci.sys" -local sid = arg[1] - -font_red = [[]] -font_off = [[]] -bold_on = [[]] -bold_off = [[]] - -function IsYamlFile(e) - e=e or"" - local e=string.lower(string.sub(e,-5,-1)) - return e == ".yaml" -end -function IsYmlFile(e) - e=e or"" - local e=string.lower(string.sub(e,-4,-1)) - return e == ".yml" -end - -m = Map(openclash, translate("Edit Rule Providers")) -m.pageaction = false -m.description=translate("规则集使用介绍:https://wiki.metacubex.one/config/rule-providers/content/") -m.redirect = luci.dispatcher.build_url("admin/services/openclash/rule-providers-settings") -if m.uci:get(openclash, sid) ~= "rule_providers" then - luci.http.redirect(m.redirect) - return -end - --- [[ Rule Providers Setting ]]-- -s = m:section(NamedSection, sid, "rule_providers") -s.anonymous = true -s.addremove = false - -o = s:option(ListValue, "config", translate("Config File")) -o:value("all", translate("Use For All Config File")) -local e,a={} -for t,f in ipairs(fs.glob("/etc/openclash/config/*"))do - a=fs.stat(f) - if a then - e[t]={} - e[t].name=fs.basename(f) - if IsYamlFile(e[t].name) or IsYmlFile(e[t].name) then - o:value(e[t].name) - end - end -end - -o = s:option(Value, "name", translate("Rule Providers Name")) -o.rmempty = false -o.default = "Rule-provider - "..sid - -o = s:option(ListValue, "type", translate("Rule Providers Type")) -o.rmempty = true -o.description = translate("Choose The Rule Providers Type") -o:value("http") -o:value("file") -o:value("inline") - -o = s:option(ListValue, "format", translate("Rule Format")) -o.rmempty = true -o.description = translate("Choose The Rule File Format, For More Info:").." ".."https://wiki.metacubex.one/config/rule-providers/content/" -o:value("yaml") -o:value("text") -o:value("mrs") -o:depends("type", "file") -o:depends("type", "http") - -o = s:option(ListValue, "behavior", translate("Rule Behavior")) -o.rmempty = true -o.description = translate("Choose The Rule Behavior") -o:value("domain") -o:value("ipcidr") -o:value("classical", translate("classical").." "..translate("(Not Support mrs Format)")) - -o = s:option(ListValue, "path", translate("Rule Providers Path")) -o.description = translate("Update Your Rule Providers File From Config Luci Page") -local p,h={} -for t,f in ipairs(fs.glob("/etc/openclash/rule_provider/*"))do - h=fs.stat(f) - if h then - p[t]={} - p[t].name=fs.basename(f) - o:value("./rule_provider/"..p[t].name) - end -end -for t,f in ipairs(fs.glob("/etc/openclash/game_rules/*"))do - h=fs.stat(f) - if h then - p[t]={} - p[t].name=fs.basename(f) - o:value("./game_rules/"..p[t].name) - end -end -o.rmempty = false -o:depends("type", "file") - -o = s:option(Value, "url", translate("Rule Providers URL")) -o.rmempty = false -o:depends("type", "http") - -o = s:option(Value, "interval", translate("Rule Providers Interval(s)")) -o.default = "86400" -o.rmempty = false -o:depends("type", "http") - -o = s:option(ListValue, "position", translate("Append Position")) -o.rmempty = false -o:value("0", translate("Priority Match")) -o:value("1", translate("Extended Match")) - -o = s:option(ListValue, "group", translate("Set Proxy Group")) -o.description = font_red..bold_on..translate("The Added Proxy Groups Must Exist Except 'DIRECT' & 'REJECT' & 'REJECT-DROP' & 'PASS' & 'GLOBAL'")..bold_off..font_off -o.rmempty = true - -local groupnames, filename -local group_list = {} - -filename = m.uci:get(openclash, "config", "config_path") -if filename then - groupnames = sys.exec(string.format('ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "YAML.load_file(\'%s\')[\'proxy-groups\'].each do |i| puts i[\'name\']+\'##\' end" 2>/dev/null',filename)) - if groupnames then - for groupname in string.gmatch(groupnames, "([^'##\n']+)##") do - if groupname ~= nil and groupname ~= "" then - table.insert(group_list, groupname) - end - end - end -end - -m.uci:foreach("openclash", "groups", -function(s) - if s.name ~= "" and s.name ~= nil then - table.insert(group_list, s.name) - end -end) - -table.sort(group_list) - -for _, groupname in ipairs(group_list) do - o:value(groupname) -end - -o:value("DIRECT") -o:value("REJECT") -o:value("REJECT-DROP") -o:value("PASS") -o:value("GLOBAL") - --- [[ other-setting ]]-- -o = s:option(Value, "other_parameters", translate("Other Parameters")) -o.template = "cbi/tvalue" -o.rows = 20 -o.wrap = "off" -o.description = font_red..bold_on..translate("Edit Your Other Parameters Here")..bold_off..font_off -o.rmempty = true -function o.cfgvalue(self, section) - if self.map:get(section, "other_parameters") == nil then - return "# Example:\n".. - "# Only support YAML, four spaces need to be reserved at the beginning of each line to maintain formatting alignment\n".. - "# 示例:\n".. - "# 仅支持 YAML, 每行行首需要多保留四个空格以使脚本处理后能够与上方配置保持格式对齐\n".. - "# inline Example:\n".. - "# payload:\n".. - "# - '.blogger.com'\n".. - "# - '*.*.microsoft.com'\n".. - "# - 'books.itunes.apple.com'\n" - else - return Value.cfgvalue(self, section) - end -end -function o.validate(self, value) - if value then - value = value:gsub("\r\n?", "\n") - value = value:gsub("%c*$", "") - end - return value -end - -local t = { - {Commit, Back} -} -a = m:section(Table, t) - -o = a:option(Button,"Commit", " ") -o.inputtitle = translate("Commit Settings") -o.inputstyle = "apply" -o.write = function() - m.uci:commit(openclash) - sys.call("/usr/share/openclash/yml_groups_name_ch.sh") - luci.http.redirect(m.redirect) -end - -o = a:option(Button,"Back", " ") -o.inputtitle = translate("Back Settings") -o.inputstyle = "reset" -o.write = function() - m.uci:revert(openclash, sid) - luci.http.redirect(m.redirect) -end - -m:append(Template("openclash/toolbar_show")) -m:append(Template("openclash/config_editor")) -return m diff --git a/luci-app-openclash/luasrc/model/cbi/openclash/rule-providers-file-manage.lua b/luci-app-openclash/luasrc/model/cbi/openclash/rule-providers-file-manage.lua index 4b23f123..d0a9f4d0 100644 --- a/luci-app-openclash/luasrc/model/cbi/openclash/rule-providers-file-manage.lua +++ b/luci-app-openclash/luasrc/model/cbi/openclash/rule-providers-file-manage.lua @@ -43,7 +43,6 @@ btned1.write=function(h,n) end btndl2 = tb2:option(Button,"download2",translate("Download Config")) -btndl2.template="openclash/other_button" btndl2.render=function(m,n,h) m.inputstyle="remove" Button.render(m,n,h) diff --git a/luci-app-openclash/luasrc/model/cbi/openclash/rule-providers-manage.lua b/luci-app-openclash/luasrc/model/cbi/openclash/rule-providers-manage.lua deleted file mode 100644 index d37959b7..00000000 --- a/luci-app-openclash/luasrc/model/cbi/openclash/rule-providers-manage.lua +++ /dev/null @@ -1,106 +0,0 @@ - -local form, m -local openclash = "openclash" -local NXFS = require "nixio.fs" -local SYS = require "luci.sys" -local HTTP = require "luci.http" -local DISP = require "luci.dispatcher" -local UTIL = require "luci.util" -local fs = require "luci.openclash" -local uci = require "luci.model.uci".cursor() - -m = SimpleForm("openclash", translate("Other Rule Providers List")) -m.description=translate("Rule Project:").." lhie1 ( https://github.com/dler-io/Rules )
".. -translate("Rule Project:").." ACL4SSR ( https://github.com/ACL4SSR/ACL4SSR/tree/master )" -m.reset = false -m.submit = false - -local t = { - {Apply} -} - -a = m:section(Table, t) - -o = a:option(Button, "Refresh", " ") -o.inputtitle = translate("Refresh Page") -o.inputstyle = "apply" -o.write = function() - SYS.call("rm -rf /tmp/rule_providers_name 2>/dev/null") - HTTP.redirect(DISP.build_url("admin", "services", "openclash", "rule-providers-manage")) -end - -o = a:option(Button, "Apply", " ") -o.inputtitle = translate("Back Settings") -o.inputstyle = "reset" -o.write = function() - HTTP.redirect(DISP.build_url("admin", "services", "openclash", "rule-providers-settings")) -end - -if not NXFS.access("/tmp/rule_providers_name") then - SYS.call("awk -v d=',' -F ',' '{print $4d$5}' /usr/share/openclash/res/rule_providers.list > /tmp/rule_providers_name 2>/dev/null") -end -file = io.open("/tmp/rule_providers_name", "r"); - ----- Rules List -local e={},o,t -if NXFS.access("/tmp/rule_providers_name") then -for o in file:lines() do -table.insert(e,o) -end -for t,o in ipairs(e) do -e[t]={} -e[t].num=string.format(t) -e[t].name=string.sub(luci.sys.exec(string.format("grep -F '%s' /usr/share/openclash/res/rule_providers.list |awk -F ',' '{print $1}' 2>/dev/null",o)),1,-2) -e[t].lfilename=string.sub(luci.sys.exec(string.format("grep -F '%s' /usr/share/openclash/res/rule_providers.list |awk -F ',' '{print $6}' 2>/dev/null",o)),1,-2) -if e[t].lfilename == "" then -e[t].lfilename=string.sub(luci.sys.exec(string.format("grep -F '%s' /usr/share/openclash/res/rule_providers.list |awk -F ',' '{print $5}' 2>/dev/null",o)),1,-2) -end -e[t].filename=o -e[t].author=string.sub(luci.sys.exec(string.format("grep -F '%s' /usr/share/openclash/res/rule_providers.list |awk -F ',' '{print $2}' 2>/dev/null",o)),1,-2) -e[t].rule_type=string.sub(luci.sys.exec(string.format("grep -F '%s' /usr/share/openclash/res/rule_providers.list |awk -F ',' '{print $3}' 2>/dev/null",o)),1,-2) -RULE_FILE="/etc/openclash/rule_provider/".. e[t].lfilename -if fs.mtime(RULE_FILE) then -e[t].size=fs.filesize(fs.stat(RULE_FILE).size) -e[t].mtime=os.date("%Y-%m-%d %H:%M:%S",fs.mtime(RULE_FILE)) -else -e[t].size="/" -e[t].mtime="/" -end -if fs.isfile(RULE_FILE) then - e[t].exist=translate("Exist") -else - e[t].exist=translate("Not Exist") -end -e[t].remove=0 -end -end -file:close() - -form=SimpleForm("filelist") -form.reset=false -form.submit=false -tb=form:section(Table,e) -nu=tb:option(DummyValue,"num",translate("Serial Number")) -st=tb:option(DummyValue,"exist",translate("State")) -st.template="openclash/cfg_check" -tp=tb:option(DummyValue,"rule_type",translate("Rule Type")) -nm=tb:option(DummyValue,"name",translate("Rule Name")) -au=tb:option(DummyValue,"author",translate("Rule Author")) -fm=tb:option(DummyValue,"lfilename",translate("File Name")) -sz=tb:option(DummyValue,"size",translate("Size")) -mt=tb:option(DummyValue,"mtime",translate("Update Time")) - -btnis=tb:option(DummyValue,"filename",translate("Download Rule")) -btnis.template="openclash/download_rule" - -btnrm=tb:option(Button,"remove",translate("Remove")) -btnrm.render=function(e,t,a) -e.inputstyle="reset" -Button.render(e,t,a) -end -btnrm.write=function(a,t) -fs.unlink("/etc/openclash/rule_provider/"..e[t].lfilename) -HTTP.redirect(DISP.build_url("admin", "services", "openclash", "rule-providers-manage")) -end - -return m, form diff --git a/luci-app-openclash/luasrc/model/cbi/openclash/rule-providers-settings.lua b/luci-app-openclash/luasrc/model/cbi/openclash/rule-providers-settings.lua deleted file mode 100644 index b418fff6..00000000 --- a/luci-app-openclash/luasrc/model/cbi/openclash/rule-providers-settings.lua +++ /dev/null @@ -1,286 +0,0 @@ - -local m, s, o -local openclash = "openclash" -local NXFS = require "nixio.fs" -local SYS = require "luci.sys" -local HTTP = require "luci.http" -local DISP = require "luci.dispatcher" -local UTIL = require "luci.util" -local fs = require "luci.openclash" -local uci = require "luci.model.uci".cursor() - -m = Map(openclash, translate("Rule Providers Append")) -m.pageaction = false -m.description=translate("Attention:").. -"
"..translate("The game proxy is a test function and does not guarantee the availability of rules").. -"
"..translate("Preparation steps:").. -"
"..translate("1. Check the policy group and node you are going to use, Policy group type suggestion: fallback, game nodes must be support UDP and not a Vmess").. -"
"..translate("2. Click the or button to enter the rule list and download the rules you want to use").. -"
"..translate("3. On this page, set the corresponding configuration file and policy group of the rule you have downloaded, and save the settings").. -"
".. -"
"..translate("When setting this page, if the groups is empty, please go to the page to add").. -"
".. -"
"..translate("Introduction to rule set usage:").." "..translate("https://wiki.metacubex.one/config/rule-providers/content/").."" - -function IsRuleFile(e) -e=e or"" -local e=string.lower(string.sub(e,-6,-1)) -return e==".rules" -end - -function IsYamlFile(e) - e=e or"" - local e=string.lower(string.sub(e,-5,-1)) - return e == ".yaml" -end - -function IsYmlFile(e) - e=e or"" - local e=string.lower(string.sub(e,-4,-1)) - return e == ".yml" -end - -local groupnames, filename -local group_list = {} - -filename = m.uci:get(openclash, "config", "config_path") -if filename then - groupnames = SYS.exec(string.format('ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "YAML.load_file(\'%s\')[\'proxy-groups\'].each do |i| puts i[\'name\']+\'##\' end" 2>/dev/null',filename)) - if groupnames then - for groupname in string.gmatch(groupnames, "([^'##\n']+)##") do - if groupname ~= nil and groupname ~= "" then - table.insert(group_list, groupname) - end - end - end -end - -m.uci:foreach("openclash", "groups", - function(s) - if s.name ~= "" and s.name ~= nil then - table.insert(group_list, s.name) - end - end) - -table.sort(group_list) -table.insert(group_list, "DIRECT") -table.insert(group_list, "REJECT") -table.insert(group_list, "REJECT-DROP") -table.insert(group_list, "PASS") -table.insert(group_list, "GLOBAL") - --- [[ Edit Game Rule ]] -- -s = m:section(TypedSection, "game_config", translate("Game Rules Append")) -s.anonymous = true -s.addremove = true -s.sortable = true -s.template = "openclash/tblsection" -s.rmempty = false - ----- enable flag -o = s:option(Flag, "enabled", translate("Enable")) -o.rmempty = false -o.default = o.enabled -o.cfgvalue = function(...) - return Flag.cfgvalue(...) or "1" -end - ----- config -o = s:option(ListValue, "config", translate("Config File")) -o:value("all", translate("Use For All Config File")) -local e,a={} -for t,f in ipairs(fs.glob("/etc/openclash/config/*"))do - a=fs.stat(f) - if a then - e[t]={} - e[t].name=fs.basename(f) - if IsYamlFile(e[t].name) or IsYmlFile(e[t].name) then - o:value(e[t].name) - end - end -end - ----- rule name -o = s:option(DynamicList, "rule_name", translate("Game Rule's Name")) -local e,a={} -for t,f in ipairs(fs.glob("/etc/openclash/game_rules/*"))do - a=fs.stat(f) - if a then - e[t]={} - e[t].filename=fs.basename(f) - if IsRuleFile(e[t].filename) then - e[t].name=string.gsub(luci.sys.exec(string.format("grep ',%s$' /usr/share/openclash/res/game_rules.list |awk -F ',' '{print $1}' 2>/dev/null",e[t].filename)), "[\r\n]", "") - if e[t].name ~= "" and e[t].name ~= nil then - o:value(e[t].name) - end - end - end -end - -o.rmempty = true - ----- Proxy Group -o = s:option(ListValue, "group", translate("Select Proxy Group")) -o.rmempty = true -for _, groupname in ipairs(group_list) do - o:value(groupname) -end - --- [[ Edit Other Rule Provider ]] -- -s = m:section(TypedSection, "rule_provider_config", translate("Other Rule Providers Append")) -s.anonymous = true -s.addremove = true -s.sortable = true -s.template = "openclash/tblsection" -s.rmempty = false - ----- enable flag -o = s:option(Flag, "enabled", translate("Enable")) -o.rmempty = false -o.default = o.enabled -o.cfgvalue = function(...) - return Flag.cfgvalue(...) or "1" -end - ----- config -o = s:option(ListValue, "config", translate("Config File")) -o:value("all", translate("Use For All Config File")) -local e,a={} -for t,f in ipairs(fs.glob("/etc/openclash/config/*"))do - a=fs.stat(f) - if a then - e[t]={} - e[t].name=fs.basename(f) - if IsYamlFile(e[t].name) or IsYmlFile(e[t].name) then - o:value(e[t].name) - end - end -end - ----- rule name -o = s:option(DynamicList, "rule_name", translate("Rule Provider's Name")) -local e,a={} -for t,f in ipairs(fs.glob("/etc/openclash/rule_provider/*"))do - a=fs.stat(f) - if a then - e[t]={} - e[t].filename=fs.basename(f) - if IsYamlFile(e[t].filename) or IsYmlFile(e[t].filename) then - e[t].name=string.gsub(luci.sys.exec(string.format("grep ',%s$' /usr/share/openclash/res/rule_providers.list |awk -F ',' '{print $1}' 2>/dev/null",e[t].filename)), "[\r\n]", "") - if e[t].name ~= "" and e[t].name ~= nil then - o:value(e[t].name) - end - end - end -end - -o.rmempty = true - ----- Proxy Group -o = s:option(ListValue, "group", translate("Select Proxy Group")) -o.rmempty = true -for _, groupname in ipairs(group_list) do - o:value(groupname) -end - -o = s:option(Value, "interval", translate("Rule Providers Interval(s)")) -o.default = "86400" -o.rmempty = false - ----- position -o = s:option(ListValue, "position", translate("Append Position")) -o.rmempty = false -o:value("0", translate("Priority Match")) -o:value("1", translate("Extended Match")) - --- [[ Edit Custom Rule Provider ]] -- -s = m:section(TypedSection, "rule_providers", translate("Custom Rule Providers Append")) -s.anonymous = true -s.addremove = true -s.sortable = true -s.template = "openclash/tblsection" -s.extedit = luci.dispatcher.build_url("admin/services/openclash/rule-providers-config/%s") -function s.create(...) - local sid = TypedSection.create(...) - if sid then - luci.http.redirect(s.extedit % sid) - return - end -end - ----- enable flag -o = s:option(Flag, "enabled", translate("Enable")) -o.rmempty = false -o.default = o.enabled -o.cfgvalue = function(...) - return Flag.cfgvalue(...) or "1" -end - -o = s:option(DummyValue, "config", translate("Config File")) -function o.cfgvalue(...) - return Value.cfgvalue(...) or translate("all") -end - -o = s:option(DummyValue, "name", translate("Rule Providers Name")) -function o.cfgvalue(...) - return Value.cfgvalue(...) or translate("None") -end - ----- Proxy Group -o = s:option(ListValue, "group", translate("Select Proxy Group")) -o.rmempty = true -for _, groupname in ipairs(group_list) do - o:value(groupname) -end - -o = s:option(ListValue, "position", translate("Append Position")) -o.rmempty = false -o:value("0", translate("Priority Match")) -o:value("1", translate("Extended Match")) - -local rm = { - {rule_mg, pro_mg} -} - -rmg = m:section(Table, rm) - -o = rmg:option(Button, "rule_mg", " ") -o.inputtitle = translate("Game Rules Manage") -o.inputstyle = "reload" -o.write = function() - HTTP.redirect(DISP.build_url("admin", "services", "openclash", "game-rules-manage")) -end - -o = rmg:option(Button, "pro_mg", " ") -o.inputtitle = translate("Other Rule Provider Manage") -o.inputstyle = "reload" -o.write = function() - HTTP.redirect(DISP.build_url("admin", "services", "openclash", "rule-providers-manage")) -end - -local t = { - {Commit, Apply} -} - -ss = m:section(Table, t) - -o = ss:option(Button, "Commit", " ") -o.inputtitle = translate("Commit Settings") -o.inputstyle = "apply" -o.write = function() - m.uci:commit("openclash") -end - -o = ss:option(Button, "Apply", " ") -o.inputtitle = translate("Apply Settings") -o.inputstyle = "apply" -o.write = function() - m.uci:set("openclash", "config", "enable", 1) - m.uci:commit("openclash") - SYS.call("/etc/init.d/openclash restart >/dev/null 2>&1 &") - HTTP.redirect(DISP.build_url("admin", "services", "openclash")) -end - -m:append(Template("openclash/toolbar_show")) - -return m diff --git a/luci-app-openclash/luasrc/model/cbi/openclash/servers-config.lua b/luci-app-openclash/luasrc/model/cbi/openclash/servers-config.lua index ea52de38..38859249 100644 --- a/luci-app-openclash/luasrc/model/cbi/openclash/servers-config.lua +++ b/luci-app-openclash/luasrc/model/cbi/openclash/servers-config.lua @@ -6,6 +6,15 @@ local fs = require "luci.openclash" local sys = require "luci.sys" local sid = arg[1] local uuid = luci.sys.exec("cat /proc/sys/kernel/random/uuid") +local file_path = "" + +for i = 2, #(arg) do + file_path = file_path .. "/" .. luci.http.urlencode(arg[i]) +end + +if not fs.isfile(file_path) and file_path ~= "" then + file_path = luci.http.urldecode(file_path) +end font_red = [[]] font_off = [[]] @@ -99,7 +108,7 @@ local obfs = { m = Map(openclash, translate("Edit Server")) m.pageaction = false -m.redirect = luci.dispatcher.build_url("admin/services/openclash/servers") +m.redirect = luci.dispatcher.build_url("admin/services/openclash/servers%s" % file_path) if m.uci:get(openclash, sid) ~= "servers" then luci.http.redirect(m.redirect) @@ -130,11 +139,6 @@ for t,f in ipairs(fs.glob("/etc/openclash/config/*"))do end end -o = s:option(Flag, "manual", translate("Custom Tag")) -o.rmempty = false -o.default = "0" -o.description = translate("Mark as Custom Node to Prevent Retention config from being Deleted When Enabled") - o = s:option(ListValue, "type", translate("Server Node Type")) o:value("ss", translate("Shadowsocks")) o:value("ssr", translate("ShadowsocksR")) @@ -1174,18 +1178,18 @@ o.rmempty = true o.description = font_red..bold_on..translate("The added Dialer Proxy or Group Must Exist")..bold_off..font_off m.uci:foreach("openclash", "groups", function(s) - if s.name ~= "" and s.name ~= nil then + if s.name ~= "" and s.name ~= nil and (s.config == m.uci:get(openclash, sid, "config") or s.config == "all") then o:value(s.name) end end) o = s:option(DynamicList, "groups", translate("Proxy Group (Support Regex)")) -o.description = font_red..bold_on..translate("No Need Set when Config Create, The added Proxy Groups Must Exist")..bold_off..font_off +o.description = font_red..bold_on..translate("The added Proxy Groups Must Exist")..bold_off..font_off o.rmempty = true o:value("all", translate("All Groups")) m.uci:foreach("openclash", "groups", function(s) - if s.name ~= "" and s.name ~= nil then + if s.name ~= "" and s.name ~= nil and (s.config == m.uci:get(openclash, sid, "config") or s.config == "all") then o:value(s.name) end end) diff --git a/luci-app-openclash/luasrc/model/cbi/openclash/servers.lua b/luci-app-openclash/luasrc/model/cbi/openclash/servers.lua index 35f9f285..f118ce4f 100644 --- a/luci-app-openclash/luasrc/model/cbi/openclash/servers.lua +++ b/luci-app-openclash/luasrc/model/cbi/openclash/servers.lua @@ -3,13 +3,17 @@ local m, s, o local openclash = "openclash" local uci = luci.model.uci.cursor() local fs = require "luci.openclash" +local file_path = "" -font_red = [[]] -font_off = [[]] -bold_on = [[]] -bold_off = [[]] +for i = 1, #(arg) do + file_path = file_path .. "/" .. luci.http.urlencode(arg[i]) +end -m = Map(openclash, translate("Onekey Create (Servers&Groups manage)")) +if not fs.isfile(file_path) and file_path ~= "" then + file_path = luci.http.urldecode(file_path) +end + +m = Map(openclash, translate("Servers & Groups manage")) m.pageaction = false m.description=translate("Attention:").. "
"..translate("1. Before modifying the configuration file, please click the button below to read the configuration file").. @@ -18,175 +22,142 @@ m.description=translate("Attention:").. "
"..translate("Introduction to proxy usage:").." "..translate("https://wiki.metacubex.one/config/proxies/").."".. "
"..translate("Introduction to proxy-provider usage:").." "..translate("https://wiki.metacubex.one/config/proxy-providers/").."" -s = m:section(TypedSection, "openclash") -s.anonymous = true - -o = s:option(Flag, "create_config", translate("Create Config")) -o.description = font_red .. bold_on .. translate("Create Config By One-Click Only Need Proxies") .. bold_off .. font_off -o.default = 0 - -o = s:option(ListValue, "rule_sources", translate("Choose Template For Create Config")) -o.description = translate("Use Other Rules To Create Config") -o:depends("create_config", 1) -o:value("lhie1", translate("lhie1 Rules")) - -o = s:option(Flag, "mix_proxies", translate("Mix Proxies")) -o.description = font_red .. bold_on .. translate("Mix This Page's Proxies") .. bold_off .. font_off -o:depends("create_config", 1) -o.default = 0 - -o = s:option(Flag, "servers_update", translate("Keep Settings")) -o.description = font_red .. bold_on .. translate("Only Update Servers Below When Subscription") .. bold_off .. font_off -o.default = 0 - -o = s:option(DynamicList, "new_servers_group", translate("New Servers Group (Support Regex)")) -o.description = translate("Set The New Subscribe Server's Default Proxy Groups") -o.rmempty = true -o:depends("servers_update", 1) -o:value("all", translate("All Groups")) -m.uci:foreach("openclash", "groups", - function(s) - o:value(s.name) - end) - -- [[ Groups Manage ]]-- -s = m:section(TypedSection, "groups", translate("Proxy Groups(No Need Set when Config Create)")) -s.anonymous = true -s.addremove = true -s.sortable = true -s.template = "openclash/tblsection" -s.extedit = luci.dispatcher.build_url("admin/services/openclash/groups-config/%s") -function s.create(...) - local sid = TypedSection.create(...) +gs = m:section(TypedSection, "groups", translate("Proxy Groups")) +gs.anonymous = true +gs.addremove = true +gs.sortable = true +gs.template = "openclash/tblsection" +gs.extedit = luci.dispatcher.build_url("admin/services/openclash/groups-config/%s"..file_path) +function gs.create(self, section) + local sid = TypedSection.create(self, section) if sid then - luci.http.redirect(s.extedit % sid) + local name = luci.http.formvalue("cbi.cts.tagname.".. self.config .. "." .. self.sectiontype) + if name and #name > 0 then + self.map.uci:set("openclash", sid, "config", name) + end + luci.http.redirect(gs.extedit % sid) return end end ---- enable flag -o = s:option(Flag, "enabled", translate("Enable")) +o = gs:option(Flag, "enabled", translate("Enable")) o.rmempty = false o.default = o.enabled o.cfgvalue = function(...) return Flag.cfgvalue(...) or "1" end -o = s:option(DummyValue, "config", translate("Config File")) +o = gs:option(DummyValue, "config", translate("Config File")) function o.cfgvalue(...) return Value.cfgvalue(...) or translate("all") end -o = s:option(DummyValue, "type", translate("Group Type")) +o = gs:option(DummyValue, "type", translate("Group Type")) function o.cfgvalue(...) return Value.cfgvalue(...) or translate("None") end -o = s:option(DummyValue, "name", translate("Group Name")) +o = gs:option(DummyValue, "name", translate("Group Name")) function o.cfgvalue(...) return Value.cfgvalue(...) or translate("None") end -- [[ Proxy-Provider Manage ]]-- -s = m:section(TypedSection, "proxy-provider", translate("Proxy-Provider")) -s.anonymous = true -s.addremove = true -s.sortable = true -s.template = "openclash/tblsection" -s.extedit = luci.dispatcher.build_url("admin/services/openclash/proxy-provider-config/%s") -function s.create(...) - local sid = TypedSection.create(...) +ps = m:section(TypedSection, "proxy-provider", translate("Proxy-Provider")) +ps.anonymous = true +ps.addremove = true +ps.sortable = true +ps.template = "openclash/tblsection" +ps.extedit = luci.dispatcher.build_url("admin/services/openclash/proxy-provider-config/%s"..file_path) +function ps.create(self, section) + local sid = TypedSection.create(self, section) if sid then - luci.http.redirect(s.extedit % sid) + local name = luci.http.formvalue("cbi.cts.tagname.".. self.config .. "." .. self.sectiontype) + if name and #name > 0 then + self.map.uci:set("openclash", sid, "config", name) + end + luci.http.redirect(ps.extedit % sid) return end end -o = s:option(Flag, "enabled", translate("Enable")) +o = ps:option(Flag, "enabled", translate("Enable")) o.rmempty = false o.default = o.enabled o.cfgvalue = function(...) return Flag.cfgvalue(...) or "1" end -o = s:option(Flag, "manual", translate("Custom Tag")) -o.rmempty = false -o.default = "0" -o.cfgvalue = function(...) - return Flag.cfgvalue(...) or "0" -end - -o = s:option(DummyValue, "config", translate("Config File")) +o = ps:option(DummyValue, "config", translate("Config File")) function o.cfgvalue(...) return Value.cfgvalue(...) or translate("all") end -o = s:option(DummyValue, "type", translate("Provider Type")) +o = ps:option(DummyValue, "type", translate("Provider Type")) function o.cfgvalue(...) return Value.cfgvalue(...) or translate("None") end -o = s:option(DummyValue, "name", translate("Provider Name")) +o = ps:option(DummyValue, "name", translate("Provider Name")) function o.cfgvalue(...) return Value.cfgvalue(...) or translate("None") end -- [[ Servers Manage ]]-- -s = m:section(TypedSection, "servers", translate("Proxies")) -s.anonymous = true -s.addremove = true -s.sortable = true -s.template = "openclash/tblsection" -s.extedit = luci.dispatcher.build_url("admin/services/openclash/servers-config/%s") -function s.create(...) - local sid = TypedSection.create(...) +ss = m:section(TypedSection, "servers", translate("Proxies")) +ss.anonymous = true +ss.addremove = true +ss.sortable = true +ss.template = "openclash/tblsection" +ss.extedit = luci.dispatcher.build_url("admin/services/openclash/servers-config/%s"..file_path) +function ss.create(self, section) + local sid = TypedSection.create(self, section) if sid then - luci.http.redirect(s.extedit % sid) + local name = luci.http.formvalue("cbi.cts.tagname.".. self.config .. "." .. self.sectiontype) + if name and #name > 0 then + self.map.uci:set("openclash", sid, "config", name) + end + luci.http.redirect(ss.extedit % sid) return end end ---- enable flag -o = s:option(Flag, "enabled", translate("Enable")) +o = ss:option(Flag, "enabled", translate("Enable")) o.rmempty = false o.default = o.enabled o.cfgvalue = function(...) return Flag.cfgvalue(...) or "1" end -o = s:option(Flag, "manual", translate("Custom Tag")) -o.rmempty = false -o.default = "0" -o.cfgvalue = function(...) - return Flag.cfgvalue(...) or "0" -end - -o = s:option(DummyValue, "config", translate("Config File")) +o = ss:option(DummyValue, "config", translate("Config File")) function o.cfgvalue(...) return Value.cfgvalue(...) or translate("all") end -o = s:option(DummyValue, "type", translate("Type")) +o = ss:option(DummyValue, "type", translate("Type")) function o.cfgvalue(...) return Value.cfgvalue(...) or translate("None") end -o = s:option(DummyValue, "name", translate("Server Alias")) +o = ss:option(DummyValue, "name", translate("Server Alias")) function o.cfgvalue(...) return Value.cfgvalue(...) or translate("None") end -o = s:option(DummyValue, "server", translate("Server Address")) +o = ss:option(DummyValue, "server", translate("Server Address")) function o.cfgvalue(...) return Value.cfgvalue(...) or translate("None") end -o = s:option(DummyValue, "port", translate("Server Port")) +o = ss:option(DummyValue, "port", translate("Server Port")) function o.cfgvalue(...) return Value.cfgvalue(...) or translate("None") end -o = s:option(DummyValue, "udp", translate("UDP Support")) +o = ss:option(DummyValue, "udp", translate("UDP Support")) function o.cfgvalue(...) if Value.cfgvalue(...) == "true" then return translate("Enable") @@ -207,8 +178,13 @@ o = b:option(Button,"Delete_Unused_Servers", " ") o.inputtitle = translate("Delete Unused Servers") o.inputstyle = "reset" o.write = function() - luci.sys.call("sh /usr/share/openclash/cfg_unused_servers_del.sh 2>/dev/null") - luci.http.redirect(luci.dispatcher.build_url("admin", "services", "openclash", "servers")) + m.uci:foreach("openclash", "servers", + function(s) + if s.enabled ~= "1" then + m.uci:delete("openclash", s[".name"]) + end + end) + m.uci:commit("openclash") end o = b:option(Button,"Delete_Servers", " ") @@ -217,7 +193,6 @@ o.inputstyle = "reset" o.write = function() m.uci:delete_all("openclash", "servers", function(s) return true end) m.uci:commit("openclash") - luci.http.redirect(luci.dispatcher.build_url("admin", "services", "openclash", "servers")) end o = b:option(Button,"Delete_Proxy_Provider", " ") @@ -226,7 +201,6 @@ o.inputstyle = "reset" o.write = function() m.uci:delete_all("openclash", "proxy-provider", function(s) return true end) m.uci:commit("openclash") - luci.http.redirect(luci.dispatcher.build_url("admin", "services", "openclash", "servers")) end o = b:option(Button,"Delete_Groups", " ") @@ -235,11 +209,10 @@ o.inputstyle = "reset" o.write = function() m.uci:delete_all("openclash", "groups", function(s) return true end) m.uci:commit("openclash") - luci.http.redirect(luci.dispatcher.build_url("admin", "services", "openclash", "servers")) end local t = { - {Load_Config, Commit, Apply} + {Load_Config, Commit, Apply, Back} } a = m:section(Table, t) @@ -249,15 +222,13 @@ o.inputtitle = translate("Read Config") o.inputstyle = "apply" o.write = function() m.uci:commit("openclash") - luci.sys.call("/usr/share/openclash/yml_groups_get.sh 2>/dev/null &") - luci.http.redirect(luci.dispatcher.build_url("admin", "services", "openclash")) + luci.sys.call("/usr/share/openclash/yml_groups_get.sh \"%s\" 2>/dev/null" % file_path) end o = a:option(Button, "Commit", " ") o.inputtitle = translate("Commit Settings") o.inputstyle = "apply" o.write = function() - fs.unlink("/tmp/Proxy_Group") m.uci:commit("openclash") end @@ -266,9 +237,14 @@ o.inputtitle = translate("Apply Settings") o.inputstyle = "apply" o.write = function() m.uci:commit("openclash") - fs.unlink("/tmp/Proxy_Group") - luci.sys.call("/usr/share/openclash/yml_groups_set.sh >/dev/null 2>&1 &") - luci.http.redirect(luci.dispatcher.build_url("admin", "services", "openclash")) + luci.sys.call("/usr/share/openclash/yml_groups_set.sh \"%s\" >/dev/null 2>&1 &" % file_path) +end + +o = a:option(Button,"Back", " ") +o.inputtitle = translate("Back Settings") +o.inputstyle = "apply" +o.write = function() + luci.http.redirect(luci.dispatcher.build_url("admin", "services", "openclash", "config")) end m:append(Template("openclash/toolbar_show")) diff --git a/luci-app-openclash/luasrc/model/cbi/openclash/settings.lua b/luci-app-openclash/luasrc/model/cbi/openclash/settings.lua index 0b017e11..073e6813 100644 --- a/luci-app-openclash/luasrc/model/cbi/openclash/settings.lua +++ b/luci-app-openclash/luasrc/model/cbi/openclash/settings.lua @@ -8,6 +8,13 @@ local fs = require "luci.openclash" local uci = require "luci.model.uci".cursor() local json = require "luci.jsonc" local datatype = require "luci.cbi.datatypes" +local net = require "luci.model.network".init() +local devices = {} +for _, iface in ipairs(net:get_interfaces()) do + if iface:name() then + table.insert(devices, {name = iface:name()}) + end +end -- 优化 CBI UI(新版 LuCI 专用) local function optimize_cbi_ui() @@ -72,7 +79,6 @@ s:tab("auto_restart", translate("Auto Restart")) s:tab("version_update", translate("Version Update")) s:tab("developer", translate("Developer Settings")) s:tab("debug", translate("Debug Logs")) -s:tab("dlercloud", translate("Dler Cloud")) o = s:taboption("op_mode", ListValue, "en_mode", font_red..bold_on..translate("Select Mode")..bold_off..font_off) o.description = translate("Select Mode For OpenClash Work, Try Flush DNS Cache If Network Error") @@ -218,6 +224,10 @@ o = s:taboption("lan_ac", DynamicList, "wan_ac_black_ips", translate("WAN Bypass o.datatype = "ipmask" o.description = translate("In The Fake-IP Mode, Only Pure IP Requests Are Supported, Please Setting Fake-IP-Filter First If You Need Domain Type Requests") +o = s:taboption("lan_ac", DynamicList, "wan_ac_black_ports", translate("WAN Bypassed Port List")) +o.datatype = "or(port, portrange)" +o.description = translate("In The Fake-IP Mode, Only Pure IP Requests Are Supported, Please Setting Fake-IP-Filter First If You Need Domain Type Requests") + s2 = m:section(TypedSection, "lan_ac_traffic", translate("Lan Traffic Access List"), "1. "..translate("The Traffic From The Local Specified Port Will Not Pass The Core, Try To Set When The Bypass Gateway Forwarding Fails").."; ".."2. "..translate("In The Fake-IP Mode, Only Pure IP Requests Are Supported, Please Setting Fake-IP-Filter First If You Need Domain Type Requests")) @@ -268,6 +278,42 @@ o:value("both", translate("Both")) o.default = "tcp" o.rmempty = false +o = s2:option(ListValue, "interface", translate("Interface")) +o:value("") +o.default = "" +for _, dev in ipairs(devices) do + o:value(dev.name) +end +o.rmempty = true + +o = s2:option(ListValue, "user", translate("User")) +o:value("") +o.default = "" +local passwd_content = NXFS.readfile("/etc/passwd") +local users = "" +if passwd_content then + for line in string.gmatch(passwd_content, "[^\n]+") do + if line:match("^[^#]") and line:match(":") then + local fields = {} + for field in string.gmatch(line, "([^:]+)") do + table.insert(fields, field) + end + if #fields >= 3 then + local username = fields[1] + local uid_str = fields[3] + local uid = tonumber(uid_str) + if uid and uid >= 0 then + users = users .. uid .. ":" .. username .. "\n" + end + end + end + end +end +for uid, username in string.gmatch(users, "(%d+):(%S+)") do + o:value(uid, username) +end +o.rmempty = true + o = s2:option(Value, "dscp", translate("DSCP")) o.datatype = "range(0,63)" o.rmempty = true @@ -417,17 +463,16 @@ o.default = 1 o = s:taboption("traffic_control", DynamicList, "intranet_allowed_wan_name", translate("WAN Interface Name")) o.description = translate("Select WAN Interface Name For The Intranet Allowed") o:depends("intranet_allowed", "1") -local interfaces = SYS.exec("ls -l /sys/class/net/ 2>/dev/null |awk '{print $9}' 2>/dev/null") -for interface in string.gmatch(interfaces, "%S+") do - o:value(interface) +for _, dev in ipairs(devices) do + o:value(dev.name) end o = s:taboption("traffic_control", ListValue, "lan_interface_name", translate("LAN Interface Name")) o.description = translate("Select LAN Interface Name") o:value("0", translate("Disable")) o.default = "0" -for interface in string.gmatch(interfaces, "%S+") do - o:value(interface) +for _, dev in ipairs(devices) do + o:value(dev.name) end o = s:taboption("traffic_control", Value, "local_network_pass", translate("Local IPv4 Network Bypassed List")) @@ -841,42 +886,6 @@ o.value = "OpenAI" o:depends("stream_auto_select_openai", "1") ---- update Settings -o = s:taboption("rules_update", Flag, "other_rule_auto_update", translate("Auto Update")) -o.description = font_red..bold_on..translate("Auto Update Other Rules")..bold_off..font_off -o.default = 0 - -o = s:taboption("rules_update", ListValue, "other_rule_update_week_time", translate("Update Time (Every Week)")) -o:depends("other_rule_auto_update", "1") -o:value("*", translate("Every Day")) -o:value("1", translate("Every Monday")) -o:value("2", translate("Every Tuesday")) -o:value("3", translate("Every Wednesday")) -o:value("4", translate("Every Thursday")) -o:value("5", translate("Every Friday")) -o:value("6", translate("Every Saturday")) -o:value("0", translate("Every Sunday")) -o.default = "1" - -o = s:taboption("rules_update", ListValue, "other_rule_update_day_time", translate("Update time (every day)")) -o:depends("other_rule_auto_update", "1") -for t = 0,23 do -o:value(t, t..":00") -end -o.default = "0" - -o = s:taboption("rules_update", Button, translate("Other Rules Update")) -o:depends("other_rule_auto_update", "1") -o.title = translate("Update Other Rules") -o.inputtitle = translate("Check And Update") -o.description = translate("Other Rules Update(Only in Use)")..", "..translate("Current Version:").." "..font_green..bold_on..translate(fs.get_resourse_mtime("/usr/share/openclash/res/lhie1.yaml"))..bold_off..font_off -o.inputstyle = "reload" -o.write = function() - m.uci:set("openclash", "config", "enable", 1) - m.uci:commit("openclash") - SYS.call("/usr/share/openclash/openclash_rule.sh >/dev/null 2>&1 &") - HTTP.redirect(DISP.build_url("admin", "services", "openclash")) -end - o = s:taboption("geo_update", Flag, "geo_auto_update", font_red..bold_on..translate("Auto Update GeoIP MMDB")..bold_off..font_off) o.default = 0 @@ -911,7 +920,7 @@ o:depends("geo_auto_update", "1") o = s:taboption("geo_update", Button, translate("GEOIP Update")) o.title = translate("Update GeoIP MMDB") -o.description = translate("Current Version:").." "..font_green..bold_on..translate(fs.get_resourse_mtime("/etc/openclash/Country.mmdb"))..bold_off..font_off +o.description = translate("Current Version:").." "..font_green..bold_on..fs.get_resourse_mtime("/etc/openclash/Country.mmdb")..bold_off..font_off o.inputtitle = translate("Check And Update") o.inputstyle = "reload" o.write = function() @@ -954,7 +963,7 @@ o:depends("geoip_auto_update", "1") o = s:taboption("geo_update", Button, translate("GEOIP Dat Update")) o.title = translate("Update GeoIP Dat") -o.description = translate("Current Version:").." "..font_green..bold_on..translate(fs.get_resourse_mtime("/etc/openclash/GeoIP.dat"))..bold_off..font_off +o.description = translate("Current Version:").." "..font_green..bold_on..fs.get_resourse_mtime("/etc/openclash/GeoIP.dat")..bold_off..font_off o.inputtitle = translate("Check And Update") o.inputstyle = "reload" o.write = function() @@ -997,7 +1006,7 @@ o:depends("geosite_auto_update", "1") o = s:taboption("geo_update", Button, translate("GEOSITE Update")) o.title = translate("Update GeoSite Database") -o.description = translate("Current Version:").." "..font_green..bold_on..translate(fs.get_resourse_mtime("/etc/openclash/GeoSite.dat"))..bold_off..font_off +o.description = translate("Current Version:").." "..font_green..bold_on..fs.get_resourse_mtime("/etc/openclash/GeoSite.dat")..bold_off..font_off o.inputtitle = translate("Check And Update") o.inputstyle = "reload" o.write = function() @@ -1040,7 +1049,7 @@ o:depends("geoasn_auto_update", "1") o = s:taboption("geo_update", Button, translate("ASN Update")) o.title = translate("Update Geo ASN Database") -o.description = translate("Current Version:").." "..font_green..bold_on..translate(fs.get_resourse_mtime("/etc/openclash/ASN.mmdb"))..bold_off..font_off +o.description = translate("Current Version:").." "..font_green..bold_on..fs.get_resourse_mtime("/etc/openclash/ASN.mmdb")..bold_off..font_off o.inputtitle = translate("Check And Update") o.inputstyle = "reload" o.write = function() @@ -1090,6 +1099,7 @@ o.default = "https://ispip.clang.cn/all_cn_ipv6.txt" o = s:taboption("chnr_update", Button, translate("Chnroute Lists Update")) o.title = translate("Update Chnroute Lists") +o.description = translate("Current Version:").." "..font_green..bold_on.. "IPv4 ("..fs.get_resourse_mtime("/etc/openclash/china_ip_route.ipset")..")"..bold_off..font_off.." "..font_green..bold_on.. "& IPv6 ("..fs.get_resourse_mtime("/etc/openclash/china_ip6_route.ipset")..")"..bold_off..font_off o.inputtitle = translate("Check And Update") o.inputstyle = "reload" o.write = function() @@ -1298,54 +1308,6 @@ end o = s:taboption("debug", DummyValue, "", nil) o.template = "openclash/debug" ----- dlercloud -o = s:taboption("dlercloud", Value, "dler_email") -o.title = translate("Account Email Address") -o.rmempty = true - -o = s:taboption("dlercloud", Value, "dler_passwd") -o.title = translate("Account Password") -o.password = true -o.rmempty = true - -if fs.uci_get_config("config", "dler_token") then - o = s:taboption("dlercloud", Flag, "dler_checkin") - o.title = translate("Checkin") - o.default = 0 - o.rmempty = true -end - -o = s:taboption("dlercloud", Value, "dler_checkin_interval") -o.title = translate("Checkin Interval (hour)") -o:depends("dler_checkin", "1") -o.default = "1" -o.rmempty = true - -o = s:taboption("dlercloud", Value, "dler_checkin_multiple") -o.title = translate("Checkin Multiple") -o.datatype = "uinteger" -o.default = "1" -o:depends("dler_checkin", "1") -o.rmempty = true -o.description = font_green..bold_on..translate("Multiple Must Be a Positive Integer and No More Than 100")..bold_off..font_off -function o.validate(self, value) - if tonumber(value) < 1 then - return "1" - end - if tonumber(value) > 100 then - return "100" - end - return value -end - -o = s:taboption("dlercloud", DummyValue, "dler_login", translate("Account Login")) -o.template = "openclash/dler_login" -if fs.uci_get_config("config", "dler_token") then - o.value = font_green..bold_on..translate("Account logged in")..bold_off..font_off -else - o.value = font_red..bold_on..translate("Account not logged in")..bold_off..font_off -end - local t = { {Commit, Apply} } diff --git a/luci-app-openclash/luasrc/openclash.lua b/luci-app-openclash/luasrc/openclash.lua index 803ea5e2..23966e4e 100644 --- a/luci-app-openclash/luasrc/openclash.lua +++ b/luci-app-openclash/luasrc/openclash.lua @@ -315,12 +315,15 @@ function get_resourse_mtime(path) end end local file = fs.readlink(real_path) or real_path - local model_version = os.date("%Y-%m-%d %H:%M:%S", mtime(real_path)) - if model_version and model_version ~= "" then - return model_version - else - return "Unknown" - end + local resourse_etag_version = SYS.exec(string.format("source /usr/share/openclash/openclash_etag.sh && GET_ETAG_TIMESTAMP_BY_PATH '%s'", real_path)) + if resourse_etag_version and resourse_etag_version ~= "" then + return resourse_etag_version + end + local resourse_version = os.date("%Y-%m-%d %H:%M:%S", mtime(real_path)) + if resourse_version and resourse_version ~= "" then + return resourse_version + end + return "Unknown" end function uci_get_config(section, key) diff --git a/luci-app-openclash/luasrc/view/openclash/config_edit.htm b/luci-app-openclash/luasrc/view/openclash/config_edit.htm index 1b7ceeff..b825965d 100644 --- a/luci-app-openclash/luasrc/view/openclash/config_edit.htm +++ b/luci-app-openclash/luasrc/view/openclash/config_edit.htm @@ -1,4 +1,8 @@ - - + @@ -44,7 +51,7 @@ - + @@ -72,14 +79,16 @@ local fs = require "luci.openclash" local conf = fs.uci_get_config("config", "config_path") if not conf then conf = "/etc/openclash/config/config.yaml" end local conf_name = fs.basename(conf) -if not conf_name then conf_name = "config.yaml" end +if not conf_name then conf_name = "config.yaml" end local sconf = "/etc/openclash/"..conf_name +local path_info = os.getenv("PATH_INFO") or "" +local sid = path_info:match("(cfg[0-9a-f]+)") or "" -%> - + <%- if fs.isfile(sconf) then -%> @@ -95,6 +104,15 @@ local sconf = "/etc/openclash/"..conf_name - - - -<%=self.value%> -<%+cbi/valuefooter%> diff --git a/luci-app-openclash/luasrc/view/openclash/dlercloud.htm b/luci-app-openclash/luasrc/view/openclash/dlercloud.htm deleted file mode 100644 index 5d1ed41f..00000000 --- a/luci-app-openclash/luasrc/view/openclash/dlercloud.htm +++ /dev/null @@ -1,845 +0,0 @@ - - - - - - - - - - -
-
-
-
-
-
-
-
-
- -
-
-
-

Dler Cloud

-
- <%:Simple & trustworthy%> -
-
-
-
-

-
-
-
-

- <%:Plan Expiration Time%>:<%:Collecting data...%> -

-

- <%:Account Balances%>:<%:Collecting data...%> -

-

- <%:Aff Balances%>:<%:Collecting data...%> -

-

- <%:Account Integral%>:<%:Collecting data...%> -

-
-
- -
-
-

- <%:Today Used%>:<%:Collecting data...%> -

-

- <%:Plan Used%>:<%:Collecting data...%> -

-

- <%:Plan Unused%>:<%:Collecting data...%> -

-

- <%:Plan Traffic%>:<%:Collecting data...%> -

-
-
- -
-
- -
-
-
-
-

Powered by dlercloud.com

-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/luci-app-openclash/luasrc/view/openclash/download_rule.htm b/luci-app-openclash/luasrc/view/openclash/download_rule.htm deleted file mode 100644 index e128dc89..00000000 --- a/luci-app-openclash/luasrc/view/openclash/download_rule.htm +++ /dev/null @@ -1,41 +0,0 @@ -<%+cbi/valueheader%> - - - - - - -<%+cbi/valuefooter%> diff --git a/luci-app-openclash/luasrc/view/openclash/log.htm b/luci-app-openclash/luasrc/view/openclash/log.htm index f0286ef9..9860e37a 100644 --- a/luci-app-openclash/luasrc/view/openclash/log.htm +++ b/luci-app-openclash/luasrc/view/openclash/log.htm @@ -3,15 +3,15 @@ *{margin: 0;padding: 0;} ul{ - list-style: none; + list-style: none; } #tab{ - width: 100%; - height: 100%; - border: 1px solid #ddd; - box-shadow: 0 0 2px #ddd; - overflow: hidden; + width: 100%; + height: 100%; + border: 1px solid #ddd; + box-shadow: 0 0 2px #ddd; + overflow: hidden; } #tab-header { @@ -120,7 +120,7 @@ ul{ } #tab-content .dom{ - display: none; + display: none; } #tab-content .dom ul li{ @@ -233,66 +233,66 @@ ul{ } :root[data-darkmode="true"] { - .radio-button { - background: #374151; - box-shadow: 0 1px 2px 0 rgba(0,0,0,0.15); - } - .radio-button label { - background: #1f2937; - color: #d1d5db; - border-color: #4b5563; - } - .radio-button label:hover { - color: #3b82f6; - border-color: #3b82f6; - background: #22304a; - } - .radio-button input[type="radio"]:checked + label { - background: #3b82f6; - color: #fff; - border-color: #3b82f6; - box-shadow: 0 1px 2px 0 rgba(59,130,246,0.18); - } + .radio-button { + background: #374151; + box-shadow: 0 1px 2px 0 rgba(0,0,0,0.15); + } + .radio-button label { + background: #1f2937; + color: #d1d5db; + border-color: #4b5563; + } + .radio-button label:hover { + color: #3b82f6; + border-color: #3b82f6; + background: #22304a; + } + .radio-button input[type="radio"]:checked + label { + background: #3b82f6; + color: #fff; + border-color: #3b82f6; + box-shadow: 0 1px 2px 0 rgba(59,130,246,0.18); + } } -
- -
-
- -
-
- -
- - - - - - - - - - -
-
-
-
+
+ +
+
+ +
+
+ +
+ + + + + + + + + + +
+
+
+
-
- - - - -
+
+ + + + +
@@ -304,46 +304,60 @@ var lv = document.getElementById('cbid.openclash.config.clog'); var cl = document.getElementById('core_log'); var animatingOC = false; var animatingCore = false; +var coreWebSocket = null; +var coreLogBuffer = []; +var currentLogLevel = 'info'; +var wsRetryDelay = 2000; +var wsRetryTimer = null; +var isPolling = false; +var core_refresh = true; + +function setLogTab(log_level) { + var radio = document.getElementsByName("radios"); + for (i=0; i', null, function(x, status) { - if (x && x.status == 200 && status.log_level != "") { - var radio = document.getElementsByName("radios"); - for (i=0; i', null, function(x, status) { + if (x && x.status == 200 && status.log_level != "") { + currentLogLevel = status.log_level; + setLogTab(currentLogLevel); + coreLogWebSocket(); + } + }); }; - + function switch_log_level(value) { - clearTimeout(s); - XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "switch_log")%>', {log_level: value}, function(x, status) { - if (x && x.status == 200) { - alert(' <%:Log Level%>: ' + value + ' <%:switching succeeded!%>'); - get_log_level(); - } - else { - alert(' <%:Log Level%>: ' + value + ' <%:switching failed!%>'); - get_log_level(); - } - }); + if (!coreWebSocket || coreWebSocket.readyState !== WebSocket.OPEN) { + XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "switch_log")%>', {log_level: value}, function(x, status) { + if (!x || x.status != 200) { + alert(' <%:Log Level%>: ' + value + ' <%:switching failed!%>'); + return + } + }); + } + + currentLogLevel = value; + setLogTab(currentLogLevel); + coreLogWebSocket(); }; - function stop_refresh() { - clearTimeout(r); - return + clearTimeout(r); + coreLogWebSocketStop(); + return }; function start_refresh() { - clearTimeout(r); - r=setTimeout("poll_log()",1000*2); - return + clearTimeout(r); + coreLogWebSocket(); + r=setTimeout("poll_log()",1000); + return }; function createAndDownloadFile(fileName, content) { @@ -360,8 +374,8 @@ function download_log(){ var timestamp = dt.getFullYear()+"-"+(dt.getMonth()+1)+"-"+dt.getDate()+"-"+dt.getHours()+"-"+dt.getMinutes()+"-"+dt.getSeconds(); var oc_content = ""; - if (typeof oc_editor !== 'undefined' && oc_editor) { - oc_content = oc_editor.getValue(); + if (typeof editor_oc !== 'undefined' && editor_oc) { + oc_content = editor_oc.getValue(); } else if (lv && lv.value) { oc_content = lv.value; } else if (lv && lv.innerHTML) { @@ -369,8 +383,8 @@ function download_log(){ } var core_content = ""; - if (typeof core_editor !== 'undefined' && core_editor) { - core_content = core_editor.getValue(); + if (typeof editor_core !== 'undefined' && editor_core) { + core_content = editor_core.getValue(); } else if (cl && cl.value) { core_content = cl.value; } else if (cl && cl.innerHTML) { @@ -378,7 +392,7 @@ function download_log(){ } oc_content = oc_content.split('\n').filter(function(line) { - return line.indexOf("】订阅的下载链接为【") === -1 && line.indexOf("】Downloading URL【") === -1; + return line.indexOf("】<%:Downloading URL%>【") === -1; }).join('\n'); if (!oc_content.trim() && !core_content.trim()) { @@ -398,27 +412,136 @@ function download_log(){ }; function del_log() { - XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "del_log")%>',null,function(x, data){ - lv.innerHTML=""; - cl.innerHTML=""; - log_len = 0; - oc_editor.setValue(lv.value); - core_editor.setValue(cl.value); - core_editor.refresh(); - oc_editor.refresh(); - }); - return + XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "del_log")%>',null,function(x, data){ + lv.innerHTML=""; + cl.innerHTML=""; + coreLogBuffer = []; + log_len = 0; + editor_oc.setValue(lv.value); + editor_core.setValue(cl.value); + editor_core.refresh(); + editor_oc.refresh(); + }); + return }; function p(s) { - return s < 10 ? '0' + s: s; + return s < 10 ? '0' + s: s; }; +function getWebSocketConnectionInfo(callback) { + XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "status")%>', null, function(x, status) { + if (x && x.status == 200 && status) { + callback(status); + } else { + callback(null); + } + }); +} + +function coreLogWebSocketStop() { + if (wsRetryTimer) { + clearTimeout(wsRetryTimer); + wsRetryTimer = null; + } + + var ws = coreWebSocket; + coreWebSocket = null; + + if (!ws) return; + + ["onopen", "onmessage", "onerror", "onclose"].forEach(function(event) { + try { + ws[event] = null; + } catch (e) {} + }); + + try { + if (ws.readyState !== WebSocket.CLOSED && ws.readyState !== WebSocket.CLOSING) { + ws.close(); + } + } catch (e) {} + + coreLogBuffer = []; +} + +function coreLogWebSocketRetry() { + wsRetryTimer = setTimeout(function() { + coreLogWebSocket(); + }, wsRetryDelay); +} + +function coreLogWebSocket() { + coreLogWebSocketStop(); + + getWebSocketConnectionInfo(function(status) { + if (!status || !status.daip || !status.cn_port || !status.clash) { + return; + } + + var protocol = window.location.protocol === "https:" ? "wss://" : "ws://"; + var host, port; + + if (status.daip && window.location.hostname === status.daip) { + host = status.daip; + port = status.cn_port; + } else if (status.daip && window.location.hostname !== status.daip && + status.db_foward_domain && status.db_foward_port) { + host = status.db_foward_domain; + port = status.db_foward_port; + } else { + host = status.daip; + port = status.cn_port; + } + + var token = status.dase; + var level = currentLogLevel; + var wsUrl = protocol + host + ":" + port + "/logs?token=" + token + "&level=" + level; + + try { + coreWebSocket = new WebSocket(wsUrl); + coreWebSocket.onopen = function() { + coreLogBuffer = []; + }; + + coreWebSocket.onmessage = function(event) { + if (event.data) { + try { + var msgData = JSON.parse(event.data); + if (msgData && msgData.payload) { + var now = new Date(); + var timestamp = now.getFullYear() + "-" + p(now.getMonth() + 1) + "-" + p(now.getDate()) + " " + + p(now.getHours()) + ":" + p(now.getMinutes()) + ":" + p(now.getSeconds()); + var type = msgData.type || 'info'; + var translatedType = levelTranslations[type] || type; + coreLogBuffer.push(timestamp + " [" + translatedType + "] " + msgData.payload); + } + } catch (e) { + coreLogWebSocketRetry(); + } + } + }; + + coreWebSocket.onerror = function(error) { + coreLogWebSocketRetry(); + }; + + coreWebSocket.onclose = function(event) { + coreWebSocket = null; + if (!event.wasClean) { + coreLogWebSocketRetry(); + } + }; + } catch (e) { + coreLogWebSocketRetry(); + } + }); +} + function line_tolocal(str) { var trans_local = new Array(); var local_count = 0; - str.trim().split('\n').forEach(function(v, i) { var regex = /(time=)"([^"]*)"/g; var res = regex.exec(v); @@ -428,13 +551,15 @@ function line_tolocal(str) { var dt = new Date(res[2]); if (!isNaN(dt.getTime())) { - if (v.indexOf("level=") != -1) { - var log_info = v.substring(res[2].length + 7); - } else { - var log_info = v.substring(res[2].length + 2); - } - trans_local[local_count] = dt.getFullYear() + "-" + p(dt.getMonth() + 1) + "-" + p(dt.getDate()) + " " + - p(dt.getHours()) + ":" + p(dt.getMinutes()) + ":" + p(dt.getSeconds()) + log_info; + var timestamp = dt.getFullYear() + "-" + p(dt.getMonth() + 1) + "-" + p(dt.getDate()) + " " + + p(dt.getHours()) + ":" + p(dt.getMinutes()) + ":" + p(dt.getSeconds()); + + var levelMatch = v.match(/level=(\w+)/); + var level = levelMatch ? levelMatch[1] : 'info'; + var translatedLevel = levelTranslations[level] || level; + var msgMatch = v.match(/msg="(.*)"/); + var msg = msgMatch ? msgMatch[1] : ''; + trans_local[local_count] = timestamp + " [" + translatedLevel + "] " + msg; local_count++; } else { trans_local[local_count] = v; @@ -500,7 +625,7 @@ function smoothlyDisplayLogs(newLines, target, isEditor, currentContent, isActiv isAtTop = (target.scrollTop < 20); } - if ((target === oc_editor && animatingOC) || (target === core_editor && animatingCore) || !isActiveTab) { + if ((target === editor_oc && animatingOC) || (target === editor_core && animatingCore) || !isActiveTab) { var content = ""; var lines = newLines.slice().reverse(); for (var i = 0; i < lines.length; i++) { @@ -557,7 +682,7 @@ function smoothlyDisplayLogs(newLines, target, isEditor, currentContent, isActiv return; } - if (target === oc_editor || target === lv) { + if (target === editor_oc || target === lv) { animatingOC = true; } else { animatingCore = true; @@ -596,7 +721,7 @@ function smoothlyDisplayLogs(newLines, target, isEditor, currentContent, isActiv function displayNextBatch() { if (currentBatchCount >= logLines.length) { - if (target === oc_editor || target === lv) { + if (target === editor_oc || target === lv) { animatingOC = false; } else { animatingCore = false; @@ -661,7 +786,7 @@ function smoothlyDisplayLogs(newLines, target, isEditor, currentContent, isActiv if (currentBatchCount < logLines.length) { setTimeout(displayNextBatch, interval); } else { - if (target === oc_editor || target === lv) { + if (target === editor_oc || target === lv) { animatingOC = false; } else { animatingCore = false; @@ -691,15 +816,54 @@ function smoothlyDisplayLogs(newLines, target, isEditor, currentContent, isActiv } function poll_log(){ + var activeTabId = 0; + var titles = document.getElementsByName('tab-header'); + var core_logs = []; + var oc_logs = []; + var currentCoreContent = ""; + var currentContent = ""; + var bufferToProcess = []; + + for(var i=0; i 0) { + core_refresh = false; + bufferToProcess = coreLogBuffer; + coreLogBuffer = []; + core_logs = line_tolocal(bufferToProcess.join('\n')); + if (editor_core) { + currentCoreContent = editor_core.getValue(); + smoothlyDisplayLogs(core_logs, editor_core, true, currentCoreContent, activeTabId === 1); + } else if (cl) { + currentCoreContent = cl.innerHTML; + smoothlyDisplayLogs(core_logs, cl, false, currentCoreContent, activeTabId === 1); + } + } + } + + if (isPolling) { + r = setTimeout("poll_log()", 1000); + return; + } + + isPolling = true; + XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "refresh_log")%>', { - log_len: log_len + log_len: log_len, core_refresh: core_refresh }, function(x, status) { if (x && x.status == 200) { if (status) { if (!status.update) { - r = setTimeout("poll_log()", 2000); + isPolling = false; + r = setTimeout("poll_log()", 1000); return; } @@ -707,45 +871,37 @@ function poll_log(){ log_len = status.len; } - var activeTabId = 0; - var titles = document.getElementsByName('tab-header'); - for(var i=0; i 0) { - if (oc_editor) { - var currentContent = oc_editor.getValue(); - smoothlyDisplayLogs(oc_logs, oc_editor, true, currentContent, activeTabId === 0); + if (oc_logs.length > 0) { + if (editor_oc) { + currentContent = editor_oc.getValue(); + smoothlyDisplayLogs(oc_logs, editor_oc, true, currentContent, activeTabId === 0); } else if (lv) { - var currentContent = lv.innerHTML; + currentContent = lv.innerHTML; smoothlyDisplayLogs(oc_logs, lv, false, currentContent, activeTabId === 0); } } } if (status.core_log && status.core_log !== "") { - var core_logs = line_tolocal(status.core_log); + core_logs = line_tolocal(status.core_log); - if (core_logs && core_logs.length > 0) { - if (core_editor) { - var currentCoreContent = core_editor.getValue(); - smoothlyDisplayLogs(core_logs, core_editor, true, currentCoreContent, activeTabId === 1); + if (core_logs.length > 0) { + if (editor_core) { + currentCoreContent = editor_core.getValue(); + smoothlyDisplayLogs(core_logs, editor_core, true, currentCoreContent, activeTabId === 1); } else if (cl) { - var currentCoreContent = cl.innerHTML; + currentCoreContent = cl.innerHTML; smoothlyDisplayLogs(core_logs, cl, false, currentCoreContent, activeTabId === 1); } } } } } - r = setTimeout("poll_log()", 2000); + isPolling = false; + r = setTimeout("poll_log()", 1000); } ); }; @@ -767,13 +923,13 @@ window.onload = function(){ tab.className = 'cbi-tab'; divs[tab.id].style.display = 'block'; - if(tab.id == 0 && typeof oc_editor !== 'undefined') { + if(tab.id == 0 && typeof editor_oc !== 'undefined') { setTimeout(function(){ - oc_editor.refresh(); + editor_oc.refresh(); }, 10); - } else if(tab.id == 1 && typeof core_editor !== 'undefined') { + } else if(tab.id == 1 && typeof editor_core !== 'undefined') { setTimeout(function(){ - core_editor.refresh(); + editor_core.refresh(); }, 10); } }; diff --git a/luci-app-openclash/luasrc/view/openclash/other_button.htm b/luci-app-openclash/luasrc/view/openclash/other_button.htm deleted file mode 100644 index a7a2e495..00000000 --- a/luci-app-openclash/luasrc/view/openclash/other_button.htm +++ /dev/null @@ -1,7 +0,0 @@ -<%+cbi/valueheader%> - <% if self:cfgvalue(section) ~= false then %> - " style="display: <%= display %>" type="submit"<%= attr("name", cbid) .. attr("id", cbid) .. attr("value", self.inputtitle or self.title)%> /> - <% else %> - - - <% end %> -<%+cbi/valuefooter%> diff --git a/luci-app-openclash/luasrc/view/openclash/other_stream_option.htm b/luci-app-openclash/luasrc/view/openclash/other_stream_option.htm index a045ecf2..59c1ba57 100644 --- a/luci-app-openclash/luasrc/view/openclash/other_stream_option.htm +++ b/luci-app-openclash/luasrc/view/openclash/other_stream_option.htm @@ -25,7 +25,7 @@ function act_manual_unlock_test_<%=stream_id_name%>(btn, type) { manual_<%=stream_id_name%>_type_legend.style.display = 'none'; manual_<%=stream_id_name%>_type_output.innerHTML = ''; - other_log_area(document.getElementById("manual_<%=stream_id_name%>_type_output"), 'true', manual_<%=stream_id_name%>_type_output.offsetWidth, '250px'); + log_area(document.getElementById("manual_<%=stream_id_name%>_type_output"), 'manual_stream_unlock_test', 'true', manual_<%=stream_id_name%>_type_output.offsetWidth, '250px'); } else { @@ -58,7 +58,7 @@ function act_all_proxies_test_<%=stream_id_name%>(btn, type) { all_<%=stream_id_name%>_legend.style.display = 'none'; all_<%=stream_id_name%>_output.innerHTML = ''; - other_log_area(document.getElementById("all_<%=stream_id_name%>_output"), 'true', all_<%=stream_id_name%>_output.offsetWidth, '250px'); + log_editor(document.getElementById("all_<%=stream_id_name%>_output"), 'all_proxies_stream_test', true, all_<%=stream_id_name%>_output.offsetWidth, '250px'); } else { diff --git a/luci-app-openclash/luasrc/view/openclash/select_git_cdn.htm b/luci-app-openclash/luasrc/view/openclash/select_git_cdn.htm index e5bf26c5..806c9cf8 100644 --- a/luci-app-openclash/luasrc/view/openclash/select_git_cdn.htm +++ b/luci-app-openclash/luasrc/view/openclash/select_git_cdn.htm @@ -14,6 +14,9 @@ --success-dark: #047857; --warning-color: #f59e0b; --error-color: #dc2626; + --tip-color: #f9bb51; + --info-color: #2563eb; + --watchdog-color: #b300ff; --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05); --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); --radius-sm: 6px; @@ -40,6 +43,11 @@ --primary-color: #3b82f6; --success-color: #34d399; --success-dark: #10b981; + --error-color: #ff7070; + --tip-color: #f9bb51; + --warning-color: #fa41c8; + --watchdog-color: #c147f5; + --info-color: #2563eb; } .oc * { @@ -204,8 +212,8 @@ padding: 8px 32px 8px 12px; border: 1px solid var(--border-light); border-radius: var(--radius-sm); - background: var(--bg-white); - color: var(--text-primary); + background: var(--bg-white) !important; + color: var(--text-primary) !important; font-size: 13px; appearance: none; cursor: pointer; @@ -640,22 +648,22 @@ var smart_enable_cdn = document.getElementById('SMART_ENABLE_CDN'); function initDarkMode() { - var ocContainer = document.querySelector('.oc'); - if (!ocContainer) return; + var ocContainers = document.querySelectorAll('.oc'); + if (!ocContainers.length) return; var shouldUseDark = isDarkBackground(document.body); - if (shouldUseDark) { - ocContainer.setAttribute('data-darkmode', 'true'); - } else { - ocContainer.removeAttribute('data-darkmode'); - } + ocContainers.forEach(function(ocContainer) { + if (shouldUseDark) { + ocContainer.setAttribute('data-darkmode', 'true'); + document.documentElement.setAttribute('data-darkmode', 'true'); + } else { + ocContainer.removeAttribute('data-darkmode'); + document.documentElement.removeAttribute('data-darkmode'); + } + }); } - document.addEventListener('DOMContentLoaded', function() { - initDarkMode(); - }); - if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initDarkMode); } else { diff --git a/luci-app-openclash/luasrc/view/openclash/status.htm b/luci-app-openclash/luasrc/view/openclash/status.htm index 20d44dfe..bd87dd19 100644 --- a/luci-app-openclash/luasrc/view/openclash/status.htm +++ b/luci-app-openclash/luasrc/view/openclash/status.htm @@ -14,10 +14,11 @@ --primary-color: #3b82f6; --success-color: #059669; --success-dark: #047857; - --warning-color: #f59e0b; + --tip-color: #f59e0b; --error-color: #dc2626; - --warning-log: #ff00bb; - --watch-log: #b300ff; + --warning-color: #ff00bb; + --watchdog-color: #b300ff; + --info-color: #3b82f6; --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05); --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); --radius-sm: 6px; @@ -50,9 +51,10 @@ --success-color: #34d399; --success-dark: #10b981; --error-color: #ff7070; - --warning-color: #f9bb51; - --warning-log: #fa41c8; - --watch-log: #c147f5; + --tip-color: #f9bb51; + --warning-color: #fa41c8; + --watchdog-color: #c147f5; + --info-color: #3b82f6; } .oc[data-darkmode="true"] .plugin-toggle-slider { @@ -94,7 +96,7 @@ } .oc[data-darkmode="true"] .subscription-progress-fill.medium { - background: var(--warning-color); + background: var(--tip-color); } .oc[data-darkmode="true"] .subscription-progress-fill.low { @@ -942,7 +944,7 @@ } .oc .subscription-progress-fill.medium { - background: var(--warning-color); + background: var(--tip-color); } .oc .subscription-progress-fill.low { @@ -2248,14 +2250,10 @@ DISCONNECTED: 2, ERROR: 3 }, - retryAttempts: {}, - maxRetries: 3, - reconnectDelay: 2000, + reconnectDelay: 5000, heartbeatInterval: 30000, heartbeatTimers: {}, _ws_connect: false, - _ws_error: false, - _ws_retry: 0, _allowedCloseCodes: [1000, 1001, 1005, 1006], isSupported: function() { @@ -2284,8 +2282,6 @@ options: options }; - this.retryAttempts[type] = 0; - if (ws.addEventListener) { ws.addEventListener('open', this.handleOpen.bind(this, type)); ws.addEventListener('message', this.handleMessage.bind(this, type)); @@ -2362,8 +2358,6 @@ this.closeConnection(types[i]); } this._ws_connect = false; - this._ws_error = false; - this._ws_retry = 0; }, handleMessage: function(type, event) { @@ -2389,13 +2383,13 @@ connection.state = this.connectionStates.CONNECTED; connection.lastActivity = Date.now(); } - this.retryAttempts[type] = 0; this.startHeartbeat(type); - if (type === 'traffic' || Object.keys(this.connections).length === 3) { + if (Object.keys(this.connections).length === 3) { this._ws_connect = true; - this._ws_error = false; - this._ws_retry = 0; + if (NetworkStatsManager.isEnabled) { + NetworkStatsManager.stop(); + } } }, @@ -2404,15 +2398,14 @@ if (connection) { connection.state = this.connectionStates.ERROR; } - this._ws_error = true; this.stopHeartbeat(type); - - if (type === 'traffic') { - this.enableFallbackMode(); - } + this.enableFallbackMode(); }, handleClose: function(type, event) { + // if not connected, start log display because core maybe restart + LogManager.startLogDisplay(); + var connection = this.connections[type]; if (connection) { connection.state = this.connectionStates.DISCONNECTED; @@ -2429,7 +2422,6 @@ if (connection) { connection.state = this.connectionStates.ERROR; } - this._ws_error = true; this.enableFallbackMode(); }, @@ -2437,25 +2429,22 @@ var self = this; var connection = this.connections[type]; - if (!connection || this.retryAttempts[type] >= this.maxRetries) { + if (!connection) { this.enableFallbackMode(); return; } - this.retryAttempts[type] = (this.retryAttempts[type] || 0) + 1; - var delay = this.reconnectDelay * Math.pow(1.5, this.retryAttempts[type] - 1); - setTimeout(function() { if (self.connections[type] && self.connections[type].state !== self.connectionStates.CONNECTED) { self.createConnection(type, connection.url, connection.messageHandler, connection.options); } - }, delay); + }, this.reconnectDelay); }, enableFallbackMode: function() { this._ws_connect = false; this.closeAll(); - if (typeof NetworkStatsManager !== "undefined" && !NetworkStatsManager.isEnabled) { + if (!NetworkStatsManager.isEnabled) { NetworkStatsManager.start(); } }, @@ -2480,14 +2469,6 @@ } } return false; - }, - - resetRetryCount: function(type) { - if (type) { - this.retryAttempts[type] = 0; - } else { - this.retryAttempts = {}; - } } }; @@ -2575,7 +2556,7 @@ this.updateSubscriptionDisplay(currentConfigFile, currentFileInfo); - if (currentConfigFile && SubscriptionManager.currentConfigFile !== currentConfigFile) { + if (SubscriptionManager.currentConfigFile !== currentConfigFile) { SubscriptionManager.currentConfigFile = currentConfigFile; SubscriptionManager.getSubscriptionInfo(); } @@ -2967,7 +2948,7 @@ loadSubscriptionInfo: function() { var currentConfig = ConfigFileManager.getCurrentConfig() || ConfigFileManager.getSelectedConfig(); - if (currentConfig && currentConfig !== this.currentConfigFile) { + if (currentConfig !== this.currentConfigFile) { this.currentConfigFile = currentConfig; this.getSubscriptionInfo(); } @@ -3376,7 +3357,6 @@ }, bindEvents: function() { - var self = this; var textarea = document.getElementById('subscription-url-textarea'); var overlay = document.getElementById('subscription-url-overlay'); @@ -3444,24 +3424,38 @@ }); }, + handleSubURL: function(urlresult) { + var textarea = document.getElementById('subscription-url-textarea'); + if (!textarea) return; + + var urls = ''; + if (urlresult.type && urlresult.type === "multiple") { + for (var data in urlresult.providers) { + urls += urlresult.providers[data].url + '#name=' + urlresult.providers[data].name + '\n'; + } + } + if (urlresult.type && urlresult.type === "single") { + urls = urlresult.url; + } + textarea.value = urls; + }, + loadUrls: function() { var self = this; + var existingData = localStorage.getItem('sub_info_' + this.filename); + if (existingData) { + existingData = JSON.parse(existingData); + if (existingData.url_result) { + this.handleSubURL(existingData.url_result); + return; + } + }; + XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "get_subscribe_info_data")%>', { filename: this.filename }, function(x, status) { if (x && x.status == 200 && status) { - var textarea = document.getElementById('subscription-url-textarea'); - if (textarea) { - var urls = ''; - if (status.url) { - if (typeof status.url === 'string') { - urls = status.url; - } else if (Array.isArray(status.url)) { - urls = status.url.join('\n'); - } - } - textarea.value = urls; - } + self.handleSubURL(status); } }); } @@ -3489,9 +3483,9 @@ StateManager.clearCache('<%=luci.dispatcher.build_url("admin", "services", "openclash", "startlog")%>'); - if (DOMCache.oclog) { + if (DOMCache.oclog && initialMessage) { DOMCache.oclog.style.display = 'inline-flex'; - DOMCache.oclog.innerHTML = '' + (initialMessage || '<%:Processing...%>') + ''; + DOMCache.oclog.innerHTML = '' + initialMessage + ''; } this.isPolling = true; @@ -3591,17 +3585,11 @@ checkForErrors: function(log) { if (!log) return false; - if (log.match(/level=fatal|level=error|FTL \[Config]/)) { + if (log.match(/level=(fatal|error)/)) { XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "del_start_log")%>', null, function(x) {}); - var errorMsg; - if (log.match(/level=(fatal|error)/)) { - var msgParts = log.split('msg='); - errorMsg = msgParts.length > 1 ? msgParts[1].replace(/"/g, '') : log; - } else { // FTL [Config] - var ftlParts = log.split('FTL [Config] '); - errorMsg = ftlParts.length > 1 ? ftlParts[1] : log; - } + var msgParts = log.split('msg='); + var errorMsg = msgParts.length > 1 ? msgParts[1].replace(/"/g, '') : log; setTimeout(function() { alert('<%:OpenClash Start Failed%>:\n\n' + errorMsg); @@ -3621,6 +3609,7 @@ var color = this.getLogColor(cleanLog); var displayText = this.formatLogText(cleanLog); + DOMCache.oclog.style.display = 'inline-flex'; DOMCache.oclog.innerHTML = '' + displayText + ''; }, @@ -3629,19 +3618,13 @@ }, getLogColor: function(log) { - if (log.includes("Tip:") || log.includes("提示:")) { - return 'var(--warning-color)'; - } else if (log.includes("Error:") || log.includes("错误:") || log.includes("level=error")) { - return 'var(--error-color)'; - } else if (log.includes("Warning:") || log.includes("警告:") || log.includes("level=warning")) { - return 'var(--warning-log)'; - } else if (log.includes("Watchdog:") || log.includes("守护程序:")) { - return 'var(--watch-log)'; - } else if (log.match(/level=info|Success|Started|Ready/)) { - return 'var(--success-color)'; - } else { - return 'var(--text-secondary)'; + for (var levelKey in window.levelTranslations) { + var translatedText = '[' + window.levelTranslations[levelKey] + ']'; + if (log.includes(translatedText)) { + return "var(--" + levelKey + "-color)"; + } } + return "var(--info-color)"; }, formatLogText: function(log) { @@ -3695,12 +3678,12 @@ StateManager.cachedXHRGet('<%=luci.dispatcher.build_url("admin", "services", "openclash", "toolbar_show_sys")%>', function(x, status) { if (x && x.status == 200 && x.responseText != "") { self.retryCount = 0; - var cpuColor = status.cpu <= 50 ? "var(--success-color)" : (status.cpu <= 80 ? "var(--warning-color)" : "var(--error-color)"); + var cpuColor = status.cpu <= 50 ? "var(--success-color)" : (status.cpu <= 80 ? "var(--tip-color)" : "var(--error-color)"); var cpuValue = status.cpu <= 100 ? status.cpu + " %" : "0 %"; document.getElementById("cpu_t").innerHTML = ""+cpuValue+""; var loadValue = parseFloat(status.load_avg) || 0; - var loadColor = loadValue <= 50 ? "var(--success-color)" : (loadValue <= 80 ? "var(--warning-color)" : "var(--error-color)"); + var loadColor = loadValue <= 50 ? "var(--success-color)" : (loadValue <= 80 ? "var(--tip-color)" : "var(--error-color)"); document.getElementById("load_a").innerHTML = ""+status.load_avg+" %"; } else { self.handleError(); @@ -3782,12 +3765,12 @@ ]; if (!SystemStatusManager.isEnabled) { - var cpuColor = status.cpu <= 50 ? "var(--success-color)" : (status.cpu <= 80 ? "var(--warning-color)" : "var(--error-color)"); + var cpuColor = status.cpu <= 50 ? "var(--success-color)" : (status.cpu <= 80 ? "var(--tip-color)" : "var(--error-color)"); var cpuValue = status.cpu <= 100 ? status.cpu + " %" : "0 %"; updates.push({element: document.getElementById("cpu_t"), content: ""+cpuValue+""}); var loadValue = parseFloat(status.load_avg) || 0; - var loadColor = loadValue <= 50 ? "var(--success-color)" : (loadValue <= 80 ? "var(--warning-color)" : "var(--error-color)"); + var loadColor = loadValue <= 50 ? "var(--success-color)" : (loadValue <= 80 ? "var(--tip-color)" : "var(--error-color)"); updates.push({element: document.getElementById("load_a"), content: ""+status.load_avg+" %"}); } @@ -4143,19 +4126,13 @@ if (status.clash && status.daip) { if (!WSManager.hasActiveConnections()) { - if (!WSManager._ws_error || WSManager._ws_retry < 3) { - if (initializeWebSocketConnections(status)) { - WSManager._ws_retry++; - } - } else { - WSManager.enableFallbackMode(); - } + initializeWebSocketConnections(status); } else { - if (NetworkStatsManager && NetworkStatsManager.isEnabled) { + if (NetworkStatsManager.isEnabled) { NetworkStatsManager.stop(); } - if (SystemStatusManager && !SystemStatusManager.isEnabled) { + if (!SystemStatusManager.isEnabled) { SystemStatusManager.start(); } } @@ -4232,14 +4209,14 @@ var isChineseUser = userLang.indexOf('zh') === 0; var tips = [ - '<%:Tip: You can modify the profile on the profile page (for content that is not taken over)%>', - '<%:Tip: do not write configuration files? Try to create one click on the server page%>', - '<%:Tip: some website are abnormal? Try switching modes or using third-party rules%>', - '<%:Tip: using the fake IP mode can get a faster access experience%>', - '<%:Tip: the nameserver group must have at least one server set when using custom DNS%>', - '<%:Tip: after started, please wait patiently until the connection is normal%>', - '<%:Tip: if you don not use IPv6, please turn off the DHCP service of IPv6, otherwise the connection will be abnormal%>', - '<%:Tip: you can update the version in the settings page%>', + '<%:You can modify the profile on the profile page (for content that is not taken over)%>', + '<%:do not write configuration files? Try to create one click on the server page%>', + '<%:some website are abnormal? Try switching modes or using third-party rules%>', + '<%:using the fake IP mode can get a faster access experience%>', + '<%:the nameserver group must have at least one server set when using custom DNS%>', + '<%:after started, please wait patiently until the connection is normal%>', + '<%:if you don not use IPv6, please turn off the DHCP service of IPv6, otherwise the connection will be abnormal%>', + '<%:you can update the version in the settings page%>', '<%:Note: It is not recommended to enable IPv6 and related services for routing. Most of the network connection problems reported so far are related to it%>', '<%:Note: Turning on secure DNS in the browser will cause abnormal shunting, please be careful to turn it off%>', '<%:Note: Some software will modify the device HOSTS, which will cause abnormal shunt, please pay attention to check%>', @@ -4505,12 +4482,6 @@ } } - function ws_terror() { - WSManager._ws_error = true; - - NetworkStatsManager.start(); - } - function ws_tmessage(event) { var dataObj = event && event.data !== undefined ? event.data : event; var data; @@ -4938,7 +4909,7 @@ } }); return false; - } + } function copySecret() { var secret = StateManager.current_status.dase || ''; @@ -4969,6 +4940,10 @@ var mixPort = StateManager.cached_proxy_info.mixed_port || '7893'; var proxyIp = StateManager.current_status.daip; var proxyText = proxyIp + ':' + mixPort; + if (StateManager.cached_proxy_info.auth_user && StateManager.cached_proxy_info.auth_pass) { + proxyText = StateManager.cached_proxy_info.auth_user + ':' + StateManager.cached_proxy_info.auth_pass + '@' + proxyText; + } + proxyText = 'http://' + proxyText; copyToClipboard(proxyText, '<%:Mix proxy address copied:%> '); } else { alert('<%:Proxy info not available, please try again later%>'); @@ -5062,13 +5037,8 @@ client_href: currentUrl.href }, function(x, data) { if (x && x.status == 200 && data.pac_url) { - if (data.error && data.error.indexOf("warning:") === 0) { - var warningMsg = data.error.replace("warning: ", ""); - var warningTranslations = { - 'No authentication configured, please be aware of the risk of information leakage!': '<%:No authentication configured, please be aware of the risk of information leakage!%>' - }; - var translatedWarning = warningTranslations[warningMsg] || warningMsg; - alert('<%:Warning:%> ' + translatedWarning); + if (data.error && data.error !== "") { + alert(data.error); } copyToClipboard(data.pac_url, '<%:PAC file URL copied:%> '); } else if (data.error) { @@ -5392,11 +5362,11 @@ filename: filename }, function(x, status) { if (x.status == 200) { - if (typeof ConfigUploader !== 'undefined' && ConfigUploader.showEditSubscribe) { + if (ConfigUploader && ConfigUploader.showEditSubscribe) { ConfigUploader.showEditSubscribe(status, filename); } else { setTimeout(function() { - if (typeof ConfigUploader !== 'undefined' && ConfigUploader.showEditSubscribe) { + if (ConfigUploader && ConfigUploader.showEditSubscribe) { ConfigUploader.showEditSubscribe(status, filename); } else { alert('<%:Config editor not ready, please try again%>'); @@ -5418,11 +5388,11 @@ return false; } - if (typeof ConfigEditor !== 'undefined' && ConfigEditor.show) { + if (ConfigEditor.show) { ConfigEditor.show(currentConfig); } else { setTimeout(function() { - if (typeof ConfigEditor !== 'undefined' && ConfigEditor.show) { + if (ConfigEditor.show) { ConfigEditor.show(currentConfig); } else { alert('<%:Config editor not ready, please try again%>'); @@ -5434,11 +5404,11 @@ } function editOverwrite() { - if (typeof ConfigEditor !== 'undefined' && ConfigEditor.showOverwrite) { + if (ConfigEditor.showOverwrite) { ConfigEditor.showOverwrite(); } else { setTimeout(function() { - if (typeof ConfigEditor !== 'undefined' && ConfigEditor.showOverwrite) { + if (ConfigEditor.showOverwrite) { ConfigEditor.showOverwrite(); } else { alert('<%:Config editor not ready, please try again%>'); diff --git a/luci-app-openclash/luasrc/view/openclash/sub_info_show.htm b/luci-app-openclash/luasrc/view/openclash/sub_info_show.htm index d359a94f..d8627d82 100644 --- a/luci-app-openclash/luasrc/view/openclash/sub_info_show.htm +++ b/luci-app-openclash/luasrc/view/openclash/sub_info_show.htm @@ -55,15 +55,20 @@ line-height: 0; flex-shrink: 0; cursor: pointer; + background-color: unset; + border: unset; } -.sub_setting img { +.sub_setting svg { vertical-align: middle; display: inline-block; - transition: opacity 0.3s ease; + width: 18px; + height: 18px; + color: #414c5c; + padding-left: 2px; } -.sub_setting:hover img { +.sub_setting:hover svg { opacity: 0.7; } @@ -95,14 +100,147 @@ background-color: #ffb9b9; } -:root[data-darkmode="true"] #icon_wrench { - -webkit-filter: invert(1); - filter: invert(1); +.sub-info-url-overlay { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: rgba(0, 0, 0, 0.5); + z-index: 10000; + display: flex; + align-items: center; + justify-content: center; + backdrop-filter: blur(2px); } -:root[data-darkmode="true"] #icon_arrow { - -webkit-filter: invert(1); - filter: invert(1); +.sub-info-url-model { + background: var(--bg-white, white); + border-radius: var(--radius-lg, 8px); + box-shadow: var(--shadow-md, 0 4px 12px rgba(0,0,0,0.15)); + width: 90vw; + max-width: 550px; + min-width: 400px; + display: flex; + flex-direction: column; + overflow: hidden; + border: 1px solid var(--border-light, #e5e7eb); + max-height: 85vh; + transition: all var(--transition-fast, 0.2s); +} + +.sub-info-url-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 20px; + border-bottom: 1px solid var(--border-light, #e5e7eb); + background: var(--bg-gray, #f9fafb); + flex-shrink: 0; +} + +.sub-info-url-title { + font-size: 16px; + font-weight: 600; + color: var(--text-primary, #1f2937); +} + +.sub-info-url-footer { + display: flex; + align-items: center; + justify-content: flex-end; + padding: 20px; + border-top: 1px solid var(--border-light, #e5e7eb); + background: var(--bg-gray, #f9fafb); + flex-shrink: 0; + gap: 12px; +} + +.sub-info-url-content { + padding: 24px; + flex: 1; + overflow-y: auto; +} + +.sub-info-url-form-group { + display: flex; + flex-direction: column; + gap: 8px; +} + +.sub-info-url-form-group label { + font-size: 14px; + font-weight: 500; + color: var(--text-primary, #1f2937); +} + +.sub-info-url-form-textarea { + width: 100%; + min-height: 120px; + padding: 10px 12px; + border: 1px solid var(--border-light, #e5e7eb); + border-radius: var(--radius-sm, 4px); + background: var(--bg-white, white); + color: var(--text-primary, #1f2937); + font-size: 14px; + font-family: inherit; + resize: vertical; + transition: all var(--transition-fast, 0.2s); + box-sizing: border-box; +} + +.sub-info-url-form-textarea:focus { + outline: none; + border-color: var(--primary-color, #3b82f6); + box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.1); +} + +.sub-info-url-form-textarea::placeholder { + color: var(--text-secondary, #6b7280); +} + +.sub-info-url-btn { + padding: 8px 16px; + border: 1px solid var(--border-light, #e5e7eb); + border-radius: var(--radius-sm, 4px); + font-size: 14px; + font-weight: 500; + cursor: pointer; + transition: all var(--transition-fast, 0.2s); + white-space: nowrap; +} + +.sub-info-url-cancel-btn { + background: var(--bg-white, white); + color: var(--text-secondary, #6b7280); + border-color: var(--border-light, #e5e7eb); +} + +.sub-info-url-cancel-btn:hover { + background: var(--hover-bg, #f3f4f6); + color: var(--text-primary, #1f2937); +} + +.sub-info-url-submit-btn { + background: var(--primary-color, #3b82f6); + color: white; + border-color: var(--primary-color, #3b82f6); +} + +.sub-info-url-submit-btn:hover:not(:disabled) { + background: var(--primary-color, #3b82f6); + opacity: 0.9; +} + +.sub-info-url-submit-btn:disabled { + background: var(--bg-gray, #f9fafb); + color: var(--text-secondary, #6b7280); + border-color: var(--border-light, #e5e7eb); + cursor: not-allowed; +} + +:root[data-darkmode="true"] .sub_setting svg { + color: #e0e0e0; } :root[data-darkmode="true"] .text_show { @@ -127,6 +265,62 @@ background-color: #cc6262; } +:root[data-darkmode="true"] .sub-info-url-model { + background: var(--bg-white, #1f2937); + border-color: var(--border-light, #374151); +} + +:root[data-darkmode="true"] .sub-info-url-header, +:root[data-darkmode="true"] .sub-info-url-footer { + background: var(--bg-gray, #111827); + border-color: var(--border-light, #374151); +} + +:root[data-darkmode="true"] .sub-info-url-title { + color: var(--text-primary, #f3f4f6); +} + +:root[data-darkmode="true"] .sub-info-url-form-group label { + color: var(--text-primary, #f3f4f6); +} + +:root[data-darkmode="true"] .sub-info-url-form-textarea { + background: var(--bg-gray, #374151); + border-color: var(--border-light, #4b5563); + color: var(--text-primary, #f3f4f6); +} + +:root[data-darkmode="true"] .sub-info-url-form-textarea:focus { + border-color: var(--primary-color, #60a5fa); + box-shadow: 0 0 0 2px rgba(96, 165, 250, 0.1); +} + +:root[data-darkmode="true"] .sub-info-url-form-textarea::placeholder { + color: var(--text-secondary, #9ca3af); +} + +:root[data-darkmode="true"] .sub-info-url-cancel-btn { + background: var(--bg-white, #374151); + color: var(--text-secondary, #9ca3af); + border-color: var(--border-light, #4b5563); +} + +:root[data-darkmode="true"] .sub-info-url-cancel-btn:hover { + background: var(--hover-bg, #4b5563); + color: var(--text-primary, #f3f4f6); +} + +:root[data-darkmode="true"] .sub-info-url-submit-btn { + background: var(--primary-color, #3b82f6); + border-color: var(--primary-color, #3b82f6); +} + +:root[data-darkmode="true"] .sub-info-url-submit-btn:disabled { + background: var(--bg-gray, #4b5563); + color: var(--text-secondary, #9ca3af); + border-color: var(--border-light, #374151); +} + @media (max-width: 1024px) { .sub_tab, .sub_tab_show { font-size: 11px; @@ -152,10 +346,6 @@ min-width: 200px; } - .sub_setting img { - height: 18px !important; - } - .sub_div { gap: 4px; width: calc(100% - 16px); @@ -172,10 +362,6 @@ min-width: 180px !important; } - .sub_setting img { - height: 16px !important; - } - .sub_div { gap: 2px; width: calc(100% - 12px); @@ -192,24 +378,12 @@ min-width: 160px !important; } - .sub_setting img { - height: 14px !important; - } - .sub_div { width: calc(100% - 8px); margin: 0 4px; } } -.sub_div * { - flex-shrink: 0; -} - -.sub_div > span:first-child { - flex-shrink: 1; -} - /* Multiple providers container */ .sub_providers_container { display: flex; @@ -272,18 +446,6 @@ border-radius: 5px; } -.sub_provider_fill.progress_bar_high { - background-color: #9edd9e; -} - -.sub_provider_fill.progress_bar_medium { - background-color: #ffc99f; -} - -.sub_provider_fill.progress_bar_low { - background-color: #ffb9b9; -} - .sub_provider_name { position: relative; z-index: 1; @@ -304,18 +466,6 @@ border-color: #666666; } -:root[data-darkmode="true"] .sub_provider_fill.progress_bar_high { - background-color: #5da05d; -} - -:root[data-darkmode="true"] .sub_provider_fill.progress_bar_medium { - background-color: #cc8550; -} - -:root[data-darkmode="true"] .sub_provider_fill.progress_bar_low { - background-color: #cc6262; -} - :root[data-darkmode="true"] .sub_provider_name { color: #e0e0e0; } @@ -383,12 +533,20 @@
- - <%:Refresh%> - - - <%:Specify URL%> - + +
diff --git a/luci-app-openclash/luasrc/view/openclash/switch_dashboard.htm b/luci-app-openclash/luasrc/view/openclash/switch_dashboard.htm index db011d4f..84a94bb0 100644 --- a/luci-app-openclash/luasrc/view/openclash/switch_dashboard.htm +++ b/luci-app-openclash/luasrc/view/openclash/switch_dashboard.htm @@ -56,7 +56,7 @@ btn.value = '<%:Downloading File...%>'; XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "switch_dashboard")%>', {name: name, type : type}, function(x, status) { if ( x && x.status == 200 ) { - if ( status.download_state == "1" ) { + if ( status.download_state == "0" ) { if ( type == "Meta" ) { if ( name == "Dashboard" ) { document.getElementById("switch_dashboard_"+name).innerHTML = ''; diff --git a/luci-app-openclash/luasrc/view/openclash/tblsection.htm b/luci-app-openclash/luasrc/view/openclash/tblsection.htm index b0e5c1df..b12b66ee 100644 --- a/luci-app-openclash/luasrc/view/openclash/tblsection.htm +++ b/luci-app-openclash/luasrc/view/openclash/tblsection.htm @@ -33,23 +33,32 @@ end local a={} local e={} -for t,o in ipairs(fs.glob("/etc/openclash/config/*"))do - a=fs.stat(o) - if a then - e[t]={} - e[t].name=fs.basename(o) +if self.sectiontype == "dns_servers" then + table.insert(e, {name="nameserver", title="nameserver"}) + table.insert(e, {name="fallback", title="fallback"}) + table.insert(e, {name="default", title="default-nameserver"}) +else + for t,o in ipairs(fs.glob("/etc/openclash/config/*"))do + a=fs.stat(o) + if a then + e[t]={} + e[t].name=fs.basename(o) + end + end + + if not table_include(e, "all") then + table.insert(e, 1, {name="all"}) end end -if not table_include(e, "all") then - table.insert(e, 1, {name="all"}) -end - local cfg_name -if uci:get("openclash", "config", "config_path") then +if os.getenv("PATH_INFO") then + local cfg_path = string.match(os.getenv("PATH_INFO"), "/config/(.+)$") + cfg_name = cfg_path and string.match(cfg_path, "([^/]+)$") or nil +end +if not cfg_name and uci:get("openclash", "config", "config_path") then cfg_name = fs.basename(uci:get("openclash", "config", "config_path")) end - local sectiontype = "_"..self.config.."_"..string.match(self.sectiontype, "[%w_]+") or "self.sectiontype" -%> @@ -96,13 +105,14 @@ local sectiontype = "_"..self.config.."_"..string.match(self.sectiontype, "[%w_] #tab-header-<%=self.config%>-<%=self.sectiontype%> ul li{ flex: 1 1 0; min-width: 120px; + max-width: 100%; display: flex; align-items: center; justify-content: center; gap: 8px; padding: 12px 0; - height: 40px; - font-size: 12px; + height: 100%; + font-size: 13px; font-weight: 400; color: #64748b; background: transparent; @@ -128,7 +138,7 @@ local sectiontype = "_"..self.config.."_"..string.match(self.sectiontype, "[%w_] #tab-header-<%=self.config%>-<%=self.sectiontype%> ul li a{ display: block; width: 100%; - height: 130%; + height: 100%; text-align: center; text-decoration: none; background: none; @@ -232,9 +242,9 @@ local sectiontype = "_"..self.config.."_"..string.match(self.sectiontype, "[%w_]
- <% if self.title and #self.title > 0 then -%> - <%=self.title%> - <%- end %> + <%- if self.title and #self.title > 0 then -%> +

<%=self.title%>

+ <%- end -%> <%- if self.sortable then -%> <%- end -%> @@ -243,98 +253,119 @@ local sectiontype = "_"..self.config.."_"..string.match(self.sectiontype, "[%w_]
    <%- - if #e ~= 1 then - for t,o in ipairs(e)do - if o.name == cfg_name and cfg_name then - -%> -
  • <%=o.name%>
  • - <%- elseif not cfg_name and o.name == "all" then -%> -
  • ALL
  • - <%- elseif o.name == "all" then -%> -
  • ALL
  • + if self.sectiontype == "dns_servers" then + for i, tab in ipairs(e) do + if i == 1 then + -%> +
  • <%=tab.title%>
  • <%- else -%> -
  • <%=o.name%>
  • +
  • <%=tab.title%>
  • + <%- end -%> + <%- end -%> + <%- elseif #e ~= 1 then + for i, tab in ipairs(e) do + if tab.name == cfg_name and cfg_name then + -%> +
  • <%=tab.name%>
  • + <%- elseif not cfg_name and tab.name == "all" then -%> +
  • ALL
  • + <%- elseif tab.name == "all" then -%> +
  • ALL
  • + <%- else -%> +
  • <%=tab.name%>
  • <%- end -%> <%- end -%> <%- else -%> -
  • ALL
  • +
  • ALL
  • <%- end -%>
- <%- for t,o in ipairs(e)do - if #e ~= 1 and o.name == cfg_name and cfg_name then + <%- for i, tab in ipairs(e) do + if self.sectiontype == "dns_servers" then + if tab.name == "nameserver" then -%> -
- <%- elseif #e ~= 1 and o.name == "all" and not cfg_name then -%> -
+
+ <%- else -%> +
+ <%- end -%> + <%- elseif #e ~= 1 and tab.name == cfg_name and cfg_name then -%> +
+ <%- elseif #e ~= 1 and tab.name == "all" and not cfg_name then -%> +
<%- elseif #e == 1 then -%> -
+
<%- else -%> -
+
<%- end -%> - - +
+ <%- if not self.anonymous then -%> <%- if self.sectionhead then -%> - + <%- else -%> <%- end -%> <%- end -%> <%- for i, k in pairs(self.children) do if not k.optional then -%> <%- if i == 1 then -%> - + <%- end -%> - <%- count = count + 1; end; end; if self.sortable then -%> - + <%- end; if self.extedit or self.addremove then -%> - + <%- count = count + 1; end -%> - + <%- if not self.anonymous then -%> <%- if self.sectiondesc then -%> - + <%- else -%> - + <%- end -%> <%- end -%> <%- for i, k in pairs(self.children) do if not k.optional then -%> - + <%- if i == 1 then -%> + + <%- end -%> + <%- end; end; if self.sortable then -%> - + <%- end; if self.extedit or self.addremove then -%> - + <%- end -%> <%- local isempty = true local num = 1 for i, k in ipairs(self:cfgsections()) do - section = k - while true do - if not uci:get("openclash", section, "config") then - uci:set("openclash", section, "config", "all") - uci:save("openclash") - end - if uci:get("openclash", section, "config") ~= o.name then - break - end + local section = k + local should_render = false + local section_name + if self.sectiontype == "dns_servers" then + section_name = uci:get("openclash", section, "group") + else + section_name = uci:get("openclash", section, "config") + end + if section_name == tab.name then + should_render = true + end + if should_render then isempty = false scope = { valueheader = "cbi/cell_valueheader", valuefooter = "cbi/cell_valuefooter" } -%> - - <% if not self.anonymous then -%> + + <%- if not self.anonymous then -%> - <%- end %> - <%- for k, node in ipairs(self.children) do @@ -344,14 +375,14 @@ local sectiontype = "_"..self.config.."_"..string.match(self.sectiontype, "[%w_] end -%> <%- if self.sortable then -%> - <%- end -%> <%- if self.extedit or self.addremove then -%> - <%- end -%> <%- - break end -%> <%- end -%> <%- if isempty then -%> - - - + + + <%- end -%>
<%=self.sectionhead%><%=self.sectionhead%> <%:Serial Number%><%:Serial Number%>> + > <%- if k.titleref then -%><%- end -%> <%-=k.title-%> <%- if k.titleref then -%><%- end -%> <%:Sort%><%:Sort%><%:Edit%><%:Edit%>
<%=self.sectiondesc%><%=self.sectiondesc%>><%=k.description%>><%=k.description%>

<%=(type(self.sectiontitle) == "function") and self:sectiontitle(section) or k%>

+ <%- end -%> +

<%=num%>

- <% num = num + 1 -%> + <%- num = num + 1 -%>
+ + <%- if self.extedit then -%> onclick="location.href='<%=self:extedit(section)%>';return switch_to_tab<%=sectiontype%>()" <%- end %> alt="<%:Edit%>" title="<%:Edit%>" /> - <%- end; if self.addremove then %> + <%- end; if self.addremove then -%> <%- end -%>

<%:This section contains no values yet%>
<%:This section contains no values yet%>
- <% if self.error then %> + <%- if self.error then -%>
-
    <% for _, c in pairs(self.error) do for _, e in ipairs(c) do -%> +
      <%- for _, c in pairs(self.error) do for _, e in ipairs(c) do -%>
    • <%=pcdata(e):gsub("\n","
      ")%>
    • - <%- end end %>
    + <%- end end -%>
- <% end %> + <%- end -%> <%- if self.addremove then -%> - <% if self.template_addremove then include(self.template_addremove) else -%> + <%- if self.template_addremove then include(self.template_addremove) else -%>
- <% if self.anonymous then %> - - <% else %> + <%- if self.anonymous then -%> + + <%- else -%> <% if self.invalid_cts then -%>
<% end %> - + <% if self.invalid_cts then -%>
<%:Invalid%>
<%- end %> - <% end %> + <%- end %>
- <%- end %> + <%- end -%> <%- end -%>
<%- end -%> + <%- if self.addremove then -%> + + <%- end -%>
@@ -452,17 +485,20 @@ local sectiontype = "_"..self.config.."_"..string.match(self.sectiontype, "[%w_] return luminance < 128; }; - function switch_to_tab<%=sectiontype%>(type){ + function switch_to_tab<%=sectiontype%>(tab_name){ if(titles<%=sectiontype%>.length != divs<%=sectiontype%>.length) return; - if ( type == 'create' ) { - localStorage.setItem("titles<%=sectiontype%>", 0); - } else { - for(var j=0; j < titles<%=sectiontype%>.length; j++){ - if(titles<%=sectiontype%>[j].className === 'cbi-tab'){ - localStorage.setItem("titles<%=sectiontype%>", j); - break; - } + for(var j=0; j < titles<%=sectiontype%>.length; j++){ + if(titles<%=sectiontype%>[j].className === 'cbi-tab'){ + localStorage.setItem("titles<%=sectiontype%>", j); + break; + } + } + + if (tab_name) { + var name = document.getElementById('cbi.cts.tagname.<%=self.config%>.<%=self.sectiontype%>'); + if (name) { + name.value = tab_name; } } diff --git a/luci-app-openclash/luasrc/view/openclash/tblsection_dns.htm b/luci-app-openclash/luasrc/view/openclash/tblsection_dns.htm deleted file mode 100644 index 7208963a..00000000 --- a/luci-app-openclash/luasrc/view/openclash/tblsection_dns.htm +++ /dev/null @@ -1,488 +0,0 @@ -<%- -local rowcnt = 1 -local uci = require("luci.model.uci").cursor() -local fs = require "luci.openclash" - -function rowstyle() - rowcnt = rowcnt + 1 - return (rowcnt % 2) + 1 -end - -function width(o) - if o.width then - if type(o.width) == 'number' then - return ' style="width:%dpx"' % o.width - end - return ' style="width:%s"' % o.width - end - return '' -end - -local head_width -local e={} -table.insert(e, {group="nameserver", title="NameServer"}) -table.insert(e, {group="fallback", title="FallBack"}) -table.insert(e, {group="default", title="Default-NameServer"}) - -local sectiontype = "_"..self.config.."_"..string.match(self.sectiontype, "[%w_]+") or "self.sectiontype" --%> - - - - -
- <% if self.title and #self.title > 0 then -%> - <%=self.title%> - <%- end %> - <%- if self.sortable then -%> - - <%- end -%> -
<%=self.description%>
- <%- local count = 0 -%> -
-
    - <%- for i, tab in ipairs(e) do -%> - <%- if i == 1 then -%> -
  • <%=tab.title%>
  • - <%- else -%> -
  • <%=tab.title%>
  • - <%- end -%> - <%- end -%> -
-
-
- <%- for t,o in ipairs(e)do - if o.group == "nameserver" then - -%> -
- <%- else -%> -
- <%- end -%> - - - <%- if not self.anonymous then -%> - <%- if self.sectionhead then -%> - - <%- else -%> - - <%- end -%> - <%- end -%> - <%- for i, k in pairs(self.children) do if not k.optional then -%> - <%- if i == 1 then -%> - - <%- end -%> - - <%- count = count + 1; end; end; if self.sortable then -%> - - <%- end; if self.extedit or self.addremove then -%> - - <%- count = count + 1; end -%> - - - <%- if not self.anonymous then -%> - <%- if self.sectiondesc then -%> - - <%- else -%> - - <%- end -%> - <%- end; if self.extedit or self.addremove then -%> - - <%- end -%> - <%- for i, k in pairs(self.children) do if not k.optional then -%> - - <%- end; end; if self.sortable then -%> - - <%- end; if self.extedit or self.addremove then -%> - - <%- end -%> - - <%- local isempty = true - local num = 1 - for i, k in ipairs(self:cfgsections()) do - section = k - local section_group = fs.uci_get_config(section, "group") - if section_group == o.group then - isempty = false - scope = { valueheader = "cbi/cell_valueheader", valuefooter = "cbi/cell_valuefooter" } - -%> - - <% if not self.anonymous then -%> - - <%- end %> - - <%- - for k, node in ipairs(self.children) do - if not node.optional then - node:render(section, scope or {}) - end - end - -%> - <%- if self.sortable then -%> - - <%- end -%> - - <%- if self.extedit or self.addremove then -%> - - <%- end -%> - - <%- end -%> - <%- end -%> - - <%- if isempty then -%> - - - - <%- end -%> -
<%=self.sectionhead%> <%:Serial Number%>> - <%- if k.titleref then -%><%- end -%> - <%-=k.title-%> - <%- if k.titleref then -%><%- end -%> - <%:Sort%><%:Edit%>
<%=self.sectiondesc%>><%=k.description%>

<%=(type(self.sectiontitle) == "function") and self:sectiontitle(section) or k%>

-

<%=num%>

- <% num = num + 1 -%> -
- - - - <%- if self.extedit then -%> - onclick="location.href='<%=self.extedit:format(section)%>';return switch_to_tab<%=sectiontype%>()" - <%- elseif type(self.extedit) == "function" then - %> onclick="location.href='<%=self:extedit(section)%>';return switch_to_tab<%=sectiontype%>()" - <%- end - %> alt="<%:Edit%>" title="<%:Edit%>" /> - <%- end; if self.addremove then %> - - <%- end -%> -

<%:This section contains no values yet%>
- - <% if self.error then %> -
-
    <% for _, c in pairs(self.error) do for _, e in ipairs(c) do -%> -
  • <%=pcdata(e):gsub("\n","
    ")%>
  • - <%- end end %>
-
- <% end %> - - <%- if self.addremove then -%> - <% if self.template_addremove then include(self.template_addremove) else -%> -
- <% if self.anonymous then %> - - <% else %> - <% if self.invalid_cts then -%>
<% end %> - - - - <% if self.invalid_cts then -%> -
<%:Invalid%>
- <%- end %> - <% end %> -
- <%- end %> - <%- end -%> -
- <%- end -%> -
-
- - - \ No newline at end of file diff --git a/luci-app-openclash/luasrc/view/openclash/toolbar_show.htm b/luci-app-openclash/luasrc/view/openclash/toolbar_show.htm index 7546fa80..0fc7fa77 100644 --- a/luci-app-openclash/luasrc/view/openclash/toolbar_show.htm +++ b/luci-app-openclash/luasrc/view/openclash/toolbar_show.htm @@ -144,7 +144,7 @@ function restore_config(btn) { - btn.value = '<%:Restore Default Config%>'; + btn.value = '<%:Restore Default%>'; btn.disabled = true; var r = confirm("<%:Are you sure want to restore the default config?%>") if (r == true) { diff --git a/luci-app-openclash/luasrc/view/openclash/update.htm b/luci-app-openclash/luasrc/view/openclash/update.htm index bf9449b0..9837d703 100644 --- a/luci-app-openclash/luasrc/view/openclash/update.htm +++ b/luci-app-openclash/luasrc/view/openclash/update.htm @@ -1,146 +1,132 @@
- - - - - - - - + + + + + + + + + + +
-

- <%:Note: if the update fails, you can manually download and upload%> -

-
<%:Compiled Version%> - - <%:Release Branch%><%:Smart Core%> (?)
+

+ <%:Note: if the update fails, you can manually download and upload%> +

+
<%:Compiled Version%> + + <%:Release Branch%> + + <%:Smart Core%> + + + + + + + + + +
- - + + - + + +
-

- <%:Core Update%> -

-
+
+

+ <%:Core Update%> +

+
<%:CPU Architecture%><%:Collecting data...%> <%:Last Check Update%><%:Collecting data...%>
-

- <%:Core path:%>/etc/openclash/core/clash_meta -

-
+

+ <%:Core path:%>/etc/openclash/core/clash_meta +

+
[Meta] <%:Current Core%><%:Collecting data...%>[Meta] <%:Latest Core%><%:Collecting data...%>
<%:Update Core%><%:Collecting data...%><%:Download Latest Core%><%:Collecting data...%>
- - - -
-

- <%:Client Update%> -

-
<%:Current Client%><%:Collecting data...%><%:Latest Client%><%:Collecting data...%>
<%:Update Client%><%:Collecting data...%><%:Download Latest Client%><%:Collecting data...%>
-
-
- - - - - - -
-

- <%:Collecting data...%> -

-
-

- <%:Collecting data...%> -

-
-

- <%:Collecting data...%> -

-
-
-
- - - - - + + + +
-

- <%:Backup Section%> -

-
-

- <%:Collecting data...%> -

-
-

- <%:Collecting data...%> -

-
-

- <%:Collecting data...%> -

-
+

+ <%:Client Update%> +

+
<%:Current Client%><%:Collecting data...%><%:Latest Client%><%:Collecting data...%>
<%:Update Client%><%:Collecting data...%><%:Download Latest Client%><%:Collecting data...%>
+
+
+ - - - + + + +
-

- <%:Collecting data...%> -

-
-

- <%:Collecting data...%> -

-
-

- <%:Collecting data...%> -

-
+
+ + + <%:Collecting data...%> + +
+
+ <%:Collecting data...%> + + <%:Collecting data...%> + + <%:Collecting data...%> +
@@ -160,11 +146,7 @@ var ma_op_up = document.getElementById('ma_op_up'); var restore = document.getElementById('restore'); var backup = document.getElementById('backup'); - var backup_ex_core = document.getElementById('backup_ex_core'); - var backup_core_only = document.getElementById('backup_core_only'); - var backup_config_only = document.getElementById('backup_config_only'); - var backup_rule_only = document.getElementById('backup_rule_only'); - var backup_proxy_only = document.getElementById('backup_proxy_only'); + var backup_select = document.getElementById('BACKUP_SELECT'); var one_key_update_cdn = document.getElementById('one_key_update_cdn'); var remove_core = document.getElementById('remove_core'); var release_branch = document.getElementById('RELEASE_BRANCH'); @@ -173,29 +155,24 @@ op_up.innerHTML = ''; ma_core_meta_up.innerHTML = ''; ma_op_up.innerHTML = ''; - restore.innerHTML = ''; + restore.innerHTML = ''; one_key_update_cdn.innerHTML = ''; remove_core.innerHTML = ''; - backup.innerHTML = ''; - backup_ex_core.innerHTML = ''; - backup_core_only.innerHTML = ''; - backup_config_only.innerHTML = ''; - backup_rule_only.innerHTML = ''; - backup_proxy_only.innerHTML = ''; + backup.innerHTML = ''; XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "update_info")%>', null, function(x, status) { if ( x && x.status == 200 ) { if ( status.corever && status.corever != "0" && status.corever != "" ) { - core_version.value = status.corever; + core_version.value = status.corever; } else { - core_version.value = "0"; + core_version.value = "0"; } if ( status.release_branch && status.release_branch != "" ) { - release_branch.value = status.release_branch; + release_branch.value = status.release_branch; } else { - release_branch.value = "master"; + release_branch.value = "master"; } if ( status.smart_enable && status.smart_enable != "" ) { smart_enable.value = status.smart_enable; @@ -215,190 +192,169 @@ }); function updateStatus(x, status) { - if ( x && x.status == 200 ) { - cpu_model.innerHTML = status.coremodel ? ""+status.coremodel+"" : "<%:Model Not Found%>"; - if ( status.upchecktime != "1" ) { - checktime.innerHTML = ""+status.upchecktime+""; - } - else { - checktime.innerHTML = "<%:Check Failed%>"; - } - if ( status.coremetacv == "0" ) { - core_meta_cv.innerHTML = "<%:Unknown%>"; - } - else { - core_meta_cv.innerHTML = ""+status.coremetacv+""; - } - var coremetalvis = status.corelv; - if (coremetalvis != status.coremetacv && coremetalvis != "" && coremetalvis != "loading...") { - core_meta_lv.innerHTML = ""+coremetalvis+" <%:%>"; - } - else if (coremetalvis != "" && coremetalvis == status.coremetacv && coremetalvis != "loading...") { - core_meta_lv.innerHTML = ""+coremetalvis+""; - } - else if (coremetalvis == "loading...") { - core_meta_lv.innerHTML = "<%:Getting Last Version...%>"; - } - else { - core_meta_lv.innerHTML = "<%:Unknown%>"; - } - var oplv = status.oplv; - op_cv.innerHTML = status.opcv != "0" ? ""+status.opcv+"" : "<%:Unknown%>"; - if (oplv != "" && oplv != "loading..." && status.opcv != "0") { - function compareVersions(v1, v2) { - var ver1 = v1.replace(/^v/, '').split('.'); - var ver2 = v2.replace(/^v/, '').split('.'); + if ( x && x.status == 200 ) { + cpu_model.innerHTML = status.coremodel ? ""+status.coremodel+"" : "<%:Model Not Found%>"; - var maxLen = Math.max(ver1.length, ver2.length); - while (ver1.length < maxLen) ver1.push('0'); - while (ver2.length < maxLen) ver2.push('0'); + if ( status.upchecktime != "1" ) { + checktime.innerHTML = ""+status.upchecktime+""; + } else { + checktime.innerHTML = "<%:Check Failed%>"; + } + if ( status.coremetacv == "0" ) { + core_meta_cv.innerHTML = "<%:Unknown%>"; + } else { + core_meta_cv.innerHTML = ""+status.coremetacv+""; + } - for (var i = 0; i < maxLen; i++) { - var num1 = parseInt(ver1[i], 10); - var num2 = parseInt(ver2[i], 10); - if (num1 > num2) return 1; - if (num1 < num2) return -1; - } - return 0; - } + var coremetalvis = status.corelv; - if (compareVersions(oplv, status.opcv) > 0) { - op_lv.innerHTML = ""+oplv+" <%:%>"; - } else { - op_lv.innerHTML = ""+oplv+""; - } - } - else if (oplv != "" && oplv != "loading...") { - op_lv.innerHTML = ""+oplv+""; - } - else if (oplv == "loading...") { - op_lv.innerHTML = "<%:Getting Last Version...%>"; - } - else { - op_lv.innerHTML = "<%:Unknown%>"; - } - } - } + if (coremetalvis != status.coremetacv && coremetalvis != "" && coremetalvis != "loading...") { + core_meta_lv.innerHTML = ""+coremetalvis+" <%:%>"; + } else if (coremetalvis != "" && coremetalvis == status.coremetacv && coremetalvis != "loading...") { + core_meta_lv.innerHTML = ""+coremetalvis+""; + } else if (coremetalvis == "loading...") { + core_meta_lv.innerHTML = "<%:Getting Last Version...%>"; + } else { + core_meta_lv.innerHTML = "<%:Unknown%>"; + } - XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "update")%>', null, updateStatus); + var oplv = status.oplv; + op_cv.innerHTML = status.opcv != "0" ? ""+status.opcv+"" : "<%:Unknown%>"; - XHR.poll(10, '<%=luci.dispatcher.build_url("admin", "services", "openclash", "update")%>', null, updateStatus); + if (oplv != "" && oplv != "loading..." && status.opcv != "0") { + function compareVersions(v1, v2) { + var ver1 = v1.replace(/^v/, '').split('.'); + var ver2 = v2.replace(/^v/, '').split('.'); + + var maxLen = Math.max(ver1.length, ver2.length); + while (ver1.length < maxLen) ver1.push('0'); + while (ver2.length < maxLen) ver2.push('0'); + + for (var i = 0; i < maxLen; i++) { + var num1 = parseInt(ver1[i], 10); + var num2 = parseInt(ver2[i], 10); + if (num1 > num2) return 1; + if (num1 < num2) return -1; + } + return 0; + } + + if (compareVersions(oplv, status.opcv) > 0) { + op_lv.innerHTML = ""+oplv+" <%:%>"; + } else { + op_lv.innerHTML = ""+oplv+""; + } + } else if (oplv != "" && oplv != "loading...") { + op_lv.innerHTML = ""+oplv+""; + } else if (oplv == "loading...") { + op_lv.innerHTML = "<%:Getting Last Version...%>"; + } else { + op_lv.innerHTML = "<%:Unknown%>"; + } + } + } + + XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "update")%>', null, updateStatus); + + XHR.poll(10, '<%=luci.dispatcher.build_url("admin", "services", "openclash", "update")%>', null, updateStatus); function handleStartLog(x, status) { - if ( x && x.status == 200 ) { - if ( status.startlog == "\n" || status.startlog == "" || status.startlog == "##FINISH##\n" ) { - var rdmdl = Math.floor(Math.random()*3)+1; - if(rdmdl == 1) { - update_tip.innerHTML = '<%:Note: if the update fails, you can manually download and upload%>'; - } - else if(rdmdl == 2) { - update_tip.innerHTML = '<%:Note: the client may not support update, because the firmware with squashfs format will not release flash space after updating%>'; - } - else if(rdmdl == 3) { - update_tip.innerHTML = '<%:Note: options will auto-save when you click to update or download%>'; - } - } - else if ( status.startlog.match("level=fatal") || status.startlog.indexOf("FTL [Config]") != "-1" ) { - XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "del_start_log")%>', null, function(x) {}); - if ( status.startlog.match("level=fatal") ) { - alert('<%:OpenClash Start Failed%> :\n\n' + status.startlog.split('msg=')[1]); - } - else { - alert('<%:OpenClash Start Failed%> :\n\n' + status.startlog.split('FTL [Config] ')[1]); - } - } - else if ( status.startlog != "\n" && status.startlog != "" && status.startlog != "##FINISH##\n" ) { - if ( status.startlog.match("Tip:") || status.startlog.match("提示:")) { - update_tip.innerHTML = ''+status.startlog+''; - } - else if ( status.startlog.match("Error:") || status.startlog.match("错误:")) { - update_tip.innerHTML = ''+status.startlog+''; - } - else if ( status.startlog.match("Warning:") || status.startlog.match("警告:")) { - update_tip.innerHTML = ''+status.startlog+''; - } - else if ( status.startlog.match("Watchdog:") || status.startlog.match("守护程序:")) { - update_tip.innerHTML = ''+status.startlog+''; - } - else { - update_tip.innerHTML = ''+status.startlog+''; - } - } - } - } + if ( x && x.status == 200 ) { + if ( status.startlog == "\n" || status.startlog == "" || status.startlog == "##FINISH##\n" ) { + var rdmdl = Math.floor(Math.random()*3)+1; + if(rdmdl == 1) { + update_tip.innerHTML = '<%:Note: if the update fails, you can manually download and upload%>'; + } + else if(rdmdl == 2) { + update_tip.innerHTML = '<%:Note: the client may not support update, because the firmware with squashfs format will not release flash space after updating%>'; + } + else if(rdmdl == 3) { + update_tip.innerHTML = '<%:Note: options will auto-save when you click to update or download%>'; + } + } else if ( status.startlog.match("level=fatal")) { + XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "del_start_log")%>', null, function(x) {}); + if ( status.startlog.match("level=fatal") ) { + alert('<%:OpenClash Start Failed%> :\n\n' + status.startlog.split('msg=')[1]); + } + } else if ( status.startlog != "\n" && status.startlog != "" && status.startlog != "##FINISH##\n" ) { + for (var levelKey in window.levelTranslations) { + var translatedText = '[' + window.levelTranslations[levelKey] + ']'; + if (status.startlog.match(translatedText)) { + update_tip.innerHTML = '' + status.startlog + ''; + return; + } + } + update_tip.innerHTML = '' + status.startlog + ''; + } + } + } - XHR.poll(3, '<%=luci.dispatcher.build_url("admin", "services", "openclash", "startlog")%>', null, handleStartLog); + XHR.poll(3, '<%=luci.dispatcher.build_url("admin", "services", "openclash", "startlog")%>', null, handleStartLog); - function core_update(btn,type) - { - var v = core_version.value; - var r = release_branch.value; + function core_update(btn,type) { + var v = core_version.value; + var r = release_branch.value; var s = smart_enable.value; XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "save_corever_branch")%>', {core_ver: v, release_branch: r, smart_enable: s}, function(x, status) { if (x && x.status == 200) { XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "coreupdate")%>', {core_type: type}, function(x, status) { - btn.value = '<%:Check And Update%>'; + btn.value = '<%:Check And Update%>'; btn.disabled = false; return false; }); } }); - } + } - function op_update(btn) - { - var v = core_version.value; - var r = release_branch.value; + function op_update(btn) { + var v = core_version.value; + var r = release_branch.value; var s = smart_enable.value; XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "save_corever_branch")%>', {core_ver: v, release_branch: r, smart_enable: s}, function(x, status) { if (x && x.status == 200) { XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "opupdate")%>', null, function(x, status) { - btn.value = '<%:Check And Update%>'; + btn.value = '<%:Check And Update%>'; btn.disabled = false; return false; }); } }); - } + } - function ma_core_update(btn,type) - { - var v = core_version.value; + function ma_core_update(btn,type) { + var v = core_version.value; var r = release_branch.value; var s = smart_enable.value; XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "save_corever_branch")%>', {core_ver: v, release_branch: r, smart_enable: s}, function(x, status) { - if (x && x.status == 200) { - btn.value = '<%:Download%>'; - btn.disabled = false; - XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "update_ma")%>', status.corever, function(x, status) { - if ( x && x.status == 200 ) { - if ( status.corever != "0" ) { - if (type == "Meta") { - if (s == "1") { - url4='https://raw.githubusercontent.com/vernesong/OpenClash/core/'+r+'/smart/clash-'+status.corever+'.tar.gz'; - window.location.href=url4; - } - else { - url4='https://raw.githubusercontent.com/vernesong/OpenClash/core/'+r+'/meta/clash-'+status.corever+'.tar.gz'; - window.location.href=url4; + if (x && x.status == 200) { + btn.value = '<%:Download%>'; + btn.disabled = false; + XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "update_ma")%>', status.corever, function(x, status) { + if ( x && x.status == 200 ) { + if ( status.corever != "0" ) { + if (type == "Meta") { + if (s == "1") { + url4='https://raw.githubusercontent.com/vernesong/OpenClash/core/'+r+'/smart/clash-'+status.corever+'.tar.gz'; + window.location.href=url4; + } else { + url4='https://raw.githubusercontent.com/vernesong/OpenClash/core/'+r+'/meta/clash-'+status.corever+'.tar.gz'; + window.location.href=url4; + } + } + } else { + alert('<%:No Compiled Version is Selected, Please Select on The Top and Try Again!%>') } } - } - else { - alert('<%:No Compiled Version is Selected, Please Select on The Top and Try Again!%>') - } + }); + return false; } - }); - return false; - } - }); - } + }); + } - function ma_op_update(btn) - { - btn.value = '<%:Download%>'; - btn.disabled = false; - var v = core_version.value; + function ma_op_update(btn) { + btn.value = '<%:Download%>'; + btn.disabled = false; + var v = core_version.value; var r = release_branch.value; var s = smart_enable.value; XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "save_corever_branch")%>', {core_ver: v, release_branch: r, smart_enable: s}, function(x, status) { @@ -409,108 +365,56 @@ if ( oplv != "" && oplv != "loading..." ) { if (status.pkg_type == "apk") { url2='https://raw.githubusercontent.com/vernesong/OpenClash/package/'+r+'/luci-app-openclash-'+oplv+'.apk'; - } - else { + } else { url2='https://raw.githubusercontent.com/vernesong/OpenClash/package/'+r+'/luci-app-openclash_'+oplv+'_all.ipk'; } window.location.href=url2; - } - else { + } else { alert('<%:Failed to get the latest version. Please try again later!%>') } } }); } - }); - return false; - } + }); + return false; + } - function remove_all_core(btn) - { - btn.value = '<%:Remove Core%>'; - btn.disabled = true; - var r = confirm("<%:Are you sure want to remove all core files?%>") - if (r == true) { - XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "remove_all_core")%>', null, function(x, status) { - if ( x && x.status == 200 ) { - alert('<%:Remove succeeded!%>') - } - else { - alert('<%:Remove failed!%>') - } - }); - } else { - } - btn.disabled = false; - return false; - } - - function backup_all_file(btn) - { - btn.value = '<%:Backup OpenClash%>'; + function remove_all_core(btn) { + btn.value = '<%:Remove Core%>'; btn.disabled = true; - window.location.href='<%="backup"%>'; + var r = confirm("<%:Are you sure want to remove all core files?%>") + if (r == true) { + XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "remove_all_core")%>', null, function(x, status) { + if ( x && x.status == 200 ) { + alert('<%:Remove succeeded!%>') + } else { + alert('<%:Remove failed!%>') + } + }); + } btn.disabled = false; return false; - } + } - function backup_no_core(btn) - { - btn.value = '<%:Backup Exclude Cores%>'; + function backup_file(btn) { + btn.value = '<%:Backup File%>'; btn.disabled = true; - window.location.href='<%="backup_ex_core"%>'; + window.location.href=backup_select.value; btn.disabled = false; return false; - } + } - function backup_only_core(btn) - { - btn.value = '<%:Backup Core%>'; - btn.disabled = true; - window.location.href='<%="backup_only_core"%>'; - btn.disabled = false; - return false; - } - - function backup_only_config(btn) - { - btn.value = '<%:Backup Config%>'; - btn.disabled = true; - window.location.href='<%="backup_only_config"%>'; - btn.disabled = false; - return false; - } - - function backup_only_rule(btn) - { - btn.value = '<%:Backup Rule Provider%>'; - btn.disabled = true; - window.location.href='<%="backup_only_rule"%>'; - btn.disabled = false; - return false; - } - - function backup_only_proxy(btn) - { - btn.value = '<%:Backup Proxy Provider%>'; - btn.disabled = true; - window.location.href='<%="backup_only_proxy"%>'; - btn.disabled = false; - return false; - } - - function all_one_key_update_cdn(btn) - { - var v = core_version.value; + function all_one_key_update_cdn(btn) { + var v = core_version.value; var r = release_branch.value; var s = smart_enable.value; XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "save_corever_branch")%>', {core_ver: v, release_branch: r, smart_enable: s}, function(x, status) { if (x && x.status == 200) { - btn.value = '<%:Check Update%>'; + btn.value = '<%:Check Update%>'; btn.disabled = false; return select_git_cdn("one_key_update"); } }); - } + } //]]> diff --git a/luci-app-openclash/po/es/openclash.es.po b/luci-app-openclash/po/es/openclash.es.po index d9349811..4e37625a 100644 --- a/luci-app-openclash/po/es/openclash.es.po +++ b/luci-app-openclash/po/es/openclash.es.po @@ -5,8 +5,32 @@ msgid "OpenClash" msgstr "OpenClash" -msgid "A Clash Client For OpenWrt" -msgstr "Un cliente Clash para OpenWrt compatible con Shadowsocks(R), Vmess, Trojan, Snell y otros protocolos, que permite el enrutamiento por reglas de forma flexible." +msgid "A Mihomo(Clash) Client For OpenWrt" +msgstr "Un cliente Mihomo(Clash) para OpenWrt compatible con Shadowsocks(R), Vmess, Trojan, Snell y otros protocolos, que permite el enrutamiento flexible por reglas." + +msgid "Error" +msgstr "Error" + +msgid "Tip" +msgstr "Consejo" + +msgid "Warning" +msgstr "Advertencia" + +msgid "Watchdog" +msgstr "Monitor" + +msgid "Info" +msgstr "Info" + +msgid "Debug" +msgstr "Depuración" + +msgid "Silent" +msgstr "Silencioso" + +msgid "Fatal" +msgstr "Fatal" msgid "Plugin Settings" msgstr "Ajustes del plugin" @@ -20,18 +44,6 @@ msgstr "Resumen" msgid "Overwrite Settings" msgstr "Sobrescribir ajustes" -msgid "Rule Providers Append" -msgstr "Añadir proveedores de reglas" - -msgid "Game Rules Append" -msgstr "Añadir reglas de juegos" - -msgid "Other Rule Providers Append" -msgstr "Añadir otros proveedores de reglas" - -msgid "Custom Rule Providers Append" -msgstr "Añadir proveedores de reglas personalizados" - msgid "General Settings" msgstr "Ajustes generales" @@ -120,16 +132,16 @@ msgid "Select Mode" msgstr "Seleccionar modo" msgid "redir-host" -msgstr "Modo Redir-Host (compatible)" +msgstr "Redir-Host (compatible)" msgid "fake-ip" -msgstr "Modo Fake-IP (mejorado)" +msgstr "Fake-IP (mejorado)" msgid "redir-host(tun mode)" -msgstr "Modo Redir-Host (TUN)" +msgstr "Redir-Host (TUN)" msgid "fake-ip(tun mode)" -msgstr "Modo Fake-IP (TUN)" +msgstr "Fake-IP (TUN)" msgid "redir-host-mix(tun mix mode)" msgstr "Modo Redir-Host (TUN mixto) [UDP-TUN, TCP-reenvío]" @@ -138,7 +150,7 @@ msgid "fake-ip-mix(tun mix mode)" msgstr "Modo Fake-IP (TUN mixto) [UDP-TUN, TCP-reenvío]" msgid "Select Mode For OpenClash Work, Try Flush DNS Cache If Network Error" -msgstr "Selecciona el modo de ejecución; si hay errores de red, prueba a vaciar la caché DNS" +msgstr "Selecciona el modo de funcionamiento de OpenClash. Si hay errores de red, intenta vaciar la caché DNS." msgid "Proxy Mode" msgstr "Modo de proxy" @@ -213,7 +225,7 @@ msgid "Dnsmasq Redirect" msgstr "Redirección mediante Dnsmasq" msgid "Firewall Redirect" -msgstr "Redirección mediante firewall" +msgstr "Redirección mediante cortafuegos" msgid "Custom DNS Setting" msgstr "DNS ascendente personalizado" @@ -287,8 +299,8 @@ msgstr "Permitir resolución DNS IPv6" msgid "Enable to Resolve IPv6 DNS Requests" msgstr "Permite procesar peticiones DNS de tipo IPv6" -msgid "Rules Setting" -msgstr "Ajustes de reglas" +msgid "Common Setting" +msgstr "Configuración común" msgid "Config Manage" msgstr "Gestión de configuraciones" @@ -470,21 +482,6 @@ msgstr "Actualizar lista Chnroute" msgid "Chnroute Update" msgstr "Actualización de Chnroute" -msgid "Other Rules Update(Only in Use)" -msgstr "Actualización de reglas de terceros (solo si se están usando)" - -msgid "Enable Other Rules" -msgstr "Habilitar reglas de terceros" - -msgid "Use Other Rules" -msgstr "Sobrescribe las reglas del archivo de configuración (excepto personalizadas). Debes crear antes la configuración más abajo." - -msgid "lhie1 Rules" -msgstr "Reglas lhie1" - -msgid "Auto Update Other Rules" -msgstr "La actualización automática solo funciona si se están usando reglas de terceros" - msgid "Update Time (Every Week)" msgstr "Hora de actualización (cada semana)" @@ -512,33 +509,6 @@ msgstr "Cada sábado" msgid "Every Sunday" msgstr "Cada domingo" -msgid "Update Other Rules" -msgstr "Actualizar reglas de terceros" - -msgid "GlobalTV" -msgstr "Streaming internacional" - -msgid "AsianTV" -msgstr "Streaming asiático" - -msgid "CN Mainland TV" -msgstr "Streaming de China continental" - -msgid "Proxy" -msgstr "Tráfico que debe ir por proxy" - -msgid "Apple" -msgstr "Servicios de Apple" - -msgid "Google FCM" -msgstr "Google FCM (notificaciones)" - -msgid "Scholar" -msgstr "Sitios académicos" - -msgid "Microsoft" -msgstr "Servicios de Microsoft" - msgid "Netflix" msgstr "Netflix" @@ -551,27 +521,6 @@ msgstr "Bilibili" msgid "Bahamut" msgstr "Bahamut" -msgid "Steam" -msgstr "Steam (no incluye descargas)" - -msgid "Netease Music" -msgstr "Netease Music" - -msgid "Speedtest" -msgstr "Speedtest (tráfico de prueba)" - -msgid "AdBlock" -msgstr "Publicidad (AdBlock)" - -msgid "Domestic" -msgstr "Tráfico doméstico" - -msgid "Others" -msgstr "Tráfico no coincidente con reglas" - -msgid "Choose Proxy Groups, Base On Your Config File" -msgstr "Selecciona los grupos de proxy para cada categoría; los grupos se toman de tu archivo de configuración" - msgid "Custom Clash Rules" msgstr "Reglas personalizadas" @@ -632,8 +581,8 @@ msgstr "Actualizar OpenClash" msgid "Only For IPK Install Type Or Not Release Memory" msgstr "Solo se puede actualizar si se instaló mediante IPK; las versiones compiladas en el sistema no liberarán espacio tras actualizar." -msgid "Onekey Create" -msgstr "Generar con un clic" +msgid "Servers Manage" +msgstr "Gestionar servidores" msgid "Read Config" msgstr "Leer configuración" @@ -656,35 +605,8 @@ msgstr "Volver al resumen" msgid "Refresh Page" msgstr "Actualizar página" -msgid "Onekey Create (Servers&Groups manage)" -msgstr "Generación con un clic (gestión de nodos y grupos)" - -msgid "Keep Settings" -msgstr "Conservar ajustes" - -msgid "Only Update Servers Below When Subscription" -msgstr "Al suscribir, solo actualizar nodos y proveedores; mantener grupos sin modificar su orden." - -msgid "New Servers Group (Support Regex)" -msgstr "Grupo predeterminado para nuevos nodos (soporta expresiones regulares)" - -msgid "Set The New Subscribe Server's Default Proxy Groups" -msgstr "Selecciona los grupos predeterminados para los nuevos nodos suscritos (sin duplicados)" - -msgid "Choose Template For Create Config" -msgstr "Selecciona la plantilla para generar la configuración" - -msgid "Use Other Rules To Create Config" -msgstr "Crear configuración usando reglas de terceros (luego podrás ajustar parámetros en Ajustes globales)" - -msgid "Disable Create Config" -msgstr "Solo actualizar nodos de la configuración" - -msgid "Mix Proxies" -msgstr "Mezclar nodos" - -msgid "Mix This Page's Proxies" -msgstr "Al generar la configuración, mezclar todos los servidores listados en esta página (sin importar el archivo original)" +msgid "Servers & Groups manage" +msgstr "Gestión de nodos y grupos" msgid "Type" msgstr "Tipo" @@ -749,14 +671,8 @@ msgstr "Contraseña de autenticación" msgid "None" msgstr "Sin configuración" -msgid "Create Config" -msgstr "Generar archivo de configuración" - -msgid "Create Config By One-Click Only Need Proxies" -msgstr "La generación con un clic solo requiere nodos o proveedores configurados" - -msgid "Proxy Groups(No Need Set when Config Create)" -msgstr "Grupos de proxy (no es necesario configurarlos al generar con un clic)" +msgid "Proxy Groups" +msgstr "Grupos de proxy" msgid "Proxies" msgstr "Configuración de nodos" @@ -803,51 +719,6 @@ msgstr "Tamaño inicial de la ventana de recepción de conexión QUIC" msgid "QUIC max connection receive window" msgstr "Tamaño máximo de la ventana de recepción de conexión QUIC" -msgid "Edit Rule Providers" -msgstr "Editar proveedores de reglas" - -msgid "Rule Providers Type" -msgstr "Tipo de proveedor de reglas" - -msgid "Choose The Rule Providers Type" -msgstr "Selecciona el tipo de proveedor de reglas" - -msgid "Append Position" -msgstr "Orden de coincidencia" - -msgid "Priority Match" -msgstr "Prioritario (sobrescribe)" - -msgid "Extended Match" -msgstr "Extendido (complementario)" - -msgid "Rule Providers Name" -msgstr "Alias del proveedor (no duplicar)" - -msgid "Rule Behavior" -msgstr "Tipo de regla" - -msgid "Rule Format" -msgstr "Formato de regla" - -msgid "Choose The Rule Behavior" -msgstr "Selecciona el tipo de regla" - -msgid "Choose The Rule File Format, For More Info:" -msgstr "Selecciona el formato del archivo de reglas. Más información en:" - -msgid "Rule Providers Path" -msgstr "Ruta del proveedor de reglas" - -msgid "Update Your Rule Providers File From Config Luci Page" -msgstr "Primero sube aquí tus archivos de proveedores de reglas en la página de gestión de configuración" - -msgid "Rule Providers URL" -msgstr "URL del proveedor de reglas" - -msgid "Rule Providers Interval(s)" -msgstr "Intervalo de actualización (segundos)" - msgid "Edit Group" msgstr "Editar grupo" @@ -902,8 +773,8 @@ msgstr "Grupo de proxy (compatible con expresiones regulares)" msgid "Set Proxy Group" msgstr "Asignar grupo de proxy" -msgid "No Need Set when Config Create, The added Proxy Groups Must Exist" -msgstr "No es necesario configurarlo al generar la configuración; los grupos añadidos deben existir previamente." +msgid "The added Proxy Groups Must Exist" +msgstr "Los grupos añadidos deben existir previamente." msgid "The added Dialer Proxy or Group Must Exist" msgstr "El proxy de marcación o grupo añadido debe existir" @@ -1004,48 +875,6 @@ msgstr "URL de comprobación de estado" msgid "Health Check Interval(s)" msgstr "Intervalo de comprobación (s)" -msgid "Game Rule's Name" -msgstr "Nombre de regla de juego" - -msgid "Rule Provider's Name" -msgstr "Nombre del proveedor de reglas (sin duplicados)" - -msgid "Select Proxy Group" -msgstr "Seleccionar grupo de proxy" - -msgid "Game Rules List" -msgstr "Lista de reglas de juegos" - -msgid "Rule Name" -msgstr "Nombre de la regla" - -msgid "Rule Type" -msgstr "Tipo de regla" - -msgid "Rule Author" -msgstr "Autor de la regla" - -msgid "Download Rule" -msgstr "Descargar regla" - -msgid "Exist" -msgstr "Descargado" - -msgid "Not Exist" -msgstr "No descargado" - -msgid "Serial Number" -msgstr "Número de serie" - -msgid "Game Rules Manage" -msgstr "Gestionar reglas de juegos de terceros" - -msgid "Other Rule Provider Manage" -msgstr "Gestionar proveedores de reglas de terceros" - -msgid "Other Rule Providers List" -msgstr "Lista de proveedores de reglas de terceros" - msgid "Proxy UDP Traffics" msgstr "Proxy para tráfico UDP" @@ -1106,6 +935,9 @@ msgstr "IPs LAN con proxy" msgid "WAN Bypassed Host List" msgstr "IPs WAN sin proxy" +msgid "WAN Bypassed Port List" +msgstr "Ports WAN sin proxy" + msgid "LAN Bypassed Mac List" msgstr "MAC LAN sin proxy" @@ -1115,8 +947,8 @@ msgstr "MAC LAN con proxy" msgid "In The Fake-IP Mode, Only Pure IP Requests Are Supported, Please Setting Fake-IP-Filter First If You Need Domain Type Requests" msgstr "En modo Fake-IP solo se filtran peticiones IP puras. Para dominios, configura primero Fake-IP-Filter." -msgid "Warning: iptables DSCP module not available, please try DCSP rule by core instead, skipping DSCP rule for" -msgstr "Aviso: el módulo DSCP de iptables no está disponible; usa reglas DSCP del núcleo. Se omiten reglas DSCP para:" +msgid "iptables DSCP module not available, please try DCSP rule by core instead, skipping DSCP rule for" +msgstr "El módulo DSCP de iptables no está disponible; usa reglas DSCP del núcleo. Se omiten reglas DSCP para:" msgid "Rule Match Proxy Mode" msgstr "Proxy solo para tráfico coincidente con reglas" @@ -1319,29 +1151,29 @@ msgstr "Error al restaurar la selección de nodos" msgid "Save Nodes Selection Failed" msgstr "Error al guardar la selección de nodos" -msgid "Tip: after started, please wait patiently until the connection is normal" -msgstr "Consejo: una vez iniciado OpenClash, espera hasta que las pruebas de acceso sean normales." +msgid "after started, please wait patiently until the connection is normal" +msgstr "Una vez iniciado OpenClash, espera hasta que las pruebas de acceso sean normales." -msgid "Tip: You can modify the profile on the profile page (for content that is not taken over)" -msgstr "Consejo: puedes modificar el archivo de configuración en la página correspondiente (solo parámetros no gestionados por OpenClash)." +msgid "You can modify the profile on the profile page (for content that is not taken over)" +msgstr "Puedes modificar el archivo de configuración en la página correspondiente (solo parámetros no gestionados por OpenClash)." -msgid "Tip: do not write configuration files? Try to create one click on the server page" -msgstr "Consejo: ¿no sabes crear archivos de configuración? Usa la función de generación con un clic en la página de servidores." +msgid "do not write configuration files? Try to create one click on the server page" +msgstr "¿no sabes crear archivos de configuración? Usa la función de generación con un clic en la página de servidores." -msgid "Tip: some website are abnormal? Try switching modes or using third-party rules" -msgstr "Consejo: si algunas webs funcionan mal, prueba a cambiar de modo o usar reglas de terceros." +msgid "some website are abnormal? Try switching modes or using third-party rules" +msgstr "Si algunas webs funcionan mal, prueba a cambiar de modo o usar reglas de terceros." -msgid "Tip: using the fake IP mode can get a faster access experience" -msgstr "Consejo: el modo Fake-IP suele ofrecer mejor velocidad." +msgid "using the fake IP mode can get a faster access experience" +msgstr "El modo Fake-IP suele ofrecer mejor velocidad." -msgid "Tip: the nameserver group must have at least one server set when using custom DNS" -msgstr "Consejo: al usar DNS personalizados, el grupo NameServer debe tener al menos un servidor configurado." +msgid "the nameserver group must have at least one server set when using custom DNS" +msgstr "Al usar DNS personalizados, el grupo NameServer debe tener al menos un servidor configurado." -msgid "Tip: if you don not use IPv6, please turn off the DHCP service of IPv6, otherwise the connection will be abnormal" -msgstr "Consejo: si no usas IPv6, desactiva su DHCP para evitar problemas de conexión." +msgid "if you don not use IPv6, please turn off the DHCP service of IPv6, otherwise the connection will be abnormal" +msgstr "Si no usas IPv6, desactiva su DHCP para evitar problemas de conexión." -msgid "Tip: you can update the version in the settings page" -msgstr "Consejo: puedes actualizar el plugin desde la página de ajustes." +msgid "you can update the version in the settings page" +msgstr "Puedes actualizar el plugin desde la página de ajustes." msgid "Note: if the update fails, you can manually download and upload" msgstr "Nota: si la actualización falla, puedes descargar y subir el archivo manualmente." @@ -1394,8 +1226,8 @@ msgstr "Última versión del cliente" msgid "Download Latest Client" msgstr "Descargar última versión del cliente" -msgid "Restore Default Config" -msgstr "Restablecer configuración por defecto" +msgid "Restore Default" +msgstr "Restablecer por defecto" msgid "Failed to get the latest version. Please try again later!" msgstr "Error al obtener la última versión. Inténtalo más tarde." @@ -1508,18 +1340,6 @@ msgstr "(Todos los países con datos completos oficiales)" msgid "(Only CN)" msgstr "(Solo datos de China)" -msgid "Other Rules Edit" -msgstr "Edición de reglas de terceros" - -msgid "Get Group Names" -msgstr "Obtener nombres de grupos" - -msgid "Get Group Names After Select Config File" -msgstr "Selecciona un archivo de configuración y luego pulsa para obtener sus grupos" - -msgid "Other Rules Name" -msgstr "Nombre de regla de terceros" - msgid "Note" msgstr "Nota" @@ -1610,8 +1430,8 @@ msgstr "al portapapeles" msgid "Exclude Keyword Match Default" msgstr "Excluir nodos no válidos" -msgid "Tip: Start downloading" -msgstr "Consejo: iniciando descarga" +msgid "Start downloading" +msgstr "Iniciando descarga" msgid "Download successful, start pre update test..." msgstr "Descarga completa, iniciando pruebas previas a la actualización..." @@ -1634,14 +1454,11 @@ msgstr "Instalando nueva versión; no recargues la página ni realices acciones. msgid "Installation failed..." msgstr "Instalación fallida..." -msgid "Tip: OpenClash update successful, about to restart!" -msgstr "Consejo: actualización correcta; OpenClash se reiniciará." +msgid "OpenClash update failed after 3 attempts, the file is saved in /tmp/openclash.ipk, please try to update manually with" +msgstr "Actualización fallida; archivo guardado en /tmp/openclash.ipk, intenta actualizar con:" -msgid "Error: OpenClash update failed after 3 attempts, the file is saved in /tmp/openclash.ipk, please try to update manually with" -msgstr "Error: actualización fallida; archivo guardado en /tmp/openclash.ipk, intenta actualizar con:" - -msgid "Error: OpenClash update failed after 3 attempts, the file is saved in /tmp/openclash.apk, please try to update manually with" -msgstr "Error: actualización fallida; archivo guardado en /tmp/openclash.apk, intenta actualizar con:" +msgid "OpenClash update failed after 3 attempts, the file is saved in /tmp/openclash.apk, please try to update manually with" +msgstr "Actualización fallida; archivo guardado en /tmp/openclash.apk, intenta actualizar con:" msgid "Download Failed after 3 attempts, please check the network or try again later!" msgstr "Descarga fallida; revisa la red o inténtalo más tarde." @@ -1649,11 +1466,11 @@ msgstr "Descarga fallida; revisa la red o inténtalo más tarde." msgid "Download failed..." msgstr "La descarga ha fallado..." -msgid "Error: Failed to get version information, please try again later..." -msgstr "Error: no se pudo obtener información de versión, inténtalo más tarde..." +msgid "Failed to get version information, please try again later..." +msgstr "No se pudo obtener información de versión, inténtalo más tarde..." -msgid "Tip: OpenClash has not been updated, stop continuing!" -msgstr "Consejo: OpenClash no ha sido actualizado; proceso detenido." +msgid "OpenClash has not been updated, stop continuing!" +msgstr "OpenClash no ha sido actualizado; proceso detenido." msgid "Core Version Check Error, Please Try Again Later..." msgstr "Error al comprobar la versión del núcleo; inténtalo más tarde." @@ -1685,74 +1502,23 @@ msgstr "Error al descargar el núcleo..." msgid "Core Update Failed, Please Make Sure Enough Flash Memory Space And Try Again!" msgstr "Error al actualizar el núcleo: comprueba el espacio de flash." -msgid "Warning: No Compiled Version Selected, Please Select In Update Page And Try Again!" -msgstr "Advertencia: no se ha seleccionado ninguna versión compilada; selecciónala en la página de actualización." +msgid "No Compiled Version Selected, Please Select In Update Page And Try Again!" +msgstr "No se ha seleccionado ninguna versión compilada; selecciónala en la página de actualización." msgid "Core Has Not Been Updated, Stop Continuing Operation!" msgstr "El núcleo no ha sido actualizado; proceso detenido." -msgid "Start Downloading Third Party Rules in Use..." -msgstr "Iniciando descarga de reglas de terceros en uso..." - -msgid "Warning: Multiple Other-Rules-Configurations Enabled, Ignore..." -msgstr "Advertencia: múltiples configuraciones de reglas detectadas; ignorando duplicadas..." - -msgid "Download Successful, Start Preprocessing Rule File..." -msgstr "Descarga correcta; iniciando preprocesamiento del archivo de reglas..." - -msgid "Error:" -msgstr "Error:" - -msgid "Tip:" -msgstr "Consejo:" - -msgid "Warning:" -msgstr "Advertencia:" - -msgid "Rule File Format Validation Failed, Please Try Again Later..." -msgstr "Validación del archivo de reglas fallida; inténtalo más tarde." - -msgid "Error: Updated Others Rules" -msgstr "Error: archivo de reglas actualizado" - -msgid "Has No Rules Field, Update Exit..." -msgstr "El archivo carece de sección de reglas; actualización detenida." - -msgid "Has Incompatible Proxy-Group, Update Exit, Please Wait For OpenClash Update To Adapt..." -msgstr "El archivo contiene grupos no compatibles; espera a una actualización de OpenClash." - -msgid "Check The Downloaded Rule File For Updates..." -msgstr "Comprobando si el archivo de reglas contiene actualizaciones..." - -msgid "Detected that The Downloaded Rule File Has Been Updated, Starting To Replace..." -msgstr "Se detectaron actualizaciones; iniciando reemplazo..." - -msgid "Other Rules" -msgstr "Reglas de terceros" - msgid "Update Successful!" msgstr "¡Actualización completada!" -msgid "Updated Other Rules" -msgstr "Reglas actualizadas" - msgid "No Change, Do Nothing!" msgstr "Sin cambios; operación detenida." msgid "Update Error, Please Try Again Later..." msgstr "Error al actualizar; inténtalo más tarde." -msgid "Other Rules Not Enable, Update Stop!" -msgstr "Las reglas de terceros no están habilitadas; operación detenida." - -msgid "Get Other Rules Settings Faild, Update Stop!" -msgstr "No se encontró configuración de reglas de terceros; operación detenida." - -msgid "is Replaced Successfully, Start Picking Nodes..." -msgstr "Reemplazo correcto; iniciando selección de nodos..." - -msgid "is Replaced Successfully, Start to Reserving..." -msgstr "Reemplazo correcto; aplicando configuraciones reservadas..." +msgid "Start Picking Nodes..." +msgstr "iniciando selección de nodos..." msgid "Config File Test Successful, Check If There is Any Update..." msgstr "Archivo de configuración válido; comprobando cambios..." @@ -1763,14 +1529,14 @@ msgstr "Hay cambios; iniciando reemplazo..." msgid "Download Successful, Start To Create..." msgstr "Descarga correcta; no hay archivo previo, creando nuevo..." -msgid "Error: Ruby Works Abnormally, Please Check The Ruby Library Depends!" -msgstr "Error: Ruby no funciona correctamente; revisa las dependencias." +msgid "Ruby Works Abnormally, Please Check The Ruby Library Depends!" +msgstr "Ruby no funciona correctamente; revisa las dependencias." msgid "Config File Format Validation Failed..." msgstr "Validación del archivo de configuración fallida..." -msgid "Error: Updated Config" -msgstr "Error: archivo de configuración actualizado" +msgid "Updated Config" +msgstr "Archivo de configuración actualizado" msgid "Has No Proxy Field, Update Exit..." msgstr "El archivo no contiene sección de nodos; operación detenida." @@ -1784,8 +1550,8 @@ msgstr "Validación fallida; intentando descargar sin proxy..." msgid "Has No Proxy Field, Trying To Download Without Agent..." msgstr "Falta sección de nodos; intentando descargar sin proxy..." -msgid "Error: Config File" -msgstr "Error: archivo de configuración" +msgid "Config File" +msgstr "Archivo de configuración" msgid "Subscribed Failed, Trying to Download Without Agent..." msgstr "Suscripción fallida; intentando descarga directa..." @@ -1928,8 +1694,8 @@ msgstr "¡Anómalo!" msgid "Deleting Old Configuration..." msgstr "Eliminando configuración anterior..." -msgid "Error: Unable To Parse Config File, Please Check And Try Again!" -msgstr "Error: no se pudo analizar el archivo de configuración; revísalo y vuelve a intentarlo." +msgid "Unable To Parse Config File, Please Check And Try Again!" +msgstr "No se pudo analizar el archivo de configuración; revísalo y vuelve a intentarlo." msgid "Start Writing" msgstr "Iniciando escritura" @@ -1943,8 +1709,8 @@ msgstr "nodo hacia el archivo de configuración..." msgid "Proxy-provider To Config File..." msgstr "proveedor de proxy hacia el archivo de configuración..." -msgid "Unable To Parse, Please Choose One-key Function To Create Config File..." -msgstr "Error de lectura: usa la función de creación con un clic para generar el archivo de configuración." +msgid "Unable To Parse..." +msgstr "Error de lectura..." msgid "Setting Secondary DNS Server List..." msgstr "Configurando la lista de DNS secundarios..." @@ -1964,68 +1730,56 @@ msgstr "Lectura completada." msgid "Write Successful!" msgstr "Escritura completada." -msgid "Creating By Using lhie1 Rules..." -msgstr "Creando usando las reglas lhie1..." - -msgid "Created Successful, Updating Proxies, Proxy-providers, Groups..." -msgstr "Creación completada; actualizando nodos, proveedores y grupos..." - msgid "Proxies, Proxy-providers, Groups Edited Successful, Updating Config File" msgstr "Edición completada; actualizando archivo de configuración..." -msgid "Warning: Because of The Different Porxy-Group's Name, Stop Setting The Other Rules!" -msgstr "Advertencia: los nombres de los grupos no coinciden; se detiene la aplicación de reglas de terceros." +msgid "Detected That The nameserver DNS Option Has No Server Set, Starting To Complete..." +msgstr "Detectado Nameserver sin servidores configurados; completando automáticamente..." -msgid "Error: Missing Porxy-Group's Name, Stop Setting The Other Rules!" -msgstr "Error: faltan grupos requeridos por las reglas de terceros; operación detenida." +msgid "Detected That The default-nameserver DNS Option Has No Server Set, Starting To Complete..." +msgstr "Detectado Default-nameserver sin servidores configurados; completando automáticamente..." -msgid "Tip: Detected That The nameserver DNS Option Has No Server Set, Starting To Complete..." -msgstr "Consejo: detectado Nameserver sin servidores configurados; completando automáticamente..." - -msgid "Tip: Detected That The default-nameserver DNS Option Has No Server Set, Starting To Complete..." -msgstr "Consejo: detectado Default-nameserver sin servidores configurados; completando automáticamente..." - -msgid "Error: Nameserver Option Must Be Setted, Stop Customing DNS Servers" -msgstr "Error: Nameserver debe tener servidores configurados; deteniendo configuración de DNS personalizados." +msgid "Nameserver Option Must Be Setted, Stop Customing DNS Servers" +msgstr "Nameserver debe tener servidores configurados; deteniendo configuración de DNS personalizados." msgid "Config File Does Not Exist, You Have Set Subscription Information, Ready To Download..." msgstr "El archivo de configuración no existe; ya configuraste la suscripción, iniciando descarga..." -msgid "Error: Config Not Found" -msgstr "Error: archivo de configuración no encontrado" +msgid "Config Not Found" +msgstr "Archivo de configuración no encontrado" -msgid "Error: Config File Format Validation Failed..." -msgstr "Error: validación del archivo de configuración fallida." +msgid "Config File Format Validation Failed..." +msgstr "Validación del archivo de configuración fallida." -msgid "Tip: Detected that the GEOIP Database is not Installed, Ready to Download..." -msgstr "Consejo: la base de datos GEOIP no está instalada; iniciando descarga..." +msgid "Detected that the GEOIP Database is not Installed, Ready to Download..." +msgstr "La base de datos GEOIP no está instalada; iniciando descarga..." -msgid "Tip: Detected that the GEOSITE Database is not Installed, Ready to Download..." -msgstr "Consejo: la base de datos GEOSITE no está instalada; iniciando descarga..." +msgid "Detected that the GEOSITE Database is not Installed, Ready to Download..." +msgstr "La base de datos GEOSITE no está instalada; iniciando descarga..." -msgid "Tip: Detected that the GEOIP Dat is not Installed, Ready to Download..." -msgstr "Consejo: la base de datos GEOIP Dat no está instalada; iniciando descarga..." +msgid "Detected that the GEOIP Dat is not Installed, Ready to Download..." +msgstr "La base de datos GEOIP Dat no está instalada; iniciando descarga..." -msgid "Tip: Detected that the Core is not Installed, Ready to Download..." -msgstr "Consejo: el núcleo no está instalado; iniciando descarga..." +msgid "Detected that the Core is not Installed, Ready to Download..." +msgstr "El núcleo no está instalado; iniciando descarga..." -msgid "Tip: Detected that the Chnroute Cidr is not Installed, Ready to Download..." -msgstr "Consejo: la lista CIDR de China no está instalada; iniciando descarga..." +msgid "Detected that the Chnroute Cidr is not Installed, Ready to Download..." +msgstr "La lista CIDR de China no está instalada; iniciando descarga..." -msgid "Tip: Detected that the Chnroute Cidr List Format is wrong, Ready to Reformat..." -msgstr "Consejo: formato incorrecto en la lista CIDR de China; iniciando reformateo..." +msgid "Detected that the Chnroute Cidr List Format is wrong, Ready to Reformat..." +msgstr "Formato incorrecto en la lista CIDR de China; iniciando reformateo..." -msgid "Error: OpenClash Can Not Start, Please Check The Error Info And Try Again!" -msgstr "Error: OpenClash no puede iniciarse; revisa los registros y vuelve a intentarlo." +msgid "OpenClash Can Not Start, Please Check The Error Info And Try Again!" +msgstr "OpenClash no puede iniciarse; revisa los registros y vuelve a intentarlo." msgid "Found 53 Port Hijacked, Clean Up Firewall Rules..." msgstr "Detectado secuestro del puerto 53; limpiando reglas del firewall..." -msgid "Tip: OpenClash Start Running..." -msgstr "Consejo: OpenClash está iniciándose..." +msgid "OpenClash Start Running..." +msgstr "OpenClash está iniciándose..." -msgid "Tip: OpenClash Restart..." -msgstr "Consejo: OpenClash se está reiniciando..." +msgid "OpenClash Restart..." +msgstr "OpenClash se está reiniciando..." msgid "Step 1: Get The Configuration..." msgstr "Paso 1: Obtener la configuración..." @@ -2048,17 +1802,20 @@ msgstr "Paso 5: Añadir tareas programadas e iniciar servicios..." msgid "Step 6: Core Status Checking and Firewall Rules Setting..." msgstr "Paso 6: Comprobar estado del núcleo y configurar reglas del firewall..." -msgid "Tip: OpenClash Start Successful!" -msgstr "Consejo: OpenClash iniciado correctamente." +msgid "OpenClash Start Successful!" +msgstr "OpenClash iniciado correctamente." -msgid "Tip: Firewall Reload Successful!" -msgstr "Consejo: firewall recargado correctamente." +msgid "OpenClash Already Running, Exit..." +msgstr "OpenClash ya está ejecutándose, saliendo del inicio..." -msgid "Warning: Please Note That Network May Abnormal With IPv6's DHCP Server" -msgstr "Advertencia: el DHCP IPv6 puede provocar fallos en la conexión." +msgid "Firewall Reload Successful!" +msgstr "Firewall recargado correctamente." -msgid "Tip: OpenClash Stoping..." -msgstr "Consejo: OpenClash está deteniéndose..." +msgid "Please Note That Network May Abnormal With IPv6's DHCP Server" +msgstr "El DHCP IPv6 puede provocar fallos en la conexión." + +msgid "OpenClash Stoping..." +msgstr "OpenClash está deteniéndose..." msgid "Step 1: Backup The Current Groups State..." msgstr "Paso 1: Respaldar estado actual de grupos..." @@ -2066,20 +1823,17 @@ msgstr "Paso 1: Respaldar estado actual de grupos..." msgid "Step 2: Delete OpenClash Firewall Rules..." msgstr "Paso 2: Eliminar reglas de firewall de OpenClash..." -msgid "Step 3: Close The OpenClash Daemons..." -msgstr "Paso 3: Detener servicios de OpenClash..." +msgid "Step 3: Close The OpenClash Services..." +msgstr "Paso 3: Detener el núcleo de OpenClash..." -msgid "Step 4: Close The Clash Core Process..." -msgstr "Paso 4: Detener el núcleo de Clash..." +msgid "Step 4: Restart Dnsmasq..." +msgstr "Paso 4: Reiniciar Dnsmasq..." -msgid "Step 5: Restart Dnsmasq..." -msgstr "Paso 5: Reiniciar Dnsmasq..." +msgid "Step 5: Delete OpenClash Residue File..." +msgstr "Paso 5: Eliminar archivos residuales de OpenClash..." -msgid "Step 6: Delete OpenClash Residue File..." -msgstr "Paso 6: Eliminar archivos residuales de OpenClash..." - -msgid "Tip: OpenClash Already Stop!" -msgstr "Consejo: OpenClash ya está detenido." +msgid "OpenClash Already Stop!" +msgstr "OpenClash ya está detenido." msgid "Skip Reload OpenClash Firewall Rules Until 5 Minutes Later..." msgstr "Límite de recargas alcanzado; reintento dentro de 5 minutos." @@ -2090,17 +1844,20 @@ msgstr "Recargando reglas de firewall de OpenClash..." msgid "Manually Reload Firewall Rules..." msgstr "Recargar reglas de firewall manualmente..." -msgid "Warning: OpenClash Now Disabled, Need Start From Luci Page, Exit..." -msgstr "Advertencia: OpenClash está deshabilitado; inícialo desde LuCI." +msgid "OpenClash Now Disabled, Need Start From Luci Page, Exit..." +msgstr "OpenClash está deshabilitado; inícialo desde LuCI." -msgid "Watchdog: Log Size Limit, Clean Up All Log Records..." -msgstr "Watchdog: límite de tamaño alcanzado; limpiando registros..." +msgid "Log Size Limit, Clean Up All Log Records..." +msgstr "Límite de tamaño alcanzado; limpiando registros..." -msgid "Watchdog: Setting Firewall For Rules Order..." -msgstr "Watchdog: corrigiendo el orden de las reglas del firewall..." +msgid "Setting Firewall For Rules Order..." +msgstr "Corrigiendo el orden de las reglas del firewall..." -msgid "Watchdog: Force Reset DNS Hijack..." -msgstr "Watchdog: restableciendo interceptación DNS..." +msgid "Setting Firewall For IP Rules Table Recreate..." +msgstr "Configurando el firewall para recrear la tabla de reglas..." + +msgid "Force Reset DNS Hijack..." +msgstr "Restableciendo interceptación DNS..." msgid "Rule File" msgstr "Archivo de reglas" @@ -2120,27 +1877,6 @@ msgstr "Tolerancia del grupo URL-Test" msgid "Attention:" msgstr "Atención:" -msgid "The game proxy is a test function and does not guarantee the availability of rules" -msgstr "El proxy de juegos es experimental y no garantiza que las reglas funcionen." - -msgid "Preparation steps:" -msgstr "Pasos previos:" - -msgid "1. Check the policy group and node you are going to use, Policy group type suggestion: fallback, game nodes must be support UDP and not a Vmess" -msgstr "1. Comprueba el grupo y nodo que usarás. Recomendado: grupo tipo FallBack; el nodo debe soportar UDP y no ser Vmess." - -msgid "2. Click the or button to enter the rule list and download the rules you want to use" -msgstr "2. Entra en «Gestionar reglas de juegos» o «Gestionar reglas de terceros» y descarga las reglas necesarias." - -msgid "3. On this page, set the corresponding configuration file and policy group of the rule you have downloaded, and save the settings" -msgstr "3. Configura aquí el archivo y grupo correspondiente a la regla descargada, y guarda los ajustes." - -msgid "When setting this page, if the groups is empty, please go to the page to add" -msgstr "Si no aparecen grupos, ve a «Crear con un clic» para añadirlos." - -msgid "Introduction to rule set usage:" -msgstr "Introducción al uso de conjuntos de reglas:" - msgid "Introduction to proxy usage:" msgstr "Introducción al uso de nodos proxy:" @@ -2162,86 +1898,11 @@ msgstr "Nota: para restaurar la configuración por defecto, accede a:" msgid "Take Effect If Fallback DNS Setted, Prevent DNS Pollution" msgstr "Funciona solo si el Fallback DNS está configurado; ayuda a evitar contaminación DNS." -msgid "Error: Fallback-Filter Need fallback of DNS Been Setted, Ignore..." -msgstr "Error: Fallback-Filter solo funciona con Fallback DNS configurado; ignorado." +msgid "Fallback-Filter Need fallback of DNS Been Setted, Ignore..." +msgstr "Fallback-Filter solo funciona con Fallback DNS configurado; ignorado." -msgid "Error: Unable To Parse Custom Fallback-Filter File, Ignore..." -msgstr "Error: no se pudo leer el archivo Fallback-Filter; ignorado." - -msgid "Simple & trustworthy" -msgstr "Simple y confiable" - -msgid "Cross-platform Support" -msgstr "Compatibilidad multiplataforma" - -msgid "Global Acceleration Network" -msgstr "Red global de aceleración" - -msgid "Easy to Use" -msgstr "Fácil de usar" - -msgid "Intelligent Shunting" -msgstr "Desvío inteligente" - -msgid "Perfect Technical Support" -msgstr "Soporte técnico completo" - -msgid "Plan Expiration Time" -msgstr "Fecha de vencimiento" - -msgid "Account Balances" -msgstr "Saldo de la cuenta" - -msgid "Aff Balances" -msgstr "Saldo de afiliación" - -msgid "Account Integral" -msgstr "Puntos de la cuenta" - -msgid "Today Used" -msgstr "Uso de hoy" - -msgid "Plan Used" -msgstr "Consumo del plan" - -msgid "Plan Unused" -msgstr "Tráfico restante" - -msgid "Plan Traffic" -msgstr "Tráfico del plan" - -msgid "Checkin" -msgstr "Recompensa diaria" - -msgid "Dler Cloud Account Login Failed! Please Check And Try Again..." -msgstr "Error al iniciar sesión en Dler Cloud. Revisa tus datos e inténtalo de nuevo..." - -msgid "Dler Cloud Account Login Failed, The Error Info is" -msgstr "Error al iniciar sesión en Dler Cloud. Información del error:" - -msgid "Dler Cloud Checkin Failed! Please Check And Try Again..." -msgstr "Fallo al realizar el check-in en Dler Cloud; inténtalo de nuevo más tarde." - -msgid "Account Email Address" -msgstr "Correo de la cuenta" - -msgid "Account Password" -msgstr "Contraseña" - -msgid "Checkin Interval (hour)" -msgstr "Intervalo de check-in (horas)" - -msgid "Checkin Multiple" -msgstr "Multiplicador de check-in" - -msgid "Multiple Must Be a Positive Integer and No More Than 100" -msgstr "El multiplicador debe ser un entero positivo y no mayor que 100." - -msgid "Dler Cloud Checkin Successful, Result:" -msgstr "Check-in de Dler Cloud realizado correctamente. Resultado:" - -msgid "Dler Cloud Checkin Failed, Result:" -msgstr "Check-in de Dler Cloud fallido. Resultado:" +msgid "Unable To Parse Custom Fallback-Filter File, Ignore..." +msgstr "No se pudo leer el archivo Fallback-Filter; ignorado." msgid "Downloading Rule..." msgstr "Descargando regla..." @@ -2252,131 +1913,62 @@ msgstr "Descarga fallida" msgid "Download Successful" msgstr "Descarga completada" -msgid "Rule No Change" -msgstr "La regla no ha cambiado" - msgid "Download Timeout" msgstr "Tiempo de descarga agotado" -msgid "Rule Project:" -msgstr "Proyecto de reglas:" +msgid "Load File Failed," +msgstr "Fallo al cargar el archivo," -msgid "Login..." -msgstr "Iniciando sesión..." +msgid "Set General Failed," +msgstr "Fallo al modificar la sección General," -msgid "Dler Cloud Login Successful" -msgstr "Inicio de sesión en Dler Cloud correcto" +msgid "Set authentication Failed," +msgstr "Fallo al modificar Authentication," -msgid "Dler Cloud Login Faild" -msgstr "Inicio de sesión en Dler Cloud fallido" +msgid "DNS Loop Check," +msgstr "Comprobación de bucle DNS fallida," -msgid "Login Account" -msgstr "Iniciar sesión" +msgid "proxy-groups Get Failed," +msgstr "Fallo al obtener proxy-groups," -msgid "Dler Cloud Logout Successful" -msgstr "Cierre de sesión en Dler Cloud correcto" +msgid "Set Hosts Rules Failed," +msgstr "Fallo al modificar Hosts," -msgid "Dler Cloud Logout Faild" -msgstr "Cierre de sesión en Dler Cloud fallido" +msgid "Set Fake-IP-Filter Failed," +msgstr "Fallo al modificar Fake-IP-Filter," -msgid "Logout Account" -msgstr "Cerrar sesión" +msgid "Set Nameserver-Policy Failed," +msgstr "Fallo al modificar Nameserver-Policy," -msgid "Account Login" -msgstr "Inicio de sesión" +msgid "Set Custom Rules Failed," +msgstr "Fallo al aplicar reglas personalizadas," -msgid "Account logged in" -msgstr "Sesión iniciada" +msgid "Set BT/P2P DIRECT Rules Failed," +msgstr "Fallo al aplicar reglas DIRECT para BT/P2P," -msgid "Account not logged in" -msgstr "Sesión no iniciada" +msgid "Filter Proxies Failed," +msgstr "Fallo en el filtrado de nodos," -msgid "Logout..." -msgstr "Cerrando sesión..." +msgid "Unable To Parse Config File," +msgstr "No se pudo analizar el archivo de configuración," -msgid "Error Login Info" -msgstr "Datos de acceso incorrectos" +msgid "Edit Provider Path Failed," +msgstr "Fallo al modificar la ruta del proveedor," -msgid "Warning: Proxy is no longer used. Auto replaced by proxies" -msgstr "Advertencia: «Proxy» ya no se usa; reemplazado automáticamente por «proxies»." +msgid "Edit URL-Test Group Tolerance Option Failed," +msgstr "Fallo al modificar la tolerancia del grupo URL-Test," -msgid "Warning: Proxy Group is no longer used. Auto replaced by proxy-groups" -msgstr "Advertencia: «Proxy Group» ya no se usa; reemplazado por «proxy-groups»." +msgid "Resolve Proxy-providers Failed," +msgstr "Fallo al analizar proveedores de proxy," -msgid "Warning: Rule is no longer used. Auto replaced by rules" -msgstr "Advertencia: «Rule» ya no se usa; reemplazado por «rules»." +msgid "Resolve Proxies Failed," +msgstr "Fallo al analizar nodos," -msgid "Warning: rule-provider is no longer used. Auto replaced by rule-providers" -msgstr "Advertencia: «rule-provider» ya no se usa; reemplazado por «rule-providers»." +msgid "Resolve Groups Failed," +msgstr "Fallo al analizar grupos," -msgid "Error: Load File Failed," -msgstr "Error: fallo al cargar el archivo," - -msgid "Error: Set General Failed," -msgstr "Error: fallo al modificar la sección General," - -msgid "Error: Set authentication Failed," -msgstr "Error: fallo al modificar Authentication," - -msgid "Error: DNS Loop Check," -msgstr "Error: comprobación de bucle DNS fallida," - -msgid "Error: proxy-groups Get Failed," -msgstr "Error: fallo al obtener proxy-groups," - -msgid "Error: Set Hosts Rules Failed," -msgstr "Error: fallo al modificar Hosts," - -msgid "Error: Set Fake-IP-Filter Failed," -msgstr "Error: fallo al modificar Fake-IP-Filter," - -msgid "Error: Set Nameserver-Policy Failed," -msgstr "Error: fallo al modificar Nameserver-Policy," - -msgid "Error: Set Custom Rules Failed," -msgstr "Error: fallo al aplicar reglas personalizadas," - -msgid "Error: Set BT/P2P DIRECT Rules Failed," -msgstr "Error: fallo al aplicar reglas DIRECT para BT/P2P," - -msgid "Error: Set lhie1 Rules Failed," -msgstr "Error: fallo al aplicar reglas lhie1," - -msgid "Error: Filter Proxies Failed," -msgstr "Error: fallo en el filtrado de nodos," - -msgid "Error: Unable To Parse Config File," -msgstr "Error: no se pudo analizar el archivo de configuración," - -msgid "Error: Unable To Parse Updated Rules File," -msgstr "Error: no se pudo analizar el archivo de reglas actualizado," - -msgid "Error: Edit Provider Path Failed," -msgstr "Error: fallo al modificar la ruta del proveedor," - -msgid "Error: Edit URL-Test Group Tolerance Option Failed," -msgstr "Error: fallo al modificar la tolerancia del grupo URL-Test," - -msgid "Error: Game Proxy Merge Failed," -msgstr "Error: fallo al combinar reglas de juego," - -msgid "Error: Rule Set Add Failed," -msgstr "Error: fallo al añadir reglas al Rule-Set," - -msgid "Error: Custom Rule Provider Merge Failed," -msgstr "Error: fallo al combinar proveedores de reglas personalizados," - -msgid "Error: Resolve Proxy-providers Failed," -msgstr "Error: fallo al analizar proveedores de proxy," - -msgid "Error: Resolve Proxies Failed," -msgstr "Error: fallo al analizar nodos," - -msgid "Error: Resolve Groups Failed," -msgstr "Error: fallo al analizar grupos," - -msgid "Error: Set default-nameserver Failed," -msgstr "Error: fallo al modificar Default-nameserver," +msgid "Set default-nameserver Failed," +msgstr "Fallo al modificar Default-nameserver," msgid "switching succeeded!" msgstr "¡Cambio realizado con éxito!" @@ -2387,9 +1979,6 @@ msgstr "¡El cambio ha fallado!" msgid "Current Config File" msgstr "Archivo de configuración actual" -msgid "Official Website" -msgstr "Sitio oficial" - msgid "Up" msgstr "Subida" @@ -2435,9 +2024,6 @@ msgstr "Archivo de copia de seguridad" msgid "Backup File Restore Successful!" msgstr "Restauración desde copia de seguridad completada." -msgid "Backup OpenClash" -msgstr "Respaldar OpenClash" - msgid "Not Select" msgstr "Sin seleccionar" @@ -2471,8 +2057,8 @@ msgstr "Todos los grupos" msgid "Are you sure want to switch the running mode?" msgstr "¿Seguro que deseas cambiar el modo de funcionamiento?" -msgid "Tip: Because of the file" -msgstr "Consejo: debido a que el archivo" +msgid "Because of the file" +msgstr "Debido a que el archivo" msgid "modificated, Pause quick start..." msgstr "ha sido modificado, pausa del inicio rápido..." @@ -2525,40 +2111,40 @@ msgstr "Filtro de regiones" msgid "Unlock Nodes Filter" msgstr "Filtro de nodos desbloqueados" -msgid "Tip: Start Auto Select Proxy For Netflix Unlock..." +msgid "Start Auto Select Proxy For Netflix Unlock..." msgstr "Iniciando selección automática de nodo para Netflix..." -msgid "Tip: Start Auto Select Proxy For Disney Plus Unlock..." +msgid "Start Auto Select Proxy For Disney Plus Unlock..." msgstr "Iniciando selección automática de nodo para Disney Plus..." -msgid "Tip: Start Auto Select Proxy For HBO Max Unlock..." +msgid "Start Auto Select Proxy For HBO Max Unlock..." msgstr "Iniciando selección automática de nodo para HBO Max..." -msgid "Tip: Start Auto Select Proxy For YouTube Premium Unlock..." +msgid "Start Auto Select Proxy For YouTube Premium Unlock..." msgstr "Iniciando selección automática de nodo para YouTube Premium..." -msgid "Tip: Start Auto Select Proxy For TVB Anywhere+ Unlock..." +msgid "Start Auto Select Proxy For TVB Anywhere+ Unlock..." msgstr "Iniciando selección automática de nodo para TVB Anywhere+..." -msgid "Tip: Start Auto Select Proxy For Amazon Prime Video Unlock..." +msgid "Start Auto Select Proxy For Amazon Prime Video Unlock..." msgstr "Iniciando selección automática de nodo para Amazon Prime Video..." -msgid "Tip: Start Auto Select Proxy For DAZN Unlock..." +msgid "Start Auto Select Proxy For DAZN Unlock..." msgstr "Iniciando selección automática de nodo para DAZN..." -msgid "Tip: Start Auto Select Proxy For Paramount Plus Unlock..." +msgid "Start Auto Select Proxy For Paramount Plus Unlock..." msgstr "Iniciando selección automática de nodo para Paramount Plus..." -msgid "Tip: Start Auto Select Proxy For Discovery Plus Unlock..." +msgid "Start Auto Select Proxy For Discovery Plus Unlock..." msgstr "Iniciando selección automática de nodo para Discovery Plus..." -msgid "Tip: Start Auto Select Proxy For Bilibili Unlock..." +msgid "Start Auto Select Proxy For Bilibili Unlock..." msgstr "Iniciando selección automática de nodo para Bilibili..." -msgid "Tip: Start Auto Select Proxy For Google Not CN Unlock..." +msgid "Start Auto Select Proxy For Google Not CN Unlock..." msgstr "Iniciando selección automática de nodo para Google fuera de China..." -msgid "Tip: Start Auto Select Proxy For OpenAI Unlock..." +msgid "Start Auto Select Proxy For OpenAI Unlock..." msgstr "Iniciando selección automática de nodo para OpenAI..." msgid "Netflix Group:" @@ -2822,17 +2408,17 @@ msgstr "Modo de regla" msgid "ALL Functions In Stream Enhance Tag Will Not Work After Disable" msgstr "Si se desactiva, todas las funciones del apartado «mejora de streaming» dejarán de estar disponibles." -msgid "Error: Set Router Self Proxy Rule Failed," -msgstr "Error: fallo al configurar la regla de proxy del router," +msgid "Set Router Self Proxy Rule Failed," +msgstr "Fallo al configurar la regla de proxy del router," -msgid "Error: Streaming Unlock Has No Parameter of Type, Exiting..." -msgstr "Error: no se especificó el tipo de servicio a desbloquear; abortando..." +msgid "Streaming Unlock Has No Parameter of Type, Exiting..." +msgstr "No se especificó el tipo de servicio a desbloquear; abortando..." -msgid "Error: Streaming Unlock Could not Work Because of Router-Self Proxy Disabled, Exiting..." -msgstr "Error: el proxy del propio router está desactivado; desbloqueo de streaming imposible. Abortando..." +msgid "Streaming Unlock Could not Work Because of Router-Self Proxy Disabled, Exiting..." +msgstr "El proxy del propio router está desactivado; desbloqueo de streaming imposible. Abortando..." -msgid "Error: Multiple Scripts Running, Exiting..." -msgstr "Error: hay varios scripts ejecutándose; abortando..." +msgid "Multiple Scripts Running, Exiting..." +msgstr "Hay varios scripts ejecutándose; abortando..." msgid "Enable Sniffer" msgstr "Habilitar Sniffer (detección de dominios)" @@ -2843,6 +2429,9 @@ msgstr "El sniffer ayuda a evitar errores de proxy de dominios y fallos de secue msgid "Override All Dns Query" msgstr "Sobrescribir todas las consultas DNS" +msgid "Rules Setting" +msgstr "Ajustes de reglas" + msgid "Meta Settings" msgstr "Ajustes Meta" @@ -3026,9 +2615,6 @@ msgstr "Hong Kong / Macao / Taiwán" msgid "Taiwan Only" msgstr "Solo Taiwán" -msgid "Backup Section" -msgstr "Opciones de copia de seguridad" - msgid "Backup Exclude Cores" msgstr "Copia sin núcleos" @@ -3053,8 +2639,8 @@ msgstr "Lista de exclusión IPv6 de China continental" msgid "Domains or IPs in The List Will Not be Affected by The China IP Route Option, Depend on Dnsmasq" msgstr "Los dominios o IP de la lista no se verán afectados por la opción China IP Route. Requiere Dnsmasq." -msgid "Warning: You May Need to Turn off The Rebinding Protection Option of Dnsmasq When Hosts Has Set a Reserved Address..." -msgstr "Advertencia: si HOSTS contiene direcciones reservadas, desactiva la protección de 'rebinding' de Dnsmasq." +msgid "You May Need to Turn off The Rebinding Protection Option of Dnsmasq When Hosts Has Set a Reserved Address..." +msgstr "Si HOSTS contiene direcciones reservadas, desactiva la protección de 'rebinding' de Dnsmasq." msgid "Auto Select Logic" msgstr "Lógica de selección automática" @@ -3065,8 +2651,8 @@ msgstr "Baja latencia" msgid "Random" msgstr "Aleatorio" -msgid "Tip: You have seted the authentication of SOCKS5/HTTP(S) proxy with" -msgstr "Aviso: has configurado autenticación para el proxy SOCKS5/HTTP(S) con" +msgid "You have seted the authentication of SOCKS5/HTTP(S) proxy with" +msgstr "Has configurado autenticación para el proxy SOCKS5/HTTP(S) con" msgid "Google Not CN" msgstr "Google no China" @@ -3074,17 +2660,17 @@ msgstr "Google no China" msgid "In Fake-ip Mode, Even If This Option is Turned Off, Domain Type Connections Still Pass Through The Core For The Availability" msgstr "En modo Fake-IP, incluso desactivado, algunas conexiones de dominio seguirán pasando por el núcleo." -msgid "Warning: TUN Interface Start Failed, Please Check The Dependence or Try to Restart Again!" -msgstr "Advertencia: fallo al iniciar la interfaz TUN; revisa dependencias o intenta reiniciar." +msgid "TUN Interface Start Failed, Please Check The Dependence or Try to Restart Again!" +msgstr "Fallo al iniciar la interfaz TUN; revisa dependencias o intenta reiniciar." -msgid "Warning: TUN Interface Start Failed, Try to Restart Again..." -msgstr "Advertencia: inicio de TUN fallido; intentando reiniciar..." +msgid "TUN Interface Start Failed, Try to Restart Again..." +msgstr "Inicio de TUN fallido; intentando reiniciar..." -msgid "Error: Core Start Failed, Please Check The Log Infos!" -msgstr "Error: fallo al iniciar el núcleo. Revisa el registro de núcleo." +msgid "Core Start Failed, Please Check The Log Infos!" +msgstr "Fallo al iniciar el núcleo. Revisa el registro de núcleo." -msgid "Error: Core Status Abnormal, Please Check The Log Infos!" -msgstr "Error: estado del núcleo anómalo. Consulta el registro de núcleo." +msgid "Core Status Abnormal, Please Check The Log Infos!" +msgstr "Estado del núcleo anómalo. Consulta el registro de núcleo." msgid "Forced Sniff Pure IP Connections" msgstr "Forzar sniffing de conexiones IP puras" @@ -3095,11 +2681,11 @@ msgstr "Forzar sniffing de IP puras" msgid "Download Failed:" msgstr "Descarga fallida:" -msgid "Warning: Dnsmasq not Support nftset, Use ipset..." -msgstr "Advertencia: Dnsmasq no admite nftset; usando ipset en su lugar." +msgid "Dnsmasq not Support nftset, Use ipset..." +msgstr "Dnsmasq no admite nftset; usando ipset en su lugar." -msgid "Tip: Firewall4 was Detected, Use NFTABLE Rules..." -msgstr "Aviso: detectado Firewall4; usando reglas NFTABLE..." +msgid "Firewall4 was Detected, Use NFTABLE Rules..." +msgstr "Detectado Firewall4; usando reglas NFTABLE..." msgid "Specify CN DNS Server" msgstr "DNS específico para dominios de China" @@ -3113,17 +2699,11 @@ msgstr "1. Antes de editar el archivo de configuración, pulsa el botón inferio msgid "2. Proxy-providers address can be directly filled in the subscription link" msgstr "2. La dirección de un proveedor de proxy puede ser directamente un enlace de suscripción." -msgid "Custom Tag" -msgstr "Etiqueta personalizada" +msgid "Edit URL-Test URL Failed," +msgstr "Fallo al modificar la URL de URL-Test," -msgid "Mark as Custom Node to Prevent Retention config from being Deleted When Enabled" -msgstr "Marcar como nodo personalizado para evitar que se elimine al usar configuración de retención." - -msgid "Error: Edit URL-Test URL Failed," -msgstr "Error: fallo al modificar la URL de URL-Test," - -msgid "Error: Edit URL-Test Interval Failed," -msgstr "Error: fallo al modificar el intervalo de URL-Test," +msgid "Edit URL-Test Interval Failed," +msgstr "Fallo al modificar el intervalo de URL-Test," msgid "URL-Test Address Modify" msgstr "Modificar dirección de URL-Test" @@ -3143,8 +2723,8 @@ msgstr "Habilita reglas por proceso (solo para procesos del router). Si no está msgid "Enable Process Rule" msgstr "Activar reglas por proceso" -msgid "Warning: Because there is a port range" -msgstr "Advertencia: debido a que existe un rango de puertos" +msgid "Because there is a port range" +msgstr "Debido a que existe un rango de puertos" msgid "in the firewall rule settings" msgstr "en la configuración del firewall" @@ -3152,17 +2732,17 @@ msgstr "en la configuración del firewall" msgid "auto bypassing may cause the normal connection of the client not to reach the core, if necessary, please add your own in the access control!" msgstr "el bypass automático puede impedir que conexiones legítimas lleguen al núcleo. Añade reglas manuales si es necesario." -msgid "Tip: Start Add Port Bypassing Rules For Firewall Redirect and Firewall Rules..." -msgstr "Aviso: añadiendo reglas de bypass de puertos para redirecciones de firewall..." +msgid "Start Add Port Bypassing Rules For Firewall Redirect and Firewall Rules..." +msgstr "Añadiendo reglas de bypass de puertos para redirecciones de firewall..." -msgid "Tip: DNS Hijacking Mode is Dnsmasq Redirect..." -msgstr "Aviso: modo de secuestro DNS: redirección Dnsmasq..." +msgid "DNS Hijacking Mode is Dnsmasq Redirect..." +msgstr "Modo de secuestro DNS: redirección Dnsmasq..." -msgid "Tip: DNS Hijacking Mode is Firewall Redirect..." -msgstr "Aviso: modo de secuestro DNS: redirección por firewall..." +msgid "DNS Hijacking Mode is Firewall Redirect..." +msgstr "Modo de secuestro DNS: redirección por firewall..." -msgid "Tip: DNS Hijacking is Disabled..." -msgstr "Aviso: el secuestro DNS está desactivado..." +msgid "DNS Hijacking is Disabled..." +msgstr "El secuestro DNS está desactivado..." msgid "Fake-IP Range" msgstr "Rango de direcciones Fake-IP" @@ -3173,17 +2753,14 @@ msgstr "Configurar rango Fake-IP" msgid "IPv6 Settings" msgstr "Configuración IPv6" -msgid "Custom Config Overwrite Scripts Which Will Run After Plugin Own Completely, Please Be Careful, The Wrong Changes May Lead to Exceptions" -msgstr "Scripts de sobrescritura personalizados (se ejecutan tras las reglas internas). Usa con cuidado; cambios incorrectos pueden causar fallos." - msgid "Custom Firewall Rules, Support IPv4 and IPv6, All Rules Will Be Added After Plugin Own Completely" msgstr "Reglas de firewall personalizadas (IPv4/IPv6). Se aplican tras las reglas internas del plugin." -msgid "Tip: Start Add Custom Firewall Rules..." -msgstr "Aviso: aplicando reglas de firewall personalizadas..." +msgid "Start Add Custom Firewall Rules..." +msgstr "Aplicando reglas de firewall personalizadas..." -msgid "Tip: Start Running Custom Overwrite Scripts..." -msgstr "Aviso: ejecutando scripts de sobrescritura personalizados..." +msgid "Start Running Custom Overwrite Scripts..." +msgstr "Ejecutando scripts de sobrescritura personalizados..." msgid "Developer Settings" msgstr "Opciones de desarrollador" @@ -3200,12 +2777,6 @@ msgstr "No se ha obtenido respuesta." msgid "Client Fingerprint" msgstr "Huella del cliente" -msgid "Watchdog: Edit Client-fingerprint Failed," -msgstr "Watchdog: fallo al modificar la huella del cliente," - -msgid "Error: Edit Client-fingerprint Failed," -msgstr "Error: fallo al modificar la huella del cliente," - msgid "Traffic Control" msgstr "Control de tráfico" @@ -3254,23 +2825,23 @@ msgstr "Modo TUN" msgid "Mix Mode" msgstr "Modo Mixto (UDP–TUN, TCP–Redirect)" -msgid "Tip: IPv6 Proxy Mode is Redirect..." -msgstr "Tip: el modo proxy IPv6 es Redirect..." +msgid "IPv6 Proxy Mode is Redirect..." +msgstr "El modo proxy IPv6 es Redirect..." -msgid "Tip: IPv6 Proxy Mode is TUN..." -msgstr "Tip: el modo proxy IPv6 es TUN..." +msgid "IPv6 Proxy Mode is TUN..." +msgstr "El modo proxy IPv6 es TUN..." -msgid "Tip: IPv6 Proxy Mode is TProxy..." -msgstr "Tip: el modo proxy IPv6 es TProxy..." +msgid "IPv6 Proxy Mode is TProxy..." +msgstr "El modo proxy IPv6 es TProxy..." -msgid "Tip: IPv6 Proxy Mode is Mix..." -msgstr "Tip: el modo proxy IPv6 es Mixto..." +msgid "IPv6 Proxy Mode is Mix..." +msgstr "El modo proxy IPv6 es Mixto..." -msgid "Warning: Can't Settting Only Intranet Allowed Function, Get IPv4 WAN Interfaces error, Please Verify The Firewall's WAN Zone Name is wan, Ignore This IF The Device Does not Have a WAN Interfaces..." -msgstr "Advertencia: fallo al activar la función «solo intranet». No se pudo obtener la interfaz WAN IPv4. Comprueba que la zona WAN en el cortafuegos se llama «wan». Si el dispositivo no tiene interfaz WAN, ignora este aviso." +msgid "Can't Settting Only Intranet Allowed Function, Get IPv4 WAN Interfaces error, Please Verify The Firewall's WAN Zone Name is wan, Ignore This IF The Device Does not Have a WAN Interfaces..." +msgstr "Fallo al activar la función «solo intranet». No se pudo obtener la interfaz WAN IPv4. Comprueba que la zona WAN en el cortafuegos se llama «wan». Si el dispositivo no tiene interfaz WAN, ignora este aviso." -msgid "Warning: Can't Settting Only Intranet Allowed Function, Get IPv6 WAN Interfaces error, Please Verify The Firewall's WAN Zone Name is wan, Ignore This IF The Device Does not Have a WAN Interfaces..." -msgstr "Advertencia: fallo al activar la función «solo intranet». No se pudo obtener la interfaz WAN IPv6. Comprueba que la zona WAN en el cortafuegos se llama «wan». Si el dispositivo no tiene interfaz WAN, ignora este aviso." +msgid "Can't Settting Only Intranet Allowed Function, Get IPv6 WAN Interfaces error, Please Verify The Firewall's WAN Zone Name is wan, Ignore This IF The Device Does not Have a WAN Interfaces..." +msgstr "Fallo al activar la función «solo intranet». No se pudo obtener la interfaz WAN IPv6. Comprueba que la zona WAN en el cortafuegos se llama «wan». Si el dispositivo no tiene interfaz WAN, ignora este aviso." msgid "Config File Download Successful, Test If There is Any Errors..." msgstr "Archivo de configuración descargado correctamente. Probando si hay errores..." @@ -3284,8 +2855,8 @@ msgstr "prueba fallida" msgid "test is successful" msgstr "prueba correcta" -msgid "Error: Config File Tested Faild, Please Check The Log Infos!" -msgstr "Error: la prueba del archivo de configuración ha fallado. Consulta el registro del núcleo." +msgid "Config File Tested Faild, Please Check The Log Infos!" +msgstr "La prueba del archivo de configuración ha fallado. Consulta el registro del núcleo." msgid "Test The Config File First..." msgstr "Probando el archivo de configuración antes de iniciar..." @@ -3296,8 +2867,8 @@ msgstr "Otros parámetros" msgid "Edit Your Other Parameters Here" msgstr "Edita aquí tus parámetros adicionales" -msgid "Error: Config Not Found, Switch Config File to" -msgstr "Error: no se encontró el archivo de configuración; cambiando al archivo de configuración" +msgid "Config Not Found, Switch Config File to" +msgstr "No se encontró el archivo de configuración; cambiando al archivo de configuración" msgid "Enable Unified Delay" msgstr "Activar cálculo unificado de latencia" @@ -3305,14 +2876,14 @@ msgstr "Activar cálculo unificado de latencia" msgid "Change The Delay Calculation Method To Remove Extra Delays Such as Handshaking" msgstr "Cambia el método de cálculo de latencia para eliminar tiempos extra como el handshake." -msgid "Tip: If the download fails, try setting the CDN in Overwrite Settings - General Settings - Github Address Modify Options" -msgstr "Tip: si la descarga falla, prueba a configurar un CDN en Sobrescritura → General → Modificar direcciones de Github." +msgid "If the download fails, try setting the CDN in Overwrite Settings - General Settings - Github Address Modify Options" +msgstr "Si la descarga falla, prueba a configurar un CDN en Sobrescritura → General → Modificar direcciones de Github." msgid "Used for Downloading Subscriptions, Defaults to Clash" msgstr "User-Agent usado para descargar suscripciones (por defecto: Clash)" -msgid "Error: Set Proxies Address Skip Failed," -msgstr "Error: fallo al configurar la omisión de direcciones de proxy," +msgid "Set Proxies Address Skip Failed," +msgstr "Fallo al configurar la omisión de direcciones de proxy," msgid "Flush Failed" msgstr "Limpieza fallida" @@ -3332,8 +2903,8 @@ msgstr "Omitir direcciones de proxy" msgid "Bypassing Server Addresses And Preventing Duplicate Proxies" msgstr "Omite direcciones de servidores para evitar duplicados de proxy." -msgid "Warning: Unsupported format, Proxies Address Skip Function Ignore Proxy-providers File" -msgstr "Advertencia: formato no compatible; se omitirá la omisión de direcciones en archivos de proveedores de proxy." +msgid "Unsupported format, Proxies Address Skip Function Ignore Proxy-providers File" +msgstr "Formato no compatible; se omitirá la omisión de direcciones en archivos de proveedores de proxy." msgid "Custom Your CDN URL" msgstr "Configurar URL personalizada de CDN" @@ -3359,11 +2930,11 @@ msgstr "Selecciona la interfaz LAN adecuada" msgid "For More Useful Meta Core Functions Go Wiki" msgstr "Consulta el Wiki para más funciones del núcleo Meta" -msgid "Tip: Because Need Ensure Bypassing IP Option Work, Deleted The Fake-IP-Filter Rule" -msgstr "Tip: para garantizar que la omisión IP funcione, se ha eliminado la regla de Fake-IP-Filter." +msgid "Because Need Ensure Bypassing IP Option Work, Deleted The Fake-IP-Filter Rule" +msgstr "Para garantizar que la omisión IP funcione, se ha eliminado la regla de Fake-IP-Filter." -msgid "Tip: Because Need Ensure Bypassing IP Option Work, Added The Fake-IP-Filter Rule" -msgstr "Tip: para garantizar que la omisión IP funcione, se ha añadido la regla de Fake-IP-Filter." +msgid "Because Need Ensure Bypassing IP Option Work, Added The Fake-IP-Filter Rule" +msgstr "Para garantizar que la omisión IP funcione, se ha añadido la regla de Fake-IP-Filter." msgid "Fake-IP is not returned if the matching succeeds when blacklist mode or Fake-IP is returned if the matching succeeds when whitelist mode" msgstr "En modo lista negra: si coincide, no se devuelve Fake-IP. En modo lista blanca: solo si coincide se devuelve Fake-IP." @@ -3404,17 +2975,17 @@ msgstr "Sobrescribir la subred ECS en consultas DNS" msgid "Need Proxy-server-nameserver Option Must Be Setted, Auto Set to" msgstr "necesidad proxy-server-nameserver debe estar configurado. Se ajustará automáticamente a" -msgid "Tip: Nameserver Option Maybe All Setted The Proxy Option, Auto Set Proxy-server-nameserver Option to" -msgstr "Tip: los servidores nameserver podrían estar todos usando proxy. Se ajustará automáticamente proxy-server-nameserver a" +msgid "Nameserver Option Maybe All Setted The Proxy Option, Auto Set Proxy-server-nameserver Option to" +msgstr "Los servidores nameserver podrían estar todos usando proxy. Se ajustará automáticamente proxy-server-nameserver a" -msgid "Tip: Proxy-server-nameserver Option Maybe All Setted The Proxy Option, Auto Set Proxy-server-nameserver Option to" -msgstr "Tip: proxy-server-nameserver podría estar completamente en modo proxy. Se añadirá configuración automáticamente." +msgid "Proxy-server-nameserver Option Maybe All Setted The Proxy Option, Auto Set Proxy-server-nameserver Option to" +msgstr "Proxy-server-nameserver podría estar completamente en modo proxy. Se añadirá configuración automáticamente." msgid "For Avoiding Proxies Server Resolve Loop..." msgstr "Para evitar bucles de resolución en servidores proxy..." -msgid "Tip: Config File" -msgstr "Tip: archivo de configuración" +msgid "Config File" +msgstr "Archivo de configuración" msgid "Downloading URL" msgstr "URL de descarga de suscripción:" @@ -3422,11 +2993,11 @@ msgstr "URL de descarga de suscripción:" msgid "Downloading User-Agent" msgstr "User-Agent usado para descargar suscripción:" -msgid "Warning: Option" -msgstr "Advertencia: opción" +msgid "Option" +msgstr "Opción" -msgid "Tip: Option" -msgstr "Tip: opción" +msgid "Option" +msgstr "Opción" msgid "is Setted" msgstr "ha sido configurada" @@ -3437,17 +3008,17 @@ msgstr "como servidor DNS, lo que puede causar bucles DNS. Elimínalo si detecta msgid "as DNS Server Which May Cause DNS Loop, Already Remove It..." msgstr "como servidor DNS (posible bucle). Ha sido eliminado automáticamente." -msgid "Error: Set Custom DNS Failed," -msgstr "Error: falla al configurar DNS personalizado," +msgid "Set Custom DNS Failed," +msgstr "Falla al configurar DNS personalizado," -msgid "Error: Set proxy-server-nameserver Failed," -msgstr "Error: falla al configurar proxy-server-nameserver," +msgid "Set proxy-server-nameserver Failed," +msgstr "Falla al configurar proxy-server-nameserver," -msgid "Error: Set direct-nameserver Failed," -msgstr "Error: falla al configurar direct-nameserver," +msgid "Set direct-nameserver Failed," +msgstr "Falla al configurar direct-nameserver," -msgid "Error: Set fallback-filter Failed," -msgstr "Error: falla al configurar fallback-filter," +msgid "Set fallback-filter Failed," +msgstr "Falla al configurar fallback-filter," msgid "Rule" msgstr "Regla" @@ -3458,8 +3029,11 @@ msgstr "Global" msgid "Direct" msgstr "Directo" -msgid "Error: Config File Overwrite Failed," -msgstr "Error: falla al sobrescribir el archivo de configuración," +msgid "Config File Overwrite Failed," +msgstr "Falla al sobrescribir el archivo de configuración," + +msgid "Config File params checked Failed," +msgstr "Fallo en la verificación de parámetros del archivo de configuración," msgid "Edit" msgstr "Editar" @@ -3482,8 +3056,8 @@ msgstr "Puertos internos" msgid "Target" "Objetivo" -msgid "Error: Network Anomaly, Suspend Unlock Detection..." -msgstr "Error: anomalía de red, se suspende la detección de desbloqueo..." +msgid "Network Anomaly, Suspend Unlock Detection..." +msgstr "Anomalía de red, se suspende la detección de desbloqueo..." msgid "(Not Support mrs Format)" msgstr "(Formato mrs no soportado)" @@ -3494,11 +3068,11 @@ msgstr "Actualizar" msgid "Local Network" msgstr "Red local" -msgid "Error: LAN IP Address Get Error, Please Check The LAN Interface Setting or Choose the Correct Interface in the Setting!" -msgstr "Error: no se pudo obtener la IP LAN. Revisa la interfaz LAN o selecciona la correcta en ajustes." +msgid "LAN IP Address Get Error, Please Check The LAN Interface Setting or Choose the Correct Interface in the Setting!" +msgstr "No se pudo obtener la IP LAN. Revisa la interfaz LAN o selecciona la correcta en ajustes." -msgid "Warning: Skiped The Custom Rule Because Group & Proxy Not Found:" -msgstr "Advertencia: regla personalizada omitida por no encontrar grupo o proxy asociado:" +msgid "Skiped The Custom Rule Because Group & Proxy Not Found:" +msgstr "Regla personalizada omitida por no encontrar grupo o proxy asociado:" msgid "Disable quic-go GSO Support" msgstr "Desactivar soporte GSO para quic-go" @@ -3518,8 +3092,8 @@ msgstr "Desactivar IPv6" msgid "Smart Core" msgstr "Núcleo Smart" -msgid "Error: Failed to create update script!" -msgstr "Error: fallo al crear el script de actualización." +msgid "Failed to create update script!" +msgstr "Fallo al crear el script de actualización." msgid "Attempting to start update service..." msgstr "Intentando iniciar el servicio de actualización..." @@ -3527,8 +3101,8 @@ msgstr "Intentando iniciar el servicio de actualización..." msgid "Service start failed, retrying in 2 seconds..." msgstr "No se pudo iniciar el servicio; reintentando en 2 segundos..." -msgid "Error: Failed to start update service after 3 attempts, please check and try again later..." -msgstr "Error: el servicio de actualización no pudo iniciarse tras 3 intentos. Revisa los registros." +msgid "Failed to start update service after 3 attempts, please check and try again later..." +msgstr "El servicio de actualización no pudo iniciarse tras 3 intentos. Revisa los registros." msgid "Core Update" msgstr "Actualización del núcleo" @@ -3977,14 +3551,17 @@ msgstr "Introduce palabras clave para incluir nodos (una por línea)" msgid "Enter keywords to exclude nodes (one per line)" msgstr "Introduce palabras clave para excluir nodos (una por línea)" -msgid "Expire Time" -msgstr "Tiempo de expiración" +msgid "Expire" +msgstr "Expiración" -msgid "Remaining Traffic" -msgstr "Tráfico restante" +msgid "Traffic" +msgstr "Tráfico" -msgid "TG Group" -msgstr "Grupo TG" +msgid "Plan" +msgstr "Plan" + +msgid "Official" +msgstr "oficial" msgid "Invalid subscription URL format. Support HTTP/HTTPS subscription URLs or protocol links, can be separated by newlines or |" msgstr "Formato de URL no válido. Se admiten direcciones HTTP/HTTPS o enlaces de protocolo, separados por saltos de línea o |" @@ -4073,8 +3650,8 @@ msgstr "Estrategia de selección de nodo" msgid "Before Node Data Collect Completely, The Default is Sticky-sessions" msgstr "Hasta recopilar suficientes datos, usar estrategia por defecto: sesiones pegajosas" -msgid "Error: Setting Smart Auto Switch Failed," -msgstr "Error: no se pudo activar el cambio automático Smart," +msgid "Setting Smart Auto Switch Failed," +msgstr "No se pudo activar el cambio automático Smart," msgid "Flush Smart Cache" msgstr "Limpiar caché Smart" @@ -4154,32 +3731,32 @@ msgstr "Error al guardar la suscripción" msgid "Environment variable" msgstr "Variable de entorno" -msgid "Warning: DOWNLOAD FILE no target in" -msgstr "Advertencia: descarga de archivo sin destino especificado en" +msgid "DOWNLOAD FILE no target in" +msgstr "Descarga de archivo sin destino especificado en" -msgid "Error: DOWNLOAD FILE failed for" -msgstr "Error: la descarga falló para" +msgid "DOWNLOAD FILE failed for" +msgstr "La descarga falló para" -msgid "Warning: skip General key not allowed" -msgstr "Advertencia: parámetro General no permitido, ignorado" +msgid "skip General key not allowed" +msgstr "Parámetro General no permitido, ignorado" -msgid "Warning: skip General key type error" -msgstr "Advertencia: error en tipo de parámetro General, ignorado" +msgid "skip General key type error" +msgstr "Error en tipo de parámetro General, ignorado" -msgid "Warning: skip invalid Overwrite command" -msgstr "Advertencia: comando de sobrescritura no válido, ignorado" +msgid "skip invalid Overwrite command" +msgstr "Comando de sobrescritura no válido, ignorado" -msgid "Tip: Processing Overwrite Module" -msgstr "Aviso: procesando módulo de sobrescritura" +msgid "Processing Overwrite Module" +msgstr "Procesando módulo de sobrescritura" -msgid "Tip: Load Overwrite Script" -msgstr "Aviso: cargando script de sobrescritura" +msgid "Load Overwrite Script" +msgstr "Cargando script de sobrescritura" -msgid "Tip: DOWNLOAD FILE for" -msgstr "Aviso: descargando archivo para" +msgid "DOWNLOAD FILE for" +msgstr "Descargando archivo para" -msgid "Tip: Add Cron for" -msgstr "Aviso: añadiendo tarea programada para" +msgid "Add Cron for" +msgstr "Añadiendo tarea programada para" msgid "Delete" msgstr "Eliminar" @@ -4236,4 +3813,28 @@ msgid "Default" msgstr "Defecto" msgid "Disable-Qtype" -msgstr "Desactivar Qtype" \ No newline at end of file +msgstr "Desactivar Qtype" + +msgid "Disable Reuse" +msgstr "Deshabilitar reutilización" + +msgid "Disable Reuse The Connection" +msgstr "Deshabilitar reutilización de la conexión" + +msgid "Write file failed:" +msgstr "Fallo al escribir el archivo:" + +msgid "Fix short-id values type failed:" +msgstr "Fallo al modificar el tipo de valores short-id:" + +msgid "Interface" +msgstr "Interfaz" + +msgid "User" +msgstr "Usuario" + +msgid "Serial Number" +msgstr "Número de serie" + +msgid "Set Custom Overwrite Script Failed," +msgstr "Fallo al ejecutar el script de sobrescritura personalizado," \ No newline at end of file diff --git a/luci-app-openclash/po/zh-cn/openclash.zh-cn.po b/luci-app-openclash/po/zh-cn/openclash.zh-cn.po index cbd4f440..1eea70c4 100644 --- a/luci-app-openclash/po/zh-cn/openclash.zh-cn.po +++ b/luci-app-openclash/po/zh-cn/openclash.zh-cn.po @@ -5,8 +5,32 @@ msgid "OpenClash" msgstr "OpenClash" -msgid "A Clash Client For OpenWrt" -msgstr "一个运行在 OpenWrt 上的 Clash 客户端,兼容 Shadowsocks(R)、Vmess、Trojan、Snell 等协议,根据灵活的规则配置实现策略代理" +msgid "A Mihomo(Clash) Client For OpenWrt" +msgstr "一个运行在 OpenWrt 上的 Mihomo(Clash) 客户端,兼容 Shadowsocks(R)、Vmess、Trojan、Snell 等协议,根据灵活的规则配置实现策略代理" + +msgid "Error" +msgstr "错误" + +msgid "Tip" +msgstr "提示" + +msgid "Warning" +msgstr "警告" + +msgid "Watchdog" +msgstr "守护程序" + +msgid "Info" +msgstr "信息" + +msgid "Debug" +msgstr "调试" + +msgid "Silent" +msgstr "静默" + +msgid "Fatal" +msgstr "严重错误" msgid "Plugin Settings" msgstr "插件设置" @@ -20,18 +44,6 @@ msgstr "运行状态" msgid "Overwrite Settings" msgstr "覆写设置" -msgid "Rule Providers Append" -msgstr "规则附加" - -msgid "Game Rules Append" -msgstr "游戏规则附加" - -msgid "Other Rule Providers Append" -msgstr "第三方规则集附加" - -msgid "Custom Rule Providers Append" -msgstr "自定义规则集附加" - msgid "General Settings" msgstr "常规设置" @@ -287,8 +299,8 @@ msgstr "允许 IPv6 类型 DNS 解析" msgid "Enable to Resolve IPv6 DNS Requests" msgstr "允许解析 IPv6 类型的 DNS 请求" -msgid "Rules Setting" -msgstr "规则设置" +msgid "Common Setting" +msgstr "通用设置" msgid "Config Manage" msgstr "配置管理" @@ -335,9 +347,6 @@ msgstr "代理集文件列表" msgid "Rule Providers File List" msgstr "规则集文件列表" -msgid "Game Rules File List" -msgstr "游戏规则文件列表" - msgid "Please Make Sure Ports Available" msgstr "请确保端口可用" @@ -470,21 +479,6 @@ msgstr "更新大陆白名单" msgid "Chnroute Update" msgstr "大陆白名单订阅" -msgid "Other Rules Update(Only in Use)" -msgstr "正在使用第三方规则时才能更新" - -msgid "Enable Other Rules" -msgstr "第三方规则" - -msgid "Use Other Rules" -msgstr "将覆盖配置文件内的所有规则 (不包括自定义规则),启用前请先在此页面下方创建配置" - -msgid "lhie1 Rules" -msgstr "lhie1 规则" - -msgid "Auto Update Other Rules" -msgstr "正在使用第三方规则时更新设置才会生效" - msgid "Update Time (Every Week)" msgstr "更新时间(每周)" @@ -512,33 +506,6 @@ msgstr "每周六" msgid "Every Sunday" msgstr "每周日" -msgid "Update Other Rules" -msgstr "更新第三方规则" - -msgid "GlobalTV" -msgstr "国际流媒体" - -msgid "AsianTV" -msgstr "亚洲流媒体" - -msgid "CN Mainland TV" -msgstr "大陆流媒体" - -msgid "Proxy" -msgstr "必须代理的流量" - -msgid "Apple" -msgstr "苹果服务(Apple)" - -msgid "Google FCM" -msgstr "谷歌推送(Google FCM)" - -msgid "Scholar" -msgstr "学术网站(Scholar)" - -msgid "Microsoft" -msgstr "微软服务(Microsoft)" - msgid "Netflix" msgstr "奈飞(Netflix)" @@ -551,27 +518,6 @@ msgstr "哔哩哔哩(Bilibili)" msgid "Bahamut" msgstr "巴哈姆特(Bahamut)" -msgid "Steam" -msgstr "Steam(非下载流量)" - -msgid "Netease Music" -msgstr "网易云音乐" - -msgid "Speedtest" -msgstr "测速流量(Speedtest)" - -msgid "AdBlock" -msgstr "广告(AdBlock)" - -msgid "Domestic" -msgstr "国内流量" - -msgid "Others" -msgstr "未匹配到规则的流量" - -msgid "Choose Proxy Groups, Base On Your Config File" -msgstr "指定流量(策略)的代理方式,只支持选择(策略组),信息来源于您的配置文件" - msgid "Custom Clash Rules" msgstr "*自定义规则" @@ -633,8 +579,8 @@ msgstr "更新客户端" msgid "Only For IPK Install Type Or Not Release Memory" msgstr "只支持通过 IPK 安装的版本进行更新,因为随系统编译的版本更新后不会释放旧版本的闪存空间" -msgid "Onekey Create" -msgstr "一键生成" +msgid "Servers Manage" +msgstr "节点管理" msgid "Read Config" msgstr "读取配置" @@ -657,35 +603,8 @@ msgstr "返回概览" msgid "Refresh Page" msgstr "刷新页面" -msgid "Onekey Create (Servers&Groups manage)" -msgstr "一键生成(服务器&策略组管理)" - -msgid "Keep Settings" -msgstr "保留配置" - -msgid "Only Update Servers Below When Subscription" -msgstr "订阅时仅更新节点和代理集,保留下方策略组设置,不修改顺序" - -msgid "New Servers Group (Support Regex)" -msgstr "新节点默认策略组(请勿重复添加,支持正则匹配)" - -msgid "Set The New Subscribe Server's Default Proxy Groups" -msgstr "选择符合订阅要求的新节点的默认策略组(请勿重复添加)" - -msgid "Choose Template For Create Config" -msgstr "选择配置文件模板" - -msgid "Use Other Rules To Create Config" -msgstr "使用第三方规则快速创建配置文件(创建后可在全局设置页面调整参数)" - -msgid "Disable Create Config" -msgstr "只更新配置文件服务器节点信息" - -msgid "Mix Proxies" -msgstr "混合节点" - -msgid "Mix This Page's Proxies" -msgstr "一键生成配置文件时合并本页下方的所有代理服务器信息(不区分配置文件)" +msgid "Servers & Groups manage" +msgstr "节点 & 策略组管理" msgid "Type" msgstr "类型" @@ -750,14 +669,8 @@ msgstr "登录密码" msgid "None" msgstr "未配置" -msgid "Create Config" -msgstr "一键生成配置文件" - -msgid "Create Config By One-Click Only Need Proxies" -msgstr "一键生成配置文件功能只需要配置服务器节点信息或代理集信息" - -msgid "Proxy Groups(No Need Set when Config Create)" -msgstr "策略组配置(使用一键生成配置文件功能时无需设置)" +msgid "Proxy Groups" +msgstr "策略组配置" msgid "Proxies" msgstr "服务器节点配置" @@ -804,51 +717,6 @@ msgstr "QUIC 初始的连接接收窗口大小" msgid "QUIC max connection receive window" msgstr "QUIC 最大的连接接收窗口大小" -msgid "Edit Rule Providers" -msgstr "编辑规则集配置" - -msgid "Rule Providers Type" -msgstr "规则集类型" - -msgid "Choose The Rule Providers Type" -msgstr "选择规则集类型" - -msgid "Append Position" -msgstr "规则集匹配顺序" - -msgid "Priority Match" -msgstr "优先(覆盖)" - -msgid "Extended Match" -msgstr "扩展(补充)" - -msgid "Rule Providers Name" -msgstr "别名(请勿重名)" - -msgid "Rule Behavior" -msgstr "规则类型" - -msgid "Rule Format" -msgstr "规则格式" - -msgid "Choose The Rule Behavior" -msgstr "选择规则类型" - -msgid "Choose The Rule File Format, For More Info:" -msgstr "选择规则格式, 了解使用方式请前往:" - -msgid "Rule Providers Path" -msgstr "规则集路径" - -msgid "Update Your Rule Providers File From Config Luci Page" -msgstr "请先在配置文件管理页面上传您的规则集文件" - -msgid "Rule Providers URL" -msgstr "规则集地址" - -msgid "Rule Providers Interval(s)" -msgstr "规则集更新时间(秒)" - msgid "Edit Group" msgstr "编辑策略组配置" @@ -903,8 +771,8 @@ msgstr "添加到策略组(请勿重复添加,支持正则匹配)" msgid "Set Proxy Group" msgstr "指定策略组" -msgid "No Need Set when Config Create, The added Proxy Groups Must Exist" -msgstr "注意:使用一键生成配置文件功能时无需设置此项,修改配置文件前添加的策略组必须已创建" +msgid "The added Proxy Groups Must Exist" +msgstr "注意:修改配置文件前添加的策略组必须已创建" msgid "The added Dialer Proxy or Group Must Exist" msgstr "注意:修改配置文件前添加的策略组或者节点必须已创建" @@ -1005,48 +873,6 @@ msgstr "状态检查 URL" msgid "Health Check Interval(s)" msgstr "状态检查间隔(s)" -msgid "Game Rule's Name" -msgstr "选择游戏规则" - -msgid "Rule Provider's Name" -msgstr "选择规则集(请勿重复添加)" - -msgid "Select Proxy Group" -msgstr "选择策略组" - -msgid "Game Rules List" -msgstr "游戏规则列表" - -msgid "Rule Name" -msgstr "规则名称" - -msgid "Rule Type" -msgstr "规则类型" - -msgid "Rule Author" -msgstr "规则作者" - -msgid "Download Rule" -msgstr "下载规则" - -msgid "Exist" -msgstr "已下载" - -msgid "Not Exist" -msgstr "未下载" - -msgid "Serial Number" -msgstr "序号" - -msgid "Game Rules Manage" -msgstr "管理第三方游戏规则" - -msgid "Other Rule Provider Manage" -msgstr "管理第三方规则集" - -msgid "Other Rule Providers List" -msgstr "第三方规则集列表" - msgid "Proxy UDP Traffics" msgstr "UDP 流量转发" @@ -1107,6 +933,9 @@ msgstr "走代理的局域网设备 IP" msgid "WAN Bypassed Host List" msgstr "不走代理的 WAN IP" +msgid "WAN Bypassed Port List" +msgstr "不走代理的 WAN 端口" + msgid "LAN Bypassed Mac List" msgstr "不走代理的局域网设备 Mac" @@ -1116,8 +945,8 @@ msgstr "走代理的局域网设备 Mac" msgid "In The Fake-IP Mode, Only Pure IP Requests Are Supported, Please Setting Fake-IP-Filter First If You Need Domain Type Requests" msgstr "在 Fake-IP 模式下,只支持过滤纯 IP 类型的请求, 如果涉及域名访问请提前设置 Fake-IP-Filter" -msgid "Warning: iptables DSCP module not available, please try DCSP rule by core instead, skipping DSCP rule for" -msgstr "警告:iptables 的 DSCP 模块不可用,请尝试改用内核的 DSCP 规则,来源流量访问控制跳过设置 DSCP 规则" +msgid "iptables DSCP module not available, please try DCSP rule by core instead, skipping DSCP rule for" +msgstr "iptables 的 DSCP 模块不可用,请尝试改用内核的 DSCP 规则,来源流量访问控制跳过设置 DSCP 规则" msgid "Rule Match Proxy Mode" msgstr "仅代理命中规则流量" @@ -1320,29 +1149,29 @@ msgstr "还原失败" msgid "Save Nodes Selection Failed" msgstr "备份失败" -msgid "Tip: after started, please wait patiently until the connection is normal" -msgstr "Tip: OpenClash 成功启动后请耐心等待下方网站访问检查连接正常后再使用" +msgid "after started, please wait patiently until the connection is normal" +msgstr "OpenClash 成功启动后请耐心等待下方网站访问检查连接正常后再使用" -msgid "Tip: You can modify the profile on the profile page (for content that is not taken over)" -msgstr "Tip: 您可以在配置文件页面直接修改配置文件(适用于没被接管的内容)" +msgid "You can modify the profile on the profile page (for content that is not taken over)" +msgstr "您可以在配置文件页面直接修改配置文件(适用于没被接管的内容)" -msgid "Tip: do not write configuration files? Try to create one click on the server page" -msgstr "Tip: 不会编写配置文件?试试在【服务器与策略组管理】页面一键创建" +msgid "do not write configuration files? Try to create one click on the server page" +msgstr "不会编写配置文件?试试在【服务器与策略组管理】页面一键创建" -msgid "Tip: some website are abnormal? Try switching modes or using third-party rules" -msgstr "Tip: 某些网站链接出现异常? 试试切换模式或者使用第三方规则" +msgid "some website are abnormal? Try switching modes or using third-party rules" +msgstr "某些网站链接出现异常? 试试切换模式或者使用第三方规则" -msgid "Tip: using the fake IP mode can get a faster access experience" -msgstr "Tip: 使用 Fake-IP 模式可以获得更加快速的访问体验" +msgid "using the fake IP mode can get a faster access experience" +msgstr "使用 Fake-IP 模式可以获得更加快速的访问体验" -msgid "Tip: the nameserver group must have at least one server set when using custom DNS" -msgstr "Tip: 使用自定义 DNS 上游服务器时 NameServer 组必须设置至少一个服务器" +msgid "the nameserver group must have at least one server set when using custom DNS" +msgstr "使用自定义 DNS 上游服务器时 NameServer 组必须设置至少一个服务器" -msgid "Tip: if you don not use IPv6, please turn off the DHCP service of IPv6, otherwise the connection will be abnormal" -msgstr "Tip: 如果不使用 IPv6,请关闭 IPv6 的 DHCP 服务,否则会造成连接异常" +msgid "if you don not use IPv6, please turn off the DHCP service of IPv6, otherwise the connection will be abnormal" +msgstr "如果不使用 IPv6,请关闭 IPv6 的 DHCP 服务,否则会造成连接异常" -msgid "Tip: you can update the version in the settings page" -msgstr "Tip: 您可以在插件设置页面进行版本更新操作" +msgid "you can update the version in the settings page" +msgstr "您可以在插件设置页面进行版本更新操作" msgid "Note: if the update fails, you can manually download and upload" msgstr "注意:如更新失败可手动下载并上传" @@ -1395,8 +1224,8 @@ msgstr "最新客户端版本" msgid "Download Latest Client" msgstr "下载最新版本客户端" -msgid "Restore Default Config" -msgstr "还原默认配置" +msgid "Restore Default" +msgstr "还原默认" msgid "Failed to get the latest version. Please try again later!" msgstr "最新版本获取失败,请稍后再试!" @@ -1509,18 +1338,6 @@ msgstr "(全部国家且且包含官方全部信息数据)" msgid "(Only CN)" msgstr "(仅中国数据)" -msgid "Other Rules Edit" -msgstr "设置第三方规则" - -msgid "Get Group Names" -msgstr "获取策略组" - -msgid "Get Group Names After Select Config File" -msgstr "选择配置文件后请点击以获取对应的策略组" - -msgid "Other Rules Name" -msgstr "第三方规则" - msgid "Note" msgstr "备注" @@ -1611,8 +1428,8 @@ msgstr "到剪贴板" msgid "Exclude Keyword Match Default" msgstr "排除无效节点" -msgid "Tip: Start downloading" -msgstr "提示:开始下载" +msgid "Start downloading" +msgstr "开始下载" msgid "Download successful, start pre update test..." msgstr "下载成功,开始进行更新前测试..." @@ -1635,14 +1452,11 @@ msgstr "正在安装新版本,更新过程请不要刷新页面和进行其他 msgid "Installation failed..." msgstr "软件包安装失败..." -msgid "Tip: OpenClash update successful, about to restart!" -msgstr "提示:OpenClash 更新成功,即将进行重启!" +msgid "OpenClash update failed after 3 attempts, the file is saved in /tmp/openclash.ipk, please try to update manually with" +msgstr "OpenClash 更新失败,文件保存在 /tmp/openclash.ipk,请尝试以下命令手动更新" -msgid "Error: OpenClash update failed after 3 attempts, the file is saved in /tmp/openclash.ipk, please try to update manually with" -msgstr "错误:OpenClash 更新失败,文件保存在 /tmp/openclash.ipk,请尝试以下命令手动更新" - -msgid "Error: OpenClash update failed after 3 attempts, the file is saved in /tmp/openclash.apk, please try to update manually with" -msgstr "错误:OpenClash 更新失败,文件保存在 /tmp/openclash.apk,请尝试以下命令手动更新" +msgid "OpenClash update failed after 3 attempts, the file is saved in /tmp/openclash.apk, please try to update manually with" +msgstr "OpenClash 更新失败,文件保存在 /tmp/openclash.apk,请尝试以下命令手动更新" msgid "Download Failed after 3 attempts, please check the network or try again later!" msgstr "下载失败,请检查网络或稍后再试!" @@ -1650,11 +1464,11 @@ msgstr "下载失败,请检查网络或稍后再试!" msgid "Download failed..." msgstr "下载失败..." -msgid "Error: Failed to get version information, please try again later..." -msgstr "错误:获取版本信息失败,请稍后再试..." +msgid "Failed to get version information, please try again later..." +msgstr "获取版本信息失败,请稍后再试..." -msgid "Tip: OpenClash has not been updated, stop continuing!" -msgstr "提示:OpenClash 没有更新,停止继续操作!" +msgid "OpenClash has not been updated, stop continuing!" +msgstr "OpenClash 没有更新,停止继续操作!" msgid "Core Version Check Error, Please Try Again Later..." msgstr "内核最新版本检测失败,请稍后再试..." @@ -1686,74 +1500,23 @@ msgstr "版本内核下载失败..." msgid "Core Update Failed, Please Make Sure Enough Flash Memory Space And Try Again!" msgstr "版本内核更新失败,请确认设备闪存空间足够后再试!" -msgid "Warning: No Compiled Version Selected, Please Select In Update Page And Try Again!" -msgstr "警告:未选择编译版本,请到升级页面选择后再试!" +msgid "No Compiled Version Selected, Please Select In Update Page And Try Again!" +msgstr "未选择编译版本,请到升级页面选择后再试!" msgid "Core Has Not Been Updated, Stop Continuing Operation!" msgstr "版本内核没有更新,停止继续操作!" -msgid "Start Downloading Third Party Rules in Use..." -msgstr "开始下载使用中的第三方规则..." - -msgid "Warning: Multiple Other-Rules-Configurations Enabled, Ignore..." -msgstr "警告:检测到启用了多个第三方规则配置,忽略后续配置..." - -msgid "Download Successful, Start Preprocessing Rule File..." -msgstr "下载成功,开始预处理规则文件..." - -msgid "Error:" -msgstr "错误:" - -msgid "Tip:" -msgstr "提示:" - -msgid "Warning:" -msgstr "警告:" - -msgid "Rule File Format Validation Failed, Please Try Again Later..." -msgstr "规则文件格式校验失败,请稍后再试..." - -msgid "Error: Updated Others Rules" -msgstr "错误:更新的第三方规则文件" - -msgid "Has No Rules Field, Update Exit..." -msgstr "规则部分校验失败,请稍后再试..." - -msgid "Has Incompatible Proxy-Group, Update Exit, Please Wait For OpenClash Update To Adapt..." -msgstr "含有未支持的策略组,更新停止,请等待 OpenClash 版本更新适配..." - -msgid "Check The Downloaded Rule File For Updates..." -msgstr "检查下载的规则文件是否有更新..." - -msgid "Detected that The Downloaded Rule File Has Been Updated, Starting To Replace..." -msgstr "检测到下载的规则文件有更新,开始替换..." - -msgid "Other Rules" -msgstr "第三方规则文件" - msgid "Update Successful!" msgstr "更新成功!" -msgid "Updated Other Rules" -msgstr "检测到更新的规则文件" - msgid "No Change, Do Nothing!" msgstr "没有更新,停止继续操作!" msgid "Update Error, Please Try Again Later..." msgstr "下载失败,请检查网络或稍后再试..." -msgid "Other Rules Not Enable, Update Stop!" -msgstr "未启用第三方规则,更新程序终止!" - -msgid "Get Other Rules Settings Faild, Update Stop!" -msgstr "未找到第三方规则配置,更新程序终止!" - -msgid "is Replaced Successfully, Start Picking Nodes..." -msgstr "替换成功,检测到已启用节点筛选,开始挑选节点..." - -msgid "is Replaced Successfully, Start to Reserving..." -msgstr "替换成功,检测到已启用保留配置,开始进行设置..." +msgid "Start Picking Nodes..." +msgstr "检测到已启用节点筛选,开始挑选节点..." msgid "Config File Test Successful, Check If There is Any Update..." msgstr "配置文件测试成功,检查是否有更新..." @@ -1764,14 +1527,14 @@ msgstr "有更新,开始替换..." msgid "Download Successful, Start To Create..." msgstr "下载成功,本地没有配置文件,开始创建..." -msgid "Error: Ruby Works Abnormally, Please Check The Ruby Library Depends!" -msgstr "错误:Ruby 依赖异常,无法校验配置文件,请确认 Ruby 依赖工作正常后重试!" +msgid "Ruby Works Abnormally, Please Check The Ruby Library Depends!" +msgstr "Ruby 依赖异常,无法校验配置文件,请确认 Ruby 依赖工作正常后重试!" msgid "Config File Format Validation Failed..." msgstr "配置文件格式校验失败..." -msgid "Error: Updated Config" -msgstr "错误:更新的配置文件" +msgid "Updated Config" +msgstr "更新的配置文件" msgid "Has No Proxy Field, Update Exit..." msgstr "节点部分校验失败..." @@ -1785,8 +1548,8 @@ msgstr "配置文件格式校验失败,尝试不使用代理下载配置文件 msgid "Has No Proxy Field, Trying To Download Without Agent..." msgstr "节点部分校验失败,尝试不使用代理下载配置文件..." -msgid "Error: Config File" -msgstr "错误:配置文件" +msgid "Config File" +msgstr "配置文件" msgid "Subscribed Failed, Trying to Download Without Agent..." msgstr "订阅失败,尝试不使用代理下载配置文件..." @@ -1929,7 +1692,7 @@ msgstr "异常!" msgid "Deleting Old Configuration..." msgstr "正在删除旧配置..." -msgid "Error: Unable To Parse Config File, Please Check And Try Again!" +msgid "Unable To Parse Config File, Please Check And Try Again!" msgstr "配置文件校验失败,请检查配置文件后重试!" msgid "Start Writing" @@ -1944,8 +1707,8 @@ msgstr "节点到配置文件..." msgid "Proxy-provider To Config File..." msgstr "代理集到配置文件..." -msgid "Unable To Parse, Please Choose One-key Function To Create Config File..." -msgstr "的信息读取失败,无法进行修改,请选择一键创建配置文件..." +msgid "Unable To Parse..." +msgstr "的信息读取失败..." msgid "Setting Secondary DNS Server List..." msgstr "正在设置第二 DNS 服务器列表..." @@ -1965,68 +1728,56 @@ msgstr "读取完成!" msgid "Write Successful!" msgstr "写入完成!" -msgid "Creating By Using lhie1 Rules..." -msgstr "使用 lhie1 规则创建中..." - -msgid "Created Successful, Updating Proxies, Proxy-providers, Groups..." -msgstr "创建完成,正在更新服务器、代理集、策略组信息..." - msgid "Proxies, Proxy-providers, Groups Edited Successful, Updating Config File" msgstr "服务器、代理集、策略组信息修改完成,正在更新配置文件" -msgid "Warning: Because of The Different Porxy-Group's Name, Stop Setting The Other Rules!" -msgstr "警告:由于第三方规则设置中的策略组名称与配置文件中的不符或不存在,停止继续设置第三方规则!" +msgid "Detected That The nameserver DNS Option Has No Server Set, Starting To Complete..." +msgstr "检测到 DNS 选项下的 Nameserver 未设置服务器,开始补全..." -msgid "Error: Missing Porxy-Group's Name, Stop Setting The Other Rules!" -msgstr "错误:丢失或未指定第三方规则中的部分策略组,停止继续设置第三方规则!" +msgid "Detected That The default-nameserver DNS Option Has No Server Set, Starting To Complete..." +msgstr "检测到 DNS 选项下的 Default-nameserver 未设置服务器,开始补全..." -msgid "Tip: Detected That The nameserver DNS Option Has No Server Set, Starting To Complete..." -msgstr "提示:检测到 DNS 选项下的 Nameserver 未设置服务器,开始补全..." - -msgid "Tip: Detected That The default-nameserver DNS Option Has No Server Set, Starting To Complete..." -msgstr "提示:检测到 DNS 选项下的 Default-nameserver 未设置服务器,开始补全..." - -msgid "Error: Nameserver Option Must Be Setted, Stop Customing DNS Servers" -msgstr "错误:配置文件 DNS 选项下的 Nameserver 必须设置服务器,已停止设置自定义 DNS 服务器!" +msgid "Nameserver Option Must Be Setted, Stop Customing DNS Servers" +msgstr "配置文件 DNS 选项下的 Nameserver 必须设置服务器,已停止设置自定义 DNS 服务器!" msgid "Config File Does Not Exist, You Have Set Subscription Information, Ready To Download..." msgstr "配置文件不存在,您已设置订阅信息,准备开始下载..." -msgid "Error: Config Not Found" -msgstr "错误:缺少配置文件,请上传或更新配置文件!" +msgid "Config Not Found" +msgstr "缺少配置文件,请上传或更新配置文件!" -msgid "Error: Config File Format Validation Failed..." -msgstr "错误:配置文件格式校验失败..." +msgid "Config File Format Validation Failed..." +msgstr "配置文件格式校验失败..." -msgid "Tip: Detected that the GEOIP Database is not Installed, Ready to Download..." -msgstr "提示:检测到 GEOIP 数据库文件不存在,准备开始下载..." +msgid "Detected that the GEOIP Database is not Installed, Ready to Download..." +msgstr "检测到 GEOIP 数据库文件不存在,准备开始下载..." -msgid "Tip: Detected that the GEOSITE Database is not Installed, Ready to Download..." -msgstr "提示:检测到 GEOSITE 数据库文件不存在,准备开始下载..." +msgid "Detected that the GEOSITE Database is not Installed, Ready to Download..." +msgstr "检测到 GEOSITE 数据库文件不存在,准备开始下载..." -msgid "Tip: Detected that the GEOIP Dat is not Installed, Ready to Download..." -msgstr "提示:检测到 GEOIP Dat 数据库文件不存在,准备开始下载..." +msgid "Detected that the GEOIP Dat is not Installed, Ready to Download..." +msgstr "检测到 GEOIP Dat 数据库文件不存在,准备开始下载..." -msgid "Tip: Detected that the Core is not Installed, Ready to Download..." -msgstr "提示:检测到内核文件不存在,准备开始下载..." +msgid "Detected that the Core is not Installed, Ready to Download..." +msgstr "检测到内核文件不存在,准备开始下载..." -msgid "Tip: Detected that the Chnroute Cidr is not Installed, Ready to Download..." -msgstr "提示:检测到大陆白名单列表不存在,准备开始下载..." +msgid "Detected that the Chnroute Cidr is not Installed, Ready to Download..." +msgstr "检测到大陆白名单列表不存在,准备开始下载..." -msgid "Tip: Detected that the Chnroute Cidr List Format is wrong, Ready to Reformat..." -msgstr "提示:检测到大陆白名单列表格式错误,准备重新格式化..." +msgid "Detected that the Chnroute Cidr List Format is wrong, Ready to Reformat..." +msgstr "检测到大陆白名单列表格式错误,准备重新格式化..." -msgid "Error: OpenClash Can Not Start, Please Check The Error Info And Try Again!" -msgstr "错误:OpenClash 启动失败,请到日志页面查看详细错误信息!" +msgid "OpenClash Can Not Start, Please Check The Error Info And Try Again!" +msgstr "OpenClash 启动失败,请到日志页面查看详细错误信息!" msgid "Found 53 Port Hijacked, Clean Up Firewall Rules..." msgstr "发现 53 端口被劫持,清理防火墙规则..." -msgid "Tip: OpenClash Start Running..." -msgstr "提示:OpenClash 开始启动..." +msgid "OpenClash Start Running..." +msgstr "OpenClash 开始启动..." -msgid "Tip: OpenClash Restart..." -msgstr "提示:OpenClash 重新启动中..." +msgid "OpenClash Restart..." +msgstr "OpenClash 重新启动中..." msgid "Step 1: Get The Configuration..." msgstr "第一步: 获取配置..." @@ -2049,17 +1800,20 @@ msgstr "第五步: 添加计划任务,启动进程守护程序..." msgid "Step 6: Core Status Checking and Firewall Rules Setting..." msgstr "第六步: 内核状态检查及防火墙规则设置..." -msgid "Tip: OpenClash Start Successful!" -msgstr "提示:OpenClash 启动成功,请等待服务器上线!" +msgid "OpenClash Start Successful!" +msgstr "OpenClash 启动成功,请等待服务器上线!" -msgid "Tip: Firewall Reload Successful!" -msgstr "提示:防火墙重置成功!" +msgid "OpenClash Already Running, Exit..." +msgstr "OpenClash 正在运行,退出启动..." -msgid "Warning: Please Note That Network May Abnormal With IPv6's DHCP Server" -msgstr "警告:检测到您启用了 IPv6 的 DHCP 服务,可能会造成连接异常!" +msgid "Firewall Reload Successful!" +msgstr "防火墙重置成功!" -msgid "Tip: OpenClash Stoping..." -msgstr "提示:OpenClash 开始关闭..." +msgid "Please Note That Network May Abnormal With IPv6's DHCP Server" +msgstr "检测到您启用了 IPv6 的 DHCP 服务,可能会造成连接异常!" + +msgid "OpenClash Stoping..." +msgstr "OpenClash 开始关闭..." msgid "Step 1: Backup The Current Groups State..." msgstr "第一步: 备份当前策略组状态..." @@ -2067,20 +1821,17 @@ msgstr "第一步: 备份当前策略组状态..." msgid "Step 2: Delete OpenClash Firewall Rules..." msgstr "第二步: 删除 OpenClash 防火墙规则..." -msgid "Step 3: Close The OpenClash Daemons..." -msgstr "第三步: 关闭 OpenClash 守护程序..." +msgid "Step 3: Close The OpenClash Services..." +msgstr "第三步: 关闭 OpenClash 相关服务..." -msgid "Step 4: Close The Clash Core Process..." -msgstr "第四步: 关闭 Clash 主程序..." +msgid "Step 4: Restart Dnsmasq..." +msgstr "第四步: 重启 Dnsmasq 程序..." -msgid "Step 5: Restart Dnsmasq..." -msgstr "第五步: 重启 Dnsmasq 程序..." +msgid "Step 5: Delete OpenClash Residue File..." +msgstr "第五步:删除 OpenClash 残留文件..." -msgid "Step 6: Delete OpenClash Residue File..." -msgstr "第六步:删除 OpenClash 残留文件..." - -msgid "Tip: OpenClash Already Stop!" -msgstr "提示:OpenClash 已关闭!" +msgid "OpenClash Already Stop!" +msgstr "OpenClash 已关闭!" msgid "Skip Reload OpenClash Firewall Rules Until 5 Minutes Later..." msgstr "5 分钟内重置已超过限制次数,跳过本次 OpenClash 防火墙规则重置..." @@ -2091,17 +1842,20 @@ msgstr "重置 OpenClash 防火墙规则..." msgid "Manually Reload Firewall Rules..." msgstr "重置 OpenClash 防火墙规则..." -msgid "Warning: OpenClash Now Disabled, Need Start From Luci Page, Exit..." -msgstr "警告:OpenClash 目前处于未启用状态,请从插件页面启动本插件,脚本退出..." +msgid "OpenClash Now Disabled, Need Start From Luci Page, Exit..." +msgstr "OpenClash 目前处于未启用状态,请从插件页面启动本插件,脚本退出..." -msgid "Watchdog: Log Size Limit, Clean Up All Log Records..." -msgstr "守护程序:因日志大小限制,清理所有日志内容..." +msgid "Log Size Limit, Clean Up All Log Records..." +msgstr "因日志大小限制,清理所有日志内容..." -msgid "Watchdog: Setting Firewall For Rules Order..." -msgstr "守护程序:检测到防火墙规则顺序有误,修改插件防火墙规则..." +msgid "Setting Firewall For Rules Order..." +msgstr "检测到防火墙规则顺序有误,修改插件防火墙规则..." -msgid "Watchdog: Force Reset DNS Hijack..." -msgstr "守护程序:重新设置 Dnsmasq 的 DNS 转发选项..." +msgid "Setting Firewall For IP Rules Table Recreate..." +msgstr "检测到路由表异常,重置插件防火墙规则..." + +msgid "Force Reset DNS Hijack..." +msgstr "重新设置 Dnsmasq 的 DNS 转发选项..." msgid "Rule File" msgstr "规则文件" @@ -2121,27 +1875,6 @@ msgstr "URL-Test 策略组切换灵敏度" msgid "Attention:" msgstr "注意事项:" -msgid "The game proxy is a test function and does not guarantee the availability of rules" -msgstr "游戏代理为测试功能,不保证规则可用性" - -msgid "Preparation steps:" -msgstr "准备步骤:" - -msgid "1. Check the policy group and node you are going to use, Policy group type suggestion: fallback, game nodes must be support UDP and not a Vmess" -msgstr "1、检查您准备使用的策略组和节点,策略组类型建议: FallBack,游戏节点必须支持 UDP 且不是 Vmess 节点" - -msgid "2. Click the or button to enter the rule list and download the rules you want to use" -msgstr "2、点击《管理第三方游戏规则》或者《管理第三方规则集》按钮进入规则列表下载您要使用的规则" - -msgid "3. On this page, set the corresponding configuration file and policy group of the rule you have downloaded, and save the settings" -msgstr "3、在此页面设置您已下载的规则的对应配置文件、策略组并保存设置" - -msgid "When setting this page, if the groups is empty, please go to the page to add" -msgstr "本页设置时如策略组为空,请先到《一键生成》页面进行添加" - -msgid "Introduction to rule set usage:" -msgstr "规则集使用介绍:" - msgid "Introduction to proxy usage:" msgstr "代理使用介绍:" @@ -2163,86 +1896,11 @@ msgstr "注意: 如遇到配置丢失或者需要还原默认配置,请尝试 msgid "Take Effect If Fallback DNS Setted, Prevent DNS Pollution" msgstr "只有在配置文件设置了 Fallback 组的 DNS 时才会生效,正确设置可以有效防止 DNS 污染" -msgid "Error: Fallback-Filter Need fallback of DNS Been Setted, Ignore..." -msgstr "错误:只有在配置文件设置了 Fallback 组的 DNS 时 Fallback-Filter 才会生效,跳过此项修改..." +msgid "Fallback-Filter Need fallback of DNS Been Setted, Ignore..." +msgstr "只有在配置文件设置了 Fallback 组的 DNS 时 Fallback-Filter 才会生效,跳过此项修改..." -msgid "Error: Unable To Parse Custom Fallback-Filter File, Ignore..." -msgstr "错误:读取自定义的 Fallback-Filter 设置失败,跳过此项修改..." - -msgid "Simple & trustworthy" -msgstr "简单 & 值得信赖" - -msgid "Cross-platform Support" -msgstr "丰富的第三方应用兼容性" - -msgid "Global Acceleration Network" -msgstr "全球网络基础设施" - -msgid "Easy to Use" -msgstr "操作简易" - -msgid "Intelligent Shunting" -msgstr "智能分流" - -msgid "Perfect Technical Support" -msgstr "完善技术支持" - -msgid "Plan Expiration Time" -msgstr "到期时间" - -msgid "Account Balances" -msgstr "账户余额" - -msgid "Aff Balances" -msgstr "返利余额" - -msgid "Account Integral" -msgstr "账户积分" - -msgid "Today Used" -msgstr "今日已用" - -msgid "Plan Used" -msgstr "本月已用" - -msgid "Plan Unused" -msgstr "剩余流量" - -msgid "Plan Traffic" -msgstr "套餐流量" - -msgid "Checkin" -msgstr "试试手气" - -msgid "Dler Cloud Account Login Failed! Please Check And Try Again..." -msgstr "Dler Cloud 账户登录失败!请检查账户信息并重试..." - -msgid "Dler Cloud Account Login Failed, The Error Info is" -msgstr "Dler Cloud 账户登录失败,错误信息" - -msgid "Dler Cloud Checkin Failed! Please Check And Try Again..." -msgstr "Dler Cloud 签到失败,请稍后再试!" - -msgid "Account Email Address" -msgstr "账号地址" - -msgid "Account Password" -msgstr "账号密码" - -msgid "Checkin Interval (hour)" -msgstr "签到间隔(小时)" - -msgid "Checkin Multiple" -msgstr "签到倍数" - -msgid "Multiple Must Be a Positive Integer and No More Than 100" -msgstr "倍数必须是正整数且不大于 100" - -msgid "Dler Cloud Checkin Successful, Result:" -msgstr "Dler Cloud 签到成功,结果:" - -msgid "Dler Cloud Checkin Failed, Result:" -msgstr "Dler Cloud 签到失败,结果:" +msgid "Unable To Parse Custom Fallback-Filter File, Ignore..." +msgstr "读取自定义的 Fallback-Filter 设置失败,跳过此项修改..." msgid "Downloading Rule..." msgstr "正在下载规则..." @@ -2253,131 +1911,62 @@ msgstr "下载失败" msgid "Download Successful" msgstr "下载成功" -msgid "Rule No Change" -msgstr "规则没有更新" - msgid "Download Timeout" msgstr "下载超时" -msgid "Rule Project:" -msgstr "规则项目:" +msgid "Load File Failed," +msgstr "文件解析失败," -msgid "Login..." -msgstr "登录中..." +msgid "Set General Failed," +msgstr "修改 General 配置失败," -msgid "Dler Cloud Login Successful" -msgstr "Dler Cloud 登录成功" +msgid "Set authentication Failed," +msgstr "修改 Authentication 配置失败," -msgid "Dler Cloud Login Faild" -msgstr "Dler Cloud 登录失败" +msgid "DNS Loop Check," +msgstr "DNS 回环检查失败," -msgid "Login Account" -msgstr "登录账号" +msgid "proxy-groups Get Failed," +msgstr "proxy-groups 获取失败," -msgid "Dler Cloud Logout Successful" -msgstr "Dler Cloud 已成功退出" +msgid "Set Hosts Rules Failed," +msgstr "修改 Hosts 配置失败," -msgid "Dler Cloud Logout Faild" -msgstr "Dler Cloud 退出失败" +msgid "Set Fake-IP-Filter Failed," +msgstr "修改 Fake-IP-Filter 配置失败," -msgid "Logout Account" -msgstr "退出账号" +msgid "Set Nameserver-Policy Failed," +msgstr "修改 Nameserver-Policy 配置失败," -msgid "Account Login" -msgstr "账号登录" +msgid "Set Custom Rules Failed," +msgstr "设置自定义规则失败," -msgid "Account logged in" -msgstr "账号已登录" +msgid "Set BT/P2P DIRECT Rules Failed," +msgstr "设置仅代理命中规则流量(BT/P2P 直连)失败," -msgid "Account not logged in" -msgstr "账号未登录" +msgid "Filter Proxies Failed," +msgstr "节点筛选失败," -msgid "Logout..." -msgstr "退出中..." +msgid "Unable To Parse Config File," +msgstr "配置文件解析失败," -msgid "Error Login Info" -msgstr "登录信息错误" +msgid "Edit Provider Path Failed," +msgstr "修改集路径失败," -msgid "Warning: Proxy is no longer used. Auto replaced by proxies" -msgstr "警告:【Proxy】写法已不再支持,自动替换为 proxies" +msgid "Edit URL-Test Group Tolerance Option Failed," +msgstr "修改 URL-Test 策略组容忍值失败," -msgid "Warning: Proxy Group is no longer used. Auto replaced by proxy-groups" -msgstr "警告:【Proxy Group】写法已不再支持,自动替换为 proxy-groups" +msgid "Resolve Proxy-providers Failed," +msgstr "解析代理集失败," -msgid "Warning: Rule is no longer used. Auto replaced by rules" -msgstr "警告:【Rule】写法已不再支持,自动替换为 rules" +msgid "Resolve Proxies Failed," +msgstr "节点解析失败," -msgid "Warning: rule-provider is no longer used. Auto replaced by rule-providers" -msgstr "警告:【rule-provider】写法已不再支持,自动替换为 rule-providers" +msgid "Resolve Groups Failed," +msgstr "策略组解析失败," -msgid "Error: Load File Failed," -msgstr "错误:文件解析失败," - -msgid "Error: Set General Failed," -msgstr "错误:修改 General 配置失败," - -msgid "Error: Set authentication Failed," -msgstr "错误:修改 Authentication 配置失败," - -msgid "Error: DNS Loop Check," -msgstr "错误:DNS 回环检查失败," - -msgid "Error: proxy-groups Get Failed," -msgstr "错误:proxy-groups 获取失败," - -msgid "Error: Set Hosts Rules Failed," -msgstr "错误:修改 Hosts 配置失败," - -msgid "Error: Set Fake-IP-Filter Failed," -msgstr "错误:修改 Fake-IP-Filter 配置失败," - -msgid "Error: Set Nameserver-Policy Failed," -msgstr "错误:修改 Nameserver-Policy 配置失败," - -msgid "Error: Set Custom Rules Failed," -msgstr "错误:设置自定义规则失败," - -msgid "Error: Set BT/P2P DIRECT Rules Failed," -msgstr "错误:设置仅代理命中规则流量(BT/P2P 直连)失败," - -msgid "Error: Set lhie1 Rules Failed," -msgstr "错误:设置第三方规则(lhie1)失败," - -msgid "Error: Filter Proxies Failed," -msgstr "错误:节点筛选失败," - -msgid "Error: Unable To Parse Config File," -msgstr "错误:配置文件解析失败," - -msgid "Error: Unable To Parse Updated Rules File," -msgstr "错误:更新的规则文件解析失败," - -msgid "Error: Edit Provider Path Failed," -msgstr "错误:修改集路径失败," - -msgid "Error: Edit URL-Test Group Tolerance Option Failed," -msgstr "错误:修改 URL-Test 策略组容忍值失败," - -msgid "Error: Game Proxy Merge Failed," -msgstr "错误:游戏规则策略组合并失败," - -msgid "Error: Rule Set Add Failed," -msgstr "错误:规则集 Rule-Set 规则添加失败," - -msgid "Error: Custom Rule Provider Merge Failed," -msgstr "错误:规则集 Rule Provider 合并失败," - -msgid "Error: Resolve Proxy-providers Failed," -msgstr "错误:解析代理集失败," - -msgid "Error: Resolve Proxies Failed," -msgstr "错误:节点解析失败," - -msgid "Error: Resolve Groups Failed," -msgstr "错误:策略组解析失败," - -msgid "Error: Set default-nameserver Failed," -msgstr "错误:修改 Default-nameserver 配置失败," +msgid "Set default-nameserver Failed," +msgstr "修改 Default-nameserver 配置失败," msgid "switching succeeded!" msgstr "切换成功!" @@ -2388,9 +1977,6 @@ msgstr "切换失败!" msgid "Current Config File" msgstr "当前配置文件" -msgid "Official Website" -msgstr "官方网站" - msgid "Up" msgstr "上传" @@ -2436,9 +2022,6 @@ msgstr "备份文件" msgid "Backup File Restore Successful!" msgstr "备份文件恢复成功!" -msgid "Backup OpenClash" -msgstr "备份 OpenClash" - msgid "Not Select" msgstr "未选择" @@ -2472,8 +2055,8 @@ msgstr "所有策略组" msgid "Are you sure want to switch the running mode?" msgstr "确认要切换运行模式吗?" -msgid "Tip: Because of the file" -msgstr "提示:由于文件" +msgid "Because of the file" +msgstr "由于文件" msgid "modificated, Pause quick start..." msgstr "被修改,暂停快速启动..." @@ -2526,41 +2109,41 @@ msgstr "解锁区域筛选" msgid "Unlock Nodes Filter" msgstr "解锁节点筛选" -msgid "Tip: Start Auto Select Proxy For Netflix Unlock..." -msgstr "提示:开始自动选择(检测)Netflix 解锁节点..." +msgid "Start Auto Select Proxy For Netflix Unlock..." +msgstr "开始自动选择(检测)Netflix 解锁节点..." -msgid "Tip: Start Auto Select Proxy For Disney Plus Unlock..." -msgstr "提示:开始自动选择(检测)Disney Plus 解锁节点..." +msgid "Start Auto Select Proxy For Disney Plus Unlock..." +msgstr "开始自动选择(检测)Disney Plus 解锁节点..." -msgid "Tip: Start Auto Select Proxy For HBO Max Unlock..." -msgstr "提示:开始自动选择(检测)HBO Max 解锁节点..." +msgid "Start Auto Select Proxy For HBO Max Unlock..." +msgstr "开始自动选择(检测)HBO Max 解锁节点..." -msgid "Tip: Start Auto Select Proxy For YouTube Premium Unlock..." -msgstr "提示:开始自动选择(检测)YouTube Premium 解锁节点..." +msgid "Start Auto Select Proxy For YouTube Premium Unlock..." +msgstr "开始自动选择(检测)YouTube Premium 解锁节点..." -msgid "Tip: Start Auto Select Proxy For TVB Anywhere+ Unlock..." -msgstr "提示:开始自动选择(检测)TVB Anywhere+ 解锁节点..." +msgid "Start Auto Select Proxy For TVB Anywhere+ Unlock..." +msgstr "开始自动选择(检测)TVB Anywhere+ 解锁节点..." -msgid "Tip: Start Auto Select Proxy For Amazon Prime Video Unlock..." -msgstr "提示:开始自动选择(检测)Amazon Prime Video 解锁节点..." +msgid "Start Auto Select Proxy For Amazon Prime Video Unlock..." +msgstr "开始自动选择(检测)Amazon Prime Video 解锁节点..." -msgid "Tip: Start Auto Select Proxy For DAZN Unlock..." -msgstr "提示:开始自动选择(检测)DAZN 解锁节点..." +msgid "Start Auto Select Proxy For DAZN Unlock..." +msgstr "开始自动选择(检测)DAZN 解锁节点..." -msgid "Tip: Start Auto Select Proxy For Paramount Plus Unlock..." -msgstr "提示:开始自动选择(检测)Paramount Plus 解锁节点..." +msgid "Start Auto Select Proxy For Paramount Plus Unlock..." +msgstr "开始自动选择(检测)Paramount Plus 解锁节点..." -msgid "Tip: Start Auto Select Proxy For Discovery Plus Unlock..." -msgstr "提示:开始自动选择(检测)Discovery Plus 解锁节点..." +msgid "Start Auto Select Proxy For Discovery Plus Unlock..." +msgstr "开始自动选择(检测)Discovery Plus 解锁节点..." -msgid "Tip: Start Auto Select Proxy For Bilibili Unlock..." -msgstr "提示:开始自动选择(检测)Bilibili 解锁节点..." +msgid "Start Auto Select Proxy For Bilibili Unlock..." +msgstr "开始自动选择(检测)Bilibili 解锁节点..." -msgid "Tip: Start Auto Select Proxy For Google Not CN Unlock..." -msgstr "提示:开始自动选择(检测)Google 非送中节点..." +msgid "Start Auto Select Proxy For Google Not CN Unlock..." +msgstr "开始自动选择(检测)Google 非送中节点..." -msgid "Tip: Start Auto Select Proxy For OpenAI Unlock..." -msgstr "提示:开始自动选择(检测)OpenAI 解锁节点..." +msgid "Start Auto Select Proxy For OpenAI Unlock..." +msgstr "开始自动选择(检测)OpenAI 解锁节点..." msgid "Netflix Group:" msgstr "Netflix 策略组:" @@ -2823,17 +2406,17 @@ msgstr "规则模式" msgid "ALL Functions In Stream Enhance Tag Will Not Work After Disable" msgstr "禁用后将无法使用流媒体增强标签中的所有功能" -msgid "Error: Set Router Self Proxy Rule Failed," -msgstr "错误:修改路由自身代理规则失败," +msgid "Set Router Self Proxy Rule Failed," +msgstr "修改路由自身代理规则失败," -msgid "Error: Streaming Unlock Has No Parameter of Type, Exiting..." -msgstr "错误:流媒体解锁没有指定需要检测的流媒体类型,退出..." +msgid "Streaming Unlock Has No Parameter of Type, Exiting..." +msgstr "流媒体解锁没有指定需要检测的流媒体类型,退出..." -msgid "Error: Streaming Unlock Could not Work Because of Router-Self Proxy Disabled, Exiting..." -msgstr "错误:因为禁用了代理路由器自身流量,流媒体解锁无法工作,退出..." +msgid "Streaming Unlock Could not Work Because of Router-Self Proxy Disabled, Exiting..." +msgstr "因为禁用了代理路由器自身流量,流媒体解锁无法工作,退出..." -msgid "Error: Multiple Scripts Running, Exiting..." -msgstr "错误:多个脚本运行中,退出..." +msgid "Multiple Scripts Running, Exiting..." +msgstr "多个脚本运行中,退出..." msgid "Enable Sniffer" msgstr "*启用流量(域名)探测" @@ -2844,6 +2427,9 @@ msgstr "流量(域名)探测能有效防止域名分流异常和 DNS 劫持 msgid "Override All Dns Query" msgstr "启用后将尽可能的覆盖 DNS 查询到的域名" +msgid "Rules Setting" +msgstr "规则设置" + msgid "Meta Settings" msgstr "Meta 设置" @@ -3027,9 +2613,6 @@ msgstr "港澳台限定" msgid "Taiwan Only" msgstr "台湾限定" -msgid "Backup Section" -msgstr "插件备份" - msgid "Backup Exclude Cores" msgstr "不备份内核" @@ -3054,8 +2637,8 @@ msgstr "绕过指定区域 IPv6 黑名单" msgid "Domains or IPs in The List Will Not be Affected by The China IP Route Option, Depend on Dnsmasq" msgstr "列表中的域名或 IP 将不会受到绕过指定区域 IP 选项的影响,此功能依赖于 Dnsmasq" -msgid "Warning: You May Need to Turn off The Rebinding Protection Option of Dnsmasq When Hosts Has Set a Reserved Address..." -msgstr "警告:Hosts 设置了保留地址时需要关闭 Dnsmasq 的重绑定保护选项才能生效..." +msgid "You May Need to Turn off The Rebinding Protection Option of Dnsmasq When Hosts Has Set a Reserved Address..." +msgstr "Hosts 设置了保留地址时需要关闭 Dnsmasq 的重绑定保护选项才能生效..." msgid "Auto Select Logic" msgstr "*自动选择逻辑" @@ -3066,8 +2649,8 @@ msgstr "低延迟优先" msgid "Random" msgstr "随机选择" -msgid "Tip: You have seted the authentication of SOCKS5/HTTP(S) proxy with" -msgstr "提示:您为 SOCKS5/HTTP(S) 代理设置的账户密码为" +msgid "You have seted the authentication of SOCKS5/HTTP(S) proxy with" +msgstr "您为 SOCKS5/HTTP(S) 代理设置的账户密码为" msgid "Google Not CN" msgstr "Google 非送中" @@ -3075,17 +2658,17 @@ msgstr "Google 非送中" msgid "In Fake-ip Mode, Even If This Option is Turned Off, Domain Type Connections Still Pass Through The Core For The Availability" msgstr "在 Fake-IP 模式时,即使关闭此选项,域名类型的连接可能仍将通过核心以保证可用性" -msgid "Warning: TUN Interface Start Failed, Please Check The Dependence or Try to Restart Again!" -msgstr "警告:TUN 接口启动失败,请检查依赖情况或稍后重试!" +msgid "TUN Interface Start Failed, Please Check The Dependence or Try to Restart Again!" +msgstr "TUN 接口启动失败,请检查依赖情况或稍后重试!" -msgid "Warning: TUN Interface Start Failed, Try to Restart Again..." -msgstr "警告:TUN 接口启动失败,尝试重启内核..." +msgid "TUN Interface Start Failed, Try to Restart Again..." +msgstr "TUN 接口启动失败,尝试重启内核..." -msgid "Error: Core Start Failed, Please Check The Log Infos!" -msgstr "错误:内核启动失败,请查看《内核日志》排查失败原因!" +msgid "Core Start Failed, Please Check The Log Infos!" +msgstr "内核启动失败,请查看《内核日志》排查失败原因!" -msgid "Error: Core Status Abnormal, Please Check The Log Infos!" -msgstr "错误:内核状态异常,请查看《内核日志》排查异常原因!" +msgid "Core Status Abnormal, Please Check The Log Infos!" +msgstr "内核状态异常,请查看《内核日志》排查异常原因!" msgid "Forced Sniff Pure IP Connections" msgstr "强制探测(嗅探)所有纯 IP 的连接" @@ -3096,11 +2679,11 @@ msgstr "探测(嗅探)纯 IP 连接" msgid "Download Failed:" msgstr "下载失败:" -msgid "Warning: Dnsmasq not Support nftset, Use ipset..." -msgstr "警告:Dnsmasq 不支持 nftset, 使用 ipset 代替..." +msgid "Dnsmasq not Support nftset, Use ipset..." +msgstr "Dnsmasq 不支持 nftset, 使用 ipset 代替..." -msgid "Tip: Firewall4 was Detected, Use NFTABLE Rules..." -msgstr "提示:检测到 Firewall4,使用 NFTABLE 规则..." +msgid "Firewall4 was Detected, Use NFTABLE Rules..." +msgstr "检测到 Firewall4,使用 NFTABLE 规则..." msgid "Specify CN DNS Server" msgstr "大陆域名 DNS 服务器" @@ -3114,17 +2697,11 @@ msgstr "1. 修改配置文件前,请先点击下方按钮读取配置文件" msgid "2. Proxy-providers address can be directly filled in the subscription link" msgstr "2. 代理集地址可以直接填写订阅链接" -msgid "Custom Tag" -msgstr "自定义标记" +msgid "Edit URL-Test URL Failed," +msgstr "修改测速地址失败," -msgid "Mark as Custom Node to Prevent Retention config from being Deleted When Enabled" -msgstr "标记为自定义节点,防止保留配置启用时被删除" - -msgid "Error: Edit URL-Test URL Failed," -msgstr "错误:修改测速地址失败," - -msgid "Error: Edit URL-Test Interval Failed," -msgstr "错误:修改测速间隔失败," +msgid "Edit URL-Test Interval Failed," +msgstr "修改测速间隔失败," msgid "URL-Test Address Modify" msgstr "测速(连通性)地址修改" @@ -3144,8 +2721,8 @@ msgstr "是否启用进程规则,仅能匹配路由器自身进程,在路由 msgid "Enable Process Rule" msgstr "启用进程规则" -msgid "Warning: Because there is a port range" -msgstr "警告:因为端口范围" +msgid "Because there is a port range" +msgstr "因为端口范围" msgid "in the firewall rule settings" msgstr "存在于防火墙规则设置" @@ -3153,17 +2730,17 @@ msgstr "存在于防火墙规则设置" msgid "auto bypassing may cause the normal connection of the client not to reach the core, if necessary, please add your own in the access control!" msgstr "自动绕过后可能造成客户端的正常连接无法到达内核,如有需要,请在插件设置-来源流量访问控制中自行添加!" -msgid "Tip: Start Add Port Bypassing Rules For Firewall Redirect and Firewall Rules..." -msgstr "提示:正在根据防火墙端口转发和防火墙通信规则添加端口绕过规则..." +msgid "Start Add Port Bypassing Rules For Firewall Redirect and Firewall Rules..." +msgstr "正在根据防火墙端口转发和防火墙通信规则添加端口绕过规则..." -msgid "Tip: DNS Hijacking Mode is Dnsmasq Redirect..." -msgstr "提示:DNS 劫持模式为 Dnsmasq 转发..." +msgid "DNS Hijacking Mode is Dnsmasq Redirect..." +msgstr "DNS 劫持模式为 Dnsmasq 转发..." -msgid "Tip: DNS Hijacking Mode is Firewall Redirect..." -msgstr "提示:DNS 劫持模式为防火墙转发..." +msgid "DNS Hijacking Mode is Firewall Redirect..." +msgstr "DNS 劫持模式为防火墙转发..." -msgid "Tip: DNS Hijacking is Disabled..." -msgstr "提示:DNS 劫持未开启..." +msgid "DNS Hijacking is Disabled..." +msgstr "DNS 劫持未开启..." msgid "Fake-IP Range" msgstr "Fake-IP 地址范围" @@ -3174,17 +2751,14 @@ msgstr "设置 Fake-IP 地址范围" msgid "IPv6 Settings" msgstr "IPv6 设置" -msgid "Custom Config Overwrite Scripts Which Will Run After Plugin Own Completely, Please Be Careful, The Wrong Changes May Lead to Exceptions" -msgstr "自定义配置文件的覆写脚本,此脚本将在插件覆写完成后执行,请谨慎修改,错误的修改可能会导致异常" - msgid "Custom Firewall Rules, Support IPv4 and IPv6, All Rules Will Be Added After Plugin Own Completely" msgstr "自定义防火墙规则,支持 IPv4 和 IPv6,此脚本将在插件内置规则完成后执行" -msgid "Tip: Start Add Custom Firewall Rules..." -msgstr "提示:开始添加自定义防火墙规则..." +msgid "Start Add Custom Firewall Rules..." +msgstr "开始添加自定义防火墙规则..." -msgid "Tip: Start Running Custom Overwrite Scripts..." -msgstr "提示:开始运行自定义覆写脚本..." +msgid "Start Running Custom Overwrite Scripts..." +msgstr "开始运行自定义覆写脚本..." msgid "Developer Settings" msgstr "开发者选项" @@ -3201,11 +2775,11 @@ msgstr "结果获取失败!" msgid "Client Fingerprint" msgstr "客户端指纹" -msgid "Watchdog: Edit Client-fingerprint Failed," -msgstr "守护程序:修改 Client-fingerprint 失败," +msgid "Edit Client-fingerprint Failed," +msgstr "修改 Client-fingerprint 失败," -msgid "Error: Edit Client-fingerprint Failed," -msgstr "错误:修改 Client-fingerprint 失败," +msgid "Edit Client-fingerprint Failed," +msgstr "修改 Client-fingerprint 失败," msgid "Traffic Control" msgstr "流量控制" @@ -3255,23 +2829,23 @@ msgstr "TUN 模式" msgid "Mix Mode" msgstr "Mix 混合模式【UDP-TUN,TCP-转发】" -msgid "Tip: IPv6 Proxy Mode is Redirect..." -msgstr "提示:IPv6 代理模式为 Redirect..." +msgid "IPv6 Proxy Mode is Redirect..." +msgstr "IPv6 代理模式为 Redirect..." -msgid "Tip: IPv6 Proxy Mode is TUN..." -msgstr "提示:IPv6 代理模式为 TUN..." +msgid "IPv6 Proxy Mode is TUN..." +msgstr "IPv6 代理模式为 TUN..." -msgid "Tip: IPv6 Proxy Mode is TProxy..." -msgstr "提示:IPv6 代理模式为 TProxy..." +msgid "IPv6 Proxy Mode is TProxy..." +msgstr "IPv6 代理模式为 TProxy..." -msgid "Tip: IPv6 Proxy Mode is Mix..." -msgstr "提示:IPv6 代理模式为 Mix 混合..." +msgid "IPv6 Proxy Mode is Mix..." +msgstr "IPv6 代理模式为 Mix 混合..." -msgid "Warning: Can't Settting Only Intranet Allowed Function, Get IPv4 WAN Interfaces error, Please Verify The Firewall's WAN Zone Name is wan, Ignore This IF The Device Does not Have a WAN Interfaces..." -msgstr "警告:设置仅允许内网功能失败,无法获取 IPv4 的 WAN 接口名称,请确保防火墙设置中 IPv4 WAN 区域的名称为 wan,如设备无 WAN 口请忽略此提示..." +msgid "Can't Settting Only Intranet Allowed Function, Get IPv4 WAN Interfaces error, Please Verify The Firewall's WAN Zone Name is wan, Ignore This IF The Device Does not Have a WAN Interfaces..." +msgstr "设置仅允许内网功能失败,无法获取 IPv4 的 WAN 接口名称,请确保防火墙设置中 IPv4 WAN 区域的名称为 wan,如设备无 WAN 口请忽略此提示..." -msgid "Warning: Can't Settting Only Intranet Allowed Function, Get IPv6 WAN Interfaces error, Please Verify The Firewall's WAN Zone Name is wan, Ignore This IF The Device Does not Have a WAN Interfaces..." -msgstr "警告:设置仅允许内网功能失败,无法获取 IPv6 的 WAN 接口名称,请确保防火墙设置中 IPv6 WAN 区域的名称为 wan,如设备无 WAN 口请忽略此提示..." +msgid "Can't Settting Only Intranet Allowed Function, Get IPv6 WAN Interfaces error, Please Verify The Firewall's WAN Zone Name is wan, Ignore This IF The Device Does not Have a WAN Interfaces..." +msgstr "设置仅允许内网功能失败,无法获取 IPv6 的 WAN 接口名称,请确保防火墙设置中 IPv6 WAN 区域的名称为 wan,如设备无 WAN 口请忽略此提示..." msgid "Config File Download Successful, Test If There is Any Errors..." msgstr "配置文件下载成功,使用内核测试是否有错误..." @@ -3285,8 +2859,8 @@ msgstr "测试失败..." msgid "test is successful" msgstr "测试成功..." -msgid "Error: Config File Tested Faild, Please Check The Log Infos!" -msgstr "错误:配置文件测试失败,请查看《内核日志》排查失败原因!" +msgid "Config File Tested Faild, Please Check The Log Infos!" +msgstr "配置文件测试失败,请查看《内核日志》排查失败原因!" msgid "Test The Config File First..." msgstr "启动前调用内核测试配置文件..." @@ -3297,8 +2871,8 @@ msgstr "其他附加配置" msgid "Edit Your Other Parameters Here" msgstr "请在此编辑您的附加配置" -msgid "Error: Config Not Found, Switch Config File to" -msgstr "错误:未找到配置文件,切换至配置文件" +msgid "Config Not Found, Switch Config File to" +msgstr "未找到配置文件,切换至配置文件" msgid "Enable Unified Delay" msgstr "*启用统一延迟" @@ -3306,14 +2880,14 @@ msgstr "*启用统一延迟" msgid "Change The Delay Calculation Method To Remove Extra Delays Such as Handshaking" msgstr "更换延迟计算方式,通过去除握手等额外开销来降低延迟数值" -msgid "Tip: If the download fails, try setting the CDN in Overwrite Settings - General Settings - Github Address Modify Options" -msgstr "提示:如果下载失败,您可以尝试在覆写设置 - 常规设置 - Github 地址修改选项中设置 CDN" +msgid "If the download fails, try setting the CDN in Overwrite Settings - General Settings - Github Address Modify Options" +msgstr "如果下载失败,您可以尝试在覆写设置 - 常规设置 - Github 地址修改选项中设置 CDN" msgid "Used for Downloading Subscriptions, Defaults to Clash" msgstr "用于下载订阅时指定 UA,默认为 Clash" -msgid "Error: Set Proxies Address Skip Failed," -msgstr "错误:绕过代理服务器地址设置失败," +msgid "Set Proxies Address Skip Failed," +msgstr "绕过代理服务器地址设置失败," msgid "Flush Failed" msgstr "清理失败" @@ -3333,8 +2907,8 @@ msgstr "绕过服务器地址" msgid "Bypassing Server Addresses And Preventing Duplicate Proxies" msgstr "绕过服务器地址,防止重复代理" -msgid "Warning: Unsupported format, Proxies Address Skip Function Ignore Proxy-providers File" -msgstr "警告:不支持的格式,绕过代理服务器地址功能已忽略代理集文件" +msgid "Unsupported format, Proxies Address Skip Function Ignore Proxy-providers File" +msgstr "不支持的格式,绕过代理服务器地址功能已忽略代理集文件" msgid "Custom Your CDN URL" msgstr "自定义链接地址" @@ -3360,11 +2934,11 @@ msgstr "指定正确的 LAN 接口名称" msgid "For More Useful Meta Core Functions Go Wiki" msgstr "如需要了解更多关于 Meta 内核的功能,请前往 Wiki" -msgid "Tip: Because Need Ensure Bypassing IP Option Work, Deleted The Fake-IP-Filter Rule" -msgstr "提示:为保证绕过 IP 正常工作,已在 Fake-IP-Filter 中删除规则" +msgid "Because Need Ensure Bypassing IP Option Work, Deleted The Fake-IP-Filter Rule" +msgstr "为保证绕过 IP 正常工作,已在 Fake-IP-Filter 中删除规则" -msgid "Tip: Because Need Ensure Bypassing IP Option Work, Added The Fake-IP-Filter Rule" -msgstr "提示:为保证绕过 IP 正常工作,已在 Fake-IP-Filter 中添加规则" +msgid "Because Need Ensure Bypassing IP Option Work, Added The Fake-IP-Filter Rule" +msgstr "为保证绕过 IP 正常工作,已在 Fake-IP-Filter 中添加规则" msgid "Fake-IP is not returned if the matching succeeds when blacklist mode or Fake-IP is returned if the matching succeeds when whitelist mode" msgstr "黑名单模式表示如果匹配成功则不返回 Fake-IP, 白名单模式时只有匹配成功才返回 Fake-IP" @@ -3405,17 +2979,17 @@ msgstr "强制覆盖 DNS 查询的子网区域地址" msgid "Need Proxy-server-nameserver Option Must Be Setted, Auto Set to" msgstr "启用时 Proxy-server-nameserver 必须配置,插件将默认将其设置为" -msgid "Tip: Nameserver Option Maybe All Setted The Proxy Option, Auto Set Proxy-server-nameserver Option to" -msgstr "提示:Nameserver 选项可能全部设置了代理选项,插件已自动设置 Proxy-server-nameserver 选项为" +msgid "Nameserver Option Maybe All Setted The Proxy Option, Auto Set Proxy-server-nameserver Option to" +msgstr "Nameserver 选项可能全部设置了代理选项,插件已自动设置 Proxy-server-nameserver 选项为" -msgid "Tip: Proxy-server-nameserver Option Maybe All Setted The Proxy Option, Auto Set Proxy-server-nameserver Option to" -msgstr "提示:Proxy-server-nameserver 选项可能全部设置了代理选项,插件已自动为 Proxy-server-nameserver 选项添加设置" +msgid "Proxy-server-nameserver Option Maybe All Setted The Proxy Option, Auto Set Proxy-server-nameserver Option to" +msgstr "Proxy-server-nameserver 选项可能全部设置了代理选项,插件已自动为 Proxy-server-nameserver 选项添加设置" msgid "For Avoiding Proxies Server Resolve Loop..." msgstr "以避免代理服务器解析回环..." -msgid "Tip: Config File" -msgstr "提示:配置文件" +msgid "Config File" +msgstr "配置文件" msgid "Downloading URL" msgstr "订阅的下载链接为" @@ -3423,11 +2997,11 @@ msgstr "订阅的下载链接为" msgid "Downloading User-Agent" msgstr "订阅的 User-Agent 为" -msgid "Warning: Option" -msgstr "警告:选项" +msgid "Option" +msgstr "选项" -msgid "Tip: Option" -msgstr "提示:选项" +msgid "Option" +msgstr "选项" msgid "is Setted" msgstr "设置了" @@ -3438,17 +3012,17 @@ msgstr "作为 DNS 服务器,这可能造成 DNS 回环错误,如发现 DNS msgid "as DNS Server Which May Cause DNS Loop, Already Remove It..." msgstr "作为 DNS 服务器,这可能造成 DNS 回环错误,已移除该设置..." -msgid "Error: Set Custom DNS Failed," -msgstr "错误:设置自定义 DNS 错误," +msgid "Set Custom DNS Failed," +msgstr "设置自定义 DNS 错误," -msgid "Error: Set proxy-server-nameserver Failed," -msgstr "错误:设置 proxy-server-nameserver 错误," +msgid "Set proxy-server-nameserver Failed," +msgstr "设置 proxy-server-nameserver 错误," -msgid "Error: Set direct-nameserver Failed," -msgstr "错误:设置 direct-nameserver 错误," +msgid "Set direct-nameserver Failed," +msgstr "设置 direct-nameserver 错误," -msgid "Error: Set fallback-filter Failed," -msgstr "错误:设置 fallback-filter 错误," +msgid "Set fallback-filter Failed," +msgstr "设置 fallback-filter 错误," msgid "Rule" msgstr "规则" @@ -3459,8 +3033,11 @@ msgstr "全局" msgid "Direct" msgstr "直连" -msgid "Error: Config File Overwrite Failed," -msgstr "错误:配置文件覆写失败," +msgid "Config File Overwrite Failed," +msgstr "配置文件覆写失败," + +msgid "Config File params checked Failed," +msgstr "配置文件参数检查失败," msgid "Edit" msgstr "编辑" @@ -3483,8 +3060,8 @@ msgstr "内部端口" msgid "Target" msgstr "对象" -msgid "Error: Network Anomaly, Suspend Unlock Detection..." -msgstr "错误:网络异常,暂停解锁检测..." +msgid "Network Anomaly, Suspend Unlock Detection..." +msgstr "网络异常,暂停解锁检测..." msgid "(Not Support mrs Format)" msgstr "(不支持 mrs 格式)" @@ -3495,11 +3072,11 @@ msgstr "更新" msgid "Local Network" msgstr "内部网络地址" -msgid "Error: LAN IP Address Get Error, Please Check The LAN Interface Setting or Choose the Correct Interface in the Setting!" -msgstr "错误:LAN IP 地址获取失败,请检查 LAN 接口设置或在插件设置中选择正确的 LAN 接口名称" +msgid "LAN IP Address Get Error, Please Check The LAN Interface Setting or Choose the Correct Interface in the Setting!" +msgstr "LAN IP 地址获取失败,请检查 LAN 接口设置或在插件设置中选择正确的 LAN 接口名称" -msgid "Warning: Skiped The Custom Rule Because Group & Proxy Not Found:" -msgstr "警告:因未找到对应的策略组或代理,为避免启动失败,已跳过此条自定义规则的添加:" +msgid "Skiped The Custom Rule Because Group & Proxy Not Found:" +msgstr "因未找到对应的策略组或代理,为避免启动失败,已跳过此条自定义规则的添加:" msgid "Disable quic-go GSO Support" msgstr "禁用 quic-go GSO 支持" @@ -3519,8 +3096,8 @@ msgstr "禁用 IPv6" msgid "Smart Core" msgstr "Smart 内核" -msgid "Error: Failed to create update script!" -msgstr "错误:创建插件升级进程失败!" +msgid "Failed to create update script!" +msgstr "创建插件升级进程失败!" msgid "Attempting to start update service..." msgstr "正在启动插件升级进程..." @@ -3528,8 +3105,8 @@ msgstr "正在启动插件升级进程..." msgid "Service start failed, retrying in 2 seconds..." msgstr "插件升级进程启动失败,将在 2 秒后重试..." -msgid "Error: Failed to start update service after 3 attempts, please check and try again later..." -msgstr "错误:插件升级进程启动失败,请检查日志并稍后再试..." +msgid "Failed to start update service after 3 attempts, please check and try again later..." +msgstr "插件升级进程启动失败,请检查日志并稍后再试..." msgid "Core Update" msgstr "内核版本更新" @@ -3987,14 +3564,17 @@ msgstr "输入包含节点的关键词(每行一个)" msgid "Enter keywords to exclude nodes (one per line)" msgstr "输入排除节点的关键词(每行一个)" -msgid "Expire Time" -msgstr "过期时间" +msgid "Expire" +msgstr "到期" -msgid "Remaining Traffic" -msgstr "剩余流量" +msgid "Traffic" +msgstr "流量" -msgid "TG Group" -msgstr "TG群" +msgid "Plan" +msgstr "套餐" + +msgid "Official" +msgstr "官网" msgid "Invalid subscription URL format. Support HTTP/HTTPS subscription URLs or protocol links, can be separated by newlines or |" msgstr "订阅地址格式无效。支持 HTTP/HTTPS 订阅地址或协议链接,可以用换行符或 | 分隔" @@ -4077,8 +3657,8 @@ msgstr "数据收集采样率" msgid "Data Acquisition Rate, Desirable Values are 0-1, The Default is 1" msgstr "指定数据收集时的采样率,值为 0-1 之间的数字,默认为 1" -msgid "Error: Setting Smart Auto Switch Failed," -msgstr "错误:Smart 策略组自动切换失败," +msgid "Setting Smart Auto Switch Failed," +msgstr "Smart 策略组自动切换失败," msgid "Flush Smart Cache" msgstr "清理 Smart 缓存" @@ -4158,32 +3738,32 @@ msgstr "订阅保存失败" msgid "Environment variable" msgstr "环境变量" -msgid "Warning: DOWNLOAD FILE no target in" -msgstr "警告:文件下载未指定目标参数" +msgid "DOWNLOAD FILE no target in" +msgstr "文件下载未指定目标参数" -msgid "Error: DOWNLOAD FILE failed for" -msgstr "错误:文件下载失败" +msgid "DOWNLOAD FILE failed for" +msgstr "文件下载失败" -msgid "Warning: skip General key not allowed" -msgstr "警告:跳过不支持的参数" +msgid "skip General key not allowed" +msgstr "跳过不支持的参数" -msgid "Warning: skip General key type error" -msgstr "警告:跳过值类型错误的参数" +msgid "skip General key type error" +msgstr "跳过值类型错误的参数" -msgid "Warning: skip invalid Overwrite command" -msgstr "警告:跳过不支持的覆写命令" +msgid "skip invalid Overwrite command" +msgstr "跳过不支持的覆写命令" -msgid "Tip: Processing Overwrite Module" -msgstr "提示:执行覆写模块" +msgid "Processing Overwrite Module" +msgstr "执行覆写模块" -msgid "Tip: Load Overwrite Script" -msgstr "提示:加载覆写命令" +msgid "Load Overwrite Script" +msgstr "加载覆写命令" -msgid "Tip: DOWNLOAD FILE for" -msgstr "提示:执行文件下载" +msgid "DOWNLOAD FILE for" +msgstr "执行文件下载" -msgid "Tip: Add Cron for" -msgstr "提示:添加计划任务" +msgid "Add Cron for" +msgstr "添加计划任务" msgid "Delete" msgstr "删除" @@ -4240,4 +3820,28 @@ msgid "Default" msgstr "默认" msgid "Disable-Qtype" -msgstr "禁用 Qtype" \ No newline at end of file +msgstr "禁用 Qtype" + +msgid "Disable Reuse" +msgstr "禁止复用" + +msgid "Disable Reuse The Connection" +msgstr "禁止连接复用" + +msgid "Write file failed:" +msgstr "写入文件失败:" + +msgid "Fix short-id values type failed:" +msgstr "修改 short-id 值类型失败:" + +msgid "Interface" +msgstr "接口" + +msgid "User" +msgstr "用户" + +msgid "Serial Number" +msgstr "序号" + +msgid "Set Custom Overwrite Script Failed," +msgstr "自定义覆写命令执行失败," \ No newline at end of file diff --git a/luci-app-openclash/root/etc/config/openclash b/luci-app-openclash/root/etc/config/openclash index b19a5b4d..b23ab963 100644 --- a/luci-app-openclash/root/etc/config/openclash +++ b/luci-app-openclash/root/etc/config/openclash @@ -13,18 +13,14 @@ config openclash 'config' option auto_update_time '0' option cn_port '9090' option dashboard_forward_ssl '0' - option rule_source '0' option enable_custom_dns '0' option ipv6_enable '0' option ipv6_dns '0' option enable_custom_clash_rules '0' - option other_rule_auto_update '0' option core_version '0' option en_mode 'fake-ip' option enable_redirect_dns '1' - option servers_if_update '0' option disable_masq_cache '1' - option servers_update '0' option log_level '0' option proxy_mode 'rule' option intranet_allowed '1' diff --git a/luci-app-openclash/root/etc/init.d/openclash b/luci-app-openclash/root/etc/init.d/openclash index 93c60546..d720f457 100755 --- a/luci-app-openclash/root/etc/init.d/openclash +++ b/luci-app-openclash/root/etc/init.d/openclash @@ -7,7 +7,7 @@ } EEOF } -# Copyright (c) 2019-2024 vernesong +# Copyright (c) 2019-2026 vernesong START=99 STOP=15 @@ -45,9 +45,6 @@ add_cron() [ -z "$(grep "openclash.sh" "$CRON_FILE" 2>/dev/null)" ] && { [ "$(uci_get_config "auto_update")" -eq 1 ] && [ "$(uci_get_config "config_auto_update_mode")" -ne 1 ] && echo "0 $(uci_get_config "auto_update_time" || 1) * * $(uci_get_config "config_update_week_time" || 0) /usr/share/openclash/openclash.sh" >> $CRON_FILE } - [ -z "$(grep "openclash_rule.sh" "$CRON_FILE" 2>/dev/null)" ] && { - [ "$(uci_get_config "other_rule_auto_update")" -eq 1 ] && echo "0 $(uci_get_config "other_rule_update_day_time" || 1) * * $(uci_get_config "other_rule_update_week_time" || 0) /usr/share/openclash/openclash_rule.sh" >> $CRON_FILE - } [ -z "$(grep "openclash_ipdb.sh" "$CRON_FILE" 2>/dev/null)" ] && { [ "$(uci_get_config "geo_auto_update")" -eq 1 ] && echo "0 $(uci_get_config "geo_update_day_time" || 1) * * $(uci_get_config "geo_update_week_time" || 0) /usr/share/openclash/openclash_ipdb.sh" >> $CRON_FILE } @@ -77,7 +74,6 @@ add_cron() del_cron() { sed -i '/openclash.sh/d' $CRON_FILE - sed -i '/openclash_rule.sh/d' $CRON_FILE sed -i '/openclash_ipdb.sh/d' $CRON_FILE sed -i '/openclash_geoip.sh/d' $CRON_FILE sed -i '/openclash_geosite.sh/d' $CRON_FILE @@ -111,7 +107,7 @@ load_ip_route_pass() { nftflag="inet#fw4#" else settype="ipset" - [ -n "$FW4" ] && LOG_OUT "Warning: Dnsmasq not Support nftset, Use ipset..." + [ -n "$FW4" ] && LOG_WARN "Dnsmasq not Support nftset, Use ipset..." fi if [ -n "$FW4" ]; then if [ "$china_ip_route" != "0" ] || [ "$disable_udp_quic" = "1" ]; then @@ -322,25 +318,10 @@ EOF } >/dev/null 2>&1 -kill_clash() -{ - check_time=1 - while ( [ "$check_time" -le 10 ] && [ -n "$(pidof clash)" ] ) - do - clash_pids=$(pidof clash |sed 's/$//g') - for clash_pid in $clash_pids; do - kill -9 "$clash_pid" - done - sleep 1 - let check_time++ - done -} >/dev/null 2>&1 - start_fail() { uci -q set openclash.config.enable=0 uci -q commit openclash - kill_clash stop exit 0 } @@ -420,14 +401,14 @@ if [ -z "$RAW_CONFIG_FILE" ] || [ ! -f "$RAW_CONFIG_FILE" ]; then RAW_CONFIG_FILE="/etc/openclash/config/$CONFIG_NAME" CONFIG_FILE="/etc/openclash/$CONFIG_NAME" TMP_CONFIG_FILE="/tmp/yaml_config_tmp_$CONFIG_NAME" - LOG_OUT "Error: Config Not Found, Switch Config File to【$RAW_CONFIG_FILE】" + LOG_ERROR "Config Not Found, Switch Config File to【$RAW_CONFIG_FILE】" break fi done fi if [ ! -f "$RAW_CONFIG_FILE" ]; then - LOG_OUT "Error: Config Not Found" + LOG_ERROR "Config Not Found" exit 0 fi @@ -445,15 +426,15 @@ ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e " begin YAML.load_file('$RAW_CONFIG_FILE'); rescue Exception => e - YAML.LOG('Error: Unable To Parse Config File,【' + e.message + '】'); + YAML.LOG_ERROR('Unable To Parse Config File,【' + e.message + '】'); system 'rm -rf ${TMP_CONFIG_FILE}'; end " 2>/dev/null >> $LOG_FILE if [ $? -ne 0 ]; then - LOG_OUT "Error: Ruby Works Abnormally, Please Check The Ruby Library Depends!" + LOG_ERROR "Ruby Works Abnormally, Please Check The Ruby Library Depends!" start_fail elif [ ! -f "$TMP_CONFIG_FILE" ] || [ ! -s "$TMP_CONFIG_FILE" ]; then - LOG_OUT "Error: Config File Format Validation Failed..." + LOG_ERROR "Config File Format Validation Failed..." start_fail fi } @@ -469,7 +450,7 @@ check_run_quick() cat "/tmp/openclash.change" | while read -r i; do file_path=$(echo "$i" |awk -F ' #edited time# ' '{print $1}') if [ -z "$(grep "$file_path #edited time# $(date -r "$file_path")$" "/tmp/openclash.change")" ]; then - LOG_OUT "Tip: Because of the file【 $file_path 】modificated, Pause quick start..." + LOG_TIP "Because of the file【 $file_path 】modificated, Pause quick start..." rm -rf /tmp/openclash.change break fi @@ -489,7 +470,6 @@ write_run_quick() echo "$CONFIG_FILE" ls -d /etc/openclash/custom/* 2>/dev/null ls -d /etc/openclash/overwrite/* 2>/dev/null - echo "/usr/share/openclash/res/lhie1.yaml" } | while read -r file; do echo "$file #edited time# $(date -r "$file")" >> "/tmp/openclash.change" done @@ -588,7 +568,7 @@ do_run_file() fi [ ! -f "$CLASH" ] || { [ "$core_type" = "Smart" ] && [ -z "$($CLASH -v | grep 'smart')" ]; } && { - LOG_OUT "Tip: Detected that the Core is not Installed, Ready to Download..." + LOG_TIP "Detected that the Core is not Installed, Ready to Download..." rm -rf "/tmp/clash_last_version" /usr/share/openclash/openclash_core.sh "$core_type" if [ ! -f "$meta_core_path" ]; then @@ -598,12 +578,12 @@ do_run_file() if [ "$china_ip_route" != "0" ] || [ "$china_ip6_route" != "0" ] || [ "$disable_udp_quic" = "1" ]; then if [ ! -f "$chnr_path" ] || [ ! -f "$chnr6_path" ]; then - LOG_OUT "Tip: Detected that the Chnroute Cidr is not Installed, Ready to Download..." + LOG_TIP "Detected that the Chnroute Cidr is not Installed, Ready to Download..." /usr/share/openclash/openclash_chnroute.sh fi if [ -n "$FW4" ]; then if [ -z "$(cat "$chnr_path" |grep "define china_ip_route")" ] || [ -z "$(cat "$chnr6_path" |grep "define china_ip6_route")" ]; then - LOG_OUT "Tip: Detected that the Chnroute Cidr List Format is wrong, Ready to Reformat..." + LOG_TIP "Detected that the Chnroute Cidr List Format is wrong, Ready to Reformat..." /usr/share/openclash/openclash_chnroute.sh if [ -z "$(cat "$chnr_path" |grep "define china_ip_route")" ] || [ -z "$(cat "$chnr6_path" |grep "define china_ip6_route")" ]; then start_fail @@ -611,7 +591,7 @@ do_run_file() fi else if [ -n "$(cat "$chnr_path" |grep "define china_ip_route")" ] || [ -n "$(cat "$chnr6_path" |grep "define china_ip6_route")" ]; then - LOG_OUT "Tip: Detected that the Chnroute Cidr List Format is wrong, Ready to Reformat..." + LOG_TIP "Detected that the Chnroute Cidr List Format is wrong, Ready to Reformat..." /usr/share/openclash/openclash_chnroute.sh if [ -n "$(cat "$chnr_path" |grep "define china_ip_route")" ] || [ -n "$(cat "$chnr6_path" |grep "define china_ip6_route")" ]; then start_fail @@ -669,11 +649,6 @@ do_run_file() ln -s "$HISTORY_PATH" "$CACHE_PATH" fi - #创建原始备份 - if [ ! -f "$2" ]; then - cp "$1" "$2" - fi - #保存启动内核类型 uci -q set openclash.config.core_type="$core_type" uci -q commit openclash @@ -710,7 +685,7 @@ check_mod() return 0 fi - LOG_OUT "Error:【$1】module not found, please check your system depends if something abnormal!" + LOG_ERROR "【$1】module not found, please check your system depends if something abnormal!" } >/dev/null 2>&1 check_core_status() @@ -746,20 +721,24 @@ check_core_status() if [ -n "$(pidof clash)" ] && [ -z "$($ip_ route list |grep utun)" ] && [ "$TUN_WAIT" -gt 120 ]; then while ( [ -n "$(pidof clash)" ] && [ -z "$($ip_ route list |grep utun)" ] && [ "$TUN_RESTART" -le 3 ] ) do - LOG_OUT "Warning: TUN Interface Start Failed, Try to Restart Again..." + LOG_WARN "TUN Interface Start Failed, Try to Restart Again..." start_run_core sleep 120 let TUN_RESTART++ done if [ -n "$(pidof clash)" ] && [ -z "$($ip_ route list |grep utun)" ] && [ "$TUN_RESTART" -gt 3 ]; then - LOG_OUT "Warning: TUN Interface Start Failed, Please Check The Dependence or Try to Restart Again!" + LOG_WARN "TUN Interface Start Failed, Please Check The Dependence or Try to Restart Again!" start_fail fi fi if [ -n "$(pidof clash)" ]; then - ip -6 rule del oif utun table 2022 - ip -6 route del default dev utun table 2022 + while ( [ -n "$(pidof clash)" ] && [ -n "$(ip -6 rule show |grep 2022)" ] && [ "$CORE_WAIT" -le 10 ] ) + do + ip -6 rule del oif utun table 2022 + ip -6 route del default dev utun table 2022 + let CORE_WAIT++ + done if [ "$ipv6_mode" -eq 2 ] || [ "$ipv6_mode" -eq 3 ]; then ip -6 route add default dev utun table "$PROXY_ROUTE_TABLE" ip -6 rule add fwmark "$PROXY_FWMARK" table "$PROXY_ROUTE_TABLE" pref 1888 @@ -778,15 +757,15 @@ check_core_status() sleep 1 done if [ -z "$(echo ${lan_ip} | grep -Eo ${reg4})" ]; then - LOG_OUT "Error: LAN IP Address Get Error, Please Check The LAN Interface Setting or Choose the Correct Interface in the Setting!" + LOG_ERROR "LAN IP Address Get Error, Please Check The LAN Interface Setting or Choose the Correct Interface in the Setting!" fi if [ "$CORE_HTTP_CODE" != "200" ]; then - LOG_OUT "Error: Core Status Abnormal, Please Check The Log Infos!" + LOG_ERROR "Core Status Abnormal, Please Check The Log Infos!" start_fail fi fi if [ -z "$(pidof clash)" ]; then - LOG_OUT "Error: Core Start Failed, Please Check The Log Infos!" + LOG_ERROR "Core Start Failed, Please Check The Log Infos!" start_fail fi @@ -794,10 +773,10 @@ check_core_status() if [ "$1" == "start" ]; then change_dns "$enable_redirect_dns" set_firewall - LOG_OUT "Tip: OpenClash Start Successful!" + LOG_TIP "OpenClash Start Successful!" else set_firewall - LOG_OUT "Tip: Firewall Reload Successful!" + LOG_TIP "Firewall Reload Successful!" fi write_run_quick @@ -815,7 +794,6 @@ start_run_core() rm -rf "$TMP_CONFIG_FILE" fi chown root:root "$CLASH" - kill_clash procd_open_instance "openclash" procd_set_param env SAFE_PATHS=/usr/share/openclash:/etc/ssl procd_set_param command /bin/sh -c "$CLASH -d $CLASH_CONFIG -f \"$CONFIG_FILE\" >> $LOG_FILE 2>&1" @@ -914,14 +892,16 @@ ipv6_suffix_to_nft_format() firewall_lan_ac_traffic() { - local src_port sport_rule dscp_rule sport_ipt dscp_ipt src_ip src_ip_v6 proto target target_ enabled family dscp comment + local src_port sport_rule dscp_rule sport_ipt dscp_ipt src_ip src_ip_v6 proto target target_ enabled family dscp rule output_rule comment config_get "src_port" "$section" "src_port" "0-65535" config_get "src_ip" "$section" "src_ip" "" config_get "proto" "$section" "proto" "both" config_get "target" "$section" "target" "return" - config_get "enabled" "$section" "enabled" "0" + config_get_bool "enabled" "$section" "enabled" "0" config_get "family" "$section" "family" "both" config_get "dscp" "$section" "dscp" "" + config_get "interface" "$section" "interface" "" + config_get "user" "$section" "user" "" config_get "comment" "$section" "comment" "lan_ac_traffic" if [ "${enabled}" == "0" ]; then @@ -949,6 +929,14 @@ firewall_lan_ac_traffic() sport_rule="sport ${src_port}" fi + if [ -n "${interface}" ]; then + interface_rule="iifname \"${interface}\"" + fi + + if [ -n "${user}" ]; then + user_rule="meta skuid ${user}" + fi + if [ -n "${dscp}" ]; then dscp_rule="ip dscp ${dscp}" fi @@ -959,47 +947,57 @@ firewall_lan_ac_traffic() target_="${target}" fi + rule_target_v4_="${sport_rule} ${interface_rule} ${dscp_rule} meta nfproto {ipv4} ip daddr != { ${fakeip_range} } ${src_ip} counter ${target_} comment ${comment}" + output_rule_target_v4_="${sport_rule} ${user_rule} ${interface_rule} ${dscp_rule} ip daddr != { ${fakeip_range} } ${src_ip} counter ${target_} comment ${comment}" + rule_target_v4="${sport_rule} ${interface_rule} ${dscp_rule} meta nfproto {ipv4} ip daddr != { ${fakeip_range} } ${src_ip} counter ${target} comment ${comment}" + output_rule_target_v4="${sport_rule} ${user_rule} ${interface_rule} ${dscp_rule} ip daddr != { ${fakeip_range} } ${src_ip} counter ${target} comment ${comment}" + + rule_target_v6_="${sport_rule} ${interface_rule} ${dscp_rule} meta nfproto {ipv6} ip6 daddr != { ${fakeip_range6} } ${src_ip_v6} counter ${target_} comment ${comment}" + output_rule_target_v6_="${sport_rule} ${user_rule} ${interface_rule} ${dscp_rule} ip6 daddr != { ${fakeip_range6} } ${src_ip_v6} counter ${target_} comment ${comment}" + rule_target_v6="${sport_rule} ${interface_rule} ${dscp_rule} meta nfproto {ipv6} ip6 daddr != { ${fakeip_range6} } ${src_ip_v6} counter ${target} comment ${comment}" + output_rule_target_v6="${sport_rule} ${user_rule} ${interface_rule} ${dscp_rule} ip6 daddr != { ${fakeip_range6} } ${src_ip_v6} counter ${target} comment ${comment}" + if [ "${family}" == "both" ] || [ "${family}" == "ipv4" ]; then if [ -z "${en_mode_tun}" ] || [ "${en_mode_tun}" -eq 2 ]; then if $e_tcp ; then - nft insert rule inet fw4 openclash_output position 0 meta nfproto {ipv4} ip daddr != { ${fakeip_range} } ${src_ip} tcp ${sport_rule} ${dscp_rule} counter ${target_} comment "\"${comment}\"" - nft insert rule inet fw4 openclash position 0 ip daddr != { ${fakeip_range} } ${src_ip} tcp ${sport_rule} ${dscp_rule} counter ${target_} comment "\"${comment}\"" + nft insert rule inet fw4 openclash_output position 0 tcp ${output_rule_target_v4_} + [ -z "${user_rule}" ] && nft insert rule inet fw4 openclash position 0 tcp ${rule_target_v4_} fi if $e_udp ; then - nft insert rule inet fw4 openclash_mangle_output position 0 meta nfproto {ipv4} ip daddr != { ${fakeip_range} } ${src_ip} udp ${sport_rule} ${dscp_rule} counter ${target} comment "\"${comment}\"" - nft insert rule inet fw4 openclash_mangle position 0 ip daddr != { ${fakeip_range} } ${src_ip} udp ${sport_rule} ${dscp_rule} counter ${target} comment "\"${comment}\"" + nft insert rule inet fw4 openclash_mangle_output position 0 udp ${output_rule_target_v4} + [ -z "${user_rule}" ] && nft insert rule inet fw4 openclash_mangle position 0 udp ${rule_target_v4} fi elif [ "${en_mode_tun}" -eq 1 ]; then if $e_tcp ; then - nft insert rule inet fw4 openclash_mangle_output position 0 meta nfproto {ipv4} ip daddr != { ${fakeip_range} } ${src_ip} tcp ${sport_rule} ${dscp_rule} counter ${target} comment "\"${comment}\"" - nft insert rule inet fw4 openclash_mangle position 0 ip daddr != { ${fakeip_range} } ${src_ip} tcp ${sport_rule} ${dscp_rule} counter ${target} comment "\"${comment}\"" + nft insert rule inet fw4 openclash_mangle_output position 0 tcp ${output_rule_target_v4} + [ -z "${user_rule}" ] && nft insert rule inet fw4 openclash_mangle position 0 tcp ${rule_target_v4} fi if $e_udp ; then - nft insert rule inet fw4 openclash_mangle_output position 0 meta nfproto {ipv4} ip daddr != { ${fakeip_range} } ${src_ip} udp ${sport_rule} ${dscp_rule} counter ${target} comment "\"${comment}\"" - nft insert rule inet fw4 openclash_mangle position 0 ip daddr != { ${fakeip_range} } ${src_ip} udp ${sport_rule} ${dscp_rule} counter ${target} comment "\"${comment}\"" + nft insert rule inet fw4 openclash_mangle_output position 0 udp ${output_rule_target_v4} + [ -z "${user_rule}" ] && nft insert rule inet fw4 openclash_mangle position 0 udp ${rule_target_v4} fi fi if $e_tcp ; then - nft insert rule inet fw4 openclash_post position 0 ip daddr != { ${fakeip_range} } ${src_ip} tcp ${sport_rule} ${dscp_rule} counter ${target_} comment "\"${comment}\"" + nft insert rule inet fw4 openclash_post position 0 tcp ${output_rule_target_v4_} fi if $e_udp ; then - nft insert rule inet fw4 openclash_post position 0 ip daddr != { ${fakeip_range} } ${src_ip} udp ${sport_rule} ${dscp_rule} counter ${target_} comment "\"${comment}\"" + nft insert rule inet fw4 openclash_post position 0 udp ${output_rule_target_v4_} fi fi if [ "${ipv6_enable}" -eq 1 ]; then if [ "${family}" == "both" ] || [ "${family}" == "ipv6" ]; then if $e_tcp ; then - nft insert rule inet fw4 openclash_v6 position 0 ip6 daddr != { ${fakeip_range6} } ${src_ip_v6} tcp ${sport_rule} ${dscp_rule} counter ${target_} comment "\"${comment}\"" - nft insert rule inet fw4 openclash_output_v6 position 0 ip6 daddr != { ${fakeip_range6} } ${src_ip_v6} tcp ${sport_rule} ${dscp_rule} counter ${target_} comment "\"${comment}\"" - nft insert rule inet fw4 openclash_mangle_v6 position 0 ip6 daddr != { ${fakeip_range6} } ${src_ip_v6} tcp ${sport_rule} ${dscp_rule} counter ${target} comment "\"${comment}\"" - nft insert rule inet fw4 openclash_mangle_output_v6 position 0 meta nfproto {ipv6} ip6 daddr != { ${fakeip_range6} } ${src_ip_v6} tcp ${sport_rule} ${dscp_rule} counter ${target} comment "\"${comment}\"" - nft insert rule inet fw4 openclash_post_v6 position 0 ip6 daddr != { ${fakeip_range6} } ${src_ip_v6} tcp ${sport_rule} ${dscp_rule} counter ${target_} comment "\"${comment}\"" + [ -z "${user_rule}" ] && nft insert rule inet fw4 openclash_v6 position 0 tcp ${rule_target_v6_} + nft insert rule inet fw4 openclash_output_v6 position 0 tcp ${output_rule_target_v6_} + [ -z "${user_rule}" ] && nft insert rule inet fw4 openclash_mangle_v6 position 0 tcp ${rule_target_v6} + nft insert rule inet fw4 openclash_mangle_output_v6 position 0 tcp ${output_rule_target_v6} + nft insert rule inet fw4 openclash_post_v6 position 0 tcp ${output_rule_target_v6_} fi if $e_udp ; then - nft insert rule inet fw4 openclash_mangle_v6 position 0 ip6 daddr != { ${fakeip_range6} } ${src_ip_v6} udp ${sport_rule} ${dscp_rule} counter ${target} comment "\"${comment}\"" - nft insert rule inet fw4 openclash_mangle_output_v6 position 0 meta nfproto {ipv6} ip6 daddr != { ${fakeip_range6} } ${src_ip_v6} udp ${sport_rule} ${dscp_rule} counter ${target} comment "\"${comment}\"" - nft insert rule inet fw4 openclash_post_v6 position 0 ip6 daddr != { ${fakeip_range6} } ${src_ip_v6} udp ${sport_rule} ${dscp_rule} counter ${target_} comment "\"${comment}\"" + [ -z "${user_rule}" ] && nft insert rule inet fw4 openclash_mangle_v6 position 0 udp ${rule_target_v6} + nft insert rule inet fw4 openclash_mangle_output_v6 position 0 udp ${output_rule_target_v6} + nft insert rule inet fw4 openclash_post_v6 position 0 udp ${output_rule_target_v6_} fi fi fi @@ -1023,60 +1021,78 @@ firewall_lan_ac_traffic() if [ "${target}" == "return" ]; then target="RETURN" target_="RETURN"; fi if [ "${target}" == "drop" ]; then target="DROP" target_="RETURN"; fi + if [ -n "${interface}" ]; then + interface_rule="-i ${interface}" + fi + + if [ -n "${user}" ]; then + user_rule="-m owner --uid-owner ${user}" + fi + if [ -n "${dscp}" ]; then if iptables -m dscp --help >/dev/null 2>&1; then dscp_ipt="-m dscp --dscp ${dscp}" else - LOG_OUT "Warning: iptables DSCP module not available, please try DCSP rule by core instead, skipping DSCP rule for【${comment}】" + LOG_WARN "iptables DSCP module not available, please try DCSP rule by core instead, skipping DSCP rule for【${comment}】" fi fi + rule_target_v4_="! -d ${fakeip_range} ${src_ip} ${sport_ipt} ${interface_rule} ${dscp_ipt} -j ${target_} -m comment --comment ${comment}" + output_rule_target_v4_="! -d ${fakeip_range} ${src_ip} ${sport_ipt} ${user_rule} ${interface_rule} ${dscp_ipt} -j ${target_} -m comment --comment ${comment}" + rule_target_v4="! -d ${fakeip_range} ${src_ip} ${sport_ipt} ${interface_rule} ${dscp_ipt} -j ${target} -m comment --comment ${comment}" + output_rule_target_v4="! -d ${fakeip_range} ${src_ip} ${sport_ipt} ${user_rule} ${interface_rule} ${dscp_ipt} -j ${target} -m comment --comment ${comment}" + + rule_target_v6_="! -d ${fakeip_range6} ${src_ip} ${sport_ipt} ${interface_rule} ${dscp_ipt} -j ${target_} -m comment --comment ${comment}" + output_rule_target_v6_="! -d ${fakeip_range6} ${src_ip} ${sport_ipt} ${user_rule} ${interface_rule} ${dscp_ipt} -j ${target_} -m comment --comment ${comment}" + rule_target_v6="! -d ${fakeip_range6} ${src_ip} ${sport_ipt} ${interface_rule} ${dscp_ipt} -j ${target} -m comment --comment ${comment}" + output_rule_target_v6="! -d ${fakeip_range6} ${src_ip} ${sport_ipt} ${user_rule} ${interface_rule} ${dscp_ipt} -j ${target} -m comment --comment ${comment}" + if [ "${family}" == "both" ] || [ "${family}" == "ipv4" ]; then if [ -z "${en_mode_tun}" ] || [ "${en_mode_tun}" -eq 2 ]; then if $e_tcp ; then - iptables -t nat -I openclash_output -p tcp ! -d ${fakeip_range} ${src_ip} ${sport_ipt} ${dscp_ipt} -j ${target_} -m comment --comment "${comment}" - iptables -t nat -I openclash -p tcp ! -d ${fakeip_range} ${src_ip} ${sport_ipt} ${dscp_ipt} -j ${target_} -m comment --comment "${comment}" + iptables -t nat -I openclash_output -p tcp ${output_rule_target_v4_} + [ -z "${user_rule}" ] && iptables -t nat -I openclash -p tcp ${rule_target_v4_} fi if $e_udp ; then - iptables -t mangle -I openclash_output -p udp ! -d ${fakeip_range} ${src_ip} ${sport_ipt} ${dscp_ipt} -j ${target} -m comment --comment "${comment}" - iptables -t mangle -I openclash -p udp ! -d ${fakeip_range} ${src_ip} ${sport_ipt} ${dscp_ipt} -j ${target} -m comment --comment "${comment}" + iptables -t mangle -I openclash_output -p udp ${output_rule_target_v4} + [ -z "${user_rule}" ] && iptables -t mangle -I openclash -p udp ${rule_target_v4} fi elif [ "${en_mode_tun}" -eq 1 ]; then if $e_tcp ; then - iptables -t mangle -I openclash_output -p tcp ! -d ${fakeip_range} ${src_ip} ${sport_ipt} ${dscp_ipt} -j ${target} -m comment --comment "${comment}" - iptables -t mangle -I openclash -p tcp ! -d ${fakeip_range} ${src_ip} ${sport_ipt} ${dscp_ipt} -j ${target} -m comment --comment "${comment}" + iptables -t mangle -I openclash_output -p tcp ${output_rule_target_v4} + [ -z "${user_rule}" ] && iptables -t mangle -I openclash -p tcp ${rule_target_v4} fi if $e_udp ; then - iptables -t mangle -I openclash_output -p udp ! -d ${fakeip_range} ${src_ip} ${sport_ipt} ${dscp_ipt} -j ${target} -m comment --comment "${comment}" - iptables -t mangle -I openclash -p udp ! -d ${fakeip_range} ${src_ip} ${sport_ipt} ${dscp_ipt} -j ${target} -m comment --comment "${comment}" + iptables -t mangle -I openclash_output -p udp ${output_rule_target_v4} + [ -z "${user_rule}" ] && iptables -t mangle -I openclash -p udp ${rule_target_v4} fi fi if $e_tcp ; then - iptables -t nat -I openclash_post -p tcp ! -d ${fakeip_range} ${src_ip} ${sport_ipt} ${dscp_ipt} -j ${target_} -m comment --comment "${comment}" + iptables -t nat -I openclash_post -p tcp ${output_rule_target_v4_} fi if $e_udp ; then - iptables -t nat -I openclash_post -p udp ! -d ${fakeip_range} ${src_ip} ${sport_ipt} ${dscp_ipt} -j ${target_} -m comment --comment "${comment}" + iptables -t nat -I openclash_post -p udp ${output_rule_target_v4_} fi fi if [ "${ipv6_enable}" -eq 1 ]; then if [ "${family}" == "both" ] || [ "${family}" == "ipv6" ]; then if $e_tcp ; then - ip6tables -t nat -I openclash ! -d ${fakeip_range6} ${src_ip_v6} -p tcp ${sport_ipt} ${dscp_ipt} -j ${target_} -m comment --comment "${comment}" - ip6tables -t nat -I openclash_output ! -d ${fakeip_range6} ${src_ip_v6} -p tcp ${sport_ipt} ${dscp_ipt} -j ${target_} -m comment --comment "${comment}" - ip6tables -t mangle -I openclash ! -d ${fakeip_range6} ${src_ip_v6} -p tcp ${sport_ipt} ${dscp_ipt} -j ${target} -m comment --comment "${comment}" - ip6tables -t mangle -I openclash_output -p tcp ! -d ${fakeip_range6} ${src_ip_v6} ${sport_ipt} ${dscp_ipt} -j ${target} -m comment --comment "${comment}" - ip6tables -t nat -I openclash_post -p tcp ! -d ${fakeip_range6} ${src_ip_v6} ${sport_ipt} ${dscp_ipt} -j ${target_} -m comment --comment "${comment}" + [ -z "${user_rule}" ] && ip6tables -t nat -I openclash -p tcp ${rule_target_v6_} + ip6tables -t nat -I openclash_output -p tcp ${output_rule_target_v6_} + [ -z "${user_rule}" ] && ip6tables -t mangle -I openclash -p tcp ${rule_target_v6} + ip6tables -t mangle -I openclash_output -p tcp ${output_rule_target_v6} + ip6tables -t nat -I openclash_post -p tcp ${output_rule_target_v6_} fi if $e_udp ; then - ip6tables -t mangle -I openclash -p udp ! -d ${fakeip_range6} ${src_ip_v6} ${sport_ipt} ${dscp_ipt} -j ${target} -m comment --comment "${comment}" - ip6tables -t mangle -I openclash_output -p udp ! -d ${fakeip_range6} ${src_ip_v6} ${sport_ipt} ${dscp_ipt} -j ${target} -m comment --comment "${comment}" - ip6tables -t nat -I openclash_post -p udp ! -d ${fakeip_range6} ${src_ip_v6} ${sport_ipt} ${dscp_ipt} -j ${target_} -m comment --comment "${comment}" + [ -z "${user_rule}" ] && ip6tables -t mangle -I openclash -p udp ${rule_target_v6} + ip6tables -t mangle -I openclash_output -p udp ${output_rule_target_v6} + ip6tables -t nat -I openclash_post -p udp ${output_rule_target_v6_} fi fi fi fi -} >/dev/null 2>&1 +} firewall_rule_exclude() { @@ -1114,7 +1130,7 @@ firewall_rule_exclude() fi if [ -n "$(echo $dest_port |grep -E '\-|\:' 2>/dev/null)" ]; then - LOG_OUT "Warning: Because there is a port range【$dest_port】in the firewall rule settings【$name】auto bypassing may cause the normal connection of the client not to reach the core, if necessary, please add your own in the access control!" + LOG_WARN "Because there is a port range【$dest_port】in the firewall rule settings【$name】auto bypassing may cause the normal connection of the client not to reach the core, if necessary, please add your own in the access control!" return fi @@ -1288,7 +1304,7 @@ firewall_redirect_exclude() fi if [ -n "$(echo $dest_port |grep -E '\-|\:' 2>/dev/null)" ]; then - LOG_OUT "Warning: Because there is a port range【$dest_port】in the firewall rule settings【$name】auto bypassing may cause the normal connection of the client not to reach the core, if necessary, please add your own in the access control!" + LOG_WARN "Because there is a port range【$dest_port】in the firewall rule settings【$name】auto bypassing may cause the normal connection of the client not to reach the core, if necessary, please add your own in the access control!" return fi @@ -1436,34 +1452,34 @@ fi case $enable_redirect_dns in "1") - LOG_OUT "Tip: DNS Hijacking Mode is Dnsmasq Redirect..." + LOG_TIP "DNS Hijacking Mode is Dnsmasq Redirect..." ;; "2") - LOG_OUT "Tip: DNS Hijacking Mode is Firewall Redirect..." + LOG_TIP "DNS Hijacking Mode is Firewall Redirect..." ;; *) - LOG_OUT "Tip: DNS Hijacking is Disabled..." + LOG_TIP "DNS Hijacking is Disabled..." esac if [ "$ipv6_enable" -eq 1 ]; then case $ipv6_mode in "1") - LOG_OUT "Tip: IPv6 Proxy Mode is Redirect..." + LOG_TIP "IPv6 Proxy Mode is Redirect..." ;; "2") - LOG_OUT "Tip: IPv6 Proxy Mode is TUN..." + LOG_TIP "IPv6 Proxy Mode is TUN..." ;; "3") - LOG_OUT "Tip: IPv6 Proxy Mode is Mix..." + LOG_TIP "IPv6 Proxy Mode is Mix..." ;; *) - LOG_OUT "Tip: IPv6 Proxy Mode is TProxy..." + LOG_TIP "IPv6 Proxy Mode is TProxy..." esac fi #NFTABLES if [ -n "$FW4" ]; then - LOG_OUT "Tip: Firewall4 was Detected, Use NFTABLE Rules..." + LOG_TIP "Firewall4 was Detected, Use NFTABLE Rules..." #china ip route if [ "$china_ip_route" != "0" ] || [ "$disable_udp_quic" = "1" ]; then @@ -1530,6 +1546,12 @@ if [ -n "$FW4" ]; then config_list_foreach "config" "wan_ac_black_ips" nft_ac_add "wan_ac_black_ips" "wan_ac_black_ipv6s" fi + if [ -n "$(uci_get_config "wan_ac_black_ports")" ]; then + nft 'add set inet fw4 wan_ac_black_ports { type inet_service; flags interval; }' + config_load "openclash" + config_list_foreach "config" "wan_ac_black_ports" nft_ac_add "wan_ac_black_ports" + fi + #local nft 'add set inet fw4 localnetwork { type ipv4_addr; flags interval; auto-merge; }' #nft 'delete set inet fw4 localnetwork' @@ -1586,7 +1608,7 @@ if [ -n "$FW4" ]; then done nft add rule inet fw4 openclash_wan_input th dport {$proxy_port,$tproxy_port,$cn_port,$http_port,$socks_port,$mixed_port,$dns_port} counter reject else - LOG_OUT "Warning: Can't Settting Only Intranet Allowed Function, Get IPv4 WAN Interfaces error, Please Verify The Firewall's WAN Zone Name is wan, Ignore This IF The Device Does not Have a WAN Interfaces..." + LOG_WARN "Can't Settting Only Intranet Allowed Function, Get IPv4 WAN Interfaces error, Please Verify The Firewall's WAN Zone Name is wan, Ignore This IF The Device Does not Have a WAN Interfaces..." fi fi @@ -1647,10 +1669,9 @@ if [ -n "$FW4" ]; then nft 'flush chain inet fw4 openclash' nft 'add rule inet fw4 openclash ip daddr @localnetwork counter return' nft 'add rule inet fw4 openclash ct direction reply counter return' - if [ -z "$en_mode_tun" ] && [ "$en_mode" = "fake-ip" ]; then - nft add rule inet fw4 openclash ip protocol tcp ip daddr { "$fakeip_range" } counter redirect to "$proxy_port" - fi + nft add rule inet fw4 openclash ip protocol tcp ip daddr { "$fakeip_range" } counter redirect to "$proxy_port" nft 'add rule inet fw4 openclash ip daddr @wan_ac_black_ips counter return' + nft 'add rule inet fw4 openclash th dport @wan_ac_black_ports counter return' nft 'add rule inet fw4 openclash ip saddr @lan_ac_black_ips counter return' nft 'add rule inet fw4 openclash ether saddr @lan_ac_black_macs counter return' if [ "$lan_ac_mode" = "1" ] && [ -n "$(uci_get_config "lan_ac_white_ips")" ] && [ -n "$(uci_get_config "lan_ac_white_macs")" ]; then @@ -1693,6 +1714,7 @@ if [ -n "$FW4" ]; then nft add rule inet fw4 openclash_mangle meta l4proto { udp } ip daddr { "$fakeip_range" } mark set "$PROXY_FWMARK" tproxy ip to 127.0.0.1:"$tproxy_port" counter accept fi nft 'add rule inet fw4 openclash_mangle ip daddr @wan_ac_black_ips counter return' + nft 'add rule inet fw4 openclash_mangle th dport @wan_ac_black_ports counter return' nft 'add rule inet fw4 openclash_mangle ip saddr @lan_ac_black_ips counter return' nft 'add rule inet fw4 openclash_mangle ether saddr @lan_ac_black_macs counter return' if [ "$lan_ac_mode" = "1" ] && [ -n "$(uci_get_config "lan_ac_white_ips")" ] && [ -n "$(uci_get_config "lan_ac_white_macs")" ]; then @@ -1737,6 +1759,7 @@ if [ -n "$FW4" ]; then nft 'add rule inet fw4 openclash_mangle_output ip daddr @localnetwork counter return' nft 'add rule inet fw4 openclash_mangle_output ct direction reply counter return' nft 'add rule inet fw4 openclash_mangle_output ip daddr @wan_ac_black_ips counter return' + nft 'add rule inet fw4 openclash_mangle_output th dport @wan_ac_black_ports counter return' if [ "$en_mode" = "redir-host" ]; then nft add rule inet fw4 openclash_mangle_output th dport != @common_ports counter return fi @@ -1780,6 +1803,7 @@ if [ -n "$FW4" ]; then fi if [ "$router_self_proxy" = "1" ]; then nft 'add rule inet fw4 openclash_output ip daddr @wan_ac_black_ips counter return' + nft 'add rule inet fw4 openclash_output th dport @wan_ac_black_ports counter return' if [ "$en_mode" = "redir-host" ]; then nft add rule inet fw4 openclash_output th dport != @common_ports counter return fi @@ -1809,12 +1833,17 @@ if [ -n "$FW4" ]; then nft 'add rule inet fw4 openclash_mangle_output skgid == 65534 counter return' nft 'add rule inet fw4 openclash_mangle_output ip daddr @localnetwork counter return' nft 'add rule inet fw4 openclash_mangle_output ct direction reply counter return' - nft add rule inet fw4 openclash_mangle_output meta l4proto {tcp,udp} ip daddr { "$fakeip_range" } mark set "$PROXY_FWMARK" counter + if [ "$en_mode_tun" -eq 1 ]; then + nft add rule inet fw4 openclash_mangle_output meta l4proto {tcp,udp} ip daddr { "$fakeip_range" } mark set "$PROXY_FWMARK" counter + else + nft add rule inet fw4 openclash_mangle_output meta l4proto { udp } ip daddr { "$fakeip_range" } mark set "$PROXY_FWMARK" counter + fi if [ "$en_mode" = "redir-host" ]; then nft 'add rule inet fw4 openclash_mangle_output th dport != @common_ports counter return' fi if [ "$router_self_proxy" = "1" ]; then nft 'add rule inet fw4 openclash_mangle_output ip daddr @wan_ac_black_ips counter return' + nft 'add rule inet fw4 openclash_mangle_output th dport @wan_ac_black_ports counter return' if [ "$china_ip_route" != "0" ]; then if [ "$china_ip_route" = "1" ]; then rule="ip daddr @china_ip_route" @@ -1824,13 +1853,17 @@ if [ -n "$FW4" ]; then [ "$enable_redirect_dns" != "2" ] && rule="$rule ip daddr != @china_ip_route_pass" nft "add rule inet fw4 openclash_mangle_output $rule counter return" fi + + #icmp + nft add rule inet fw4 openclash_mangle_output meta nfproto {ipv4} ip protocol icmp icmp type echo-request mark set "$PROXY_FWMARK" counter accept comment \"OpenClash ICMP Mark\" + if [ "$en_mode_tun" -eq 1 ]; then nft add rule inet fw4 openclash_mangle_output meta l4proto {tcp,udp} meta mark set "$PROXY_FWMARK" counter else nft add rule inet fw4 openclash_mangle_output meta l4proto { udp } meta mark set "$PROXY_FWMARK" counter fi fi - nft 'add rule inet fw4 mangle_output meta nfproto {ipv4} meta l4proto {tcp,udp} counter jump openclash_mangle_output' + nft 'add rule inet fw4 mangle_output meta nfproto {ipv4} counter jump openclash_mangle_output' fi nft 'add chain inet fw4 openclash_mangle' @@ -1843,7 +1876,13 @@ if [ -n "$FW4" ]; then nft 'add rule inet fw4 openclash_mangle meta l4proto {tcp,udp} iifname utun counter return' nft 'add rule inet fw4 openclash_mangle ip daddr @localnetwork counter return' nft 'add rule inet fw4 openclash_mangle ct direction reply counter return' + if [ "$en_mode_tun" -eq 1 ]; then + nft add rule inet fw4 openclash_mangle meta l4proto {tcp,udp} ip daddr { "$fakeip_range" } mark set "$PROXY_FWMARK" counter + else + nft add rule inet fw4 openclash_mangle meta l4proto { udp } ip daddr { "$fakeip_range" } mark set "$PROXY_FWMARK" counter + fi nft 'add rule inet fw4 openclash_mangle ip daddr @wan_ac_black_ips counter return' + nft 'add rule inet fw4 openclash_mangle th dport @wan_ac_black_ports counter return' nft 'add rule inet fw4 openclash_mangle ip saddr @lan_ac_black_ips counter return' nft 'add rule inet fw4 openclash_mangle ether saddr @lan_ac_black_macs counter return' if [ "$lan_ac_mode" = "1" ] && [ -n "$(uci_get_config "lan_ac_white_ips")" ] && [ -n "$(uci_get_config "lan_ac_white_macs")" ]; then @@ -1865,19 +1904,24 @@ if [ -n "$FW4" ]; then [ "$enable_redirect_dns" != "2" ] && rule="$rule ip daddr != @china_ip_route_pass" nft "add rule inet fw4 openclash_mangle $rule counter return" fi + + #icmp + nft add rule inet fw4 openclash_mangle meta nfproto {ipv4} ip protocol icmp icmp type echo-request mark set "$PROXY_FWMARK" counter accept comment \"OpenClash ICMP Mark\" + nft 'add rule inet fw4 openclash_mangle ip protocol udp counter jump openclash_upnp' - nft add rule inet fw4 openclash_mangle mark set "$PROXY_FWMARK" counter if [ "$en_mode_tun" -eq 1 ]; then - nft 'add rule inet fw4 mangle_prerouting meta nfproto {ipv4} meta l4proto {tcp,udp} counter jump openclash_mangle' + nft add rule inet fw4 openclash_mangle mark set "$PROXY_FWMARK" counter else - nft 'add rule inet fw4 mangle_prerouting meta nfproto {ipv4} ip protocol udp counter jump openclash_mangle' + nft add rule inet fw4 openclash_mangle meta l4proto { udp } mark set "$PROXY_FWMARK" counter fi + nft 'add rule inet fw4 mangle_prerouting meta nfproto {ipv4} counter jump openclash_mangle' + #TUN FORWORD - nft insert rule inet fw4 forward position 0 meta l4proto {tcp,udp} oifname utun counter accept comment \"OpenClash TUN Forward\" - nft insert rule inet fw4 forward position 0 meta l4proto {tcp,udp} iifname utun counter accept comment \"OpenClash TUN Forward\" - nft insert rule inet fw4 input position 0 meta l4proto {tcp,udp} iifname utun counter accept comment \"OpenClash TUN Input\" + nft insert rule inet fw4 forward position 0 meta nfproto {ipv4} oifname utun counter accept comment \"OpenClash TUN Forward\" + nft insert rule inet fw4 forward position 0 meta nfproto {ipv4} iifname utun counter accept comment \"OpenClash TUN Forward\" + nft insert rule inet fw4 input position 0 meta nfproto {ipv4} iifname utun counter accept comment \"OpenClash TUN Input\" nft insert rule inet fw4 srcnat position 0 meta nfproto {ipv4} oifname utun counter return comment \"OpenClash TUN Postrouting\" #quic @@ -1989,12 +2033,11 @@ if [ -n "$FW4" ]; then #tcp nft 'add chain inet fw4 openclash_v6' nft 'flush chain inet fw4 openclash_v6' - if [ "$en_mode" = "fake-ip" ]; then - nft add rule inet fw4 openclash_v6 ip6 nexthdr {tcp} ip6 daddr { "$fakeip_range6" } counter redirect to "$proxy_port" - fi + nft add rule inet fw4 openclash_v6 ip6 nexthdr {tcp} ip6 daddr { "$fakeip_range6" } counter redirect to "$proxy_port" nft 'add rule inet fw4 openclash_v6 ip6 daddr @localnetwork6 counter return' nft 'add rule inet fw4 openclash_v6 ct direction reply counter return' nft 'add rule inet fw4 openclash_v6 ip6 daddr @wan_ac_black_ipv6s counter return' + nft 'add rule inet fw4 openclash_v6 th dport @wan_ac_black_ports counter return' nft 'add rule inet fw4 openclash_v6 ip6 saddr @lan_ac_black_ipv6s counter return' nft 'add rule inet fw4 openclash_v6 ether saddr @lan_ac_black_macs counter return' if [ "$lan_ac_mode" = "1" ] && [ -n "$(uci_get_config "lan_ac_white_ips")" ] && [ -n "$(uci_get_config "lan_ac_white_macs")" ]; then @@ -2027,8 +2070,23 @@ if [ -n "$FW4" ]; then nft 'flush chain inet fw4 openclash_mangle_v6' nft 'add rule inet fw4 openclash_mangle_v6 ip6 daddr @localnetwork6 counter return' nft 'add rule inet fw4 openclash_mangle_v6 ct direction reply counter return' - nft 'add rule inet fw4 openclash_mangle_v6 ip6 daddr @wan_ac_black_ipv6s counter return' + if [ "$ipv6_mode" -ne 1 ] && [ "$ipv6_mode" -ne 3 ]; then + if [ "$ipv6_mode" -eq 0 ]; then + nft add rule inet fw4 openclash_mangle_v6 ip6 nexthdr {tcp} ip6 daddr { "$fakeip_range6" } mark set "$PROXY_FWMARK" tproxy ip6 to :"$tproxy_port" counter accept + else + nft add rule inet fw4 openclash_mangle_v6 ip6 nexthdr {tcp} ip6 daddr { "$fakeip_range6" } mark set "$PROXY_FWMARK" counter + fi + fi + if [ "$ipv6_mode" -eq 2 ] || [ "$ipv6_mode" -eq 3 ]; then + nft add rule inet fw4 openclash_mangle_v6 ip6 nexthdr {udp} ip6 daddr { "$fakeip_range6" } mark set "$PROXY_FWMARK" counter + else + if [ "$enable_v6_udp_proxy" -eq 1 ]; then + nft add rule inet fw4 openclash_mangle_v6 ip6 nexthdr {udp} ip6 daddr { "$fakeip_range6" } mark set "$PROXY_FWMARK" tproxy ip6 to :"$tproxy_port" counter accept + fi + fi + nft 'add rule inet fw4 openclash_mangle_v6 ip6 daddr @wan_ac_black_ipv6s counter return' + nft 'add rule inet fw4 openclash_mangle_v6 th dport @wan_ac_black_ports counter return' if [ "$en_mode" == "redir-host" ]; then nft 'add rule inet fw4 openclash_mangle_v6 th dport != @common_ports counter return' fi @@ -2051,6 +2109,11 @@ if [ -n "$FW4" ]; then [ "$enable_redirect_dns" != "2" ] && rule="$rule ip6 daddr != @china_ip6_route_pass" nft "add rule inet fw4 openclash_mangle_v6 $rule counter return" fi + + #icmpv6 + if [ "$ipv6_mode" -eq 2 ] || [ "$ipv6_mode" -eq 3 ]; then + nft add rule inet fw4 openclash_mangle_v6 meta nfproto {ipv6} ip6 nexthdr icmpv6 icmpv6 type echo-request mark set "$PROXY_FWMARK" counter accept comment \"OpenClash ICMPv6 Redirect\" + fi fi #tcp Tproxy && TUN @@ -2098,6 +2161,7 @@ if [ -n "$FW4" ]; then nft 'add rule inet fw4 openclash_output_v6 ip6 daddr @localnetwork6 counter return' nft 'add rule inet fw4 openclash_output_v6 ct direction reply counter return' nft 'add rule inet fw4 openclash_output_v6 ip6 daddr @wan_ac_black_ipv6s counter return' + nft 'add rule inet fw4 openclash_output_v6 th dport @wan_ac_black_ports counter return' if [ "$en_mode" = "redir-host" ]; then nft 'add rule inet fw4 openclash_output_v6 th dport != @common_ports counter return' fi @@ -2123,7 +2187,21 @@ if [ -n "$FW4" ]; then nft 'add rule inet fw4 openclash_mangle_output_v6 skgid == 65534 counter return' nft 'add rule inet fw4 openclash_mangle_output_v6 ip6 daddr @localnetwork6 counter return' nft 'add rule inet fw4 openclash_mangle_output_v6 ct direction reply counter return' + if ([ "$ipv6_mode" -eq 1 ] && [ "$enable_v6_udp_proxy" -eq 1 ]) || [ "$ipv6_mode" -eq 3 ]; then + nft add rule inet fw4 openclash_mangle_output_v6 ip6 nexthdr {udp} ip6 daddr { "$fakeip_range6" } mark set "$PROXY_FWMARK" counter + fi + if ([ "$ipv6_mode" -eq 0 ] && [ "$enable_v6_udp_proxy" -eq 1 ]) || [ "$ipv6_mode" -eq 2 ]; then + if [ "$en_mode" = "fake-ip" ]; then + nft add rule inet fw4 openclash_mangle_output_v6 ip6 nexthdr {tcp,udp} ip6 daddr { "$fakeip_range6" } mark set "$PROXY_FWMARK" counter + fi + fi + if [ "$ipv6_mode" -eq 0 ] && [ "$enable_v6_udp_proxy" -ne 1 ]; then + if [ "$en_mode" = "fake-ip" ]; then + nft add rule inet fw4 openclash_mangle_output_v6 ip6 nexthdr {tcp} ip6 daddr { "$fakeip_range6" } mark set "$PROXY_FWMARK" counter + fi + fi nft 'add rule inet fw4 openclash_mangle_output_v6 ip6 daddr @wan_ac_black_ipv6s counter return' + nft 'add rule inet fw4 openclash_mangle_output_v6 th dport @wan_ac_black_ports counter return' if [ "$en_mode" = "redir-host" ]; then nft 'add rule inet fw4 openclash_mangle_output_v6 th dport != @common_ports counter return' fi @@ -2138,23 +2216,19 @@ if [ -n "$FW4" ]; then nft "add rule inet fw4 openclash_mangle_output_v6 $rule counter return" fi + #icmpv6 + if [ "$ipv6_mode" -eq 2 ] || [ "$ipv6_mode" -eq 3 ]; then + nft add rule inet fw4 openclash_mangle_output_v6 meta nfproto {ipv6} ip6 nexthdr icmpv6 icmpv6 type echo-request mark set "$PROXY_FWMARK" counter accept comment \"OpenClash ICMPv6 Redirect\" + fi + if ([ "$ipv6_mode" -eq 1 ] && [ "$enable_v6_udp_proxy" -eq 1 ]) || [ "$ipv6_mode" -eq 3 ]; then nft add rule inet fw4 openclash_mangle_output_v6 ip6 nexthdr {udp} mark set "$PROXY_FWMARK" counter - if [ "$en_mode" = "fake-ip" ]; then - nft insert rule inet fw4 openclash_mangle_output_v6 position 0 ip6 nexthdr {udp} ip6 daddr { "$fakeip_range6" } mark set "$PROXY_FWMARK" counter - fi fi if ([ "$ipv6_mode" -eq 0 ] && [ "$enable_v6_udp_proxy" -eq 1 ]) || [ "$ipv6_mode" -eq 2 ]; then nft add rule inet fw4 openclash_mangle_output_v6 ip6 nexthdr {tcp,udp} mark set "$PROXY_FWMARK" counter - if [ "$en_mode" = "fake-ip" ]; then - nft insert rule inet fw4 openclash_mangle_output_v6 position 0 ip6 nexthdr {tcp,udp} ip6 daddr { "$fakeip_range6" } mark set "$PROXY_FWMARK" counter - fi fi if [ "$ipv6_mode" -eq 0 ] && [ "$enable_v6_udp_proxy" -ne 1 ]; then nft add rule inet fw4 openclash_mangle_output_v6 ip6 nexthdr {tcp} mark set "$PROXY_FWMARK" counter - if [ "$en_mode" = "fake-ip" ]; then - nft insert rule inet fw4 openclash_mangle_output_v6 position 0 ip6 nexthdr {tcp} ip6 daddr { "$fakeip_range6" } mark set "$PROXY_FWMARK" counter - fi fi nft 'add rule inet fw4 mangle_output meta nfproto {ipv6} counter jump openclash_mangle_output_v6' fi @@ -2221,20 +2295,12 @@ if [ -n "$FW4" ]; then done nft add rule inet fw4 openclash_wan6_input ip6 nexthdr {tcp,udp} th dport {$proxy_port,$tproxy_port,$cn_port,$http_port,$socks_port,$mixed_port,$dns_port} counter reject else - LOG_OUT "Warning: Can't Settting Only Intranet Allowed Function, Get IPv6 WAN Interfaces error, Please Verify The Firewall's WAN Zone Name is wan, Ignore This IF The Device Does not Have a WAN Interfaces..." + LOG_WARN "Can't Settting Only Intranet Allowed Function, Get IPv6 WAN Interfaces error, Please Verify The Firewall's WAN Zone Name is wan, Ignore This IF The Device Does not Have a WAN Interfaces..." fi fi fi #icmp - if [ -n "$en_mode_tun" ]; then - nft insert rule inet fw4 mangle_prerouting position 0 meta nfproto {ipv4} ip protocol icmp icmp type echo-request mark set "$PROXY_FWMARK" counter accept comment \"OpenClash ICMP Redirect\" - fi - if [ "$ipv6_enable" -eq 1 ]; then - if [ "$ipv6_mode" -eq 2 ] || [ "$ipv6_mode" -eq 3 ]; then - nft insert rule inet fw4 mangle_prerouting position 0 meta nfproto {ipv6} ip6 nexthdr icmpv6 icmpv6 type echo-request mark set "$PROXY_FWMARK" counter accept comment \"OpenClash ICMPv6 Redirect\" - fi - fi if [ "$en_mode" = "fake-ip" ]; then if [ -z "$en_mode_tun" ]; then nft insert rule inet fw4 input position 0 ip protocol icmp icmp type echo-request ip daddr { $fakeip_range } counter reject comment \"OpenClash ICMP INPUT REJECT\" @@ -2317,6 +2383,12 @@ if [ -z "$FW4" ]; then config_list_foreach "config" "wan_ac_black_ips" ac_add "wan_ac_black_ips" "wan_ac_black_ipv6s" fi + if [ -n "$(uci_get_config "wan_ac_black_ports")" ]; then + ipset create wan_ac_black_ports bitmap:port range 0-65535 + config_load "openclash" + config_list_foreach "config" "wan_ac_black_ports" ac_add "wan_ac_black_ports" + fi + #local ipset create localnetwork hash:net if [ -f "/etc/openclash/custom/openclash_custom_localnetwork_ipv4.list" ]; then @@ -2379,7 +2451,7 @@ if [ -z "$FW4" ]; then iptables -t filter -A openclash_wan_input -p udp -m multiport --dport "$proxy_port,$tproxy_port,$cn_port,$http_port,$socks_port,$mixed_port,$dns_port" -j REJECT iptables -t filter -A openclash_wan_input -p tcp -m multiport --dport "$proxy_port,$tproxy_port,$cn_port,$http_port,$socks_port,$mixed_port,$dns_port" -j REJECT else - LOG_OUT "Warning: Can't Settting Only Intranet Allowed Function, Get IPv4 WAN Interfaces error, Please Verify The Firewall's WAN Zone Name is wan, Ignore This IF The Device Does not Have a WAN Interfaces..." + LOG_WARN "Can't Settting Only Intranet Allowed Function, Get IPv4 WAN Interfaces error, Please Verify The Firewall's WAN Zone Name is wan, Ignore This IF The Device Does not Have a WAN Interfaces..." fi fi @@ -2448,10 +2520,9 @@ if [ -z "$FW4" ]; then iptables -t nat -F openclash iptables -t nat -A openclash -m set --match-set localnetwork dst -j RETURN iptables -t nat -A openclash -m conntrack --ctdir REPLY -j RETURN - if [ -z "$en_mode_tun" ] && [ "$en_mode" = "fake-ip" ]; then - iptables -t nat -A openclash -p tcp -d "$fakeip_range" -j REDIRECT --to-ports "$proxy_port" - fi + iptables -t nat -A openclash -p tcp -d "$fakeip_range" -j REDIRECT --to-ports "$proxy_port" iptables -t nat -A openclash -m set --match-set wan_ac_black_ips dst -j RETURN + iptables -t nat -A openclash -m set --match-set wan_ac_black_ports dst -j RETURN iptables -t nat -A openclash -m set --match-set lan_ac_black_ips src -j RETURN iptables -t nat -A openclash -m set --match-set lan_ac_black_macs src -j RETURN if [ "$lan_ac_mode" = "1" ] && [ -n "$(uci_get_config "lan_ac_white_ips")" ] && [ -n "$(uci_get_config "lan_ac_white_macs")" ]; then @@ -2492,6 +2563,7 @@ if [ -z "$FW4" ]; then iptables -t mangle -A openclash -p udp -d "$fakeip_range" -j TPROXY --on-port "$tproxy_port" --tproxy-mark "$PROXY_FWMARK" fi iptables -t mangle -A openclash -m set --match-set wan_ac_black_ips dst -j RETURN + iptables -t mangle -A openclash -m set --match-set wan_ac_black_ports dst -j RETURN iptables -t mangle -A openclash -m set --match-set lan_ac_black_macs src -j RETURN iptables -t mangle -A openclash -m set --match-set lan_ac_black_ips src -j RETURN if [ "$lan_ac_mode" = "1" ] && [ -n "$(uci_get_config "lan_ac_white_ips")" ] && [ -n "$(uci_get_config "lan_ac_white_macs")" ]; then @@ -2535,6 +2607,7 @@ if [ -z "$FW4" ]; then iptables -t mangle -A openclash_output -m set --match-set localnetwork dst -j RETURN iptables -t mangle -A openclash_output -m conntrack --ctdir REPLY -j RETURN iptables -t mangle -A openclash_output -m set --match-set wan_ac_black_ips dst -j RETURN + iptables -t mangle -A openclash_output -m set --match-set wan_ac_black_ports dst -j RETURN if [ "$en_mode" = "fake-ip" ]; then iptables -t mangle -A openclash_output -p udp -d "$fakeip_range" -j MARK --set-mark "$PROXY_FWMARK" fi @@ -2578,6 +2651,7 @@ if [ -z "$FW4" ]; then iptables -t nat -A openclash_output -m set --match-set localnetwork dst -j RETURN iptables -t nat -A openclash_output -m conntrack --ctdir REPLY -j RETURN iptables -t nat -A openclash_output -m set --match-set wan_ac_black_ips dst -j RETURN + iptables -t nat -A openclash_output -m set --match-set wan_ac_black_ports dst -j RETURN if [ "$en_mode" = "redir-host" ]; then iptables -t nat -A openclash_output -m set ! --match-set common_ports dst -j RETURN fi @@ -2606,12 +2680,17 @@ if [ -z "$FW4" ]; then iptables -t mangle -A openclash_output $owner -j RETURN iptables -t mangle -A openclash_output -m set --match-set localnetwork dst -j RETURN iptables -t mangle -A openclash_output -m conntrack --ctdir REPLY -j RETURN - iptables -t mangle -A openclash_output -d "$fakeip_range" -j MARK --set-mark "$PROXY_FWMARK" + if [ "$en_mode_tun" -eq 1 ]; then + iptables -t mangle -A openclash_output -d "$fakeip_range" -j MARK --set-mark "$PROXY_FWMARK" + else + iptables -t mangle -A openclash_output -p udp -d "$fakeip_range" -j MARK --set-mark "$PROXY_FWMARK" + fi if [ "$en_mode" = "redir-host" ]; then iptables -t mangle -A openclash_output -m set ! --match-set common_ports dst -j RETURN fi if [ "$router_self_proxy" = "1" ]; then iptables -t mangle -A openclash_output -m set --match-set wan_ac_black_ips dst -j RETURN + iptables -t mangle -A openclash_output -m set --match-set wan_ac_black_ports dst -j RETURN if [ "$china_ip_route" != "0" ]; then if [ "$china_ip_route" = "1" ]; then rule="-m set --match-set china_ip_route dst" @@ -2624,6 +2703,8 @@ if [ -z "$FW4" ]; then if [ "$en_mode_tun" -eq 1 ]; then iptables -t mangle -A openclash_output -j MARK --set-mark "$PROXY_FWMARK" else + #icmp + iptables -t mangle -A openclash_output -p icmp --icmp-type echo-request -j MARK --set-xmark "$PROXY_FWMARK" -m comment --comment "OpenClash ICMP Mark" iptables -t mangle -A openclash_output -p udp -j MARK --set-mark "$PROXY_FWMARK" fi fi @@ -2639,7 +2720,13 @@ if [ -z "$FW4" ]; then iptables -t mangle -A openclash -i utun -j RETURN iptables -t mangle -A openclash -m set --match-set localnetwork dst -j RETURN iptables -t mangle -A openclash -m conntrack --ctdir REPLY -j RETURN + if [ "$en_mode_tun" -eq 1 ]; then + iptables -t mangle -A openclash -d "$fakeip_range" -j MARK --set-mark "$PROXY_FWMARK" + else + iptables -t mangle -A openclash -p udp -d "$fakeip_range" -j MARK --set-mark "$PROXY_FWMARK" + fi iptables -t mangle -A openclash -m set --match-set wan_ac_black_ips dst -j RETURN + iptables -t mangle -A openclash -m set --match-set wan_ac_black_ports dst -j RETURN iptables -t mangle -A openclash -m set --match-set lan_ac_black_ips src -j RETURN iptables -t mangle -A openclash -m set --match-set lan_ac_black_macs src -j RETURN if [ "$lan_ac_mode" = "1" ] && [ -n "$(uci_get_config "lan_ac_white_ips")" ] && [ -n "$(uci_get_config "lan_ac_white_macs")" ]; then @@ -2664,14 +2751,16 @@ if [ -z "$FW4" ]; then iptables -t mangle -A openclash -p udp -j openclash_upnp - iptables -t mangle -A openclash -j MARK --set-mark "$PROXY_FWMARK" - if [ "$en_mode_tun" -eq 1 ]; then - iptables -t mangle -A PREROUTING -j openclash + iptables -t mangle -A openclash -j MARK --set-mark "$PROXY_FWMARK" else - iptables -t mangle -A PREROUTING -p udp -j openclash + #icmp + iptables -t mangle -A openclash -p icmp --icmp-type echo-request -j MARK --set-xmark "$PROXY_FWMARK" -m comment --comment "OpenClash ICMP Mark" + iptables -t mangle -A openclash -p udp -j MARK --set-mark "$PROXY_FWMARK" fi + iptables -t mangle -A PREROUTING -j openclash + #TUN FORWORD iptables -I FORWARD -m comment --comment "OpenClash TUN Forward" -o utun -j ACCEPT iptables -I FORWARD -m comment --comment "OpenClash TUN Forward" -i utun -j ACCEPT @@ -2793,12 +2882,11 @@ if [ -z "$FW4" ]; then #tcp ip6tables -t nat -N openclash ip6tables -t nat -F openclash - if [ "$en_mode" = "fake-ip" ]; then - ip6tables -t nat -A openclash -p tcp -d "$fakeip_range6" -j REDIRECT --to-ports "$proxy_port" - fi + ip6tables -t nat -A openclash -p tcp -d "$fakeip_range6" -j REDIRECT --to-ports "$proxy_port" ip6tables -t nat -A openclash -m set --match-set localnetwork6 dst -j RETURN ip6tables -t nat -A openclash -m conntrack --ctdir REPLY -j RETURN ip6tables -t nat -A openclash -m set --match-set wan_ac_black_ipv6s dst -j RETURN + ip6tables -t nat -A openclash -m set --match-set wan_ac_black_ports dst -j RETURN ip6tables -t nat -A openclash -m set --match-set lan_ac_black_ipv6s src -j RETURN ip6tables -t nat -A openclash -m set --match-set lan_ac_black_macs src -j RETURN if [ "$lan_ac_mode" = "1" ] && [ -n "$(uci_get_config "lan_ac_white_ips")" ] && [ -n "$(uci_get_config "lan_ac_white_macs")" ]; then @@ -2829,7 +2917,22 @@ if [ -z "$FW4" ]; then ip6tables -t mangle -F openclash ip6tables -t mangle -A openclash -m set --match-set localnetwork6 dst -j RETURN ip6tables -t mangle -A openclash -m conntrack --ctdir REPLY -j RETURN + if [ "$ipv6_mode" -ne 1 ] && [ "$ipv6_mode" -ne 3 ]; then + if [ "$ipv6_mode" -eq 0 ]; then + ip6tables -t mangle -A openclash -p tcp -d "$fakeip_range6" -j TPROXY --on-port "$tproxy_port" --tproxy-mark "$PROXY_FWMARK" + else + ip6tables -t mangle -A openclash -p tcp -d "$fakeip_range6" -j MARK --set-mark "$PROXY_FWMARK" + fi + fi + if [ "$ipv6_mode" -eq 2 ] || [ "$ipv6_mode" -eq 3 ]; then + ip6tables -t mangle -A openclash -p udp -d "$fakeip_range6" -j MARK --set-mark "$PROXY_FWMARK" + else + if [ "$enable_v6_udp_proxy" -eq 1 ]; then + ip6tables -t mangle -A openclash -p udp -d "$fakeip_range6" -j TPROXY --on-port "$tproxy_port" --tproxy-mark "$PROXY_FWMARK" + fi + fi ip6tables -t mangle -A openclash -m set --match-set wan_ac_black_ipv6s dst -j RETURN + ip6tables -t mangle -A openclash -m set --match-set wan_ac_black_ports dst -j RETURN ip6tables -t mangle -A openclash -m set --match-set lan_ac_black_macs src -j RETURN ip6tables -t mangle -A openclash -m set --match-set lan_ac_black_ipv6s src -j RETURN if [ "$lan_ac_mode" = "1" ] && [ -n "$(uci_get_config "lan_ac_white_ips")" ] && [ -n "$(uci_get_config "lan_ac_white_macs")" ]; then @@ -2852,34 +2955,27 @@ if [ -z "$FW4" ]; then [ "$enable_redirect_dns" != "2" ] && rule="$rule -m set ! --match-set china_ip6_route_pass dst" ip6tables -t mangle -A openclash $rule -j RETURN fi + + #icmpv6 + if [ "$ipv6_mode" -eq 2 ] || [ "$ipv6_mode" -eq 3 ]; then + ip6tables -t mangle -A openclash -p icmpv6 --icmpv6-type echo-request -j MARK --set-xmark "$PROXY_FWMARK" -m comment --comment "OpenClash ICMPv6 Redirect" + fi fi #tcp Tproxy && TUN if [ "$ipv6_mode" -ne 1 ] && [ "$ipv6_mode" -ne 3 ]; then if [ "$ipv6_mode" -eq 0 ]; then - if [ "$en_mode" = "fake-ip" ]; then - ip6tables -t mangle -I openclash -p tcp -d "$fakeip_range6" -j TPROXY --on-port "$tproxy_port" --tproxy-mark "$PROXY_FWMARK" - fi ip6tables -t mangle -A openclash -p tcp -m comment --comment "OpenClash TCP Tproxy" -j TPROXY --on-port "$tproxy_port" --tproxy-mark "$PROXY_FWMARK" else - if [ "$en_mode" = "fake-ip" ]; then - ip6tables -t mangle -I openclash -p tcp -d "$fakeip_range6" -j MARK --set-mark "$PROXY_FWMARK" - fi ip6tables -t mangle -A openclash -p tcp -j MARK --set-mark "$PROXY_FWMARK" fi fi #udp if [ "$ipv6_mode" -eq 2 ] || [ "$ipv6_mode" -eq 3 ]; then - if [ "$en_mode" = "fake-ip" ]; then - ip6tables -t mangle -I openclash -p udp -d "$fakeip_range6" -j MARK --set-mark "$PROXY_FWMARK" - fi ip6tables -t mangle -A openclash -p udp -m comment --comment "OpenClash UDP TUN" -j MARK --set-xmark "$PROXY_FWMARK" else if [ "$enable_v6_udp_proxy" -eq 1 ]; then - if [ "$en_mode" = "fake-ip" ]; then - ip6tables -t mangle -I openclash -p udp -d "$fakeip_range6" -j TPROXY --on-port "$tproxy_port" --tproxy-mark "$PROXY_FWMARK" - fi ip6tables -t mangle -A openclash -p udp -m comment --comment "OpenClash UDP Tproxy" -j TPROXY --on-port "$tproxy_port" --tproxy-mark "$PROXY_FWMARK" fi fi @@ -2899,6 +2995,7 @@ if [ -z "$FW4" ]; then ip6tables -t nat -A openclash_output -m set --match-set localnetwork6 dst -j RETURN ip6tables -t nat -A openclash_output -m conntrack --ctdir REPLY -j RETURN ip6tables -t nat -A openclash_output -m set --match-set wan_ac_black_ipv6s dst -j RETURN + ip6tables -t nat -A openclash_output -m set --match-set wan_ac_black_ports dst -j RETURN if [ "$en_mode" = "redir-host" ]; then ip6tables -t nat -A openclash_output -m set ! --match-set common_ports dst -j RETURN fi @@ -2921,7 +3018,18 @@ if [ -z "$FW4" ]; then ip6tables -t mangle -A openclash_output $owner -j RETURN ip6tables -t mangle -A openclash_output -m set --match-set localnetwork6 dst -j RETURN ip6tables -t mangle -A openclash_output -m conntrack --ctdir REPLY -j RETURN + if ([ "$ipv6_mode" -eq 1 ] && [ "$enable_v6_udp_proxy" -eq 1 ]) || [ "$ipv6_mode" -eq 3 ]; then + ip6tables -t mangle -A openclash_output -p udp -d "$fakeip_range6" -j MARK --set-xmark "$PROXY_FWMARK" + fi + if ([ "$ipv6_mode" -eq 0 ] && [ "$enable_v6_udp_proxy" -eq 1 ]) || [ "$ipv6_mode" -eq 2 ]; then + ip6tables -t mangle -A openclash_output -p tcp -d "$fakeip_range6" -j MARK --set-xmark "$PROXY_FWMARK" + ip6tables -t mangle -A openclash_output -p udp -d "$fakeip_range6" -j MARK --set-xmark "$PROXY_FWMARK" + fi + if [ "$ipv6_mode" -eq 0 ] && [ "$enable_v6_udp_proxy" -ne 1 ]; then + ip6tables -t mangle -A openclash_output -p tcp -d "$fakeip_range6" -j MARK --set-xmark "$PROXY_FWMARK" + fi ip6tables -t mangle -A openclash_output -m set --match-set wan_ac_black_ipv6s dst -j RETURN + ip6tables -t mangle -A openclash_output -m set --match-set wan_ac_black_ports dst -j RETURN if [ "$en_mode" = "redir-host" ]; then ip6tables -t mangle -A openclash_output -m set ! --match-set common_ports dst -j RETURN fi @@ -2935,23 +3043,18 @@ if [ -z "$FW4" ]; then ip6tables -t mangle -A openclash_output $rule -j RETURN fi + #icmpv6 + if [ "$ipv6_mode" -eq 2 ] || [ "$ipv6_mode" -eq 3 ]; then + ip6tables -t mangle -A openclash_output -p icmpv6 --icmpv6-type echo-request -j MARK --set-xmark "$PROXY_FWMARK" -m comment --comment "OpenClash ICMPv6 Redirect" + fi + if ([ "$ipv6_mode" -eq 1 ] && [ "$enable_v6_udp_proxy" -eq 1 ]) || [ "$ipv6_mode" -eq 3 ]; then - if [ "$en_mode" = "fake-ip" ]; then - ip6tables -t mangle -I openclash_output -p udp -d "$fakeip_range6" -j MARK --set-xmark "$PROXY_FWMARK" - fi ip6tables -t mangle -A openclash_output -p udp -j MARK --set-xmark "$PROXY_FWMARK" fi if ([ "$ipv6_mode" -eq 0 ] && [ "$enable_v6_udp_proxy" -eq 1 ]) || [ "$ipv6_mode" -eq 2 ]; then - if [ "$en_mode" = "fake-ip" ]; then - ip6tables -t mangle -I openclash_output -p tcp -d "$fakeip_range6" -j MARK --set-xmark "$PROXY_FWMARK" - ip6tables -t mangle -I openclash_output -p udp -d "$fakeip_range6" -j MARK --set-xmark "$PROXY_FWMARK" - fi ip6tables -t mangle -A openclash_output -j MARK --set-xmark "$PROXY_FWMARK" fi if [ "$ipv6_mode" -eq 0 ] && [ "$enable_v6_udp_proxy" -ne 1 ]; then - if [ "$en_mode" = "fake-ip" ]; then - ip6tables -t mangle -I openclash_output -p tcp -d "$fakeip_range6" -j MARK --set-xmark "$PROXY_FWMARK" - fi ip6tables -t mangle -A openclash_output -p tcp -j MARK --set-xmark "$PROXY_FWMARK" fi ip6tables -t mangle -A OUTPUT -j openclash_output @@ -3018,20 +3121,12 @@ if [ -z "$FW4" ]; then ip6tables -t filter -A openclash_wan_input -p udp -m multiport --dport "$proxy_port,$tproxy_port,$cn_port,$http_port,$socks_port,$mixed_port,$dns_port" -j REJECT ip6tables -t filter -A openclash_wan_input -p tcp -m multiport --dport "$proxy_port,$tproxy_port,$cn_port,$http_port,$socks_port,$mixed_port,$dns_port" -j REJECT else - LOG_OUT "Warning: Can't Settting Only Intranet Allowed Function, Get IPv6 WAN Interfaces error, Please Verify The Firewall's WAN Zone Name is wan, Ignore This IF The Device Does not Have a WAN Interfaces..." + LOG_WARN "Can't Settting Only Intranet Allowed Function, Get IPv6 WAN Interfaces error, Please Verify The Firewall's WAN Zone Name is wan, Ignore This IF The Device Does not Have a WAN Interfaces..." fi fi fi - #icmp - if [ -n "$en_mode_tun" ]; then - iptables -t mangle -I PREROUTING -p icmp --icmp-type echo-request -j MARK --set-xmark "$PROXY_FWMARK" -m comment --comment "OpenClash ICMP Redirect" - fi - if [ "$ipv6_enable" -eq 1 ]; then - if [ "$ipv6_mode" -eq 2 ] || [ "$ipv6_mode" -eq 3 ]; then - ip6tables -t mangle -I PREROUTING -p icmpv6 --icmpv6-type echo-request -j MARK --set-xmark "$PROXY_FWMARK" -m comment --comment "OpenClash ICMPv6 Redirect" - fi - fi + #icmp reject if [ "$en_mode" = "fake-ip" ]; then if [ -z "$en_mode_tun" ]; then iptables -t filter -I INPUT -p icmp --icmp-type echo-request -d "$fakeip_range" -j REJECT --reject-with icmp-admin-prohibited -m comment --comment "OpenClash ICMP INPUT REJECT" @@ -3049,7 +3144,7 @@ if [ -z "$FW4" ]; then fi #端口转发 -LOG_OUT "Tip: Start Add Port Bypassing Rules For Firewall Redirect and Firewall Rules..." +LOG_TIP "Start Add Port Bypassing Rules For Firewall Redirect and Firewall Rules..." config_load "firewall" config_foreach firewall_redirect_exclude "redirect" config_foreach firewall_rule_exclude "rule" @@ -3093,7 +3188,7 @@ revert_firewall() nft delete chain inet fw4 handle ${handle} done - for handle in $(nft -a list sets |grep -E "set localnetwork|china_ip|lan_ac_|wan_ac_black_|_google_dns_|common_ports" |awk -F '# handle ' '{print$2}'); do + for handle in $(nft -a list sets |grep -E "set localnetwork|china_ip|lan_ac_|wan_ac_black_|common_ports" |awk -F '# handle ' '{print$2}'); do nft delete set inet fw4 handle ${handle} done else @@ -3137,6 +3232,7 @@ revert_firewall() ipset destroy lan_ac_white_macs ipset destroy lan_ac_black_macs ipset destroy wan_ac_black_ips + ipset destroy wan_ac_black_ports ipset destroy common_ports fi } >/dev/null 2>&1 @@ -3323,7 +3419,7 @@ EOF file="/etc/openclash/overwrite/${name}" [ ! -f "$file" ] && continue - LOG_OUT "Tip: Processing Overwrite Module【$name】" + LOG_TIP "Processing Overwrite Module【$name】" echo "# --- overwrite source: ${name} (sid=${sid}) ---" >> "$overwrite_script" echo "export OPENCLASH_OVERWRITE_SID='${sid}'" >> "$overwrite_script" @@ -3383,7 +3479,7 @@ ${trimmed}" restart=$(eval "echo \"$(echo "$val" | sed -nE 's/.*restart[[:space:]]*=[[:space:]]*([^,]*).*/\1/p')\"") [ -z "$cron" ] && cron=0 if [ -z "$path" ] || [ -z "$url" ]; then - LOG_OUT "Warning: DOWNLOAD FILE no target in【Download Job => file: $file】" + LOG_WARN "DOWNLOAD FILE no target in【Download Job => file: $file】" download_failed=1 break fi @@ -3392,7 +3488,7 @@ ${trimmed}" need_download=1 fi if [ "$need_download" -eq 1 ] && [ -n "$url" ]; then - LOG_OUT "Tip: DOWNLOAD FILE for【Download Job => file: $file, url: $url, path: $path, ua: ${ua:-null}, force: ${force:-false}】" + LOG_TIP "DOWNLOAD FILE for【Download Job => file: $file, url: $url, path: $path, ua: ${ua:-null}, force: ${force:-false}】" if command -v curl >/dev/null 2>&1; then if [ -n "$ua" ]; then curl -fsSL -m 30 -H "User-Agent: $ua" "$url" -o "$path" >/dev/null 2>&1 @@ -3409,13 +3505,13 @@ ${trimmed}" rc=$? fi if [ $rc -ne 0 ] && [ ! -f "$path" ]; then - LOG_OUT "Error: DOWNLOAD FILE failed for【Download Job => file: $file, url: $url, path: $path】" + LOG_ERROR "DOWNLOAD FILE failed for【Download Job => file: $file, url: $url, path: $path】" download_failed=1 break fi fi if [ "$cron" != "0" ]; then - LOG_OUT "Tip: Add Cron for【Cron Job => time: $cron, url: $url, path: $path, restart: ${restart:-false}】" + LOG_TIP "Add Cron for【Cron Job => time: $cron, url: $url, path: $path, restart: ${restart:-false}】" if ! grep -q "$url" $CRON_FILE 2>/dev/null; then if [ -n "$ua" ]; then cron_cmd="$cron curl -fsSL -m 30 -H \"User-Agent: $ua\" \"$url\" -o \"$path\" >/dev/null 2>&1" @@ -3458,7 +3554,6 @@ ${trimmed}" uci -q set openclash.@overwrite[0].config_path="$RAW_CONFIG_FILE" cfg_name=$(basename "$RAW_CONFIG_FILE" 2>/dev/null) if [ -n "$cfg_name" ]; then - BACKUP_FILE="/etc/openclash/backup/${cfg_name}" CONFIG_FILE="/etc/openclash/${cfg_name}" TMP_CONFIG_FILE="/tmp/yaml_config_tmp_${cfg_name}" fi @@ -3487,18 +3582,18 @@ ${trimmed}" if check_type "$key_u" "$val_clean"; then uci -q set openclash.@overwrite[0]."$key_l"="$val_key" else - LOG_OUT "Warning: skip General key type error【General Key => $name: $key_u, value: $val_key】" + LOG_WARN "skip General key type error【General Key => $name: $key_u, value: $val_key】" fi else - LOG_OUT "Warning: skip General key not allowed【General Key => $name: $key_u】" + LOG_WARN "skip General key not allowed【General Key => $name: $key_u】" fi fi elif [ "$in_overwrite" -eq 1 ]; then if printf "%s" "$trimmed" | grep -qE '^ruby_[a-z_]+\b'; then echo "$trimmed" >> "$overwrite_script" - LOG_OUT "Tip: Load Overwrite Script【Ruby Script => $trimmed】" + LOG_TIP "Load Overwrite Script【Ruby Script => $trimmed】" else - LOG_OUT "Warning: skip invalid Overwrite command【Ruby Script => $name: $trimmed】" + LOG_WARN "skip invalid Overwrite command【Ruby Script => $name: $trimmed】" fi fi done < "$file" @@ -3528,7 +3623,7 @@ EOF key_clean=$(echo "$key" | sed 's/^openclash\.[^.]*\.//') value_clean=$(echo "$value" | sed "s/^'//;s/'$//") [ -z "$key_clean" ] && continue - LOG_OUT "Tip: Load Overwrite Script【$key_clean => '$value_clean'】" + LOG_TIP "Load Overwrite Script【$key_clean => '$value_clean'】" done </dev/null) - BACKUP_FILE="/etc/openclash/backup/${CFG_NAME}" CONFIG_FILE="/etc/openclash/${CFG_NAME}" TMP_CONFIG_FILE="/tmp/yaml_config_tmp_${CFG_NAME}" enable=$(uci_get_config "enable") - rule_source=$(uci_get_config "rule_source") enable_custom_clash_rules=$(uci_get_config "enable_custom_clash_rules") da_password=$(uci_get_config "dashboard_password") cn_port=$(uci_get_config "cn_port") @@ -3566,14 +3659,14 @@ get_config() socks_port=$(uci_get_config "socks_port") enable_redirect_dns=$(uci_get_config "enable_redirect_dns" || echo 1) if [ "$(uci_get_config "fakeip_range")" == "0" ]; then - fakeip_range=$(ruby_read "$CONFIG_FILE" "['dns']['fake-ip-range']") + fakeip_range=$(ruby_read "$RAW_CONFIG_FILE" "['dns']['fake-ip-range']") else fakeip_range=$(uci_get_config "fakeip_range") fi [ -z "$fakeip_range" ] && fakeip_range="198.18.0.1/16" if [ "$(uci_get_config "fakeip_range6")" == "0" ]; then - fakeip_range6=$(ruby_read "$CONFIG_FILE" "['dns']['fake-ip-range6']") + fakeip_range6=$(ruby_read "$RAW_CONFIG_FILE" "['dns']['fake-ip-range6']") else fakeip_range6=$(uci_get_config "fakeip_range6") fi @@ -3647,9 +3740,14 @@ get_config() start_service() { enable=$(uci_get_config "enable") - [ "$enable" != "1" ] && LOG_OUT "Warning: OpenClash Now Disabled, Need Start From Luci Page, Exit..." && SLOG_CLEAN && exit 0 + [ "$enable" != "1" ] && LOG_WARN "OpenClash Now Disabled, Need Start From Luci Page, Exit..." && SLOG_CLEAN && exit 0 - LOG_OUT "Tip: OpenClash Start Running..." + if /etc/init.d/openclash status >/dev/null 2>&1; then + LOG_TIP "OpenClash Already Running, Exit..." + exit 0 + fi + + LOG_TIP "OpenClash Start Running..." { LOG_OUT "Step 1: Get The Configuration..." @@ -3661,7 +3759,7 @@ start_service() do_run_mode LOG_OUT "Step 2: Check The Components..." - do_run_file "$RAW_CONFIG_FILE" "$BACKUP_FILE" + do_run_file "$RAW_CONFIG_FILE" if ! $QUICK_START; then LOG_OUT "Step 3: Modify The Config File..." @@ -3677,8 +3775,8 @@ start_service() "$lgbm_auto_update" "$lgbm_custom_url" "$lgbm_update_interval" "$smart_collect" "$smart_collect_size" "$fakeip_range6" /usr/share/openclash/yml_rules_change.sh \ - "$rule_source" "$enable_custom_clash_rules" "$TMP_CONFIG_FILE"\ - "$enable_rule_proxy" "$CONFIG_NAME" "$router_self_proxy" "$lan_ip" "$enable_redirect_dns" "$en_mode"\ + "$enable_custom_clash_rules" "$TMP_CONFIG_FILE"\ + "$enable_rule_proxy" "$router_self_proxy" "$lan_ip" "$enable_redirect_dns" "$en_mode"\ "$auto_smart_switch" "$smart_collect" "$smart_collect_rate" "$smart_policy_priority" "$smart_enable_lgbm" "$smart_prefer_asn" #Custom overwrite @@ -3695,21 +3793,19 @@ start_service() sed -n "s/.*yaml_file_path=['\"]\([^'\"]*\)['\"].*/\1/p" /tmp/yaml_openclash_ruby_parse | sort | uniq | while read -r yaml_file; do [ -z "$yaml_file" ] && continue ruby_code=$(grep "yaml_file_path=['\"]$yaml_file['\"]" /tmp/yaml_openclash_ruby_parse | sed "s/^threads << Thread.new do //;s/ end$//") - if [ -z "$ruby_code" ]; then - continue - fi + [ -z "$ruby_code" ] && continue if [ -f "$yaml_file" ]; then - ( - ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e " - Value = YAML.load_file('$yaml_file'); - threads = [] - $ruby_code - threads.each(&:join) - File.open('$yaml_file', 'w') do |f| - YAML.dump(Value, f) - end - " >> $LOG_FILE 2>&1 - ) + ( + ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e " + Value = YAML.load_file('$yaml_file'); + threads = [] + $ruby_code + threads.each(&:join) + File.open('$yaml_file', 'w') do |f| + YAML.dump(Value, f) + end + " >> $LOG_FILE 2>&1 + ) fi done fi @@ -3728,7 +3824,7 @@ start_service() check_core_status "start" & if [ "$ipv6_enable" -eq 0 ] && [ "$(uci -q get dhcp.lan.dhcpv6)" != "disabled" ] && [ -n "$(uci -q get dhcp.lan.dhcpv6)" ]; then - LOG_OUT "Warning: Please Note That Network May Abnormal With IPv6's DHCP Server" + LOG_WARN "Please Note That Network May Abnormal With IPv6's DHCP Server" fi rm -rf /tmp/yaml_* @@ -3741,7 +3837,7 @@ stop_service() { enable=$(uci_get_config "enable") - LOG_OUT "Tip: OpenClash Stoping..." + LOG_TIP "OpenClash Stoping..." LOG_OUT "Step 1: Backup The Current Groups State..." { @@ -3750,8 +3846,8 @@ stop_service() LOG_OUT "Step 2: Delete OpenClash Firewall Rules..." revert_firewall - LOG_OUT "Step 3: Close The OpenClash Daemons..." - for process in "openclash_watchdog.sh" "openclash_streaming_unlock.lua"; do + LOG_OUT "Step 3: Close The OpenClash Services..." + for process in "openclash_streaming_unlock.lua"; do pids=$(unify_ps_pids "$process") if [ -n "$pids" ]; then for pid in $pids; do @@ -3759,25 +3855,20 @@ stop_service() done fi done + # prevent respawn during stopping + procd_kill "openclash" - LOG_OUT "Step 4: Close The Clash Core Process..." - kill_clash - - LOG_OUT "Step 5: Restart Dnsmasq..." + LOG_OUT "Step 4: Restart Dnsmasq..." revert_dnsmasq - LOG_OUT "Step 6: Delete OpenClash Residue File..." - LOG_OUT "Tip: OpenClash Already Stop!" + LOG_OUT "Step 5: Delete OpenClash Residue File..." + LOG_TIP "OpenClash Already Stop!" if [ "$enable" != "1" ]; then rm -rf /tmp/clash_last_version \ - /tmp/Proxy_Group \ - /tmp/rules_name \ - /tmp/rule_providers_name \ /tmp/openclash_last_version \ /tmp/openclash.change \ /tmp/openclash_debug.log \ - /tmp/openclash_edit_file_name \ /tmp/openclash_announcement \ ${DNSMASQ_CONF_DIR}/dnsmasq_openclash_chnroute_pass.conf \ ${DNSMASQ_CONF_DIR}/dnsmasq_openclash_chnroute6_pass.conf \ @@ -3811,7 +3902,7 @@ revert_dnsmasq() restart() { echo "OpenClash Restart..." - LOG_OUT "Tip: OpenClash Restart..." + LOG_TIP "OpenClash Restart..." check_run_quick stop start diff --git a/luci-app-openclash/root/etc/openclash/custom/openclash_custom_firewall_rules.sh b/luci-app-openclash/root/etc/openclash/custom/openclash_custom_firewall_rules.sh index 75ef5de2..34755eca 100644 --- a/luci-app-openclash/root/etc/openclash/custom/openclash_custom_firewall_rules.sh +++ b/luci-app-openclash/root/etc/openclash/custom/openclash_custom_firewall_rules.sh @@ -5,6 +5,6 @@ # This script is called by /etc/init.d/openclash # Add your custom firewall rules here, they will be added after the end of the OpenClash iptables rules -LOG_OUT "Tip: Start Add Custom Firewall Rules..." +LOG_TIP "Start Add Custom Firewall Rules..." exit 0 \ No newline at end of file diff --git a/luci-app-openclash/root/etc/openclash/custom/openclash_custom_overwrite.sh b/luci-app-openclash/root/etc/openclash/custom/openclash_custom_overwrite.sh index ccf2339e..6447a6fc 100644 --- a/luci-app-openclash/root/etc/openclash/custom/openclash_custom_overwrite.sh +++ b/luci-app-openclash/root/etc/openclash/custom/openclash_custom_overwrite.sh @@ -6,7 +6,7 @@ # This script is called by /etc/init.d/openclash # Add your custom overwrite scripts here, they will be take effict after the OpenClash own srcipts -LOG_OUT "Tip: Start Running Custom Overwrite Scripts..." +LOG_TIP "Start Running Custom Overwrite Scripts..." LOGTIME=$(echo $(date "+%Y-%m-%d %H:%M:%S")) LOG_FILE="/tmp/openclash.log" #Config Path @@ -42,7 +42,7 @@ CONFIG_FILE="$1" #2--key name #3--hash #ruby_merge_hash "$CONFIG_FILE" "['proxy-providers']" "'TW'=>{'type'=>'http', 'path'=>'./proxy_provider/TW.yaml', 'url'=>'https://gist.githubusercontent.com/raw/tw_clash', 'interval'=>3600, 'health-check'=>{'enable'=>true, 'url'=>'http://cp.cloudflare.com/generate_204', 'interval'=>300}}" - #ruby_merge_hash "$CONFIG_FILE" "['rule-providers']" "'Reject'=>{'type'=>'http', 'behavior'=>'classical', 'url'=>'https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Reject.yaml', 'path'=>'./rule_provider/Reject', 'interval'=>86400}" + #ruby_merge_hash "$CONFIG_FILE" "['rule-providers']" "'Reject'=>{'type'=>'http', 'behavior'=>'classical', 'url'=>'https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/refs/heads/master/Clash/Apple.list', 'path'=>'./rule_provider/Apple.list', 'interval'=>86400}" #Array Edit Demo #1--config path @@ -51,7 +51,7 @@ CONFIG_FILE="$1" #4--match key value #5--target key name #6--target key value - #ruby_arr_edit "$CONFIG_FILE" "['proxy-groups']" "['name']" "Proxy" "['type']" "Smart" + #ruby_arr_edit "$CONFIG_FILE" "['proxy-groups']" "['name']" "Proxy" "['type']" "smart" #ruby_arr_edit "$CONFIG_FILE" "['dns']['nameserver']" "" "114.114.114.114" "" "119.29.29.29" #Array Insert Value Demo: @@ -103,7 +103,7 @@ CONFIG_FILE="$1" # begin # Value = YAML.load_file('$CONFIG_FILE'); # rescue Exception => e - # puts '${LOGTIME} Error: Load File Failed,【' + e.message + '】'; + # puts '${LOGTIME} [error] Load File Failed,【' + e.message + '】'; # end; #General @@ -117,7 +117,7 @@ CONFIG_FILE="$1" # }.join; # rescue Exception => e - # puts '${LOGTIME} Error: Set General Failed,【' + e.message + '】'; + # puts '${LOGTIME} [error] Set General Failed,【' + e.message + '】'; # ensure # File.open('$CONFIG_FILE','w') {|f| YAML.dump(Value, f)}; # end" 2>/dev/null >> $LOG_FILE diff --git a/luci-app-openclash/root/etc/openclash/game_rules/CS-GO.rules b/luci-app-openclash/root/etc/openclash/game_rules/CS-GO.rules deleted file mode 100644 index a16a9942..00000000 --- a/luci-app-openclash/root/etc/openclash/game_rules/CS-GO.rules +++ /dev/null @@ -1,618 +0,0 @@ -payload: - - 1.165.84.0/24 - - 1.165.85.0/24 - - 1.165.90.0/24 - - 5.8.200.0/24 - - 5.9.123.0/24 - - 13.73.0.0/16 - - 13.73.1.0/24 - - 13.75.114.0/24 - - 13.126.76.0/24 - - 14.18.251.72/32 - - 18.214.26.0/24 - - 24.105.28.0/24 - - 27.64.93.0/24 - - 34.235.169.0/24 - - 35.185.157.0/24 - - 35.198.200.0/24 - - 36.232.23.0/24 - - 36.232.28.0/24 - - 36.232.29.0/24 - - 37.21.10.0/24 - - 37.230.228.0/24 - - 42.113.94.0/24 - - 42.114.229.0/24 - - 43.225.199.0/24 - - 43.239.136.0/24 - - 43.241.50.0/24 - - 43.249.36.0/24 - - 45.113.137.0/24 - - 45.113.191.0/24 - - 45.119.240.0/24 - - 45.121.184.0/24 - - 45.121.185.0/24 - - 45.121.186.0/24 - - 45.121.187.0/24 - - 47.52.16.0/24 - - 47.52.17.0/24 - - 47.52.18.0/24 - - 47.52.19.0/24 - - 47.52.20.0/24 - - 47.52.21.0/24 - - 47.52.22.0/24 - - 47.52.23.0/24 - - 47.52.24.0/24 - - 47.52.25.0/24 - - 47.52.26.0/24 - - 47.52.27.0/24 - - 47.52.28.0/24 - - 47.52.29.0/24 - - 47.52.30.0/24 - - 47.52.31.0/24 - - 47.52.40.0/24 - - 47.52.41.0/24 - - 47.52.42.0/24 - - 47.52.43.0/24 - - 47.52.44.0/24 - - 47.52.45.0/24 - - 47.52.46.0/24 - - 47.52.47.0/24 - - 47.52.56.0/24 - - 47.52.57.0/24 - - 47.52.58.0/24 - - 47.52.59.0/24 - - 47.52.60.0/24 - - 47.52.61.0/24 - - 47.52.62.0/24 - - 47.52.63.0/24 - - 47.52.64.0/24 - - 47.52.65.0/24 - - 47.52.66.0/24 - - 47.52.67.0/24 - - 47.52.68.0/24 - - 47.52.69.0/24 - - 47.52.70.0/24 - - 47.52.71.0/24 - - 47.52.72.0/24 - - 47.52.73.0/24 - - 47.52.74.0/24 - - 47.52.75.0/24 - - 47.52.76.0/24 - - 47.52.77.0/24 - - 47.52.78.0/24 - - 47.52.79.0/24 - - 47.52.88.0/24 - - 47.52.89.0/24 - - 47.52.90.0/24 - - 47.52.91.0/24 - - 47.52.92.0/24 - - 47.52.93.0/24 - - 47.52.94.0/24 - - 47.52.95.0/24 - - 47.52.96.0/24 - - 47.52.97.0/24 - - 47.52.98.0/24 - - 47.52.99.0/24 - - 47.52.100.0/24 - - 47.52.101.0/24 - - 47.52.102.0/24 - - 47.52.103.0/24 - - 47.52.104.0/24 - - 47.52.105.0/24 - - 47.52.106.0/24 - - 47.52.107.0/24 - - 47.52.108.0/24 - - 47.52.109.0/24 - - 47.52.110.0/24 - - 47.52.111.0/24 - - 47.52.112.0/24 - - 47.52.113.0/24 - - 47.52.114.0/24 - - 47.52.115.0/24 - - 47.52.116.0/24 - - 47.52.117.0/24 - - 47.52.118.0/24 - - 47.52.119.0/24 - - 47.52.128.0/24 - - 47.52.129.0/24 - - 47.52.130.0/24 - - 47.52.131.0/24 - - 47.52.132.0/24 - - 47.52.133.0/24 - - 47.52.134.0/24 - - 47.52.135.0/24 - - 47.52.136.0/24 - - 47.52.137.0/24 - - 47.52.138.0/24 - - 47.52.139.0/24 - - 47.52.140.0/24 - - 47.52.141.0/24 - - 47.52.142.0/24 - - 47.52.143.0/24 - - 47.52.144.0/24 - - 47.52.145.0/24 - - 47.52.146.0/24 - - 47.52.147.0/24 - - 47.52.148.0/24 - - 47.52.149.0/24 - - 47.52.150.0/24 - - 47.52.151.0/24 - - 47.52.152.0/24 - - 47.52.153.0/24 - - 47.52.154.0/24 - - 47.52.155.0/24 - - 47.52.156.0/24 - - 47.52.157.0/24 - - 47.52.158.0/24 - - 47.52.159.0/24 - - 47.52.160.0/24 - - 47.52.161.0/24 - - 47.52.162.0/24 - - 47.52.163.0/24 - - 47.52.164.0/24 - - 47.52.165.0/24 - - 47.52.166.0/24 - - 47.52.167.0/24 - - 47.52.168.0/24 - - 47.52.169.0/24 - - 47.52.170.0/24 - - 47.52.171.0/24 - - 47.52.172.0/24 - - 47.52.173.0/24 - - 47.52.174.0/24 - - 47.52.175.0/24 - - 47.52.188.0/24 - - 47.52.190.0/24 - - 47.52.191.0/24 - - 47.52.192.0/24 - - 47.52.193.0/24 - - 47.52.194.0/24 - - 47.52.195.0/24 - - 47.52.196.0/24 - - 47.52.197.0/24 - - 47.52.198.0/24 - - 47.52.199.0/24 - - 47.52.200.0/24 - - 47.52.201.0/24 - - 47.52.202.0/24 - - 47.52.203.0/24 - - 47.52.204.0/24 - - 47.52.205.0/24 - - 47.52.206.0/24 - - 47.52.207.0/24 - - 47.52.208.0/24 - - 47.52.209.0/24 - - 47.52.224.0/24 - - 47.52.225.0/24 - - 47.52.226.0/24 - - 47.52.228.0/24 - - 47.52.230.0/24 - - 47.52.231.0/24 - - 47.52.232.0/24 - - 47.52.234.0/24 - - 47.52.235.0/24 - - 47.52.236.0/24 - - 47.52.241.0/24 - - 47.52.242.0/24 - - 47.52.244.0/24 - - 47.52.246.0/24 - - 47.52.247.0/24 - - 47.52.248.0/24 - - 47.52.249.0/24 - - 47.52.250.0/24 - - 47.52.251.0/24 - - 47.52.252.0/24 - - 47.52.253.0/24 - - 47.52.254.0/24 - - 47.52.255.0/24 - - 47.74.1.0/24 - - 47.75.3.0/24 - - 47.75.5.0/24 - - 47.75.94.0/24 - - 47.75.98.0/24 - - 47.75.143.0/24 - - 47.75.194.0/24 - - 47.75.207.0/24 - - 47.75.219.0/24 - - 47.89.8.0/24 - - 47.89.9.0/24 - - 47.89.10.0/24 - - 47.89.11.0/24 - - 47.89.12.0/24 - - 47.89.13.0/24 - - 47.89.14.0/24 - - 47.89.15.0/24 - - 47.89.16.0/24 - - 47.89.17.0/24 - - 47.89.18.0/24 - - 47.89.19.0/24 - - 47.89.20.0/24 - - 47.89.21.0/24 - - 47.89.22.0/24 - - 47.89.23.0/24 - - 47.90.8.0/24 - - 47.90.90.0/24 - - 47.90.96.0/24 - - 47.90.97.0/24 - - 47.90.98.0/24 - - 47.90.99.0/24 - - 47.90.100.0/24 - - 47.90.101.0/24 - - 47.90.102.0/24 - - 47.90.103.0/24 - - 47.90.120.0/24 - - 47.90.121.0/24 - - 47.90.122.0/24 - - 47.90.123.0/24 - - 47.90.124.0/24 - - 47.90.125.0/24 - - 47.90.126.0/24 - - 47.90.127.0/24 - - 47.90.214.0/24 - - 47.91.152.0/24 - - 47.91.153.0/24 - - 47.91.154.0/24 - - 47.91.155.0/24 - - 47.91.156.0/24 - - 47.91.157.0/24 - - 47.91.158.0/24 - - 47.91.159.0/24 - - 47.91.207.0/24 - - 47.91.208.0/24 - - 47.91.209.0/24 - - 47.91.210.0/24 - - 47.91.211.0/24 - - 47.91.212.0/24 - - 47.91.213.0/24 - - 47.91.214.0/24 - - 47.91.215.0/24 - - 47.91.216.0/24 - - 47.91.217.0/24 - - 47.91.218.0/24 - - 47.91.219.0/24 - - 47.91.220.0/24 - - 47.91.221.0/24 - - 47.91.224.0/24 - - 47.91.225.0/24 - - 47.91.226.0/24 - - 47.91.227.0/24 - - 47.91.228.0/24 - - 47.91.229.0/24 - - 47.91.230.0/24 - - 47.91.231.0/24 - - 47.91.232.0/24 - - 47.91.233.0/24 - - 47.91.234.0/24 - - 47.91.235.0/24 - - 47.91.236.0/24 - - 47.91.237.0/24 - - 47.91.238.0/24 - - 47.91.239.0/24 - - 47.91.240.0/24 - - 47.91.241.0/24 - - 47.91.242.0/24 - - 47.91.243.0/24 - - 47.91.244.0/24 - - 47.91.245.0/24 - - 47.91.246.0/24 - - 47.91.247.0/24 - - 47.91.248.0/24 - - 47.91.249.0/24 - - 47.91.250.0/24 - - 47.91.251.0/24 - - 47.91.252.0/24 - - 47.91.253.0/24 - - 47.91.254.0/24 - - 47.91.255.0/24 - - 47.96.0.0/16 - - 47.96.2.0/24 - - 47.96.3.0/24 - - 47.96.5.0/24 - - 47.96.6.0/24 - - 47.96.7.0/24 - - 47.96.8.0/24 - - 47.96.9.0/24 - - 47.96.10.0/24 - - 47.96.12.0/24 - - 47.96.13.0/24 - - 47.96.14.0/24 - - 47.99.33.0/24 - - 47.99.38.0/24 - - 47.99.44.0/24 - - 47.99.62.0/24 - - 47.99.73.0/24 - - 47.99.75.0/24 - - 47.99.76.0/24 - - 47.99.81.0/24 - - 47.99.84.0/24 - - 47.99.89.0/24 - - 47.99.90.0/24 - - 47.99.93.0/24 - - 47.99.95.0/24 - - 47.99.98.0/24 - - 47.99.99.0/24 - - 47.99.101.0/24 - - 47.99.103.0/24 - - 47.99.104.0/24 - - 47.99.107.0/24 - - 47.99.111.0/24 - - 47.99.120.0/24 - - 47.99.128.0/24 - - 47.99.159.0/24 - - 47.99.161.0/24 - - 47.99.164.0/24 - - 47.99.166.0/24 - - 47.99.169.0/24 - - 47.110.42.0/24 - - 47.244.1.0/24 - - 47.244.2.0/24 - - 47.244.3.0/24 - - 47.244.5.0/24 - - 47.244.7.0/24 - - 47.244.10.0/24 - - 47.244.11.0/24 - - 47.244.12.0/24 - - 47.244.13.0/24 - - 47.244.14.0/24 - - 47.244.15.0/24 - - 47.244.16.0/24 - - 47.244.17.0/24 - - 47.244.18.0/24 - - 47.244.19.0/24 - - 47.244.21.0/24 - - 47.244.22.0/24 - - 47.244.24.0/24 - - 47.244.25.0/24 - - 47.244.26.0/24 - - 47.244.33.0/24 - - 47.244.35.0/24 - - 47.244.36.0/24 - - 47.244.37.0/24 - - 47.244.43.0/24 - - 47.244.44.0/24 - - 47.244.48.0/24 - - 47.244.51.0/24 - - 47.244.56.0/24 - - 52.53.89.0/24 - - 52.63.114.0/24 - - 52.64.199.0/24 - - 52.90.185.0/24 - - 52.175.16.0/24 - - 52.175.31.0/24 - - 52.207.236.0/24 - - 52.229.154.0/24 - - 52.229.160.0/24 - - 52.229.161.0/24 - - 54.66.223.0/24 - - 54.158.198.0/24 - - 54.164.19.0/24 - - 54.169.27.0/24 - - 54.209.147.0/24 - - 58.153.0.0/16 - - 58.153.19.0/24 - - 58.153.171.0/24 - - 58.153.208.0/24 - - 58.153.209.0/24 - - 58.153.221.0/24 - - 58.176.80.0/24 - - 58.177.181.0/24 - - 58.215.54.0/24 - - 58.221.252.0/24 - - 59.16.249.0/24 - - 59.127.115.0/24 - - 59.149.239.0/24 - - 60.248.89.0/24 - - 61.80.89.0/24 - - 61.84.148.0/24 - - 61.155.210.0/24 - - 61.216.2.0/24 - - 61.216.34.0/24 - - 61.216.146.0/24 - - 61.238.35.0/24 - - 61.239.213.0/24 - - 61.239.223.0/24 - - 74.91.112.0/24 - - 74.201.99.0/24 - - 87.98.228.0/24 - - 88.82.185.0/24 - - 90.188.238.0/24 - - 94.245.155.0/24 - - 95.154.88.0/24 - - 95.154.113.0/24 - - 95.172.92.0/24 - - 95.183.13.0/24 - - 103.9.89.0/24 - - 103.10.124.0/24 - - 103.10.125.0/24 - - 103.16.27.0/24 - - 103.28.54.0/24 - - 103.28.55.0/24 - - 103.36.208.0/24 - - 103.44.160.0/24 - - 103.57.72.0/24 - - 103.58.149.0/24 - - 103.60.126.0/24 - - 103.62.48.0/24 - - 103.89.90.0/24 - - 103.207.36.0/24 - - 103.222.20.0/24 - - 103.231.163.0/24 - - 103.232.85.0/24 - - 103.241.165.0/24 - - 103.244.2.0/24 - - 103.254.153.0/24 - - 104.199.166.0/24 - - 104.236.115.0/24 - - 107.21.14.0/24 - - 110.42.10.0/24 - - 110.173.58.0/24 - - 111.91.236.0/24 - - 111.231.11.0/24 - - 111.253.47.0/24 - - 111.253.49.0/24 - - 111.253.50.0/24 - - 111.253.52.0/24 - - 111.253.55.0/24 - - 112.118.44.0/24 - - 112.118.193.0/24 - - 113.160.204.0/24 - - 113.190.242.0/24 - - 114.46.16.0/24 - - 114.46.20.0/24 - - 114.46.21.0/24 - - 114.46.22.0/24 - - 114.46.24.0/24 - - 114.46.30.0/24 - - 114.167.236.0/24 - - 115.230.127.0/24 - - 115.231.221.0/24 - - 115.231.223.0/24 - - 116.31.123.0/24 - - 116.49.214.0/24 - - 116.122.109.0/24 - - 116.251.223.0/24 - - 118.107.76.0/24 - - 119.28.222.0/24 - - 119.197.57.0/24 - - 119.236.132.0/24 - - 119.237.11.0/24 - - 120.72.85.0/24 - - 123.31.20.0/24 - - 123.194.52.0/24 - - 124.158.10.0/24 - - 124.228.91.0/24 - - 125.212.211.0/24 - - 125.212.226.0/24 - - 125.226.128.0/24 - - 125.253.124.0/24 - - 128.199.81.0/24 - - 132.232.7.0/24 - - 132.232.9.0/24 - - 132.232.12.0/24 - - 132.232.29.0/24 - - 132.232.51.0/24 - - 132.232.55.0/24 - - 132.232.57.0/24 - - 132.232.61.0/24 - - 132.232.62.0/24 - - 132.232.75.0/24 - - 132.232.91.0/24 - - 132.232.94.0/24 - - 132.232.99.0/24 - - 132.232.104.0/24 - - 133.130.123.0/24 - - 138.19.63.0/24 - - 139.99.9.0/24 - - 139.99.104.0/24 - - 139.99.119.0/24 - - 139.162.55.0/24 - - 146.66.152.0/24 - - 146.66.153.0/24 - - 146.66.154.0/24 - - 146.66.155.0/24 - - 146.66.156.0/24 - - 146.66.157.0/24 - - 146.66.158.0/24 - - 146.66.159.0/24 - - 150.109.40.0/24 - - 151.80.60.0/24 - - 151.80.145.0/24 - - 152.111.192.0/24 - - 153.160.25.0/24 - - 153.254.86.0/24 - - 155.133.227.0/24 - - 155.133.230.0/24 - - 155.133.232.0/24 - - 155.133.233.0/24 - - 155.133.235.0/24 - - 155.133.238.0/24 - - 155.133.239.0/24 - - 155.133.242.0/24 - - 155.133.244.0/24 - - 155.133.245.0/24 - - 155.133.246.0/24 - - 155.133.247.0/24 - - 155.133.248.0/24 - - 155.133.249.0/24 - - 155.133.252.0/24 - - 155.133.253.0/24 - - 155.133.254.0/24 - - 159.28.159.0/24 - - 161.202.44.0/24 - - 162.254.192.0/24 - - 162.254.193.0/24 - - 162.254.194.0/24 - - 162.254.195.0/24 - - 162.254.196.0/24 - - 162.254.197.0/24 - - 162.254.198.0/24 - - 162.254.199.0/24 - - 163.53.149.0/24 - - 169.254.0.0/16 - - 169.254.125.95/32 - - 169.254.10.218/32 - - 175.210.83.0/24 - - 176.215.255.0/24 - - 180.149.95.0/24 - - 180.177.178.0/24 - - 182.171.230.0/24 - - 182.176.65.0/24 - - 183.60.111.0/24 - - 183.179.66.0/24 - - 185.25.60.0/24 - - 185.25.180.0/24 - - 185.25.181.0/24 - - 185.25.182.0/24 - - 185.25.183.0/24 - - 185.37.216.0/24 - - 185.62.205.0/24 - - 185.113.141.0/24 - - 190.217.33.0/24 - - 192.69.96.0/24 - - 192.69.97.0/24 - - 193.33.176.0/24 - - 195.14.118.0/24 - - 195.201.246.0/24 - - 196.38.180.0/24 - - 197.80.200.0/24 - - 198.27.83.0/24 - - 202.21.115.0/24 - - 203.175.163.0/24 - - 203.175.164.0/24 - - 203.175.165.0/24 - - 203.175.166.0/24 - - 203.218.101.0/24 - - 205.185.194.0/24 - - 205.196.6.0/24 - - 208.64.200.0/24 - - 208.64.203.0/24 - - 208.78.164.0/24 - - 208.78.165.0/24 - - 208.78.166.0/24 - - 209.58.164.0/24 - - 209.58.168.0/24 - - 209.58.178.0/24 - - 209.58.188.0/24 - - 210.211.124.0/24 - - 211.21.37.0/24 - - 211.48.69.0/24 - - 211.75.181.0/24 - - 212.64.32.0/24 - - 216.52.148.0/24 - - 217.150.77.0/24 - - 218.250.12.0/24 - - 218.250.15.0/24 - - 218.250.113.0/24 - - 218.255.3.0/24 - - 220.80.129.0/24 - - 220.134.154.0/24 - - 220.135.180.0/24 - - 220.169.242.0/24 - - 220.170.89.0/24 - - 221.6.100.0/24 - - 222.102.95.0/24 - - 222.112.242.0/24 - - 222.186.50.0/24 - - 222.187.224.0/24 - - 224.0.0.0/4 - - 240.0.0.0/4 diff --git a/luci-app-openclash/root/etc/openclash/game_rules/Monster-Hunter-World.rules b/luci-app-openclash/root/etc/openclash/game_rules/Monster-Hunter-World.rules deleted file mode 100644 index fecb0290..00000000 --- a/luci-app-openclash/root/etc/openclash/game_rules/Monster-Hunter-World.rules +++ /dev/null @@ -1,294 +0,0 @@ -payload: - - 2.16.0.0/16 - - 2.17.0.0/16 - - 2.18.0.0/16 - - 2.19.0.0/16 - - 2.20.0.0/16 - - 2.21.0.0/16 - - 2.22.0.0/16 - - 2.23.0.0/16 - - 8.7.0.0/16 - - 14.21.0.0/16 - - 23.0.0.0/4 - - 23.1.0.0/16 - - 23.2.0.0/16 - - 23.3.0.0/16 - - 23.4.0.0/16 - - 23.5.0.0/16 - - 23.7.0.0/16 - - 23.8.0.0/16 - - 23.9.0.0/16 - - 23.11.0.0/16 - - 23.12.0.0/16 - - 23.13.0.0/16 - - 23.14.0.0/16 - - 23.15.0.0/16 - - 23.32.0.0/16 - - 23.33.0.0/16 - - 23.34.0.0/16 - - 23.35.0.0/16 - - 23.36.0.0/16 - - 23.37.0.0/16 - - 23.38.0.0/16 - - 23.39.0.0/16 - - 23.40.0.0/16 - - 23.41.0.0/16 - - 23.42.0.0/16 - - 23.44.0.0/16 - - 23.45.0.0/16 - - 23.46.0.0/16 - - 23.48.0.0/16 - - 23.49.0.0/16 - - 23.50.0.0/16 - - 23.51.0.0/16 - - 23.52.0.0/16 - - 23.53.0.0/16 - - 23.54.0.0/16 - - 23.55.0.0/16 - - 23.56.0.0/16 - - 23.57.0.0/16 - - 23.58.0.0/16 - - 23.59.0.0/16 - - 23.60.0.0/16 - - 23.61.0.0/16 - - 23.62.0.0/16 - - 23.63.0.0/16 - - 23.64.0.0/16 - - 23.65.0.0/16 - - 23.67.0.0/16 - - 23.72.0.0/16 - - 23.73.0.0/16 - - 23.74.0.0/16 - - 23.75.0.0/16 - - 23.76.0.0/16 - - 23.77.0.0/16 - - 23.78.0.0/16 - - 23.79.0.0/16 - - 23.192.0.0/16 - - 23.193.0.0/16 - - 23.194.0.0/16 - - 23.196.0.0/16 - - 23.197.0.0/16 - - 23.198.0.0/16 - - 23.199.0.0/16 - - 23.200.0.0/16 - - 23.201.0.0/16 - - 23.202.0.0/16 - - 23.203.0.0/16 - - 23.204.0.0/16 - - 23.205.0.0/16 - - 23.206.0.0/16 - - 23.207.0.0/16 - - 23.208.0.0/16 - - 23.209.0.0/16 - - 23.210.0.0/16 - - 23.211.0.0/16 - - 23.212.0.0/16 - - 23.213.0.0/16 - - 23.214.0.0/16 - - 23.215.0.0/16 - - 23.216.0.0/16 - - 23.217.0.0/16 - - 23.218.0.0/16 - - 23.219.0.0/16 - - 23.220.0.0/16 - - 23.221.0.0/16 - - 23.222.0.0/16 - - 23.223.0.0/16 - - 31.0.0.0/4 - - 31.13.0.0/16 - - 37.10.0.0/16 - - 45.121.0.0/16 - - 45.121.184.0/24 - - 45.121.186.0/24 - - 46.0.0.0/4 - - 59.0.0.0/4 - - 60.254.0.0/16 - - 61.213.0.0/16 - - 63.146.0.0/16 - - 63.219.0.0/16 - - 63.243.0.0/16 - - 64.0.0.0/4 - - 64.124.0.0/16 - - 65.152.0.0/16 - - 65.158.0.0/16 - - 66.0.0.0/4 - - 67.0.0.0/4 - - 67.131.0.0/16 - - 69.0.0.0/4 - - 69.16.0.0/16 - - 69.63.0.0/16 - - 69.171.0.0/16 - - 69.192.0.0/16 - - 72.165.0.0/16 - - 72.246.0.0/16 - - 72.247.0.0/16 - - 74.0.0.0/4 - - 74.86.0.0/16 - - 74.201.0.0/16 - - 75.0.0.0/4 - - 75.126.0.0/16 - - 78.16.0.0/16 - - 84.53.0.0/16 - - 85.190.0.0/16 - - 88.0.0.0/4 - - 88.221.0.0/16 - - 92.122.0.0/16 - - 92.123.0.0/16 - - 95.100.0.0/16 - - 95.101.0.0/16 - - 96.0.0.0/4 - - 96.6.0.0/16 - - 96.16.0.0/16 - - 96.17.0.0/16 - - 103.10.124.0/24 - - 103.28.0.0/16 - - 103.28.54.0/24 - - 103.74.0.0/16 - - 104.0.0.0/4 - - 104.65.0.0/16 - - 104.66.0.0/16 - - 104.67.0.0/16 - - 104.68.0.0/16 - - 104.70.0.0/16 - - 104.71.0.0/16 - - 104.72.0.0/16 - - 104.73.0.0/16 - - 104.75.0.0/16 - - 104.76.0.0/16 - - 104.77.0.0/16 - - 104.79.0.0/16 - - 104.80.0.0/16 - - 104.81.0.0/16 - - 104.82.0.0/16 - - 104.83.0.0/16 - - 104.84.0.0/16 - - 104.85.0.0/16 - - 104.86.0.0/16 - - 104.87.0.0/16 - - 104.89.0.0/16 - - 104.90.0.0/16 - - 104.91.0.0/16 - - 104.92.0.0/16 - - 104.94.0.0/16 - - 104.95.0.0/16 - - 104.97.0.0/16 - - 104.98.0.0/16 - - 104.100.0.0/16 - - 104.101.0.0/16 - - 104.102.0.0/16 - - 104.103.0.0/16 - - 104.104.0.0/16 - - 104.105.0.0/16 - - 104.106.0.0/16 - - 104.107.0.0/16 - - 104.108.0.0/16 - - 104.109.0.0/16 - - 104.110.0.0/16 - - 104.111.0.0/16 - - 104.112.0.0/16 - - 104.113.0.0/16 - - 104.115.0.0/16 - - 104.116.0.0/16 - - 104.117.0.0/16 - - 104.118.0.0/16 - - 104.119.0.0/16 - - 104.120.0.0/16 - - 104.121.0.0/16 - - 104.122.0.0/16 - - 104.123.0.0/16 - - 104.124.0.0/16 - - 104.126.0.0/16 - - 104.127.0.0/16 - - 106.15.0.0/16 - - 110.45.0.0/16 - - 115.223.0.0/16 - - 117.103.0.0/16 - - 118.155.0.0/16 - - 118.214.0.0/16 - - 118.215.0.0/16 - - 120.24.184.25/32 - - 121.156.0.0/16 - - 122.252.0.0/16 - - 125.56.0.0/16 - - 125.252.0.0/16 - - 128.241.0.0/16 - - 139.175.0.0/16 - - 141.0.0.0/4 - - 146.66.0.0/16 - - 152.199.0.0/16 - - 153.254.0.0/16 - - 153.254.86.0/24 - - 155.133.0.0/16 - - 155.133.232.0/24 - - 155.133.233.0/24 - - 155.133.234.0/24 - - 155.133.235.0/24 - - 155.133.239.0/24 - - 155.133.244.0/24 - - 155.133.253.0/24 - - 155.133.254.0/24 - - 162.254.0.0/16 - - 162.254.192.0/24 - - 162.254.193.0/24 - - 162.254.194.0/24 - - 162.254.199.0/24 - - 165.254.0.0/16 - - 172.0.0.0/4 - - 172.224.0.0/16 - - 172.226.0.0/16 - - 172.227.0.0/16 - - 172.228.0.0/16 - - 172.229.0.0/16 - - 172.230.0.0/16 - - 172.231.0.0/16 - - 173.0.0.0/4 - - 173.197.0.0/16 - - 173.205.0.0/16 - - 173.222.0.0/16 - - 173.223.0.0/16 - - 173.252.0.0/16 - - 174.36.0.0/16 - - 175.99.0.0/16 - - 175.139.0.0/16 - - 180.101.192.0/24 - - 182.162.0.0/16 - - 184.0.0.0/4 - - 184.24.0.0/16 - - 184.25.0.0/16 - - 184.26.0.0/16 - - 184.29.0.0/16 - - 184.30.0.0/16 - - 184.31.0.0/16 - - 184.50.0.0/16 - - 184.51.0.0/16 - - 184.84.0.0/16 - - 184.85.0.0/16 - - 184.87.0.0/16 - - 185.25.0.0/16 - - 185.27.0.0/16 - - 185.88.0.0/16 - - 192.69.96.0/24 - - 192.81.0.0/16 - - 198.87.0.0/16 - - 198.172.0.0/16 - - 199.0.0.0/4 - - 199.239.0.0/16 - - 203.69.0.0/16 - - 203.80.149.0/24 - - 205.186.0.0/16 - - 205.196.6.0/24 - - 205.197.0.0/16 - - 208.0.0.0/4 - - 208.64.0.0/16 - - 208.64.200.0/24 - - 208.78.0.0/16 - - 208.78.164.0/24 - - 208.78.166.0/24 - - 208.78.167.0/24 - - 209.170.0.0/16 - - 210.61.0.0/16 - - 210.201.0.0/16 - - 216.3.0.0/16 - - 216.156.0.0/16 - - 223.119.0.0/16 diff --git a/luci-app-openclash/root/etc/openclash/game_rules/Steam.rules b/luci-app-openclash/root/etc/openclash/game_rules/Steam.rules deleted file mode 100644 index 40a0e11b..00000000 --- a/luci-app-openclash/root/etc/openclash/game_rules/Steam.rules +++ /dev/null @@ -1,133 +0,0 @@ -payload: - - 96.7.54.0/24 - - 96.17.68.0/24 - - 95.101.58.0/24 - - 92.123.234.0/24 - - 72.249.197.0/24 - - 72.247.118.0/24 - - 75.126.208.0/20 - - 69.192.4.0/24 - - 61.213.189.0/24 - - 61.213.168.0/24 - - 23.9.186.0/24 - - 23.9.179.0/24 - - 23.9.117.0/24 - - 23.77.27.0/24 - - 23.77.18.0/24 - - 23.76.210.0/24 - - 23.75.104.0/24 - - 23.67.53.0/24 - - 23.67.189.0/24 - - 23.66.135.0/24 - - 23.62.226.0/24 - - 23.61.244.0/24 - - 23.61.195.0/24 - - 23.57.66.0/24 - - 23.56.108.0/24 - - 23.55.56.0/24 - - 23.55.47.0/24 - - 23.55.37.0/24 - - 23.52.74.0/24 - - 23.52.171.0/24 - - 23.50.232.0/24 - - 23.5.229.0/24 - - 23.48.201.0/24 - - 23.47.143.0/24 - - 23.46.16.0/24 - - 23.46.147.0/24 - - 23.45.51.0/24 - - 23.45.127.0/24 - - 23.44.51.0/24 - - 23.44.172.0/24 - - 23.44.17.0/24 - - 23.43.49.0/24 - - 23.42.74.0/24 - - 23.37.126.0/24 - - 23.36.111.0/24 - - 23.34.96.0/24 - - 23.33.178.0/24 - - 23.33.151.0/24 - - 23.32.255.0/24 - - 23.32.248.0/24 - - 23.32.241.0/24 - - 23.219.172.0/24 - - 23.218.94.0/24 - - 23.218.5.0/24 - - 23.218.24.0/24 - - 23.215.188.0/24 - - 23.211.136.0/24 - - 23.211.117.0/24 - - 23.211.108.0/24 - - 23.210.215.0/24 - - 23.204.57.0/24 - - 23.204.147.0/24 - - 23.200.74.0/24 - - 23.2.16.0/24 - - 23.199.34.0/24 - - 23.198.137.0/24 - - 23.198.136.0/24 - - 23.198.103.0/24 - - 23.192.168.0/24 - - 23.192.119.0/24 - - 23.15.4.0/24 - - 23.12.40.0/24 - - 23.1.237.0/24 - - 23.1.236.0/24 - - 23.1.234.0/24 - - 23.7.208.0/20 - - 223.119.50.0/24 - - 223.119.248.0/24 - - 220.90.198.0/24 - - 219.76.10.0/24 - - 203.74.140.0/24 - - 203.69.141.0/24 - - 202.4.185.0/24 - - 2.21.98.0/24 - - 2.20.27.0/24 - - 189.6.45.0/24 - - 184.87.133.0/24 - - 184.86.250.0/24 - - 184.51.198.0/24 - - 184.51.183.0/24 - - 184.50.26.0/24 - - 184.31.165.0/24 - - 184.28.223.0/24 - - 184.28.218.0/24 - - 184.27.20.0/24 - - 184.26.194.0/24 - - 184.24.58.0/24 - - 184.150.58.0/24 - - 184.150.154.0/24 - - 175.207.14.0/24 - - 172.217.0.0/16 - - 172.232.19.0/24 - - 139.175.236.0/24 - - 125.56.201.0/24 - - 125.252.224.0/24 - - 119.56.4.0/24 - - 119.207.66.0/24 - - 119.207.64.0/24 - - 104.88.23.0/24 - - 104.84.150.0/24 - - 104.84.160.0/19 - - 104.81.21.0/24 - - 104.76.86.0/24 - - 104.76.172.0/24 - - 104.75.169.0/24 - - 104.74.47.0/24 - - 104.74.30.0/24 - - 104.74.214.0/24 - - 104.74.209.0/24 - - 104.71.139.0/24 - - 104.64.155.0/24 - - 104.250.32.0/23 - - 104.254.123.0/24 - - 104.127.4.0/24 - - 104.124.248.0/24 - - 104.124.233.0/24 - - 104.124.232.0/24 - - 104.122.6.0/24 - - 104.120.11.0/24 - - 104.116.243.0/24 - - 104.110.72.0/24 - - 153.254.86.0/24 diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/ABC b/luci-app-openclash/root/etc/openclash/rule_provider/ABC deleted file mode 100644 index a832f8a7..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/ABC +++ /dev/null @@ -1,4 +0,0 @@ -payload: - # > ABC - - DOMAIN-SUFFIX,edgedatg.com - - DOMAIN-SUFFIX,go.com diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/AI Suite b/luci-app-openclash/root/etc/openclash/rule_provider/AI Suite deleted file mode 100644 index a7b2296a..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/AI Suite +++ /dev/null @@ -1,40 +0,0 @@ -payload: - # > ChatGPT - - DOMAIN-SUFFIX,ai.com - - DOMAIN-SUFFIX,chatgpt.com - - DOMAIN-SUFFIX,openai.com - - # > Chat GPT API & CDN - - DOMAIN-SUFFIX,cdn.oaistatic.com - - DOMAIN,chat.openai.com.cdn.cloudflare.net - - DOMAIN,openaiapi-site.azureedge.net - - DOMAIN,openaicom-api-bdcpf8c6d2e9atf6.z01.azurefd.net - - DOMAIN,openaicomproductionae4b.blob.core.windows.net - - DOMAIN,production-openaicom-storage.azureedge.net - - - DOMAIN-SUFFIX,oaistatic.com - - DOMAIN-SUFFIX,oaiusercontent.com - - - DOMAIN-SUFFIX,o33249.ingest.sentry.io - - # > Claude - - DOMAIN-SUFFIX,anthropic.com - - DOMAIN-SUFFIX,claude.ai - - # > Copilot - - DOMAIN-SUFFIX,copilot.microsoft.com - - # > Gemini - - DOMAIN-SUFFIX,gemini.google.com - - DOMAIN-SUFFIX,generativelanguage.googleapis.com - - DOMAIN-SUFFIX,proactivebackend-pa.googleapis.com - - # > Meta AI - - DOMAIN-SUFFIX,meta.ai - - # > Perplexity AI - - DOMAIN-SUFFIX,perplexity.ai - - # > Siri - - DOMAIN-SUFFIX,apple-relay.apple.com - - DOMAIN,guzzoni.smoot.apple.com \ No newline at end of file diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/Abema_TV b/luci-app-openclash/root/etc/openclash/rule_provider/Abema_TV deleted file mode 100644 index 8efc35f4..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/Abema_TV +++ /dev/null @@ -1,10 +0,0 @@ -payload: - # > AbemaTV - # - USER-AGENT,AbemaTV* - - PROCESS-NAME,tv.abema - - DOMAIN-SUFFIX,abema.io - - DOMAIN-SUFFIX,abema.tv - - DOMAIN-SUFFIX,akamaized.net - - DOMAIN-SUFFIX,ameba.jp - - DOMAIN-SUFFIX,hayabusa.io - - DOMAIN-KEYWORD,abematv.akamaized.net diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/Amazon b/luci-app-openclash/root/etc/openclash/rule_provider/Amazon deleted file mode 100644 index e1028646..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/Amazon +++ /dev/null @@ -1,45 +0,0 @@ -payload: - # > Amazon Prime Video - # - USER-AGENT,InstantVideo.US* - # - USER-AGENT,Prime%20Video* - - - DOMAIN-KEYWORD,avoddashs - - - DOMAIN-SUFFIX,aiv-cdn.net - - DOMAIN-SUFFIX,aiv-delivery.net - - DOMAIN-SUFFIX,amazonprimevideos.com - - DOMAIN-SUFFIX,amazonvideo.cc - - DOMAIN-SUFFIX,amazonvideo.com - - DOMAIN-SUFFIX,amazonvideodirect.cc - - DOMAIN-SUFFIX,atv-ext.amazon.com - - DOMAIN-SUFFIX,atv-ext-eu.amazon.com - - DOMAIN-SUFFIX,atv-ext-fe.amazon.com - - DOMAIN-SUFFIX,atv-ps.amazon.com - - DOMAIN-SUFFIX,atv-ps-eu.amazon.co.uk - - DOMAIN-SUFFIX,atv-ps-eu.amazon.com - - DOMAIN-SUFFIX,atv-ps-fe.amazon.co.jp - - DOMAIN-SUFFIX,atv-ps-fe.amazon.com - - DOMAIN-SUFFIX,fls-na.amazon.com - - DOMAIN-SUFFIX,media-amazon.com - - DOMAIN-SUFFIX,primevideo.cc - - DOMAIN-SUFFIX,primevideo.com - - DOMAIN-SUFFIX,prime-video.com - - DOMAIN-SUFFIX,primevideo.info - - DOMAIN-SUFFIX,primevideo.org - - DOMAIN-SUFFIX,primevideo.tv - - DOMAIN-SUFFIX,pv-cdn.net - - DOMAIN-SUFFIX,video.a2z.com - - - DOMAIN,avodmp4s3ww-a.akamaihd.net - - DOMAIN,d1v5ir2lpwr8os.cloudfront.net - - DOMAIN,d1y002tclu9djj.cloudfront.net - - DOMAIN,d22qjgkvxw22r6.cloudfront.net - - DOMAIN,d25xi40x97liuc.cloudfront.net - - DOMAIN,dmqdd6hw24ucf.cloudfront.net - - DOMAIN,d27xxe7juh1us6.cloudfront.net - - - DOMAIN,dualstack.pefs-alb-266603904.eu-west-1.elb.amazonaws.com - - # // 美区网页版需二选一走代理,如 URL-REGEX 则需 MITM www.amazon.com - # // DOMAIN,www.amazon.com - # URL-REGEX,^https?:\/\/www\.amazon\.com\/(Amazon-Video|gp\/video)\/ diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/Apple b/luci-app-openclash/root/etc/openclash/rule_provider/Apple deleted file mode 100644 index c85483f7..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/Apple +++ /dev/null @@ -1,33 +0,0 @@ -payload: - # > Apple API - - DOMAIN-KEYWORD,apple.com.akadns.net - - DOMAIN-KEYWORD,icloud.com.akadns.net - - DOMAIN-SUFFIX,aaplimg.com - - DOMAIN-SUFFIX,apple.co - - DOMAIN-SUFFIX,apple.com - - DOMAIN-SUFFIX,apple-cloudkit.com - - DOMAIN-SUFFIX,apple-mapkit.com - - DOMAIN-SUFFIX,appsto.re - - DOMAIN-SUFFIX,cdn-apple.com - - DOMAIN-SUFFIX,icloud.com - - DOMAIN-SUFFIX,icloud-content.com - - DOMAIN-SUFFIX,itunes.com - - DOMAIN-SUFFIX,me.com - - DOMAIN-SUFFIX,mzstatic.com - - IP-CIDR,17.0.0.0/8,no-resolve - - IP-CIDR,63.92.224.0/19,no-resolve - - IP-CIDR,65.199.22.0/23,no-resolve - - IP-CIDR,139.178.128.0/18,no-resolve - - IP-CIDR,144.178.0.0/19,no-resolve - - IP-CIDR,144.178.36.0/22,no-resolve - - IP-CIDR,144.178.48.0/20,no-resolve - - IP-CIDR,192.35.50.0/24,no-resolve - - IP-CIDR,198.183.17.0/24,no-resolve - - IP-CIDR,205.180.175.0/24,no-resolve - - # > Apple News - - DOMAIN-SUFFIX,apple.comscoreresearch.com - - DOMAIN-SUFFIX,apple.news - - # > Apple Maps - - PROCESS-NAME,com.apple.geod diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/Apple_Music b/luci-app-openclash/root/etc/openclash/rule_provider/Apple_Music deleted file mode 100644 index ac6c8049..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/Apple_Music +++ /dev/null @@ -1,16 +0,0 @@ -payload: - # > Apple Music - # - USER-AGENT,Music* - - PROCESS-NAME,music - - DOMAIN-SUFFIX,applemusic.com - - DOMAIN-SUFFIX,blobstore.apple.com - - DOMAIN-SUFFIX,music.apple.com - - DOMAIN,aod.itunes.apple.com - - DOMAIN,aod-ssl.itunes.apple.com - - DOMAIN,audio.itunes.apple.com - - DOMAIN,audio-ssl.itunes.apple.com - - DOMAIN,mvod.itunes.apple.com - - DOMAIN,streamingaudio.itunes.apple.com - -# iCloud Music Library - - DOMAIN-SUFFIX,blobstore.apple.com diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/Apple_News b/luci-app-openclash/root/etc/openclash/rule_provider/Apple_News deleted file mode 100644 index 5ae730a5..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/Apple_News +++ /dev/null @@ -1,12 +0,0 @@ -payload: - # > Apple News and Apple Map TOMTOM Version - # - USER-AGENT,AppleNews* - # - USER-AGENT,com.apple.news* - - DOMAIN,gspe1-ssl.ls.apple.com - # - USER-AGENT,News* - # - DOMAIN,apple.comscoreresearch.com - # - DOMAIN,gateway.icloud.com - # - DOMAIN,news-client.apple.com - # - DOMAIN,news-edge.apple.com - # - DOMAIN,news-events.apple.com - # - DOMAIN-SUFFIX,apple.news diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/Apple_TV b/luci-app-openclash/root/etc/openclash/rule_provider/Apple_TV deleted file mode 100644 index 5a6d100a..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/Apple_TV +++ /dev/null @@ -1,5 +0,0 @@ -payload: - # > Apple TV - - DOMAIN,np-edge.itunes.apple.com - - DOMAIN,play-edge.itunes.apple.com - - DOMAIN-SUFFIX,tv.apple.com diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/BBC_iPlayer b/luci-app-openclash/root/etc/openclash/rule_provider/BBC_iPlayer deleted file mode 100644 index f68b6598..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/BBC_iPlayer +++ /dev/null @@ -1,15 +0,0 @@ -payload: - # > BBC iPlayer - - PROCESS-NAME,bbc.iplayer.android - - DOMAIN-KEYWORD,bbcfmt - - DOMAIN,aod-dash-uk-live.akamaized.net - - DOMAIN,aod-hls-uk-live.akamaized.net - - DOMAIN,vod-dash-uk-live.akamaized.net - - DOMAIN,vod-thumb-uk-live.akamaized.net - - DOMAIN-SUFFIX,bbc.co - - DOMAIN-SUFFIX,bbc.co.uk - - DOMAIN-SUFFIX,bbc.com - - DOMAIN-SUFFIX,bbcfmt.hs.llnwd.net - - DOMAIN-SUFFIX,bbci.co - - DOMAIN-SUFFIX,bbci.co.uk - - DOMAIN-SUFFIX,bidi.net.uk diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/Bahamut b/luci-app-openclash/root/etc/openclash/rule_provider/Bahamut deleted file mode 100644 index 2c4f7326..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/Bahamut +++ /dev/null @@ -1,8 +0,0 @@ -payload: - # > Bahamut - # - USER-AGENT,Anime* - - PROCESS-NAME,tw.com.gamer.android.animad - - DOMAIN-SUFFIX,bahamut.com.tw - - DOMAIN-SUFFIX,gamer.com.tw - - DOMAIN,gamer-cds.cdn.hinet.net - - DOMAIN,gamer2-cds.cdn.hinet.net diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/Bilibili b/luci-app-openclash/root/etc/openclash/rule_provider/Bilibili deleted file mode 100644 index e39d09d4..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/Bilibili +++ /dev/null @@ -1,16 +0,0 @@ -payload: - # > Bilibili - # - USER-AGENT,bili* - - DOMAIN-SUFFIX,acg.tv - - DOMAIN-SUFFIX,acgvideo.com - - DOMAIN-SUFFIX,b23.tv - - DOMAIN-SUFFIX,bilibili.com - - DOMAIN-SUFFIX,bilibili.tv - - DOMAIN-SUFFIX,biliapi.net - - DOMAIN-SUFFIX,biliapi.com - - DOMAIN-SUFFIX,bilivideo.com - - DOMAIN-SUFFIX,hdslb.com - - DOMAIN,upos-hz-mirrorakam.akamaized.net - # Hong Kong, Macau, Taiwan - # - USER-AGENT,bili-inter* - - DOMAIN,apiintl.biliapi.net diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/Crypto b/luci-app-openclash/root/etc/openclash/rule_provider/Crypto deleted file mode 100644 index 7c6b0dfe..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/Crypto +++ /dev/null @@ -1,300 +0,0 @@ -payload: - # > Forum - - DOMAIN-SUFFIX,bitcointalk.org - - # > Exchange - - DOMAIN-SUFFIX,aex.com - - DOMAIN-SUFFIX,bibox.com - - DOMAIN-SUFFIX,bitfinex.com - - DOMAIN-SUFFIX,bithumb.com - - DOMAIN-SUFFIX,bitmex.com - - DOMAIN-SUFFIX,bitstamp.net - - DOMAIN-SUFFIX,bittrex.com - - DOMAIN-SUFFIX,bybit.com - - DOMAIN-SUFFIX,coinbase.com - - DOMAIN-SUFFIX,coincheck.com - - DOMAIN-SUFFIX,coinone.co.kr - - DOMAIN-SUFFIX,gemini.com - - DOMAIN-SUFFIX,korbit.co.kr - - DOMAIN-SUFFIX,kraken.com - - DOMAIN-SUFFIX,kucoin.com - - DOMAIN-SUFFIX,liquid.com - - DOMAIN-SUFFIX,poloniex.com - - DOMAIN-SUFFIX,bitbank.cc - - DOMAIN-SUFFIX,bitcoin.org - - DOMAIN-SUFFIX,bitquick.co - - DOMAIN-SUFFIX,btcbox.co.jp - - DOMAIN-SUFFIX,cex.io - - DOMAIN-SUFFIX,dogecoin.com - - DOMAIN-SUFFIX,paxful.com - - DOMAIN-SUFFIX,tether.to - - DOMAIN-SUFFIX,dydx.exchange - - DOMAIN-SUFFIX,solana.com - - DOMAIN-SUFFIX,avax.network - - DOMAIN-SUFFIX,optimism.io - - DOMAIN-SUFFIX,arbitrum.io - - DOMAIN-SUFFIX,poly.network - - DOMAIN-SUFFIX,zkscan.io - - DOMAIN-SUFFIX,zksync.io - - DOMAIN-SUFFIX,boba.network - - # > Binance - - DOMAIN-SUFFIX,binance.cc - - DOMAIN-SUFFIX,binance.cloud - - DOMAIN-SUFFIX,binance.com - - DOMAIN-SUFFIX,binance.im - - DOMAIN-SUFFIX,binance.me - - DOMAIN-SUFFIX,binance.us - - DOMAIN-SUFFIX,bnappzh.co - - DOMAIN-SUFFIX,bnappzh.com - - DOMAIN-SUFFIX,bnbstatic.com - - DOMAIN-SUFFIX,bntrace.com - - DOMAIN-SUFFIX,binance.charity - - DOMAIN-SUFFIX,binance.co - - DOMAIN-SUFFIX,binance.info - - DOMAIN-SUFFIX,binance.net - - DOMAIN-SUFFIX,binance.org - - DOMAIN-SUFFIX,binance.vision - - DOMAIN-SUFFIX,binanceapi.com - - DOMAIN-SUFFIX,binancezh.be - - DOMAIN-SUFFIX,binancezh.biz - - DOMAIN-SUFFIX,binancezh.cc - - DOMAIN-SUFFIX,binancezh.co - - DOMAIN-SUFFIX,binancezh.com - - DOMAIN-SUFFIX,binancezh.info - - DOMAIN-SUFFIX,binancezh.ink - - DOMAIN-SUFFIX,binancezh.kim - - DOMAIN-SUFFIX,binancezh.link - - DOMAIN-SUFFIX,binancezh.live - - DOMAIN-SUFFIX,binancezh.mobi - - DOMAIN-SUFFIX,binancezh.net - - DOMAIN-SUFFIX,binancezh.pro - - DOMAIN-SUFFIX,binancezh.sh - - DOMAIN-SUFFIX,binancezh.top - - DOMAIN-SUFFIX,bnappzh.mobi - - DOMAIN-SUFFIX,bsc.getblock.io - - DOMAIN-SUFFIX,bscscan.com - - PROCESS-NAME,Binance.exe - - DOMAIN-KEYWORD,binance - - # > Huobi - - DOMAIN-SUFFIX,hbabit.com - - DOMAIN-SUFFIX,hbfile.net - - DOMAIN-SUFFIX,huobi.com - - DOMAIN-SUFFIX,huobi.me - - DOMAIN-SUFFIX,huobi.pro - - DOMAIN-SUFFIX,huobi.sc - - DOMAIN-SUFFIX,huobiasia.vip - - DOMAIN-SUFFIX,huobigroup.com - - DOMAIN-SUFFIX,huobitoken.com - - DOMAIN-SUFFIX,heco-scan.com - - DOMAIN-SUFFIX,hecoview.com - - DOMAIN-SUFFIX,hbfile.net - - DOMAIN-SUFFIX,huobi.br.com - - DOMAIN-SUFFIX,bitderiv.com - - DOMAIN-SUFFIX,hecochain.com - - DOMAIN-SUFFIX,huobi.ws - - DOMAIN-SUFFIX,huobi.ug - - DOMAIN-SUFFIX,huobi.co.ma - - DOMAIN-SUFFIX,huobi.br.com - - PROCESS-NAME,Huobi.exe - - DOMAIN-KEYWORD,huobi - - # > OKX - - DOMAIN-SUFFIX,okex.com - - DOMAIN-SUFFIX,okx.com - - PROCESS-NAME,OKX.exe - - DOMAIN-KEYWORD,okx - - # > asproex - - DOMAIN-SUFFIX,asproex.com - - DOMAIN-SUFFIX,asproexapi.com - - # > bitflyer - - DOMAIN-SUFFIX,bitflyer.com - - DOMAIN-SUFFIX,bitflyer.jp - - # > bitsquare - - DOMAIN-SUFFIX,bisq.io - - DOMAIN-SUFFIX,bisq.network - - DOMAIN-SUFFIX,bitsquare.io - - # > coinone - - DOMAIN-SUFFIX,coinone.co.kr - - DOMAIN-SUFFIX,coinonecore.com - - DOMAIN-SUFFIX,coinonecorp.com - - # > ethereum - - DOMAIN-SUFFIX,devcon.org - - DOMAIN-SUFFIX,ethereum.foundation - - DOMAIN-SUFFIX,ethereum.org - - DOMAIN-SUFFIX,etherscan.io - - DOMAIN-SUFFIX,nansen.ai - - DOMAIN-SUFFIX,ethgasstation.info - - DOMAIN-SUFFIX,watchtheburn.com - - DOMAIN-SUFFIX,flashbots.net - - DOMAIN-SUFFIX,cryptofees.info - - DOMAIN-SUFFIX,etherscan.io - - DOMAIN-SUFFIX,ethereum-magicians.org - - DOMAIN-SUFFIX,vitalik.ca - - DOMAIN-SUFFIX,ethfans.org - - DOMAIN-SUFFIX,ethereum.cn - - DOMAIN-SUFFIX,ethereum.stackexchange.com - - DOMAIN-SUFFIX,etherscan.com - - DOMAIN-SUFFIX,parity.io - - DOMAIN-SUFFIX,ethernodes.org - - # > localbitcoins - - DOMAIN-SUFFIX,localbitcoins.com - - DOMAIN-SUFFIX,localbitcoinschain.com - - # > zb - - DOMAIN-SUFFIX,zb.app - - DOMAIN-SUFFIX,zb.com - - DOMAIN-SUFFIX,zb.io - - DOMAIN-SUFFIX,zb.live - - # > Analysis - - DOMAIN-SUFFIX,aicoin.com - - DOMAIN-SUFFIX,aimoon.com - - DOMAIN-SUFFIX,coingecko.com - - DOMAIN-SUFFIX,coinmarketcap.com - - DOMAIN-SUFFIX,glassnode.com - - DOMAIN-SUFFIX,coinmetrics.io - - DOMAIN-SUFFIX,tokenview.com - - DOMAIN-SUFFIX,oklink.com - - DOMAIN-SUFFIX,blockchair.com - - DOMAIN-SUFFIX,intotheblock.com - - DOMAIN-SUFFIX,bytetree.com - - DOMAIN-SUFFIX,coin.dance - - DOMAIN-SUFFIX,defieye.io - - DOMAIN-SUFFIX,duneanalytics.com - - DOMAIN-SUFFIX,tokenterminal.com - - DOMAIN-SUFFIX,dapp.review - - DOMAIN-SUFFIX,dappradar.com - - DOMAIN-SUFFIX,stateofthedapps.com - - DOMAIN-SUFFIX,thegraph.com - - DOMAIN-SUFFIX,debank.com - - DOMAIN-SUFFIX,vfat.tools - - DOMAIN-SUFFIX,loanscan.io - - DOMAIN-SUFFIX,defirate.com - - DOMAIN-SUFFIX,defipulse.com - - DOMAIN-SUFFIX,apy999.com - - DOMAIN-SUFFIX,defieye.io - - DOMAIN-SUFFIX,dextools.io - - DOMAIN-SUFFIX,tradingview.com - - DOMAIN-SUFFIX,dcabtc.com - - DOMAIN-SUFFIX,chainalysis.com - - DOMAIN-SUFFIX,cryptoquant.com - - DOMAIN-SUFFIX,viewbase.com - - DOMAIN-SUFFIX,bitcoinity.org - - DOMAIN-SUFFIX,cryptocompare.com - - DOMAIN-SUFFIX,coincodex.com - - DOMAIN-SUFFIX,cointrendz.com - - DOMAIN-SUFFIX,coincheckup.com - - DOMAIN-SUFFIX,thetie.io - - DOMAIN-SUFFIX,cryptorank.io - - DOMAIN-SUFFIX,tradeblock.com - - DOMAIN-SUFFIX,nyctale.io - - DOMAIN-SUFFIX,dovemetrics.com - - DOMAIN-SUFFIX,cryptorank.io - - DOMAIN-SUFFIX,icodrops.com - - DOMAIN-SUFFIX,chainbroker.io - - DOMAIN-SUFFIX,crunchbase.com - - DOMAIN-SUFFIX,defillama.com - - DOMAIN-SUFFIX,coinowo.com - - DOMAIN-SUFFIX,earni.fi - - DOMAIN-SUFFIX,dropsearn.com - - DOMAIN-SUFFIX,bitcoin.it - - DOMAIN-SUFFIX,bitcoinmagazine.com - - DOMAIN-SUFFIX,blockchain.com - - DOMAIN-SUFFIX,tronscan.org - - # > POOL - - DOMAIN-SUFFIX,btc.com - - DOMAIN-SUFFIX,f2pool.com - - DOMAIN-SUFFIX,cbeci.org - - DOMAIN-SUFFIX,digiconomist.net - - DOMAIN-SUFFIX,1ml.com - - DOMAIN-SUFFIX,bitcoinvisuals.com - - DOMAIN-SUFFIX,crypto51.app - - DOMAIN-SUFFIX,masternodes.online - - DOMAIN-SUFFIX,bitnodes.earn.com - - DOMAIN-SUFFIX,poolin.com - - DOMAIN-SUFFIX,ethermine.org - - DOMAIN-SUFFIX,ewapool.net - - # > FTX - - DOMAIN-SUFFIX,ftx.com - - # > Metamask - - DOMAIN-KEYWORD,metamask - - DOMAIN,token-api.metaswap.codefi.network - - DOMAIN,min-api.cryptocompare.com - - # > NFT - - DOMAIN-SUFFIX,opensea.io - - DOMAIN-SUFFIX,nftscan.com - - DOMAIN-SUFFIX,makersplace.com - - DOMAIN-SUFFIX,nonfungible.com - - DOMAIN-SUFFIX,cryptoslam.io - - DOMAIN-SUFFIX,cryptoart.io - - DOMAIN-SUFFIX,nftcalendar.io - - DOMAIN-SUFFIX,nftgo.io - - # > IPFS - - DOMAIN-SUFFIX,filecoin.io - - DOMAIN-SUFFIX,docs.lotu.sh - - DOMAIN-SUFFIX,ipfs.io - - DOMAIN-SUFFIX,docs.ipfs.io - - DOMAIN-SUFFIX,discuss.ipfs.io - - # > EOS - - DOMAIN-SUFFIX,eos.io - - DOMAIN-SUFFIX,developers.eos.io - - DOMAIN-SUFFIX,block.one - - DOMAIN-SUFFIX,eostracker.io - - DOMAIN-SUFFIX,eosflare.io - - DOMAIN-SUFFIX,eospark.com - - DOMAIN-SUFFIX,bloks.io - - # > Lightning - - DOMAIN-SUFFIX,lightning.engineering - - DOMAIN-SUFFIX,lightning.community - - DOMAIN-SUFFIX,acinq.co - - DOMAIN-SUFFIX,1ml.com - - # > Token - - DOMAIN-SUFFIX,tokenpocket.pro - - DOMAIN-SUFFIX,token.im - - DOMAIN-SUFFIX,phantom.app - - DOMAIN-SUFFIX,tronlink.org - - DOMAIN-SUFFIX,myetherwallet.com - - DOMAIN-SUFFIX,jaxx.io - - DOMAIN-SUFFIX,trustwalletapp.com - - # > Gate - - DOMAIN-SUFFIX,gate.ac - - DOMAIN-SUFFIX,gate.io - - # > Mexc - - DOMAIN-SUFFIX,mexc.com - - # > Dapp - - DOMAIN-SUFFIX,sushi.com - - DOMAIN-SUFFIX,uniswap.org - - DOMAIN-SUFFIX,sunswap.com - - DOMAIN-SUFFIX,traderjoexyz.com - - DOMAIN-SUFFIX,raydium.io - - DOMAIN-SUFFIX,synthetix.io - - DOMAIN-SUFFIX,aave.com - - DOMAIN-SUFFIX,compound.finance - - DOMAIN-SUFFIX,makerdao.com - - DOMAIN-SUFFIX,wbtc.network - - DOMAIN-SUFFIX,pancakeswap.finance - - DOMAIN-SUFFIX,pancakeswap.com - - DOMAIN-SUFFIX,mdex.co - - DOMAIN-SUFFIX,mdex.one - - DOMAIN-SUFFIX,mdex.com - - DOMAIN-SUFFIX,mdex.me - - DOMAIN-SUFFIX,1inch.io \ No newline at end of file diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/DAZN b/luci-app-openclash/root/etc/openclash/rule_provider/DAZN deleted file mode 100644 index 7e898311..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/DAZN +++ /dev/null @@ -1,25 +0,0 @@ -payload: - # > DAZN - # - USER-AGENT,DAZN* - - - PROCESS-NAME,com.dazn - - - DOMAIN-KEYWORD,voddazn - - - DOMAIN-SUFFIX,dazn.com - - DOMAIN-SUFFIX,dazn-api.com - - DOMAIN-SUFFIX,dazndn.com - - DOMAIN-SUFFIX,daznedge.net - - DOMAIN-SUFFIX,daznfeeds.com - - DOMAIN-SUFFIX,daznservices.com - - DOMAIN-SUFFIX,indazn.com - - DOMAIN-SUFFIX,indaznlab.com - - - DOMAIN,daznfeeds.com.edgekey.net - - DOMAIN,dca-lm-livedazn.secure.footprint.net - - DOMAIN,h-dazn.online-metrix.net - - DOMAIN,images-daznservices-com.cdn.ampproject.org - - DOMAIN,d151l6v8er5bdm.cloudfront.net - - - IP-CIDR,185.42.236.0/24,no-resolve - - IP-CIDR,185.42.238.0/24,no-resolve \ No newline at end of file diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/Discord b/luci-app-openclash/root/etc/openclash/rule_provider/Discord deleted file mode 100644 index 0712cc44..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/Discord +++ /dev/null @@ -1,8 +0,0 @@ -payload: -# > Discord - - DOMAIN-SUFFIX,discord.com - - DOMAIN-SUFFIX,discord.gg - - DOMAIN-SUFFIX,discord.media - - DOMAIN-SUFFIX,discordapp.com - - DOMAIN-SUFFIX,discordapp.net - - DOMAIN-SUFFIX,discordstatus.com \ No newline at end of file diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/Discovery_Plus b/luci-app-openclash/root/etc/openclash/rule_provider/Discovery_Plus deleted file mode 100644 index ded69b85..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/Discovery_Plus +++ /dev/null @@ -1,11 +0,0 @@ -payload: - # > Discovery Plus - - PROCESS-NAME,com.discovery.discoveryplus.mobile - - DOMAIN-SUFFIX,content-ause1-ur-discovery1.uplynk.com - - DOMAIN-SUFFIX,disco-api.com - - DOMAIN-SUFFIX,discoveryplus.com - - DOMAIN-SUFFIX,fwmrm.net - - DOMAIN-SUFFIX,getblueshift.com - - DOMAIN-SUFFIX,litix.io - - DOMAIN-SUFFIX,mobile-collector.newrelic.com - - DOMAIN-SUFFIX,uplynk.com diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/Disney_Plus b/luci-app-openclash/root/etc/openclash/rule_provider/Disney_Plus deleted file mode 100644 index 13efa24a..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/Disney_Plus +++ /dev/null @@ -1,21 +0,0 @@ -payload: - # > Disney Plus - # - USER-AGENT,Disney* - - - PROCESS-NAME,com.disney.disneyplus - - - DOMAIN-SUFFIX,adobedtm.com - - DOMAIN-SUFFIX,bam.nr-date.net - - DOMAIN-SUFFIX,bamgrid.com - - DOMAIN-SUFFIX,braze.com - - DOMAIN-SUFFIX,cdn.optimizely.com - - DOMAIN-SUFFIX,d9.flashtalking.com - - DOMAIN-SUFFIX,disney.demdex.net - - DOMAIN-SUFFIX,disney.my.sentry.io - - DOMAIN-SUFFIX,disneyplus.bn5x.net - - DOMAIN-SUFFIX,disneyplus.com - - DOMAIN-SUFFIX,disneyplus.com.ssl.sc.omtrdc.net - - DOMAIN-SUFFIX,disney-plus.net - - DOMAIN-SUFFIX,disney-portal.my.onetrust.com - - DOMAIN-SUFFIX,dssott.com - - DOMAIN-SUFFIX,registerdisney.go.com \ No newline at end of file diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/Domestic b/luci-app-openclash/root/etc/openclash/rule_provider/Domestic deleted file mode 100644 index d963530b..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/Domestic +++ /dev/null @@ -1,335 +0,0 @@ -payload: - # China Banks - # > Agricultural Bank of China - - DOMAIN-SUFFIX,abchina.com - - DOMAIN-SUFFIX,abchina.com.cn - - # > Bank of China - - DOMAIN-SUFFIX,boc.cn - - # > China Citic Bank - - DOMAIN-SUFFIX,citicbank.com - - DOMAIN-SUFFIX,ecitic.com - - DOMAIN-SUFFIX,ecitic.net - - # > China Construction Bank - - DOMAIN-SUFFIX,ccb.com - - DOMAIN-SUFFIX,ccb.com.cn - - # > China Everbright Bank - - DOMAIN-SUFFIX,cebbank.com - - # > China Merchants Bank - # - USER-AGENT,cmb* - - DOMAIN-SUFFIX,cmbchina.com - - DOMAIN-SUFFIX,cmbimg.com - - DOMAIN-SUFFIX,cmbt.cn - - DOMAIN-SUFFIX,mbcloud.com - - # > Industrial and Commercial Bank of China - # - USER-AGENT,%E4%B8%AD%E5%9B%BD%E5%B7%A5%E5%95%86%E9%93%B6%E8%A1%8C* - - DOMAIN-SUFFIX,icbc.com.cn - - # > Ping An Bank - - DOMAIN-SUFFIX,pingan.com - - DOMAIN-SUFFIX,pingan.com.cn - - # Type - # > Beplay - - DOMAIN-KEYWORD,beplay - - # > Blizzard - # - USER-AGENT,hearthstone* - - DOMAIN,cdp.cloud.unity3d.com - - DOMAIN-SUFFIX,battle.net - - DOMAIN-SUFFIX,battlenet.com - - DOMAIN-SUFFIX,blizzard.com - - # > Prior - - DOMAIN,client.amplifi.com - - DOMAIN,ip.bjango.com - - DOMAIN-SUFFIX,alphassl.com - - DOMAIN-SUFFIX,edu.cn - - # > RRYS - - DOMAIN-SUFFIX,p4pfile.com - - DOMAIN-SUFFIX,zmzfile.com - - # > Sony - # - USER-AGENT,RemotePlay* - - DOMAIN-SUFFIX,playstation.com - - DOMAIN-SUFFIX,playstation.net - - DOMAIN-SUFFIX,playstationnetwork.com - - DOMAIN-SUFFIX,sony.com - - DOMAIN-SUFFIX,sonyentertainmentnetwork.com - - # > TeamViewer - - IP-CIDR,185.188.32.0/24,no-resolve - - IP-CIDR,185.188.33.0/24,no-resolve - - IP-CIDR,185.188.34.0/24,no-resolve - - IP-CIDR,185.188.35.0/24,no-resolve - - IP-CIDR6,2a0b:b580::/48,no-resolve - - IP-CIDR6,2a0b:b581::/48,no-resolve - - IP-CIDR6,2a0b:b582::/48,no-resolve - - IP-CIDR6,2a0b:b583::/48,no-resolve - - # > Tencent - - IP-CIDR,182.254.116.0/24,no-resolve - - # > Tencent WeChat (International) - - IP-CIDR,101.32.104.0/21,DIRECT,no-resolve - - IP-CIDR,101.32.118.0/23,DIRECT,no-resolve - - IP-CIDR,101.32.96.0/20,DIRECT,no-resolve - - IP-CIDR,129.226.0.0/16,DIRECT,no-resolve - - IP-CIDR,183.128.0.0/11,DIRECT,no-resolve - - IP-CIDR,183.131.48.0/20,DIRECT,no-resolve - - - DOMAIN-SUFFIX,10010.com - - DOMAIN-SUFFIX,10086.cn - - DOMAIN-SUFFIX,12306.cn - - DOMAIN-SUFFIX,12306.com - - DOMAIN-SUFFIX,126.net - - DOMAIN-SUFFIX,163.com - - DOMAIN-SUFFIX,189.cn - - DOMAIN-SUFFIX,360.cn - - DOMAIN-SUFFIX,360.com - - DOMAIN-SUFFIX,360buy.com - - DOMAIN-SUFFIX,360buyimg.com - - DOMAIN-SUFFIX,36kr.com - - DOMAIN-SUFFIX,51ym.me - - DOMAIN-SUFFIX,58.com - - DOMAIN-SUFFIX,8686c.com - - DOMAIN-SUFFIX,95516.com - - DOMAIN-SUFFIX,abercrombie.com - - DOMAIN-SUFFIX,acfun.tv - - DOMAIN-SUFFIX,adobesc.com - - DOMAIN-SUFFIX,air-matters.com - - DOMAIN-SUFFIX,air-matters.io - - DOMAIN-SUFFIX,aixifan.com - - DOMAIN-SUFFIX,akadns.net - - DOMAIN-SUFFIX,alibaba.com - - DOMAIN-SUFFIX,alibabacloud.com - - DOMAIN-SUFFIX,alicdn.com - - DOMAIN-SUFFIX,alipay.com - - DOMAIN-SUFFIX,alipayobjects.com - - DOMAIN-SUFFIX,aliyun.com - - DOMAIN-SUFFIX,aliyuncs.com - - DOMAIN-SUFFIX,amap.com - - DOMAIN-SUFFIX,appshike.com - - DOMAIN-SUFFIX,appstore.com - - DOMAIN-SUFFIX,autonavi.com - - DOMAIN-SUFFIX,bababian.com - - DOMAIN-SUFFIX,baidu.com - - DOMAIN-SUFFIX,baidupcs.com - - DOMAIN-SUFFIX,bdimg.com - - DOMAIN-SUFFIX,bdstatic.com - - DOMAIN-SUFFIX,beatsbydre.com - - DOMAIN-SUFFIX,broadcasthe.net - - DOMAIN-SUFFIX,caiyunapp.com - - DOMAIN-SUFFIX,ccgslb.com - - DOMAIN-SUFFIX,ccgslb.net - - DOMAIN-SUFFIX,chinacache.net - - DOMAIN-SUFFIX,chunbo.com - - DOMAIN-SUFFIX,chunboimg.com - - DOMAIN-SUFFIX,clashroyaleapp.com - - DOMAIN-SUFFIX,clouddn.com - - DOMAIN-SUFFIX,cloudsigma.com - - DOMAIN-SUFFIX,cloudxns.net - - DOMAIN-SUFFIX,cmct.tv - - DOMAIN-SUFFIX,cmfu.com - - DOMAIN-SUFFIX,cnbeta.com - - DOMAIN-SUFFIX,cnbetacdn.com - - DOMAIN-SUFFIX,chdbits.co - - DOMAIN-SUFFIX,cnlang.org - - DOMAIN-SUFFIX,coolapk.com - - DOMAIN-SUFFIX,cn88.net - - DOMAIN-SUFFIX,dct-cloud.com - - DOMAIN-SUFFIX,didialift.com - - DOMAIN-SUFFIX,digicert.com - - DOMAIN-SUFFIX,douban.com - - DOMAIN-SUFFIX,doubanio.com - - DOMAIN-SUFFIX,douyin.com - - DOMAIN-SUFFIX,douyu.com - - DOMAIN-SUFFIX,douyu.tv - - DOMAIN-SUFFIX,douyutv.com - - DOMAIN-SUFFIX,duokan.com - - DOMAIN-SUFFIX,duoshuo.com - - DOMAIN-SUFFIX,dytt8.net - - DOMAIN-SUFFIX,easou.com - - DOMAIN-SUFFIX,eudic.net - - DOMAIN-SUFFIX,ewqcxz.com - - DOMAIN-SUFFIX,feng.com - - DOMAIN-SUFFIX,fir.im - - DOMAIN-SUFFIX,firefox.com - - DOMAIN-SUFFIX,frdic.com - - DOMAIN-SUFFIX,fresh-ideas.cc - - DOMAIN-SUFFIX,gameloft.com - - DOMAIN-SUFFIX,garmin.com - - DOMAIN-SUFFIX,geetest.com - - DOMAIN-SUFFIX,godic.net - - DOMAIN-SUFFIX,goodread.com - - DOMAIN-SUFFIX,goofish.com - - DOMAIN-SUFFIX,gtimg.com - - DOMAIN-SUFFIX,haibian.com - - DOMAIN-SUFFIX,hao123.com - - DOMAIN-SUFFIX,haosou.com - - DOMAIN-SUFFIX,hdchina.org - - DOMAIN-SUFFIX,hdcmct.org - - DOMAIN-SUFFIX,hjfile.cn - - DOMAIN-SUFFIX,hkserversolution.com - - DOMAIN-SUFFIX,hollisterco.com - - DOMAIN-SUFFIX,hongxiu.com - - DOMAIN-SUFFIX,hujiang.com - - DOMAIN-SUFFIX,hxcdn.net - - DOMAIN-SUFFIX,icedropper.com - - DOMAIN-SUFFIX,iciba.com - - DOMAIN-SUFFIX,ifeng.com - - DOMAIN-SUFFIX,ifengimg.com - - DOMAIN-SUFFIX,images-amazon.com - - DOMAIN-SUFFIX,img4me.com - - DOMAIN-SUFFIX,ithome.com - - DOMAIN-SUFFIX,ixdzs.com - - DOMAIN-SUFFIX,jd.com - - DOMAIN-SUFFIX,jd.hk - - DOMAIN-SUFFIX,jianshu.com - - DOMAIN-SUFFIX,jianshu.io - - DOMAIN-SUFFIX,jianshuapi.com - - DOMAIN-SUFFIX,jiathis.com - - DOMAIN-SUFFIX,jomodns.com - - DOMAIN-SUFFIX,jsboxbbs.com - - DOMAIN-SUFFIX,knewone.com - - DOMAIN-SUFFIX,kuaidi100.com - - DOMAIN-SUFFIX,kugou.com - - DOMAIN-SUFFIX,lecloud.com - - DOMAIN-SUFFIX,lemicp.com - - DOMAIN-SUFFIX,letv.com - - DOMAIN-SUFFIX,letvcloud.com - - DOMAIN-SUFFIX,liyuans.com - - DOMAIN-SUFFIX,lizhi.io - - DOMAIN-SUFFIX,localizecdn.com - - DOMAIN-SUFFIX,lucifr.com - - DOMAIN-SUFFIX,luoo.net - - DOMAIN-SUFFIX,lxdns.com - - DOMAIN-SUFFIX,mai.tn - - DOMAIN-SUFFIX,meizu.com - - DOMAIN-SUFFIX,metatrader4.com - - DOMAIN-SUFFIX,metatrader5.com - - DOMAIN-SUFFIX,mi.com - - DOMAIN-SUFFIX,miaopai.com - - DOMAIN-SUFFIX,miui.com - - DOMAIN-SUFFIX,miwifi.com - - DOMAIN-SUFFIX,mob.com - - DOMAIN-SUFFIX,moji.com - - DOMAIN-SUFFIX,moke.com - - DOMAIN-SUFFIX,mxhichina.com - - DOMAIN-SUFFIX,myqcloud.com - - DOMAIN-SUFFIX,myunlu.com - - DOMAIN-SUFFIX,ngabbs.com - - DOMAIN-SUFFIX,netease.com - - DOMAIN-SUFFIX,nfoservers.com - - DOMAIN-SUFFIX,nssurge.com - - DOMAIN-SUFFIX,nuomi.com - - DOMAIN-SUFFIX,ourbits.club - - DOMAIN-SUFFIX,ourdvs.com - - DOMAIN-SUFFIX,passthepopcorn.me - - DOMAIN-SUFFIX,pgyer.com - - DOMAIN-SUFFIX,pniao.com - - DOMAIN-SUFFIX,privatehd.to - - DOMAIN-SUFFIX,qbox.me - - DOMAIN-SUFFIX,qcloud.com - - DOMAIN-SUFFIX,qdaily.com - - DOMAIN-SUFFIX,qdmm.com - - DOMAIN-SUFFIX,qhimg.com - - DOMAIN-SUFFIX,qidian.com - - DOMAIN-SUFFIX,qihucdn.com - - DOMAIN-SUFFIX,qin.io - - DOMAIN-SUFFIX,qingmang.me - - DOMAIN-SUFFIX,qingmang.mobi - - DOMAIN-SUFFIX,qiniucdn.com - - DOMAIN-SUFFIX,qiniudn.com - - DOMAIN-SUFFIX,qq.com - - DOMAIN-SUFFIX,qqurl.com - - DOMAIN-SUFFIX,rarbg.to - - DOMAIN-SUFFIX,redacted.ch - - DOMAIN-SUFFIX,rrmj.tv - - DOMAIN-SUFFIX,ruguoapp.com - - DOMAIN-SUFFIX,sandai.net - - DOMAIN-SUFFIX,sf-express.com - - DOMAIN-SUFFIX,sinaapp.com - - DOMAIN-SUFFIX,sinaimg.cn - - DOMAIN-SUFFIX,sinaimg.com - - DOMAIN-SUFFIX,sm.ms - - DOMAIN-SUFFIX,smzdm.com - - DOMAIN-SUFFIX,snwx.com - - DOMAIN-SUFFIX,so.com - - DOMAIN-SUFFIX,sogou.com - - DOMAIN-SUFFIX,sogoucdn.com - - DOMAIN-SUFFIX,sohu.com - - DOMAIN-SUFFIX,soku.com - - DOMAIN-SUFFIX,soso.com - - DOMAIN-SUFFIX,sspai.com - - DOMAIN-SUFFIX,startssl.com - - DOMAIN-SUFFIX,suning.com - - DOMAIN-SUFFIX,symcd.com - - DOMAIN-SUFFIX,taobao.com - - DOMAIN-SUFFIX,tawk.link - - DOMAIN-SUFFIX,tawk.to - - DOMAIN-SUFFIX,tenpay.com - - DOMAIN-SUFFIX,tietuku.com - - DOMAIN-SUFFIX,tmall.com - - DOMAIN-SUFFIX,tmzvps.com - - DOMAIN-SUFFIX,trello.com - - DOMAIN-SUFFIX,trellocdn.com - - DOMAIN-SUFFIX,totheglory.im - - DOMAIN-SUFFIX,ttmeiju.com - - DOMAIN-SUFFIX,tudou.com - - DOMAIN-SUFFIX,udache.com - - DOMAIN-SUFFIX,umengcloud.com - - DOMAIN-SUFFIX,upaiyun.com - - DOMAIN-SUFFIX,upyun.com - - DOMAIN-SUFFIX,uxengine.net - - DOMAIN-SUFFIX,wandoujia.com - - DOMAIN-SUFFIX,weather.bjango.com - - DOMAIN-SUFFIX,weather.com - - DOMAIN-SUFFIX,webqxs.com - - DOMAIN-SUFFIX,weibo.cn - - DOMAIN-SUFFIX,weibo.com - - DOMAIN-SUFFIX,weico.cc - - DOMAIN-SUFFIX,weiphone.com - - DOMAIN-SUFFIX,weiphone.net - - DOMAIN-SUFFIX,wenku8.net - - DOMAIN-SUFFIX,werewolf.53site.com - - DOMAIN-SUFFIX,wkcdn.com - - DOMAIN-SUFFIX,xdrig.com - - DOMAIN-SUFFIX,xhostfire.com - - DOMAIN-SUFFIX,xhscdn.com - - DOMAIN-SUFFIX,xiaohongshu.com - - DOMAIN-SUFFIX,xiaojukeji.com - - DOMAIN-SUFFIX,xiaomi.com - - DOMAIN-SUFFIX,xiaomi.net - - DOMAIN-SUFFIX,xiaomicp.com - - DOMAIN-SUFFIX,ximalaya.com - - DOMAIN-SUFFIX,xitek.com - - DOMAIN-SUFFIX,xmcdn.com - - DOMAIN-SUFFIX,xslb.net - - DOMAIN-SUFFIX,yach.me - - DOMAIN-SUFFIX,yeepay.com - - DOMAIN-SUFFIX,yhd.com - - DOMAIN-SUFFIX,yinxiang.com - - DOMAIN-SUFFIX,yixia.com - - DOMAIN-SUFFIX,ykimg.com - - DOMAIN-SUFFIX,youdao.com - - DOMAIN-SUFFIX,youku.com - - DOMAIN-SUFFIX,yunjiasu-cdn.net - - DOMAIN-SUFFIX,zealer.com - - DOMAIN-SUFFIX,zgslb.net - - DOMAIN-SUFFIX,zhihu.com - - DOMAIN-SUFFIX,zhimg.com - - DOMAIN-SUFFIX,zimuzu.tv - - DOMAIN-SUFFIX,zmz002.com - - - IP-CIDR,1.255.62.0/24,no-resolve - - # > CN - - DOMAIN-SUFFIX,gov.cn - - DOMAIN-SUFFIX,cn diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/Domestic_IPs b/luci-app-openclash/root/etc/openclash/rule_provider/Domestic_IPs deleted file mode 100644 index 1192c7ae..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/Domestic_IPs +++ /dev/null @@ -1,6608 +0,0 @@ -payload: - - 1.0.1.0/24 - - 1.0.2.0/23 - - 1.0.8.0/21 - - 1.0.32.0/19 - - 1.1.0.0/24 - - 1.1.2.0/23 - - 1.1.4.0/22 - - 1.1.8.0/21 - - 1.1.16.0/20 - - 1.1.32.0/19 - - 1.2.0.0/23 - - 1.2.2.0/24 - - 1.2.5.0/24 - - 1.2.6.0/23 - - 1.2.8.0/21 - - 1.2.16.0/20 - - 1.2.32.0/19 - - 1.2.64.0/18 - - 1.3.0.0/16 - - 1.4.1.0/24 - - 1.4.2.0/23 - - 1.4.4.0/22 - - 1.4.8.0/21 - - 1.4.16.0/20 - - 1.4.32.0/19 - - 1.4.64.0/18 - - 1.8.0.0/18 - - 1.8.64.0/19 - - 1.8.96.0/22 - - 1.8.100.0/23 - - 1.8.112.0/20 - - 1.8.128.0/20 - - 1.8.144.0/22 - - 1.8.148.0/23 - - 1.8.154.0/23 - - 1.8.156.0/22 - - 1.8.160.0/19 - - 1.8.192.0/19 - - 1.8.224.0/20 - - 1.8.244.0/22 - - 1.8.248.0/21 - - 1.10.0.0/21 - - 1.10.8.0/23 - - 1.10.11.0/24 - - 1.10.12.0/22 - - 1.10.16.0/20 - - 1.10.32.0/19 - - 1.10.64.0/18 - - 1.12.0.0/14 - - 1.18.128.0/24 - - 1.24.0.0/13 - - 1.45.0.0/16 - - 1.48.0.0/14 - - 1.56.0.0/13 - - 1.68.0.0/14 - - 1.80.0.0/12 - - 1.116.0.0/15 - - 1.118.1.0/24 - - 1.118.2.0/23 - - 1.118.4.0/22 - - 1.118.8.0/21 - - 1.118.16.0/20 - - 1.118.32.0/19 - - 1.118.64.0/18 - - 1.118.128.0/17 - - 1.119.0.0/16 - - 1.180.0.0/14 - - 1.184.0.0/15 - - 1.188.0.0/14 - - 1.192.0.0/13 - - 1.202.0.0/15 - - 1.204.0.0/14 - - 8.128.0.0/10 - - 8.209.36.0/22 - - 8.209.40.0/21 - - 8.209.48.0/20 - - 8.209.128.0/17 - - 8.210.0.0/15 - - 8.212.0.0/14 - - 8.216.0.0/13 - - 12.118.130.6/32 - - 12.118.130.86/32 - - 14.0.0.0/21 - - 14.0.12.0/22 - - 14.1.0.0/22 - - 14.1.24.0/22 - - 14.1.108.0/22 - - 14.16.0.0/12 - - 14.102.128.0/22 - - 14.102.180.0/22 - - 14.103.0.0/16 - - 14.104.0.0/13 - - 14.112.0.0/12 - - 14.130.0.0/15 - - 14.134.0.0/15 - - 14.144.0.0/12 - - 14.192.60.0/22 - - 14.192.76.0/22 - - 14.196.0.0/15 - - 14.204.0.0/15 - - 14.208.0.0/12 - - 20.134.160.0/20 - - 20.139.160.0/20 - - 20.249.255.0/24 - - 20.251.0.0/22 - - 23.236.64.0/25 - - 23.236.64.128/26 - - 23.236.64.192/27 - - 27.0.128.0/21 - - 27.0.160.0/21 - - 27.0.188.0/22 - - 27.0.204.0/22 - - 27.0.208.0/21 - - 27.8.0.0/13 - - 27.16.0.0/12 - - 27.34.232.0/21 - - 27.36.0.0/14 - - 27.40.0.0/13 - - 27.50.40.0/21 - - 27.50.128.0/17 - - 27.54.72.0/21 - - 27.54.152.0/21 - - 27.54.192.0/18 - - 27.98.208.0/20 - - 27.98.224.0/19 - - 27.99.128.0/17 - - 27.103.0.0/16 - - 27.106.128.0/18 - - 27.106.204.0/22 - - 27.109.32.0/19 - - 27.109.124.0/22 - - 27.112.0.0/18 - - 27.112.80.0/20 - - 27.112.112.0/21 - - 27.113.128.0/18 - - 27.115.0.0/17 - - 27.116.44.0/22 - - 27.121.72.0/21 - - 27.121.120.0/21 - - 27.128.0.0/15 - - 27.131.220.0/22 - - 27.144.0.0/16 - - 27.148.0.0/14 - - 27.152.0.0/13 - - 27.184.0.0/13 - - 27.192.0.0/11 - - 27.224.0.0/14 - - 36.0.0.0/22 - - 36.0.16.0/20 - - 36.0.32.0/19 - - 36.0.64.0/18 - - 36.0.128.0/17 - - 36.1.0.0/16 - - 36.4.0.0/14 - - 36.16.0.0/12 - - 36.32.0.0/14 - - 36.36.0.0/16 - - 36.37.0.0/19 - - 36.37.36.0/23 - - 36.37.39.0/24 - - 36.37.40.0/21 - - 36.37.48.0/20 - - 36.40.0.0/13 - - 36.48.0.0/15 - - 36.51.0.0/17 - - 36.51.128.0/18 - - 36.51.192.0/19 - - 36.51.224.0/20 - - 36.51.240.0/21 - - 36.51.248.0/22 - - 36.51.252.0/23 - - 36.56.0.0/13 - - 36.96.0.0/11 - - 36.128.0.0/10 - - 36.192.0.0/11 - - 36.248.0.0/14 - - 36.254.0.0/16 - - 36.255.116.0/22 - - 36.255.128.0/22 - - 36.255.164.0/22 - - 36.255.172.0/22 - - 36.255.176.0/22 - - 38.142.239.114/32 - - 39.0.0.0/24 - - 39.0.2.0/23 - - 39.0.4.0/22 - - 39.0.8.0/21 - - 39.0.16.0/20 - - 39.0.32.0/19 - - 39.0.64.0/18 - - 39.0.128.0/17 - - 39.64.0.0/11 - - 39.96.0.0/13 - - 39.104.0.0/14 - - 39.108.0.0/16 - - 39.109.120.0/23 - - 39.128.0.0/10 - - 40.0.176.0/20 - - 40.0.247.0/24 - - 40.0.248.0/22 - - 40.0.252.0/23 - - 40.0.255.0/24 - - 40.72.0.0/15 - - 40.77.136.112/28 - - 40.77.236.224/27 - - 40.77.254.64/27 - - 40.125.128.0/17 - - 40.126.64.0/18 - - 40.198.10.0/24 - - 40.198.16.0/21 - - 40.198.24.0/23 - - 40.251.225.0/24 - - 40.251.227.0/24 - - 42.0.0.0/22 - - 42.0.8.0/21 - - 42.0.16.0/21 - - 42.0.24.0/22 - - 42.0.32.0/19 - - 42.0.128.0/17 - - 42.1.0.0/19 - - 42.1.32.0/20 - - 42.1.48.0/21 - - 42.1.56.0/22 - - 42.4.0.0/14 - - 42.48.0.0/13 - - 42.56.0.0/14 - - 42.62.0.0/17 - - 42.62.128.0/19 - - 42.62.160.0/20 - - 42.62.180.0/22 - - 42.62.184.0/21 - - 42.63.0.0/16 - - 42.80.0.0/15 - - 42.83.64.0/20 - - 42.83.80.0/22 - - 42.83.88.0/21 - - 42.83.96.0/19 - - 42.83.128.0/23 - - 42.83.134.0/24 - - 42.83.139.0/24 - - 42.83.140.0/22 - - 42.83.144.0/20 - - 42.83.160.0/19 - - 42.83.192.0/18 - - 42.84.0.0/14 - - 42.88.0.0/13 - - 42.96.64.0/19 - - 42.96.96.0/21 - - 42.96.108.0/22 - - 42.96.112.0/20 - - 42.96.128.0/17 - - 42.97.0.0/16 - - 42.99.0.0/18 - - 42.99.64.0/19 - - 42.99.96.0/20 - - 42.99.112.0/22 - - 42.99.120.0/21 - - 42.100.0.0/14 - - 42.120.0.0/15 - - 42.122.0.0/16 - - 42.123.0.0/19 - - 42.123.36.0/22 - - 42.123.40.0/21 - - 42.123.48.0/20 - - 42.123.64.0/18 - - 42.123.128.0/17 - - 42.128.0.0/12 - - 42.156.0.0/19 - - 42.156.36.0/22 - - 42.156.40.0/21 - - 42.156.48.0/20 - - 42.156.64.0/18 - - 42.156.128.0/17 - - 42.157.0.0/21 - - 42.157.8.0/22 - - 42.157.14.0/23 - - 42.157.16.0/20 - - 42.157.32.0/19 - - 42.157.64.0/18 - - 42.157.128.0/17 - - 42.158.0.0/15 - - 42.160.0.0/12 - - 42.176.0.0/13 - - 42.184.0.0/15 - - 42.186.0.0/16 - - 42.187.0.0/18 - - 42.187.64.0/19 - - 42.187.96.0/20 - - 42.187.112.0/21 - - 42.187.120.0/22 - - 42.187.128.0/17 - - 42.192.0.0/13 - - 42.201.0.0/17 - - 42.202.0.0/15 - - 42.204.0.0/14 - - 42.208.0.0/12 - - 42.224.0.0/12 - - 42.240.0.0/16 - - 42.242.0.0/15 - - 42.244.0.0/15 - - 42.246.0.0/16 - - 42.247.0.0/22 - - 42.247.4.0/24 - - 42.247.5.0/25 - - 42.247.5.128/26 - - 42.247.5.204/30 - - 42.247.5.208/28 - - 42.247.5.224/27 - - 42.247.6.0/23 - - 42.247.8.0/21 - - 42.247.16.0/20 - - 42.247.32.0/19 - - 42.247.64.0/18 - - 42.247.128.0/17 - - 42.248.0.0/13 - - 43.224.12.0/22 - - 43.224.24.0/22 - - 43.224.44.0/22 - - 43.224.52.0/22 - - 43.224.56.0/22 - - 43.224.68.0/22 - - 43.224.72.0/22 - - 43.224.80.0/22 - - 43.224.100.0/22 - - 43.224.144.0/22 - - 43.224.160.0/22 - - 43.224.176.0/22 - - 43.224.184.0/22 - - 43.224.200.0/21 - - 43.224.208.0/21 - - 43.224.216.0/22 - - 43.224.240.0/22 - - 43.225.76.0/22 - - 43.225.86.0/24 - - 43.225.120.0/22 - - 43.225.180.0/22 - - 43.225.208.0/22 - - 43.225.216.0/21 - - 43.225.224.0/20 - - 43.225.240.0/21 - - 43.225.252.0/22 - - 43.226.32.0/19 - - 43.226.64.0/19 - - 43.226.96.0/20 - - 43.226.112.0/21 - - 43.226.120.0/22 - - 43.226.128.0/19 - - 43.226.160.0/21 - - 43.226.236.0/22 - - 43.226.240.0/20 - - 43.227.0.0/21 - - 43.227.8.0/22 - - 43.227.32.0/19 - - 43.227.64.0/19 - - 43.227.104.0/22 - - 43.227.136.0/21 - - 43.227.144.0/22 - - 43.227.152.0/21 - - 43.227.160.0/20 - - 43.227.176.0/21 - - 43.227.188.0/22 - - 43.227.192.0/19 - - 43.227.232.0/22 - - 43.227.248.0/21 - - 43.228.0.0/18 - - 43.228.64.0/21 - - 43.228.76.0/22 - - 43.228.100.0/22 - - 43.228.116.0/24 - - 43.228.118.0/23 - - 43.228.132.0/22 - - 43.228.136.0/22 - - 43.228.148.0/22 - - 43.228.152.0/22 - - 43.228.188.0/22 - - 43.229.40.0/22 - - 43.229.48.0/22 - - 43.229.56.0/22 - - 43.229.96.0/22 - - 43.229.136.0/21 - - 43.229.168.0/21 - - 43.229.176.0/20 - - 43.229.192.0/21 - - 43.229.216.0/21 - - 43.229.232.0/21 - - 43.230.20.0/22 - - 43.230.32.0/22 - - 43.230.68.0/22 - - 43.230.72.0/22 - - 43.230.84.0/22 - - 43.230.124.0/22 - - 43.230.220.0/22 - - 43.230.224.0/19 - - 43.231.12.0/22 - - 43.231.32.0/20 - - 43.231.80.0/20 - - 43.231.96.0/20 - - 43.231.136.0/21 - - 43.231.144.0/20 - - 43.231.160.0/20 - - 43.231.176.0/21 - - 43.236.0.0/15 - - 43.238.0.0/16 - - 43.239.0.0/19 - - 43.239.32.0/20 - - 43.239.48.0/22 - - 43.239.116.0/22 - - 43.239.120.0/22 - - 43.239.172.0/22 - - 43.240.0.0/22 - - 43.240.56.0/21 - - 43.240.68.0/22 - - 43.240.72.0/21 - - 43.240.84.0/22 - - 43.240.124.0/22 - - 43.240.128.0/21 - - 43.240.136.0/22 - - 43.240.156.0/22 - - 43.240.160.0/19 - - 43.240.192.0/19 - - 43.240.240.0/20 - - 43.241.0.0/20 - - 43.241.16.0/21 - - 43.241.48.0/22 - - 43.241.76.0/22 - - 43.241.80.0/20 - - 43.241.112.0/22 - - 43.241.168.0/21 - - 43.241.176.0/21 - - 43.241.184.0/22 - - 43.241.208.0/20 - - 43.241.224.0/20 - - 43.241.240.0/22 - - 43.241.248.0/22 - - 43.242.8.0/21 - - 43.242.16.0/20 - - 43.242.48.0/22 - - 43.242.53.0/24 - - 43.242.54.0/23 - - 43.242.56.0/21 - - 43.242.64.0/22 - - 43.242.72.0/21 - - 43.242.80.0/20 - - 43.242.96.0/22 - - 43.242.144.0/20 - - 43.242.160.0/21 - - 43.242.180.0/22 - - 43.242.188.0/22 - - 43.242.192.0/21 - - 43.242.204.0/22 - - 43.242.216.0/21 - - 43.242.252.0/22 - - 43.243.4.0/22 - - 43.243.8.0/21 - - 43.243.16.0/22 - - 43.243.88.0/22 - - 43.243.128.0/22 - - 43.243.136.0/22 - - 43.243.144.0/21 - - 43.243.156.0/22 - - 43.243.180.0/22 - - 43.243.228.0/22 - - 43.243.232.0/22 - - 43.243.244.0/22 - - 43.246.0.0/18 - - 43.246.64.0/19 - - 43.246.96.0/22 - - 43.246.228.0/22 - - 43.247.4.0/22 - - 43.247.8.0/22 - - 43.247.44.0/22 - - 43.247.48.0/22 - - 43.247.68.0/22 - - 43.247.76.0/22 - - 43.247.84.0/22 - - 43.247.88.0/21 - - 43.247.96.0/21 - - 43.247.108.0/22 - - 43.247.112.0/22 - - 43.247.148.0/22 - - 43.247.152.0/22 - - 43.247.176.0/20 - - 43.247.196.0/22 - - 43.247.200.0/21 - - 43.247.208.0/20 - - 43.247.224.0/19 - - 43.248.0.0/21 - - 43.248.20.0/22 - - 43.248.28.0/22 - - 43.248.48.0/22 - - 43.248.76.0/22 - - 43.248.80.0/20 - - 43.248.96.0/19 - - 43.248.128.0/20 - - 43.248.144.0/21 - - 43.248.176.0/20 - - 43.248.192.0/20 - - 43.248.208.0/22 - - 43.248.228.0/22 - - 43.248.232.0/22 - - 43.248.244.0/22 - - 43.249.4.0/22 - - 43.249.120.0/22 - - 43.249.132.0/22 - - 43.249.136.0/22 - - 43.249.144.0/20 - - 43.249.160.0/21 - - 43.249.168.0/22 - - 43.249.192.0/22 - - 43.249.236.0/22 - - 43.250.4.0/22 - - 43.250.12.0/22 - - 43.250.16.0/21 - - 43.250.28.0/22 - - 43.250.32.0/22 - - 43.250.96.0/21 - - 43.250.108.0/22 - - 43.250.112.0/21 - - 43.250.128.0/22 - - 43.250.144.0/21 - - 43.250.160.0/22 - - 43.250.168.0/22 - - 43.250.176.0/22 - - 43.250.200.0/22 - - 43.250.212.0/22 - - 43.250.216.0/21 - - 43.250.236.0/22 - - 43.250.244.0/22 - - 43.251.4.0/22 - - 43.251.36.0/22 - - 43.251.192.0/22 - - 43.251.232.0/22 - - 43.251.244.0/22 - - 43.252.48.0/22 - - 43.252.56.0/22 - - 43.252.224.0/22 - - 43.254.0.0/21 - - 43.254.8.0/22 - - 43.254.24.0/22 - - 43.254.36.0/22 - - 43.254.44.0/22 - - 43.254.52.0/22 - - 43.254.64.0/22 - - 43.254.72.0/22 - - 43.254.84.0/22 - - 43.254.88.0/21 - - 43.254.100.0/22 - - 43.254.104.0/22 - - 43.254.112.0/21 - - 43.254.128.0/22 - - 43.254.136.0/21 - - 43.254.144.0/20 - - 43.254.168.0/21 - - 43.254.180.0/22 - - 43.254.184.0/21 - - 43.254.192.0/22 - - 43.254.200.0/22 - - 43.254.208.0/22 - - 43.254.220.0/22 - - 43.254.224.0/20 - - 43.254.240.0/22 - - 43.254.248.0/21 - - 43.255.0.0/21 - - 43.255.8.0/22 - - 43.255.16.0/22 - - 43.255.48.0/22 - - 43.255.64.0/20 - - 43.255.84.0/22 - - 43.255.96.0/22 - - 43.255.144.0/22 - - 43.255.176.0/22 - - 43.255.184.0/22 - - 43.255.192.0/22 - - 43.255.200.0/21 - - 43.255.208.0/21 - - 43.255.224.0/21 - - 43.255.232.0/22 - - 43.255.244.0/22 - - 45.40.192.0/20 - - 45.40.208.0/21 - - 45.40.224.0/19 - - 45.65.16.0/20 - - 45.112.132.0/22 - - 45.112.188.0/22 - - 45.112.208.0/22 - - 45.112.216.0/21 - - 45.112.228.0/22 - - 45.112.232.0/21 - - 45.113.12.0/22 - - 45.113.16.0/20 - - 45.113.40.0/22 - - 45.113.52.0/22 - - 45.113.72.0/22 - - 45.113.144.0/21 - - 45.113.168.0/22 - - 45.113.184.0/22 - - 45.113.200.0/21 - - 45.113.208.0/20 - - 45.113.240.0/22 - - 45.113.252.0/22 - - 45.114.0.0/22 - - 45.114.32.0/22 - - 45.114.52.0/22 - - 45.114.96.0/22 - - 45.114.136.0/22 - - 45.114.196.0/22 - - 45.114.200.0/22 - - 45.114.228.0/22 - - 45.114.237.0/24 - - 45.114.238.0/23 - - 45.114.252.0/22 - - 45.115.44.0/22 - - 45.115.100.0/22 - - 45.115.120.0/22 - - 45.115.132.0/22 - - 45.115.144.0/22 - - 45.115.156.0/22 - - 45.115.164.0/22 - - 45.115.200.0/22 - - 45.115.212.0/22 - - 45.115.244.0/22 - - 45.115.248.0/22 - - 45.116.16.0/22 - - 45.116.24.0/22 - - 45.116.32.0/21 - - 45.116.52.0/22 - - 45.116.96.0/21 - - 45.116.140.0/22 - - 45.116.152.0/22 - - 45.116.208.0/22 - - 45.117.8.0/22 - - 45.117.20.0/22 - - 45.117.68.0/22 - - 45.117.124.0/22 - - 45.117.252.0/22 - - 45.119.60.0/22 - - 45.119.64.0/21 - - 45.119.72.0/22 - - 45.119.104.0/22 - - 45.119.232.0/22 - - 45.120.100.0/22 - - 45.120.140.0/22 - - 45.120.164.0/22 - - 45.120.180.128/27 - - 45.120.240.0/22 - - 45.121.52.0/22 - - 45.121.64.0/21 - - 45.121.72.0/22 - - 45.121.92.0/22 - - 45.121.96.0/22 - - 45.121.172.0/22 - - 45.121.176.0/22 - - 45.121.240.0/20 - - 45.122.0.0/19 - - 45.122.32.0/21 - - 45.122.40.0/22 - - 45.122.60.0/22 - - 45.122.64.0/19 - - 45.122.96.0/20 - - 45.122.112.0/21 - - 45.122.160.0/19 - - 45.122.192.0/20 - - 45.122.208.0/21 - - 45.122.216.0/22 - - 45.123.28.0/22 - - 45.123.32.0/21 - - 45.123.44.0/22 - - 45.123.48.0/20 - - 45.123.64.0/20 - - 45.123.80.0/21 - - 45.123.120.0/22 - - 45.123.128.0/21 - - 45.123.136.0/22 - - 45.123.148.0/22 - - 45.123.152.0/21 - - 45.123.164.0/22 - - 45.123.168.0/21 - - 45.123.176.0/21 - - 45.123.184.0/22 - - 45.123.204.0/22 - - 45.123.212.0/22 - - 45.123.224.0/19 - - 45.124.0.0/22 - - 45.124.20.0/22 - - 45.124.28.0/22 - - 45.124.32.0/21 - - 45.124.44.0/22 - - 45.124.68.0/22 - - 45.124.76.0/22 - - 45.124.80.0/22 - - 45.124.100.0/22 - - 45.124.124.0/22 - - 45.124.172.0/22 - - 45.124.176.0/22 - - 45.124.208.0/22 - - 45.124.248.0/22 - - 45.125.24.0/22 - - 45.125.44.0/22 - - 45.125.52.0/22 - - 45.125.56.0/22 - - 45.125.76.0/22 - - 45.125.80.0/20 - - 45.125.96.0/21 - - 45.125.136.0/22 - - 45.126.48.0/21 - - 45.126.108.0/22 - - 45.126.112.0/21 - - 45.126.120.0/22 - - 45.126.220.0/22 - - 45.127.8.0/21 - - 45.127.128.0/22 - - 45.127.144.0/21 - - 45.127.156.0/22 - - 45.248.8.0/22 - - 45.248.80.0/22 - - 45.248.88.0/22 - - 45.248.96.0/20 - - 45.248.128.0/21 - - 45.248.204.0/22 - - 45.248.208.0/20 - - 45.248.224.0/19 - - 45.249.0.0/21 - - 45.249.12.0/22 - - 45.249.16.0/20 - - 45.249.32.0/21 - - 45.249.112.0/22 - - 45.249.188.0/22 - - 45.249.192.0/20 - - 45.249.208.0/21 - - 45.250.12.0/22 - - 45.250.16.0/22 - - 45.250.28.0/22 - - 45.250.32.0/21 - - 45.250.40.0/22 - - 45.250.76.0/22 - - 45.250.80.0/20 - - 45.250.96.0/22 - - 45.250.104.0/21 - - 45.250.112.0/20 - - 45.250.128.0/20 - - 45.250.144.0/21 - - 45.250.152.0/22 - - 45.250.164.0/22 - - 45.250.180.0/22 - - 45.250.184.0/21 - - 45.250.192.0/22 - - 45.251.0.0/22 - - 45.251.8.0/22 - - 45.251.16.0/21 - - 45.251.52.0/22 - - 45.251.84.0/22 - - 45.251.88.0/21 - - 45.251.96.0/21 - - 45.251.120.0/21 - - 45.251.137.0/24 - - 45.251.138.0/23 - - 45.251.140.0/22 - - 45.251.144.0/20 - - 45.251.160.0/19 - - 45.251.192.0/19 - - 45.251.224.0/22 - - 45.252.0.0/19 - - 45.252.32.0/20 - - 45.252.48.0/22 - - 45.252.84.0/22 - - 45.252.88.0/21 - - 45.252.96.0/19 - - 45.252.128.0/19 - - 45.252.160.0/20 - - 45.252.176.0/22 - - 45.252.192.0/19 - - 45.252.224.0/21 - - 45.252.232.0/22 - - 45.253.0.0/18 - - 45.253.64.0/20 - - 45.253.80.0/21 - - 45.253.92.0/22 - - 45.253.96.0/20 - - 45.253.112.0/21 - - 45.253.120.0/22 - - 45.253.130.0/23 - - 45.253.132.0/22 - - 45.253.136.0/21 - - 45.253.144.0/20 - - 45.253.160.0/19 - - 45.253.192.0/19 - - 45.253.224.0/20 - - 45.253.240.0/22 - - 45.254.0.0/20 - - 45.254.16.0/21 - - 45.254.28.0/22 - - 45.254.40.0/22 - - 45.254.48.0/20 - - 45.254.64.0/18 - - 45.254.128.0/18 - - 45.254.192.0/19 - - 45.254.224.0/21 - - 45.254.236.0/22 - - 45.254.240.0/22 - - 45.254.248.0/22 - - 45.255.0.0/18 - - 45.255.64.0/19 - - 45.255.96.0/20 - - 45.255.112.0/21 - - 45.255.120.0/22 - - 45.255.136.0/21 - - 45.255.144.0/20 - - 45.255.160.0/19 - - 45.255.192.0/19 - - 45.255.224.0/20 - - 45.255.240.0/21 - - 45.255.248.0/22 - - 46.248.24.0/23 - - 47.92.0.0/14 - - 47.96.0.0/11 - - 49.4.0.0/14 - - 49.51.56.0/22 - - 49.51.60.0/23 - - 49.51.110.0/23 - - 49.51.112.0/20 - - 49.52.0.0/14 - - 49.64.0.0/11 - - 49.112.0.0/13 - - 49.120.0.0/14 - - 49.128.0.0/24 - - 49.128.2.0/23 - - 49.128.4.0/22 - - 49.140.0.0/15 - - 49.152.0.0/14 - - 49.208.0.0/14 - - 49.220.0.0/14 - - 49.232.0.0/14 - - 49.239.0.0/18 - - 49.239.192.0/18 - - 52.80.0.0/14 - - 52.94.249.0/27 - - 52.95.255.144/28 - - 52.130.0.0/15 - - 54.222.0.0/15 - - 54.231.208.0/20 - - 54.240.224.0/24 - - 57.92.96.0/20 - - 58.14.0.0/15 - - 58.16.0.0/13 - - 58.24.0.0/15 - - 58.30.0.0/15 - - 58.32.0.0/11 - - 58.65.232.0/21 - - 58.66.0.0/15 - - 58.68.128.0/19 - - 58.68.160.0/23 - - 58.68.163.0/24 - - 58.68.164.0/22 - - 58.68.179.0/24 - - 58.68.180.0/24 - - 58.68.200.0/21 - - 58.68.208.0/20 - - 58.68.224.0/19 - - 58.82.0.0/17 - - 58.83.0.0/16 - - 58.87.64.0/18 - - 58.99.128.0/17 - - 58.100.0.0/15 - - 58.116.0.0/14 - - 58.128.0.0/13 - - 58.144.0.0/16 - - 58.154.0.0/15 - - 58.192.0.0/11 - - 58.229.92.158/31 - - 58.240.0.0/12 - - 59.32.0.0/11 - - 59.64.0.0/12 - - 59.80.0.0/15 - - 59.82.0.0/16 - - 59.83.0.0/18 - - 59.83.132.0/22 - - 59.83.136.0/21 - - 59.83.144.0/20 - - 59.83.160.0/19 - - 59.83.192.0/19 - - 59.83.224.0/20 - - 59.83.240.0/21 - - 59.83.248.0/22 - - 59.83.252.0/23 - - 59.83.254.0/24 - - 59.107.0.0/16 - - 59.108.0.0/14 - - 59.151.0.0/17 - - 59.152.16.0/20 - - 59.152.36.0/22 - - 59.152.64.0/20 - - 59.152.112.0/21 - - 59.153.4.0/22 - - 59.153.32.0/22 - - 59.153.64.0/21 - - 59.153.72.0/22 - - 59.153.92.0/22 - - 59.153.136.0/22 - - 59.153.152.0/21 - - 59.153.164.0/22 - - 59.153.168.0/21 - - 59.153.176.0/20 - - 59.153.192.0/22 - - 59.155.0.0/16 - - 59.172.0.0/14 - - 59.191.0.0/17 - - 59.192.0.0/10 - - 60.0.0.0/11 - - 60.55.0.0/16 - - 60.63.0.0/16 - - 60.160.0.0/11 - - 60.194.0.0/15 - - 60.200.0.0/13 - - 60.208.0.0/12 - - 60.232.0.0/15 - - 60.235.0.0/16 - - 60.245.128.0/17 - - 60.247.0.0/16 - - 60.252.0.0/16 - - 60.253.128.0/17 - - 60.255.0.0/16 - - 61.4.81.0/24 - - 61.4.82.0/23 - - 61.4.84.0/22 - - 61.4.88.0/21 - - 61.4.176.0/20 - - 61.8.160.0/20 - - 61.14.212.0/22 - - 61.14.216.0/21 - - 61.14.240.0/21 - - 61.28.0.0/17 - - 61.29.128.0/18 - - 61.29.192.0/19 - - 61.29.224.0/20 - - 61.45.128.0/18 - - 61.45.224.0/20 - - 61.47.128.0/18 - - 61.48.0.0/13 - - 61.87.192.0/18 - - 61.128.0.0/10 - - 61.232.0.0/14 - - 61.236.0.0/15 - - 61.240.0.0/14 - - 62.234.0.0/16 - - 64.85.27.0/24 - - 68.79.0.0/18 - - 69.230.192.0/18 - - 69.231.128.0/18 - - 69.234.192.0/18 - - 69.235.128.0/18 - - 71.131.192.0/18 - - 71.132.0.0/18 - - 71.136.64.0/18 - - 71.137.0.0/18 - - 72.21.221.238/32 - - 72.21.221.240/30 - - 72.163.240.0/23 - - 72.163.248.0/22 - - 81.68.0.0/14 - - 82.156.0.0/15 - - 87.254.207.0/24 - - 93.183.14.0/24 - - 93.183.18.0/24 - - 94.191.0.0/17 - - 101.0.0.0/22 - - 101.1.0.0/22 - - 101.2.172.0/22 - - 101.4.0.0/14 - - 101.16.0.0/12 - - 101.32.0.0/14 - - 101.36.0.0/18 - - 101.36.64.0/20 - - 101.36.88.0/21 - - 101.36.96.0/19 - - 101.36.128.0/17 - - 101.37.0.0/16 - - 101.38.0.0/15 - - 101.40.0.0/13 - - 101.48.0.0/15 - - 101.50.8.0/21 - - 101.50.56.0/22 - - 101.52.0.0/16 - - 101.53.100.0/22 - - 101.54.0.0/16 - - 101.55.224.0/21 - - 101.64.0.0/13 - - 101.72.0.0/14 - - 101.76.0.0/15 - - 101.78.0.0/22 - - 101.78.32.0/19 - - 101.80.0.0/12 - - 101.96.0.0/21 - - 101.96.8.0/22 - - 101.96.16.0/20 - - 101.96.128.0/17 - - 101.99.96.0/19 - - 101.101.64.0/19 - - 101.101.100.0/24 - - 101.101.102.0/23 - - 101.101.104.0/21 - - 101.101.112.0/20 - - 101.102.64.0/19 - - 101.102.100.0/23 - - 101.102.102.0/24 - - 101.102.104.0/21 - - 101.102.112.0/20 - - 101.104.0.0/14 - - 101.110.64.0/19 - - 101.110.96.0/20 - - 101.110.116.0/22 - - 101.110.120.0/21 - - 101.120.0.0/14 - - 101.124.0.0/15 - - 101.126.0.0/16 - - 101.128.0.0/22 - - 101.128.8.0/21 - - 101.128.16.0/20 - - 101.128.32.0/19 - - 101.129.0.0/16 - - 101.130.0.0/15 - - 101.132.0.0/15 - - 101.134.0.0/17 - - 101.134.128.0/19 - - 101.134.160.0/20 - - 101.134.176.0/21 - - 101.134.184.0/22 - - 101.134.189.0/24 - - 101.134.190.0/23 - - 101.134.192.0/18 - - 101.135.0.0/16 - - 101.144.0.0/12 - - 101.192.0.0/14 - - 101.196.0.0/16 - - 101.198.128.0/18 - - 101.198.194.0/24 - - 101.198.196.0/23 - - 101.198.200.0/22 - - 101.198.224.0/19 - - 101.199.0.0/19 - - 101.199.48.0/20 - - 101.199.64.0/18 - - 101.199.128.0/17 - - 101.200.0.0/15 - - 101.203.128.0/19 - - 101.203.160.0/21 - - 101.203.172.0/22 - - 101.203.176.0/20 - - 101.204.0.0/14 - - 101.224.0.0/13 - - 101.232.0.0/15 - - 101.234.64.0/21 - - 101.234.76.0/22 - - 101.234.80.0/20 - - 101.234.96.0/19 - - 101.236.0.0/14 - - 101.240.0.0/13 - - 101.248.0.0/15 - - 101.251.0.0/22 - - 101.251.8.0/21 - - 101.251.16.0/20 - - 101.251.32.0/19 - - 101.251.64.0/18 - - 101.251.128.0/17 - - 101.252.0.0/15 - - 101.254.0.0/16 - - 102.176.130.0/24 - - 103.1.8.0/22 - - 103.1.20.0/22 - - 103.1.24.0/22 - - 103.1.88.0/22 - - 103.1.168.0/22 - - 103.2.108.0/22 - - 103.2.156.0/22 - - 103.2.164.0/22 - - 103.2.200.0/21 - - 103.2.208.0/21 - - 103.3.84.0/22 - - 103.3.88.0/21 - - 103.3.96.0/19 - - 103.3.128.0/20 - - 103.3.148.0/22 - - 103.3.152.0/21 - - 103.4.56.0/22 - - 103.4.168.0/22 - - 103.4.184.0/22 - - 103.5.36.0/22 - - 103.5.52.0/23 - - 103.5.56.0/22 - - 103.5.152.0/22 - - 103.5.168.0/22 - - 103.5.192.0/22 - - 103.5.252.0/22 - - 103.6.76.0/22 - - 103.6.108.0/22 - - 103.6.120.0/22 - - 103.6.220.0/22 - - 103.6.228.0/22 - - 103.7.140.0/22 - - 103.7.212.0/22 - - 103.7.216.0/21 - - 103.8.0.0/21 - - 103.8.8.0/22 - - 103.8.32.0/22 - - 103.8.52.0/22 - - 103.8.68.0/22 - - 103.8.108.0/22 - - 103.8.156.0/22 - - 103.8.200.0/21 - - 103.8.220.0/22 - - 103.9.8.0/22 - - 103.9.24.0/22 - - 103.9.108.0/22 - - 103.9.152.0/22 - - 103.9.248.0/21 - - 103.10.0.0/22 - - 103.10.16.0/22 - - 103.10.84.0/22 - - 103.10.111.0/24 - - 103.10.140.0/22 - - 103.11.16.0/22 - - 103.11.168.0/22 - - 103.11.180.0/22 - - 103.12.32.0/22 - - 103.12.136.0/22 - - 103.12.184.0/22 - - 103.12.232.0/22 - - 103.13.12.0/22 - - 103.13.124.0/22 - - 103.13.144.0/22 - - 103.13.196.0/22 - - 103.13.244.0/22 - - 103.14.84.0/22 - - 103.14.132.0/22 - - 103.14.136.0/22 - - 103.14.156.0/22 - - 103.14.240.0/22 - - 103.15.4.0/22 - - 103.15.8.0/22 - - 103.15.16.0/22 - - 103.15.96.0/22 - - 103.15.200.0/22 - - 103.16.52.0/22 - - 103.16.80.0/21 - - 103.16.88.0/22 - - 103.16.108.0/22 - - 103.16.124.0/22 - - 103.17.40.0/22 - - 103.17.64.0/22 - - 103.17.120.0/23 - - 103.17.136.0/22 - - 103.17.160.0/22 - - 103.17.204.0/22 - - 103.17.228.0/22 - - 103.18.192.0/22 - - 103.18.208.0/21 - - 103.18.224.0/22 - - 103.19.12.0/22 - - 103.19.40.0/21 - - 103.19.64.0/21 - - 103.19.72.0/22 - - 103.19.232.0/22 - - 103.20.12.0/22 - - 103.20.32.0/23 - - 103.20.34.0/24 - - 103.20.68.0/22 - - 103.20.112.0/22 - - 103.20.128.0/22 - - 103.20.160.0/22 - - 103.20.248.0/22 - - 103.21.112.0/21 - - 103.21.140.0/22 - - 103.21.176.0/22 - - 103.21.240.0/22 - - 103.22.0.0/18 - - 103.22.64.0/19 - - 103.22.100.0/22 - - 103.22.104.0/21 - - 103.22.112.0/20 - - 103.22.188.0/22 - - 103.22.228.0/22 - - 103.22.252.0/22 - - 103.23.8.0/22 - - 103.23.56.0/22 - - 103.23.160.0/21 - - 103.23.176.0/22 - - 103.23.228.0/22 - - 103.24.24.0/22 - - 103.24.116.0/22 - - 103.24.128.0/22 - - 103.24.144.0/22 - - 103.24.176.0/22 - - 103.24.184.0/22 - - 103.24.228.0/22 - - 103.24.252.0/22 - - 103.25.20.0/22 - - 103.25.24.0/21 - - 103.25.32.0/21 - - 103.25.40.0/22 - - 103.25.48.0/22 - - 103.25.64.0/21 - - 103.25.148.0/22 - - 103.25.156.0/22 - - 103.25.216.0/22 - - 103.26.0.0/22 - - 103.26.64.0/26 - - 103.26.64.64/27 - - 103.26.64.96/29 - - 103.26.64.106/31 - - 103.26.64.108/30 - - 103.26.64.112/28 - - 103.26.64.128/25 - - 103.26.65.0/24 - - 103.26.66.0/23 - - 103.26.76.0/22 - - 103.26.116.0/22 - - 103.26.156.0/22 - - 103.26.160.0/22 - - 103.26.228.0/22 - - 103.26.240.0/22 - - 103.27.4.0/22 - - 103.27.12.0/22 - - 103.27.24.0/22 - - 103.27.56.0/22 - - 103.27.96.0/22 - - 103.27.240.0/22 - - 103.28.4.0/22 - - 103.28.8.0/22 - - 103.28.144.0/22 - - 103.28.184.0/22 - - 103.28.204.0/22 - - 103.28.212.0/22 - - 103.29.16.0/22 - - 103.29.128.0/21 - - 103.29.136.0/22 - - 103.30.20.0/22 - - 103.30.48.0/22 - - 103.30.96.0/22 - - 103.30.148.0/22 - - 103.30.202.0/23 - - 103.30.228.0/22 - - 103.30.236.0/22 - - 103.31.0.0/22 - - 103.31.48.0/21 - - 103.31.60.0/22 - - 103.31.64.0/21 - - 103.31.72.0/24 - - 103.31.148.0/22 - - 103.31.160.0/22 - - 103.31.168.0/22 - - 103.31.200.0/22 - - 103.31.236.0/22 - - 103.32.0.0/15 - - 103.34.0.0/16 - - 103.35.0.0/19 - - 103.35.32.0/20 - - 103.35.48.0/22 - - 103.35.104.0/22 - - 103.35.220.0/22 - - 103.36.28.0/22 - - 103.36.36.0/22 - - 103.36.56.0/21 - - 103.36.64.0/22 - - 103.36.72.0/22 - - 103.36.96.0/22 - - 103.36.132.0/22 - - 103.36.136.0/22 - - 103.36.160.0/19 - - 103.36.192.0/19 - - 103.36.224.0/20 - - 103.36.240.0/21 - - 103.37.12.0/22 - - 103.37.16.0/22 - - 103.37.24.0/22 - - 103.37.44.0/22 - - 103.37.52.0/22 - - 103.37.56.0/22 - - 103.37.72.0/22 - - 103.37.100.0/22 - - 103.37.104.0/22 - - 103.37.136.0/21 - - 103.37.144.0/20 - - 103.37.160.0/21 - - 103.37.172.0/22 - - 103.37.176.0/22 - - 103.37.188.0/22 - - 103.37.208.0/20 - - 103.37.252.0/22 - - 103.38.0.0/22 - - 103.38.32.0/22 - - 103.38.40.0/21 - - 103.38.76.0/22 - - 103.38.84.0/22 - - 103.38.92.0/22 - - 103.38.96.0/22 - - 103.38.116.0/22 - - 103.38.132.0/22 - - 103.38.140.0/22 - - 103.38.220.0/22 - - 103.38.224.0/21 - - 103.38.232.0/22 - - 103.38.252.0/23 - - 103.39.64.0/22 - - 103.39.88.0/22 - - 103.39.100.0/22 - - 103.39.104.0/22 - - 103.39.160.0/19 - - 103.39.200.0/21 - - 103.39.208.0/20 - - 103.39.224.0/21 - - 103.39.232.0/22 - - 103.40.12.0/22 - - 103.40.16.0/20 - - 103.40.32.0/20 - - 103.40.88.0/22 - - 103.40.192.0/22 - - 103.40.212.0/22 - - 103.40.220.0/22 - - 103.40.228.0/22 - - 103.40.232.0/21 - - 103.40.240.0/20 - - 103.41.0.0/22 - - 103.41.52.0/22 - - 103.41.140.0/25 - - 103.41.140.128/28 - - 103.41.140.144/29 - - 103.41.140.154/31 - - 103.41.140.158/31 - - 103.41.140.162/31 - - 103.41.140.166/31 - - 103.41.140.168/29 - - 103.41.140.176/28 - - 103.41.140.192/26 - - 103.41.141.0/24 - - 103.41.142.0/23 - - 103.41.148.0/22 - - 103.41.152.0/22 - - 103.41.160.0/21 - - 103.41.220.0/22 - - 103.41.224.0/21 - - 103.41.232.0/22 - - 103.42.8.0/22 - - 103.42.24.0/22 - - 103.42.32.0/22 - - 103.42.64.0/21 - - 103.42.76.0/22 - - 103.42.232.0/22 - - 103.43.26.0/23 - - 103.43.96.0/21 - - 103.43.104.0/22 - - 103.43.124.0/22 - - 103.43.184.0/22 - - 103.43.192.0/21 - - 103.43.208.0/22 - - 103.43.220.0/22 - - 103.43.224.0/22 - - 103.43.240.0/22 - - 103.44.58.0/23 - - 103.44.80.0/22 - - 103.44.120.0/21 - - 103.44.144.0/22 - - 103.44.152.0/22 - - 103.44.168.0/22 - - 103.44.176.0/20 - - 103.44.192.0/20 - - 103.44.224.0/22 - - 103.44.236.0/22 - - 103.44.240.0/20 - - 103.45.0.0/26 - - 103.45.0.64/29 - - 103.45.0.76/30 - - 103.45.0.80/28 - - 103.45.0.96/27 - - 103.45.0.128/25 - - 103.45.1.0/24 - - 103.45.2.0/23 - - 103.45.4.0/22 - - 103.45.8.0/21 - - 103.45.16.0/20 - - 103.45.32.0/19 - - 103.45.72.0/21 - - 103.45.80.0/20 - - 103.45.96.0/19 - - 103.45.128.0/18 - - 103.45.192.0/19 - - 103.45.224.0/22 - - 103.45.248.0/22 - - 103.46.0.0/22 - - 103.46.12.0/22 - - 103.46.16.0/20 - - 103.46.32.0/19 - - 103.46.64.0/18 - - 103.46.128.0/21 - - 103.46.136.0/22 - - 103.46.152.0/21 - - 103.46.160.0/20 - - 103.46.176.0/21 - - 103.46.244.0/22 - - 103.46.248.0/22 - - 103.47.4.0/22 - - 103.47.20.0/22 - - 103.47.36.0/22 - - 103.47.40.0/22 - - 103.47.48.0/22 - - 103.47.80.0/22 - - 103.47.96.0/22 - - 103.47.116.0/22 - - 103.47.120.0/22 - - 103.47.136.0/21 - - 103.47.212.0/22 - - 103.48.52.0/22 - - 103.48.92.0/22 - - 103.48.148.0/22 - - 103.48.152.0/22 - - 103.48.202.0/23 - - 103.48.216.0/21 - - 103.48.224.0/20 - - 103.48.240.0/21 - - 103.49.12.0/22 - - 103.49.20.0/22 - - 103.49.72.0/21 - - 103.49.96.0/22 - - 103.49.108.0/22 - - 103.49.128.0/22 - - 103.49.176.0/21 - - 103.50.36.0/22 - - 103.50.44.0/22 - - 103.50.48.0/20 - - 103.50.64.0/21 - - 103.50.72.0/22 - - 103.50.92.0/22 - - 103.50.108.0/22 - - 103.50.112.0/20 - - 103.50.132.0/22 - - 103.50.136.0/21 - - 103.50.172.0/22 - - 103.50.176.0/20 - - 103.50.192.0/21 - - 103.50.200.0/22 - - 103.50.220.0/22 - - 103.50.224.0/20 - - 103.50.240.0/21 - - 103.50.248.0/22 - - 103.52.40.0/22 - - 103.52.72.0/23 - - 103.52.74.0/25 - - 103.52.74.128/26 - - 103.52.74.192/27 - - 103.52.74.224/28 - - 103.52.74.240/30 - - 103.52.74.252/30 - - 103.52.75.0/24 - - 103.52.76.0/22 - - 103.52.80.0/21 - - 103.52.96.0/21 - - 103.52.104.0/22 - - 103.52.160.0/21 - - 103.52.172.0/22 - - 103.52.176.0/22 - - 103.52.184.0/22 - - 103.52.196.0/22 - - 103.53.64.0/21 - - 103.53.92.0/22 - - 103.53.124.0/22 - - 103.53.128.0/20 - - 103.53.144.0/22 - - 103.53.160.0/22 - - 103.53.180.0/22 - - 103.53.204.0/22 - - 103.53.208.0/21 - - 103.53.236.0/22 - - 103.53.248.0/22 - - 103.54.8.0/22 - - 103.54.48.0/22 - - 103.54.160.0/21 - - 103.54.212.0/22 - - 103.54.228.0/22 - - 103.54.240.0/22 - - 103.55.80.0/22 - - 103.55.120.0/22 - - 103.55.152.0/22 - - 103.55.172.0/22 - - 103.55.204.0/22 - - 103.55.208.0/22 - - 103.55.228.0/22 - - 103.55.236.0/22 - - 103.55.240.0/22 - - 103.56.20.0/22 - - 103.56.32.0/22 - - 103.56.56.0/21 - - 103.56.72.0/21 - - 103.56.140.0/22 - - 103.56.152.0/22 - - 103.56.184.0/22 - - 103.56.200.0/22 - - 103.57.12.0/22 - - 103.57.52.0/22 - - 103.57.56.0/22 - - 103.57.76.0/22 - - 103.57.136.0/22 - - 103.57.196.0/22 - - 103.58.24.0/22 - - 103.59.76.0/22 - - 103.59.112.0/21 - - 103.59.120.0/24 - - 103.59.123.0/24 - - 103.59.124.0/22 - - 103.59.128.0/22 - - 103.59.148.0/22 - - 103.60.32.0/22 - - 103.60.44.0/22 - - 103.60.164.0/22 - - 103.60.228.0/22 - - 103.60.236.0/22 - - 103.61.60.0/24 - - 103.61.104.0/22 - - 103.61.140.0/22 - - 103.61.152.0/21 - - 103.61.160.0/22 - - 103.61.172.0/22 - - 103.61.176.0/22 - - 103.62.24.0/22 - - 103.62.72.0/21 - - 103.62.80.0/21 - - 103.62.88.0/22 - - 103.62.96.0/19 - - 103.62.128.0/21 - - 103.62.156.0/22 - - 103.62.160.0/19 - - 103.62.192.0/22 - - 103.62.204.0/22 - - 103.62.208.0/20 - - 103.62.224.0/22 - - 103.63.32.0/19 - - 103.63.64.0/20 - - 103.63.80.0/21 - - 103.63.88.0/22 - - 103.63.140.0/22 - - 103.63.144.0/22 - - 103.63.152.0/22 - - 103.63.160.0/20 - - 103.63.176.0/21 - - 103.63.184.0/22 - - 103.63.192.0/20 - - 103.63.208.0/22 - - 103.63.240.0/20 - - 103.64.0.0/21 - - 103.64.24.0/21 - - 103.64.32.0/19 - - 103.64.64.0/18 - - 103.64.140.0/22 - - 103.64.144.0/22 - - 103.64.152.0/21 - - 103.64.160.0/19 - - 103.64.192.0/18 - - 103.65.0.0/21 - - 103.65.12.0/22 - - 103.65.16.0/22 - - 103.65.48.0/20 - - 103.65.64.0/19 - - 103.65.100.0/22 - - 103.65.104.0/21 - - 103.65.112.0/20 - - 103.65.128.0/21 - - 103.65.136.0/22 - - 103.65.144.0/20 - - 103.65.160.0/20 - - 103.66.32.0/22 - - 103.66.40.0/22 - - 103.66.108.0/22 - - 103.66.200.0/22 - - 103.66.240.0/20 - - 103.67.0.0/21 - - 103.67.8.0/22 - - 103.67.40.0/21 - - 103.67.48.0/20 - - 103.67.64.0/18 - - 103.67.128.0/20 - - 103.67.144.0/21 - - 103.67.172.0/24 - - 103.67.175.0/24 - - 103.67.192.0/22 - - 103.67.212.0/22 - - 103.68.88.0/22 - - 103.68.100.0/22 - - 103.68.128.0/22 - - 103.69.16.0/22 - - 103.69.212.0/23 - - 103.70.8.0/22 - - 103.70.148.0/22 - - 103.70.236.0/22 - - 103.70.252.0/22 - - 103.71.0.0/22 - - 103.71.68.0/22 - - 103.71.72.0/22 - - 103.71.80.0/21 - - 103.71.88.0/22 - - 103.71.120.0/21 - - 103.71.128.0/22 - - 103.71.196.0/22 - - 103.71.200.0/22 - - 103.71.232.0/22 - - 103.72.12.0/22 - - 103.72.16.0/20 - - 103.72.32.0/20 - - 103.72.48.0/21 - - 103.72.112.0/21 - - 103.72.124.0/22 - - 103.72.128.0/21 - - 103.72.149.0/24 - - 103.72.150.0/23 - - 103.72.172.0/22 - - 103.72.180.0/22 - - 103.72.224.0/19 - - 103.73.0.0/19 - - 103.73.48.0/22 - - 103.73.116.0/22 - - 103.73.120.0/22 - - 103.73.128.0/20 - - 103.73.168.0/22 - - 103.73.176.0/22 - - 103.73.204.0/22 - - 103.73.208.0/22 - - 103.73.240.0/23 - - 103.73.244.0/22 - - 103.73.248.0/22 - - 103.74.24.0/21 - - 103.74.32.0/20 - - 103.74.48.0/22 - - 103.74.56.0/21 - - 103.74.80.0/22 - - 103.74.124.0/22 - - 103.74.148.0/22 - - 103.74.152.0/21 - - 103.74.204.0/22 - - 103.74.232.0/22 - - 103.75.87.0/24 - - 103.75.88.0/21 - - 103.75.104.0/21 - - 103.75.112.0/22 - - 103.75.120.0/22 - - 103.75.128.0/22 - - 103.75.144.0/22 - - 103.75.152.0/22 - - 103.76.60.0/22 - - 103.76.64.0/21 - - 103.76.72.0/22 - - 103.76.92.0/22 - - 103.76.216.0/21 - - 103.76.224.0/22 - - 103.77.28.0/22 - - 103.77.52.0/22 - - 103.77.56.0/22 - - 103.77.88.0/22 - - 103.77.132.0/22 - - 103.77.148.0/22 - - 103.77.220.0/22 - - 103.78.56.0/21 - - 103.78.64.0/22 - - 103.78.124.0/22 - - 103.78.172.0/22 - - 103.78.176.0/22 - - 103.78.196.0/22 - - 103.78.228.0/22 - - 103.79.24.0/21 - - 103.79.36.0/22 - - 103.79.40.0/21 - - 103.79.56.0/21 - - 103.79.64.0/21 - - 103.79.80.0/21 - - 103.79.136.0/22 - - 103.79.188.0/22 - - 103.79.192.0/20 - - 103.79.208.0/21 - - 103.79.243.0/24 - - 103.80.44.0/22 - - 103.80.72.0/22 - - 103.80.176.0/21 - - 103.80.184.0/22 - - 103.80.192.0/22 - - 103.80.200.0/22 - - 103.80.232.0/22 - - 103.81.4.0/22 - - 103.81.44.0/22 - - 103.81.48.0/22 - - 103.81.96.0/22 - - 103.81.120.0/22 - - 103.81.148.0/22 - - 103.81.164.0/22 - - 103.81.200.0/22 - - 103.81.232.0/22 - - 103.82.60.0/22 - - 103.82.68.0/22 - - 103.82.84.0/22 - - 103.82.104.0/22 - - 103.82.224.0/22 - - 103.82.236.0/22 - - 103.83.44.0/22 - - 103.83.52.0/22 - - 103.83.60.0/22 - - 103.83.72.0/22 - - 103.83.112.0/22 - - 103.83.132.0/22 - - 103.83.180.0/22 - - 103.84.0.0/22 - - 103.84.12.0/22 - - 103.84.20.0/22 - - 103.84.24.0/21 - - 103.84.48.0/22 - - 103.84.56.0/22 - - 103.84.64.0/22 - - 103.84.72.0/22 - - 103.85.44.0/22 - - 103.85.48.0/21 - - 103.85.56.0/22 - - 103.85.84.0/22 - - 103.85.136.0/22 - - 103.85.144.0/22 - - 103.85.164.0/22 - - 103.85.168.0/21 - - 103.85.176.0/22 - - 103.86.28.0/22 - - 103.86.32.0/22 - - 103.86.60.0/22 - - 103.86.129.0/24 - - 103.86.204.0/22 - - 103.86.208.0/20 - - 103.86.224.0/19 - - 103.87.0.0/21 - - 103.87.20.0/22 - - 103.87.32.0/22 - - 103.87.96.0/22 - - 103.87.132.0/22 - - 103.87.180.0/22 - - 103.87.224.0/22 - - 103.88.4.0/22 - - 103.88.8.0/21 - - 103.88.16.0/21 - - 103.88.32.0/21 - - 103.88.60.0/22 - - 103.88.64.0/22 - - 103.88.72.0/22 - - 103.88.96.0/21 - - 103.88.152.0/23 - - 103.88.164.0/22 - - 103.88.212.0/22 - - 103.89.28.0/22 - - 103.89.96.0/20 - - 103.89.112.0/22 - - 103.89.148.0/22 - - 103.89.172.0/22 - - 103.89.184.0/21 - - 103.89.192.0/19 - - 103.89.224.0/21 - - 103.90.52.0/22 - - 103.90.92.0/22 - - 103.90.100.0/22 - - 103.90.104.0/21 - - 103.90.112.0/20 - - 103.90.128.0/21 - - 103.90.152.0/22 - - 103.90.168.0/22 - - 103.90.173.0/24 - - 103.90.176.0/22 - - 103.90.188.0/22 - - 103.90.192.0/22 - - 103.91.36.0/22 - - 103.91.40.0/22 - - 103.91.108.0/22 - - 103.91.152.0/22 - - 103.91.176.0/22 - - 103.91.200.0/22 - - 103.91.208.0/21 - - 103.91.236.0/22 - - 103.92.48.0/20 - - 103.92.64.0/20 - - 103.92.80.0/22 - - 103.92.88.0/22 - - 103.92.108.0/22 - - 103.92.124.0/22 - - 103.92.132.0/22 - - 103.92.156.0/22 - - 103.92.164.0/22 - - 103.92.168.0/21 - - 103.92.176.0/20 - - 103.92.192.0/22 - - 103.92.236.0/22 - - 103.92.240.0/20 - - 103.93.0.0/21 - - 103.93.28.0/22 - - 103.93.84.0/22 - - 103.93.152.0/22 - - 103.93.180.0/22 - - 103.93.204.0/22 - - 103.94.12.0/22 - - 103.94.20.0/22 - - 103.94.28.0/22 - - 103.94.32.0/20 - - 103.94.72.0/22 - - 103.94.88.0/22 - - 103.94.116.0/22 - - 103.94.160.0/22 - - 103.94.182.0/24 - - 103.94.200.0/22 - - 103.95.31.0/24 - - 103.95.52.0/22 - - 103.95.70.0/23 - - 103.95.88.0/21 - - 103.95.136.0/21 - - 103.95.144.0/22 - - 103.95.152.0/22 - - 103.95.216.0/21 - - 103.95.224.0/22 - - 103.95.236.0/22 - - 103.95.240.0/20 - - 103.96.8.0/22 - - 103.96.124.0/22 - - 103.96.136.0/22 - - 103.96.152.0/21 - - 103.96.160.0/19 - - 103.96.192.0/20 - - 103.96.208.0/21 - - 103.96.216.0/22 - - 103.97.40.0/22 - - 103.97.60.0/23 - - 103.97.112.0/21 - - 103.97.148.0/22 - - 103.97.188.0/22 - - 103.97.192.0/22 - - 103.98.40.0/21 - - 103.98.48.0/22 - - 103.98.56.0/22 - - 103.98.80.0/22 - - 103.98.88.0/22 - - 103.98.100.0/22 - - 103.98.124.0/24 - - 103.98.126.0/23 - - 103.98.136.0/21 - - 103.98.144.0/22 - - 103.98.164.0/22 - - 103.98.168.0/22 - - 103.98.180.0/22 - - 103.98.196.0/22 - - 103.98.216.0/21 - - 103.98.224.0/21 - - 103.98.232.0/22 - - 103.98.240.0/21 - - 103.98.248.0/23 - - 103.98.250.0/24 - - 103.98.252.0/22 - - 103.99.56.0/22 - - 103.99.104.0/22 - - 103.99.116.0/22 - - 103.99.120.0/22 - - 103.99.132.0/22 - - 103.99.136.0/21 - - 103.99.144.0/22 - - 103.99.152.0/22 - - 103.99.220.0/22 - - 103.99.232.0/21 - - 103.100.0.0/22 - - 103.100.32.0/22 - - 103.100.40.0/22 - - 103.100.48.0/22 - - 103.100.56.0/22 - - 103.100.64.0/22 - - 103.100.88.0/22 - - 103.100.116.0/22 - - 103.100.144.0/22 - - 103.100.240.0/22 - - 103.100.248.0/21 - - 103.101.4.0/22 - - 103.101.8.0/21 - - 103.101.60.0/22 - - 103.101.121.0/24 - - 103.101.122.0/23 - - 103.101.124.0/24 - - 103.101.126.0/23 - - 103.101.144.0/21 - - 103.101.180.0/22 - - 103.101.184.0/22 - - 103.102.76.0/22 - - 103.102.80.0/22 - - 103.102.168.0/21 - - 103.102.180.0/22 - - 103.102.184.0/21 - - 103.102.192.0/22 - - 103.102.196.0/24 - - 103.102.200.0/22 - - 103.102.208.0/21 - - 103.103.12.0/22 - - 103.103.16.0/22 - - 103.103.36.0/22 - - 103.103.72.0/22 - - 103.103.188.0/22 - - 103.103.204.0/22 - - 103.104.36.0/22 - - 103.104.40.0/22 - - 103.104.64.0/22 - - 103.104.152.0/22 - - 103.104.252.0/22 - - 103.105.0.0/21 - - 103.105.12.0/22 - - 103.105.16.0/22 - - 103.105.60.0/22 - - 103.105.116.0/22 - - 103.105.180.0/22 - - 103.105.184.0/22 - - 103.105.200.0/21 - - 103.105.220.0/22 - - 103.106.36.0/22 - - 103.106.40.0/21 - - 103.106.60.0/22 - - 103.106.68.0/22 - - 103.106.96.0/22 - - 103.106.120.0/22 - - 103.106.128.0/21 - - 103.106.190.0/23 - - 103.106.196.0/22 - - 103.106.212.0/22 - - 103.106.252.0/22 - - 103.107.0.0/22 - - 103.107.28.0/22 - - 103.107.32.0/22 - - 103.107.44.0/22 - - 103.107.72.0/22 - - 103.107.164.0/22 - - 103.107.168.0/22 - - 103.107.188.0/22 - - 103.107.192.0/22 - - 103.107.208.0/20 - - 103.108.52.0/22 - - 103.108.160.0/21 - - 103.108.194.0/24 - - 103.108.196.0/22 - - 103.108.208.0/21 - - 103.108.224.0/22 - - 103.108.244.0/22 - - 103.108.251.0/24 - - 103.109.20.0/22 - - 103.109.48.0/22 - - 103.109.88.0/22 - - 103.109.106.0/23 - - 103.109.248.0/22 - - 103.110.32.0/22 - - 103.110.92.0/22 - - 103.110.119.0/24 - - 103.110.127.0/24 - - 103.110.128.0/23 - - 103.110.131.0/24 - - 103.110.132.0/22 - - 103.110.136.0/22 - - 103.110.156.0/22 - - 103.110.188.0/22 - - 103.110.204.0/22 - - 103.111.64.0/22 - - 103.111.172.0/22 - - 103.111.252.0/22 - - 103.112.72.0/22 - - 103.112.88.0/21 - - 103.112.108.0/22 - - 103.112.112.0/22 - - 103.112.140.0/22 - - 103.113.4.0/22 - - 103.113.144.0/22 - - 103.113.220.0/22 - - 103.113.232.0/21 - - 103.114.4.0/22 - - 103.114.68.0/22 - - 103.114.100.0/22 - - 103.114.148.0/22 - - 103.114.156.0/22 - - 103.114.212.0/22 - - 103.114.236.0/22 - - 103.114.240.0/22 - - 103.115.52.0/22 - - 103.115.68.0/22 - - 103.115.92.0/22 - - 103.115.120.0/22 - - 103.115.148.0/22 - - 103.115.248.0/22 - - 103.116.76.0/22 - - 103.116.92.0/22 - - 103.116.120.0/22 - - 103.116.128.0/22 - - 103.116.150.0/23 - - 103.116.184.0/22 - - 103.116.220.0/22 - - 103.116.224.0/21 - - 103.117.16.0/22 - - 103.117.88.0/22 - - 103.117.188.0/22 - - 103.117.220.0/22 - - 103.118.19.0/24 - - 103.118.52.0/22 - - 103.118.56.0/21 - - 103.118.64.0/21 - - 103.118.72.0/22 - - 103.118.88.0/22 - - 103.118.173.0/24 - - 103.119.115.0/24 - - 103.119.156.0/22 - - 103.119.180.0/22 - - 103.119.200.0/22 - - 103.119.226.0/23 - - 103.120.52.0/22 - - 103.120.72.0/22 - - 103.120.76.0/24 - - 103.120.88.0/22 - - 103.120.96.0/22 - - 103.120.140.0/22 - - 103.120.196.0/22 - - 103.120.224.0/22 - - 103.121.52.0/22 - - 103.121.160.0/21 - - 103.121.250.0/24 - - 103.121.252.0/22 - - 103.122.48.0/22 - - 103.122.178.0/23 - - 103.122.192.0/22 - - 103.122.240.0/23 - - 103.122.242.0/24 - - 103.123.4.0/22 - - 103.123.56.0/22 - - 103.123.88.0/21 - - 103.123.116.0/22 - - 103.123.176.0/22 - - 103.123.200.0/21 - - 103.123.208.0/21 - - 103.124.24.0/22 - - 103.124.48.0/22 - - 103.124.64.0/22 - - 103.124.212.0/22 - - 103.124.216.0/22 - - 103.125.20.0/22 - - 103.125.44.0/22 - - 103.125.132.0/22 - - 103.125.164.0/22 - - 103.125.196.0/22 - - 103.125.236.0/22 - - 103.126.0.0/22 - - 103.126.16.0/23 - - 103.126.44.0/22 - - 103.126.124.0/22 - - 103.126.128.0/22 - - 103.129.53.0/24 - - 103.129.54.0/23 - - 103.129.148.0/22 - - 103.130.132.0/22 - - 103.130.160.0/22 - - 103.130.228.0/22 - - 103.131.20.0/22 - - 103.131.36.0/22 - - 103.131.152.0/22 - - 103.131.168.0/22 - - 103.131.224.0/21 - - 103.131.240.0/22 - - 103.132.60.0/22 - - 103.132.64.0/20 - - 103.132.80.0/22 - - 103.132.104.0/21 - - 103.132.112.0/21 - - 103.132.120.0/22 - - 103.132.188.0/22 - - 103.132.208.0/21 - - 103.133.12.0/22 - - 103.133.40.0/22 - - 103.133.128.0/22 - - 103.133.232.0/22 - - 103.134.196.0/22 - - 103.135.80.0/22 - - 103.135.124.0/22 - - 103.135.148.0/22 - - 103.135.156.0/22 - - 103.135.160.0/21 - - 103.135.176.0/22 - - 103.135.184.0/22 - - 103.135.192.0/21 - - 103.135.236.0/22 - - 103.136.128.0/22 - - 103.136.232.0/22 - - 103.137.58.0/23 - - 103.137.60.0/24 - - 103.137.136.0/23 - - 103.137.149.0/24 - - 103.137.180.0/22 - - 103.137.236.0/22 - - 103.138.2.0/23 - - 103.138.134.0/23 - - 103.138.208.0/23 - - 103.138.220.0/23 - - 103.138.248.0/23 - - 103.139.22.0/23 - - 103.139.134.0/23 - - 103.139.136.0/23 - - 103.139.172.0/23 - - 103.139.204.0/23 - - 103.139.212.0/23 - - 103.140.14.0/23 - - 103.140.46.0/23 - - 103.140.70.0/23 - - 103.140.140.0/23 - - 103.140.144.0/23 - - 103.140.192.0/23 - - 103.141.10.0/23 - - 103.141.58.0/23 - - 103.141.128.0/23 - - 103.141.186.0/23 - - 103.141.242.0/23 - - 103.142.0.0/23 - - 103.142.28.0/23 - - 103.142.58.0/23 - - 103.142.82.0/23 - - 103.142.96.0/23 - - 103.142.122.0/23 - - 103.142.128.0/23 - - 103.142.154.0/23 - - 103.142.156.0/23 - - 103.142.180.0/23 - - 103.142.186.0/23 - - 103.142.220.0/23 - - 103.142.230.0/24 - - 103.142.234.0/23 - - 103.142.238.0/23 - - 103.143.16.0/22 - - 103.143.31.0/24 - - 103.143.74.0/23 - - 103.143.124.0/23 - - 103.143.132.0/22 - - 103.143.174.0/23 - - 103.143.228.0/23 - - 103.144.40.0/23 - - 103.144.66.0/23 - - 103.144.70.0/23 - - 103.144.72.0/23 - - 103.144.136.0/23 - - 103.144.158.0/23 - - 103.145.40.0/22 - - 103.145.73.0/24 - - 103.145.80.0/23 - - 103.145.86.0/23 - - 103.145.90.0/23 - - 103.145.92.0/22 - - 103.145.98.0/23 - - 103.145.107.0/24 - - 103.145.188.0/23 - - 103.146.6.0/23 - - 103.146.72.0/23 - - 103.146.88.0/22 - - 103.146.126.0/23 - - 103.146.138.0/23 - - 103.146.230.0/23 - - 103.146.236.0/23 - - 103.146.252.0/23 - - 103.147.12.0/23 - - 103.147.124.0/23 - - 103.192.0.0/19 - - 103.192.48.0/21 - - 103.192.56.0/22 - - 103.192.84.0/22 - - 103.192.88.0/21 - - 103.192.96.0/20 - - 103.192.112.0/22 - - 103.192.128.0/20 - - 103.192.144.0/22 - - 103.192.164.0/22 - - 103.192.188.0/22 - - 103.192.208.0/21 - - 103.192.216.0/22 - - 103.192.252.0/22 - - 103.193.40.0/21 - - 103.193.120.0/22 - - 103.193.140.0/22 - - 103.193.160.0/22 - - 103.193.188.0/22 - - 103.193.192.0/22 - - 103.193.212.0/22 - - 103.193.216.0/21 - - 103.193.224.0/20 - - 103.194.16.0/22 - - 103.194.230.0/23 - - 103.195.112.0/22 - - 103.195.152.0/22 - - 103.195.160.0/22 - - 103.196.64.0/22 - - 103.196.72.0/22 - - 103.196.88.0/21 - - 103.196.96.0/22 - - 103.196.168.0/22 - - 103.196.185.0/24 - - 103.196.186.0/23 - - 103.197.181.0/24 - - 103.197.183.0/24 - - 103.197.228.0/22 - - 103.197.253.0/24 - - 103.197.254.0/23 - - 103.198.20.0/22 - - 103.198.60.0/22 - - 103.198.64.0/22 - - 103.198.72.0/22 - - 103.198.124.0/22 - - 103.198.156.0/22 - - 103.198.180.0/22 - - 103.198.196.0/22 - - 103.198.200.0/22 - - 103.198.216.0/21 - - 103.198.224.0/20 - - 103.198.240.0/21 - - 103.199.164.0/22 - - 103.199.196.0/22 - - 103.199.228.0/22 - - 103.199.252.0/22 - - 103.200.52.0/22 - - 103.200.64.0/21 - - 103.200.136.0/21 - - 103.200.144.0/20 - - 103.200.160.0/19 - - 103.200.192.0/22 - - 103.200.220.0/22 - - 103.200.224.0/19 - - 103.201.0.0/20 - - 103.201.16.0/21 - - 103.201.28.0/22 - - 103.201.32.0/19 - - 103.201.64.0/22 - - 103.201.76.0/22 - - 103.201.80.0/20 - - 103.201.96.0/20 - - 103.201.112.0/21 - - 103.201.120.0/22 - - 103.201.152.0/21 - - 103.201.160.0/19 - - 103.201.192.0/18 - - 103.202.0.0/19 - - 103.202.32.0/20 - - 103.202.56.0/21 - - 103.202.64.0/18 - - 103.202.128.0/20 - - 103.202.144.0/22 - - 103.202.152.0/21 - - 103.202.160.0/19 - - 103.202.192.0/20 - - 103.202.212.0/22 - - 103.202.228.0/22 - - 103.202.236.0/22 - - 103.202.240.0/20 - - 103.203.0.0/19 - - 103.203.32.0/22 - - 103.203.96.0/19 - - 103.203.128.0/22 - - 103.203.140.0/22 - - 103.203.164.0/22 - - 103.203.168.0/22 - - 103.203.192.0/22 - - 103.203.200.0/22 - - 103.203.212.0/22 - - 103.203.216.0/22 - - 103.204.24.0/22 - - 103.204.88.0/22 - - 103.204.112.0/22 - - 103.204.136.0/21 - - 103.204.144.0/21 - - 103.204.152.0/22 - - 103.204.196.0/22 - - 103.204.232.0/21 - - 103.205.4.0/22 - - 103.205.40.0/21 - - 103.205.52.0/22 - - 103.205.108.0/22 - - 103.205.116.0/22 - - 103.205.120.0/24 - - 103.205.136.0/22 - - 103.205.162.0/24 - - 103.205.188.0/22 - - 103.205.192.0/21 - - 103.205.200.0/22 - - 103.205.236.0/22 - - 103.205.248.0/21 - - 103.206.0.0/22 - - 103.206.44.0/22 - - 103.206.148.0/22 - - 103.207.104.0/22 - - 103.207.184.0/21 - - 103.207.192.0/20 - - 103.207.208.0/21 - - 103.207.220.0/22 - - 103.207.228.0/22 - - 103.207.232.0/22 - - 103.208.12.0/22 - - 103.208.16.0/22 - - 103.208.28.0/22 - - 103.208.48.0/22 - - 103.208.148.0/22 - - 103.209.112.0/22 - - 103.209.136.0/22 - - 103.209.200.0/22 - - 103.209.208.0/22 - - 103.209.216.0/22 - - 103.210.0.0/22 - - 103.210.96.0/22 - - 103.210.156.0/22 - - 103.210.160.0/19 - - 103.210.217.0/24 - - 103.210.218.0/23 - - 103.211.44.0/22 - - 103.211.96.0/23 - - 103.211.98.0/24 - - 103.211.100.0/22 - - 103.211.156.0/22 - - 103.211.165.0/24 - - 103.211.168.0/22 - - 103.211.220.0/22 - - 103.211.248.0/22 - - 103.212.0.0/20 - - 103.212.44.0/22 - - 103.212.48.0/22 - - 103.212.84.0/22 - - 103.212.100.0/22 - - 103.212.148.0/22 - - 103.212.164.0/22 - - 103.212.196.0/22 - - 103.212.200.0/22 - - 103.212.252.0/22 - - 103.213.40.0/21 - - 103.213.48.0/20 - - 103.213.64.0/19 - - 103.213.96.0/22 - - 103.213.132.0/22 - - 103.213.136.0/21 - - 103.213.144.0/20 - - 103.213.160.0/19 - - 103.213.252.0/22 - - 103.214.48.0/22 - - 103.214.84.0/22 - - 103.214.212.0/22 - - 103.214.240.0/21 - - 103.215.28.0/22 - - 103.215.32.0/21 - - 103.215.44.0/22 - - 103.215.100.0/23 - - 103.215.108.0/22 - - 103.215.116.0/22 - - 103.215.120.0/22 - - 103.215.140.0/22 - - 103.216.4.0/22 - - 103.216.8.0/21 - - 103.216.16.0/20 - - 103.216.32.0/20 - - 103.216.64.0/22 - - 103.216.108.0/22 - - 103.216.136.0/22 - - 103.216.152.0/22 - - 103.216.224.0/21 - - 103.216.240.0/20 - - 103.217.0.0/18 - - 103.217.168.0/22 - - 103.217.180.0/22 - - 103.217.184.0/21 - - 103.217.192.0/20 - - 103.218.8.0/21 - - 103.218.16.0/21 - - 103.218.29.0/24 - - 103.218.30.0/23 - - 103.218.32.0/19 - - 103.218.64.0/19 - - 103.218.192.0/20 - - 103.218.208.0/21 - - 103.218.216.0/22 - - 103.219.24.0/21 - - 103.219.32.0/21 - - 103.219.64.0/22 - - 103.219.84.0/22 - - 103.219.88.0/21 - - 103.219.96.0/21 - - 103.219.176.0/22 - - 103.219.184.0/22 - - 103.220.48.0/20 - - 103.220.64.0/22 - - 103.220.92.0/22 - - 103.220.96.0/22 - - 103.220.104.0/21 - - 103.220.116.0/22 - - 103.220.120.0/21 - - 103.220.128.0/20 - - 103.220.144.0/21 - - 103.220.152.0/22 - - 103.220.160.0/19 - - 103.220.192.0/21 - - 103.220.200.0/22 - - 103.220.240.0/20 - - 103.221.0.0/19 - - 103.221.32.0/21 - - 103.221.88.0/21 - - 103.221.96.0/19 - - 103.221.128.0/18 - - 103.221.192.0/20 - - 103.222.0.0/20 - - 103.222.16.0/22 - - 103.222.24.0/21 - - 103.222.33.0/24 - - 103.222.34.0/23 - - 103.222.36.0/22 - - 103.222.40.0/21 - - 103.222.48.0/20 - - 103.222.64.0/18 - - 103.222.128.0/18 - - 103.222.192.0/19 - - 103.222.224.0/21 - - 103.222.232.0/22 - - 103.222.240.0/21 - - 103.223.16.0/20 - - 103.223.32.0/19 - - 103.223.64.0/19 - - 103.223.96.0/20 - - 103.223.112.0/21 - - 103.223.124.0/22 - - 103.223.128.0/21 - - 103.223.140.0/22 - - 103.223.144.0/20 - - 103.223.160.0/20 - - 103.223.176.0/21 - - 103.223.188.0/22 - - 103.223.192.0/18 - - 103.224.0.0/22 - - 103.224.40.0/21 - - 103.224.60.0/22 - - 103.224.220.0/22 - - 103.224.224.0/21 - - 103.224.232.0/22 - - 103.226.40.0/22 - - 103.226.56.0/21 - - 103.226.80.0/22 - - 103.226.116.0/22 - - 103.226.132.0/22 - - 103.226.156.0/22 - - 103.226.180.0/22 - - 103.226.196.0/22 - - 103.227.48.0/22 - - 103.227.72.0/21 - - 103.227.80.0/22 - - 103.227.100.0/22 - - 103.227.120.0/22 - - 103.227.132.0/22 - - 103.227.136.0/22 - - 103.227.196.0/22 - - 103.227.204.0/23 - - 103.227.206.0/24 - - 103.227.212.0/22 - - 103.227.228.0/22 - - 103.228.12.0/22 - - 103.228.88.0/22 - - 103.228.136.0/22 - - 103.228.160.0/22 - - 103.228.176.0/22 - - 103.228.204.0/22 - - 103.228.208.0/22 - - 103.228.228.0/22 - - 103.228.232.0/22 - - 103.229.20.0/22 - - 103.229.136.0/22 - - 103.229.148.0/22 - - 103.229.172.0/22 - - 103.229.212.0/22 - - 103.229.216.0/21 - - 103.229.228.0/22 - - 103.229.236.0/22 - - 103.229.240.0/22 - - 103.230.0.0/22 - - 103.230.28.0/22 - - 103.230.40.0/21 - - 103.230.96.0/22 - - 103.230.196.0/22 - - 103.230.200.0/21 - - 103.230.212.0/22 - - 103.230.236.0/22 - - 103.231.16.0/21 - - 103.231.64.0/21 - - 103.231.144.0/22 - - 103.231.180.0/22 - - 103.231.244.0/22 - - 103.232.4.0/22 - - 103.232.17.168/29 - - 103.232.144.0/22 - - 103.233.4.0/22 - - 103.233.44.0/22 - - 103.233.52.0/22 - - 103.233.104.0/22 - - 103.233.128.0/22 - - 103.233.136.0/22 - - 103.233.228.0/22 - - 103.234.0.0/22 - - 103.234.20.0/22 - - 103.234.56.0/22 - - 103.234.124.0/22 - - 103.234.128.0/22 - - 103.234.172.0/22 - - 103.234.180.0/22 - - 103.235.56.0/21 - - 103.235.80.0/22 - - 103.235.85.0/24 - - 103.235.86.0/23 - - 103.235.128.0/20 - - 103.235.144.0/21 - - 103.235.184.0/22 - - 103.235.192.0/22 - - 103.235.200.0/22 - - 103.235.220.0/22 - - 103.235.224.0/19 - - 103.236.0.0/18 - - 103.236.64.0/19 - - 103.236.96.0/22 - - 103.236.120.0/22 - - 103.236.184.0/22 - - 103.236.240.0/20 - - 103.237.0.0/20 - - 103.237.24.0/21 - - 103.237.68.0/22 - - 103.237.88.0/22 - - 103.237.152.0/22 - - 103.237.176.0/20 - - 103.237.192.0/18 - - 103.238.0.0/21 - - 103.238.18.0/23 - - 103.238.20.0/22 - - 103.238.24.0/21 - - 103.238.32.0/20 - - 103.238.48.0/21 - - 103.238.56.0/22 - - 103.238.88.0/21 - - 103.238.96.0/22 - - 103.238.132.0/22 - - 103.238.140.0/22 - - 103.238.144.0/22 - - 103.238.160.0/22 - - 103.238.165.0/24 - - 103.238.166.0/23 - - 103.238.168.0/21 - - 103.238.176.0/20 - - 103.238.196.0/22 - - 103.238.204.0/22 - - 103.238.252.0/22 - - 103.239.0.0/22 - - 103.239.44.0/22 - - 103.239.68.0/22 - - 103.239.152.0/21 - - 103.239.180.0/22 - - 103.239.184.0/22 - - 103.239.192.0/21 - - 103.239.204.0/22 - - 103.239.208.0/22 - - 103.239.224.0/22 - - 103.239.244.0/22 - - 103.240.16.0/22 - - 103.240.36.0/22 - - 103.240.72.0/22 - - 103.240.84.0/22 - - 103.240.124.0/22 - - 103.240.172.0/22 - - 103.240.188.0/22 - - 103.240.244.0/22 - - 103.241.12.0/22 - - 103.241.92.0/22 - - 103.241.96.0/22 - - 103.241.160.0/22 - - 103.241.184.0/21 - - 103.241.220.0/22 - - 103.242.64.0/23 - - 103.242.128.0/23 - - 103.242.130.0/24 - - 103.242.160.0/22 - - 103.242.168.0/21 - - 103.242.176.0/22 - - 103.242.200.0/22 - - 103.242.212.0/22 - - 103.242.220.0/22 - - 103.242.240.0/22 - - 103.243.136.0/22 - - 103.243.252.0/22 - - 103.244.16.0/22 - - 103.244.58.0/23 - - 103.244.60.0/22 - - 103.244.64.0/20 - - 103.244.80.0/21 - - 103.244.116.0/22 - - 103.244.164.0/22 - - 103.244.232.0/22 - - 103.244.252.0/22 - - 103.245.23.0/24 - - 103.245.52.0/22 - - 103.245.60.0/22 - - 103.245.80.0/22 - - 103.245.124.0/22 - - 103.245.128.0/22 - - 103.246.8.0/21 - - 103.246.120.0/21 - - 103.246.132.0/22 - - 103.246.152.0/22 - - 103.247.168.0/21 - - 103.247.176.0/22 - - 103.247.200.0/22 - - 103.247.212.0/22 - - 103.248.64.0/23 - - 103.248.100.0/22 - - 103.248.124.0/22 - - 103.248.152.0/22 - - 103.248.168.0/22 - - 103.248.192.0/22 - - 103.248.212.0/22 - - 103.248.224.0/21 - - 103.249.8.0/21 - - 103.249.52.0/22 - - 103.249.128.0/22 - - 103.249.136.0/22 - - 103.249.144.0/22 - - 103.249.164.0/22 - - 103.249.168.0/21 - - 103.249.176.0/22 - - 103.249.188.0/22 - - 103.249.192.0/22 - - 103.249.244.0/22 - - 103.249.252.0/22 - - 103.250.32.0/22 - - 103.250.104.0/22 - - 103.250.124.0/22 - - 103.250.180.0/22 - - 103.250.192.0/22 - - 103.250.216.0/22 - - 103.250.224.0/22 - - 103.250.236.0/22 - - 103.250.248.0/21 - - 103.251.32.0/22 - - 103.251.84.0/22 - - 103.251.96.0/22 - - 103.251.124.0/22 - - 103.251.160.0/22 - - 103.251.192.0/22 - - 103.251.204.0/22 - - 103.251.240.0/22 - - 103.252.28.0/22 - - 103.252.36.0/22 - - 103.252.64.0/22 - - 103.252.96.0/22 - - 103.252.104.0/22 - - 103.252.172.0/22 - - 103.252.204.0/22 - - 103.252.208.0/22 - - 103.252.232.0/22 - - 103.252.248.0/22 - - 103.253.4.0/22 - - 103.253.60.0/22 - - 103.253.204.0/22 - - 103.253.220.0/22 - - 103.253.224.0/22 - - 103.253.232.0/22 - - 103.254.8.0/22 - - 103.254.20.0/22 - - 103.254.64.0/21 - - 103.254.76.0/22 - - 103.254.112.0/22 - - 103.254.176.0/22 - - 103.254.188.0/22 - - 103.255.68.0/22 - - 103.255.88.0/21 - - 103.255.136.0/21 - - 103.255.184.0/22 - - 103.255.200.0/22 - - 103.255.208.0/22 - - 103.255.228.0/22 - - 104.222.196.0/24 - - 106.0.0.0/24 - - 106.0.2.0/23 - - 106.0.4.0/22 - - 106.0.8.0/21 - - 106.0.16.0/20 - - 106.0.44.0/22 - - 106.0.64.0/18 - - 106.2.0.0/23 - - 106.2.3.0/24 - - 106.2.4.0/22 - - 106.2.8.0/21 - - 106.2.16.0/20 - - 106.2.32.0/19 - - 106.2.64.0/18 - - 106.2.128.0/20 - - 106.2.144.0/21 - - 106.2.152.0/22 - - 106.2.156.0/23 - - 106.2.160.0/19 - - 106.2.192.0/18 - - 106.3.16.0/20 - - 106.3.32.0/19 - - 106.3.64.0/20 - - 106.3.80.0/22 - - 106.3.88.0/21 - - 106.3.96.0/19 - - 106.3.128.0/19 - - 106.3.164.0/22 - - 106.3.168.0/21 - - 106.3.176.0/20 - - 106.3.192.0/18 - - 106.4.0.0/14 - - 106.8.0.0/15 - - 106.11.0.0/18 - - 106.11.64.0/21 - - 106.11.72.0/25 - - 106.11.72.128/29 - - 106.11.72.136/32 - - 106.11.72.141/32 - - 106.11.72.142/31 - - 106.11.72.144/28 - - 106.11.72.160/27 - - 106.11.72.192/26 - - 106.11.73.0/24 - - 106.11.74.0/23 - - 106.11.76.0/22 - - 106.11.80.0/20 - - 106.11.96.0/19 - - 106.11.128.0/17 - - 106.12.0.0/14 - - 106.16.0.0/12 - - 106.32.0.0/12 - - 106.48.0.0/21 - - 106.48.8.0/22 - - 106.48.16.0/20 - - 106.48.32.0/20 - - 106.48.57.0/24 - - 106.48.60.0/24 - - 106.48.63.0/24 - - 106.48.64.0/18 - - 106.48.128.0/17 - - 106.49.1.0/24 - - 106.49.2.0/23 - - 106.49.4.0/22 - - 106.49.8.0/21 - - 106.49.16.0/20 - - 106.49.32.0/19 - - 106.49.64.0/19 - - 106.49.96.0/24 - - 106.49.98.0/23 - - 106.49.100.0/22 - - 106.49.104.0/21 - - 106.49.112.0/20 - - 106.49.128.0/17 - - 106.50.0.0/16 - - 106.52.0.0/14 - - 106.56.0.0/13 - - 106.74.0.0/16 - - 106.75.0.0/17 - - 106.75.128.0/18 - - 106.75.201.0/24 - - 106.75.204.0/22 - - 106.75.208.0/20 - - 106.75.224.0/19 - - 106.80.0.0/12 - - 106.108.0.0/14 - - 106.112.0.0/12 - - 106.224.0.0/12 - - 109.71.4.0/24 - - 109.244.0.0/16 - - 110.6.0.0/15 - - 110.16.0.0/14 - - 110.34.40.0/21 - - 110.40.0.0/15 - - 110.42.0.0/16 - - 110.43.0.0/18 - - 110.43.64.0/21 - - 110.43.72.0/22 - - 110.43.76.0/23 - - 110.43.80.0/20 - - 110.43.96.0/19 - - 110.43.128.0/17 - - 110.44.12.0/22 - - 110.44.144.0/20 - - 110.48.0.0/16 - - 110.51.0.0/16 - - 110.52.0.0/15 - - 110.56.0.0/13 - - 110.64.0.0/15 - - 110.72.0.0/15 - - 110.75.0.0/16 - - 110.76.0.0/20 - - 110.76.16.0/22 - - 110.76.20.0/24 - - 110.76.22.0/24 - - 110.76.24.0/21 - - 110.76.32.0/19 - - 110.76.132.0/22 - - 110.76.156.0/22 - - 110.76.184.0/22 - - 110.76.192.0/18 - - 110.77.0.0/17 - - 110.80.0.0/13 - - 110.88.0.0/14 - - 110.92.68.0/22 - - 110.93.32.0/19 - - 110.94.0.0/15 - - 110.96.0.0/11 - - 110.152.0.0/14 - - 110.156.0.0/15 - - 110.166.0.0/15 - - 110.172.192.0/18 - - 110.173.0.0/19 - - 110.173.32.0/20 - - 110.173.64.0/19 - - 110.173.192.0/19 - - 110.176.0.0/12 - - 110.192.0.0/11 - - 110.228.0.0/14 - - 110.232.32.0/19 - - 110.236.0.0/15 - - 110.240.0.0/12 - - 111.0.0.0/10 - - 111.66.0.0/16 - - 111.67.192.0/20 - - 111.68.64.0/19 - - 111.72.0.0/13 - - 111.85.0.0/16 - - 111.91.192.0/19 - - 111.92.248.0/21 - - 111.112.0.0/14 - - 111.116.0.0/15 - - 111.118.200.0/21 - - 111.119.64.0/18 - - 111.119.128.0/19 - - 111.120.0.0/14 - - 111.124.0.0/16 - - 111.126.0.0/15 - - 111.128.0.0/11 - - 111.160.0.0/13 - - 111.170.0.0/16 - - 111.172.0.0/14 - - 111.176.0.0/13 - - 111.186.0.0/15 - - 111.192.0.0/12 - - 111.208.0.0/13 - - 111.221.28.0/24 - - 111.221.128.0/17 - - 111.222.0.0/16 - - 111.223.4.0/22 - - 111.223.8.0/21 - - 111.223.16.0/22 - - 111.223.240.0/22 - - 111.223.249.0/24 - - 111.223.250.0/23 - - 111.224.0.0/13 - - 111.235.96.0/19 - - 111.235.156.0/22 - - 111.235.160.0/21 - - 111.235.170.0/23 - - 111.235.172.0/22 - - 111.235.176.0/20 - - 112.0.0.0/10 - - 112.64.0.0/14 - - 112.73.64.0/18 - - 112.74.0.0/16 - - 112.80.0.0/12 - - 112.96.0.0/13 - - 112.109.128.0/17 - - 112.111.0.0/16 - - 112.112.0.0/14 - - 112.116.0.0/15 - - 112.122.0.0/15 - - 112.124.0.0/14 - - 112.128.0.0/14 - - 112.132.0.0/16 - - 112.137.48.0/21 - - 112.192.0.0/14 - - 112.224.0.0/11 - - 113.0.0.0/13 - - 113.8.0.0/15 - - 113.11.192.0/19 - - 113.12.0.0/14 - - 113.16.0.0/15 - - 113.18.0.0/16 - - 113.21.232.0/21 - - 113.24.0.0/14 - - 113.31.0.0/16 - - 113.44.0.0/14 - - 113.48.0.0/14 - - 113.52.160.0/19 - - 113.52.228.0/22 - - 113.54.0.0/15 - - 113.56.0.0/15 - - 113.58.0.0/16 - - 113.59.0.0/17 - - 113.59.224.0/22 - - 113.62.0.0/15 - - 113.64.0.0/10 - - 113.128.0.0/15 - - 113.130.96.0/20 - - 113.130.112.0/21 - - 113.132.0.0/14 - - 113.136.0.0/13 - - 113.194.0.0/15 - - 113.197.100.0/23 - - 113.197.102.0/24 - - 113.197.104.0/22 - - 113.200.0.0/15 - - 113.202.0.0/16 - - 113.204.0.0/14 - - 113.208.96.0/19 - - 113.208.128.0/17 - - 113.209.0.0/16 - - 113.212.0.0/18 - - 113.212.100.0/22 - - 113.212.184.0/21 - - 113.213.0.0/17 - - 113.214.0.0/15 - - 113.218.0.0/15 - - 113.220.0.0/14 - - 113.224.0.0/12 - - 113.240.0.0/13 - - 113.248.0.0/14 - - 114.28.0.0/17 - - 114.28.128.0/18 - - 114.28.192.0/19 - - 114.28.232.0/22 - - 114.28.236.0/23 - - 114.28.240.0/20 - - 114.31.64.0/21 - - 114.54.0.0/15 - - 114.60.0.0/14 - - 114.64.0.0/14 - - 114.68.0.0/16 - - 114.79.64.0/18 - - 114.80.0.0/12 - - 114.96.0.0/13 - - 114.104.0.0/14 - - 114.110.0.0/20 - - 114.110.64.0/18 - - 114.111.0.0/19 - - 114.111.160.0/19 - - 114.112.4.0/22 - - 114.112.8.0/22 - - 114.112.24.0/21 - - 114.112.32.0/19 - - 114.112.64.0/19 - - 114.112.96.0/20 - - 114.112.116.0/22 - - 114.112.120.0/21 - - 114.112.136.0/21 - - 114.112.144.0/20 - - 114.112.160.0/19 - - 114.112.192.0/19 - - 114.113.0.0/17 - - 114.113.128.0/21 - - 114.113.140.0/22 - - 114.113.144.0/20 - - 114.113.160.0/19 - - 114.113.196.0/22 - - 114.113.200.0/21 - - 114.113.208.0/20 - - 114.113.224.0/20 - - 114.114.0.0/18 - - 114.114.64.0/19 - - 114.114.96.0/20 - - 114.114.120.0/21 - - 114.114.128.0/17 - - 114.115.0.0/16 - - 114.116.0.0/15 - - 114.118.0.0/16 - - 114.119.0.0/17 - - 114.119.192.0/18 - - 114.132.0.0/16 - - 114.135.0.0/16 - - 114.138.0.0/15 - - 114.141.64.0/21 - - 114.141.80.0/21 - - 114.141.128.0/18 - - 114.196.0.0/15 - - 114.198.248.0/21 - - 114.208.0.0/12 - - 114.224.0.0/11 - - 115.24.0.0/14 - - 115.28.0.0/15 - - 115.31.64.0/20 - - 115.32.0.0/14 - - 115.42.56.0/22 - - 115.44.0.0/14 - - 115.48.0.0/12 - - 115.69.64.0/20 - - 115.84.0.0/18 - - 115.84.192.0/19 - - 115.85.192.0/18 - - 115.100.0.0/14 - - 115.104.0.0/14 - - 115.120.0.0/14 - - 115.124.16.0/20 - - 115.148.0.0/14 - - 115.152.0.0/13 - - 115.166.64.0/19 - - 115.168.0.0/13 - - 115.180.0.0/14 - - 115.187.0.0/20 - - 115.190.0.0/15 - - 115.192.0.0/11 - - 115.224.0.0/12 - - 116.0.8.0/21 - - 116.0.24.0/21 - - 116.1.0.0/16 - - 116.2.0.0/15 - - 116.4.0.0/14 - - 116.8.0.0/14 - - 116.13.0.0/16 - - 116.16.0.0/12 - - 116.50.0.0/20 - - 116.52.0.0/14 - - 116.56.0.0/15 - - 116.58.128.0/20 - - 116.58.208.0/20 - - 116.60.0.0/14 - - 116.66.0.0/18 - - 116.66.64.0/19 - - 116.66.96.0/20 - - 116.66.120.0/22 - - 116.68.136.0/21 - - 116.68.176.0/21 - - 116.69.0.0/16 - - 116.70.0.0/17 - - 116.76.0.0/14 - - 116.85.0.0/17 - - 116.85.128.0/18 - - 116.85.192.0/19 - - 116.85.224.0/20 - - 116.85.240.0/21 - - 116.85.248.0/23 - - 116.85.250.0/24 - - 116.85.252.0/22 - - 116.89.144.0/20 - - 116.90.80.0/20 - - 116.90.184.0/21 - - 116.95.0.0/16 - - 116.112.0.0/14 - - 116.116.0.0/15 - - 116.128.0.0/10 - - 116.192.0.0/16 - - 116.193.16.0/20 - - 116.193.32.0/19 - - 116.193.176.0/21 - - 116.194.0.0/15 - - 116.196.0.0/21 - - 116.196.8.0/22 - - 116.196.12.0/23 - - 116.196.16.0/20 - - 116.196.32.0/19 - - 116.196.64.0/18 - - 116.196.128.0/18 - - 116.196.192.0/21 - - 116.196.200.0/23 - - 116.196.203.0/24 - - 116.196.204.0/22 - - 116.196.208.0/20 - - 116.196.224.0/19 - - 116.197.160.0/21 - - 116.197.180.0/23 - - 116.198.0.0/16 - - 116.199.0.0/17 - - 116.199.128.0/19 - - 116.204.0.0/17 - - 116.204.232.0/22 - - 116.205.0.0/16 - - 116.207.0.0/16 - - 116.208.0.0/14 - - 116.212.160.0/20 - - 116.213.64.0/18 - - 116.213.128.0/17 - - 116.214.32.0/19 - - 116.214.64.0/20 - - 116.214.128.0/17 - - 116.215.0.0/16 - - 116.216.0.0/14 - - 116.224.0.0/12 - - 116.242.0.0/15 - - 116.244.0.0/14 - - 116.248.0.0/15 - - 116.251.65.140/30 - - 116.251.66.42/31 - - 116.251.84.168/30 - - 116.251.84.216/29 - - 116.251.84.226/31 - - 116.251.84.228/31 - - 116.251.84.232/31 - - 116.251.84.236/31 - - 116.251.84.240/31 - - 116.251.84.244/31 - - 116.251.84.248/31 - - 116.251.88.38/31 - - 116.251.88.40/29 - - 116.251.88.48/29 - - 116.251.88.58/31 - - 116.251.88.60/30 - - 116.251.88.64/30 - - 116.251.88.70/31 - - 116.251.88.72/29 - - 116.251.88.80/29 - - 116.251.88.88/31 - - 116.251.88.92/31 - - 116.251.88.96/28 - - 116.251.88.112/29 - - 116.251.88.122/31 - - 116.251.88.126/31 - - 116.251.88.128/27 - - 116.251.88.164/31 - - 116.251.88.174/31 - - 116.251.88.176/31 - - 116.251.88.180/31 - - 116.251.88.188/30 - - 116.251.88.192/31 - - 116.251.88.198/31 - - 116.251.88.200/30 - - 116.251.88.204/31 - - 116.251.88.208/30 - - 116.251.88.212/31 - - 116.251.88.224/30 - - 116.251.88.230/31 - - 116.251.88.234/31 - - 116.251.88.240/31 - - 116.251.88.244/30 - - 116.251.88.248/31 - - 116.251.88.252/30 - - 116.251.89.0/31 - - 116.251.89.4/30 - - 116.251.89.8/30 - - 116.251.89.12/31 - - 116.251.89.16/30 - - 116.251.89.22/31 - - 116.251.89.36/30 - - 116.251.89.40/31 - - 116.251.89.44/30 - - 116.251.89.48/29 - - 116.251.89.56/31 - - 116.251.89.60/31 - - 116.251.89.64/31 - - 116.251.89.68/30 - - 116.251.89.72/31 - - 116.251.89.76/31 - - 116.251.89.80/31 - - 116.251.89.84/30 - - 116.251.89.88/29 - - 116.251.89.96/27 - - 116.251.89.128/27 - - 116.251.89.160/28 - - 116.251.89.176/31 - - 116.251.89.180/30 - - 116.251.89.184/29 - - 116.251.89.192/29 - - 116.251.89.202/31 - - 116.251.89.204/30 - - 116.251.89.208/28 - - 116.251.89.224/31 - - 116.251.89.228/31 - - 116.251.89.232/30 - - 116.251.89.236/31 - - 116.251.89.240/31 - - 116.251.89.244/31 - - 116.251.89.248/31 - - 116.251.90.4/30 - - 116.251.90.8/30 - - 116.251.90.14/31 - - 116.251.90.16/28 - - 116.251.90.32/29 - - 116.251.90.40/30 - - 116.251.90.48/29 - - 116.251.90.60/30 - - 116.251.90.66/31 - - 116.251.90.72/31 - - 116.251.90.80/31 - - 116.251.90.84/30 - - 116.251.90.88/29 - - 116.251.90.96/27 - - 116.251.90.128/28 - - 116.251.90.144/30 - - 116.251.90.168/29 - - 116.251.90.176/28 - - 116.251.90.192/27 - - 116.251.90.224/28 - - 116.251.91.16/28 - - 116.251.91.32/28 - - 116.251.91.56/29 - - 116.251.91.64/26 - - 116.251.91.128/28 - - 116.251.91.144/29 - - 116.251.91.156/31 - - 116.251.91.166/31 - - 116.251.91.170/31 - - 116.251.91.182/31 - - 116.251.91.186/31 - - 116.251.91.198/31 - - 116.251.91.202/31 - - 116.251.91.206/31 - - 116.251.91.210/31 - - 116.251.91.212/30 - - 116.251.91.216/29 - - 116.251.91.224/28 - - 116.251.91.240/29 - - 116.251.91.248/30 - - 116.251.93.10/31 - - 116.251.93.30/31 - - 116.251.93.34/31 - - 116.251.93.38/31 - - 116.251.93.72/30 - - 116.251.93.88/30 - - 116.251.93.104/29 - - 116.251.93.112/28 - - 116.251.93.128/29 - - 116.251.93.136/30 - - 116.251.93.152/29 - - 116.251.93.160/29 - - 116.251.93.168/30 - - 116.251.93.176/29 - - 116.251.93.200/29 - - 116.251.93.208/28 - - 116.251.94.4/30 - - 116.251.94.8/29 - - 116.251.94.16/28 - - 116.251.94.32/27 - - 116.251.94.64/26 - - 116.251.94.128/27 - - 116.251.94.160/28 - - 116.251.94.176/29 - - 116.251.94.188/30 - - 116.251.94.192/27 - - 116.251.94.224/28 - - 116.251.94.252/30 - - 116.251.95.0/27 - - 116.251.95.32/31 - - 116.251.95.36/31 - - 116.251.95.40/31 - - 116.251.95.96/31 - - 116.251.95.100/31 - - 116.251.95.108/31 - - 116.251.95.116/30 - - 116.251.95.120/29 - - 116.251.95.128/26 - - 116.251.95.194/31 - - 116.251.95.196/30 - - 116.251.95.208/28 - - 116.251.95.224/28 - - 116.251.102.0/31 - - 116.251.104.4/30 - - 116.251.104.8/30 - - 116.251.104.22/31 - - 116.251.104.28/30 - - 116.251.104.32/28 - - 116.251.104.48/30 - - 116.251.104.60/30 - - 116.251.104.64/29 - - 116.251.104.72/30 - - 116.251.104.108/30 - - 116.251.104.112/30 - - 116.251.104.120/29 - - 116.251.104.128/26 - - 116.251.104.192/28 - - 116.251.104.208/29 - - 116.251.105.68/30 - - 116.251.105.72/29 - - 116.251.105.80/28 - - 116.251.105.96/28 - - 116.251.105.112/30 - - 116.251.105.122/31 - - 116.251.105.124/30 - - 116.251.105.128/30 - - 116.251.105.132/31 - - 116.251.105.136/31 - - 116.251.105.140/31 - - 116.251.105.144/30 - - 116.251.105.148/31 - - 116.251.105.152/31 - - 116.251.105.164/30 - - 116.251.105.168/29 - - 116.251.105.176/30 - - 116.251.105.204/30 - - 116.251.105.208/28 - - 116.251.105.224/27 - - 116.251.106.0/25 - - 116.251.106.128/27 - - 116.251.106.160/30 - - 116.251.106.166/31 - - 116.251.106.170/31 - - 116.251.106.174/31 - - 116.251.106.176/28 - - 116.251.106.192/26 - - 116.251.107.0/28 - - 116.251.107.16/30 - - 116.251.107.22/31 - - 116.251.107.26/31 - - 116.251.107.28/30 - - 116.251.107.34/31 - - 116.251.107.36/30 - - 116.251.107.40/29 - - 116.251.107.48/28 - - 116.251.107.64/28 - - 116.251.107.80/30 - - 116.251.107.92/30 - - 116.251.107.96/29 - - 116.251.107.104/30 - - 116.251.107.116/30 - - 116.251.107.120/29 - - 116.251.107.128/26 - - 116.251.107.192/27 - - 116.251.107.224/28 - - 116.251.107.240/29 - - 116.251.107.248/30 - - 116.251.108.0/27 - - 116.251.108.32/29 - - 116.251.108.48/28 - - 116.251.108.64/28 - - 116.251.108.96/30 - - 116.251.108.104/29 - - 116.251.108.112/30 - - 116.251.108.144/29 - - 116.251.108.156/30 - - 116.251.108.160/28 - - 116.251.108.180/30 - - 116.251.108.188/30 - - 116.251.108.194/31 - - 116.251.108.198/31 - - 116.251.108.200/29 - - 116.251.109.36/30 - - 116.251.109.40/31 - - 116.251.109.42/32 - - 116.251.109.64/31 - - 116.251.109.66/32 - - 116.251.109.96/30 - - 116.251.109.108/30 - - 116.251.109.120/30 - - 116.251.109.160/30 - - 116.251.112.4/30 - - 116.251.112.8/31 - - 116.251.112.20/31 - - 116.251.112.24/30 - - 116.251.112.34/31 - - 116.251.112.40/30 - - 116.251.112.58/31 - - 116.251.112.60/31 - - 116.251.112.64/31 - - 116.251.112.76/30 - - 116.251.112.84/30 - - 116.251.112.88/29 - - 116.251.112.100/30 - - 116.251.112.120/29 - - 116.251.112.128/25 - - 116.251.113.0/26 - - 116.251.113.64/28 - - 116.251.113.92/30 - - 116.251.113.104/30 - - 116.251.113.120/30 - - 116.251.113.132/30 - - 116.251.113.136/29 - - 116.251.113.144/28 - - 116.251.113.160/27 - - 116.251.113.192/27 - - 116.251.113.224/28 - - 116.251.113.240/29 - - 116.251.114.16/28 - - 116.251.114.32/27 - - 116.251.114.88/29 - - 116.251.114.96/27 - - 116.251.114.128/29 - - 116.251.114.140/30 - - 116.251.114.164/30 - - 116.251.114.168/29 - - 116.251.114.176/28 - - 116.251.114.192/27 - - 116.251.114.224/30 - - 116.251.114.240/31 - - 116.251.114.244/30 - - 116.251.114.248/30 - - 116.251.114.252/31 - - 116.251.115.0/30 - - 116.251.115.6/31 - - 116.251.115.8/30 - - 116.251.115.20/31 - - 116.251.115.24/30 - - 116.251.115.28/31 - - 116.251.115.32/31 - - 116.251.115.36/30 - - 116.251.115.40/31 - - 116.251.115.44/31 - - 116.251.115.50/31 - - 116.251.115.52/30 - - 116.251.115.56/31 - - 116.251.115.62/31 - - 116.251.115.64/29 - - 116.251.115.74/31 - - 116.251.115.78/31 - - 116.251.115.80/30 - - 116.251.115.86/31 - - 116.251.115.92/30 - - 116.251.115.100/30 - - 116.251.115.104/29 - - 116.251.115.112/28 - - 116.251.115.128/28 - - 116.251.115.144/29 - - 116.251.115.152/30 - - 116.251.115.172/30 - - 116.251.115.176/28 - - 116.251.115.192/27 - - 116.251.115.224/28 - - 116.251.115.240/29 - - 116.251.115.248/30 - - 116.251.116.28/30 - - 116.251.116.32/29 - - 116.251.116.40/30 - - 116.251.116.48/28 - - 116.251.116.68/30 - - 116.251.116.72/29 - - 116.251.116.80/28 - - 116.251.116.96/29 - - 116.251.116.106/31 - - 116.251.116.108/30 - - 116.251.116.114/31 - - 116.251.116.116/30 - - 116.251.116.120/29 - - 116.251.116.128/26 - - 116.251.116.192/28 - - 116.251.116.208/30 - - 116.251.116.248/29 - - 116.251.117.0/24 - - 116.251.118.0/26 - - 116.251.118.64/28 - - 116.251.118.80/29 - - 116.251.118.88/30 - - 116.251.118.120/29 - - 116.251.118.128/28 - - 116.251.118.144/29 - - 116.251.118.212/30 - - 116.251.118.216/29 - - 116.251.118.224/29 - - 116.251.118.232/31 - - 116.251.118.252/30 - - 116.251.119.24/30 - - 116.251.119.46/31 - - 116.251.119.66/31 - - 116.251.119.76/30 - - 116.251.119.80/28 - - 116.251.119.96/28 - - 116.251.119.112/30 - - 116.251.119.128/26 - - 116.251.119.192/27 - - 116.251.124.4/30 - - 116.251.124.12/30 - - 116.251.124.24/30 - - 116.251.124.36/30 - - 116.251.124.80/28 - - 116.251.124.96/27 - - 116.251.124.128/29 - - 116.251.124.138/31 - - 116.251.124.142/31 - - 116.251.124.144/30 - - 116.251.124.150/31 - - 116.251.124.154/31 - - 116.251.124.158/31 - - 116.251.124.162/31 - - 116.251.124.166/31 - - 116.251.124.168/30 - - 116.251.124.174/31 - - 116.251.124.178/31 - - 116.251.124.182/31 - - 116.251.124.186/31 - - 116.251.124.190/31 - - 116.251.124.192/29 - - 116.251.124.208/30 - - 116.251.124.216/30 - - 116.251.125.24/30 - - 116.251.125.32/30 - - 116.251.125.96/27 - - 116.251.125.128/28 - - 116.251.125.144/30 - - 116.251.125.154/31 - - 116.251.125.156/30 - - 116.251.125.182/31 - - 116.251.125.188/30 - - 116.251.125.198/31 - - 116.251.125.204/30 - - 116.251.125.222/31 - - 116.251.125.228/31 - - 116.251.125.236/30 - - 116.251.126.54/31 - - 116.251.126.70/31 - - 116.251.126.78/31 - - 116.251.126.86/31 - - 116.251.126.156/31 - - 116.251.126.164/31 - - 116.251.126.188/30 - - 116.251.127.22/31 - - 116.251.127.28/30 - - 116.251.127.166/31 - - 116.251.127.192/30 - - 116.251.127.196/31 - - 116.251.127.202/31 - - 116.251.127.206/31 - - 116.251.127.208/29 - - 116.251.127.216/31 - - 116.251.127.220/30 - - 116.251.127.234/31 - - 116.251.127.238/31 - - 116.251.127.242/31 - - 116.251.127.250/31 - - 116.252.0.0/15 - - 116.254.104.0/21 - - 116.254.129.0/24 - - 116.254.130.0/23 - - 116.254.132.0/22 - - 116.254.136.0/21 - - 116.254.144.0/20 - - 116.254.160.0/19 - - 116.254.192.0/18 - - 116.255.128.0/17 - - 117.8.0.0/13 - - 117.21.0.0/16 - - 117.22.0.0/15 - - 117.24.0.0/13 - - 117.32.0.0/13 - - 117.40.0.0/14 - - 117.44.0.0/15 - - 117.48.0.0/15 - - 117.50.0.0/16 - - 117.51.128.0/23 - - 117.51.131.0/24 - - 117.51.132.0/22 - - 117.51.136.0/21 - - 117.51.144.0/20 - - 117.51.160.0/19 - - 117.51.192.0/18 - - 117.53.48.0/20 - - 117.53.176.0/20 - - 117.57.0.0/16 - - 117.58.0.0/18 - - 117.59.0.0/16 - - 117.60.0.0/14 - - 117.64.0.0/13 - - 117.72.0.0/15 - - 117.74.64.0/19 - - 117.74.128.0/17 - - 117.75.0.0/16 - - 117.76.0.0/14 - - 117.80.0.0/12 - - 117.100.0.0/15 - - 117.103.16.0/20 - - 117.103.40.0/21 - - 117.103.72.0/21 - - 117.103.128.0/20 - - 117.104.168.0/21 - - 117.106.0.0/15 - - 117.112.0.0/13 - - 117.120.64.0/18 - - 117.120.128.0/17 - - 117.121.0.0/19 - - 117.121.32.0/21 - - 117.121.40.0/22 - - 117.121.44.0/23 - - 117.121.46.0/24 - - 117.121.48.0/20 - - 117.121.64.0/18 - - 117.121.128.0/20 - - 117.121.148.0/22 - - 117.121.152.0/21 - - 117.121.160.0/19 - - 117.121.192.0/21 - - 117.122.128.0/17 - - 117.124.0.0/14 - - 117.128.0.0/10 - - 118.24.0.0/15 - - 118.26.0.0/19 - - 118.26.36.0/22 - - 118.26.40.0/21 - - 118.26.48.0/20 - - 118.26.64.0/19 - - 118.26.104.0/21 - - 118.26.112.0/20 - - 118.26.128.0/17 - - 118.28.0.0/15 - - 118.30.0.0/20 - - 118.30.16.0/21 - - 118.30.24.0/22 - - 118.30.32.0/19 - - 118.30.64.0/18 - - 118.30.128.0/17 - - 118.31.0.0/16 - - 118.64.0.0/15 - - 118.66.0.0/16 - - 118.67.112.0/20 - - 118.72.0.0/13 - - 118.80.0.0/15 - - 118.84.0.0/15 - - 118.88.32.0/19 - - 118.88.64.0/18 - - 118.88.128.0/17 - - 118.89.0.0/16 - - 118.102.16.0/20 - - 118.102.32.0/21 - - 118.103.164.0/22 - - 118.103.168.0/21 - - 118.103.176.0/22 - - 118.103.245.0/24 - - 118.103.246.0/23 - - 118.112.0.0/13 - - 118.120.0.0/14 - - 118.124.0.0/15 - - 118.126.1.0/24 - - 118.126.2.0/23 - - 118.126.4.0/22 - - 118.126.8.0/21 - - 118.126.16.0/23 - - 118.126.18.0/24 - - 118.126.32.0/19 - - 118.126.64.0/18 - - 118.126.128.0/17 - - 118.127.128.0/19 - - 118.132.0.0/14 - - 118.144.0.0/14 - - 118.178.0.0/16 - - 118.180.0.0/14 - - 118.184.5.0/24 - - 118.184.10.0/24 - - 118.184.115.0/24 - - 118.184.116.0/22 - - 118.184.120.0/23 - - 118.184.122.0/24 - - 118.184.128.0/18 - - 118.184.192.0/19 - - 118.184.240.0/20 - - 118.186.0.0/15 - - 118.188.0.0/16 - - 118.190.0.0/16 - - 118.191.0.0/20 - - 118.191.24.0/21 - - 118.191.32.0/19 - - 118.191.64.0/18 - - 118.191.144.0/21 - - 118.191.153.0/24 - - 118.191.154.0/23 - - 118.191.156.0/22 - - 118.191.160.0/19 - - 118.191.192.0/20 - - 118.191.209.0/24 - - 118.191.210.0/23 - - 118.191.212.0/22 - - 118.191.248.0/21 - - 118.192.0.0/16 - - 118.193.0.0/22 - - 118.193.32.0/20 - - 118.193.56.0/21 - - 118.193.68.0/22 - - 118.193.72.0/24 - - 118.193.77.0/24 - - 118.193.96.0/19 - - 118.194.0.0/17 - - 118.194.128.0/18 - - 118.194.192.0/19 - - 118.194.232.0/21 - - 118.194.240.0/20 - - 118.195.0.0/16 - - 118.196.0.0/14 - - 118.202.0.0/15 - - 118.204.0.0/14 - - 118.212.0.0/15 - - 118.215.192.0/18 - - 118.224.0.0/14 - - 118.228.0.0/17 - - 118.228.128.0/20 - - 118.228.144.0/21 - - 118.228.152.0/25 - - 118.228.152.128/26 - - 118.228.152.192/27 - - 118.228.152.224/29 - - 118.228.152.234/31 - - 118.228.152.236/30 - - 118.228.152.240/28 - - 118.228.153.0/24 - - 118.228.154.0/23 - - 118.228.156.0/22 - - 118.228.160.0/19 - - 118.228.192.0/18 - - 118.229.0.0/16 - - 118.230.0.0/16 - - 118.239.0.0/16 - - 118.242.0.0/16 - - 118.244.0.0/14 - - 118.248.0.0/13 - - 119.0.0.0/15 - - 119.2.0.0/19 - - 119.2.128.0/17 - - 119.3.0.0/16 - - 119.4.0.0/14 - - 119.10.0.0/17 - - 119.15.136.0/21 - - 119.16.0.0/16 - - 119.18.192.0/20 - - 119.18.208.0/21 - - 119.18.224.0/19 - - 119.19.0.0/16 - - 119.20.0.0/14 - - 119.27.64.0/18 - - 119.27.128.0/17 - - 119.29.0.0/20 - - 119.29.16.0/21 - - 119.29.24.0/22 - - 119.29.28.0/24 - - 119.29.30.0/23 - - 119.29.32.0/19 - - 119.29.64.0/18 - - 119.29.128.0/17 - - 119.30.48.0/20 - - 119.31.192.0/19 - - 119.32.0.0/14 - - 119.36.0.0/15 - - 119.38.0.0/17 - - 119.38.128.0/18 - - 119.38.192.0/20 - - 119.38.208.0/22 - - 119.38.212.0/23 - - 119.38.214.0/27 - - 119.38.214.56/29 - - 119.38.214.64/26 - - 119.38.214.128/25 - - 119.38.215.0/27 - - 119.38.215.32/28 - - 119.38.215.48/29 - - 119.38.215.56/30 - - 119.38.215.76/30 - - 119.38.215.80/28 - - 119.38.215.96/27 - - 119.38.215.128/25 - - 119.38.216.0/21 - - 119.39.0.0/16 - - 119.40.0.0/18 - - 119.40.64.0/20 - - 119.40.128.0/17 - - 119.41.0.0/16 - - 119.42.0.0/19 - - 119.42.52.0/22 - - 119.42.128.0/20 - - 119.42.224.0/19 - - 119.44.0.0/15 - - 119.48.0.0/13 - - 119.57.0.0/16 - - 119.58.0.0/16 - - 119.59.128.0/17 - - 119.60.0.0/15 - - 119.62.0.0/16 - - 119.63.32.0/19 - - 119.75.208.0/20 - - 119.78.0.0/15 - - 119.80.0.0/16 - - 119.82.208.0/20 - - 119.84.0.0/14 - - 119.88.0.0/16 - - 119.89.0.0/17 - - 119.89.128.0/21 - - 119.89.136.0/23 - - 119.89.139.0/24 - - 119.89.140.0/22 - - 119.89.144.0/20 - - 119.89.160.0/20 - - 119.89.176.0/22 - - 119.89.180.0/23 - - 119.89.183.0/24 - - 119.89.184.0/21 - - 119.89.192.0/23 - - 119.89.194.0/24 - - 119.89.196.0/22 - - 119.89.200.0/21 - - 119.89.208.0/21 - - 119.89.217.0/24 - - 119.89.218.0/23 - - 119.89.220.0/22 - - 119.89.224.0/19 - - 119.90.0.0/15 - - 119.96.0.0/13 - - 119.108.0.0/15 - - 119.112.0.0/12 - - 119.128.0.0/12 - - 119.144.0.0/14 - - 119.148.160.0/19 - - 119.151.192.0/18 - - 119.160.200.0/21 - - 119.161.120.0/21 - - 119.161.128.0/21 - - 119.161.160.0/19 - - 119.161.192.0/18 - - 119.162.0.0/15 - - 119.164.0.0/14 - - 119.176.0.0/12 - - 119.232.0.0/15 - - 119.235.128.0/19 - - 119.235.160.0/20 - - 119.235.184.0/22 - - 119.248.0.0/14 - - 119.252.96.0/21 - - 119.252.240.0/21 - - 119.252.249.0/24 - - 119.252.252.0/23 - - 119.253.0.0/16 - - 119.254.0.0/15 - - 120.0.0.0/12 - - 120.24.0.0/14 - - 120.30.0.0/15 - - 120.32.0.0/12 - - 120.48.0.0/15 - - 120.52.0.0/14 - - 120.64.0.0/13 - - 120.72.32.0/19 - - 120.72.128.0/17 - - 120.76.0.0/14 - - 120.80.0.0/13 - - 120.88.8.0/21 - - 120.90.0.0/15 - - 120.92.0.0/17 - - 120.92.128.0/18 - - 120.92.192.0/22 - - 120.92.198.0/23 - - 120.92.200.0/21 - - 120.92.208.0/20 - - 120.92.224.0/19 - - 120.94.0.0/15 - - 120.128.0.0/13 - - 120.136.16.0/21 - - 120.136.128.0/18 - - 120.137.0.0/17 - - 120.138.32.224/29 - - 120.143.128.0/19 - - 120.192.0.0/10 - - 121.0.8.0/21 - - 121.0.16.0/20 - - 121.4.0.0/15 - - 121.8.0.0/13 - - 121.16.0.0/12 - - 121.32.0.0/13 - - 121.40.0.0/14 - - 121.46.0.0/18 - - 121.46.76.0/22 - - 121.46.128.0/17 - - 121.47.0.0/16 - - 121.48.0.0/15 - - 121.50.8.0/21 - - 121.51.0.0/16 - - 121.52.160.0/19 - - 121.52.208.0/20 - - 121.52.224.0/19 - - 121.54.176.0/21 - - 121.55.0.0/18 - - 121.56.0.0/15 - - 121.58.0.0/17 - - 121.58.136.0/21 - - 121.58.144.0/20 - - 121.58.160.0/21 - - 121.59.0.36/30 - - 121.59.0.40/29 - - 121.59.0.48/28 - - 121.59.0.64/26 - - 121.59.0.128/25 - - 121.59.1.0/24 - - 121.59.5.128/25 - - 121.59.6.0/23 - - 121.59.8.0/30 - - 121.59.8.8/29 - - 121.59.8.16/28 - - 121.59.8.32/27 - - 121.59.8.64/27 - - 121.59.8.96/29 - - 121.59.8.108/30 - - 121.59.8.112/31 - - 121.59.8.116/30 - - 121.59.8.120/29 - - 121.59.8.128/29 - - 121.59.8.138/31 - - 121.59.8.140/30 - - 121.59.8.144/28 - - 121.59.8.160/27 - - 121.59.8.192/29 - - 121.59.8.200/30 - - 121.59.8.208/29 - - 121.59.8.216/30 - - 121.59.8.220/31 - - 121.59.8.224/27 - - 121.59.9.0/26 - - 121.59.9.64/29 - - 121.59.9.72/30 - - 121.59.9.80/28 - - 121.59.9.96/27 - - 121.59.9.128/25 - - 121.59.10.0/31 - - 121.59.10.4/30 - - 121.59.10.8/29 - - 121.59.10.16/28 - - 121.59.10.32/27 - - 121.59.10.64/26 - - 121.59.10.128/25 - - 121.59.11.0/24 - - 121.59.12.0/22 - - 121.59.16.0/24 - - 121.59.18.0/23 - - 121.59.20.0/22 - - 121.59.24.0/21 - - 121.59.32.0/19 - - 121.59.64.0/18 - - 121.59.128.0/17 - - 121.60.0.0/14 - - 121.68.0.0/14 - - 121.76.0.0/15 - - 121.79.128.0/18 - - 121.89.0.0/16 - - 121.100.128.0/17 - - 121.101.0.0/18 - - 121.101.208.0/20 - - 121.189.1.118/32 - - 121.189.3.102/31 - - 121.192.0.0/13 - - 121.200.192.0/21 - - 121.201.0.0/16 - - 121.204.0.0/14 - - 121.224.0.0/12 - - 121.248.0.0/14 - - 121.255.0.0/16 - - 122.0.64.0/18 - - 122.0.128.0/17 - - 122.4.0.0/14 - - 122.10.132.0/23 - - 122.10.136.0/23 - - 122.10.196.0/23 - - 122.10.216.0/22 - - 122.10.228.0/22 - - 122.10.232.0/21 - - 122.10.240.0/21 - - 122.10.248.0/22 - - 122.11.0.0/17 - - 122.12.0.0/15 - - 122.14.0.0/17 - - 122.14.192.0/18 - - 122.48.0.0/16 - - 122.49.0.0/18 - - 122.51.0.0/16 - - 122.64.0.0/11 - - 122.96.0.0/15 - - 122.98.144.0/20 - - 122.98.160.0/21 - - 122.98.172.0/22 - - 122.98.176.0/20 - - 122.98.192.0/21 - - 122.98.232.0/21 - - 122.98.240.0/20 - - 122.102.0.0/20 - - 122.102.64.0/19 - - 122.112.0.0/18 - - 122.112.64.0/19 - - 122.112.96.0/22 - - 122.112.107.0/24 - - 122.112.118.0/24 - - 122.112.122.0/24 - - 122.112.125.0/24 - - 122.112.128.0/17 - - 122.113.0.0/16 - - 122.114.0.0/16 - - 122.115.0.0/18 - - 122.115.80.0/20 - - 122.115.96.0/19 - - 122.115.128.0/17 - - 122.119.0.0/16 - - 122.128.100.0/22 - - 122.128.120.0/21 - - 122.136.0.0/13 - - 122.144.128.0/17 - - 122.152.192.0/18 - - 122.156.0.0/14 - - 122.188.0.0/14 - - 122.192.0.0/14 - - 122.198.0.0/16 - - 122.200.40.0/21 - - 122.200.64.0/18 - - 122.201.48.0/20 - - 122.204.0.0/14 - - 122.224.0.0/12 - - 122.240.0.0/13 - - 122.248.24.0/21 - - 122.248.48.0/20 - - 122.255.64.0/21 - - 123.0.128.0/21 - - 123.0.136.0/23 - - 123.0.139.0/24 - - 123.0.140.0/22 - - 123.0.144.0/20 - - 123.0.160.0/19 - - 123.4.0.0/14 - - 123.8.0.0/13 - - 123.49.130.0/23 - - 123.49.132.0/22 - - 123.49.136.0/22 - - 123.49.152.0/21 - - 123.49.160.0/19 - - 123.49.192.0/18 - - 123.50.160.0/19 - - 123.52.0.0/14 - - 123.56.0.0/15 - - 123.58.0.0/18 - - 123.58.64.0/20 - - 123.58.80.0/21 - - 123.58.88.0/22 - - 123.58.96.0/19 - - 123.58.128.0/17 - - 123.59.0.0/16 - - 123.61.0.0/16 - - 123.62.0.0/16 - - 123.64.0.0/11 - - 123.96.0.0/15 - - 123.98.0.0/17 - - 123.99.128.0/17 - - 123.100.0.0/19 - - 123.100.232.0/24 - - 123.101.0.0/16 - - 123.103.0.0/20 - - 123.103.16.0/21 - - 123.103.24.0/22 - - 123.103.28.0/23 - - 123.103.30.0/24 - - 123.103.32.0/19 - - 123.103.64.0/18 - - 123.108.134.0/24 - - 123.108.138.0/23 - - 123.108.140.0/24 - - 123.108.142.0/24 - - 123.108.208.0/20 - - 123.112.0.0/12 - - 123.128.0.0/13 - - 123.137.0.0/16 - - 123.138.0.0/15 - - 123.144.0.0/12 - - 123.160.0.0/12 - - 123.176.60.0/22 - - 123.176.80.0/20 - - 123.177.0.0/16 - - 123.178.0.0/15 - - 123.180.0.0/14 - - 123.184.0.0/13 - - 123.196.0.0/15 - - 123.199.128.0/17 - - 123.206.0.0/15 - - 123.232.0.0/14 - - 123.242.0.0/17 - - 123.242.192.0/21 - - 123.244.0.0/14 - - 123.249.0.0/16 - - 123.253.109.0/24 - - 123.253.110.0/24 - - 123.253.240.0/22 - - 123.254.96.0/21 - - 124.6.64.0/18 - - 124.14.0.0/15 - - 124.16.0.0/15 - - 124.20.0.0/14 - - 124.28.192.0/18 - - 124.29.0.0/17 - - 124.31.0.0/16 - - 124.40.112.0/20 - - 124.40.128.0/18 - - 124.40.192.0/19 - - 124.40.240.0/22 - - 124.42.0.0/16 - - 124.47.0.0/18 - - 124.64.0.0/15 - - 124.66.0.0/17 - - 124.67.0.0/16 - - 124.68.0.0/17 - - 124.68.128.0/18 - - 124.68.192.0/19 - - 124.68.224.0/20 - - 124.68.240.0/23 - - 124.68.242.0/24 - - 124.68.244.0/23 - - 124.68.254.0/23 - - 124.69.0.0/16 - - 124.70.0.0/22 - - 124.72.0.0/13 - - 124.88.0.0/13 - - 124.108.8.0/21 - - 124.108.40.0/21 - - 124.109.96.0/21 - - 124.112.0.0/14 - - 124.116.0.0/15 - - 124.118.0.0/16 - - 124.119.0.0/17 - - 124.119.128.0/18 - - 124.119.192.0/19 - - 124.119.224.0/20 - - 124.119.240.0/22 - - 124.119.244.0/23 - - 124.119.246.0/25 - - 124.119.246.128/26 - - 124.119.246.192/27 - - 124.119.246.224/28 - - 124.119.246.240/29 - - 124.119.246.248/30 - - 124.119.246.254/31 - - 124.119.247.0/24 - - 124.119.248.0/21 - - 124.126.0.0/15 - - 124.128.0.0/13 - - 124.147.128.0/17 - - 124.150.137.0/24 - - 124.151.0.0/16 - - 124.152.0.0/16 - - 124.160.0.0/13 - - 124.172.0.0/14 - - 124.192.0.0/15 - - 124.196.0.0/16 - - 124.200.0.0/13 - - 124.220.0.0/14 - - 124.224.0.0/12 - - 124.240.0.0/17 - - 124.240.128.0/18 - - 124.242.0.0/16 - - 124.243.192.0/18 - - 124.248.0.0/17 - - 124.249.0.0/16 - - 124.250.0.0/17 - - 124.250.128.0/18 - - 124.250.192.0/19 - - 124.250.224.0/20 - - 124.250.240.0/21 - - 124.250.248.0/24 - - 124.250.249.0/32 - - 124.250.249.2/31 - - 124.250.249.4/30 - - 124.250.249.8/29 - - 124.250.249.16/28 - - 124.250.249.32/27 - - 124.250.249.64/26 - - 124.250.249.128/27 - - 124.250.249.160/30 - - 124.250.249.172/31 - - 124.250.249.175/32 - - 124.250.249.176/30 - - 124.250.249.184/29 - - 124.250.249.192/28 - - 124.250.249.208/30 - - 124.250.249.216/32 - - 124.250.249.218/31 - - 124.250.249.220/32 - - 124.250.249.222/31 - - 124.250.249.224/30 - - 124.250.249.232/29 - - 124.250.249.240/31 - - 124.250.249.243/32 - - 124.250.249.244/31 - - 124.250.249.247/32 - - 124.250.249.248/29 - - 124.250.250.0/23 - - 124.250.252.0/22 - - 124.251.0.0/16 - - 124.254.0.0/18 - - 125.31.192.0/18 - - 125.32.0.0/12 - - 125.58.128.0/17 - - 125.61.128.0/17 - - 125.62.0.0/18 - - 125.64.0.0/11 - - 125.96.0.0/15 - - 125.98.0.0/16 - - 125.104.0.0/13 - - 125.112.0.0/12 - - 125.169.0.0/16 - - 125.171.0.0/16 - - 125.208.0.0/19 - - 125.208.37.0/24 - - 125.208.40.0/24 - - 125.208.45.0/24 - - 125.208.46.0/23 - - 125.208.48.0/20 - - 125.210.0.0/15 - - 125.213.0.0/17 - - 125.214.96.0/19 - - 125.215.0.0/18 - - 125.216.0.0/13 - - 125.254.128.0/17 - - 128.108.0.0/16 - - 129.28.0.0/16 - - 129.204.0.0/16 - - 129.211.0.0/16 - - 129.223.254.0/24 - - 129.227.99.0/24 - - 130.214.218.0/23 - - 131.228.96.0/24 - - 131.253.12.0/29 - - 131.253.12.80/28 - - 131.253.12.240/29 - - 132.232.0.0/16 - - 132.237.134.0/24 - - 132.237.150.0/24 - - 134.175.0.0/16 - - 135.159.208.0/20 - - 135.244.80.0/20 - - 137.59.59.0/24 - - 137.59.88.0/22 - - 138.32.244.0/22 - - 139.5.56.0/21 - - 139.5.80.0/22 - - 139.5.92.0/22 - - 139.5.128.0/22 - - 139.5.160.0/22 - - 139.5.192.0/22 - - 139.5.204.0/22 - - 139.5.244.0/22 - - 139.9.0.0/16 - - 139.129.0.0/16 - - 139.148.0.0/16 - - 139.155.0.0/16 - - 139.159.0.0/19 - - 139.159.32.0/21 - - 139.159.40.0/22 - - 139.159.52.0/22 - - 139.159.56.0/21 - - 139.159.64.0/19 - - 139.159.96.0/20 - - 139.159.112.0/22 - - 139.159.116.0/23 - - 139.159.120.0/21 - - 139.159.128.0/17 - - 139.170.0.0/16 - - 139.176.0.0/16 - - 139.183.0.0/16 - - 139.186.0.0/16 - - 139.189.0.0/16 - - 139.196.0.0/15 - - 139.198.0.0/21 - - 139.198.8.0/23 - - 139.198.11.0/24 - - 139.198.12.0/22 - - 139.198.16.0/20 - - 139.198.32.0/19 - - 139.198.66.0/23 - - 139.198.68.0/22 - - 139.198.72.0/21 - - 139.198.80.0/20 - - 139.198.96.0/20 - - 139.198.113.0/24 - - 139.198.114.0/23 - - 139.198.116.0/22 - - 139.198.122.0/23 - - 139.198.124.0/22 - - 139.198.128.0/17 - - 139.199.0.0/16 - - 139.200.0.0/13 - - 139.208.0.0/13 - - 139.217.0.0/16 - - 139.219.0.0/16 - - 139.220.0.0/17 - - 139.220.128.0/18 - - 139.220.192.0/22 - - 139.220.196.0/23 - - 139.220.200.0/21 - - 139.220.208.0/23 - - 139.220.212.0/22 - - 139.220.216.0/21 - - 139.220.224.0/19 - - 139.221.0.0/16 - - 139.224.0.0/16 - - 139.226.0.0/15 - - 140.75.0.0/16 - - 140.101.208.0/24 - - 140.143.0.0/16 - - 140.179.0.0/16 - - 140.205.0.0/24 - - 140.205.2.0/23 - - 140.205.4.0/22 - - 140.205.8.0/21 - - 140.205.16.0/20 - - 140.205.32.0/19 - - 140.205.64.0/19 - - 140.205.96.0/20 - - 140.205.112.0/21 - - 140.205.120.0/23 - - 140.205.123.0/24 - - 140.205.124.0/22 - - 140.205.128.0/17 - - 140.206.0.0/15 - - 140.210.0.0/16 - - 140.224.0.0/16 - - 140.237.0.0/16 - - 140.240.0.0/16 - - 140.242.223.0/24 - - 140.242.224.0/24 - - 140.243.0.0/16 - - 140.246.0.0/16 - - 140.249.0.0/16 - - 140.250.0.0/16 - - 140.255.0.0/16 - - 144.0.0.0/16 - - 144.7.0.0/16 - - 144.12.0.0/16 - - 144.36.146.0/23 - - 144.48.64.0/22 - - 144.48.88.0/22 - - 144.48.156.0/22 - - 144.48.180.0/22 - - 144.48.184.0/22 - - 144.48.204.0/22 - - 144.48.208.0/21 - - 144.52.0.0/16 - - 144.123.0.0/16 - - 144.211.80.0/24 - - 144.211.138.0/24 - - 144.255.0.0/16 - - 146.56.192.0/18 - - 146.196.56.0/22 - - 146.196.68.0/22 - - 146.196.92.0/22 - - 146.196.112.0/21 - - 146.196.124.0/22 - - 146.217.137.0/24 - - 146.222.79.0/24 - - 146.222.81.0/24 - - 146.222.94.0/24 - - 147.243.13.32/27 - - 147.243.13.64/27 - - 147.243.14.32/27 - - 148.70.0.0/16 - - 150.0.0.0/16 - - 150.115.0.0/16 - - 150.121.0.0/16 - - 150.122.0.0/16 - - 150.129.136.0/22 - - 150.129.192.0/22 - - 150.129.252.0/22 - - 150.138.0.0/15 - - 150.158.0.0/16 - - 150.222.88.0/23 - - 150.223.0.0/16 - - 150.242.0.0/21 - - 150.242.8.0/22 - - 150.242.28.0/22 - - 150.242.44.0/22 - - 150.242.48.0/21 - - 150.242.56.0/22 - - 150.242.76.0/22 - - 150.242.80.0/22 - - 150.242.92.0/22 - - 150.242.96.0/22 - - 150.242.112.0/21 - - 150.242.120.0/22 - - 150.242.152.0/22 - - 150.242.158.0/24 - - 150.242.160.0/21 - - 150.242.168.0/22 - - 150.242.184.0/21 - - 150.242.192.0/22 - - 150.242.224.0/22 - - 150.242.232.0/21 - - 150.242.240.0/21 - - 150.242.248.0/22 - - 150.255.0.0/16 - - 152.32.178.0/23 - - 152.32.249.0/24 - - 152.32.255.0/24 - - 152.104.128.0/18 - - 152.104.192.0/24 - - 152.104.193.0/28 - - 152.104.193.20/30 - - 152.104.193.24/29 - - 152.104.193.32/27 - - 152.104.193.64/26 - - 152.104.193.128/25 - - 152.104.194.0/23 - - 152.104.196.0/22 - - 152.104.200.0/21 - - 152.104.208.0/20 - - 152.104.224.0/19 - - 152.136.0.0/16 - - 153.0.0.0/16 - - 153.3.0.0/16 - - 153.34.0.0/15 - - 153.36.0.0/15 - - 153.99.0.0/16 - - 153.101.0.0/16 - - 153.118.0.0/15 - - 154.8.128.0/17 - - 155.126.176.0/23 - - 156.107.160.0/24 - - 156.107.170.0/24 - - 156.107.178.0/23 - - 156.107.180.0/23 - - 156.154.62.0/23 - - 157.0.0.0/16 - - 157.18.0.0/16 - - 157.61.0.0/16 - - 157.119.8.0/21 - - 157.119.16.0/22 - - 157.119.28.0/22 - - 157.119.132.0/22 - - 157.119.136.0/21 - - 157.119.144.0/20 - - 157.119.160.0/21 - - 157.119.172.0/22 - - 157.119.192.0/21 - - 157.119.240.0/22 - - 157.119.252.0/22 - - 157.122.0.0/16 - - 157.133.186.0/23 - - 157.133.192.0/21 - - 157.133.212.0/24 - - 157.133.236.0/24 - - 157.148.0.0/16 - - 157.156.0.0/16 - - 157.255.0.0/16 - - 159.75.0.0/16 - - 159.221.232.0/22 - - 159.226.0.0/21 - - 159.226.8.0/25 - - 159.226.8.128/26 - - 159.226.8.192/30 - - 159.226.8.200/29 - - 159.226.8.208/28 - - 159.226.8.224/27 - - 159.226.9.0/24 - - 159.226.10.0/23 - - 159.226.12.0/22 - - 159.226.16.0/20 - - 159.226.32.0/21 - - 159.226.40.0/22 - - 159.226.44.0/23 - - 159.226.46.0/25 - - 159.226.46.128/26 - - 159.226.46.192/27 - - 159.226.46.224/28 - - 159.226.46.240/29 - - 159.226.47.0/24 - - 159.226.48.0/20 - - 159.226.64.0/18 - - 159.226.128.0/18 - - 159.226.192.0/19 - - 159.226.224.0/20 - - 159.226.240.0/21 - - 159.226.248.0/22 - - 159.226.252.0/23 - - 159.226.254.0/30 - - 159.226.254.4/31 - - 159.226.254.8/29 - - 159.226.254.16/28 - - 159.226.254.32/27 - - 159.226.254.64/26 - - 159.226.254.128/26 - - 159.226.254.192/28 - - 159.226.254.208/30 - - 159.226.254.214/31 - - 159.226.254.216/29 - - 159.226.254.224/28 - - 159.226.254.240/29 - - 159.226.254.248/31 - - 159.226.254.252/31 - - 159.226.255.0/24 - - 160.19.208.0/21 - - 160.19.216.0/22 - - 160.20.48.0/22 - - 160.62.10.0/24 - - 160.83.109.0/24 - - 160.83.110.0/23 - - 160.202.60.0/23 - - 160.202.62.0/24 - - 160.202.148.0/22 - - 160.202.152.0/22 - - 160.202.212.0/22 - - 160.202.216.0/21 - - 160.202.224.0/19 - - 160.238.64.0/22 - - 161.163.0.0/21 - - 161.163.28.0/23 - - 161.163.176.0/24 - - 161.163.178.0/23 - - 161.163.180.0/22 - - 161.189.0.0/16 - - 161.207.0.0/16 - - 162.14.24.0/21 - - 162.14.32.0/19 - - 162.14.64.0/18 - - 162.14.128.0/17 - - 162.105.0.0/16 - - 163.0.0.0/16 - - 163.47.4.0/22 - - 163.53.0.0/20 - - 163.53.36.0/22 - - 163.53.40.0/22 - - 163.53.48.0/20 - - 163.53.64.0/22 - - 163.53.88.0/21 - - 163.53.96.0/19 - - 163.53.128.0/21 - - 163.53.136.0/22 - - 163.53.160.0/20 - - 163.53.188.0/22 - - 163.53.220.0/22 - - 163.53.236.0/22 - - 163.53.240.0/22 - - 163.116.202.0/23 - - 163.125.0.0/16 - - 163.142.0.0/16 - - 163.177.0.0/16 - - 163.179.0.0/16 - - 163.204.0.0/16 - - 163.244.246.0/24 - - 164.52.80.0/24 - - 165.156.30.0/24 - - 166.111.0.0/16 - - 167.139.0.0/16 - - 167.189.0.0/16 - - 167.220.244.0/22 - - 168.159.144.0/21 - - 168.159.152.0/22 - - 168.159.156.0/23 - - 168.159.158.0/24 - - 168.160.0.0/16 - - 168.230.0.0/24 - - 170.179.0.0/16 - - 170.225.224.0/23 - - 170.252.152.0/21 - - 171.8.0.0/13 - - 171.22.147.0/24 - - 171.34.0.0/15 - - 171.36.0.0/14 - - 171.40.0.0/13 - - 171.80.0.0/12 - - 171.104.0.0/13 - - 171.112.0.0/12 - - 171.208.0.0/12 - - 172.81.192.0/18 - - 173.39.200.0/23 - - 175.0.0.0/12 - - 175.16.0.0/13 - - 175.24.0.0/14 - - 175.30.0.0/15 - - 175.42.0.0/15 - - 175.44.0.0/16 - - 175.46.0.0/15 - - 175.48.0.0/12 - - 175.64.0.0/11 - - 175.102.0.0/16 - - 175.106.128.0/17 - - 175.111.144.0/20 - - 175.111.160.0/20 - - 175.111.184.0/22 - - 175.146.0.0/15 - - 175.148.0.0/14 - - 175.152.0.0/14 - - 175.158.96.0/22 - - 175.160.0.0/12 - - 175.176.156.0/22 - - 175.176.188.0/22 - - 175.178.0.0/16 - - 175.184.128.0/18 - - 175.185.0.0/16 - - 175.186.0.0/15 - - 175.188.0.0/14 - - 180.76.16.0/20 - - 180.76.32.0/19 - - 180.76.64.0/21 - - 180.76.72.0/22 - - 180.76.77.0/24 - - 180.76.78.0/23 - - 180.76.80.0/20 - - 180.76.96.0/19 - - 180.76.128.0/18 - - 180.76.192.0/19 - - 180.76.224.0/20 - - 180.76.240.0/24 - - 180.76.242.0/23 - - 180.76.244.0/22 - - 180.76.248.0/22 - - 180.76.252.0/23 - - 180.76.255.0/24 - - 180.77.0.0/16 - - 180.78.0.0/15 - - 180.84.0.0/15 - - 180.86.0.0/16 - - 180.88.0.0/14 - - 180.94.56.0/21 - - 180.94.96.0/20 - - 180.94.120.0/21 - - 180.95.128.0/17 - - 180.96.0.0/11 - - 180.129.128.0/17 - - 180.130.0.0/16 - - 180.136.0.0/13 - - 180.148.16.0/21 - - 180.148.152.0/21 - - 180.148.216.0/21 - - 180.148.224.0/19 - - 180.149.128.0/19 - - 180.150.160.0/21 - - 180.150.176.0/20 - - 180.152.0.0/13 - - 180.160.0.0/12 - - 180.178.112.0/21 - - 180.178.192.0/18 - - 180.184.0.0/14 - - 180.188.0.0/17 - - 180.189.148.0/22 - - 180.200.252.0/22 - - 180.201.0.0/16 - - 180.202.0.0/15 - - 180.208.0.0/15 - - 180.210.212.0/22 - - 180.210.233.0/24 - - 180.210.236.0/22 - - 180.212.0.0/15 - - 180.222.224.0/19 - - 180.223.0.0/19 - - 180.223.32.0/20 - - 180.223.48.0/21 - - 180.223.57.0/24 - - 180.223.58.0/23 - - 180.223.60.0/22 - - 180.223.80.0/20 - - 180.223.96.0/19 - - 180.223.128.0/17 - - 180.233.0.0/18 - - 180.233.64.0/19 - - 180.233.144.0/22 - - 180.235.64.0/19 - - 180.235.112.0/22 - - 182.16.144.0/21 - - 182.16.192.0/19 - - 182.18.0.0/17 - - 182.23.184.0/21 - - 182.23.200.0/21 - - 182.32.0.0/12 - - 182.48.96.0/19 - - 182.49.0.0/16 - - 182.50.0.0/22 - - 182.50.8.0/21 - - 182.50.112.0/20 - - 182.51.0.0/16 - - 182.54.0.0/17 - - 182.61.0.0/18 - - 182.61.128.0/19 - - 182.61.192.0/18 - - 182.80.0.0/13 - - 182.88.0.0/14 - - 182.92.0.0/16 - - 182.96.0.0/11 - - 182.128.0.0/12 - - 182.144.0.0/13 - - 182.157.0.0/16 - - 182.160.64.0/19 - - 182.174.0.0/15 - - 182.200.0.0/13 - - 182.236.128.0/17 - - 182.237.24.0/21 - - 182.238.0.0/16 - - 182.239.0.0/19 - - 182.240.0.0/13 - - 182.254.0.0/18 - - 182.254.64.0/19 - - 182.254.96.0/20 - - 182.254.112.0/22 - - 182.254.117.0/24 - - 182.254.119.0/24 - - 182.254.120.0/21 - - 182.254.128.0/18 - - 182.254.192.0/19 - - 182.254.224.0/20 - - 182.254.240.0/21 - - 182.254.248.0/23 - - 182.254.251.0/24 - - 182.254.252.0/22 - - 183.0.0.0/10 - - 183.64.0.0/13 - - 183.78.160.0/21 - - 183.78.180.0/22 - - 183.81.180.0/22 - - 183.84.0.0/15 - - 183.91.128.0/22 - - 183.91.136.0/21 - - 183.91.144.0/20 - - 183.92.0.0/14 - - 183.128.0.0/11 - - 183.160.0.0/13 - - 183.168.0.0/15 - - 183.170.0.0/16 - - 183.172.0.0/14 - - 183.184.0.0/13 - - 183.192.0.0/10 - - 185.109.236.0/24 - - 185.216.118.0/24 - - 185.224.116.0/22 - - 188.43.11.45/32 - - 188.128.15.214/31 - - 188.131.128.0/17 - - 188.254.55.229/32 - - 192.11.23.0/24 - - 192.11.26.0/24 - - 192.11.39.0/24 - - 192.11.236.0/24 - - 192.23.191.0/24 - - 192.55.10.0/23 - - 192.55.40.0/24 - - 192.55.46.0/24 - - 192.55.68.0/22 - - 192.102.204.0/22 - - 192.124.154.0/24 - - 192.137.31.0/24 - - 192.139.136.0/24 - - 192.140.128.0/21 - - 192.140.136.0/22 - - 192.140.156.0/22 - - 192.140.160.0/19 - - 192.140.192.0/20 - - 192.140.208.0/21 - - 192.144.128.0/17 - - 192.163.11.0/24 - - 192.232.97.0/24 - - 193.17.120.0/22 - - 193.20.64.0/22 - - 193.112.0.0/16 - - 193.200.196.0/24 - - 193.200.222.160/28 - - 194.138.136.0/24 - - 194.138.202.0/23 - - 194.138.245.0/24 - - 198.175.100.0/22 - - 198.208.17.0/24 - - 198.208.19.0/24 - - 199.7.72.0/24 - - 199.65.192.0/21 - - 199.244.144.0/24 - - 202.0.100.0/23 - - 202.0.122.0/23 - - 202.1.105.0/24 - - 202.1.106.0/24 - - 202.3.128.0/23 - - 202.4.128.0/19 - - 202.4.252.0/22 - - 202.5.208.0/21 - - 202.5.216.0/22 - - 202.6.6.0/23 - - 202.6.66.0/23 - - 202.6.72.0/23 - - 202.6.87.0/24 - - 202.6.88.0/23 - - 202.6.92.0/23 - - 202.6.103.0/24 - - 202.6.108.0/24 - - 202.6.110.0/23 - - 202.6.114.0/24 - - 202.6.176.0/20 - - 202.8.0.0/24 - - 202.8.2.0/23 - - 202.8.4.0/23 - - 202.8.12.0/24 - - 202.8.24.0/24 - - 202.8.77.0/24 - - 202.8.128.0/19 - - 202.8.192.0/20 - - 202.9.32.0/24 - - 202.9.34.0/23 - - 202.9.48.0/23 - - 202.9.51.0/24 - - 202.9.52.0/23 - - 202.9.54.0/24 - - 202.9.57.0/24 - - 202.9.58.0/23 - - 202.10.64.0/21 - - 202.10.74.0/23 - - 202.10.76.0/22 - - 202.10.112.0/20 - - 202.12.1.0/24 - - 202.12.2.0/24 - - 202.12.17.0/24 - - 202.12.18.0/23 - - 202.12.72.0/24 - - 202.12.84.0/23 - - 202.12.96.0/24 - - 202.12.98.0/23 - - 202.12.106.0/24 - - 202.12.111.0/24 - - 202.12.116.0/24 - - 202.14.64.0/23 - - 202.14.69.0/24 - - 202.14.73.0/24 - - 202.14.74.0/23 - - 202.14.76.0/24 - - 202.14.78.0/23 - - 202.14.88.0/24 - - 202.14.97.0/24 - - 202.14.104.0/23 - - 202.14.108.0/23 - - 202.14.111.0/24 - - 202.14.114.0/23 - - 202.14.118.0/23 - - 202.14.124.0/23 - - 202.14.127.0/24 - - 202.14.129.0/24 - - 202.14.135.0/24 - - 202.14.136.0/24 - - 202.14.149.0/24 - - 202.14.151.0/24 - - 202.14.157.0/24 - - 202.14.158.0/23 - - 202.14.169.0/24 - - 202.14.170.0/23 - - 202.14.172.0/22 - - 202.14.176.0/24 - - 202.14.184.0/23 - - 202.14.208.0/23 - - 202.14.213.0/24 - - 202.14.219.0/24 - - 202.14.220.0/24 - - 202.14.222.0/23 - - 202.14.225.0/24 - - 202.14.226.0/23 - - 202.14.231.0/24 - - 202.14.235.0/24 - - 202.14.236.0/22 - - 202.14.246.0/24 - - 202.14.251.0/24 - - 202.20.66.0/24 - - 202.20.79.0/24 - - 202.20.87.0/24 - - 202.20.88.0/23 - - 202.20.90.0/24 - - 202.20.94.0/23 - - 202.20.114.0/24 - - 202.20.117.0/24 - - 202.20.120.0/24 - - 202.20.125.0/24 - - 202.20.126.0/23 - - 202.21.48.0/20 - - 202.21.131.0/24 - - 202.21.132.0/24 - - 202.21.141.0/24 - - 202.21.142.0/24 - - 202.21.147.0/24 - - 202.21.148.0/24 - - 202.21.150.0/23 - - 202.21.152.0/23 - - 202.21.154.0/24 - - 202.21.156.0/24 - - 202.21.208.0/24 - - 202.22.248.0/21 - - 202.27.12.0/24 - - 202.27.14.0/24 - - 202.27.136.0/23 - - 202.30.124.0/24 - - 202.36.226.0/24 - - 202.38.0.0/22 - - 202.38.8.0/21 - - 202.38.48.0/20 - - 202.38.64.0/18 - - 202.38.128.0/21 - - 202.38.136.0/23 - - 202.38.138.0/24 - - 202.38.140.0/22 - - 202.38.146.0/23 - - 202.38.149.0/24 - - 202.38.150.0/23 - - 202.38.152.0/22 - - 202.38.156.0/24 - - 202.38.158.0/23 - - 202.38.160.0/23 - - 202.38.164.0/22 - - 202.38.168.0/22 - - 202.38.176.0/23 - - 202.38.184.0/21 - - 202.38.192.0/18 - - 202.40.4.0/23 - - 202.40.7.0/24 - - 202.40.15.0/24 - - 202.40.135.0/24 - - 202.40.136.0/24 - - 202.40.140.0/24 - - 202.40.143.0/24 - - 202.40.144.0/23 - - 202.40.150.0/24 - - 202.40.155.0/24 - - 202.40.156.0/24 - - 202.40.158.0/23 - - 202.40.162.0/24 - - 202.41.8.0/23 - - 202.41.11.0/24 - - 202.41.12.0/23 - - 202.41.128.0/24 - - 202.41.130.0/23 - - 202.41.142.0/24 - - 202.41.152.0/21 - - 202.41.192.0/24 - - 202.41.196.0/22 - - 202.41.200.0/22 - - 202.41.240.0/20 - - 202.43.76.0/22 - - 202.43.144.0/20 - - 202.44.16.0/20 - - 202.44.48.0/22 - - 202.44.67.0/24 - - 202.44.74.0/24 - - 202.44.97.0/24 - - 202.44.129.0/24 - - 202.44.132.0/23 - - 202.44.146.0/23 - - 202.45.0.0/23 - - 202.45.2.0/24 - - 202.45.15.0/24 - - 202.45.16.0/20 - - 202.46.16.0/23 - - 202.46.18.0/24 - - 202.46.20.0/23 - - 202.46.128.0/24 - - 202.46.224.0/20 - - 202.47.82.0/23 - - 202.47.96.0/20 - - 202.47.126.0/24 - - 202.47.128.0/24 - - 202.47.130.0/23 - - 202.52.34.0/24 - - 202.52.143.0/24 - - 202.53.140.0/24 - - 202.53.143.0/24 - - 202.53.202.0/24 - - 202.57.212.0/22 - - 202.57.216.0/22 - - 202.57.240.0/20 - - 202.58.0.0/24 - - 202.58.112.0/22 - - 202.59.0.0/23 - - 202.59.212.0/22 - - 202.59.236.0/24 - - 202.59.240.0/24 - - 202.60.48.0/21 - - 202.60.96.0/21 - - 202.60.112.0/20 - - 202.60.132.0/22 - - 202.60.136.0/21 - - 202.60.144.0/20 - - 202.61.68.0/22 - - 202.61.76.0/22 - - 202.61.88.0/22 - - 202.61.123.0/24 - - 202.61.127.0/24 - - 202.62.112.0/22 - - 202.62.248.0/22 - - 202.62.252.0/24 - - 202.62.255.0/24 - - 202.63.80.0/20 - - 202.63.160.0/19 - - 202.63.248.0/22 - - 202.63.253.0/24 - - 202.65.0.0/21 - - 202.65.8.0/23 - - 202.67.0.0/22 - - 202.69.4.0/23 - - 202.69.16.0/20 - - 202.70.0.0/19 - - 202.70.96.0/20 - - 202.70.192.0/20 - - 202.71.32.0/20 - - 202.72.40.0/21 - - 202.72.80.0/20 - - 202.72.112.0/20 - - 202.73.128.0/22 - - 202.73.240.0/20 - - 202.74.8.0/21 - - 202.74.36.0/24 - - 202.74.42.0/24 - - 202.74.52.0/24 - - 202.74.80.0/20 - - 202.74.254.0/23 - - 202.75.208.0/20 - - 202.75.252.0/22 - - 202.76.247.0/24 - - 202.76.252.0/22 - - 202.77.80.0/21 - - 202.77.92.0/22 - - 202.78.8.0/21 - - 202.79.224.0/21 - - 202.79.248.0/22 - - 202.80.192.0/20 - - 202.81.0.0/22 - - 202.81.176.0/20 - - 202.83.252.0/22 - - 202.84.0.0/20 - - 202.84.16.0/23 - - 202.84.22.0/24 - - 202.84.24.0/21 - - 202.85.208.0/20 - - 202.86.249.0/24 - - 202.87.80.0/20 - - 202.88.32.0/22 - - 202.89.8.0/21 - - 202.89.96.0/22 - - 202.89.108.0/22 - - 202.89.119.0/24 - - 202.89.232.0/21 - - 202.90.0.0/22 - - 202.90.16.0/20 - - 202.90.37.0/24 - - 202.90.96.0/19 - - 202.90.193.0/24 - - 202.90.196.0/24 - - 202.90.205.0/24 - - 202.90.224.0/20 - - 202.91.0.0/22 - - 202.91.96.0/20 - - 202.91.128.0/22 - - 202.91.176.0/20 - - 202.91.224.0/19 - - 202.92.0.0/22 - - 202.92.8.0/21 - - 202.92.48.0/20 - - 202.92.252.0/22 - - 202.93.0.0/22 - - 202.93.252.0/22 - - 202.94.0.0/19 - - 202.94.74.0/24 - - 202.94.81.0/24 - - 202.94.92.0/22 - - 202.95.240.0/21 - - 202.95.252.0/22 - - 202.96.0.0/12 - - 202.112.0.0/13 - - 202.120.0.0/15 - - 202.122.0.0/21 - - 202.122.32.0/21 - - 202.122.64.0/19 - - 202.122.112.0/20 - - 202.122.128.0/24 - - 202.122.132.0/24 - - 202.123.96.0/20 - - 202.123.116.0/22 - - 202.123.120.0/22 - - 202.124.16.0/21 - - 202.124.24.0/22 - - 202.125.107.0/24 - - 202.125.109.0/24 - - 202.125.112.0/20 - - 202.125.176.0/20 - - 202.127.0.0/21 - - 202.127.12.0/22 - - 202.127.16.0/20 - - 202.127.40.0/21 - - 202.127.48.0/20 - - 202.127.112.0/20 - - 202.127.128.0/19 - - 202.127.160.0/21 - - 202.127.192.0/20 - - 202.127.208.0/23 - - 202.127.212.0/22 - - 202.127.216.0/21 - - 202.127.224.0/19 - - 202.129.208.0/24 - - 202.130.0.0/19 - - 202.130.39.0/24 - - 202.130.224.0/19 - - 202.131.16.0/21 - - 202.131.59.0/24 - - 202.131.208.0/20 - - 202.133.32.0/20 - - 202.134.58.0/24 - - 202.134.128.0/20 - - 202.134.208.0/20 - - 202.136.48.0/20 - - 202.136.208.0/20 - - 202.136.224.0/20 - - 202.136.248.0/22 - - 202.136.254.0/23 - - 202.137.231.0/24 - - 202.140.140.0/22 - - 202.140.144.0/20 - - 202.141.160.0/19 - - 202.142.16.0/20 - - 202.143.4.0/22 - - 202.143.16.0/20 - - 202.143.32.0/20 - - 202.143.56.0/21 - - 202.143.100.0/22 - - 202.143.104.0/22 - - 202.146.160.0/20 - - 202.146.186.0/24 - - 202.146.188.0/22 - - 202.146.196.0/22 - - 202.146.200.0/21 - - 202.147.144.0/20 - - 202.148.32.0/20 - - 202.148.64.0/18 - - 202.149.32.0/19 - - 202.149.160.0/19 - - 202.149.224.0/19 - - 202.150.16.0/20 - - 202.150.32.0/20 - - 202.150.56.0/22 - - 202.150.192.0/20 - - 202.150.224.0/19 - - 202.151.0.0/22 - - 202.151.128.0/19 - - 202.152.176.0/20 - - 202.153.0.0/22 - - 202.153.7.0/24 - - 202.153.48.0/20 - - 202.157.192.0/19 - - 202.158.160.0/19 - - 202.158.242.0/24 - - 202.160.140.0/22 - - 202.160.156.0/22 - - 202.160.176.0/20 - - 202.162.67.0/24 - - 202.162.75.0/24 - - 202.164.0.0/20 - - 202.164.96.0/19 - - 202.165.176.0/20 - - 202.165.208.0/20 - - 202.165.239.0/24 - - 202.165.240.0/23 - - 202.165.243.0/24 - - 202.165.245.0/24 - - 202.165.251.0/24 - - 202.165.252.0/22 - - 202.166.224.0/19 - - 202.168.80.0/22 - - 202.168.128.0/20 - - 202.168.160.0/19 - - 202.170.128.0/19 - - 202.170.216.0/21 - - 202.170.224.0/19 - - 202.171.216.0/21 - - 202.171.232.0/24 - - 202.171.235.0/24 - - 202.172.0.0/22 - - 202.172.7.0/24 - - 202.173.0.0/22 - - 202.173.6.0/24 - - 202.173.8.0/21 - - 202.173.112.0/22 - - 202.173.224.0/19 - - 202.174.64.0/20 - - 202.174.124.0/22 - - 202.176.224.0/19 - - 202.179.160.0/20 - - 202.179.240.0/20 - - 202.180.128.0/19 - - 202.180.208.0/21 - - 202.181.8.0/22 - - 202.181.28.0/22 - - 202.181.112.0/20 - - 202.182.32.0/20 - - 202.182.192.0/19 - - 202.189.0.0/18 - - 202.189.80.0/20 - - 202.189.184.0/21 - - 202.191.0.0/24 - - 202.191.68.0/22 - - 202.191.72.0/21 - - 202.191.80.0/20 - - 202.192.0.0/12 - - 203.0.4.0/22 - - 203.0.10.0/23 - - 203.0.18.0/24 - - 203.0.24.0/24 - - 203.0.42.0/23 - - 203.0.45.0/24 - - 203.0.46.0/23 - - 203.0.81.0/24 - - 203.0.82.0/23 - - 203.0.90.0/23 - - 203.0.96.0/23 - - 203.0.104.0/21 - - 203.0.114.0/23 - - 203.0.122.0/24 - - 203.0.128.0/24 - - 203.0.130.0/23 - - 203.0.132.0/22 - - 203.0.137.0/24 - - 203.0.142.0/24 - - 203.0.144.0/24 - - 203.0.146.0/24 - - 203.0.148.0/24 - - 203.0.150.0/23 - - 203.0.152.0/24 - - 203.0.177.0/24 - - 203.0.224.0/24 - - 203.1.4.0/22 - - 203.1.18.0/24 - - 203.1.26.0/23 - - 203.1.65.0/24 - - 203.1.66.0/23 - - 203.1.70.0/23 - - 203.1.76.0/23 - - 203.1.90.0/24 - - 203.1.97.0/24 - - 203.1.98.0/23 - - 203.1.100.0/22 - - 203.1.108.0/24 - - 203.1.253.0/24 - - 203.1.254.0/24 - - 203.2.64.0/21 - - 203.2.73.0/24 - - 203.2.112.0/21 - - 203.2.126.0/23 - - 203.2.140.0/24 - - 203.2.150.0/24 - - 203.2.152.0/22 - - 203.2.156.0/23 - - 203.2.160.0/21 - - 203.2.180.0/23 - - 203.2.196.0/23 - - 203.2.209.0/24 - - 203.2.214.0/23 - - 203.2.226.0/23 - - 203.2.229.0/24 - - 203.2.236.0/23 - - 203.3.68.0/24 - - 203.3.72.0/23 - - 203.3.75.0/24 - - 203.3.80.0/21 - - 203.3.96.0/22 - - 203.3.105.0/24 - - 203.3.112.0/21 - - 203.3.120.0/24 - - 203.3.123.0/24 - - 203.3.135.0/24 - - 203.3.139.0/24 - - 203.3.143.0/24 - - 203.4.132.0/23 - - 203.4.134.0/24 - - 203.4.151.0/24 - - 203.4.152.0/22 - - 203.4.174.0/23 - - 203.4.180.0/24 - - 203.4.186.0/24 - - 203.4.205.0/24 - - 203.4.208.0/22 - - 203.4.227.0/24 - - 203.4.230.0/23 - - 203.5.4.0/23 - - 203.5.7.0/24 - - 203.5.8.0/23 - - 203.5.11.0/24 - - 203.5.21.0/24 - - 203.5.22.0/24 - - 203.5.44.0/24 - - 203.5.46.0/23 - - 203.5.52.0/22 - - 203.5.56.0/23 - - 203.5.60.0/23 - - 203.5.114.0/23 - - 203.5.118.0/24 - - 203.5.120.0/24 - - 203.5.172.0/24 - - 203.5.180.0/23 - - 203.5.182.0/24 - - 203.5.185.0/24 - - 203.5.186.0/24 - - 203.5.188.0/23 - - 203.5.190.0/24 - - 203.5.195.0/24 - - 203.5.214.0/23 - - 203.5.218.0/23 - - 203.6.131.0/24 - - 203.6.136.0/24 - - 203.6.138.0/23 - - 203.6.142.0/24 - - 203.6.150.0/23 - - 203.6.157.0/24 - - 203.6.159.0/24 - - 203.6.224.0/20 - - 203.6.248.0/23 - - 203.7.129.0/24 - - 203.7.138.0/23 - - 203.7.147.0/24 - - 203.7.150.0/23 - - 203.7.158.0/24 - - 203.7.192.0/23 - - 203.7.200.0/24 - - 203.8.0.0/24 - - 203.8.8.0/24 - - 203.8.23.0/24 - - 203.8.70.0/24 - - 203.8.82.0/24 - - 203.8.86.0/23 - - 203.8.91.0/24 - - 203.8.110.0/23 - - 203.8.115.0/24 - - 203.8.166.0/23 - - 203.8.169.0/24 - - 203.8.173.0/24 - - 203.8.184.0/24 - - 203.8.186.0/23 - - 203.8.190.0/23 - - 203.8.192.0/24 - - 203.8.197.0/24 - - 203.8.198.0/23 - - 203.8.203.0/24 - - 203.8.209.0/24 - - 203.8.210.0/23 - - 203.8.212.0/22 - - 203.8.217.0/24 - - 203.8.220.0/24 - - 203.9.32.0/24 - - 203.9.36.0/23 - - 203.9.57.0/24 - - 203.9.63.0/24 - - 203.9.65.0/24 - - 203.9.70.0/23 - - 203.9.72.0/24 - - 203.9.75.0/24 - - 203.9.76.0/23 - - 203.9.96.0/22 - - 203.9.100.0/23 - - 203.9.108.0/24 - - 203.9.158.0/24 - - 203.10.34.0/24 - - 203.10.56.0/24 - - 203.10.74.0/23 - - 203.10.84.0/22 - - 203.10.88.0/24 - - 203.10.95.0/24 - - 203.10.125.0/24 - - 203.11.70.0/24 - - 203.11.76.0/22 - - 203.11.82.0/24 - - 203.11.84.0/22 - - 203.11.100.0/22 - - 203.11.109.0/24 - - 203.11.117.0/24 - - 203.11.122.0/24 - - 203.11.126.0/24 - - 203.11.136.0/22 - - 203.11.141.0/24 - - 203.11.142.0/23 - - 203.11.180.0/22 - - 203.11.208.0/22 - - 203.12.16.0/24 - - 203.12.19.0/24 - - 203.12.24.0/24 - - 203.12.57.0/24 - - 203.12.65.0/24 - - 203.12.66.0/24 - - 203.12.70.0/23 - - 203.12.87.0/24 - - 203.12.90.0/24 - - 203.12.92.0/22 - - 203.12.100.0/23 - - 203.12.103.0/24 - - 203.12.114.0/24 - - 203.12.118.0/24 - - 203.12.130.0/24 - - 203.12.137.0/24 - - 203.12.196.0/22 - - 203.12.211.0/24 - - 203.12.219.0/24 - - 203.12.226.0/24 - - 203.12.240.0/22 - - 203.13.18.0/24 - - 203.13.24.0/24 - - 203.13.44.0/23 - - 203.13.88.0/23 - - 203.13.92.0/22 - - 203.13.145.0/24 - - 203.13.173.0/24 - - 203.13.224.0/23 - - 203.13.227.0/24 - - 203.13.233.0/24 - - 203.14.24.0/22 - - 203.14.33.0/24 - - 203.14.56.0/24 - - 203.14.61.0/24 - - 203.14.62.0/24 - - 203.14.104.0/24 - - 203.14.114.0/23 - - 203.14.118.0/24 - - 203.14.162.0/24 - - 203.14.184.0/21 - - 203.14.192.0/24 - - 203.14.194.0/23 - - 203.14.214.0/24 - - 203.14.231.0/24 - - 203.14.246.0/24 - - 203.15.0.0/20 - - 203.15.20.0/23 - - 203.15.22.0/24 - - 203.15.87.0/24 - - 203.15.88.0/23 - - 203.15.105.0/24 - - 203.15.112.0/21 - - 203.15.130.0/23 - - 203.15.149.0/24 - - 203.15.151.0/24 - - 203.15.156.0/22 - - 203.15.174.0/24 - - 203.15.227.0/24 - - 203.15.232.0/21 - - 203.15.240.0/23 - - 203.15.246.0/24 - - 203.16.10.0/24 - - 203.16.12.0/23 - - 203.16.16.0/21 - - 203.16.27.0/24 - - 203.16.38.0/24 - - 203.16.49.0/24 - - 203.16.50.0/23 - - 203.16.58.0/24 - - 203.16.63.0/24 - - 203.16.133.0/24 - - 203.16.161.0/24 - - 203.16.162.0/24 - - 203.16.186.0/23 - - 203.16.228.0/24 - - 203.16.238.0/24 - - 203.16.240.0/24 - - 203.16.245.0/24 - - 203.17.2.0/24 - - 203.17.18.0/24 - - 203.17.28.0/24 - - 203.17.39.0/24 - - 203.17.56.0/24 - - 203.17.74.0/23 - - 203.17.88.0/23 - - 203.17.136.0/24 - - 203.17.164.0/24 - - 203.17.187.0/24 - - 203.17.190.0/23 - - 203.17.231.0/24 - - 203.17.233.0/24 - - 203.17.248.0/23 - - 203.17.255.0/24 - - 203.18.2.0/23 - - 203.18.4.0/24 - - 203.18.7.0/24 - - 203.18.31.0/24 - - 203.18.37.0/24 - - 203.18.48.0/23 - - 203.18.52.0/24 - - 203.18.72.0/22 - - 203.18.80.0/23 - - 203.18.87.0/24 - - 203.18.100.0/23 - - 203.18.105.0/24 - - 203.18.107.0/24 - - 203.18.110.0/24 - - 203.18.129.0/24 - - 203.18.131.0/24 - - 203.18.132.0/23 - - 203.18.144.0/24 - - 203.18.153.0/24 - - 203.18.199.0/24 - - 203.18.208.0/24 - - 203.18.211.0/24 - - 203.18.215.0/24 - - 203.19.1.0/24 - - 203.19.18.0/24 - - 203.19.24.0/24 - - 203.19.30.0/24 - - 203.19.41.0/24 - - 203.19.44.0/23 - - 203.19.46.0/24 - - 203.19.58.0/24 - - 203.19.60.0/23 - - 203.19.64.0/24 - - 203.19.68.0/24 - - 203.19.72.0/24 - - 203.19.101.0/24 - - 203.19.111.0/24 - - 203.19.131.0/24 - - 203.19.133.0/24 - - 203.19.144.0/24 - - 203.19.147.0/24 - - 203.19.149.0/24 - - 203.19.156.0/24 - - 203.19.176.0/24 - - 203.19.178.0/23 - - 203.19.208.0/24 - - 203.19.228.0/22 - - 203.19.233.0/24 - - 203.19.242.0/24 - - 203.19.248.0/23 - - 203.19.255.0/24 - - 203.20.17.0/24 - - 203.20.40.0/23 - - 203.20.44.0/24 - - 203.20.48.0/24 - - 203.20.61.0/24 - - 203.20.65.0/24 - - 203.20.84.0/23 - - 203.20.89.0/24 - - 203.20.106.0/23 - - 203.20.115.0/24 - - 203.20.117.0/24 - - 203.20.118.0/23 - - 203.20.122.0/24 - - 203.20.126.0/23 - - 203.20.135.0/24 - - 203.20.138.0/23 - - 203.20.140.0/22 - - 203.20.150.0/24 - - 203.20.230.0/24 - - 203.20.232.0/24 - - 203.20.236.0/24 - - 203.21.0.0/23 - - 203.21.2.0/24 - - 203.21.8.0/24 - - 203.21.10.0/24 - - 203.21.18.0/24 - - 203.21.33.0/24 - - 203.21.34.0/24 - - 203.21.41.0/24 - - 203.21.44.0/24 - - 203.21.68.0/24 - - 203.21.82.0/24 - - 203.21.96.0/22 - - 203.21.124.0/24 - - 203.21.136.0/23 - - 203.21.145.0/24 - - 203.21.206.0/24 - - 203.22.24.0/24 - - 203.22.28.0/23 - - 203.22.31.0/24 - - 203.22.68.0/24 - - 203.22.76.0/24 - - 203.22.84.0/24 - - 203.22.87.0/24 - - 203.22.92.0/22 - - 203.22.99.0/24 - - 203.22.106.0/24 - - 203.22.122.0/23 - - 203.22.131.0/24 - - 203.22.163.0/24 - - 203.22.166.0/24 - - 203.22.170.0/24 - - 203.22.176.0/21 - - 203.22.194.0/24 - - 203.22.242.0/23 - - 203.22.245.0/24 - - 203.22.246.0/24 - - 203.22.252.0/23 - - 203.23.0.0/24 - - 203.23.47.0/24 - - 203.23.61.0/24 - - 203.23.62.0/23 - - 203.23.73.0/24 - - 203.23.85.0/24 - - 203.23.92.0/22 - - 203.23.98.0/24 - - 203.23.107.0/24 - - 203.23.112.0/24 - - 203.23.130.0/24 - - 203.23.140.0/23 - - 203.23.172.0/24 - - 203.23.182.0/24 - - 203.23.186.0/23 - - 203.23.192.0/24 - - 203.23.197.0/24 - - 203.23.198.0/24 - - 203.23.204.0/22 - - 203.23.224.0/24 - - 203.23.226.0/23 - - 203.23.228.0/22 - - 203.23.249.0/24 - - 203.23.251.0/24 - - 203.24.13.0/24 - - 203.24.18.0/24 - - 203.24.27.0/24 - - 203.24.43.0/24 - - 203.24.56.0/24 - - 203.24.58.0/24 - - 203.24.67.0/24 - - 203.24.74.0/24 - - 203.24.79.0/24 - - 203.24.80.0/23 - - 203.24.84.0/23 - - 203.24.86.0/24 - - 203.24.90.0/24 - - 203.24.111.0/24 - - 203.24.112.0/24 - - 203.24.116.0/24 - - 203.24.122.0/23 - - 203.24.145.0/24 - - 203.24.152.0/23 - - 203.24.157.0/24 - - 203.24.161.0/24 - - 203.24.167.0/24 - - 203.24.186.0/23 - - 203.24.199.0/24 - - 203.24.202.0/24 - - 203.24.212.0/23 - - 203.24.217.0/24 - - 203.24.219.0/24 - - 203.24.244.0/24 - - 203.25.19.0/24 - - 203.25.20.0/23 - - 203.25.46.0/24 - - 203.25.64.0/23 - - 203.25.91.0/24 - - 203.25.99.0/24 - - 203.25.100.0/24 - - 203.25.106.0/24 - - 203.25.131.0/24 - - 203.25.135.0/24 - - 203.25.138.0/24 - - 203.25.147.0/24 - - 203.25.153.0/24 - - 203.25.154.0/23 - - 203.25.164.0/24 - - 203.25.166.0/24 - - 203.25.174.0/23 - - 203.25.180.0/24 - - 203.25.182.0/24 - - 203.25.191.0/24 - - 203.25.199.0/24 - - 203.25.200.0/24 - - 203.25.202.0/23 - - 203.25.208.0/20 - - 203.25.229.0/24 - - 203.25.235.0/24 - - 203.25.236.0/24 - - 203.25.242.0/24 - - 203.26.12.0/24 - - 203.26.34.0/24 - - 203.26.49.0/24 - - 203.26.50.0/24 - - 203.26.55.0/24 - - 203.26.56.0/23 - - 203.26.60.0/24 - - 203.26.65.0/24 - - 203.26.68.0/24 - - 203.26.76.0/24 - - 203.26.80.0/24 - - 203.26.84.0/24 - - 203.26.97.0/24 - - 203.26.102.0/23 - - 203.26.115.0/24 - - 203.26.116.0/24 - - 203.26.129.0/24 - - 203.26.143.0/24 - - 203.26.144.0/24 - - 203.26.148.0/23 - - 203.26.154.0/24 - - 203.26.158.0/23 - - 203.26.161.0/24 - - 203.26.170.0/24 - - 203.26.173.0/24 - - 203.26.176.0/24 - - 203.26.185.0/24 - - 203.26.202.0/23 - - 203.26.210.0/24 - - 203.26.214.0/24 - - 203.26.222.0/24 - - 203.26.224.0/24 - - 203.26.228.0/24 - - 203.26.232.0/24 - - 203.27.0.0/24 - - 203.27.10.0/24 - - 203.27.15.0/24 - - 203.27.16.0/24 - - 203.27.20.0/24 - - 203.27.22.0/23 - - 203.27.40.0/24 - - 203.27.45.0/24 - - 203.27.53.0/24 - - 203.27.65.0/24 - - 203.27.66.0/24 - - 203.27.81.0/24 - - 203.27.88.0/24 - - 203.27.102.0/24 - - 203.27.109.0/24 - - 203.27.117.0/24 - - 203.27.121.0/24 - - 203.27.122.0/23 - - 203.27.125.0/24 - - 203.27.200.0/24 - - 203.27.202.0/24 - - 203.27.233.0/24 - - 203.27.241.0/24 - - 203.27.250.0/24 - - 203.28.10.0/24 - - 203.28.12.0/24 - - 203.28.33.0/24 - - 203.28.34.0/23 - - 203.28.43.0/24 - - 203.28.44.0/24 - - 203.28.54.0/24 - - 203.28.56.0/24 - - 203.28.73.0/24 - - 203.28.74.0/24 - - 203.28.76.0/24 - - 203.28.86.0/24 - - 203.28.88.0/24 - - 203.28.112.0/24 - - 203.28.131.0/24 - - 203.28.136.0/24 - - 203.28.140.0/24 - - 203.28.145.0/24 - - 203.28.165.0/24 - - 203.28.169.0/24 - - 203.28.170.0/24 - - 203.28.178.0/23 - - 203.28.185.0/24 - - 203.28.187.0/24 - - 203.28.196.0/24 - - 203.28.226.0/23 - - 203.28.239.0/24 - - 203.29.2.0/24 - - 203.29.8.0/23 - - 203.29.13.0/24 - - 203.29.14.0/24 - - 203.29.28.0/24 - - 203.29.46.0/24 - - 203.29.57.0/24 - - 203.29.61.0/24 - - 203.29.63.0/24 - - 203.29.69.0/24 - - 203.29.73.0/24 - - 203.29.81.0/24 - - 203.29.90.0/24 - - 203.29.95.0/24 - - 203.29.100.0/24 - - 203.29.103.0/24 - - 203.29.112.0/24 - - 203.29.120.0/22 - - 203.29.182.0/23 - - 203.29.187.0/24 - - 203.29.189.0/24 - - 203.29.190.0/24 - - 203.29.205.0/24 - - 203.29.210.0/24 - - 203.29.217.0/24 - - 203.29.227.0/24 - - 203.29.231.0/24 - - 203.29.233.0/24 - - 203.29.234.0/24 - - 203.29.248.0/24 - - 203.29.254.0/23 - - 203.30.16.0/23 - - 203.30.25.0/24 - - 203.30.29.0/24 - - 203.30.66.0/24 - - 203.30.81.0/24 - - 203.30.87.0/24 - - 203.30.111.0/24 - - 203.30.121.0/24 - - 203.30.123.0/24 - - 203.30.152.0/24 - - 203.30.156.0/24 - - 203.30.162.0/24 - - 203.30.173.0/24 - - 203.30.175.0/24 - - 203.30.187.0/24 - - 203.30.194.0/24 - - 203.30.217.0/24 - - 203.30.220.0/24 - - 203.30.222.0/24 - - 203.30.232.0/23 - - 203.30.235.0/24 - - 203.30.240.0/23 - - 203.30.246.0/24 - - 203.30.250.0/23 - - 203.31.45.0/24 - - 203.31.46.0/24 - - 203.31.49.0/24 - - 203.31.51.0/24 - - 203.31.54.0/23 - - 203.31.69.0/24 - - 203.31.72.0/24 - - 203.31.80.0/24 - - 203.31.85.0/24 - - 203.31.97.0/24 - - 203.31.105.0/24 - - 203.31.106.0/24 - - 203.31.108.0/23 - - 203.31.124.0/24 - - 203.31.162.0/24 - - 203.31.174.0/24 - - 203.31.177.0/24 - - 203.31.181.0/24 - - 203.31.187.0/24 - - 203.31.189.0/24 - - 203.31.204.0/24 - - 203.31.220.0/24 - - 203.31.222.0/23 - - 203.31.225.0/24 - - 203.31.229.0/24 - - 203.31.248.0/23 - - 203.31.253.0/24 - - 203.32.20.0/24 - - 203.32.48.0/23 - - 203.32.56.0/24 - - 203.32.60.0/24 - - 203.32.62.0/24 - - 203.32.68.0/23 - - 203.32.76.0/24 - - 203.32.81.0/24 - - 203.32.84.0/23 - - 203.32.95.0/24 - - 203.32.102.0/24 - - 203.32.105.0/24 - - 203.32.130.0/24 - - 203.32.133.0/24 - - 203.32.140.0/24 - - 203.32.152.0/24 - - 203.32.186.0/23 - - 203.32.192.0/24 - - 203.32.196.0/24 - - 203.32.203.0/24 - - 203.32.204.0/23 - - 203.32.212.0/24 - - 203.33.4.0/24 - - 203.33.7.0/24 - - 203.33.12.0/23 - - 203.33.21.0/24 - - 203.33.26.0/24 - - 203.33.32.0/24 - - 203.33.63.0/24 - - 203.33.64.0/24 - - 203.33.67.0/24 - - 203.33.68.0/24 - - 203.33.73.0/24 - - 203.33.79.0/24 - - 203.33.100.0/24 - - 203.33.122.0/24 - - 203.33.129.0/24 - - 203.33.131.0/24 - - 203.33.145.0/24 - - 203.33.156.0/24 - - 203.33.158.0/23 - - 203.33.174.0/24 - - 203.33.185.0/24 - - 203.33.200.0/24 - - 203.33.202.0/23 - - 203.33.204.0/24 - - 203.33.206.0/23 - - 203.33.214.0/23 - - 203.33.224.0/23 - - 203.33.226.0/24 - - 203.33.233.0/24 - - 203.33.243.0/24 - - 203.33.250.0/24 - - 203.34.4.0/24 - - 203.34.21.0/24 - - 203.34.27.0/24 - - 203.34.39.0/24 - - 203.34.48.0/23 - - 203.34.54.0/24 - - 203.34.56.0/23 - - 203.34.67.0/24 - - 203.34.69.0/24 - - 203.34.76.0/24 - - 203.34.92.0/24 - - 203.34.106.0/24 - - 203.34.113.0/24 - - 203.34.147.0/24 - - 203.34.150.0/24 - - 203.34.152.0/23 - - 203.34.161.0/24 - - 203.34.162.0/24 - - 203.34.187.0/24 - - 203.34.192.0/21 - - 203.34.204.0/22 - - 203.34.232.0/24 - - 203.34.240.0/24 - - 203.34.242.0/24 - - 203.34.245.0/24 - - 203.34.251.0/24 - - 203.55.2.0/23 - - 203.55.4.0/24 - - 203.55.10.0/24 - - 203.55.13.0/24 - - 203.55.22.0/24 - - 203.55.30.0/24 - - 203.55.93.0/24 - - 203.55.101.0/24 - - 203.55.109.0/24 - - 203.55.110.0/24 - - 203.55.116.0/23 - - 203.55.119.0/24 - - 203.55.128.0/23 - - 203.55.146.0/23 - - 203.55.192.0/24 - - 203.55.196.0/24 - - 203.55.218.0/23 - - 203.55.221.0/24 - - 203.55.224.0/24 - - 203.56.1.0/24 - - 203.56.4.0/24 - - 203.56.12.0/24 - - 203.56.24.0/24 - - 203.56.38.0/24 - - 203.56.40.0/24 - - 203.56.46.0/24 - - 203.56.50.0/23 - - 203.56.52.0/22 - - 203.56.68.0/23 - - 203.56.82.0/23 - - 203.56.84.0/23 - - 203.56.95.0/24 - - 203.56.110.0/24 - - 203.56.121.0/24 - - 203.56.161.0/24 - - 203.56.169.0/24 - - 203.56.172.0/23 - - 203.56.175.0/24 - - 203.56.183.0/24 - - 203.56.185.0/24 - - 203.56.187.0/24 - - 203.56.192.0/24 - - 203.56.198.0/24 - - 203.56.201.0/24 - - 203.56.208.0/23 - - 203.56.210.0/24 - - 203.56.214.0/24 - - 203.56.216.0/24 - - 203.56.227.0/24 - - 203.56.228.0/24 - - 203.56.232.0/24 - - 203.56.240.0/24 - - 203.56.252.0/24 - - 203.56.254.0/24 - - 203.57.5.0/24 - - 203.57.6.0/24 - - 203.57.12.0/23 - - 203.57.28.0/24 - - 203.57.39.0/24 - - 203.57.46.0/24 - - 203.57.58.0/24 - - 203.57.61.0/24 - - 203.57.66.0/24 - - 203.57.69.0/24 - - 203.57.70.0/23 - - 203.57.73.0/24 - - 203.57.90.0/24 - - 203.57.101.0/24 - - 203.57.109.0/24 - - 203.57.123.0/24 - - 203.57.157.0/24 - - 203.57.200.0/24 - - 203.57.202.0/24 - - 203.57.206.0/24 - - 203.57.222.0/24 - - 203.57.224.0/20 - - 203.57.246.0/23 - - 203.57.249.0/24 - - 203.57.253.0/24 - - 203.57.254.0/23 - - 203.62.2.0/24 - - 203.62.131.0/24 - - 203.62.139.0/24 - - 203.62.161.0/24 - - 203.62.197.0/24 - - 203.62.228.0/22 - - 203.62.234.0/24 - - 203.62.246.0/24 - - 203.65.240.0/22 - - 203.76.160.0/22 - - 203.76.168.0/22 - - 203.76.208.0/21 - - 203.76.216.0/22 - - 203.76.240.0/22 - - 203.77.180.0/22 - - 203.78.48.0/20 - - 203.78.156.0/22 - - 203.79.0.0/20 - - 203.80.4.0/23 - - 203.80.32.0/20 - - 203.80.57.0/24 - - 203.80.129.0/24 - - 203.80.132.0/22 - - 203.80.140.0/22 - - 203.80.144.0/20 - - 203.81.0.0/21 - - 203.81.16.0/20 - - 203.81.244.0/22 - - 203.82.0.0/23 - - 203.82.16.0/21 - - 203.82.112.0/20 - - 203.82.224.0/20 - - 203.83.0.0/22 - - 203.83.12.0/22 - - 203.83.56.0/21 - - 203.83.224.0/20 - - 203.86.0.0/18 - - 203.86.64.0/19 - - 203.86.250.0/24 - - 203.86.254.0/23 - - 203.88.32.0/19 - - 203.88.100.0/22 - - 203.88.192.0/19 - - 203.89.0.0/22 - - 203.89.100.0/22 - - 203.89.136.0/22 - - 203.89.144.0/24 - - 203.90.0.0/22 - - 203.90.8.0/21 - - 203.90.128.0/18 - - 203.90.192.0/19 - - 203.91.32.0/19 - - 203.91.96.0/20 - - 203.91.120.0/21 - - 203.92.0.0/22 - - 203.92.6.0/24 - - 203.92.160.0/19 - - 203.93.0.0/16 - - 203.94.0.0/19 - - 203.95.0.0/21 - - 203.95.96.0/19 - - 203.95.128.0/18 - - 203.95.200.0/21 - - 203.95.208.0/22 - - 203.95.224.0/19 - - 203.99.8.0/21 - - 203.99.16.0/22 - - 203.99.30.0/23 - - 203.99.80.0/20 - - 203.100.32.0/20 - - 203.100.58.0/24 - - 203.100.60.0/24 - - 203.100.63.0/24 - - 203.100.80.0/20 - - 203.100.96.0/19 - - 203.100.192.0/20 - - 203.104.32.0/20 - - 203.105.96.0/19 - - 203.105.128.0/19 - - 203.107.0.0/19 - - 203.107.32.0/20 - - 203.107.52.0/22 - - 203.107.56.0/21 - - 203.107.69.0/24 - - 203.107.70.0/23 - - 203.107.72.0/21 - - 203.107.80.0/20 - - 203.107.96.0/19 - - 203.110.160.0/19 - - 203.110.208.0/20 - - 203.110.232.0/23 - - 203.110.234.0/24 - - 203.114.80.0/20 - - 203.114.244.0/22 - - 203.118.192.0/19 - - 203.118.241.0/24 - - 203.118.248.0/22 - - 203.119.24.0/23 - - 203.119.32.0/24 - - 203.119.34.0/23 - - 203.119.80.0/22 - - 203.119.85.0/24 - - 203.119.113.0/24 - - 203.119.114.0/23 - - 203.119.116.0/22 - - 203.119.120.0/21 - - 203.119.128.0/17 - - 203.123.58.0/24 - - 203.128.32.0/19 - - 203.128.96.0/19 - - 203.128.128.0/24 - - 203.128.224.0/21 - - 203.130.32.0/20 - - 203.132.32.0/19 - - 203.134.240.0/22 - - 203.134.246.0/23 - - 203.135.96.0/19 - - 203.135.160.0/20 - - 203.142.12.0/23 - - 203.142.219.0/24 - - 203.142.224.0/19 - - 203.145.0.0/19 - - 203.148.0.0/18 - - 203.148.64.0/20 - - 203.148.80.0/22 - - 203.148.86.0/23 - - 203.149.92.0/22 - - 203.152.64.0/19 - - 203.152.128.0/19 - - 203.153.0.0/22 - - 203.156.192.0/18 - - 203.158.16.0/21 - - 203.160.129.0/24 - - 203.160.192.0/19 - - 203.160.225.14/31 - - 203.160.225.206/31 - - 203.161.0.0/22 - - 203.161.180.0/24 - - 203.161.183.0/24 - - 203.161.192.0/19 - - 203.166.160.0/19 - - 203.167.28.0/22 - - 203.168.0.0/19 - - 203.170.58.0/23 - - 203.171.0.0/22 - - 203.171.208.0/24 - - 203.171.224.0/20 - - 203.174.4.0/24 - - 203.174.6.0/24 - - 203.174.96.0/20 - - 203.175.128.0/19 - - 203.175.192.0/18 - - 203.176.0.0/18 - - 203.176.64.0/19 - - 203.176.168.0/21 - - 203.181.102.42/32 - - 203.181.102.58/32 - - 203.184.80.0/20 - - 203.187.160.0/19 - - 203.189.0.0/23 - - 203.189.6.0/23 - - 203.189.112.0/22 - - 203.189.192.0/19 - - 203.189.240.0/22 - - 203.190.96.0/20 - - 203.190.249.0/24 - - 203.191.0.0/23 - - 203.191.2.0/24 - - 203.191.5.0/24 - - 203.191.7.0/24 - - 203.191.29.0/24 - - 203.191.31.0/24 - - 203.191.64.0/18 - - 203.191.133.0/24 - - 203.191.144.0/20 - - 203.192.0.0/19 - - 203.193.224.0/19 - - 203.195.64.0/19 - - 203.195.128.0/17 - - 203.196.0.0/20 - - 203.196.28.0/22 - - 203.201.181.0/24 - - 203.201.182.0/24 - - 203.202.236.0/22 - - 203.205.64.0/19 - - 203.207.64.0/18 - - 203.207.128.0/17 - - 203.208.0.0/20 - - 203.208.16.0/22 - - 203.208.32.0/19 - - 203.208.146.0/31 - - 203.208.146.76/31 - - 203.208.151.106/31 - - 203.208.171.60/31 - - 203.208.171.80/31 - - 203.209.224.0/19 - - 203.212.0.0/20 - - 203.212.80.0/20 - - 203.215.146.0/24 - - 203.217.164.0/22 - - 203.223.0.0/20 - - 203.223.16.0/24 - - 203.223.22.0/24 - - 203.234.255.174/32 - - 203.234.255.178/32 - - 204.55.160.0/24 - - 204.74.96.0/24 - - 204.114.176.0/23 - - 206.219.44.0/23 - - 206.219.50.0/23 - - 206.219.52.0/23 - - 207.68.174.8/29 - - 207.89.20.0/24 - - 210.2.0.0/23 - - 210.2.2.0/24 - - 210.2.5.0/24 - - 210.2.6.0/23 - - 210.2.8.0/21 - - 210.2.24.0/21 - - 210.5.0.0/19 - - 210.5.56.0/29 - - 210.5.56.8/30 - - 210.5.56.12/32 - - 210.5.56.15/32 - - 210.5.56.64/27 - - 210.5.60.0/24 - - 210.5.128.0/19 - - 210.7.56.0/21 - - 210.12.0.0/15 - - 210.14.64.0/19 - - 210.14.112.0/20 - - 210.14.128.0/17 - - 210.15.0.0/17 - - 210.15.128.0/18 - - 210.16.128.0/21 - - 210.16.136.0/22 - - 210.16.156.0/22 - - 210.16.160.0/19 - - 210.21.0.0/16 - - 210.22.0.0/16 - - 210.23.32.0/19 - - 210.25.0.0/16 - - 210.26.0.0/15 - - 210.28.0.0/14 - - 210.32.0.0/12 - - 210.51.0.0/16 - - 210.52.0.0/18 - - 210.52.64.0/23 - - 210.52.66.0/24 - - 210.52.68.0/22 - - 210.52.72.0/21 - - 210.52.80.0/20 - - 210.52.96.0/21 - - 210.52.104.0/22 - - 210.52.108.0/24 - - 210.52.110.0/23 - - 210.52.112.0/20 - - 210.52.128.0/22 - - 210.52.132.0/25 - - 210.52.132.128/26 - - 210.52.132.192/27 - - 210.52.132.224/30 - - 210.52.132.228/31 - - 210.52.132.231/32 - - 210.52.132.232/31 - - 210.52.132.235/32 - - 210.52.132.236/30 - - 210.52.132.240/28 - - 210.52.133.0/24 - - 210.52.134.0/23 - - 210.52.136.0/21 - - 210.52.144.0/20 - - 210.52.160.0/19 - - 210.52.192.0/18 - - 210.53.0.0/18 - - 210.53.64.0/19 - - 210.53.96.0/20 - - 210.53.112.0/21 - - 210.53.120.0/22 - - 210.53.124.0/23 - - 210.53.126.0/25 - - 210.53.126.128/28 - - 210.53.126.144/29 - - 210.53.126.156/30 - - 210.53.126.160/27 - - 210.53.126.192/27 - - 210.53.126.224/28 - - 210.53.126.244/30 - - 210.53.126.252/30 - - 210.53.127.4/30 - - 210.53.127.8/29 - - 210.53.127.16/30 - - 210.53.127.24/29 - - 210.53.127.32/27 - - 210.53.127.64/26 - - 210.53.127.128/25 - - 210.53.128.0/17 - - 210.56.192.0/19 - - 210.72.0.0/14 - - 210.76.0.0/15 - - 210.78.0.0/16 - - 210.79.64.0/18 - - 210.79.224.0/19 - - 210.82.0.0/15 - - 210.87.128.0/18 - - 210.185.192.0/18 - - 210.192.96.0/19 - - 211.22.33.60/31 - - 211.22.33.112/31 - - 211.22.33.224/31 - - 211.40.6.110/31 - - 211.40.6.158/32 - - 211.64.0.0/13 - - 211.72.233.104/31 - - 211.72.233.108/31 - - 211.72.233.112/31 - - 211.72.233.116/31 - - 211.72.233.120/31 - - 211.72.233.124/31 - - 211.72.233.136/31 - - 211.72.233.140/31 - - 211.72.233.176/31 - - 211.72.233.180/31 - - 211.72.233.184/31 - - 211.72.233.188/31 - - 211.72.233.192/31 - - 211.72.233.196/31 - - 211.72.233.200/31 - - 211.72.233.204/31 - - 211.72.233.208/31 - - 211.72.233.212/31 - - 211.72.233.216/31 - - 211.72.233.220/31 - - 211.72.233.224/31 - - 211.72.233.228/31 - - 211.72.233.236/31 - - 211.72.233.240/31 - - 211.80.0.0/12 - - 211.96.0.0/14 - - 211.100.0.0/17 - - 211.100.128.0/19 - - 211.100.160.0/20 - - 211.100.184.0/21 - - 211.100.192.0/18 - - 211.101.0.0/16 - - 211.102.0.0/15 - - 211.136.0.0/13 - - 211.144.0.0/13 - - 211.152.0.0/17 - - 211.152.134.0/23 - - 211.152.138.0/23 - - 211.152.140.0/22 - - 211.152.150.0/23 - - 211.152.157.0/24 - - 211.152.158.0/23 - - 211.152.160.0/19 - - 211.152.192.0/18 - - 211.153.0.0/16 - - 211.154.0.0/19 - - 211.154.32.0/20 - - 211.154.48.0/21 - - 211.154.64.0/18 - - 211.154.128.0/17 - - 211.155.0.0/18 - - 211.155.67.0/24 - - 211.155.68.0/24 - - 211.155.72.0/21 - - 211.155.80.0/20 - - 211.155.97.0/24 - - 211.155.98.0/23 - - 211.155.100.0/22 - - 211.155.104.0/21 - - 211.155.113.0/24 - - 211.155.117.0/24 - - 211.155.118.0/23 - - 211.155.120.0/21 - - 211.155.128.0/17 - - 211.156.0.0/18 - - 211.156.64.0/19 - - 211.156.96.0/21 - - 211.156.104.0/22 - - 211.156.108.0/23 - - 211.156.112.0/20 - - 211.156.128.0/17 - - 211.157.0.0/16 - - 211.158.0.0/15 - - 211.160.0.0/13 - - 212.64.0.0/17 - - 212.129.128.0/17 - - 218.0.0.0/12 - - 218.16.0.0/13 - - 218.24.0.0/14 - - 218.28.0.0/15 - - 218.30.0.0/19 - - 218.30.64.0/18 - - 218.30.128.0/18 - - 218.30.192.0/19 - - 218.30.224.0/20 - - 218.30.240.0/21 - - 218.30.248.0/22 - - 218.30.252.0/25 - - 218.30.252.128/26 - - 218.30.252.194/31 - - 218.30.252.196/30 - - 218.30.252.200/29 - - 218.30.252.208/28 - - 218.30.252.224/27 - - 218.30.253.0/24 - - 218.30.254.0/23 - - 218.31.0.0/16 - - 218.56.0.0/13 - - 218.64.0.0/11 - - 218.96.0.0/15 - - 218.98.0.0/18 - - 218.98.96.0/21 - - 218.98.104.0/22 - - 218.98.108.0/23 - - 218.98.110.0/24 - - 218.98.112.0/20 - - 218.98.128.0/19 - - 218.98.192.0/18 - - 218.99.0.0/16 - - 218.100.96.0/19 - - 218.100.128.0/17 - - 218.104.0.0/16 - - 218.105.0.0/17 - - 218.105.128.0/26 - - 218.105.128.64/31 - - 218.105.128.67/32 - - 218.105.128.68/31 - - 218.105.128.71/32 - - 218.105.128.72/29 - - 218.105.128.80/28 - - 218.105.128.96/27 - - 218.105.128.128/25 - - 218.105.129.0/24 - - 218.105.130.0/23 - - 218.105.132.0/22 - - 218.105.136.0/21 - - 218.105.144.0/20 - - 218.105.160.0/19 - - 218.105.192.0/18 - - 218.106.0.0/15 - - 218.108.0.0/15 - - 218.185.192.0/19 - - 218.192.0.0/12 - - 218.240.0.0/14 - - 218.244.0.0/15 - - 218.246.0.0/17 - - 218.246.129.0/24 - - 218.246.131.0/24 - - 218.246.132.0/23 - - 218.246.134.0/24 - - 218.246.139.0/24 - - 218.246.144.0/20 - - 218.246.160.0/19 - - 218.246.192.0/18 - - 218.247.0.0/18 - - 218.247.96.0/19 - - 218.247.128.0/17 - - 218.249.0.0/16 - - 219.72.0.0/16 - - 219.82.0.0/16 - - 219.83.128.0/17 - - 219.90.68.0/22 - - 219.90.72.0/21 - - 219.128.0.0/11 - - 219.216.0.0/13 - - 219.224.0.0/13 - - 219.232.0.0/15 - - 219.234.0.0/21 - - 219.234.9.0/24 - - 219.234.10.0/23 - - 219.234.12.0/22 - - 219.234.32.0/19 - - 219.234.64.0/18 - - 219.234.128.0/17 - - 219.235.0.0/16 - - 219.236.0.0/14 - - 219.242.0.0/15 - - 219.244.0.0/14 - - 220.101.192.0/18 - - 220.112.0.0/14 - - 220.152.128.0/17 - - 220.154.0.0/15 - - 220.158.241.0/24 - - 220.158.243.0/24 - - 220.160.0.0/11 - - 220.192.0.0/12 - - 220.231.0.0/18 - - 220.231.128.0/17 - - 220.232.64.0/18 - - 220.234.0.0/16 - - 220.242.0.0/24 - - 220.242.12.0/23 - - 220.242.14.0/24 - - 220.242.17.0/24 - - 220.242.18.0/23 - - 220.242.20.0/24 - - 220.242.32.0/20 - - 220.242.48.0/23 - - 220.242.53.0/24 - - 220.242.55.0/24 - - 220.242.56.0/22 - - 220.242.60.0/23 - - 220.242.62.0/24 - - 220.242.64.0/19 - - 220.242.96.0/20 - - 220.242.112.0/21 - - 220.242.120.0/22 - - 220.242.124.0/23 - - 220.242.126.0/24 - - 220.242.173.0/24 - - 220.242.197.0/24 - - 220.242.205.0/24 - - 220.242.206.0/23 - - 220.242.214.0/23 - - 220.242.216.0/21 - - 220.242.224.0/19 - - 220.243.0.0/17 - - 220.243.128.0/18 - - 220.243.204.0/24 - - 220.243.214.0/24 - - 220.243.217.0/24 - - 220.243.218.0/24 - - 220.243.238.0/24 - - 220.247.136.0/21 - - 220.248.0.0/14 - - 220.252.0.0/16 - - 221.0.0.0/13 - - 221.8.0.0/14 - - 221.12.0.0/17 - - 221.12.128.0/18 - - 221.13.0.0/16 - - 221.14.0.0/15 - - 221.122.0.0/15 - - 221.128.128.0/17 - - 221.129.0.0/16 - - 221.130.0.0/15 - - 221.133.224.0/19 - - 221.136.0.0/15 - - 221.172.0.0/14 - - 221.176.0.0/19 - - 221.176.32.0/20 - - 221.176.48.0/21 - - 221.176.56.0/24 - - 221.176.58.0/23 - - 221.176.60.0/22 - - 221.176.64.0/18 - - 221.176.128.0/17 - - 221.177.0.0/16 - - 221.178.0.0/15 - - 221.180.0.0/14 - - 221.192.0.0/14 - - 221.196.0.0/15 - - 221.198.0.0/16 - - 221.199.0.0/17 - - 221.199.128.0/18 - - 221.199.192.0/20 - - 221.199.224.0/19 - - 221.200.0.0/13 - - 221.208.0.0/12 - - 221.224.0.0/12 - - 222.16.0.0/12 - - 222.32.0.0/11 - - 222.64.0.0/11 - - 222.125.0.0/16 - - 222.126.128.0/25 - - 222.126.128.128/27 - - 222.126.128.160/30 - - 222.126.128.164/31 - - 222.126.128.178/31 - - 222.126.128.180/30 - - 222.126.128.184/29 - - 222.126.128.192/26 - - 222.126.129.0/24 - - 222.126.130.0/24 - - 222.126.131.0/28 - - 222.126.131.16/30 - - 222.126.131.20/31 - - 222.126.131.22/32 - - 222.126.131.24/29 - - 222.126.131.32/27 - - 222.126.131.64/26 - - 222.126.131.128/25 - - 222.126.132.0/22 - - 222.126.136.0/21 - - 222.126.144.0/20 - - 222.126.160.0/21 - - 222.126.168.0/22 - - 222.126.172.0/23 - - 222.126.174.40/29 - - 222.126.174.76/30 - - 222.126.174.88/29 - - 222.126.174.144/28 - - 222.126.178.0/23 - - 222.126.180.0/22 - - 222.126.184.0/21 - - 222.126.192.0/21 - - 222.126.200.104/29 - - 222.126.206.0/23 - - 222.126.208.0/22 - - 222.126.212.0/26 - - 222.126.212.64/27 - - 222.126.212.96/28 - - 222.126.212.112/29 - - 222.126.212.128/25 - - 222.126.213.0/24 - - 222.126.214.0/23 - - 222.126.216.0/21 - - 222.126.224.0/19 - - 222.128.0.0/12 - - 222.160.0.0/14 - - 222.168.0.0/13 - - 222.176.0.0/12 - - 222.192.0.0/11 - - 222.240.0.0/13 - - 222.248.0.0/15 - - 223.0.0.0/14 - - 223.4.0.0/16 - - 223.5.0.0/22 - - 223.5.4.0/24 - - 223.5.6.0/23 - - 223.5.8.0/21 - - 223.5.16.0/20 - - 223.5.32.0/19 - - 223.5.64.0/18 - - 223.5.128.0/17 - - 223.6.0.0/22 - - 223.6.4.0/23 - - 223.6.7.0/24 - - 223.6.8.0/21 - - 223.6.16.0/20 - - 223.6.32.0/19 - - 223.6.64.0/18 - - 223.6.128.0/17 - - 223.7.0.0/16 - - 223.8.0.0/13 - - 223.20.0.0/15 - - 223.27.184.0/22 - - 223.29.208.0/22 - - 223.29.252.0/22 - - 223.64.0.0/11 - - 223.96.0.0/12 - - 223.112.0.0/14 - - 223.116.0.0/15 - - 223.120.0.0/13 - - 223.128.0.0/15 - - 223.144.0.0/12 - - 223.160.0.0/14 - - 223.166.0.0/15 - - 223.192.0.0/15 - - 223.198.0.0/15 - - 223.201.4.0/22 - - 223.201.8.0/21 - - 223.201.16.0/20 - - 223.201.32.0/19 - - 223.201.64.0/18 - - 223.201.128.0/17 - - 223.202.0.0/15 - - 223.208.0.0/13 - - 223.220.0.0/15 - - 223.223.176.0/20 - - 223.223.192.0/20 - - 223.240.0.0/13 - - 223.248.0.0/14 - - 223.252.128.0/19 - - 223.252.192.0/18 - - 223.254.0.0/16 - - 223.255.0.0/17 - - 223.255.236.0/22 - - 223.255.252.0/23 \ No newline at end of file diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/F1_TV b/luci-app-openclash/root/etc/openclash/rule_provider/F1_TV deleted file mode 100644 index dafc7212..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/F1_TV +++ /dev/null @@ -1,10 +0,0 @@ -payload: - # > F1 TV - - DOMAIN,d2n9h2wits23hf.cloudfront.net - - DOMAIN,f1prodlive.akamaized.net - - DOMAIN,mobile-collector.newrelic.com - - DOMAIN-SUFFIX,bitmovin.com - - DOMAIN-SUFFIX,f1esports.com - - DOMAIN-SUFFIX,f1manager.com - - DOMAIN-SUFFIX,f1play.com - - DOMAIN-SUFFIX,formula1.com diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/FCM b/luci-app-openclash/root/etc/openclash/rule_provider/FCM deleted file mode 100644 index 1b60530e..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/FCM +++ /dev/null @@ -1,37 +0,0 @@ -payload: - # > Google FCM - - DOMAIN,alt1-mtalk.google.com - - DOMAIN,alt2-mtalk.google.com - - DOMAIN,alt3-mtalk.google.com - - DOMAIN,alt4-mtalk.google.com - - DOMAIN,alt5-mtalk.google.com - - DOMAIN,alt6-mtalk.google.com - - DOMAIN,alt7-mtalk.google.com - - DOMAIN,alt8-mtalk.google.com - - DOMAIN,mtalk.google.com - - IP-CIDR,64.233.177.188/32,no-resolve - - IP-CIDR,64.233.186.188/32,no-resolve - - IP-CIDR,64.233.187.188/32,no-resolve - - IP-CIDR,64.233.188.188/32,no-resolve - - IP-CIDR,64.233.189.188/32,no-resolve - - IP-CIDR,74.125.23.188/32,no-resolve - - IP-CIDR,74.125.24.188/32,no-resolve - - IP-CIDR,74.125.28.188/32,no-resolve - - IP-CIDR,74.125.127.188/32,no-resolve - - IP-CIDR,74.125.137.188/32,no-resolve - - IP-CIDR,74.125.203.188/32,no-resolve - - IP-CIDR,74.125.204.188/32,no-resolve - - IP-CIDR,74.125.206.188/32,no-resolve - - IP-CIDR,108.177.125.188/32,no-resolve - - IP-CIDR,142.250.4.188/32,no-resolve - - IP-CIDR,142.250.10.188/32,no-resolve - - IP-CIDR,142.250.31.188/32,no-resolve - - IP-CIDR,142.250.96.188/32,no-resolve - - IP-CIDR,172.217.194.188/32,no-resolve - - IP-CIDR,172.217.218.188/32,no-resolve - - IP-CIDR,172.217.219.188/32,no-resolve - - IP-CIDR,172.253.63.188/32,no-resolve - - IP-CIDR,172.253.122.188/32,no-resolve - - IP-CIDR,173.194.175.188/32,no-resolve - - IP-CIDR,173.194.218.188/32,no-resolve - - IP-CIDR,209.85.233.188/32,no-resolve \ No newline at end of file diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/Fox+ b/luci-app-openclash/root/etc/openclash/rule_provider/Fox+ deleted file mode 100644 index ed3a6395..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/Fox+ +++ /dev/null @@ -1,6 +0,0 @@ -payload: - # > Fox+ (HK|TW|SG) - # - USER-AGENT,FOXPlus* - - DOMAIN-SUFFIX,akamaized.net - - DOMAIN-SUFFIX,foxplus.com - - DOMAIN-SUFFIX,theplatform.com diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/Fox_Now b/luci-app-openclash/root/etc/openclash/rule_provider/Fox_Now deleted file mode 100644 index a4117115..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/Fox_Now +++ /dev/null @@ -1,6 +0,0 @@ -payload: - # > Fox Now - # - USER-AGENT,FOX%20NOW* - - DOMAIN-SUFFIX,fox.com - - DOMAIN-SUFFIX,foxdcg.com - - DOMAIN-SUFFIX,uplynk.com diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/Google FCM b/luci-app-openclash/root/etc/openclash/rule_provider/Google FCM deleted file mode 100644 index 1b60530e..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/Google FCM +++ /dev/null @@ -1,37 +0,0 @@ -payload: - # > Google FCM - - DOMAIN,alt1-mtalk.google.com - - DOMAIN,alt2-mtalk.google.com - - DOMAIN,alt3-mtalk.google.com - - DOMAIN,alt4-mtalk.google.com - - DOMAIN,alt5-mtalk.google.com - - DOMAIN,alt6-mtalk.google.com - - DOMAIN,alt7-mtalk.google.com - - DOMAIN,alt8-mtalk.google.com - - DOMAIN,mtalk.google.com - - IP-CIDR,64.233.177.188/32,no-resolve - - IP-CIDR,64.233.186.188/32,no-resolve - - IP-CIDR,64.233.187.188/32,no-resolve - - IP-CIDR,64.233.188.188/32,no-resolve - - IP-CIDR,64.233.189.188/32,no-resolve - - IP-CIDR,74.125.23.188/32,no-resolve - - IP-CIDR,74.125.24.188/32,no-resolve - - IP-CIDR,74.125.28.188/32,no-resolve - - IP-CIDR,74.125.127.188/32,no-resolve - - IP-CIDR,74.125.137.188/32,no-resolve - - IP-CIDR,74.125.203.188/32,no-resolve - - IP-CIDR,74.125.204.188/32,no-resolve - - IP-CIDR,74.125.206.188/32,no-resolve - - IP-CIDR,108.177.125.188/32,no-resolve - - IP-CIDR,142.250.4.188/32,no-resolve - - IP-CIDR,142.250.10.188/32,no-resolve - - IP-CIDR,142.250.31.188/32,no-resolve - - IP-CIDR,142.250.96.188/32,no-resolve - - IP-CIDR,172.217.194.188/32,no-resolve - - IP-CIDR,172.217.218.188/32,no-resolve - - IP-CIDR,172.217.219.188/32,no-resolve - - IP-CIDR,172.253.63.188/32,no-resolve - - IP-CIDR,172.253.122.188/32,no-resolve - - IP-CIDR,173.194.175.188/32,no-resolve - - IP-CIDR,173.194.218.188/32,no-resolve - - IP-CIDR,209.85.233.188/32,no-resolve \ No newline at end of file diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/HBO b/luci-app-openclash/root/etc/openclash/rule_provider/HBO deleted file mode 100644 index df7c3622..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/HBO +++ /dev/null @@ -1,23 +0,0 @@ -payload: - # > HBO Max - - PROCESS-NAME,com.hbo.hbonow - - DOMAIN-SUFFIX,hbo.com - - DOMAIN-SUFFIX,hbogo.com - - DOMAIN-SUFFIX,hbonow.com - - DOMAIN-SUFFIX,hbomax.com - - DOMAIN-SUFFIX,hbomaxcdn.com - - # > HBO GO - - DOMAIN,44wilhpljf.execute-api.ap-southeast-1.amazonaws.com - - DOMAIN,bcbolthboa-a.akamaihd.net - - DOMAIN,cf-images.ap-southeast-1.prod.boltdns.net - - DOMAIN,dai3fd1oh325y.cloudfront.net - - DOMAIN,hboasia1-i.akamaihd.net - - DOMAIN,hboasia2-i.akamaihd.net - - DOMAIN,hboasia3-i.akamaihd.net - - DOMAIN,hboasia4-i.akamaihd.net - - DOMAIN,hboasia5-i.akamaihd.net - - DOMAIN,players.brightcove.net - - DOMAIN,s3-ap-southeast-1.amazonaws.com - - DOMAIN-SUFFIX,hbogoasia.com - - DOMAIN-SUFFIX,hbogoasia.hk diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/HBO_Go b/luci-app-openclash/root/etc/openclash/rule_provider/HBO_Go deleted file mode 100644 index f27836f1..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/HBO_Go +++ /dev/null @@ -1,21 +0,0 @@ -payload: - # > HBO Max - # - USER-AGENT,HBO%20GO%20PROD* - - # - DOMAIN-KEYWORD,hboasia - - DOMAIN-KEYWORD,hbogoasia - - - DOMAIN-SUFFIX,hboasia.com - - DOMAIN-SUFFIX,hbogo.co.th - - DOMAIN-SUFFIX,hbogo.com - - DOMAIN-SUFFIX,hbogo.eu - - DOMAIN-SUFFIX,hbogoasia.com - - DOMAIN-SUFFIX,hbogoasia.id - - DOMAIN-SUFFIX,hbogoasia.ph - - - DOMAIN,hbolb.onwardsmg.com - - DOMAIN,hbounify-prod.evergent.com - # - DOMAIN,bcbolthboa-a.akamaihd.net - - DOMAIN,dai3fd1oh325y.cloudfront.net - # - DOMAIN,hboasialive.akamaized.net - # - DOMAIN,hbogoprod-vod.akamaized.net \ No newline at end of file diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/HBO_Max b/luci-app-openclash/root/etc/openclash/rule_provider/HBO_Max deleted file mode 100644 index 6aca8d7e..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/HBO_Max +++ /dev/null @@ -1,11 +0,0 @@ -payload: - # > HBO Max - # - USER-AGENT,HBOMAX* - - - DOMAIN-SUFFIX,hbo.com - - DOMAIN-SUFFIX,hbomax.com - - DOMAIN-SUFFIX,hbomaxcdn.com - - DOMAIN-SUFFIX,hbonow.com - - DOMAIN-SUFFIX,hbomax.com - - - DOMAIN,execute-api.ap-southeast-1.amazonaws.com \ No newline at end of file diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/Hulu b/luci-app-openclash/root/etc/openclash/rule_provider/Hulu deleted file mode 100644 index e1f4de7c..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/Hulu +++ /dev/null @@ -1,23 +0,0 @@ -payload: - # > Hulu - - PROCESS-NAME,com.hulu.plus - - - DOMAIN-SUFFIX,hulu.com - - DOMAIN-SUFFIX,hulu.hb.omtrdc.net - - DOMAIN-SUFFIX,hulu.sc.omtrdc.net - - DOMAIN-SUFFIX,huluad.com - - DOMAIN-SUFFIX,huluim.com - - DOMAIN-SUFFIX,hulumail.com - - DOMAIN-SUFFIX,huluqa.com - - DOMAIN-SUFFIX,hulustream.com - - - DOMAIN,cs428.wpc.edgecastcdn.net - - DOMAIN,cws-hulu.conviva.com - - DOMAIN,hulu.com.c.footprint.net - - DOMAIN,hulu.map.fastly.net - - - IP-CIDR,8.28.124.0/23 - - IP-CIDR,199.60.116.0/24 - - IP-CIDR,199.200.48.0/22 - - IP-CIDR,208.91.156.0/22 - - IP-CIDR6,2620:100:3000::/40 \ No newline at end of file diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/Hulu_Japan b/luci-app-openclash/root/etc/openclash/rule_provider/Hulu_Japan deleted file mode 100644 index 5f21bf32..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/Hulu_Japan +++ /dev/null @@ -1,8 +0,0 @@ -payload: - # > Hulu(フールー) - - PROCESS-NAME,jp.happyon.android - - DOMAIN-SUFFIX,happyon.jp - - DOMAIN-SUFFIX,hulu.jp - - DOMAIN-SUFFIX,prod.hjholdings.tv - - DOMAIN-SUFFIX,streaks.jp - - DOMAIN-SUFFIX,yb.uncn.jp diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/IQI b/luci-app-openclash/root/etc/openclash/rule_provider/IQI deleted file mode 100644 index ce91b8de..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/IQI +++ /dev/null @@ -1,31 +0,0 @@ -payload: - # > iQIYI Intl - # - USER-AGENT,iQIYI* - # - USER-AGENT,QIYIVideo* - # - USER-AGENT,QYPlayer* - # - USER-AGENT,QTP* - # - PROCESS-NAME,com.iqiyi.i18n - # - PROCESS-NAME,com.iqiyi.i18n.tv - - DOMAIN-SUFFIX,inter.iqiyi.com - - DOMAIN-SUFFIX,iq.com - # 首页 - - DOMAIN-SUFFIX,intl.iqiyi.com - # 历史 - - DOMAIN,intl-rcd.iqiyi.com - # 收藏 - - DOMAIN,intl-subscription.iqiyi.com - # 播放 - - IP-CIDR,104.85.165.17/32,no-resolve - - IP-CIDR,110.238.107.47/32,no-resolve - - IP-CIDR,118.26.32.162/32,no-resolve - - IP-CIDR,159.138.102.146/32,no-resolve - - IP-CIDR,184.51.102.0/24,no-resolve - - IP-CIDR,203.74.95.130/28,no-resolve - - IP-CIDR,203.80.97.203/32,no-resolve - - IP-CIDR,210.71.227.202/32,no-resolve - - IP-CIDR,23.200.145.146/32,no-resolve - - IP-CIDR,23.210.215.186/32,no-resolve - - IP-CIDR,23.211.15.0/24,no-resolve - - IP-CIDR,23.219.172.0/24,no-resolve - - IP-CIDR,23.40.242.10/32,no-resolve - - IP-CIDR,23.59.252.0/24,no-resolve diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/IQYI b/luci-app-openclash/root/etc/openclash/rule_provider/IQYI deleted file mode 100644 index bbfddcb2..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/IQYI +++ /dev/null @@ -1,12 +0,0 @@ -payload: - # > IQIYI - # - USER-AGENT,*QIYI* - # - USER-AGENT,iQiYi* - - DOMAIN-SUFFIX,iqiyi.com - - DOMAIN-SUFFIX,iqiyipic.com - - DOMAIN-SUFFIX,iq.com - - DOMAIN-SUFFIX,qy.net - - DOMAIN-SUFFIX,gitv.tv - - DOMAIN-SUFFIX,71.am - - DOMAIN-KEYWORD,qiyi - - DOMAIN,cache.video.iqiyi.com diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/JOOX b/luci-app-openclash/root/etc/openclash/rule_provider/JOOX deleted file mode 100644 index ebc4e6e7..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/JOOX +++ /dev/null @@ -1,6 +0,0 @@ -payload: - # > JOOX - - PROCESS-NAME,com.tencent.ibg.joox - - PROCESS-NAME,com.tencent.ibg.jooxtv - - DOMAIN-SUFFIX,joox.com - - DOMAIN-KEYWORD,jooxweb-api diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/Japonx b/luci-app-openclash/root/etc/openclash/rule_provider/Japonx deleted file mode 100644 index 728c4add..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/Japonx +++ /dev/null @@ -1,12 +0,0 @@ -payload: - # > Japonx - - DOMAIN-KEYWORD,japonx - - DOMAIN-KEYWORD,japronx - - DOMAIN-SUFFIX,japonx.com - - DOMAIN-SUFFIX,japonx.tv - - DOMAIN-SUFFIX,japonx.net - - DOMAIN-SUFFIX,japonx.vip - - DOMAIN-SUFFIX,japronx.com - - DOMAIN-SUFFIX,japronx.tv - - DOMAIN-SUFFIX,japronx.net - - DOMAIN-SUFFIX,japronx.vip diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/KKBOX b/luci-app-openclash/root/etc/openclash/rule_provider/KKBOX deleted file mode 100644 index f185218a..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/KKBOX +++ /dev/null @@ -1,5 +0,0 @@ -payload: - # > KKBOX - - DOMAIN-SUFFIX,kkbox.com - - DOMAIN-SUFFIX,kkbox.com.tw - - DOMAIN-SUFFIX,kfs.io diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/KKTV b/luci-app-openclash/root/etc/openclash/rule_provider/KKTV deleted file mode 100644 index 0eaebe47..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/KKTV +++ /dev/null @@ -1,6 +0,0 @@ -payload: - # > KKTV - - PROCESS-NAME,com.kktv.kktv - - DOMAIN-SUFFIX,kktv.me - - DOMAIN-SUFFIX,kktv.com.tw - - DOMAIN,kktv-theater.kk.stream diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/LAN b/luci-app-openclash/root/etc/openclash/rule_provider/LAN deleted file mode 100644 index 5e362d94..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/LAN +++ /dev/null @@ -1,9 +0,0 @@ -payload: - - DOMAIN-SUFFIX,local - - IP-CIDR,127.0.0.0/8 - - IP-CIDR,172.16.0.0/12 - - IP-CIDR,192.168.0.0/16 - - IP-CIDR,10.0.0.0/8 - - IP-CIDR,17.0.0.0/8 - - IP-CIDR,100.64.0.0/10 - - IP-CIDR6,fe80::/10 diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/Letv b/luci-app-openclash/root/etc/openclash/rule_provider/Letv deleted file mode 100644 index ce63fc93..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/Letv +++ /dev/null @@ -1,3 +0,0 @@ -payload: - # > letv - - DOMAIN-SUFFIX,api.mob.app.letv.com diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/Line_TV b/luci-app-openclash/root/etc/openclash/rule_provider/Line_TV deleted file mode 100644 index 40630e35..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/Line_TV +++ /dev/null @@ -1,6 +0,0 @@ -payload: - # > Line TV - # - USER-AGENT,LINE* - - DOMAIN-SUFFIX,d3c7rimkq79yfu.cloudfront.net - - DOMAIN-SUFFIX,linetv.tw - - DOMAIN-SUFFIX,profile.line-scdn.net diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/Microsoft b/luci-app-openclash/root/etc/openclash/rule_provider/Microsoft deleted file mode 100644 index f7523d9a..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/Microsoft +++ /dev/null @@ -1,608 +0,0 @@ -payload: - # > Microsoft - - DOMAIN-SUFFIX,here.com - - DOMAIN-SUFFIX,here.net - - DOMAIN-SUFFIX,heremaps.cn - - DOMAIN-SUFFIX,ovi.com.cn - - - DOMAIN-SUFFIX,azure - - DOMAIN-SUFFIX,azure-apim.net - - DOMAIN-SUFFIX,azure-dns.com - - DOMAIN-SUFFIX,azure-dns.info - - DOMAIN-SUFFIX,azure-dns.net - - DOMAIN-SUFFIX,azure-dns.org - - DOMAIN-SUFFIX,azure-mobile.net - - DOMAIN-SUFFIX,azure-sphere.com - - DOMAIN-SUFFIX,azure-test.net - - DOMAIN-SUFFIX,azure.cn - - DOMAIN-SUFFIX,azure.com - - DOMAIN-SUFFIX,azure.net - - DOMAIN-SUFFIX,azurecomcdn.net - - DOMAIN-SUFFIX,azurecontainer.io - - DOMAIN-SUFFIX,azurecosmos.net - - DOMAIN-SUFFIX,azurecosmosdb.com - - DOMAIN-SUFFIX,azurecosmosdb.info - - DOMAIN-SUFFIX,azurecosmosdb.net - - DOMAIN-SUFFIX,azuredatabricks.net - - DOMAIN-SUFFIX,azuredevopslaunch.com - - DOMAIN-SUFFIX,azuredigitaltwin.com - - DOMAIN-SUFFIX,azuredigitaltwins.com - - DOMAIN-SUFFIX,azuredigitaltwins.net - - DOMAIN-SUFFIX,azuredns-prd.info - - DOMAIN-SUFFIX,azuredns-prd.org - - DOMAIN-SUFFIX,azureedge-test.net - - DOMAIN-SUFFIX,azureedge.net - - DOMAIN-SUFFIX,azurefd.net - - DOMAIN-SUFFIX,azurefd.us - - DOMAIN-SUFFIX,azureiotcentral.com - - DOMAIN-SUFFIX,azureiotsolutions.com - - DOMAIN-SUFFIX,azureiotsuite.com - - DOMAIN-SUFFIX,azureplanetscale.info - - DOMAIN-SUFFIX,azureplanetscale.net - - DOMAIN-SUFFIX,azureserviceprofiler.com - - DOMAIN-SUFFIX,azuresmartspaces.net - - DOMAIN-SUFFIX,azurestackvalidation.com - - DOMAIN-SUFFIX,azurewebsites.net - - DOMAIN-SUFFIX,chinacloudapi.cn - - DOMAIN-SUFFIX,chinacloudapp.cn - - DOMAIN-SUFFIX,chinacloudsites.cn - - DOMAIN-SUFFIX,cosmosdb.info - - DOMAIN-SUFFIX,cosmosdb.net - - DOMAIN-SUFFIX,devopsms.com - - DOMAIN-SUFFIX,gotcosmos.com - - DOMAIN-SUFFIX,microsofteca.com - - DOMAIN-SUFFIX,microsoftiotcentral.com - - DOMAIN-SUFFIX,serverlesslibrary.net - - DOMAIN-SUFFIX,signalr.net - - DOMAIN-SUFFIX,tryfunctions.com - - DOMAIN-SUFFIX,windowsazure.cn - - DOMAIN-SUFFIX,windowsazure.com - - DOMAIN-SUFFIX,azure.microsoft.com - - DOMAIN-SUFFIX,azuremarketplace.microsoft.com - - - DOMAIN-SUFFIX,bbing.com - - DOMAIN-SUFFIX,bibg.com - - DOMAIN-SUFFIX,biing.com - - DOMAIN-SUFFIX,binb.com - - DOMAIN-SUFFIX,binf.com - - DOMAIN-SUFFIX,bing - - DOMAIN-SUFFIX,bing.com - - DOMAIN-SUFFIX,bing.com.cn - - DOMAIN-SUFFIX,bing.net - - DOMAIN-SUFFIX,bing123.com - - DOMAIN-SUFFIX,bing135.com - - DOMAIN-SUFFIX,bing4.com - - DOMAIN-SUFFIX,bingads.com - - DOMAIN-SUFFIX,bingagencyawards.com - - DOMAIN-SUFFIX,bingapis.com - - DOMAIN-SUFFIX,bingapistatistics.com - - DOMAIN-SUFFIX,binginternal.com - - DOMAIN-SUFFIX,bingit.net - - DOMAIN-SUFFIX,bingiton.com - - DOMAIN-SUFFIX,bingj.com - - DOMAIN-SUFFIX,bingpix.com - - DOMAIN-SUFFIX,bingpk.com - - DOMAIN-SUFFIX,bings.com - - DOMAIN-SUFFIX,bingsandbox.com - - DOMAIN-SUFFIX,bingtoolbar.com - - DOMAIN-SUFFIX,bingtranslator.com - - DOMAIN-SUFFIX,bingvisualsearch.com - - DOMAIN-SUFFIX,bingworld.com - - DOMAIN-SUFFIX,biying.cn - - DOMAIN-SUFFIX,biying.com - - DOMAIN-SUFFIX,biying.com.cn - - DOMAIN-SUFFIX,bluehatnights.com - - DOMAIN-SUFFIX,dictate.ms - - DOMAIN-SUFFIX,discoverbing.com - - DOMAIN-SUFFIX,explorebing.com - - DOMAIN-SUFFIX,flipwithsurface.com - - DOMAIN-SUFFIX,mapblast.com - - DOMAIN-SUFFIX,mappoint.com - - DOMAIN-SUFFIX,masalladeloslimites.com - - DOMAIN-SUFFIX,microsoft-give.com - - DOMAIN-SUFFIX,microsoftcloudsummit.com - - DOMAIN-SUFFIX,microsoftdiplomados.com - - DOMAIN-SUFFIX,microsoftlatamholiday.com - - DOMAIN-SUFFIX,microsoftmxfilantropia.com - - DOMAIN-SUFFIX,microsoftpartnersolutions.com - - DOMAIN-SUFFIX,msnmaps.com - - DOMAIN-SUFFIX,msunlimitedcloudsummit.com - - DOMAIN-SUFFIX,myhomemsn.com - - DOMAIN-SUFFIX,office365love.com - - DOMAIN-SUFFIX,office365tw.com - - DOMAIN-SUFFIX,osdinfra.net - - DOMAIN-SUFFIX,renovacionoffice.com - - DOMAIN-SUFFIX,sprinklesapp.com - - DOMAIN-SUFFIX,working-bing-int.com - - DOMAIN-SUFFIX,bj1.api.bing.com - - DOMAIN-SUFFIX,emoi-cncdn.bing.com - - DOMAIN-SUFFIX,cn.bing.com - - DOMAIN-SUFFIX,cn.bing.net - - DOMAIN-SUFFIX,ditu.live.com - - - DOMAIN-SUFFIX,a-msedge.net - - DOMAIN-SUFFIX,c-msedge.net - - DOMAIN-SUFFIX,e-msedge.net - - DOMAIN-SUFFIX,edgesuite.net - - DOMAIN-SUFFIX,evoke-windowsservices-tas.msedge - - DOMAIN-SUFFIX,microsoftedge.com - - DOMAIN-SUFFIX,microsoftedgeinsider.com - - DOMAIN-SUFFIX,msedge.net - - DOMAIN-SUFFIX,s-msedge.net - - - DOMAIN-SUFFIX,femalefounderscomp.com - - DOMAIN-SUFFIX,m12.vc - - - DOMAIN-SUFFIX,adaptivecards.io - - DOMAIN-SUFFIX,api-extractor.com - - DOMAIN-SUFFIX,apisof.net - - DOMAIN-SUFFIX,appcenter.ms - - DOMAIN-SUFFIX,blazor.net - - DOMAIN-SUFFIX,botframework.com - - DOMAIN-SUFFIX,codethemicrobit.com - - DOMAIN-SUFFIX,devopsassessment.net - - DOMAIN-SUFFIX,dot.net - - DOMAIN-SUFFIX,exp-tas.com - - DOMAIN-SUFFIX,gamesstack.com - - DOMAIN-SUFFIX,graphengine.io - - DOMAIN-SUFFIX,insiderdevtour.com - - DOMAIN-SUFFIX,jwt.ms - - DOMAIN-SUFFIX,microbit.org - - DOMAIN-SUFFIX,microsoftadc.com - - DOMAIN-SUFFIX,microsoftgamestack.com - - DOMAIN-SUFFIX,microsoftiotinsiderlabs.com - - DOMAIN-SUFFIX,microsoftreactor.cn - - DOMAIN-SUFFIX,microsoftreactor.com.cn - - DOMAIN-SUFFIX,microsoftreactor.info - - DOMAIN-SUFFIX,microsoftreactor.net - - DOMAIN-SUFFIX,microsoftreactor.org - - DOMAIN-SUFFIX,microsoftsilverlight.com - - DOMAIN-SUFFIX,microsoftsilverlight.net - - DOMAIN-SUFFIX,microsoftsilverlight.org - - DOMAIN-SUFFIX,microsoftsqlserver.com - - DOMAIN-SUFFIX,mmdnn.com - - DOMAIN-SUFFIX,mono-project.com - - DOMAIN-SUFFIX,msdn.com - - DOMAIN-SUFFIX,msinnovationchallenge.com - - DOMAIN-SUFFIX,mspairlift.com - - DOMAIN-SUFFIX,msropendata.com - - DOMAIN-SUFFIX,nuget.org - - DOMAIN-SUFFIX,nugettest.org - - DOMAIN-SUFFIX,opentranslatorstothings.org - - DOMAIN-SUFFIX,poshtestgallery.com - - DOMAIN-SUFFIX,pwabuilder.com - - DOMAIN-SUFFIX,reactorms.com.cn - - DOMAIN-SUFFIX,sankie.net - - DOMAIN-SUFFIX,sqlserveronlinux.com - - DOMAIN-SUFFIX,timelinestoryteller.com - - DOMAIN-SUFFIX,uwpcommunitytoolkit.com - - DOMAIN-SUFFIX,vfsforgit.com - - DOMAIN-SUFFIX,vfsforgit.org - - DOMAIN-SUFFIX,xamarin.com - - DOMAIN-SUFFIX,developer.microsoft.com - - DOMAIN-SUFFIX,dtlgalleryint.cloudapp.net - - DOMAIN-SUFFIX,poshtestgallery.cloudapp.net - - DOMAIN-SUFFIX,psg-int-centralus.cloudapp.net - - DOMAIN-SUFFIX,psg-int-eastus.cloudapp.net - - - DOMAIN-SUFFIX,microsoft-online.cn - - DOMAIN-SUFFIX,microsoft-online.com.cn - - DOMAIN-SUFFIX,microsoftnews.cc - - DOMAIN-SUFFIX,microsoftnews.cn - - DOMAIN-SUFFIX,microsoftnews.com - - DOMAIN-SUFFIX,microsoftnews.net - - DOMAIN-SUFFIX,microsoftnews.org - - DOMAIN-SUFFIX,microsoftnewsforkids.com - - DOMAIN-SUFFIX,microsoftnewsforkids.net - - DOMAIN-SUFFIX,microsoftnewsforkids.org - - DOMAIN-SUFFIX,microsoftnewskids.com - - DOMAIN-SUFFIX,microsoftnewskids.net - - DOMAIN-SUFFIX,microsoftnewskids.org - - DOMAIN-SUFFIX,microsoftol.com - - DOMAIN-SUFFIX,microsoftol.com.cn - - DOMAIN-SUFFIX,microsoftusercontent.com - - DOMAIN-SUFFIX,msn.cn - - DOMAIN-SUFFIX,msn.com - - DOMAIN-SUFFIX,msn.com.cn - - DOMAIN-SUFFIX,msn.com.nsatc.net - - DOMAIN-SUFFIX,msn.com.tw - - DOMAIN-SUFFIX,msnewskids.com - - DOMAIN-SUFFIX,msnewskids.net - - DOMAIN-SUFFIX,msnewskids.org - - DOMAIN-SUFFIX,msnkids.com - - DOMAIN-SUFFIX,winmp.cn - - - DOMAIN-SUFFIX,o365cn.com - - DOMAIN-SUFFIX,o365files.cn - - DOMAIN-SUFFIX,o365weve-dev.com - - DOMAIN-SUFFIX,o365weve-ppe.com - - DOMAIN-SUFFIX,o365weve.com - - DOMAIN-SUFFIX,office - - DOMAIN-SUFFIX,office.com - - DOMAIN-SUFFIX,office.net - - DOMAIN-SUFFIX,office365.com - - DOMAIN-SUFFIX,officedev.cn - - - DOMAIN-SUFFIX,1drv.com - - DOMAIN-SUFFIX,1drv.ms - - DOMAIN-SUFFIX,livefilestore.com - - DOMAIN-SUFFIX,onedrive.co - - DOMAIN-SUFFIX,onedrive.co.uk - - DOMAIN-SUFFIX,onedrive.com - - DOMAIN-SUFFIX,onedrive.eu - - DOMAIN-SUFFIX,onedrive.live.com - - DOMAIN-SUFFIX,onedrive.net - - DOMAIN-SUFFIX,onedrive.org - - DOMAIN-SUFFIX,storage.live.com - - - DOMAIN-SUFFIX,groupme.com - - DOMAIN-SUFFIX,skype.com - - DOMAIN-SUFFIX,skype.net - - DOMAIN-SUFFIX,skypeassets.com - - DOMAIN-SUFFIX,skypeassets.net - - DOMAIN-SUFFIX,skypeforbusiness.com - - - DOMAIN-SUFFIX,sway-cdn.com - - DOMAIN-SUFFIX,sway-extensions.com - - DOMAIN-SUFFIX,sway.com - - - DOMAIN-SUFFIX,visualstudio-staging.com - - DOMAIN-SUFFIX,visualstudio.co - - DOMAIN-SUFFIX,visualstudio.co.uk - - DOMAIN-SUFFIX,visualstudio.com - - DOMAIN-SUFFIX,visualstudio.eu - - DOMAIN-SUFFIX,visualstudio.net - - DOMAIN-SUFFIX,vsassets.io - - DOMAIN-SUFFIX,vscode-unpkg.net - - DOMAIN-SUFFIX,vscode-webview.net - - DOMAIN-SUFFIX,vscode.dev - - - DOMAIN-SUFFIX,live.cn - - DOMAIN-SUFFIX,live.com.akadns.net - - DOMAIN-SUFFIX,sclive.net - - DOMAIN-SUFFIX,windowslive.cn - - DOMAIN-SUFFIX,wlxrs.com - - - DOMAIN-SUFFIX,aicscience.com - - DOMAIN-SUFFIX,mmais.com.cn - - DOMAIN-SUFFIX,msminico.cn - - DOMAIN-SUFFIX,msminico.com.cn - - DOMAIN-SUFFIX,msxiaobing.com - - DOMAIN-SUFFIX,msxiaoice.com - - DOMAIN-SUFFIX,msxiaona.cn - - DOMAIN-SUFFIX,officeplus.cn - - DOMAIN-SUFFIX,renlifang.com - - - DOMAIN-SUFFIX,cortana.ai - - DOMAIN-SUFFIX,cortanaanalytics.com - - DOMAIN-SUFFIX,cortanaskills.com - - - DOMAIN-SUFFIX,forzamotorsport.net - - DOMAIN-SUFFIX,forzaracingchampionship.com - - DOMAIN-SUFFIX,forzarc.com - - DOMAIN-SUFFIX,gamepass.com - - DOMAIN-SUFFIX,msgamestudios.com - - DOMAIN-SUFFIX,orithegame.com - - DOMAIN-SUFFIX,renovacionxboxlive.com - - DOMAIN-SUFFIX,tellmewhygame.com - - DOMAIN-SUFFIX,xbox.co - - DOMAIN-SUFFIX,xbox.com - - DOMAIN-SUFFIX,xbox.eu - - DOMAIN-SUFFIX,xbox.org - - DOMAIN-SUFFIX,xbox360.co - - DOMAIN-SUFFIX,xbox360.com - - DOMAIN-SUFFIX,xbox360.eu - - DOMAIN-SUFFIX,xbox360.org - - DOMAIN-SUFFIX,xboxab.com - - DOMAIN-SUFFIX,xboxgamepass.com - - DOMAIN-SUFFIX,xboxgamestudios.com - - DOMAIN-SUFFIX,xboxlive.cn - - DOMAIN-SUFFIX,xboxlive.com - - DOMAIN-SUFFIX,xboxone.co - - DOMAIN-SUFFIX,xboxone.com - - DOMAIN-SUFFIX,xboxone.eu - - DOMAIN-SUFFIX,xboxplayanywhere.com - - DOMAIN-SUFFIX,xboxservices.com - - DOMAIN-SUFFIX,xboxstudios.com - - DOMAIN-SUFFIX,xbx.lv - - - DOMAIN-SUFFIX,callersbane.com - - DOMAIN-SUFFIX,minecraft.net - - DOMAIN-SUFFIX,minecraftshop.com - - DOMAIN-SUFFIX,mojang.com - - - DOMAIN-SUFFIX,beth.games - - DOMAIN-SUFFIX,bethesda.net - - DOMAIN-SUFFIX,bethesdagamestudios.com - - DOMAIN-SUFFIX,bethsoft.com - - - DOMAIN-SUFFIX,Applicationinsights.io - - DOMAIN-SUFFIX,Applicationinsights.net - - DOMAIN-SUFFIX,aadrm.com - - DOMAIN-SUFFIX,acompli.net - - DOMAIN-SUFFIX,aka.ms - - DOMAIN-SUFFIX,ankarazirvesi2018.com - - DOMAIN-SUFFIX,applicationinsights.io - - DOMAIN-SUFFIX,applicationinsights.net - - DOMAIN-SUFFIX,aria.ms - - DOMAIN-SUFFIX,asp.net - - DOMAIN-SUFFIX,aspnetcdn.com - - DOMAIN-SUFFIX,assets-yammer.com - - DOMAIN-SUFFIX,azurerms.com - - DOMAIN-SUFFIX,binads.com - - DOMAIN-SUFFIX,bluehatil.com - - DOMAIN-SUFFIX,boswp.com - - DOMAIN-SUFFIX,brazilpartneruniversity.com - - DOMAIN-SUFFIX,breakdown.me - - DOMAIN-SUFFIX,centralvalidation.com - - DOMAIN-SUFFIX,ch9.ms - - DOMAIN-SUFFIX,charticulator.com - - DOMAIN-SUFFIX,cloudapp.net - - DOMAIN-SUFFIX,cloudappsecurity.com - - DOMAIN-SUFFIX,crmdynint-gcc.com - - DOMAIN-SUFFIX,crmdynint.com - - DOMAIN-SUFFIX,crossborderexpansion.com - - DOMAIN-SUFFIX,docs.com - - DOMAIN-SUFFIX,dwh5.com - - DOMAIN-SUFFIX,dynamics.com - - DOMAIN-SUFFIX,efproject.net - - DOMAIN-SUFFIX,engkoo.com - - DOMAIN-SUFFIX,fasttrackreadysupport.com - - DOMAIN-SUFFIX,fluidpreview.com - - DOMAIN-SUFFIX,footprintdns.com - - DOMAIN-SUFFIX,gameuxmasterguide.com - - DOMAIN-SUFFIX,gears5.com - - DOMAIN-SUFFIX,gearspop.com - - DOMAIN-SUFFIX,gearstactics.com - - DOMAIN-SUFFIX,getmicrosoftkey.com - - DOMAIN-SUFFIX,gfx.ms - - DOMAIN-SUFFIX,gigjam.com - - DOMAIN-SUFFIX,helpshift.com - - DOMAIN-SUFFIX,hockeyapp.net - - DOMAIN-SUFFIX,hololens.com - - DOMAIN-SUFFIX,hotmail - - DOMAIN-SUFFIX,hotmail.co - - DOMAIN-SUFFIX,hotmail.com - - DOMAIN-SUFFIX,hotmail.eu - - DOMAIN-SUFFIX,hotmail.net - - DOMAIN-SUFFIX,hotmail.org - - DOMAIN-SUFFIX,hummingbird.ms - - DOMAIN-SUFFIX,ie10.com - - DOMAIN-SUFFIX,ie11.com - - DOMAIN-SUFFIX,ie8.co - - DOMAIN-SUFFIX,ie9.com - - DOMAIN-SUFFIX,imaginecup.pl - - DOMAIN-SUFFIX,img-prod-cms-rt-microsoft-com - - DOMAIN-SUFFIX,ingads.com - - DOMAIN-SUFFIX,internetexplorer.co - - DOMAIN-SUFFIX,internetexplorer.com - - DOMAIN-SUFFIX,intunewiki.com - - DOMAIN-SUFFIX,iotinactionevents.com - - DOMAIN-SUFFIX,joinms.com - - DOMAIN-SUFFIX,joinms.com.cn - - DOMAIN-SUFFIX,joinmva.com - - DOMAIN-SUFFIX,kidgrid.tv - - DOMAIN-SUFFIX,kumo.com - - DOMAIN-SUFFIX,latampartneruniversity.com - - DOMAIN-SUFFIX,live.com - - DOMAIN-SUFFIX,live.com.au - - DOMAIN-SUFFIX,live.eu - - DOMAIN-SUFFIX,live.net - - DOMAIN-SUFFIX,livingyourambition.com - - DOMAIN-SUFFIX,localytics.com - - DOMAIN-SUFFIX,lync.com - - DOMAIN-SUFFIX,makecode.org - - DOMAIN-SUFFIX,managedmeetingrooms.com - - DOMAIN-SUFFIX,meetfasttrack.com - - DOMAIN-SUFFIX,meetyourdevices.com - - DOMAIN-SUFFIX,mepn.com - - DOMAIN-SUFFIX,microsoft - - DOMAIN-SUFFIX,microsoft-int.com - - DOMAIN-SUFFIX,microsoft-ppe.com - - DOMAIN-SUFFIX,microsoft-sap-events.com - - DOMAIN-SUFFIX,microsoft-sbs-domains.com - - DOMAIN-SUFFIX,microsoft-smb.cn - - DOMAIN-SUFFIX,microsoft.az - - DOMAIN-SUFFIX,microsoft.be - - DOMAIN-SUFFIX,microsoft.by - - DOMAIN-SUFFIX,microsoft.ca - - DOMAIN-SUFFIX,microsoft.cat - - DOMAIN-SUFFIX,microsoft.ch - - DOMAIN-SUFFIX,microsoft.cl - - DOMAIN-SUFFIX,microsoft.com - - DOMAIN-SUFFIX,microsoft.com.akadns.net - - DOMAIN-SUFFIX,microsoft.com.nsatc.net - - DOMAIN-SUFFIX,microsoft.cz - - DOMAIN-SUFFIX,microsoft.de - - DOMAIN-SUFFIX,microsoft.dk - - DOMAIN-SUFFIX,microsoft.ee - - DOMAIN-SUFFIX,microsoft.es - - DOMAIN-SUFFIX,microsoft.eu - - DOMAIN-SUFFIX,microsoft.fi - - DOMAIN-SUFFIX,microsoft.ge - - DOMAIN-SUFFIX,microsoft.hu - - DOMAIN-SUFFIX,microsoft.io - - DOMAIN-SUFFIX,microsoft.is - - DOMAIN-SUFFIX,microsoft.it - - DOMAIN-SUFFIX,microsoft.jp - - DOMAIN-SUFFIX,microsoft.lt - - DOMAIN-SUFFIX,microsoft.lu - - DOMAIN-SUFFIX,microsoft.lv - - DOMAIN-SUFFIX,microsoft.md - - DOMAIN-SUFFIX,microsoft.net - - DOMAIN-SUFFIX,microsoft.pl - - DOMAIN-SUFFIX,microsoft.pt - - DOMAIN-SUFFIX,microsoft.red - - DOMAIN-SUFFIX,microsoft.ro - - DOMAIN-SUFFIX,microsoft.rs - - DOMAIN-SUFFIX,microsoft.ru - - DOMAIN-SUFFIX,microsoft.se - - DOMAIN-SUFFIX,microsoft.si - - DOMAIN-SUFFIX,microsoft.tv - - DOMAIN-SUFFIX,microsoft.ua - - DOMAIN-SUFFIX,microsoft.uz - - DOMAIN-SUFFIX,microsoft.vn - - DOMAIN-SUFFIX,microsoft365.com - - DOMAIN-SUFFIX,microsoftaccountguard.com - - DOMAIN-SUFFIX,microsoftads.com - - DOMAIN-SUFFIX,microsoftadvertising.com - - DOMAIN-SUFFIX,microsoftadvertisingregionalawards.com - - DOMAIN-SUFFIX,microsoftaffiliates.com - - DOMAIN-SUFFIX,microsoftapps.azurewebsites.net - - DOMAIN-SUFFIX,microsoftazuread-sso.com - - DOMAIN-SUFFIX,microsoftcloud.com - - DOMAIN-SUFFIX,microsoftcloudworkshop.com - - DOMAIN-SUFFIX,microsoftcommunitytraining.com - - DOMAIN-SUFFIX,microsoftemail.com - - DOMAIN-SUFFIX,microsoftestore.com.hk - - DOMAIN-SUFFIX,microsofthouse.com - - DOMAIN-SUFFIX,microsofthouse.net - - DOMAIN-SUFFIX,microsoftinternetsafety.net - - DOMAIN-SUFFIX,microsoftlatamaitour.com - - DOMAIN-SUFFIX,microsoftlinc.com - - DOMAIN-SUFFIX,microsoftonline-p.com - - DOMAIN-SUFFIX,microsoftonline-p.net - - DOMAIN-SUFFIX,microsoftonline.com - - DOMAIN-SUFFIX,microsoftpartnercommunity.com - - DOMAIN-SUFFIX,microsoftready.com - - DOMAIN-SUFFIX,microsoftsiteselection.com - - DOMAIN-SUFFIX,microsoftstore.com - - DOMAIN-SUFFIX,microsoftstore.com.cn - - DOMAIN-SUFFIX,microsoftstore.com.hk - - DOMAIN-SUFFIX,microsoftstream.com - - DOMAIN-SUFFIX,microsoftteams.com - - DOMAIN-SUFFIX,microsofttradein.com - - DOMAIN-SUFFIX,microsofttranslator.com - - DOMAIN-SUFFIX,microsoftuwp.com - - DOMAIN-SUFFIX,momentumms.com - - DOMAIN-SUFFIX,morphcharts.com - - DOMAIN-SUFFIX,mpnevolution.com - - DOMAIN-SUFFIX,ms-studiosmedia.com - - DOMAIN-SUFFIX,ms365surfaceoffer.com - - DOMAIN-SUFFIX,msa.akadns6.net - - DOMAIN-SUFFIX,msads.net - - DOMAIN-SUFFIX,msappproxy.net - - DOMAIN-SUFFIX,msauth.cn - - DOMAIN-SUFFIX,msauth.net - - DOMAIN-SUFFIX,msauthimages.net - - DOMAIN-SUFFIX,mschallenge2018.com - - DOMAIN-SUFFIX,msecnd.net - - DOMAIN-SUFFIX,msft.info - - DOMAIN-SUFFIX,msft.net - - DOMAIN-SUFFIX,msftauth.cn - - DOMAIN-SUFFIX,msftauth.net - - DOMAIN-SUFFIX,msftauthimages.net - - DOMAIN-SUFFIX,msftcenterone.cn - - DOMAIN-SUFFIX,msftconnecttest.com - - DOMAIN-SUFFIX,msfteducation.ca - - DOMAIN-SUFFIX,msftidentity.com - - DOMAIN-SUFFIX,msftnet.org - - DOMAIN-SUFFIX,msgamesresearch.com - - DOMAIN-SUFFIX,msidentity.com - - DOMAIN-SUFFIX,msignitechina.com - - DOMAIN-SUFFIX,msocdn.com - - DOMAIN-SUFFIX,msocsp.com - - DOMAIN-SUFFIX,msopentech.cn - - DOMAIN-SUFFIX,mspil.cn - - DOMAIN-SUFFIX,msra.cn - - DOMAIN-SUFFIX,mstea.ms - - DOMAIN-SUFFIX,msturing.org - - DOMAIN-SUFFIX,msudalosti.com - - DOMAIN-SUFFIX,msvevent.com - - DOMAIN-SUFFIX,mymicrosoft.com - - DOMAIN-SUFFIX,nextechafrica.net - - DOMAIN-SUFFIX,nxta.org - - DOMAIN-SUFFIX,oaspapps.com - - DOMAIN-SUFFIX,oaspapps.com.akadns.net - - DOMAIN-SUFFIX,onecollector.cloudapp.aria - - DOMAIN-SUFFIX,onecollector.cloudapp.aria.akadns.net - - DOMAIN-SUFFIX,onenote.com - - DOMAIN-SUFFIX,onenote.net - - DOMAIN-SUFFIX,onestore.ms - - DOMAIN-SUFFIX,onmicrosoft.com - - DOMAIN-SUFFIX,opticsforthecloud.net - - DOMAIN-SUFFIX,optimizely.com - - DOMAIN-SUFFIX,outingsapp.com - - DOMAIN-SUFFIX,outlook.cn - - DOMAIN-SUFFIX,outlook.com - - DOMAIN-SUFFIX,outlookgroups.ms - - DOMAIN-SUFFIX,outlookmobile.com - - DOMAIN-SUFFIX,passport.net - - DOMAIN-SUFFIX,phonefactor.net - - DOMAIN-SUFFIX,pixapp.net - - DOMAIN-SUFFIX,playfabapi.cn - - DOMAIN-SUFFIX,playfabcn.com - - DOMAIN-SUFFIX,powerappscdn.net - - DOMAIN-SUFFIX,powerautomate.com - - DOMAIN-SUFFIX,powerbi.com - - DOMAIN-SUFFIX,powershellgallery.com - - DOMAIN-SUFFIX,projectmurphy.net - - DOMAIN-SUFFIX,projectsangam.com - - DOMAIN-SUFFIX,pxt.io - - DOMAIN-SUFFIX,s-microsoft.com - - DOMAIN-SUFFIX,s-msft.com - - DOMAIN-SUFFIX,s-msn.com - - DOMAIN-SUFFIX,sfbassets.com - - DOMAIN-SUFFIX,sfbassets.net - - DOMAIN-SUFFIX,sfx.ms - - DOMAIN-SUFFIX,sharepoint.cn - - DOMAIN-SUFFIX,sharepoint.com - - DOMAIN-SUFFIX,sharepointonline.com - - DOMAIN-SUFFIX,skype - - DOMAIN-SUFFIX,staffhub.ms - - DOMAIN-SUFFIX,successwithteams.com - - DOMAIN-SUFFIX,surface.com - - DOMAIN-SUFFIX,svc.ms - - DOMAIN-SUFFIX,syncshop.cn - - DOMAIN-SUFFIX,sysinternals.com - - DOMAIN-SUFFIX,tailwindtraders.com - - DOMAIN-SUFFIX,techhub.ms - - DOMAIN-SUFFIX,tenor.com - - DOMAIN-SUFFIX,tfsallin.net - - DOMAIN-SUFFIX,trafficmanager.net - - DOMAIN-SUFFIX,translatetheweb.com - - DOMAIN-SUFFIX,unlocklimitlesslearning.com - - DOMAIN-SUFFIX,userpxt.io - - DOMAIN-SUFFIX,uservoice.com - - DOMAIN-SUFFIX,videobreakdown.com - - DOMAIN-SUFFIX,videoindexer.ai - - DOMAIN-SUFFIX,virtualearth.net - - DOMAIN-SUFFIX,vsallin.net - - DOMAIN-SUFFIX,wbd.ms - - DOMAIN-SUFFIX,what-fan.net - - DOMAIN-SUFFIX,windows - - DOMAIN-SUFFIX,windows-int.net - - DOMAIN-SUFFIX,windows-ppe.net - - DOMAIN-SUFFIX,windows.com - - DOMAIN-SUFFIX,windows.net - - DOMAIN-SUFFIX,windows.nl - - DOMAIN-SUFFIX,windows8.hk - - DOMAIN-SUFFIX,windowscommunity.net - - DOMAIN-SUFFIX,windowsmarketplace.com - - DOMAIN-SUFFIX,windowsphone-int.com - - DOMAIN-SUFFIX,windowsphone.com - - DOMAIN-SUFFIX,windowssearch.com - - DOMAIN-SUFFIX,windowsupdate.com - - DOMAIN-SUFFIX,winhec.com - - DOMAIN-SUFFIX,winhec.net - - DOMAIN-SUFFIX,yammer.com - - DOMAIN-SUFFIX,yammerusercontent.com - - DOMAIN-SUFFIX,g.akamaiedge.net - - DOMAIN-SUFFIX,a1158.g.akamai.net - - DOMAIN-SUFFIX,a122.dscg3.akamai.net - - DOMAIN-SUFFIX,a767.dscg3.akamai.net - - DOMAIN-SUFFIX,cs11.wpc.v0cdn.net - - DOMAIN-SUFFIX,cs9.wac.phicdn.net - - DOMAIN-SUFFIX,b.akamaiedge.net - - DOMAIN-SUFFIX,spoprod-a.akamaihd.net - - DOMAIN-SUFFIX,windows.com.akadns.net - - DOMAIN-SUFFIX,prod-video-cms-rt-microsoft-com.akamaized.net - - DOMAIN-SUFFIX,statics-marketingsites-eas-ms-com.akamaized.net - - DOMAIN-SUFFIX,statics-marketingsites-neu-ms-com.akamaized.net - - DOMAIN-SUFFIX,vip5.afdorigin-prod-am02.afdogw.com - - DOMAIN-SUFFIX,img-prod-cms-rt-microsoft-com.akamaized.net - - DOMAIN-SUFFIX,img-s-msn-com.akamaized.net - - DOMAIN-SUFFIX,mwf-service.akamaized.net - - DOMAIN-SUFFIX,officecdn-microsoft-com.akamaized.net - - DOMAIN-SUFFIX,statics-marketingsites-eus-ms-com.akamaized.net - - DOMAIN-SUFFIX,statics-marketingsites-wcus-ms-com.akamaized.net diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/Netease_Music b/luci-app-openclash/root/etc/openclash/rule_provider/Netease_Music deleted file mode 100644 index 3bc34039..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/Netease_Music +++ /dev/null @@ -1,26 +0,0 @@ -payload: - # > Netease Music - - DOMAIN-SUFFIX,163yun.com - - DOMAIN-SUFFIX,api.iplay.163.com - - DOMAIN-SUFFIX,hz.netease.com - - DOMAIN-SUFFIX,mam.netease.com - - DOMAIN-SUFFIX,music.163.com - - IP-CIDR,101.71.154.241/32,no-resolve - - IP-CIDR,103.126.92.132/32,no-resolve - - IP-CIDR,103.126.92.133/32,no-resolve - - IP-CIDR,112.13.119.17/32,no-resolve - - IP-CIDR,112.13.122.1/32,no-resolve - - IP-CIDR,115.236.118.33/32,no-resolve - - IP-CIDR,115.236.121.1/32,no-resolve - - IP-CIDR,118.24.63.156/32,no-resolve - - IP-CIDR,193.112.159.225/32,no-resolve - - IP-CIDR,223.252.199.66/32,no-resolve - - IP-CIDR,223.252.199.67/32,no-resolve - - IP-CIDR,39.105.63.80/32,no-resolve - - IP-CIDR,45.254.48.1/32,no-resolve - - IP-CIDR,47.100.127.239/32,no-resolve - - IP-CIDR,59.111.160.195/32,no-resolve - - IP-CIDR,59.111.160.197/32,no-resolve - - IP-CIDR,59.111.181.35/32,no-resolve - - IP-CIDR,59.111.181.38/32,no-resolve - - IP-CIDR,59.111.181.60/32,no-resolve diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/Netflix b/luci-app-openclash/root/etc/openclash/rule_provider/Netflix deleted file mode 100644 index 51884477..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/Netflix +++ /dev/null @@ -1,49 +0,0 @@ -payload: - # > Netflix - - DOMAIN-SUFFIX,flxvpn.net - - DOMAIN-SUFFIX,netflix.ca - - DOMAIN-SUFFIX,netflix.com - - DOMAIN-SUFFIX,netflix.com.au - - DOMAIN-SUFFIX,netflixdnstest10.com - - DOMAIN-SUFFIX,netflixdnstest1.com - - DOMAIN-SUFFIX,netflixdnstest2.com - - DOMAIN-SUFFIX,netflixdnstest3.com - - DOMAIN-SUFFIX,netflixdnstest4.com - - DOMAIN-SUFFIX,netflixdnstest5.com - - DOMAIN-SUFFIX,netflixdnstest6.com - - DOMAIN-SUFFIX,netflixdnstest7.com - - DOMAIN-SUFFIX,netflixdnstest8.com - - DOMAIN-SUFFIX,netflixdnstest9.com - - DOMAIN-SUFFIX,netflixinvestor.com - - DOMAIN-SUFFIX,netflix.net - - DOMAIN-SUFFIX,netflixstudios.com - - DOMAIN-SUFFIX,netflixtechblog.com - - DOMAIN-SUFFIX,nflxext.com - - DOMAIN-SUFFIX,nflximg.com - - DOMAIN-SUFFIX,nflximg.net - - DOMAIN-SUFFIX,nflxso.net - - DOMAIN-SUFFIX,nflxvideo.net - - - DOMAIN-SUFFIX,e13252.dscg.akamaiedge.net - - DOMAIN-SUFFIX,h-netflix.online-metrix.net - - DOMAIN-SUFFIX,onetrust.com - - DOMAIN-SUFFIX,cookielaw.org - - - IP-CIDR,23.246.0.0/18,no-resolve - - IP-CIDR,37.77.184.0/21,no-resolve - - IP-CIDR,38.72.126.0/24,no-resolve - - IP-CIDR,45.57.0.0/17,no-resolve - - IP-CIDR,64.120.128.0/17,no-resolve - - IP-CIDR,66.197.128.0/17,no-resolve - - IP-CIDR,69.53.224.0/19,no-resolve - - IP-CIDR,103.87.204.0/22,no-resolve - - IP-CIDR,108.175.32.0/20,no-resolve - - IP-CIDR,185.2.220.0/22,no-resolve - - IP-CIDR,185.9.188.0/22,no-resolve - - IP-CIDR,192.173.64.0/18,no-resolve - - IP-CIDR,198.38.96.0/19,no-resolve - - IP-CIDR,198.45.48.0/20,no-resolve - - IP-CIDR,208.75.76.0/22,no-resolve - - IP-CIDR,34.210.42.111/32,no-resolve - - IP-CIDR,52.89.124.203/32,no-resolve - - IP-CIDR,54.148.37.5/32,no-resolve diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/Niconico b/luci-app-openclash/root/etc/openclash/rule_provider/Niconico deleted file mode 100644 index 6e38cd56..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/Niconico +++ /dev/null @@ -1,11 +0,0 @@ -payload: - # > Niconico - - DOMAIN-SUFFIX,dmc.nico - - DOMAIN-SUFFIX,nicovideo.jp - - DOMAIN-SUFFIX,nicodic.jp - - DOMAIN-SUFFIX,nicomanga.jp - - DOMAIN-SUFFIX,niconico.com - - DOMAIN-SUFFIX,nicoseiga.jp - - DOMAIN-SUFFIX,nimg.jp - - DOMAIN-SUFFIX,simg.jp - - DOMAIN-SUFFIX,socdm.com diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/PBS b/luci-app-openclash/root/etc/openclash/rule_provider/PBS deleted file mode 100644 index b657e901..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/PBS +++ /dev/null @@ -1,4 +0,0 @@ -payload: - # > PBS - # - USER-AGENT,PBS* - - DOMAIN-SUFFIX,pbs.org diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/Pandora b/luci-app-openclash/root/etc/openclash/rule_provider/Pandora deleted file mode 100644 index 247d64df..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/Pandora +++ /dev/null @@ -1,4 +0,0 @@ -payload: - # > Pandora - - PROCESS-NAME,com.pandora.android - - DOMAIN-SUFFIX,pandora.com diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/PayPal b/luci-app-openclash/root/etc/openclash/rule_provider/PayPal deleted file mode 100644 index 559c4e8f..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/PayPal +++ /dev/null @@ -1,6 +0,0 @@ -payload: - # > PayPal - # - USER-AGENT,PayPal* - - DOMAIN-KEYWORD,paypal - - DOMAIN-SUFFIX,paypal.com - - DOMAIN-SUFFIX,paypalobjects.com diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/Pornhub b/luci-app-openclash/root/etc/openclash/rule_provider/Pornhub deleted file mode 100644 index 8fd063a6..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/Pornhub +++ /dev/null @@ -1,6 +0,0 @@ -payload: - # > Pornhub - - DOMAIN-SUFFIX,phncdn.com - - DOMAIN-SUFFIX,phprcdn.com - - DOMAIN-SUFFIX,pornhub.com - - DOMAIN-SUFFIX,pornhubpremium.com diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/Proxy b/luci-app-openclash/root/etc/openclash/rule_provider/Proxy deleted file mode 100644 index 4217964e..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/Proxy +++ /dev/null @@ -1,771 +0,0 @@ -payload: - # > Duolingo - # - USER-AGENT,Duolingo* - - DOMAIN-KEYWORD,duolingo - - DOMAIN-SUFFIX,duolingo.cn - - DOMAIN-SUFFIX,duolingo.com - - # > Line - - DOMAIN-SUFFIX,lin.ee - - DOMAIN-SUFFIX,line.me - - DOMAIN-SUFFIX,line.naver.jp - - DOMAIN-SUFFIX,line-apps.com - - DOMAIN-SUFFIX,line-cdn.net - - DOMAIN-SUFFIX,line-scdn.net - - DOMAIN-SUFFIX,nhncorp.jp - - # > Riot Games - - DOMAIN-SUFFIX,riotcdn.net - - DOMAIN-SUFFIX,wr.pvp.net - - DOMAIN-SUFFIX,riotgames.com - - # > Spark - - DOMAIN-SUFFIX,api.amplitude.com - - DOMAIN-SUFFIX,app.smartmailcloud.com - - DOMAIN-SUFFIX,gate.hockeyapp.net - - DOMAIN-SUFFIX,smartmailcloud.com - - # > Tesla - - DOMAIN-KEYWORD,tesla - - # > Zooba - # - USER-AGENT,battleroyale* - - # > Top blocked sites - - DOMAIN-SUFFIX,2o7.net - - DOMAIN-SUFFIX,4everProxy.com - - DOMAIN-SUFFIX,4shared.com - - DOMAIN-SUFFIX,4sqi.net - - DOMAIN-SUFFIX,9to5mac.com - - DOMAIN-SUFFIX,abpchina.org - - DOMAIN-SUFFIX,accountkit.com - - DOMAIN-SUFFIX,adblockplus.org - - DOMAIN-SUFFIX,adobe.com - - DOMAIN-SUFFIX,adobedtm.com - - DOMAIN-SUFFIX,aerisapi.com - - DOMAIN-SUFFIX,akamaihd.net - - DOMAIN-SUFFIX,airtable.com - - DOMAIN-SUFFIX,alfredapp.com - - DOMAIN-SUFFIX,allconnected.co - - DOMAIN-SUFFIX,amazon.co - - DOMAIN-SUFFIX,amazon.co.jp - - DOMAIN-SUFFIX,amazon.com - - DOMAIN-SUFFIX,amazonaws.com - - DOMAIN-SUFFIX,ampproject.com - - DOMAIN-SUFFIX,ampproject.net - - DOMAIN-SUFFIX,ampproject.org - - DOMAIN-SUFFIX,anaconda.com - - DOMAIN-SUFFIX,ancsconf.org - - DOMAIN-SUFFIX,android.com - - DOMAIN-SUFFIX,androidify.com - - DOMAIN-SUFFIX,android-x86.org - - DOMAIN-SUFFIX,angularjs.org - - DOMAIN-SUFFIX,anthonycalzadilla.com - - DOMAIN-SUFFIX,aol.com - - DOMAIN-SUFFIX,aolcdn.com - - DOMAIN-SUFFIX,apache.org - - DOMAIN-SUFFIX,api.mixpanel.com - - DOMAIN-SUFFIX,api.termius.com - - DOMAIN-SUFFIX,api.tiktokv.com - - DOMAIN-SUFFIX,api.urbandictionary.com - - DOMAIN-SUFFIX,apigee.com - - DOMAIN-SUFFIX,apk-dl.com - - DOMAIN-SUFFIX,apkpure.com - - DOMAIN-SUFFIX,appdownloader.net - - DOMAIN-SUFFIX,apple-dns.net - - DOMAIN-SUFFIX,appshopper.com - - DOMAIN-SUFFIX,arcgis.com - - DOMAIN-SUFFIX,archive.is - - DOMAIN-SUFFIX,archive.org - - DOMAIN-SUFFIX,archives.gov - - DOMAIN-SUFFIX,armorgames.com - - DOMAIN-SUFFIX,aspnetcdn.com - - DOMAIN-SUFFIX,async.be - - DOMAIN-SUFFIX,att.com - - DOMAIN-SUFFIX,avgle.com - - DOMAIN-SUFFIX,awsstatic.com - - DOMAIN-SUFFIX,azure.com - - DOMAIN-SUFFIX,azureedge.net - - DOMAIN-SUFFIX,azurewebsites.net - - DOMAIN-SUFFIX,badoo.com - - DOMAIN-SUFFIX,bandisoft.com - - DOMAIN-SUFFIX,bbtoystore.com - - DOMAIN-SUFFIX,bet365.com - - DOMAIN-SUFFIX,betvictor.com - - DOMAIN-SUFFIX,bigsound.org - - DOMAIN-SUFFIX,bing.com - - DOMAIN-SUFFIX,bing.net - - DOMAIN-SUFFIX,bintray.com - - DOMAIN-SUFFIX,bit.com - - DOMAIN-SUFFIX,bit.do - - DOMAIN-SUFFIX,bit.ly - - DOMAIN-SUFFIX,bitbucket.org - - DOMAIN-SUFFIX,bitcointalk.org - - DOMAIN-SUFFIX,bitshare.com - - DOMAIN-SUFFIX,bkrtx.com - - DOMAIN-SUFFIX,blog.com - - DOMAIN-SUFFIX,blogcdn.com - - DOMAIN-SUFFIX,blogger.com - - DOMAIN-SUFFIX,bloglovin.com - - DOMAIN-SUFFIX,blogsmithmedia.com - - DOMAIN-SUFFIX,blogspot.hk - - DOMAIN-SUFFIX,bloomberg.cn - - DOMAIN-SUFFIX,bloomberg.com - - DOMAIN-SUFFIX,books.com.tw - - DOMAIN-SUFFIX,boomtrain.com - - DOMAIN-SUFFIX,botanwang.com - - DOMAIN-SUFFIX,box.com - - DOMAIN-SUFFIX,box.net - - DOMAIN-SUFFIX,boxun.com - - DOMAIN-SUFFIX,cachefly.net - - DOMAIN-SUFFIX,cbc.ca - - DOMAIN-SUFFIX,cdn.angruo.com - - DOMAIN-SUFFIX,cdn.segment.com - - DOMAIN-SUFFIX,cdnst.net - - DOMAIN-SUFFIX,celestrak.com - - DOMAIN-SUFFIX,census.gov - - DOMAIN-SUFFIX,certificate-transparency.org - - DOMAIN-SUFFIX,chinadigitaltimes.net - - DOMAIN-SUFFIX,chinatimes.com - - DOMAIN-SUFFIX,chrome.com - - DOMAIN-SUFFIX,chromecast.com - - DOMAIN-SUFFIX,chromercise.com - - DOMAIN-SUFFIX,chromestatus.com - - DOMAIN-SUFFIX,chromium.org - - DOMAIN-SUFFIX,cl.ly - - DOMAIN-SUFFIX,clien.net - - DOMAIN-SUFFIX,cloudflare.com - - DOMAIN-SUFFIX,cloudfront.net - - DOMAIN-SUFFIX,cloudgarage.jp - - DOMAIN-SUFFIX,cloudmagic.com - - DOMAIN-SUFFIX,cmail19.com - - DOMAIN-SUFFIX,cnet.com - - DOMAIN-SUFFIX,cnn.com - - DOMAIN-SUFFIX,cocoapods.org - - DOMAIN-SUFFIX,comodoca.com - - DOMAIN-SUFFIX,content.office.net - - DOMAIN-SUFFIX,crisp.chat - - DOMAIN-SUFFIX,culturedcode.com - - DOMAIN-SUFFIX,cygames.jp - - DOMAIN-SUFFIX,d.pr - - DOMAIN-SUFFIX,danilo.to - - DOMAIN-SUFFIX,daolan.net - - DOMAIN-SUFFIX,data-vocabulary.org - - DOMAIN-SUFFIX,dayone.me - - DOMAIN-SUFFIX,db.tt - - DOMAIN-SUFFIX,dcmilitary.com - - DOMAIN-SUFFIX,deja.com - - DOMAIN-SUFFIX,demdex.net - - DOMAIN-SUFFIX,deskconnect.com - - DOMAIN-SUFFIX,digisfera.com - - DOMAIN-SUFFIX,digitaltrends.com - - DOMAIN-SUFFIX,disconnect.me - - DOMAIN-SUFFIX,disq.us - - DOMAIN-SUFFIX,disqus.com - - DOMAIN-SUFFIX,disquscdn.com - - DOMAIN-SUFFIX,dmm.co.jp - - DOMAIN-SUFFIX,dnsimple.com - - DOMAIN-SUFFIX,docker.com - - DOMAIN-SUFFIX,doub.io - - DOMAIN-SUFFIX,dowjones.com - - DOMAIN-SUFFIX,dribbble.com - - DOMAIN-SUFFIX,droplr.com - - DOMAIN-SUFFIX,duckduckgo.com - - DOMAIN-SUFFIX,dueapp.com - - DOMAIN-SUFFIX,dw.com - - DOMAIN-SUFFIX,easybib.com - - DOMAIN-SUFFIX,economist.com - - DOMAIN-SUFFIX,edgecastcdn.net - - DOMAIN-SUFFIX,edgekey.net - - DOMAIN-SUFFIX,edgesuite.net - - DOMAIN-SUFFIX,engadget.com - - DOMAIN-SUFFIX,entrust.net - - DOMAIN-SUFFIX,eurekavpt.com - - DOMAIN-SUFFIX,evernote.com - - DOMAIN-SUFFIX,extmatrix.com - - DOMAIN-SUFFIX,eyny.com - - DOMAIN-SUFFIX,fabric.io - - DOMAIN-SUFFIX,fastly.net - - DOMAIN-SUFFIX,fastmail.com - - DOMAIN-SUFFIX,fc2.com - - DOMAIN-SUFFIX,feedburner.com - - DOMAIN-SUFFIX,feedly.com - - DOMAIN-SUFFIX,feedsportal.com - - DOMAIN-SUFFIX,fiftythree.com - - DOMAIN-SUFFIX,firebaseio.com - - DOMAIN-SUFFIX,flexibits.com - - DOMAIN-SUFFIX,flickr.com - - DOMAIN-SUFFIX,flipboard.com - - DOMAIN-SUFFIX,flipkart.com - - DOMAIN-SUFFIX,flitto.com - - DOMAIN-SUFFIX,flurry.com - - DOMAIN-SUFFIX,freeopenProxy.com - - DOMAIN-SUFFIX,fubo.tv - - DOMAIN-SUFFIX,fullstory.com - - DOMAIN-SUFFIX,fzlm.net - - DOMAIN-SUFFIX,g.co - - DOMAIN-SUFFIX,gabia.net - - DOMAIN-SUFFIX,garena.com - - DOMAIN-SUFFIX,geni.us - - DOMAIN-SUFFIX,get.how - - DOMAIN-SUFFIX,getcloudapp.com - - DOMAIN-SUFFIX,getfoxyProxy.org - - DOMAIN-SUFFIX,getlantern.org - - DOMAIN-SUFFIX,getmdl.io - - DOMAIN-SUFFIX,getpricetag.com - - DOMAIN-SUFFIX,gfw.press - - DOMAIN-SUFFIX,gfx.ms - - DOMAIN-SUFFIX,ggpht.com - - DOMAIN-SUFFIX,ghostnoteapp.com - - DOMAIN-SUFFIX,ghcr.io - - DOMAIN-SUFFIX,git.io - - DOMAIN-SUFFIX,gitbook.com - - DOMAIN-SUFFIX,globalsign.com - - DOMAIN-SUFFIX,gmocloud.com - - DOMAIN-SUFFIX,gmodules.com - - DOMAIN-SUFFIX,go.com - - DOMAIN-SUFFIX,go.jp - - DOMAIN-SUFFIX,godaddy.com - - DOMAIN-SUFFIX,golang.org - - DOMAIN-SUFFIX,gongm.in - - DOMAIN-SUFFIX,goo.gl - - DOMAIN-SUFFIX,goodreaders.com - - DOMAIN-SUFFIX,goodreads.com - - DOMAIN-SUFFIX,gravatar.com - - DOMAIN-SUFFIX,gstatic.cn - - DOMAIN-SUFFIX,gstatic.com - - DOMAIN-SUFFIX,gunsamerica.com - - DOMAIN-SUFFIX,gvt0.com - - DOMAIN-SUFFIX,gvt1.com - - DOMAIN-SUFFIX,helpshift.com - - DOMAIN-SUFFIX,hitun.io - - DOMAIN-SUFFIX,hockeyapp.net - - DOMAIN-SUFFIX,homedepot.com - - DOMAIN-SUFFIX,hootsuite.com - - DOMAIN-SUFFIX,howtoforge.com - - DOMAIN-SUFFIX,i-cable.com - - DOMAIN-SUFFIX,iam.soy - - DOMAIN-SUFFIX,icoco.com - - DOMAIN-SUFFIX,icons8.com - - DOMAIN-SUFFIX,ift.tt - - DOMAIN-SUFFIX,ifttt.com - - DOMAIN-SUFFIX,imageshack.us - - DOMAIN-SUFFIX,img.ly - - DOMAIN-SUFFIX,imgur.com - - DOMAIN-SUFFIX,imore.com - - DOMAIN-SUFFIX,imtoken.fans - - DOMAIN-SUFFIX,ingress.com - - DOMAIN-SUFFIX,inoreader.com - - DOMAIN-SUFFIX,insder.co - - DOMAIN-SUFFIX,instapaper.com - - DOMAIN-SUFFIX,instructables.com - - DOMAIN-SUFFIX,io.io - - DOMAIN-SUFFIX,ip.sb - - DOMAIN-SUFFIX,ipaddress.com - - DOMAIN-SUFFIX,ipn.li - - DOMAIN-SUFFIX,is.gd - - DOMAIN-SUFFIX,ishowsapp.com - - DOMAIN-SUFFIX,issuu.com - - DOMAIN-SUFFIX,itgonglun.com - - DOMAIN-SUFFIX,itun.es - - DOMAIN-SUFFIX,ixquick.com - - DOMAIN-SUFFIX,j.mp - - DOMAIN-SUFFIX,javbus.com - - DOMAIN-SUFFIX,js.revsci.net - - DOMAIN-SUFFIX,jshint.com - - DOMAIN-SUFFIX,jtvnw.net - - DOMAIN-SUFFIX,justgetflux.com - - DOMAIN-SUFFIX,kakao.co.kr - - DOMAIN-SUFFIX,kakao.com - - DOMAIN-SUFFIX,kakaocdn.net - - DOMAIN-SUFFIX,kat.cr - - DOMAIN-SUFFIX,kenengba.com - - DOMAIN-SUFFIX,kik.com - - DOMAIN-SUFFIX,klip.me - - DOMAIN-SUFFIX,leancloud.com - - DOMAIN-SUFFIX,leetcode.com - - DOMAIN-SUFFIX,libsyn.com - - DOMAIN-SUFFIX,licdn.com - - DOMAIN-SUFFIX,lightboxcdn.com - - DOMAIN-SUFFIX,like.com - - DOMAIN-SUFFIX,linkedin.com - - DOMAIN-SUFFIX,linode.com - - DOMAIN-SUFFIX,lithium.com - - DOMAIN-SUFFIX,littlehj.com - - DOMAIN-SUFFIX,livefilestore.com - - DOMAIN-SUFFIX,llnwd.net - - DOMAIN-SUFFIX,localnetwork.uop - - DOMAIN-SUFFIX,logmein.com - - DOMAIN-SUFFIX,macid.co - - DOMAIN-SUFFIX,macromedia.com - - DOMAIN-SUFFIX,macrumors.com - - DOMAIN-SUFFIX,mangaup.jp - - DOMAIN-SUFFIX,manhuaren.com - - DOMAIN-SUFFIX,marketwatch.com - - DOMAIN-SUFFIX,mashable.com - - DOMAIN-SUFFIX,mathjax.org - - DOMAIN-SUFFIX,maven.org - - DOMAIN-SUFFIX,medium.com - - DOMAIN-SUFFIX,mega.co.nz - - DOMAIN-SUFFIX,mega.nz - - DOMAIN-SUFFIX,megaupload.com - - DOMAIN-SUFFIX,microsofttranslator.com - - DOMAIN-SUFFIX,mindnode.com - - DOMAIN-SUFFIX,mixin.one - - DOMAIN-SUFFIX,mlssoccer.com - - DOMAIN-SUFFIX,mobile01.com - - DOMAIN-SUFFIX,modmyi.com - - DOMAIN-SUFFIX,moves-export.com - - DOMAIN-SUFFIX,mp3buscador.com - - DOMAIN-SUFFIX,msedge.net - - DOMAIN-SUFFIX,mycnnews.com - - DOMAIN-SUFFIX,myfontastic.com - - DOMAIN-SUFFIX,name.com - - DOMAIN-SUFFIX,nasa.gov - - DOMAIN-SUFFIX,ndr.de - - DOMAIN-SUFFIX,netdna-cdn.com - - DOMAIN-SUFFIX,newipnow.com - - DOMAIN-SUFFIX,nextmedia.com - - DOMAIN-SUFFIX,nicovideo.jp - - DOMAIN-SUFFIX,nih.gov - - DOMAIN-SUFFIX,nimg.jp - - DOMAIN-SUFFIX,nintendo.com - - DOMAIN-SUFFIX,nintendo.net - - DOMAIN-SUFFIX,notion.so - - DOMAIN-SUFFIX,novafile.com - - DOMAIN-SUFFIX,nrk.no - - DOMAIN-SUFFIX,nsstatic.net - - DOMAIN-SUFFIX,nssurge.com - - DOMAIN-SUFFIX,nyt.com - - DOMAIN-SUFFIX,nytimes.com - - DOMAIN-SUFFIX,nytimg.com - - DOMAIN-SUFFIX,nytstyle.com - - DOMAIN-SUFFIX,office365.com - - DOMAIN-SUFFIX,okx.com - - DOMAIN-SUFFIX,omnigroup.com - - DOMAIN-SUFFIX,onenote.com - - DOMAIN-SUFFIX,ooyala.com - - DOMAIN-SUFFIX,openvpn.net - - DOMAIN-SUFFIX,openwrt.org - - DOMAIN-SUFFIX,optimizely.com - - DOMAIN-SUFFIX,orkut.com - - DOMAIN-SUFFIX,osha.gov - - DOMAIN-SUFFIX,osxdaily.com - - DOMAIN-SUFFIX,overcast.fm - - DOMAIN-SUFFIX,ow.ly - - DOMAIN-SUFFIX,paddle.com - - DOMAIN-SUFFIX,paddleapi.com - - DOMAIN-SUFFIX,panoramio.com - - DOMAIN-SUFFIX,parallels.com - - DOMAIN-SUFFIX,parse.com - - DOMAIN-SUFFIX,pdfexpert.com - - DOMAIN-SUFFIX,periscope.tv - - DOMAIN-SUFFIX,piaotian.net - - DOMAIN-SUFFIX,picacomic.com - - DOMAIN-SUFFIX,picasaweb.com - - DOMAIN-SUFFIX,pinboard.in - - DOMAIN-SUFFIX,ping.pe - - DOMAIN-SUFFIX,pinterest.com - - DOMAIN-SUFFIX,pixelmator.com - - DOMAIN-SUFFIX,pixiv.net - - DOMAIN-SUFFIX,pixnet.net - - DOMAIN-SUFFIX,playpcesor.com - - DOMAIN-SUFFIX,pokemon.com - - DOMAIN-SUFFIX,polymer-project.org - - DOMAIN-SUFFIX,popo.tw - - DOMAIN-SUFFIX,potato.im - - DOMAIN-SUFFIX,redd.it - - DOMAIN-SUFFIX,rthk.hk - - DOMAIN-SUFFIX,prfct.co - - DOMAIN-SUFFIX,proxfree.com - - DOMAIN-SUFFIX,psiphon3.com - - DOMAIN-SUFFIX,ptt.cc - - DOMAIN-SUFFIX,pubu.com.tw - - DOMAIN-SUFFIX,puffinbrowser.com - - DOMAIN-SUFFIX,pushbullet.com - - DOMAIN-SUFFIX,pushwoosh.com - - DOMAIN-SUFFIX,pximg.net - - DOMAIN-SUFFIX,quora.com - - DOMAIN-SUFFIX,quoracdn.net - - DOMAIN-SUFFIX,readingtimes.com.tw - - DOMAIN-SUFFIX,readmoo.com - - DOMAIN-SUFFIX,recaptcha.net - - DOMAIN-SUFFIX,reddit.com - - DOMAIN-SUFFIX,redditmedia.com - - DOMAIN-SUFFIX,reuters.com - - DOMAIN-SUFFIX,rfi.fr - - DOMAIN-SUFFIX,rileyguide.com - - DOMAIN-SUFFIX,rime.im - - DOMAIN-SUFFIX,rsf.org - - DOMAIN-SUFFIX,sciencedaily.com - - DOMAIN-SUFFIX,sciencemag.org - - DOMAIN-SUFFIX,scribd.com - - DOMAIN-SUFFIX,search.com - - DOMAIN-SUFFIX,servebom.com - - DOMAIN-SUFFIX,sexinsex.net - - DOMAIN-SUFFIX,sfx.ms - - DOMAIN-SUFFIX,shadowsocks.org - - DOMAIN-SUFFIX,shadowverse.jp - - DOMAIN-SUFFIX,sharethis.com - - DOMAIN-SUFFIX,shazam.com - - DOMAIN-SUFFIX,shutterstock.com - - DOMAIN-SUFFIX,sidelinesnews.com - - DOMAIN-SUFFIX,simp.ly - - DOMAIN-SUFFIX,simplenote.com - - DOMAIN-SUFFIX,sketchappsources.com - - DOMAIN-SUFFIX,slack.com - - DOMAIN-SUFFIX,slack-edge.com - - DOMAIN-SUFFIX,slack-msgs.com - - DOMAIN-SUFFIX,slideshare.net - - DOMAIN-SUFFIX,smartdnsproxy.com - - DOMAIN-SUFFIX,smh.com.au - - DOMAIN-SUFFIX,snapchat.com - - DOMAIN-SUFFIX,sndcdn.com - - DOMAIN-SUFFIX,sockslist.net - - DOMAIN-SUFFIX,soundcloud.com - - DOMAIN-SUFFIX,sourceforge.net - - DOMAIN-SUFFIX,sowers.org.hk - - DOMAIN-SUFFIX,speedsmart.net - - DOMAIN-SUFFIX,spike.com - - DOMAIN-SUFFIX,squarespace.com - - DOMAIN-SUFFIX,ssa.gov - - DOMAIN-SUFFIX,sstatic.net - - DOMAIN-SUFFIX,st.luluku.pw - - DOMAIN-SUFFIX,stackoverflow.com - - DOMAIN-SUFFIX,starp2p.com - - DOMAIN-SUFFIX,startpage.com - - DOMAIN-SUFFIX,state.gov - - DOMAIN-SUFFIX,staticflickr.com - - DOMAIN-SUFFIX,storify.com - - DOMAIN-SUFFIX,stumbleupon.com - - DOMAIN-SUFFIX,sugarsync.com - - DOMAIN-SUFFIX,supermariorun.com - - DOMAIN-SUFFIX,surfeasy.com.au - - DOMAIN-SUFFIX,surge.run - - DOMAIN-SUFFIX,surrenderat20.net - - DOMAIN-SUFFIX,sydneytoday.com - - DOMAIN-SUFFIX,symauth.com - - DOMAIN-SUFFIX,symcb.com - - DOMAIN-SUFFIX,symcd.com - - DOMAIN-SUFFIX,t66y.com - - DOMAIN-SUFFIX,tablesgenerator.com - - DOMAIN-SUFFIX,tabtter.jp - - DOMAIN-SUFFIX,talk853.com - - DOMAIN-SUFFIX,talkboxapp.com - - DOMAIN-SUFFIX,talkonly.net - - DOMAIN-SUFFIX,tapbots.com - - DOMAIN-SUFFIX,tapbots.net - - DOMAIN-SUFFIX,teamviewer.com - - DOMAIN-SUFFIX,techcrunch.com - - DOMAIN-SUFFIX,technorati.com - - DOMAIN-SUFFIX,techsmith.com - - DOMAIN-SUFFIX,teddysun.com - - DOMAIN-SUFFIX,textnow.me - - DOMAIN-SUFFIX,thebobs.com - - DOMAIN-SUFFIX,theinitium.com - - DOMAIN-SUFFIX,thepiratebay.org - - DOMAIN-SUFFIX,theverge.com - - DOMAIN-SUFFIX,thewgo.org - - DOMAIN-SUFFIX,tiltbrush.com - - DOMAIN-SUFFIX,time.com - - DOMAIN-SUFFIX,timeinc.net - - DOMAIN-SUFFIX,tinder.com - - DOMAIN-SUFFIX,tiny.cc - - DOMAIN-SUFFIX,tinychat.com - - DOMAIN-SUFFIX,tinypic.com - - DOMAIN-SUFFIX,tmblr.co - - DOMAIN-SUFFIX,todoist.com - - DOMAIN-SUFFIX,togetter.com - - DOMAIN-SUFFIX,tokyocn.com - - DOMAIN-SUFFIX,tomshardware.com - - DOMAIN-SUFFIX,torcn.com - - DOMAIN-SUFFIX,torrentprivacy.com - - DOMAIN-SUFFIX,torrentproject.se - - DOMAIN-SUFFIX,torrentz.eu - - DOMAIN-SUFFIX,tradingview.com - - DOMAIN-SUFFIX,traffichaus.com - - DOMAIN-SUFFIX,trakt.tv - - DOMAIN-SUFFIX,transparency.org - - DOMAIN-SUFFIX,trello.com - - DOMAIN-SUFFIX,trendsmap.com - - DOMAIN-SUFFIX,trulyergonomic.com - - DOMAIN-SUFFIX,trustasiassl.com - - DOMAIN-SUFFIX,tt-rss.org - - DOMAIN-SUFFIX,ttvnw.net - - DOMAIN-SUFFIX,tumblr.co - - DOMAIN-SUFFIX,tumblr.com - - DOMAIN-SUFFIX,turbobit.net - - DOMAIN-SUFFIX,tv.com - - DOMAIN-SUFFIX,tweetdeck.com - - DOMAIN-SUFFIX,tweetmarker.net - - DOMAIN-SUFFIX,twimg.co - - DOMAIN-SUFFIX,twitch.tv - - DOMAIN-SUFFIX,twitthat.com - - DOMAIN-SUFFIX,twtkr.com - - DOMAIN-SUFFIX,twttr.com - - DOMAIN-SUFFIX,txmblr.com - - DOMAIN-SUFFIX,typcn.com - - DOMAIN-SUFFIX,typekit.net - - DOMAIN-SUFFIX,typography.com - - DOMAIN-SUFFIX,ubertags.com - - DOMAIN-SUFFIX,ublock.org - - DOMAIN-SUFFIX,ubnt.com - - DOMAIN-SUFFIX,uchicago.edu - - DOMAIN-SUFFIX,udn.com - - DOMAIN-SUFFIX,ugo.com - - DOMAIN-SUFFIX,uhdwallpapers.org - - DOMAIN-SUFFIX,ulyssesapp.com - - DOMAIN-SUFFIX,unblockdmm.com - - DOMAIN-SUFFIX,unblocksites.co - - DOMAIN-SUFFIX,unpo.org - - DOMAIN-SUFFIX,unsplash.com - - DOMAIN-SUFFIX,untraceable.us - - DOMAIN-SUFFIX,uploaded.net - - DOMAIN-SUFFIX,uProxy.org - - DOMAIN-SUFFIX,upwork.com - - DOMAIN-SUFFIX,urchin.com - - DOMAIN-SUFFIX,urlparser.com - - DOMAIN-SUFFIX,us.to - - DOMAIN-SUFFIX,usertrust.com - - DOMAIN-SUFFIX,usgs.gov - - DOMAIN-SUFFIX,usma.edu - - DOMAIN-SUFFIX,uspto.gov - - DOMAIN-SUFFIX,ustream.tv - - DOMAIN-SUFFIX,v.gd - - DOMAIN-SUFFIX,v2ex.co - - DOMAIN-SUFFIX,v2ray.com - - DOMAIN-SUFFIX,van001.com - - DOMAIN-SUFFIX,vanpeople.com - - DOMAIN-SUFFIX,vansky.com - - DOMAIN-SUFFIX,vbstatic.co - - DOMAIN-SUFFIX,venchina.com - - DOMAIN-SUFFIX,venturebeat.com - - DOMAIN-SUFFIX,veoh.com - - DOMAIN-SUFFIX,verizonwireless.com - - DOMAIN-SUFFIX,viber.com - - DOMAIN-SUFFIX,vid.me - - DOMAIN-SUFFIX,videomega.tv - - DOMAIN-SUFFIX,vidinfo.org - - DOMAIN-SUFFIX,vimeo.com - - DOMAIN-SUFFIX,vimeocdn.com - - DOMAIN-SUFFIX,vimperator.org - - DOMAIN-SUFFIX,vine.co - - DOMAIN-SUFFIX,visibletweets.com - - DOMAIN-SUFFIX,viu.com - - DOMAIN-SUFFIX,vivaldi.com - - DOMAIN-SUFFIX,voachinese.com - - DOMAIN-SUFFIX,vocativ.com - - DOMAIN-SUFFIX,vox-cdn.com - - DOMAIN-SUFFIX,vpnaccount.org - - DOMAIN-SUFFIX,vpnbook.com - - DOMAIN-SUFFIX,vpngate.net - - DOMAIN-SUFFIX,vsco.co - - DOMAIN-SUFFIX,vultr.com - - DOMAIN-SUFFIX,vzw.com - - DOMAIN-SUFFIX,w.org - - DOMAIN-SUFFIX,w3schools.com - - DOMAIN-SUFFIX,wattpad.com - - DOMAIN-SUFFIX,web2project.net - - DOMAIN-SUFFIX,webfreer.com - - DOMAIN-SUFFIX,weblagu.com - - DOMAIN-SUFFIX,websnapr.com - - DOMAIN-SUFFIX,webtype.com - - DOMAIN-SUFFIX,webwarper.net - - DOMAIN-SUFFIX,wenxuecity.com - - DOMAIN-SUFFIX,westca.com - - DOMAIN-SUFFIX,westpoint.edu - - DOMAIN-SUFFIX,whatbrowser.org - - DOMAIN-SUFFIX,wikiwand.com - - DOMAIN-SUFFIX,wikileaks.info - - DOMAIN-SUFFIX,wikileaks.org - - DOMAIN-SUFFIX,wikileaks-forum.com - - DOMAIN-SUFFIX,wikimedia.org - - DOMAIN-SUFFIX,wikipedia.com - - DOMAIN-SUFFIX,wikipedia.org - - DOMAIN-SUFFIX,wn.com - - DOMAIN-SUFFIX,wordpress.com - - DOMAIN-SUFFIX,workflow.is - - DOMAIN-SUFFIX,workflowy.com - - DOMAIN-SUFFIX,worldcat.org - - DOMAIN-SUFFIX,wow.com - - DOMAIN-SUFFIX,wp.com - - DOMAIN-SUFFIX,wsj.com - - DOMAIN-SUFFIX,wsj.net - - DOMAIN-SUFFIX,wwitv.com - - DOMAIN-SUFFIX,xanga.com - - DOMAIN-SUFFIX,xclient.info - - DOMAIN-SUFFIX,xda-developers.com - - DOMAIN-SUFFIX,xeeno.com - - DOMAIN-SUFFIX,xiti.com - - DOMAIN-SUFFIX,xn--ngstr-lra8j.com - - DOMAIN-SUFFIX,xteko.com - - DOMAIN-SUFFIX,xuite.net - - DOMAIN-SUFFIX,xvideos.com - - DOMAIN-SUFFIX,yahoo.com - - DOMAIN-SUFFIX,yahooapis.com - - DOMAIN-SUFFIX,yasni.co.uk - - DOMAIN-SUFFIX,yastatic.net - - DOMAIN-SUFFIX,ycombinator.com - - DOMAIN-SUFFIX,yeeyi.com - - DOMAIN-SUFFIX,yesasia.com - - DOMAIN-SUFFIX,yes-news.com - - DOMAIN-SUFFIX,yidio.com - - DOMAIN-SUFFIX,yimg.com - - DOMAIN-SUFFIX,ying.com - - DOMAIN-SUFFIX,yorkbbs.ca - - DOMAIN-SUFFIX,youmaker.com - - DOMAIN-SUFFIX,yourlisten.com - - DOMAIN-SUFFIX,youtu.be - - DOMAIN-SUFFIX,yoyo.org - - DOMAIN-SUFFIX,ytimg.com - - DOMAIN-SUFFIX,zacebook.com - - DOMAIN-SUFFIX,zalmos.com - - DOMAIN-SUFFIX,zaobao.com.sg - - DOMAIN-SUFFIX,zeutch.com - - DOMAIN-SUFFIX,zynamics.com - - # > Force some domains which are fucked by GFW while resolving DNS,or do not respect the system Proxy - # - USER-AGENT,WhatsApp* - - - DOMAIN-KEYWORD,appledaily - - DOMAIN-KEYWORD,beetalk - - DOMAIN-KEYWORD,blogspot - - DOMAIN-KEYWORD,dropbox - - DOMAIN-KEYWORD,facebook - - DOMAIN-KEYWORD,github - - DOMAIN-KEYWORD,instagram - - DOMAIN-KEYWORD,twitter - - DOMAIN-KEYWORD,whatsapp - - DOMAIN-KEYWORD,google - - DOMAIN-SUFFIX,1e100.net - - DOMAIN-SUFFIX,2mdn.net - - DOMAIN-SUFFIX,abc.xyz - - DOMAIN-SUFFIX,akamai.net - - DOMAIN-SUFFIX,appspot.com - - DOMAIN-SUFFIX,autodraw.com - - DOMAIN-SUFFIX,bandwagonhost.com - - DOMAIN-SUFFIX,blogblog.com - - DOMAIN-SUFFIX,chromeexperiments.com - - DOMAIN-SUFFIX,creativelab5.com - - DOMAIN-SUFFIX,crittercism.com - - DOMAIN-SUFFIX,culturalspot.org - - DOMAIN-SUFFIX,dartlang.org - - DOMAIN-SUFFIX,fb.com - - DOMAIN-SUFFIX,fb.me - - DOMAIN-SUFFIX,fbcdn.net - - DOMAIN-SUFFIX,fbsbx.com - - DOMAIN-SUFFIX,gcr.io - - DOMAIN-SUFFIX,gmail.com - - DOMAIN-SUFFIX,gosetsuden.jp - - DOMAIN-SUFFIX,gwtproject.org - - DOMAIN-SUFFIX,hackmd.io - - DOMAIN-SUFFIX,heroku.com - - DOMAIN-SUFFIX,html5rocks.com - - DOMAIN-SUFFIX,keyhole.com - - DOMAIN-SUFFIX,kobo.com - - DOMAIN-SUFFIX,kobobooks.com - - DOMAIN-SUFFIX,madewithcode.com - - DOMAIN-SUFFIX,material.io - - DOMAIN-SUFFIX,messenger.com - - DOMAIN-SUFFIX,netmarble.com - - DOMAIN-SUFFIX,nianticlabs.com - - DOMAIN-SUFFIX,pinimg.com - - DOMAIN-SUFFIX,pubnub.com - - DOMAIN-SUFFIX,scdn.co - - DOMAIN-SUFFIX,t.co - - DOMAIN-SUFFIX,tensorflow.org - - DOMAIN-SUFFIX,toggleable.com - - DOMAIN-SUFFIX,torproject.org - - DOMAIN-SUFFIX,twimg.com - - DOMAIN-SUFFIX,twitpic.com - - DOMAIN-SUFFIX,unfiltered.news - - DOMAIN-SUFFIX,waveprotocol.org - - DOMAIN-SUFFIX,webmproject.org - - DOMAIN-SUFFIX,webrtc.org - - # > V2EX - - DOMAIN-SUFFIX,v2ex.com - - - DOMAIN-KEYWORD,dlercloud - - # > VikACG - - DOMAIN-SUFFIX,vikacg.com - - DOMAIN-SUFFIX,picjs.xyz - - # > exception - - DOMAIN-SUFFIX,wheel-size.cn - - DOMAIN-SUFFIX,chalungu.cn - - # > Amazon - - IP-CIDR,13.32.0.0/16,no-resolve - - IP-CIDR,13.33.0.0/16,no-resolve - - IP-CIDR,13.35.0.0/17,no-resolve - - IP-CIDR,18.184.0.0/15,no-resolve - - IP-CIDR,18.194.0.0/15,no-resolve - - IP-CIDR,18.208.0.0/13,no-resolve - - IP-CIDR,18.232.0.0/14,no-resolve - - IP-CIDR,52.200.0.0/13,no-resolve - - IP-CIDR,52.58.0.0/15,no-resolve - - IP-CIDR,52.74.0.0/16,no-resolve - - IP-CIDR,52.77.0.0/16,no-resolve - - IP-CIDR,52.84.0.0/15,no-resolve - - IP-CIDR,54.156.0.0/14,no-resolve - - IP-CIDR,54.226.0.0/15,no-resolve - - IP-CIDR,54.230.156.0/22,no-resolve - - IP-CIDR,54.93.0.0/16,no-resolve - - # > Facebook - - IP-CIDR,103.4.96.0/22,no-resolve - - IP-CIDR,129.134.0.0/17,no-resolve - - IP-CIDR,157.240.0.0/17,no-resolve - - IP-CIDR,173.252.64.0/19,no-resolve - - IP-CIDR,173.252.96.0/19,no-resolve - - IP-CIDR,179.60.192.0/22,no-resolve - - IP-CIDR,185.60.216.0/22,no-resolve - - IP-CIDR,204.15.20.0/22,no-resolve - - IP-CIDR,31.13.24.0/21,no-resolve - - IP-CIDR,31.13.64.0/18,no-resolve - - IP-CIDR,45.64.40.0/22,no-resolve - - IP-CIDR,66.220.144.0/20,no-resolve - - IP-CIDR,69.171.224.0/19,no-resolve - - IP-CIDR,69.63.176.0/20,no-resolve - - IP-CIDR,74.119.76.0/22,no-resolve - - # > Google - - IP-CIDR,173.194.0.0/16,no-resolve - - IP-CIDR,74.125.0.0/16,no-resolve - - # > Kakao Talk - - IP-CIDR,1.201.0.0/24,no-resolve - - IP-CIDR,103.246.56.0/22,no-resolve - - IP-CIDR,103.27.148.0/22,no-resolve - - IP-CIDR,110.76.140.0/22,no-resolve - - IP-CIDR,113.61.104.0/22,no-resolve - - IP-CIDR,27.0.236.0/22,no-resolve - - # > LINE - - IP-CIDR,103.2.28.0/22,no-resolve - - IP-CIDR,119.235.224.0/21,no-resolve - - IP-CIDR,119.235.232.0/23,no-resolve - - IP-CIDR,119.235.235.0/24,no-resolve - - IP-CIDR,119.235.236.0/23,no-resolve - - IP-CIDR,125.6.146.0/24,no-resolve - - IP-CIDR,125.6.149.0/24,no-resolve - - IP-CIDR,125.6.190.0/24,no-resolve - - IP-CIDR,125.209.208.0/20,no-resolve - - IP-CIDR,203.104.103.0/24,no-resolve - - IP-CIDR,203.104.128.0/20,no-resolve - - IP-CIDR,203.174.66.64/26,no-resolve - - IP-CIDR,203.174.77.0/24,no-resolve - - # > Potato Chat - - IP-CIDR,13.251.24.157/24,no-resolve - - IP-CIDR,13.251.41.203/24,no-resolve - - IP-CIDR,17.252.156.147/24,no-resolve - - IP-CIDR,17.252.157.26/24,no-resolve - - # > SoftLayer - - IP-CIDR,74.86.0.0/16,no-resolve - - IP-CIDR,75.126.0.0/16,no-resolve - - IP-CIDR,174.37.0.0/16,no-resolve - - IP-CIDR,208.43.0.0/16,no-resolve diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/Reject b/luci-app-openclash/root/etc/openclash/rule_provider/Reject deleted file mode 100644 index 3ef4ccbe..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/Reject +++ /dev/null @@ -1,8336 +0,0 @@ -# Ads in Video apps -payload: - # > iqiyi & pps - - DOMAIN-SUFFIX,a.ckm.iqiyi.com - - DOMAIN-SUFFIX,ad.m.iqiyi.com - - DOMAIN-SUFFIX,afp.iqiyi.com - - DOMAIN-SUFFIX,androidgo.duapp.com - - DOMAIN-SUFFIX,api.cupid.iqiyi.com - - DOMAIN-SUFFIX,api.cupid.qiyi.com - - DOMAIN-SUFFIX,c.uaa.iqiyi.com - - DOMAIN-SUFFIX,cloudpush.iqiyi.com - - DOMAIN-SUFFIX,cm.passport.iqiyi.com - - DOMAIN-SUFFIX,count.game.pps.tv - - DOMAIN-SUFFIX,cupid.iqiyi.com - - DOMAIN-SUFFIX,emoticon.sns.iqiyi.com - - DOMAIN-SUFFIX,game.pps.tv - - DOMAIN-SUFFIX,gamecenter.iqiyi.com - - DOMAIN-SUFFIX,ifacelog.iqiyi.com - - DOMAIN-SUFFIX,mbdlog.iqiyi.com - - DOMAIN-SUFFIX,msg.71.am - - DOMAIN-SUFFIX,msg.qy.net - - DOMAIN-SUFFIX,msg.iqiyi.com - - DOMAIN-SUFFIX,msg.video.qiyi.com - - DOMAIN-SUFFIX,msg2.video.qiyi.com - - DOMAIN-SUFFIX,msga.71.am - - DOMAIN-SUFFIX,msga.cupid.iqiyi.com - - DOMAIN-SUFFIX,nl.notice.iqiyi.com - - DOMAIN-SUFFIX,nl.rcd.iqiyi.com - - DOMAIN-SUFFIX,notice.iqiyi.com - - DOMAIN-SUFFIX,noxagile.duapp.com - - DOMAIN-SUFFIX,paopao.iqiyi.com - - DOMAIN-SUFFIX,policy.video.iqiyi.com - - DOMAIN-SUFFIX,static.g.iqiyi.com - - DOMAIN-SUFFIX,static.g.ppstream.com - - DOMAIN-SUFFIX,store.iqiyi.com - - DOMAIN-SUFFIX,t7z.cupid.iqiyi.com - - DOMAIN-SUFFIX,tracker.sns.iqiyi.com - - DOMAIN-SUFFIX,yuedu.iqiyi.com - # - URL-REGEX,https?:\/\/.+\/videos\/other\/.+ - # - URL-REGEX,https?:\/\/paopao\w?\.qiyipic\.com - - IP-CIDR,101.227.97.240/32 - - IP-CIDR,101.227.200.11/32 - - IP-CIDR,101.227.200.28/32 - - IP-CIDR,124.192.153.42/32 - - # > Youku & Tudou - - DOMAIN-SUFFIX,actives.youku.com - - DOMAIN-SUFFIX,ad.api.3g.tudou.com - - DOMAIN-SUFFIX,ad.api.3g.youku.com - - DOMAIN-SUFFIX,ad.api.mobile.youku.com - - DOMAIN-SUFFIX,ad.mobile.youku.com - - DOMAIN-SUFFIX,a-dxk.play.api.3g.youku.com - - DOMAIN-SUFFIX,b.smartvideo.youku.com - - DOMAIN-SUFFIX,c.yes.youku.com - - DOMAIN-SUFFIX,das.api.youku.com - - DOMAIN-SUFFIX,das.mobile.youku.com - - DOMAIN-SUFFIX,dev-push.m.youku.com - - DOMAIN-SUFFIX,dl.g.youku.com - - DOMAIN-SUFFIX,dmapp.youku.com - - DOMAIN-SUFFIX,gamex.mobile.youku.com - - DOMAIN-SUFFIX,hudong.pl.youku.com - - DOMAIN-SUFFIX,huodong.pl.youku.com - - DOMAIN-SUFFIX,huodong.vip.youku.com - - DOMAIN-SUFFIX,hz.youku.com - - DOMAIN-SUFFIX,iyes.youku.com - - DOMAIN-SUFFIX,l.ykimg.com - - DOMAIN-SUFFIX,lstat.youku.com - - DOMAIN-SUFFIX,m.yes.youku.com - - DOMAIN-SUFFIX,mobilemsg.youku.com - - DOMAIN-SUFFIX,msg.youku.com - - DOMAIN-SUFFIX,myes.youku.com - - DOMAIN-SUFFIX,p.l.youku.com - - DOMAIN-SUFFIX,passport-log.youku.com - - DOMAIN-SUFFIX,p-log.ykimg.com - - DOMAIN-SUFFIX,push.m.youku.com - - DOMAIN-SUFFIX,r.l.youku.com - - DOMAIN-SUFFIX,s.p.youku.com - - DOMAIN-SUFFIX,sdk.api.gamex.mobile.youku.com - - DOMAIN-SUFFIX,sdk.m.youku.com - - DOMAIN-SUFFIX,stat.youku.com - - DOMAIN-SUFFIX,store.tv.api.3g.youku.com - - DOMAIN-SUFFIX,store.xl.api.3g.youku.com - - DOMAIN-SUFFIX,tdrec.youku.com - - DOMAIN-SUFFIX,test.ott.youku.com - - DOMAIN-SUFFIX,urchin.lstat.youku.com - - DOMAIN-SUFFIX,v.l.youku.com - - DOMAIN-SUFFIX,val.api.youku.com - - DOMAIN-SUFFIX,wan.youku.com - - DOMAIN-SUFFIX,ykatr.youku.com - - DOMAIN-SUFFIX,ykrec.youku.com - - IP-CIDR,117.177.248.17/32 - - IP-CIDR,117.177.248.41/32 - - IP-CIDR,223.87.176.139/32 - - IP-CIDR,223.87.176.176/32 - - IP-CIDR,223.87.177.180/32 - - IP-CIDR,223.87.177.182/32 - - IP-CIDR,223.87.177.184/32 - - IP-CIDR,223.87.177.43/32 - - IP-CIDR,223.87.177.47/32 - - IP-CIDR,223.87.177.80/32 - - IP-CIDR,223.87.182.101/32 - - IP-CIDR,223.87.182.102/32 - - IP-CIDR,223.87.182.11/32 - - IP-CIDR,223.87.182.52/32 - # - URL-REGEX,https?:\/\/\.+\.atm\.youku\.com - - # > MGTV - - DOMAIN-SUFFIX,ads-api.videojj.com - - DOMAIN-SUFFIX,cdn.cmop.mgtv.com - - DOMAIN-SUFFIX,click.hunantv.com - - DOMAIN-SUFFIX,cmop.mgtv.com - - DOMAIN-SUFFIX,cytron.videojj.com - - DOMAIN-SUFFIX,cytroncdn.videojj.com - - DOMAIN-SUFFIX,da.hunantv.com - - DOMAIN-SUFFIX,da.mgtv.com - - DOMAIN-SUFFIX,imgaliyun.da.mgtv.com - - DOMAIN-SUFFIX,imgaliyun.res.mgtv.com - - DOMAIN-SUFFIX,m2.da.mgtv.com - - DOMAIN-SUFFIX,me.videojj.com - - DOMAIN-SUFFIX,mobaliyun.res.mgtv.com - - DOMAIN-SUFFIX,mobile.da.mgtv.com - - DOMAIN-SUFFIX,mobile2.da.mgtv.com - - DOMAIN-SUFFIX,mp4.res.hunantv.com - - DOMAIN-SUFFIX,pc.da.mgtv.com - - DOMAIN-SUFFIX,pc1.da.mgtv.com - - DOMAIN-SUFFIX,pcvideoaliyun.titan.mgtv.com - - DOMAIN-SUFFIX,pcvideoyd.titan.mgtv.com - - DOMAIN-SUFFIX,pcweb.v1.mgtv.com - - DOMAIN-SUFFIX,plat.videojj.com - - DOMAIN-SUFFIX,py.da.mgtv.com - - DOMAIN-SUFFIX,res.hunantv.com - - DOMAIN-SUFFIX,store.videojj.com - - DOMAIN-SUFFIX,v2.da.mgtv.com - - DOMAIN-SUFFIX,va.videojj.com - - DOMAIN-SUFFIX,web.da.mgtv.com - - DOMAIN-SUFFIX,x.da.hunantv.com - - DOMAIN-SUFFIX,x.da.mgtv.com - - DOMAIN-SUFFIX,x1.da.hunantv.com - - DOMAIN-SUFFIX,y.da.hunantv.com - - DOMAIN-SUFFIX,y.da.mgtv.com - - # > Letv - - DOMAIN-SUFFIX,1.letvlive.com - - DOMAIN-SUFFIX,2.letvlive.com - - DOMAIN-SUFFIX,ads1.lfengmobile.com - - DOMAIN-SUFFIX,api.game.letvstore.com - - DOMAIN-SUFFIX,api.push.le.com - - DOMAIN-SUFFIX,ark.letv.com - - DOMAIN-SUFFIX,cdn.zampdsp.com - - DOMAIN-SUFFIX,cm.fancyapi.com - - DOMAIN-SUFFIX,cn.api.push.le.com - - DOMAIN-SUFFIX,dc.letv.com - - DOMAIN-SUFFIX,fz.letv.com - - DOMAIN-SUFFIX,g3.letv.com - - DOMAIN-SUFFIX,minisite.letv.com - - DOMAIN-SUFFIX,msg.m.letv.com - - DOMAIN-SUFFIX,n.mark.letv.com - - DOMAIN-SUFFIX,pro.hoye.letv.com - - DOMAIN-SUFFIX,pro.letv.com - - DOMAIN-SUFFIX,s.zampdsp.com - - DOMAIN-SUFFIX,stat.letv.com - - DOMAIN-SUFFIX,static.app.m.letv.com - - DOMAIN-SUFFIX,webp2p.letv.com - - DOMAIN-SUFFIX,zamplus.com - - # > Youtube - - DOMAIN-SUFFIX,azabu-u.ac.jp - - DOMAIN-SUFFIX,couchcoaster.jp - - DOMAIN-SUFFIX,delivery.dmkt-sp.jp - - DOMAIN-SUFFIX,ehg-youtube.hitbox.com - - DOMAIN-SUFFIX,m-78.jp - - DOMAIN-SUFFIX,nichibenren.or.jp - - DOMAIN-SUFFIX,nicorette.co.kr - - # > Sohu - - DOMAIN-SUFFIX,adnet.sohu.com - - DOMAIN-SUFFIX,aty.sohu.com - - DOMAIN-SUFFIX,data.vod.itc.cn - - DOMAIN-SUFFIX,epro.sogou.com - - DOMAIN-SUFFIX,go.sohu.com - - DOMAIN-SUFFIX,golden1.sogou.com - - DOMAIN-SUFFIX,imp.optaim.com - - DOMAIN-SUFFIX,inte.sogou.com - - DOMAIN-SUFFIX,inte.sogoucdn.com - - DOMAIN-SUFFIX,lu.sogoucdn.com - - DOMAIN-SUFFIX,theta.sogoucdn.com - - DOMAIN-SUFFIX,uranus.sogou.com - - # > PPTV - - DOMAIN-SUFFIX,afp.pplive.com - - DOMAIN-SUFFIX,app.aplus.pptv.com - - DOMAIN-SUFFIX,as.aplus.pptv.com - - DOMAIN-SUFFIX,asimgs.pplive.cn - - DOMAIN-SUFFIX,de.as.pptv.com - - DOMAIN-SUFFIX,jp.as.pptv.com - - DOMAIN-SUFFIX,pp2.pptv.com - - DOMAIN-SUFFIX,stat.pptv.com - - DOMAIN-SUFFIX,static.g.pptv.com - # - URL-REGEX,https?:\/\/img\w\.g\.pptv\.com - - # > Site - - DOMAIN-SUFFIX,deliver.ifeng.com - - DOMAIN-SUFFIX,hxjs.tool.hexun.com - - DOMAIN-SUFFIX,hxsame.hexun.com - - DOMAIN-SUFFIX,itv.hexun.com - - DOMAIN-SUFFIX,utrack.hexun.com - # - URL-REGEX,https?:\/\/h\w{2}\.hxsame\.hexun\.com - - # > Vod - - DOMAIN-SUFFIX,ad.cmvideo.cn - - DOMAIN-SUFFIX,atm.cp31.ott.cibntv.net - - DOMAIN-SUFFIX,aty.cp45.ott.cibntv.net - - DOMAIN-SUFFIX,cpm.cm.kankan.com - - DOMAIN-SUFFIX,float.kankan.com - - DOMAIN-SUFFIX,houyi.baofeng.net - - DOMAIN-SUFFIX,iadctest.qwapi.com - - # > Other - - DOMAIN-SUFFIX,ad.video.51togic.com - - DOMAIN-SUFFIX,biz5.kankan.com - - DOMAIN-SUFFIX,c.algovid.com - - DOMAIN-SUFFIX,cms.laifeng.com - - DOMAIN-SUFFIX,da.mmarket.com - - DOMAIN-SUFFIX,dotcounter.douyutv.com - - DOMAIN-SUFFIX,g.uusee.com - - DOMAIN-SUFFIX,gcdn.2mdn.net - - DOMAIN-SUFFIX,gentags.net - - DOMAIN-SUFFIX,gg.jtertp.com - - DOMAIN-SUFFIX,gug.ku6cdn.com - - DOMAIN-SUFFIX,hp.smiler-ad.com - - DOMAIN-SUFFIX,kooyum.com - - DOMAIN-SUFFIX,ld.kuaigames.com - - DOMAIN-SUFFIX,logstat.t.sfht.com - - DOMAIN-SUFFIX,match.rtbidder.net - - DOMAIN-SUFFIX,mixer.cupid.ptqy.gitv.tv - - DOMAIN-SUFFIX,msg.c002.ottcn.com - - DOMAIN-SUFFIX,msga.ptqy.gitv.tv - - DOMAIN-SUFFIX,njwxh.com - - DOMAIN-SUFFIX,nl.rcd.ptqy.gitv.tv - - DOMAIN-SUFFIX,n-st.vip.com - - DOMAIN-SUFFIX,pb.bi.gitv.tv - - DOMAIN-SUFFIX,pop.uusee.com - - DOMAIN-SUFFIX,rd.kuaigames.com - - DOMAIN-SUFFIX,shizen-no-megumi.com - - DOMAIN-SUFFIX,shrek.6.cn - - DOMAIN-SUFFIX,simba.6.cn - - DOMAIN-SUFFIX,st.vq.ku6.cn - - DOMAIN-SUFFIX,statcounter.com - - DOMAIN-SUFFIX,static.duoshuo.com - - DOMAIN-SUFFIX,static.ku6.com - - DOMAIN-SUFFIX,static8.pmadx.com - - DOMAIN-SUFFIX,store.ptqy.gitv.tv - - DOMAIN-SUFFIX,t7z.cupid.ptqy.gitv.tv - - DOMAIN-SUFFIX,traffic.uusee.com - - DOMAIN-SUFFIX,union.6.cn - - DOMAIN-SUFFIX,wa.gtimg.com - - DOMAIN-SUFFIX,bfshan.cn - - - - - DOMAIN-SUFFIX,0.r.msn.com - - DOMAIN-SUFFIX,000dn.com - - DOMAIN-SUFFIX,001union.com - - DOMAIN-SUFFIX,0086555.com - - DOMAIN-SUFFIX,00880808.com - - DOMAIN-SUFFIX,00oo00.com - - DOMAIN-SUFFIX,01.gxso.net - - DOMAIN-SUFFIX,010teacher.com - - DOMAIN-SUFFIX,010xk.com - - DOMAIN-SUFFIX,018520.com - - DOMAIN-SUFFIX,01daa.lubih.com - - DOMAIN-SUFFIX,01daa.lutci.com - - DOMAIN-SUFFIX,01daa.lutgh.com - - DOMAIN-SUFFIX,01daa.luvbr.com - - DOMAIN-SUFFIX,01daa.luytr.com - - DOMAIN-SUFFIX,022aifang.com - - DOMAIN-SUFFIX,023hysj.com - - DOMAIN-SUFFIX,025suyu.com - - DOMAIN-SUFFIX,0313413.com - - DOMAIN-SUFFIX,0451106.com - - DOMAIN-SUFFIX,0531kt.com - - DOMAIN-SUFFIX,0592weixin.com - - DOMAIN-SUFFIX,0594003.com - - DOMAIN-SUFFIX,06362.com - - DOMAIN-SUFFIX,0756sjlm.com.cn - - DOMAIN-SUFFIX,09_19.supfree.net - - DOMAIN-SUFFIX,0aqpqdju.me - - DOMAIN-SUFFIX,0x01e7.website - - DOMAIN-SUFFIX,0xxd.com - - DOMAIN-SUFFIX,1.1010pic.com - - DOMAIN-SUFFIX,1.201980.com - - DOMAIN-SUFFIX,1.21shebao.com - - DOMAIN-SUFFIX,1.51sxue.cn - - DOMAIN-SUFFIX,1.aili.com - - DOMAIN-SUFFIX,1.bashenghuo.com - - DOMAIN-SUFFIX,1.chcx.cn - - DOMAIN-SUFFIX,1.cjcp.cn - - DOMAIN-SUFFIX,1.codesdq.com - - DOMAIN-SUFFIX,1.feihua.com - - DOMAIN-SUFFIX,1.glook.cn - - DOMAIN-SUFFIX,1.hao123.com - - DOMAIN-SUFFIX,1.hnyouneng.com - - DOMAIN-SUFFIX,1.hslyqs.com - - DOMAIN-SUFFIX,1.i1766.com - - DOMAIN-SUFFIX,1.iqeq.com.cn - - DOMAIN-SUFFIX,1.jeasyui.net - - DOMAIN-SUFFIX,1.mgff.com - - DOMAIN-SUFFIX,1.nanrenwo.net - - DOMAIN-SUFFIX,1.panduoduo.net - - DOMAIN-SUFFIX,1.qtmojo.cn - - DOMAIN-SUFFIX,1.rengshu.com - - DOMAIN-SUFFIX,1.soufy.cn - - DOMAIN-SUFFIX,1.tulaoshi.com - - DOMAIN-SUFFIX,1.tuxi.com.cn - - DOMAIN-SUFFIX,1.win7china.com - - DOMAIN-SUFFIX,1.win7sky.com - - DOMAIN-SUFFIX,1.wps.cn - - DOMAIN-SUFFIX,1.xiaopin5.com - - DOMAIN-SUFFIX,1.xiaozhizhijia.com - - DOMAIN-SUFFIX,1.xilu.com - - DOMAIN-SUFFIX,1.zw3e.com - - DOMAIN-SUFFIX,1000dy.com - - DOMAIN-SUFFIX,10086.cn.baidu.cdn.yiwk.com - - DOMAIN-SUFFIX,100fenlm.com - - DOMAIN-SUFFIX,1017.cn - - DOMAIN-SUFFIX,10up.com - - DOMAIN-SUFFIX,11.hydcd.com - - DOMAIN-SUFFIX,111111qb.com - - DOMAIN-SUFFIX,111cn.net - - DOMAIN-SUFFIX,1133.cc - - DOMAIN-SUFFIX,114la.com - - DOMAIN-SUFFIX,1178.shucong.com - - DOMAIN-SUFFIX,11g.yiqig.cn - - DOMAIN-SUFFIX,1224.dxsbb.com - - DOMAIN-SUFFIX,123.sogou.com - - DOMAIN-SUFFIX,12306media.com - - DOMAIN-SUFFIX,1234xm.com - - DOMAIN-SUFFIX,12365chia.com - - DOMAIN-SUFFIX,123hala.com - - DOMAIN-SUFFIX,123juzi.net - - DOMAIN-SUFFIX,13023.url.7wkw.com - - DOMAIN-SUFFIX,138138138.top - - DOMAIN-SUFFIX,142904.com - - DOMAIN-SUFFIX,144.dragonparking.com - - DOMAIN-SUFFIX,1495039.com - - DOMAIN-SUFFIX,163.wrating.com - - DOMAIN-SUFFIX,163ren.com - - DOMAIN-SUFFIX,168.it168.com - - DOMAIN-SUFFIX,1680go.com - - DOMAIN-SUFFIX,168ad.cc - - DOMAIN-SUFFIX,170yy.com - - DOMAIN-SUFFIX,175bar.com - - DOMAIN-SUFFIX,176um.com - - DOMAIN-SUFFIX,178gg.com - - DOMAIN-SUFFIX,17gouwuba.com - - DOMAIN-SUFFIX,17leyi.com - - DOMAIN-SUFFIX,17un.co - - DOMAIN-SUFFIX,17un.com - - DOMAIN-SUFFIX,17zhaole.com - - DOMAIN-SUFFIX,189zj.cn - - DOMAIN-SUFFIX,18av.mm-cg.co - - DOMAIN-SUFFIX,18dusun.com - - DOMAIN-SUFFIX,18tzx.com - - DOMAIN-SUFFIX,1933000.com - - DOMAIN-SUFFIX,1d1px.net - - DOMAIN-SUFFIX,1e2hyl3b.wq42211.com - - DOMAIN-SUFFIX,1i580.com - - DOMAIN-SUFFIX,1kmb.cn - - DOMAIN-SUFFIX,1kxun.mobi - - DOMAIN-SUFFIX,1kzh.com - - DOMAIN-SUFFIX,1l1.cc - - DOMAIN-SUFFIX,1lib.cn - - DOMAIN-SUFFIX,1o26.com - - DOMAIN-SUFFIX,1qwe3r.com - - DOMAIN-SUFFIX,1tlm.cn - - DOMAIN-SUFFIX,1uandun.com - - DOMAIN-SUFFIX,1x3x.com - - DOMAIN-SUFFIX,2.1010pic.com - - DOMAIN-SUFFIX,2.21shebao.com - - DOMAIN-SUFFIX,2.5aigushi.com - - DOMAIN-SUFFIX,2.aili.com - - DOMAIN-SUFFIX,2.bashenghuo.com - - DOMAIN-SUFFIX,2.heiyange.com - - DOMAIN-SUFFIX,2.mobixs.cn - - DOMAIN-SUFFIX,2.nanrenwo.net - - DOMAIN-SUFFIX,2.rengshu.com - - DOMAIN-SUFFIX,2.tuxi.com.cn - - DOMAIN-SUFFIX,201071.com - - DOMAIN-SUFFIX,2012.8684.com - - DOMAIN-SUFFIX,2012ui.com - - DOMAIN-SUFFIX,20150930.cf - - DOMAIN-SUFFIX,2016.sina.cn - - DOMAIN-SUFFIX,2016bobo.cf - - DOMAIN-SUFFIX,2017img.myxh999.com - - DOMAIN-SUFFIX,202m.com - - DOMAIN-SUFFIX,203710.com - - DOMAIN-SUFFIX,2144.cn - - DOMAIN-SUFFIX,21union.com - - DOMAIN-SUFFIX,22.qingsongbar.com - - DOMAIN-SUFFIX,22222jsc.com - - DOMAIN-SUFFIX,222627.com - - DOMAIN-SUFFIX,22lm.cc - - DOMAIN-SUFFIX,233wo.com - - DOMAIN-SUFFIX,2345.cn - - DOMAIN-SUFFIX,2345api.dftoutiao.com - - DOMAIN-SUFFIX,2345apicode.dftoutiao.com - - DOMAIN-SUFFIX,2345at.com - - DOMAIN-SUFFIX,235123.net - - DOMAIN-SUFFIX,24haitao.net - - DOMAIN-SUFFIX,256ppp.com - - DOMAIN-SUFFIX,268mob.cn - - DOMAIN-SUFFIX,272829.cc - - DOMAIN-SUFFIX,272xb.com - - DOMAIN-SUFFIX,285680.com - - DOMAIN-SUFFIX,28acglz.com - - DOMAIN-SUFFIX,2a.com.cn - - DOMAIN-SUFFIX,2cnt.net - - DOMAIN-SUFFIX,2m2n.com - - DOMAIN-SUFFIX,2o7.net - - DOMAIN-SUFFIX,3.guidaye.com - - DOMAIN-SUFFIX,3.ssqzj.com - - DOMAIN-SUFFIX,30350f.com - - DOMAIN-SUFFIX,30407799.com - - DOMAIN-SUFFIX,30ampj.com - - DOMAIN-SUFFIX,31.media.tumblr.com - - DOMAIN-SUFFIX,312036.com - - DOMAIN-SUFFIX,3180555.com - - DOMAIN-SUFFIX,32414.com - - DOMAIN-SUFFIX,32666099.com - - DOMAIN-SUFFIX,33.autohome.com.cn - - DOMAIN-SUFFIX,33.pcpop.com - - DOMAIN-SUFFIX,33544444.com - - DOMAIN-SUFFIX,336.com - - DOMAIN-SUFFIX,3388pjdc.com - - DOMAIN-SUFFIX,339.cn - - DOMAIN-SUFFIX,3393.com - - DOMAIN-SUFFIX,33lm.cc - - DOMAIN-SUFFIX,33shangyou.com - - DOMAIN-SUFFIX,35baba.cn - - DOMAIN-SUFFIX,3600.com - - DOMAIN-SUFFIX,360640.com - - DOMAIN-SUFFIX,360baidus.com - - DOMAIN-SUFFIX,360jiaquan.com - - DOMAIN-SUFFIX,360safego.com - - DOMAIN-SUFFIX,360shopping.com.cn - - DOMAIN-SUFFIX,360vip.front99.com - - DOMAIN-SUFFIX,361315.cc - - DOMAIN-SUFFIX,365bibi.com - - DOMAIN-SUFFIX,365safego.com - - DOMAIN-SUFFIX,366safego.com - - DOMAIN-SUFFIX,36pn.com - - DOMAIN-SUFFIX,3721zh.com - - DOMAIN-SUFFIX,376zf.com - - DOMAIN-SUFFIX,37cs.com - - DOMAIN-SUFFIX,37mnm.com - - DOMAIN-SUFFIX,37pk49.com - - DOMAIN-SUFFIX,37see.com - - DOMAIN-SUFFIX,37wan.cn - - DOMAIN-SUFFIX,37wan.com - - DOMAIN-SUFFIX,3808010.com - - DOMAIN-SUFFIX,38330.bet - - DOMAIN-SUFFIX,3839168.com - - DOMAIN-SUFFIX,38499.com - - DOMAIN-SUFFIX,38c99.com - - DOMAIN-SUFFIX,39330.bet - - DOMAIN-SUFFIX,3975lm.com - - DOMAIN-SUFFIX,39xc.net - - DOMAIN-SUFFIX,3dm.huya.com - - DOMAIN-SUFFIX,3dns-2.adobe.com - - DOMAIN-SUFFIX,3dns-3.adobe.com - - DOMAIN-SUFFIX,3dwwwgame.com - - DOMAIN-SUFFIX,3g.990.net - - DOMAIN-SUFFIX,3gmimo.com - - DOMAIN-SUFFIX,3gmtr.com - - DOMAIN-SUFFIX,3htai.com - - DOMAIN-SUFFIX,3qmh.com - - DOMAIN-SUFFIX,3rd.t.sohu.com - - DOMAIN-SUFFIX,3wz6z.bchuangpi.cn - - DOMAIN-SUFFIX,3ygww.com - - DOMAIN-SUFFIX,4009997658.com - - DOMAIN-SUFFIX,404.safedog.cn - - DOMAIN-SUFFIX,4207008.com - - DOMAIN-SUFFIX,4242jj.com - - DOMAIN-SUFFIX,4242lll.com - - DOMAIN-SUFFIX,4242uuu.com - - DOMAIN-SUFFIX,4336wang.cn - - DOMAIN-SUFFIX,456juhd.com - - DOMAIN-SUFFIX,46sg.com - - DOMAIN-SUFFIX,49wanwan.com - - DOMAIN-SUFFIX,4ggww.com - - DOMAIN-SUFFIX,4paradigm.com - - DOMAIN-SUFFIX,4wad.com - - DOMAIN-SUFFIX,4xhyr.shuimujinggong.com - - DOMAIN-SUFFIX,504pk.com - - DOMAIN-SUFFIX,5066.net - - DOMAIN-SUFFIX,50bang.org - - DOMAIN-SUFFIX,51.la - - DOMAIN-SUFFIX,5125129.com - - DOMAIN-SUFFIX,513hch.com - - DOMAIN-SUFFIX,517m.cn - - DOMAIN-SUFFIX,518.sdinfo.net - - DOMAIN-SUFFIX,5188yy.com - - DOMAIN-SUFFIX,519397.com - - DOMAIN-SUFFIX,51ads.com - - DOMAIN-SUFFIX,51chumoping.com - - DOMAIN-SUFFIX,51dql.com - - DOMAIN-SUFFIX,51gxqm.com - - DOMAIN-SUFFIX,51jumintong.com - - DOMAIN-SUFFIX,51la.net - - DOMAIN-SUFFIX,51link.com - - DOMAIN-SUFFIX,51mld.cn - - DOMAIN-SUFFIX,51network.com - - DOMAIN-SUFFIX,51vipedu.com - - DOMAIN-SUFFIX,51weidashi.com - - DOMAIN-SUFFIX,51xumei.com - - DOMAIN-SUFFIX,51yes.com - - DOMAIN-SUFFIX,51zhanzhuang.cn - - DOMAIN-SUFFIX,5207470.com - - DOMAIN-SUFFIX,5269120.com - - DOMAIN-SUFFIX,526d.uunice.com - - DOMAIN-SUFFIX,526dimg.uunice.com - - DOMAIN-SUFFIX,5293.com - - DOMAIN-SUFFIX,52kmh.com - - DOMAIN-SUFFIX,52kmk.com - - DOMAIN-SUFFIX,52lubo.cn - - DOMAIN-SUFFIX,5345ll.com - - DOMAIN-SUFFIX,537901.com - - DOMAIN-SUFFIX,55.la - - DOMAIN-SUFFIX,555p555p.com - - DOMAIN-SUFFIX,559gp.com - - DOMAIN-SUFFIX,55lu.com - - DOMAIN-SUFFIX,5634.com - - DOMAIN-SUFFIX,5675146.com - - DOMAIN-SUFFIX,57.com.cn - - DOMAIN-SUFFIX,57union.com - - DOMAIN-SUFFIX,58.xgo.com.cn - - DOMAIN-SUFFIX,5814889.com - - DOMAIN-SUFFIX,5857.com - - DOMAIN-SUFFIX,588yw.com - - DOMAIN-SUFFIX,58lm.vip - - DOMAIN-SUFFIX,58mingri.cn - - DOMAIN-SUFFIX,58mingtian.cn - - DOMAIN-SUFFIX,592man.com - - DOMAIN-SUFFIX,5dg.me - - DOMAIN-SUFFIX,5dian.org - - DOMAIN-SUFFIX,5egk.com - - DOMAIN-SUFFIX,5imoney.com - - DOMAIN-SUFFIX,5jcom.com.cn - - DOMAIN-SUFFIX,5vz3cfs0yd.me - - DOMAIN-SUFFIX,5y9nfpes.52pk.com - - DOMAIN-SUFFIX,5yrra.deshuangwang.cn - - DOMAIN-SUFFIX,600ad.com - - DOMAIN-SUFFIX,601654.com - - DOMAIN-SUFFIX,60608787.com - - DOMAIN-SUFFIX,626uc.com - - DOMAIN-SUFFIX,644446.com - - DOMAIN-SUFFIX,649558.com - - DOMAIN-SUFFIX,64si.com - - DOMAIN-SUFFIX,654mmm.com - - DOMAIN-SUFFIX,6615338.cn - - DOMAIN-SUFFIX,6666349.com - - DOMAIN-SUFFIX,6669667.com - - DOMAIN-SUFFIX,66992949.com - - DOMAIN-SUFFIX,66san.com - - DOMAIN-SUFFIX,6711.com - - DOMAIN-SUFFIX,6728812.com - - DOMAIN-SUFFIX,685wo.com - - DOMAIN-SUFFIX,68665565.com - - DOMAIN-SUFFIX,69duk.com - - DOMAIN-SUFFIX,6a4cc.lubue.com - - DOMAIN-SUFFIX,6a4cc.luvbq.com - - DOMAIN-SUFFIX,6a4cc.luvbr.com - - DOMAIN-SUFFIX,6a4cc.luytr.com - - DOMAIN-SUFFIX,6boou.voluumtrk.com - - DOMAIN-SUFFIX,6d63d3.com - - DOMAIN-SUFFIX,6dad.com - - DOMAIN-SUFFIX,6dvip.com - - DOMAIN-SUFFIX,6huu.com - - DOMAIN-SUFFIX,6kwan.com - - DOMAIN-SUFFIX,6tsbe1zs.me - - DOMAIN-SUFFIX,700900.com - - DOMAIN-SUFFIX,706529.com - - DOMAIN-SUFFIX,7080555.com - - DOMAIN-SUFFIX,70e.com - - DOMAIN-SUFFIX,70lm.com - - DOMAIN-SUFFIX,711kk.com - - DOMAIN-SUFFIX,716703.com - - DOMAIN-SUFFIX,71sem.com - - DOMAIN-SUFFIX,73.sinawap.com - - DOMAIN-SUFFIX,743m1.11a12.com - - DOMAIN-SUFFIX,749558.com - - DOMAIN-SUFFIX,749808.com - - DOMAIN-SUFFIX,7540.com - - DOMAIN-SUFFIX,75to.com - - DOMAIN-SUFFIX,7631.com - - DOMAIN-SUFFIX,766ba.net - - DOMAIN-SUFFIX,76802.net - - DOMAIN-SUFFIX,77455.com - - DOMAIN-SUFFIX,778669.com - - DOMAIN-SUFFIX,7794.com - - DOMAIN-SUFFIX,77power.com - - DOMAIN-SUFFIX,77u.com - - DOMAIN-SUFFIX,77xtv.com - - DOMAIN-SUFFIX,7891655.cn - - DOMAIN-SUFFIX,7car.com.cn - - DOMAIN-SUFFIX,7clink.com - - DOMAIN-SUFFIX,7dah8.com - - DOMAIN-SUFFIX,7gg.cc - - DOMAIN-SUFFIX,7jiajiao.com - - DOMAIN-SUFFIX,7mad.7m.cn - - DOMAIN-SUFFIX,7pk.com - - DOMAIN-SUFFIX,7wen.cn - - DOMAIN-SUFFIX,7xz3.com - - DOMAIN-SUFFIX,7z66.com - - DOMAIN-SUFFIX,8.jrj.com - - DOMAIN-SUFFIX,801.tianyaui.com - - DOMAIN-SUFFIX,8066hg.com - - DOMAIN-SUFFIX,80sjw.com - - DOMAIN-SUFFIX,813690.top - - DOMAIN-SUFFIX,8184.cc - - DOMAIN-SUFFIX,818mov.com - - DOMAIN-SUFFIX,81c.cn - - DOMAIN-SUFFIX,8269996.com - - DOMAIN-SUFFIX,8368661.com - - DOMAIN-SUFFIX,846.move7.com - - DOMAIN-SUFFIX,849558.com - - DOMAIN-SUFFIX,85058s.com - - DOMAIN-SUFFIX,8521448.com - - DOMAIN-SUFFIX,85655095.com - - DOMAIN-SUFFIX,859377.com - - DOMAIN-SUFFIX,85tgw.com - - DOMAIN-SUFFIX,86.cc - - DOMAIN-SUFFIX,860010.com - - DOMAIN-SUFFIX,86kx.com - - DOMAIN-SUFFIX,878090.com - - DOMAIN-SUFFIX,8800271.com.cn - - DOMAIN-SUFFIX,88210212.com - - DOMAIN-SUFFIX,8866786.com - - DOMAIN-SUFFIX,888.izhufu.net - - DOMAIN-SUFFIX,888.jiuwanwang.com - - DOMAIN-SUFFIX,888.tv.sohu.com - - DOMAIN-SUFFIX,88818122.cn - - DOMAIN-SUFFIX,888zr022.com - - DOMAIN-SUFFIX,88cncc.com - - DOMAIN-SUFFIX,88rpg.net - - DOMAIN-SUFFIX,88shu.cn - - DOMAIN-SUFFIX,892155.com - - DOMAIN-SUFFIX,89h8.com - - DOMAIN-SUFFIX,8dulm.com - - DOMAIN-SUFFIX,8hykthze.cricket - - DOMAIN-SUFFIX,8jd2lfsq.me - - DOMAIN-SUFFIX,8jkx.com - - DOMAIN-SUFFIX,8le8le.com - - DOMAIN-SUFFIX,8mfty.com - - DOMAIN-SUFFIX,8ox.cn - - DOMAIN-SUFFIX,90053999.com - - DOMAIN-SUFFIX,910weixin.com - - DOMAIN-SUFFIX,911.cc - - DOMAIN-SUFFIX,915.com - - DOMAIN-SUFFIX,91ad.bestvogue.com - - DOMAIN-SUFFIX,91adv.com - - DOMAIN-SUFFIX,91hui.com - - DOMAIN-SUFFIX,91veg.com - - DOMAIN-SUFFIX,91xry.com - - DOMAIN-SUFFIX,91ysa.com - - DOMAIN-SUFFIX,91zgm.com - - DOMAIN-SUFFIX,92x.tumblr.com - - DOMAIN-SUFFIX,930.dragonparking.com - - DOMAIN-SUFFIX,93manhua.com - - DOMAIN-SUFFIX,94lm.com - - DOMAIN-SUFFIX,95105012.com - - DOMAIN-SUFFIX,9519.net - - DOMAIN-SUFFIX,95558000.com - - DOMAIN-SUFFIX,9565365.com - - DOMAIN-SUFFIX,9566180.com - - DOMAIN-SUFFIX,96mob.com - - DOMAIN-SUFFIX,9948000.com - - DOMAIN-SUFFIX,99909988.com - - DOMAIN-SUFFIX,99click.com - - DOMAIN-SUFFIX,99ddd.com - - DOMAIN-SUFFIX,99lolo.com - - DOMAIN-SUFFIX,9ads.net - - DOMAIN-SUFFIX,9dtiny.cn - - DOMAIN-SUFFIX,9kff.com - - DOMAIN-SUFFIX,9pkw.com - - DOMAIN-SUFFIX,9s6q.cn - - DOMAIN-SUFFIX,9tn.cc - - DOMAIN-SUFFIX,9wushuo.com - - DOMAIN-SUFFIX,a.198banjia.com - - DOMAIN-SUFFIX,a.53yao.com - - DOMAIN-SUFFIX,a.5ykj.com - - DOMAIN-SUFFIX,a.80982.org - - DOMAIN-SUFFIX,a.ads1.msn.com - - DOMAIN-SUFFIX,a.ads2.msn.com - - DOMAIN-SUFFIX,a.armystar.com - - DOMAIN-SUFFIX,a.baidu.com - - DOMAIN-SUFFIX,a.baiy.net - - DOMAIN-SUFFIX,a.baomihua.com - - DOMAIN-SUFFIX,a.beilamusi.com - - DOMAIN-SUFFIX,a.benshiw.net - - DOMAIN-SUFFIX,a.bshu.com - - DOMAIN-SUFFIX,a.cdngeek.net - - DOMAIN-SUFFIX,a.clipconverter.cc - - DOMAIN-SUFFIX,a.cn.duoyi.com - - DOMAIN-SUFFIX,a.dangdang.com - - DOMAIN-SUFFIX,a.dianjoy.com - - DOMAIN-SUFFIX,a.dounanhuahui.com - - DOMAIN-SUFFIX,a.duanmeiwen.com - - DOMAIN-SUFFIX,a.e7009.com - - DOMAIN-SUFFIX,a.ecook.cn - - DOMAIN-SUFFIX,a.epinv.com - - DOMAIN-SUFFIX,a.eporner.com - - DOMAIN-SUFFIX,a.exam58.com - - DOMAIN-SUFFIX,a.fengyx.com - - DOMAIN-SUFFIX,a.fwsir.com - - DOMAIN-SUFFIX,a.giantrealm.com - - DOMAIN-SUFFIX,a.global.msads.net - - DOMAIN-SUFFIX,a.hl.mi.com - - DOMAIN-SUFFIX,a.holagames.com - - DOMAIN-SUFFIX,a.irs01.com - - DOMAIN-SUFFIX,a.itiexue.net - - DOMAIN-SUFFIX,a.jyeoo.com - - DOMAIN-SUFFIX,a.kandiaoyu.com - - DOMAIN-SUFFIX,a.kejixun.com - - DOMAIN-SUFFIX,a.kickass.to - - DOMAIN-SUFFIX,a.koudai.com - - DOMAIN-SUFFIX,a.livesportmedia.eu - - DOMAIN-SUFFIX,a.lolwot.com - - DOMAIN-SUFFIX,a.ltdnc.com - - DOMAIN-SUFFIX,a.lwinl.com - - DOMAIN-SUFFIX,a.lz13.cn - - DOMAIN-SUFFIX,a.m.gxwztv.com - - DOMAIN-SUFFIX,a.m.shuhuangge.org - - DOMAIN-SUFFIX,a.mct01.com - - DOMAIN-SUFFIX,a.mjlnbx.cn - - DOMAIN-SUFFIX,a.nanhuwang.com - - DOMAIN-SUFFIX,a.nowscore.com - - DOMAIN-SUFFIX,a.qiao024.com - - DOMAIN-SUFFIX,a.qinghua5.com - - DOMAIN-SUFFIX,a.shangz99991.com - - DOMAIN-SUFFIX,a.shczz.com - - DOMAIN-SUFFIX,a.shenchuang.com - - DOMAIN-SUFFIX,a.shuoshuodaquan.net - - DOMAIN-SUFFIX,a.solarmovie.is - - DOMAIN-SUFFIX,a.soonyou123.com - - DOMAIN-SUFFIX,a.starstar19999.com - - DOMAIN-SUFFIX,a.startui19999.com - - DOMAIN-SUFFIX,a.thefreethoughtproject.com - - DOMAIN-SUFFIX,a.tribalfusion.com - - DOMAIN-SUFFIX,a.tujidao.com - - DOMAIN-SUFFIX,a.tuuituii2999.com - - DOMAIN-SUFFIX,a.ucoz.net - - DOMAIN-SUFFIX,a.union.mi.com - - DOMAIN-SUFFIX,a.visualrevenue.com - - DOMAIN-SUFFIX,a.vlion.cn - - DOMAIN-SUFFIX,a.waczt.cn - - DOMAIN-SUFFIX,a.wlfnb.com - - DOMAIN-SUFFIX,a.xinwenge.net - - DOMAIN-SUFFIX,a.xixiyishu.com - - DOMAIN-SUFFIX,a.xizi.com - - DOMAIN-SUFFIX,a.xywy.com - - DOMAIN-SUFFIX,a.yangshengtang123.com - - DOMAIN-SUFFIX,a.yixie8.com - - DOMAIN-SUFFIX,a.yjbys.com - - DOMAIN-SUFFIX,a.youdao.com - - DOMAIN-SUFFIX,a1.0s.net.cn - - DOMAIN-SUFFIX,a1.azg168.cn - - DOMAIN-SUFFIX,a1.gexing.me - - DOMAIN-SUFFIX,a1.huanqiumil.com - - DOMAIN-SUFFIX,a1.huiqituan.com - - DOMAIN-SUFFIX,a1.itc.cn - - DOMAIN-SUFFIX,a1.liuxue86.com - - DOMAIN-SUFFIX,a1.lmaq.cn - - DOMAIN-SUFFIX,a1.peoplecdn.cn - - DOMAIN-SUFFIX,a1.vdolady.com - - DOMAIN-SUFFIX,a1.yuuedu.com - - DOMAIN-SUFFIX,a1.zhanzhang.net - - DOMAIN-SUFFIX,a1click.cpc.sogou.com - - DOMAIN-SUFFIX,a2.b310.com - - DOMAIN-SUFFIX,a2.huanqiumil.com - - DOMAIN-SUFFIX,a2.rabbitpre.com - - DOMAIN-SUFFIX,a3.ikafan.com - - DOMAIN-SUFFIX,a3p4.net - - DOMAIN-SUFFIX,a4.b2b168.com - - DOMAIN-SUFFIX,a4.ikafan.com - - DOMAIN-SUFFIX,a4.yeshj.com - - DOMAIN-SUFFIX,a5.yeshj.com - - DOMAIN-SUFFIX,a6.bjdianyue.com - - DOMAIN-SUFFIX,a6.codejumps.com - - DOMAIN-SUFFIX,a6.taobanapp.com - - DOMAIN-SUFFIX,a6s.1cakeclub.com - - DOMAIN-SUFFIX,a6s.modoupai.com - - DOMAIN-SUFFIX,a6s.ruyiqufu.com - - DOMAIN-SUFFIX,a6s.ve001nz.com - - DOMAIN-SUFFIX,a7shun.com - - DOMAIN-SUFFIX,a907907.com - - DOMAIN-SUFFIX,a9377j.com - - DOMAIN-SUFFIX,aa.goodsblock.mgid.com - - DOMAIN-SUFFIX,aa.jiankang.com - - DOMAIN-SUFFIX,aa.tianya999.com - - DOMAIN-SUFFIX,aa.xiangxiangmf.com - - DOMAIN-SUFFIX,aa.zldh123.com - - DOMAIN-SUFFIX,aa0.pub.funshion.com - - DOMAIN-SUFFIX,aa1.pub.funshion.com - - DOMAIN-SUFFIX,aafanke.cc - - DOMAIN-SUFFIX,aa-gb.mgid.com - - DOMAIN-SUFFIX,aam.adsremote.scrippsnetworks.com - - DOMAIN-SUFFIX,ab.dydab.com - - DOMAIN-SUFFIX,ab.goodsblock.mgid.com - - DOMAIN-SUFFIX,ab.hysdknb.com - - DOMAIN-SUFFIX,ab.meishiba.com.cn - - DOMAIN-SUFFIX,ab.sc115.com - - DOMAIN-SUFFIX,abbyychina.com - - DOMAIN-SUFFIX,abc.dooccn.com - - DOMAIN-SUFFIX,abc.douguo.com - - DOMAIN-SUFFIX,abc.eastlady.cn - - DOMAIN-SUFFIX,abc.hkepc.com - - DOMAIN-SUFFIX,abc.ruiwen.com - - DOMAIN-SUFFIX,abc.xtyx918.com - - DOMAIN-SUFFIX,abc.yjbys.com - - DOMAIN-SUFFIX,abc.zhiyaspa.com - - DOMAIN-SUFFIX,abcd.zsrt88.cn - - DOMAIN-SUFFIX,abcj.dooccn.com - - DOMAIN-SUFFIX,ab-gb.mgid.com - - DOMAIN-SUFFIX,abtest.mistat.xiaomi.com - - DOMAIN-SUFFIX,ac.atpanel.com - - DOMAIN-SUFFIX,ac2.msn.com - - DOMAIN-SUFFIX,ac3.msn.com - - DOMAIN-SUFFIX,acasys88.cn - - DOMAIN-SUFFIX,access.njherald.com - - DOMAIN-SUFFIX,ac-gb.mgid.com - - DOMAIN-SUFFIX,acint.net - - DOMAIN-SUFFIX,acm.dzwww.com - - DOMAIN-SUFFIX,acs86.com - - DOMAIN-SUFFIX,acsystem.wasu.cn - - DOMAIN-SUFFIX,act2.mediafour.com - - DOMAIN-SUFFIX,activate.adobe.com - - DOMAIN-SUFFIX,activate.wip3.adobe.com - - DOMAIN-SUFFIX,activate-sea.adobe.com - - DOMAIN-SUFFIX,activate-sjc0.adobe.com - - DOMAIN-SUFFIX,activation.cyberlink.com - - DOMAIN-SUFFIX,activation.easeus.com - - DOMAIN-SUFFIX,active.baofeng.com - - DOMAIN-SUFFIX,activeqq.3g.qq.com - - DOMAIN-SUFFIX,activity.app.autohome.com.cn - - DOMAIN-SUFFIX,activity.serving-sys.com - - DOMAIN-SUFFIX,activity.tuifish.com - - DOMAIN-SUFFIX,activity.yuyiya.com - - DOMAIN-SUFFIX,actlog.dftoutiao.com - - DOMAIN-SUFFIX,actsdk.idreamsky.com - - DOMAIN-SUFFIX,acuityplatform.com - - DOMAIN-SUFFIX,acwgf.com - - DOMAIN-SUFFIX,acxiom-online.com - - DOMAIN-SUFFIX,ad.1111cpc.com - - DOMAIN-SUFFIX,ad.12306.cn - - DOMAIN-SUFFIX,ad.17173.com - - DOMAIN-SUFFIX,ad.1kxun.com - - DOMAIN-SUFFIX,ad.3.cn - - DOMAIN-SUFFIX,ad.360yield.com - - DOMAIN-SUFFIX,ad.363.in - - DOMAIN-SUFFIX,ad.3dnews.ru - - DOMAIN-SUFFIX,ad.51wnl.com - - DOMAIN-SUFFIX,ad.95306.cn - - DOMAIN-SUFFIX,ad.about.co.kr - - DOMAIN-SUFFIX,ad.accessmediaproductions.com - - DOMAIN-SUFFIX,ad.adhouyi.cn - - DOMAIN-SUFFIX,ad.aidalan.com - - DOMAIN-SUFFIX,ad.api.moji.com - - DOMAIN-SUFFIX,ad.auditude.com - - DOMAIN-SUFFIX,ad.bayescom.com - - DOMAIN-SUFFIX,ad.beihai365.com - - DOMAIN-SUFFIX,ad.bitmedia.io - - DOMAIN-SUFFIX,ad.bjmama.net - - DOMAIN-SUFFIX,ad.cacafly.com - - DOMAIN-SUFFIX,ad.cctv.com - - DOMAIN-SUFFIX,ad.cooks.com - - DOMAIN-SUFFIX,ad.crichd.in - - DOMAIN-SUFFIX,ad.csdn.net - - DOMAIN-SUFFIX,ad.dedecms.com - - DOMAIN-SUFFIX,ad.digitimes.com.tw - - DOMAIN-SUFFIX,ad.directmirror.com - - DOMAIN-SUFFIX,ad.dokrmob.com - - DOMAIN-SUFFIX,ad.doubanio.com - - DOMAIN-SUFFIX,ad.download.cnet.com - - DOMAIN-SUFFIX,ad.dqwjzm.com - - DOMAIN-SUFFIX,ad.duapps.com - - DOMAIN-SUFFIX,ad.duga.jp - - DOMAIN-SUFFIX,ad.dumedia.ru - - DOMAIN-SUFFIX,ad.duomi.com - - DOMAIN-SUFFIX,ad.dzwindows.com - - DOMAIN-SUFFIX,ad.dzwww.com - - DOMAIN-SUFFIX,ad.egou.com - - DOMAIN-SUFFIX,ad.endpo.in - - DOMAIN-SUFFIX,ad.epochtimes.com - - DOMAIN-SUFFIX,ad.eporner.com - - DOMAIN-SUFFIX,ad.evozi.com - - DOMAIN-SUFFIX,ad.flipboard.com - - DOMAIN-SUFFIX,ad.flurry.com - - DOMAIN-SUFFIX,ad.flux.com - - DOMAIN-SUFFIX,ad.fnnews.com - - DOMAIN-SUFFIX,ad.foxnetworks.com - - DOMAIN-SUFFIX,ad.funp.com - - DOMAIN-SUFFIX,ad.funshion.org.cn - - DOMAIN-SUFFIX,ad.gametower.com.tw - - DOMAIN-SUFFIX,ad.ganji.com - - DOMAIN-SUFFIX,ad.gmw.cn - - DOMAIN-SUFFIX,ad.go.com - - DOMAIN-SUFFIX,ad.greedland.net - - DOMAIN-SUFFIX,ad.gtbrowser.com - - DOMAIN-SUFFIX,ad.hefei.cc - - DOMAIN-SUFFIX,ad.hiiir.com - - DOMAIN-SUFFIX,ad.holaq.com - - DOMAIN-SUFFIX,ad.hot-mob.com - - DOMAIN-SUFFIX,ad.house365.com - - DOMAIN-SUFFIX,ad.huajiao.com - - DOMAIN-SUFFIX,ad.ibookstar.com - - DOMAIN-SUFFIX,ad.icasthq.com - - DOMAIN-SUFFIX,ad.idgtn.net - - DOMAIN-SUFFIX,ad.iloveinterracial.com - - DOMAIN-SUFFIX,ad.ipadview.com - - DOMAIN-SUFFIX,ad.jamba.net - - DOMAIN-SUFFIX,ad.jamster.co.uk - - DOMAIN-SUFFIX,ad.jamster.com - - DOMAIN-SUFFIX,ad.jiemian.com - - DOMAIN-SUFFIX,ad.jsnbrynb.com - - DOMAIN-SUFFIX,ad.jxnews.com.cn - - DOMAIN-SUFFIX,ad.kissanime.io - - DOMAIN-SUFFIX,ad.kisscartoon.io - - DOMAIN-SUFFIX,ad.leadbolt.net - - DOMAIN-SUFFIX,ad.leadboltads.net - - DOMAIN-SUFFIX,ad.leadboltapps.net - - DOMAIN-SUFFIX,ad.leadboltmobile.net - - DOMAIN-SUFFIX,ad.livere.co.kr - - DOMAIN-SUFFIX,ad.lqalm.com - - DOMAIN-SUFFIX,ad.lyricswire.com - - DOMAIN-SUFFIX,ad.madserving.com - - DOMAIN-SUFFIX,ad.mail.ru - - DOMAIN-SUFFIX,ad.mail.sohu.com - - DOMAIN-SUFFIX,ad.mangareader.net - - DOMAIN-SUFFIX,ad.mediabong.net - - DOMAIN-SUFFIX,ad.mesomorphosis.com - - DOMAIN-SUFFIX,ad.mi.com - - DOMAIN-SUFFIX,ad.mnt123.com - - DOMAIN-SUFFIX,ad.molitv.cn - - DOMAIN-SUFFIX,ad.naver.com - - DOMAIN-SUFFIX,ad.netowl.jp - - DOMAIN-SUFFIX,ad.newegg.com - - DOMAIN-SUFFIX,ad.obuy.tw - - DOMAIN-SUFFIX,ad.openmultimedia.biz - - DOMAIN-SUFFIX,ad.outsidehub.com - - DOMAIN-SUFFIX,ad.pandora.tv - - DOMAIN-SUFFIX,ad.pchome.com.tw - - DOMAIN-SUFFIX,ad.pickple.net - - DOMAIN-SUFFIX,ad.pixnet.in - - DOMAIN-SUFFIX,ad.pixnet.net - - DOMAIN-SUFFIX,ad.player.baidu.com - - DOMAIN-SUFFIX,ad.propellerads.com - - DOMAIN-SUFFIX,ad.proxy.sh - - DOMAIN-SUFFIX,ad.qingting.fm - - DOMAIN-SUFFIX,ad.qq.com - - DOMAIN-SUFFIX,ad.r.worldssl.net - - DOMAIN-SUFFIX,ad.rambler.ru - - DOMAIN-SUFFIX,ad.reachlocal.com - - DOMAIN-SUFFIX,ad.rednet.cn - - DOMAIN-SUFFIX,ad.reklamport.com - - DOMAIN-SUFFIX,ad.search.ch - - DOMAIN-SUFFIX,ad.seeyouyima.com - - DOMAIN-SUFFIX,ad.sensismediasmart.com.au - - DOMAIN-SUFFIX,ad.services.distractify.com - - DOMAIN-SUFFIX,ad.shuoshuomi.com - - DOMAIN-SUFFIX,ad.sina.com.cn - - DOMAIN-SUFFIX,ad.sinovision.net - - DOMAIN-SUFFIX,ad.slutload.com - - DOMAIN-SUFFIX,ad.smartclip.net - - DOMAIN-SUFFIX,ad.sohu.com - - DOMAIN-SUFFIX,ad.spielothek.so - - DOMAIN-SUFFIX,ad.spreaker.com - - DOMAIN-SUFFIX,ad.stsywl.com - - DOMAIN-SUFFIX,ad.tatatimes.com - - DOMAIN-SUFFIX,ad.test.ximalaya.com - - DOMAIN-SUFFIX,ad.thepaper.cn - - DOMAIN-SUFFIX,ad.thisav.com - - DOMAIN-SUFFIX,ad.thsi.cn - - DOMAIN-SUFFIX,ad.toutiao.com - - DOMAIN-SUFFIX,ad.turn.com - - DOMAIN-SUFFIX,ad.unimhk.com - - DOMAIN-SUFFIX,ad.userporn.com - - DOMAIN-SUFFIX,ad.vidaroo.com - - DOMAIN-SUFFIX,ad.vryeye.com - - DOMAIN-SUFFIX,ad.walkgame.com - - DOMAIN-SUFFIX,ad.wang502.com - - DOMAIN-SUFFIX,ad.winningpartner.com - - DOMAIN-SUFFIX,ad.winrar.com.cn - - DOMAIN-SUFFIX,ad.wretch.cc - - DOMAIN-SUFFIX,ad.xiaomi.com - - DOMAIN-SUFFIX,ad.ximalaya.com - - DOMAIN-SUFFIX,ad.xmovies8.ru - - DOMAIN-SUFFIX,ad.xxguan.cn - - DOMAIN-SUFFIX,ad.yeshitv.com - - DOMAIN-SUFFIX,ad.yieldlab.net - - DOMAIN-SUFFIX,ad.yixin.im - - DOMAIN-SUFFIX,ad.ylunion.com - - DOMAIN-SUFFIX,ad.zanox.com - - DOMAIN-SUFFIX,ad.zdworks.com - - DOMAIN-SUFFIX,ad.zhangyue.com - - DOMAIN-SUFFIX,ad.zhidian3g.cn - - DOMAIN-SUFFIX,ad.zuimeitianqi.com - - DOMAIN-SUFFIX,ad0.bigmir.net - - DOMAIN-SUFFIX,ad000000.com - - DOMAIN-SUFFIX,ad1.bigmir.net - - DOMAIN-SUFFIX,ad1.greedland.net - - DOMAIN-SUFFIX,ad1.nend.net - - DOMAIN-SUFFIX,ad1.netshelter.net - - DOMAIN-SUFFIX,ad1.p5w.net - - DOMAIN-SUFFIX,ad1.udn.com - - DOMAIN-SUFFIX,ad1.xiaomi.com - - DOMAIN-SUFFIX,ad1.yangjinyou.com - - DOMAIN-SUFFIX,ad2.nend.net - - DOMAIN-SUFFIX,ad2.udn.com - - DOMAIN-SUFFIX,ad2.yam.com - - DOMAIN-SUFFIX,ad2.yangjinyou.com - - DOMAIN-SUFFIX,ad3.udn.com - - DOMAIN-SUFFIX,ad4.bigmir.net - - DOMAIN-SUFFIX,ad4.sina.com.cn - - DOMAIN-SUFFIX,ad4.udn.com - - DOMAIN-SUFFIX,ad4game.com - - DOMAIN-SUFFIX,ad5.bigmir.net - - DOMAIN-SUFFIX,ad6.bigmir.net - - DOMAIN-SUFFIX,ad7.bigmir.net - - DOMAIN-SUFFIX,ad7.com - - DOMAIN-SUFFIX,ad7.on.cc - - DOMAIN-SUFFIX,ad7.tagphi.net - - DOMAIN-SUFFIX,ad8.adfarm1.adition.com - - DOMAIN-SUFFIX,ad9377.com - - DOMAIN-SUFFIX,adadapted.com - - DOMAIN-SUFFIX,adadmin.house365.com - - DOMAIN-SUFFIX,adadvisor.net - - DOMAIN-SUFFIX,ad-android.51wnl.com - - DOMAIN-SUFFIX,adap.tv - - DOMAIN-SUFFIX,adapi.lenovogame.com - - DOMAIN-SUFFIX,adasad.myweb.hinet.net - - DOMAIN-SUFFIX,adash.m.taobao.com - - DOMAIN-SUFFIX,adbana.com - - DOMAIN-SUFFIX,ad-beta.flipboard.com - - DOMAIN-SUFFIX,adbot.tw - - DOMAIN-SUFFIX,adbox.sina.com.cn - - DOMAIN-SUFFIX,ad-brix.com - - DOMAIN-SUFFIX,adbuyer3.lycos.com - - DOMAIN-SUFFIX,adbxb.com - - DOMAIN-SUFFIX,adcast.deviantart.com - - DOMAIN-SUFFIX,adcast.fblife.com - - DOMAIN-SUFFIX,adccoo.cn - - DOMAIN-SUFFIX,adcdn.goo.ne.jp - - DOMAIN-SUFFIX,adchina.com - - DOMAIN-SUFFIX,adcitrus.com - - DOMAIN-SUFFIX,adcl.pchome.com.tw - - DOMAIN-SUFFIX,adclick.g.doublecklick.net - - DOMAIN-SUFFIX,adclient.uimserv.net - - DOMAIN-SUFFIX,adclock.zdworks.com - - DOMAIN-SUFFIX,adcloud.jp - - DOMAIN-SUFFIX,ad-cloud.jp - - DOMAIN-SUFFIX,ad-cn.jovcloud.com - - DOMAIN-SUFFIX,adcolony.com - - DOMAIN-SUFFIX,adcome.cn - - DOMAIN-SUFFIX,adcore.lenovomm.com - - DOMAIN-SUFFIX,adcount.yoka.com - - DOMAIN-SUFFIX,adcr.naver.com - - DOMAIN-SUFFIX,adcreative.naver.com - - DOMAIN-SUFFIX,add.bugun.com.tr - - DOMAIN-SUFFIX,add.dz19.net - - DOMAIN-SUFFIX,add.freeimg8.com - - DOMAIN-SUFFIX,add.mmyuer.com - - DOMAIN-SUFFIX,addata.ku6.com - - DOMAIN-SUFFIX,ad-delivery.net - - DOMAIN-SUFFIX,addirector.vindicosuite.com - - DOMAIN-SUFFIX,addl.easetuner.com - - DOMAIN-SUFFIX,adds.weatherology.com - - DOMAIN-SUFFIX,addthis.com - - DOMAIN-SUFFIX,addthisedge.com - - DOMAIN-SUFFIX,adeaz.com - - DOMAIN-SUFFIX,ader.mobi - - DOMAIN-SUFFIX,adeventtracker.spotify.com - - DOMAIN-SUFFIX,adexprt.com - - DOMAIN-SUFFIX,adf.dahe.cn - - DOMAIN-SUFFIX,adfarm.mediaplex.com - - DOMAIN-SUFFIX,adform.net - - DOMAIN-SUFFIX,adfront.auction.co.kr - - DOMAIN-SUFFIX,adfurikun.jp - - DOMAIN-SUFFIX,adfuture.cn - - DOMAIN-SUFFIX,ad-gb.mgid.com - - DOMAIN-SUFFIX,adgeo.163.com - - DOMAIN-SUFFIX,adhai.com - - DOMAIN-SUFFIX,adhome.1fangchan.com - - DOMAIN-SUFFIX,adhouyi.com - - DOMAIN-SUFFIX,adi.bigmir.net - - DOMAIN-SUFFIX,adi.cnool.net - - DOMAIN-SUFFIX,adi2007.cnool.net - - DOMAIN-SUFFIX,adimages.go.com - - DOMAIN-SUFFIX,adimages.sina.com.hk - - DOMAIN-SUFFIX,adimg.bbcss.com - - DOMAIN-SUFFIX,adimg.cqnews.net - - DOMAIN-SUFFIX,adimg.daumcdn.net - - DOMAIN-SUFFIX,adimg.deviantart.net - - DOMAIN-SUFFIX,adimg.mobile.sina.cn - - DOMAIN-SUFFIX,adimg.qxlsjw.com - - DOMAIN-SUFFIX,adimg.uimserv.net - - DOMAIN-SUFFIX,adimg.uve.weibo.com - - DOMAIN-SUFFIX,adimg1.chosun.com - - DOMAIN-SUFFIX,adimg3.search.naver.net - - DOMAIN-SUFFIX,adimgs.xici.net - - DOMAIN-SUFFIX,adimp.excite.co.jp - - DOMAIN-SUFFIX,adinall.com - - DOMAIN-SUFFIX,adinf.cp11.ott.cibntv.net - - DOMAIN-SUFFIX,adinf.voole.com - - DOMAIN-SUFFIX,adinfo.aol.com - - DOMAIN-SUFFIX,adinfo.ra1.xlmc.sec.miui.com - - DOMAIN-SUFFIX,adinfuse.com - - DOMAIN-SUFFIX,adingo.jp.eimg.jp - - DOMAIN-SUFFIX,adirects.com - - DOMAIN-SUFFIX,adjb.5nd.com - - DOMAIN-SUFFIX,adjust.io - - DOMAIN-SUFFIX,adk.funshion.com - - DOMAIN-SUFFIX,adk2.co - - DOMAIN-SUFFIX,adk2x.com - - DOMAIN-SUFFIX,adkmob.com - - DOMAIN-SUFFIX,adkongjian.com - - DOMAIN-SUFFIX,adlabs-sync.rutarget.ru - - DOMAIN-SUFFIX,adlaunch.moji.com - - DOMAIN-SUFFIX,adlefee.com - - DOMAIN-SUFFIX,adlink.shopsafe.co.nz - - DOMAIN-SUFFIX,adlive.cn - - DOMAIN-SUFFIX,adlocus.com - - DOMAIN-SUFFIX,ad-locus.com - - DOMAIN-SUFFIX,adlog.flurry.com - - DOMAIN-SUFFIX,adm.10jqka.com.cn - - DOMAIN-SUFFIX,adm.265g.com - - DOMAIN-SUFFIX,adm.72zx.com - - DOMAIN-SUFFIX,adm.86wan.com - - DOMAIN-SUFFIX,adm.baidu.com - - DOMAIN-SUFFIX,adm.cloud.cnfol.com - - DOMAIN-SUFFIX,adm.easou.com - - DOMAIN-SUFFIX,adm.funshion.com - - DOMAIN-SUFFIX,adm.icast.cn - - DOMAIN-SUFFIX,adm.leju.com - - DOMAIN-SUFFIX,adm.leju.sina.com.cn - - DOMAIN-SUFFIX,adm.myzaker.com - - DOMAIN-SUFFIX,adm.xmfish.com - - DOMAIN-SUFFIX,adm.zbinfo.net - - DOMAIN-SUFFIX,adm.zookingsoft.com - - DOMAIN-SUFFIX,adm0.autoimg.cn - - DOMAIN-SUFFIX,adm1.autoimg.cn - - DOMAIN-SUFFIX,adm2.autoimg.cn - - DOMAIN-SUFFIX,adm3.autoimg.cn - - DOMAIN-SUFFIX,admaji.com - - DOMAIN-SUFFIX,admarket.21cn.com - - DOMAIN-SUFFIX,admarket.mobi - - DOMAIN-SUFFIX,admd.yam.com - - DOMAIN-SUFFIX,admedia.com - - DOMAIN-SUFFIX,admeta.vo.llnwd.net - - DOMAIN-SUFFIX,admgr.qingting.fm - - DOMAIN-SUFFIX,admin.cooguo.com - - DOMAIN-SUFFIX,admin.louxia.org - - DOMAIN-SUFFIX,admin.ninebox.cn - - DOMAIN-SUFFIX,admin6.com - - DOMAIN-SUFFIX,admob.com - - DOMAIN-SUFFIX,admon.cn - - DOMAIN-SUFFIX,admtpmp124.com - - DOMAIN-SUFFIX,admx.baixing.com - - DOMAIN-SUFFIX,adn.ebay.com - - DOMAIN-SUFFIX,adn.insight.ucweb.com - - DOMAIN-SUFFIX,adnetpub.yaolan.com - - DOMAIN-SUFFIX,adnew.wifi8.com - - DOMAIN-SUFFIX,adnxs.com - - DOMAIN-SUFFIX,adobe-dns.adobe.com - - DOMAIN-SUFFIX,adobe-dns-2.adobe.com - - DOMAIN-SUFFIX,adobe-dns-3.adobe.com - - DOMAIN-SUFFIX,adomv.com - - DOMAIN-SUFFIX,adp.cnool.net - - DOMAIN-SUFFIX,adp.s8bbs.com - - DOMAIN-SUFFIX,adp1.cnool.net - - DOMAIN-SUFFIX,adpai.thepaper.cn - - DOMAIN-SUFFIX,adperium.com - - DOMAIN-SUFFIX,adping.qq.com - - DOMAIN-SUFFIX,adplatform.vrtcal.com - - DOMAIN-SUFFIX,ad-plus.cn - - DOMAIN-SUFFIX,adplus.goo.mx - - DOMAIN-SUFFIX,adplxmd.com - - DOMAIN-SUFFIX,adpm.app.qq.com - - DOMAIN-SUFFIX,adpolestar.net - - DOMAIN-SUFFIX,adpro.cn - - DOMAIN-SUFFIX,adpro.pro.cn - - DOMAIN-SUFFIX,adpub.yaolan.com - - DOMAIN-SUFFIX,adpublish.ydstatic.com - - DOMAIN-SUFFIX,adpubs.yaolan.com - - DOMAIN-SUFFIX,adpush.cn - - DOMAIN-SUFFIX,adq.chinaso.com - - DOMAIN-SUFFIX,adrdir.qq.com - - DOMAIN-SUFFIX,adreal.cn - - DOMAIN-SUFFIX,adres.myaora.net - - DOMAIN-SUFFIX,adriver.ru - - DOMAIN-SUFFIX,adriver-sync.rutarget.ru - - DOMAIN-SUFFIX,adroll.com - - DOMAIN-SUFFIX,adrotator.se - - DOMAIN-SUFFIX,adrs.sdo.com - - DOMAIN-SUFFIX,adrunnr.com - - DOMAIN-SUFFIX,ads1.msads.net - - DOMAIN-SUFFIX,ads1.msn.com - - DOMAIN-SUFFIX,ads2.contentabc.com - - DOMAIN-SUFFIX,ads2.msads.net - - DOMAIN-SUFFIX,ads2.msn.com - - DOMAIN-SUFFIX,ads2.opensubtitles.org - - DOMAIN-SUFFIX,ads8.com - - DOMAIN-SUFFIX,ads80.com - - DOMAIN-SUFFIX,adsame.com - - DOMAIN-SUFFIX,adsapi.manhuaren.com - - DOMAIN-SUFFIX,adsatt.abcnews.starwave.com - - DOMAIN-SUFFIX,adsatt.disney.starwave.com - - DOMAIN-SUFFIX,adsatt.espn.go.com - - DOMAIN-SUFFIX,adsatt.espn.starwave.com - - DOMAIN-SUFFIX,adsatt.familyfun.starwave.com - - DOMAIN-SUFFIX,adsatt.go.starwave.com - - DOMAIN-SUFFIX,adsatt.movies.starwave.com - - DOMAIN-SUFFIX,adscaspion.appspot.com - - DOMAIN-SUFFIX,adscdn.baidu.com - - DOMAIN-SUFFIX,adsclick.qq.com - - DOMAIN-SUFFIX,adsclick.yx.js.cn - - DOMAIN-SUFFIX,adsco.re - - DOMAIN-SUFFIX,adscript.gmarket.co.kr - - DOMAIN-SUFFIX,adsdk.9imobi.com - - DOMAIN-SUFFIX,adsdk.dmzj.com - - DOMAIN-SUFFIX,adse.test.ximalaya.com - - DOMAIN-SUFFIX,adse.ximalaya.com - - DOMAIN-SUFFIX,adsence.sogou.com - - DOMAIN-SUFFIX,adsense.html5.qq.com - - DOMAIN-SUFFIX,adserve2.tom.com - - DOMAIN-SUFFIX,adsfactor.net - - DOMAIN-SUFFIX,adsfile.bssdlbig.kugou.com - - DOMAIN-SUFFIX,adsfile.qq.com - - DOMAIN-SUFFIX,adsfs.oppomobile.com - - DOMAIN-SUFFIX,adsgroup.qq.com - - DOMAIN-SUFFIX,adshare.freedocast.com - - DOMAIN-SUFFIX,adshmct.qq.com - - DOMAIN-SUFFIX,adshmmsg.qq.com - - DOMAIN-SUFFIX,adshost2.com - - DOMAIN-SUFFIX,adshow.58.com - - DOMAIN-SUFFIX,adshow.it168.com - - DOMAIN-SUFFIX,adshows.21cn.com - - DOMAIN-SUFFIX,adsin.zhangyoubao.com - - DOMAIN-SUFFIX,adsinstant.com - - DOMAIN-SUFFIX,adslvfile.qq.com - - DOMAIN-SUFFIX,adslvseed.qq.com - - DOMAIN-SUFFIX,adsmart.yicha.cn - - DOMAIN-SUFFIX,adsolution.imtt.qq.com - - DOMAIN-SUFFIX,adsor.openrunner.com - - DOMAIN-SUFFIX,adsp.xunlei.com - - DOMAIN-SUFFIX,ad-specs.guoshipartners.com - - DOMAIN-SUFFIX,adsqqclick.qq.com - - DOMAIN-SUFFIX,adsremote.scrippsnetworks.com - - DOMAIN-SUFFIX,adsrvr.org - - DOMAIN-SUFFIX,adss.dotdo.net - - DOMAIN-SUFFIX,adss.yahoo.com - - DOMAIN-SUFFIX,adstat.cp11.ott.cibntv.net - - DOMAIN-SUFFIX,adstextview.qq.com - - DOMAIN-SUFFIX,adstil.indiatimes.com - - DOMAIN-SUFFIX,ad-stir.com - - DOMAIN-SUFFIX,adsmind.ugdtimg.com - - DOMAIN-SUFFIX,adstream.123.sogoucdn.com - - DOMAIN-SUFFIX,ads-twitter.com - - DOMAIN-SUFFIX,ads-v-darwin.hulustream.com - - DOMAIN-SUFFIX,adsunflower.com - - DOMAIN-SUFFIX,adsunion.com - - DOMAIN-SUFFIX,ad-survey.com - - DOMAIN-SUFFIX,adsview.qq.com - - DOMAIN-SUFFIX,adsview2.qq.com - - DOMAIN-SUFFIX,adsymptotic.com - - DOMAIN-SUFFIX,adsyndication.msn.com - - DOMAIN-SUFFIX,adsys.chinacloudapp.cn - - DOMAIN-SUFFIX,adsys.sinovision.net - - DOMAIN-SUFFIX,adtaily.com - - DOMAIN-SUFFIX,ad-tech.nbcuni.co - - DOMAIN-SUFFIX,adtechjp.com - - DOMAIN-SUFFIX,adtechus.com - - DOMAIN-SUFFIX,adtest.theonion.com - - DOMAIN-SUFFIX,adthor.com - - DOMAIN-SUFFIX,adtrack.ucweb.com - - DOMAIN-SUFFIX,adtrk.me - - DOMAIN-SUFFIX,adui.tg.meitu.com - - DOMAIN-SUFFIX,adultfriendfinder.com - - DOMAIN-SUFFIX,adups.com - - DOMAIN-SUFFIX,aduu.cn - - DOMAIN-SUFFIX,adv.app.qq.com - - DOMAIN-SUFFIX,adv.ccb.com - - DOMAIN-SUFFIX,adv.fjtv.net - - DOMAIN-SUFFIX,adv.jxnews.com.cn - - DOMAIN-SUFFIX,adv.madserving.com - - DOMAIN-SUFFIX,adv.s8bbs.com - - DOMAIN-SUFFIX,adv.sec.miui.com - - DOMAIN-SUFFIX,adv2.downsave.com - - DOMAIN-SUFFIX,advapi.ahtv.cn - - DOMAIN-SUFFIX,adver.qq.com - - DOMAIN-SUFFIX,adview.cn - - DOMAIN-SUFFIX,advmob.cn - - DOMAIN-SUFFIX,advombat.ru - - DOMAIN-SUFFIX,adwasu.wasu.tv - - DOMAIN-SUFFIX,adweb.test.ximalaya.com - - DOMAIN-SUFFIX,adweb.ximalaya.com - - DOMAIN-SUFFIX,adwhirl.com - - DOMAIN-SUFFIX,adwo.com - - DOMAIN-SUFFIX,adx.adxglobal.com - - DOMAIN-SUFFIX,adx.chip.de - - DOMAIN-SUFFIX,adx.dlads.cn - - DOMAIN-SUFFIX,adx.kat.ph - - DOMAIN-SUFFIX,adx.pro.cn - - DOMAIN-SUFFIX,adx.xiaodutv.com - - DOMAIN-SUFFIX,adx3.iq39.com - - DOMAIN-SUFFIX,adxmi.com - - DOMAIN-SUFFIX,adxpansion.com - - DOMAIN-SUFFIX,adxserver.ad.cmvideo.cn - - DOMAIN-SUFFIX,adytx.com - - DOMAIN-SUFFIX,adyun.com - - DOMAIN-SUFFIX,adz.zwee.ly - - DOMAIN-SUFFIX,adzerk.net - - DOMAIN-SUFFIX,aec.shjk123.net - - DOMAIN-SUFFIX,aecpm.alicdn.com - - DOMAIN-SUFFIX,ae-gb.mgid.com - - DOMAIN-SUFFIX,aercxy.com - - DOMAIN-SUFFIX,aerserv.com - - DOMAIN-SUFFIX,aes01.com - - DOMAIN-SUFFIX,afd.baidu.com - - DOMAIN-SUFFIX,afd.l.google.com - - DOMAIN-SUFFIX,aff.eteachergroup.com - - DOMAIN-SUFFIX,aff.lmgtfy.com - - DOMAIN-SUFFIX,aff.marathonbet.com - - DOMAIN-SUFFIX,aff.svjump.com - - DOMAIN-SUFFIX,affil.mupromo.com - - DOMAIN-SUFFIX,affiliategroove.com - - DOMAIN-SUFFIX,affiliateprogram.keywordspy.com - - DOMAIN-SUFFIX,affiliates.allposters.com - - DOMAIN-SUFFIX,affiliates.goodvibes.com - - DOMAIN-SUFFIX,affiliates.thrixxx.com - - DOMAIN-SUFFIX,affiliatesmedia.sbobet.com - - DOMAIN-SUFFIX,affiliation.fotovista.com - - DOMAIN-SUFFIX,afjlb.com - - DOMAIN-SUFFIX,afp.alicdn.com - - DOMAIN-SUFFIX,afp.chinanews.com - - DOMAIN-SUFFIX,afp.csbew.com - - DOMAIN-SUFFIX,afp.m1905.com - - DOMAIN-SUFFIX,afp.wasu.cn - - DOMAIN-SUFFIX,afp.zol-img.com.cn - - DOMAIN-SUFFIX,afpcreative.wasu.cn - - DOMAIN-SUFFIX,afpimages.eastday - - DOMAIN-SUFFIX,afpimages.eastday.com - - DOMAIN-SUFFIX,afpmm.alicdn.com - - DOMAIN-SUFFIX,afptrack.csbew.com - - DOMAIN-SUFFIX,ag.nukefans.net - - DOMAIN-SUFFIX,agenda.complex.com - - DOMAIN-SUFFIX,ag-gb.marketgid.com - - DOMAIN-SUFFIX,agn.aty.cp45.ott.cibntv.net - - DOMAIN-SUFFIX,agn.aty.snmsohu.aisee.tv - - DOMAIN-SUFFIX,agoodm.m.taobao.com - - DOMAIN-SUFFIX,agr.voiceads.cn - - DOMAIN-SUFFIX,agrant.cn - - DOMAIN-SUFFIX,agrantsem.com - - DOMAIN-SUFFIX,ahhuazhen.com - - DOMAIN-SUFFIX,ahyau.com - - DOMAIN-SUFFIX,ahyuns.com - - DOMAIN-SUFFIX,ai.bioon.com - - DOMAIN-SUFFIX,ai.m.taobao.com - - DOMAIN-SUFFIX,ai.taobao.com - - DOMAIN-SUFFIX,ai.xinju.cc - - DOMAIN-SUFFIX,ai.yimg.jp - - DOMAIN-SUFFIX,aibangzs.com - - DOMAIN-SUFFIX,aiclk.com - - DOMAIN-SUFFIX,aicydb.com - - DOMAIN-SUFFIX,aid.chinayk.com - - DOMAIN-SUFFIX,aider-res.meizu.com - - DOMAIN-SUFFIX,aihaoduo.cn - - DOMAIN-SUFFIX,aikan6.com - - DOMAIN-SUFFIX,ailicee.com - - DOMAIN-SUFFIX,aim.yoyi.com.cn - - DOMAIN-SUFFIX,air.yoyi.com.cn - - DOMAIN-SUFFIX,airpush.com - - DOMAIN-SUFFIX,airpushmarketing.s3.amazonaws.com - - DOMAIN-SUFFIX,ais.abacast.com - - DOMAIN-SUFFIX,aishang.bid - - DOMAIN-SUFFIX,aishiguolong.com - - DOMAIN-SUFFIX,aishowbger.com - - DOMAIN-SUFFIX,aiwen.cc - - DOMAIN-SUFFIX,ajapk.com - - DOMAIN-SUFFIX,ajaxcdn.org - - DOMAIN-SUFFIX,aj-gb.mgid.com - - DOMAIN-SUFFIX,ajhdf.com - - DOMAIN-SUFFIX,ajialive.com - - DOMAIN-SUFFIX,ajnad.aljazeera.net - - DOMAIN-SUFFIX,ajuhd.com - - DOMAIN-SUFFIX,ak.sascdn.com - - DOMAIN-SUFFIX,ak47.cooguo.com - - DOMAIN-SUFFIX,akrwi.cn - - DOMAIN-SUFFIX,akuai.top - - DOMAIN-SUFFIX,akxsrsdbursfpx.bid - - DOMAIN-SUFFIX,al.autohome.com.cn - - DOMAIN-SUFFIX,alertserver.ushaqi.com - - DOMAIN-SUFFIX,alipay.dajiadou6.com - - DOMAIN-SUFFIX,aliqqjd.cn - - DOMAIN-SUFFIX,alisinak.com - - DOMAIN-SUFFIX,alissl.ucdl.pp.uc.cn - - DOMAIN-SUFFIX,alistatic.cn - - DOMAIN-SUFFIX,alitianxia168.com - - DOMAIN-SUFFIX,alitui.weibo.com - - DOMAIN-SUFFIX,aliunion.cn.yahoo.com - - DOMAIN-SUFFIX,aliyuncss.com - - DOMAIN-SUFFIX,aliyunxin.com - - DOMAIN-SUFFIX,all.orfr.adgtw.orangeads.fr - - DOMAIN-SUFFIX,all.rising.com.cn - - DOMAIN-SUFFIX,allnews.uodoo.com - - DOMAIN-SUFFIX,allxin.com - - DOMAIN-SUFFIX,als.baidu.com - - DOMAIN-SUFFIX,alvares.esportsheaven.com - - DOMAIN-SUFFIX,am.6park.com - - DOMAIN-SUFFIX,am.g.ireader.com - - DOMAIN-SUFFIX,am.szhome.com - - DOMAIN-SUFFIX,am.zdnet.com.cn - - DOMAIN-SUFFIX,am15.net - - DOMAIN-SUFFIX,amazingmagics.com - - DOMAIN-SUFFIX,amazon-adsystem.com - - DOMAIN-SUFFIX,amdc.m.taobao.com - - DOMAIN-SUFFIX,amfi.gou.sogou.com - - DOMAIN-SUFFIX,amiok.org - - DOMAIN-SUFFIX,amps.yoyi.com.cn - - DOMAIN-SUFFIX,ams.fx678.com - - DOMAIN-SUFFIX,ams.lenovomm.com - - DOMAIN-SUFFIX,a-m-s.poco.cn - - DOMAIN-SUFFIX,amz.steamprices.com - - DOMAIN-SUFFIX,an.m.liebao.cn - - DOMAIN-SUFFIX,an.wikigifth.com - - DOMAIN-SUFFIX,an.yandex.ru - - DOMAIN-SUFFIX,ana.tatahn.com - - DOMAIN-SUFFIX,analy.qq.com - - DOMAIN-SUFFIX,andmejs.com - - DOMAIN-SUFFIX,android.push.126.net - - DOMAIN-SUFFIX,android.rqd.qq.com - - DOMAIN-SUFFIX,androidlog.shouji.baofeng.com - - DOMAIN-SUFFIX,android-lrcresource.wps.cn - - DOMAIN-SUFFIX,andrqd.play.aiseet.atianqi.com - - DOMAIN-SUFFIX,anfeng.com - - DOMAIN-SUFFIX,angsrvr.com - - DOMAIN-SUFFIX,anioscp.com - - DOMAIN-SUFFIX,ann5.net - - DOMAIN-SUFFIX,anquan.baidu.com - - DOMAIN-SUFFIX,anquan.org - - DOMAIN-SUFFIX,anreson.net - - DOMAIN-SUFFIX,antivirus.baidu.com - - DOMAIN-SUFFIX,anyangruisi.com - - DOMAIN-SUFFIX,anysdk.com - - DOMAIN-SUFFIX,aodongjiaosu.com - - DOMAIN-SUFFIX,aombjl099.com - - DOMAIN-SUFFIX,aoodoo.feng.com - - DOMAIN-SUFFIX,aoodoo.weiphone.com - - DOMAIN-SUFFIX,aos.wall.youmi.net - - DOMAIN-SUFFIX,aos-creative.prf.hn - - DOMAIN-SUFFIX,apas.aipai.com - - DOMAIN-SUFFIX,api.0.0.0.0.cn - - DOMAIN-SUFFIX,api.adv.ott.cibntv.net - - DOMAIN-SUFFIX,api.ahjinshu.com - - DOMAIN-SUFFIX,api.android.dianru.com - - DOMAIN-SUFFIX,api.anti.wauee.com - - DOMAIN-SUFFIX,api.appodeal.com - - DOMAIN-SUFFIX,api.apps.sina.cn - - DOMAIN-SUFFIX,api.bailingjiankang.com - - DOMAIN-SUFFIX,api.bs.zui.com - - DOMAIN-SUFFIX,api.cmt.mob.com - - DOMAIN-SUFFIX,api.coolguang.com - - DOMAIN-SUFFIX,api.dewmobile.net - - DOMAIN-SUFFIX,api.dianru.com - - DOMAIN-SUFFIX,api.doumob.com - - DOMAIN-SUFFIX,api.dreamfull.cn - - DOMAIN-SUFFIX,api.dsp.yhd.com - - DOMAIN-SUFFIX,api.exc.mob.com - - DOMAIN-SUFFIX,api.g1.junfull.com - - DOMAIN-SUFFIX,api.g2.junfull.com - - DOMAIN-SUFFIX,api.gi.igexin.com - - DOMAIN-SUFFIX,api.goulegu.com - - DOMAIN-SUFFIX,api.growingio.com - - DOMAIN-SUFFIX,api.iapps.ifeng.com - - DOMAIN-SUFFIX,api.iimedia.cn - - DOMAIN-SUFFIX,api.ijunhai.com - - DOMAIN-SUFFIX,api.itaoxiaoshuo.com - - DOMAIN-SUFFIX,api.joybj.com - - DOMAIN-SUFFIX,api.ketedata.com - - DOMAIN-SUFFIX,api.koudaikj.com - - DOMAIN-SUFFIX,api.leadbolt.net - - DOMAIN-SUFFIX,api.mobgi.com - - DOMAIN-SUFFIX,api.mobula.sdk.duapps.com - - DOMAIN-SUFFIX,api.moogos.com - - DOMAIN-SUFFIX,api.mp.uc.cn - - DOMAIN-SUFFIX,api.newad.ifeng.com - - DOMAIN-SUFFIX,api.newbelden.com - - DOMAIN-SUFFIX,api.open.uc.cn - - DOMAIN-SUFFIX,api.pingstart.com - - DOMAIN-SUFFIX,api.ppoi.org - - DOMAIN-SUFFIX,api.primecaster.net - - DOMAIN-SUFFIX,api.push.daoyoudao.com - - DOMAIN-SUFFIX,api.ra2.xlmc.sec.miui.com - - DOMAIN-SUFFIX,api.rees46.com - - DOMAIN-SUFFIX,api.rideraid.net - - DOMAIN-SUFFIX,api.share.mob.com - - DOMAIN-SUFFIX,api.shuzilm.cn - - DOMAIN-SUFFIX,api.similarweb.com - - DOMAIN-SUFFIX,api.tr.blismedia.com - - DOMAIN-SUFFIX,api.tw06.xlmc.sec.miui.com - - DOMAIN-SUFFIX,api.ujian.cc - - DOMAIN-SUFFIX,api.union.vip.com - - DOMAIN-SUFFIX,api.uniplayad.com - - DOMAIN-SUFFIX,api.userstyles.org - - DOMAIN-SUFFIX,api.viglink.com - - DOMAIN-SUFFIX,api.waptest.taobao.com - - DOMAIN-SUFFIX,api.whizzone.com - - DOMAIN-SUFFIX,api.xk.miui.com - - DOMAIN-SUFFIX,api.y.igexin.com - - DOMAIN-SUFFIX,api.youxiaoad.com - - DOMAIN-SUFFIX,api.zol.com - - DOMAIN-SUFFIX,api2.play.cn - - DOMAIN-SUFFIX,api-flow.flyme.cn - - DOMAIN-SUFFIX,api-game.meizu.com - - DOMAIN-SUFFIX,apihk.growingio.com - - DOMAIN-SUFFIX,api-push.meizu.com - - DOMAIN-SUFFIX,api-shoulei-ssl.xunlei.com - - DOMAIN-SUFFIX,apisoft.df0535.com - - DOMAIN-SUFFIX,apk.idate520.com - - DOMAIN-SUFFIX,apk.supfast.net - - DOMAIN-SUFFIX,apkdo.com - - DOMAIN-SUFFIX,apkinfo.voole.com - - DOMAIN-SUFFIX,apklog.cp11.ott.cibntv.net - - DOMAIN-SUFFIX,apnmedia.ask.com - - DOMAIN-SUFFIX,apns.ios.ijinshan.com - - DOMAIN-SUFFIX,apoll.m.taobao.com - - DOMAIN-SUFFIX,apollo.caixin.com - - DOMAIN-SUFFIX,app.3987.com - - DOMAIN-SUFFIX,app.9yyg.cn - - DOMAIN-SUFFIX,app.abc000.today - - DOMAIN-SUFFIX,app.acm.dzwww.com - - DOMAIN-SUFFIX,app.eduancm.com - - DOMAIN-SUFFIX,app.houyi.baofeng.net - - DOMAIN-SUFFIX,app.hytdsm.com - - DOMAIN-SUFFIX,app.ibaiducdn.com - - DOMAIN-SUFFIX,app.jgyee.com - - DOMAIN-SUFFIX,app.jiuzhilan.com - - DOMAIN-SUFFIX,app.juwang.com - - DOMAIN-SUFFIX,app.lz55.cn - - DOMAIN-SUFFIX,app.moji001.com - - DOMAIN-SUFFIX,app.starschina.com - - DOMAIN-SUFFIX,app.tanwan.com - - DOMAIN-SUFFIX,app.uu.cc - - DOMAIN-SUFFIX,app.waps.cn - - DOMAIN-SUFFIX,app.wapx.cn - - DOMAIN-SUFFIX,app.wumii.com - - DOMAIN-SUFFIX,app.xizi.com - - DOMAIN-SUFFIX,app.xyjqy.com - - DOMAIN-SUFFIX,app01.nodes.gslb.mi-idc.com - - DOMAIN-SUFFIX,app02.nodes.gslb.mi-idc.com - - DOMAIN-SUFFIX,appads.com - - DOMAIN-SUFFIX,appboy.com - - DOMAIN-SUFFIX,appc.baidu.com - - DOMAIN-SUFFIX,appcdn.wapx.cn - - DOMAIN-SUFFIX,appcdn.wapx.com - - DOMAIN-SUFFIX,appcpa.net - - DOMAIN-SUFFIX,appdriver.cn - - DOMAIN-SUFFIX,appdriver.com.cn - - DOMAIN-SUFFIX,appfh.com - - DOMAIN-SUFFIX,app-g.39.net - - DOMAIN-SUFFIX,appget.cn - - DOMAIN-SUFFIX,appgift.sinaapp.com - - DOMAIN-SUFFIX,appjiagu.com - - DOMAIN-SUFFIX,applifier.com - - DOMAIN-SUFFIX,applog.uc.cn - - DOMAIN-SUFFIX,applogapi.autohome.com.cn - - DOMAIN-SUFFIX,applogios.uc.cn - - DOMAIN-SUFFIX,app-monitor.ele.me - - DOMAIN-SUFFIX,appnext.com - - DOMAIN-SUFFIX,appodealx.com - - DOMAIN-SUFFIX,apppic.yingyongbei.com - - DOMAIN-SUFFIX,apps.mobilityware.com - - DOMAIN-SUFFIX,apps.outfit7.com - - DOMAIN-SUFFIX,apps.supfast.net - - DOMAIN-SUFFIX,apps2.outfit7.com - - DOMAIN-SUFFIX,appsdk.tanv.com - - DOMAIN-SUFFIX,appservices.comcsoft.com - - DOMAIN-SUFFIX,appsflyer.com - - DOMAIN-SUFFIX,appspromote.wostore.cn - - DOMAIN-SUFFIX,appsrv1.madserving.com - - DOMAIN-SUFFIX,appsrv4.madserving.com - - DOMAIN-SUFFIX,appsupdate.sinaapp.com - - DOMAIN-SUFFIX,appsupport.stargame.com - - DOMAIN-SUFFIX,apptentive.com - - DOMAIN-SUFFIX,appuu.cn - - DOMAIN-SUFFIX,apt.qumi.com - - DOMAIN-SUFFIX,aqgyju.cn - - DOMAIN-SUFFIX,aqqgli3vle.bid - - DOMAIN-SUFFIX,aqw.quanliyouxi.cn - - DOMAIN-SUFFIX,ar.atwola.com - - DOMAIN-SUFFIX,ar1.atwola.com - - DOMAIN-SUFFIX,ar7.atwola.com - - DOMAIN-SUFFIX,ar9.atwola.com - - DOMAIN-SUFFIX,aralego.com - - DOMAIN-SUFFIX,ard.ihookup.com - - DOMAIN-SUFFIX,ard.sweetdiscreet.com - - DOMAIN-SUFFIX,ard.yahoo.co.jp - - DOMAIN-SUFFIX,ardmall.com - - DOMAIN-SUFFIX,arealx.com - - DOMAIN-SUFFIX,aries.mzres.com - - DOMAIN-SUFFIX,ark.cocounion.com - - DOMAIN-SUFFIX,ark.cp21.ott.cibntv.net - - DOMAIN-SUFFIX,art.theta.sogoucdn.com - - DOMAIN-SUFFIX,as.bjmama.net - - DOMAIN-SUFFIX,as.casalemedia.com - - DOMAIN-SUFFIX,as.inbox.com - - DOMAIN-SUFFIX,as.kejet.com - - DOMAIN-SUFFIX,as.kejet.net - - DOMAIN-SUFFIX,as.sinahk.net - - DOMAIN-SUFFIX,as.trklinklog.com - - DOMAIN-SUFFIX,as.yuewz.com - - DOMAIN-SUFFIX,asd.projectfreetv.so - - DOMAIN-SUFFIX,asearch.alicdn.com - - DOMAIN-SUFFIX,ashiping.com - - DOMAIN-SUFFIX,ashow.pcpop.com - - DOMAIN-SUFFIX,asia.marketo.com - - DOMAIN-SUFFIX,ask.gaykes.com - - DOMAIN-SUFFIX,assets.210189.com - - DOMAIN-SUFFIX,assets.2343sdxs.com - - DOMAIN-SUFFIX,assets.258pcf.com - - DOMAIN-SUFFIX,assets.258ydh.com - - DOMAIN-SUFFIX,assets.easou.com - - DOMAIN-SUFFIX,asv.nuggad.net - - DOMAIN-SUFFIX,aswgbzsw.xingtangshuo.com - - DOMAIN-SUFFIX,aswl.d3kdh34.pw - - DOMAIN-SUFFIX,aswl.dfs3e4.pw - - DOMAIN-SUFFIX,aswl.zjhim.com - - DOMAIN-SUFFIX,aswlx.cn - - DOMAIN-SUFFIX,at.atwola.com - - DOMAIN-SUFFIX,at.mct01.com - - DOMAIN-SUFFIX,at98.com - - DOMAIN-SUFFIX,atanx.alicdn.com - - DOMAIN-SUFFIX,atanx2.alicdn.com - - DOMAIN-SUFFIX,atas.io - - DOMAIN-SUFFIX,atcryp.com - - DOMAIN-SUFFIX,atdmt.com - - DOMAIN-SUFFIX,athena.wan.sogou.com - - DOMAIN-SUFFIX,atiws.aipai.com - - DOMAIN-SUFFIX,atm.punchbox.org - - DOMAIN-SUFFIX,atm.sina.com - - DOMAIN-SUFFIX,atm.yoyi.com.cn - - DOMAIN-SUFFIX,atomicblast.lol - - DOMAIN-SUFFIX,atplay.cn - - DOMAIN-SUFFIX,att.stargame.com - - DOMAIN-SUFFIX,attach.s8bbs.com - - DOMAIN-SUFFIX,au.youmi.net - - DOMAIN-SUFFIX,audience.network - - DOMAIN-SUFFIX,authedmine.com - - DOMAIN-SUFFIX,avn.innity.com - - DOMAIN-SUFFIX,avpa.dzone.com - - DOMAIN-SUFFIX,avualrhg9p.bid - - DOMAIN-SUFFIX,aw.kejet.net - - DOMAIN-SUFFIX,award.sitekeuring.net - - DOMAIN-SUFFIX,awempire.com - - DOMAIN-SUFFIX,awkjs.com - - DOMAIN-SUFFIX,awyys.com - - DOMAIN-SUFFIX,ax.120ask.com - - DOMAIN-SUFFIX,ax.ggfeng.com - - DOMAIN-SUFFIX,axhxa.com - - DOMAIN-SUFFIX,axiba66.com - - DOMAIN-SUFFIX,axkxy.com - - DOMAIN-SUFFIX,ayabreya.xyz - - DOMAIN-SUFFIX,b.53yao.com - - DOMAIN-SUFFIX,b.77vcd.com - - DOMAIN-SUFFIX,b.9dreams.net - - DOMAIN-SUFFIX,b.ads1.msn.com - - DOMAIN-SUFFIX,b.aowugame.com - - DOMAIN-SUFFIX,b.babylon.com - - DOMAIN-SUFFIX,b.baiy.net - - DOMAIN-SUFFIX,b.bst.126.net - - DOMAIN-SUFFIX,b.clkservice.youdao.com - - DOMAIN-SUFFIX,b.code.tanwanyx.com - - DOMAIN-SUFFIX,b.cyone.com.cn - - DOMAIN-SUFFIX,b.epinv.com - - DOMAIN-SUFFIX,b.flyreading.cn - - DOMAIN-SUFFIX,b.gwylm.com - - DOMAIN-SUFFIX,b.kuangtuiguoo18888.com - - DOMAIN-SUFFIX,b.livesport.eu - - DOMAIN-SUFFIX,b.localpages.com - - DOMAIN-SUFFIX,b.nvrentao8.com - - DOMAIN-SUFFIX,b.qchannel03.cn - - DOMAIN-SUFFIX,b.rifub.com - - DOMAIN-SUFFIX,b.scorecardresearch.com - - DOMAIN-SUFFIX,b.thefile.me - - DOMAIN-SUFFIX,b.xcafe.com - - DOMAIN-SUFFIX,b0.qinsx.cn - - DOMAIN-SUFFIX,b1.51scw.net - - DOMAIN-SUFFIX,b1.91jucai.com - - DOMAIN-SUFFIX,b1.c1km4.com - - DOMAIN-SUFFIX,b17.8794.cn - - DOMAIN-SUFFIX,b17.shangc.net - - DOMAIN-SUFFIX,b17.xiumu.cn - - DOMAIN-SUFFIX,b1sync.zemanta.com - - DOMAIN-SUFFIX,b4xuj.zzhhts.com - - DOMAIN-SUFFIX,b7nkd.cn - - DOMAIN-SUFFIX,b92.putniktravel.com - - DOMAIN-SUFFIX,b9377h.com - - DOMAIN-SUFFIX,b99u.top - - DOMAIN-SUFFIX,ba.ccm2.net - - DOMAIN-SUFFIX,ba.fqzds.com - - DOMAIN-SUFFIX,ba.kioskea.net - - DOMAIN-SUFFIX,baby.yf898.com - - DOMAIN-SUFFIX,backup.lumion3d.com - - DOMAIN-SUFFIX,backup.lumion3d.net - - DOMAIN-SUFFIX,bad1.51gxqm.com - - DOMAIN-SUFFIX,badad.googleplex.com - - DOMAIN-SUFFIX,badao37.net - - DOMAIN-SUFFIX,bai3.gushiwen.org - - DOMAIN-SUFFIX,baiapk.com - - DOMAIN-SUFFIX,baichuan.baidu.com - - DOMAIN-SUFFIX,baidu.cybcyw.com - - DOMAIN-SUFFIX,baidu.dsp.tansuotv.com - - DOMAIN-SUFFIX,baidu.greenxf.cn - - DOMAIN-SUFFIX,baidu.jz5u.net - - DOMAIN-SUFFIX,baiduace.com - - DOMAIN-SUFFIX,baidujs.cnys.com - - DOMAIN-SUFFIX,baidulao.com - - DOMAIN-SUFFIX,baidustatic.com - - DOMAIN-SUFFIX,baidut.github.io - - DOMAIN-SUFFIX,baidutv.baidu.com - - DOMAIN-SUFFIX,baidu-union-js.xiachufang.com - - DOMAIN-SUFFIX,baidu-union-pos.xiachufang.com - - DOMAIN-SUFFIX,baiduyubaidu.com - - DOMAIN-SUFFIX,baiduzhidahao.cc - - DOMAIN-SUFFIX,baifen.music.baidu.com - - DOMAIN-SUFFIX,baifendian.com - - DOMAIN-SUFFIX,baigm.com - - DOMAIN-SUFFIX,baiwanchuangyi.com - - DOMAIN-SUFFIX,bam.nr-data.net - - DOMAIN-SUFFIX,banlv.baidu.com - - DOMAIN-SUFFIX,banmamedia.com - - DOMAIN-SUFFIX,bannedbook.org - - DOMAIN-SUFFIX,banner.101xp.com - - DOMAIN-SUFFIX,banner.3ddownloads.com - - DOMAIN-SUFFIX,banner.automotiveworld.com - - DOMAIN-SUFFIX,banner.cooguo.com - - DOMAIN-SUFFIX,banner.europacasino.com - - DOMAIN-SUFFIX,banner.itweb.co.za - - DOMAIN-SUFFIX,banner.telefragged.com - - DOMAIN-SUFFIX,banner.titancasino.com - - DOMAIN-SUFFIX,banner1.pornhost.com - - DOMAIN-SUFFIX,banners.beevpn.com - - DOMAIN-SUFFIX,banners.beted.com - - DOMAIN-SUFFIX,banners.cams.com - - DOMAIN-SUFFIX,banners.clubworldgroup.com - - DOMAIN-SUFFIX,banners.expressindia.com - - DOMAIN-SUFFIX,banners.itweb.co.za - - DOMAIN-SUFFIX,banners.playocio.com - - DOMAIN-SUFFIX,bannershotlink.perfectgonzo.com - - DOMAIN-SUFFIX,baoyatu.cc - - DOMAIN-SUFFIX,bar.baidu.com - - DOMAIN-SUFFIX,bartender.cc - - DOMAIN-SUFFIX,base.filedot.xyz - - DOMAIN-SUFFIX,bat.bing.com - - DOMAIN-SUFFIX,bax.xiawu.com - - DOMAIN-SUFFIX,baxf.m.shuhuangge.org - - DOMAIN-SUFFIX,bay.xiawu.com - - DOMAIN-SUFFIX,baycode.cn - - DOMAIN-SUFFIX,bayimob.com - - DOMAIN-SUFFIX,bazinga.mse.sogou.com - - DOMAIN-SUFFIX,bb.tuku.cc - - DOMAIN-SUFFIX,bb1429.com - - DOMAIN-SUFFIX,bbcc.yxlady.com - - DOMAIN-SUFFIX,bbcoe.cn - - DOMAIN-SUFFIX,bbdm.051661.com - - DOMAIN-SUFFIX,bbsimages.zkxf119.com - - DOMAIN-SUFFIX,bc.geocities.yahoo.co.jp - - DOMAIN-SUFFIX,bccyyc.com - - DOMAIN-SUFFIX,bcjjg.bugsevent.com - - DOMAIN-SUFFIX,bcjxf.bugsevent.com - - DOMAIN-SUFFIX,bd.ershenghuo.com - - DOMAIN-SUFFIX,bd.gow100.com - - DOMAIN-SUFFIX,bd.haomagujia.com - - DOMAIN-SUFFIX,bd.soarfi.cn - - DOMAIN-SUFFIX,bd.wayqq.cn - - DOMAIN-SUFFIX,bd01.daqiso.com - - DOMAIN-SUFFIX,bd1.365qilu.com - - DOMAIN-SUFFIX,bd1.52che.com - - DOMAIN-SUFFIX,bd1.fengdu100.com - - DOMAIN-SUFFIX,bd1.flfgw.cn - - DOMAIN-SUFFIX,bd1.home8080.cn - - DOMAIN-SUFFIX,bd1.jobui.com - - DOMAIN-SUFFIX,bd1.nipic.com - - DOMAIN-SUFFIX,bd1.nxing.cn - - DOMAIN-SUFFIX,bd1.pipaw.com - - DOMAIN-SUFFIX,bd1.szhk.com - - DOMAIN-SUFFIX,bd1.wowoqq.com - - DOMAIN-SUFFIX,bd1.xiangha.com - - DOMAIN-SUFFIX,bd2.52che.com - - DOMAIN-SUFFIX,bd2.flfgw.cn - - DOMAIN-SUFFIX,bd2.home8080.cn - - DOMAIN-SUFFIX,bd2.jobui.com - - DOMAIN-SUFFIX,bd2.nipic.com - - DOMAIN-SUFFIX,bd2.pipaw.com - - DOMAIN-SUFFIX,bd3.chuiyue.com - - DOMAIN-SUFFIX,bd3.jobui.com - - DOMAIN-SUFFIX,bd4.chuiyue.com - - DOMAIN-SUFFIX,bdad.hao224.com - - DOMAIN-SUFFIX,bdcode.gaosan.com - - DOMAIN-SUFFIX,bdcode.youke.com - - DOMAIN-SUFFIX,bdd.hainan.net - - DOMAIN-SUFFIX,bddm.999d.com - - DOMAIN-SUFFIX,bdfpb1.8684.com - - DOMAIN-SUFFIX,bdfpb2.8684.com - - DOMAIN-SUFFIX,bdjiaoben.wmxa.cn - - DOMAIN-SUFFIX,bdjs.120askimages.com - - DOMAIN-SUFFIX,bdjs.6237237.com - - DOMAIN-SUFFIX,bdjs.99.com.cn - - DOMAIN-SUFFIX,bdjs.999d.com - - DOMAIN-SUFFIX,bd-js.baixing.net - - DOMAIN-SUFFIX,bdjs.faxingzhan.com - - DOMAIN-SUFFIX,bdjs.itechwall.com - - DOMAIN-SUFFIX,bdjs.ixiumei.com - - DOMAIN-SUFFIX,bdjs.jb51.net - - DOMAIN-SUFFIX,bdjs.kaixin100.com - - DOMAIN-SUFFIX,bdjs.laonanren.com - - DOMAIN-SUFFIX,bdjs.ylq.com - - DOMAIN-SUFFIX,bdjs1.ixiumei.com - - DOMAIN-SUFFIX,bdlm.120askimages.com - - DOMAIN-SUFFIX,bdlm1.hc360.com - - DOMAIN-SUFFIX,bdlncs1.familydoctor.com.cn - - DOMAIN-SUFFIX,bdmjs.xywy.com - - DOMAIN-SUFFIX,bdmm.xywy.com - - DOMAIN-SUFFIX,bdplus.baidu.com - - DOMAIN-SUFFIX,bdpuaw.com - - DOMAIN-SUFFIX,bd-s.baixing.net - - DOMAIN-SUFFIX,bds.hainan.net - - DOMAIN-SUFFIX,bds.soarfi.cn - - DOMAIN-SUFFIX,bdtongfei.cn - - DOMAIN-SUFFIX,bduserlog.eastmoney.com - - DOMAIN-SUFFIX,beacon.gtimg.com - - DOMAIN-SUFFIX,beacon.krxd.net - - DOMAIN-SUFFIX,beacon.sina.com.cn - - DOMAIN-SUFFIX,beacon.tingyun.com - - DOMAIN-SUFFIX,beacon-us-sjc1.rubiconproject.com - - DOMAIN-SUFFIX,beap.adss.yahoo.com - - DOMAIN-SUFFIX,beap-bc.yahoo.com - - DOMAIN-SUFFIX,bebelait.com - - DOMAIN-SUFFIX,becode.qiushibaike.com - - DOMAIN-SUFFIX,beeho.site - - DOMAIN-SUFFIX,beerto.cn - - DOMAIN-SUFFIX,beha.ksmobile.com - - DOMAIN-SUFFIX,behe.com - - DOMAIN-SUFFIX,beilamusi.com - - DOMAIN-SUFFIX,beintoo.com - - DOMAIN-SUFFIX,benshiw.net - - DOMAIN-SUFFIX,bepolite.eu - - DOMAIN-SUFFIX,bes-progfree.com - - DOMAIN-SUFFIX,bet36500050.com - - DOMAIN-SUFFIX,beta.vpon.com - - DOMAIN-SUFFIX,betsonsport.ru - - DOMAIN-SUFFIX,betterzip.net - - DOMAIN-SUFFIX,bewaycare.com - - DOMAIN-SUFFIX,beyondcompare.cc - - DOMAIN-SUFFIX,bfdcdn.com - - DOMAIN-SUFFIX,bglog.bitauto.com - - DOMAIN-SUFFIX,bgrndi.com - - DOMAIN-SUFFIX,bh.contextweb.com - - DOMAIN-SUFFIX,bhjac.azvub.cn - - DOMAIN-SUFFIX,bianxianmao.com - - DOMAIN-SUFFIX,biddingos.com - - DOMAIN-SUFFIX,biddingx.com - - DOMAIN-SUFFIX,bidvertiser.com - - DOMAIN-SUFFIX,bigbos.top - - DOMAIN-SUFFIX,bigboy.eurogamer.net - - DOMAIN-SUFFIX,billionfocus.com - - DOMAIN-SUFFIX,binaryage-leechgate.herokuapp.com - - DOMAIN-SUFFIX,bingdianhuanyuan.cn - - DOMAIN-SUFFIX,bingyinq.com - - DOMAIN-SUFFIX,biq.keefung-zs.com - - DOMAIN-SUFFIX,bite.theta.sogoucdn.com - - DOMAIN-SUFFIX,bitsumactivationserver.com - - DOMAIN-SUFFIX,bivitr.com - - DOMAIN-SUFFIX,bixia.fymm.cn - - DOMAIN-SUFFIX,biyibia.com - - DOMAIN-SUFFIX,biz.gexing.com - - DOMAIN-SUFFIX,biz.live.xunlei.com - - DOMAIN-SUFFIX,biz.vpon.com - - DOMAIN-SUFFIX,biz.weibo.com - - DOMAIN-SUFFIX,biz37.net - - DOMAIN-SUFFIX,bizanti.youwatch.org - - DOMAIN-SUFFIX,bj.imp.voiceads.cn - - DOMAIN-SUFFIX,bj14.9669.cn - - DOMAIN-SUFFIX,bjcathay.com - - DOMAIN-SUFFIX,bjcu.u3.ucweb.com - - DOMAIN-SUFFIX,bjedpt.com - - DOMAIN-SUFFIX,bjs.9669.cn - - DOMAIN-SUFFIX,bkdg.net - - DOMAIN-SUFFIX,bl.wavecdn.de - - DOMAIN-SUFFIX,bla.gtimg.com - - DOMAIN-SUFFIX,blaaaa12.googlecode.com - - DOMAIN-SUFFIX,blb.winasdaq.com - - DOMAIN-SUFFIX,bllbaby.cn - - DOMAIN-SUFFIX,blogad01.myweb.hinet.net - - DOMAIN-SUFFIX,blogad02.myweb.hinet.net - - DOMAIN-SUFFIX,bluekai.com - - DOMAIN-SUFFIX,bluhostedbanners.blucigs.com - - DOMAIN-SUFFIX,bmg.wnbfw.com - - DOMAIN-SUFFIX,bmp.ali213.net - - DOMAIN-SUFFIX,bmp1.ali213.net - - DOMAIN-SUFFIX,bmw2ep.paomifen.cn - - DOMAIN-SUFFIX,bnrs.ilm.ee - - DOMAIN-SUFFIX,boardx.huanqiu.com - - DOMAIN-SUFFIX,bob.crazyshit.com - - DOMAIN-SUFFIX,bobo.163.com - - DOMAIN-SUFFIX,bolt.jebe.renren.com - - DOMAIN-SUFFIX,borsendental.com - - DOMAIN-SUFFIX,bosiwangzi.cn - - DOMAIN-SUFFIX,box.anchorfree.net - - DOMAIN-SUFFIX,boxercrazy.org - - DOMAIN-SUFFIX,boxshows.com - - DOMAIN-SUFFIX,boyxu.cn - - DOMAIN-SUFFIX,bp.mobad.ijinshan.com - - DOMAIN-SUFFIX,br.blackfling.com - - DOMAIN-SUFFIX,br.fling.com - - DOMAIN-SUFFIX,br.realitykings.com - - DOMAIN-SUFFIX,brakefluid.website - - DOMAIN-SUFFIX,brand.sogou.com - - DOMAIN-SUFFIX,brandshow.58.com - - DOMAIN-SUFFIX,brcache.madthumbs.com - - DOMAIN-SUFFIX,breeze.olclient.baofeng.com - - DOMAIN-SUFFIX,breezily168.com - - DOMAIN-SUFFIX,brizads.com - - DOMAIN-SUFFIX,bro.flyme.cn - - DOMAIN-SUFFIX,bryonypie.com - - DOMAIN-SUFFIX,bs.5442.com - - DOMAIN-SUFFIX,bs.serving-sys.com - - DOMAIN-SUFFIX,bs14.9669.cn - - DOMAIN-SUFFIX,bsch.serving-sys.com - - DOMAIN-SUFFIX,bsdev.cn - - DOMAIN-SUFFIX,bshare.cn - - DOMAIN-SUFFIX,bshare.optimix.asia - - DOMAIN-SUFFIX,bsiet.husky.sogou.com - - DOMAIN-SUFFIX,bss.pandora.xiaomi.com - - DOMAIN-SUFFIX,bstatic.1kejian.com - - DOMAIN-SUFFIX,bstatic.diyifanwen.com - - DOMAIN-SUFFIX,bt.xitongmonitor.com - - DOMAIN-SUFFIX,bt641499.gotoip4.com - - DOMAIN-SUFFIX,bthergyuan.com - - DOMAIN-SUFFIX,btlaunch.baidu.com - - DOMAIN-SUFFIX,btn.onlylady.com - - DOMAIN-SUFFIX,btn.pchome.net - - DOMAIN-SUFFIX,btr.domywife.com - - DOMAIN-SUFFIX,bttrack.com - - DOMAIN-SUFFIX,btyou.com - - DOMAIN-SUFFIX,bu01.zybang.com - - DOMAIN-SUFFIX,bu02.zybang.com - - DOMAIN-SUFFIX,bu1.duba.com - - DOMAIN-SUFFIX,bu2.duba.com - - DOMAIN-SUFFIX,bugtags.com - - DOMAIN-SUFFIX,business.92wy.com - - DOMAIN-SUFFIX,business.inveno.com - - DOMAIN-SUFFIX,buyimg.bianxianmao.com - - DOMAIN-SUFFIX,buysellads.com - - DOMAIN-SUFFIX,buyu8001.com - - DOMAIN-SUFFIX,bwp.theinsider.com.com - - DOMAIN-SUFFIX,bx.optimix.asia - - DOMAIN-SUFFIX,bx01.optimix.asia - - DOMAIN-SUFFIX,bxgmb.com - - DOMAIN-SUFFIX,bxjpl.cn - - DOMAIN-SUFFIX,by.dm5.com - - DOMAIN-SUFFIX,by.mbai.cn - - DOMAIN-SUFFIX,by.tel.cdndm.com - - DOMAIN-SUFFIX,by8974.com - - DOMAIN-SUFFIX,bydonline.com - - DOMAIN-SUFFIX,bypbwm.cn - - DOMAIN-SUFFIX,c.0.0.0.0.cn - - DOMAIN-SUFFIX,c.28487.net - - DOMAIN-SUFFIX,c.35kds.com - - DOMAIN-SUFFIX,c.365yigou.cn - - DOMAIN-SUFFIX,c.45io.com - - DOMAIN-SUFFIX,c.51y5.net - - DOMAIN-SUFFIX,c.adbxb.cn - - DOMAIN-SUFFIX,c.anmeilai.net - - DOMAIN-SUFFIX,c.autohome.com.cn - - DOMAIN-SUFFIX,c.baidu.com - - DOMAIN-SUFFIX,c.betrad.com - - DOMAIN-SUFFIX,c.bigmir.net - - DOMAIN-SUFFIX,c.bing.com - - DOMAIN-SUFFIX,c.bxb.oupeng.com - - DOMAIN-SUFFIX,c.codeonclick.com - - DOMAIN-SUFFIX,c.cyhx98.com - - DOMAIN-SUFFIX,c.cyto-biotherapy.com - - DOMAIN-SUFFIX,c.danangmo.cn - - DOMAIN-SUFFIX,c.data.mob.com - - DOMAIN-SUFFIX,c.dokrmob.com - - DOMAIN-SUFFIX,c.dzytjqcc.com - - DOMAIN-SUFFIX,c.effectivemeasure.net - - DOMAIN-SUFFIX,c.f1zd.com - - DOMAIN-SUFFIX,c.gj.qq.com - - DOMAIN-SUFFIX,c.guangtui1999.com - - DOMAIN-SUFFIX,c.gzsanxiaomingshi.cn - - DOMAIN-SUFFIX,c.idasui.cn - - DOMAIN-SUFFIX,c.iogous.com - - DOMAIN-SUFFIX,c.k429fma.com - - DOMAIN-SUFFIX,c.kbf365.cn - - DOMAIN-SUFFIX,c.kl6636.net - - DOMAIN-SUFFIX,c.kuwo.cn - - DOMAIN-SUFFIX,c.lianwangtech.com - - DOMAIN-SUFFIX,c.live.com - - DOMAIN-SUFFIX,c.lucktui.com - - DOMAIN-SUFFIX,c.metrigo.com - - DOMAIN-SUFFIX,c.mightiger.net - - DOMAIN-SUFFIX,c.minisplat.cn - - DOMAIN-SUFFIX,c.mkmp365.com - - DOMAIN-SUFFIX,c.mnjkw.cn - - DOMAIN-SUFFIX,c.mobishu.com - - DOMAIN-SUFFIX,c.msn.com - - DOMAIN-SUFFIX,c.msn.com.cn - - DOMAIN-SUFFIX,c.netu.tv - - DOMAIN-SUFFIX,c.ningbojipiao.com - - DOMAIN-SUFFIX,c.ns8d.com - - DOMAIN-SUFFIX,c.okmgy.cn - - DOMAIN-SUFFIX,c.panqis.cn - - DOMAIN-SUFFIX,c.panqishu.com - - DOMAIN-SUFFIX,c.piliangzhuce.cn - - DOMAIN-SUFFIX,c.ptffw.net - - DOMAIN-SUFFIX,c.queene.cn - - DOMAIN-SUFFIX,c.rexuebi.com - - DOMAIN-SUFFIX,c.rscxwmj.cn - - DOMAIN-SUFFIX,c.shunlige.com - - DOMAIN-SUFFIX,c.silvinst.com - - DOMAIN-SUFFIX,c.sss1989.com - - DOMAIN-SUFFIX,c.sssgao999.com - - DOMAIN-SUFFIX,c.start280.com - - DOMAIN-SUFFIX,c.statcounter.com - - DOMAIN-SUFFIX,c.statstat888.com - - DOMAIN-SUFFIX,c.sy123888.com - - DOMAIN-SUFFIX,c.t98u8f.com - - DOMAIN-SUFFIX,c.tctyb.cn - - DOMAIN-SUFFIX,c.v4dwkcv.com - - DOMAIN-SUFFIX,c.vip97.net - - DOMAIN-SUFFIX,c.wechat.jx.cn - - DOMAIN-SUFFIX,c.wkanx.com - - DOMAIN-SUFFIX,c.wrating.com - - DOMAIN-SUFFIX,c.xianguonongchang.org - - DOMAIN-SUFFIX,c.xznykf.org - - DOMAIN-SUFFIX,c.ylist.cn - - DOMAIN-SUFFIX,c.ynlysg.com - - DOMAIN-SUFFIX,c.youdao.com - - DOMAIN-SUFFIX,c.zgnm.cc - - DOMAIN-SUFFIX,c.zlongad.com - - DOMAIN-SUFFIX,c.zmjuan.org - - DOMAIN-SUFFIX,c.zxyywdj.org - - DOMAIN-SUFFIX,c0.ifengimg.com - - DOMAIN-SUFFIX,c03.optimix.asia - - DOMAIN-SUFFIX,c0563.com - - DOMAIN-SUFFIX,c0594.com - - DOMAIN-SUFFIX,c0i8h8ac7e.bid - - DOMAIN-SUFFIX,c1.4qx.net - - DOMAIN-SUFFIX,c1.668559.com - - DOMAIN-SUFFIX,c1.ifengimg.com - - DOMAIN-SUFFIX,c1.keyrun.cn - - DOMAIN-SUFFIX,c1.lianwangtech.com - - DOMAIN-SUFFIX,c1.minisplat.cn - - DOMAIN-SUFFIX,c1.popads.net - - DOMAIN-SUFFIX,c1.statcounter.com - - DOMAIN-SUFFIX,c1.ulink.cc - - DOMAIN-SUFFIX,c1.wkanx.com - - DOMAIN-SUFFIX,c1.xcy8.com - - DOMAIN-SUFFIX,c16cp358.com - - DOMAIN-SUFFIX,c2.58toto.net - - DOMAIN-SUFFIX,c2.popads.net - - DOMAIN-SUFFIX,c2.statcounter.com - - DOMAIN-SUFFIX,c3.gostats.cn - - DOMAIN-SUFFIX,c3.moogos.com - - DOMAIN-SUFFIX,c6.bjdianyue.com - - DOMAIN-SUFFIX,c6.lnymd.com - - DOMAIN-SUFFIX,c77777777.com - - DOMAIN-SUFFIX,c8.wangdq.com - - DOMAIN-SUFFIX,c8b.jcdb88.com - - DOMAIN-SUFFIX,ca.5173car.com - - DOMAIN-SUFFIX,ca.w8.com.cn - - DOMAIN-SUFFIX,caamei.com - - DOMAIN-SUFFIX,cacaca.0571yy.com - - DOMAIN-SUFFIX,cacaca.sp96878.com - - DOMAIN-SUFFIX,cacafly.net - - DOMAIN-SUFFIX,cache.betweendigital.com - - DOMAIN-SUFFIX,cache.soloth.com - - DOMAIN-SUFFIX,cache.xw126.com - - DOMAIN-SUFFIX,cachead.com - - DOMAIN-SUFFIX,cachenotice.cp11.ott.cibntv.net - - DOMAIN-SUFFIX,cachesit.com - - DOMAIN-SUFFIX,cache-ssl.celtra.com - - DOMAIN-SUFFIX,cad.chosun.com - - DOMAIN-SUFFIX,c-adash.m.taobao.com - - DOMAIN-SUFFIX,cadvv.heraldm.com - - DOMAIN-SUFFIX,cadvv.koreaherald.com - - DOMAIN-SUFFIX,caiyifz.com - - DOMAIN-SUFFIX,cal.meizu.com - - DOMAIN-SUFFIX,caliyuna.cn - - DOMAIN-SUFFIX,calopenupdate.comm.miui.com - - DOMAIN-SUFFIX,cams.pornrabbit.com - - DOMAIN-SUFFIX,cangnews.com - - DOMAIN-SUFFIX,canvas.thenextweb.com - - DOMAIN-SUFFIX,caob5.info - - DOMAIN-SUFFIX,caolvch.com - - DOMAIN-SUFFIX,cap.cyberlink.com - - DOMAIN-SUFFIX,cap.touclick.com - - DOMAIN-SUFFIX,car.mobadme.jp - - DOMAIN-SUFFIX,carbonads.net - - DOMAIN-SUFFIX,cas.clickability.com - - DOMAIN-SUFFIX,cas.criteo.com - - DOMAIN-SUFFIX,casalemedia.com - - DOMAIN-SUFFIX,casee.cn - - DOMAIN-SUFFIX,cash.neweramediaworks.com - - DOMAIN-SUFFIX,cast.innity.com - - DOMAIN-SUFFIX,cast.ra.icast.cn - - DOMAIN-SUFFIX,cast-bid27-j.adtdp.com - - DOMAIN-SUFFIX,castplatform.com - - DOMAIN-SUFFIX,catalog.video.msn.com - - DOMAIN-SUFFIX,catch.gift - - DOMAIN-SUFFIX,cayanfang.com - - DOMAIN-SUFFIX,cb.baidu.com - - DOMAIN-SUFFIX,cb.h5.coffeedak.cn - - DOMAIN-SUFFIX,cbjs.baidu.com - - DOMAIN-SUFFIX,cbs.wondershare.com - - DOMAIN-SUFFIX,cc.0133hao.net - - DOMAIN-SUFFIX,cc.1515788.net - - DOMAIN-SUFFIX,cc.365yigou.cn - - DOMAIN-SUFFIX,cc.700ok.net - - DOMAIN-SUFFIX,cc.dace.hupu.com - - DOMAIN-SUFFIX,cc.idasui.cn - - DOMAIN-SUFFIX,cc.moquanad.com - - DOMAIN-SUFFIX,cc.piao.jianzhigg.com - - DOMAIN-SUFFIX,cc.st123.info - - DOMAIN-SUFFIX,cc.xtgreat.com - - DOMAIN-SUFFIX,cc.yac8.com - - DOMAIN-SUFFIX,cca.mob.com - - DOMAIN-SUFFIX,ccb.uncle-ad.com - - DOMAIN-SUFFIX,ccbaihehq.com - - DOMAIN-SUFFIX,cccrir.com - - DOMAIN-SUFFIX,ccr.yxdown.com - - DOMAIN-SUFFIX,cctyly.com - - DOMAIN-SUFFIX,cd.bendibao.com - - DOMAIN-SUFFIX,cdgxq.com - - DOMAIN-SUFFIX,cdhoc.piyaji.cn - - DOMAIN-SUFFIX,cdn.0i-i0.com - - DOMAIN-SUFFIX,cdn.5bong.com - - DOMAIN-SUFFIX,cdn.adsk2.co - - DOMAIN-SUFFIX,cdn.adstract.com - - DOMAIN-SUFFIX,cdn.aegins.com - - DOMAIN-SUFFIX,cdn.aiclicash.com - - DOMAIN-SUFFIX,cdn.app.kachapt.cn - - DOMAIN-SUFFIX,cdn.app.liuxingyul.cn - - DOMAIN-SUFFIX,cdn.at.atwola.com - - DOMAIN-SUFFIX,cdn.atwola.com - - DOMAIN-SUFFIX,cdn.cooguo.com - - DOMAIN-SUFFIX,cdn.districtm.io - - DOMAIN-SUFFIX,cdn.dragonstatic.com - - DOMAIN-SUFFIX,cdn.dsp.com - - DOMAIN-SUFFIX,cdn.earnify.com - - DOMAIN-SUFFIX,cdn.fastclick.net - - DOMAIN-SUFFIX,cdn.hivps.xyz - - DOMAIN-SUFFIX,cdn.hyperpromote.com - - DOMAIN-SUFFIX,cdn.iclicash.com - - DOMAIN-SUFFIX,cdn.img.kachapt.cn - - DOMAIN-SUFFIX,cdn.img.liuxingyul.cn - - DOMAIN-SUFFIX,cdn.innity.net - - DOMAIN-SUFFIX,cdn.jesgoo.com - - DOMAIN-SUFFIX,cdn.jiuzhilan.com - - DOMAIN-SUFFIX,cdn.jllstudio.com - - DOMAIN-SUFFIX,cdn.komentary.aol.com - - DOMAIN-SUFFIX,cdn.krxd.net - - DOMAIN-SUFFIX,cdn.lu.sogoucdn.com - - DOMAIN-SUFFIX,cdn.marketgid.com - - DOMAIN-SUFFIX,cdn.mdotm.com - - DOMAIN-SUFFIX,cdn.media.innity.net - - DOMAIN-SUFFIX,cdn.millennialmedia.com - - DOMAIN-SUFFIX,cdn.mingmingtehui.com - - DOMAIN-SUFFIX,cdn.moji.com - - DOMAIN-SUFFIX,cdn.moji002.com - - DOMAIN-SUFFIX,cdn.moogos.com - - DOMAIN-SUFFIX,cdn.ndapp.com - - DOMAIN-SUFFIX,cdn.newapi.com - - DOMAIN-SUFFIX,cdn.optaim.com - - DOMAIN-SUFFIX,cdn.outfit7.com - - DOMAIN-SUFFIX,cdn.popcash.net - - DOMAIN-SUFFIX,cdn.popmyads.com - - DOMAIN-SUFFIX,cdn.puata.info - - DOMAIN-SUFFIX,cdn.scdng.com - - DOMAIN-SUFFIX,cdn.sp.rizhao9.com - - DOMAIN-SUFFIX,cdn.tianmidian.com - - DOMAIN-SUFFIX,cdn.tinglian.com - - DOMAIN-SUFFIX,cdn.vamaker.com - - DOMAIN-SUFFIX,cdn.viglink.com - - DOMAIN-SUFFIX,cdn.xianliao.me - - DOMAIN-SUFFIX,cdn.zampda.net - - DOMAIN-SUFFIX,cdn0.mobmore.com - - DOMAIN-SUFFIX,cdn1.lbesec.com - - DOMAIN-SUFFIX,cdn1.res.nx5.com - - DOMAIN-SUFFIX,cdn1.res.uzham.com - - DOMAIN-SUFFIX,cdn1.srv.revdepo.com - - DOMAIN-SUFFIX,cdn2.moji002.com - - DOMAIN-SUFFIX,cdnads.com - - DOMAIN-SUFFIX,cdn-ads.oss-cn-shanghai.aliyuncs.com - - DOMAIN-SUFFIX,cdnas.hyperpromote.com - - DOMAIN-SUFFIX,cdn-gcs.outfit7.com - - DOMAIN-SUFFIX,cdnimg.liehu.ijinshan.com - - DOMAIN-SUFFIX,cdnis.hyperpromote.com - - DOMAIN-SUFFIX,cdnmaster.com - - DOMAIN-SUFFIX,cdnny.com - - DOMAIN-SUFFIX,cdnpa.hyperpromote.com - - DOMAIN-SUFFIX,cdn-rtb.sape.ru - - DOMAIN-SUFFIX,cdn-settings.segment.com - - DOMAIN-SUFFIX,cdntest.a8tiyu.com - - DOMAIN-SUFFIX,cds.51y5.net - - DOMAIN-SUFFIX,cdyqc.com - - DOMAIN-SUFFIX,ced.sascdn.com - - DOMAIN-SUFFIX,cee1.iteye.com - - DOMAIN-SUFFIX,cee2.iteye.com - - DOMAIN-SUFFIX,cerebral.typn.com - - DOMAIN-SUFFIX,cfdanet.com - - DOMAIN-SUFFIX,cferw.com - - DOMAIN-SUFFIX,cfg-md.gridsumdissector.com - - DOMAIN-SUFFIX,cfg-vd.gridsumdissector.com - - DOMAIN-SUFFIX,cgskqg.com - - DOMAIN-SUFFIX,chadegongxiao.com - - DOMAIN-SUFFIX,chance-ad.com - - DOMAIN-SUFFIX,chanet.com.cn - - DOMAIN-SUFFIX,changan.bama555.com - - DOMAIN-SUFFIX,changhehengqi.com - - DOMAIN-SUFFIX,channel.fanxing.kugou.com - - DOMAIN-SUFFIX,channeladvisor.com - - DOMAIN-SUFFIX,chaojilamei.cn - - DOMAIN-SUFFIX,chaoliangyun.com - - DOMAIN-SUFFIX,chartbeat.com - - DOMAIN-SUFFIX,chartboost.com - - DOMAIN-SUFFIX,chebse.com - - DOMAIN-SUFFIX,chemdraw.com - - DOMAIN-SUFFIX,chemdraw.com.cn - - DOMAIN-SUFFIX,chengadx.com - - DOMAIN-SUFFIX,chenggao.cn - - DOMAIN-SUFFIX,chengzhao95511.com - - DOMAIN-SUFFIX,chenwen7788.com - - DOMAIN-SUFFIX,chicken18.com - - DOMAIN-SUFFIX,chidir.com - - DOMAIN-SUFFIX,chinacsky.com - - DOMAIN-SUFFIX,chinaheh.com - - DOMAIN-SUFFIX,chinaliftoff.io - - DOMAIN-SUFFIX,chinauma.net - - DOMAIN-SUFFIX,chinaweichu.net - - DOMAIN-SUFFIX,chjxzk.1555110.cn - - DOMAIN-SUFFIX,chmae.com - - DOMAIN-SUFFIX,chnhty.com - - DOMAIN-SUFFIX,chuantu.biz - - DOMAIN-SUFFIX,chushoushijian.cn - - DOMAIN-SUFFIX,ci.csefaazc.net - - DOMAIN-SUFFIX,ciajingman.com - - DOMAIN-SUFFIX,cilidaquan.pw - - DOMAIN-SUFFIX,cindy17club.com - - DOMAIN-SUFFIX,cip6.czpush.com - - DOMAIN-SUFFIX,cishantao.com - - DOMAIN-SUFFIX,ciyitan.com - - DOMAIN-SUFFIX,cj.qidian.com - - DOMAIN-SUFFIX,cjhq.baidu.com - - DOMAIN-SUFFIX,cjmakeding.com - - DOMAIN-SUFFIX,cjmkt.com - - DOMAIN-SUFFIX,cjmooter.xcache.kinxcdn.com - - DOMAIN-SUFFIX,cjroq.bealge.sogou.com - - DOMAIN-SUFFIX,ck.houyi.baofeng.net - - DOMAIN-SUFFIX,ck.kejet.net - - DOMAIN-SUFFIX,cl.he9630.com - - DOMAIN-SUFFIX,cl.webterren.com - - DOMAIN-SUFFIX,cl.xzqxzs.com - - DOMAIN-SUFFIX,cl0.webterren.com - - DOMAIN-SUFFIX,cl2.webterren.com - - DOMAIN-SUFFIX,cl3.webterren.com - - DOMAIN-SUFFIX,cl4.webterren.com - - DOMAIN-SUFFIX,cl5.webterren.com - - DOMAIN-SUFFIX,clarity.abacast.com - - DOMAIN-SUFFIX,cleaner.baidu.com - - DOMAIN-SUFFIX,click1n.soufun.com - - DOMAIN-SUFFIX,clickadu.com - - DOMAIN-SUFFIX,click-cn.plista.com - - DOMAIN-SUFFIX,clicki.cn - - DOMAIN-SUFFIX,clicklog.moviebox.baofeng.net - - DOMAIN-SUFFIX,clickm.fang.com - - DOMAIN-SUFFIX,clickn.fang.com - - DOMAIN-SUFFIX,clicks.beap.bc.yahoo.com - - DOMAIN-SUFFIX,clicks.superpages.com - - DOMAIN-SUFFIX,clickstrip.6wav.es - - DOMAIN-SUFFIX,clicktracks.com - - DOMAIN-SUFFIX,clickzs.com - - DOMAIN-SUFFIX,client.88tours.com - - DOMAIN-SUFFIX,client.sidesearch.lycos.com - - DOMAIN-SUFFIX,client.stats.yinyuetai.com - - DOMAIN-SUFFIX,client.tenddata.com - - DOMAIN-SUFFIX,client-api.ele.me - - DOMAIN-SUFFIX,client-dmp.suishenyun.cn - - DOMAIN-SUFFIX,cliushow.com - - DOMAIN-SUFFIX,clk.dxpmedia.com - - DOMAIN-SUFFIX,clk.gentags.net - - DOMAIN-SUFFIX,clk.madserving.com - - DOMAIN-SUFFIX,clk.optaim.com - - DOMAIN-SUFFIX,clk.pdb.madserving.com - - DOMAIN-SUFFIX,clk.taptica.com - - DOMAIN-SUFFIX,clk.uunt.com - - DOMAIN-SUFFIX,clkads.com - - DOMAIN-SUFFIX,clkrev.com - - DOMAIN-SUFFIX,clkservice.mail.youdao.com - - DOMAIN-SUFFIX,clkservice.union.youdao.com - - DOMAIN-SUFFIX,clkservice.youdao.com - - DOMAIN-SUFFIX,clkservice2.dict.youdao.com - - DOMAIN-SUFFIX,cloud.codenow.cn - - DOMAIN-SUFFIX,cloud.rovio.com - - DOMAIN-SUFFIX,cloud.zyiis.net - - DOMAIN-SUFFIX,cloudad.asia - - DOMAIN-SUFFIX,cloudcdn.yousee.com - - DOMAIN-SUFFIX,cloudmobi.net - - DOMAIN-SUFFIX,cm.adgrx.com - - DOMAIN-SUFFIX,cm.baidu.com - - DOMAIN-SUFFIX,cm.ctnsnet.com - - DOMAIN-SUFFIX,cm.eyereturn.com - - DOMAIN-SUFFIX,cm.mct01.com - - DOMAIN-SUFFIX,cm.netseer.com - - DOMAIN-SUFFIX,cm.p4p.cn.yahoo.com - - DOMAIN-SUFFIX,cm8.lycos.com - - DOMAIN-SUFFIX,cmarket.kejet.net - - DOMAIN-SUFFIX,cmaxisolation.com - - DOMAIN-SUFFIX,cmcdl.cmcm.com - - DOMAIN-SUFFIX,cmcore.com - - DOMAIN-SUFFIX,cmm.xmfish.com - - DOMAIN-SUFFIX,cmp288.com - - DOMAIN-SUFFIX,cmpp.gentags.net - - DOMAIN-SUFFIX,cms.an.m.liebao.cn - - DOMAIN-SUFFIX,cms.quantserve.com - - DOMAIN-SUFFIX,cmsapi.wifi8.com - - DOMAIN-SUFFIX,cmshow.gtimg.cn - - DOMAIN-SUFFIX,cmslayue.com - - DOMAIN-SUFFIX,cmx.autohome.com.cn - - DOMAIN-SUFFIX,cn.pub.vpon.com - - DOMAIN-SUFFIX,cn.tatami-solutions.com - - DOMAIN-SUFFIX,cnbole.net - - DOMAIN-SUFFIX,cncy8.com - - DOMAIN-SUFFIX,cndjs-1251973891.coshk.myqcloud.com - - DOMAIN-SUFFIX,cnetdirectintl.com - - DOMAIN-SUFFIX,cnetwidget.creativemark.co.uk - - DOMAIN-SUFFIX,cnfanglei.com - - DOMAIN-SUFFIX,cnhbxx.com - - DOMAIN-SUFFIX,cnkok.com - - DOMAIN-SUFFIX,cnn.dyn.cnn.com - - DOMAIN-SUFFIX,cnnic.cn - - DOMAIN-SUFFIX,cnnic.net - - DOMAIN-SUFFIX,cnnic.net.cn - - DOMAIN-SUFFIX,cnpinzhuo.com - - DOMAIN-SUFFIX,cnscdj.com - - DOMAIN-SUFFIX,cnsjx.net - - DOMAIN-SUFFIX,cnxad.com - - DOMAIN-SUFFIX,cnxad.net - - DOMAIN-SUFFIX,cnzhqs.com - - DOMAIN-SUFFIX,cnzz.cn - - DOMAIN-SUFFIX,cnzz.com - - DOMAIN-SUFFIX,co.dtech.baofeng.com - - DOMAIN-SUFFIX,cocounion.com - - DOMAIN-SUFFIX,cod.southmoney.com - - DOMAIN-SUFFIX,code.3shangyou.com - - DOMAIN-SUFFIX,code.fastclick.net - - DOMAIN-SUFFIX,code.hajuwang.cn - - DOMAIN-SUFFIX,code.hot-mob.com - - DOMAIN-SUFFIX,code.kaixinjiehun.com - - DOMAIN-SUFFIX,code.kejet.com - - DOMAIN-SUFFIX,code.laojiayoufang.com - - DOMAIN-SUFFIX,code.ttpaper.com - - DOMAIN-SUFFIX,code.wantaico.com - - DOMAIN-SUFFIX,code11.onetad.com - - DOMAIN-SUFFIX,code12.onetad.com - - DOMAIN-SUFFIX,code1f.m.shushu8.com - - DOMAIN-SUFFIX,code1fa.m.shushu8.com - - DOMAIN-SUFFIX,code222.com - - DOMAIN-SUFFIX,code668.com - - DOMAIN-SUFFIX,codenow.cn - - DOMAIN-SUFFIX,codesoftchina.com - - DOMAIN-SUFFIX,coinblind.com - - DOMAIN-SUFFIX,coinerra.com - - DOMAIN-SUFFIX,coin-have.com - - DOMAIN-SUFFIX,coinhive.com - - DOMAIN-SUFFIX,coin-hive.com - - DOMAIN-SUFFIX,coinhive-manager.com - - DOMAIN-SUFFIX,coin-hive-proxy-ybydcnjgkl.now.sh - - DOMAIN-SUFFIX,coinminerz.com - - DOMAIN-SUFFIX,coinnebula.com - - DOMAIN-SUFFIX,col.hztags.net - - DOMAIN-SUFFIX,col.pagechoice.net - - DOMAIN-SUFFIX,collector.githubapp.com - - DOMAIN-SUFFIX,collector.viki.io - - DOMAIN-SUFFIX,collector.wasu.cn - - DOMAIN-SUFFIX,combine.urbanairship.com - - DOMAIN-SUFFIX,com-eonsun-owl.oss-cn-hangzhou.aliyuncs.com - - DOMAIN-SUFFIX,com-eonsun-owl-user.oss-cn-hangzhou.aliyuncs.com - - DOMAIN-SUFFIX,comesgo.com - - DOMAIN-SUFFIX,comet.yahoo.com - - DOMAIN-SUFFIX,conf.funshion.com - - DOMAIN-SUFFIX,conf.vidown.cn - - DOMAIN-SUFFIX,conf.xiniuz.com - - DOMAIN-SUFFIX,config.baofeng.net - - DOMAIN-SUFFIX,config.cocounion.com - - DOMAIN-SUFFIX,config.ioam.de - - DOMAIN-SUFFIX,config.kuyun.com - - DOMAIN-SUFFIX,config.mobisage.cn - - DOMAIN-SUFFIX,config.push.sogou.com - - DOMAIN-SUFFIX,config.unityads.unity3d.com - - DOMAIN-SUFFIX,config2.mparticle.com - - DOMAIN-SUFFIX,connect.summit.co.uk - - DOMAIN-SUFFIX,content.livesportmedia.eu - - DOMAIN-SUFFIX,content.s8bbs.com - - DOMAIN-SUFFIX,content.streamplay.to - - DOMAIN-SUFFIX,contentabc.com - - DOMAIN-SUFFIX,contentrecommend-out.mobile.sina.cn - - DOMAIN-SUFFIX,conv.youdao.com - - DOMAIN-SUFFIX,conversion.pro.cn - - DOMAIN-SUFFIX,conviva.com - - DOMAIN-SUFFIX,cooguo.com - - DOMAIN-SUFFIX,cookiemapping.wrating.com - - DOMAIN-SUFFIX,coolguang.com - - DOMAIN-SUFFIX,coolnay.com - - DOMAIN-SUFFIX,cooolyi.cn - - DOMAIN-SUFFIX,cooolyi.com - - DOMAIN-SUFFIX,coop.pop.baofeng.com - - DOMAIN-SUFFIX,cootek-dialer-download.oss-cn-hangzhou.aliyuncs.com - - DOMAIN-SUFFIX,cootek-file.cdn.cootekservice.com - - DOMAIN-SUFFIX,cop.my - - DOMAIN-SUFFIX,coreldrawchina.com - - DOMAIN-SUFFIX,coremetrics.com - - DOMAIN-SUFFIX,corner.houyi.baofeng.net - - DOMAIN-SUFFIX,coro.benbaisteel.com - - DOMAIN-SUFFIX,corocksi.com - - DOMAIN-SUFFIX,corp.meitu.com - - DOMAIN-SUFFIX,corp.sohu.com - - DOMAIN-SUFFIX,cosoyoo.com - - DOMAIN-SUFFIX,count.cpm.cm.kankan.com - - DOMAIN-SUFFIX,count.knowsky.com - - DOMAIN-SUFFIX,count.mail.163.com - - DOMAIN-SUFFIX,count.pcpop.com - - DOMAIN-SUFFIX,count.video.sina.com.cn - - DOMAIN-SUFFIX,count.wk2.com - - DOMAIN-SUFFIX,count5.pconline.com.cn - - DOMAIN-SUFFIX,count6.pconline.com.cn - - DOMAIN-SUFFIX,counter.csdn.net - - DOMAIN-SUFFIX,counter.kingsoft.com - - DOMAIN-SUFFIX,counter.m1905.com - - DOMAIN-SUFFIX,counter.marketgid.com - - DOMAIN-SUFFIX,counter.sina.com.cn - - DOMAIN-SUFFIX,counter.yadro.ru - - DOMAIN-SUFFIX,counter.yesky.com - - DOMAIN-SUFFIX,countpvn.light.fang.com - - DOMAIN-SUFFIX,countubn.light.soufun.com - - DOMAIN-SUFFIX,couqm.com.cn - - DOMAIN-SUFFIX,cp.5jjx.net - - DOMAIN-SUFFIX,cp.ggyapp.com - - DOMAIN-SUFFIX,cp.greenxf.cn - - DOMAIN-SUFFIX,cp.gs307.com - - DOMAIN-SUFFIX,cp.jfcdns.com - - DOMAIN-SUFFIX,cp.jz5u.net - - DOMAIN-SUFFIX,cpc.sogou.com - - DOMAIN-SUFFIX,cpc.sohu.com - - DOMAIN-SUFFIX,cpcv.cc - - DOMAIN-SUFFIX,cpm.amateurcommunity.com - - DOMAIN-SUFFIX,cpm.amateurcommunity.de - - DOMAIN-SUFFIX,cpm.cm.sandai.net - - DOMAIN-SUFFIX,cpmchina.co - - DOMAIN-SUFFIX,cpms.cc - - DOMAIN-SUFFIX,cpro.9xu.com - - DOMAIN-SUFFIX,cpro.baidu.cn - - DOMAIN-SUFFIX,cpro.baidu.com - - DOMAIN-SUFFIX,cpro.fangtoo.com - - DOMAIN-SUFFIX,cpro.zhidao.baidu.com - - DOMAIN-SUFFIX,cpro.zol.com.cn - - DOMAIN-SUFFIX,cpro1.edushi.com - - DOMAIN-SUFFIX,cpro2.baidu.com - - DOMAIN-SUFFIX,cps.360buy.com - - DOMAIN-SUFFIX,cpu-admin.baidu.com - - DOMAIN-SUFFIX,cpv.channelray - - DOMAIN-SUFFIX,cpv.czpush.com - - DOMAIN-SUFFIX,cpv.ty229.com - - DOMAIN-SUFFIX,cpv6.com - - DOMAIN-SUFFIX,cpva.cc - - DOMAIN-SUFFIX,cpv-adv.ggytc.com - - DOMAIN-SUFFIX,cpx24.com - - DOMAIN-SUFFIX,cqfangduan.com - - DOMAIN-SUFFIX,cqftonline.com - - DOMAIN-SUFFIX,cqhnm.com - - DOMAIN-SUFFIX,cqhot.club - - DOMAIN-SUFFIX,cqsta.com - - DOMAIN-SUFFIX,cqyhd.com - - DOMAIN-SUFFIX,cr.m.liebao.cn - - DOMAIN-SUFFIX,crashapi.growingio.com - - DOMAIN-SUFFIX,crashes.mo.wps.cn - - DOMAIN-SUFFIX,crasheye.cn - - DOMAIN-SUFFIX,crashlytics.163.com - - DOMAIN-SUFFIX,crashlytics.com - - DOMAIN-SUFFIX,crdrjs.info - - DOMAIN-SUFFIX,cre.dp.sina.cn - - DOMAIN-SUFFIX,cre.mix.sina.com.cn - - DOMAIN-SUFFIX,cre99.com - - DOMAIN-SUFFIX,creatim.qtmojo.cn - - DOMAIN-SUFFIX,creative.1111cpc.com - - DOMAIN-SUFFIX,creative.jdkic.com - - DOMAIN-SUFFIX,creative.ltheanine.cn - - DOMAIN-SUFFIX,creatives.cliphunter.com - - DOMAIN-SUFFIX,creatives.ftchinese.com - - DOMAIN-SUFFIX,creatives.inmotionhosting.com - - DOMAIN-SUFFIX,creatives.livejasmin.com - - DOMAIN-SUFFIX,creatives.pichunter.com - - DOMAIN-SUFFIX,creatives.summitconnect.co.uk - - DOMAIN-SUFFIX,creatives1.ftimg.net - - DOMAIN-SUFFIX,cre-dp.sina.cn - - DOMAIN-SUFFIX,criteo.com - - DOMAIN-SUFFIX,criteo.net - - DOMAIN-SUFFIX,crl.microsoft.com - - DOMAIN-SUFFIX,crm-eve.b2b.alibaba-inc.com - - DOMAIN-SUFFIX,cr-nielsen.com - - DOMAIN-SUFFIX,crosschannel.com - - DOMAIN-SUFFIX,crossoverchina.com - - DOMAIN-SUFFIX,cr-p16.ladsp.com - - DOMAIN-SUFFIX,crs.baidu.com - - DOMAIN-SUFFIX,crwdcntrl.net - - DOMAIN-SUFFIX,cs.dqwjzm.com - - DOMAIN-SUFFIX,cs.twcczhu.com - - DOMAIN-SUFFIX,csad.cc - - DOMAIN-SUFFIX,csbew.com - - DOMAIN-SUFFIX,csi.gstatic.com - - DOMAIN-SUFFIX,csqiulong.com - - DOMAIN-SUFFIX,cstoa.com - - DOMAIN-SUFFIX,csxjys.com - - DOMAIN-SUFFIX,cszlks.com - - DOMAIN-SUFFIX,ct.210189.com - - DOMAIN-SUFFIX,ct.niu.xunlei.com - - DOMAIN-SUFFIX,cti.w55c.net - - DOMAIN-SUFFIX,ctrmi.com - - DOMAIN-SUFFIX,ctsywy.com - - DOMAIN-SUFFIX,cudaojia.com - - DOMAIN-SUFFIX,cupid.jebe.renren.com - - DOMAIN-SUFFIX,current.sina.com.cn - - DOMAIN-SUFFIX,customad.cnn.com - - DOMAIN-SUFFIX,customer-security.online - - DOMAIN-SUFFIX,cut.qumi.com - - DOMAIN-SUFFIX,cvda.17173.com - - DOMAIN-SUFFIX,cvt.mydas.mobi - - DOMAIN-SUFFIX,cwpush.com - - DOMAIN-SUFFIX,cws-cctv.conviva.com - - DOMAIN-SUFFIX,cy123.cc - - DOMAIN-SUFFIX,cyacc.com - - DOMAIN-SUFFIX,cyad.cc - - DOMAIN-SUFFIX,cyad1.cyworld.com - - DOMAIN-SUFFIX,cyad1.nate.com - - DOMAIN-SUFFIX,cyad123.com - - DOMAIN-SUFFIX,cycy.kxrxh.com - - DOMAIN-SUFFIX,cylinderlongcheng.com - - DOMAIN-SUFFIX,cyylove.com - - DOMAIN-SUFFIX,cz.ifeng0.com - - DOMAIN-SUFFIX,cz01016102.cg2017.com - - DOMAIN-SUFFIX,cz01016102.ms758.com - - DOMAIN-SUFFIX,czdqhyo1.net - - DOMAIN-SUFFIX,czf.cchfjz.com - - DOMAIN-SUFFIX,czjiuding.cn - - DOMAIN-SUFFIX,czpush.com - - DOMAIN-SUFFIX,czpwm.com - - DOMAIN-SUFFIX,czxiangyue.com - - DOMAIN-SUFFIX,d.107788.com - - DOMAIN-SUFFIX,d.1391.com - - DOMAIN-SUFFIX,d.39.net - - DOMAIN-SUFFIX,d.admx.baixing.com - - DOMAIN-SUFFIX,d.agkn.com - - DOMAIN-SUFFIX,d.annarbor.com - - DOMAIN-SUFFIX,d.applovin.com - - DOMAIN-SUFFIX,d.beigedi.com - - DOMAIN-SUFFIX,d.businessinsider.com - - DOMAIN-SUFFIX,d.clkservice.youdao.com - - DOMAIN-SUFFIX,d.danangmo.cn - - DOMAIN-SUFFIX,d.elong.cn - - DOMAIN-SUFFIX,d.gossipcenter.com - - DOMAIN-SUFFIX,d.kugou.com - - DOMAIN-SUFFIX,d.ligatus.com - - DOMAIN-SUFFIX,d.mingyihui.net - - DOMAIN-SUFFIX,d.rexuebi.com - - DOMAIN-SUFFIX,d.ruiwen.com - - DOMAIN-SUFFIX,d.thelocal.com - - DOMAIN-SUFFIX,d.tjgxzs.com - - DOMAIN-SUFFIX,d.tonghua5.com - - DOMAIN-SUFFIX,d.turn.com - - DOMAIN-SUFFIX,d.union.ijinshan.com - - DOMAIN-SUFFIX,d.xinshipu.com - - DOMAIN-SUFFIX,d.yjbys.com - - DOMAIN-SUFFIX,d.yoyi.com.cn - - DOMAIN-SUFFIX,d.yoyi.tv - - DOMAIN-SUFFIX,d0.sina.com.cn - - DOMAIN-SUFFIX,d0.sinaimg.cn - - DOMAIN-SUFFIX,d0.xcar.com.cn - - DOMAIN-SUFFIX,d00.sina.com.cn - - DOMAIN-SUFFIX,d1.showself.com - - DOMAIN-SUFFIX,d1.sina.com.cn - - DOMAIN-SUFFIX,d1.sinaimg.cn - - DOMAIN-SUFFIX,d1ad.com - - DOMAIN-SUFFIX,d1grtyyel8f1mh.cloudfront.net - - DOMAIN-SUFFIX,d1zgderxoe1a.cloudfront.net - - DOMAIN-SUFFIX,d2.sina.com.cn - - DOMAIN-SUFFIX,d2.sinaimg.cn - - DOMAIN-SUFFIX,d2.yiche.com - - DOMAIN-SUFFIX,d29qt51jeyi6xb.cloudfront.net - - DOMAIN-SUFFIX,d2qkpebv23oowx.cloudfront.net - - DOMAIN-SUFFIX,d3.sina.com.cn - - DOMAIN-SUFFIX,d3.sinaimg.cn - - DOMAIN-SUFFIX,d31qbv1cthcecs.cloudfront.net - - DOMAIN-SUFFIX,d36eyd5j1kt1m6.cloudfront.net - - DOMAIN-SUFFIX,d3f.houyi.baofeng.net - - DOMAIN-SUFFIX,d3g.qq.com - - DOMAIN-SUFFIX,d3v1lb83psg9di.cloudfront.net - - DOMAIN-SUFFIX,d4.sina.com.cn - - DOMAIN-SUFFIX,d5.sina.com.cn - - DOMAIN-SUFFIX,d520m.gzcl999.cn - - DOMAIN-SUFFIX,d5nxst8fruw4z.cloudfront.net - - DOMAIN-SUFFIX,d5p.de17a.com - - DOMAIN-SUFFIX,d6.sina.com.cn - - DOMAIN-SUFFIX,d6.sinaimg.cn - - DOMAIN-SUFFIX,d7.sina.com.cn - - DOMAIN-SUFFIX,d7.sinaimg.cn - - DOMAIN-SUFFIX,d77777777.com - - DOMAIN-SUFFIX,d8.sina.com.cn - - DOMAIN-SUFFIX,d8.sinaimg.cn - - DOMAIN-SUFFIX,d8.zedo.com - - DOMAIN-SUFFIX,d8360.com - - DOMAIN-SUFFIX,d8885.com - - DOMAIN-SUFFIX,d9.sina.com.cn - - DOMAIN-SUFFIX,daa.shuzilm.cn - - DOMAIN-SUFFIX,dacash.streamplay.to - - DOMAIN-SUFFIX,dadjia.com - - DOMAIN-SUFFIX,dads.new.digg.com - - DOMAIN-SUFFIX,dafahao.com - - DOMAIN-SUFFIX,dafahao.org - - DOMAIN-SUFFIX,dafapromo.com - - DOMAIN-SUFFIX,dahanedu.com - - DOMAIN-SUFFIX,dai.shuzilm.cn - - DOMAIN-SUFFIX,dailydeals.amarillo.com - - DOMAIN-SUFFIX,dailydeals.augustachronicle.com - - DOMAIN-SUFFIX,dailydeals.brainerddispatch.com - - DOMAIN-SUFFIX,dailydeals.lubbockonline.com - - DOMAIN-SUFFIX,dailydeals.onlineathens.com - - DOMAIN-SUFFIX,dailydeals.savannahnow.com - - DOMAIN-SUFFIX,dailylog.storm.baofeng.com - - DOMAIN-SUFFIX,dailyvideo.securejoin.com - - DOMAIN-SUFFIX,daima.23yy.com - - DOMAIN-SUFFIX,daima.chazidian.com - - DOMAIN-SUFFIX,daima.diaoben.net - - DOMAIN-SUFFIX,daima.dsxdn.com - - DOMAIN-SUFFIX,daima.huoche.net - - DOMAIN-SUFFIX,daima.ijq.tv - - DOMAIN-SUFFIX,daima.mubite.cn - - DOMAIN-SUFFIX,daima.youbian.com - - DOMAIN-SUFFIX,daima123.cc - - DOMAIN-SUFFIX,dairuqi.com - - DOMAIN-SUFFIX,daitdai.com - - DOMAIN-SUFFIX,dajean.com - - DOMAIN-SUFFIX,dajiyuan.com - - DOMAIN-SUFFIX,dajiyuan.org - - DOMAIN-SUFFIX,dalianhengtai.com - - DOMAIN-SUFFIX,dandan11.top - - DOMAIN-SUFFIX,dandan13.top - - DOMAIN-SUFFIX,dandan15.top - - DOMAIN-SUFFIX,danpinwu.com - - DOMAIN-SUFFIX,dante2007.com - - DOMAIN-SUFFIX,daohang.114so.cn - - DOMAIN-SUFFIX,daoyoudao.com - - DOMAIN-SUFFIX,dap.pagechoice.net - - DOMAIN-SUFFIX,dart.clearchannel.com - - DOMAIN-SUFFIX,dashet.com - - DOMAIN-SUFFIX,data.3975.com - - DOMAIN-SUFFIX,data.ad-score.com - - DOMAIN-SUFFIX,data.apn.co.nz - - DOMAIN-SUFFIX,data.danmu.baofeng.com - - DOMAIN-SUFFIX,data.doodlemobile.com - - DOMAIN-SUFFIX,data.gosquared.com - - DOMAIN-SUFFIX,data.mistat.xiaomi.com - - DOMAIN-SUFFIX,data.neuroxmedia.com - - DOMAIN-SUFFIX,data2.doodlemobile.com - - DOMAIN-SUFFIX,data2.gosquared.com - - DOMAIN-SUFFIX,databank.air.yoyi.com.cn - - DOMAIN-SUFFIX,databank.yoyi.com.cn - - DOMAIN-SUFFIX,datacapture.serving-sys.com - - DOMAIN-SUFFIX,datafastguru.info - - DOMAIN-SUFFIX,data-news.cdn.cootekservice.com - - DOMAIN-SUFFIX,data-pic.cdn.cootekservice.com - - DOMAIN-SUFFIX,datax.baidu.com - - DOMAIN-SUFFIX,datouniao.com - - DOMAIN-SUFFIX,dawwx.com - - DOMAIN-SUFFIX,day66.com - - DOMAIN-SUFFIX,dazhantai.com - - DOMAIN-SUFFIX,dazhonghua.cn - - DOMAIN-SUFFIX,db1.fuz.cc - - DOMAIN-SUFFIX,db2.fuz.cc - - DOMAIN-SUFFIX,dbam.dashbida.com - - DOMAIN-SUFFIX,dbncp.com - - DOMAIN-SUFFIX,dbregistration.cuteftp.com - - DOMAIN-SUFFIX,dbwmjj.com - - DOMAIN-SUFFIX,dc.cp21.ott.cibntv.net - - DOMAIN-SUFFIX,dc.csdn.net - - DOMAIN-SUFFIX,dc.liuliang100.com - - DOMAIN-SUFFIX,dc.meitustat.com - - DOMAIN-SUFFIX,dc.vmoters.com - - DOMAIN-SUFFIX,dc.xhct66.com - - DOMAIN-SUFFIX,dc2.csdn.net - - DOMAIN-SUFFIX,d-cache.microad-cn.com - - DOMAIN-SUFFIX,dcad.watersoul.com - - DOMAIN-SUFFIX,dcads.sina.com.cn - - DOMAIN-SUFFIX,dcapps.disney.go.com - - DOMAIN-SUFFIX,dcjs.cig.com.cn - - DOMAIN-SUFFIX,dcw.hdswgc.com - - DOMAIN-SUFFIX,dd.70yst.com - - DOMAIN-SUFFIX,dd.dante2007.com - - DOMAIN-SUFFIX,dd.iask.cn - - DOMAIN-SUFFIX,dd.iaskgo.com - - DOMAIN-SUFFIX,dd.mangofortune.net - - DOMAIN-SUFFIX,dd.wx16999.com - - DOMAIN-SUFFIX,ddanq.com - - DOMAIN-SUFFIX,ddapp.cn - - DOMAIN-SUFFIX,ddd.haodizhi666.com - - DOMAIN-SUFFIX,ddd.yuyouge.com - - DOMAIN-SUFFIX,ddg1277.com - - DOMAIN-SUFFIX,ddhtek.com - - DOMAIN-SUFFIX,ddkkrrla.m.qxs.la - - DOMAIN-SUFFIX,ddomm.com - - DOMAIN-SUFFIX,ddpxhq.cn - - DOMAIN-SUFFIX,ddrrccck.m.qxs.la - - DOMAIN-SUFFIX,de.as.cp61.ott.cibntv.net - - DOMAIN-SUFFIX,de.dzribao.com - - DOMAIN-SUFFIX,de.ioam.de - - DOMAIN-SUFFIX,de.pandora.xiaomi.com - - DOMAIN-SUFFIX,deals.ledgertranscript.com - - DOMAIN-SUFFIX,debugreport.mobiledissector.com - - DOMAIN-SUFFIX,dejing.laobanfa.com - - DOMAIN-SUFFIX,deletemer.online - - DOMAIN-SUFFIX,deliver.kuwo.cn - - DOMAIN-SUFFIX,delivery.maihehd.com - - DOMAIN-SUFFIX,delivery.playallvideos.com - - DOMAIN-SUFFIX,delivery.porn.com - - DOMAIN-SUFFIX,delivery.wasu.cn - - DOMAIN-SUFFIX,delivery-pc.wasu.cn - - DOMAIN-SUFFIX,demo.jointreport-switch.com - - DOMAIN-SUFFIX,desk.cmix.org - - DOMAIN-SUFFIX,detuns.com - - DOMAIN-SUFFIX,dev.tg.youxi.com - - DOMAIN-SUFFIX,devs.data.mob.com - - DOMAIN-SUFFIX,dezfu.com - - DOMAIN-SUFFIX,df3n43m.com - - DOMAIN-SUFFIX,df77.com - - DOMAIN-SUFFIX,dfad.dfdaily.com - - DOMAIN-SUFFIX,dfc1.benbaisteel.com - - DOMAIN-SUFFIX,dfp.suning.com - - DOMAIN-SUFFIX,dfx.shhuixiangwuliu.com - - DOMAIN-SUFFIX,dfx.vnnv777.cn - - DOMAIN-SUFFIX,dgfggy.com - - DOMAIN-SUFFIX,dgpzx.com - - DOMAIN-SUFFIX,dh.holaworld.cn - - DOMAIN-SUFFIX,dhxyzx.cn - - DOMAIN-SUFFIX,diag-vd.gridsumdissector.com - - DOMAIN-SUFFIX,diag-wd.gridsumdissector.com - - DOMAIN-SUFFIX,dialer.cdn.cootekservice.com - - DOMAIN-SUFFIX,dianjoy.com - - DOMAIN-SUFFIX,dianru.com - - DOMAIN-SUFFIX,diaojiaoji168.com - - DOMAIN-SUFFIX,diaopic.14bobo.com - - DOMAIN-SUFFIX,diediao.com - - DOMAIN-SUFFIX,difnxm.cn - - DOMAIN-SUFFIX,digdug.divxnetworks.com - - DOMAIN-SUFFIX,dimg1.sz.net.cn - - DOMAIN-SUFFIX,dingon.com.cn - - DOMAIN-SUFFIX,dip.pyangzi.com - - DOMAIN-SUFFIX,dip.szhyzkj.com - - DOMAIN-SUFFIX,dip.wl963.com - - DOMAIN-SUFFIX,dip.zgydjr.com - - DOMAIN-SUFFIX,dipan.com - - DOMAIN-SUFFIX,directrev.com - - DOMAIN-SUFFIX,dis.crieto.com - - DOMAIN-SUFFIX,dis.criteo.com - - DOMAIN-SUFFIX,dis.us.criteo.com - - DOMAIN-SUFFIX,discuz.gtimg.cn - - DOMAIN-SUFFIX,dispenser-rtb.sape.ru - - DOMAIN-SUFFIX,display.360totalsecurity.com - - DOMAIN-SUFFIX,display.ad.daum.net - - DOMAIN-SUFFIX,display.adhudong.com - - DOMAIN-SUFFIX,display.digitalriver.com - - DOMAIN-SUFFIX,display.superbay.net - - DOMAIN-SUFFIX,disqusads.com - - DOMAIN-SUFFIX,distf.kankan.com - - DOMAIN-SUFFIX,diyxjd.com - - DOMAIN-SUFFIX,djs.baomihua.com - - DOMAIN-SUFFIX,dkdlsj.com - - DOMAIN-SUFFIX,dkeyn.com - - DOMAIN-SUFFIX,dl.2345.com - - DOMAIN-SUFFIX,dl.360safe.com - - DOMAIN-SUFFIX,dl.9xu.com - - DOMAIN-SUFFIX,dl.client.baidu.com - - DOMAIN-SUFFIX,dl.cm.ksmobile.com - - DOMAIN-SUFFIX,dl.eduancm.com - - DOMAIN-SUFFIX,dl.img80.net - - DOMAIN-SUFFIX,dl.jianshunrui.com - - DOMAIN-SUFFIX,dl.kinbest.cn - - DOMAIN-SUFFIX,dl.kjava.sina.cn - - DOMAIN-SUFFIX,dl.mbsea.com - - DOMAIN-SUFFIX,dl.nx5.com - - DOMAIN-SUFFIX,dl.ops.baidu.com - - DOMAIN-SUFFIX,dl.sybspools.com - - DOMAIN-SUFFIX,dl.union.ijinshan.com - - DOMAIN-SUFFIX,dl.uu.cc - - DOMAIN-SUFFIX,dl.wan.sogoucdn.com - - DOMAIN-SUFFIX,dl.xzqxzs.com - - DOMAIN-SUFFIX,dl.youjia2016.com - - DOMAIN-SUFFIX,dl1sw.baidu.com - - DOMAIN-SUFFIX,dl2.bav.baidu.com - - DOMAIN-SUFFIX,dleke.com - - DOMAIN-SUFFIX,dlimg.lovfp.com - - DOMAIN-SUFFIX,dload.qd.qingting.fm - - DOMAIN-SUFFIX,dlpifu.com - - DOMAIN-SUFFIX,dlrijiaele.com - - DOMAIN-SUFFIX,dlsw.baidu.com - - DOMAIN-SUFFIX,dlsw.br.baidu.com - - DOMAIN-SUFFIX,dl-vip.bav.baidu.com - - DOMAIN-SUFFIX,dl-vip.pcfaster.baidu.co.th - - DOMAIN-SUFFIX,dlzjdesign.com - - DOMAIN-SUFFIX,dm.388g.cc - - DOMAIN-SUFFIX,dm.51okc.com - - DOMAIN-SUFFIX,dm.92to.com - - DOMAIN-SUFFIX,dm.aizhan.com - - DOMAIN-SUFFIX,dm.bytedance.com - - DOMAIN-SUFFIX,dm.chalook.net - - DOMAIN-SUFFIX,dm.fsyzcs.com - - DOMAIN-SUFFIX,dm.gbeik.com - - DOMAIN-SUFFIX,dm.jb51.net - - DOMAIN-SUFFIX,dm.jinshasi.cn - - DOMAIN-SUFFIX,dm.jsyst.cn - - DOMAIN-SUFFIX,dm.jy135.com - - DOMAIN-SUFFIX,dm.ppzuowen.com - - DOMAIN-SUFFIX,dm.pstatp.com - - DOMAIN-SUFFIX,dm.pw0.cn - - DOMAIN-SUFFIX,dm.riji.cn - - DOMAIN-SUFFIX,dm.sanwen.net - - DOMAIN-SUFFIX,dm.sanwen8.com - - DOMAIN-SUFFIX,dm.sb580.com - - DOMAIN-SUFFIX,dm.toutiao.com - - DOMAIN-SUFFIX,dm.ws8.org - - DOMAIN-SUFFIX,dm.yjbys.com - - DOMAIN-SUFFIX,dm1.tom61.com - - DOMAIN-SUFFIX,dm50.jkyd.net - - DOMAIN-SUFFIX,dm50.yxlady.com - - DOMAIN-SUFFIX,dmacore.kejet.com - - DOMAIN-SUFFIX,dmacore.kejet.net - - DOMAIN-SUFFIX,dmg.digitaltarget.ru - - DOMAIN-SUFFIX,dmp.kejet.net - - DOMAIN-SUFFIX,dmp.sina.cn - - DOMAIN-SUFFIX,dmpclick.deliver.ifeng.com - - DOMAIN-SUFFIX,dmrtb.com - - DOMAIN-SUFFIX,dmt.qcrx.cn - - DOMAIN-SUFFIX,dmtrck.com - - DOMAIN-SUFFIX,dn3.ixinwei.com - - DOMAIN-SUFFIX,dn7788.com - - DOMAIN-SUFFIX,dn-growing.qbox.me - - DOMAIN-SUFFIX,dnvus.com - - DOMAIN-SUFFIX,do.lymstsc.com - - DOMAIN-SUFFIX,do69ifsly4.me - - DOMAIN-SUFFIX,doc.go.sohu.com - - DOMAIN-SUFFIX,dol.deliver.ifeng.com - - DOMAIN-SUFFIX,dolphin.deliver.ifeng.com - - DOMAIN-SUFFIX,dolphin.ftimg.net - - DOMAIN-SUFFIX,dolphin4.ftimg.net - - DOMAIN-SUFFIX,domed.shenbimall.com - - DOMAIN-SUFFIX,do-not-tracker.org - - DOMAIN-SUFFIX,dontblockme.modaco.com - - DOMAIN-SUFFIX,dopa.com - - DOMAIN-SUFFIX,dot.eporner.com - - DOMAIN-SUFFIX,dot2.eporner.com - - DOMAIN-SUFFIX,dotmore.com.tw - - DOMAIN-SUFFIX,dou777.com - - DOMAIN-SUFFIX,doubleplay-conf-yql.media.yahoo.com - - DOMAIN-SUFFIX,doubleverify.com - - DOMAIN-SUFFIX,doudao.cn - - DOMAIN-SUFFIX,doudouguo.com - - DOMAIN-SUFFIX,dougou88.com - - DOMAIN-SUFFIX,doumob.com - - DOMAIN-SUFFIX,down.360safe.com - - DOMAIN-SUFFIX,down.91wangmeng.com - - DOMAIN-SUFFIX,down.bugeyu.com - - DOMAIN-SUFFIX,down.dashendown.com - - DOMAIN-SUFFIX,down.diannaodian.com - - DOMAIN-SUFFIX,down.laomaotao.net - - DOMAIN-SUFFIX,down.winads.cn - - DOMAIN-SUFFIX,down.winbaicai.com - - DOMAIN-SUFFIX,down.xiazaidc.com - - DOMAIN-SUFFIX,down.xiazaiyuan.net - - DOMAIN-SUFFIX,downlaod.xiaocen.com - - DOMAIN-SUFFIX,download.123cw.cn - - DOMAIN-SUFFIX,download.2345.com - - DOMAIN-SUFFIX,download.350.com - - DOMAIN-SUFFIX,download.bav.baidu.com - - DOMAIN-SUFFIX,download.coolguang.com - - DOMAIN-SUFFIX,download.fuyuncc.com - - DOMAIN-SUFFIX,download.mediaget.com - - DOMAIN-SUFFIX,download.qianka.com - - DOMAIN-SUFFIX,download.sd.baidu.com - - DOMAIN-SUFFIX,download.sj.qq.com - - DOMAIN-SUFFIX,download.zhushou.sogou.com - - DOMAIN-SUFFIX,download3.123cw.cn - - DOMAIN-SUFFIX,downloada.dewmobile.net - - DOMAIN-SUFFIX,downloadb.dewmobile.net - - DOMAIN-SUFFIX,downmobile.kugou.com - - DOMAIN-SUFFIX,dp.559.cc - - DOMAIN-SUFFIX,dpm.demdex.net - - DOMAIN-SUFFIX,dps.499.cn - - DOMAIN-SUFFIX,dps.shouji56.com - - DOMAIN-SUFFIX,dps.wtdtjs.com - - DOMAIN-SUFFIX,dpvc.39.net - - DOMAIN-SUFFIX,dpvc1.qqyy.com - - DOMAIN-SUFFIX,dpvc2.qqyy.com - - DOMAIN-SUFFIX,dpvchos.qqyy.com - - DOMAIN-SUFFIX,dpvcimg.qqyy.com - - DOMAIN-SUFFIX,dqq.lnfund.org.cn - - DOMAIN-SUFFIX,dqsft.com - - DOMAIN-SUFFIX,dr.holaworld.cn - - DOMAIN-SUFFIX,dragoncent.com - - DOMAIN-SUFFIX,drd.hauchi.com.tw - - DOMAIN-SUFFIX,drdj.m.gxwztv.com - - DOMAIN-SUFFIX,drdwy.com - - DOMAIN-SUFFIX,dreamfull.cn - - DOMAIN-SUFFIX,dressimage.img-cn-beijing.aliyuncs.com - - DOMAIN-SUFFIX,drlsf.com - - DOMAIN-SUFFIX,drm.cmgame.com - - DOMAIN-SUFFIX,drmcmm.baidu.com - - DOMAIN-SUFFIX,drsw.m.yuyouge.com - - DOMAIN-SUFFIX,drvmy.ats68.cn - - DOMAIN-SUFFIX,drxrc.com - - DOMAIN-SUFFIX,ds.jlbksy.com - - DOMAIN-SUFFIX,ds.serving-sys.com - - DOMAIN-SUFFIX,dsadas.hydp188.com - - DOMAIN-SUFFIX,dsaeerf.com - - DOMAIN-SUFFIX,dshrx.com - - DOMAIN-SUFFIX,dsjsee.dqgpb.com - - DOMAIN-SUFFIX,ds-ll.serving-sys.com - - DOMAIN-SUFFIX,dsp.adfarm1.adition.com - - DOMAIN-SUFFIX,dsp.com - - DOMAIN-SUFFIX,dsp.hypers.com.cn - - DOMAIN-SUFFIX,dsp.pro.cn - - DOMAIN-SUFFIX,dsp.send.microad-cn.com - - DOMAIN-SUFFIX,dsp.simba.taobao.com - - DOMAIN-SUFFIX,dsp.toutiao.com - - DOMAIN-SUFFIX,dsp.youdao.com - - DOMAIN-SUFFIX,ds-pc.admsger.com - - DOMAIN-SUFFIX,dsp-click.youdao.com - - DOMAIN-SUFFIX,dsp-impr.youdao.com - - DOMAIN-SUFFIX,dsp-impr2.youdao.com - - DOMAIN-SUFFIX,dspmnt.autohome.com.cn - - DOMAIN-SUFFIX,dspmy.ge95.com - - DOMAIN-SUFFIX,dspserver.ad.cmvideo.cn - - DOMAIN-SUFFIX,ds-pv.iqu-operation.com - - DOMAIN-SUFFIX,dsxdn.com - - DOMAIN-SUFFIX,dt.adsafeprotected.com - - DOMAIN-SUFFIX,d-track.send.microad-cn.com - - DOMAIN-SUFFIX,dtrk.slimcdn.com - - DOMAIN-SUFFIX,dts.akamai.startappexchange.com - - DOMAIN-SUFFIX,duanat.com - - DOMAIN-SUFFIX,duapp.com - - DOMAIN-SUFFIX,duapps.com - - DOMAIN-SUFFIX,dugbvb.com - - DOMAIN-SUFFIX,dugesheying.com - - DOMAIN-SUFFIX,duiwai.baidu.com - - DOMAIN-SUFFIX,dumedia.ru - - DOMAIN-SUFFIX,duoyidd.com - - DOMAIN-SUFFIX,dushimj.com - - DOMAIN-SUFFIX,duusuu.com - - DOMAIN-SUFFIX,duyihu.net - - DOMAIN-SUFFIX,dv8c1t.cn - - DOMAIN-SUFFIX,dvb.pandora.xiaomi.com - - DOMAIN-SUFFIX,dvr8.com - - DOMAIN-SUFFIX,dvs.china.com - - DOMAIN-SUFFIX,dvsend.china.com - - DOMAIN-SUFFIX,dvser.china.com - - DOMAIN-SUFFIX,dvser02.china.com - - DOMAIN-SUFFIX,dvx-android.0.0.0.0.cn - - DOMAIN-SUFFIX,dw.koudaibl.com - - DOMAIN-SUFFIX,dw.xcar.com.cn - - DOMAIN-SUFFIX,dw998.com - - DOMAIN-SUFFIX,dwa.okwan.cn - - DOMAIN-SUFFIX,dx1200.com - - DOMAIN-SUFFIX,dxp.baidu.com - - DOMAIN-SUFFIX,dxpmedia.com - - DOMAIN-SUFFIX,dxprla.m.qxs.la - - DOMAIN-SUFFIX,dxssiyi.com - - DOMAIN-SUFFIX,dyb.jdcbuy.com - - DOMAIN-SUFFIX,dydab.com - - DOMAIN-SUFFIX,dyn.tnaflix.com - - DOMAIN-SUFFIX,dynamic.aol.com - - DOMAIN-SUFFIX,dynamic.zol.com.cn - - DOMAIN-SUFFIX,dz2017.zdzxyplyt.com - - DOMAIN-SUFFIX,dzais.com - - DOMAIN-SUFFIX,dzisou.com - - DOMAIN-SUFFIX,dzjzg.com - - DOMAIN-SUFFIX,dzl.baidu.com - - DOMAIN-SUFFIX,dzz.wankeedu.com - - DOMAIN-SUFFIX,e.0.0.0.0.cn - - DOMAIN-SUFFIX,e.0.0.0.0.com.cn - - DOMAIN-SUFFIX,e.027blzs.com - - DOMAIN-SUFFIX,e.0531mnk.net - - DOMAIN-SUFFIX,e.1919388.net - - DOMAIN-SUFFIX,e.28487.net - - DOMAIN-SUFFIX,e.51xmgys.com - - DOMAIN-SUFFIX,e.91.com - - DOMAIN-SUFFIX,e.aa985.cn - - DOMAIN-SUFFIX,e.acaog.com - - DOMAIN-SUFFIX,e.acaox.com - - DOMAIN-SUFFIX,e.admin60.com - - DOMAIN-SUFFIX,e.afvfe.cn - - DOMAIN-SUFFIX,e.anmeilai.net - - DOMAIN-SUFFIX,e.apxyz.com - - DOMAIN-SUFFIX,e.baidu.com - - DOMAIN-SUFFIX,e.bapkt.com - - DOMAIN-SUFFIX,e.bbvjs.com - - DOMAIN-SUFFIX,e.bentengcn.com - - DOMAIN-SUFFIX,e.bokanedu.net - - DOMAIN-SUFFIX,e.bsnnk.com - - DOMAIN-SUFFIX,e.bvoer.com - - DOMAIN-SUFFIX,e.cbeif.com - - DOMAIN-SUFFIX,e.ccunf.com - - DOMAIN-SUFFIX,e.cdfzcz.com - - DOMAIN-SUFFIX,e.chfuw.com - - DOMAIN-SUFFIX,e.cjieh.com - - DOMAIN-SUFFIX,e.ckikq.com - - DOMAIN-SUFFIX,e.cn-3drp.com - - DOMAIN-SUFFIX,e.codlw.com - - DOMAIN-SUFFIX,e.coenr.com - - DOMAIN-SUFFIX,e.crashlytics.com - - DOMAIN-SUFFIX,e.cuomm.com - - DOMAIN-SUFFIX,e.czggcj.com - - DOMAIN-SUFFIX,e.daishuxy.com - - DOMAIN-SUFFIX,e.danrs.com - - DOMAIN-SUFFIX,e.deimm.com - - DOMAIN-SUFFIX,e.diogv.com - - DOMAIN-SUFFIX,e.diupp.com - - DOMAIN-SUFFIX,e.dnfeu.com - - DOMAIN-SUFFIX,e.dsjre.com - - DOMAIN-SUFFIX,e.dunmm.com - - DOMAIN-SUFFIX,e.dxmci.com - - DOMAIN-SUFFIX,e.dzairen.com - - DOMAIN-SUFFIX,e.e7001.com - - DOMAIN-SUFFIX,e.e70123.com - - DOMAIN-SUFFIX,e.ehxyz.com - - DOMAIN-SUFFIX,e.emgwq.com - - DOMAIN-SUFFIX,e.enjuk.com - - DOMAIN-SUFFIX,e.ennmt.com - - DOMAIN-SUFFIX,e.fbaix.com - - DOMAIN-SUFFIX,e.fbaot.com - - DOMAIN-SUFFIX,e.fimky.com - - DOMAIN-SUFFIX,e.fkkse.com - - DOMAIN-SUFFIX,e.fkogs.com - - DOMAIN-SUFFIX,e.focuscat.com - - DOMAIN-SUFFIX,e.fstaw.com - - DOMAIN-SUFFIX,e.fwjoi.com - - DOMAIN-SUFFIX,e.fzyda.com - - DOMAIN-SUFFIX,e.gbieg.com - - DOMAIN-SUFFIX,e.gglay.com - - DOMAIN-SUFFIX,e.gxjfh.com - - DOMAIN-SUFFIX,e.gxkyl.com - - DOMAIN-SUFFIX,e.harbinbaojia.net - - DOMAIN-SUFFIX,e.hellomingpian.com - - DOMAIN-SUFFIX,e.hgrqp.com - - DOMAIN-SUFFIX,e.hissq.com - - DOMAIN-SUFFIX,e.hjryl.com - - DOMAIN-SUFFIX,e.hk7799.net - - DOMAIN-SUFFIX,e.hkmqp.com - - DOMAIN-SUFFIX,e.hmhqp.com - - DOMAIN-SUFFIX,e.hogyp.com - - DOMAIN-SUFFIX,e.hpzyl.com - - DOMAIN-SUFFIX,e.htper.com - - DOMAIN-SUFFIX,e.huaas.com - - DOMAIN-SUFFIX,e.hunpp.com - - DOMAIN-SUFFIX,e.huoas.com - - DOMAIN-SUFFIX,e.hurnt.com - - DOMAIN-SUFFIX,e.hyzui.com - - DOMAIN-SUFFIX,e.icyrd.com - - DOMAIN-SUFFIX,e.iierq.com - - DOMAIN-SUFFIX,e.infvb.com - - DOMAIN-SUFFIX,e.irauz.com - - DOMAIN-SUFFIX,e.irkuj.com - - DOMAIN-SUFFIX,e.iruad.com - - DOMAIN-SUFFIX,e.ishowms.com - - DOMAIN-SUFFIX,e.jdaot.com - - DOMAIN-SUFFIX,e.jgkto.com - - DOMAIN-SUFFIX,e.jiaas.com - - DOMAIN-SUFFIX,e.jiirz.com - - DOMAIN-SUFFIX,e.jioeg.com - - DOMAIN-SUFFIX,e.jkert.com - - DOMAIN-SUFFIX,e.jlkja.com - - DOMAIN-SUFFIX,e.jltdbyq.com - - DOMAIN-SUFFIX,e.jnsdkjzs.com - - DOMAIN-SUFFIX,e.joyxv.com - - DOMAIN-SUFFIX,e.juyzr.com - - DOMAIN-SUFFIX,e.jwiyr.com - - DOMAIN-SUFFIX,e.jxxiangchu.com - - DOMAIN-SUFFIX,e.kcooy.com - - DOMAIN-SUFFIX,e.kewro.com - - DOMAIN-SUFFIX,e.khuoy.com - - DOMAIN-SUFFIX,e.kjfhe.com - - DOMAIN-SUFFIX,e.kjhfy.com - - DOMAIN-SUFFIX,e.kl6636.net - - DOMAIN-SUFFIX,e.ksttwz.com - - DOMAIN-SUFFIX,e.kunpp.com - - DOMAIN-SUFFIX,e.kwjkd.com - - DOMAIN-SUFFIX,e.kxhie.com - - DOMAIN-SUFFIX,e.lancedu.com - - DOMAIN-SUFFIX,e.lfdydk.com - - DOMAIN-SUFFIX,e.lovezhishou.com - - DOMAIN-SUFFIX,e.lyjz001.com - - DOMAIN-SUFFIX,e.lzytt.com - - DOMAIN-SUFFIX,e.md0z4dh.com - - DOMAIN-SUFFIX,e.meizhuanghe.com - - DOMAIN-SUFFIX,e.miaoxinqipei.com - - DOMAIN-SUFFIX,e.mightiger.net - - DOMAIN-SUFFIX,e.miiuv.com - - DOMAIN-SUFFIX,e.mmkvi.com - - DOMAIN-SUFFIX,e.mozist.com - - DOMAIN-SUFFIX,e.mqgpo.com - - DOMAIN-SUFFIX,e.mrsasharingspace.com - - DOMAIN-SUFFIX,e.mrtuo.com - - DOMAIN-SUFFIX,e.mushizhubao.com - - DOMAIN-SUFFIX,e.nduop.com - - DOMAIN-SUFFIX,e.neijh.com - - DOMAIN-SUFFIX,e.nejup.com - - DOMAIN-SUFFIX,e.nernv.com - - DOMAIN-SUFFIX,e.nexac.com - - DOMAIN-SUFFIX,e.nfkos.com - - DOMAIN-SUFFIX,e.nmtouzi.com - - DOMAIN-SUFFIX,e.nnfiy.com - - DOMAIN-SUFFIX,e.nwxzs.com - - DOMAIN-SUFFIX,e.nxypz.com - - DOMAIN-SUFFIX,e.oesnw.com - - DOMAIN-SUFFIX,e.okfhn.com - - DOMAIN-SUFFIX,e.opqsr.com - - DOMAIN-SUFFIX,e.oyrim.com - - DOMAIN-SUFFIX,e.pbino.com - - DOMAIN-SUFFIX,e.picbr.com - - DOMAIN-SUFFIX,e.plerv.com - - DOMAIN-SUFFIX,e.pomkl.com - - DOMAIN-SUFFIX,e.poonscn.com - - DOMAIN-SUFFIX,e.pubbirdf.com - - DOMAIN-SUFFIX,e.puooi.com - - DOMAIN-SUFFIX,e.pwjhg.com - - DOMAIN-SUFFIX,e.pyerc.com - - DOMAIN-SUFFIX,e.qiaoyuwang.com - - DOMAIN-SUFFIX,e.qingzhencai.net - - DOMAIN-SUFFIX,e.qiyunmuye.com - - DOMAIN-SUFFIX,e.qsove.com - - DOMAIN-SUFFIX,e.qvxyz.com - - DOMAIN-SUFFIX,e.qxfly.com - - DOMAIN-SUFFIX,e.resmv.com - - DOMAIN-SUFFIX,e.ricpt.com - - DOMAIN-SUFFIX,e.rmwdn.com - - DOMAIN-SUFFIX,e.romgv.com - - DOMAIN-SUFFIX,e.sanitwealth.com - - DOMAIN-SUFFIX,e.shenyunkeji.com - - DOMAIN-SUFFIX,e.sjuqc.com - - DOMAIN-SUFFIX,e.sosjyx.com - - DOMAIN-SUFFIX,e.srrux.com - - DOMAIN-SUFFIX,e.suehy.com - - DOMAIN-SUFFIX,e.szqifu.com - - DOMAIN-SUFFIX,e.t71q.com - - DOMAIN-SUFFIX,e.tdtsd.com - - DOMAIN-SUFFIX,e.tiantianedu.net - - DOMAIN-SUFFIX,e.tick0.com - - DOMAIN-SUFFIX,e.tiojk.com - - DOMAIN-SUFFIX,e.tuoaa.com - - DOMAIN-SUFFIX,e.ueram.com - - DOMAIN-SUFFIX,e.uissm.com - - DOMAIN-SUFFIX,e.v02u9.cn - - DOMAIN-SUFFIX,e.vaxyz.com - - DOMAIN-SUFFIX,e.vbaiu.com - - DOMAIN-SUFFIX,e.vouky.com - - DOMAIN-SUFFIX,e.vvocm.com - - DOMAIN-SUFFIX,e.wcjup.com - - DOMAIN-SUFFIX,e.weixingshexiangji.net - - DOMAIN-SUFFIX,e.wikigifth.com - - DOMAIN-SUFFIX,e.wjhehaofc.com - - DOMAIN-SUFFIX,e.wkjhd.com - - DOMAIN-SUFFIX,e.wnxcg.com - - DOMAIN-SUFFIX,e.wonwg.com - - DOMAIN-SUFFIX,e.wsxxu.com - - DOMAIN-SUFFIX,e.x.cn.xtgreat.com - - DOMAIN-SUFFIX,e.xdkje.com - - DOMAIN-SUFFIX,e.xeihy.com - - DOMAIN-SUFFIX,e.xetvb.com - - DOMAIN-SUFFIX,e.xiangchim0.com - - DOMAIN-SUFFIX,e.xikdn.com - - DOMAIN-SUFFIX,e.xkqpco.com.com - - DOMAIN-SUFFIX,e.xlsschina15.net - - DOMAIN-SUFFIX,e.xmgysweb.com - - DOMAIN-SUFFIX,e.xpjis.com - - DOMAIN-SUFFIX,e.xxkio.com - - DOMAIN-SUFFIX,e.yageben.com - - DOMAIN-SUFFIX,e.yangjingbang.net - - DOMAIN-SUFFIX,e.yerpt.com - - DOMAIN-SUFFIX,e.yicang8.com - - DOMAIN-SUFFIX,e.yidulive.net - - DOMAIN-SUFFIX,e.yingchengtou.com - - DOMAIN-SUFFIX,e.ynnke.com - - DOMAIN-SUFFIX,e.yoiur.com - - DOMAIN-SUFFIX,e.youweiprint.com - - DOMAIN-SUFFIX,e.ysdangan.com - - DOMAIN-SUFFIX,e.ysdhe.com - - DOMAIN-SUFFIX,e.yuxyz.com - - DOMAIN-SUFFIX,e.ywbwsm.com - - DOMAIN-SUFFIX,e.yycqc.com - - DOMAIN-SUFFIX,e.yyeks.com - - DOMAIN-SUFFIX,e.yyjhf.com - - DOMAIN-SUFFIX,e.zabxb.com - - DOMAIN-SUFFIX,e.zhuyuanp.club - - DOMAIN-SUFFIX,e.zhuyuanp.shop - - DOMAIN-SUFFIX,e.zhuyuanp.top - - DOMAIN-SUFFIX,e.zjkdaikuan.com - - DOMAIN-SUFFIX,e.zkwsdf.com - - DOMAIN-SUFFIX,e.zunss.com - - DOMAIN-SUFFIX,e7001.com - - DOMAIN-SUFFIX,e7002.com - - DOMAIN-SUFFIX,e7009.com - - DOMAIN-SUFFIX,e701.net - - DOMAIN-SUFFIX,e70123.com - - DOMAIN-SUFFIX,e7015.com - - DOMAIN-SUFFIX,e704.net - - DOMAIN-SUFFIX,e705.net - - DOMAIN-SUFFIX,e706.net - - DOMAIN-SUFFIX,e708.net - - DOMAIN-SUFFIX,e719.net - - DOMAIN-SUFFIX,e9377f.com - - DOMAIN-SUFFIX,eacash.streamplay.to - - DOMAIN-SUFFIX,eap.big5.enorth.com.cn - - DOMAIN-SUFFIX,eap.enorth.com.cn - - DOMAIN-SUFFIX,easyrecoverychina.com - - DOMAIN-SUFFIX,ebook.res.meizu.com - - DOMAIN-SUFFIX,ebp.renren.com - - DOMAIN-SUFFIX,ec.kejet.net - - DOMAIN-SUFFIX,eclick.120ask.com - - DOMAIN-SUFFIX,eclick.360doc.com - - DOMAIN-SUFFIX,eclick.baidu.com - - DOMAIN-SUFFIX,eclkspbn.com - - DOMAIN-SUFFIX,ecma.bdimg.com - - DOMAIN-SUFFIX,ecmb.bdimg.com - - DOMAIN-SUFFIX,ecmc.bdimg.com - - DOMAIN-SUFFIX,ecuc123.net - - DOMAIN-SUFFIX,ed.aijielang.cn - - DOMAIN-SUFFIX,ed.sczhilong.cn - - DOMAIN-SUFFIX,eddong.com - - DOMAIN-SUFFIX,edesf.xyzxmark.cn - - DOMAIN-SUFFIX,edge.quantserve.com - - DOMAIN-SUFFIX,edge.sharethis.com - - DOMAIN-SUFFIX,edge.yunjiasu.com - - DOMAIN-SUFFIX,edigitalsurvey.com - - DOMAIN-SUFFIX,ediuschina.com - - DOMAIN-SUFFIX,edncui.net - - DOMAIN-SUFFIX,eduancm.com - - DOMAIN-SUFFIX,eduzzjy.com - - DOMAIN-SUFFIX,ee4kdushuba.com - - DOMAIN-SUFFIX,eee.eh39.co - - DOMAIN-SUFFIX,eee.kj78.org - - DOMAIN-SUFFIX,eee.ttyy888.co - - DOMAIN-SUFFIX,eeee500.com - - DOMAIN-SUFFIX,eezdx.erc.18183.com - - DOMAIN-SUFFIX,eff.inte.sogou.com - - DOMAIN-SUFFIX,effectivemeasure.com - - DOMAIN-SUFFIX,effectivemeasure.net - - DOMAIN-SUFFIX,ehd.baike.com - - DOMAIN-SUFFIX,ehxyz.com - - DOMAIN-SUFFIX,ein.51yingfa.com - - DOMAIN-SUFFIX,eiv.baidu.com - - DOMAIN-SUFFIX,ejzr.golden1.sogou.com - - DOMAIN-SUFFIX,ekeide.com - - DOMAIN-SUFFIX,eland.doublemax.net - - DOMAIN-SUFFIX,em.baidu.com - - DOMAIN-SUFFIX,emarbox.com - - DOMAIN-SUFFIX,emss.zjhim.com - - DOMAIN-SUFFIX,en.shenyun.com - - DOMAIN-SUFFIX,en.shenyun.org - - DOMAIN-SUFFIX,engine.lvehaisen.com - - DOMAIN-SUFFIX,engine.tuia.cn - - DOMAIN-SUFFIX,ent1.12584.cn - - DOMAIN-SUFFIX,entry.baidu.com - - DOMAIN-SUFFIX,e-p4p.163.com - - DOMAIN-SUFFIX,epernn.cn - - DOMAIN-SUFFIX,epochtimes.org - - DOMAIN-SUFFIX,epochweekly.com - - DOMAIN-SUFFIX,epowernetworktrackerimages.s3.amazonaws.com - - DOMAIN-SUFFIX,er.dlhygj.com - - DOMAIN-SUFFIX,erdoscs.com - - DOMAIN-SUFFIX,erebor.douban.com - - DOMAIN-SUFFIX,ereg.adobe.com - - DOMAIN-SUFFIX,ereg.wip3.adobe.com - - DOMAIN-SUFFIX,ers.baidu.com - - DOMAIN-SUFFIX,erwqw.zh1155.com - - DOMAIN-SUFFIX,erwr.ydjskvpd.com - - DOMAIN-SUFFIX,espn-ak.starwave.com - - DOMAIN-SUFFIX,esptj.com - - DOMAIN-SUFFIX,esrpxyahzna.bid - - DOMAIN-SUFFIX,eteun.cn - - DOMAIN-SUFFIX,ethod.gzgmjcx.com - - DOMAIN-SUFFIX,etl.xlmc.sandai.net - - DOMAIN-SUFFIX,etl.xlmc.sec.miui.com - - DOMAIN-SUFFIX,eu-gmtdmp.gd1.mookie1.com - - DOMAIN-SUFFIX,eum-appdynamics.com - - DOMAIN-SUFFIX,eus.rubiconproject.com - - DOMAIN-SUFFIX,euwidget.imshopping.com - - DOMAIN-SUFFIX,eva.ucas.com - - DOMAIN-SUFFIX,evefashion.cn - - DOMAIN-SUFFIX,event.ksosoft.com - - DOMAIN-SUFFIX,eventlog.hd.baofeng.com - - DOMAIN-SUFFIX,events.kalooga.com - - DOMAIN-SUFFIX,events.pingan.com - - DOMAIN-SUFFIX,events-api.outfit7.net - - DOMAIN-SUFFIX,eviltracker.net - - DOMAIN-SUFFIX,ew16d.package12.com - - DOMAIN-SUFFIX,ex.mobmore.com - - DOMAIN-SUFFIX,ex.puata.info - - DOMAIN-SUFFIX,exdynsrv.com - - DOMAIN-SUFFIX,exit.macandbumble.com - - DOMAIN-SUFFIX,exoclick.com - - DOMAIN-SUFFIX,exp.17wo.cn - - DOMAIN-SUFFIX,exp.3g.ifeng.com - - DOMAIN-SUFFIX,exp.qumi.com - - DOMAIN-SUFFIX,expo123.net - - DOMAIN-SUFFIX,ext.theglobalweb.com - - DOMAIN-SUFFIX,extmoney.i1608.com - - DOMAIN-SUFFIX,extstat.com - - DOMAIN-SUFFIX,eyd77s.com - - DOMAIN-SUFFIX,eye.swfchan.com - - DOMAIN-SUFFIX,eyouv.cn - - DOMAIN-SUFFIX,ez33.org.cn - - DOMAIN-SUFFIX,ezine.oupeng.com - - DOMAIN-SUFFIX,ezucods.cn - - DOMAIN-SUFFIX,f.520tingshu.com - - DOMAIN-SUFFIX,f.doodlemobile.com - - DOMAIN-SUFFIX,f.f70123.com - - DOMAIN-SUFFIX,f.fj95560.com - - DOMAIN-SUFFIX,f.haoxinjaju.com - - DOMAIN-SUFFIX,f.hongm.com - - DOMAIN-SUFFIX,f.qcwzx.net.cn - - DOMAIN-SUFFIX,f.yijikm.com - - DOMAIN-SUFFIX,f.yueyetiyu.com - - DOMAIN-SUFFIX,f1.06ps.com - - DOMAIN-SUFFIX,f1.bizhiku.net - - DOMAIN-SUFFIX,f1.luoshenbest.cn - - DOMAIN-SUFFIX,f1.meishichina.com - - DOMAIN-SUFFIX,f1.p0y.cn - - DOMAIN-SUFFIX,f1.pig66.com - - DOMAIN-SUFFIX,f1190.com - - DOMAIN-SUFFIX,f1c.i.biquge5200.com - - DOMAIN-SUFFIX,f2.p0y.cn - - DOMAIN-SUFFIX,f2zd.com - - DOMAIN-SUFFIX,f3.mi-stat.gslb.mi-idc.com - - DOMAIN-SUFFIX,f3.vedeh.com - - DOMAIN-SUFFIX,f5.dfcwg.com - - DOMAIN-SUFFIX,f5.mtqys.com - - DOMAIN-SUFFIX,f56g.me - - DOMAIN-SUFFIX,f6ce.com - - DOMAIN-SUFFIX,f70123.com - - DOMAIN-SUFFIX,f8272.com - - DOMAIN-SUFFIX,fa.163.com - - DOMAIN-SUFFIX,facebookma.cn - - DOMAIN-SUFFIX,faggrim.com - - DOMAIN-SUFFIX,fair.sogou.com - - DOMAIN-SUFFIX,falundata.com - - DOMAIN-SUFFIX,falundata.org - - DOMAIN-SUFFIX,fan.liuxiaoer.com - - DOMAIN-SUFFIX,fan.twitch.tv - - DOMAIN-SUFFIX,fancyapi.com - - DOMAIN-SUFFIX,fanqianbb.com - - DOMAIN-SUFFIX,fans.bestvogue.com - - DOMAIN-SUFFIX,fansi365.com - - DOMAIN-SUFFIX,fan-yong.com - - DOMAIN-SUFFIX,farm-cn.plista.com - - DOMAIN-SUFFIX,fastable.com - - DOMAIN-SUFFIX,fastapi.net - - DOMAIN-SUFFIX,fastcache.com.cn - - DOMAIN-SUFFIX,fast-cdn.dianjoy.com - - DOMAIN-SUFFIX,fastclick.com - - DOMAIN-SUFFIX,fastclick.net - - DOMAIN-SUFFIX,fastly.bench.cedexis.com - - DOMAIN-SUFFIX,fastpopunder.com - - DOMAIN-SUFFIX,fathionmall.com - - DOMAIN-SUFFIX,fav.simba.taobao.com - - DOMAIN-SUFFIX,fb.xk.miui.com - - DOMAIN-SUFFIX,fbc.ffychb.com - - DOMAIN-SUFFIX,fccxgjg.com - - DOMAIN-SUFFIX,fc-feed.cdn.bcebos.com - - DOMAIN-SUFFIX,fclick.baidu.com - - DOMAIN-SUFFIX,fcsass.org.cn - - DOMAIN-SUFFIX,fd.anzhi.com - - DOMAIN-SUFFIX,fd.qchannel03.cn - - DOMAIN-SUFFIX,fd7c.com - - DOMAIN-SUFFIX,fds.api.moji.com - - DOMAIN-SUFFIX,fe.lea.lycos.co.uk - - DOMAIN-SUFFIX,fe1-au.imrworldwide.com - - DOMAIN-SUFFIX,fe2-au.imrworldwide.com - - DOMAIN-SUFFIX,fe3-au.imrworldwide.com - - DOMAIN-SUFFIX,fe-au.imrworldwide.com - - DOMAIN-SUFFIX,feed.baidu.com - - DOMAIN-SUFFIX,feed.theta.sogou.com - - DOMAIN-SUFFIX,feedback.whalecloud.com - - DOMAIN-SUFFIX,feeds.logicbuy.com - - DOMAIN-SUFFIX,feeds.videosz.com - - DOMAIN-SUFFIX,fei232.bhzje7ua9.com - - DOMAIN-SUFFIX,feidalu.com - - DOMAIN-SUFFIX,feifish66.com - - DOMAIN-SUFFIX,feih.com.cn - - DOMAIN-SUFFIX,feitianma.com - - DOMAIN-SUFFIX,feixin2.com - - DOMAIN-SUFFIX,fembsflungod.com - - DOMAIN-SUFFIX,fen.dkdlsj.com - - DOMAIN-SUFFIX,fengbuy.com - - DOMAIN-SUFFIX,fenggejiaju.com - - DOMAIN-SUFFIX,fenqihome.com - - DOMAIN-SUFFIX,fenvm.com - - DOMAIN-SUFFIX,fexclick.baidu.com - - DOMAIN-SUFFIX,ff.nsg.org.ua - - DOMAIN-SUFFIX,ffb.feihuo.com - - DOMAIN-SUFFIX,fff.yuyouge.com - - DOMAIN-SUFFIX,ffhtek.com - - DOMAIN-SUFFIX,fflsn.com - - DOMAIN-SUFFIX,ffre.ffrepair.com - - DOMAIN-SUFFIX,ffychb.com - - DOMAIN-SUFFIX,fge9vbrzwt.bid - - DOMAIN-SUFFIX,fghm.ga25.com - - DOMAIN-SUFFIX,fghmc.ga25.com - - DOMAIN-SUFFIX,fghmimg.ga25.com - - DOMAIN-SUFFIX,fgmtv.org - - DOMAIN-SUFFIX,file.bmob.cn - - DOMAIN-SUFFIX,files2.sogou.com - - DOMAIN-SUFFIX,fimserve.ign.com - - DOMAIN-SUFFIX,findicons.com - - DOMAIN-SUFFIX,finding.hardwareheaven.com - - DOMAIN-SUFFIX,findnsave.idahostatesman.com - - DOMAIN-SUFFIX,finead.cn - - DOMAIN-SUFFIX,fips.uimserv.net - - DOMAIN-SUFFIX,firefang.cn - - DOMAIN-SUFFIX,fjkst.com - - DOMAIN-SUFFIX,fjlqqc.com - - DOMAIN-SUFFIX,fjmeyer.com - - DOMAIN-SUFFIX,fkku194.com - - DOMAIN-SUFFIX,flash.2144.com - - DOMAIN-SUFFIX,flashtalking.com - - DOMAIN-SUFFIX,flowcodeapp.com - - DOMAIN-SUFFIX,flstudiochina.com - - DOMAIN-SUFFIX,flurry.cachefly.net - - DOMAIN-SUFFIX,flurry.com - - DOMAIN-SUFFIX,flux.faloo.com - - DOMAIN-SUFFIX,flv.dotmore.com.tw - - DOMAIN-SUFFIX,flv.ytshuirun.com - - DOMAIN-SUFFIX,flwja.com - - DOMAIN-SUFFIX,fm.p0y.cn - - DOMAIN-SUFFIX,fmgoal.com - - DOMAIN-SUFFIX,fnkjj.com - - DOMAIN-SUFFIX,focuscat.com - - DOMAIN-SUFFIX,focusprolight.com - - DOMAIN-SUFFIX,formysql.com - - DOMAIN-SUFFIX,fota4.adups.cn - - DOMAIN-SUFFIX,fotao9.com - - DOMAIN-SUFFIX,founseezb.cn - - DOMAIN-SUFFIX,fozhu.rrsdl.com - - DOMAIN-SUFFIX,fp.fraudmetrix.cn - - DOMAIN-SUFFIX,fpb.51edu.com - - DOMAIN-SUFFIX,fpb.kuhou.com - - DOMAIN-SUFFIX,fpb.mn586.com - - DOMAIN-SUFFIX,fpbbdx1.51240.com - - DOMAIN-SUFFIX,fpbjiansuo.mn586.com - - DOMAIN-SUFFIX,fpdownload.macromedia.com - - DOMAIN-SUFFIX,fptest.fraudmetrix.cn - - DOMAIN-SUFFIX,fqtra.com - - DOMAIN-SUFFIX,frame.enet.com.cn - - DOMAIN-SUFFIX,fraudmetrix.cn - - DOMAIN-SUFFIX,frdhq.cn - - DOMAIN-SUFFIX,free.aol.com - - DOMAIN-SUFFIX,freecodecs.us.intellitxt.com - - DOMAIN-SUFFIX,freedrive.cn - - DOMAIN-SUFFIX,freexxxvideoclip.aebn.net - - DOMAIN-SUFFIX,fs.uc.nearme.com.cn - - DOMAIN-SUFFIX,fsjsp.com - - DOMAIN-SUFFIX,fsr.lenovomm.com - - DOMAIN-SUFFIX,fst360.com - - DOMAIN-SUFFIX,fs-uc-nearme-com-cn.oss-cn-hangzhou.aliyuncs.com - - DOMAIN-SUFFIX,fsyzcs.com - - DOMAIN-SUFFIX,ft.moad.cn - - DOMAIN-SUFFIX,ft.pnop.com - - DOMAIN-SUFFIX,fthcz.com - - DOMAIN-SUFFIX,fu68.com - - DOMAIN-SUFFIX,fucnm.com - - DOMAIN-SUFFIX,fujianryt.com - - DOMAIN-SUFFIX,fun.ynet.com - - DOMAIN-SUFFIX,funshion.net.cn - - DOMAIN-SUFFIX,fus.lenovomm.com - - DOMAIN-SUFFIX,fusion.qq.com - - DOMAIN-SUFFIX,fv99.com - - DOMAIN-SUFFIX,fw.adsafeprotected.com - - DOMAIN-SUFFIX,fw.vpon.com - - DOMAIN-SUFFIX,fwmrm.net - - DOMAIN-SUFFIX,fwt0.com - - DOMAIN-SUFFIX,fxc.aiquxs.com - - DOMAIN-SUFFIX,fxmacd.com - - DOMAIN-SUFFIX,fxtducb.cn - - DOMAIN-SUFFIX,fxxgw.com - - DOMAIN-SUFFIX,fych.uranus.sogou.com - - DOMAIN-SUFFIX,fydgold132.com - - DOMAIN-SUFFIX,fytza.cn - - DOMAIN-SUFFIX,fz863.com - - DOMAIN-SUFFIX,fzz.cloud.1234507.com - - DOMAIN-SUFFIX,fzz.shgqjr.com - - DOMAIN-SUFFIX,g.163.com - - DOMAIN-SUFFIX,g.51network.com - - DOMAIN-SUFFIX,g.6sfg.com - - DOMAIN-SUFFIX,g.ad8.cc - - DOMAIN-SUFFIX,g.aligames.com - - DOMAIN-SUFFIX,g.baidu.com - - DOMAIN-SUFFIX,g.bitauto.com - - DOMAIN-SUFFIX,g.brothersoft.com - - DOMAIN-SUFFIX,g.chuiyao.com - - DOMAIN-SUFFIX,g.d.yoyi.tv - - DOMAIN-SUFFIX,g.daman.cc - - DOMAIN-SUFFIX,g.f11w.com - - DOMAIN-SUFFIX,g.f5gh.com - - DOMAIN-SUFFIX,g.gridsum.com - - DOMAIN-SUFFIX,g.haluoha.com - - DOMAIN-SUFFIX,g.hsw.cn - - DOMAIN-SUFFIX,g.koowo.com - - DOMAIN-SUFFIX,g.mnw.cn - - DOMAIN-SUFFIX,g.ousns.net - - DOMAIN-SUFFIX,g.rs.yoyi.com.cn - - DOMAIN-SUFFIX,g.s8dj.com - - DOMAIN-SUFFIX,g.szdn1ms.com - - DOMAIN-SUFFIX,g.usingde.com - - DOMAIN-SUFFIX,g.w5b454.com - - DOMAIN-SUFFIX,g.wan.2345.com - - DOMAIN-SUFFIX,g.wan.douyu.com - - DOMAIN-SUFFIX,g.wrating.com - - DOMAIN-SUFFIX,g.x.cn.xtgreat.com - - DOMAIN-SUFFIX,g.x.evolife.cn - - DOMAIN-SUFFIX,g.yccdn.com - - DOMAIN-SUFFIX,g.zx-jsp.com - - DOMAIN-SUFFIX,g1.0573ren.com - - DOMAIN-SUFFIX,g1.08160.cn - - DOMAIN-SUFFIX,g1.163.com - - DOMAIN-SUFFIX,g1.taijuba.com - - DOMAIN-SUFFIX,g1c5.com - - DOMAIN-SUFFIX,g1f5.com - - DOMAIN-SUFFIX,g2.ousns.net - - DOMAIN-SUFFIX,g3.iqilu.com - - DOMAIN-SUFFIX,g4.iqilu.com - - DOMAIN-SUFFIX,g9s.sgzs999.com - - DOMAIN-SUFFIX,gad.kugou.com - - DOMAIN-SUFFIX,gadwhy.com - - DOMAIN-SUFFIX,gafxa.code.mytanwan.com - - DOMAIN-SUFFIX,galaxy.sogoucdn.com - - DOMAIN-SUFFIX,game.9xzj.com - - DOMAIN-SUFFIX,game.baichuanhd.cn - - DOMAIN-SUFFIX,game.html5.qq.com - - DOMAIN-SUFFIX,game.kugou.com - - DOMAIN-SUFFIX,game.kuwo.cn - - DOMAIN-SUFFIX,game.qidian.com - - DOMAIN-SUFFIX,game.res.meizu.com - - DOMAIN-SUFFIX,game.rising.cn - - DOMAIN-SUFFIX,game.subway.uu.cc - - DOMAIN-SUFFIX,game.weibo.cn - - DOMAIN-SUFFIX,game.weibo.com - - DOMAIN-SUFFIX,gamead.swjoy.com - - DOMAIN-SUFFIX,gameads.digyourowngrave.com - - DOMAIN-SUFFIX,gamebox.kugou.com - - DOMAIN-SUFFIX,game-res.meizu.com - - DOMAIN-SUFFIX,ganjituiguang.ganji.com - - DOMAIN-SUFFIX,gao.ynet.com - - DOMAIN-SUFFIX,gas.data.pplive.com - - DOMAIN-SUFFIX,gateway.fortunelounge.com - - DOMAIN-SUFFIX,gateways.s3.amazonaws.com - - DOMAIN-SUFFIX,gb.corp.163.com - - DOMAIN-SUFFIX,gc.keefung-zs.com - - DOMAIN-SUFFIX,gcapi.sy.kugou.com - - DOMAIN-SUFFIX,gclick.cn - - DOMAIN-SUFFIX,gcs1.cn - - DOMAIN-SUFFIX,gd.cnhange.cn - - DOMAIN-SUFFIX,gd.jqgc.com - - DOMAIN-SUFFIX,gd.vodtw.com - - DOMAIN-SUFFIX,gdbly.com - - DOMAIN-SUFFIX,gdgy56.com - - DOMAIN-SUFFIX,gdskywings.com - - DOMAIN-SUFFIX,gdsqwy.org - - DOMAIN-SUFFIX,gdyn.cnn.com - - DOMAIN-SUFFIX,ge95.com - - DOMAIN-SUFFIX,geili.co - - DOMAIN-SUFFIX,geiyujieda.com - - DOMAIN-SUFFIX,gemini.yahoo.com - - DOMAIN-SUFFIX,gen.alicdn.com - - DOMAIN-SUFFIX,gentags.com - - DOMAIN-SUFFIX,geo.cliphunter.com - - DOMAIN-SUFFIX,geo.connexionsecure.com - - DOMAIN-SUFFIX,geo.frtya.com - - DOMAIN-SUFFIX,geo.frtyd.com - - DOMAIN-SUFFIX,geo.gridsumdissector.com - - DOMAIN-SUFFIX,geo.moatads.com - - DOMAIN-SUFFIX,geo.yahoo.com - - DOMAIN-SUFFIX,geo2.adobe.com - - DOMAIN-SUFFIX,geobanner.alt.com - - DOMAIN-SUFFIX,geobanner.friendfinder.com - - DOMAIN-SUFFIX,geobanner.passion.com - - DOMAIN-SUFFIX,geobanner.socialflirt.com - - DOMAIN-SUFFIX,geoshopping.nzherald.co.nz - - DOMAIN-SUFFIX,geryi.com - - DOMAIN-SUFFIX,get.thefile.me - - DOMAIN-SUFFIX,get3.adobe.com - - DOMAIN-SUFFIX,getnormalizedurl.com - - DOMAIN-SUFFIX,gewuwen.com - - DOMAIN-SUFFIX,gf108.com - - DOMAIN-SUFFIX,gf1352.com - - DOMAIN-SUFFIX,gfd80.com - - DOMAIN-SUFFIX,gfh.ahfzly.com - - DOMAIN-SUFFIX,gfx.infomine.com - - DOMAIN-SUFFIX,gg.0598yu.com - - DOMAIN-SUFFIX,gg.5173.com - - DOMAIN-SUFFIX,gg.51cto.com - - DOMAIN-SUFFIX,gg.amblrgg.live - - DOMAIN-SUFFIX,gg.anqu.com - - DOMAIN-SUFFIX,gg.blueidea.com - - DOMAIN-SUFFIX,gg.caixin.com - - DOMAIN-SUFFIX,gg.cs090.com - - DOMAIN-SUFFIX,gg.dsxdn.com - - DOMAIN-SUFFIX,gg.gao7.com - - DOMAIN-SUFFIX,gg.haianw.com - - DOMAIN-SUFFIX,gg.huangye88.com - - DOMAIN-SUFFIX,gg.jkmeishi.com - - DOMAIN-SUFFIX,gg.kugou.com - - DOMAIN-SUFFIX,gg.meitu.com - - DOMAIN-SUFFIX,gg.ptfish.com - - DOMAIN-SUFFIX,gg.sonhoo.com - - DOMAIN-SUFFIX,gg.stargame.com - - DOMAIN-SUFFIX,gg.uuu9.com - - DOMAIN-SUFFIX,gg.vidown.cn - - DOMAIN-SUFFIX,gg.xywy.com - - DOMAIN-SUFFIX,gg.yxdown.com - - DOMAIN-SUFFIX,gg.zhongyao1.com - - DOMAIN-SUFFIX,gg0376.com - - DOMAIN-SUFFIX,gg1.yszyz.com - - DOMAIN-SUFFIX,gg2.51cto.com - - DOMAIN-SUFFIX,gg2.dss9927.com - - DOMAIN-SUFFIX,gg3.51cto.com - - DOMAIN-SUFFIX,gg570.com - - DOMAIN-SUFFIX,gg86.pinggu.org - - DOMAIN-SUFFIX,gg8888.cnfol.com - - DOMAIN-SUFFIX,ggb.douguo.com - - DOMAIN-SUFFIX,ggcode.2345.com - - DOMAIN-SUFFIX,ggdoubi.com - - DOMAIN-SUFFIX,ggg.zj.com - - DOMAIN-SUFFIX,ggle.lywf.me - - DOMAIN-SUFFIX,ggmm777.com - - DOMAIN-SUFFIX,ggmmqq.com - - DOMAIN-SUFFIX,ggr.yxdown.com - - DOMAIN-SUFFIX,ggs.myzaker.com - - DOMAIN-SUFFIX,ggw.gusuwang.com - - DOMAIN-SUFFIX,ggw.watertu.com - - DOMAIN-SUFFIX,ggxt.net - - DOMAIN-SUFFIX,gi.xi.gxabj.com - - DOMAIN-SUFFIX,gif.lu.sogoucdn.com - - DOMAIN-SUFFIX,gimg.baidu.com - - DOMAIN-SUFFIX,gimg.bitauto.com - - DOMAIN-SUFFIX,girlcc.cc - - DOMAIN-SUFFIX,gj500.com - - DOMAIN-SUFFIX,gjghy.com - - DOMAIN-SUFFIX,gjreg.code.weddingeeos.com - - DOMAIN-SUFFIX,glasszz.com - - DOMAIN-SUFFIX,gload.adhood.com - - DOMAIN-SUFFIX,global.msads.net - - DOMAIN-SUFFIX,global.ymtracking.com - - DOMAIN-SUFFIX,gm682.com - - DOMAIN-SUFFIX,gma1.com - - DOMAIN-SUFFIX,gmota.g188.net - - DOMAIN-SUFFIX,gmtdmp.mookie1.com - - DOMAIN-SUFFIX,go.gogolm.xyz - - DOMAIN-SUFFIX,go.gotourl.xyz - - DOMAIN-SUFFIX,go.gotourls.bid - - DOMAIN-SUFFIX,go.hangzhou.com.cn - - DOMAIN-SUFFIX,go.onclasrv.com - - DOMAIN-SUFFIX,go.util.zlibs.com - - DOMAIN-SUFFIX,godloveme.cn - - DOMAIN-SUFFIX,gog9.qzdfc.com - - DOMAIN-SUFFIX,go-mpulse.net - - DOMAIN-SUFFIX,good.ta80.com - - DOMAIN-SUFFIX,googleadsserving.cn - - DOMAIN-SUFFIX,googlecommerce.com - - DOMAIN-SUFFIX,googlesyndication.com - - DOMAIN-SUFFIX,goolpter.com - - DOMAIN-SUFFIX,gopig.io - - DOMAIN-SUFFIX,gorgon.youdao.com - - DOMAIN-SUFFIX,gosquared.com - - DOMAIN-SUFFIX,goto.sogou.com - - DOMAIN-SUFFIX,goto.www.iciba.com - - DOMAIN-SUFFIX,gotourl.xyz - - DOMAIN-SUFFIX,goufanli100.com - - DOMAIN-SUFFIX,gouwubang.com - - DOMAIN-SUFFIX,gouzhibao.cn - - DOMAIN-SUFFIX,govgift.com - - DOMAIN-SUFFIX,govids.net - - DOMAIN-SUFFIX,gp.jstv.com - - DOMAIN-SUFFIX,gpydym.cn - - DOMAIN-SUFFIX,gqswg.com - - DOMAIN-SUFFIX,grand.ele.me - - DOMAIN-SUFFIX,green.erne.co - - DOMAIN-SUFFIX,greenhouseglobal.cn - - DOMAIN-SUFFIX,greenxfs.down.123ch.cn - - DOMAIN-SUFFIX,gridsum.com - - DOMAIN-SUFFIX,gridsumdissector.cn - - DOMAIN-SUFFIX,gridsumdissector.com - - DOMAIN-SUFFIX,groupa.onlylady.com - - DOMAIN-SUFFIX,growingio.com - - DOMAIN-SUFFIX,gs307.com - - DOMAIN-SUFFIX,gso0.com - - DOMAIN-SUFFIX,gstat.bitauto.com - - DOMAIN-SUFFIX,gt.yy.com - - DOMAIN-SUFFIX,gt4ec.net - - DOMAIN-SUFFIX,gtags.net - - DOMAIN-SUFFIX,gtmucs.cn - - DOMAIN-SUFFIX,gu.qlogo.cn - - DOMAIN-SUFFIX,guang.lesports.com - - DOMAIN-SUFFIX,guang.sdsgwy.com - - DOMAIN-SUFFIX,guangzhuiyuan.com - - DOMAIN-SUFFIX,guangzizai.com - - DOMAIN-SUFFIX,guanjia.baidu.com - - DOMAIN-SUFFIX,guduopu.com - - DOMAIN-SUFFIX,guess.h.qhimg.com - - DOMAIN-SUFFIX,guestworld.tripod.lycos.com - - DOMAIN-SUFFIX,gugulonger.cn - - DOMAIN-SUFFIX,guidashu.com - - DOMAIN-SUFFIX,guitarpro.cc - - DOMAIN-SUFFIX,gum.criteo.com - - DOMAIN-SUFFIX,guohead.com - - DOMAIN-SUFFIX,guomob.com - - DOMAIN-SUFFIX,guoshennet.com - - DOMAIN-SUFFIX,gw5.push.mcp.weibo.cn - - DOMAIN-SUFFIX,gw6.push.mcp.weibo.cn - - DOMAIN-SUFFIX,gw630.com - - DOMAIN-SUFFIX,gx38.cn - - DOMAIN-SUFFIX,gxdhgb.com - - DOMAIN-SUFFIX,gxe.husky.sogou.com - - DOMAIN-SUFFIX,gyca9f.dahuangcheng.cn - - DOMAIN-SUFFIX,gydag.com - - DOMAIN-SUFFIX,gyrtg.com - - DOMAIN-SUFFIX,gz.hxdaka.com - - DOMAIN-SUFFIX,gz00005.top - - DOMAIN-SUFFIX,gzktpf.com - - DOMAIN-SUFFIX,gzlykj.cn - - DOMAIN-SUFFIX,gzmjnx.cn - - DOMAIN-SUFFIX,gzqudou.com - - DOMAIN-SUFFIX,h.canmg.cn - - DOMAIN-SUFFIX,h.holder.com.ua - - DOMAIN-SUFFIX,h.irs01.com - - DOMAIN-SUFFIX,h.laojiayoufang.com - - DOMAIN-SUFFIX,h.msn.com - - DOMAIN-SUFFIX,h.pcd.autohome.com.cn - - DOMAIN-SUFFIX,h.sora.yoyi.com.cn - - DOMAIN-SUFFIX,h01.hotrank.com.tw - - DOMAIN-SUFFIX,h1.18sd.cn - - DOMAIN-SUFFIX,h2.18sd.cn - - DOMAIN-SUFFIX,h5.holalauncher.com - - DOMAIN-SUFFIX,h5.jiumaster.com - - DOMAIN-SUFFIX,h5.pk1179.com - - DOMAIN-SUFFIX,h5.super-dreamers.com - - DOMAIN-SUFFIX,h5.taihao.cc - - DOMAIN-SUFFIX,h8.bec.com - - DOMAIN-SUFFIX,h9377c.com - - DOMAIN-SUFFIX,haitaoad.nosdn.127.net - - DOMAIN-SUFFIX,haiwai-ic.ksosoft.com - - DOMAIN-SUFFIX,haiwengji.net - - DOMAIN-SUFFIX,haiyunpush.com - - DOMAIN-SUFFIX,hanju18.net - - DOMAIN-SUFFIX,hao.7654.com - - DOMAIN-SUFFIX,hao.qquu8.com - - DOMAIN-SUFFIX,hao.tiandi.com - - DOMAIN-SUFFIX,hao.uc.cn - - DOMAIN-SUFFIX,hao123.xywy.com - - DOMAIN-SUFFIX,hao123rt.com - - DOMAIN-SUFFIX,hao549.com - - DOMAIN-SUFFIX,hao61.net - - DOMAIN-SUFFIX,hao916.com - - DOMAIN-SUFFIX,hao934.com - - DOMAIN-SUFFIX,haoghost.com - - DOMAIN-SUFFIX,haohaowan8.com - - DOMAIN-SUFFIX,haolew.com - - DOMAIN-SUFFIX,haoshengtoys.com - - DOMAIN-SUFFIX,haostat.qihoo.com - - DOMAIN-SUFFIX,hapic1.jhkxwl.com - - DOMAIN-SUFFIX,hascosafety.com - - DOMAIN-SUFFIX,hats.haibao.cn - - DOMAIN-SUFFIX,hbalx.cn - - DOMAIN-SUFFIX,hbdt.luomi.com - - DOMAIN-SUFFIX,hblinwei.com - - DOMAIN-SUFFIX,hbngfy.com - - DOMAIN-SUFFIX,hbyyzm.com - - DOMAIN-SUFFIX,hc.baidu.com - - DOMAIN-SUFFIX,hccms.com.cn - - DOMAIN-SUFFIX,hcreditx.com - - DOMAIN-SUFFIX,hd.jiedaibao.com - - DOMAIN-SUFFIX,hd.ylddq.com - - DOMAIN-SUFFIX,hda.maxli.cn - - DOMAIN-SUFFIX,hdad.baike.com - - DOMAIN-SUFFIX,hdb.maxli.cn - - DOMAIN-SUFFIX,hdggcdn.bayimob.com - - DOMAIN-SUFFIX,hdhkwl.com - - DOMAIN-SUFFIX,hdj.baidu.com - - DOMAIN-SUFFIX,he2d.com - - DOMAIN-SUFFIX,health1.12584.cn - - DOMAIN-SUFFIX,heavenmedia.v3g4s.com - - DOMAIN-SUFFIX,hechaocheng.cn - - DOMAIN-SUFFIX,heefwozhlxgz.com - - DOMAIN-SUFFIX,hefan365.com - - DOMAIN-SUFFIX,heib10.top - - DOMAIN-SUFFIX,heib12.top - - DOMAIN-SUFFIX,heimo.rrsdl.com - - DOMAIN-SUFFIX,hejban.youwatch.org - - DOMAIN-SUFFIX,hejingroup.cn - - DOMAIN-SUFFIX,help.baotangwang.cn - - DOMAIN-SUFFIX,help.yunaq.com - - DOMAIN-SUFFIX,hesxz.com - - DOMAIN-SUFFIX,heyzap.com - - DOMAIN-SUFFIX,hfjuki.com - - DOMAIN-SUFFIX,hfsteel.net - - DOMAIN-SUFFIX,hg417.bet - - DOMAIN-SUFFIX,hg89038.com - - DOMAIN-SUFFIX,hg89068.com - - DOMAIN-SUFFIX,hg89078.com - - DOMAIN-SUFFIX,hgame.com - - DOMAIN-SUFFIX,hh6666.com - - DOMAIN-SUFFIX,hhlian.com - - DOMAIN-SUFFIX,hhly88.com - - DOMAIN-SUFFIX,hhppyt.com - - DOMAIN-SUFFIX,hhqda.pop.t5yx.cn - - DOMAIN-SUFFIX,hi686.com - - DOMAIN-SUFFIX,hi760.com - - DOMAIN-SUFFIX,hi9377.com - - DOMAIN-SUFFIX,hiad.myweb.hinet.net - - DOMAIN-SUFFIX,hiad.vmall.com - - DOMAIN-SUFFIX,higame123.com - - DOMAIN-SUFFIX,hilltopads.net - - DOMAIN-SUFFIX,himandy.com - - DOMAIN-SUFFIX,hipersushiads.com - - DOMAIN-SUFFIX,histats.com - - DOMAIN-SUFFIX,hit.webcentre.lycos.co.uk - - DOMAIN-SUFFIX,hitlog2.chosun.com - - DOMAIN-SUFFIX,hitslink.com - - DOMAIN-SUFFIX,hivecn.cn - - DOMAIN-SUFFIX,hivedata.cc - - DOMAIN-SUFFIX,hjc1990.com - - DOMAIN-SUFFIX,hk.jtsh123.com - - DOMAIN-SUFFIX,hk.napi.ucweb.com - - DOMAIN-SUFFIX,hk9600.com - - DOMAIN-SUFFIX,hk-cdn.effectivemeasure.net - - DOMAIN-SUFFIX,hkfuy.com - - DOMAIN-SUFFIX,hl.kuzu.com - - DOMAIN-SUFFIX,hl.quw18.com - - DOMAIN-SUFFIX,hl2rcv.adobe.com - - DOMAIN-SUFFIX,hldwmly.com - - DOMAIN-SUFFIX,hlrcv.stage.adobe.com - - DOMAIN-SUFFIX,hmp33.com - - DOMAIN-SUFFIX,hmttoly.com - - DOMAIN-SUFFIX,hmyangshengji.com - - DOMAIN-SUFFIX,hnasd.com - - DOMAIN-SUFFIX,hnctsm.com - - DOMAIN-SUFFIX,hndiyikj.com - - DOMAIN-SUFFIX,hnxxjn.com - - DOMAIN-SUFFIX,hnyny.com - - DOMAIN-SUFFIX,hoisin.coocaatv.com - - DOMAIN-SUFFIX,home520.com - - DOMAIN-SUFFIX,hoplink.ksosoft.com - - DOMAIN-SUFFIX,hosting.miarroba.info - - DOMAIN-SUFFIX,hot.browser.miui.com - - DOMAIN-SUFFIX,hot.m.shouji.360tpcdn.com - - DOMAIN-SUFFIX,hot-mob.com - - DOMAIN-SUFFIX,hotrank.com.tw - - DOMAIN-SUFFIX,houdaolj.com - - DOMAIN-SUFFIX,houtai.2345.com - - DOMAIN-SUFFIX,hpd.baidu.com - - DOMAIN-SUFFIX,hpqxznpb.bid - - DOMAIN-SUFFIX,hqgjcm.com - - DOMAIN-SUFFIX,hr41.cn - - DOMAIN-SUFFIX,hr44.com - - DOMAIN-SUFFIX,hs.qhupdate.com - - DOMAIN-SUFFIX,hslyqs.com - - DOMAIN-SUFFIX,ht.www.sogou.com - - DOMAIN-SUFFIX,htfmbt.com - - DOMAIN-SUFFIX,htjsk.com - - DOMAIN-SUFFIX,html.350.com - - DOMAIN-SUFFIX,html.sunday8.com - - DOMAIN-SUFFIX,html.yuntzs.com - - DOMAIN-SUFFIX,httpdns.push.oppomobile.com - - DOMAIN-SUFFIX,huahuaka.com - - DOMAIN-SUFFIX,huashengtai.net - - DOMAIN-SUFFIX,huashuowork.com - - DOMAIN-SUFFIX,huaxinxunye.cn - - DOMAIN-SUFFIX,huayi65.com - - DOMAIN-SUFFIX,hub5pn.wap.sandai.net - - DOMAIN-SUFFIX,hubojd.com - - DOMAIN-SUFFIX,huichuan.sm.cn - - DOMAIN-SUFFIX,huimee.net - - DOMAIN-SUFFIX,huishenghuiying.com - - DOMAIN-SUFFIX,huishenghuiying.com.cn - - DOMAIN-SUFFIX,humanding.com - - DOMAIN-SUFFIX,hunpingou.com - - DOMAIN-SUFFIX,huodonghezi.com - - DOMAIN-SUFFIX,huoying666.com - - DOMAIN-SUFFIX,hv.code.tanwanyx.com - - DOMAIN-SUFFIX,hw6.com - - DOMAIN-SUFFIX,hwt.player888.cn - - DOMAIN-SUFFIX,hxadt.com - - DOMAIN-SUFFIX,hxspc.com - - DOMAIN-SUFFIX,hxstfxx.cn - - DOMAIN-SUFFIX,hxueu.code.weddingeeos.com - - DOMAIN-SUFFIX,hxyifu.com - - DOMAIN-SUFFIX,hxyx360.com - - DOMAIN-SUFFIX,hyfh.benbaisteel.com - - DOMAIN-SUFFIX,hyfyuan.com - - DOMAIN-SUFFIX,hyperpromote.com - - DOMAIN-SUFFIX,hypersnap.net - - DOMAIN-SUFFIX,hys4.com - - DOMAIN-SUFFIX,hystq.com - - DOMAIN-SUFFIX,hytgj.com - - DOMAIN-SUFFIX,hyz86.com - - DOMAIN-SUFFIX,hz.miercn.com - - DOMAIN-SUFFIX,hz.shouyoutv.com - - DOMAIN-SUFFIX,hzaibi.com - - DOMAIN-SUFFIX,hzdmacore.kejet.net - - DOMAIN-SUFFIX,hzhyhm.com - - DOMAIN-SUFFIX,hzsod71wov.me - - DOMAIN-SUFFIX,hzxfmc.com - - DOMAIN-SUFFIX,hzyuw.com - - DOMAIN-SUFFIX,i.bigmir.net - - DOMAIN-SUFFIX,i.clkservice.youdao.com - - DOMAIN-SUFFIX,i.dreamfull.cn - - DOMAIN-SUFFIX,i.flow.browser.oppomobile.com - - DOMAIN-SUFFIX,i.go.sohu.com - - DOMAIN-SUFFIX,i.haloapps.com - - DOMAIN-SUFFIX,i.hao61.net - - DOMAIN-SUFFIX,i.holalauncher.com - - DOMAIN-SUFFIX,i.huilixieye.net - - DOMAIN-SUFFIX,i.jiathis.com - - DOMAIN-SUFFIX,i.jyhwt.cn - - DOMAIN-SUFFIX,i.l.cnn.net - - DOMAIN-SUFFIX,i.liadm.com - - DOMAIN-SUFFIX,i.ma.social-touch.com - - DOMAIN-SUFFIX,i.mmcdn.cn - - DOMAIN-SUFFIX,i.ssix.io - - DOMAIN-SUFFIX,i.syasn.com - - DOMAIN-SUFFIX,i.tansuotv.com - - DOMAIN-SUFFIX,i.w55c.net - - DOMAIN-SUFFIX,i.zhuoyaju.com - - DOMAIN-SUFFIX,i1236.net - - DOMAIN-SUFFIX,i2.akjunshi.com - - DOMAIN-SUFFIX,i3818.com - - DOMAIN-SUFFIX,i5.akjunshi.com - - DOMAIN-SUFFIX,i92xue.com - - DOMAIN-SUFFIX,ia.ctags.cn - - DOMAIN-SUFFIX,iad.g.163.com - - DOMAIN-SUFFIX,iadc.qwapi.com - - DOMAIN-SUFFIX,iadmatvideo.nosdn.127.net - - DOMAIN-SUFFIX,iadmusicmat.music.126.net - - DOMAIN-SUFFIX,iads.xinmin.cn - - DOMAIN-SUFFIX,iadsdk.apple.com - - DOMAIN-SUFFIX,ib.adnxs.co - - DOMAIN-SUFFIX,ibafnw.cn - - DOMAIN-SUFFIX,ibanners.empoweredcomms.com.au - - DOMAIN-SUFFIX,ic.wps.cn - - DOMAIN-SUFFIX,icast.cn - - DOMAIN-SUFFIX,icdxc.com - - DOMAIN-SUFFIX,ichaosheng.com - - DOMAIN-SUFFIX,icn.southmoney.com - - DOMAIN-SUFFIX,ico.58pic.com - - DOMAIN-SUFFIX,icon.cnmo.com - - DOMAIN-SUFFIX,icons.mydrivers.com - - DOMAIN-SUFFIX,iconworkshop.cn - - DOMAIN-SUFFIX,id.jiathis.com - - DOMAIN-SUFFIX,id528.com - - DOMAIN-SUFFIX,ida.cnool.net - - DOMAIN-SUFFIX,idasai.com - - DOMAIN-SUFFIX,idcot.com - - DOMAIN-SUFFIX,idcqi.com - - DOMAIN-SUFFIX,identified.cn - - DOMAIN-SUFFIX,idianfang.com - - DOMAIN-SUFFIX,idm-su.baidu.com - - DOMAIN-SUFFIX,ids.deliver.ifeng.com - - DOMAIN-SUFFIX,ids1.deliver.ifeng.com - - DOMAIN-SUFFIX,idx.m.hub.sandai.net - - DOMAIN-SUFFIX,ie8eamus.com - - DOMAIN-SUFFIX,iebar.baidu.com - - DOMAIN-SUFFIX,ieonline.microsoft.com - - DOMAIN-SUFFIX,if1512.com - - DOMAIN-SUFFIX,ifengad.3g.ifeng.com - - DOMAIN-SUFFIX,iflyad.bj.openstorage.cn - - DOMAIN-SUFFIX,iframe.travel.yahoo.com - - DOMAIN-SUFFIX,ig.nukefans.net - - DOMAIN-SUFFIX,igj5y.yongchanghengyuan.com - - DOMAIN-SUFFIX,ih.adscale.de - - DOMAIN-SUFFIX,ihualun.com - - DOMAIN-SUFFIX,ihuanmei.com - - DOMAIN-SUFFIX,iia1.pikacn.com - - DOMAIN-SUFFIX,iiad.com - - DOMAIN-SUFFIX,iiewl.com - - DOMAIN-SUFFIX,iii.6park.com - - DOMAIN-SUFFIX,iis1.deliver.ifeng.com - - DOMAIN-SUFFIX,iis3g.deliver.ifeng.com - - DOMAIN-SUFFIX,iisl7wpf.me - - DOMAIN-SUFFIX,ikcode.baidu.com - - DOMAIN-SUFFIX,il8r.com - - DOMAIN-SUFFIX,im.jpush.cn - - DOMAIN-SUFFIX,im.ov.yahoo.co.jp - - DOMAIN-SUFFIX,im1.56zzw.com - - DOMAIN-SUFFIX,im64.jpush.cn - - DOMAIN-SUFFIX,ima3vpaid.appspot.com - - DOMAIN-SUFFIX,imads.rediff.com - - DOMAIN-SUFFIX,image.139y.com - - DOMAIN-SUFFIX,image.9duw.com - - DOMAIN-SUFFIX,image.box.xiaomi.com - - DOMAIN-SUFFIX,image.fsyule.net - - DOMAIN-SUFFIX,image.gentags.com - - DOMAIN-SUFFIX,image.haiyunx.com - - DOMAIN-SUFFIX,image.hh010.com - - DOMAIN-SUFFIX,image.hj217.com - - DOMAIN-SUFFIX,image.p4p.sogou.com - - DOMAIN-SUFFIX,image.qj175.com - - DOMAIN-SUFFIX,image.zzd.sm.cn - - DOMAIN-SUFFIX,imagelx.yidianzixun.com - - DOMAIN-SUFFIX,images.avsmt.cn - - DOMAIN-SUFFIX,images.chinaz.com - - DOMAIN-SUFFIX,images.enet.com.cn - - DOMAIN-SUFFIX,images.fastclick.net - - DOMAIN-SUFFIX,images.gxsky.com - - DOMAIN-SUFFIX,images.intellitxt.com - - DOMAIN-SUFFIX,images.millennialmedia.com - - DOMAIN-SUFFIX,images.pagechoice.net - - DOMAIN-SUFFIX,images.sohu.com - - DOMAIN-SUFFIX,images.startappservice.com - - DOMAIN-SUFFIX,images.tyyjzs.cn - - DOMAIN-SUFFIX,images9999.com - - DOMAIN-SUFFIX,imageter.com - - DOMAIN-SUFFIX,imagzine.oppomobile.com - - DOMAIN-SUFFIX,imedia.bokecc.com - - DOMAIN-SUFFIX,imeijiajia.com - - DOMAIN-SUFFIX,imfsr.lenovomm.com - - DOMAIN-SUFFIX,img.12584.cn - - DOMAIN-SUFFIX,img.3sjt.com - - DOMAIN-SUFFIX,img.88ads.com - - DOMAIN-SUFFIX,img.9duw.com - - DOMAIN-SUFFIX,img.ad.zhangyue.com - - DOMAIN-SUFFIX,img.adbox.sina.com.cn - - DOMAIN-SUFFIX,img.adnyg.com - - DOMAIN-SUFFIX,img.amp.ad.sina.com.cn - - DOMAIN-SUFFIX,img.cmm.xmfish.com - - DOMAIN-SUFFIX,img.cxxyft.com - - DOMAIN-SUFFIX,img.dawenxue.org - - DOMAIN-SUFFIX,img.dydab.com - - DOMAIN-SUFFIX,img.ercfh.com - - DOMAIN-SUFFIX,img.fd7c.com - - DOMAIN-SUFFIX,img.feitian001.com - - DOMAIN-SUFFIX,img.gaore.com - - DOMAIN-SUFFIX,img.gz9d.com - - DOMAIN-SUFFIX,img.il8r.com - - DOMAIN-SUFFIX,img.img18.com - - DOMAIN-SUFFIX,img.jgchq.com - - DOMAIN-SUFFIX,img.jizzads.com - - DOMAIN-SUFFIX,img.kanuxian.cn - - DOMAIN-SUFFIX,img.khlxw.com - - DOMAIN-SUFFIX,img.kuwanpx.com - - DOMAIN-SUFFIX,img.libdd.com - - DOMAIN-SUFFIX,img.ma.social-touch.com - - DOMAIN-SUFFIX,img.meipic.net - - DOMAIN-SUFFIX,img.qdscgj.com - - DOMAIN-SUFFIX,img.qqgeshou.com - - DOMAIN-SUFFIX,img.s8bbs.com - - DOMAIN-SUFFIX,img.scupio.com - - DOMAIN-SUFFIX,img.sheyuansu.com - - DOMAIN-SUFFIX,img.supfast.net - - DOMAIN-SUFFIX,img.tan5858.com - - DOMAIN-SUFFIX,img.taotaosou.cn - - DOMAIN-SUFFIX,img.tcdxt.com - - DOMAIN-SUFFIX,img.toppr.com.cn - - DOMAIN-SUFFIX,img.twcczhu.com - - DOMAIN-SUFFIX,img.uyangyong.cn - - DOMAIN-SUFFIX,img.wan.sogou.com - - DOMAIN-SUFFIX,img.wuben56.com - - DOMAIN-SUFFIX,img.xa9t.com - - DOMAIN-SUFFIX,img.xcy8.com - - DOMAIN-SUFFIX,img.xiacaidd.com - - DOMAIN-SUFFIX,img.xuenb.com - - DOMAIN-SUFFIX,img.yingshidiguo.cn - - DOMAIN-SUFFIX,img.yuyue007.cn - - DOMAIN-SUFFIX,img.zsj18.com - - DOMAIN-SUFFIX,img.zuowen8.com - - DOMAIN-SUFFIX,img.zx590.com - - DOMAIN-SUFFIX,img0.egou.com - - DOMAIN-SUFFIX,img01.taotaosou.cn - - DOMAIN-SUFFIX,img1.126.net - - DOMAIN-SUFFIX,img1.18183.com - - DOMAIN-SUFFIX,img1.jintang114.org - - DOMAIN-SUFFIX,img1.km.com - - DOMAIN-SUFFIX,img1.mekbet.com - - DOMAIN-SUFFIX,img1.nend.net - - DOMAIN-SUFFIX,img1.pcfg.cache.wps.cn - - DOMAIN-SUFFIX,img1.pszyzxh.org - - DOMAIN-SUFFIX,img18.com - - DOMAIN-SUFFIX,img2.126.net - - DOMAIN-SUFFIX,img2.578965.com - - DOMAIN-SUFFIX,img2.cs153.com - - DOMAIN-SUFFIX,img2.hrccb.com - - DOMAIN-SUFFIX,img2.jiuzhilan.com - - DOMAIN-SUFFIX,img2.km.com - - DOMAIN-SUFFIX,img2.qekun.com - - DOMAIN-SUFFIX,img3.126.net - - DOMAIN-SUFFIX,img3.fy1g.com - - DOMAIN-SUFFIX,img3.km.com - - DOMAIN-SUFFIX,img6.126.net - - DOMAIN-SUFFIX,img80.net - - DOMAIN-SUFFIX,img-ad.oupeng.com - - DOMAIN-SUFFIX,imgad.thepaper.cn - - DOMAIN-SUFFIX,imgad0.3conline.com - - DOMAIN-SUFFIX,imgad0.pconline.com.cn - - DOMAIN-SUFFIX,imgadpai.thepaper.cn - - DOMAIN-SUFFIX,imgapp.yeyou.com - - DOMAIN-SUFFIX,imgc.cymzc.com - - DOMAIN-SUFFIX,imgcdn.wapx.cn - - DOMAIN-SUFFIX,img-cdn-spot.ymcdn.cn - - DOMAIN-SUFFIX,img-dsp.oss-cn-beijing.aliyuncs.com - - DOMAIN-SUFFIX,imges.wu65.com - - DOMAIN-SUFFIX,imgg.marketgid.com - - DOMAIN-SUFFIX,imgg.mgid.com - - DOMAIN-SUFFIX,imgp.cymzc.com - - DOMAIN-SUFFIX,imgsreview.dftoutiao.com - - DOMAIN-SUFFIX,imindmap.cc - - DOMAIN-SUFFIX,immob.cn - - DOMAIN-SUFFIX,imneinei.com - - DOMAIN-SUFFIX,i-mobile.co.jp - - DOMAIN-SUFFIX,imp.asahi.com - - DOMAIN-SUFFIX,imp.gentags.net - - DOMAIN-SUFFIX,imp.go.sohu.com - - DOMAIN-SUFFIX,imp.madserving.com - - DOMAIN-SUFFIX,imp.pdb.madserving.com - - DOMAIN-SUFFIX,imp.xgo.com.cn - - DOMAIN-SUFFIX,imp.zdnet.com.cn - - DOMAIN-SUFFIX,imp.zol.com.cn - - DOMAIN-SUFFIX,impression.gridsumdissector.com - - DOMAIN-SUFFIX,impservice.dictapp.youdao.com - - DOMAIN-SUFFIX,impservice.youdao.com - - DOMAIN-SUFFIX,impservice2.youdao.com - - DOMAIN-SUFFIX,impservicetest.dictapp.youdao.com - - DOMAIN-SUFFIX,impservice-test.dictapp.youdao.com - - DOMAIN-SUFFIX,imrworldwide.com - - DOMAIN-SUFFIX,in.gyeet.com - - DOMAIN-SUFFIX,in.jxhcyc.com - - DOMAIN-SUFFIX,in.mengpr.com - - DOMAIN-SUFFIX,in.mgwcn.com - - DOMAIN-SUFFIX,in.qzkxt.com - - DOMAIN-SUFFIX,in.zog.link - - DOMAIN-SUFFIX,in1.feed.uu.cc - - DOMAIN-SUFFIX,in1.secure.uu.cc - - DOMAIN-SUFFIX,inad.com - - DOMAIN-SUFFIX,inapp.1sapp.com - - DOMAIN-SUFFIX,inccnd.com - - DOMAIN-SUFFIX,inclk.com - - DOMAIN-SUFFIX,include.xs2345.com - - DOMAIN-SUFFIX,index.woai310.com - - DOMAIN-SUFFIX,indieclick.3janecdn.com - - DOMAIN-SUFFIX,info.downsave.com - - DOMAIN-SUFFIX,info.gomlab.com - - DOMAIN-SUFFIX,info.meihua.docer.com - - DOMAIN-SUFFIX,info.pinyin.sogou.com - - DOMAIN-SUFFIX,info.sec.miui.com - - DOMAIN-SUFFIX,info.stockstar.com - - DOMAIN-SUFFIX,info.yitsoftware.com - - DOMAIN-SUFFIX,infocenter.meizu.com - - DOMAIN-SUFFIX,ingameads.gameloft.com - - DOMAIN-SUFFIX,ini.litingxin.cn - - DOMAIN-SUFFIX,ini.update.360safe.com - - DOMAIN-SUFFIX,init.phpwind.com - - DOMAIN-SUFFIX,init.phpwind.net - - DOMAIN-SUFFIX,init.startappexchange.com - - DOMAIN-SUFFIX,innity.com - - DOMAIN-SUFFIX,innity.net - - DOMAIN-SUFFIX,inoprosport.su - - DOMAIN-SUFFIX,insenz.com - - DOMAIN-SUFFIX,inside.bitcomet.com - - DOMAIN-SUFFIX,inskin.vo.llnwd.net - - DOMAIN-SUFFIX,inst.360safe.com - - DOMAIN-SUFFIX,instabug.com - - DOMAIN-SUFFIX,install.kugou.com - - DOMAIN-SUFFIX,install.sidesearch.lycos.com - - DOMAIN-SUFFIX,install2.kugou.com - - DOMAIN-SUFFIX,instreet.cn - - DOMAIN-SUFFIX,int.dpool.sina.com.cn - - DOMAIN-SUFFIX,inte.theta.sogoucdn.com - - DOMAIN-SUFFIX,intellitxt.com - - DOMAIN-SUFFIX,intely.cn - - DOMAIN-SUFFIX,inter1ads.com - - DOMAIN-SUFFIX,interaction.bayimob.com - - DOMAIN-SUFFIX,interactive.huanqiu.com - - DOMAIN-SUFFIX,interest.mix.sina.com.cn - - DOMAIN-SUFFIX,ioc.mmakd.top - - DOMAIN-SUFFIX,ios.bugly.qq.com - - DOMAIN-SUFFIX,ios-dc.51y5.net - - DOMAIN-SUFFIX,ios-informationplatform.wps.cn - - DOMAIN-SUFFIX,iosipa.b0.upaiyun.com - - DOMAIN-SUFFIX,ip.hivps.xyz - - DOMAIN-SUFFIX,ip2.pxene.com - - DOMAIN-SUFFIX,ipengtai.huanqiu.com - - DOMAIN-SUFFIX,iperceptions.com - - DOMAIN-SUFFIX,iphonelog.shouji.baofeng.com - - DOMAIN-SUFFIX,ipic.staticsdo.com - - DOMAIN-SUFFIX,ipinyou.com - - DOMAIN-SUFFIX,ipm.atm.cp31.ott.cibntv.net - - DOMAIN-SUFFIX,ipm.atm.youku.com - - DOMAIN-SUFFIX,iqiyi.irs01.com - - DOMAIN-SUFFIX,ir.mail.126.com - - DOMAIN-SUFFIX,ir.mail.163.com - - DOMAIN-SUFFIX,ir.mail.yeah.net - - DOMAIN-SUFFIX,iroby.com - - DOMAIN-SUFFIX,irpmt.mail.163.com - - DOMAIN-SUFFIX,irs01.com - - DOMAIN-SUFFIX,irs01.net - - DOMAIN-SUFFIX,irs09.com - - DOMAIN-SUFFIX,ishop789.com - - DOMAIN-SUFFIX,ishowbg.com - - DOMAIN-SUFFIX,istreamsche.com - - DOMAIN-SUFFIX,itaoxiaoshuo.com - - DOMAIN-SUFFIX,item.ttkvod.com - - DOMAIN-SUFFIX,items.bingdiantao.com - - DOMAIN-SUFFIX,its.fugetech.com - - DOMAIN-SUFFIX,its-dori.tumblr.com - - DOMAIN-SUFFIX,iutr.uozwys.top - - DOMAIN-SUFFIX,iuuff.com - - DOMAIN-SUFFIX,ivy.pcauto.com.cn - - DOMAIN-SUFFIX,ivy.pcbaby.com.cn - - DOMAIN-SUFFIX,ivy.pclady.com.cn - - DOMAIN-SUFFIX,ivy.pconline.com.cn - - DOMAIN-SUFFIX,iwan.sogou.com - - DOMAIN-SUFFIX,iwanad.baidu.com - - DOMAIN-SUFFIX,ixpub.net - - DOMAIN-SUFFIX,j.6avz.com - - DOMAIN-SUFFIX,j.baminw.cn - - DOMAIN-SUFFIX,j.biquge520.cc - - DOMAIN-SUFFIX,j.br.baidu.com - - DOMAIN-SUFFIX,j.ccnovel.com - - DOMAIN-SUFFIX,j.chaorenjiaoshi.com - - DOMAIN-SUFFIX,j.dipowang.cn - - DOMAIN-SUFFIX,j.fd7c.com - - DOMAIN-SUFFIX,j.hbwcl.com - - DOMAIN-SUFFIX,j.hongyangpai.com - - DOMAIN-SUFFIX,j.jimeilm.com - - DOMAIN-SUFFIX,j.kfd3sm2c.com - - DOMAIN-SUFFIX,j.qijijs.top - - DOMAIN-SUFFIX,j.qiqivv.com - - DOMAIN-SUFFIX,j.qiqiww.com - - DOMAIN-SUFFIX,j.s11.cn - - DOMAIN-SUFFIX,j.sc1369.com - - DOMAIN-SUFFIX,j.sdqoi2d.com - - DOMAIN-SUFFIX,j.wan.liebao.cn - - DOMAIN-SUFFIX,j.wit.qq.com - - DOMAIN-SUFFIX,j.xinshipu.com - - DOMAIN-SUFFIX,j.yljiaoluo.com - - DOMAIN-SUFFIX,j.ytbt.cc - - DOMAIN-SUFFIX,j.zhdap.com - - DOMAIN-SUFFIX,j1.piaobing.com - - DOMAIN-SUFFIX,j17.shangc.net - - DOMAIN-SUFFIX,j17.xiumu.cn - - DOMAIN-SUFFIX,j520s.gzcl999.cn - - DOMAIN-SUFFIX,j7182.hfxcsl.cn - - DOMAIN-SUFFIX,ja.gamersky.com - - DOMAIN-SUFFIX,ja1.gamersky.com - - DOMAIN-SUFFIX,ja9377.com - - DOMAIN-SUFFIX,jack.okkkk.com - - DOMAIN-SUFFIX,jackaow.com - - DOMAIN-SUFFIX,jagcn.com - - DOMAIN-SUFFIX,jav23.com - - DOMAIN-SUFFIX,javhd.com - - DOMAIN-SUFFIX,jb.4hw.com.cn - - DOMAIN-SUFFIX,jb.asqql.com - - DOMAIN-SUFFIX,jb.dianshu119.com - - DOMAIN-SUFFIX,jb.eastlady.cn - - DOMAIN-SUFFIX,jb.ecar168.cn - - DOMAIN-SUFFIX,jb.mbaidu.top - - DOMAIN-SUFFIX,jb.mnkan.com - - DOMAIN-SUFFIX,jb.tupianzj.com - - DOMAIN-SUFFIX,jbcbuy.com - - DOMAIN-SUFFIX,jbflil.cn - - DOMAIN-SUFFIX,jbyy010.com - - DOMAIN-SUFFIX,jc.anhuilitian.net - - DOMAIN-SUFFIX,jc.xuqinqi.cn - - DOMAIN-SUFFIX,jc1.dayfund.cn - - DOMAIN-SUFFIX,jct.maptu.cn - - DOMAIN-SUFFIX,jczzjx.com - - DOMAIN-SUFFIX,jd.c-ptsp.com.cn - - DOMAIN-SUFFIX,jdb.jiudingcapital.cn - - DOMAIN-SUFFIX,jdb.jiudingcapital.com - - DOMAIN-SUFFIX,jddaw.com - - DOMAIN-SUFFIX,jdg.bjygfd.com - - DOMAIN-SUFFIX,jdkic.com - - DOMAIN-SUFFIX,jdlcg.cn - - DOMAIN-SUFFIX,jdlhg.com - - DOMAIN-SUFFIX,jdw.zjuwjdc.com - - DOMAIN-SUFFIX,jebe.renren.com - - DOMAIN-SUFFIX,jebe.xnimg.cn - - DOMAIN-SUFFIX,jellyfish.pandora.xiaomi.com - - DOMAIN-SUFFIX,jermr.com - - DOMAIN-SUFFIX,jesgoo.com - - DOMAIN-SUFFIX,jf.winads.cn - - DOMAIN-SUFFIX,jfhe.0769371.com - - DOMAIN-SUFFIX,jfm4.pop.baofeng.net - - DOMAIN-SUFFIX,jfqkj.com - - DOMAIN-SUFFIX,jgchq.com - - DOMAIN-SUFFIX,jghcy.com - - DOMAIN-SUFFIX,jhakie.com - - DOMAIN-SUFFIX,jhtcdj.com - - DOMAIN-SUFFIX,jhzl001.com - - DOMAIN-SUFFIX,ji.dazhantai.com - - DOMAIN-SUFFIX,jiaheyonggu.com - - DOMAIN-SUFFIX,jiajv.net - - DOMAIN-SUFFIX,jianbaimei.com - - DOMAIN-SUFFIX,jianduankm.com - - DOMAIN-SUFFIX,jianmei123.com - - DOMAIN-SUFFIX,jiansuo.dsxdn.com - - DOMAIN-SUFFIX,jiaoben.eastday.com - - DOMAIN-SUFFIX,jiaoben.ganji.cn - - DOMAIN-SUFFIX,jiaoben.jucanw.com - - DOMAIN-SUFFIX,jiaoben.junmeng.com - - DOMAIN-SUFFIX,jiaoben.xinshipu.cn - - DOMAIN-SUFFIX,jias.haotxt.com - - DOMAIN-SUFFIX,jiathis.com - - DOMAIN-SUFFIX,jiawen88.com - - DOMAIN-SUFFIX,jiayi1.oss-cn-shanghai.aliyuncs.com - - DOMAIN-SUFFIX,jiedaibao.com - - DOMAIN-SUFFIX,jiehantai.com - - DOMAIN-SUFFIX,jiehunmishu.com - - DOMAIN-SUFFIX,jifeidandar.com - - DOMAIN-SUFFIX,jifen.2345.com - - DOMAIN-SUFFIX,jihehuaban.com - - DOMAIN-SUFFIX,jihehuaban.com.cn - - DOMAIN-SUFFIX,jimdo.com - - DOMAIN-SUFFIX,jimeilm.com - - DOMAIN-SUFFIX,jindu179.com - - DOMAIN-SUFFIX,jing.58.com - - DOMAIN-SUFFIX,jingdian230.meilika.net - - DOMAIN-SUFFIX,jinghuazhijia.com - - DOMAIN-SUFFIX,jinsha11833.com - - DOMAIN-SUFFIX,jinshagt222.com - - DOMAIN-SUFFIX,jira.vpon.com - - DOMAIN-SUFFIX,jisucn.com - - DOMAIN-SUFFIX,jiu.njdkgm.com - - DOMAIN-SUFFIX,jiubuhua.com - - DOMAIN-SUFFIX,jiuku.cc - - DOMAIN-SUFFIX,jiyou2014.com - - DOMAIN-SUFFIX,jizzads.com - - DOMAIN-SUFFIX,jj123.com.cn - - DOMAIN-SUFFIX,jjhd47.115seo.com - - DOMAIN-SUFFIX,jjx.xjtxcj.com - - DOMAIN-SUFFIX,jjxgly.com - - DOMAIN-SUFFIX,jjyy.gaopengqcdz.cn - - DOMAIN-SUFFIX,jk939.com - - DOMAIN-SUFFIX,jkjjkj.top - - DOMAIN-SUFFIX,jkmxy.com - - DOMAIN-SUFFIX,jl027.com - - DOMAIN-SUFFIX,jlssbz.com - - DOMAIN-SUFFIX,jmonitor.jiuzhilan.com - - DOMAIN-SUFFIX,jmsyzj.com - - DOMAIN-SUFFIX,jmxlaser.com - - DOMAIN-SUFFIX,jndczg.com - - DOMAIN-SUFFIX,jnrsjm.com - - DOMAIN-SUFFIX,jnsdkjzs.com - - DOMAIN-SUFFIX,jnsz.net.cn - - DOMAIN-SUFFIX,jnyngg.cn - - DOMAIN-SUFFIX,johtzj.com - - DOMAIN-SUFFIX,jointreport-switch.com - - DOMAIN-SUFFIX,jossuer.net - - DOMAIN-SUFFIX,joyfuldoors.com - - DOMAIN-SUFFIX,jp88.cc - - DOMAIN-SUFFIX,jpg.cooguo.com - - DOMAIN-SUFFIX,jpg.inte.sogoucdn.com - - DOMAIN-SUFFIX,jph.itiexue.net - - DOMAIN-SUFFIX,jpush.cn - - DOMAIN-SUFFIX,jpush.html5.qq.com - - DOMAIN-SUFFIX,jqmt.qq.com - - DOMAIN-SUFFIX,jqz9.com - - DOMAIN-SUFFIX,jrdkc.com - - DOMAIN-SUFFIX,jrhaigou.com - - DOMAIN-SUFFIX,jrpt.jrptweb.org - - DOMAIN-SUFFIX,js.05sun.com - - DOMAIN-SUFFIX,js.133u.com - - DOMAIN-SUFFIX,js.139y.com - - DOMAIN-SUFFIX,js.1688988.com - - DOMAIN-SUFFIX,js.2011.8684.com - - DOMAIN-SUFFIX,js.45bubu.com - - DOMAIN-SUFFIX,js.4hw.com.cn - - DOMAIN-SUFFIX,js.5068.com - - DOMAIN-SUFFIX,js.51taifu.com - - DOMAIN-SUFFIX,js.578965.com - - DOMAIN-SUFFIX,js.5iydz.com - - DOMAIN-SUFFIX,js.9669.cn - - DOMAIN-SUFFIX,js.adxkj.com - - DOMAIN-SUFFIX,js.bju888.com - - DOMAIN-SUFFIX,js.bxwns.com - - DOMAIN-SUFFIX,js.bxwxtxt.com - - DOMAIN-SUFFIX,js.cdjqjy.com - - DOMAIN-SUFFIX,js.cncrk.com - - DOMAIN-SUFFIX,js.cnmo.com - - DOMAIN-SUFFIX,js.cnscdj.com - - DOMAIN-SUFFIX,js.ctags.cn - - DOMAIN-SUFFIX,js.daxueshengqiandai.com - - DOMAIN-SUFFIX,js.dkqapp.cn - - DOMAIN-SUFFIX,js.duotegame.com - - DOMAIN-SUFFIX,js.ea3w.com - - DOMAIN-SUFFIX,js.feitian001.com - - DOMAIN-SUFFIX,js.fengniao.com - - DOMAIN-SUFFIX,js.firefang.cn - - DOMAIN-SUFFIX,js.gewuwen.com - - DOMAIN-SUFFIX,js.hkslg520.com - - DOMAIN-SUFFIX,js.hslyqs.com - - DOMAIN-SUFFIX,js.icast.cn - - DOMAIN-SUFFIX,js.idgdmg.com.cn - - DOMAIN-SUFFIX,js.jianbaimei.com - - DOMAIN-SUFFIX,js.jxabp.com.cn - - DOMAIN-SUFFIX,js.lieqitianxia.cn - - DOMAIN-SUFFIX,js.mbaidu.top - - DOMAIN-SUFFIX,js.mingxianshanghang.cn - - DOMAIN-SUFFIX,js.mnkan.com - - DOMAIN-SUFFIX,js.moatads.com - - DOMAIN-SUFFIX,js.mumayi.net - - DOMAIN-SUFFIX,js.paochala.net - - DOMAIN-SUFFIX,js.ptmind.com - - DOMAIN-SUFFIX,js.pub.tom.com - - DOMAIN-SUFFIX,js.pyangzi.com - - DOMAIN-SUFFIX,js.revsci.net - - DOMAIN-SUFFIX,js.ruiwen.com - - DOMAIN-SUFFIX,js.saiqizhi.com - - DOMAIN-SUFFIX,js.sanwen.net - - DOMAIN-SUFFIX,js.soduso.cc - - DOMAIN-SUFFIX,js.soonyou123.com - - DOMAIN-SUFFIX,js.start1999.com - - DOMAIN-SUFFIX,js.szande.com.cn - - DOMAIN-SUFFIX,js.ubaike.cn - - DOMAIN-SUFFIX,js.um0592.com - - DOMAIN-SUFFIX,js.union-wifi.com - - DOMAIN-SUFFIX,js.wo-x.cn - - DOMAIN-SUFFIX,js.wu65.com - - DOMAIN-SUFFIX,js.xiansuper.com - - DOMAIN-SUFFIX,js.xtgreat.com - - DOMAIN-SUFFIX,js.xuexila.com - - DOMAIN-SUFFIX,js.ydeprint.com - - DOMAIN-SUFFIX,js.yixui.com - - DOMAIN-SUFFIX,js.ylunion.com - - DOMAIN-SUFFIX,js.yoyi.tv - - DOMAIN-SUFFIX,js.zol.com.cn - - DOMAIN-SUFFIX,js.zyrfanli.com - - DOMAIN-SUFFIX,js1.2abc8.com - - DOMAIN-SUFFIX,js1.nend.net - - DOMAIN-SUFFIX,js-1.pchome.net - - DOMAIN-SUFFIX,js1.xbaixing.com - - DOMAIN-SUFFIX,js1.zuocai.tv - - DOMAIN-SUFFIX,js1151.yongkang6.com - - DOMAIN-SUFFIX,js1151.zhudiaosz.com - - DOMAIN-SUFFIX,js1157.yongkang6.com - - DOMAIN-SUFFIX,js123.0937jyg.com - - DOMAIN-SUFFIX,js1516.0937jyg.com - - DOMAIN-SUFFIX,js1517.0937jyg.com - - DOMAIN-SUFFIX,js205.dupinpu.com - - DOMAIN-SUFFIX,js2254.hfxcsl.cn - - DOMAIN-SUFFIX,js2553.xjzyq.com - - DOMAIN-SUFFIX,js257.0937jyg.com - - DOMAIN-SUFFIX,js2672.xjzyq.com - - DOMAIN-SUFFIX,js3492.yongkang6.com - - DOMAIN-SUFFIX,js3743.yongkang6.com - - DOMAIN-SUFFIX,js3768.zhudiaosz.com - - DOMAIN-SUFFIX,js3810.yongkang6.com - - DOMAIN-SUFFIX,js3810.zhudiaosz.com - - DOMAIN-SUFFIX,js4.eastmoney.com - - DOMAIN-SUFFIX,js412.0937jyg.com - - DOMAIN-SUFFIX,js412.yexfes.com - - DOMAIN-SUFFIX,js412.yqjxzw.com - - DOMAIN-SUFFIX,js4163.yongkang6.com - - DOMAIN-SUFFIX,js4273.zhudiaosz.com - - DOMAIN-SUFFIX,js453.zhudiaosz.com - - DOMAIN-SUFFIX,js50.yxlady.com - - DOMAIN-SUFFIX,js5162.yongkang6.com - - DOMAIN-SUFFIX,js6882.jianbangjiaoyu.com - - DOMAIN-SUFFIX,js6882.mengchengbao.com - - DOMAIN-SUFFIX,js7004.hnfpgm.com - - DOMAIN-SUFFIX,js7129.dlkjgjmy.com - - DOMAIN-SUFFIX,js7129.shxqeps.com - - DOMAIN-SUFFIX,js7152.shxqeps.com - - DOMAIN-SUFFIX,js74.0937jyg.com - - DOMAIN-SUFFIX,js74.yexfes.com - - DOMAIN-SUFFIX,js74.yqjxzw.com - - DOMAIN-SUFFIX,js7405.mengchengbao.com - - DOMAIN-SUFFIX,js84.enyayinxiang.com - - DOMAIN-SUFFIX,js883.hnfpgm.com - - DOMAIN-SUFFIX,js883.yongkang6.com - - DOMAIN-SUFFIX,js9318.bllzgqbyp.com - - DOMAIN-SUFFIX,jsadt.com - - DOMAIN-SUFFIX,js-agent.newrelic.com - - DOMAIN-SUFFIX,js-apac-ss.ysm.yahoo.com - - DOMAIN-SUFFIX,jsb.qianzhan.com - - DOMAIN-SUFFIX,jsc.adskeeper.co.uk - - DOMAIN-SUFFIX,jsc.marketgid.com - - DOMAIN-SUFFIX,jsc.mgid.com - - DOMAIN-SUFFIX,jscdn.99pps.com - - DOMAIN-SUFFIX,jscode.jbzj.com - - DOMAIN-SUFFIX,jsjs.nthyn.com - - DOMAIN-SUFFIX,jskrnekewe.mofans.net - - DOMAIN-SUFFIX,jsm.39yst.com - - DOMAIN-SUFFIX,jsm.9939.com - - DOMAIN-SUFFIX,jsmwd.com - - DOMAIN-SUFFIX,jsnp.golden1.sogou.com - - DOMAIN-SUFFIX,jsnywl.kfi8.com - - DOMAIN-SUFFIX,json.gewuwen.com - - DOMAIN-SUFFIX,jspg.cc - - DOMAIN-SUFFIX,jsqmt.qq.com - - DOMAIN-SUFFIX,jssd.uumeitu.com - - DOMAIN-SUFFIX,jt.yunxiufang.net - - DOMAIN-SUFFIX,jtug.code.poyang.com - - DOMAIN-SUFFIX,jtxh.net - - DOMAIN-SUFFIX,jtys8.com - - DOMAIN-SUFFIX,ju33.com - - DOMAIN-SUFFIX,juicyads.com - - DOMAIN-SUFFIX,jump.luna.58.com - - DOMAIN-SUFFIX,jumpe.58xmgys.com - - DOMAIN-SUFFIX,jumpluna.58.com - - DOMAIN-SUFFIX,jumpm.58xmgys.com - - DOMAIN-SUFFIX,jundazulin.com - - DOMAIN-SUFFIX,junfull.com - - DOMAIN-SUFFIX,juren0.com - - DOMAIN-SUFFIX,jusha.com - - DOMAIN-SUFFIX,jutou5.com - - DOMAIN-SUFFIX,juzi.cn - - DOMAIN-SUFFIX,juzilm.com - - DOMAIN-SUFFIX,jwg365.cn - - DOMAIN-SUFFIX,jwpltx.com - - DOMAIN-SUFFIX,jwqj.net - - DOMAIN-SUFFIX,jwz.3conline.com - - DOMAIN-SUFFIX,jx5m.com - - DOMAIN-SUFFIX,jxad.jx163.com - - DOMAIN-SUFFIX,jxbjt.com - - DOMAIN-SUFFIX,jxfxsw.com - - DOMAIN-SUFFIX,jxjzny.com - - DOMAIN-SUFFIX,jxlog.istreamsche.com - - DOMAIN-SUFFIX,jxlqgs.com - - DOMAIN-SUFFIX,jxxiangchu.com - - DOMAIN-SUFFIX,jyc.njxczy.com - - DOMAIN-SUFFIX,jyd.fjzdmy.com - - DOMAIN-SUFFIX,jystea.com - - DOMAIN-SUFFIX,jyz.fjtzjy.com - - DOMAIN-SUFFIX,jzkapp.com - - DOMAIN-SUFFIX,jzm81.com - - DOMAIN-SUFFIX,k.85wa.cn - - DOMAIN-SUFFIX,k.ctsywy.com - - DOMAIN-SUFFIX,k1w5.me - - DOMAIN-SUFFIX,k2team.kyiv.ua - - DOMAIN-SUFFIX,k3bos.com - - DOMAIN-SUFFIX,kafka8.com - - DOMAIN-SUFFIX,kaitongyewu.com - - DOMAIN-SUFFIX,karma.mdpcdn.com - - DOMAIN-SUFFIX,kas.keydot.net - - DOMAIN-SUFFIX,kawa11.space - - DOMAIN-SUFFIX,kbnetworkz.s3.amazonaws.com - - DOMAIN-SUFFIX,kddtri.cn - - DOMAIN-SUFFIX,kejet.com - - DOMAIN-SUFFIX,kejet.net - - DOMAIN-SUFFIX,kele4.com - - DOMAIN-SUFFIX,ker.pic2pic.site - - DOMAIN-SUFFIX,kermit.macnn.com - - DOMAIN-SUFFIX,keryt.jnservo.com - - DOMAIN-SUFFIX,ketchapp.org - - DOMAIN-SUFFIX,keydot.net - - DOMAIN-SUFFIX,keyrun.cn - - DOMAIN-SUFFIX,keyrun.com - - DOMAIN-SUFFIX,keyshot.cc - - DOMAIN-SUFFIX,keystone.mwbsys.com - - DOMAIN-SUFFIX,keyyou.net - - DOMAIN-SUFFIX,kfewaz.zh1155.com - - DOMAIN-SUFFIX,kfhuihe.net - - DOMAIN-SUFFIX,kfluoa.com - - DOMAIN-SUFFIX,kgcjgsa8.net - - DOMAIN-SUFFIX,kgmobilestat.kugou.com - - DOMAIN-SUFFIX,kguke.com - - DOMAIN-SUFFIX,kho3au7l4z.me - - DOMAIN-SUFFIX,kicnse.com - - DOMAIN-SUFFIX,kingdeecn.cn - - DOMAIN-SUFFIX,kingwam.com - - DOMAIN-SUFFIX,kio.quanliyouxi.cn - - DOMAIN-SUFFIX,kiss.blockplus.cc - - DOMAIN-SUFFIX,kjgen.com - - DOMAIN-SUFFIX,kk7kk.com - - DOMAIN-SUFFIX,kkcaicai.com - - DOMAIN-SUFFIX,kkpgv.kankan.com - - DOMAIN-SUFFIX,kkpgv2.kankan.com - - DOMAIN-SUFFIX,kld666.com - - DOMAIN-SUFFIX,kldmm.com - - DOMAIN-SUFFIX,klsdmr.com - - DOMAIN-SUFFIX,kl-toys.com - - DOMAIN-SUFFIX,klz28.com - - DOMAIN-SUFFIX,km.jianduankm.com - - DOMAIN-SUFFIX,kmadou.com - - DOMAIN-SUFFIX,kmd365.com - - DOMAIN-SUFFIX,kmwqxqh.com - - DOMAIN-SUFFIX,kn.aishake.cn - - DOMAIN-SUFFIX,kn.archrug.com - - DOMAIN-SUFFIX,kn.barnfps.com - - DOMAIN-SUFFIX,kn.bjbrtc.com - - DOMAIN-SUFFIX,kn.chapnap.com - - DOMAIN-SUFFIX,kn.chgdf.cn - - DOMAIN-SUFFIX,kn.czzdf.com - - DOMAIN-SUFFIX,kn.dyscsm.cn - - DOMAIN-SUFFIX,kn.gzcce.cn - - DOMAIN-SUFFIX,kn.jzhrty.cn - - DOMAIN-SUFFIX,kn.nykps.com - - DOMAIN-SUFFIX,kn.qhdfxkj.com - - DOMAIN-SUFFIX,kn.qqqmdq.com - - DOMAIN-SUFFIX,kn.qzdaren.com - - DOMAIN-SUFFIX,kn.ynmhg.cn - - DOMAIN-SUFFIX,kn.zstjy.com - - DOMAIN-SUFFIX,kn.zzdahan.com - - DOMAIN-SUFFIX,knet.cn - - DOMAIN-SUFFIX,knnwdyou.com - - DOMAIN-SUFFIX,kob.adxkj.com - - DOMAIN-SUFFIX,kochava.com - - DOMAIN-SUFFIX,kod4pc293.com - - DOMAIN-SUFFIX,koowo.com - - DOMAIN-SUFFIX,koukou7.com - - DOMAIN-SUFFIX,kovjo.com - - DOMAIN-SUFFIX,kqy1.com - - DOMAIN-SUFFIX,kr.sybspools.com - - DOMAIN-SUFFIX,krux.net - - DOMAIN-SUFFIX,ksdsuzhou.com - - DOMAIN-SUFFIX,ksr.juuhe.com - - DOMAIN-SUFFIX,ksrsy.com - - DOMAIN-SUFFIX,kstj.baidu.com - - DOMAIN-SUFFIX,kt220.com - - DOMAIN-SUFFIX,ktivn.uranus.sogou.com - - DOMAIN-SUFFIX,ktunions.com - - DOMAIN-SUFFIX,ktv0311.com - - DOMAIN-SUFFIX,ku63.com - - DOMAIN-SUFFIX,ku9377.com - - DOMAIN-SUFFIX,kuaigao.rrsdl.com - - DOMAIN-SUFFIX,kuaikaiapp.com - - DOMAIN-SUFFIX,kuaikan.netmon.360safe.com - - DOMAIN-SUFFIX,kuaipai666.cn - - DOMAIN-SUFFIX,kuaizip.com - - DOMAIN-SUFFIX,kualianyingxiao.cn - - DOMAIN-SUFFIX,kudifish.com - - DOMAIN-SUFFIX,kuguopush.com - - DOMAIN-SUFFIX,kumihua.com - - DOMAIN-SUFFIX,kuwoyy.com - - DOMAIN-SUFFIX,kuyic.m.gxwztv.com - - DOMAIN-SUFFIX,kuzai.cooguo.com - - DOMAIN-SUFFIX,kw.ra.icast.cn - - DOMAIN-SUFFIX,kwmsg.kuwo.cn - - DOMAIN-SUFFIX,kwurl.ucweb.com - - DOMAIN-SUFFIX,kxlogo.knet.cn - - DOMAIN-SUFFIX,kxmav2.com - - DOMAIN-SUFFIX,kxrxh.com - - DOMAIN-SUFFIX,kyad88.com - - DOMAIN-SUFFIX,kyzhecmvpiaw.com - - DOMAIN-SUFFIX,l.adiers.com - - DOMAIN-SUFFIX,l.betrad.com - - DOMAIN-SUFFIX,l.minisplat.cn - - DOMAIN-SUFFIX,l.mnjkw.cn - - DOMAIN-SUFFIX,l.supfast.net - - DOMAIN-SUFFIX,l.ujian.cc - - DOMAIN-SUFFIX,l.yidianzixun.com - - DOMAIN-SUFFIX,l1.soarfi.cn - - DOMAIN-SUFFIX,l2.soarfi.cn - - DOMAIN-SUFFIX,l9bdhcgihw.neihanw.com - - DOMAIN-SUFFIX,labs.ra.icast.cn - - DOMAIN-SUFFIX,laigame7.com - - DOMAIN-SUFFIX,laiququan.com - - DOMAIN-SUFFIX,lajizhan.org - - DOMAIN-SUFFIX,lan.btwan5.com - - DOMAIN-SUFFIX,langchars.com - - DOMAIN-SUFFIX,langjiyisheng.com - - DOMAIN-SUFFIX,lansha.tv - - DOMAIN-SUFFIX,lanxiangji.com - - DOMAIN-SUFFIX,laomaotao.net - - DOMAIN-SUFFIX,laoqu123.com - - DOMAIN-SUFFIX,lashou1000.com - - DOMAIN-SUFFIX,lb.gtimg.com - - DOMAIN-SUFFIX,lb.statsevent.com - - DOMAIN-SUFFIX,lbstatic-a.akamaihd.net - - DOMAIN-SUFFIX,lbszb.tongbu.com - - DOMAIN-SUFFIX,lc.jiathis.com - - DOMAIN-SUFFIX,lcs.dev.surepush.cn - - DOMAIN-SUFFIX,ld.mediaget.com - - DOMAIN-SUFFIX,ldpgl.code.mytanwan.com - - DOMAIN-SUFFIX,lds.lenovomm.com - - DOMAIN-SUFFIX,lds.zui.com - - DOMAIN-SUFFIX,ldy.350.com - - DOMAIN-SUFFIX,ldy.adqku.cn - - DOMAIN-SUFFIX,le4le.com - - DOMAIN-SUFFIX,leadbolt.net - - DOMAIN-SUFFIX,leadboltads.net - - DOMAIN-SUFFIX,leadboltapps.net - - DOMAIN-SUFFIX,leadboltmobile.net - - DOMAIN-SUFFIX,ledou.dl.uu.cc - - DOMAIN-SUFFIX,leeyuoxs.com - - DOMAIN-SUFFIX,legozu.com - - DOMAIN-SUFFIX,lele999.com - - DOMAIN-SUFFIX,lenzmx.com - - DOMAIN-SUFFIX,lessplay.com - - DOMAIN-SUFFIX,letv.irs01.com - - DOMAIN-SUFFIX,leztc.com - - DOMAIN-SUFFIX,lflili.com - - DOMAIN-SUFFIX,lfyuanai.com - - DOMAIN-SUFFIX,lg2.jointreport-switch.com - - DOMAIN-SUFFIX,lg4.jointreport-switch.com - - DOMAIN-SUFFIX,lhafy.com - - DOMAIN-SUFFIX,lhengilin.com - - DOMAIN-SUFFIX,lhusy.com - - DOMAIN-SUFFIX,li.anyysz.com - - DOMAIN-SUFFIX,liangao.com - - DOMAIN-SUFFIX,liangziweixg.com - - DOMAIN-SUFFIX,lib.haotv8.com - - DOMAIN-SUFFIX,liba.haotv8.com - - DOMAIN-SUFFIX,libs.tvmao.cn - - DOMAIN-SUFFIX,license.lumion3d.com - - DOMAIN-SUFFIX,license.lumion3d.net - - DOMAIN-SUFFIX,licenses.ashampoo.com - - DOMAIN-SUFFIX,licensing.tableausoftware.com - - DOMAIN-SUFFIX,life.e0575.com - - DOMAIN-SUFFIX,life.imagepix.org - - DOMAIN-SUFFIX,lightson.vpsboard.com - - DOMAIN-SUFFIX,linezing.com - - DOMAIN-SUFFIX,lingdian98.com - - DOMAIN-SUFFIX,linkbide.com - - DOMAIN-SUFFIX,linkeye.ximalaya.com - - DOMAIN-SUFFIX,linkpage.cn - - DOMAIN-SUFFIX,links.services.disqus.com - - DOMAIN-SUFFIX,linktech.cn - - DOMAIN-SUFFIX,linyao.dxsdb.com - - DOMAIN-SUFFIX,lishuanghao.com - - DOMAIN-SUFFIX,listenother.com - - DOMAIN-SUFFIX,listlog.baofeng.net - - DOMAIN-SUFFIX,liuliguo.com - - DOMAIN-SUFFIX,live.tvpot.daum.net - - DOMAIN-SUFFIX,livehapp.com - - DOMAIN-SUFFIX,livep.l.ott.video.qq.com - - DOMAIN-SUFFIX,lives.l.cp81.ott.cibntv.net - - DOMAIN-SUFFIX,lives.l.ott.video.qq.com - - DOMAIN-SUFFIX,lives.l.qq.com - - DOMAIN-SUFFIX,liveupdate.mac.sandai.net - - DOMAIN-SUFFIX,lixiangmo.com - - DOMAIN-SUFFIX,ljrtb.cn - - DOMAIN-SUFFIX,lkf1.m.sanhao3.com - - DOMAIN-SUFFIX,ll.a.hulu.com - - DOMAIN-SUFFIX,ll.gxsky.com - - DOMAIN-SUFFIX,ll.hudong.com - - DOMAIN-SUFFIX,ll.songlaoban.cn - - DOMAIN-SUFFIX,ll38.com - - DOMAIN-SUFFIX,lm.dawenxue.org - - DOMAIN-SUFFIX,lm.licenses.adobe.com - - DOMAIN-SUFFIX,lm.souid.com - - DOMAIN-SUFFIX,lm.xiashu.la - - DOMAIN-SUFFIX,lml.jfjsp.com - - DOMAIN-SUFFIX,lmlicenses.wip4.adobe.com - - DOMAIN-SUFFIX,lmwap.awtks.com - - DOMAIN-SUFFIX,lndjj.com - - DOMAIN-SUFFIX,lnk0.com - - DOMAIN-SUFFIX,lnk8z.com - - DOMAIN-SUFFIX,lnr2.com - - DOMAIN-SUFFIX,load77.exelator.com - - DOMAIN-SUFFIX,loading.baofeng5.baofeng.net - - DOMAIN-SUFFIX,loadm.exelator.com - - DOMAIN-SUFFIX,loandatec.com - - DOMAIN-SUFFIX,localnetwork.uop - - DOMAIN-SUFFIX,localytics.com - - DOMAIN-SUFFIX,location.ximalaya.com - - DOMAIN-SUFFIX,locdrop.query.yahoo.com - - DOMAIN-SUFFIX,log1.17173.com - - DOMAIN-SUFFIX,log1.molitv.cn - - DOMAIN-SUFFIX,log2.air.yoyi.com.cn - - DOMAIN-SUFFIX,log2.molitv.cn - - DOMAIN-SUFFIX,log-dmp.suishenyun.cn - - DOMAIN-SUFFIX,logonext.tv.kuyun.com - - DOMAIN-SUFFIX,logoshejishi.com - - DOMAIN-SUFFIX,logstat.caixin.com - - DOMAIN-SUFFIX,logupdate.avlyun.sec.miui.com - - DOMAIN-SUFFIX,lol.pnhfc.com - - DOMAIN-SUFFIX,loldy.jiangmg.com - - DOMAIN-SUFFIX,lomark.cn - - DOMAIN-SUFFIX,londonprivaterentals.standard.co.uk - - DOMAIN-SUFFIX,looky.hyves.org - - DOMAIN-SUFFIX,lottery.kuaiya.cn - - DOMAIN-SUFFIX,lotuseed.com - - DOMAIN-SUFFIX,lovestyl.com - - DOMAIN-SUFFIX,lovfp.com - - DOMAIN-SUFFIX,lp.jiuzhilan.com - - DOMAIN-SUFFIX,lp.startapp.com - - DOMAIN-SUFFIX,lp1901.com - - DOMAIN-SUFFIX,lpsxssm.com - - DOMAIN-SUFFIX,lqmohun.com - - DOMAIN-SUFFIX,lrswl.com - - DOMAIN-SUFFIX,ls.webmd.com - - DOMAIN-SUFFIX,lsxmg.com - - DOMAIN-SUFFIX,ltcprtc.com - - DOMAIN-SUFFIX,ltheanine.cn - - DOMAIN-SUFFIX,lthxz.cn - - DOMAIN-SUFFIX,lu.sogou.com - - DOMAIN-SUFFIX,lubosheng.cn - - DOMAIN-SUFFIX,lucting.cn - - DOMAIN-SUFFIX,lufax.com - - DOMAIN-SUFFIX,luotediao.net - - DOMAIN-SUFFIX,lvjian66.com - - DOMAIN-SUFFIX,lw1.cdmediaworld.com - - DOMAIN-SUFFIX,lw2.gamecopyworld.com - - DOMAIN-SUFFIX,lwnne.cn - - DOMAIN-SUFFIX,lwq.wangketuan.com - - DOMAIN-SUFFIX,lx167.com - - DOMAIN-SUFFIX,lxcdn.dl.files.xiaomi.net - - DOMAIN-SUFFIX,lxqcgj.com - - DOMAIN-SUFFIX,lxting.com - - DOMAIN-SUFFIX,lx-upload-log.yidianzixun.com - - DOMAIN-SUFFIX,lyaeccn.com - - DOMAIN-SUFFIX,lyapi.1391.com - - DOMAIN-SUFFIX,lycos-eu.imrworldwide.com - - DOMAIN-SUFFIX,lyhdream.com - - DOMAIN-SUFFIX,lyjk.1391.com - - DOMAIN-SUFFIX,lynndollin.com - - DOMAIN-SUFFIX,lyrymy.com - - DOMAIN-SUFFIX,lytubaobao.com - - DOMAIN-SUFFIX,lyunsd.cn - - DOMAIN-SUFFIX,lyztdz.com - - DOMAIN-SUFFIX,lz.chaelc.com - - DOMAIN-SUFFIX,lz.whafwl.com - - DOMAIN-SUFFIX,lzjycy.com - - DOMAIN-SUFFIX,lzmm8.com - - DOMAIN-SUFFIX,m.027blzs.com - - DOMAIN-SUFFIX,m.0531mnk.net - - DOMAIN-SUFFIX,m.107279.com - - DOMAIN-SUFFIX,m.118ex.cn - - DOMAIN-SUFFIX,m.1768.com - - DOMAIN-SUFFIX,m.1919388.net - - DOMAIN-SUFFIX,m.28487.net - - DOMAIN-SUFFIX,m.3987.com - - DOMAIN-SUFFIX,m.495495.com - - DOMAIN-SUFFIX,m.51xmgys.com - - DOMAIN-SUFFIX,m.52tushuo.com - - DOMAIN-SUFFIX,m.551144.com - - DOMAIN-SUFFIX,m.640640.com - - DOMAIN-SUFFIX,m.649649.com - - DOMAIN-SUFFIX,m.7180443.com - - DOMAIN-SUFFIX,m.77vcd.com - - DOMAIN-SUFFIX,m.937920.com - - DOMAIN-SUFFIX,m.abfirst.cn - - DOMAIN-SUFFIX,m.acaox.com - - DOMAIN-SUFFIX,m.achig.com - - DOMAIN-SUFFIX,m.ad.zhangyue.com - - DOMAIN-SUFFIX,m.adaog.com - - DOMAIN-SUFFIX,m.adxpop.com - - DOMAIN-SUFFIX,m.afoux.com - - DOMAIN-SUFFIX,m.anmeilai.net - - DOMAIN-SUFFIX,m.anzhuotan.com - - DOMAIN-SUFFIX,m.apxyz.com - - DOMAIN-SUFFIX,m.aqiudaohang.com - - DOMAIN-SUFFIX,m.assigned.cn - - DOMAIN-SUFFIX,m.aty.cp45.ott.cibntv.net - - DOMAIN-SUFFIX,m.aty.snmsohu.aisee.tv - - DOMAIN-SUFFIX,m.axsre.com - - DOMAIN-SUFFIX,m.baidu.com.yiqisee.cn - - DOMAIN-SUFFIX,m.baidu.com.zhiduo.org - - DOMAIN-SUFFIX,m.bailingjiankang.com - - DOMAIN-SUFFIX,m.baiyangzs.com - - DOMAIN-SUFFIX,m.bapkt.com - - DOMAIN-SUFFIX,m.bbvjs.com - - DOMAIN-SUFFIX,m.bdiae.com - - DOMAIN-SUFFIX,m.beacon.sina.com.cn - - DOMAIN-SUFFIX,m.bentengcn.com - - DOMAIN-SUFFIX,m.biquge5200.cc - - DOMAIN-SUFFIX,m.bokanedu.net - - DOMAIN-SUFFIX,m.bsnnk.com - - DOMAIN-SUFFIX,m.bss.pandora.xiaomi.com - - DOMAIN-SUFFIX,m.bvoer.com - - DOMAIN-SUFFIX,m.bvosv.com - - DOMAIN-SUFFIX,m.casbanlly.com - - DOMAIN-SUFFIX,m.cbeif.com - - DOMAIN-SUFFIX,m.ccunf.com - - DOMAIN-SUFFIX,m.cdfzcz.com - - DOMAIN-SUFFIX,m.cenrs.com - - DOMAIN-SUFFIX,m.chenhuia.com - - DOMAIN-SUFFIX,m.chexiw.com - - DOMAIN-SUFFIX,m.chfuw.com - - DOMAIN-SUFFIX,m.cjieh.com - - DOMAIN-SUFFIX,m.ckikq.com - - DOMAIN-SUFFIX,m.clkservice.youdao.com - - DOMAIN-SUFFIX,m.cocounion.com - - DOMAIN-SUFFIX,m.codlw.com - - DOMAIN-SUFFIX,m.coenr.com - - DOMAIN-SUFFIX,m.couas.com - - DOMAIN-SUFFIX,m.cqytjzgc.com - - DOMAIN-SUFFIX,m.ctsywy.com - - DOMAIN-SUFFIX,m.cudaojia.com - - DOMAIN-SUFFIX,m.cuoas.com - - DOMAIN-SUFFIX,m.cuoss.com - - DOMAIN-SUFFIX,m.daishuxy.com - - DOMAIN-SUFFIX,m.dante2007.com - - DOMAIN-SUFFIX,m.data.mob.com - - DOMAIN-SUFFIX,m.dbaiz.com - - DOMAIN-SUFFIX,m.dgaoz.com - - DOMAIN-SUFFIX,m.diogv.com - - DOMAIN-SUFFIX,m.djhhy.com - - DOMAIN-SUFFIX,m.dnfeu.com - - DOMAIN-SUFFIX,m.doodlemobile.com - - DOMAIN-SUFFIX,m.dsjre.com - - DOMAIN-SUFFIX,m.du1du.org - - DOMAIN-SUFFIX,m.duias.com - - DOMAIN-SUFFIX,m.duobao999.com - - DOMAIN-SUFFIX,m.dxmci.com - - DOMAIN-SUFFIX,m.edo5.com - - DOMAIN-SUFFIX,m.ee-skin.com - - DOMAIN-SUFFIX,m.ee-vip.net - - DOMAIN-SUFFIX,m.efeiy.com - - DOMAIN-SUFFIX,m.ehxyz.com - - DOMAIN-SUFFIX,m.emgwq.com - - DOMAIN-SUFFIX,m.enjuk.com - - DOMAIN-SUFFIX,m.ennmt.com - - DOMAIN-SUFFIX,m.fbaix.com - - DOMAIN-SUFFIX,m.fbaot.com - - DOMAIN-SUFFIX,m.fcaot.com - - DOMAIN-SUFFIX,m.fcuit.com - - DOMAIN-SUFFIX,m.fecjf.cn - - DOMAIN-SUFFIX,m.feirs.com - - DOMAIN-SUFFIX,m.fengwanwl.com - - DOMAIN-SUFFIX,m.fenrs.com - - DOMAIN-SUFFIX,m.fhxsw.org - - DOMAIN-SUFFIX,m.fimky.com - - DOMAIN-SUFFIX,m.fkkse.com - - DOMAIN-SUFFIX,m.fkogs.com - - DOMAIN-SUFFIX,m.focuscat.com - - DOMAIN-SUFFIX,m.fouas.com - - DOMAIN-SUFFIX,m.foumm.com - - DOMAIN-SUFFIX,m.fstaw.com - - DOMAIN-SUFFIX,m.fwjoi.com - - DOMAIN-SUFFIX,m.fxbga.com - - DOMAIN-SUFFIX,m.fzyda.com - - DOMAIN-SUFFIX,m.gameyun907.net - - DOMAIN-SUFFIX,m.ganrs.com - - DOMAIN-SUFFIX,m.gbieg.com - - DOMAIN-SUFFIX,m.gcaij.com - - DOMAIN-SUFFIX,m.gcheg.com - - DOMAIN-SUFFIX,m.gdt.vip1790.cn - - DOMAIN-SUFFIX,m.gglay.com - - DOMAIN-SUFFIX,m.gtiou.com - - DOMAIN-SUFFIX,m.gtnde.com - - DOMAIN-SUFFIX,m.guaas.com - - DOMAIN-SUFFIX,m.guanren11.com - - DOMAIN-SUFFIX,m.guanren5.com - - DOMAIN-SUFFIX,m.guanren6.com - - DOMAIN-SUFFIX,m.guanren9.com - - DOMAIN-SUFFIX,m.guifei99.com - - DOMAIN-SUFFIX,m.gujinyue.com - - DOMAIN-SUFFIX,m.gwdqp.com - - DOMAIN-SUFFIX,m.gxkyl.com - - DOMAIN-SUFFIX,m.haowj.com.cn - - DOMAIN-SUFFIX,m.harbinbaojia.net - - DOMAIN-SUFFIX,m.hellomingpian.com - - DOMAIN-SUFFIX,m.heygugu.com - - DOMAIN-SUFFIX,m.hhllyt.com - - DOMAIN-SUFFIX,m.hissq.com - - DOMAIN-SUFFIX,m.hk7799.net - - DOMAIN-SUFFIX,m.hkmqp.com - - DOMAIN-SUFFIX,m.hmzsfmjc.com - - DOMAIN-SUFFIX,m.hogyp.com - - DOMAIN-SUFFIX,m.hot-mob.com - - DOMAIN-SUFFIX,m.hpfjy.com - - DOMAIN-SUFFIX,m.hpzyl.com - - DOMAIN-SUFFIX,m.hsbkr.com - - DOMAIN-SUFFIX,m.htper.com - - DOMAIN-SUFFIX,m.huanyuexpress.com - - DOMAIN-SUFFIX,m.huyulh.com - - DOMAIN-SUFFIX,m.hyzui.com - - DOMAIN-SUFFIX,m.icyrd.com - - DOMAIN-SUFFIX,m.ienkdaged.cn - - DOMAIN-SUFFIX,m.ienkdago.cn - - DOMAIN-SUFFIX,m.infvb.com - - DOMAIN-SUFFIX,m.irauz.com - - DOMAIN-SUFFIX,m.irkuj.com - - DOMAIN-SUFFIX,m.iruad.com - - DOMAIN-SUFFIX,m.ishowms.com - - DOMAIN-SUFFIX,m.jcwwxn.com - - DOMAIN-SUFFIX,m.jdaot.com - - DOMAIN-SUFFIX,m.jgkto.com - - DOMAIN-SUFFIX,m.jhcgood.com - - DOMAIN-SUFFIX,m.jieyixiu.com - - DOMAIN-SUFFIX,m.jiirz.com - - DOMAIN-SUFFIX,m.jinchaoyu.com - - DOMAIN-SUFFIX,m.jioeg.com - - DOMAIN-SUFFIX,m.jkert.com - - DOMAIN-SUFFIX,m.jlkja.com - - DOMAIN-SUFFIX,m.jltdbyq.com - - DOMAIN-SUFFIX,m.joyxv.com - - DOMAIN-SUFFIX,m.juyzr.com - - DOMAIN-SUFFIX,m.jwiyr.com - - DOMAIN-SUFFIX,m.jyhwt.cn - - DOMAIN-SUFFIX,m.kcooy.com - - DOMAIN-SUFFIX,m.kejet.net - - DOMAIN-SUFFIX,m.kewro.com - - DOMAIN-SUFFIX,m.khuoy.com - - DOMAIN-SUFFIX,m.kjfhe.com - - DOMAIN-SUFFIX,m.kjhfy.com - - DOMAIN-SUFFIX,m.kl6636.net - - DOMAIN-SUFFIX,m.ksttwz.com - - DOMAIN-SUFFIX,m.kubiqq.com - - DOMAIN-SUFFIX,m.kwjkd.com - - DOMAIN-SUFFIX,m.kxhie.com - - DOMAIN-SUFFIX,m.laigame7.net - - DOMAIN-SUFFIX,m.lancedu.com - - DOMAIN-SUFFIX,m.laojiayoufang.com - - DOMAIN-SUFFIX,m.laoqu123.com - - DOMAIN-SUFFIX,m.lfdydk.com - - DOMAIN-SUFFIX,m.lovezhishou.com - - DOMAIN-SUFFIX,m.lusrg.cn - - DOMAIN-SUFFIX,m.lyjz001.com - - DOMAIN-SUFFIX,m.lzida.com - - DOMAIN-SUFFIX,m.lzytt.com - - DOMAIN-SUFFIX,m.maopuzw.com - - DOMAIN-SUFFIX,m.mgogo.com - - DOMAIN-SUFFIX,m.mgsue.cn - - DOMAIN-SUFFIX,m.miaoxinqipei.com - - DOMAIN-SUFFIX,m.mightiger.net - - DOMAIN-SUFFIX,m.miiuv.com - - DOMAIN-SUFFIX,m.miupp.com - - DOMAIN-SUFFIX,m.mmkvi.com - - DOMAIN-SUFFIX,m.mouaa.com - - DOMAIN-SUFFIX,m.mqgpo.com - - DOMAIN-SUFFIX,m.mrtuo.com - - DOMAIN-SUFFIX,m.mtuoa.com - - DOMAIN-SUFFIX,m.mushizhubao.com - - DOMAIN-SUFFIX,m.mxguan.com - - DOMAIN-SUFFIX,m.nduop.com - - DOMAIN-SUFFIX,m.neijh.com - - DOMAIN-SUFFIX,m.nejup.com - - DOMAIN-SUFFIX,m.nernv.com - - DOMAIN-SUFFIX,m.nfkos.com - - DOMAIN-SUFFIX,m.niegg.com - - DOMAIN-SUFFIX,m.nmtouzi.com - - DOMAIN-SUFFIX,m.nnfiy.com - - DOMAIN-SUFFIX,m.nouaa.com - - DOMAIN-SUFFIX,m.nthtcs.com - - DOMAIN-SUFFIX,m.ntxiangtai.com - - DOMAIN-SUFFIX,m.nuxyz.cn - - DOMAIN-SUFFIX,m.nwxzs.com - - DOMAIN-SUFFIX,m.nxypz.com - - DOMAIN-SUFFIX,m.oesnw.com - - DOMAIN-SUFFIX,m.opqsr.com - - DOMAIN-SUFFIX,m.osndy.com - - DOMAIN-SUFFIX,m.ourlj.com - - DOMAIN-SUFFIX,m.oyrim.com - - DOMAIN-SUFFIX,m.panda.voiceads.cn - - DOMAIN-SUFFIX,m.pbino.com - - DOMAIN-SUFFIX,m.phonthing.com - - DOMAIN-SUFFIX,m.picbr.com - - DOMAIN-SUFFIX,m.pieaa.com - - DOMAIN-SUFFIX,m.plerv.com - - DOMAIN-SUFFIX,m.pomkl.com - - DOMAIN-SUFFIX,m.poonscn.com - - DOMAIN-SUFFIX,m.pougg.com - - DOMAIN-SUFFIX,m.prazpf.cn - - DOMAIN-SUFFIX,m.pubbirdf.com - - DOMAIN-SUFFIX,m.puooi.com - - DOMAIN-SUFFIX,m.pwjhg.com - - DOMAIN-SUFFIX,m.pyerc.com - - DOMAIN-SUFFIX,m.qcw.com - - DOMAIN-SUFFIX,m.qhuik.com - - DOMAIN-SUFFIX,m.qianka.com - - DOMAIN-SUFFIX,m.qingzhencai.net - - DOMAIN-SUFFIX,m.qiyunmuye.com - - DOMAIN-SUFFIX,m.qsove.com - - DOMAIN-SUFFIX,m.qulishi.com - - DOMAIN-SUFFIX,m.qusub.com - - DOMAIN-SUFFIX,m.qvxyz.com - - DOMAIN-SUFFIX,m.rhcapass.com - - DOMAIN-SUFFIX,m.ricpt.com - - DOMAIN-SUFFIX,m.rmuqvq.cn - - DOMAIN-SUFFIX,m.rmwdn.com - - DOMAIN-SUFFIX,m.romgv.com - - DOMAIN-SUFFIX,m.rrsdl.com - - DOMAIN-SUFFIX,m.rwganw.cn - - DOMAIN-SUFFIX,m.sanitwealth.com - - DOMAIN-SUFFIX,m.sanjiangge.com - - DOMAIN-SUFFIX,m.sbenx.com - - DOMAIN-SUFFIX,m.sbinx.com - - DOMAIN-SUFFIX,m.sewxi.com - - DOMAIN-SUFFIX,m.shenyunkeji.com - - DOMAIN-SUFFIX,m.simba.taobao.com - - DOMAIN-SUFFIX,m.sjaidu.com - - DOMAIN-SUFFIX,m.sjuqc.com - - DOMAIN-SUFFIX,m.sjzhushou.com - - DOMAIN-SUFFIX,m.smsksx.com - - DOMAIN-SUFFIX,m.sosjyx.com - - DOMAIN-SUFFIX,m.srrux.com - - DOMAIN-SUFFIX,m.suehy.com - - DOMAIN-SUFFIX,m.sxxca.com - - DOMAIN-SUFFIX,m.symaa.cn - - DOMAIN-SUFFIX,m.symab.cn - - DOMAIN-SUFFIX,m.symac.cn - - DOMAIN-SUFFIX,m.symad.cn - - DOMAIN-SUFFIX,m.symag.cn - - DOMAIN-SUFFIX,m.symaj.cn - - DOMAIN-SUFFIX,m.szqifu.com - - DOMAIN-SUFFIX,m.tansuotv.com - - DOMAIN-SUFFIX,m.tcksbz888.com - - DOMAIN-SUFFIX,m.tiantianedu.net - - DOMAIN-SUFFIX,m.tiaopimiao.net - - DOMAIN-SUFFIX,m.tick0.com - - DOMAIN-SUFFIX,m.tiojk.com - - DOMAIN-SUFFIX,m.tuopp.com - - DOMAIN-SUFFIX,m.twldmx.com - - DOMAIN-SUFFIX,m.txtxr.com - - DOMAIN-SUFFIX,m.uc123.com - - DOMAIN-SUFFIX,m.uczzd.cn - - DOMAIN-SUFFIX,m.ueram.com - - DOMAIN-SUFFIX,m.uissm.com - - DOMAIN-SUFFIX,m.vaxyz.com - - DOMAIN-SUFFIX,m.vbaou.com - - DOMAIN-SUFFIX,m.vbieu.com - - DOMAIN-SUFFIX,m.vbinu.com - - DOMAIN-SUFFIX,m.verpt.com - - DOMAIN-SUFFIX,m.vichc.com - - DOMAIN-SUFFIX,m.vouky.com - - DOMAIN-SUFFIX,m.vpon.com - - DOMAIN-SUFFIX,m.vsxet.com - - DOMAIN-SUFFIX,m.wcjup.com - - DOMAIN-SUFFIX,m.weboser.com - - DOMAIN-SUFFIX,m.weixingshexiangji.net - - DOMAIN-SUFFIX,m.wervp.com - - DOMAIN-SUFFIX,m.wgewj.cn - - DOMAIN-SUFFIX,m.wikigifth.com - - DOMAIN-SUFFIX,m.wjhehaofc.com - - DOMAIN-SUFFIX,m.wkjhd.com - - DOMAIN-SUFFIX,m.wnxcg.com - - DOMAIN-SUFFIX,m.wonwg.com - - DOMAIN-SUFFIX,m.wooboo.com.cn - - DOMAIN-SUFFIX,m.wrating.com - - DOMAIN-SUFFIX,m.wshufa.com - - DOMAIN-SUFFIX,m.wsxxu.com - - DOMAIN-SUFFIX,m.wuqutu.com - - DOMAIN-SUFFIX,m.wxhh678.com - - DOMAIN-SUFFIX,m.xcy8.com - - DOMAIN-SUFFIX,m.xdkje.com - - DOMAIN-SUFFIX,m.xeihy.com - - DOMAIN-SUFFIX,m.xetvb.com - - DOMAIN-SUFFIX,m.xhaiu.com - - DOMAIN-SUFFIX,m.xiangchim0.com - - DOMAIN-SUFFIX,m.xikdn.com - - DOMAIN-SUFFIX,m.xingxd.com - - DOMAIN-SUFFIX,m.xkqpco.com - - DOMAIN-SUFFIX,m.xkqpco.com.com - - DOMAIN-SUFFIX,m.xlsschina15.net - - DOMAIN-SUFFIX,m.xmgysweb.com - - DOMAIN-SUFFIX,m.xpjis.com - - DOMAIN-SUFFIX,m.xxkio.com - - DOMAIN-SUFFIX,m.yalayi.com - - DOMAIN-SUFFIX,m.yangjingbang.net - - DOMAIN-SUFFIX,m.yicang8.com - - DOMAIN-SUFFIX,m.yingchengtou.com - - DOMAIN-SUFFIX,m.ynnke.com - - DOMAIN-SUFFIX,m.yoiur.com - - DOMAIN-SUFFIX,m.yooli.com - - DOMAIN-SUFFIX,m.youweiprint.com - - DOMAIN-SUFFIX,m.yoyi.com.cn - - DOMAIN-SUFFIX,m.ysdhe.com - - DOMAIN-SUFFIX,m.yuandajiayuan.com - - DOMAIN-SUFFIX,m.yuxyz.com - - DOMAIN-SUFFIX,m.ywbwsm.com - - DOMAIN-SUFFIX,m.yyeks.com - - DOMAIN-SUFFIX,m.yyjhf.com - - DOMAIN-SUFFIX,m.yzjlsb.com - - DOMAIN-SUFFIX,m.zabxb.com - - DOMAIN-SUFFIX,m.zaoss.com - - DOMAIN-SUFFIX,m.zeiaa.com - - DOMAIN-SUFFIX,m.zenffs.cn - - DOMAIN-SUFFIX,m.zenwq.com - - DOMAIN-SUFFIX,m.zhuyuanp.club - - DOMAIN-SUFFIX,m.zhuyuanp.shop - - DOMAIN-SUFFIX,m.zhuyuanp.top - - DOMAIN-SUFFIX,m.zkwsdf.com - - DOMAIN-SUFFIX,m.zougg.com - - DOMAIN-SUFFIX,m.zuopp.com - - DOMAIN-SUFFIX,m1.baidu.com - - DOMAIN-SUFFIX,m1.daumcdn.net - - DOMAIN-SUFFIX,m1.mgogo.com - - DOMAIN-SUFFIX,m1.xcy8.com - - DOMAIN-SUFFIX,m2.qinsx.cn - - DOMAIN-SUFFIX,m3bnqqqw.com - - DOMAIN-SUFFIX,m5.apk.67mo.com - - DOMAIN-SUFFIX,m9.xcdf.cn - - DOMAIN-SUFFIX,m9.xcy8.com - - DOMAIN-SUFFIX,ma.baidu.com - - DOMAIN-SUFFIX,ma1.meishij.net - - DOMAIN-SUFFIX,ma2.meishij.net - - DOMAIN-SUFFIX,maccms.tan5858.com - - DOMAIN-SUFFIX,mackeeper.com - - DOMAIN-SUFFIX,macplatform.wondershare.com - - DOMAIN-SUFFIX,mad.kuuad.com - - DOMAIN-SUFFIX,mad.m.maxthon.cn - - DOMAIN-SUFFIX,m-adash.m.taobao.com - - DOMAIN-SUFFIX,madhouse.cn - - DOMAIN-SUFFIX,madmini.com - - DOMAIN-SUFFIX,mads.amazon.com - - DOMAIN-SUFFIX,mads.aol.com - - DOMAIN-SUFFIX,mads.dailymail.co.uk - - DOMAIN-SUFFIX,madserving.com - - DOMAIN-SUFFIX,magicwindow.cn - - DOMAIN-SUFFIX,magnetic.t.domdex.com - - DOMAIN-SUFFIX,maibahe300cc.com - - DOMAIN-SUFFIX,main.exdynsrv.com - - DOMAIN-SUFFIX,main.exoclick.com - - DOMAIN-SUFFIX,mainbx.com - - DOMAIN-SUFFIX,maipinshangmao.com - - DOMAIN-SUFFIX,mairuan.cn - - DOMAIN-SUFFIX,mairuan.com - - DOMAIN-SUFFIX,mairuan.com.cn - - DOMAIN-SUFFIX,mairuan.net - - DOMAIN-SUFFIX,mairuanwang.com - - DOMAIN-SUFFIX,maisoncherry.com - - DOMAIN-SUFFIX,makeding.com - - DOMAIN-SUFFIX,malacca.inveno.com - - DOMAIN-SUFFIX,manage.wdfans.cn - - DOMAIN-SUFFIX,maomaotang.com - - DOMAIN-SUFFIX,map.dxpmedia.com - - DOMAIN-SUFFIX,map.media6degrees.com - - DOMAIN-SUFFIX,mapping.yoyi.com.cn - - DOMAIN-SUFFIX,market.178.com - - DOMAIN-SUFFIX,market.21cn.com - - DOMAIN-SUFFIX,market.52pk.com - - DOMAIN-SUFFIX,market.duowan.com - - DOMAIN-SUFFIX,marketgid.com - - DOMAIN-SUFFIX,marketing.888.com - - DOMAIN-SUFFIX,marketing.etouch.cn - - DOMAIN-SUFFIX,marketingsolutions.yahoo.com - - DOMAIN-SUFFIX,marketo.com - - DOMAIN-SUFFIX,marketo.net - - DOMAIN-SUFFIX,masdk.3g.qq.com - - DOMAIN-SUFFIX,maskbaby.com.cn - - DOMAIN-SUFFIX,mass.mall044.com - - DOMAIN-SUFFIX,master.wap.dphub.sandai.net - - DOMAIN-SUFFIX,match.adsby.bidtheatre.com - - DOMAIN-SUFFIX,match.c8.net.ua - - DOMAIN-SUFFIX,match.p4p.1688.com - - DOMAIN-SUFFIX,match.prod.bidr.io - - DOMAIN-SUFFIX,match.rundsp.com - - DOMAIN-SUFFIX,matching.targeterra.com - - DOMAIN-SUFFIX,material.istreamsche.com - - DOMAIN-SUFFIX,material.mtty.xin - - DOMAIN-SUFFIX,mathtag.com - - DOMAIN-SUFFIX,mathtype.cn - - DOMAIN-SUFFIX,maw.wnbfw.com - - DOMAIN-SUFFIX,maxwebsearch.com - - DOMAIN-SUFFIX,maysunmedia.com - - DOMAIN-SUFFIX,mb.hockeybuzz.com - - DOMAIN-SUFFIX,mb.yidianzixun.com - - DOMAIN-SUFFIX,mb.zam.com - - DOMAIN-SUFFIX,mbai.cn - - DOMAIN-SUFFIX,mbd.weathercn.com - - DOMAIN-SUFFIX,mbrowser.news.haosou.com - - DOMAIN-SUFFIX,mbrowser.news.so.com - - DOMAIN-SUFFIX,mbs.weathercn.com - - DOMAIN-SUFFIX,mc.yandex.ru - - DOMAIN-SUFFIX,mclick.simba.taobao.com - - DOMAIN-SUFFIX,mcore.vcgame.cn - - DOMAIN-SUFFIX,md.1drj.com - - DOMAIN-SUFFIX,md.he9630.com - - DOMAIN-SUFFIX,md.sh5e.com - - DOMAIN-SUFFIX,md0z4dh.com - - DOMAIN-SUFFIX,mdc.meitustat.com - - DOMAIN-SUFFIX,mdotm.com - - DOMAIN-SUFFIX,mdpjnppsbjv.bid - - DOMAIN-SUFFIX,mdrecv.app.cntvwb.cn - - DOMAIN-SUFFIX,me.afp.chinanews.com - - DOMAIN-SUFFIX,mealsandsteals.sandiego6.com - - DOMAIN-SUFFIX,me-cdn.effectivemeasure.net - - DOMAIN-SUFFIX,med.heyzap.com - - DOMAIN-SUFFIX,medal.blog.csdn.net - - DOMAIN-SUFFIX,media.2011.8684.com - - DOMAIN-SUFFIX,media.cheshi-img.com - - DOMAIN-SUFFIX,media.fastclick.net - - DOMAIN-SUFFIX,media.jointreport-switch.com - - DOMAIN-SUFFIX,media.tianjimedia.com - - DOMAIN-SUFFIX,media.trafficfactory.biz - - DOMAIN-SUFFIX,media.trafficjunky.net - - DOMAIN-SUFFIX,media8.cn - - DOMAIN-SUFFIX,mediamgr.ugo.com - - DOMAIN-SUFFIX,mediaplex.com - - DOMAIN-SUFFIX,mediapro.pro.cn - - DOMAIN-SUFFIX,media-static.jointreport-switch.com - - DOMAIN-SUFFIX,mediav.com - - DOMAIN-SUFFIX,medrx.telstra.com.au - - DOMAIN-SUFFIX,megajoy.com - - DOMAIN-SUFFIX,meimeidaren.com - - DOMAIN-SUFFIX,meiti1.net - - DOMAIN-SUFFIX,meitubeauty.meitudata.com - - DOMAIN-SUFFIX,meitumq.com - - DOMAIN-SUFFIX,menghuanzs.com - - DOMAIN-SUFFIX,mengmengdas.com - - DOMAIN-SUFFIX,mengyuanwei.com - - DOMAIN-SUFFIX,message.meitu.com - - DOMAIN-SUFFIX,metok.sys.miui.com - - DOMAIN-SUFFIX,metrics.cnn.com - - DOMAIN-SUFFIX,mfan.iclick.com.cn - - DOMAIN-SUFFIX,mfm.video.qq.com - - DOMAIN-SUFFIX,mfp.deliver.ifeng.com - - DOMAIN-SUFFIX,mfsr.lenovomm.com - - DOMAIN-SUFFIX,mg.5pk - - DOMAIN-SUFFIX,mg.games.sina.com.cn - - DOMAIN-SUFFIX,mg.yadro.ru - - DOMAIN-SUFFIX,mgid.com - - DOMAIN-SUFFIX,mgldzcls.com - - DOMAIN-SUFFIX,mgogo.com - - DOMAIN-SUFFIX,mgwcn.com - - DOMAIN-SUFFIX,mgwl668.com - - DOMAIN-SUFFIX,mhd.1391.com - - DOMAIN-SUFFIX,mhdpay.1391.com - - DOMAIN-SUFFIX,mhdtestks3.1391.com - - DOMAIN-SUFFIX,mhdufile.1391.com - - DOMAIN-SUFFIX,mhjk.1391.com - - DOMAIN-SUFFIX,mhuodong.elong.com - - DOMAIN-SUFFIX,miam4.cn - - DOMAIN-SUFFIX,miaobeichina.com - - DOMAIN-SUFFIX,miaozhen.com - - DOMAIN-SUFFIX,mibook-10006092.cos.myqcloud.com - - DOMAIN-SUFFIX,microad-cn.com - - DOMAIN-SUFFIX,mid.houyi.baofeng.net - - DOMAIN-SUFFIX,midas.rong360.com - - DOMAIN-SUFFIX,midinfo.baofeng.com - - DOMAIN-SUFFIX,mie99.net - - DOMAIN-SUFFIX,migc.g.mi.com - - DOMAIN-SUFFIX,migcreport.g.mi.com - - DOMAIN-SUFFIX,migrate.driveapi.micloud.xiaomi.net - - DOMAIN-SUFFIX,migu.kssws.ks-cdn.com - - DOMAIN-SUFFIX,mihui.com - - DOMAIN-SUFFIX,miidi.net - - DOMAIN-SUFFIX,mijifen.com - - DOMAIN-SUFFIX,milk.yesky.com.cn - - DOMAIN-SUFFIX,millennialmedia.com - - DOMAIN-SUFFIX,millwardbrownacsr.com - - DOMAIN-SUFFIX,mimg.126.net - - DOMAIN-SUFFIX,mimg.7791.com.cn - - DOMAIN-SUFFIX,mindmanager.cc - - DOMAIN-SUFFIX,mindmapper.cc - - DOMAIN-SUFFIX,minesage.com - - DOMAIN-SUFFIX,minfo.wps.cn - - DOMAIN-SUFFIX,mingxianshanghang.cn - - DOMAIN-SUFFIX,mingysh.com - - DOMAIN-SUFFIX,mini.cpc.sogou.com - - DOMAIN-SUFFIX,mini.eastday.com - - DOMAIN-SUFFIX,mini.hao123.com - - DOMAIN-SUFFIX,mini.jijiplayer.com - - DOMAIN-SUFFIX,mini2015.qq.com - - DOMAIN-SUFFIX,minidcsc.kugou.com - - DOMAIN-SUFFIX,minipage.2345.com - - DOMAIN-SUFFIX,minisite.vidown.cn - - DOMAIN-SUFFIX,minisplat.cn - - DOMAIN-SUFFIX,miniye.xjts.cn - - DOMAIN-SUFFIX,mip.yuelvxing.com - - DOMAIN-SUFFIX,mipcache.bdstatic.com - - DOMAIN-SUFFIX,mipujia.com - - DOMAIN-SUFFIX,mis.g.mi.com - - DOMAIN-SUFFIX,miui.hdfdm.com - - DOMAIN-SUFFIX,miui.hftaili.com - - DOMAIN-SUFFIX,mivideo.g.mi.com - - DOMAIN-SUFFIX,mj70.cn - - DOMAIN-SUFFIX,mjs.csyymp4.com - - DOMAIN-SUFFIX,mkitgfs.com - - DOMAIN-SUFFIX,mlb.did.ijinshan.com - - DOMAIN-SUFFIX,mlgrrqymdsyk.com - - DOMAIN-SUFFIX,mlnbike.com - - DOMAIN-SUFFIX,mlog.aipai.com - - DOMAIN-SUFFIX,mlog.hiido.com - - DOMAIN-SUFFIX,mlog.m1905.cn - - DOMAIN-SUFFIX,mlog.search.xiaomi.net - - DOMAIN-SUFFIX,mlt01.com - - DOMAIN-SUFFIX,mm.2436.cn - - DOMAIN-SUFFIX,mm.anqu.com - - DOMAIN-SUFFIX,mm.jgchq.com - - DOMAIN-SUFFIX,mm.moquanad.com - - DOMAIN-SUFFIX,mmcc.yxlady.com - - DOMAIN-SUFFIX,mmg.aty.cp45.ott.cibntv.net - - DOMAIN-SUFFIX,mmg.aty.snmsohu.aisee.tv - - DOMAIN-SUFFIX,mng-ads.com - - DOMAIN-SUFFIX,mnkan.com - - DOMAIN-SUFFIX,mnwan.com - - DOMAIN-SUFFIX,mnxtu.com - - DOMAIN-SUFFIX,mo.haloapps.cn - - DOMAIN-SUFFIX,mo.kugou.com - - DOMAIN-SUFFIX,mo.res.wpscdn.cn - - DOMAIN-SUFFIX,mo.test.haloapps.com - - DOMAIN-SUFFIX,moad.cn - - DOMAIN-SUFFIX,moatads.com - - DOMAIN-SUFFIX,mob.huimee.net - - DOMAIN-SUFFIX,mobad.ijinshan.com - - DOMAIN-SUFFIX,mobadme.jp - - DOMAIN-SUFFIX,mobclix.com - - DOMAIN-SUFFIX,mobfox.com - - DOMAIN-SUFFIX,mobgi.com - - DOMAIN-SUFFIX,mobilead.kuwo.cn - - DOMAIN-SUFFIX,mobileads.google.com - - DOMAIN-SUFFIX,mobileads.msn.com - - DOMAIN-SUFFIX,mobileapptracking.com - - DOMAIN-SUFFIX,mobiledissector.com - - DOMAIN-SUFFIX,mobilelog.kugou.com - - DOMAIN-SUFFIX,mobile-pubt.ele.me - - DOMAIN-SUFFIX,mobile-service.segment.com - - DOMAIN-SUFFIX,mobilityware.com - - DOMAIN-SUFFIX,mobiorg8.com - - DOMAIN-SUFFIX,mobisage.cn - - DOMAIN-SUFFIX,mobvista.com - - DOMAIN-SUFFIX,mohecm.com - - DOMAIN-SUFFIX,moka.inte.sogoucdn.com - - DOMAIN-SUFFIX,mon.xtgreat.com - - DOMAIN-SUFFIX,monero.how - - DOMAIN-SUFFIX,money.qz828.com - - DOMAIN-SUFFIX,monitor.uu.qq.com - - DOMAIN-SUFFIX,moodoocrv.com.cn - - DOMAIN-SUFFIX,moogos.com - - DOMAIN-SUFFIX,mookie1.com - - DOMAIN-SUFFIX,moons.66bhy.com - - DOMAIN-SUFFIX,moonwish.com.cn - - DOMAIN-SUFFIX,mopub.com - - DOMAIN-SUFFIX,moquanad.com - - DOMAIN-SUFFIX,moren-1252794300.file.myqcloud.com - - DOMAIN-SUFFIX,mosa86.com - - DOMAIN-SUFFIX,mostat.wps.cn - - DOMAIN-SUFFIX,motohelpr.com - - DOMAIN-SUFFIX,motu.p4p.sina.com.cn - - DOMAIN-SUFFIX,motu.pagechoice.net - - DOMAIN-SUFFIX,mou.niu.xunlei.com - - DOMAIN-SUFFIX,moupdate10332052.wps.cn - - DOMAIN-SUFFIX,moutaihotel.cn - - DOMAIN-SUFFIX,movie.miaiche.cn - - DOMAIN-SUFFIX,mpb1.iteye.com - - DOMAIN-SUFFIX,mpb2.iteye.com - - DOMAIN-SUFFIX,mpp.vindicosuite.com - - DOMAIN-SUFFIX,mpro.baidu.com - - DOMAIN-SUFFIX,mps.nbcuni.com - - DOMAIN-SUFFIX,mps.weekslw.com - - DOMAIN-SUFFIX,mpush.cn - - DOMAIN-SUFFIX,mpzw.com - - DOMAIN-SUFFIX,mqq.zgdmsj.cn - - DOMAIN-SUFFIX,mqqad.cs0309.html5.qq.com - - DOMAIN-SUFFIX,mqqad.html5.qq.com - - DOMAIN-SUFFIX,mqqadr.reader.qq.com - - DOMAIN-SUFFIX,mrelko.com - - DOMAIN-SUFFIX,mrksys.com - - DOMAIN-SUFFIX,ms.awqsaged.cn - - DOMAIN-SUFFIX,ms.cmcm.com - - DOMAIN-SUFFIX,ms.cnczjy.com - - DOMAIN-SUFFIX,ms.continuedsys.cn - - DOMAIN-SUFFIX,ms.ienkdaccessible.cn - - DOMAIN-SUFFIX,ms.ienkdaccessory.cn - - DOMAIN-SUFFIX,ms.jyhwt.cn - - DOMAIN-SUFFIX,ms.myyage.com - - DOMAIN-SUFFIX,ms.vipstatic.com - - DOMAIN-SUFFIX,msads.net - - DOMAIN-SUFFIX,mscimg.com - - DOMAIN-SUFFIX,msclick2.kuwo.cn - - DOMAIN-SUFFIX,msg.mobile.kugou.com - - DOMAIN-SUFFIX,msg.ptqy.gitv.tv - - DOMAIN-SUFFIX,msg.push.51y5.net - - DOMAIN-SUFFIX,mshow.fang.com - - DOMAIN-SUFFIX,msite.baidu.com - - DOMAIN-SUFFIX,msltzer.cn - - DOMAIN-SUFFIX,msn.wrating.com - - DOMAIN-SUFFIX,msnclick.wrating.com - - DOMAIN-SUFFIX,msphoneclick.kuwo.cn - - DOMAIN-SUFFIX,mssp.baidu.com - - DOMAIN-SUFFIX,mstat.zol.com.cn - - DOMAIN-SUFFIX,mstzym.com - - DOMAIN-SUFFIX,msypr.com - - DOMAIN-SUFFIX,mti.35kds.com - - DOMAIN-SUFFIX,mtj.baidu.com - - DOMAIN-SUFFIX,mtl.ttsqgs.com - - DOMAIN-SUFFIX,mtrace.qq.com - - DOMAIN-SUFFIX,mtty-cdn.mtty.xin - - DOMAIN-SUFFIX,mtxsk.com - - DOMAIN-SUFFIX,mubite.cn - - DOMAIN-SUFFIX,munchkin.marketo.net - - DOMAIN-SUFFIX,musik-mp3.info - - DOMAIN-SUFFIX,mvads.kugou.com - - DOMAIN-SUFFIX,mvip.zhuba8.com - - DOMAIN-SUFFIX,mwa.xingyimin.com - - DOMAIN-SUFFIX,mwlucuvbyrff.com - - DOMAIN-SUFFIX,mxmrt.com - - DOMAIN-SUFFIX,mxpnl.com - - DOMAIN-SUFFIX,mxvp-ad-config-prod-1.zenmxapps.com - - DOMAIN-SUFFIX,mxvp-feature-toggle-prod-1.zenmxapps.com - - DOMAIN-SUFFIX,my.mobfox.com - - DOMAIN-SUFFIX,my1fc.m.b5200.net - - DOMAIN-SUFFIX,my1fimg.m.b5200.net - - DOMAIN-SUFFIX,myad.toocle.com - - DOMAIN-SUFFIX,mycleanmymac.com - - DOMAIN-SUFFIX,mydas.mobi - - DOMAIN-SUFFIX,mydisplay.ctfile.com - - DOMAIN-SUFFIX,myjsym.zichenit.com - - DOMAIN-SUFFIX,mymm.zichenit.com - - DOMAIN-SUFFIX,mytanwan.com - - DOMAIN-SUFFIX,mytzdhz.cn - - DOMAIN-SUFFIX,myycrw.com - - DOMAIN-SUFFIX,myzk1.com - - DOMAIN-SUFFIX,myzwqwe12.com - - DOMAIN-SUFFIX,mzy2014.com - - DOMAIN-SUFFIX,n.a.mosenni.com - - DOMAIN-SUFFIX,n.ads3-adnow.com - - DOMAIN-SUFFIX,n.amoad.com - - DOMAIN-SUFFIX,n.cosbot.cn - - DOMAIN-SUFFIX,n.gemini.yahoo.com - - DOMAIN-SUFFIX,n.ma.social-touch.com - - DOMAIN-SUFFIX,n.wjr1x.cn - - DOMAIN-SUFFIX,n.yfi8.com - - DOMAIN-SUFFIX,n.zqqf0.cn - - DOMAIN-SUFFIX,na1r.services.adobe.com - - DOMAIN-SUFFIX,na2m-pr.licenses.adobe.com - - DOMAIN-SUFFIX,nai.cpxkvc.com - - DOMAIN-SUFFIX,namedq.com - - DOMAIN-SUFFIX,namemek.com - - DOMAIN-SUFFIX,naqigs.com - - DOMAIN-SUFFIX,nativeapp.toutiao.com - - DOMAIN-SUFFIX,nav.winasdaq.com - - DOMAIN-SUFFIX,navi.gd.chinamobile.com - - DOMAIN-SUFFIX,nbhxgjz.com - - DOMAIN-SUFFIX,nbjjd.com - - DOMAIN-SUFFIX,nbzq.net - - DOMAIN-SUFFIX,nc004x.corp.youdao.com - - DOMAIN-SUFFIX,nc045x.corp.youdao.com - - DOMAIN-SUFFIX,ncachear.com - - DOMAIN-SUFFIX,nch.xnghmc.com - - DOMAIN-SUFFIX,nchte.com - - DOMAIN-SUFFIX,nclog.mars.baofeng.net - - DOMAIN-SUFFIX,nclog.pad.baofeng.net - - DOMAIN-SUFFIX,ncoyqc.com - - DOMAIN-SUFFIX,ndtzx.com - - DOMAIN-SUFFIX,ndy.code.weddingeeos.com - - DOMAIN-SUFFIX,ne.1rtb.com - - DOMAIN-SUFFIX,ne9377.com - - DOMAIN-SUFFIX,neirong.baidu.com - - DOMAIN-SUFFIX,nend.net - - DOMAIN-SUFFIX,nest.youwatch.org - - DOMAIN-SUFFIX,net.rayjump.com - - DOMAIN-SUFFIX,netko0o.com - - DOMAIN-SUFFIX,netshelter.net - - DOMAIN-SUFFIX,netspidermm.indiatimes.com - - DOMAIN-SUFFIX,network.aufeminin.com - - DOMAIN-SUFFIX,network.business.com - - DOMAIN-SUFFIX,network.sofeminine.co.uk - - DOMAIN-SUFFIX,networkbench.com - - DOMAIN-SUFFIX,new.ltheanine.cn - - DOMAIN-SUFFIX,new.yokaunion.com - - DOMAIN-SUFFIX,new.zhqiu.com - - DOMAIN-SUFFIX,newapi.com - - DOMAIN-SUFFIX,newrelic.com - - DOMAIN-SUFFIX,news.51y5.net - - DOMAIN-SUFFIX,news.58.com - - DOMAIN-SUFFIX,news.cxxtv.com - - DOMAIN-SUFFIX,news.mpush.qq.com - - DOMAIN-SUFFIX,news.push.126.net - - DOMAIN-SUFFIX,news.s9377.com - - DOMAIN-SUFFIX,news.xueyanshan.com - - DOMAIN-SUFFIX,news-img.51y5.net - - DOMAIN-SUFFIX,news-l.play.aiseet.atianqi.com - - DOMAIN-SUFFIX,news-l.play.cp81.ott.cibntv.net - - DOMAIN-SUFFIX,news-l.play.ott.video.qq.com - - DOMAIN-SUFFIX,news-log.51y5.net - - DOMAIN-SUFFIX,newspage.xilu.com - - DOMAIN-SUFFIX,newspush.sinajs.cn - - DOMAIN-SUFFIX,newswifiapi.dfshurufa.com - - DOMAIN-SUFFIX,newton-api.ele.me - - DOMAIN-SUFFIX,nex.163.com - - DOMAIN-SUFFIX,nexage.com - - DOMAIN-SUFFIX,nexstep.zdworks.com - - DOMAIN-SUFFIX,nextcps.com - - DOMAIN-SUFFIX,nextlnk9.com - - DOMAIN-SUFFIX,nexus.ensighten.com - - DOMAIN-SUFFIX,nfh.cnshef.com - - DOMAIN-SUFFIX,ngads.go.com - - DOMAIN-SUFFIX,nicelabel.cc - - DOMAIN-SUFFIX,ninebox.cn - - DOMAIN-SUFFIX,ninemsn.imrworldwide.com - - DOMAIN-SUFFIX,niurenw.com - - DOMAIN-SUFFIX,niux88.com - - DOMAIN-SUFFIX,niuxgame77.com - - DOMAIN-SUFFIX,niwd.zhybw88.com - - DOMAIN-SUFFIX,njdijiani.com - - DOMAIN-SUFFIX,njfsk.com - - DOMAIN-SUFFIX,njmpacc.com - - DOMAIN-SUFFIX,njq.net - - DOMAIN-SUFFIX,njs.imagicskin.com - - DOMAIN-SUFFIX,njs.myyage.com - - DOMAIN-SUFFIX,njs.reliancevalve.com - - DOMAIN-SUFFIX,njxczy.com - - DOMAIN-SUFFIX,nkeo.top - - DOMAIN-SUFFIX,nlog.baidu.com - - DOMAIN-SUFFIX,nmbtedu.com - - DOMAIN-SUFFIX,nmkgs.cn - - DOMAIN-SUFFIX,nmpcdn.com - - DOMAIN-SUFFIX,nmqbg.com - - DOMAIN-SUFFIX,nnedbx.com - - DOMAIN-SUFFIX,nngft.com - - DOMAIN-SUFFIX,noberlmall.com - - DOMAIN-SUFFIX,nongsalei.com - - DOMAIN-SUFFIX,nop.xpanama.net - - DOMAIN-SUFFIX,notice.game.xiaomi.com - - DOMAIN-SUFFIX,notice.uchome.manyou.com - - DOMAIN-SUFFIX,notifiter.youmi.net - - DOMAIN-SUFFIX,notify.oupeng.com - - DOMAIN-SUFFIX,novelsns.html5.qq.com - - DOMAIN-SUFFIX,nowskip.com - - DOMAIN-SUFFIX,npdaqy6x1j.me - - DOMAIN-SUFFIX,nr1234.com - - DOMAIN-SUFFIX,nryiou.cn - - DOMAIN-SUFFIX,nsclickvideo.baidu.com - - DOMAIN-SUFFIX,nsnmiaomu.cn - - DOMAIN-SUFFIX,nsy.hnzyfs.com - - DOMAIN-SUFFIX,nt.phpwind.com - - DOMAIN-SUFFIX,ntalker.com - - DOMAIN-SUFFIX,nterbx.com - - DOMAIN-SUFFIX,ntfsformac.cc - - DOMAIN-SUFFIX,ntfsformac.cn - - DOMAIN-SUFFIX,nthyn.com - - DOMAIN-SUFFIX,ntx.quanliyouxi.cn - - DOMAIN-SUFFIX,nv.souid.com - - DOMAIN-SUFFIX,nvrentao8.com - - DOMAIN-SUFFIX,nvshenfan.com - - DOMAIN-SUFFIX,nwejs.alcryp.com - - DOMAIN-SUFFIX,nwejs.myzcoffice.com - - DOMAIN-SUFFIX,nwwap.com - - DOMAIN-SUFFIX,nxrhs.com - - DOMAIN-SUFFIX,nxrxt.con - - DOMAIN-SUFFIX,ny7f6goy.bid - - DOMAIN-SUFFIX,nylalobghyhirgh.com - - DOMAIN-SUFFIX,nysita.com - - DOMAIN-SUFFIX,nzezn.com - - DOMAIN-SUFFIX,o.08jm.cn - - DOMAIN-SUFFIX,o.if.qidian.com - - DOMAIN-SUFFIX,o.minisplat.cn - - DOMAIN-SUFFIX,o091i.com - - DOMAIN-SUFFIX,o2o.api.xiaomi.com - - DOMAIN-SUFFIX,o2omobi.com - - DOMAIN-SUFFIX,o7xs6runw.bkt.clouddn.com - - DOMAIN-SUFFIX,oa129.com - - DOMAIN-SUFFIX,oadz.com - - DOMAIN-SUFFIX,oa-panther.data.aliyun.com - - DOMAIN-SUFFIX,oas.autotrader.co.uk - - DOMAIN-SUFFIX,oas.luxweb.com - - DOMAIN-SUFFIX,oas.skyscanner.net - - DOMAIN-SUFFIX,oasc07.citywire.co.uk - - DOMAIN-SUFFIX,oascentral.abclocal.go.com - - DOMAIN-SUFFIX,oascentral.chron.com - - DOMAIN-SUFFIX,oascentral.hosted.ap.org - - DOMAIN-SUFFIX,oascentral.lycos.com - - DOMAIN-SUFFIX,oascentral.newsmax.com - - DOMAIN-SUFFIX,oascentral.sina.com - - DOMAIN-SUFFIX,oascentral.sina.com.hk - - DOMAIN-SUFFIX,oask.xulizui6.com - - DOMAIN-SUFFIX,obeyter.com - - DOMAIN-SUFFIX,ocbv0.baiyangzs.com - - DOMAIN-SUFFIX,odc.starwave.com - - DOMAIN-SUFFIX,odin.goo.mx - - DOMAIN-SUFFIX,officeme.cn - - DOMAIN-SUFFIX,offline-adv.oray.com - - DOMAIN-SUFFIX,oikxlcv.wang - - DOMAIN-SUFFIX,oimagea2.ydstatic.com - - DOMAIN-SUFFIX,ojngisbfwwyp.com - - DOMAIN-SUFFIX,ok.432kkk.com - - DOMAIN-SUFFIX,ok365.com - - DOMAIN-SUFFIX,okkkk.com - - DOMAIN-SUFFIX,okm918.com - - DOMAIN-SUFFIX,okokw.com - - DOMAIN-SUFFIX,olcdn.com - - DOMAIN-SUFFIX,olpv.onlylady.com - - DOMAIN-SUFFIX,olpvimg.onlylady.com - - DOMAIN-SUFFIX,olstats.onlylady.com - - DOMAIN-SUFFIX,omega7o.com - - DOMAIN-SUFFIX,omg.inte.sogoucdn.com - - DOMAIN-SUFFIX,omnikool.discovery.com - - DOMAIN-SUFFIX,omtrdc.net - - DOMAIN-SUFFIX,on.maxspeedcdn.com - - DOMAIN-SUFFIX,onclickads.net - - DOMAIN-SUFFIX,onclicktop.com - - DOMAIN-SUFFIX,onclkds.com - - DOMAIN-SUFFIX,one.520319.cn - - DOMAIN-SUFFIX,onepush.query.yahoo.com - - DOMAIN-SUFFIX,onesoft.im - - DOMAIN-SUFFIX,onetad.com - - DOMAIN-SUFFIX,onetag-sys.com - - DOMAIN-SUFFIX,onewhee.com - - DOMAIN-SUFFIX,onlifjj.net - - DOMAIN-SUFFIX,onlinetips.baofeng5.baofeng.net - - DOMAIN-SUFFIX,oomyv.com - - DOMAIN-SUFFIX,ooniu.com - - DOMAIN-SUFFIX,ooss.oss.aliyuncs.com - - DOMAIN-SUFFIX,op00w.baiyangzs.com - - DOMAIN-SUFFIX,open.play.cn - - DOMAIN-SUFFIX,openapi-news.meizu.com - - DOMAIN-SUFFIX,openrcv.baidu.com - - DOMAIN-SUFFIX,openstat.net - - DOMAIN-SUFFIX,openstorage.ad.cmvideo.cn - - DOMAIN-SUFFIX,opgirl-tmp.adbxb.cn - - DOMAIN-SUFFIX,oppo.yidianzixun.com - - DOMAIN-SUFFIX,optaim.com - - DOMAIN-SUFFIX,optimix.asia - - DOMAIN-SUFFIX,optimix.cn - - DOMAIN-SUFFIX,optimized-by.rubiconproject.com - - DOMAIN-SUFFIX,optimizelyapis.com - - DOMAIN-SUFFIX,oq68.com - - DOMAIN-SUFFIX,orchidscape.net - - DOMAIN-SUFFIX,oredero.com - - DOMAIN-SUFFIX,orz.hupu.com - - DOMAIN-SUFFIX,osc.uranus.sogou.com - - DOMAIN-SUFFIX,osfota.cdn.aliyun.com - - DOMAIN-SUFFIX,oss-asq-static.11222.cn - - DOMAIN-SUFFIX,otf.msn.com - - DOMAIN-SUFFIX,oth.eve.mdt.qq.com - - DOMAIN-SUFFIX,oth.str.mdt.qq.com - - DOMAIN-SUFFIX,oth.update.mdt.qq.com - - DOMAIN-SUFFIX,otheve.play.aiseet.atianqi.com - - DOMAIN-SUFFIX,othstr.play.aiseet.atianqi.com - - DOMAIN-SUFFIX,ou188.com - - DOMAIN-SUFFIX,output.nend.net - - DOMAIN-SUFFIX,overture.com - - DOMAIN-SUFFIX,overturechina.com - - DOMAIN-SUFFIX,ow.biqugego.com - - DOMAIN-SUFFIX,ow.s1.shuhuangge.org - - DOMAIN-SUFFIX,ow.s2.shuhuangge.org - - DOMAIN-SUFFIX,owin.biqugego.com - - DOMAIN-SUFFIX,ox.furaffinity.net - - DOMAIN-SUFFIX,oyzsverimywg.com - - DOMAIN-SUFFIX,p.7060.la - - DOMAIN-SUFFIX,p.99mssj.com - - DOMAIN-SUFFIX,p.abcache.com - - DOMAIN-SUFFIX,p.bdjiazanmiaomu.com - - DOMAIN-SUFFIX,p.bjdianyue.com - - DOMAIN-SUFFIX,p.bnuni.com - - DOMAIN-SUFFIX,p.clkservice.youdao.com - - DOMAIN-SUFFIX,p.ecwan77.net - - DOMAIN-SUFFIX,p.inte.sogou.com - - DOMAIN-SUFFIX,p.kf3msfm.com - - DOMAIN-SUFFIX,p.kjwx8.com - - DOMAIN-SUFFIX,p.kugou.com - - DOMAIN-SUFFIX,p.m5bn.com - - DOMAIN-SUFFIX,p.mendoc.cn - - DOMAIN-SUFFIX,p.niudashu.com - - DOMAIN-SUFFIX,p.qiailm.com - - DOMAIN-SUFFIX,p.qijijs.top - - DOMAIN-SUFFIX,p.raidmedia.com.cn - - DOMAIN-SUFFIX,p.rfihub.com - - DOMAIN-SUFFIX,p.saozhu1.top - - DOMAIN-SUFFIX,p.sdu8cvc.com - - DOMAIN-SUFFIX,p.shagent.com - - DOMAIN-SUFFIX,p.skimresources.com - - DOMAIN-SUFFIX,p.szonline.net - - DOMAIN-SUFFIX,p.tamenshuo.com - - DOMAIN-SUFFIX,p.tencentmind.com - - DOMAIN-SUFFIX,p.twitter.com - - DOMAIN-SUFFIX,p.vq6nsu.cn - - DOMAIN-SUFFIX,p.yizuya.com - - DOMAIN-SUFFIX,p.ynjczy.net - - DOMAIN-SUFFIX,p0y.cn - - DOMAIN-SUFFIX,p1.18zhongyao.com - - DOMAIN-SUFFIX,p1.qinsx.cn - - DOMAIN-SUFFIX,p2.hyz86.com - - DOMAIN-SUFFIX,p2.qinsx.cn - - DOMAIN-SUFFIX,p2.ykauto.cn - - DOMAIN-SUFFIX,p215223.clksite.com - - DOMAIN-SUFFIX,p215223.inclk.com - - DOMAIN-SUFFIX,p215223.mycdn2.co - - DOMAIN-SUFFIX,p2pmid.baofeng.com - - DOMAIN-SUFFIX,p3p.sogou.com - - DOMAIN-SUFFIX,p3p.yahoo.com - - DOMAIN-SUFFIX,p3tt.com - - DOMAIN-SUFFIX,p4p.sina.com.cn - - DOMAIN-SUFFIX,p4psearch.china.alibaba.com - - DOMAIN-SUFFIX,p555.cc - - DOMAIN-SUFFIX,p8u.hinet.net - - DOMAIN-SUFFIX,package01.com - - DOMAIN-SUFFIX,pad.zhywyl.cn - - DOMAIN-SUFFIX,padsdel2.cdnads.com - - DOMAIN-SUFFIX,page.acm.dzwww.com - - DOMAIN-SUFFIX,page.xywy.com - - DOMAIN-SUFFIX,pagead.google.com - - DOMAIN-SUFFIX,pagead.l.google.com - - DOMAIN-SUFFIX,pagead-tpc.l.google.com - - DOMAIN-SUFFIX,pagechoice.com - - DOMAIN-SUFFIX,pagechoice.net - - DOMAIN-SUFFIX,pagechoicemotu.gentags.net - - DOMAIN-SUFFIX,pages2.marketo.com - - DOMAIN-SUFFIX,paimgcdn.baidu.com - - DOMAIN-SUFFIX,painiuimg.com - - DOMAIN-SUFFIX,palmnews.sina.cn - - DOMAIN-SUFFIX,panda.kdnet.net - - DOMAIN-SUFFIX,pangu.cc - - DOMAIN-SUFFIX,panoramio.com - - DOMAIN-SUFFIX,papajia55.com - - DOMAIN-SUFFIX,parking.zunmi.cn - - DOMAIN-SUFFIX,parser.houyi.baofeng.net - - DOMAIN-SUFFIX,partner.bargaindomains.com - - DOMAIN-SUFFIX,partner.catchy.com - - DOMAIN-SUFFIX,partner.premiumdomains.com - - DOMAIN-SUFFIX,partner.toutiao.com - - DOMAIN-SUFFIX,partners.fshealth.com - - DOMAIN-SUFFIX,partners.keezmovies.com - - DOMAIN-SUFFIX,partners.optiontide.com - - DOMAIN-SUFFIX,partners.pornerbros.com - - DOMAIN-SUFFIX,partners.rochen.com - - DOMAIN-SUFFIX,partners.sportingbet.com.au - - DOMAIN-SUFFIX,partners.vouchedfor.co.uk - - DOMAIN-SUFFIX,partners.xpertmarket.com - - DOMAIN-SUFFIX,party-nngvitbizn.now.sh - - DOMAIN-SUFFIX,pasco.cc - - DOMAIN-SUFFIX,pass1.soogif.com - - DOMAIN-SUFFIX,pass2.soogif.com - - DOMAIN-SUFFIX,passwordrecovery.cn - - DOMAIN-SUFFIX,passwz.com - - DOMAIN-SUFFIX,pat.farvd.com - - DOMAIN-SUFFIX,patriot.cs.pp.cn - - DOMAIN-SUFFIX,pay.holaq.com - - DOMAIN-SUFFIX,pay.mobile.sina.cn - - DOMAIN-SUFFIX,pay838.com - - DOMAIN-SUFFIX,pb.funshion.net.cn - - DOMAIN-SUFFIX,pb.s3wfg.com - - DOMAIN-SUFFIX,pb.sogou.com - - DOMAIN-SUFFIX,pb.sys.pp8.com - - DOMAIN-SUFFIX,pb.wang502.com - - DOMAIN-SUFFIX,pb3.pstatp.com - - DOMAIN-SUFFIX,pbd.sogou.com - - DOMAIN-SUFFIX,pbs.lenovomm.com - - DOMAIN-SUFFIX,pc.107788.com - - DOMAIN-SUFFIX,pc.5151gj.com - - DOMAIN-SUFFIX,pc.ctsywy.com - - DOMAIN-SUFFIX,pc.quansj.cn - - DOMAIN-SUFFIX,pc.videoclick.baidu.com - - DOMAIN-SUFFIX,pcauto.irs01.com - - DOMAIN-SUFFIX,pcbrowser.dd.qq.com - - DOMAIN-SUFFIX,pcd.autohome.com.cn - - DOMAIN-SUFFIX,pcfg.wps.cn - - DOMAIN-SUFFIX,pclog.dftoutiao.com - - DOMAIN-SUFFIX,pclog.suishenyun.net - - DOMAIN-SUFFIX,pcmx.autohome.com.cn - - DOMAIN-SUFFIX,pcmzn.com - - DOMAIN-SUFFIX,pcsoftwords.dftoutiao.com - - DOMAIN-SUFFIX,pcxzo.pluto.sogou.com - - DOMAIN-SUFFIX,pd7-imp.revsci.net - - DOMAIN-SUFFIX,pdfexpert.cc - - DOMAIN-SUFFIX,pdl.gionee.com - - DOMAIN-SUFFIX,pdsjycm.com - - DOMAIN-SUFFIX,pear.dleke.com - - DOMAIN-SUFFIX,pedailyu.com - - DOMAIN-SUFFIX,pee.cn - - DOMAIN-SUFFIX,pegasus.cmcm.com - - DOMAIN-SUFFIX,pei-ads.playboy.com - - DOMAIN-SUFFIX,pf.h5game.cn - - DOMAIN-SUFFIX,pf.pchome.net - - DOMAIN-SUFFIX,pf-2.pchome.net - - DOMAIN-SUFFIX,pfp.sina.com.cn - - DOMAIN-SUFFIX,pfpip.sina.com - - DOMAIN-SUFFIX,pgdt.gtimg.cn - - DOMAIN-SUFFIX,pgdt.ugdtimg.com - - DOMAIN-SUFFIX,photo.dhford.cn - - DOMAIN-SUFFIX,photo.lyghjzs.cn - - DOMAIN-SUFFIX,photo.qianerbai.cn - - DOMAIN-SUFFIX,photo.shyexiang.cn - - DOMAIN-SUFFIX,photo.welldex.cn - - DOMAIN-SUFFIX,photo.xunhuaji.cn - - DOMAIN-SUFFIX,photo.zhanhevr.cn - - DOMAIN-SUFFIX,phpad.cqnews.net - - DOMAIN-SUFFIX,pic.0597kk.com - - DOMAIN-SUFFIX,pic.14bobo.com - - DOMAIN-SUFFIX,pic.2u.com.cn - - DOMAIN-SUFFIX,pic.adver.com.tw - - DOMAIN-SUFFIX,pic.aihaogou.com.cn - - DOMAIN-SUFFIX,pic.by175.com - - DOMAIN-SUFFIX,pic.casee.cn - - DOMAIN-SUFFIX,pic.cnmo-img.com.cn - - DOMAIN-SUFFIX,pic.dotmore.com.tw - - DOMAIN-SUFFIX,pic.ea3w.com - - DOMAIN-SUFFIX,pic.eduancm.com - - DOMAIN-SUFFIX,pic.fengniao.com - - DOMAIN-SUFFIX,pic.haowj.com.cn - - DOMAIN-SUFFIX,pic.jdbbs.com - - DOMAIN-SUFFIX,pic.jd-bbs.com - - DOMAIN-SUFFIX,pic.jdunion.com - - DOMAIN-SUFFIX,pic.moad.cn - - DOMAIN-SUFFIX,pic.neiyicun.net - - DOMAIN-SUFFIX,pic.new400.cn - - DOMAIN-SUFFIX,pic.pic-img.com - - DOMAIN-SUFFIX,pic.punchbox.org - - DOMAIN-SUFFIX,pic.pxstda.com - - DOMAIN-SUFFIX,pic.usingde.com - - DOMAIN-SUFFIX,pic.zol-img.com.cn - - DOMAIN-SUFFIX,pic1.59wd.com - - DOMAIN-SUFFIX,pic1.onetad.com - - DOMAIN-SUFFIX,pic183025.images9999.com - - DOMAIN-SUFFIX,pic2.onetad.com - - DOMAIN-SUFFIX,pic2016.5442.com - - DOMAIN-SUFFIX,pic2016.ytqmx.com - - DOMAIN-SUFFIX,pic3.onetad.com - - DOMAIN-SUFFIX,pic494036.images9999.com - - DOMAIN-SUFFIX,pic8.onetad.com - - DOMAIN-SUFFIX,pic837013.images9999.com - - DOMAIN-SUFFIX,picsinfog.com - - DOMAIN-SUFFIX,picture.duokan.com - - DOMAIN-SUFFIX,picturesquefilms.net - - DOMAIN-SUFFIX,pikacn.com - - DOMAIN-SUFFIX,pimg1.126.net - - DOMAIN-SUFFIX,ping.acc.sogou.com - - DOMAIN-SUFFIX,ping.chartbeat.net - - DOMAIN-SUFFIX,ping.pinyin.sogou.com - - DOMAIN-SUFFIX,ping.weiduofan.com - - DOMAIN-SUFFIX,pingbi.diudou.com - - DOMAIN-SUFFIX,pingdom.net - - DOMAIN-SUFFIX,pingma.qq.com - - DOMAIN-SUFFIX,pingshetrip.com - - DOMAIN-SUFFIX,pintour.com - - DOMAIN-SUFFIX,pinzhitmall.com - - DOMAIN-SUFFIX,pix.impdesk.com - - DOMAIN-SUFFIX,pix.tagcdn.com - - DOMAIN-SUFFIX,pix04.revsci.net - - DOMAIN-SUFFIX,pixel.adsafeprotected.com - - DOMAIN-SUFFIX,pixel.mathtag.com - - DOMAIN-SUFFIX,pixel.quantserve.com - - DOMAIN-SUFFIX,pixel.rubiconproject.com - - DOMAIN-SUFFIX,pixel.tapad.com - - DOMAIN-SUFFIX,pixel.vihub.ru - - DOMAIN-SUFFIX,pixel.wp.com - - DOMAIN-SUFFIX,pixel-hk.pixelinteractivemedia.com - - DOMAIN-SUFFIX,pixels.asia - - DOMAIN-SUFFIX,pixfuture.net - - DOMAIN-SUFFIX,pj3456.com - - DOMAIN-SUFFIX,pj39330.com - - DOMAIN-SUFFIX,pj50.com - - DOMAIN-SUFFIX,pj5189.com - - DOMAIN-SUFFIX,pj550077.com - - DOMAIN-SUFFIX,pjbjzf.com - - DOMAIN-SUFFIX,pjogndc8ixoidna.360doc.cn - - DOMAIN-SUFFIX,pjtymy.cn - - DOMAIN-SUFFIX,pjyu.golden1.sogou.com - - DOMAIN-SUFFIX,pk840.com - - DOMAIN-SUFFIX,p-l.play.aiseet.atianqi.com - - DOMAIN-SUFFIX,pl108258.puserving.com - - DOMAIN-SUFFIX,pl14369502.puserving.com - - DOMAIN-SUFFIX,platform.wondershare.com - - DOMAIN-SUFFIX,playad.xjmg.com - - DOMAIN-SUFFIX,player.1800coupon.com - - DOMAIN-SUFFIX,player.1stcreditrepairs.com - - DOMAIN-SUFFIX,player.800directories.com - - DOMAIN-SUFFIX,player.accoona.com - - DOMAIN-SUFFIX,player.alloutwedding.com - - DOMAIN-SUFFIX,player.insuranceandhealth.com - - DOMAIN-SUFFIX,playinfo.gomlab.com - - DOMAIN-SUFFIX,plista.com - - DOMAIN-SUFFIX,plmkolp.m.58xs.tw - - DOMAIN-SUFFIX,plt.data.pplive.com - - DOMAIN-SUFFIX,plwan.com - - DOMAIN-SUFFIX,plz.jandan.net - - DOMAIN-SUFFIX,pm.sdaiv.com - - DOMAIN-SUFFIX,pmir.3g.qq.com - - DOMAIN-SUFFIX,pmm.people.com.cn - - DOMAIN-SUFFIX,pmptrack-autohome.gentags.net - - DOMAIN-SUFFIX,pmptrack-letv.gentags.net - - DOMAIN-SUFFIX,pmptrack-yidianzixunxm.gentags.net - - DOMAIN-SUFFIX,pmptrack-youku.gentags.net - - DOMAIN-SUFFIX,png.lu.sogoucdn.com - - DOMAIN-SUFFIX,pnhfc.com - - DOMAIN-SUFFIX,pofang.com - - DOMAIN-SUFFIX,polkoa.com - - DOMAIN-SUFFIX,pomhz.com - - DOMAIN-SUFFIX,pop.91mangrandi.com - - DOMAIN-SUFFIX,pop.code.mytanwan.com - - DOMAIN-SUFFIX,pop.code.poyang.cn - - DOMAIN-SUFFIX,pop.sjk.ijinshan.com - - DOMAIN-SUFFIX,popads.net - - DOMAIN-SUFFIX,popme.163.com - - DOMAIN-SUFFIX,poppyta.com - - DOMAIN-SUFFIX,popup.jointreport-switch.com - - DOMAIN-SUFFIX,popup.msn.com - - DOMAIN-SUFFIX,popupad.cn - - DOMAIN-SUFFIX,post.ra.icast.cn - - DOMAIN-SUFFIX,poster.weather.com.cn - - DOMAIN-SUFFIX,powergg.top - - DOMAIN-SUFFIX,poyang.com - - DOMAIN-SUFFIX,pp.sxjkc.cn - - DOMAIN-SUFFIX,pp2.dhzw.org - - DOMAIN-SUFFIX,pp9899.com - - DOMAIN-SUFFIX,ppjia55.com - - DOMAIN-SUFFIX,ppoi.org - - DOMAIN-SUFFIX,ppurifier.game.xiaomi.com - - DOMAIN-SUFFIX,ppx.hgo7r.cn - - DOMAIN-SUFFIX,pr.atwola.com - - DOMAIN-SUFFIX,pr.ybp.yahoo.com - - DOMAIN-SUFFIX,pr00001.com - - DOMAIN-SUFFIX,practivate.adobe.com - - DOMAIN-SUFFIX,pr-bh.ybp.yahoo.com - - DOMAIN-SUFFIX,prc.rjje4.com - - DOMAIN-SUFFIX,prcappzone.intel.com - - DOMAIN-SUFFIX,pre.api.tw06.xlmc.sandai.net - - DOMAIN-SUFFIX,pre.ra.icast.cn - - DOMAIN-SUFFIX,prerollads.ign.com - - DOMAIN-SUFFIX,priceinfo.comuv.com - - DOMAIN-SUFFIX,pro.cn - - DOMAIN-SUFFIX,pro.heiguang.com - - DOMAIN-SUFFIX,pro.iweihai.cn - - DOMAIN-SUFFIX,probes.cedexis.com - - DOMAIN-SUFFIX,profile.ssp.rambler.ru - - DOMAIN-SUFFIX,projectwonderful.com - - DOMAIN-SUFFIX,prom.gome.com.cn - - DOMAIN-SUFFIX,promo.fileforum.com - - DOMAIN-SUFFIX,promos.fling.com - - DOMAIN-SUFFIX,promote.biz.weibo.cn - - DOMAIN-SUFFIX,promote.caixin.com - - DOMAIN-SUFFIX,promote.pair.com - - DOMAIN-SUFFIX,promotion.aliyun.com - - DOMAIN-SUFFIX,promotion.gomlab.com - - DOMAIN-SUFFIX,promotions.iasbet.com - - DOMAIN-SUFFIX,propellerads.com - - DOMAIN-SUFFIX,prophet.heise.de - - DOMAIN-SUFFIX,proton.flurry.com - - DOMAIN-SUFFIX,proxy.sec.miui.com - - DOMAIN-SUFFIX,prw.lenovomm.com - - DOMAIN-SUFFIX,ps.3fenge.com - - DOMAIN-SUFFIX,psb.lenovomm.com - - DOMAIN-SUFFIX,psfq.gou.sogou.com - - DOMAIN-SUFFIX,psma02.com - - DOMAIN-SUFFIX,ptdrw.com - - DOMAIN-SUFFIX,ptkhy.com - - DOMAIN-SUFFIX,ptw.la - - DOMAIN-SUFFIX,pub.betclick.com - - DOMAIN-SUFFIX,pub.chinadailyasia.com - - DOMAIN-SUFFIX,pub.funshion.com - - DOMAIN-SUFFIX,pub.mop.com - - DOMAIN-SUFFIX,pub1.cope.es - - DOMAIN-SUFFIX,pubbirdf.com - - DOMAIN-SUFFIX,public.app.autohome.com.cn - - DOMAIN-SUFFIX,public6.com - - DOMAIN-SUFFIX,publicidad.net - - DOMAIN-SUFFIX,publicidad.tv - - DOMAIN-SUFFIX,publish.ad.youth.cn - - DOMAIN-SUFFIX,pubmatic.com - - DOMAIN-SUFFIX,pubnative.net - - DOMAIN-SUFFIX,pubnub.com - - DOMAIN-SUFFIX,pubs.hiddennetwork.com - - DOMAIN-SUFFIX,puds.test.uae.uc.cn - - DOMAIN-SUFFIX,puds.ucweb.com - - DOMAIN-SUFFIX,pull.push.sogou.com - - DOMAIN-SUFFIX,punchbox.org - - DOMAIN-SUFFIX,punuomisi.cn - - DOMAIN-SUFFIX,pups.bdimg.com - - DOMAIN-SUFFIX,pupu.xnhh120.com - - DOMAIN-SUFFIX,push.126.net - - DOMAIN-SUFFIX,push.5z5zw.com - - DOMAIN-SUFFIX,push.air-matters.com - - DOMAIN-SUFFIX,push.app.autohome.com.cn - - DOMAIN-SUFFIX,push.com2us.net - - DOMAIN-SUFFIX,push.feng.com - - DOMAIN-SUFFIX,push.mobile.kugou.com - - DOMAIN-SUFFIX,push.res.meizu.com - - DOMAIN-SUFFIX,push.wandoujia.com - - DOMAIN-SUFFIX,push.wapx.cn - - DOMAIN-SUFFIX,push.yuedu.163.com - - DOMAIN-SUFFIX,push.zdworks.com - - DOMAIN-SUFFIX,push.zhangyue.com - - DOMAIN-SUFFIX,push.zhanzhang.baidu.com - - DOMAIN-SUFFIX,push-android.myzaker.com - - DOMAIN-SUFFIX,pushapi.lenovomm.com - - DOMAIN-SUFFIX,push-dc.51y5.net - - DOMAIN-SUFFIX,pv.alert.autohome.com.cn - - DOMAIN-SUFFIX,pv.anzhi.com - - DOMAIN-SUFFIX,pv.cheshi.com - - DOMAIN-SUFFIX,pv.enet.com.cn - - DOMAIN-SUFFIX,pv.focus.cn - - DOMAIN-SUFFIX,pv.ra.icast.cn - - DOMAIN-SUFFIX,pv.sogou.com - - DOMAIN-SUFFIX,pv.xcar.com.cn - - DOMAIN-SUFFIX,pv.zdnet.com.cn - - DOMAIN-SUFFIX,pv.zol.com.cn - - DOMAIN-SUFFIX,pvc.zol.com.cn - - DOMAIN-SUFFIX,pvdata.ku6.com - - DOMAIN-SUFFIX,pvlog.hd.baofeng.com - - DOMAIN-SUFFIX,pvlog.moviebox.baofeng.net - - DOMAIN-SUFFIX,pvm.zol.com.cn - - DOMAIN-SUFFIX,pvmsite.zol.com.cn - - DOMAIN-SUFFIX,pvsite.zol.com.cn - - DOMAIN-SUFFIX,pvstat.html5.qq.com - - DOMAIN-SUFFIX,pvtest.zol.com.cn - - DOMAIN-SUFFIX,pvx.autohome.com.cn - - DOMAIN-SUFFIX,pwj.biqugezw.com - - DOMAIN-SUFFIX,px.adhigh.net - - DOMAIN-SUFFIX,px.media-serving.com - - DOMAIN-SUFFIX,px.moatads.com - - DOMAIN-SUFFIX,px.owneriq.net - - DOMAIN-SUFFIX,px.powerlinks.com - - DOMAIN-SUFFIX,px.steelhousemedia.com - - DOMAIN-SUFFIX,pxene.com - - DOMAIN-SUFFIX,pxl.connexity.net - - DOMAIN-SUFFIX,py.qlogo.cn - - DOMAIN-SUFFIX,py.wikigifth.com - - DOMAIN-SUFFIX,py2.qlogo.cn - - DOMAIN-SUFFIX,pyerc.com - - DOMAIN-SUFFIX,pyzkk.com - - DOMAIN-SUFFIX,q.ox11.com - - DOMAIN-SUFFIX,q.s.cr-nielsen.com - - DOMAIN-SUFFIX,q1scv.vov0.com - - DOMAIN-SUFFIX,q6rwa.eschangchi.com - - DOMAIN-SUFFIX,qbyy010.com - - DOMAIN-SUFFIX,qchannel01.cn - - DOMAIN-SUFFIX,qchannel02.cn - - DOMAIN-SUFFIX,qchannel03.cn - - DOMAIN-SUFFIX,qchannel04.cn - - DOMAIN-SUFFIX,qcjslm.com - - DOMAIN-SUFFIX,qcl777.com - - DOMAIN-SUFFIX,qd.dhzw.org - - DOMAIN-SUFFIX,qd.js.sanjiangge.com - - DOMAIN-SUFFIX,qd.moutaihotel.cn - - DOMAIN-SUFFIX,qd.wanjuanba.com - - DOMAIN-SUFFIX,qd.x4399.com - - DOMAIN-SUFFIX,qdchunyu.com - - DOMAIN-SUFFIX,qeoa.hawbfa.com - - DOMAIN-SUFFIX,qgss8.com - - DOMAIN-SUFFIX,qhaif.com - - DOMAIN-SUFFIX,qhl.bealge.sogou.com - - DOMAIN-SUFFIX,qiailm.com - - DOMAIN-SUFFIX,qianclick.baidu.com - - DOMAIN-SUFFIX,qiaopiguniang.com - - DOMAIN-SUFFIX,qichexin.com - - DOMAIN-SUFFIX,qihaoqu.com - - DOMAIN-SUFFIX,qinchugudao.com - - DOMAIN-SUFFIX,qingqu.la - - DOMAIN-SUFFIX,qiqipower.com - - DOMAIN-SUFFIX,qiqivv.com - - DOMAIN-SUFFIX,qiqiww.com - - DOMAIN-SUFFIX,qiqiyii.com - - DOMAIN-SUFFIX,qiye11.ejunshi.net - - DOMAIN-SUFFIX,qiyem.ejunshi.com - - DOMAIN-SUFFIX,qiyezs.ejunshi.com - - DOMAIN-SUFFIX,qiyou.com - - DOMAIN-SUFFIX,qjfcdn1220.0101122.com - - DOMAIN-SUFFIX,qjjtc.com - - DOMAIN-SUFFIX,qlisv.siemens6es7.com - - DOMAIN-SUFFIX,qlmho.renhengshangmao.com - - DOMAIN-SUFFIX,qloer.com - - DOMAIN-SUFFIX,qlonglong.com - - DOMAIN-SUFFIX,qmkdy.com - - DOMAIN-SUFFIX,qoiusky.com - - DOMAIN-SUFFIX,qooic.com - - DOMAIN-SUFFIX,qp.yunanfuwuqi.com - - DOMAIN-SUFFIX,qq.guansenff.cn - - DOMAIN-SUFFIX,qq.irs01.com - - DOMAIN-SUFFIX,qq.tapiche.cn - - DOMAIN-SUFFIX,qq2.co - - DOMAIN-SUFFIX,qq61.com - - DOMAIN-SUFFIX,qqhuhu.com - - DOMAIN-SUFFIX,qqm98.com - - DOMAIN-SUFFIX,qqshow2-item.qq.com - - DOMAIN-SUFFIX,qqx.cqqytgpt.com - - DOMAIN-SUFFIX,qqzu.com - - DOMAIN-SUFFIX,qsbz2011.com - - DOMAIN-SUFFIX,qshxc.com - - DOMAIN-SUFFIX,qt.biqugezw.com - - DOMAIN-SUFFIX,qt002x.corp.youdao.com - - DOMAIN-SUFFIX,qtmojo.cn - - DOMAIN-SUFFIX,qtmojo.com - - DOMAIN-SUFFIX,quanliyouxi.cn - - DOMAIN-SUFFIX,quansj.cn - - DOMAIN-SUFFIX,quantcount.com - - DOMAIN-SUFFIX,quantserve.com - - DOMAIN-SUFFIX,qucaigg.com - - DOMAIN-SUFFIX,queene.cn - - DOMAIN-SUFFIX,questionmarket.com - - DOMAIN-SUFFIX,qujishu.com - - DOMAIN-SUFFIX,qumi.com - - DOMAIN-SUFFIX,qupinhj.com - - DOMAIN-SUFFIX,qutaobi.com - - DOMAIN-SUFFIX,quw18.com - - DOMAIN-SUFFIX,quyaoya.com - - DOMAIN-SUFFIX,qweqwe.mctvhp.cn - - DOMAIN-SUFFIX,qxjdlf.com - - DOMAIN-SUFFIX,qxm.pluto.sogou.com - - DOMAIN-SUFFIX,qxxys.com - - DOMAIN-SUFFIX,qyctj.com - - DOMAIN-SUFFIX,qytyf.com - - DOMAIN-SUFFIX,qzdag.com - - DOMAIN-SUFFIX,qzdfc.com - - DOMAIN-SUFFIX,qzgjprj.com - - DOMAIN-SUFFIX,qzkxt.com - - DOMAIN-SUFFIX,r.0.0.0.0.cn - - DOMAIN-SUFFIX,r.254a.com - - DOMAIN-SUFFIX,r.5207470.com - - DOMAIN-SUFFIX,r.browser.miui.com - - DOMAIN-SUFFIX,r.bxb.oupeng.com - - DOMAIN-SUFFIX,r.dmp.sina.com.cn - - DOMAIN-SUFFIX,r.mail.163.com - - DOMAIN-SUFFIX,r.msn.com - - DOMAIN-SUFFIX,r.myadx.net - - DOMAIN-SUFFIX,r.ow.0.0.0.0.cn - - DOMAIN-SUFFIX,r.pixgold.com - - DOMAIN-SUFFIX,r.radikal.ru - - DOMAIN-SUFFIX,r.xcycm.com - - DOMAIN-SUFFIX,r.youmi.net - - DOMAIN-SUFFIX,r.zlongad.com - - DOMAIN-SUFFIX,r8nu86wg.me - - DOMAIN-SUFFIX,ra.gtimg.com - - DOMAIN-SUFFIX,rabbit.meitustat.com - - DOMAIN-SUFFIX,rabbit.tg.meitu.com - - DOMAIN-SUFFIX,rack.bauermedia.co.uk - - DOMAIN-SUFFIX,rad.live.com - - DOMAIN-SUFFIX,rad.microsoft.com - - DOMAIN-SUFFIX,rad.msn.com - - DOMAIN-SUFFIX,rad.reporo.net - - DOMAIN-SUFFIX,radar.cedexis.com - - DOMAIN-SUFFIX,raeqqe.cn - - DOMAIN-SUFFIX,rank.hit.china.com - - DOMAIN-SUFFIX,rannabio.com - - DOMAIN-SUFFIX,ratings.lycos.com - - DOMAIN-SUFFIX,raw.okwan.cn - - DOMAIN-SUFFIX,rayjump.com - - DOMAIN-SUFFIX,rbp.emea.mxptint.net - - DOMAIN-SUFFIX,rbp.mxptint.net - - DOMAIN-SUFFIX,rbs.haiyunx.com - - DOMAIN-SUFFIX,rbywg.com - - DOMAIN-SUFFIX,rc.fthcz.com - - DOMAIN-SUFFIX,rc.haodongkeji.cn - - DOMAIN-SUFFIX,rc.mgwcn.com - - DOMAIN-SUFFIX,rc.xmcmn.com - - DOMAIN-SUFFIX,rc2waycm-atl.netmng.com - - DOMAIN-SUFFIX,rc-au.imrworldwide.com - - DOMAIN-SUFFIX,rcmd.pop.ijinshan.com - - DOMAIN-SUFFIX,rcp.c.appier.net - - DOMAIN-SUFFIX,rcv.iclicash.com - - DOMAIN-SUFFIX,rcv.jesgoo.com - - DOMAIN-SUFFIX,rcv.mobad.ijinshan.com - - DOMAIN-SUFFIX,rcv.moogos.com - - DOMAIN-SUFFIX,rcv.union-wifi.com - - DOMAIN-SUFFIX,rcyy3.kaopuwangjz.com - - DOMAIN-SUFFIX,rd.ane.yahoo.co.jp - - DOMAIN-SUFFIX,rd.autohome.com.cn - - DOMAIN-SUFFIX,rd.e.sogou.com - - DOMAIN-SUFFIX,rdiqt.cn - - DOMAIN-SUFFIX,rdtuijian.com - - DOMAIN-SUFFIX,rdx.autohome.com.cn - - DOMAIN-SUFFIX,re.m.taobao.com - - DOMAIN-SUFFIX,re.taobao.com - - DOMAIN-SUFFIX,re.taotaosou.com - - DOMAIN-SUFFIX,reachmax.cn - - DOMAIN-SUFFIX,reader.browser.miui.com - - DOMAIN-SUFFIX,reader.meizu.com - - DOMAIN-SUFFIX,reader.res.meizu.com - - DOMAIN-SUFFIX,realtime.monitor.ppweb.com.cn - - DOMAIN-SUFFIX,rec.g.163.com - - DOMAIN-SUFFIX,rec.moviebox.baofeng.net - - DOMAIN-SUFFIX,recreativ.ru - - DOMAIN-SUFFIX,recv-vd.gridsumdissector.cn - - DOMAIN-SUFFIX,recv-vd.gridsumdissector.com - - DOMAIN-SUFFIX,recv-wd.gridsumdissector.com - - DOMAIN-SUFFIX,red.bayimg.net - - DOMAIN-SUFFIX,redirect.simba.taobao.com - - DOMAIN-SUFFIX,redpaper-10006092.cos.myqcloud.com - - DOMAIN-SUFFIX,redvase.bravenet.com - - DOMAIN-SUFFIX,referrer.disqus.com - - DOMAIN-SUFFIX,relap.io - - DOMAIN-SUFFIX,release.baidu.com - - DOMAIN-SUFFIX,reliancevalve.com - - DOMAIN-SUFFIX,remote88.com - - DOMAIN-SUFFIX,remotedu.cn - - DOMAIN-SUFFIX,rem-track.bild.de - - DOMAIN-SUFFIX,rencai56.com - - DOMAIN-SUFFIX,renren2.maoyun.tv - - DOMAIN-SUFFIX,req.startappservice.com - - DOMAIN-SUFFIX,res.cocounion.com - - DOMAIN-SUFFIX,res.dxpmedia.com - - DOMAIN-SUFFIX,res.icast.cn - - DOMAIN-SUFFIX,res.ipingke.com - - DOMAIN-SUFFIX,res.qhupdate.com - - DOMAIN-SUFFIX,res3.feedsportal.com - - DOMAIN-SUFFIX,rescn.u3.ucweb.com - - DOMAIN-SUFFIX,resetgey.com - - DOMAIN-SUFFIX,res-ga.smzdm.com - - DOMAIN-SUFFIX,resolver.gslb.mi-idc.com - - DOMAIN-SUFFIX,resolver.msg.xiaomi.net - - DOMAIN-SUFFIX,resource.baomihua.com - - DOMAIN-SUFFIX,responsys.net - - DOMAIN-SUFFIX,ret.xinlongrubber.com - - DOMAIN-SUFFIX,rev.fapdu.com - - DOMAIN-SUFFIX,revdepo.com - - DOMAIN-SUFFIX,revealads.appspot.com - - DOMAIN-SUFFIX,revsci.net - - DOMAIN-SUFFIX,rfir2.50w.me - - DOMAIN-SUFFIX,rh.code.jjyx.com - - DOMAIN-SUFFIX,rh.greenbetterkids.com - - DOMAIN-SUFFIX,rhgyg.com - - DOMAIN-SUFFIX,rich.kuwo.cn - - DOMAIN-SUFFIX,richmedia.yimg.com - - DOMAIN-SUFFIX,riqu2015.com - - DOMAIN-SUFFIX,river.zhidao.baidu.com - - DOMAIN-SUFFIX,rj.baidu.com - - DOMAIN-SUFFIX,rjgw.theta.sogou.com - - DOMAIN-SUFFIX,rjs.niuxgame77.com - - DOMAIN-SUFFIX,rk.rongchengxxw.com - - DOMAIN-SUFFIX,rlcdn.com - - DOMAIN-SUFFIX,rlogs.youdao.com - - DOMAIN-SUFFIX,rm.ra.icast.cn - - DOMAIN-SUFFIX,rm.sina.com.cn - - DOMAIN-SUFFIX,rmads.eu.msn.com - - DOMAIN-SUFFIX,rmads.msn.com - - DOMAIN-SUFFIX,rmcxw.cn - - DOMAIN-SUFFIX,rmoeu.mercury.sogou.com - - DOMAIN-SUFFIX,rmtx.ra.icast.cn - - DOMAIN-SUFFIX,rmw.jdburl.com - - DOMAIN-SUFFIX,rnfrfxqztlno.com - - DOMAIN-SUFFIX,roia.com - - DOMAIN-SUFFIX,rosi.okkkk.com - - DOMAIN-SUFFIX,rotabanner.kulichki.net - - DOMAIN-SUFFIX,rotate.ymtracking.com - - DOMAIN-SUFFIX,rotator.tradetracker.net - - DOMAIN-SUFFIX,router.bittorrent.com - - DOMAIN-SUFFIX,rovio-news-app.angrybirdsgame.com - - DOMAIN-SUFFIX,rp.crasheye.cn - - DOMAIN-SUFFIX,rp.gwallet.com - - DOMAIN-SUFFIX,rpaulfrank.com - - DOMAIN-SUFFIX,rpc-php.trafficfactory.biz - - DOMAIN-SUFFIX,rplog.baidu.com - - DOMAIN-SUFFIX,rpnews.itaoxiaoshuo.com - - DOMAIN-SUFFIX,rpt.anchorfree.net - - DOMAIN-SUFFIX,rqgsf.com - - DOMAIN-SUFFIX,rr.knet.cn - - DOMAIN-SUFFIX,rrr.youle55.com - - DOMAIN-SUFFIX,rrsubway.com - - DOMAIN-SUFFIX,rs.sinajs.cn - - DOMAIN-SUFFIX,rs1.rensheng5.com - - DOMAIN-SUFFIX,rsas.szzek.com - - DOMAIN-SUFFIX,rsccs.com - - DOMAIN-SUFFIX,rt.funshion.net - - DOMAIN-SUFFIX,rt.gsspat.jp - - DOMAIN-SUFFIX,rtas.videocc.net - - DOMAIN-SUFFIX,rtax.criteo.com - - DOMAIN-SUFFIX,rtb.com.ru - - DOMAIN-SUFFIX,rtb.eanalyzer.de - - DOMAIN-SUFFIX,rtb.metrigo.com - - DOMAIN-SUFFIX,rtbasia.com - - DOMAIN-SUFFIX,rtb-p.kejet.net - - DOMAIN-SUFFIX,rtbstat.zcdsp.com - - DOMAIN-SUFFIX,rtlog.vidown.cn - - DOMAIN-SUFFIX,rtmonitor.kugou.com - - DOMAIN-SUFFIX,rto.steelhousemedia.com - - DOMAIN-SUFFIX,ruan88.com - - DOMAIN-SUFFIX,rubicon-match.dotomi.com - - DOMAIN-SUFFIX,rubiconproject.com - - DOMAIN-SUFFIX,rudy.adsnative.com - - DOMAIN-SUFFIX,ru-gmtdmp.mookie1.com - - DOMAIN-SUFFIX,rum-collector.pingdom.net - - DOMAIN-SUFFIX,rum-static.pingdom.net - - DOMAIN-SUFFIX,runetki.joyreactor.ru - - DOMAIN-SUFFIX,runiman.com - - DOMAIN-SUFFIX,rutrk.org - - DOMAIN-SUFFIX,ruxianke.com - - DOMAIN-SUFFIX,rvb.quanliyouxi.cn - - DOMAIN-SUFFIX,rwjfs.com - - DOMAIN-SUFFIX,rwq.youle55.com - - DOMAIN-SUFFIX,rxwan.com - - DOMAIN-SUFFIX,ry51w.cn - - DOMAIN-SUFFIX,s.0.0.0.0.cn - - DOMAIN-SUFFIX,s.051352.com - - DOMAIN-SUFFIX,s.0594529.com - - DOMAIN-SUFFIX,s.17173cdn.com - - DOMAIN-SUFFIX,s.35kds.com - - DOMAIN-SUFFIX,s.5jjx.net - - DOMAIN-SUFFIX,s.652748.com - - DOMAIN-SUFFIX,s.6travel.com - - DOMAIN-SUFFIX,s.abcache.com - - DOMAIN-SUFFIX,s.alitui.weibo.com - - DOMAIN-SUFFIX,s.baidu.com - - DOMAIN-SUFFIX,s.bmgan.com - - DOMAIN-SUFFIX,s.caduka.cn - - DOMAIN-SUFFIX,s.cdn.u17t.com - - DOMAIN-SUFFIX,s.cdxyb.cn - - DOMAIN-SUFFIX,s.clkservice.youdao.com - - DOMAIN-SUFFIX,s.com2us.net - - DOMAIN-SUFFIX,s.coveredsys.cn - - DOMAIN-SUFFIX,s.cr-nielsen.com - - DOMAIN-SUFFIX,s.csbew.com - - DOMAIN-SUFFIX,s.ddstu.com - - DOMAIN-SUFFIX,s.de123.net - - DOMAIN-SUFFIX,s.doyo.cn - - DOMAIN-SUFFIX,s.dpcq1.net - - DOMAIN-SUFFIX,s.dsjcfw.com - - DOMAIN-SUFFIX,s.effectivemeasure.net - - DOMAIN-SUFFIX,s.ekeide.com - - DOMAIN-SUFFIX,s.georgias.cn - - DOMAIN-SUFFIX,s.go.sohu.com - - DOMAIN-SUFFIX,s.haiyunx.com - - DOMAIN-SUFFIX,s.hk9600.com - - DOMAIN-SUFFIX,s.hkfuy.com - - DOMAIN-SUFFIX,s.hnhgw.cn - - DOMAIN-SUFFIX,s.hzht666.com - - DOMAIN-SUFFIX,s.img.mix.sina.com.cn - - DOMAIN-SUFFIX,s.iroby.com - - DOMAIN-SUFFIX,s.iuuff.com - - DOMAIN-SUFFIX,s.jandan.com - - DOMAIN-SUFFIX,s.jimdo.com - - DOMAIN-SUFFIX,s.jlminte.com - - DOMAIN-SUFFIX,s.jpush.cn - - DOMAIN-SUFFIX,s.jzkelida.com - - DOMAIN-SUFFIX,s.khgj.cn - - DOMAIN-SUFFIX,s.l8l9.com - - DOMAIN-SUFFIX,s.maipubao.cn - - DOMAIN-SUFFIX,s.meimeidaren.com - - DOMAIN-SUFFIX,s.mgwcn.com - - DOMAIN-SUFFIX,s.mt145.com - - DOMAIN-SUFFIX,s.okmgy.cn - - DOMAIN-SUFFIX,s.phpwind.com - - DOMAIN-SUFFIX,s.qd.qingting.fm - - DOMAIN-SUFFIX,s.qd.qingtingfm.com - - DOMAIN-SUFFIX,s.qhupdate.com - - DOMAIN-SUFFIX,s.qtad.qingting.fm - - DOMAIN-SUFFIX,s.qzkxt.com - - DOMAIN-SUFFIX,s.ryre.cn - - DOMAIN-SUFFIX,s.sh.qihoo.com - - DOMAIN-SUFFIX,s.shiftrro.com - - DOMAIN-SUFFIX,s.staqnet.com - - DOMAIN-SUFFIX,s.temaidi.com - - DOMAIN-SUFFIX,s.trafficjam.cn - - DOMAIN-SUFFIX,s.uc627.com - - DOMAIN-SUFFIX,s.uuidksinc.net - - DOMAIN-SUFFIX,s.wapadv.com - - DOMAIN-SUFFIX,s.wrating.com - - DOMAIN-SUFFIX,s.wxktv.cn - - DOMAIN-SUFFIX,s.x.cn.xtgreat.com - - DOMAIN-SUFFIX,s.xcfe.cn - - DOMAIN-SUFFIX,s.xinghao89.com - - DOMAIN-SUFFIX,s.xmcmn.com - - DOMAIN-SUFFIX,s.yanpoly.com - - DOMAIN-SUFFIX,s.yfycy.com - - DOMAIN-SUFFIX,s.yidianzixun.com - - DOMAIN-SUFFIX,s.yjkyj.cn - - DOMAIN-SUFFIX,s.youmi.net - - DOMAIN-SUFFIX,s.ysxufeng.com - - DOMAIN-SUFFIX,s.yunpifu.cn - - DOMAIN-SUFFIX,s.zgclmw.cn - - DOMAIN-SUFFIX,s.zixuntop.com - - DOMAIN-SUFFIX,s.zjhoudao.com - - DOMAIN-SUFFIX,s.zlongad.com - - DOMAIN-SUFFIX,s.zxwdw.com - - DOMAIN-SUFFIX,s0.2mdn.net - - DOMAIN-SUFFIX,s03.optimix.asia - - DOMAIN-SUFFIX,s1.2mdn.net - - DOMAIN-SUFFIX,s1.cmfu.com - - DOMAIN-SUFFIX,s1.hiapk.com - - DOMAIN-SUFFIX,s1.hnhbyxdq.com - - DOMAIN-SUFFIX,s1.huiqituan.com - - DOMAIN-SUFFIX,s1.iigushi.com - - DOMAIN-SUFFIX,s1.kutongji.com - - DOMAIN-SUFFIX,s1.mingmingtehui.com - - DOMAIN-SUFFIX,s1.qiqutt.cn - - DOMAIN-SUFFIX,s1.qiqutt.com - - DOMAIN-SUFFIX,s1.qiuyi.cn - - DOMAIN-SUFFIX,s1.s8tu.com - - DOMAIN-SUFFIX,s1.tansuotv.com - - DOMAIN-SUFFIX,s10.histats.com - - DOMAIN-SUFFIX,s2.dnaxddnc.com - - DOMAIN-SUFFIX,s2.hiapk.com - - DOMAIN-SUFFIX,s2.huoying666.com - - DOMAIN-SUFFIX,s2.kuaibaopay.com - - DOMAIN-SUFFIX,s2.mingmingtehui.com - - DOMAIN-SUFFIX,s2.yandui.com - - DOMAIN-SUFFIX,s2.zdface.com - - DOMAIN-SUFFIX,s2.zdmimg.com - - DOMAIN-SUFFIX,s3.pfp.sina.net - - DOMAIN-SUFFIX,s3.rongnews.com - - DOMAIN-SUFFIX,s3d4.cn - - DOMAIN-SUFFIX,s4.55.la - - DOMAIN-SUFFIX,s4.histats.com - - DOMAIN-SUFFIX,s400cc.com - - DOMAIN-SUFFIX,s5.keydot.net - - DOMAIN-SUFFIX,s8.001fzc.com - - DOMAIN-SUFFIX,s8.dnaxddnc.com - - DOMAIN-SUFFIX,s8x1.com - - DOMAIN-SUFFIX,s9w.cc - - DOMAIN-SUFFIX,sa909.com - - DOMAIN-SUFFIX,sad.qeo.cn - - DOMAIN-SUFFIX,safe.tsgpay.cn - - DOMAIN-SUFFIX,safe-aisle.jointreport-switch.com - - DOMAIN-SUFFIX,saferwet.com - - DOMAIN-SUFFIX,same.chinadaily.com.cn - - DOMAIN-SUFFIX,same.eastmoney.com - - DOMAIN-SUFFIX,same.jrj.com.cn - - DOMAIN-SUFFIX,same.mzy2014.com - - DOMAIN-SUFFIX,same.stockstar.com - - DOMAIN-SUFFIX,same01.jrj.com.cn - - DOMAIN-SUFFIX,same02.jrj.com.cn - - DOMAIN-SUFFIX,same03.jrj.com.cn - - DOMAIN-SUFFIX,sams.nikonimaging.com - - DOMAIN-SUFFIX,sangxi.top - - DOMAIN-SUFFIX,sanya1.com - - DOMAIN-SUFFIX,sape.ru - - DOMAIN-SUFFIX,sapi.sina.cn - - DOMAIN-SUFFIX,savebt.net - - DOMAIN-SUFFIX,saxxaz.taohuayuan8888.com - - DOMAIN-SUFFIX,sb.scorecardresearch.com - - DOMAIN-SUFFIX,sb88b.com - - DOMAIN-SUFFIX,sbeacon.sina.com.cn - - DOMAIN-SUFFIX,sbrqp.com - - DOMAIN-SUFFIX,sbw.ysjweb.com - - DOMAIN-SUFFIX,sc.58mingtian.cn - - DOMAIN-SUFFIX,sc.chinaiiss.com - - DOMAIN-SUFFIX,sc.ggdoubi.com - - DOMAIN-SUFFIX,sc.ggfeng.com - - DOMAIN-SUFFIX,sc.iasds01.com - - DOMAIN-SUFFIX,sc.sczxy.com - - DOMAIN-SUFFIX,sc.shayugg.com - - DOMAIN-SUFFIX,sc1369.com - - DOMAIN-SUFFIX,scc.0.0.0.0.cn - - DOMAIN-SUFFIX,sccdn.f2zd.com - - DOMAIN-SUFFIX,scdng.com - - DOMAIN-SUFFIX,scdown.qq.com - - DOMAIN-SUFFIX,scene.vip.xunlei.com - - DOMAIN-SUFFIX,schborg.com - - DOMAIN-SUFFIX,schemas.android.com - - DOMAIN-SUFFIX,schprompt.dangdang.com - - DOMAIN-SUFFIX,sciencelolb.com - - DOMAIN-SUFFIX,scimg.27admin.com - - DOMAIN-SUFFIX,sclick.6rooms.com - - DOMAIN-SUFFIX,sclick.baidu.com - - DOMAIN-SUFFIX,sclizhong.com - - DOMAIN-SUFFIX,sclog.moviebox.baofeng.com - - DOMAIN-SUFFIX,scorecardresearch.com - - DOMAIN-SUFFIX,scribe.twitter.com - - DOMAIN-SUFFIX,scrippsnetworks.com - - DOMAIN-SUFFIX,script.crazyegg.com - - DOMAIN-SUFFIX,script.vccoo.com - - DOMAIN-SUFFIX,script-bd.baixing.net - - DOMAIN-SUFFIX,scriptcc.cc - - DOMAIN-SUFFIX,scupio.com - - DOMAIN-SUFFIX,scw0.com - - DOMAIN-SUFFIX,sd.0.0.0.0.cn - - DOMAIN-SUFFIX,sd.kk3g.net - - DOMAIN-SUFFIX,sdac.lenovomm.com - - DOMAIN-SUFFIX,sdapprecv.app.cntvwb.cn - - DOMAIN-SUFFIX,sdb.amazonaws.com - - DOMAIN-SUFFIX,sdhzstone.net - - DOMAIN-SUFFIX,sdk.appadhoc.com - - DOMAIN-SUFFIX,sdk.cdnmaster.com - - DOMAIN-SUFFIX,sdk.cmgame.com - - DOMAIN-SUFFIX,sdk.conf.igexin.com - - DOMAIN-SUFFIX,sdk.mobad.ijinshan.com - - DOMAIN-SUFFIX,sdk.open.amp.igexin.com - - DOMAIN-SUFFIX,sdk.open.lbs.igexin.com - - DOMAIN-SUFFIX,sdk.open.phone.igexin.com - - DOMAIN-SUFFIX,sdk.open.talk.gepush.com - - DOMAIN-SUFFIX,sdk.open.talk.igexin.com - - DOMAIN-SUFFIX,sdkapp.mobile.sina.cn - - DOMAIN-SUFFIX,sdkapp.uve.weibo.com - - DOMAIN-SUFFIX,sdkclick.mobile.sina.cn - - DOMAIN-SUFFIX,sdkconfig.ad.intl.xiaomi.com - - DOMAIN-SUFFIX,sdkdm.com - - DOMAIN-SUFFIX,sdklog.cmgame.com - - DOMAIN-SUFFIX,sdklog.uu.cc - - DOMAIN-SUFFIX,sdkpay.uu.cc - - DOMAIN-SUFFIX,sdksitter.m.sjzhushou.com - - DOMAIN-SUFFIX,sdl.0.0.0.0.cn - - DOMAIN-SUFFIX,sdn.kugou.com - - DOMAIN-SUFFIX,sdn.penggua.com.cn - - DOMAIN-SUFFIX,sdownload.stargame.com - - DOMAIN-SUFFIX,sdqoi2d.com - - DOMAIN-SUFFIX,sdwfw.com - - DOMAIN-SUFFIX,sdycd.com - - DOMAIN-SUFFIX,sea.napi.ucweb.com - - DOMAIN-SUFFIX,searchignited.com - - DOMAIN-SUFFIX,searchswapper.com - - DOMAIN-SUFFIX,seavideo-ak.espn.go.com - - DOMAIN-SUFFIX,sebar.thand.info - - DOMAIN-SUFFIX,sec.resource.xiaomi.net - - DOMAIN-SUFFIX,secpay.wostore.cn - - DOMAIN-SUFFIX,secretmedia.s3.amazonaws.com - - DOMAIN-SUFFIX,secure.dsp.com - - DOMAIN-SUFFIX,secure.fastclick.net - - DOMAIN-SUFFIX,secure.img-cdn.mediaplex.com - - DOMAIN-SUFFIX,secure.quantserve.com - - DOMAIN-SUFFIX,secure.statcounter.com - - DOMAIN-SUFFIX,secure-asia.imrworldwide.com - - DOMAIN-SUFFIX,secure-assets.rubiconproject.com - - DOMAIN-SUFFIX,secure-chn.imrworldwide.com - - DOMAIN-SUFFIX,secure-ds.serving-sys.com - - DOMAIN-SUFFIX,security.browser.miui.com - - DOMAIN-SUFFIX,seen.h01ce.cn - - DOMAIN-SUFFIX,seen.hgo7r.cn - - DOMAIN-SUFFIX,seg.sharethis.com - - DOMAIN-SUFFIX,segment.com - - DOMAIN-SUFFIX,selfie.snapmobileasia.net - - DOMAIN-SUFFIX,sell1.etlong.com - - DOMAIN-SUFFIX,sensorsdata.ruguoapp.com - - DOMAIN-SUFFIX,serial.alcohol-soft.com - - DOMAIN-SUFFIX,serrano.hardwareheaven.com - - DOMAIN-SUFFIX,serve.popads.net - - DOMAIN-SUFFIX,servedby.keygamesnetwork.com - - DOMAIN-SUFFIX,server.m.pp.cn - - DOMAIN-SUFFIX,service.ad.adesk.com - - DOMAIN-SUFFIX,service.ad.duomi.com - - DOMAIN-SUFFIX,service.cocounion.com - - DOMAIN-SUFFIX,service.danmu.youku.com - - DOMAIN-SUFFIX,service.epro.sogou.com - - DOMAIN-SUFFIX,service.urchin.com - - DOMAIN-SUFFIX,servicer.adskeeper.co.uk - - DOMAIN-SUFFIX,serving-sys.com - - DOMAIN-SUFFIX,sestat.baidu.com - - DOMAIN-SUFFIX,setting.crashlytics.com - - DOMAIN-SUFFIX,setting.rayjump.com - - DOMAIN-SUFFIX,setting.snswin.qq.com - - DOMAIN-SUFFIX,settings.crashlytics.com - - DOMAIN-SUFFIX,sezvc.com - - DOMAIN-SUFFIX,sfloushi.com - - DOMAIN-SUFFIX,sg536.cn - - DOMAIN-SUFFIX,sgbfjs.info - - DOMAIN-SUFFIX,sg-cdn.effectivemeasure.net - - DOMAIN-SUFFIX,sgg.southcn.com - - DOMAIN-SUFFIX,sgvip.chinahdcm.com - - DOMAIN-SUFFIX,sh.qihoo.com - - DOMAIN-SUFFIX,sh.shuqw.com - - DOMAIN-SUFFIX,sha50.com - - DOMAIN-SUFFIX,shadu.baidu.com - - DOMAIN-SUFFIX,shaft.jebe.renren.com - - DOMAIN-SUFFIX,shama5.com - - DOMAIN-SUFFIX,shanghaironghua.com - - DOMAIN-SUFFIX,shanglinli.com - - DOMAIN-SUFFIX,shangz99991.com - - DOMAIN-SUFFIX,shankejingling.com - - DOMAIN-SUFFIX,share.gzdsw.com - - DOMAIN-SUFFIX,shared.youdao.com - - DOMAIN-SUFFIX,sharedaddomain.com - - DOMAIN-SUFFIX,sharrysweb.com - - DOMAIN-SUFFIX,shbywsd.cn - - DOMAIN-SUFFIX,shenghuo.xiaomi.com - - DOMAIN-SUFFIX,shenleyuni.com - - DOMAIN-SUFFIX,shenyian.net - - DOMAIN-SUFFIX,shenyun.com - - DOMAIN-SUFFIX,shenyun.org - - DOMAIN-SUFFIX,shenyunperformingarts.org - - DOMAIN-SUFFIX,shglegle.com - - DOMAIN-SUFFIX,shibeiou.com - - DOMAIN-SUFFIX,shiftrro.com - - DOMAIN-SUFFIX,shili.downxia.com - - DOMAIN-SUFFIX,shili.wanyx.com - - DOMAIN-SUFFIX,shiwan.dl.gxpan.cn - - DOMAIN-SUFFIX,shixunjs.th21333.com - - DOMAIN-SUFFIX,shke.kuuad.com - - DOMAIN-SUFFIX,shop.admin.yinyuetai.com - - DOMAIN-SUFFIX,shop.yinyuetai.com - - DOMAIN-SUFFIX,shop265.com - - DOMAIN-SUFFIX,shoppingpartners2.futurenet.com - - DOMAIN-SUFFIX,shouyoutan.com - - DOMAIN-SUFFIX,show.kc.taotaosou.com - - DOMAIN-SUFFIX,show.qx15.com - - DOMAIN-SUFFIX,show.xiazai16.com - - DOMAIN-SUFFIX,showcase.vpsboard.com - - DOMAIN-SUFFIX,showing.hardwareheaven.com - - DOMAIN-SUFFIX,shows.21cn.com - - DOMAIN-SUFFIX,shtt.shuqw.com - - DOMAIN-SUFFIX,shucaihangjia.com - - DOMAIN-SUFFIX,shuiguo.com - - DOMAIN-SUFFIX,shuqw.com - - DOMAIN-SUFFIX,shushijiameng123.com - - DOMAIN-SUFFIX,shuttle.bayescom.com - - DOMAIN-SUFFIX,shuzilm.cn - - DOMAIN-SUFFIX,shxinjie.cn - - DOMAIN-SUFFIX,shzyjbr.wtdtjs.rocks - - DOMAIN-SUFFIX,si9377.com - - DOMAIN-SUFFIX,sicentlife.com - - DOMAIN-SUFFIX,sifubo.cn - - DOMAIN-SUFFIX,sifuce.cn - - DOMAIN-SUFFIX,sifuda.cn - - DOMAIN-SUFFIX,sifufu.cn - - DOMAIN-SUFFIX,sifuge.cn - - DOMAIN-SUFFIX,sifugu.cn - - DOMAIN-SUFFIX,sifuhe.cn - - DOMAIN-SUFFIX,sifuhu.cn - - DOMAIN-SUFFIX,sifuji.cn - - DOMAIN-SUFFIX,sifuka.cn - - DOMAIN-SUFFIX,sigbusa.com - - DOMAIN-SUFFIX,sigo99.com - - DOMAIN-SUFFIX,simba.m.taobao.com - - DOMAIN-SUFFIX,sina.wrating.com - - DOMAIN-SUFFIX,sina.yinstar.org - - DOMAIN-SUFFIX,sinaalicdn.com - - DOMAIN-SUFFIX,sinaaliyun.cn - - DOMAIN-SUFFIX,siqwqjza.m.yikanxiaoshuo.net - - DOMAIN-SUFFIX,sis.jpush.io - - DOMAIN-SUFFIX,sit.gentags.net - - DOMAIN-SUFFIX,sit.pagechoice.net - - DOMAIN-SUFFIX,site.cdnmaster.com - - DOMAIN-SUFFIX,site.img.4tube.com - - DOMAIN-SUFFIX,sitemeter.com - - DOMAIN-SUFFIX,sitemobia.com - - DOMAIN-SUFFIX,sitescout.com - - DOMAIN-SUFFIX,sitetag.us - - DOMAIN-SUFFIX,sj.uukanshu.com - - DOMAIN-SUFFIX,sj1.3987.com - - DOMAIN-SUFFIX,sjj.jsyjwj.com - - DOMAIN-SUFFIX,skatehot.net - - DOMAIN-SUFFIX,sl.xawjwl.com - - DOMAIN-SUFFIX,slb.sxuantang.com - - DOMAIN-SUFFIX,slb.upshengyi.com - - DOMAIN-SUFFIX,slib.tvmao.cn - - DOMAIN-SUFFIX,slides.discovery.tom.com - - DOMAIN-SUFFIX,slog.sina.cn - - DOMAIN-SUFFIX,slog.sina.com.cn - - DOMAIN-SUFFIX,slot.union.ucweb.com - - DOMAIN-SUFFIX,slzs.52xiyou.com - - DOMAIN-SUFFIX,sm.0.0.0.0.cn - - DOMAIN-SUFFIX,sm1.todgo.com - - DOMAIN-SUFFIX,sm2.todgo.com - - DOMAIN-SUFFIX,smartmad.com - - DOMAIN-SUFFIX,smblock.s3.amazonaws.com - - DOMAIN-SUFFIX,smgru.net - - DOMAIN-SUFFIX,smucdn.com - - DOMAIN-SUFFIX,smxay.com - - DOMAIN-SUFFIX,smxsg.com - - DOMAIN-SUFFIX,snap.snapmobile.asia - - DOMAIN-SUFFIX,snapmobileasia.net - - DOMAIN-SUFFIX,sngmta.qq.com - - DOMAIN-SUFFIX,snnnyy.com - - DOMAIN-SUFFIX,snow001.com - - DOMAIN-SUFFIX,so9l.com - - DOMAIN-SUFFIX,soarfi.cn - - DOMAIN-SUFFIX,sobar.baidu.com - - DOMAIN-SUFFIX,sobartop.baidu.com - - DOMAIN-SUFFIX,social-touch.com - - DOMAIN-SUFFIX,sod.onelink.me - - DOMAIN-SUFFIX,soft.chaomeng8.com - - DOMAIN-SUFFIX,soft.zhidian3g.cn - - DOMAIN-SUFFIX,sohu.irs01.com - - DOMAIN-SUFFIX,sohu.wrating.com - - DOMAIN-SUFFIX,somecoding.com - - DOMAIN-SUFFIX,somennew.com - - DOMAIN-SUFFIX,song.fanxing.kugou.com - - DOMAIN-SUFFIX,song001.com - - DOMAIN-SUFFIX,sonomoyo.com - - DOMAIN-SUFFIX,sos0easy.com - - DOMAIN-SUFFIX,sou.dkdlsj.com - - DOMAIN-SUFFIX,sou.xanbhx.com - - DOMAIN-SUFFIX,souid.com - - DOMAIN-SUFFIX,source.youxiaoad.com - - DOMAIN-SUFFIX,sousuo.xm.sjzhushou.com - - DOMAIN-SUFFIX,sp.fastclick.net - - DOMAIN-SUFFIX,sp.gmossp-sp.jp - - DOMAIN-SUFFIX,sp.wndoor.com - - DOMAIN-SUFFIX,sp.yixui.com - - DOMAIN-SUFFIX,sp3.cndm.com - - DOMAIN-SUFFIX,spad.i-mobile.co.jp - - DOMAIN-SUFFIX,spade.twitch.tv - - DOMAIN-SUFFIX,spap.adingo.jp - - DOMAIN-SUFFIX,spap.adingo.jp.eimg.jp - - DOMAIN-SUFFIX,spapi.i-mobile.co.jp - - DOMAIN-SUFFIX,spb.bid.run - - DOMAIN-SUFFIX,spcdnpc.i-mobile.co.jp - - DOMAIN-SUFFIX,spcnv.i-mobile.co.jp - - DOMAIN-SUFFIX,spcode.baidu.com - - DOMAIN-SUFFIX,spdeliver.i-mobile.co.jp - - DOMAIN-SUFFIX,spdmg.i-mobile.co.jp - - DOMAIN-SUFFIX,spdmg-backend.i-mobile.co.jp - - DOMAIN-SUFFIX,sphwq.net - - DOMAIN-SUFFIX,spnet2-1.i-mobile.co.jp - - DOMAIN-SUFFIX,spnet33.i-mobile.co.jp - - DOMAIN-SUFFIX,sponsorpay.com - - DOMAIN-SUFFIX,sponsors.s2ki.com - - DOMAIN-SUFFIX,sponsors.webosroundup.com - - DOMAIN-SUFFIX,spproxy.autobytel.com - - DOMAIN-SUFFIX,spro.so.com - - DOMAIN-SUFFIX,spt.dictionary.com - - DOMAIN-SUFFIX,sqd.jstdjq.com - - DOMAIN-SUFFIX,sqext.com - - DOMAIN-SUFFIX,sqtpks3.1391.com - - DOMAIN-SUFFIX,squarespace.evyy.net - - DOMAIN-SUFFIX,src.duanxin520.com - - DOMAIN-SUFFIX,src.leju.com - - DOMAIN-SUFFIX,src.zf313.com - - DOMAIN-SUFFIX,srd.simba.taobao.com - - DOMAIN-SUFFIX,srhuafeng.com - - DOMAIN-SUFFIX,srv.carbonads.net - - DOMAIN-SUFFIX,srv.revdepo.com - - DOMAIN-SUFFIX,srv.thespacereporter.com - - DOMAIN-SUFFIX,ss.cnczjy.com - - DOMAIN-SUFFIX,ss.cnnic.cn - - DOMAIN-SUFFIX,ss.he9630.com - - DOMAIN-SUFFIX,ss.knet.cn - - DOMAIN-SUFFIX,ss.missyouxi.com - - DOMAIN-SUFFIX,ss.shicimingju.com - - DOMAIN-SUFFIX,ss.shuajuzu.com - - DOMAIN-SUFFIX,ss.subo.me - - DOMAIN-SUFFIX,ss.swagger1.com - - DOMAIN-SUFFIX,ss.sysad.cn - - DOMAIN-SUFFIX,ss.sysadult.cn - - DOMAIN-SUFFIX,ssac.suning.com - - DOMAIN-SUFFIX,sscefsol.com - - DOMAIN-SUFFIX,sscefsol.com.cn - - DOMAIN-SUFFIX,ssdaili.com - - DOMAIN-SUFFIX,ssh.hxlif.com - - DOMAIN-SUFFIX,ssh.jsyzw132.com - - DOMAIN-SUFFIX,ssh.lifu11.com - - DOMAIN-SUFFIX,ssh.szxiuchang.com - - DOMAIN-SUFFIX,ssh.yezijizhang.com - - DOMAIN-SUFFIX,ssjpx.com - - DOMAIN-SUFFIX,ssjy168.com - - DOMAIN-SUFFIX,ssl.google-analytics.com - - DOMAIN-SUFFIX,ssl.hyhzy.cn - - DOMAIN-SUFFIX,ssl.ymapp.com - - DOMAIN-SUFFIX,ssl-cdn.media.innity.net - - DOMAIN-SUFFIX,sso-cas.gridsumdissector.com - - DOMAIN-SUFFIX,ssp.08160.cn - - DOMAIN-SUFFIX,ssp.1rtb.com - - DOMAIN-SUFFIX,ssp.4hw.com.cn - - DOMAIN-SUFFIX,ssp.86str.com - - DOMAIN-SUFFIX,ssp.chaohutechan.com - - DOMAIN-SUFFIX,ssp.cibn.starschina.com - - DOMAIN-SUFFIX,ssp.daxueshengqiandai.com - - DOMAIN-SUFFIX,ssp.dmpdsp.com - - DOMAIN-SUFFIX,ssp.kjwx8.com - - DOMAIN-SUFFIX,ssp.kss.ksyun.com - - DOMAIN-SUFFIX,ssp.kssws.ks-cdn.com - - DOMAIN-SUFFIX,ssp.kxly360.com - - DOMAIN-SUFFIX,ssp.pro.cn - - DOMAIN-SUFFIX,ssp.tadseeker.com - - DOMAIN-SUFFIX,ssp.thescenseproject.com - - DOMAIN-SUFFIX,ssp.youxiaoad.com - - DOMAIN-SUFFIX,ssp.zf313.com - - DOMAIN-SUFFIX,ssp1.dmpdsp.com - - DOMAIN-SUFFIX,sspapi.youxiaoad.com - - DOMAIN-SUFFIX,ssp-bidder.i-mobile.co.jp - - DOMAIN-SUFFIX,ssp-rtb.sape.ru - - DOMAIN-SUFFIX,sss.jusha.com - - DOMAIN-SUFFIX,sss.sege.xxx - - DOMAIN-SUFFIX,sss.soarfi.cn - - DOMAIN-SUFFIX,sss.wzjmr.com - - DOMAIN-SUFFIX,sss.zbred.com - - DOMAIN-SUFFIX,sssvd.china.com - - DOMAIN-SUFFIX,sstc360.com - - DOMAIN-SUFFIX,ssum.casalemedia.com - - DOMAIN-SUFFIX,st.holalauncher.com - - DOMAIN-SUFFIX,st.holaworld.cn - - DOMAIN-SUFFIX,st.targetix.net - - DOMAIN-SUFFIX,st.yandexadexchange.net - - DOMAIN-SUFFIX,st.yengo.com - - DOMAIN-SUFFIX,sta.ganji.com - - DOMAIN-SUFFIX,sta.haloall.com - - DOMAIN-SUFFIX,sta.holagames.com - - DOMAIN-SUFFIX,sta.jcjk0451.com - - DOMAIN-SUFFIX,stadig.ifeng.com - - DOMAIN-SUFFIX,stadig0.ifeng.com - - DOMAIN-SUFFIX,staging.admin.e.mi.com - - DOMAIN-SUFFIX,staqnet.com - - DOMAIN-SUFFIX,star8.net - - DOMAIN-SUFFIX,startapp.com - - DOMAIN-SUFFIX,startappexchange.com - - DOMAIN-SUFFIX,startappservice.com - - DOMAIN-SUFFIX,startup.oupeng.com - - DOMAIN-SUFFIX,static1.kewaishu.info - - DOMAIN-SUFFIX,staticadm.leju.com - - DOMAIN-SUFFIX,staticadm.leju.sina.com.cn - - DOMAIN-SUFFIX,staticjs.cn - - DOMAIN-SUFFIX,statics.3987.com - - DOMAIN-SUFFIX,statics.9669.com - - DOMAIN-SUFFIX,statics.woozooo.com - - DOMAIN-SUFFIX,statictest.fraudmetrix.cn - - DOMAIN-SUFFIX,static-xl9-ssl.xunlei.com - - DOMAIN-SUFFIX,staticxx.facebook.com - - DOMAIN-SUFFIX,statisticsv2.yinyuetai.com - - DOMAIN-SUFFIX,stat-y.xywy.com - - DOMAIN-SUFFIX,stat-z.xywy.com - - DOMAIN-SUFFIX,steelhousemedia.com - - DOMAIN-SUFFIX,stervapoimenialena.info - - DOMAIN-SUFFIX,stg8.com - - DOMAIN-SUFFIX,stjzh.gdtarget.com - - DOMAIN-SUFFIX,st-n.ads3-adnow.com - - DOMAIN-SUFFIX,stn88.com - - DOMAIN-SUFFIX,stocksbsc.com - - DOMAIN-SUFFIX,storeconfig.mistat.xiaomi.com - - DOMAIN-SUFFIX,storewidget.pcauthority.com.au - - DOMAIN-SUFFIX,stream.heavenmedia.net - - DOMAIN-SUFFIX,stream.shuzilm.cn - - DOMAIN-SUFFIX,streaming.rtbiddingplatform.com - - DOMAIN-SUFFIX,strip.alicdn.com - - DOMAIN-SUFFIX,strip.taobaocdn.com - - DOMAIN-SUFFIX,su.8881919.cc - - DOMAIN-SUFFIX,su.bdimg.com - - DOMAIN-SUFFIX,su.bdstatic.com - - DOMAIN-SUFFIX,sub.powerapple.com - - DOMAIN-SUFFIX,sub.topber.com - - DOMAIN-SUFFIX,subswin.com - - DOMAIN-SUFFIX,sucodb.com - - DOMAIN-SUFFIX,sunjianhao.com - - DOMAIN-SUFFIX,suoooi.cn - - DOMAIN-SUFFIX,super.cat898.com - - DOMAIN-SUFFIX,super.kdnet.net - - DOMAIN-SUFFIX,supfast.net - - DOMAIN-SUFFIX,surv.xbizmedia.com - - DOMAIN-SUFFIX,susapi.dev.surepush.cn - - DOMAIN-SUFFIX,susapi.lenovomm.com - - DOMAIN-SUFFIX,suvset.sohu.com - - DOMAIN-SUFFIX,sv719.dreamdays.cn - - DOMAIN-SUFFIX,sw.cailawyer.cn - - DOMAIN-SUFFIX,sw.mobile.sogou.com - - DOMAIN-SUFFIX,swa.gtimg.com - - DOMAIN-SUFFIX,swappdl.duoyi.com - - DOMAIN-SUFFIX,switchadhub.com - - DOMAIN-SUFFIX,switching.atm.punchbox.org - - DOMAIN-SUFFIX,swpgjai.pop.weddingeeos.com - - DOMAIN-SUFFIX,swx.0.0.0.0.cn - - DOMAIN-SUFFIX,sxbhzs.net - - DOMAIN-SUFFIX,sxdyrq.com - - DOMAIN-SUFFIX,sxjxhg.com - - DOMAIN-SUFFIX,sxz67.com - - DOMAIN-SUFFIX,sy.code.mytanwan.com - - DOMAIN-SUFFIX,sy.flash.mytanwan.com - - DOMAIN-SUFFIX,sy.jlhygy.com - - DOMAIN-SUFFIX,sy.kcxsyz.com - - DOMAIN-SUFFIX,sy.shongcheng.com - - DOMAIN-SUFFIX,sy.sxjxhg.com - - DOMAIN-SUFFIX,sycbbs.com - - DOMAIN-SUFFIX,sy-cdnres.unionsy.com - - DOMAIN-SUFFIX,syilm.net - - DOMAIN-SUFFIX,sykty.com - - DOMAIN-SUFFIX,symaj.cn - - DOMAIN-SUFFIX,synacast.com - - DOMAIN-SUFFIX,sync.1dmp.io - - DOMAIN-SUFFIX,sync.1rx.io - - DOMAIN-SUFFIX,sync.adotmob.com - - DOMAIN-SUFFIX,sync.audsp.com - - DOMAIN-SUFFIX,sync.audtd.com - - DOMAIN-SUFFIX,sync.crwdcntrl.net - - DOMAIN-SUFFIX,sync.extend.tv - - DOMAIN-SUFFIX,sync.fastclick.net - - DOMAIN-SUFFIX,sync.intentiq.com - - DOMAIN-SUFFIX,sync.ipredictive.com - - DOMAIN-SUFFIX,sync.mathtag.com - - DOMAIN-SUFFIX,sync.morgdm.ru - - DOMAIN-SUFFIX,sync.rambler.ru - - DOMAIN-SUFFIX,sync.republer.com - - DOMAIN-SUFFIX,sync.teamrtb.net - - DOMAIN-SUFFIX,sync.tidaltv.com - - DOMAIN-SUFFIX,sync2.audtd.com - - DOMAIN-SUFFIX,sync-dsp.ad-m.asia - - DOMAIN-SUFFIX,sync-eu.exe.bid - - DOMAIN-SUFFIX,sync-tm.everesttech.net - - DOMAIN-SUFFIX,syndication.exdynsrv.com - - DOMAIN-SUFFIX,syndication.exoclick.com - - DOMAIN-SUFFIX,syndication.intel.com - - DOMAIN-SUFFIX,syndication.jsadapi.com - - DOMAIN-SUFFIX,syndication.twitter.com - - DOMAIN-SUFFIX,syndication1.viraladnetwork.net - - DOMAIN-SUFFIX,syndication-o.twitter.com - - DOMAIN-SUFFIX,syofew6o.net - - DOMAIN-SUFFIX,sys.zhangyue.com - - DOMAIN-SUFFIX,sysdig.com - - DOMAIN-SUFFIX,sytcyf.com - - DOMAIN-SUFFIX,sytsr.com - - DOMAIN-SUFFIX,sytz1288.com - - DOMAIN-SUFFIX,szb.aiyole.com - - DOMAIN-SUFFIX,szdzbx.com - - DOMAIN-SUFFIX,szfaq.com - - DOMAIN-SUFFIX,szggdw.com - - DOMAIN-SUFFIX,szkdst.com - - DOMAIN-SUFFIX,szrk3.com - - DOMAIN-SUFFIX,szshouzhai.com - - DOMAIN-SUFFIX,szxc868.com - - DOMAIN-SUFFIX,szxpsg.com - - DOMAIN-SUFFIX,szyr474.com - - DOMAIN-SUFFIX,t.2d-c.cn - - DOMAIN-SUFFIX,t.3apf.com - - DOMAIN-SUFFIX,t.adbxb.cn - - DOMAIN-SUFFIX,t.adcrops.net - - DOMAIN-SUFFIX,t.adxchina.cn - - DOMAIN-SUFFIX,t.atpanel.com - - DOMAIN-SUFFIX,t.cnsjx.net - - DOMAIN-SUFFIX,t.collect.yinyuetai.com - - DOMAIN-SUFFIX,t.cr-nielsen.com - - DOMAIN-SUFFIX,t.cyuew.com - - DOMAIN-SUFFIX,t.d.yoyi.tv - - DOMAIN-SUFFIX,t.dangdang.com - - DOMAIN-SUFFIX,t.dmtrck.com - - DOMAIN-SUFFIX,t.go.sohu.com - - DOMAIN-SUFFIX,t.growingio.com - - DOMAIN-SUFFIX,t.iz55.com - - DOMAIN-SUFFIX,t.oq68.com - - DOMAIN-SUFFIX,t.pingzei.com - - DOMAIN-SUFFIX,t.qiuqiuqipai.com - - DOMAIN-SUFFIX,t.sj.qq.com - - DOMAIN-SUFFIX,t.supermario.xyz - - DOMAIN-SUFFIX,t.trafmag.com - - DOMAIN-SUFFIX,t.tzcccm.com - - DOMAIN-SUFFIX,t.ujian.cc - - DOMAIN-SUFFIX,t.uvcourse.net - - DOMAIN-SUFFIX,t.youmi.net - - DOMAIN-SUFFIX,t1.58cdn.com.cn - - DOMAIN-SUFFIX,t1.jzkapp.com - - DOMAIN-SUFFIX,t1.visualrevenue.com - - DOMAIN-SUFFIX,t1.wshufa.com - - DOMAIN-SUFFIX,t188.dazhonghua.cn - - DOMAIN-SUFFIX,t2.58cdn.com.cn - - DOMAIN-SUFFIX,t2.jzkapp.com - - DOMAIN-SUFFIX,t2.vbxx.net - - DOMAIN-SUFFIX,t2.wshufa.com - - DOMAIN-SUFFIX,t3.58cdn.com.cn - - DOMAIN-SUFFIX,t70123.com - - DOMAIN-SUFFIX,t75.qyqc4s.com - - DOMAIN-SUFFIX,ta.qq.com - - DOMAIN-SUFFIX,ta80.com - - DOMAIN-SUFFIX,taat00889.com - - DOMAIN-SUFFIX,tactics.bainv.net - - DOMAIN-SUFFIX,tad.suning.com - - DOMAIN-SUFFIX,tag.cdnmaster.cn - - DOMAIN-SUFFIX,tag.digitaltarget.ru - - DOMAIN-SUFFIX,tags.growingio.com - - DOMAIN-SUFFIX,tags2.adshell.net - - DOMAIN-SUFFIX,tags4.revdepo.com - - DOMAIN-SUFFIX,tajs.qq.com - - DOMAIN-SUFFIX,tajxgs.com - - DOMAIN-SUFFIX,talk.nz.igexin.com - - DOMAIN-SUFFIX,tangoutianxia.com - - DOMAIN-SUFFIX,tansuotv.com - - DOMAIN-SUFFIX,tanwanyx.com - - DOMAIN-SUFFIX,tanx.com - - DOMAIN-SUFFIX,tanxlog.istreamsche.com - - DOMAIN-SUFFIX,tanzanite.infomine.com - - DOMAIN-SUFFIX,taobaly.cn - - DOMAIN-SUFFIX,taobaoaliyun.cn - - DOMAIN-SUFFIX,taobaobo5.com - - DOMAIN-SUFFIX,taobayun.cn - - DOMAIN-SUFFIX,taoggou.com - - DOMAIN-SUFFIX,taohanpai.com - - DOMAIN-SUFFIX,taomato.com - - DOMAIN-SUFFIX,tap.rubiconproject.com - - DOMAIN-SUFFIX,tap-cdn.rubiconproject.com - - DOMAIN-SUFFIX,tapjoy.cn - - DOMAIN-SUFFIX,tapjoy.com - - DOMAIN-SUFFIX,tapjoyads.com - - DOMAIN-SUFFIX,tap-t.rubiconproject.com - - DOMAIN-SUFFIX,targetedinfo.com - - DOMAIN-SUFFIX,targetedmedia.com.cn - - DOMAIN-SUFFIX,targetedtopic.com - - DOMAIN-SUFFIX,tatagou.com.cn - - DOMAIN-SUFFIX,tb.code.twyxi.com - - DOMAIN-SUFFIX,tb060x.corp.youdao.com - - DOMAIN-SUFFIX,tb104x.corp.youdao.com - - DOMAIN-SUFFIX,tbaocdn.com - - DOMAIN-SUFFIX,tbjfw.com - - DOMAIN-SUFFIX,tc.51la.net - - DOMAIN-SUFFIX,tc.ci123.com - - DOMAIN-SUFFIX,tc600.com - - DOMAIN-SUFFIX,tcad.wedolook.com - - DOMAIN-SUFFIX,tcjy66.cc - - DOMAIN-SUFFIX,tcss.qq.com - - DOMAIN-SUFFIX,tcxshop.com - - DOMAIN-SUFFIX,td.mpush.cn - - DOMAIN-SUFFIX,td.xue63.com - - DOMAIN-SUFFIX,tdayi.com - - DOMAIN-SUFFIX,t-e.flyme.cn - - DOMAIN-SUFFIX,teen.77rog.com - - DOMAIN-SUFFIX,telstra.imrworldwide.com - - DOMAIN-SUFFIX,temai.snssdk.com - - DOMAIN-SUFFIX,temai.taobao.com - - DOMAIN-SUFFIX,temp.163.com - - DOMAIN-SUFFIX,tencentmind.com - - DOMAIN-SUFFIX,tenddata.com - - DOMAIN-SUFFIX,test.api.xlmc.sandai.net - - DOMAIN-SUFFIX,test.eduancm.com - - DOMAIN-SUFFIX,test.surepush.cn - - DOMAIN-SUFFIX,textlink.simba.taobao.com - - DOMAIN-SUFFIX,tf.caohua.com - - DOMAIN-SUFFIX,tf.hdfdm.com - - DOMAIN-SUFFIX,tf.hftaili.com - - DOMAIN-SUFFIX,t-flow.flyme.cn - - DOMAIN-SUFFIX,tfssl.caohua.com - - DOMAIN-SUFFIX,tg.1155t.cn - - DOMAIN-SUFFIX,tg.52digua.com - - DOMAIN-SUFFIX,tg.jifen.2345.com - - DOMAIN-SUFFIX,tg.m.37.com - - DOMAIN-SUFFIX,tga.csbew.com - - DOMAIN-SUFFIX,tgb.csbew.com - - DOMAIN-SUFFIX,th21333.com - - DOMAIN-SUFFIX,th7.cn - - DOMAIN-SUFFIX,thejesperbay.com - - DOMAIN-SUFFIX,themis.yahoo.com - - DOMAIN-SUFFIX,thescenseproject.com - - DOMAIN-SUFFIX,thetestpage.39.net - - DOMAIN-SUFFIX,thoughtleadr.com - - DOMAIN-SUFFIX,thxnr.com - - DOMAIN-SUFFIX,thyvjboy.com - - DOMAIN-SUFFIX,thztv.net - - DOMAIN-SUFFIX,ti.tradetracker.net - - DOMAIN-SUFFIX,tiads.time.com - - DOMAIN-SUFFIX,tiangoutai.com - - DOMAIN-SUFFIX,tiangu99.com - - DOMAIN-SUFFIX,tianmidian.com - - DOMAIN-SUFFIX,tianqi777.com - - DOMAIN-SUFFIX,tianyanzs.com - - DOMAIN-SUFFIX,ticcdn.com - - DOMAIN-SUFFIX,timelog.moviebox.baofeng.com - - DOMAIN-SUFFIX,tiqcdn.com - - DOMAIN-SUFFIX,titan.babytree.com - - DOMAIN-SUFFIX,titan.guestworld.tripod.lycos.com - - DOMAIN-SUFFIX,titan01.babytree.com - - DOMAIN-SUFFIX,titi.qifajiang.cn - - DOMAIN-SUFFIX,tjf.lyhuayun.com - - DOMAIN-SUFFIX,tjhuajiantang.com - - DOMAIN-SUFFIX,tjlog.easou.com - - DOMAIN-SUFFIX,tjlog.ps.easou.com - - DOMAIN-SUFFIX,tjqonline.cn - - DOMAIN-SUFFIX,tjs.sjs.sinajs.cn - - DOMAIN-SUFFIX,tk.baidu.com - - DOMAIN-SUFFIX,tk.optaim.com - - DOMAIN-SUFFIX,tkd777.cn - - DOMAIN-SUFFIX,tkmdng.cn - - DOMAIN-SUFFIX,tkweb.baidu.com - - DOMAIN-SUFFIX,t-l.play.aiseet.atianqi.com - - DOMAIN-SUFFIX,tmcs.net - - DOMAIN-SUFFIX,tmisc.home.news.cn - - DOMAIN-SUFFIX,tns-counter.ru - - DOMAIN-SUFFIX,token.rubiconproject.com - - DOMAIN-SUFFIX,tongji-res1.meizu.com - - DOMAIN-SUFFIX,tongqing2015.com - - DOMAIN-SUFFIX,tool.btrabbit.la - - DOMAIN-SUFFIX,toolbar.baidu.com - - DOMAIN-SUFFIX,toolbar.msn.com - - DOMAIN-SUFFIX,toourbb.com - - DOMAIN-SUFFIX,top.h.qhimg.com - - DOMAIN-SUFFIX,top.h.qhmsg.com - - DOMAIN-SUFFIX,top267.com - - DOMAIN-SUFFIX,topitme.com - - DOMAIN-SUFFIX,total.xinmin.cn - - DOMAIN-SUFFIX,touclick.com - - DOMAIN-SUFFIX,toutiao.2haha.com - - DOMAIN-SUFFIX,toutiao.jxnews.com.cn - - DOMAIN-SUFFIX,tp.sgcn.com - - DOMAIN-SUFFIX,tpe163.com - - DOMAIN-SUFFIX,tpush.html5.qq.com - - DOMAIN-SUFFIX,tqd.ntpddq.com - - DOMAIN-SUFFIX,track-east.mobileadtrading.com - - DOMAIN-SUFFIX,trackersimulator.org - - DOMAIN-SUFFIX,tracking-server-prod-1.zenmxapps.com - - DOMAIN-SUFFIX,tradeadexchange.com - - DOMAIN-SUFFIX,tradeccl.com - - DOMAIN-SUFFIX,trafficfactory.biz - - DOMAIN-SUFFIX,trafficjam.cn - - DOMAIN-SUFFIX,trafficjunky.net - - DOMAIN-SUFFIX,trafficmp.com - - DOMAIN-SUFFIX,tralog.ganji.com - - DOMAIN-SUFFIX,tran.news.so.com - - DOMAIN-SUFFIX,tredman.com - - DOMAIN-SUFFIX,trends.mobile.sina.cn - - DOMAIN-SUFFIX,trial.alcohol-soft.com - - DOMAIN-SUFFIX,trwba.com - - DOMAIN-SUFFIX,trzina.com - - DOMAIN-SUFFIX,ts.hivecn.cn - - DOMAIN-SUFFIX,tsdlp.com - - DOMAIN-SUFFIX,tsjdgzm.m.3dllc.cc - - DOMAIN-SUFFIX,tsrc8.com - - DOMAIN-SUFFIX,tt.biquge.la - - DOMAIN-SUFFIX,tt.shxinjie.cn - - DOMAIN-SUFFIX,tt.twzui6.com - - DOMAIN-SUFFIX,tt123.eastday.com - - DOMAIN-SUFFIX,tt321.eastday.com - - DOMAIN-SUFFIX,ttcdn.cn - - DOMAIN-SUFFIX,ttlm.cc - - DOMAIN-SUFFIX,ttlowe.com - - DOMAIN-SUFFIX,ttm.htfmbt.com - - DOMAIN-SUFFIX,ttts.leztc.com - - DOMAIN-SUFFIX,ttts.miyue17.com - - DOMAIN-SUFFIX,tu.baixing.com - - DOMAIN-SUFFIX,tu.njflfd.com - - DOMAIN-SUFFIX,tu.szefe.com - - DOMAIN-SUFFIX,tuadong.com - - DOMAIN-SUFFIX,tuanxue360.net - - DOMAIN-SUFFIX,tui.gtimg.com - - DOMAIN-SUFFIX,tui1999.com - - DOMAIN-SUFFIX,tui98.cn - - DOMAIN-SUFFIX,tuia.cn - - DOMAIN-SUFFIX,tuidang.epochtimes.org - - DOMAIN-SUFFIX,tuidang.org - - DOMAIN-SUFFIX,tuigoo.com - - DOMAIN-SUFFIX,tuiguang.178.com - - DOMAIN-SUFFIX,tuiguang.meitu.com - - DOMAIN-SUFFIX,tuiguang.yicha.cn - - DOMAIN-SUFFIX,tuijian.baidu.com - - DOMAIN-SUFFIX,tuipenguin.com - - DOMAIN-SUFFIX,tuisong.baidu.com - - DOMAIN-SUFFIX,tuitiger.com - - DOMAIN-SUFFIX,tuituigui19999.com - - DOMAIN-SUFFIX,tujidao.com - - DOMAIN-SUFFIX,tukeai.com - - DOMAIN-SUFFIX,tukexiu.com - - DOMAIN-SUFFIX,tukj.net - - DOMAIN-SUFFIX,tumblrprobes.cedexis.com - - DOMAIN-SUFFIX,tumblrreports.cedexis.com - - DOMAIN-SUFFIX,tunion-api.m.taobao.com - - DOMAIN-SUFFIX,turn.com - - DOMAIN-SUFFIX,tv.code.jjyx.com - - DOMAIN-SUFFIX,tw.adon.vpon.com - - DOMAIN-SUFFIX,tw.adx.nextmedia.com - - DOMAIN-SUFFIX,tw.api.vpon.com - - DOMAIN-SUFFIX,tw.fgmtv.org - - DOMAIN-SUFFIX,tw.pub.vpon.com - - DOMAIN-SUFFIX,tw13b093.sandai.net - - DOMAIN-SUFFIX,twb98.com - - DOMAIN-SUFFIX,twcczhu.com - - DOMAIN-SUFFIX,twh5.com - - DOMAIN-SUFFIX,twinplan.com - - DOMAIN-SUFFIX,twitterzs.com - - DOMAIN-SUFFIX,twldmx.com - - DOMAIN-SUFFIX,twzui6.com - - DOMAIN-SUFFIX,tx.lwinl.com - - DOMAIN-SUFFIX,txt.go.sohu.com - - DOMAIN-SUFFIX,txtad.jijiplayer.com - - DOMAIN-SUFFIX,tylll.com - - DOMAIN-SUFFIX,tyu.quanliyouxi.cn - - DOMAIN-SUFFIX,tyx.xtzxmy.com - - DOMAIN-SUFFIX,tz.1688988.com - - DOMAIN-SUFFIX,tz.zjhoudao.com - - DOMAIN-SUFFIX,tzbtw.com - - DOMAIN-SUFFIX,tz-dsp.com - - DOMAIN-SUFFIX,u.63kc.com - - DOMAIN-SUFFIX,u.cnzol.com - - DOMAIN-SUFFIX,u.ddvip.com - - DOMAIN-SUFFIX,u.diannaodian.com - - DOMAIN-SUFFIX,u.huoying666.com - - DOMAIN-SUFFIX,u.jimdo.com - - DOMAIN-SUFFIX,u.qijipc.com - - DOMAIN-SUFFIX,u.raidmedia.com.cn - - DOMAIN-SUFFIX,u.uc123.com - - DOMAIN-SUFFIX,u.ucfly.com - - DOMAIN-SUFFIX,u.xcy8.com - - DOMAIN-SUFFIX,u.yiiwoo.com - - DOMAIN-SUFFIX,u.yizuya.com - - DOMAIN-SUFFIX,u0.s.minisplat.cn - - DOMAIN-SUFFIX,u034024.nr1234.com - - DOMAIN-SUFFIX,u1.img.mobile.sina.cn - - DOMAIN-SUFFIX,u1.s.minisplat.cn - - DOMAIN-SUFFIX,u1.shuaiku.com - - DOMAIN-SUFFIX,u2.s.minisplat.cn - - DOMAIN-SUFFIX,u291014.nr1234.com - - DOMAIN-SUFFIX,u349036.ff112222.com - - DOMAIN-SUFFIX,ua.badongo.com - - DOMAIN-SUFFIX,uapi.punchbox.org - - DOMAIN-SUFFIX,ubm.fangtoo.com - - DOMAIN-SUFFIX,uc.haoyunyuan.cc - - DOMAIN-SUFFIX,uc.xiansuper.com - - DOMAIN-SUFFIX,uc2.atobo.com.cn - - DOMAIN-SUFFIX,uc610.com - - DOMAIN-SUFFIX,uc9.ucweb.com - - DOMAIN-SUFFIX,ucaliyun.cn - - DOMAIN-SUFFIX,ucan.25pp.com - - DOMAIN-SUFFIX,ucqq.cnsptv.com.cn - - DOMAIN-SUFFIX,ucrzgcs.cn - - DOMAIN-SUFFIX,ucstat.baidu.com - - DOMAIN-SUFFIX,ucus.ucweb.com - - DOMAIN-SUFFIX,ucxxii.com - - DOMAIN-SUFFIX,uczzd.com - - DOMAIN-SUFFIX,uczzd.com.cn - - DOMAIN-SUFFIX,uczzd.net - - DOMAIN-SUFFIX,udata.mixmarket.biz - - DOMAIN-SUFFIX,udc.msn.com - - DOMAIN-SUFFIX,udm.scorecardresearch.com - - DOMAIN-SUFFIX,udrig.com - - DOMAIN-SUFFIX,udrwyjpwjfeg.com - - DOMAIN-SUFFIX,ue.ueadlian.com - - DOMAIN-SUFFIX,ue.yeyoucdn.com - - DOMAIN-SUFFIX,ueadlian.com - - DOMAIN-SUFFIX,uebawtz7.me - - DOMAIN-SUFFIX,ugc.moji001.com - - DOMAIN-SUFFIX,ugg.keefung-zs.com - - DOMAIN-SUFFIX,ugg66.com - - DOMAIN-SUFFIX,ugvip.com - - DOMAIN-SUFFIX,ui37.net - - DOMAIN-SUFFIX,uid.ksosoft.com - - DOMAIN-SUFFIX,uid.mdbchina.com - - DOMAIN-SUFFIX,uimg.27admin.com - - DOMAIN-SUFFIX,uimserv.net - - DOMAIN-SUFFIX,ujian.cc - - DOMAIN-SUFFIX,ujikdd041o.cn - - DOMAIN-SUFFIX,uk3oi.adgze.cn - - DOMAIN-SUFFIX,ukeiae.com - - DOMAIN-SUFFIX,ulic.baidu.com - - DOMAIN-SUFFIX,ulink.cc - - DOMAIN-SUFFIX,ultraiso.net - - DOMAIN-SUFFIX,um.simpli.fi - - DOMAIN-SUFFIX,um0592.com - - DOMAIN-SUFFIX,um2.eqads.com - - DOMAIN-SUFFIX,um29.com - - DOMAIN-SUFFIX,umid.orion.meizu.com - - DOMAIN-SUFFIX,umyai.com - - DOMAIN-SUFFIX,un.52rkl.cn - - DOMAIN-SUFFIX,un.soarfi.cn - - DOMAIN-SUFFIX,un.winasdaq.com - - DOMAIN-SUFFIX,un1.takefoto.cn - - DOMAIN-SUFFIX,unconf.mobad.ijinshan.com - - DOMAIN-SUFFIX,undm.qibulo.com - - DOMAIN-SUFFIX,unicast.ign.com - - DOMAIN-SUFFIX,unicast.msn.com - - DOMAIN-SUFFIX,unilog.wostore.cn - - DOMAIN-SUFFIX,unimhk.com - - DOMAIN-SUFFIX,union.baidu.com - - DOMAIN-SUFFIX,union.baidustatic.guannin.com - - DOMAIN-SUFFIX,union.china.com.cn - - DOMAIN-SUFFIX,union.dbba.cn - - DOMAIN-SUFFIX,union.maccms.com - - DOMAIN-SUFFIX,union.mop.com - - DOMAIN-SUFFIX,union.sogou.com - - DOMAIN-SUFFIX,union.star-media.cn - - DOMAIN-SUFFIX,union.youdao.com - - DOMAIN-SUFFIX,union1.xiaojianjian.net - - DOMAIN-SUFFIX,uniondm.cz88.net - - DOMAIN-SUFFIX,unionimage.baidu.com - - DOMAIN-SUFFIX,unionsy.com - - DOMAIN-SUFFIX,union-wifi.com - - DOMAIN-SUFFIX,unipaydl.wostore.cn - - DOMAIN-SUFFIX,unipayupg.wostore.cn - - DOMAIN-SUFFIX,unitacs.m.taobao.com - - DOMAIN-SUFFIX,unjs.jfcdns.com - - DOMAIN-SUFFIX,unlitui.com - - DOMAIN-SUFFIX,uns.soarfi.cn - - DOMAIN-SUFFIX,untitled.dwstatic.com - - DOMAIN-SUFFIX,uodoo.com - - DOMAIN-SUFFIX,uoyrsd.com - - DOMAIN-SUFFIX,up.cm.ksmobile.com - - DOMAIN-SUFFIX,up.hiao.com - - DOMAIN-SUFFIX,up4.ucweb.com - - DOMAIN-SUFFIX,upd.faronicslabs.com - - DOMAIN-SUFFIX,update.360safe.com - - DOMAIN-SUFFIX,update.avlyun.sec.miui.com - - DOMAIN-SUFFIX,update.bainv.net - - DOMAIN-SUFFIX,update.coolyun.com - - DOMAIN-SUFFIX,update.juw37xqo3x.com - - DOMAIN-SUFFIX,update.minipage.2345.com - - DOMAIN-SUFFIX,update.mobile.kugou.com - - DOMAIN-SUFFIX,update.sdk.jiguang.cn - - DOMAIN-SUFFIX,updatecenter.qq.com - - DOMAIN-SUFFIX,updatepage.kuwo.cn - - DOMAIN-SUFFIX,updates-s3.binaryage.com - - DOMAIN-SUFFIX,uplze.code.weddingeeos.com - - DOMAIN-SUFFIX,ups.ksmobile.net - - DOMAIN-SUFFIX,upush.res.meizu.com - - DOMAIN-SUFFIX,uqszvk.code.weddingeeos.com - - DOMAIN-SUFFIX,uqum.52shouyou.com.cn - - DOMAIN-SUFFIX,urbanairship.com - - DOMAIN-SUFFIX,urchin.5173.com - - DOMAIN-SUFFIX,urh.tylll.com - - DOMAIN-SUFFIX,urhu.cn - - DOMAIN-SUFFIX,uri6.com - - DOMAIN-SUFFIX,url.222bz.com - - DOMAIN-SUFFIX,url.tudown.com - - DOMAIN-SUFFIX,urls.api.twitter.com - - DOMAIN-SUFFIX,us.bannyat.com - - DOMAIN-SUFFIX,us.bs.serving-sys.com - - DOMAIN-SUFFIX,user.tiankongzudui.com - - DOMAIN-SUFFIX,usercollection.chinadaily.com.cn - - DOMAIN-SUFFIX,ushaqi.com - - DOMAIN-SUFFIX,usingde.com - - DOMAIN-SUFFIX,usr.mgid.com - - DOMAIN-SUFFIX,uss-pid.lenovomm.com - - DOMAIN-SUFFIX,usync.aws.rubiconproject.com - - DOMAIN-SUFFIX,ut2.shuqistat.com - - DOMAIN-SUFFIX,util.nphoto.net - - DOMAIN-SUFFIX,utility.baidu.com - - DOMAIN-SUFFIX,utility.rogersmedia.com - - DOMAIN-SUFFIX,utk.baidu.com - - DOMAIN-SUFFIX,utp.ucweb.com - - DOMAIN-SUFFIX,uu.feipukeplus.com - - DOMAIN-SUFFIX,uu.zeverdg.com - - DOMAIN-SUFFIX,uuidksinc.net - - DOMAIN-SUFFIX,uulucky.com - - DOMAIN-SUFFIX,uvclick.com - - DOMAIN-SUFFIX,uw9377.com - - DOMAIN-SUFFIX,uxip.meizu.com - - DOMAIN-SUFFIX,uyunad.com - - DOMAIN-SUFFIX,uzpmrbek.com - - DOMAIN-SUFFIX,v.dbncp.com - - DOMAIN-SUFFIX,v.e7002.com - - DOMAIN-SUFFIX,v.irs01.com - - DOMAIN-SUFFIX,v.oq68.com - - DOMAIN-SUFFIX,v.rmbn.net - - DOMAIN-SUFFIX,v.szpaopao.com - - DOMAIN-SUFFIX,v00087.com - - DOMAIN-SUFFIX,v02u9.cn - - DOMAIN-SUFFIX,v1.0594529.com - - DOMAIN-SUFFIX,v1.ujian.cc - - DOMAIN-SUFFIX,v12-r0566gbscjw.z.irs01.com - - DOMAIN-SUFFIX,v1-feed.idreamsky.com - - DOMAIN-SUFFIX,v2.fm.n.duokanbox.com - - DOMAIN-SUFFIX,v2.jiathis.com - - DOMAIN-SUFFIX,v3.jiathis.com - - DOMAIN-SUFFIX,v66v66.com - - DOMAIN-SUFFIX,v7.kawinhome.com - - DOMAIN-SUFFIX,v707070.com - - DOMAIN-SUFFIX,va.gxpan.cn - - DOMAIN-SUFFIX,vad1.jianshen8.com - - DOMAIN-SUFFIX,val.atm.cp31.ott.cibntv.net - - DOMAIN-SUFFIX,valf.atm.cp31.ott.cibntv.net - - DOMAIN-SUFFIX,vamaker.com - - DOMAIN-SUFFIX,vangmobi.com - - DOMAIN-SUFFIX,vas.funshion.com - - DOMAIN-SUFFIX,vatrack.hinet.net - - DOMAIN-SUFFIX,vcfs6ip5h6.bid - - DOMAIN-SUFFIX,vda.17173.com - - DOMAIN-SUFFIX,vdapprecv.app.cntvwb.cn - - DOMAIN-SUFFIX,vdazz.net - - DOMAIN-SUFFIX,ve.tsdlp.com - - DOMAIN-SUFFIX,vedeh.com - - DOMAIN-SUFFIX,vegaschina.cn - - DOMAIN-SUFFIX,vegent.cn - - DOMAIN-SUFFIX,vendor1.fitschigogerl.com - - DOMAIN-SUFFIX,ver.touclick.com - - DOMAIN-SUFFIX,verdict.abc.go.com - - DOMAIN-SUFFIX,vers80.com - - DOMAIN-SUFFIX,vg02h8z1ul.me - - DOMAIN-SUFFIX,vi0.mzy2014.com - - DOMAIN-SUFFIX,vi1.ku6img.net - - DOMAIN-SUFFIX,vi1.mzy2014.com - - DOMAIN-SUFFIX,vi1.souid.com - - DOMAIN-SUFFIX,vi2.ku6img.net - - DOMAIN-SUFFIX,vichc.com - - DOMAIN-SUFFIX,victorjx.com - - DOMAIN-SUFFIX,video.cooguo.com - - DOMAIN-SUFFIX,video.ureport.push.qq.com - - DOMAIN-SUFFIX,video.wap.mpush.qq.com - - DOMAIN-SUFFIX,videondun.com - - DOMAIN-SUFFIX,videopush.baidu.com - - DOMAIN-SUFFIX,viglink.com - - DOMAIN-SUFFIX,vimg.dwstatic.com - - DOMAIN-SUFFIX,vip.cainiaofx.com - - DOMAIN-SUFFIX,vip.hyz86.com - - DOMAIN-SUFFIX,vip.id528.com - - DOMAIN-SUFFIX,vip.jindu179.com - - DOMAIN-SUFFIX,vip.mall044.com - - DOMAIN-SUFFIX,vip.media8.cn - - DOMAIN-SUFFIX,vip.pinghuhome.com - - DOMAIN-SUFFIX,vip.qqxwf.com - - DOMAIN-SUFFIX,vip.zhuba8.com - - DOMAIN-SUFFIX,vipads.cn - - DOMAIN-SUFFIX,vista.tgbus.com - - DOMAIN-SUFFIX,vista.tgbusdata.cn - - DOMAIN-SUFFIX,visualscience.external.bbc.co.uk - - DOMAIN-SUFFIX,vj.x-ssp.com - - DOMAIN-SUFFIX,vj0.42422277.com - - DOMAIN-SUFFIX,vjcyehtqm9.me - - DOMAIN-SUFFIX,vl8c4g7tmo.me - - DOMAIN-SUFFIX,vlive.qqvideo.tc.qq.com - - DOMAIN-SUFFIX,vmzqwz.cn - - DOMAIN-SUFFIX,vn543.com - - DOMAIN-SUFFIX,vns800600.net - - DOMAIN-SUFFIX,vodlog.m1905.cn - - DOMAIN-SUFFIX,voiceads.cn - - DOMAIN-SUFFIX,voiceads.com - - DOMAIN-SUFFIX,voila.refr.adgtw.orangeads.fr - - DOMAIN-SUFFIX,vol.lflili.com - - DOMAIN-SUFFIX,vpon.com - - DOMAIN-SUFFIX,vps.inte.sogou.com - - DOMAIN-SUFFIX,vs.funshion.com - - DOMAIN-SUFFIX,vs19.gzcu.u3.ucweb.com - - DOMAIN-SUFFIX,vs2.gzcu.u3.ucweb.com - - DOMAIN-SUFFIX,vs7.gzcu.u3.ucweb.com - - DOMAIN-SUFFIX,vs8.gzct.u3.ucweb.com - - DOMAIN-SUFFIX,vs8.gzcu.u3.ucweb.com - - DOMAIN-SUFFIX,v-sence.gentags.net - - DOMAIN-SUFFIX,vsnoon.com - - DOMAIN-SUFFIX,vt.bjhdonline.com - - DOMAIN-SUFFIX,vtale.org - - DOMAIN-SUFFIX,vungle.cn - - DOMAIN-SUFFIX,vungle.com - - DOMAIN-SUFFIX,vupload.duowan.com - - DOMAIN-SUFFIX,vvlog.moviebox.baofeng.com - - DOMAIN-SUFFIX,vvv.ieduw.com - - DOMAIN-SUFFIX,vvvulqn7.com - - DOMAIN-SUFFIX,vwkhdi.cn - - DOMAIN-SUFFIX,vwws6.net - - DOMAIN-SUFFIX,vz-cdn.contentabc.com - - DOMAIN-SUFFIX,vz-cdn.trafficjunky.net - - DOMAIN-SUFFIX,w.bobocn.cn - - DOMAIN-SUFFIX,w.cube3d.cn - - DOMAIN-SUFFIX,w.gdown.baidu.com - - DOMAIN-SUFFIX,w.homes.yahoo.net - - DOMAIN-SUFFIX,w.jscsd.cn - - DOMAIN-SUFFIX,w.m.taobao.com - - DOMAIN-SUFFIX,w.punchbox.org - - DOMAIN-SUFFIX,w.sharethis.com - - DOMAIN-SUFFIX,w.waacorp.com - - DOMAIN-SUFFIX,w.werpig.com - - DOMAIN-SUFFIX,w.x.baidu.com - - DOMAIN-SUFFIX,w.xiaopiaoyou.com - - DOMAIN-SUFFIX,w.yamaidei.cn - - DOMAIN-SUFFIX,w.yinyuehu.cn - - DOMAIN-SUFFIX,w.ymapp.com - - DOMAIN-SUFFIX,w1.diaoyou.com - - DOMAIN-SUFFIX,w2528.com - - DOMAIN-SUFFIX,w3.yinyuehu.cn - - DOMAIN-SUFFIX,w3989.com - - DOMAIN-SUFFIX,w5sac788c1.360doc.cn - - DOMAIN-SUFFIX,w6061.move7.com - - DOMAIN-SUFFIX,w65p.com - - DOMAIN-SUFFIX,w8.com.cn - - DOMAIN-SUFFIX,w88.go.com - - DOMAIN-SUFFIX,wa.kuwo.cn - - DOMAIN-SUFFIX,wallet.advcash.com - - DOMAIN-SUFFIX,wan.2345.com - - DOMAIN-SUFFIX,wan.douyu.com - - DOMAIN-SUFFIX,wan.rising.cn - - DOMAIN-SUFFIX,wan.sogou.com - - DOMAIN-SUFFIX,wancai.com - - DOMAIN-SUFFIX,wanfeng1.com - - DOMAIN-SUFFIX,wangdaizao.com - - DOMAIN-SUFFIX,wangdq.com - - DOMAIN-SUFFIX,wangmeng.baidu.com - - DOMAIN-SUFFIX,wangmeng.sogou.com - - DOMAIN-SUFFIX,wangsufast.com - - DOMAIN-SUFFIX,wanproxy.127.net - - DOMAIN-SUFFIX,wantaico.com - - DOMAIN-SUFFIX,wantfour.com - - DOMAIN-SUFFIX,wap.114so.cn - - DOMAIN-SUFFIX,wap.138lm.com - - DOMAIN-SUFFIX,wap.bytdzsw.com - - DOMAIN-SUFFIX,wap.cmgame.com - - DOMAIN-SUFFIX,wap.moad.cn - - DOMAIN-SUFFIX,wap.mpush.qq.com - - DOMAIN-SUFFIX,wap.tanwan.com - - DOMAIN-SUFFIX,wap.txwdn.com - - DOMAIN-SUFFIX,wap.wooboo.com.cn - - DOMAIN-SUFFIX,wap001.bytravel.cn - - DOMAIN-SUFFIX,wap3.ucweb.com - - DOMAIN-SUFFIX,wapadv.com - - DOMAIN-SUFFIX,wappv.zol.com.cn - - DOMAIN-SUFFIX,waps.cn - - DOMAIN-SUFFIX,wapscdn.wapx.cn - - DOMAIN-SUFFIX,wapssl.ff113300.com - - DOMAIN-SUFFIX,wapwbclick.mobile.sina.cn - - DOMAIN-SUFFIX,wapx.cn - - DOMAIN-SUFFIX,wapx.com - - DOMAIN-SUFFIX,watson.live.com - - DOMAIN-SUFFIX,watson.microsoft.com - - DOMAIN-SUFFIX,wazero.online - - DOMAIN-SUFFIX,wb.gtimg.com - - DOMAIN-SUFFIX,wbapp.mobile.sina.cn - - DOMAIN-SUFFIX,wbclick.mobile.sina.cn - - DOMAIN-SUFFIX,wbpctips.mobile.sina.cn - - DOMAIN-SUFFIX,wbwl.houyi.baofeng.net - - DOMAIN-SUFFIX,wda.ydt.com.cn - - DOMAIN-SUFFIX,wd-edge.sharethis.com - - DOMAIN-SUFFIX,wdgsl.com - - DOMAIN-SUFFIX,wds.inte.sogoucdn.com - - DOMAIN-SUFFIX,wdzsb.com.cn - - DOMAIN-SUFFIX,we.tm - - DOMAIN-SUFFIX,weareqy.com - - DOMAIN-SUFFIX,web.900.la - - DOMAIN-SUFFIX,web.ali213.net - - DOMAIN-SUFFIX,web.data.pplive.com - - DOMAIN-SUFFIX,web.houyi.baofeng.net - - DOMAIN-SUFFIX,web.kuaisouwifi.com - - DOMAIN-SUFFIX,web.sogou.com - - DOMAIN-SUFFIX,webd.home.news.cn - - DOMAIN-SUFFIX,webdissector.com - - DOMAIN-SUFFIX,webkooo.com - - DOMAIN-SUFFIX,weblb-wg.gslb.spotify.com - - DOMAIN-SUFFIX,webmaster.extabit.com - - DOMAIN-SUFFIX,webmine.cz - - DOMAIN-SUFFIX,webstat.kuwo.cn - - DOMAIN-SUFFIX,webstat.ws.126.net - - DOMAIN-SUFFIX,webterren.com - - DOMAIN-SUFFIX,webtrends.yccdn.com - - DOMAIN-SUFFIX,weibomingzi.com - - DOMAIN-SUFFIX,weiguizhizuo.com - - DOMAIN-SUFFIX,weiqiqu.cn - - DOMAIN-SUFFIX,weishi.baidu.com - - DOMAIN-SUFFIX,weixiangzu.cn - - DOMAIN-SUFFIX,weixin.renrenying.com - - DOMAIN-SUFFIX,weixinvip.ren - - DOMAIN-SUFFIX,weld.iefsf.com - - DOMAIN-SUFFIX,weld.uunice.com - - DOMAIN-SUFFIX,weld830.uunice.com - - DOMAIN-SUFFIX,weldc1.021ye.com - - DOMAIN-SUFFIX,werpig.com - - DOMAIN-SUFFIX,weyyae.com - - DOMAIN-SUFFIX,wgie.0z5jn.cn - - DOMAIN-SUFFIX,wgnlz.com - - DOMAIN-SUFFIX,wgnmp.com - - DOMAIN-SUFFIX,whafwl.com - - DOMAIN-SUFFIX,whalecloud.com - - DOMAIN-SUFFIX,whcrdz.com - - DOMAIN-SUFFIX,whistleout.s3.amazonaws.com - - DOMAIN-SUFFIX,whn.star-media.cn - - DOMAIN-SUFFIX,whpxy.com - - DOMAIN-SUFFIX,whu.cwpush.com - - DOMAIN-SUFFIX,whytoss.com - - DOMAIN-SUFFIX,widget.criteo.com - - DOMAIN-SUFFIX,widget.crowdignite.com - - DOMAIN-SUFFIX,widget.directory.dailycommercial.com - - DOMAIN-SUFFIX,widget.kelkoo.com - - DOMAIN-SUFFIX,widget.raaze.com - - DOMAIN-SUFFIX,widget.searchschoolsnetwork.com - - DOMAIN-SUFFIX,widget.shopstyle.com.au - - DOMAIN-SUFFIX,widget.solarquotes.com.au - - DOMAIN-SUFFIX,widgets.comcontent.net - - DOMAIN-SUFFIX,widgets.realestate.com.au - - DOMAIN-SUFFIX,widnd.dajiadou6.com - - DOMAIN-SUFFIX,wifiapi01.51y5.net - - DOMAIN-SUFFIX,wifiapi02.51y5.net - - DOMAIN-SUFFIX,wifijia.net - - DOMAIN-SUFFIX,wifishow.ggsafe.com - - DOMAIN-SUFFIX,wikigifth.com - - DOMAIN-SUFFIX,winads.cn - - DOMAIN-SUFFIX,winasdaq.com - - DOMAIN-SUFFIX,winbaicai.com - - DOMAIN-SUFFIX,windcdna.com - - DOMAIN-SUFFIX,winlinebet.ru - - DOMAIN-SUFFIX,winvestern.com.cn - - DOMAIN-SUFFIX,wip3.adobe.com - - DOMAIN-SUFFIX,wisepush.video.baidu.com - - DOMAIN-SUFFIX,wiyun.com - - DOMAIN-SUFFIX,wjguc.com - - DOMAIN-SUFFIX,wka8.com - - DOMAIN-SUFFIX,wkanc.com - - DOMAIN-SUFFIX,wl.51taifu.com - - DOMAIN-SUFFIX,wl.eastlady.cn - - DOMAIN-SUFFIX,wl.houyi.baofeng.net - - DOMAIN-SUFFIX,wlkpa.cn - - DOMAIN-SUFFIX,wlneteller.adsrv.eacdn.com - - DOMAIN-SUFFIX,wlpinnaclesports.eacdn.com - - DOMAIN-SUFFIX,wm.20150.net - - DOMAIN-SUFFIX,wm.69shi.cn - - DOMAIN-SUFFIX,wm.baidu.com - - DOMAIN-SUFFIX,wm.lrswl.com - - DOMAIN-SUFFIX,wm.mipcdn.com - - DOMAIN-SUFFIX,wmcdn.qtmojo.cn - - DOMAIN-SUFFIX,wo.iuni.com.cn - - DOMAIN-SUFFIX,wo685.com - - DOMAIN-SUFFIX,woaizhongguo.cdn111222.com - - DOMAIN-SUFFIX,wodhid.com - - DOMAIN-SUFFIX,wole.us - - DOMAIN-SUFFIX,womenbaby.com - - DOMAIN-SUFFIX,womenwan.com - - DOMAIN-SUFFIX,wooboo.com.cn - - DOMAIN-SUFFIX,woocall.sina.com.cn - - DOMAIN-SUFFIX,woodpecker.uc.cn - - DOMAIN-SUFFIX,worldh5.gamehz.cn - - DOMAIN-SUFFIX,wowips.com - - DOMAIN-SUFFIX,wpc.32df9.rhocdn.net - - DOMAIN-SUFFIX,wpwdf.com - - DOMAIN-SUFFIX,wqmobile.com - - DOMAIN-SUFFIX,wqqsa.puzihua.com - - DOMAIN-SUFFIX,wqsph.net - - DOMAIN-SUFFIX,wrvdmh.cn - - DOMAIN-SUFFIX,ws.ksmobile.net - - DOMAIN-SUFFIX,ws.progrss.yahoo.com - - DOMAIN-SUFFIX,ws.sj.qq.com - - DOMAIN-SUFFIX,ws.tapjoyads.com - - DOMAIN-SUFFIX,ws.voiceads.cn - - DOMAIN-SUFFIX,ws1.datouniao.com - - DOMAIN-SUFFIX,ws2.cootekservice.com - - DOMAIN-SUFFIX,ws2.datouniao.com - - DOMAIN-SUFFIX,ws341.com - - DOMAIN-SUFFIX,ws7j.com - - DOMAIN-SUFFIX,wshufa.com - - DOMAIN-SUFFIX,wsoe.kwiago.com - - DOMAIN-SUFFIX,wsp.marketgid.com - - DOMAIN-SUFFIX,wstztt.com - - DOMAIN-SUFFIX,wtcpm.com - - DOMAIN-SUFFIX,wth.lenovomm.com - - DOMAIN-SUFFIX,wtpn.twenga.co.uk - - DOMAIN-SUFFIX,wtpn.twenga.de - - DOMAIN-SUFFIX,wtrace.cmgame.com - - DOMAIN-SUFFIX,wtradv.market.xiaomi.com - - DOMAIN-SUFFIX,wu65.com - - DOMAIN-SUFFIX,wudang05.com - - DOMAIN-SUFFIX,wuliao.epro.sogou.com - - DOMAIN-SUFFIX,wuliao.ganji.cn - - DOMAIN-SUFFIX,wuliao.juqingba.cn - - DOMAIN-SUFFIX,wumii.cn - - DOMAIN-SUFFIX,wumii.com - - DOMAIN-SUFFIX,wuqdebjfhjas.bid - - DOMAIN-SUFFIX,wuwho.cn - - DOMAIN-SUFFIX,ww.xiaopiaoyou.com - - DOMAIN-SUFFIX,ww10.onetad.com - - DOMAIN-SUFFIX,ww101.onetad.com - - DOMAIN-SUFFIX,ww11.onetad.com - - DOMAIN-SUFFIX,ww12.onetad.com - - DOMAIN-SUFFIX,ww13.onetad.com - - DOMAIN-SUFFIX,ww202.keyyou.net - - DOMAIN-SUFFIX,ww202.onetad.com - - DOMAIN-SUFFIX,ww34.onetad.com - - DOMAIN-SUFFIX,ww346.onetad.com - - DOMAIN-SUFFIX,ww360.onetad.com - - DOMAIN-SUFFIX,ww363.onetad.com - - DOMAIN-SUFFIX,ww366.onetad.com - - DOMAIN-SUFFIX,ww78.onetad.com - - DOMAIN-SUFFIX,ww8.onetad.com - - DOMAIN-SUFFIX,ww9.onetad.com - - DOMAIN-SUFFIX,wwis-dubc1-vip60.adobe.com - - DOMAIN-SUFFIX,wwv.onetad.com - - DOMAIN-SUFFIX,www2.xinmin.cn - - DOMAIN-SUFFIX,www-777563.com - - DOMAIN-SUFFIX,www8.xitek.com - - DOMAIN-SUFFIX,www9.effectivemeasure.net - - DOMAIN-SUFFIX,www9.enet.com.cn - - DOMAIN-SUFFIX,www91.intel.com - - DOMAIN-SUFFIX,wwwokzyzy.com - - DOMAIN-SUFFIX,wwww.495495.com - - DOMAIN-SUFFIX,wwww.551144.com - - DOMAIN-SUFFIX,wwww.640640.com - - DOMAIN-SUFFIX,wwww.649649.com - - DOMAIN-SUFFIX,wx.houyi.baofeng.net - - DOMAIN-SUFFIX,wx.paigu.com - - DOMAIN-SUFFIX,wx.xwjqr.com - - DOMAIN-SUFFIX,wx16999.com - - DOMAIN-SUFFIX,wxaw.tiantongmaoyi.com - - DOMAIN-SUFFIX,wxb.wxbdfm.com - - DOMAIN-SUFFIX,wxmmh.net - - DOMAIN-SUFFIX,wxsnsdy.tc.qq.com - - DOMAIN-SUFFIX,wxsnsdy.video.qq.com - - DOMAIN-SUFFIX,wxsnsdythumb.wxs.qq.com - - DOMAIN-SUFFIX,wxtz.houmags.com - - DOMAIN-SUFFIX,wxwm1.ikuailian.com - - DOMAIN-SUFFIX,wxwm2.ikuailian.com - - DOMAIN-SUFFIX,wy.ce22d.cn - - DOMAIN-SUFFIX,wyhzzy.com - - DOMAIN-SUFFIX,wysa.2wxb5.cn - - DOMAIN-SUFFIX,wyt.wwetjy.com - - DOMAIN-SUFFIX,wyttech.cn - - DOMAIN-SUFFIX,wzaigo.com - - DOMAIN-SUFFIX,wzj.ywrjgzs.com - - DOMAIN-SUFFIX,wzjijia.com - - DOMAIN-SUFFIX,x.120ask.com - - DOMAIN-SUFFIX,x.9dagui.com - - DOMAIN-SUFFIX,x.bidswitch.net - - DOMAIN-SUFFIX,x.bikaer.com - - DOMAIN-SUFFIX,x.castanet.net - - DOMAIN-SUFFIX,x.cnxad.com - - DOMAIN-SUFFIX,x.eroticity.net - - DOMAIN-SUFFIX,x.heyzap.com - - DOMAIN-SUFFIX,x.infzm.com - - DOMAIN-SUFFIX,x.ligatus.com - - DOMAIN-SUFFIX,x.vamaker.com - - DOMAIN-SUFFIX,x.vipergirls.to - - DOMAIN-SUFFIX,x.zhuyuanp.top - - DOMAIN-SUFFIX,x01.aidata.io - - DOMAIN-SUFFIX,x1.go.sohu.com - - DOMAIN-SUFFIX,x9377a.com - - DOMAIN-SUFFIX,xa9t.com - - DOMAIN-SUFFIX,xabaitai.com - - DOMAIN-SUFFIX,xabmjr.com - - DOMAIN-SUFFIX,xacqp.com - - DOMAIN-SUFFIX,xau.sxmutan.com - - DOMAIN-SUFFIX,xavingtsun.com - - DOMAIN-SUFFIX,xbp.code.weddingeeos.com - - DOMAIN-SUFFIX,xbtw.com - - DOMAIN-SUFFIX,xbzzzx.com - - DOMAIN-SUFFIX,xc.08an.com - - DOMAIN-SUFFIX,xc.macd.cn - - DOMAIN-SUFFIX,xc.mydrivers.com - - DOMAIN-SUFFIX,xcclzs.com - - DOMAIN-SUFFIX,xcdf.cn - - DOMAIN-SUFFIX,xchgx.com - - DOMAIN-SUFFIX,xcjy876.com - - DOMAIN-SUFFIX,xco.qwxcs.com - - DOMAIN-SUFFIX,xcy8.com - - DOMAIN-SUFFIX,xcyjzs.net - - DOMAIN-SUFFIX,xcyrc.com - - DOMAIN-SUFFIX,xd.code.tanwanyx.com - - DOMAIN-SUFFIX,xdadevelopers.browsi.mobi - - DOMAIN-SUFFIX,xdbwc.com - - DOMAIN-SUFFIX,xdcqcyp.com - - DOMAIN-SUFFIX,xdcs-collector.ximalaya.com - - DOMAIN-SUFFIX,xdyjt.com - - DOMAIN-SUFFIX,xe2c.com - - DOMAIN-SUFFIX,xf.yellowto.com - - DOMAIN-SUFFIX,xfo.monesyy.com - - DOMAIN-SUFFIX,xfywn.com - - DOMAIN-SUFFIX,xgcsr.com - - DOMAIN-SUFFIX,xgmc6lu8fs.me - - DOMAIN-SUFFIX,xhbqczl.com - - DOMAIN-SUFFIX,xhmrv.com - - DOMAIN-SUFFIX,xhsxgmt.cn - - DOMAIN-SUFFIX,xhsxgnt.cn - - DOMAIN-SUFFIX,xhtd.99hg.wang - - DOMAIN-SUFFIX,xhxnkyy.com - - DOMAIN-SUFFIX,xhydrs.cn - - DOMAIN-SUFFIX,xi.liuxiaoer.com - - DOMAIN-SUFFIX,xia.huishenghuiying.com - - DOMAIN-SUFFIX,xia.jihehuaban.com - - DOMAIN-SUFFIX,xiacai.com - - DOMAIN-SUFFIX,xiacaidd.com - - DOMAIN-SUFFIX,xianliao.me - - DOMAIN-SUFFIX,xiaobiaoucai.cn - - DOMAIN-SUFFIX,xiaohei.com - - DOMAIN-SUFFIX,xiaohuau.xyz - - DOMAIN-SUFFIX,xiaohui2.cn - - DOMAIN-SUFFIX,xiaomiir.yaokantv.com - - DOMAIN-SUFFIX,XiaoQiang - - DOMAIN-SUFFIX,xiaoshuo.kp53.cn - - DOMAIN-SUFFIX,xiaoshuo.zhandao.net - - DOMAIN-SUFFIX,xiaoyang.mobi - - DOMAIN-SUFFIX,xiaoyuanzuqiu.cn - - DOMAIN-SUFFIX,xiaoyutiao.com - - DOMAIN-SUFFIX,xiaozhen.com - - DOMAIN-SUFFIX,xiaozhishi852.com - - DOMAIN-SUFFIX,xiaxuanfu.com - - DOMAIN-SUFFIX,xiazai.cdren.com - - DOMAIN-SUFFIX,xiazai.downok.com - - DOMAIN-SUFFIX,xibao100.com - - DOMAIN-SUFFIX,xibei70.com - - DOMAIN-SUFFIX,xifatime.com - - DOMAIN-SUFFIX,xihashuale.com - - DOMAIN-SUFFIX,xihuashuale.com - - DOMAIN-SUFFIX,xilele.com - - DOMAIN-SUFFIX,xiliweisha.cn - - DOMAIN-SUFFIX,xin.ygqczh.com - - DOMAIN-SUFFIX,xinasiaj.com - - DOMAIN-SUFFIX,xinghao89.com - - DOMAIN-SUFFIX,xingjuhe.com - - DOMAIN-SUFFIX,xiniuz.com - - DOMAIN-SUFFIX,xinju.cc - - DOMAIN-SUFFIX,xinray.com - - DOMAIN-SUFFIX,xinsheng.net - - DOMAIN-SUFFIX,xiongdong.com - - DOMAIN-SUFFIX,xiuxiu.android.dl.meitu.com - - DOMAIN-SUFFIX,xiuxiu.mobile.meitudata.com - - DOMAIN-SUFFIX,xj40666.vip - - DOMAIN-SUFFIX,xji.qwxcs.com - - DOMAIN-SUFFIX,xjidian.com - - DOMAIN-SUFFIX,xjq.jxmqkj.com - - DOMAIN-SUFFIX,xk2012.com - - DOMAIN-SUFFIX,xkwfao.com - - DOMAIN-SUFFIX,xlmc.sandai.net - - DOMAIN-SUFFIX,xls.go.sohu.com - - DOMAIN-SUFFIX,xlwnx.com - - DOMAIN-SUFFIX,xlylqx.com - - DOMAIN-SUFFIX,xm9178.com - - DOMAIN-SUFFIX,xmcmn.com - - DOMAIN-SUFFIX,xmcxz.com - - DOMAIN-SUFFIX,xmindchina.net - - DOMAIN-SUFFIX,xmnmeu.cn - - DOMAIN-SUFFIX,xmrts.com - - DOMAIN-SUFFIX,xmshqh.com - - DOMAIN-SUFFIX,xmsqz.com - - DOMAIN-SUFFIX,xnjpg.com - - DOMAIN-SUFFIX,xoredi.com - - DOMAIN-SUFFIX,xp3366.com - - DOMAIN-SUFFIX,xpcy.m.gxwztv.com - - DOMAIN-SUFFIX,xpe.cxaerp.com - - DOMAIN-SUFFIX,xpj1.net - - DOMAIN-SUFFIX,xpj2.net - - DOMAIN-SUFFIX,xpj3.net - - DOMAIN-SUFFIX,xpj4.net - - DOMAIN-SUFFIX,xpj8088.com - - DOMAIN-SUFFIX,xpjkf888.com - - DOMAIN-SUFFIX,xpjylc9977.com - - DOMAIN-SUFFIX,xpqfc.com - - DOMAIN-SUFFIX,xq12.com - - DOMAIN-SUFFIX,xq199.com - - DOMAIN-SUFFIX,xrain.net - - DOMAIN-SUFFIX,xray.jebe.renren.com - - DOMAIN-SUFFIX,xs.1drj.com - - DOMAIN-SUFFIX,xs.he9630.com - - DOMAIN-SUFFIX,xs.houyi.baofeng.net - - DOMAIN-SUFFIX,xs.swagger1.com - - DOMAIN-SUFFIX,xshellcn.com - - DOMAIN-SUFFIX,xstar.cc - - DOMAIN-SUFFIX,xszqapp.com - - DOMAIN-SUFFIX,xtcdbb.cn - - DOMAIN-SUFFIX,xtgreat.com - - DOMAIN-SUFFIX,xtruh.uranus.sogou.com - - DOMAIN-SUFFIX,xtwjx.cn - - DOMAIN-SUFFIX,xtxa.net - - DOMAIN-SUFFIX,xtzxmy.com - - DOMAIN-SUFFIX,xuanmeiguoji.com - - DOMAIN-SUFFIX,xue.zbyw.cn - - DOMAIN-SUFFIX,xul478.com - - DOMAIN-SUFFIX,xulizui6.com - - DOMAIN-SUFFIX,xx.m.gxwztv.com - - DOMAIN-SUFFIX,xxad.cc - - DOMAIN-SUFFIX,xxeden.com - - DOMAIN-SUFFIX,xxguan.cn - - DOMAIN-SUFFIX,xxhrd.com - - DOMAIN-SUFFIX,xxkhh.com - - DOMAIN-SUFFIX,xxlargepop.com - - DOMAIN-SUFFIX,xxp.gytygc.com - - DOMAIN-SUFFIX,xxwkjl.com - - DOMAIN-SUFFIX,xxxa.aikeapp.com - - DOMAIN-SUFFIX,xxyzwtsylw.com - - DOMAIN-SUFFIX,xy.com - - DOMAIN-SUFFIX,xy.shijialianzuishuai.com - - DOMAIN-SUFFIX,xycnz.com - - DOMAIN-SUFFIX,xyd.sxmdxy.com - - DOMAIN-SUFFIX,xyimg.net - - DOMAIN-SUFFIX,xyly2016.com - - DOMAIN-SUFFIX,xyqptm.com - - DOMAIN-SUFFIX,xyqxr.com - - DOMAIN-SUFFIX,xyrhd.com - - DOMAIN-SUFFIX,xyrkl.com - - DOMAIN-SUFFIX,xyssp.com - - DOMAIN-SUFFIX,xytom.com - - DOMAIN-SUFFIX,xyxy01.com - - DOMAIN-SUFFIX,xyy.code.weddingeeos.com - - DOMAIN-SUFFIX,xz.ercfh.com - - DOMAIN-SUFFIX,xz-development.oss-cn-beijing.aliyuncs.com - - DOMAIN-SUFFIX,xzq.greenxf.net - - DOMAIN-SUFFIX,xztms.com - - DOMAIN-SUFFIX,xzyituo.com - - DOMAIN-SUFFIX,xzzyi.com - - DOMAIN-SUFFIX,y.3957957.com - - DOMAIN-SUFFIX,y.damifan.cn - - DOMAIN-SUFFIX,y.gwylm.com - - DOMAIN-SUFFIX,y.hk9600.com - - DOMAIN-SUFFIX,y.hzht666.com - - DOMAIN-SUFFIX,y.shuoshuocm.com - - DOMAIN-SUFFIX,y.xinghao89.com - - DOMAIN-SUFFIX,y.zxwdw.com - - DOMAIN-SUFFIX,y0.cn - - DOMAIN-SUFFIX,yadro.ru - - DOMAIN-SUFFIX,yads.c.yimg.jp - - DOMAIN-SUFFIX,yads.yahoo.co.jp - - DOMAIN-SUFFIX,yageben.com - - DOMAIN-SUFFIX,yam.adsbro.com - - DOMAIN-SUFFIX,yandui.com - - DOMAIN-SUFFIX,yangdasen.cn - - DOMAIN-SUFFIX,yanglaopt.net - - DOMAIN-SUFFIX,yao.zzsdjq.com - - DOMAIN-SUFFIX,yaohq.com - - DOMAIN-SUFFIX,yatemy.cn - - DOMAIN-SUFFIX,yb.torchbrowser.com - - DOMAIN-SUFFIX,ybtianxi.com - - DOMAIN-SUFFIX,yccdn.com - - DOMAIN-SUFFIX,ychml.com - - DOMAIN-SUFFIX,ychun03.com - - DOMAIN-SUFFIX,yd126.com - - DOMAIN-SUFFIX,ydjs.zol.com.cn - - DOMAIN-SUFFIX,ydlnt.com - - DOMAIN-SUFFIX,ydpushserver.youdao.com - - DOMAIN-SUFFIX,ydqzkj.com - - DOMAIN-SUFFIX,yea.uploadimagex.com - - DOMAIN-SUFFIX,yeabble.com - - DOMAIN-SUFFIX,yeas.yahoo.co.jp - - DOMAIN-SUFFIX,yee.js.cn - - DOMAIN-SUFFIX,yellowto.com - - DOMAIN-SUFFIX,yengo.com - - DOMAIN-SUFFIX,yesbeby.whies.info - - DOMAIN-SUFFIX,yess.imneinei.com - - DOMAIN-SUFFIX,yezilm.com - - DOMAIN-SUFFIX,yf898.com - - DOMAIN-SUFFIX,yfcode.m.gxwztv.com - - DOMAIN-SUFFIX,yfxpcode.m.gxwztv.com - - DOMAIN-SUFFIX,yfycy.com - - DOMAIN-SUFFIX,yhtcd.com - - DOMAIN-SUFFIX,yhzm.cc - - DOMAIN-SUFFIX,yicha.cn - - DOMAIN-SUFFIX,yidulive.net - - DOMAIN-SUFFIX,yieldmanager.com - - DOMAIN-SUFFIX,yigao.com - - DOMAIN-SUFFIX,yigyx.com - - DOMAIN-SUFFIX,yihuifu.cn - - DOMAIN-SUFFIX,yiiwoo.com - - DOMAIN-SUFFIX,yijia2009.com - - DOMAIN-SUFFIX,yijifen.com - - DOMAIN-SUFFIX,yiluup.com - - DOMAIN-SUFFIX,yin1.zgpingshu.com - - DOMAIN-SUFFIX,yingxiao.baidu.com - - DOMAIN-SUFFIX,yinhaijuan.com - - DOMAIN-SUFFIX,yinmong.com - - DOMAIN-SUFFIX,yinooo.com - - DOMAIN-SUFFIX,yinyuehu.cn - - DOMAIN-SUFFIX,yiqifa.com - - DOMAIN-SUFFIX,yiranxian.cn - - DOMAIN-SUFFIX,yitaopt.com - - DOMAIN-SUFFIX,yiwk.com - - DOMAIN-SUFFIX,yiwuds.com - - DOMAIN-SUFFIX,yixui.com - - DOMAIN-SUFFIX,yizhenya.com - - DOMAIN-SUFFIX,yjqiqi.com - - DOMAIN-SUFFIX,yk0712.com - - DOMAIN-SUFFIX,ykbei.com - - DOMAIN-SUFFIX,ykjmy.com - - DOMAIN-SUFFIX,yktj.yzz.cn - - DOMAIN-SUFFIX,ykxwn.com - - DOMAIN-SUFFIX,yl850555.com - - DOMAIN-SUFFIX,ylads.yaolan.com - - DOMAIN-SUFFIX,ylog.hiido.com - - DOMAIN-SUFFIX,ylunion.com - - DOMAIN-SUFFIX,ylwy168.com - - DOMAIN-SUFFIX,ymapp.com - - DOMAIN-SUFFIX,ymcdn.cn - - DOMAIN-SUFFIX,ymcqb.com - - DOMAIN-SUFFIX,ymrzr.com - - DOMAIN-SUFFIX,yn.001fzc.com - - DOMAIN-SUFFIX,ynbojie.com - - DOMAIN-SUFFIX,yndianju.com - - DOMAIN-SUFFIX,ynmbz.com - - DOMAIN-SUFFIX,yongkang6.com - - DOMAIN-SUFFIX,yongv.com - - DOMAIN-SUFFIX,yoo.yiiyoo.net - - DOMAIN-SUFFIX,yooli.com - - DOMAIN-SUFFIX,you1ad.com - - DOMAIN-SUFFIX,youfumei.com - - DOMAIN-SUFFIX,youjia2016.com - - DOMAIN-SUFFIX,youka.la - - DOMAIN-SUFFIX,youle.tom.com - - DOMAIN-SUFFIX,youle55.com - - DOMAIN-SUFFIX,youmi.net - - DOMAIN-SUFFIX,youmsm.com - - DOMAIN-SUFFIX,yousee.com - - DOMAIN-SUFFIX,youxi.kugou.com - - DOMAIN-SUFFIX,youxiaoad.com - - DOMAIN-SUFFIX,youxicool.net - - DOMAIN-SUFFIX,youzehui.com - - DOMAIN-SUFFIX,yoyi.com.cn - - DOMAIN-SUFFIX,yoyi.tv - - DOMAIN-SUFFIX,ypmeiwen.com - - DOMAIN-SUFFIX,ypmob.com - - DOMAIN-SUFFIX,yqjxzw.com - - DOMAIN-SUFFIX,yqw88.com - - DOMAIN-SUFFIX,yrt7dgkf.exashare.com - - DOMAIN-SUFFIX,yrxmr.com - - DOMAIN-SUFFIX,ysej.code.weddingeeos.com - - DOMAIN-SUFFIX,ysjwj.com - - DOMAIN-SUFFIX,ysm.hauchi.com.tw - - DOMAIN-SUFFIX,ysm.yahoo.com - - DOMAIN-SUFFIX,yt-adp.nosdn.127.net - - DOMAIN-SUFFIX,ytapi1.nagezan.net - - DOMAIN-SUFFIX,ytdksb.com - - DOMAIN-SUFFIX,ytguowang.com - - DOMAIN-SUFFIX,ytmx.2r3485.cn - - DOMAIN-SUFFIX,yts.ytsyyey.com - - DOMAIN-SUFFIX,ytsyyey.com - - DOMAIN-SUFFIX,yuanchengxiezuo.com - - DOMAIN-SUFFIX,yuanming.net - - DOMAIN-SUFFIX,yueyelive.com - - DOMAIN-SUFFIX,yug8.com - - DOMAIN-SUFFIX,yukhj.com - - DOMAIN-SUFFIX,yule8.net - - DOMAIN-SUFFIX,yulzs.com - - DOMAIN-SUFFIX,yumcs.xiaohuau.xyz - - DOMAIN-SUFFIX,yun.lvehaisen.com - - DOMAIN-SUFFIX,yun.rili.cn - - DOMAIN-SUFFIX,yun.sifuhe.cn - - DOMAIN-SUFFIX,yun.tuia.cn - - DOMAIN-SUFFIX,yun.tuisnake.com - - DOMAIN-SUFFIX,yun.yuyiya.com - - DOMAIN-SUFFIX,yun1.yahoo001.com - - DOMAIN-SUFFIX,yunanfuwuqi.com - - DOMAIN-SUFFIX,yunbofangbt.com - - DOMAIN-SUFFIX,yundingjiayuan.com - - DOMAIN-SUFFIX,yunjiasu.com - - DOMAIN-SUFFIX,yunshipei.com - - DOMAIN-SUFFIX,yunxuu.com - - DOMAIN-SUFFIX,yuyue008.cn - - DOMAIN-SUFFIX,ywjxsp168.cn - - DOMAIN-SUFFIX,yx.lenovomm.com - - DOMAIN-SUFFIX,yxhxs.com - - DOMAIN-SUFFIX,yxjad.com - - DOMAIN-SUFFIX,yxs.tymsyx.com - - DOMAIN-SUFFIX,yxszy.com - - DOMAIN-SUFFIX,yxxwyz.com - - DOMAIN-SUFFIX,yy58ju.com - - DOMAIN-SUFFIX,yyb.pc6.com - - DOMAIN-SUFFIX,yyffeicd.m.qxs.la - - DOMAIN-SUFFIX,yyjxgm.net - - DOMAIN-SUFFIX,yyp17.com - - DOMAIN-SUFFIX,yyt.irs01.com - - DOMAIN-SUFFIX,yzaosite.com - - DOMAIN-SUFFIX,yzh.jyjhkz.com - - DOMAIN-SUFFIX,yzh360.com - - DOMAIN-SUFFIX,yzygo.com - - DOMAIN-SUFFIX,yzytb.com - - DOMAIN-SUFFIX,z.clickvip.shop - - DOMAIN-SUFFIX,z.moatads.com - - DOMAIN-SUFFIX,z.nowscore.com - - DOMAIN-SUFFIX,z.sora.yoyi.com.cn - - DOMAIN-SUFFIX,z1.zedo.com - - DOMAIN-SUFFIX,z1hihu.xmcimg.com - - DOMAIN-SUFFIX,z2.lnymd.com - - DOMAIN-SUFFIX,zads.care2.com - - DOMAIN-SUFFIX,zae.gzzena.com - - DOMAIN-SUFFIX,zamar.cn - - DOMAIN-SUFFIX,zampdsp.com - - DOMAIN-SUFFIX,zantainet.com - - DOMAIN-SUFFIX,zapads.zapak.com - - DOMAIN-SUFFIX,zb.nxing.cn - - DOMAIN-SUFFIX,zbrushcn.com - - DOMAIN-SUFFIX,zbz.m.qxs.la - - DOMAIN-SUFFIX,zcdsp.com - - DOMAIN-SUFFIX,zcrtd.com - - DOMAIN-SUFFIX,zdjby.cn - - DOMAIN-SUFFIX,zdw.w8.com.cn - - DOMAIN-SUFFIX,ze5.com - - DOMAIN-SUFFIX,zedo.com - - DOMAIN-SUFFIX,zeus.qj.net - - DOMAIN-SUFFIX,zgc66.com - - DOMAIN-SUFFIX,zgdfz6h7po.me - - DOMAIN-SUFFIX,zgfszs.com - - DOMAIN-SUFFIX,zgjkv.com - - DOMAIN-SUFFIX,zgksb.com - - DOMAIN-SUFFIX,zgty365.com - - DOMAIN-SUFFIX,zgunion.cn - - DOMAIN-SUFFIX,zgyemy.com - - DOMAIN-SUFFIX,zhanzhang.net - - DOMAIN-SUFFIX,zhao258.com - - DOMAIN-SUFFIX,zhaoshang8.com - - DOMAIN-SUFFIX,zhaozecheng.cn - - DOMAIN-SUFFIX,zh-cn.shenyun.com - - DOMAIN-SUFFIX,zh-cn.shenyun.org - - DOMAIN-SUFFIX,zheng.cs12d.com - - DOMAIN-SUFFIX,zhengjian.org - - DOMAIN-SUFFIX,zhenxinet.com - - DOMAIN-SUFFIX,zhichi08.com - - DOMAIN-SUFFIX,zhidian3g.cn - - DOMAIN-SUFFIX,zhifenjie.com - - DOMAIN-SUFFIX,zhihei.com - - DOMAIN-SUFFIX,zhiong.net - - DOMAIN-SUFFIX,zhiyuanteam.com - - DOMAIN-SUFFIX,zhiziyun.com - - DOMAIN-SUFFIX,zhongchouyan.com - - DOMAIN-SUFFIX,zhongzicili.cc - - DOMAIN-SUFFIX,zhtjdl.com - - DOMAIN-SUFFIX,zhuanfakong.com - - DOMAIN-SUFFIX,zhuba8.com - - DOMAIN-SUFFIX,zhudiaosz.com - - DOMAIN-SUFFIX,zhuichaguoji.org - - DOMAIN-SUFFIX,zhushou.2345.com - - DOMAIN-SUFFIX,zhuuv.maoyumao.net - - DOMAIN-SUFFIX,zhwnlapi.etouch.cn - - DOMAIN-SUFFIX,zhybzp.cn - - DOMAIN-SUFFIX,zhzzx.com - - DOMAIN-SUFFIX,zisunion.com - - DOMAIN-SUFFIX,zizcy.com - - DOMAIN-SUFFIX,zjbdt.com - - DOMAIN-SUFFIX,zjhim.com - - DOMAIN-SUFFIX,zjjgtz.com - - DOMAIN-SUFFIX,zjm.zzmmkj.com - - DOMAIN-SUFFIX,zkrdy.com - - DOMAIN-SUFFIX,zlongad.com - - DOMAIN-SUFFIX,zlsw.nnjxqd.com - - DOMAIN-SUFFIX,zmj.guanqinjie.cn - - DOMAIN-SUFFIX,znsv.baidu.com - - DOMAIN-SUFFIX,zo66.com - - DOMAIN-SUFFIX,zp22938576.com - - DOMAIN-SUFFIX,zpe.klre.18183.com - - DOMAIN-SUFFIX,zq84.com - - DOMAIN-SUFFIX,zqworks.com - - DOMAIN-SUFFIX,zqzxz.com - - DOMAIN-SUFFIX,zreder.com - - DOMAIN-SUFFIX,zrpfk.com - - DOMAIN-SUFFIX,zs0613.mengchengbao.com - - DOMAIN-SUFFIX,zs1111.youzue.com - - DOMAIN-SUFFIX,zsdexun.com.cn - - DOMAIN-SUFFIX,zshacker.com - - DOMAIN-SUFFIX,zst.jzntxs.com - - DOMAIN-SUFFIX,zsxpx.com - - DOMAIN-SUFFIX,zszwcp.cn - - DOMAIN-SUFFIX,zt2088.com - - DOMAIN-SUFFIX,ztidu.com - - DOMAIN-SUFFIX,ztxbd.com - - DOMAIN-SUFFIX,zuche321.com - - DOMAIN-SUFFIX,zuiceshi.net - - DOMAIN-SUFFIX,zuimeitianqi.inveno.com - - DOMAIN-SUFFIX,zunmi.cn - - DOMAIN-SUFFIX,zws.avvo.com - - DOMAIN-SUFFIX,zx.baosmx.com - - DOMAIN-SUFFIX,zxcs.ggwan.com - - DOMAIN-SUFFIX,zxcs.linghit.com - - DOMAIN-SUFFIX,zxh.bzshzx.com - - DOMAIN-SUFFIX,zxjjzx.com - - DOMAIN-SUFFIX,zxr.fzxrjx.com - - DOMAIN-SUFFIX,zxziyuan.com - - DOMAIN-SUFFIX,zybpj.com - - DOMAIN-SUFFIX,zyf.fzdfwy.com - - DOMAIN-SUFFIX,zymo.mps.weibo.com - - DOMAIN-SUFFIX,zymro.com - - DOMAIN-SUFFIX,zytwq.net - - DOMAIN-SUFFIX,zyz.91friend.com - - DOMAIN-SUFFIX,zyz1.91friend.com - - DOMAIN-SUFFIX,zz.bdstatic.com - - DOMAIN-SUFFIX,zz123.com - - DOMAIN-SUFFIX,zzbaowen.com - - DOMAIN-SUFFIX,zzcw.office-mall.net - - DOMAIN-SUFFIX,zzd6.com - - DOMAIN-SUFFIX,zzjs2.firefang.cn - - DOMAIN-SUFFIX,zzpush.58.com - - DOMAIN-SUFFIX,zzrcz.com - - DOMAIN-SUFFIX,zzsx8.com - - DOMAIN-SUFFIX,zzy.mipujia.com - - DOMAIN-SUFFIX,zzy1.mipujia.com - - DOMAIN-SUFFIX,zzy1.quyaoya.com - - DOMAIN-SUFFIX,zzz7.52896368.com - - DOMAIN-SUFFIX,zzzzz4.52896368.com - - DOMAIN-SUFFIX,5534edee5a.com - - DOMAIN-SUFFIX,ea778a21c7.com - - # > Baidu - - DOMAIN-SUFFIX,baidustatic.com - - DOMAIN,duclick.baidu.com - - DOMAIN,hm.baidu.com - - DOMAIN,hmma.baidu.com - - DOMAIN,mobads.baidu.com - - DOMAIN,mobads-logs.baidu.com - - DOMAIN,nsclick.baidu.com - - DOMAIN,wn.pos.baidu.com - - DOMAIN,ps.map.baidu.com - - DOMAIN,offnavi.map.baidu.com - - DOMAIN,newvector.map.baidu.com - - DOMAIN,ulog.imap.baidu.com - - DOMAIN,newloc.map.n.shifen.com - # - URL-REGEX,http:\/\/[\s\S]*baidu\.com\/\.*ad[xs]\.php - # - URL-REGEX,http:\/\/c\.tieba\.baidu\.com\/c\/s\/splashSchedule - - # > Bilibili - - DOMAIN,miniapp.bilibili.com - - DOMAIN,thirdparty.biliapi.com - # - URL-REGEX,https:\/\/app\.bilibili\.com\/x\/v2\/param - # - URL-REGEX,https:\/\/app\.bilibili\.com\/x\/resource\/abtest - # - URL-REGEX,http:\/\/app\.bilibili\.com\/x\/v2\/dataflow\/report-TINYGIF - # - URL-REGEX,https:\/\/app\.bilibili\.com\/x\/v2\/search\/(defaultword|hot|recommend|resource) - # - URL-REGEX,https:\/\/app\.bilibili\.com\/x\/v2\/rank\.*rid=(168|5) - # - URL-REGEX,https:\/\/api\.bilibili\.com\/pgc\/season\/rank\/cn - - # > Didi - # - URL-REGEX,https:\/\/img-ys011\.didistatic\.com\/static\/ad_oss\/image-\d{4}-\d{4}\/ - - # > ele - - DOMAIN,log.star.ele.me - - # > Netease - - DOMAIN,ad.bn.netease.com - - DOMAIN,ad.yixin.im - - DOMAIN,iadmat.nosdn.127.net - - DOMAIN,iadmusicmat.music.126.net - - DOMAIN,iadmusicmatvideo.music.126.net - - DOMAIN,impservice.dictapp.youdao.com - - DOMAIN,impservice.youdao.com - - DOMAIN,log.yex.youdao.com - - DOMAIN,log-yex.youdao.com - - DOMAIN,mr.da.netease.com - - DOMAIN,n.3g.163.com - - DOMAIN,nex.163.com - - DOMAIN,pr.da.netease.com - - DOMAIN,rd.da.netease.com - - DOMAIN,wr.da.netease.com - - DOMAIN,yt-adp.nosdn.127.net - # - URL-REGEX,http:\/\/p\d\.music\.126\.net\/\w+==\/\d+\.jpg - # - URL-REGEX,http:\/\/iad\.*mat\.[a-z]*\.12[67]\.net\/\w+\.(jpg|mp4) - - # > Zhihu - - DOMAIN,appcloud2.in.zhihu.com - - DOMAIN,mqtt.zhihu.com - - DOMAIN,sugar.zhihu.com - - DOMAIN,zhihu-analytics.zhihu.com - - DOMAIN,zhihu-web-analytics.zhihu.com - - DOMAIN,118.89.204.198 - - DOMAIN-SUFFIX,xdrig.com - - DOMAIN-SUFFIX,zhihu.xmcimg.com - - # - URL-REGEX,https:\/\/api\.zhihu\.com\/(fringe|zst|real_time|ad-style-service|banners|topstory/hot-lists|market/popover|mqtt|me|.*launch|.*featured-comment-ad|search/(top|tabs|preset)) - # - URL-REGEX,https:\/\/api\.zhihu\.com\.*(launch|recommendations) - # - URL-REGEX,https:\/\/api\.zhihu\.com\/search\/(top|tabs|preset) - # - URL-REGEX,https:\/\/api\.zhihu\.com\/answers\/\.*\/comments\/featured-comment-ad - - # - URL-REGEX,https?:\/\/(e|m).+\/((uu|oo).php.+|\d+.x?html\?$) - # - URL-REGEX,https?:\/\/[^(apple|10010)]+.(com|cn)\/(a|A)d(s|v)?(/|.js) - # - URL-REGEX,https?:\/\/[^bbs]\.tianya\.cn - # - URL-REGEX,https?:\/\/\w.?up\.qingdaonews\.com - # - URL-REGEX,https?:\/\/\w{6}\.com1\.z0\.glb\.clouddn\.com - # - URL-REGEX,https?:\/\/\w{8}\.logic\.cpm\.cm\.kankan\.com - # - URL-REGEX,https?:\/\/\w+\.cloudfront\.net\/banner - # - URL-REGEX,https?:\/\/\w+\.gdt\.qq\.com - # - URL-REGEX,https?:\/\/\w+\.kingsoft-office-service\.com - # - URL-REGEX,https?:\/\/9377\w{2}\.com - # - URL-REGEX,https?:\/\/a0b\w{2}\.com - # - URL-REGEX,https?:\/\/(a?d|sax)\d\.sina\.com - # - URL-REGEX,https?:\/\/d\d\.sinaimg\.cn - # - URL-REGEX,https?:\/\/dl\.app\.gtja\.com\/\.+\d+\.jpg - # - URL-REGEX,https?:\/\/impservice\.+?youdao\.com - # - URL-REGEX,https?:\/\/mi\.gdt\.qq\.com\/gdt_mview\.fcg - # - URL-REGEX,https?:\/\/notice\.send-anywhere\.com\/banner - # - URL-REGEX,https?:\/\/sax\w?\.sina\.cn - # - URL-REGEX,https?:\/\/sax\w?\.sina\.com\.cn - # - URL-REGEX,https?:\/\/server-\w+\.imrworldwide\.com - # - URL-REGEX,https?:\/\/www\.bldimg\.com\/(background|splash)\/\.+\.png - - - IP-CIDR,39.107.15.115/32 - - IP-CIDR,47.89.59.182/32 - - IP-CIDR,103.49.209.27/32 - - IP-CIDR,118.89.204.198/32 - - IP-CIDR,123.56.152.96/32 - - IP-CIDR6,2402:4e00:1200:ed00:0:9089:6dac:96b6/128 - - # > China Net - - IP-CIDR,61.160.200.223/32 - - IP-CIDR,61.160.200.242/32 - - IP-CIDR,61.160.200.252/32 - - IP-CIDR,61.174.50.214/32 - - IP-CIDR,111.175.220.163/32 - - IP-CIDR,111.175.220.164/32 - - IP-CIDR,124.232.160.178/32 - - IP-CIDR,175.6.223.15/32 - - IP-CIDR,183.59.53.237/32 - - IP-CIDR,218.93.127.37/32 - - IP-CIDR,221.228.17.152/32 - - IP-CIDR,221.231.6.79/32 - - IP-CIDR,222.186.61.91/32 - - IP-CIDR,222.186.61.95/32 - - IP-CIDR,222.186.61.96/32 - - IP-CIDR,222.186.61.97/32 - - # > China Unicom - - IP-CIDR,106.75.231.48/32 - - IP-CIDR,119.4.249.166/32 - - IP-CIDR,220.196.52.141/32 - - IP-CIDR,221.6.4.148/32 - - # > China Mobile - - IP-CIDR,114.247.28.96/32 - - IP-CIDR,221.179.131.72/32 - - IP-CIDR,221.179.140.145/32 - - # > Dr.Peng - - IP-CIDR,10.72.25.0/24 - - IP-CIDR,115.182.16.79/32 - - IP-CIDR,118.144.88.126/32 - - IP-CIDR,118.144.88.215/32 - - IP-CIDR,120.76.189.132/32 - - IP-CIDR,124.14.21.147/32 - - IP-CIDR,124.14.21.151/32 - - IP-CIDR,180.166.52.24/32 - - IP-CIDR,220.115.251.25/32 - - IP-CIDR,222.73.156.235/32 diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/Scholar b/luci-app-openclash/root/etc/openclash/rule_provider/Scholar deleted file mode 100644 index 25f5d6eb..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/Scholar +++ /dev/null @@ -1,79 +0,0 @@ -payload: - # > Scholar - - DOMAIN-SUFFIX,acm.org - - DOMAIN-SUFFIX,acs.org - - DOMAIN-SUFFIX,aip.org - - DOMAIN-SUFFIX,ams.org - - DOMAIN-SUFFIX,annualreviews.org - - DOMAIN-SUFFIX,aps.org - - DOMAIN-SUFFIX,ascelibrary.org - - DOMAIN-SUFFIX,asm.org - - DOMAIN-SUFFIX,asme.org - - DOMAIN-SUFFIX,astm.org - - DOMAIN-SUFFIX,blackwell-synergy.com - - DOMAIN-SUFFIX,bmj.com - - DOMAIN-SUFFIX,cabdirect.org - - DOMAIN-SUFFIX,cambridge.org - - DOMAIN-SUFFIX,cas.org - - DOMAIN-SUFFIX,cell.com - - DOMAIN-SUFFIX,clarivate.com - # - DOMAIN-SUFFIX,cnki.net - # - DOMAIN-SUFFIX,cqvip.com - - DOMAIN-SUFFIX,csiro.au - - DOMAIN-SUFFIX,deepdyve.com - - DOMAIN-SUFFIX,ebscohost.com - - DOMAIN-SUFFIX,els-cdn.com - - DOMAIN-SUFFIX,elsevier.com - - DOMAIN-SUFFIX,emerald.com - - DOMAIN-SUFFIX,endnote.com - - DOMAIN-SUFFIX,engineeringvillage.com - - DOMAIN-SUFFIX,icevirtuallibrary.com - - DOMAIN-SUFFIX,ieee.org - - DOMAIN-SUFFIX,imf.org - - DOMAIN-SUFFIX,iop.org - - DOMAIN-SUFFIX,jamanetwork.com - - DOMAIN-SUFFIX,jbc.org - - DOMAIN-SUFFIX,jhu.edu - - DOMAIN-SUFFIX,jstor.org - - DOMAIN-SUFFIX,karger.com - - DOMAIN-SUFFIX,libguides.com - - DOMAIN-SUFFIX,madsrevolution.net - - DOMAIN-SUFFIX,mdpi.com - - DOMAIN-SUFFIX,mpg.de - - DOMAIN-SUFFIX,myilibrary.com - - DOMAIN-SUFFIX,nature.com - - DOMAIN-SUFFIX,ncbi.nlm.nih.gov - - DOMAIN-SUFFIX,oecd-ilibrary.org - - DOMAIN-SUFFIX,osapublishing.org - - DOMAIN-SUFFIX,oup.com - - DOMAIN-SUFFIX,ovid.com - - DOMAIN-SUFFIX,oxfordartonline.com - - DOMAIN-SUFFIX,oxfordbibliographies.com - - DOMAIN-SUFFIX,oxfordmusiconline.com - # - DOMAIN-SUFFIX,pkulaw.com - - DOMAIN-SUFFIX,pnas.org - - DOMAIN-SUFFIX,proquest.com - - DOMAIN-SUFFIX,readcube.com - - DOMAIN-SUFFIX,researchgate.net - - DOMAIN-SUFFIX,rsc.org - - DOMAIN-SUFFIX,sagepub.com - - DOMAIN-SUFFIX,sci-hub.tw - - DOMAIN-SUFFIX,sciencedirect.com - - DOMAIN-SUFFIX,sciencemag.org - - DOMAIN-SUFFIX,scitation.org - - DOMAIN-SUFFIX,scopus.com - - DOMAIN-SUFFIX,semanticscholar.org - - DOMAIN-SUFFIX,siam.org - - DOMAIN-SUFFIX,spiedigitallibrary.org - - DOMAIN-SUFFIX,springer.com - - DOMAIN-SUFFIX,springerlink.com - - DOMAIN-SUFFIX,tandfonline.com - - DOMAIN-SUFFIX,un.org - - DOMAIN-SUFFIX,uni-bielefeld.de - # - DOMAIN-SUFFIX,wanfangdata.com - - DOMAIN-SUFFIX,webofknowledge.com - - DOMAIN-SUFFIX,westlaw.com - # - DOMAIN-SUFFIX,westlawchina.com - - DOMAIN-SUFFIX,wiley.com - - DOMAIN-SUFFIX,worldbank.org - - DOMAIN-SUFFIX,worldscientific.com diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/Soundcloud b/luci-app-openclash/root/etc/openclash/rule_provider/Soundcloud deleted file mode 100644 index f2e18be0..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/Soundcloud +++ /dev/null @@ -1,8 +0,0 @@ -payload: - # > SoundCloud - # - USER-AGENT,SoundCloud* - - - DOMAIN-SUFFIX,sndcdn.com - - DOMAIN-SUFFIX,soundcloud.app.goo.gl - - DOMAIN-SUFFIX,soundcloud.com - - DOMAIN-SUFFIX,soundcloudmail.com \ No newline at end of file diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/Special b/luci-app-openclash/root/etc/openclash/rule_provider/Special deleted file mode 100644 index 4c608fe1..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/Special +++ /dev/null @@ -1,151 +0,0 @@ -payload: - # > Dler Cloud - - DOMAIN-SUFFIX,dler.cloud - - # > Apple CDN - - PROCESS-NAME,storedownloadd - # - USER-AGENT,com.apple.appstored* - - DOMAIN,aod.itunes.apple.com - - DOMAIN,api.smoot.apple.cn - - DOMAIN,appldnld.apple.com - - DOMAIN,apptrailers.itunes.apple.com - - DOMAIN,gs-loc-cn.apple.com - - DOMAIN,iosapps.itunes.apple.com - - DOMAIN,music.apple.com - - DOMAIN,mvod.itunes.apple.com - - DOMAIN,osxapps.itunes.apple.com - - DOMAIN,supportdownload.apple.com - - DOMAIN,swcdn.apple.com - - DOMAIN,updates-http.cdn-apple.com - - DOMAIN-SUFFIX,ls.apple.com - - DOMAIN-SUFFIX,mzstatic.com - - # > Epic - - DOMAIN-KEYWORD,epicgames - - # > Google - - DOMAIN,safebrowsing.googleapis.com - - DOMAIN-SUFFIX,dl.google.com - - # > Microsoft - # - USER-AGENT,Microsoft%20Remote%20Desktop* - - DOMAIN-SUFFIX,msftconnecttest.com - - DOMAIN-SUFFIX,windows.com - - DOMAIN-SUFFIX,windows.net - - DOMAIN-SUFFIX,windowsupdate.com - - DOMAIN-SUFFIX,xbox.com - - DOMAIN-SUFFIX,xboxlive.com - - # > Proxy plugin - - PROCESS-NAME,v2ray - - PROCESS-NAME,ss-local - - # > Steam - # - USER-AGENT,Steam* - - DOMAIN,cm.steampowered.com - - DOMAIN,ol.epicgames.com - # - DOMAIN,store.steampowered.com - - DOMAIN-SUFFIX,steamcontent.com - - DOMAIN-SUFFIX,steamserver.net - - - DOMAIN-SUFFIX,steamchina.com - - - DOMAIN,csgo.wmsj.cn - - DOMAIN,dota2.wmsj.cn - - DOMAIN,wmsjsteam.com - - - DOMAIN,dl.steam.clngaa.com - - DOMAIN,dl.steam.ksyna.com - - - DOMAIN,st.dl.bscstorage.net - - DOMAIN,st.dl.eccdnx.com - - DOMAIN,st.dl.pinyuncloud.com - - - DOMAIN,steampipe.steamcontent.tnkjmec.com - - - DOMAIN,steampowered.com.8686c.com - - DOMAIN,steamstatic.com.8686c.com - - - DOMAIN,steambroadcast.akamaized.net - - DOMAIN,steamcdn-a.akamaihd.net - - DOMAIN,steamcommunity-a.akamaihd.net - - DOMAIN,steamstore-a.akamaihd.net - - DOMAIN,steamusercontent-a.akamaihd.net - - DOMAIN,steamuserimages-a.akamaihd.net - - # > Tesla - - DOMAIN,tesla-cdn.thron.cn - - DOMAIN,tesla-cdn.thron.com - - DOMAIN-SUFFIX,solarcity.com - - DOMAIN-SUFFIX,tesla.cn - - DOMAIN-SUFFIX,tesla.com - - DOMAIN-SUFFIX,tesla.com.cn - - DOMAIN-SUFFIX,teslamotors.cn - - DOMAIN-SUFFIX,teslamotors.com - - DOMAIN-SUFFIX,teslamotors.com.cn - - DOMAIN-SUFFIX,ts.la - - # > UUBooster - - PROCESS-NAME,UUBooster - - # > WiFiman - - DOMAIN-SUFFIX,app-measurement.com - - # > Xunlei - # - USER-AGENT,%E8%BF%85%E9%9B%B7 - - DOMAIN-SUFFIX,xunlei.com - - # > Download - - PROCESS-NAME,aria2c.exe - - PROCESS-NAME,BitComet.exe - - PROCESS-NAME,fdm.exe - # - PROCESS-NAME,IDMan.exe - - PROCESS-NAME,NetTransport.exe - - PROCESS-NAME,qbittorrent.exe - - PROCESS-NAME,Thunder.exe - - PROCESS-NAME,transmission-daemon.exe - - PROCESS-NAME,transmission-qt.exe - - PROCESS-NAME,uTorrent.exe - - PROCESS-NAME,WebTorrent.exe - - PROCESS-NAME,aria2c - - PROCESS-NAME,fdm - - PROCESS-NAME,Folx - - PROCESS-NAME,NetTransport - - PROCESS-NAME,qbittorrent - - PROCESS-NAME,Thunder - - PROCESS-NAME,Transmission - - PROCESS-NAME,uTorrent - - PROCESS-NAME,WebTorrent - - PROCESS-NAME,WebTorrent Helper - - # > Private Tracker - - DOMAIN-SUFFIX,awesome-hd.me - - DOMAIN-SUFFIX,broadcasthe.net - - DOMAIN-SUFFIX,chdbits.co - - DOMAIN-SUFFIX,classix-unlimited.co.uk - - DOMAIN-SUFFIX,dmhy.best - - DOMAIN-SUFFIX,empornium.me - - DOMAIN-SUFFIX,gazellegames.net - - DOMAIN-SUFFIX,hdchina.org - - DOMAIN-SUFFIX,hdsky.me - - DOMAIN-SUFFIX,icetorrent.org - - DOMAIN-SUFFIX,jpopsuki.eu - - DOMAIN-SUFFIX,keepfrds.com - - DOMAIN-SUFFIX,madsrevolution.net - - DOMAIN-SUFFIX,m-team.cc - - DOMAIN-SUFFIX,nanyangpt.com - - DOMAIN-SUFFIX,ncore.cc - - DOMAIN-SUFFIX,open.cd - - DOMAIN-SUFFIX,ourbits.club - - DOMAIN-SUFFIX,passthepopcorn.me - - DOMAIN-SUFFIX,privatehd.to - - DOMAIN-SUFFIX,redacted.ch - - DOMAIN-SUFFIX,springsunday.net - - DOMAIN-SUFFIX,tjupt.org - - DOMAIN-SUFFIX,totheglory.im - - - DOMAIN-KEYWORD,announce - - DOMAIN-KEYWORD,torrent - - DOMAIN-SUFFIX,smtp - # - URL-REGEX,(Subject|HELO|SMTP) - diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/Speedtest b/luci-app-openclash/root/etc/openclash/rule_provider/Speedtest deleted file mode 100644 index cc720e5e..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/Speedtest +++ /dev/null @@ -1,12 +0,0 @@ -payload: - # > Fast - - DOMAIN-SUFFIX,fast.com - - # > Speedtest by Ookla - # - USER-AGENT,SpeedTest* - - DOMAIN-KEYWORD,speedtest - - DOMAIN-SUFFIX,ooklaserver.net - - DOMAIN,speed.dler.io - - # > Speed Test by Cloudflare - - DOMAIN-SUFFIX,speed.cloudflare.com diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/Spotify b/luci-app-openclash/root/etc/openclash/rule_provider/Spotify deleted file mode 100644 index 7c7527fd..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/Spotify +++ /dev/null @@ -1,18 +0,0 @@ -payload: - # > Spotify - # - USER-AGENT,Spotify* - - - PROCESS-NAME,com.spotify.music - - - DOMAIN-SUFFIX,pscdn.co - - DOMAIN-SUFFIX,scdn.co - - DOMAIN-SUFFIX,spoti.fi - - DOMAIN-SUFFIX,spotify.com - - DOMAIN-SUFFIX,spotifycdn.com - - DOMAIN-SUFFIX,spotifycdn.net - - DOMAIN-SUFFIX,spotifycharts.com - - DOMAIN-SUFFIX,spotifycodes.com - - DOMAIN-SUFFIX,spotifyjobs.com - - DOMAIN-SUFFIX,spotifynewsroom.jp - - DOMAIN-SUFFIX,spotilocal.com - - DOMAIN-SUFFIX,tospotify.com \ No newline at end of file diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/Steam b/luci-app-openclash/root/etc/openclash/rule_provider/Steam deleted file mode 100644 index e467ecdc..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/Steam +++ /dev/null @@ -1,14 +0,0 @@ -payload: - # > Steam - - DOMAIN-SUFFIX,fanatical.com - - DOMAIN-SUFFIX,humblebundle.com - - DOMAIN-SUFFIX,playartifact.com - - DOMAIN-SUFFIX,s.team - - DOMAIN-SUFFIX,steam-chat.com - - DOMAIN-SUFFIX,steamcommunity.com - - DOMAIN-SUFFIX,steampowered.com - - DOMAIN-SUFFIX,steamgames.com - - DOMAIN-SUFFIX,steamstatic.com - - DOMAIN-SUFFIX,steamusercontent.com - - DOMAIN-SUFFIX,underlords.com - - DOMAIN-SUFFIX,valvesoftware.com \ No newline at end of file diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/Telegram b/luci-app-openclash/root/etc/openclash/rule_provider/Telegram deleted file mode 100644 index d561f90b..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/Telegram +++ /dev/null @@ -1,24 +0,0 @@ -payload: - # > Telegram - - DOMAIN-SUFFIX,t.me - - DOMAIN-SUFFIX,tx.me - - DOMAIN-SUFFIX,tdesktop.com - - DOMAIN-SUFFIX,telegra.ph - - DOMAIN-SUFFIX,telegram.me - - DOMAIN-SUFFIX,telegram.org - - DOMAIN-SUFFIX,telegram-cdn.org - - DOMAIN-SUFFIX,telesco.pe - - - IP-CIDR,91.105.192.0/23,no-resolve - - IP-CIDR,91.108.56.0/22,no-resolve - - IP-CIDR,91.108.4.0/22,no-resolve - - IP-CIDR,91.108.8.0/22,no-resolve - - IP-CIDR,91.108.12.0/22,no-resolve - - IP-CIDR,91.108.16.0/22,no-resolve - - IP-CIDR,91.108.20.0/22,no-resolve - - IP-CIDR,149.154.160.0/20,no-resolve - - IP-CIDR,185.76.151.0/24,no-resolve - - IP-CIDR6,2001:67c:4e8::/48,no-resolve - - IP-CIDR6,2001:b28:f23d::/48,no-resolve - - IP-CIDR6,2001:b28:f23f::/48,no-resolve - - IP-CIDR6,2a0a:f280::/32,no-resolve diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/Tencent_Video b/luci-app-openclash/root/etc/openclash/rule_provider/Tencent_Video deleted file mode 100644 index 3895e76a..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/Tencent_Video +++ /dev/null @@ -1,4 +0,0 @@ -payload: - # > Tencent Video - - DOMAIN-SUFFIX,v.smtcdns.com - - DOMAIN-SUFFIX,vv.video.qq.com diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/ViuTV b/luci-app-openclash/root/etc/openclash/rule_provider/ViuTV deleted file mode 100644 index ee09e070..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/ViuTV +++ /dev/null @@ -1,15 +0,0 @@ -payload: - # > ViuTV - - PROCESS-NAME,com.hktve.viutv - - - DOMAIN-SUFFIX,bootstrapcdn.com - - DOMAIN-SUFFIX,cloudfront.net - - DOMAIN-SUFFIX,cognito-identity.us-east-1.amazonaws.com - - DOMAIN-SUFFIX,firebaseio.com - - DOMAIN-SUFFIX,jwpcdn.com - - DOMAIN-SUFFIX,jwplayer.com - - DOMAIN-SUFFIX,mobileanalytics.us-east-1.amazonaws.com - - DOMAIN-SUFFIX,nowe.com - - DOMAIN-SUFFIX,viu.com - - DOMAIN-SUFFIX,viu.tv - - DOMAIN-SUFFIX,viu.now.com diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/WeTV b/luci-app-openclash/root/etc/openclash/rule_provider/WeTV deleted file mode 100644 index 57a46fbe..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/WeTV +++ /dev/null @@ -1,5 +0,0 @@ -payload: - # > WeTV - - PROCESS-NAME,com.tencent.qqlivei18n - - DOMAIN-SUFFIX,wetv.vip - - DOMAIN-SUFFIX,wetvinfo.com diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/YouTube b/luci-app-openclash/root/etc/openclash/rule_provider/YouTube deleted file mode 100644 index f9ad01b0..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/YouTube +++ /dev/null @@ -1,169 +0,0 @@ -payload: - # > Youtube - - PROCESS-NAME,com.google.android.youtube - - PROCESS-NAME,com.google.android.youtube.tv - - DOMAIN-SUFFIX,googlevideo.com - - DOMAIN-SUFFIX,gvt1.com - - DOMAIN-SUFFIX,video.google.com - - DOMAIN-SUFFIX,youtu.be - - DOMAIN-SUFFIX,youtube.ae - - DOMAIN-SUFFIX,youtube.al - - DOMAIN-SUFFIX,youtube.am - - DOMAIN-SUFFIX,youtube.at - - DOMAIN-SUFFIX,youtube.az - - DOMAIN-SUFFIX,youtube.ba - - DOMAIN-SUFFIX,youtube.be - - DOMAIN-SUFFIX,youtube.bg - - DOMAIN-SUFFIX,youtube.bh - - DOMAIN-SUFFIX,youtube.bo - - DOMAIN-SUFFIX,youtube.by - - DOMAIN-SUFFIX,youtube.ca - - DOMAIN-SUFFIX,youtube.cat - - DOMAIN-SUFFIX,youtube.ch - - DOMAIN-SUFFIX,youtube.cl - - DOMAIN-SUFFIX,youtube.co - - DOMAIN-SUFFIX,youtube.co.ae - - DOMAIN-SUFFIX,youtube.co.at - - DOMAIN-SUFFIX,youtube.co.cr - - DOMAIN-SUFFIX,youtube.co.hu - - DOMAIN-SUFFIX,youtube.co.id - - DOMAIN-SUFFIX,youtube.co.il - - DOMAIN-SUFFIX,youtube.co.in - - DOMAIN-SUFFIX,youtube.co.jp - - DOMAIN-SUFFIX,youtube.co.ke - - DOMAIN-SUFFIX,youtube.co.kr - - DOMAIN-SUFFIX,youtube.co.ma - - DOMAIN-SUFFIX,youtube.co.nz - - DOMAIN-SUFFIX,youtube.co.th - - DOMAIN-SUFFIX,youtube.co.tz - - DOMAIN-SUFFIX,youtube.co.ug - - DOMAIN-SUFFIX,youtube.co.uk - - DOMAIN-SUFFIX,youtube.co.ve - - DOMAIN-SUFFIX,youtube.co.za - - DOMAIN-SUFFIX,youtube.co.zw - - DOMAIN-SUFFIX,youtube.com - - DOMAIN-SUFFIX,youtube.com.ar - - DOMAIN-SUFFIX,youtube.com.au - - DOMAIN-SUFFIX,youtube.com.az - - DOMAIN-SUFFIX,youtube.com.bd - - DOMAIN-SUFFIX,youtube.com.bh - - DOMAIN-SUFFIX,youtube.com.bo - - DOMAIN-SUFFIX,youtube.com.br - - DOMAIN-SUFFIX,youtube.com.by - - DOMAIN-SUFFIX,youtube.com.co - - DOMAIN-SUFFIX,youtube.com.do - - DOMAIN-SUFFIX,youtube.com.ec - - DOMAIN-SUFFIX,youtube.com.ee - - DOMAIN-SUFFIX,youtube.com.eg - - DOMAIN-SUFFIX,youtube.com.es - - DOMAIN-SUFFIX,youtube.com.gh - - DOMAIN-SUFFIX,youtube.com.gr - - DOMAIN-SUFFIX,youtube.com.gt - - DOMAIN-SUFFIX,youtube.com.hk - - DOMAIN-SUFFIX,youtube.com.hn - - DOMAIN-SUFFIX,youtube.com.hr - - DOMAIN-SUFFIX,youtube.com.jm - - DOMAIN-SUFFIX,youtube.com.jo - - DOMAIN-SUFFIX,youtube.com.kw - - DOMAIN-SUFFIX,youtube.com.lb - - DOMAIN-SUFFIX,youtube.com.lv - - DOMAIN-SUFFIX,youtube.com.ly - - DOMAIN-SUFFIX,youtube.com.mk - - DOMAIN-SUFFIX,youtube.com.mt - - DOMAIN-SUFFIX,youtube.com.mx - - DOMAIN-SUFFIX,youtube.com.my - - DOMAIN-SUFFIX,youtube.com.ng - - DOMAIN-SUFFIX,youtube.com.ni - - DOMAIN-SUFFIX,youtube.com.om - - DOMAIN-SUFFIX,youtube.com.pa - - DOMAIN-SUFFIX,youtube.com.pe - - DOMAIN-SUFFIX,youtube.com.ph - - DOMAIN-SUFFIX,youtube.com.pk - - DOMAIN-SUFFIX,youtube.com.pt - - DOMAIN-SUFFIX,youtube.com.py - - DOMAIN-SUFFIX,youtube.com.qa - - DOMAIN-SUFFIX,youtube.com.ro - - DOMAIN-SUFFIX,youtube.com.sa - - DOMAIN-SUFFIX,youtube.com.sg - - DOMAIN-SUFFIX,youtube.com.sv - - DOMAIN-SUFFIX,youtube.com.tn - - DOMAIN-SUFFIX,youtube.com.tr - - DOMAIN-SUFFIX,youtube.com.tw - - DOMAIN-SUFFIX,youtube.com.ua - - DOMAIN-SUFFIX,youtube.com.uy - - DOMAIN-SUFFIX,youtube.com.ve - - DOMAIN-SUFFIX,youtube.cr - - DOMAIN-SUFFIX,youtube.cz - - DOMAIN-SUFFIX,youtube.de - - DOMAIN-SUFFIX,youtube.dk - - DOMAIN-SUFFIX,youtube.ee - - DOMAIN-SUFFIX,youtube.es - - DOMAIN-SUFFIX,youtube.fi - - DOMAIN-SUFFIX,youtube.fr - - DOMAIN-SUFFIX,youtube.ge - - DOMAIN-SUFFIX,youtube.googleapis.com - - DOMAIN-SUFFIX,youtube.gr - - DOMAIN-SUFFIX,youtube.gt - - DOMAIN-SUFFIX,youtube.hk - - DOMAIN-SUFFIX,youtube.hr - - DOMAIN-SUFFIX,youtube.hu - - DOMAIN-SUFFIX,youtube.ie - - DOMAIN-SUFFIX,youtube.in - - DOMAIN-SUFFIX,youtube.iq - - DOMAIN-SUFFIX,youtube.is - - DOMAIN-SUFFIX,youtube.it - - DOMAIN-SUFFIX,youtube.jo - - DOMAIN-SUFFIX,youtube.jp - - DOMAIN-SUFFIX,youtube.kr - - DOMAIN-SUFFIX,youtube.kz - - DOMAIN-SUFFIX,youtube.la - - DOMAIN-SUFFIX,youtube.lk - - DOMAIN-SUFFIX,youtube.lt - - DOMAIN-SUFFIX,youtube.lu - - DOMAIN-SUFFIX,youtube.lv - - DOMAIN-SUFFIX,youtube.ly - - DOMAIN-SUFFIX,youtube.ma - - DOMAIN-SUFFIX,youtube.md - - DOMAIN-SUFFIX,youtube.me - - DOMAIN-SUFFIX,youtube.mk - - DOMAIN-SUFFIX,youtube.mn - - DOMAIN-SUFFIX,youtube.mx - - DOMAIN-SUFFIX,youtube.my - - DOMAIN-SUFFIX,youtube.ng - - DOMAIN-SUFFIX,youtube.ni - - DOMAIN-SUFFIX,youtube.nl - - DOMAIN-SUFFIX,youtube.no - - DOMAIN-SUFFIX,youtube.pa - - DOMAIN-SUFFIX,youtube.pe - - DOMAIN-SUFFIX,youtube.ph - - DOMAIN-SUFFIX,youtube.pk - - DOMAIN-SUFFIX,youtube.pl - - DOMAIN-SUFFIX,youtube.pr - - DOMAIN-SUFFIX,youtube.pt - - DOMAIN-SUFFIX,youtube.qa - - DOMAIN-SUFFIX,youtube.ro - - DOMAIN-SUFFIX,youtube.rs - - DOMAIN-SUFFIX,youtube.ru - - DOMAIN-SUFFIX,youtube.sa - - DOMAIN-SUFFIX,youtube.se - - DOMAIN-SUFFIX,youtube.sg - - DOMAIN-SUFFIX,youtube.si - - DOMAIN-SUFFIX,youtube.sk - - DOMAIN-SUFFIX,youtube.sn - - DOMAIN-SUFFIX,youtube.soy - - DOMAIN-SUFFIX,youtube.sv - - DOMAIN-SUFFIX,youtube.tn - - DOMAIN-SUFFIX,youtube.tv - - DOMAIN-SUFFIX,youtube.ua - - DOMAIN-SUFFIX,youtube.ug - - DOMAIN-SUFFIX,youtube.uy - - DOMAIN-SUFFIX,youtube.vn - - DOMAIN-SUFFIX,youtubeeducation.com - - DOMAIN-SUFFIX,youtubeembeddedplayer.googleapis.com - - DOMAIN-SUFFIX,youtubei.googleapis.com - - DOMAIN-SUFFIX,youtubekids.com - - DOMAIN-SUFFIX,youtube-nocookie.com - - DOMAIN-SUFFIX,youtube-ui.l.google.com - - DOMAIN-SUFFIX,yt.be - - DOMAIN-SUFFIX,yt3.ggpht.com - - DOMAIN-SUFFIX,ytimg.com \ No newline at end of file diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/Youku b/luci-app-openclash/root/etc/openclash/rule_provider/Youku deleted file mode 100644 index 1876da55..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/Youku +++ /dev/null @@ -1,4 +0,0 @@ -payload: - # > Youku - - DOMAIN-SUFFIX,youku.com - - IP-CIDR,106.11.0.0/16,no-resolve diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/encoreTVB b/luci-app-openclash/root/etc/openclash/rule_provider/encoreTVB deleted file mode 100644 index b66c2111..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/encoreTVB +++ /dev/null @@ -1,6 +0,0 @@ -payload: - # > encoreTVB - - PROCESS-NAME,com.tvbusa.encore - - DOMAIN-SUFFIX,encoretvb.com - - DOMAIN,content.jwplatform.com - - DOMAIN,videos-f.jwpsrv.com diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/iQiyi b/luci-app-openclash/root/etc/openclash/rule_provider/iQiyi deleted file mode 100644 index bd136295..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/iQiyi +++ /dev/null @@ -1,24 +0,0 @@ -payload: - # > iQiyi - - PROCESS-NAME,com.qiyi.video - - DOMAIN,intel-cache.m.iqiyi.com - - DOMAIN,intel-cache.video.iqiyi.com - - DOMAIN,intl-rcd.iqiyi.com - - DOMAIN,intl-subscription.iqiyi.com - - DOMAIN-SUFFIX,inter.iqiyi.com - - DOMAIN-SUFFIX,inter.ptqy.gitv.tv - - DOMAIN-SUFFIX,intl.iqiyi.com - - DOMAIN-SUFFIX,iq.com - - - IP-CIDR,23.211.15.99/32,no-resolve - - IP-CIDR,103.5.34.153/32,no-resolve - - IP-CIDR,104.109.129.153/32,no-resolve - - IP-CIDR,110.238.107.47/32,no-resolve - - IP-CIDR,118.26.32.178/32,no-resolve - - IP-CIDR,203.74.95.131/32,no-resolve - - IP-CIDR,203.74.95.139/32,no-resolve - - IP-CIDR,203.211.4.169/32,no-resolve - - IP-CIDR,203.211.4.193/32,no-resolve - - IP-CIDR,210.201.32.8/32,no-resolve - - IP-CIDR,210.201.32.11/32,no-resolve - diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/miHoYo b/luci-app-openclash/root/etc/openclash/rule_provider/miHoYo deleted file mode 100644 index 6c9f3feb..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/miHoYo +++ /dev/null @@ -1,9 +0,0 @@ -payload: - # > miHoYo - - DOMAIN-SUFFIX,bh3.com - - DOMAIN-SUFFIX,hoyolab.com - - DOMAIN-SUFFIX,hoyoverse.com - - DOMAIN-SUFFIX,mihayo.com - - DOMAIN-SUFFIX,mihoyo.com - - DOMAIN-SUFFIX,miyoushe.com - - DOMAIN-SUFFIX,yuanshen.com diff --git a/luci-app-openclash/root/etc/openclash/rule_provider/myTV_SUPER b/luci-app-openclash/root/etc/openclash/rule_provider/myTV_SUPER deleted file mode 100644 index 08a23935..00000000 --- a/luci-app-openclash/root/etc/openclash/rule_provider/myTV_SUPER +++ /dev/null @@ -1,7 +0,0 @@ -payload: - # > myTV_SUPER - # - USER-AGENT,mytv* - - DOMAIN-KEYWORD,nowtv100 - - DOMAIN-KEYWORD,rthklive - - DOMAIN-SUFFIX,mytvsuper.com - - DOMAIN-SUFFIX,tvb.com diff --git a/luci-app-openclash/root/etc/uci-defaults/luci-openclash b/luci-app-openclash/root/etc/uci-defaults/luci-openclash index 02deb3ec..c32e4443 100644 --- a/luci-app-openclash/root/etc/uci-defaults/luci-openclash +++ b/luci-app-openclash/root/etc/uci-defaults/luci-openclash @@ -25,7 +25,6 @@ uci -q commit firewall mkdir -p /etc/openclash/config mkdir -p /etc/openclash/proxy_provider -mkdir -p /etc/openclash/backup mkdir -p /etc/openclash/core mkdir -p /etc/openclash/history mkdir -p /usr/share/openclash/backup/overwrite @@ -198,11 +197,9 @@ if [ -f "/tmp/openclash.bak" ]; then rm -rf "/etc/openclash/custom/openclash_sniffing_ports_filter.yaml" >/dev/null 2>&1 rm -rf "/etc/openclash/custom/openclash_sniffing_port_filter.yaml" >/dev/null 2>&1 rm -rf "/etc/openclash/custom/openclash_sniffing_domain_filter.yaml" >/dev/null 2>&1 + rm -rf "/etc/openclash/backup" >/dev/null 2>&1 fi -uci -q set openclash.config.enable=0 -uci -q commit openclash - if [ -f "/usr/lib/lua/luci/model/network.lua" ]; then sed -i '/OpenClash Append/,/OpenClash Append End/d' "/usr/lib/lua/luci/model/network.lua" >/dev/null 2>&1 cat >> "/usr/lib/lua/luci/model/network.lua" << EOF diff --git a/luci-app-openclash/root/usr/share/openclash/YAML.rb b/luci-app-openclash/root/usr/share/openclash/YAML.rb index f0d62b98..ca83ab7d 100644 --- a/luci-app-openclash/root/usr/share/openclash/YAML.rb +++ b/luci-app-openclash/root/usr/share/openclash/YAML.rb @@ -2,50 +2,115 @@ module YAML class << self alias_method :load, :unsafe_load if YAML.respond_to? :unsafe_load alias_method :original_dump, :dump + alias_method :original_load_file, :load_file end def self.LOG(info) - puts Time.new.strftime("%Y-%m-%d %H:%M:%S") + " #{info}" + puts Time.new.strftime("%Y-%m-%d %H:%M:%S") + " [Info] " + "#{info}" + end + + def self.LOG_ERROR(info) + puts Time.new.strftime("%Y-%m-%d %H:%M:%S") + " [Error] " + "#{info}" + end + + def self.LOG_WARN(info) + puts Time.new.strftime("%Y-%m-%d %H:%M:%S") + " [Warning] " + "#{info}" + end + + def self.LOG_TIP(info) + puts Time.new.strftime("%Y-%m-%d %H:%M:%S") + " [Tip] " + "#{info}" + end + + # Keep `short-id` as string before YAML parsing so leading zeros are preserved. + # This is required for REALITY short-id values like `00000000`. + def self.load_file(filename, *args, **kwargs) + yaml_content = File.read(filename) + processed_content = fix_short_id_quotes(yaml_content) + + if kwargs.empty? + load(processed_content, *args) + else + load(processed_content, *args, **kwargs) + end end def self.dump(obj, io = nil, **options) - if io.nil? - yaml_content = original_dump(obj, **options) - fix_short_id_quotes(yaml_content) - elsif io.respond_to?(:write) - require 'stringio' - temp_io = StringIO.new - original_dump(obj, temp_io, **options) - yaml_content = temp_io.string - processed_content = fix_short_id_quotes(yaml_content) - io.write(processed_content) - io - else - yaml_content = original_dump(obj, io, **options) - fix_short_id_quotes(yaml_content) + begin + if io.nil? + yaml_content = original_dump(obj, **options) + fix_short_id_quotes(yaml_content) + elsif io.respond_to?(:write) + require 'stringio' + temp_io = StringIO.new + original_dump(obj, temp_io, **options) + yaml_content = temp_io.string + processed_content = fix_short_id_quotes(yaml_content) + io.write(processed_content) + io + else + yaml_content = original_dump(obj, io, **options) + fix_short_id_quotes(yaml_content) + end + rescue => e + LOG_ERROR("Write file failed:【%s】" % [e.message]) + nil end end private - SHORT_ID_REGEX = /^(\s*short-id:\s*)([^\s"'\n][^\s,}\n]*)$/m.freeze - QUOTED_VALUE_REGEX = /^["'].*["']$/.freeze + SHORT_ID_REGEX = /^(\s*)short-id:\s*(.*)$/ + LIST_ITEM_REGEX = /^(\s*)-\s*(.*)$/ + KEY_REGEX = /^(\s*)([a-zA-Z0-9_-]+):\s*(.*)$/ + QUOTED_VALUE_REGEX = /^["'].*["']$/ + + # Inline map support, e.g. reality-opts: { ..., short-id: 00000000 } + INLINE_SHORT_ID_REGEX = /(short-id:\s*)(?!["'\[])([^\s,"'{}\[\]\n\r]+)(?=\s*(?:[,}\]\n\r]|$))/m.freeze def self.fix_short_id_quotes(yaml_content) return yaml_content unless yaml_content.include?('short-id:') - yaml_content.lines.map do |line| - if line =~ SHORT_ID_REGEX - field_name = $1 - value = $2 - if value !~ QUOTED_VALUE_REGEX - "#{field_name}\"#{value}\"\n" - else - "#{field_name}#{value}\n" - end - else - line + begin + # First, normalize inline-map style unquoted short-id. + processed = yaml_content.gsub(INLINE_SHORT_ID_REGEX) do + "#{$1}\"#{$2}\"" end - end.join + + lines = processed.lines + short_id_indices = lines.each_index.select { |i| lines[i] =~ SHORT_ID_REGEX } + short_id_indices.each do |short_id_index| + line = lines[short_id_index] + if line =~ SHORT_ID_REGEX + indent = $1 + value = $2.strip + if value.empty? + in_short_id = true + (short_id_index + 1...lines.size).each do |i| + line = lines[i] + if line =~ LIST_ITEM_REGEX + if in_short_id + indent = $1 + value = $2.strip + if value !~ QUOTED_VALUE_REGEX + lines[i] = "#{indent}- \"#{value}\"\n" + end + end + elsif line =~ KEY_REGEX + in_short_id = false + break + end + end + else + if value !~ QUOTED_VALUE_REGEX + lines[short_id_index] = "#{indent}short-id: \"#{value}\"\n" + end + end + end + end + lines.join + rescue => e + LOG_ERROR("Fix short-id values type failed:【%s】" % [e.message]) + yaml_content + end end -end \ No newline at end of file +end diff --git a/luci-app-openclash/root/usr/share/openclash/cfg_unused_servers_del.sh b/luci-app-openclash/root/usr/share/openclash/cfg_unused_servers_del.sh deleted file mode 100755 index 97d8409c..00000000 --- a/luci-app-openclash/root/usr/share/openclash/cfg_unused_servers_del.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/sh -. /lib/functions.sh - -cfg_unused_servers_del() -{ - - local section="$1" - config_get_bool "enabled" "$section" "enabled" "1" - - if [ "$enabled" = "1" ]; then - return - fi - - #删除未选中节点 - uci -q delete openclash."$section" -} - - config_load "openclash" - config_foreach cfg_unused_servers_del "servers" - uci commit openclash - diff --git a/luci-app-openclash/root/usr/share/openclash/clash_version.sh b/luci-app-openclash/root/usr/share/openclash/clash_version.sh index bfa70a61..ee5352fd 100755 --- a/luci-app-openclash/root/usr/share/openclash/clash_version.sh +++ b/luci-app-openclash/root/usr/share/openclash/clash_version.sh @@ -14,8 +14,6 @@ del_lock() { set_lock -TIME=$(date "+%Y-%m-%d-%H") -CHTIME=$(date "+%Y-%m-%d-%H" -r "/tmp/clash_last_version" 2>/dev/null) DOWNLOAD_FILE="/tmp/clash_last_version" RELEASE_BRANCH=$(uci_get_config "release_branch" || echo "master") github_address_mod=$(uci_get_config "github_address_mod" || echo 0) @@ -23,17 +21,15 @@ if [ -n "$1" ]; then github_address_mod="$1" fi -if [ "$TIME" != "$CHTIME" ]; then - if [ "$github_address_mod" != "0" ]; then - if [ "$github_address_mod" == "https://cdn.jsdelivr.net/" ] || [ "$github_address_mod" == "https://fastly.jsdelivr.net/" ] || [ "$github_address_mod" == "https://testingcf.jsdelivr.net/" ]; then - DOWNLOAD_URL="${github_address_mod}gh/vernesong/OpenClash@core/${RELEASE_BRANCH}/core_version" - else - DOWNLOAD_URL="${github_address_mod}https://raw.githubusercontent.com/vernesong/OpenClash/core/${RELEASE_BRANCH}/core_version" - fi +if [ "$github_address_mod" != "0" ]; then + if [ "$github_address_mod" == "https://cdn.jsdelivr.net/" ] || [ "$github_address_mod" == "https://fastly.jsdelivr.net/" ] || [ "$github_address_mod" == "https://testingcf.jsdelivr.net/" ]; then + DOWNLOAD_URL="${github_address_mod}gh/vernesong/OpenClash@core/${RELEASE_BRANCH}/core_version" else - DOWNLOAD_URL="https://raw.githubusercontent.com/vernesong/OpenClash/core/${RELEASE_BRANCH}/core_version" + DOWNLOAD_URL="${github_address_mod}https://raw.githubusercontent.com/vernesong/OpenClash/core/${RELEASE_BRANCH}/core_version" fi - - DOWNLOAD_FILE_CURL "$DOWNLOAD_URL" "$DOWNLOAD_FILE" +else + DOWNLOAD_URL="https://raw.githubusercontent.com/vernesong/OpenClash/core/${RELEASE_BRANCH}/core_version" fi + +DOWNLOAD_FILE_CURL "$DOWNLOAD_URL" "$DOWNLOAD_FILE" "$DOWNLOAD_FILE" del_lock diff --git a/luci-app-openclash/root/usr/share/openclash/log.sh b/luci-app-openclash/root/usr/share/openclash/log.sh index 19dee372..b69e9646 100755 --- a/luci-app-openclash/root/usr/share/openclash/log.sh +++ b/luci-app-openclash/root/usr/share/openclash/log.sh @@ -7,20 +7,51 @@ LOG_OUT() { if [ -n "${1}" ]; then echo -e "${1}" > $START_LOG - echo -e "$(date "+%Y-%m-%d %H:%M:%S") ${1}" >> $LOG_FILE + echo -e "$(date "+%Y-%m-%d %H:%M:%S") [Info] ${1}" >> $LOG_FILE + fi +} + +LOG_TIP() +{ + if [ -n "${1}" ]; then + echo -e "${1}" > $START_LOG + echo -e "$(date "+%Y-%m-%d %H:%M:%S") [Tip] ${1}" >> $LOG_FILE + fi +} + +LOG_WARN() +{ + if [ -n "${1}" ]; then + echo -e "${1}" > $START_LOG + echo -e "$(date "+%Y-%m-%d %H:%M:%S") [Warning] ${1}" >> $LOG_FILE + fi +} + +LOG_ERROR() +{ + if [ -n "${1}" ]; then + echo -e "${1}" > $START_LOG + echo -e "$(date "+%Y-%m-%d %H:%M:%S") [Error] ${1}" >> $LOG_FILE fi } LOG_INFO() { if [ -n "${1}" ]; then - echo -e "$(date "+%Y-%m-%d %H:%M:%S") ${1}" >> $LOG_FILE + echo -e "$(date "+%Y-%m-%d %H:%M:%S") [Info] ${1}" >> $LOG_FILE + fi +} + +LOG_WATCHDOG() +{ + if [ -n "${1}" ]; then + echo -e "$(date "+%Y-%m-%d %H:%M:%S") [Watchdog] ${1}" >> $LOG_FILE fi } LOG_ALERT() { - echo -e "$(tail -n 20 $LOG_FILE |grep -E 'level=fatal|level=error|FTL\ \[Config\]' |awk 'END {print}')" > $START_LOG + echo -e "$(tail -n 20 $LOG_FILE |grep -E 'level=fatal|level=error' |awk 'END {print}')" > $START_LOG sleep 3 } diff --git a/luci-app-openclash/root/usr/share/openclash/openclash.sh b/luci-app-openclash/root/usr/share/openclash/openclash.sh index 63767761..e77c5af2 100755 --- a/luci-app-openclash/root/usr/share/openclash/openclash.sh +++ b/luci-app-openclash/root/usr/share/openclash/openclash.sh @@ -21,10 +21,8 @@ set_lock LOGTIME=$(echo $(date "+%Y-%m-%d %H:%M:%S")) LOG_FILE="/tmp/openclash.log" -CFG_FILE="/tmp/yaml_sub_tmp_config.yaml" CRON_FILE="/etc/crontabs/root" CONFIG_PATH=$(uci_get_config "config_path") -servers_update=$(uci_get_config "servers_update") router_self_proxy=$(uci_get_config "router_self_proxy" || echo 1) FW4=$(command -v fw4) CLASH="/etc/openclash/clash" @@ -55,7 +53,7 @@ config_test() local IFS=$'\n' for i in $test_info; do if [ -n "$(echo "$i" |grep "configuration file")" ]; then - local info=$(echo "$i" |sed "s# ${CFG_FILE} #【${CONFIG_FILE}】#g") + local info=$(echo "$i" |sed "s# ${CFG_FILE} #【${name}】#g") LOG_OUT "$info" else echo "$i" >> "$LOG_FILE" @@ -71,23 +69,19 @@ config_test() config_download() { -LOG_OUT "Tip: Config File【$name】Downloading User-Agent【$sub_ua】..." -if [ -n "$subscribe_url_param" ]; then - if [ -n "$c_address" ]; then - LOG_INFO "Tip: Config File【$name】Downloading URL【$c_address$subscribe_url_param】..." - DOWNLOAD_URL="${c_address}${subscribe_url_param}" - DOWNLOAD_PARAM="$sub_ua" - else - LOG_INFO "Tip: Config File【$name】Downloading URL【https://api.dler.io/sub$subscribe_url_param】..." - DOWNLOAD_URL="https://api.dler.io/sub${subscribe_url_param}" - DOWNLOAD_PARAM="$sub_ua" - fi -else - LOG_INFO "Tip: Config File【$name】Downloading URL【$subscribe_url】..." +LOG_TIP "Config File【$name】Downloading User-Agent【$sub_ua】..." +if [ -n "$subscribe_url_param" ] && [ -n "$c_address" ]; then + LOG_INFO "Config File【$name】Downloading URL【$c_address$subscribe_url_param】..." + DOWNLOAD_URL="${c_address}${subscribe_url_param}" + DOWNLOAD_PARAM="$sub_ua" +fi +if [ -z "$DOWNLOAD_URL" ]; then + LOG_INFO "Config File【$name】Downloading URL【$subscribe_url】..." DOWNLOAD_URL="${subscribe_url}" DOWNLOAD_PARAM="$sub_ua" fi -DOWNLOAD_FILE_CURL "$DOWNLOAD_URL" "$CFG_FILE" "$DOWNLOAD_PARAM" +DOWNLOAD_FILE_CURL "$DOWNLOAD_URL" "$CFG_FILE" "$CONFIG_FILE" "$DOWNLOAD_PARAM" +DOWNLOAD_RESULT=$? } config_cus_up() @@ -105,11 +99,11 @@ config_cus_up() fi if [ -z "$subscribe_url_param" ]; then if [ -n "$key_match_param" ] || [ -n "$key_ex_match_param" ]; then - LOG_OUT "Config File【$name】is Replaced Successfully, Start Picking Nodes..." + LOG_OUT "Config File【$name】Start Picking Nodes..." ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e " begin threads = []; - Value = YAML.load_file('$CONFIG_FILE'); + Value = YAML.load_file('$CFG_FILE'); if Value.has_key?('proxies') and not Value['proxies'].to_a.empty? then Value['proxies'].reverse.each{ |x| @@ -164,35 +158,12 @@ config_cus_up() end; threads.each(&:join); rescue Exception => e - YAML.LOG('Error: Filter Proxies Failed,【' + e.message + '】'); + YAML.LOG_ERROR('Filter Proxies Failed,【' + e.message + '】'); ensure - File.open('$CONFIG_FILE','w') {|f| YAML.dump(Value, f)}; + File.open('$CFG_FILE','w') {|f| YAML.dump(Value, f)}; end" 2>/dev/null >> $LOG_FILE fi fi - if [ "$servers_update" -eq 1 ]; then - LOG_OUT "Config File【$name】is Replaced Successfully, Start to Reserving..." - uci -q set openclash.config.config_update_path="/etc/openclash/config/$name.yaml" - uci -q set openclash.config.servers_if_update=1 - uci commit openclash - /usr/share/openclash/yml_groups_get.sh - uci -q set openclash.config.servers_if_update=1 - uci commit openclash - /usr/share/openclash/yml_groups_set.sh - if [ "$CONFIG_FILE" == "$CONFIG_PATH" ]; then - restart=1 - fi - LOG_OUT "Config File【$name】Update Successful!" - SLOG_CLEAN - elif [ "$CONFIG_FILE" == "$CONFIG_PATH" ]; then - LOG_OUT "Config File【$name】Update Successful!" - restart=1 - else - LOG_OUT "Config File【$name】Update Successful!" - SLOG_CLEAN - fi - - rm -rf /tmp/Proxy_Group 2>/dev/null } config_su_check() @@ -200,60 +171,36 @@ config_su_check() LOG_OUT "Config File Test Successful, Check If There is Any Update..." sed -i 's/! /!!str /g' "$CFG_FILE" >/dev/null 2>&1 if [ -f "$CONFIG_FILE" ]; then - cmp -s "$BACKPACK_FILE" "$CFG_FILE" + if [ "$only_download" -eq 0 ]; then + config_cus_up + fi + cmp -s "$CONFIG_FILE" "$CFG_FILE" if [ "$?" -ne 0 ]; then LOG_OUT "Config File【$name】Are Updates, Start Replacing..." - cp "$CFG_FILE" "$BACKPACK_FILE" - #保留规则部分 - if [ "$servers_update" -eq 1 ] && [ "$only_download" -eq 0 ]; then - ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e " - Value = YAML.load_file('$CONFIG_FILE'); - Value_1 = YAML.load_file('$CFG_FILE'); - if Value.key?('rules') or Value.key?('script') or Value.key?('rule-providers') then - if Value.key?('rules') then - Value_1['rules'] = Value['rules'] - end; - if Value.key?('script') then - Value_1['script'] = Value['script'] - end; - if Value.key?('rule-providers') then - Value_1['rule-providers'] = Value['rule-providers'] - end; - File.open('$CFG_FILE','w') {|f| YAML.dump(Value_1, f)}; - end; - " 2>/dev/null - fi mv "$CFG_FILE" "$CONFIG_FILE" 2>/dev/null - if [ "$only_download" -eq 0 ]; then - config_cus_up - else - LOG_OUT "Config File【$name】Update Successful!" - SLOG_CLEAN - fi + LOG_OUT "Config File【$name】Update Successful!" else LOG_OUT "Config File【$name】No Change, Do Nothing!" rm -rf "$CFG_FILE" - SLOG_CLEAN + return fi else LOG_OUT "Config File【$name】Download Successful, Start To Create..." - mv "$CFG_FILE" "$CONFIG_FILE" 2>/dev/null - cp "$CONFIG_FILE" "$BACKPACK_FILE" if [ "$only_download" -eq 0 ]; then config_cus_up - else - LOG_OUT "Config File【$name】Update Successful!" - SLOG_CLEAN fi + mv "$CFG_FILE" "$CONFIG_FILE" 2>/dev/null + LOG_OUT "Config File【$name】Update Successful!" + fi + if [ "$CONFIG_FILE" == "$CONFIG_PATH" ]; then + restart=1 fi } config_error() { - LOG_OUT "Error:【$name】Update Error, Please Try Again Later..." + LOG_ERROR "【$name】Update Error, Please Try Again Later..." rm -rf "$CFG_FILE" 2>/dev/null - SLOG_CLEAN - return 1 } change_dns() @@ -274,13 +221,13 @@ config_download_direct() config_download - if [ "${PIPESTATUS[0]}" -eq 0 ] && [ -s "$CFG_FILE" ]; then + if [ "$DOWNLOAD_RESULT" -eq 0 ] && [ -s "$CFG_FILE" ]; then #prevent ruby unexpected error sed -i -E 's/protocol-param: ([^,'"'"'"''}( *#)\n\r]+)/protocol-param: "\1"/g' "$CFG_FILE" 2>/dev/null sed -i '/^ \{0,\}enhanced-mode:/d' "$CFG_FILE" >/dev/null 2>&1 config_test if [ $? -ne 0 ]; then - LOG_OUT "Error: Config File Tested Faild, Please Check The Log Infos!" + LOG_ERROR "Config File Tested Faild, Please Check The Log Infos!" change_dns config_error return @@ -289,12 +236,12 @@ config_download_direct() begin YAML.load_file('$CFG_FILE'); rescue Exception => e - YAML.LOG('Error: Unable To Parse Config File,【' + e.message + '】'); + YAML.LOG_ERROR('Unable To Parse Config File,【' + e.message + '】'); system 'rm -rf ${CFG_FILE} 2>/dev/null' end " 2>/dev/null >> $LOG_FILE if [ $? -ne 0 ]; then - LOG_OUT "Error: Ruby Works Abnormally, Please Check The Ruby Library Depends!" + LOG_ERROR "Ruby Works Abnormally, Please Check The Ruby Library Depends!" only_download=1 change_dns config_su_check @@ -303,13 +250,16 @@ config_download_direct() change_dns config_error elif ! "$(ruby_read "$CFG_FILE" ".key?('proxies')")" && ! "$(ruby_read "$CFG_FILE" ".key?('proxy-providers')")" ; then - LOG_OUT "Error: Updated Config【$name】Has No Proxy Field, Update Exit..." + LOG_ERROR "Updated Config【$name】Has No Proxy Field, Update Exit..." change_dns config_error else change_dns config_su_check fi + elif [ "$DOWNLOAD_RESULT" -eq 2 ]; then + change_dns + LOG_OUT "Config File【$name】No Change, Do Nothing!" else change_dns config_error @@ -324,24 +274,24 @@ server_key_match() local key_match key_word if [ -n "$(echo "$1" |grep "^ \{0,\}$")" ] || [ -n "$(echo "$1" |grep "^\t\{0,\}$")" ]; then - return + return fi if [ -n "$(echo "$1" |grep "&")" ]; then key_word=$(echo "$1" |sed 's/&/ /g') - for k in $key_word - do - if [ -z "$k" ]; then - continue - fi - k="(?=.*$k)" - key_match="$key_match$k" - done - key_match="^($key_match).*" + for k in $key_word + do + if [ -z "$k" ]; then + continue + fi + k="(?=.*$k)" + key_match="$key_match$k" + done + key_match="^($key_match).*" else - if [ -n "$1" ]; then - key_match="($1)" - fi + if [ -n "$1" ]; then + key_match="($1)" + fi fi if [ "$2" = "keyword" ]; then @@ -376,7 +326,7 @@ sub_info_get() { local section="$1" subscribe_url template_path subscribe_url_param template_path_encode key_match_param key_ex_match_param c_address de_ex_keyword sub_ua append_custom_params config_get_bool "enabled" "$section" "enabled" "1" - config_get "name" "$section" "name" "" + config_get "name" "$section" "name" "config" config_get "sub_convert" "$section" "sub_convert" "" config_get "address" "$section" "address" "" config_get "keyword" "$section" "keyword" "" @@ -393,6 +343,9 @@ sub_info_get() config_get "de_ex_keyword" "$section" "de_ex_keyword" "" config_get "sub_ua" "$section" "sub_ua" "clash.meta" + CONFIG_FILE="/etc/openclash/config/$name.yaml" + CFG_FILE="/tmp/$name.yaml" + if [ "$enabled" -eq 0 ]; then if [ -n "$2" ]; then if [ "$2" != "$CONFIG_FILE" ] && [ "$2" != "$name" ]; then @@ -419,15 +372,6 @@ sub_info_get() rule_provider="" fi - if [ -z "$name" ]; then - name="config" - CONFIG_FILE="/etc/openclash/config/config.yaml" - BACKPACK_FILE="/etc/openclash/backup/config.yaml" - else - CONFIG_FILE="/etc/openclash/config/$name.yaml" - BACKPACK_FILE="/etc/openclash/backup/$name.yaml" - fi - if [ -n "$2" ] && [ "$2" != "$CONFIG_FILE" ] && [ "$2" != "$name" ]; then return fi @@ -477,14 +421,13 @@ sub_info_get() LOG_OUT "Start Updating Config File【$name】..." config_download - if [ "${PIPESTATUS[0]}" -eq 0 ] && [ -s "$CFG_FILE" ]; then + if [ "$DOWNLOAD_RESULT" -eq 0 ] && [ -s "$CFG_FILE" ]; then #prevent ruby unexpected error sed -i -E 's/protocol-param: ([^,'"'"'"''}( *#)\n\r]+)/protocol-param: "\1"/g' "$CFG_FILE" 2>/dev/null - sed -i '/^ \{0,\}enhanced-mode:/d' "$CFG_FILE" >/dev/null 2>&1 config_test if [ $? -ne 0 ]; then - LOG_OUT "Error: Config File Tested Faild, Please Check The Log Infos!" - LOG_OUT "Error: Config File【$name】Subscribed Failed, Trying to Download Without Agent..." + LOG_ERROR "Config File Tested Faild, Please Check The Log Infos!" + LOG_ERROR "Config File【$name】Subscribed Failed, Trying to Download Without Agent..." config_download_direct return fi @@ -492,25 +435,27 @@ sub_info_get() begin YAML.load_file('$CFG_FILE'); rescue Exception => e - YAML.LOG('Error: Unable To Parse Config File,【' + e.message + '】'); + YAML.LOG_ERROR('Unable To Parse Config File,【' + e.message + '】'); system 'rm -rf ${CFG_FILE} 2>/dev/null' end " 2>/dev/null >> $LOG_FILE if [ $? -ne 0 ]; then - LOG_OUT "Error: Ruby Works Abnormally, Please Check The Ruby Library Depends!" + LOG_ERROR "Ruby Works Abnormally, Please Check The Ruby Library Depends!" only_download=1 config_su_check elif [ ! -f "$CFG_FILE" ]; then LOG_OUT "Config File Format Validation Failed, Trying To Download Without Agent..." config_download_direct elif ! "$(ruby_read "$CFG_FILE" ".key?('proxies')")" && ! "$(ruby_read "$CFG_FILE" ".key?('proxy-providers')")" ; then - LOG_OUT "Error: Updated Config【$name】Has No Proxy Field, Trying To Download Without Agent..." + LOG_ERROR "Updated Config【$name】Has No Proxy Field, Trying To Download Without Agent..." config_download_direct else config_su_check fi + elif [ "$DOWNLOAD_RESULT" -eq 2 ]; then + LOG_OUT "Config File【$name】No Change, Do Nothing!" else - LOG_OUT "Error: Config File【$name】Subscribed Failed, Trying to Download Without Agent..." + LOG_ERROR "Config File【$name】Subscribed Failed, Trying to Download Without Agent..." config_download_direct fi } @@ -518,8 +463,6 @@ sub_info_get() #分别获取订阅信息进行处理 config_load "openclash" config_foreach sub_info_get "config_subscribe" "$1" -uci -q delete openclash.config.config_update_path -uci commit openclash - +SLOG_CLEAN dec_job_counter_and_restart "$restart" -del_lock +del_lock \ No newline at end of file diff --git a/luci-app-openclash/root/usr/share/openclash/openclash_chnroute.sh b/luci-app-openclash/root/usr/share/openclash/openclash_chnroute.sh index c719cef8..bc6f6a7d 100755 --- a/luci-app-openclash/root/usr/share/openclash/openclash_chnroute.sh +++ b/luci-app-openclash/root/usr/share/openclash/openclash_chnroute.sh @@ -40,9 +40,9 @@ fi LOG_OUT "Start Downloading The Chnroute Cidr List..." if [ -z "$CHNR_CUSTOM_URL" ]; then - DOWNLOAD_FILE_CURL "https://ispip.clang.cn/all_cn.txt" "/tmp/china_ip_route.txt" + DOWNLOAD_FILE_CURL "https://ispip.clang.cn/all_cn.txt" "/tmp/china_ip_route.txt" "$chnr_path" else - DOWNLOAD_FILE_CURL "$CHNR_CUSTOM_URL" "/tmp/china_ip_route.txt" + DOWNLOAD_FILE_CURL "$CHNR_CUSTOM_URL" "/tmp/china_ip_route.txt" "$chnr_path" fi if [ "$?" -eq 0 ]; then @@ -69,6 +69,8 @@ if [ "$?" -eq 0 ]; then else LOG_OUT "Updated Chnroute Cidr List No Change, Do Nothing..." fi +elif [ "$?" -eq 2 ]; then + LOG_OUT "Updated Chnroute Cidr List No Change, Do Nothing..." else LOG_OUT "Chnroute Cidr List Update Error, Please Try Again Later..." fi @@ -76,11 +78,12 @@ fi #ipv6 LOG_OUT "Start Downloading The Chnroute6 Cidr List..." if [ -z "$CHNR6_CUSTOM_URL" ]; then - DOWNLOAD_FILE_CURL "https://ispip.clang.cn/all_cn_ipv6.txt" "/tmp/china_ip6_route.txt" + DOWNLOAD_FILE_CURL "https://ispip.clang.cn/all_cn_ipv6.txt" "/tmp/china_ip6_route.txt" "$chnr6_path" else - DOWNLOAD_FILE_CURL "$CHNR6_CUSTOM_URL" "/tmp/china_ip6_route.txt" + DOWNLOAD_FILE_CURL "$CHNR6_CUSTOM_URL" "/tmp/china_ip6_route.txt" "$chnr6_path" fi -if [ "$?" -eq 0 ]; then +DOWNLOAD_RESULT=$? +if [ "$DOWNLOAD_RESULT" -eq 0 ]; then LOG_OUT "Chnroute6 Cidr List Download Success, Check Updated..." #预处理 if [ -n "$FW4" ]; then @@ -104,6 +107,8 @@ if [ "$?" -eq 0 ]; then else LOG_OUT "Updated Chnroute6 Cidr List No Change, Do Nothing..." fi +elif [ "$DOWNLOAD_RESULT" -eq 2 ]; then + LOG_OUT "Updated Chnroute6 Cidr List No Change, Do Nothing..." else LOG_OUT "Chnroute6 Cidr List Update Error, Please Try Again Later..." fi diff --git a/luci-app-openclash/root/usr/share/openclash/openclash_core.sh b/luci-app-openclash/root/usr/share/openclash/openclash_core.sh index 4cfe5d3f..7fbb27e7 100755 --- a/luci-app-openclash/root/usr/share/openclash/openclash_core.sh +++ b/luci-app-openclash/root/usr/share/openclash/openclash_core.sh @@ -21,7 +21,7 @@ inc_job_counter restart=0 github_address_mod=$(uci_get_config "github_address_mod" || echo 0) if [ "$github_address_mod" = "0" ] && [ -z "$(echo $2 2>/dev/null |grep -E 'http|one_key_update')" ] && [ -z "$(echo $3 2>/dev/null |grep 'http')" ]; then - LOG_OUT "Tip: If the download fails, try setting the CDN in Overwrite Settings - General Settings - Github Address Modify Options" + LOG_TIP "If the download fails, try setting the CDN in Overwrite Settings - General Settings - Github Address Modify Options" fi if [ -n "$3" ] && [ "$2" = "one_key_update" ]; then github_address_mod="$3" @@ -42,12 +42,12 @@ CPU_MODEL=$(uci_get_config "core_version") RELEASE_BRANCH=$(uci_get_config "release_branch" || echo "master") if [ "$github_address_mod" != "0" ]; then - [ ! -f "/tmp/clash_last_version" ] && /usr/share/openclash/clash_version.sh "$github_address_mod" 2>/dev/null + /usr/share/openclash/clash_version.sh "$github_address_mod" 2>/dev/null else - [ ! -f "/tmp/clash_last_version" ] && /usr/share/openclash/clash_version.sh 2>/dev/null + /usr/share/openclash/clash_version.sh 2>/dev/null fi if [ ! -f "/tmp/clash_last_version" ]; then - LOG_OUT "Error: 【"$CORE_TYPE"】Core Version Check Error, Please Try Again Later..." + LOG_ERROR "【"$CORE_TYPE"】Core Version Check Error, Please Try Again Later..." SLOG_CLEAN del_lock exit 0 @@ -78,7 +78,7 @@ fi if [ "$CORE_CV" != "$CORE_LV" ] || [ -z "$CORE_CV" ]; then if [ "$CPU_MODEL" != 0 ]; then - LOG_OUT "Tip:【$CORE_TYPE】Core Downloading, Please Try to Download and Upload Manually If Fails" + LOG_TIP "【$CORE_TYPE】Core Downloading, Please Try to Download and Upload Manually If Fails" if [ "$github_address_mod" != "0" ]; then if [ "$github_address_mod" == "https://cdn.jsdelivr.net/" ] || [ "$github_address_mod" == "https://fastly.jsdelivr.net/" ] || [ "$github_address_mod" == "https://testingcf.jsdelivr.net/" ]; then DOWNLOAD_URL="${github_address_mod}gh/vernesong/OpenClash@core/${CORE_URL_PATH}/clash-${CPU_MODEL}.tar.gz" @@ -97,14 +97,14 @@ if [ "$CORE_CV" != "$CORE_LV" ] || [ -z "$CORE_CV" ]; then rm -rf "$DOWNLOAD_FILE" "$TMP_FILE" >/dev/null 2>&1 - SHOW_DOWNLOAD_PROGRESS=1 DOWNLOAD_FILE_CURL "$DOWNLOAD_URL" "$DOWNLOAD_FILE" - download_result=$? + SHOW_DOWNLOAD_PROGRESS=1 DOWNLOAD_FILE_CURL "$DOWNLOAD_URL" "$DOWNLOAD_FILE" "$TARGET_CORE_PATH" + DOWNLOAD_RESULT=$? - if [ "$download_result" -eq 0 ]; then + if [ "$DOWNLOAD_RESULT" -eq 0 ]; then gzip -t "$DOWNLOAD_FILE" >/dev/null 2>&1 if [ "$?" -eq 0 ]; then - LOG_OUT "Tip:【"$CORE_TYPE"】Core Download Successful, Start Update..." + LOG_TIP "【"$CORE_TYPE"】Core Download Successful, Start Update..." extract_success=true [ -s "$DOWNLOAD_FILE" ] && { tar zxvfo "$DOWNLOAD_FILE" -C /tmp >/dev/null 2>&1 || extract_success=false @@ -116,12 +116,12 @@ if [ "$CORE_CV" != "$CORE_LV" ] || [ -z "$CORE_CV" ]; then if [ "$extract_success" != "true" ]; then if [ "$retry_count" -lt "$max_retries" ]; then - LOG_OUT "Error:【$retry_count/$max_retries】【"$CORE_TYPE"】Core Update Failed..." + LOG_ERROR "【$retry_count/$max_retries】【"$CORE_TYPE"】Core Update Failed..." rm -rf "$TMP_FILE" >/dev/null 2>&1 sleep 2 continue else - LOG_OUT "Error:【"$CORE_TYPE"】Core Update Failed, Please Make Sure Enough Flash Memory Space or Selected Correct Core Platform And Try Again!" + LOG_ERROR "【"$CORE_TYPE"】Core Update Failed, Please Make Sure Enough Flash Memory Space or Selected Correct Core Platform And Try Again!" rm -rf "$TMP_FILE" >/dev/null 2>&1 SLOG_CLEAN del_lock @@ -132,50 +132,53 @@ if [ "$CORE_CV" != "$CORE_LV" ] || [ -z "$CORE_CV" ]; then mv "$TMP_FILE" "$TARGET_CORE_PATH" >/dev/null 2>&1 if [ "$?" == "0" ]; then - LOG_OUT "Tip:【"$CORE_TYPE"】Core Update Successful!" + LOG_TIP "【"$CORE_TYPE"】Core Update Successful!" SLOG_CLEAN restart=1 break else if [ "$retry_count" -lt "$max_retries" ]; then - LOG_OUT "Error:【$retry_count/$max_retries】【"$CORE_TYPE"】Core Update Failed..." + LOG_ERROR "【$retry_count/$max_retries】【"$CORE_TYPE"】Core Update Failed..." sleep 2 continue else - LOG_OUT "Error:【"$CORE_TYPE"】Core Update Failed, Please Make Sure Enough Flash Memory Space And Try Again!" + LOG_ERROR "【"$CORE_TYPE"】Core Update Failed, Please Make Sure Enough Flash Memory Space And Try Again!" SLOG_CLEAN break fi fi else if [ "$retry_count" -lt "$max_retries" ]; then - LOG_OUT "Error:【$retry_count/$max_retries】【"$CORE_TYPE"】Core Update Failed..." + LOG_ERROR "【$retry_count/$max_retries】【"$CORE_TYPE"】Core Update Failed..." sleep 2 continue else - LOG_OUT "Error:【"$CORE_TYPE"】Core Update Failed, Please Check The Network or Try Again Later!" + LOG_ERROR "【"$CORE_TYPE"】Core Update Failed, Please Check The Network or Try Again Later!" SLOG_CLEAN break fi fi + elif [ "$DOWNLOAD_RESULT" -eq 2 ]; then + LOG_TIP "【"$CORE_TYPE"】Core Has Not Been Updated, Stop Continuing Operation!" + SLOG_CLEAN else if [ "$retry_count" -lt "$max_retries" ]; then - LOG_OUT "Error:【$retry_count/$max_retries】【"$CORE_TYPE"】Core Download Failed..." + LOG_ERROR "【$retry_count/$max_retries】【"$CORE_TYPE"】Core Download Failed..." sleep 2 continue else - LOG_OUT "Error:【"$CORE_TYPE"】Core Download Failed, Please Check The Network or Try Again Later!" + LOG_ERROR "【"$CORE_TYPE"】Core Download Failed, Please Check The Network or Try Again Later!" SLOG_CLEAN break fi fi done else - LOG_OUT "Warning: No Compiled Version Selected, Please Select In Update Page And Try Again!" + LOG_WARN "No Compiled Version Selected, Please Select In Update Page And Try Again!" SLOG_CLEAN fi else - LOG_OUT "Tip:【"$CORE_TYPE"】Core Has Not Been Updated, Stop Continuing Operation!" + LOG_TIP "【"$CORE_TYPE"】Core Has Not Been Updated, Stop Continuing Operation!" SLOG_CLEAN fi diff --git a/luci-app-openclash/root/usr/share/openclash/openclash_curl.sh b/luci-app-openclash/root/usr/share/openclash/openclash_curl.sh index 0105a2e9..c9c22b22 100755 --- a/luci-app-openclash/root/usr/share/openclash/openclash_curl.sh +++ b/luci-app-openclash/root/usr/share/openclash/openclash_curl.sh @@ -1,13 +1,26 @@ #!/bin/bash . /usr/share/openclash/log.sh +. /usr/share/openclash/openclash_etag.sh DOWNLOAD_FILE_CURL() { [ -z "$1" ] || [ -z "$2" ] && return 1 DOWNLOAD_URL=$1 DOWNLOAD_PATH=$2 - DOWNLOAD_UA=$3 + FILE_PATH=$3 + DOWNLOAD_UA=$4 [ -z "$DOWNLOAD_UA" ] && DOWNLOAD_UA="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36" + CURL_OUTPUT=$(curl -sLI --connect-timeout 5 -m 10 --speed-time 5 --speed-limit 1 --retry 2 \ + -H "User-Agent: ${DOWNLOAD_UA}" "$DOWNLOAD_URL" 2>&1) + + NEW_ETAG=$(echo "$CURL_OUTPUT" | grep -i "^etag:" | cut -d' ' -f2- | tr -d '\r\n' | sed 's/^"//;s/"$//') + HTTP_CODE=$(echo "$CURL_OUTPUT" | grep -i "^HTTP" | tail -1 | cut -d' ' -f2) + CACHED_ETAG=$(GET_ETAG_BY_PATH "$FILE_PATH") + + if [ "$HTTP_CODE" = "200" ] && [ -n "$NEW_ETAG" ] && [ "$NEW_ETAG" = "$CACHED_ETAG" ] && [ -e "$FILE_PATH" ]; then + return 2 + fi + if [ "$SHOW_DOWNLOAD_PROGRESS" = "1" ] || [ "$SHOW_DOWNLOAD_PROGRESS" = "true" ]; then TEMP_LOG="/tmp/curl_log_$$" @@ -58,8 +71,6 @@ DOWNLOAD_FILE_CURL() { rm -rf $DOWNLOAD_PATH SLOG_CLEAN return 1 - else - return 0 fi else CURL_OUTPUT=$(curl -w "\n%{http_code}" -SsL --connect-timeout 30 -m 60 --speed-time 30 --speed-limit 1 --retry 2 -H "User-Agent: ${DOWNLOAD_UA}" "$DOWNLOAD_URL" -o "$DOWNLOAD_PATH" 2>&1) @@ -72,8 +83,12 @@ DOWNLOAD_FILE_CURL() { rm -rf $DOWNLOAD_PATH SLOG_CLEAN return 1 - else - return 0 fi fi + + if [ -n "$NEW_ETAG" ] && [ "$HTTP_CODE" = "200" ]; then + SAVE_ETAG_TO_CACHE "$DOWNLOAD_URL" "$NEW_ETAG" "$FILE_PATH" + fi + + return 0 } \ No newline at end of file diff --git a/luci-app-openclash/root/usr/share/openclash/openclash_debug.sh b/luci-app-openclash/root/usr/share/openclash/openclash_debug.sh index c84a2d77..9c7cbc3d 100755 --- a/luci-app-openclash/root/usr/share/openclash/openclash_debug.sh +++ b/luci-app-openclash/root/usr/share/openclash/openclash_debug.sh @@ -26,8 +26,8 @@ set_lock DEBUG_LOG="/tmp/openclash_debug.log" LOGTIME=$(echo $(date "+%Y-%m-%d %H:%M:%S")) +log_level=$(uci_get_config "log_level") enable_custom_dns=$(uci_get_config "enable_custom_dns") -rule_source=$(uci_get_config "rule_source") enable_custom_clash_rules=$(uci_get_config "enable_custom_clash_rules") ipv6_enable=$(uci_get_config "ipv6_enable") ipv6_dns=$(uci_get_config "ipv6_dns") @@ -47,8 +47,6 @@ elif [ -x "/usr/bin/apk" ]; then cpu_model=$(apk list libc 2>/dev/null|awk '{print $2}') fi core_meta_version=$(/etc/openclash/core/clash_meta -v 2>/dev/null |awk -F ' ' '{print $3}' |head -1 2>/dev/null) -servers_update=$(uci_get_config "servers_update") -mix_proxies=$(uci_get_config "mix_proxies") op_version=$(ipk_v "luci-app-openclash") china_ip_route=$(uci_get_config "china_ip_route") common_ports=$(uci_get_config "common_ports") @@ -239,15 +237,6 @@ IPV6-DNS解析: $(ts_cf "$ipv6_dns") 绕过中国大陆IP: $(ts_cf "$china_ip_route") 路由本机代理: $(ts_cf "$router_self_proxy") -#启动异常时建议关闭此项后重试 -混合节点: $(ts_cf "$mix_proxies") -保留配置: $(ts_cf "$servers_update") -EOF - -cat >> "$DEBUG_LOG" <<-EOF - -#启动异常时建议关闭此项后重试 -第三方规则: $(ts_cf "$rule_source") EOF cat >> "$DEBUG_LOG" <<-EOF @@ -381,6 +370,9 @@ echo "" >> "$DEBUG_LOG" echo "#ip route list" >> "$DEBUG_LOG" ip route list >> "$DEBUG_LOG" 2>/dev/null echo "" >> "$DEBUG_LOG" +echo "#ip route list table 354" >> "$DEBUG_LOG" +ip route list table 354 >> "$DEBUG_LOG" 2>/dev/null +echo "" >> "$DEBUG_LOG" echo "#ip rule show" >> "$DEBUG_LOG" ip rule show >> "$DEBUG_LOG" 2>/dev/null echo "" >> "$DEBUG_LOG" @@ -392,6 +384,9 @@ echo "" >> "$DEBUG_LOG" echo "#ip -6 route list" >> "$DEBUG_LOG" ip -6 route list >> "$DEBUG_LOG" 2>/dev/null echo "" >> "$DEBUG_LOG" +echo "#ip -6 route list table 354" >> "$DEBUG_LOG" +ip -6 route list table 354 >> "$DEBUG_LOG" 2>/dev/null +echo "" >> "$DEBUG_LOG" echo "#ip -6 rule show" >> "$DEBUG_LOG" ip -6 rule show >> "$DEBUG_LOG" 2>/dev/null @@ -469,23 +464,23 @@ fi cat >> "$DEBUG_LOG" <<-EOF -#===================== 最近运行日志(自动切换为Debug模式) =====================# +#===================== 最近运行日志 (切换为Debug模式) =====================# EOF -if pidof clash >/dev/null; then - curl -SsL -m 3 -H "Content-Type: application/json" -H "Authorization: Bearer ${da_password}" -XPATCH http://${lan_ip}:${cn_port}/configs -d '{"log-level": "debug"}' >/dev/null +if pidof clash >/dev/null && [ "$log_level" != "debug" ]; then + curl -SsL -m 3 --retry 2 -H "Content-Type: application/json" -H "Authorization: Bearer ${da_password}" -XPATCH http://${lan_ip}:${cn_port}/configs -d '{"log-level": "debug"}' >/dev/null sleep 10 fi tail -n 100 "/tmp/openclash.log" >> "$DEBUG_LOG" 2>/dev/null cat >> "$DEBUG_LOG" <<-EOF -#===================== 最近运行日志获取完成(自动切换为silent模式) =====================# +#===================== 最近运行日志获取完成 =====================# EOF -if pidof clash >/dev/null; then - curl -SsL -m 3 -H "Content-Type: application/json" -H "Authorization: Bearer ${da_password}" -XPATCH http://${lan_ip}:${cn_port}/configs -d '{"log-level": "silent"}' >/dev/null +if pidof clash >/dev/null && [ "$log_level" != "debug" ]; then + curl -SsL -m 3 --retry 2 -H "Content-Type: application/json" -H "Authorization: Bearer ${da_password}" -XPATCH http://${lan_ip}:${cn_port}/configs -d '{"log-level": "'"$log_level"'"}' >/dev/null fi cat >> "$DEBUG_LOG" <<-EOF diff --git a/luci-app-openclash/root/usr/share/openclash/openclash_dler_checkin.lua b/luci-app-openclash/root/usr/share/openclash/openclash_dler_checkin.lua deleted file mode 100644 index ac4461e3..00000000 --- a/luci-app-openclash/root/usr/share/openclash/openclash_dler_checkin.lua +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/lua - -require "nixio" -require "luci.util" -require "luci.sys" -local uci = require("luci.model.uci").cursor() -local fs = require "luci.openclash" -local json = require "luci.jsonc" - -local function dler_checkin() - local info, path, checkin - local token = fs.uci_get_config("config", "dler_token") - local enable = fs.uci_get_config("config", "dler_checkin") or 0 - local interval = fs.uci_get_config("config", "dler_checkin_interval") or 1 - local multiple = fs.uci_get_config("config", "dler_checkin_multiple") or 1 - path = "/tmp/dler_checkin" - if token and enable == "1" then - checkin = string.format("curl -sL -H 'Content-Type: application/json' -d '{\"access_token\":\"%s\", \"multiple\":\"%s\"}' -X POST https://dler.cloud/api/v1/checkin -o %s", token, multiple, path) - if fs.readfile(path) == "" or not fs.readfile(path) then - luci.sys.exec(checkin) - else - if (os.time() - fs.mtime(path) > interval*3600+1) then - fs.unlink(path) - luci.sys.exec(checkin) - else - os.exit(0) - end - end - if fs.readfile(path) == "" or not fs.readfile(path) then - fs.writefile(path, " ") - end - info = fs.readfile(path) - if info then - info = json.parse(info) - end - if info and info.ret == 200 then - luci.sys.exec(string.format('echo "%s Dler Cloud Checkin Successful, Result:【%s】" >> /tmp/openclash.log', os.date("%Y-%m-%d %H:%M:%S"), info.data.checkin)) - else - if info and info.msg then - luci.sys.exec(string.format('echo "%s Dler Cloud Checkin Failed, Result:【%s】" >> /tmp/openclash.log', os.date("%Y-%m-%d %H:%M:%S"), info.msg)) - else - luci.sys.exec(string.format('echo "%s Dler Cloud Checkin Failed! Please Check And Try Again..." >> /tmp/openclash.log', os.date("%Y-%m-%d %H:%M:%S"))) - end - end - end - os.exit(0) -end - -dler_checkin() \ No newline at end of file diff --git a/luci-app-openclash/root/usr/share/openclash/openclash_download_dashboard.sh b/luci-app-openclash/root/usr/share/openclash/openclash_download_dashboard.sh index 6d45ea3d..1ac236c9 100755 --- a/luci-app-openclash/root/usr/share/openclash/openclash_download_dashboard.sh +++ b/luci-app-openclash/root/usr/share/openclash/openclash_download_dashboard.sh @@ -53,9 +53,10 @@ FILE_PATH_INCLUDE="metacubexd-gh-pages" fi - DOWNLOAD_FILE_CURL "$DOWNLOAD_PATH" "$DASH_FILE_DIR" + DOWNLOAD_FILE_CURL "$DOWNLOAD_PATH" "$DASH_FILE_DIR" "$UNPACK_FILE_DIR" + DOWNLOAD_RESULT=$? - if [ "$?" -eq 0 ] && [ -s "$DASH_FILE_DIR" ]; then + if [ "$DOWNLOAD_RESULT" -eq 0 ] && [ -s "$DASH_FILE_DIR" ]; then unzip -qt "$DASH_FILE_DIR" >/dev/null 2>&1 if [ "$?" -eq "0" ]; then cp -rf "$UNPACK_FILE_DIR". "$BACKUP_FILE_DIR" >/dev/null 2>&1 @@ -68,7 +69,7 @@ rm -rf "$DASH_FILE_TMP" >/dev/null 2>&1 LOG_OUT "Control Panel【$DASH_NAME - $DASH_TYPE】Download Successful!" && SLOG_CLEAN del_lock - exit 1 + exit 0 else LOG_OUT "Control Panel【$DASH_NAME - $DASH_TYPE】Unzip Error!" && SLOG_CLEAN cp -rf "$BACKUP_FILE_DIR". "$UNPACK_FILE_DIR" >/dev/null 2>&1 @@ -87,6 +88,10 @@ del_lock exit 2 fi + elif [ "$DOWNLOAD_RESULT" -eq 2 ]; then + LOG_OUT "Control Panel【$DASH_NAME - $DASH_TYPE】Download Successful!" && SLOG_CLEAN + del_lock + exit 0 else cp -rf "$BACKUP_FILE_DIR". "$UNPACK_FILE_DIR" >/dev/null 2>&1 rm -rf "$BACKUP_FILE_DIR" >/dev/null 2>&1 @@ -94,7 +99,7 @@ rm -rf "$DASH_FILE_TMP" >/dev/null 2>&1 LOG_OUT "Control Panel【$DASH_NAME - $DASH_TYPE】Download Error!" && SLOG_CLEAN del_lock - exit 0 + exit 1 fi del_lock diff --git a/luci-app-openclash/root/usr/share/openclash/openclash_download_rule_list.sh b/luci-app-openclash/root/usr/share/openclash/openclash_download_rule_list.sh deleted file mode 100755 index 70e2e13e..00000000 --- a/luci-app-openclash/root/usr/share/openclash/openclash_download_rule_list.sh +++ /dev/null @@ -1,105 +0,0 @@ -#!/bin/bash -. /usr/share/openclash/log.sh -. /lib/functions.sh -. /usr/share/openclash/openclash_curl.sh -. /usr/share/openclash/uci.sh - - urlencode() { - if [ "$#" -eq 1 ]; then - echo "$(/usr/share/openclash/openclash_urlencode.lua "$1")" - fi - } - - set_lock() { - exec 870>"/tmp/lock/openclash_rulelist.lock" 2>/dev/null - flock -x 870 2>/dev/null - } - - del_lock() { - flock -u 870 2>/dev/null - rm -rf "/tmp/lock/openclash_rulelist.lock" 2>/dev/null - } - - set_lock - - RULE_FILE_NAME="$1" - RELEASE_BRANCH=$(uci_get_config "release_branch" || echo "master") - github_address_mod=$(uci_get_config "github_address_mod" || echo 0) - if [ -z "$(grep "$RULE_FILE_NAME" /usr/share/openclash/res/rule_providers.list 2>/dev/null)" ]; then - DOWNLOAD_PATH=$(grep -F "$RULE_FILE_NAME" /usr/share/openclash/res/game_rules.list |awk -F ',' '{print $2}' 2>/dev/null) - RULE_FILE_DIR="/etc/openclash/game_rules/$RULE_FILE_NAME" - RULE_TYPE="game" - else - DOWNLOAD_PATH=$(echo "$RULE_FILE_NAME" |awk -F ',' '{print $1$2}' 2>/dev/null) - RULE_FILE_NAME=$(grep -F "$RULE_FILE_NAME" /usr/share/openclash/res/rule_providers.list |awk -F ',' '{print $NF}' 2>/dev/null) - RULE_FILE_DIR="/etc/openclash/rule_provider/$RULE_FILE_NAME" - RULE_TYPE="provider" - fi - - if [ -z "$DOWNLOAD_PATH" ]; then - LOG_OUT "Rule File【$RULE_FILE_NAME】Download Error!" && SLOG_CLEAN - del_lock - exit 0 - fi - - TMP_RULE_DIR="/tmp/$RULE_FILE_NAME" - TMP_RULE_DIR_TMP="/tmp/$RULE_FILE_NAME.tmp" - DOWNLOAD_PATH=$(urlencode "$DOWNLOAD_PATH") - - if [ "$RULE_TYPE" = "game" ]; then - if [ "$github_address_mod" != "0" ]; then - if [ "$github_address_mod" == "https://cdn.jsdelivr.net/" ] || [ "$github_address_mod" == "https://fastly.jsdelivr.net/" ] || [ "$github_address_mod" == "https://testingcf.jsdelivr.net/" ]; then - DOWNLOAD_URL="${github_address_mod}gh/FQrabbit/SSTap-Rule@master/rules/${DOWNLOAD_PATH}" - else - DOWNLOAD_URL="${github_address_mod}https://raw.githubusercontent.com/FQrabbit/SSTap-Rule/master/rules/${DOWNLOAD_PATH}" - fi - else - DOWNLOAD_URL="https://raw.githubusercontent.com/FQrabbit/SSTap-Rule/master/rules/${DOWNLOAD_PATH}" - fi - elif [ "$RULE_TYPE" = "provider" ]; then - if [ "$github_address_mod" != "0" ]; then - if [ "$github_address_mod" == "https://cdn.jsdelivr.net/" ] || [ "$github_address_mod" == "https://fastly.jsdelivr.net/" ] || [ "$github_address_mod" == "https://testingcf.jsdelivr.net/" ]; then - DOWNLOAD_URL="${github_address_modgh}/$(echo ${DOWNLOAD_PATH} |awk -F '/master' '{print $1}' 2>/dev/null)@master$(echo ${DOWNLOAD_PATH} |awk -F 'master' '{print $2}')" - else - DOWNLOAD_URL="${github_address_mod}https://raw.githubusercontent.com/${DOWNLOAD_PATH}" - fi - else - DOWNLOAD_URL="https://raw.githubusercontent.com/${DOWNLOAD_PATH}" - fi - fi - - DOWNLOAD_FILE_CURL "$DOWNLOAD_URL" "$TMP_RULE_DIR" - - if [ "$?" -eq 0 ] && [ -s "$TMP_RULE_DIR" ]; then - if [ "$RULE_TYPE" = "game" ]; then - cat "$TMP_RULE_DIR" |sed '/^#/d' 2>/dev/null |sed '/^ *$/d' 2>/dev/null |awk '{print " - "$0}' > "$TMP_RULE_DIR_TMP" 2>/dev/null - sed -i '1i\payload:' "$TMP_RULE_DIR_TMP" 2>/dev/null - cmp -s "$TMP_RULE_DIR_TMP" "$RULE_FILE_DIR" - else - cmp -s "$TMP_RULE_DIR" "$RULE_FILE_DIR" - fi - if [ "$?" -ne "0" ]; then - if [ "$RULE_TYPE" = "game" ]; then - mv "$TMP_RULE_DIR_TMP" "$RULE_FILE_DIR" >/dev/null 2>&1 - else - mv "$TMP_RULE_DIR" "$RULE_FILE_DIR" >/dev/null 2>&1 - fi - rm -rf "$TMP_RULE_DIR" >/dev/null 2>&1 - LOG_OUT "Rule File【$RULE_FILE_NAME】Download Successful!" && SLOG_CLEAN - del_lock - exit 1 - else - LOG_OUT "Rule File【$RULE_FILE_NAME】No Change, Do Nothing!" && SLOG_CLEAN - rm -rf "$TMP_RULE_DIR" >/dev/null 2>&1 - rm -rf "$TMP_RULE_DIR_TMP" >/dev/null 2>&1 - del_lock - exit 2 - fi - else - rm -rf "$TMP_RULE_DIR" >/dev/null 2>&1 - LOG_OUT "Rule File【$RULE_FILE_NAME】Download Error!" && SLOG_CLEAN - del_lock - exit 0 - fi - - del_lock diff --git a/luci-app-openclash/root/usr/share/openclash/openclash_etag.sh b/luci-app-openclash/root/usr/share/openclash/openclash_etag.sh new file mode 100755 index 00000000..518c6d60 --- /dev/null +++ b/luci-app-openclash/root/usr/share/openclash/openclash_etag.sh @@ -0,0 +1,93 @@ +#!/bin/sh +# ETag Cache Management Library + +ETAG_CACHE="/etc/openclash/history/etag" + +# 根据 path 读取时间戳 +GET_ETAG_TIMESTAMP_BY_PATH() { + local path=$1 + [ ! -f "$ETAG_CACHE" ] && return 1 + + local path_hash=$(echo -n "$path" | md5sum | cut -d' ' -f1) + + awk -v hash="$path_hash" ' + $0 ~ "^\\[" hash "\\]" { found=1; next } + /^\[/ { found=0 } + found && /^time=/ { print $0; exit } + ' "$ETAG_CACHE" | cut -d'=' -f2- | sed 's/^"//;s/"$//' +} + +# 根据 path 读取 ETag +GET_ETAG_BY_PATH() { + local path=$1 + [ ! -f "$ETAG_CACHE" ] && return 1 + + local path_hash=$(echo -n "$path" | md5sum | cut -d' ' -f1) + + awk -v hash="$path_hash" ' + $0 ~ "^\\[" hash "\\]" { found=1; next } + /^\[/ { found=0 } + found && /^etag=/ { print $0; exit } + ' "$ETAG_CACHE" | cut -d'=' -f2- | sed 's/^"//;s/"$//' +} + +# 保存或更新 ETag +SAVE_ETAG_TO_CACHE() { + local url="\"$1\"" + local etag="\"$2\"" + local path="\"$3\"" + local time="\"$(date '+%Y-%m-%d %H:%M:%S')\"" + local path_hash=$(echo -n "$3" | md5sum | cut -d' ' -f1) + + mkdir -p "$(dirname "$ETAG_CACHE")" + + [ ! -f "$ETAG_CACHE" ] && echo "# ETag Cache File" > "$ETAG_CACHE" + + if grep -q "^\[$path_hash\]" "$ETAG_CACHE"; then + local temp_file="${ETAG_CACHE}.tmp" + awk -v hash="$path_hash" \ + -v new_url="$url" \ + -v new_etag="$etag" \ + -v new_path="$path" \ + -v new_time="$time" ' + $0 ~ "^\\[" hash "\\]" { + print; + found=1; + next + } + /^\[/ { found=0 } + found && /^url=/ { + print "url=" new_url; + next + } + found && /^path=/ { + print "path=" new_path; + next + } + found && /^etag=/ { + print "etag=" new_etag; + next + } + found && /^time=/ { + print "time=" new_time; + next + } + { print } + ' "$ETAG_CACHE" > "$temp_file" && mv "$temp_file" "$ETAG_CACHE" + else + cat >> "$ETAG_CACHE" << EOF + +[$path_hash] +url=$url +path=$path +etag=$etag +time=$time +EOF + fi +} + +# 列出所有缓存 +LIST_ETAG_CACHE() { + [ ! -f "$ETAG_CACHE" ] && return 1 + cat "$ETAG_CACHE" +} \ No newline at end of file diff --git a/luci-app-openclash/root/usr/share/openclash/openclash_geoasn.sh b/luci-app-openclash/root/usr/share/openclash/openclash_geoasn.sh index 3de9de9d..0665d21b 100755 --- a/luci-app-openclash/root/usr/share/openclash/openclash_geoasn.sh +++ b/luci-app-openclash/root/usr/share/openclash/openclash_geoasn.sh @@ -43,8 +43,9 @@ if [ -z "$GEOASN_CUSTOM_URL" ]; then else DOWNLOAD_URL=$GEOASN_CUSTOM_URL fi -DOWNLOAD_FILE_CURL "$DOWNLOAD_URL" "/tmp/GeoLite2-ASN.mmdb" -if [ "$?" -eq 0 ] && [ -s "/tmp/GeoLite2-ASN.mmdb" ]; then +DOWNLOAD_FILE_CURL "$DOWNLOAD_URL" "/tmp/GeoLite2-ASN.mmdb" "$geoasn_path" +DOWNLOAD_RESULT=$? +if [ "$DOWNLOAD_RESULT" -eq 0 ] && [ -s "/tmp/GeoLite2-ASN.mmdb" ]; then LOG_OUT "Geo ASN Database Download Success, Check Updated..." cmp -s /tmp/GeoLite2-ASN.mmdb "$geoasn_path" if [ "$?" -ne "0" ]; then @@ -56,6 +57,8 @@ if [ "$?" -eq 0 ] && [ -s "/tmp/GeoLite2-ASN.mmdb" ]; then else LOG_OUT "Updated Geo ASN Database No Change, Do Nothing..." fi +elif [ "$DOWNLOAD_RESULT" -eq 2 ]; then + LOG_OUT "Updated Geo ASN Database No Change, Do Nothing..." else LOG_OUT "Geo ASN Database Update Error, Please Try Again Later..." fi diff --git a/luci-app-openclash/root/usr/share/openclash/openclash_geoip.sh b/luci-app-openclash/root/usr/share/openclash/openclash_geoip.sh index d028adb2..b7df0990 100755 --- a/luci-app-openclash/root/usr/share/openclash/openclash_geoip.sh +++ b/luci-app-openclash/root/usr/share/openclash/openclash_geoip.sh @@ -43,8 +43,9 @@ if [ -z "$GEOIP_CUSTOM_URL" ]; then else DOWNLOAD_URL=$GEOIP_CUSTOM_URL fi -DOWNLOAD_FILE_CURL "$DOWNLOAD_URL" "/tmp/GeoIP.dat" -if [ "$?" -eq 0 ] && [ -s "/tmp/GeoIP.dat" ]; then +DOWNLOAD_FILE_CURL "$DOWNLOAD_URL" "/tmp/GeoIP.dat" "$geoip_path" +DOWNLOAD_RESULT=$? +if [ "$DOWNLOAD_RESULT" -eq 0 ] && [ -s "/tmp/GeoIP.dat" ]; then LOG_OUT "GeoIP Dat Download Success, Check Updated..." cmp -s /tmp/GeoIP.dat "$geoip_path" if [ "$?" -ne "0" ]; then @@ -56,6 +57,8 @@ if [ "$?" -eq 0 ] && [ -s "/tmp/GeoIP.dat" ]; then else LOG_OUT "Updated GeoIP Dat No Change, Do Nothing..." fi +elif [ "$DOWNLOAD_RESULT" -eq 2 ]; then + LOG_OUT "Updated GeoIP Dat No Change, Do Nothing..." else LOG_OUT "GeoIP Dat Update Error, Please Try Again Later..." fi diff --git a/luci-app-openclash/root/usr/share/openclash/openclash_geosite.sh b/luci-app-openclash/root/usr/share/openclash/openclash_geosite.sh index b2ba9906..7a70977d 100755 --- a/luci-app-openclash/root/usr/share/openclash/openclash_geosite.sh +++ b/luci-app-openclash/root/usr/share/openclash/openclash_geosite.sh @@ -43,8 +43,9 @@ if [ -z "$GEOSITE_CUSTOM_URL" ]; then else DOWNLOAD_URL=$GEOSITE_CUSTOM_URL fi -DOWNLOAD_FILE_CURL "$DOWNLOAD_URL" "/tmp/GeoSite.dat" -if [ "$?" -eq 0 ] && [ -s "/tmp/GeoSite.dat" ]; then +DOWNLOAD_FILE_CURL "$DOWNLOAD_URL" "/tmp/GeoSite.dat" "$geosite_path" +DOWNLOAD_RESULT=$? +if [ "$DOWNLOAD_RESULT" -eq 0 ] && [ -s "/tmp/GeoSite.dat" ]; then LOG_OUT "GeoSite Database Download Success, Check Updated..." cmp -s /tmp/GeoSite.dat "$geosite_path" if [ "$?" -ne "0" ]; then @@ -56,6 +57,8 @@ if [ "$?" -eq 0 ] && [ -s "/tmp/GeoSite.dat" ]; then else LOG_OUT "Updated GeoSite Database No Change, Do Nothing..." fi +elif [ "$DOWNLOAD_RESULT" -eq 2 ]; then + LOG_OUT "Updated GeoSite Database No Change, Do Nothing..." else LOG_OUT "GeoSite Database Update Error, Please Try Again Later..." fi diff --git a/luci-app-openclash/root/usr/share/openclash/openclash_history_get.sh b/luci-app-openclash/root/usr/share/openclash/openclash_history_get.sh index 7b631e4f..a4b8b7b4 100755 --- a/luci-app-openclash/root/usr/share/openclash/openclash_history_get.sh +++ b/luci-app-openclash/root/usr/share/openclash/openclash_history_get.sh @@ -51,7 +51,7 @@ fi if [ -n "$(pidof clash)" ] && [ -f "$CONFIG_FILE" ]; then if [ "$small_flash_memory" == "1" ] || [ -n "$(echo $core_version |grep mips)" ] || [ -n "$(echo $DISTRIB_ARCH |grep mips)" ] || [ -n "$(opkg status libc 2>/dev/null |grep 'Architecture' |awk -F ': ' '{print $2}' |grep mips)" ] || [ -n "$(apk list libc 2>/dev/null |grep mips)" ]; then - CACHE_PATH="/tmp/etc/openclash/cache.db" + CACHE_PATH="/tmp/etc/openclash/cache.db" if [ -f "$CACHE_PATH" ]; then cmp -s "$CACHE_PATH" "$HISTORY_PATH" if [ "$?" -ne "0" ]; then diff --git a/luci-app-openclash/root/usr/share/openclash/openclash_ipdb.sh b/luci-app-openclash/root/usr/share/openclash/openclash_ipdb.sh index 134da63e..4f534c90 100755 --- a/luci-app-openclash/root/usr/share/openclash/openclash_ipdb.sh +++ b/luci-app-openclash/root/usr/share/openclash/openclash_ipdb.sh @@ -43,8 +43,9 @@ if [ -z "$GEOIP_CUSTOM_URL" ]; then else DOWNLOAD_URL=$GEOIP_CUSTOM_URL fi -DOWNLOAD_FILE_CURL "$DOWNLOAD_URL" "/tmp/Country.mmdb" -if [ "$?" -eq 0 ] && [ -s "/tmp/Country.mmdb" ]; then +DOWNLOAD_FILE_CURL "$DOWNLOAD_URL" "/tmp/Country.mmdb" "$geoip_path" +DOWNLOAD_RESULT=$? +if [ "$DOWNLOAD_RESULT" -eq 0 ] && [ -s "/tmp/Country.mmdb" ]; then LOG_OUT "Geoip Database Download Success, Check Updated..." cmp -s /tmp/Country.mmdb "$geoip_path" if [ "$?" -ne 0 ]; then @@ -55,6 +56,8 @@ if [ "$?" -eq 0 ] && [ -s "/tmp/Country.mmdb" ]; then else LOG_OUT "Updated Geoip Database No Change, Do Nothing..." fi +elif [ "$DOWNLOAD_RESULT" -eq 2 ]; then + LOG_OUT "Updated Geoip Database No Change, Do Nothing..." else LOG_OUT "Geoip Database Update Error, Please Try Again Later..." fi diff --git a/luci-app-openclash/root/usr/share/openclash/openclash_lgbm.sh b/luci-app-openclash/root/usr/share/openclash/openclash_lgbm.sh index 17f06fd9..0b6251a3 100755 --- a/luci-app-openclash/root/usr/share/openclash/openclash_lgbm.sh +++ b/luci-app-openclash/root/usr/share/openclash/openclash_lgbm.sh @@ -34,8 +34,9 @@ if [ -z "$LGBM_CUSTOM_URL" ]; then else DOWNLOAD_URL=$LGBM_CUSTOM_URL fi -DOWNLOAD_FILE_CURL "$DOWNLOAD_URL" "/tmp/Model.bin" -if [ "$?" -eq 0 ] && [ -s "/tmp/Model.bin" ]; then +DOWNLOAD_FILE_CURL "$DOWNLOAD_URL" "/tmp/Model.bin" "$lgbm_path" +DOWNLOAD_RESULT=$? +if [ "$DOWNLOAD_RESULT" -eq 0 ] && [ -s "/tmp/Model.bin" ]; then LOG_OUT "LightGBM Model Download Success, Check Updated..." cmp -s /tmp/Model.bin "$lgbm_path" if [ "$?" -ne "0" ]; then @@ -47,6 +48,8 @@ if [ "$?" -eq 0 ] && [ -s "/tmp/Model.bin" ]; then else LOG_OUT "Updated LightGBM Model No Change, Do Nothing..." fi +elif [ "$DOWNLOAD_RESULT" -eq 2 ]; then + LOG_OUT "Updated LightGBM Model No Change, Do Nothing..." else LOG_OUT "LightGBM Model Update Error, Please Try Again Later..." fi diff --git a/luci-app-openclash/root/usr/share/openclash/openclash_rule.sh b/luci-app-openclash/root/usr/share/openclash/openclash_rule.sh deleted file mode 100755 index a4cee1d1..00000000 --- a/luci-app-openclash/root/usr/share/openclash/openclash_rule.sh +++ /dev/null @@ -1,161 +0,0 @@ -#!/bin/bash -. /usr/share/openclash/openclash_ps.sh -. /lib/functions.sh -. /usr/share/openclash/ruby.sh -. /usr/share/openclash/log.sh -. /usr/share/openclash/openclash_curl.sh -. /usr/share/openclash/uci.sh - -set_lock() { - exec 877>"/tmp/lock/openclash_rule.lock" 2>/dev/null - flock -x 877 2>/dev/null -} - -del_lock() { - flock -u 877 2>/dev/null - rm -rf "/tmp/lock/openclash_rule.lock" 2>/dev/null -} - -set_lock -inc_job_counter - -yml_other_rules_dl() -{ - local section="$1" - local enabled config - config_get_bool "enabled" "$section" "enabled" "1" - config_get "config" "$section" "config" "" - - if [ "$enabled" = "0" ] || [ "$config" != "$2" ]; then - return - fi - - if [ -n "$rule_name" ]; then - LOG_OUT "Warrning: Multiple Other-Rules-Configurations Enabled, Ignore..." - return - fi - - config_get "rule_name" "$section" "rule_name" "" - - LOG_OUT "Start Downloading Third Party Rules in Use..." - if [ "$rule_name" = "lhie1" ]; then - if [ "$github_address_mod" != "0" ]; then - if [ "$github_address_mod" == "https://cdn.jsdelivr.net/" ] || [ "$github_address_mod" == "https://fastly.jsdelivr.net/" ] || [ "$github_address_mod" == "https://testingcf.jsdelivr.net/" ]; then - DOWNLOAD_URL="${github_address_mod}gh/dler-io/Rules@master/Clash/Rule.yaml" - else - DOWNLOAD_URL="${github_address_mod}https://raw.githubusercontent.com/dler-io/Rules/master/Clash/Rule.yaml" - fi - else - DOWNLOAD_URL="https://raw.githubusercontent.com/dler-io/Rules/master/Clash/Rule.yaml" - fi - fi - DOWNLOAD_FILE_CURL "$DOWNLOAD_URL" "/tmp/rules.yaml" - if [ "$?" -eq 0 ] && [ -s "/tmp/rules.yaml" ]; then - LOG_OUT "Download Successful, Start Preprocessing Rule File..." - sed -i '1i rules:' /tmp/rules.yaml - ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e " - begin - YAML.load_file('/tmp/rules.yaml'); - rescue Exception => e - YAML.LOG('Error: Unable To Parse Updated Rules File,【${rule_name}:' + e.message + '】'); - system 'rm -rf /tmp/rules.yaml 2>/dev/null'; - end - " 2>/dev/null >> $LOG_FILE - if [ $? -ne 0 ]; then - LOG_OUT "Error: Ruby Works Abnormally, Please Check The Ruby Library Depends!" - rm -rf /tmp/rules.yaml >/dev/null 2>&1 - SLOG_CLEAN - del_lock - exit 0 - elif [ ! -f "/tmp/rules.yaml" ]; then - LOG_OUT "Error:【$rule_name】Rule File Format Validation Failed, Please Try Again Later..." - rm -rf /tmp/rules.yaml >/dev/null 2>&1 - SLOG_CLEAN - del_lock - exit 0 - elif ! "$(ruby_read "/tmp/rules.yaml" ".key?('rules')")" ; then - LOG_OUT "Error: Updated Others Rules【$rule_name】Has No Rules Field, Update Exit..." - rm -rf /tmp/rules.yaml >/dev/null 2>&1 - SLOG_CLEAN - del_lock - exit 0 - #校验是否含有新策略组 - elif ! "$(ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e " - Value = YAML.load_file('/usr/share/openclash/res/${rule_name}.yaml'); - Value_1 = YAML.load_file('/tmp/rules.yaml'); - OLD_GROUP = Value['rules'].collect{|x| x.split(',')[2] or x.split(',')[1]}.map(&:strip).reject{|g| ['DIRECT', 'REJECT', 'REJECT-DROP', 'PASS'].include?(g)}.uniq.sort; - NEW_GROUP = Value_1['rules'].collect{|x| x.split(',')[2] or x.split(',')[1]}.map(&:strip).reject{|g| ['DIRECT', 'REJECT', 'REJECT-DROP', 'PASS'].include?(g)}.uniq.sort; - if OLD_GROUP.eql?(NEW_GROUP) then - puts true - else - puts false - end - ")" && [ -f "/usr/share/openclash/res/${rule_name}.yaml" ]; then - LOG_OUT "Error: Updated Others Rules【$rule_name】Has Incompatible Proxy-Group, Update Exit, Please Wait For OpenClash Update To Adapt..." - rm -rf /tmp/rules.yaml >/dev/null 2>&1 - SLOG_CLEAN - del_lock - exit 0 - fi - - #取出规则部分 - ruby_read "/tmp/rules.yaml" ".select {|x| 'rule-providers' == x or 'rules' == x }.to_yaml" > "$OTHER_RULE_FILE" - #合并 - cat "$OTHER_RULE_FILE" > "/tmp/rules.yaml" 2>/dev/null - rm -rf /tmp/other_rule* 2>/dev/null - - LOG_OUT "Check The Downloaded Rule File For Updates..." - cmp -s /usr/share/openclash/res/"$rule_name".yaml /tmp/rules.yaml - if [ "$?" -ne "0" ]; then - LOG_OUT "Detected that The Downloaded Rule File Has Been Updated, Starting To Replace..." - mv /tmp/rules.yaml /usr/share/openclash/res/"$rule_name".yaml >/dev/null 2>&1 - LOG_OUT "Other Rules【$rule_name】Update Successful!" - restart=1 - else - LOG_OUT "Updated Other Rules【$rule_name】No Change, Do Nothing!" - fi - else - LOG_OUT "Other Rules【$rule_name】Update Error, Please Try Again Later..." - fi -} - -LOG_FILE="/tmp/openclash.log" -RUlE_SOURCE=$(uci_get_config "rule_source") -github_address_mod=$(uci_get_config "github_address_mod" || echo 0) -restart=0 - -if [ "$RUlE_SOURCE" = "0" ]; then - LOG_OUT "Other Rules Not Enable, Update Stop!" -else - OTHER_RULE_FILE="/tmp/other_rule.yaml" - CONFIG_FILE=$(uci_get_config "config_path") - CONFIG_NAME=$(echo "$CONFIG_FILE" |awk -F '/' '{print $5}' 2>/dev/null) - - if [ -z "$CONFIG_FILE" ]; then - for file_name in /etc/openclash/config/* - do - if [ -f "$file_name" ]; then - CONFIG_FILE=$file_name - CONFIG_NAME=$(echo "$CONFIG_FILE" |awk -F '/' '{print $5}' 2>/dev/null) - break - fi - done - fi - - if [ -z "$CONFIG_NAME" ]; then - CONFIG_FILE="/etc/openclash/config/config.yaml" - CONFIG_NAME="config.yaml" - fi - - config_load "openclash" - config_foreach yml_other_rules_dl "other_rules" "$CONFIG_NAME" - if [ -z "$rule_name" ]; then - LOG_OUT "Get Other Rules Settings Faild, Update Stop!" - fi -fi - -rm -rf /tmp/rules.yaml >/dev/null 2>&1 - -SLOG_CLEAN -dec_job_counter_and_restart "$restart" -del_lock \ No newline at end of file diff --git a/luci-app-openclash/root/usr/share/openclash/openclash_streaming_unlock.lua b/luci-app-openclash/root/usr/share/openclash/openclash_streaming_unlock.lua index 9c9991ca..04b8fa82 100644 --- a/luci-app-openclash/root/usr/share/openclash/openclash_streaming_unlock.lua +++ b/luci-app-openclash/root/usr/share/openclash/openclash_streaming_unlock.lua @@ -27,13 +27,13 @@ local self_status = SYS.exec(string.format('ps -w |grep -v grep |grep -c "opencl local select_logic = FS.uci_get_config("config", "stream_auto_select_logic") or "urltest" if not type then - print(os.date("%Y-%m-%d %H:%M:%S").." ".."Error: Streaming Unlock Has No Parameter of Type, Exiting...") + print(os.date("%Y-%m-%d %H:%M:%S").." [Error] Streaming Unlock Has No Parameter of Type, Exiting...") os.exit(0) elseif router_self_proxy == 0 then - print(os.date("%Y-%m-%d %H:%M:%S").." ".."Error: Streaming Unlock Could not Work Because of Router-Self Proxy Disabled, Exiting...") + print(os.date("%Y-%m-%d %H:%M:%S").." [Error] Streaming Unlock Could not Work Because of Router-Self Proxy Disabled, Exiting...") os.exit(0) elseif tonumber(self_status) > 1 then - print(os.date("%Y-%m-%d %H:%M:%S").." ".."Error: Multiple Scripts Running, Exiting...") + print(os.date("%Y-%m-%d %H:%M:%S").." [Error] Multiple Scripts Running, Exiting...") os.exit(0) end @@ -148,9 +148,9 @@ function unlock_auto_select() --test now proxy region = proxy_unlock_test() if table_include(groups, now_name) then - now = os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..group_show.."】" + now = os.date("%Y-%m-%d %H:%M:%S").." [Info] "..type.." "..gorup_i18.."【"..group_show.."】" else - now = os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..group_show.." ➟ "..now_name.."】" + now = os.date("%Y-%m-%d %H:%M:%S").." [Info] "..type.." "..gorup_i18.."【"..group_show.." ➟ "..now_name.."】" end if status ~= 2 and status ~= 4 then region = proxy_unlock_test() @@ -244,7 +244,7 @@ function unlock_auto_select() end end if #(value.all) == 0 then - print(os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..value.name.."】"..no_nodes_filter) + print(os.date("%Y-%m-%d %H:%M:%S").." [Info] "..type.." "..gorup_i18.."【"..value.name.."】"..no_nodes_filter) break end --loop proxy test @@ -274,16 +274,16 @@ function unlock_auto_select() end end if #(proxies) == 0 then - print(os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..group_show.."】"..no_nodes_filter) + print(os.date("%Y-%m-%d %H:%M:%S").." [Info] "..type.." "..gorup_i18.."【"..group_show.."】"..no_nodes_filter) break end for p = 1, #(proxies) do proxy = proxies[p] if table_include(groups, proxy) then group_now = get_group_now(info, proxy) - now = os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..group_show.." ➟ "..group_now.."】" + now = os.date("%Y-%m-%d %H:%M:%S").." [Info] "..type.." "..gorup_i18.."【"..group_show.." ➟ "..group_now.."】" else - now = os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..group_show.." ➟ "..proxy.."】" + now = os.date("%Y-%m-%d %H:%M:%S").." [Info] "..type.." "..gorup_i18.."【"..group_show.." ➟ "..proxy.."】" end --skip tested proxy while true do @@ -303,7 +303,7 @@ function unlock_auto_select() table.insert(full_support_list, {value.all[i], group_name, proxy, region}) if not all_test then print(now..full_support.."【"..region.."】") - print(os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..value.name.."】"..select_success.."【"..proxy.."】"..area_i18.."【"..region.."】") + print(os.date("%Y-%m-%d %H:%M:%S").." [Info] "..type.." "..gorup_i18.."【"..value.name.."】"..select_success.."【"..proxy.."】"..area_i18.."【"..region.."】") else print(now..full_support.."【"..region.."】") end @@ -312,7 +312,7 @@ function unlock_auto_select() table.insert(full_support_list, {value.all[i], group_name, proxy}) if not all_test then print(now..full_support_no_area) - print(os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..value.name.."】"..select_success.."【"..proxy.."】") + print(os.date("%Y-%m-%d %H:%M:%S").." [Info] "..type.." "..gorup_i18.."【"..value.name.."】"..select_success.."【"..proxy.."】") else print(now..full_support_no_area) end @@ -372,16 +372,16 @@ function unlock_auto_select() end region = proxy_unlock_test() if table_include(groups, now_name) then - now = os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..group_show.."】" + now = os.date("%Y-%m-%d %H:%M:%S").." [Info] "..type.." "..gorup_i18.."【"..group_show.."】" else - now = os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..group_show.." ➟ "..now_name.."】" + now = os.date("%Y-%m-%d %H:%M:%S").." [Info] "..type.." "..gorup_i18.."【"..group_show.." ➟ "..now_name.."】" end if status == 2 then if region ~= "" then table.insert(full_support_list, {value.all[i], group_name, value.all[i], region}) if not all_test then print(now..full_support.."【"..region.."】") - print(os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..value.name.."】"..select_success.."【"..get_group_now(info, now_name).."】"..area_i18.."【"..region.."】") + print(os.date("%Y-%m-%d %H:%M:%S").." [Info] "..type.." "..gorup_i18.."【"..value.name.."】"..select_success.."【"..get_group_now(info, now_name).."】"..area_i18.."【"..region.."】") else print(now..full_support.."【"..region.."】") end @@ -390,7 +390,7 @@ function unlock_auto_select() table.insert(full_support_list, {value.all[i], group_name, value.all[i]}) if not all_test then print(now..full_support_no_area) - print(os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..value.name.."】"..select_success.."【"..get_group_now(info, now_name).."】") + print(os.date("%Y-%m-%d %H:%M:%S").." [Info] "..type.." "..gorup_i18.."【"..value.name.."】"..select_success.."【"..get_group_now(info, now_name).."】") else print(now..full_support_no_area) end @@ -469,24 +469,24 @@ function unlock_auto_select() group_now = group_now .. area_i18 .. "【"..v[4].."】" end if #full_support_list > 0 then - print(os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..value.name.."】"..select_all_full_support..group_now) + print(os.date("%Y-%m-%d %H:%M:%S").." [Info] "..type.." "..gorup_i18.."【"..value.name.."】"..select_all_full_support..group_now) elseif #no_old_region_unlock > 0 then if not all_test then - print(os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..value.name.."】"..select_success_no_old_region..group_now) + print(os.date("%Y-%m-%d %H:%M:%S").." [Info] "..type.." "..gorup_i18.."【"..value.name.."】"..select_success_no_old_region..group_now) else - print(os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..value.name.."】"..select_all_no_old_region..group_now) + print(os.date("%Y-%m-%d %H:%M:%S").." [Info] "..type.." "..gorup_i18.."【"..value.name.."】"..select_all_no_old_region..group_now) end elseif #other_region_unlock > 0 then if not all_test then - print(os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..value.name.."】"..select_faild_other_region..group_now) + print(os.date("%Y-%m-%d %H:%M:%S").." [Info] "..type.." "..gorup_i18.."【"..value.name.."】"..select_faild_other_region..group_now) else - print(os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..value.name.."】"..select_all_other_region..group_now) + print(os.date("%Y-%m-%d %H:%M:%S").." [Info] "..type.." "..gorup_i18.."【"..value.name.."】"..select_all_other_region..group_now) end else if not all_test then - print(os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..value.name.."】"..select_faild..group_now) + print(os.date("%Y-%m-%d %H:%M:%S").." [Info] "..type.." "..gorup_i18.."【"..value.name.."】"..select_faild..group_now) else - print(os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..value.name.."】"..select_all_faild..group_now) + print(os.date("%Y-%m-%d %H:%M:%S").." [Info] "..type.." "..gorup_i18.."【"..value.name.."】"..select_all_faild..group_now) end end close_connections() @@ -499,7 +499,7 @@ function unlock_auto_select() else group_now = value.name.." ➟ "..proxy_default end - print(os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..value.name.."】"..select_faild.."【"..group_now.."】") + print(os.date("%Y-%m-%d %H:%M:%S").." [Info] "..type.." "..gorup_i18.."【"..value.name.."】"..select_faild.."【"..group_now.."】") end end elseif #nodes_filter(get_group_now(info, value.name), info) ~= 0 then @@ -509,12 +509,12 @@ function unlock_auto_select() if not all_test then print(now..full_support.."【"..region.."】") end - print(os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..value.name.."】"..select_success.."【"..get_group_now(info, value.name).."】"..area_i18.."【"..region.."】") + print(os.date("%Y-%m-%d %H:%M:%S").." [Info] "..type.." "..gorup_i18.."【"..value.name.."】"..select_success.."【"..get_group_now(info, value.name).."】"..area_i18.."【"..region.."】") else if not all_test then print(now..full_support_no_area) end - print(os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..value.name.."】"..select_success.."【"..get_group_now(info, value.name).."】") + print(os.date("%Y-%m-%d %H:%M:%S").." [Info] "..type.." "..gorup_i18.."【"..value.name.."】"..select_success.."【"..get_group_now(info, value.name).."】") end if not all_test then break @@ -548,7 +548,7 @@ function unlock_auto_select() if status == 2 and not all_test then break end end if not group_match and not auto_get_group then - print(os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..key_group.."】"..no_group_find) + print(os.date("%Y-%m-%d %H:%M:%S").." [Info] "..type.." "..gorup_i18.."【"..key_group.."】"..no_group_find) end --write cache FS.writefile(unlock_cache_file, JSON.stringify(unlock_cache_info)) @@ -705,7 +705,7 @@ function table_sort_by_cache(t) end end if #tab > 0 then - print(os.date("%Y-%m-%d %H:%M:%S").." "..type.." Group:".."【"..group_match_name.."】".."Cached Compliant Nodes Number:".."【"..#(tab).."】"..", Cached Non-compliant Nodes Number:".."【"..#(tab_b).."】"..", Prioritize Testing With Cached Compliant Nodes...") + print(os.date("%Y-%m-%d %H:%M:%S").." [Info] "..type.." Group:".."【"..group_match_name.."】".."Cached Compliant Nodes Number:".."【"..#(tab).."】"..", Cached Non-compliant Nodes Number:".."【"..#(tab_b).."】"..", Prioritize Testing With Cached Compliant Nodes...") end for k,v in pairs(tab_b) do table.insert(tab, v) end return tab @@ -1582,7 +1582,7 @@ function network_test() return end end - print(os.date("%Y-%m-%d %H:%M:%S").." Error: Network Anomaly, Suspend Unlock Detection...") + print(os.date("%Y-%m-%d %H:%M:%S").." [Error] Network Anomaly, Suspend Unlock Detection...") end network_test() \ No newline at end of file diff --git a/luci-app-openclash/root/usr/share/openclash/openclash_update.sh b/luci-app-openclash/root/usr/share/openclash/openclash_update.sh index a144f055..67976c5a 100755 --- a/luci-app-openclash/root/usr/share/openclash/openclash_update.sh +++ b/luci-app-openclash/root/usr/share/openclash/openclash_update.sh @@ -19,15 +19,15 @@ inc_job_counter restart=0 if [ -n "$1" ] && [ "$1" != "one_key_update" ]; then - [ ! -f "/tmp/openclash_last_version" ] && /usr/share/openclash/openclash_version.sh "$1" 2>/dev/null + /usr/share/openclash/openclash_version.sh "$1" 2>/dev/null elif [ -n "$2" ]; then - [ ! -f "/tmp/openclash_last_version" ] && /usr/share/openclash/openclash_version.sh "$2" 2>/dev/null + /usr/share/openclash/openclash_version.sh "$2" 2>/dev/null else - [ ! -f "/tmp/openclash_last_version" ] && /usr/share/openclash/openclash_version.sh 2>/dev/null + /usr/share/openclash/openclash_version.sh 2>/dev/null fi if [ ! -f "/tmp/openclash_last_version" ]; then - LOG_OUT "Error: Failed to get version information, please try again later..." + LOG_ERROR "Failed to get version information, please try again later..." SLOG_CLEAN dec_job_counter_and_restart "$restart" del_lock @@ -66,7 +66,7 @@ github_address_mod=$(uci_get_config "github_address_mod" || echo 0) #一键更新 if [ "$1" = "one_key_update" ]; then if [ "$github_address_mod" = "0" ] && [ -z "$2" ]; then - LOG_OUT "Tip: If the download fails, try setting the CDN in Overwrite Settings - General Settings - Github Address Modify Options" + LOG_TIP "If the download fails, try setting the CDN in Overwrite Settings - General Settings - Github Address Modify Options" fi if [ -n "$2" ]; then /usr/share/openclash/openclash_core.sh "Meta" "$1" "$2" >/dev/null 2>&1 & @@ -79,12 +79,12 @@ if [ "$1" = "one_key_update" ]; then wait else if [ "$github_address_mod" = "0" ]; then - LOG_OUT "Tip: If the download fails, try setting the CDN in Overwrite Settings - General Settings - Github Address Modify Options" + LOG_TIP "If the download fails, try setting the CDN in Overwrite Settings - General Settings - Github Address Modify Options" fi fi if [ -n "$OP_CV" ] && [ -n "$OP_LV" ] && version_compare "$OP_CV" "$OP_LV" && [ -f "$LAST_OPVER" ]; then - LOG_OUT "Tip: Start downloading【OpenClash - v$LAST_VER】..." + LOG_TIP "Start downloading【OpenClash - v$LAST_VER】..." if [ "$github_address_mod" != "0" ]; then if [ "$github_address_mod" == "https://cdn.jsdelivr.net/" ] || [ "$github_address_mod" == "https://fastly.jsdelivr.net/" ] || [ "$github_address_mod" == "https://testingcf.jsdelivr.net/" ]; then if [ -x "/bin/opkg" ]; then @@ -120,16 +120,16 @@ if [ -n "$OP_CV" ] && [ -n "$OP_LV" ] && version_compare "$OP_CV" "$OP_LV" && [ retry_count=$((retry_count + 1)) if [ "$pkg_update_success" = "false" ]; then - download_result=0 + DOWNLOAD_RESULT=0 else rm -rf "$DOWNLOAD_PATH" >/dev/null 2>&1 - LOG_OUT "Tip:【$retry_count/$max_retries】【OpenClash - v$LAST_VER】Downloading..." - SHOW_DOWNLOAD_PROGRESS=1 DOWNLOAD_FILE_CURL "$DOWNLOAD_URL" "$DOWNLOAD_PATH" - download_result=$? + LOG_TIP "【$retry_count/$max_retries】【OpenClash - v$LAST_VER】Downloading..." + SHOW_DOWNLOAD_PROGRESS=1 DOWNLOAD_FILE_CURL "$DOWNLOAD_URL" "$DOWNLOAD_PATH" "$DOWNLOAD_PATH" + DOWNLOAD_RESULT=$? fi - if [ "$download_result" -eq 0 ]; then - LOG_OUT "Tip:【$retry_count/$max_retries】【OpenClash - v$LAST_VER】Download successful, start pre update test..." + if [ "$DOWNLOAD_RESULT" -ne 1 ]; then + LOG_TIP "【$retry_count/$max_retries】【OpenClash - v$LAST_VER】Download successful, start pre update test..." pre_test_success=false pkg_update_success=true @@ -162,18 +162,18 @@ if [ -n "$OP_CV" ] && [ -n "$OP_LV" ] && version_compare "$OP_CV" "$OP_LV" && [ fi if [ "$pre_test_success" = "true" ]; then - LOG_OUT "Tip:【$retry_count/$max_retries】【OpenClash - v$LAST_VER】Pre update test passed, ready to update and please do not refresh the page and other operations..." + LOG_TIP "【$retry_count/$max_retries】【OpenClash - v$LAST_VER】Pre update test passed, ready to update and please do not refresh the page and other operations..." break else if [ "$retry_count" -lt "$max_retries" ]; then - LOG_OUT "Error:【$retry_count/$max_retries】【OpenClash - v$LAST_VER】Pre update test failed..." + LOG_ERROR "【$retry_count/$max_retries】【OpenClash - v$LAST_VER】Pre update test failed..." sleep 2 continue else if [ -x "/bin/opkg" ]; then - LOG_OUT "Error:【OpenClash - v$LAST_VER】Pre update test failed after 3 attempts, the file is saved in /tmp/openclash.ipk, please try to update manually with【opkg install /tmp/openclash.ipk】" + LOG_ERROR "【OpenClash - v$LAST_VER】Pre update test failed after 3 attempts, the file is saved in /tmp/openclash.ipk, please try to update manually with【opkg install /tmp/openclash.ipk】" elif [ -x "/usr/bin/apk" ]; then - LOG_OUT "Error:【OpenClash - v$LAST_VER】Pre update test failed after 3 attempts, the file is saved in /tmp/openclash.apk, please try to update manually with【apk add -q --force-overwrite --clean-protected --allow-untrusted /tmp/openclash.apk】" + LOG_ERROR "【OpenClash - v$LAST_VER】Pre update test failed after 3 attempts, the file is saved in /tmp/openclash.apk, please try to update manually with【apk add -q --force-overwrite --clean-protected --allow-untrusted /tmp/openclash.apk】" fi SLOG_CLEAN @@ -184,11 +184,11 @@ if [ -n "$OP_CV" ] && [ -n "$OP_LV" ] && version_compare "$OP_CV" "$OP_LV" && [ fi else if [ "$retry_count" -lt "$max_retries" ]; then - LOG_OUT "Error:【$retry_count/$max_retries】【OpenClash - v$LAST_VER】Download failed..." + LOG_ERROR "【$retry_count/$max_retries】【OpenClash - v$LAST_VER】Download failed..." sleep 2 continue else - LOG_OUT "Error:【OpenClash - v$LAST_VER】Download Failed after 3 attempts, please check the network or try again later!" + LOG_ERROR "【OpenClash - v$LAST_VER】Download Failed after 3 attempts, please check the network or try again later!" rm -rf /tmp/openclash.ipk >/dev/null 2>&1 rm -rf /tmp/openclash.apk >/dev/null 2>&1 SLOG_CLEAN @@ -224,12 +224,20 @@ fi trap 'del_update_lock; exit' INT TERM EXIT -LOG_OUT() +LOG_ERROR() { - if [ -n "${1}" ]; then - echo -e "${1}" > $START_LOG - echo -e "${LOGTIME} ${1}" >> $LOG_FILE - fi + if [ -n "${1}" ]; then + echo -e "${1}" > $START_LOG + echo -e "${LOGTIME} [error] ${1}" >> $LOG_FILE + fi +} + +LOG_TIP() +{ + if [ -n "${1}" ]; then + echo -e "${1}" > $START_LOG + echo -e "${LOGTIME} [tip] ${1}" >> $LOG_FILE + fi } SLOG_CLEAN() @@ -297,16 +305,13 @@ install_missing_packages() { fi } -uci -q set openclash.config.enable=0 -uci -q commit openclash - install_retry_count=0 max_install_retries=3 install_success=false while [ $install_retry_count -lt $max_install_retries ]; do install_retry_count=$((install_retry_count + 1)) - LOG_OUT "Tip:【$install_retry_count/$max_install_retries】Installing the new version, please do not refresh the page or do other operations..." + LOG_TIP "【$install_retry_count/$max_install_retries】Installing the new version, please do not refresh the page or do other operations..." packages_to_check="luci-compat kmod-inet-diag kmod-nft-tproxy kmod-ipt-nat iptables-mod-tproxy iptables-mod-extra ipset" installed_before="" @@ -333,7 +338,7 @@ while [ $install_retry_count -lt $max_install_retries ]; do install_missing_packages "$installed_before" break else - LOG_OUT "Error:【$install_retry_count/$max_install_retries】Installation failed..." + LOG_ERROR "【$install_retry_count/$max_install_retries】Installation failed..." if [ $install_retry_count -lt $max_install_retries ]; then sleep 3 fi @@ -346,15 +351,11 @@ if [ "$install_success" = true ]; then elif [ -x "/usr/bin/apk" ]; then rm -rf /tmp/openclash.apk >/dev/null 2>&1 fi - LOG_OUT "Tip: OpenClash update successful, about to restart!" - uci -q set openclash.config.enable=1 - uci -q commit openclash - /etc/init.d/openclash restart 2>/dev/null else if [ -x "/bin/opkg" ]; then - LOG_OUT "Error: OpenClash update failed after 3 attempts, the file is saved in /tmp/openclash.ipk, please try to update manually with【opkg install /tmp/openclash.ipk】" + LOG_ERROR "OpenClash update failed after 3 attempts, the file is saved in /tmp/openclash.ipk, please try to update manually with【opkg install /tmp/openclash.ipk】" elif [ -x "/usr/bin/apk" ]; then - LOG_OUT "Error: OpenClash update failed after 3 attempts, the file is saved in /tmp/openclash.apk, please try to update manually with【apk add -q --force-overwrite --clean-protected --allow-untrusted /tmp/openclash.apk】" + LOG_ERROR "OpenClash update failed after 3 attempts, the file is saved in /tmp/openclash.apk, please try to update manually with【apk add -q --force-overwrite --clean-protected --allow-untrusted /tmp/openclash.apk】" fi SLOG_CLEAN fi @@ -364,7 +365,7 @@ EOF chmod 4755 /tmp/openclash_update.sh if [ ! -f "/tmp/openclash_update.sh" ] || [ ! -s "/tmp/openclash_update.sh" ] || [ ! -x "/tmp/openclash_update.sh" ]; then - LOG_OUT "Error: Failed to create update script!" + LOG_ERROR "Failed to create update script!" rm -rf /tmp/openclash_update.sh del_lock exit 1 @@ -376,7 +377,7 @@ EOF while [ $retry_count -lt $max_retries ]; do retry_count=$((retry_count + 1)) - LOG_OUT "Tip:【$retry_count/$max_retries】Attempting to start update service..." + LOG_TIP "【$retry_count/$max_retries】Attempting to start update service..." ubus call service add '{"name":"openclash_update","instances":{"update":{"command":["/tmp/openclash_update.sh"],"stdout":true,"stderr":true,"env":{"LAST_VER":"'"$LAST_VER"'"}}}}' >/dev/null 2>&1 @@ -387,22 +388,22 @@ EOF break else if [ $retry_count -lt $max_retries ]; then - LOG_OUT "Error:【$retry_count/$max_retries】Service start failed, retrying in 2 seconds..." + LOG_ERROR "【$retry_count/$max_retries】Service start failed, retrying in 2 seconds..." sleep 2 fi fi done if [ "$service_started" = false ]; then - LOG_OUT "Error: Failed to start update service after 3 attempts, please check and try again later..." + LOG_ERROR "Failed to start update service after 3 attempts, please check and try again later..." fi (sleep 15; rm -f /tmp/openclash_update.sh) & else if [ ! -f "$LAST_OPVER" ] || [ -z "$OP_CV" ] || [ -z "$OP_LV" ]; then - LOG_OUT "Error: Failed to get version information, please try again later..." + LOG_ERROR "Failed to get version information, please try again later..." else - LOG_OUT "Tip: OpenClash has not been updated, stop continuing!" + LOG_TIP "OpenClash has not been updated, stop continuing!" fi SLOG_CLEAN dec_job_counter_and_restart "$restart" diff --git a/luci-app-openclash/root/usr/share/openclash/openclash_version.sh b/luci-app-openclash/root/usr/share/openclash/openclash_version.sh index 7508c874..e78d44fd 100755 --- a/luci-app-openclash/root/usr/share/openclash/openclash_version.sh +++ b/luci-app-openclash/root/usr/share/openclash/openclash_version.sh @@ -32,8 +32,6 @@ version_compare() { return 1 } -TIME=$(date "+%Y-%m-%d-%H") -CHTIME=$(date "+%Y-%m-%d-%H" -r "/tmp/openclash_last_version" 2>/dev/null) DOWNLOAD_FILE="/tmp/openclash_last_version" RELEASE_BRANCH=$(uci_get_config "release_branch" || echo "master") if [ -x "/bin/opkg" ]; then @@ -47,24 +45,23 @@ if [ -n "$1" ]; then github_address_mod="$1" fi -if [ "$TIME" != "$CHTIME" ]; then - if [ "$github_address_mod" != "0" ]; then - if [ "$github_address_mod" == "https://cdn.jsdelivr.net/" ] || [ "$github_address_mod" == "https://fastly.jsdelivr.net/" ] || [ "$github_address_mod" == "https://testingcf.jsdelivr.net/" ]; then - DOWNLOAD_URL="${github_address_mod}gh/vernesong/OpenClash@package/${RELEASE_BRANCH}/version" - else - DOWNLOAD_URL="${github_address_mod}https://raw.githubusercontent.com/vernesong/OpenClash/package/${RELEASE_BRANCH}/version" - fi +if [ "$github_address_mod" != "0" ]; then + if [ "$github_address_mod" == "https://cdn.jsdelivr.net/" ] || [ "$github_address_mod" == "https://fastly.jsdelivr.net/" ] || [ "$github_address_mod" == "https://testingcf.jsdelivr.net/" ]; then + DOWNLOAD_URL="${github_address_mod}gh/vernesong/OpenClash@package/${RELEASE_BRANCH}/version" else - DOWNLOAD_URL="https://raw.githubusercontent.com/vernesong/OpenClash/package/${RELEASE_BRANCH}/version" + DOWNLOAD_URL="${github_address_mod}https://raw.githubusercontent.com/vernesong/OpenClash/package/${RELEASE_BRANCH}/version" fi +else + DOWNLOAD_URL="https://raw.githubusercontent.com/vernesong/OpenClash/package/${RELEASE_BRANCH}/version" +fi - DOWNLOAD_FILE_CURL "$DOWNLOAD_URL" "$DOWNLOAD_FILE" +DOWNLOAD_FILE_CURL "$DOWNLOAD_URL" "$DOWNLOAD_FILE" "$DOWNLOAD_FILE" - if [ "$?" -eq 0 ]; then - OP_LV=$(sed -n 1p $DOWNLOAD_FILE 2>/dev/null |awk -F 'v' '{print $2}' |awk -F '.' '{print $2$3}' 2>/dev/null) - if [ -n "$OP_CV" ] && [ -n "$OP_LV" ] && version_compare "$OP_CV" "$OP_LV" && [ -f "$DOWNLOAD_FILE" ]; then - sed -i '/^https:/,$d' $DOWNLOAD_FILE - fi +if [ "$?" -eq 0 ]; then + OP_LV=$(sed -n 1p $DOWNLOAD_FILE 2>/dev/null |awk -F 'v' '{print $2}' |awk -F '.' '{print $2$3}' 2>/dev/null) + if [ -n "$OP_CV" ] && [ -n "$OP_LV" ] && version_compare "$OP_CV" "$OP_LV" && [ -f "$DOWNLOAD_FILE" ]; then + sed -i '/^https:/,$d' $DOWNLOAD_FILE fi fi + del_lock \ No newline at end of file diff --git a/luci-app-openclash/root/usr/share/openclash/openclash_watchdog.sh b/luci-app-openclash/root/usr/share/openclash/openclash_watchdog.sh index 5fc9122f..ff226835 100755 --- a/luci-app-openclash/root/usr/share/openclash/openclash_watchdog.sh +++ b/luci-app-openclash/root/usr/share/openclash/openclash_watchdog.sh @@ -30,7 +30,7 @@ ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e " begin Value = YAML.load_file('$CONFIG_FILE'); rescue Exception => e - YAML.LOG('Error: Load File Failed,【' + e.message + '】'); + YAML.LOG_ERROR('Load File Failed,【' + e.message + '】'); exit; end; @@ -69,7 +69,7 @@ begin sub_servers = IO.popen(syscall).read.split(/\n+/) servers_to_process.concat(sub_servers) if sub_servers rescue Exception => e - YAML.LOG('Warning: Failed to parse subscription file with Lua helper ' + path + ': ' + e.message) + YAML.LOG_WARN('Failed to parse subscription file with Lua helper ' + path + ': ' + e.message) end end end @@ -149,7 +149,7 @@ begin system(set_commands.join('; ')) if not set_commands.empty? end rescue Exception => e - YAML.LOG('Error: Set Proxies Address Skip Failed,【' + e.message + '】'); + YAML.LOG_ERROR('Set Proxies Address Skip Failed,【' + e.message + '】'); end" 2>/dev/null >> $LOG_FILE } @@ -193,10 +193,10 @@ fi LOGSIZE=`ls -l /tmp/openclash.log |awk '{print int($5/1024)}'` if [ "$LOGSIZE" -gt "$log_size" ]; then : > /tmp/openclash.log - LOG_OUT "Watchdog: Log Size Limit, Clean Up All Log Records..." + LOG_WATCHDOG "Log Size Limit, Clean Up All Log Records..." fi -## 转发顺序 +## 防火墙检查 if [ "$FIREWALL_RELOAD" -le "$MAX_FIREWALL_RELOAD" ]; then if [ -z "$FW4" ]; then nat_last_line=$(iptables -t nat -nL PREROUTING --line-number 2>/dev/null | awk 'END {print $1}') @@ -211,7 +211,13 @@ fi fi if ([ "$nat_last_line" != "$nat_op_line" ] && [ -n "$nat_op_line" ]) || ([ "$man_last_line" != "$man_op_line" ] && [ -n "$man_op_line" ]); then - LOG_OUT "Watchdog: Setting Firewall For Rules Order..." + ## 转发顺序检查 + LOG_WATCHDOG "Setting Firewall For Rules Order..." + /etc/init.d/openclash reload "firewall" + let FIREWALL_RELOAD++ + elif [ -n "$(ip tuntap list |grep utun)" ] && [ -z "$(ip route list table 354)" ]; then + ## 路由表检查 + LOG_WATCHDOG "Setting Firewall For IP Rules Table Recreate..." /etc/init.d/openclash reload "firewall" let FIREWALL_RELOAD++ else @@ -339,7 +345,7 @@ fi ## DNS转发劫持 if [ "$enable_redirect_dns" = "1" ]; then if [ -z "$(uci -q get dhcp.@dnsmasq[0].server |grep "$dns_port")" ] || [ ! -z "$(uci -q get dhcp.@dnsmasq[0].server |awk -F ' ' '{print $2}')" ]; then - LOG_OUT "Watchdog: Force Reset DNS Hijack..." + LOG_WATCHDOG "Force Reset DNS Hijack..." uci -q del dhcp.@dnsmasq[-1].server uci -q add_list dhcp.@dnsmasq[0].server=127.0.0.1#"$dns_port" uci -q delete dhcp.@dnsmasq[0].resolvfile @@ -361,67 +367,64 @@ fi CFG_UPDATE_INT=$(expr "$CFG_UPDATE_INT" + 1) fi -##Dler Cloud Checkin - /usr/share/openclash/openclash_dler_checkin.lua >/dev/null 2>&1 - ##STREAMING_UNLOCK_CHECK if [ "$stream_auto_select" -eq 1 ] && [ "$router_self_proxy" -eq 1 ]; then [ "$stream_auto_select_interval" -ne "$stream_auto_select_interval_now" ] && STREAM_AUTO_SELECT=1 && stream_auto_select_interval="$stream_auto_select_interval_now" if [ "$STREAM_AUTO_SELECT" -ne 0 ]; then if [ "$(expr "$STREAM_AUTO_SELECT" % "$stream_auto_select_interval_now")" -eq 0 ] || [ "$STREAM_AUTO_SELECT" -eq 1 ]; then if [ "$stream_auto_select_netflix" -eq 1 ]; then - LOG_OUT "Tip: Start Auto Select Proxy For Netflix Unlock..." + LOG_TIP "Start Auto Select Proxy For Netflix Unlock..." /usr/share/openclash/openclash_streaming_unlock.lua "Netflix" >> $LOG_FILE fi if [ "$stream_auto_select_disney" -eq 1 ]; then - LOG_OUT "Tip: Start Auto Select Proxy For Disney Plus Unlock..." + LOG_TIP "Start Auto Select Proxy For Disney Plus Unlock..." /usr/share/openclash/openclash_streaming_unlock.lua "Disney Plus" >> $LOG_FILE fi if [ "$stream_auto_select_google_not_cn" -eq 1 ]; then - LOG_OUT "Tip: Start Auto Select Proxy For Google Not CN Unlock..." + LOG_TIP "Start Auto Select Proxy For Google Not CN Unlock..." /usr/share/openclash/openclash_streaming_unlock.lua "Google" >> $LOG_FILE fi if [ "$stream_auto_select_ytb" -eq 1 ]; then - LOG_OUT "Tip: Start Auto Select Proxy For YouTube Premium Unlock..." + LOG_TIP "Start Auto Select Proxy For YouTube Premium Unlock..." /usr/share/openclash/openclash_streaming_unlock.lua "YouTube Premium" >> $LOG_FILE fi if [ "$stream_auto_select_prime_video" -eq 1 ]; then - LOG_OUT "Tip: Start Auto Select Proxy For Amazon Prime Video Unlock..." + LOG_TIP "Start Auto Select Proxy For Amazon Prime Video Unlock..." /usr/share/openclash/openclash_streaming_unlock.lua "Amazon Prime Video" >> $LOG_FILE fi if [ "$stream_auto_select_hbo_max" -eq 1 ]; then - LOG_OUT "Tip: Start Auto Select Proxy For HBO Max Unlock..." + LOG_TIP "Start Auto Select Proxy For HBO Max Unlock..." /usr/share/openclash/openclash_streaming_unlock.lua "HBO Max" >> $LOG_FILE fi if [ "$stream_auto_select_tvb_anywhere" -eq 1 ]; then - LOG_OUT "Tip: Start Auto Select Proxy For TVB Anywhere+ Unlock..." + LOG_TIP "Start Auto Select Proxy For TVB Anywhere+ Unlock..." /usr/share/openclash/openclash_streaming_unlock.lua "TVB Anywhere+" >> $LOG_FILE fi if [ "$stream_auto_select_dazn" -eq 1 ]; then - LOG_OUT "Tip: Start Auto Select Proxy For DAZN Unlock..." + LOG_TIP "Start Auto Select Proxy For DAZN Unlock..." /usr/share/openclash/openclash_streaming_unlock.lua "DAZN" >> $LOG_FILE fi if [ "$stream_auto_select_paramount_plus" -eq 1 ]; then - LOG_OUT "Tip: Start Auto Select Proxy For Paramount Plus Unlock..." + LOG_TIP "Start Auto Select Proxy For Paramount Plus Unlock..." /usr/share/openclash/openclash_streaming_unlock.lua "Paramount Plus" >> $LOG_FILE fi if [ "$stream_auto_select_discovery_plus" -eq 1 ]; then - LOG_OUT "Tip: Start Auto Select Proxy For Discovery Plus Unlock..." + LOG_TIP "Start Auto Select Proxy For Discovery Plus Unlock..." /usr/share/openclash/openclash_streaming_unlock.lua "Discovery Plus" >> $LOG_FILE fi if [ "$stream_auto_select_bilibili" -eq 1 ]; then - LOG_OUT "Tip: Start Auto Select Proxy For Bilibili Unlock..." + LOG_TIP "Start Auto Select Proxy For Bilibili Unlock..." /usr/share/openclash/openclash_streaming_unlock.lua "Bilibili" >> $LOG_FILE fi if [ "$stream_auto_select_openai" -eq 1 ]; then - LOG_OUT "Tip: Start Auto Select Proxy For OpenAI Unlock..." + LOG_TIP "Start Auto Select Proxy For OpenAI Unlock..." /usr/share/openclash/openclash_streaming_unlock.lua "OpenAI" >> $LOG_FILE fi fi fi STREAM_AUTO_SELECT=$(expr "$STREAM_AUTO_SELECT" + 1) elif [ "$router_self_proxy" != "1" ] && [ "$stream_auto_select" -eq 1 ]; then - LOG_OUT "Error: Streaming Unlock Could not Work Because of Router-Self Proxy Disabled, Exiting..." + LOG_ERROR "Streaming Unlock Could not Work Because of Router-Self Proxy Disabled, Exiting..." fi SLOG_CLEAN diff --git a/luci-app-openclash/root/usr/share/openclash/res/default.yaml b/luci-app-openclash/root/usr/share/openclash/res/default.yaml index 57010d46..644b81ff 100644 --- a/luci-app-openclash/root/usr/share/openclash/res/default.yaml +++ b/luci-app-openclash/root/usr/share/openclash/res/default.yaml @@ -51,6 +51,16 @@ ipv6: true # 开启 IPv6 总开关,关闭阻断所有 IPv6 链接和屏蔽 DNS tls: certificate: string # 证书 PEM 格式,或者 证书的路径 private-key: string # 证书对应的私钥 PEM 格式,或者私钥路径 + # 下面两项为mTLS配置项,如果client-auth-type设置为 "verify-if-given" 或 "require-and-verify" 则client-auth-cert必须不为空 + # client-auth-type: "" # 可选值:""、"request"、"require-any"、"verify-if-given"、"require-and-verify" + # client-auth-cert: string # 证书 PEM 格式,或者 证书的路径 + # 如果填写则开启ech(可由 mihomo generate ech-keypair <明文域名> 生成) + # ech-key: | + # -----BEGIN ECH KEYS----- + # ACATwY30o/RKgD6hgeQxwrSiApLaCgU+HKh7B6SUrAHaDwBD/g0APwAAIAAgHjzK + # madSJjYQIf9o1N5GXjkW4DEEeb17qMxHdwMdNnwADAABAAEAAQACAAEAAwAIdGVz + # dC5jb20AAA== + # -----END ECH KEYS----- custom-certifactes: - | -----BEGIN CERTIFICATE----- @@ -64,7 +74,7 @@ external-controller-tls: 0.0.0.0:9443 # RESTful API HTTPS 监听地址,需要 # RESTful API CORS标头配置 external-controller-cors: allow-origins: - - * + - "*" allow-private-network: true # RESTful API Unix socket 监听地址( windows版本大于17063也可以使用,即大于等于1803/RS4版本即可使用 ) @@ -81,6 +91,7 @@ external-controller-pipe: \\.\pipe\mihomo # 配置 WEB UI 目录,使用 http://{{external-controller}}/ui 访问 external-ui: /path/to/ui/folder/ external-ui-name: xd +# 目前支持下载zip,tgz格式的压缩包 external-ui-url: "https://github.com/MetaCubeX/metacubexd/archive/refs/heads/gh-pages.zip" # 在RESTful API端口上开启DOH服务器 @@ -89,11 +100,6 @@ external-doh-server: /dns-query # interface-name: en0 # 设置出口网卡 -# 全局 TLS 指纹,优先低于 proxy 内的 client-fingerprint -# 可选: "chrome","firefox","safari","ios","random","none" options. -# Utls is currently support TLS transport in TCP/grpc/WS/HTTP for VLESS/Vmess and trojan. -global-client-fingerprint: chrome - # TCP keep alive interval # disable-keep-alive: false #目前在android端强制为true # keep-alive-idle: 15 @@ -137,6 +143,7 @@ tun: # gso-max-size: 65536 # 通用分段卸载包的最大大小 auto-redirect: false # 自动配置 iptables 以重定向 TCP 连接。仅支持 Linux。带有 auto-redirect 的 auto-route 现在可以在路由器上按预期工作,无需干预。 # strict-route: true # 将所有连接路由到 tun 来防止泄漏,但你的设备将无法其他设备被访问 + # disable-icmp-forwarding: true # 禁用 ICMP 转发,防止某些情况下的 ICMP 环回问题,ping 将不会显示真实的延迟 route-address-set: # 将指定规则集中的目标 IP CIDR 规则添加到防火墙, 不匹配的流量将绕过路由, 仅支持 Linux,且需要 nftables,`auto-route` 和 `auto-redirect` 已启用。 - ruleset-1 - ruleset-2 @@ -252,6 +259,7 @@ dns: enhanced-mode: fake-ip # or redir-host fake-ip-range: 198.18.0.1/16 # fake-ip 池设置 + # fake-ip-range6: fdfe:dcba:9876::1/64 # fake-ip6 池设置 # 配置不使用 fake-ip 的域名 fake-ip-filter: @@ -262,9 +270,23 @@ dns: - rule-set:fakeip-filter # fakeip-filter 为 geosite 中名为 fakeip-filter 的分类(需要自行保证该分类存在) - geosite:fakeip-filter + + # 当 fake-ip-filter-mode: rule 时开启规则模式 + # fake-ip 与路由 rules 匹配逻辑一致(自上而下),语法也一致,支持GEOSITE、RuleSet、DOMAIN*、MATCH + - RULE-SET,reject-domain,fake-ip # 自定义 RuleSet behavior 必须为 domain/classical,当为 classical 时仅会生效域名类规则 + - RULE-SET,proxy-domain,fake-ip + - GEOSITE,gfw,fake-ip + - DOMAIN,www.baidu.com,real-ip + - DOMAIN-SUFFIX,qq.com,real-ip + - DOMAIN-SUFFIX,jd.com,fake-ip + - MATCH,fake-ip # 最后 fake-ip or real-ip + # 配置fake-ip-filter的匹配模式,默认为blacklist,即如果匹配成功不返回fake-ip # 可设置为whitelist,即只有匹配成功才返回fake-ip + # 也可配置为rule,规则模式语法见fake-ip-filter说明 fake-ip-filter-mode: blacklist + # 配置fakeip查询返回的TTL,非必要情况下请勿修改 + fake-ip-ttl: 1 # use-hosts: true # 查询 hosts @@ -299,8 +321,10 @@ dns: # 专用于节点域名解析的 DNS 服务器,非必要配置项,如果不填则遵循nameserver-policy、nameserver和fallback的配置 # proxy-server-nameserver: - # - https://dns.google/dns-query - # - tls://one.one.one.one + # - https://doh.pub/dns-query + # - tls://223.5.5.5:853 + # proxy-server-nameserver-policy: # 格式同nameserver-policy,仅用于节点域名解析,当且仅当proxy-server-nameserver不为空时生效 + # 'www.yournode.com': '114.114.114.114' # 专用于direct出口域名解析的 DNS 服务器,非必要配置项,如果不填则遵循nameserver-policy、nameserver和fallback的配置 # direct-nameserver: @@ -343,7 +367,10 @@ proxies: # socks5 # username: username # password: password # tls: true - # fingerprint: xxxx + # fingerprint: xxxx # 配置指纹将实现 SSL Pining 效果, 可使用 openssl x509 -noout -fingerprint -sha256 -inform pem -in yourcert.pem 获取 + # 下面两项如果填写则开启 mTLS(需要同时填写) + # certificate: ./client.crt # 证书 PEM 格式,或者 证书的路径 + # private-key: ./client.key # 证书对应的私钥 PEM 格式,或者私钥路径 # skip-cert-verify: true # udp: true # ip-version: ipv6 @@ -358,7 +385,10 @@ proxies: # socks5 # tls: true # https # skip-cert-verify: true # sni: custom.com - # fingerprint: xxxx # 同 experimental.fingerprints 使用 sha256 指纹,配置协议独立的指纹,将忽略 experimental.fingerprints + # fingerprint: xxxx # 配置指纹将实现 SSL Pining 效果, 可使用 openssl x509 -noout -fingerprint -sha256 -inform pem -in yourcert.pem 获取 + # 下面两项如果填写则开启 mTLS(需要同时填写) + # certificate: ./client.crt # 证书 PEM 格式,或者 证书的路径 + # private-key: ./client.key # 证书对应的私钥 PEM 格式,或者私钥路径 # ip-version: dual # Snell @@ -426,9 +456,15 @@ proxies: # socks5 plugin-opts: mode: websocket # no QUIC now # tls: true # wss - # 可使用 openssl x509 -noout -fingerprint -sha256 -inform pem -in yourcert.pem 获取 - # 配置指纹将实现 SSL Pining 效果 - # fingerprint: xxxx + # fingerprint: xxxx # 配置指纹将实现 SSL Pining 效果, 可使用 openssl x509 -noout -fingerprint -sha256 -inform pem -in yourcert.pem 获取 + # 下面两项如果填写则开启 mTLS(需要同时填写) + # certificate: ./client.crt # 证书 PEM 格式,或者 证书的路径 + # private-key: ./client.key # 证书对应的私钥 PEM 格式,或者私钥路径 + # ech-opts: + # enable: true # 必须手动开启 + # # 如果config为空则通过dns解析,不为空则通过该值指定,格式为经过base64编码的ech参数(dig +short TYPE65 tls-ech.dev) + # config: AEn+DQBFKwAgACABWIHUGj4u+PIggYXcR5JF0gYk3dCRioBW8uJq9H4mKAAIAAEAAQABAANAEnB1YmxpYy50bHMtZWNoLmRldgAA + # # query-server-name: xxx.com # 可选项,不为空时用于指定通过dns解析时的域名 # skip-cert-verify: true # host: bing.com # path: "/" @@ -450,6 +486,28 @@ proxies: # socks5 host: "cloud.tencent.com" password: "shadow_tls_password" version: 2 # support 1/2/3 + # alpn: ["h2","http/1.1"] + + - name: "ss5" + type: ss + server: server + port: 443 + cipher: chacha20-ietf-poly1305 + password: "password" + plugin: gost-plugin + plugin-opts: + mode: websocket + # tls: true # wss + # fingerprint: xxxx # 配置指纹将实现 SSL Pining 效果, 可使用 openssl x509 -noout -fingerprint -sha256 -inform pem -in yourcert.pem 获取 + # 下面两项如果填写则开启 mTLS(需要同时填写) + # certificate: ./client.crt # 证书 PEM 格式,或者 证书的路径 + # private-key: ./client.key # 证书对应的私钥 PEM 格式,或者私钥路径 + # skip-cert-verify: true + # host: bing.com + # path: "/" + # mux: true + # headers: + # custom: value - name: "ss-restls-tls13" type: ss @@ -492,6 +550,39 @@ proxies: # socks5 version-hint: "tls12" restls-script: "1000?100<1,500~100,350~100,600~100,400~200" + - name: "ss-kcptun" + type: ss + server: [YOUR_SERVER_IP] + port: 443 + cipher: chacha20-ietf-poly1305 + password: [YOUR_SS_PASSWORD] + plugin: kcptun + plugin-opts: + key: it's a secrect # pre-shared secret between client and server + crypt: aes # aes, aes-128, aes-128-gcm, aes-192, salsa20, blowfish, twofish, cast5, 3des, tea, xtea, xor, none, null + mode: fast # profiles: fast3, fast2, fast, normal, manual + conn: 1 # set num of UDP connections to server + autoexpire: 0 # set auto expiration time(in seconds) for a single UDP connection, 0 to disable + scavengettl: 600 # set how long an expired connection can live (in seconds) + mtu: 1350 # set maximum transmission unit for UDP packets + ratelimit: 0 # set maximum outgoing speed (in bytes per second) for a single KCP connection, 0 to disable. Also known as packet pacing + sndwnd: 128 # set send window size(num of packets) + rcvwnd: 512 # set receive window size(num of packets) + datashard: 10 # set reed-solomon erasure coding - datashard + parityshard: 3 # set reed-solomon erasure coding - parityshard + dscp: 0 # set DSCP(6bit) + nocomp: false # disable compression + acknodelay: false # flush ack immediately when a packet is received + nodelay: 0 + interval: 50 + resend: 0 + sockbuf: 4194304 # per-socket buffer in bytes + smuxver: 1 # specify smux version, available 1,2 + smuxbuf: 4194304 # the overall de-mux buffer in bytes + framesize: 8192 # smux max frame size + streambuf: 2097152 # per stream receive buffer in bytes, smux v2+ + keepalive: 10 # seconds between heartbeats + # vmess # cipher 支持 auto/aes-128-gcm/chacha20-poly1305/none - name: "vmess" @@ -503,11 +594,19 @@ proxies: # socks5 cipher: auto # udp: true # tls: true - # fingerprint: xxxx + # fingerprint: xxxx # 配置指纹将实现 SSL Pining 效果, 可使用 openssl x509 -noout -fingerprint -sha256 -inform pem -in yourcert.pem 获取 + # 下面两项如果填写则开启 mTLS(需要同时填写) + # certificate: ./client.crt # 证书 PEM 格式,或者 证书的路径 + # private-key: ./client.key # 证书对应的私钥 PEM 格式,或者私钥路径 # client-fingerprint: chrome # Available: "chrome","firefox","safari","ios","random", currently only support TLS transport in TCP/GRPC/WS/HTTP for VLESS/Vmess and trojan. # skip-cert-verify: true # servername: example.com # priority over wss host # network: ws + # ech-opts: + # enable: true # 必须手动开启 + # # 如果config为空则通过dns解析,不为空则通过该值指定,格式为经过base64编码的ech参数(dig +short TYPE65 tls-ech.dev) + # config: AEn+DQBFKwAgACABWIHUGj4u+PIggYXcR5JF0gYk3dCRioBW8uJq9H4mKAAIAAEAAQABAANAEnB1YmxpYy50bHMtZWNoLmRldgAA + # # query-server-name: xxx.com # 可选项,不为空时用于指定通过dns解析时的域名 # ws-opts: # path: /path # headers: @@ -526,7 +625,10 @@ proxies: # socks5 cipher: auto network: h2 tls: true - # fingerprint: xxxx + # fingerprint: xxxx # 配置指纹将实现 SSL Pining 效果, 可使用 openssl x509 -noout -fingerprint -sha256 -inform pem -in yourcert.pem 获取 + # 下面两项如果填写则开启 mTLS(需要同时填写) + # certificate: ./client.crt # 证书 PEM 格式,或者 证书的路径 + # private-key: ./client.key # 证书对应的私钥 PEM 格式,或者私钥路径 h2-opts: host: - http.example.com @@ -561,11 +663,15 @@ proxies: # socks5 cipher: auto network: grpc tls: true - # fingerprint: xxxx + # fingerprint: xxxx # 配置指纹将实现 SSL Pining 效果, 可使用 openssl x509 -noout -fingerprint -sha256 -inform pem -in yourcert.pem 获取 + # 下面两项如果填写则开启 mTLS(需要同时填写) + # certificate: ./client.crt # 证书 PEM 格式,或者 证书的路径 + # private-key: ./client.key # 证书对应的私钥 PEM 格式,或者私钥路径 servername: example.com # skip-cert-verify: true grpc-opts: grpc-service-name: "example" + # grpc-user-agent: "grpc-go/1.36.0" # ip-version: ipv4 # vless @@ -576,10 +682,17 @@ proxies: # socks5 uuid: uuid network: tcp servername: example.com # AKA SNI - # flow: xtls-rprx-direct # xtls-rprx-origin # enable XTLS # skip-cert-verify: true - # fingerprint: xxxx + # 下面两项如果填写则开启 mTLS(需要同时填写) + # certificate: ./client.crt # 证书 PEM 格式,或者 证书的路径 + # private-key: ./client.key # 证书对应的私钥 PEM 格式,或者私钥路径 + # fingerprint: xxxx # 配置指纹将实现 SSL Pining 效果, 可使用 openssl x509 -noout -fingerprint -sha256 -inform pem -in yourcert.pem 获取 # client-fingerprint: random # Available: "chrome","firefox","safari","random","none" + # ech-opts: + # enable: true # 必须手动开启 + # # 如果config为空则通过dns解析,不为空则通过该值指定,格式为经过base64编码的ech参数(dig +short TYPE65 tls-ech.dev) + # config: AEn+DQBFKwAgACABWIHUGj4u+PIggYXcR5JF0gYk3dCRioBW8uJq9H4mKAAIAAEAAQABAANAEnB1YmxpYy50bHMtZWNoLmRldgAA + # # query-server-name: xxx.com # 可选项,不为空时用于指定通过dns解析时的域名 - name: "vless-vision" type: vless @@ -591,9 +704,33 @@ proxies: # socks5 udp: true flow: xtls-rprx-vision client-fingerprint: chrome - # fingerprint: xxxx + # 下面两项如果填写则开启 mTLS(需要同时填写) + # certificate: ./client.crt # 证书 PEM 格式,或者 证书的路径 + # private-key: ./client.key # 证书对应的私钥 PEM 格式,或者私钥路径 + # fingerprint: xxxx # 配置指纹将实现 SSL Pining 效果, 可使用 openssl x509 -noout -fingerprint -sha256 -inform pem -in yourcert.pem 获取 # skip-cert-verify: true + - name: "vless-encryption" + type: vless + server: server + port: 443 + uuid: uuid + network: tcp + # ------------------------- + # vless encryption客户端配置: + # (native/xorpub 的 XTLS Vision 可以 Splice。只使用 1-RTT 模式 / 若服务端发的 ticket 中秒数不为零则 0-RTT 复用) + # / 是只能选一个,后面 base64 至少一个,无限串联,使用 mihomo generate vless-x25519 和 mihomo generate vless-mlkem768 生成,替换值时需去掉括号 + # + # Padding 是可选的参数,仅作用于 1-RTT 以消除握手的长度特征,双端默认值均为 "100-111-1111.75-0-111.50-0-3333": + # 在 1-RTT client/server hello 后以 100% 的概率粘上随机 111 到 1111 字节的 padding + # 以 75% 的概率等待随机 0 到 111 毫秒("probability-from-to") + # 再次以 50% 的概率发送随机 0 到 3333 字节的 padding(若为 0 则不 Write()) + # 服务端、客户端可以设置不同的 padding 参数,按 len、gap 的顺序无限串联,第一个 padding 需概率 100%、至少 35 字节 + # ------------------------- + encryption: "mlkem768x25519plus.native/xorpub/random.1rtt/0rtt.(padding len).(padding gap).(X25519 Password).(ML-KEM-768 Client)..." + tls: false #可以不开启tls + udp: true + - name: "vless-reality-vision" type: vless server: server @@ -607,6 +744,7 @@ proxies: # socks5 reality-opts: public-key: xxx short-id: xxx # optional + support-x25519mlkem768: false # 如果服务端支持可手动设置为true client-fingerprint: chrome # cannot be empty - name: "vless-reality-grpc" @@ -623,9 +761,12 @@ proxies: # socks5 servername: testingcf.jsdelivr.net grpc-opts: grpc-service-name: "grpc" + # grpc-user-agent: "grpc-go/1.36.0" + reality-opts: public-key: CrrQSjAG_YkHLwvM2M-7XkKJilgL5upBKCp0od0tLhE short-id: 10f897e26c4b9478 + support-x25519mlkem768: false # 如果服务端支持可手动设置为true - name: "vless-ws" type: vless @@ -638,7 +779,10 @@ proxies: # socks5 # client-fingerprint: random # Available: "chrome","firefox","safari","random","none" servername: example.com # priority over wss host # skip-cert-verify: true - # fingerprint: xxxx + # fingerprint: xxxx # 配置指纹将实现 SSL Pining 效果, 可使用 openssl x509 -noout -fingerprint -sha256 -inform pem -in yourcert.pem 获取 + # 下面两项如果填写则开启 mTLS(需要同时填写) + # certificate: ./client.crt # 证书 PEM 格式,或者 证书的路径 + # private-key: ./client.key # 证书对应的私钥 PEM 格式,或者私钥路径 ws-opts: path: "/" headers: @@ -653,7 +797,10 @@ proxies: # socks5 port: 443 password: yourpsk # client-fingerprint: random # Available: "chrome","firefox","safari","random","none" - # fingerprint: xxxx + # fingerprint: xxxx # 配置指纹将实现 SSL Pining 效果, 可使用 openssl x509 -noout -fingerprint -sha256 -inform pem -in yourcert.pem 获取 + # 下面两项如果填写则开启 mTLS(需要同时填写) + # certificate: ./client.crt # 证书 PEM 格式,或者 证书的路径 + # private-key: ./client.key # 证书对应的私钥 PEM 格式,或者私钥路径 # udp: true # sni: example.com # aka server name # alpn: @@ -664,6 +811,11 @@ proxies: # socks5 # enabled: false # method: aes-128-gcm # aes-128-gcm/aes-256-gcm/chacha20-ietf-poly1305 # password: "example" + # ech-opts: + # enable: true # 必须手动开启 + # # 如果config为空则通过dns解析,不为空则通过该值指定,格式为经过base64编码的ech参数(dig +short TYPE65 tls-ech.dev) + # config: AEn+DQBFKwAgACABWIHUGj4u+PIggYXcR5JF0gYk3dCRioBW8uJq9H4mKAAIAAEAAQABAANAEnB1YmxpYy50bHMtZWNoLmRldgAA + # # query-server-name: xxx.com # 可选项,不为空时用于指定通过dns解析时的域名 - name: trojan-grpc server: server @@ -673,10 +825,14 @@ proxies: # socks5 network: grpc sni: example.com # skip-cert-verify: true - # fingerprint: xxxx + # fingerprint: xxxx # 配置指纹将实现 SSL Pining 效果, 可使用 openssl x509 -noout -fingerprint -sha256 -inform pem -in yourcert.pem 获取 + # 下面两项如果填写则开启 mTLS(需要同时填写) + # certificate: ./client.crt # 证书 PEM 格式,或者 证书的路径 + # private-key: ./client.key # 证书对应的私钥 PEM 格式,或者私钥路径 udp: true grpc-opts: grpc-service-name: "example" + # grpc-user-agent: "grpc-go/1.36.0" - name: trojan-ws server: server @@ -686,7 +842,10 @@ proxies: # socks5 network: ws sni: example.com # skip-cert-verify: true - # fingerprint: xxxx + # fingerprint: xxxx # 配置指纹将实现 SSL Pining 效果, 可使用 openssl x509 -noout -fingerprint -sha256 -inform pem -in yourcert.pem 获取 + # 下面两项如果填写则开启 mTLS(需要同时填写) + # certificate: ./client.crt # 证书 PEM 格式,或者 证书的路径 + # private-key: ./client.key # 证书对应的私钥 PEM 格式,或者私钥路径 udp: true # ws-opts: # path: /path @@ -705,7 +864,10 @@ proxies: # socks5 # udp: true # sni: example.com # aka server name # skip-cert-verify: true - # fingerprint: xxxx + # fingerprint: xxxx # 配置指纹将实现 SSL Pining 效果, 可使用 openssl x509 -noout -fingerprint -sha256 -inform pem -in yourcert.pem 获取 + # 下面两项如果填写则开启 mTLS(需要同时填写) + # certificate: ./client.crt # 证书 PEM 格式,或者 证书的路径 + # private-key: ./client.key # 证书对应的私钥 PEM 格式,或者私钥路径 #hysteria - name: "hysteria" @@ -721,13 +883,19 @@ proxies: # socks5 up: "30 Mbps" # 若不写单位,默认为 Mbps down: "200 Mbps" # 若不写单位,默认为 Mbps # sni: server.com + # ech-opts: + # enable: true # 必须手动开启 + # # 如果config为空则通过dns解析,不为空则通过该值指定,格式为经过base64编码的ech参数(dig +short TYPE65 tls-ech.dev) + # config: AEn+DQBFKwAgACABWIHUGj4u+PIggYXcR5JF0gYk3dCRioBW8uJq9H4mKAAIAAEAAQABAANAEnB1YmxpYy50bHMtZWNoLmRldgAA + # # query-server-name: xxx.com # 可选项,不为空时用于指定通过dns解析时的域名 # skip-cert-verify: false # recv-window-conn: 12582912 # recv-window: 52428800 - # ca: "./my.ca" - # ca-str: "xyz" # disable-mtu-discovery: false - # fingerprint: xxxx + # fingerprint: xxxx # 配置指纹将实现 SSL Pining 效果, 可使用 openssl x509 -noout -fingerprint -sha256 -inform pem -in yourcert.pem 获取 + # 下面两项如果填写则开启 mTLS(需要同时填写) + # certificate: ./client.crt # 证书 PEM 格式,或者 证书的路径 + # private-key: ./client.key # 证书对应的私钥 PEM 格式,或者私钥路径 # fast-open: true # 支持 TCP 快速打开,默认为 false #hysteria2 @@ -744,12 +912,23 @@ proxies: # socks5 # obfs: salamander # 默认为空,如果填写则开启 obfs,目前仅支持 salamander # obfs-password: yourpassword # sni: server.com + # ech-opts: + # enable: true # 必须手动开启 + # # 如果config为空则通过dns解析,不为空则通过该值指定,格式为经过base64编码的ech参数(dig +short TYPE65 tls-ech.dev) + # config: AEn+DQBFKwAgACABWIHUGj4u+PIggYXcR5JF0gYk3dCRioBW8uJq9H4mKAAIAAEAAQABAANAEnB1YmxpYy50bHMtZWNoLmRldgAA + # # query-server-name: xxx.com # 可选项,不为空时用于指定通过dns解析时的域名 # skip-cert-verify: false - # fingerprint: xxxx + # fingerprint: xxxx # 配置指纹将实现 SSL Pining 效果, 可使用 openssl x509 -noout -fingerprint -sha256 -inform pem -in yourcert.pem 获取 + # 下面两项如果填写则开启 mTLS(需要同时填写) + # certificate: ./client.crt # 证书 PEM 格式,或者 证书的路径 + # private-key: ./client.key # 证书对应的私钥 PEM 格式,或者私钥路径 # alpn: # - h3 - # ca: "./my.ca" - # ca-str: "xyz" + ###quic-go特殊配置项,不要随意修改除非你知道你在干什么### + # initial-stream-receive-window: 8388608 + # max-stream-receive-window: 8388608 + # initial-connection-receive-window: 20971520 + # max-connection-receive-window: 20971520 # wireguard - name: "wg" @@ -765,6 +944,7 @@ proxies: # socks5 reserved: "U4An" # 数组格式也是合法的 # reserved: [209,98,59] + # persistent-keepalive: 0 # 一个出站代理的标识。当值不为空时,将使用指定的 proxy 发出连接 # dialer-proxy: "ss1" # remote-dns-resolve: true # 强制 dns 远程解析,默认值为 false @@ -785,10 +965,42 @@ proxies: # socks5 # jmax: 501 # s1: 30 # s2: 40 - # h1: 123456 - # h2: 67543 - # h4: 32345 - # h3: 123123 + # s3: 50 # AmneziaWG v1.5 and v2 + # s4: 5 # AmneziaWG v1.5 and v2 + # h1: 123456 # AmneziaWG v1.0 and v1.5 + # h2: 67543 # AmneziaWG v1.0 and v1.5 + # h3: 123123 # AmneziaWG v1.0 and v1.5 + # h4: 32345 # AmneziaWG v1.0 and v1.5 + # h1: 123456-123500 # AmneziaWG v2.0 only + # h2: 67543-67550 # AmneziaWG v2.0 only + # h3: 123123-123200 # AmneziaWG v2.0 only + # h4: 32345-32350 # AmneziaWG v2.0 only + # i1: # AmneziaWG v1.5 and v2 + # i2: # AmneziaWG v1.5 and v2 + # i3: "" # AmneziaWG v1.5 and v2 + # i4: "" # AmneziaWG v1.5 and v2 + # i5: "" # AmneziaWG v1.5 and v2 + # j1: # AmneziaWG v1.5 only (removed in v2) + # j2: # AmneziaWG v1.5 only (removed in v2) + # j3: # AmneziaWG v1.5 only (removed in v2) + # itime: 60 # AmneziaWG v1.5 only (removed in v2) + + # masque + - name: "masque" + type: masque + server: 162.159.198.1 + port: 443 + private-key: MHcCAQEEILI1eOtnbEIh89Fj4yNDuFR6UjayCKI3NdLl3DhetimWoAoGCCqGSM49AwEHoUQDQgAEgyXrE8v+hHsHy3ewSb3WcRjYgCrM9T9hiE0Uv6k2DZ1+4kefrDT9v1Q/8wdRigTf6t6gGNUV8W+IUMdrfUt+9g== + public-key: MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEIaU7MToJm9NKp8YfGxR6r+/h4mcG7SxI8tsW8OR1A5tv/zCzVbCRRh2t87/kxnP6lAy0lkr7qYwu+ox+k3dr6w== + ip: 172.16.0.2 + ipv6: 2606:4700:110:84c0:163a:4914:a0ad:3342 + mtu: 1280 + udp: true + # 一个出站代理的标识。当值不为空时,将使用指定的 proxy 发出连接 + # dialer-proxy: "ss1" + # remote-dns-resolve: true # 强制 dns 远程解析,默认值为 false + # dns: [ 1.1.1.1, 8.8.8.8 ] # 仅在 remote-dns-resolve 为 true 时生效 + # congestion-controller: bbr # 默认不开启 # tuic - name: tuic @@ -814,6 +1026,11 @@ proxies: # socks5 # skip-cert-verify: true # max-open-streams: 20 # default 100, too many open streams may hurt performance # sni: example.com + # ech-opts: + # enable: true # 必须手动开启 + # # 如果config为空则通过dns解析,不为空则通过该值指定,格式为经过base64编码的ech参数(dig +short TYPE65 tls-ech.dev) + # config: AEn+DQBFKwAgACABWIHUGj4u+PIggYXcR5JF0gYk3dCRioBW8uJq9H4mKAAIAAEAAQABAANAEnB1YmxpYy50bHMtZWNoLmRldgAA + # # query-server-name: xxx.com # 可选项,不为空时用于指定通过dns解析时的域名 # # meta 和 sing-box 私有扩展,将 ss-uot 用于 udp 中继,开启此选项后 udp-relay-mode 将失效 # 警告,与原版 tuic 不兼容!!! @@ -849,9 +1066,67 @@ proxies: # socks5 password: password privateKey: path + # mieru + - name: mieru + type: mieru + server: 1.2.3.4 + port: 2999 + # port-range: 2090-2099 #(不可同时填写 port 和 port-range) + transport: TCP # 支持 TCP 或者 UDP + udp: true # 支持 UDP over TCP + username: user + password: password + # 可以使用的值包括 MULTIPLEXING_OFF, MULTIPLEXING_LOW, MULTIPLEXING_MIDDLE, MULTIPLEXING_HIGH。其中 MULTIPLEXING_OFF 会关闭多路复用功能。默认值为 MULTIPLEXING_LOW。 + # multiplexing: MULTIPLEXING_LOW + # 如果想开启 0-RTT 握手,请设置为 HANDSHAKE_NO_WAIT,否则请设置为 HANDSHAKE_STANDARD。默认值为 HANDSHAKE_STANDARD + # handshake-mode: HANDSHAKE_STANDARD + + # sudoku + - name: sudoku + type: sudoku + server: server_ip/domain # 1.2.3.4 or domain + port: 443 + key: "" # 如果你使用sudoku生成的ED25519密钥对,请填写密钥对中的私钥,否则填入和服务端相同的uuid + aead-method: chacha20-poly1305 # 可选:chacha20-poly1305、aes-128-gcm、none(不建议;且 enable-pure-downlink=false 时不可用) + padding-min: 2 # 最小填充率(0-100) + padding-max: 7 # 最大填充率(0-100,必须 >= padding-min) + table-type: prefer_ascii # 可选值:prefer_ascii、prefer_entropy 前者全ascii映射,后者保证熵值(汉明1)低于3 + # custom-table: xpxvvpvv # 可选,自定义字节布局,必须包含2个x、2个p、4个v,可随意组合。启用此处则需配置`table-type`为`prefer_entropy` + # custom-tables: ["xpxvvpvv", "vxpvxvvp"] # 可选,自定义字节布局列表(x/v/p),用于 xvp 模式轮换;非空时覆盖 custom-table + http-mask: true # 是否启用http掩码 + # http-mask-mode: legacy # 可选:legacy(默认)、stream(split-stream)、poll、auto(先 stream 再 poll);stream/poll/auto 支持走 CDN/反代 + # http-mask-tls: true # 可选:仅在 http-mask-mode 为 stream/poll/auto 时生效;true 强制 https;false 强制 http(不会根据端口自动推断) + # http-mask-host: "" # 可选:覆盖 Host/SNI(支持 example.com 或 example.com:443);仅在 http-mask-mode 为 stream/poll/auto 时生效 + # path-root: "" # 可选:HTTP 隧道端点一级路径前缀(双方需一致),例如 "aabbcc" 或 "/aabbcc/" => /aabbcc/session、/aabbcc/stream、/aabbcc/api/v1/upload + # http-mask-multiplex: off # 可选:off(默认)、auto(复用底层 HTTP 连接,减少建链 RTT)、on(Sudoku mux 单隧道多目标;仅在 http-mask-mode=stream/poll/auto 生效) + enable-pure-downlink: false # 可选:false=带宽优化下行(更快,要求 aead-method != none);true=纯 Sudoku 下行 + + # anytls + - name: anytls + type: anytls + server: 1.2.3.4 + port: 443 + password: "" + # client-fingerprint: chrome + udp: true + # idle-session-check-interval: 30 # seconds + # idle-session-timeout: 30 # seconds + # min-idle-session: 0 + # sni: "example.com" + # alpn: + # - h2 + # - http/1.1 + # skip-cert-verify: true + # dns 出站会将请求劫持到内部 dns 模块,所有请求均在内部处理 - name: "dns-out" type: dns + + # 配置指定 interface-name 和 fwmark 的 DIRECT + - name: en1-direct + type: direct + interface-name: en1 + routing-mark: 6667 proxy-groups: # 代理链,目前 relay 可以支持 udp 的只有 vmess/vless/trojan/ss/ssr/tuic # wireguard 目前不支持在 relay 中使用,请使用 proxy 中的 dialer-proxy 配置项 @@ -908,14 +1183,6 @@ proxy-groups: - vmess1 - auto - # 配置指定 interface-name 和 fwmark 的 DIRECT - - name: en1 - type: select - interface-name: en1 - routing-mark: 6667 - proxies: - - DIRECT - - name: UseProvider type: select filter: "HK|TW" # 正则表达式,过滤 provider1 中节点名包含 HK 或 TW @@ -931,7 +1198,7 @@ proxy-providers: type: http # http 的 path 可空置,默认储存路径为 homedir 的 proxies 文件夹,文件名为 url 的 md5 url: "url" interval: 3600 - path: ./provider1.yaml # 默认只允许存储在 mihomo 的 Home Dir,如果想存储到任意位置,添加环境变量 SKIP_SAFE_PATH_CHECK=1 + path: ./provider1.yaml # 默认只允许存储在 mihomo 的 Home Dir,如果想存储到其他位置,请通过设置 SAFE_PATHS 环境变量指定额外的安全路径。该环境变量的语法同本操作系统的PATH环境变量解析规则(即Windows下以分号分割,其他系统下以冒号分割) proxy: DIRECT # size-limit: 10240 # 限制下载文件最大为10kb,默认为0即不限制文件大小 header: @@ -966,6 +1233,17 @@ proxy-providers: # - pattern: "IPLC-(.*?)倍" # target: "iplc x $1" + provider2: + type: inline + dialer-proxy: proxy + payload: + - name: "ss1" + type: ss + server: server + port: 443 + cipher: chacha20-ietf-poly1305 + password: "password" + test: type: file path: /test.yaml @@ -977,7 +1255,7 @@ rule-providers: rule1: behavior: classical # domain ipcidr interval: 259200 - path: /path/to/save/file.yaml # 默认只允许存储在 mihomo 的 Home Dir,如果想存储到任意位置,添加环境变量 SKIP_SAFE_PATH_CHECK=1 + path: /path/to/save/file.yaml # 默认只允许存储在 mihomo 的 Home Dir,如果想存储到其他位置,请通过设置 SAFE_PATHS 环境变量指定额外的安全路径。该环境变量的语法同本操作系统的PATH环境变量解析规则(即Windows下以分号分割,其他系统下以冒号分割) type: http # http 的 path 可空置,默认储存路径为 homedir 的 rules 文件夹,文件名为 url 的 md5 url: "url" proxy: DIRECT @@ -1005,12 +1283,21 @@ rule-providers: format: mrs behavior: domain path: /path/to/save/file.mrs + rule4: + type: inline + behavior: domain # classical / ipcidr + payload: + - '.blogger.com' + - '*.*.microsoft.com' + - 'books.itunes.apple.com' + rules: - RULE-SET,rule1,REJECT - IP-ASN,1,PROXY - DOMAIN-REGEX,^abc,DIRECT - DOMAIN-SUFFIX,baidu.com,DIRECT - DOMAIN-KEYWORD,google,ss1 + - DOMAIN-WILDCARD,test.*.mihomo.com,ss1 - IP-CIDR,1.1.1.1/32,ss1 - IP-CIDR6,2409::/64,DIRECT # 当满足条件是 TCP 或 UDP 流量时,使用名为 sub-rule-name1 的规则集 @@ -1045,7 +1332,7 @@ sub-rules: listeners: - name: socks5-in-1 type: socks - port: 10808 + port: 10808 # 支持使用ports格式,例如200,302 or 200,204,401-429,501-503 #listen: 0.0.0.0 # 默认监听 0.0.0.0 # rule: sub-rule-name1 # 默认使用 rules,如果未找到 sub-rule 则直接使用 rules # proxy: proxy # 如果不为空则直接将该入站流量交由指定 proxy 处理 @@ -1053,20 +1340,46 @@ listeners: # users: # 如果不填写users项,则遵从全局authentication设置,如果填写会忽略全局设置, 如想跳过该入站的验证可填写 users: [] # - username: aaa # password: aaa + # 下面两项如果填写则开启 tls(需要同时填写) + # certificate: ./server.crt # 证书 PEM 格式,或者 证书的路径 + # private-key: ./server.key # 证书对应的私钥 PEM 格式,或者私钥路径 + # 下面两项为mTLS配置项,如果client-auth-type设置为 "verify-if-given" 或 "require-and-verify" 则client-auth-cert必须不为空 + # client-auth-type: "" # 可选值:""、"request"、"require-any"、"verify-if-given"、"require-and-verify" + # client-auth-cert: string # 证书 PEM 格式,或者 证书的路径 + # 如果填写则开启ech(可由 mihomo generate ech-keypair <明文域名> 生成) + # ech-key: | + # -----BEGIN ECH KEYS----- + # ACATwY30o/RKgD6hgeQxwrSiApLaCgU+HKh7B6SUrAHaDwBD/g0APwAAIAAgHjzK + # madSJjYQIf9o1N5GXjkW4DEEeb17qMxHdwMdNnwADAABAAEAAQACAAEAAwAIdGVz + # dC5jb20AAA== + # -----END ECH KEYS----- - name: http-in-1 type: http - port: 10809 + port: 10809 # 支持使用ports格式,例如200,302 or 200,204,401-429,501-503 listen: 0.0.0.0 # rule: sub-rule-name1 # 默认使用 rules,如果未找到 sub-rule 则直接使用 rules # proxy: proxy # 如果不为空则直接将该入站流量交由指定 proxy 处理 (当 proxy 不为空时,这里的 proxy 名称必须合法,否则会出错) # users: # 如果不填写users项,则遵从全局authentication设置,如果填写会忽略全局设置, 如想跳过该入站的验证可填写 users: [] # - username: aaa # password: aaa + # 下面两项如果填写则开启 tls(需要同时填写) + # certificate: ./server.crt # 证书 PEM 格式,或者 证书的路径 + # private-key: ./server.key # 证书对应的私钥 PEM 格式,或者私钥路径 + # 下面两项为mTLS配置项,如果client-auth-type设置为 "verify-if-given" 或 "require-and-verify" 则client-auth-cert必须不为空 + # client-auth-type: "" # 可选值:""、"request"、"require-any"、"verify-if-given"、"require-and-verify" + # client-auth-cert: string # 证书 PEM 格式,或者 证书的路径 + # 如果填写则开启ech(可由 mihomo generate ech-keypair <明文域名> 生成) + # ech-key: | + # -----BEGIN ECH KEYS----- + # ACATwY30o/RKgD6hgeQxwrSiApLaCgU+HKh7B6SUrAHaDwBD/g0APwAAIAAgHjzK + # madSJjYQIf9o1N5GXjkW4DEEeb17qMxHdwMdNnwADAABAAEAAQACAAEAAwAIdGVz + # dC5jb20AAA== + # -----END ECH KEYS----- - name: mixed-in-1 type: mixed # HTTP(S) 和 SOCKS 代理混合 - port: 10810 + port: 10810 # 支持使用ports格式,例如200,302 or 200,204,401-429,501-503 listen: 0.0.0.0 # rule: sub-rule-name1 # 默认使用 rules,如果未找到 sub-rule 则直接使用 rules # proxy: proxy # 如果不为空则直接将该入站流量交由指定 proxy 处理 (当 proxy 不为空时,这里的 proxy 名称必须合法,否则会出错) @@ -1074,17 +1387,30 @@ listeners: # users: # 如果不填写users项,则遵从全局authentication设置,如果填写会忽略全局设置, 如想跳过该入站的验证可填写 users: [] # - username: aaa # password: aaa + # 下面两项如果填写则开启 tls(需要同时填写) + # certificate: ./server.crt # 证书 PEM 格式,或者 证书的路径 + # private-key: ./server.key # 证书对应的私钥 PEM 格式,或者私钥路径 + # 下面两项为mTLS配置项,如果client-auth-type设置为 "verify-if-given" 或 "require-and-verify" 则client-auth-cert必须不为空 + # client-auth-type: "" # 可选值:""、"request"、"require-any"、"verify-if-given"、"require-and-verify" + # client-auth-cert: string # 证书 PEM 格式,或者 证书的路径 + # 如果填写则开启ech(可由 mihomo generate ech-keypair <明文域名> 生成) + # ech-key: | + # -----BEGIN ECH KEYS----- + # ACATwY30o/RKgD6hgeQxwrSiApLaCgU+HKh7B6SUrAHaDwBD/g0APwAAIAAgHjzK + # madSJjYQIf9o1N5GXjkW4DEEeb17qMxHdwMdNnwADAABAAEAAQACAAEAAwAIdGVz + # dC5jb20AAA== + # -----END ECH KEYS----- - - name: reidr-in-1 + - name: redir-in-1 type: redir - port: 10811 + port: 10811 # 支持使用ports格式,例如200,302 or 200,204,401-429,501-503 listen: 0.0.0.0 # rule: sub-rule-name1 # 默认使用 rules,如果未找到 sub-rule 则直接使用 rules # proxy: proxy # 如果不为空则直接将该入站流量交由指定 proxy 处理 (当 proxy 不为空时,这里的 proxy 名称必须合法,否则会出错) - name: tproxy-in-1 type: tproxy - port: 10812 + port: 10812 # 支持使用ports格式,例如200,302 or 200,204,401-429,501-503 listen: 0.0.0.0 # rule: sub-rule-name1 # 默认使用 rules,如果未找到 sub-rule 则直接使用 rules # proxy: proxy # 如果不为空则直接将该入站流量交由指定 proxy 处理 (当 proxy 不为空时,这里的 proxy 名称必须合法,否则会出错) @@ -1092,16 +1418,51 @@ listeners: - name: shadowsocks-in-1 type: shadowsocks - port: 10813 + port: 10813 # 支持使用ports格式,例如200,302 or 200,204,401-429,501-503 listen: 0.0.0.0 # rule: sub-rule-name1 # 默认使用 rules,如果未找到 sub-rule 则直接使用 rules # proxy: proxy # 如果不为空则直接将该入站流量交由指定 proxy 处理 (当 proxy 不为空时,这里的 proxy 名称必须合法,否则会出错) password: vlmpIPSyHH6f4S8WVPdRIHIlzmB+GIRfoH3aNJ/t9Gg= cipher: 2022-blake3-aes-256-gcm + # shadow-tls: + # enable: false # 设置为true时开启 + # version: 3 # 支持v1/v2/v3 + # password: password # v2设置项 + # users: # v3设置项 + # - name: 1 + # password: password + # handshake: + # dest: test.com:443 + # kcp-tun: + # enable: false + # key: it's a secrect # pre-shared secret between client and server + # crypt: aes # aes, aes-128, aes-128-gcm, aes-192, salsa20, blowfish, twofish, cast5, 3des, tea, xtea, xor, none, null + # mode: fast # profiles: fast3, fast2, fast, normal, manual + # conn: 1 # set num of UDP connections to server + # autoexpire: 0 # set auto expiration time(in seconds) for a single UDP connection, 0 to disable + # scavengettl: 600 # set how long an expired connection can live (in seconds) + # ratelimit: 0 # set maximum outgoing speed (in bytes per second) for a single KCP connection, 0 to disable. Also known as packet pacing + # mtu: 1350 # set maximum transmission unit for UDP packets + # sndwnd: 128 # set send window size(num of packets) + # rcvwnd: 512 # set receive window size(num of packets) + # datashard: 10 # set reed-solomon erasure coding - datashard + # parityshard: 3 # set reed-solomon erasure coding - parityshard + # dscp: 0 # set DSCP(6bit) + # nocomp: false # disable compression + # acknodelay: false # flush ack immediately when a packet is received + # nodelay: 0 + # interval: 50 + # resend: 0 + # sockbuf: 4194304 # per-socket buffer in bytes + # smuxver: 1 # specify smux version, available 1,2 + # smuxbuf: 4194304 # the overall de-mux buffer in bytes + # framesize: 8192 # smux max frame size + # streambuf: 2097152 # per stream receive buffer in bytes, smux v2+ + # keepalive: 10 # seconds between heartbeats - name: vmess-in-1 type: vmess - port: 10814 + port: 10814 # 支持使用ports格式,例如200,302 or 200,204,401-429,501-503 listen: 0.0.0.0 # rule: sub-rule-name1 # 默认使用 rules,如果未找到 sub-rule 则直接使用 rules # proxy: proxy # 如果不为空则直接将该入站流量交由指定 proxy 处理 (当 proxy 不为空时,这里的 proxy 名称必须合法,否则会出错) @@ -1110,13 +1471,42 @@ listeners: uuid: 9d0cb9d0-964f-4ef6-897d-6c6b3ccf9e68 alterId: 1 # ws-path: "/" # 如果不为空则开启 websocket 传输层 + # grpc-service-name: "GunService" # 如果不为空则开启 grpc 传输层 # 下面两项如果填写则开启 tls(需要同时填写) - # certificate: ./server.crt - # private-key: ./server.key + # certificate: ./server.crt # 证书 PEM 格式,或者 证书的路径 + # private-key: ./server.key # 证书对应的私钥 PEM 格式,或者私钥路径 + # 下面两项为mTLS配置项,如果client-auth-type设置为 "verify-if-given" 或 "require-and-verify" 则client-auth-cert必须不为空 + # client-auth-type: "" # 可选值:""、"request"、"require-any"、"verify-if-given"、"require-and-verify" + # client-auth-cert: string # 证书 PEM 格式,或者 证书的路径 + # 如果填写则开启ech(可由 mihomo generate ech-keypair <明文域名> 生成) + # ech-key: | + # -----BEGIN ECH KEYS----- + # ACATwY30o/RKgD6hgeQxwrSiApLaCgU+HKh7B6SUrAHaDwBD/g0APwAAIAAgHjzK + # madSJjYQIf9o1N5GXjkW4DEEeb17qMxHdwMdNnwADAABAAEAAQACAAEAAwAIdGVz + # dC5jb20AAA== + # -----END ECH KEYS----- + # 如果填写reality-config则开启reality(注意不可与certificate和private-key同时填写) + # reality-config: + # dest: test.com:443 + # private-key: jNXHt1yRo0vDuchQlIP6Z0ZvjT3KtzVI-T4E7RoLJS0 # 可由 mihomo generate reality-keypair 命令生成 + # short-id: + # - 0123456789abcdef + # server-names: + # - test.com + # #下列两个 limit 为选填,可对未通过验证的回落连接限速,bytesPerSec 默认为 0 即不启用 + # #回落限速是一种特征,不建议启用,如果您是面板/一键脚本开发者,务必让这些参数随机化 + # limit-fallback-upload: + # after-bytes: 0 # 传输指定字节后开始限速 + # bytes-per-sec: 0 # 基准速率(字节/秒) + # burst-bytes-per-sec: 0 # 突发速率(字节/秒),大于 bytesPerSec 时生效 + # limit-fallback-download: + # after-bytes: 0 # 传输指定字节后开始限速 + # bytes-per-sec: 0 # 基准速率(字节/秒) + # burst-bytes-per-sec: 0 # 突发速率(字节/秒),大于 bytesPerSec 时生效 - name: tuic-in-1 type: tuic - port: 10815 + port: 10815 # 支持使用ports格式,例如200,302 or 200,204,401-429,501-503 listen: 0.0.0.0 # rule: sub-rule-name1 # 默认使用 rules,如果未找到 sub-rule 则直接使用 rules # proxy: proxy # 如果不为空则直接将该入站流量交由指定 proxy 处理 (当 proxy 不为空时,这里的 proxy 名称必须合法,否则会出错) @@ -1125,8 +1515,18 @@ listeners: # users: # tuicV5 填写(可以同时填写 token) # 00000000-0000-0000-0000-000000000000: PASSWORD_0 # 00000000-0000-0000-0000-000000000001: PASSWORD_1 - # certificate: ./server.crt - # private-key: ./server.key + # certificate: ./server.crt # 证书 PEM 格式,或者 证书的路径 + # private-key: ./server.key # 证书对应的私钥 PEM 格式,或者私钥路径 + # 下面两项为mTLS配置项,如果client-auth-type设置为 "verify-if-given" 或 "require-and-verify" 则client-auth-cert必须不为空 + # client-auth-type: "" # 可选值:""、"request"、"require-any"、"verify-if-given"、"require-and-verify" + # client-auth-cert: string # 证书 PEM 格式,或者 证书的路径 + # 如果填写则开启ech(可由 mihomo generate ech-keypair <明文域名> 生成) + # ech-key: | + # -----BEGIN ECH KEYS----- + # ACATwY30o/RKgD6hgeQxwrSiApLaCgU+HKh7B6SUrAHaDwBD/g0APwAAIAAgHjzK + # madSJjYQIf9o1N5GXjkW4DEEeb17qMxHdwMdNnwADAABAAEAAQACAAEAAwAIdGVz + # dC5jb20AAA== + # -----END ECH KEYS----- # congestion-controller: bbr # max-idle-time: 15000 # authentication-timeout: 1000 @@ -1136,13 +1536,205 @@ listeners: - name: tunnel-in-1 type: tunnel - port: 10816 + port: 10816 # 支持使用ports格式,例如200,302 or 200,204,401-429,501-503 listen: 0.0.0.0 # rule: sub-rule-name1 # 默认使用 rules,如果未找到 sub-rule 则直接使用 rules # proxy: proxy # 如果不为空则直接将该入站流量交由指定 proxy 处理 (当 proxy 不为空时,这里的 proxy 名称必须合法,否则会出错) network: [tcp, udp] target: target.com + - name: vless-in-1 + type: vless + port: 10817 # 支持使用ports格式,例如200,302 or 200,204,401-429,501-503 + listen: 0.0.0.0 + # rule: sub-rule-name1 # 默认使用 rules,如果未找到 sub-rule 则直接使用 rules + # proxy: proxy # 如果不为空则直接将该入站流量交由指定 proxy 处理 (当 proxy 不为空时,这里的 proxy 名称必须合法,否则会出错) + users: + - username: 1 + uuid: 9d0cb9d0-964f-4ef6-897d-6c6b3ccf9e68 + flow: xtls-rprx-vision + # ws-path: "/" # 如果不为空则开启 websocket 传输层 + # grpc-service-name: "GunService" # 如果不为空则开启 grpc 传输层 + # ------------------------- + # vless encryption服务端配置: + # (原生外观 / 只 XOR 公钥 / 全随机数。1-RTT 每次下发随机 300 到 600 秒的 ticket 以便 0-RTT 复用 / 只允许 1-RTT) + # 填写 "600s" 会每次随机取 50% 到 100%,即相当于填写 "300-600s" + # / 是只能选一个,后面 base64 至少一个,无限串联,使用 mihomo generate vless-x25519 和 mihomo generate vless-mlkem768 生成,替换值时需去掉括号 + # + # Padding 是可选的参数,仅作用于 1-RTT 以消除握手的长度特征,双端默认值均为 "100-111-1111.75-0-111.50-0-3333": + # 在 1-RTT client/server hello 后以 100% 的概率粘上随机 111 到 1111 字节的 padding + # 以 75% 的概率等待随机 0 到 111 毫秒("probability-from-to") + # 再次以 50% 的概率发送随机 0 到 3333 字节的 padding(若为 0 则不 Write()) + # 服务端、客户端可以设置不同的 padding 参数,按 len、gap 的顺序无限串联,第一个 padding 需概率 100%、至少 35 字节 + # ------------------------- + # decryption: "mlkem768x25519plus.native/xorpub/random.600s(300-600s)/0s.(padding len).(padding gap).(X25519 PrivateKey).(ML-KEM-768 Seed)..." + # 下面两项如果填写则开启 tls(需要同时填写) + # certificate: ./server.crt # 证书 PEM 格式,或者 证书的路径 + # private-key: ./server.key # 证书对应的私钥 PEM 格式,或者私钥路径 + # 下面两项为mTLS配置项,如果client-auth-type设置为 "verify-if-given" 或 "require-and-verify" 则client-auth-cert必须不为空 + # client-auth-type: "" # 可选值:""、"request"、"require-any"、"verify-if-given"、"require-and-verify" + # client-auth-cert: string # 证书 PEM 格式,或者 证书的路径 + # 如果填写则开启ech(可由 mihomo generate ech-keypair <明文域名> 生成) + # ech-key: | + # -----BEGIN ECH KEYS----- + # ACATwY30o/RKgD6hgeQxwrSiApLaCgU+HKh7B6SUrAHaDwBD/g0APwAAIAAgHjzK + # madSJjYQIf9o1N5GXjkW4DEEeb17qMxHdwMdNnwADAABAAEAAQACAAEAAwAIdGVz + # dC5jb20AAA== + # -----END ECH KEYS----- + # 如果填写reality-config则开启reality(注意不可与certificate和private-key同时填写) + reality-config: + dest: test.com:443 + private-key: jNXHt1yRo0vDuchQlIP6Z0ZvjT3KtzVI-T4E7RoLJS0 # 可由 mihomo generate reality-keypair 命令生成 + short-id: + - 0123456789abcdef + server-names: + - test.com + #下列两个 limit 为选填,可对未通过验证的回落连接限速,bytesPerSec 默认为 0 即不启用 + #回落限速是一种特征,不建议启用,如果您是面板/一键脚本开发者,务必让这些参数随机化 + limit-fallback-upload: + after-bytes: 0 # 传输指定字节后开始限速 + bytes-per-sec: 0 # 基准速率(字节/秒) + burst-bytes-per-sec: 0 # 突发速率(字节/秒),大于 bytesPerSec 时生效 + limit-fallback-download: + after-bytes: 0 # 传输指定字节后开始限速 + bytes-per-sec: 0 # 基准速率(字节/秒) + burst-bytes-per-sec: 0 # 突发速率(字节/秒),大于 bytesPerSec 时生效 + ### 注意,对于vless listener, 至少需要填写 “certificate和private-key” 或 “reality-config” 或 “decryption” 的其中一项 ### + + - name: anytls-in-1 + type: anytls + port: 10818 # 支持使用ports格式,例如200,302 or 200,204,401-429,501-503 + listen: 0.0.0.0 + users: + username1: password1 + username2: password2 + # "certificate" and "private-key" are required + certificate: ./server.crt # 证书 PEM 格式,或者 证书的路径 + private-key: ./server.key + # 下面两项为mTLS配置项,如果client-auth-type设置为 "verify-if-given" 或 "require-and-verify" 则client-auth-cert必须不为空 + # client-auth-type: "" # 可选值:""、"request"、"require-any"、"verify-if-given"、"require-and-verify" + # client-auth-cert: string # 证书 PEM 格式,或者 证书的路径 + # 如果填写则开启ech(可由 mihomo generate ech-keypair <明文域名> 生成) + # ech-key: | + # -----BEGIN ECH KEYS----- + # ACATwY30o/RKgD6hgeQxwrSiApLaCgU+HKh7B6SUrAHaDwBD/g0APwAAIAAgHjzK + # madSJjYQIf9o1N5GXjkW4DEEeb17qMxHdwMdNnwADAABAAEAAQACAAEAAwAIdGVz + # dC5jb20AAA== + # -----END ECH KEYS----- + # padding-scheme: "" # https://github.com/anytls/anytls-go/blob/main/docs/protocol.md#cmdupdatepaddingscheme + + - name: mieru-in-1 + type: mieru + port: 10818 # 支持使用ports格式,例如200,302 or 200,204,401-429,501-503 + listen: 0.0.0.0 + transport: TCP # 支持 TCP 或者 UDP + users: + username1: password1 + username2: password2 + + - name: sudoku-in-1 + type: sudoku + port: 8443 # 仅支持单端口 + listen: 0.0.0.0 + key: "" # 如果你使用sudoku生成的ED25519密钥对,此处是密钥对中的公钥,当然,你也可以仅仅使用任意uuid充当key + aead-method: chacha20-poly1305 # 可选:chacha20-poly1305、aes-128-gcm、none(不建议;且 enable-pure-downlink=false 时不可用) + padding-min: 1 # 最小填充率(0-100) + padding-max: 15 # 最大填充率(0-100,必须 >= padding-min) + table-type: prefer_ascii # 可选值:prefer_ascii、prefer_entropy 前者全ascii映射,后者保证熵值(汉明1)低于3 + # custom-table: xpxvvpvv # 可选,自定义字节布局,必须包含2个x、2个p、4个v,可随意组合。启用此处则需配置`table-type`为`prefer_entropy` + # custom-tables: ["xpxvvpvv", "vxpvxvvp"] # 可选,自定义字节布局列表(x/v/p),用于 xvp 模式轮换;非空时覆盖 custom-table + handshake-timeout: 5 # 可选(秒) + enable-pure-downlink: false # 可选:false=带宽优化下行(更快,要求 aead-method != none);true=纯 Sudoku 下行 + disable-http-mask: false # 可选:禁用 http 掩码/隧道(默认为 false) + # http-mask-mode: legacy # 可选:legacy(默认)、stream(split-stream)、poll、auto(先 stream 再 poll);stream/poll/auto 支持走 CDN/反代 + # path-root: "" # 可选:HTTP 隧道端点一级路径前缀(双方需一致),例如 "aabbcc" 或 "/aabbcc/" => /aabbcc/session、/aabbcc/stream、/aabbcc/api/v1/upload + + + + - name: trojan-in-1 + type: trojan + port: 10819 # 支持使用ports格式,例如200,302 or 200,204,401-429,501-503 + listen: 0.0.0.0 + # rule: sub-rule-name1 # 默认使用 rules,如果未找到 sub-rule 则直接使用 rules + # proxy: proxy # 如果不为空则直接将该入站流量交由指定 proxy 处理 (当 proxy 不为空时,这里的 proxy 名称必须合法,否则会出错) + users: + - username: 1 + password: 9d0cb9d0-964f-4ef6-897d-6c6b3ccf9e68 + # ws-path: "/" # 如果不为空则开启 websocket 传输层 + # grpc-service-name: "GunService" # 如果不为空则开启 grpc 传输层 + # 下面两项如果填写则开启 tls(需要同时填写) + certificate: ./server.crt # 证书 PEM 格式,或者 证书的路径 + private-key: ./server.key # 证书对应的私钥 PEM 格式,或者私钥路径 + # 下面两项为mTLS配置项,如果client-auth-type设置为 "verify-if-given" 或 "require-and-verify" 则client-auth-cert必须不为空 + # client-auth-type: "" # 可选值:""、"request"、"require-any"、"verify-if-given"、"require-and-verify" + # client-auth-cert: string # 证书 PEM 格式,或者 证书的路径 + # 如果填写则开启ech(可由 mihomo generate ech-keypair <明文域名> 生成) + # ech-key: | + # -----BEGIN ECH KEYS----- + # ACATwY30o/RKgD6hgeQxwrSiApLaCgU+HKh7B6SUrAHaDwBD/g0APwAAIAAgHjzK + # madSJjYQIf9o1N5GXjkW4DEEeb17qMxHdwMdNnwADAABAAEAAQACAAEAAwAIdGVz + # dC5jb20AAA== + # -----END ECH KEYS----- + # 如果填写reality-config则开启reality(注意不可与certificate和private-key同时填写) + # reality-config: + # dest: test.com:443 + # private-key: jNXHt1yRo0vDuchQlIP6Z0ZvjT3KtzVI-T4E7RoLJS0 # 可由 mihomo generate reality-keypair 命令生成 + # short-id: + # - 0123456789abcdef + # server-names: + # - test.com + # #下列两个 limit 为选填,可对未通过验证的回落连接限速,bytesPerSec 默认为 0 即不启用 + # #回落限速是一种特征,不建议启用,如果您是面板/一键脚本开发者,务必让这些参数随机化 + # limit-fallback-upload: + # after-bytes: 0 # 传输指定字节后开始限速 + # bytes-per-sec: 0 # 基准速率(字节/秒) + # burst-bytes-per-sec: 0 # 突发速率(字节/秒),大于 bytesPerSec 时生效 + # limit-fallback-download: + # after-bytes: 0 # 传输指定字节后开始限速 + # bytes-per-sec: 0 # 基准速率(字节/秒) + # burst-bytes-per-sec: 0 # 突发速率(字节/秒),大于 bytesPerSec 时生效 + # ss-option: # like trojan-go's `shadowsocks` config + # enabled: false + # method: aes-128-gcm # aes-128-gcm/aes-256-gcm/chacha20-ietf-poly1305 + # password: "example" + ### 注意,对于trojan listener, 至少需要填写 “certificate和private-key” 或 “reality-config” 或 “ss-option” 的其中一项 ### + + - name: hysteria2-in-1 + type: hysteria2 + port: 10820 # 支持使用ports格式,例如200,302 or 200,204,401-429,501-503 + listen: 0.0.0.0 + # rule: sub-rule-name1 # 默认使用 rules,如果未找到 sub-rule 则直接使用 rules + # proxy: proxy # 如果不为空则直接将该入站流量交由指定 proxy 处理 (当 proxy 不为空时,这里的 proxy 名称必须合法,否则会出错) + users: + 00000000-0000-0000-0000-000000000000: PASSWORD_0 + 00000000-0000-0000-0000-000000000001: PASSWORD_1 + # certificate: ./server.crt # 证书 PEM 格式,或者 证书的路径 + # private-key: ./server.key # 证书对应的私钥 PEM 格式,或者私钥路径 + # 下面两项为mTLS配置项,如果client-auth-type设置为 "verify-if-given" 或 "require-and-verify" 则client-auth-cert必须不为空 + # client-auth-type: "" # 可选值:""、"request"、"require-any"、"verify-if-given"、"require-and-verify" + # client-auth-cert: string # 证书 PEM 格式,或者 证书的路径 + # 如果填写则开启ech(可由 mihomo generate ech-keypair <明文域名> 生成) + # ech-key: | + # -----BEGIN ECH KEYS----- + # ACATwY30o/RKgD6hgeQxwrSiApLaCgU+HKh7B6SUrAHaDwBD/g0APwAAIAAgHjzK + # madSJjYQIf9o1N5GXjkW4DEEeb17qMxHdwMdNnwADAABAAEAAQACAAEAAwAIdGVz + # dC5jb20AAA== + # -----END ECH KEYS----- + ## up 和 down 均不写或为 0 则使用 BBR 流控 + # up: "30 Mbps" # 若不写单位,默认为 Mbps + # down: "200 Mbps" # 若不写单位,默认为 Mbps + # obfs: salamander # 默认为空,如果填写则开启 obfs,目前仅支持 salamander + # obfs-password: yourpassword + # max-idle-time: 15000 + # alpn: + # - h3 + # ignore-client-bandwidth: false + # HTTP3 服务器认证失败时的行为 (URL 字符串配置),如果 masquerade 未配置,则返回 404 页 + # masquerade: file:///var/www # 作为文件服务器 + # masquerade: http://127.0.0.1:8080 #作为反向代理 + # masquerade: https://127.0.0.1:8080 #作为反向代理 + + # 注意,listeners中的tun仅提供给高级用户使用,普通用户应使用顶层配置中的tun - name: tun-in-1 type: tun # rule: sub-rule-name1 # 默认使用 rules,如果未找到 sub-rule 则直接使用 rules @@ -1184,6 +1776,7 @@ listeners: # - com.android.chrome # exclude-package: # 排除被路由的 Android 应用包名 # - com.android.captiveportallogin + # disable-icmp-forwarding: true # 禁用 ICMP 转发,防止某些情况下的 ICMP 环回问题,ping 将不会显示真实的延迟 # 入口配置与 Listener 等价,传入流量将和 socks,mixed 等入口一样按照 mode 所指定的方式进行匹配处理 # shadowsocks,vmess 入口配置(传入流量将和 socks,mixed 等入口一样按照 mode 所指定的方式进行匹配处理) # ss-config: ss://2022-blake3-aes-256-gcm:vlmpIPSyHH6f4S8WVPdRIHIlzmB+GIRfoH3aNJ/t9Gg=@:23456 diff --git a/luci-app-openclash/root/usr/share/openclash/res/game_rules.list b/luci-app-openclash/root/usr/share/openclash/res/game_rules.list deleted file mode 100644 index ac00e061..00000000 --- a/luci-app-openclash/root/usr/share/openclash/res/game_rules.list +++ /dev/null @@ -1,188 +0,0 @@ -300英雄,300hero-cn.rules -永恒之塔-台服,Aion-TW.rules -美国卡车模拟国际服,American-Truck-Simulator.rules -太空狼人杀,Among Us.rules -圣歌,Anthem.rules -Apex-uu,Apex-uu.rules -Apex英雄,Apex.rules -方舟:生存进化,ARK--Survival-Evolved.rules -武装突袭3,Arma3.rules -刺客信条:奥德赛,Assassin's-Creed-Odyssey.rules,Assassins-Creed-Odyssey.rules -刺客信条:起源,Assassin's-Creed-Origins.rules,Assassins-Creed-Origins.rules -Atlas-全区,Atlas.rules -战网,Battle-net-tw.rules -战地1,Battlefield-1.rules -战地4,BattleField-4.rules -戰地5,Battlefield-Ⅴ.rules,Battlefield-5.rules -黑色沙漠,Black-Desert.rules -黑色幸存者,BlackSurvivor.rules -灵剑台服,Blade&Soul TW.rules -剑灵-日服,Blade-&-Soul-jp.rules -剑灵-国服-南天国(测试版),Blood-&-Soul-CN-TestServer-NantianGuo-Alpha.rules -剑灵-国服全部区服(UU规则),Blood-&-Soul-CN.rules -无主之地3,Borderlands3-asia.rules -泡泡战士-跑跑卡丁车-韩服,BubbleFighter-KartRider-KR.rules -绕过大陆和局域网,BypassCNandLan.rules -绕过大陆和局域网someip,BypassCNandLan_someip.rules -使命召唤4:现代战争重置版,Call-Of-Duty-4-Modern-Warfare.rules -使命召唤16&19:现代战争I&II,Call-Of-Duty-Modern-Warfare.rules -使命召唤15亚服,Call-Of-Duty15-Asia.rules -使命召唤17:冷战,Call-Of-Duty17-ColdWar.rules -仅代理中国IP,China-IP-only.rules -英雄连2,Company-Of-Heroes-2.rules -反恐精英:全球攻势,CS-GO.rules -反恐精英:全球攻势-港服(tx),CSGO-HKtx.rules -反恐精英:全球攻势-港服(uu),CSGO-HKuu.rules -反恐精英:全球攻势-日服(tx),CSGO-JPtx.rules -反恐精英:全球攻势-美服(tx),CSGO-UStx.rules -黑暗之魂3,Dark-Souls-3.rules -不屈不挠,Dauntless.rules -DayZ steam,DayZ.rules -黎明杀机,Dead-by-Daylight.rules -命运2-全服(tx),Destiny2-Alltx.rules -命运2-全服(uu),Destiny2-Alluu.rules -天命2-亚服/命运2-亚服,Destiny2-Asia.rules -天命2-欧服/命运2-欧服,Destiny2-EU.rules -命运2-steam,Destiny2-steam.rules -天命2-美服/命运2-美服,Destiny2-US.rules -暗黑破坏神2:重制版,Diablo-2-Resurrected.rules -暗黑破坏神3-亚服,Diablo3-Asia.rules -暗黑破坏神3-美服,Diablo3-US.rules -暗黑破坏神4-港服,DiabloIV-HK.rules -脏弹-Steam,Dirty-Bomb.rules -Discord语音,Discord-All.rules -饥荒-steam,Don't-Starve-steam.rules,Dont-Starve-steam.rules -刀塔霸业,Dota-Underlords.rules -DOTA2-日服,Dota2-jp.rules -精英-危险,Elite-Dangerous.rules -逃离塔科夫,Escape-from-Tarkov.rules -欧卡2所有分区-UU,Euro-Truck-Simulator-2.rules -Eve-online欧服,Eve-online.rules -糖豆人,Fall-Guys.rules -FIFA19,FiFa19-INT.rules -FIFA20,FIFA20.rules -最终幻想14国服,FINAL-FANTASY-XIV-cn.rules -最终幻想14,Final-Fantasy-XIV.rules -荣耀战魂,For-Honour.rules -堡垒之夜亚服,Fortnite-AS.rules -堡垒之夜-国服,Fortnite-cn.rules -极限竞速地平线4,Forza-Horizon-4.rules -极限竞速地平线5,Forza-Horizon-5.rules -极限竞速7,Forza-Motorsport-7.rules -侠盗猎车手5,GTA-V.rules -基佬大乱斗Gang Beasts,Gang-Beasts.rules -原神-港澳台服,GenshinImpact.exe_SSTAP.rules -鹅鸭杀,Goose-Goose-Duck-HK.rules -Grand Theft Auto V,Grand Theft Auto V.rules -激战2,Guild-Wars-2.rules -巫师昆特牌国际服,Gwent_The-Witcher-Card-game.rules -光环:士官长合集,Halo-The-Master-Chief-Collection.rules -风暴英雄,heros of the storm-kr.rules -杀手2外服,HITMAN2.rules -荒野行动PC版-国服,HuangYeXingDong-cn.rules -猎杀对决,Hunt-Showdown-Asia.rules -叛乱:沙漠风暴,Insurgency-Sandstorm.rules -Jump大乱斗,Jump-Force.rules -跑跑卡丁车(韩服),KartRider.rules -酷狗回国,KuGou-cn.rules -Kurtzpel,Kurtzpel.rules -求生之路2-Test,L4D2-Test.rules -英雄联盟-日服,League-of-Legends-jp.rules -英雄联盟-韩服,League-of-Legends-kr.rules -英雄联盟PBE,League-of-Legends-PBE.rules -英雄联盟-台服+Garena平台(2018-12-19更新),League-of-Legends-tw+Garena(2018-12-19).rules -英雄联盟-台服,League-of-Legends-tw.rules -英雄联盟-美服,League-of-Legends-us.rules -致命公司,Lethal Company.rules -失落的方舟韩服,Lost-Ark.rules -失落的方舟俄服,Lostark-RU.rules -冒险岛,Maplestory-us.rules -心灵终结,MentalOmega.rules -微软模拟飞行年度版,Microsoft-Flight-Simulator-Game-Of-The-Year-Edition.rules -微软模拟飞行,Microsoft-Flight-Simulator.rules -巨硬商店,Microsoft-Srote.rules -我的世界-地下城,Minecraft-Dungeons.rules -传奇4-亚服,MIR4-asia.rules -误造,Miscreated.rules -怪兽世界猎人steam版,Monster-Hunter-World.rules -万智牌:竞技场-国际服,MTG-Arena.rules -奇迹传奇MU2,MU2.rules -NBA-2K19,NBA-2K19.rules -NBA2K20,NBA2K20.rules -仁王,NIOH.rules -橘子客户端-UU,Origin.rules -Osu!,Osu!.rules -守望先锋2,Overwatch-2-Asia-Singapore.rules -守望先锋-亚服,Overwatch-Asia.rules -守望先锋-美服,Overwatch-US.rules -流亡黯道-国际服,Path Of Exile.rules -流放之路,PathOfexile.rules -梦幻之星2-日服(tx),PHANTASY STAR ONLINE2-JPtx.rules -行星边际2,PlanetSide-2.rules -绝地求生大逃杀,PlayerUnknown's-Battlegrounds-update.rules,PlayerUnknowns-Battlegrounds-update.rules -实况足球-2018,Pro-Evolution-Soccer-2018.rules -实况足球-2019,Pro-Evolution-Soccer-2019.rules -绝地求生亚服&东南亚服,PUBG-Asia&-Southeast-Asia.rules -绝地求生亚服,PUBG-Asis.rules -绝地求生国际服,PUBG-INT.rules -绝地求生韩服,PUBG-kakao.rules -绝地求生低配版-Garena,PUBGLite-Garena.rules -绝地求生轻量版-WEB客户端,PUBGLITE-WEB.rules -R2竞技场服,R2Arena.rules -R2俄服官服,R2RU.rules -R2美服,R2US.rules -仙境传说2-us,Ragnarok-Online-2-us.rules -仙境传说OL台湾,Ragnarok-Online-tw.rules -荒野大镖客2,Red-dead-redemption2.rules -无限法则,Ring-of-Elysium-asia.rules -Roblox,Roblox.rules -Scum人渣-全球服,Scum.rules -影之诗,Shadowverse.rules -不代理中国IP且绕过局域网(精简版CNIP表),Skip-all-China-IP-mini-and-LAN.rules -灵魂行者-台服,Soul-Worker.rules -星际公民,Star-Citizen.rules -星球大战2前线,Star-Wars-BattlefrontII.rules -StarCraft 2 亚服,StarCraft-2-asia.rules -星际争霸2国服,StarCraftⅡ-cn.rules -星露谷物语,Stardew Valley.rules -Steam-社区(Beta),Steam.rules -极限巅峰,Steep.rules -街头霸王5,Street-Fighter-V.rules -仅代理Telegram,Telegram.rules -神谕之战,TERA.rules -飙酷车神,The-Crew.rules -飙酷车神2,The-Crew2.rules -上古卷轴OL,The-Elder-Scrolls-Online.rules -天涯明月刀-台服,TianYaMingYueDao-tw.rules -泰坦陨落2,TiTanFall2.rules -新枫之谷,TMS.rules -幽灵行动:荒野,Tom-Clancy's-Ghost-Recon-Wildlands.rules,Tom-Clancys-Ghost-Recon-Wildlands.rules -彩虹六号-异种-全部,Tom-Clancy's-Rainbow-Six-Extraction-all.rules,Tom-Clancys-Rainbow-Six-Extraction-all.rules -彩虹六号-围攻-全部,Tom-Clancy's-Rainbow-Six-Siege-all.rules,Tom-Clancys-Rainbow-Six-Siege-all.rules -彩虹六号-围攻-EAS,Tom-Clancy's-Rainbow-Six-Siege-EAS.rules,Tom-Clancys-Rainbow-Six-Siege-EAS.rules -全境封锁2,Tom-clancy's-The-Division-2.rules,Tom-clancys-The-Division-2.rules -全境封锁,Tom-clancy's-The-Division.rules,Tom-clancys-The-Division.rules -Twitch直播,Twitch.rules -未转变者Unturned,Unturned.rules -无畏契约,Valorant.rules -VRchat,VRchat.rules -战争雷霆-steam,War-thunder-steam.rules -战争前线,Warface.rules -星际战甲,Warframe.rules -看门狗,Watch-Dogs.rules -看门狗2,Watch-Dogs2.rules -求生意志OL,Will-To-Live-Online.rules -坦克世界-亚服,World-of-Tanks-Asia.rules -坦克世界闪电战,World-of-Tanks-Blitz.rules -坦克世界-国服,World-of-Tanks-cn.rules -魔兽世界台服,World-of-warcraft-tw.rules -战舰世界国服UU,World-of-Warships-CN.rules -战舰世界欧服,World-of-warships-EU.rules -战舰世界-美服,World-of-Warships-US.rules -战舰世界-亚服,World-of-Warships.rules -World War 3,World-War-3.rules -僵尸世界大战,Worldwar-Z.rules -魔兽世界-欧服,WoW-EU.rules -游戏王决斗链接,YO-GI-HO delulinks.rules -游侠对战平台,YouXiaDuiZhanPingTai.rules -YY语音,YY-cn.rules diff --git a/luci-app-openclash/root/usr/share/openclash/res/lhie1.yaml b/luci-app-openclash/root/usr/share/openclash/res/lhie1.yaml deleted file mode 100644 index 7522d92a..00000000 --- a/luci-app-openclash/root/usr/share/openclash/res/lhie1.yaml +++ /dev/null @@ -1,438 +0,0 @@ -rules: -- RULE-SET,AdBlock,AdBlock -- RULE-SET,HTTPDNS,HTTPDNS -- RULE-SET,Special,DIRECT -- RULE-SET,Netflix,Netflix -- RULE-SET,Disney Plus,Disney Plus -- RULE-SET,YouTube,YouTube -- RULE-SET,Max,Max -- RULE-SET,Spotify,Spotify -- RULE-SET,Abema TV,Asian TV -- RULE-SET,Bahamut,Asian TV -- RULE-SET,DMM,Asian TV -- RULE-SET,Fox+,Asian TV -- RULE-SET,Hulu Japan,Asian TV -- RULE-SET,IQ,Asian TV -- RULE-SET,Japonx,Asian TV -- RULE-SET,JOOX,Asian TV -- RULE-SET,KKBOX,Asian TV -- RULE-SET,KKTV,Asian TV -- RULE-SET,Line TV,Asian TV -- RULE-SET,myTV SUPER,Asian TV -- RULE-SET,Niconico,Asian TV -- RULE-SET,ViuTV,Asian TV -- RULE-SET,ABC,Global TV -- RULE-SET,Amazon,Global TV -- RULE-SET,BBC iPlayer,Global TV -- RULE-SET,DAZN,Global TV -- RULE-SET,Discovery Plus,Global TV -- RULE-SET,encoreTVB,Global TV -- RULE-SET,F1 TV,Global TV -- RULE-SET,Fox Now,Global TV -- RULE-SET,Hulu,Global TV -- RULE-SET,Pandora,Global TV -- RULE-SET,PBS,Global TV -- RULE-SET,Pornhub,Global TV -- RULE-SET,Soundcloud,Global TV -- RULE-SET,Bilibili,CN Mainland TV -- RULE-SET,IQIYI,CN Mainland TV -- RULE-SET,Letv,CN Mainland TV -- RULE-SET,Netease Music,CN Mainland TV -- RULE-SET,Tencent Video,CN Mainland TV -- RULE-SET,WeTV,CN Mainland TV -- RULE-SET,Youku,CN Mainland TV -- RULE-SET,Telegram,Telegram -- RULE-SET,Crypto,Crypto -- RULE-SET,Discord,Discord -- RULE-SET,Google FCM,Google FCM -- RULE-SET,Microsoft,Microsoft -- RULE-SET,AI Suite,AI Suite -- RULE-SET,PayPal,PayPal -- RULE-SET,Scholar,Scholar -- RULE-SET,Speedtest,Speedtest -- RULE-SET,Steam,Steam -- RULE-SET,TikTok,TikTok -- RULE-SET,Apple Music,Apple TV -- RULE-SET,Apple News,Apple TV -- RULE-SET,Apple TV,Apple TV -- RULE-SET,Apple,Apple -- RULE-SET,miHoYo,miHoYo -- RULE-SET,PROXY,Proxy -- RULE-SET,Domestic,Domestic -- RULE-SET,Domestic IPs,Domestic -- RULE-SET,LAN,DIRECT -- GEOIP,CN,Domestic -- MATCH,Others -rule-providers: - AdBlock: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/AdBlock.yaml - path: "./Rules/AdBlock" - interval: 86400 - HTTPDNS: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/HTTPDNS.yaml - path: "./Rules/HTTPDNS" - interval: 86400 - Special: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Special.yaml - path: "./Rules/Special" - interval: 86400 - PROXY: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Proxy.yaml - path: "./Rules/Proxy" - interval: 86400 - Domestic: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Domestic.yaml - path: "./Rules/Domestic" - interval: 86400 - Domestic IPs: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Domestic%20IPs.yaml - path: "./Rules/Domestic_IPs" - interval: 86400 - LAN: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/LAN.yaml - path: "./Rules/LAN" - interval: 86400 - Netflix: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Netflix.yaml - path: "./Rules/Media/Netflix" - interval: 86400 - Spotify: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Spotify.yaml - path: "./Rules/Media/Spotify" - interval: 86400 - YouTube: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/YouTube.yaml - path: "./Rules/Media/YouTube" - interval: 86400 - Max: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Max.yaml - path: "./Rules/Media/Max" - interval: 86400 - Bilibili: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Bilibili.yaml - path: "./Rules/Media/Bilibili" - interval: 86400 - IQ: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/IQ.yaml - path: "./Rules/Media/IQI" - interval: 86400 - IQIYI: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/IQIYI.yaml - path: "./Rules/Media/IQYI" - interval: 86400 - Letv: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Letv.yaml - path: "./Rules/Media/Letv" - interval: 86400 - Netease Music: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Netease%20Music.yaml - path: "./Rules/Media/Netease_Music" - interval: 86400 - Tencent Video: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Tencent%20Video.yaml - path: "./Rules/Media/Tencent_Video" - interval: 86400 - Youku: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Youku.yaml - path: "./Rules/Media/Youku" - interval: 86400 - WeTV: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/WeTV.yaml - path: "./Rules/Media/WeTV" - interval: 86400 - ABC: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/ABC.yaml - path: "./Rules/Media/ABC" - interval: 86400 - Abema TV: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Abema%20TV.yaml - path: "./Rules/Media/Abema_TV" - interval: 86400 - Amazon: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Amazon.yaml - path: "./Rules/Media/Amazon" - interval: 86400 - Apple Music: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Apple%20Music.yaml - path: "./Rules/Media/Apple_Music" - interval: 86400 - Apple News: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Apple%20News.yaml - path: "./Rules/Media/Apple_News" - interval: 86400 - Apple TV: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Apple%20TV.yaml - path: "./Rules/Media/Apple_TV" - interval: 86400 - Bahamut: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Bahamut.yaml - path: "./Rules/Media/Bahamut" - interval: 86400 - BBC iPlayer: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/BBC%20iPlayer.yaml - path: "./Rules/Media/BBC_iPlayer" - interval: 86400 - DAZN: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/DAZN.yaml - path: "./Rules/Media/DAZN" - interval: 86400 - Discovery Plus: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Discovery%20Plus.yaml - path: "./Rules/Media/Discovery_Plus" - interval: 86400 - Disney Plus: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Disney%20Plus.yaml - path: "./Rules/Media/Disney_Plus" - interval: 86400 - DMM: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/DMM.yaml - path: "./Rules/Media/DMM" - interval: 86400 - encoreTVB: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/encoreTVB.yaml - path: "./Rules/Media/encoreTVB" - interval: 86400 - F1 TV: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/F1%20TV.yaml - path: "./Rules/Media/F1_TV" - interval: 86400 - Fox Now: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Fox%20Now.yaml - path: "./Rules/Media/Fox_Now" - interval: 86400 - Fox+: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Fox%2B.yaml - path: "./Rules/Media/Fox+" - interval: 86400 - Hulu Japan: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Hulu%20Japan.yaml - path: "./Rules/Media/Hulu_Japan" - interval: 86400 - Hulu: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Hulu.yaml - path: "./Rules/Media/Hulu" - interval: 86400 - Japonx: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Japonx.yaml - path: "./Rules/Media/Japonx" - interval: 86400 - JOOX: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/JOOX.yaml - path: "./Rules/Media/JOOX" - interval: 86400 - KKBOX: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/KKBOX.yaml - path: "./Rules/Media/KKBOX" - interval: 86400 - KKTV: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/KKTV.yaml - path: "./Rules/Media/KKTV" - interval: 86400 - Line TV: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Line%20TV.yaml - path: "./Rules/Media/Line_TV" - interval: 86400 - myTV SUPER: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/myTV%20SUPER.yaml - path: "./Rules/Media/myTV_SUPER" - interval: 86400 - Niconico: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Niconico.yaml - path: "./Rules/Media/Niconico" - interval: 86400 - Pandora: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Pandora.yaml - path: "./Rules/Media/Pandora" - interval: 86400 - PBS: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/PBS.yaml - path: "./Rules/Media/PBS" - interval: 86400 - Pornhub: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Pornhub.yaml - path: "./Rules/Media/Pornhub" - interval: 86400 - Soundcloud: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Soundcloud.yaml - path: "./Rules/Media/Soundcloud" - interval: 86400 - ViuTV: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/ViuTV.yaml - path: "./Rules/Media/ViuTV" - interval: 86400 - Telegram: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Telegram.yaml - path: "./Rules/Telegram" - interval: 86400 - Crypto: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Crypto.yaml - path: "./Rules/Crypto" - interval: 86400 - Discord: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Discord.yaml - path: "./Rules/Discord" - interval: 86400 - Steam: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Steam.yaml - path: "./Rules/Steam" - interval: 86400 - TikTok: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/TikTok.yaml - path: "./Rules/TikTok" - interval: 86400 - Speedtest: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Speedtest.yaml - path: "./Rules/Speedtest" - interval: 86400 - PayPal: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/PayPal.yaml - path: "./Rules/PayPal" - interval: 86400 - Microsoft: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Microsoft.yaml - path: "./Rules/Microsoft" - interval: 86400 - AI Suite: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/AI%20Suite.yaml - path: "./Rules/AI Suite" - interval: 86400 - Apple: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Apple.yaml - path: "./Rules/Apple" - interval: 86400 - Google FCM: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Google%20FCM.yaml - path: "./Rules/Google FCM" - interval: 86400 - Scholar: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Scholar.yaml - path: "./Rules/Scholar" - interval: 86400 - miHoYo: - type: http - behavior: classical - url: https://testingcf.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/miHoYo.yaml - path: "./Rules/miHoYo" - interval: 86400 diff --git a/luci-app-openclash/root/usr/share/openclash/res/rule_providers.list b/luci-app-openclash/root/usr/share/openclash/res/rule_providers.list deleted file mode 100644 index 5083d9fc..00000000 --- a/luci-app-openclash/root/usr/share/openclash/res/rule_providers.list +++ /dev/null @@ -1,96 +0,0 @@ -放行规则-lhie1(建议置顶并直连),lhie1,classical,dler-io/Rules/master/Clash/Provider/,Special.yaml -放行规则-ACL4SSR(建议置顶并直连),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/,UnBan.yaml -国内IP白名单(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/,Domestic IPs.yaml -国内域名白名单(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/,Domestic.yaml -国外常用网站合集(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/,Proxy.yaml -广告规则(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/,AdBlock.yaml -微软服务,lhie1,classical,dler-io/Rules/master/Clash/Provider/,Microsoft.yaml -HTTPDNS(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/,HTTPDNS.yaml -ABC,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,ABC.yaml -Abema TV,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Abema TV.yaml -AbemaTV(By ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,AbemaTV.yaml,AbemaTV-ACL4SSR.yaml -Adobe,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Adobe.yaml -AI Suite,lhie1,classical,dler-io/Rules/master/Clash/Provider/,AI Suite.yaml -Amazon(By ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Amazon.yaml,Amazon-ACL4SSR.yaml -Amazon,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Amazon.yaml -AmazonIp,ACL4SSR,ipcidr,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,AmazonIp.yaml -Apple News(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Apple News.yaml -Apple TV(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Apple TV.yaml -Apple(By ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Apple.yaml,Apple-ACL4SSR.yaml -Apple(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/,Apple.yaml,Apple-lhie1.yaml -BBC iPlayer,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,BBC iPlayer.yaml -Bahamut(By ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Bahamut.yaml,Bahamut-ACL4SSR.yaml -Bahamut(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Bahamut.yaml,Bahamut-lhie1.yaml -BanAD,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/,BanAD.yaml -BanEasyList,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/,BanEasyList.yaml -BanEasyListChina,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/,BanEasyListChina.yaml -BanEasyPrivacy,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/,BanEasyPrivacy.yaml -BanProgramAD,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/,BanProgramAD.yaml -Bilibili(By ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Bilibili.yaml,Bilibili-ACL4SSR.yaml -Bilibili,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Bilibili.yaml -BilibiliHMT,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,BilibiliHMT.yaml -Blizzard,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Blizzard.yaml -ChinaCompanyIp,ACL4SSR,ipcidr,ACL4SSR/ACL4SSR/master/Clash/Providers/,ChinaCompanyIp.yaml -ChinaDomain,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/,ChinaDomain.yaml -ChinaIp(By ACL4SSR),ACL4SSR,ipcidr,ACL4SSR/ACL4SSR/master/Clash/Providers/,ChinaIp.yaml,ChinaIp-ACL4SSR.yaml -ChinaMedia,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/,ChinaMedia.yaml -DAZN(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,DAZN.yaml,DAZN-lhie1.yaml -Developer,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Developer.yaml -Disney Plus,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Disney Plus.yaml -DisneyPlus(By ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,DisneyPlus.yaml,DisneyPlus-ACL4SSR.yaml -Download,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/,Download.yaml -EHGallery,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,EHGallery.yaml -Epic,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Epic.yaml -Fox Now,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Fox Now.yaml -Fox+,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Fox+.yaml -Google,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Google.yaml -GoogleCN,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,GoogleCN.yaml -GoogleFCM,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,GoogleFCM.yaml -HBO(By ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,HBO.yaml,HBO-ACL4SSR.yaml -HBO MAX(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Max.yaml,MAX-lhie1.yaml -Hulu Japan,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Hulu Japan.yaml -Hulu(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Hulu.yaml,Hulu-lhie1.yaml -JOOX(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,JOOX.yaml,JOOX-lhie1.yaml -Japonx,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Japonx.yaml -KKBOX(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,KKBOX.yaml,KKBOX-lhie1.yaml -KKTV(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,KKTV.yaml,KKTV-lhie1.yaml -Letv,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Letv.yaml -Line TV,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Line TV.yaml -LocalAreaNetwork,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/,LocalAreaNetwork.yaml -MOO,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,MOO.yaml -Microsoft(By ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Microsoft.yaml,Microsoft-ACL4SSR.yaml -NetEaseMusic,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,NetEaseMusic.yaml -Netease Music,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Netease Music.yaml -Netflix(By ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Netflix.yaml,Netflix-ACL4SSR.yaml -Netflix(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Netflix.yaml,Netflix-lhie1.yaml -OneDrive(By ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,OneDrive.yaml,OneDrive-ACL4SSR.yaml -PBS(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,PBS.yaml,PBS-lhie1.yaml -Pandora(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Pandora.yaml,Pandora-lhie1.yaml -PayPal(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/,PayPal.yaml,PayPal-lhie1.yaml -Porn,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Porn.yaml -Pornhub(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Pornhub.yaml,Pornhub-lhie1.yaml -ProxyGFWlist,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/,ProxyGFWlist.yaml -ProxyLite,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/,ProxyLite.yaml -ProxyMedia,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/,ProxyMedia.yaml -Scholar(By ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Scholar.yaml,Scholar-ACL4SSR.yaml -Sony,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Sony.yaml -Soundcloud(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Soundcloud.yaml,Soundcloud-lhie1.yaml -Speedtest,lhie1,classical,dler-io/Rules/master/Clash/Provider/,Speedtest.yaml -Spotify(By ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Spotify.yaml,Spotify-ACL4SSR.yaml -Spotify(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Spotify.yaml,Spotify-lhie1.yaml -Steam(By ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Steam.yaml,Steam-ACL4SSR.yaml -Steam,lhie1,classical,dler-io/Rules/master/Clash/Provider/,Steam.yaml -SteamCN,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,SteamCN.yaml -Telegram(By ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Telegram.yaml,Telegram-ACL4SSR.yaml -Telegram(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/,Telegram.yaml,Telegram-lhie1.yaml -Tencent Video,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Tencent Video.yaml -ViuTV(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,ViuTV.yaml,ViuTV-lhie1.yaml -Xbox,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Xbox.yaml -YouTube Music,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,YouTube Music.yaml -YouTube(By ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,YouTube.yaml,YouTube-ACL4SSR.yaml -YouTube(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,YouTube.yaml,YouTube-lhie1.yaml -Youku,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Youku.yaml -encoreTVB(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,encoreTVB.yaml,encoreTVB-lhie1.yaml -IQIYI,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,IQIYI.yaml -IQ,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,IQ.yaml -myTV SUPER,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,myTV SUPER.yaml \ No newline at end of file diff --git a/luci-app-openclash/root/usr/share/openclash/res/sub_ini.list b/luci-app-openclash/root/usr/share/openclash/res/sub_ini.list index a98cf567..3fd34a55 100644 --- a/luci-app-openclash/root/usr/share/openclash/res/sub_ini.list +++ b/luci-app-openclash/root/usr/share/openclash/res/sub_ini.list @@ -1,9 +1,6 @@ 默认(附带用于Clash的AdGuard DNS),default_with_clash_adg.yml,https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/default_with_clash_adg.yml 无Urltest,no_urltest.ini,https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/no_urltest.ini 带Urltest,urltest.ini,https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/urltest.ini -ConnersHua 神机规则 Pro,connershua_pro.ini,https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/connershua_new.ini -lhie1 洞主规则(使用 Clash 分组规则),lhie1_clash.ini,https://gist.githubusercontent.com/vernesong/4c27ed54ab2a5fedd9c4011389ac11ed/raw/lhie1_clash.ini -lhie1 洞主规则完整版,lhie1_dler.ini,https://gist.githubusercontent.com/vernesong/4c27ed54ab2a5fedd9c4011389ac11ed/raw/lhie1_dler.ini ACL4SSR 规则标准版,ACL4SSR.ini,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR.ini ACL4SSR 规则 AdblockPlus,ACL4SSR_AdblockPlus.ini,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_AdblockPlus.ini ACL4SSR 规则 BackCN,ACL4SSR_BackCN.ini,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_BackCN.ini diff --git a/luci-app-openclash/root/usr/share/openclash/ruby.sh b/luci-app-openclash/root/usr/share/openclash/ruby.sh index 2fdcd86c..ef7cabcb 100755 --- a/luci-app-openclash/root/usr/share/openclash/ruby.sh +++ b/luci-app-openclash/root/usr/share/openclash/ruby.sh @@ -8,9 +8,23 @@ write_ruby_part() fi if [ "$OVERWRITE_PARENT" = "yaml_overwrite" ]; then mkdir -p /tmp/yaml_openclash_ruby_parts 2>/dev/null - echo "$part" >> "/tmp/yaml_openclash_ruby_parts/$sid" + echo "threads << Thread.new do begin $part; rescue Exception => e; YAML.LOG_ERROR('Set Custom Overwrite Script Failed,【%s】' % [e.message]); end; end" >> "/tmp/yaml_openclash_ruby_parts/$sid" else - echo "$part" >> /tmp/yaml_openclash_ruby_parse + echo "threads << Thread.new do begin $part; rescue Exception => e; YAML.LOG_ERROR('Set Custom Overwrite Script Failed,【%s】' % [e.message]); end; end" >> /tmp/yaml_openclash_ruby_parse + fi +} + +run_ruby_part() +{ + local part="$1" show_error="${2:-true}" + if [ -z "$part" ]; then + return + fi + + if [ "$show_error" = "false" ] || [ "$show_error" = "0" ]; then + ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "begin $part; end" 2>/dev/null + else + ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "begin $part; rescue Exception => e; YAML.LOG_ERROR('Set Custom Overwrite Script Failed,【%s】' % [e.message]); end" 2>/dev/null fi } @@ -37,13 +51,13 @@ ruby_read() { local RUBY_YAML_PARSE if [ -z "$1" ] || [ -z "$2" ]; then - return + return fi -RUBY_YAML_PARSE="Value = YAML.load_file('$1'); puts Value$2" +RUBY_YAML_PARSE="Value = YAML.load_file('$1'); if Value$2 then puts Value$2 end" if [ -n "$(echo "$2" |grep '.to_yaml' 2>/dev/null)" ]; then - ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null |sed '1d' 2>/dev/null + run_ruby_part "$RUBY_YAML_PARSE" "false" |sed '1d' 2>/dev/null else - ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null + run_ruby_part "$RUBY_YAML_PARSE" "false" fi } @@ -51,213 +65,234 @@ ruby_read_hash() { local RUBY_YAML_PARSE if [ -z "$1" ] || [ -z "$2" ]; then - return + return fi -RUBY_YAML_PARSE="Value = $1; puts Value$2" -ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null +RUBY_YAML_PARSE="Value = $1; if Value$2 then puts Value$2 end" +run_ruby_part "$RUBY_YAML_PARSE" "false" } ruby_read_hash_arr() { local RUBY_YAML_PARSE if [ -z "$1" ] || [ -z "$2" ]; then - return + return fi -RUBY_YAML_PARSE="Value = YAML.load_file('$1'); Value$2.each do |i| puts i$3 end" -ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null +RUBY_YAML_PARSE="Value = YAML.load_file('$1'); if Value$2 then Value$2.each do |i| if i$3 then puts i$3 end; end; end" +run_ruby_part "$RUBY_YAML_PARSE" "false" } ruby_edit() { local RUBY_YAML_PARSE if [ -z "$1" ] || [ -z "$2" ]; then - return + return fi if openclash_custom_overwrite; then RUBY_YAML_PARSE="yaml_file_path='$1'; Value$2=$3" - write_ruby_part "threads << Thread.new do $RUBY_YAML_PARSE end" + write_ruby_part "$RUBY_YAML_PARSE" return fi RUBY_YAML_PARSE="Value = YAML.load_file('$1'); Value$2=$3; File.open('$1','w') {|f| YAML.dump(Value, f)}" -ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null +run_ruby_part "$RUBY_YAML_PARSE" } ruby_cover() { local RUBY_YAML_PARSE if [ -z "$1" ] || [ -z "$2" ]; then - return + return fi if openclash_custom_overwrite; then RUBY_YAML_PARSE="yaml_file_path='$1'; if File::exist?('$3') then Value_1 = YAML.load_file('$3'); if not '$4'.empty? then Value$2=Value_1['$4']; else Value$2=Value_1 end else if not '$4'.empty? then Value.delete('$4'); end; end" - write_ruby_part "threads << Thread.new do $RUBY_YAML_PARSE end" + write_ruby_part "$RUBY_YAML_PARSE" return fi RUBY_YAML_PARSE="Value = YAML.load_file('$1'); if File::exist?('$3') then Value_1 = YAML.load_file('$3'); if not '$4'.empty? then Value$2=Value_1['$4']; else Value$2=Value_1 end else if not '$4'.empty? then Value.delete('$4'); end; end; File.open('$1','w') {|f| YAML.dump(Value, f)}" -ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null +run_ruby_part "$RUBY_YAML_PARSE" } ruby_merge() { local RUBY_YAML_PARSE -if [ -z "$1" ] || [ -z "$2" ]; then - return -fi -if openclash_custom_overwrite; then - RUBY_YAML_PARSE="yaml_file_path='$1'; Value_1 = YAML.load_file('$3'); Value$2.merge!(Value_1$4)" - write_ruby_part "threads << Thread.new do $RUBY_YAML_PARSE end" +if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ]; then return fi -RUBY_YAML_PARSE="Value = YAML.load_file('$1'); Value_1 = YAML.load_file('$3'); Value$2.merge!(Value_1$4); File.open('$1','w') {|f| YAML.dump(Value, f)}" -ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null +if openclash_custom_overwrite; then + RUBY_YAML_PARSE="yaml_file_path='$1'; Value_1 = YAML.load_file('$3'); if not Value$2 then Value$2 = {}; end; if Value_1$4 && Value_1$4.is_a?(Hash) then Value$2.merge!(Value_1$4) end" + write_ruby_part "$RUBY_YAML_PARSE" + return +fi +RUBY_YAML_PARSE="Value = YAML.load_file('$1'); if File::exist?('$3') then Value_1 = YAML.load_file('$3'); if not Value$2 then Value$2 = {}; end; if Value_1$4 && Value_1$4.is_a?(Hash) then Value$2.merge!(Value_1$4) end end; File.open('$1','w') {|f| YAML.dump(Value, f)}" +run_ruby_part "$RUBY_YAML_PARSE" } ruby_uniq() { local RUBY_YAML_PARSE if [ -z "$1" ] || [ -z "$2" ]; then - return -fi -if openclash_custom_overwrite; then - RUBY_YAML_PARSE="yaml_file_path='$1'; Value$2=Value$2.uniq" - write_ruby_part "threads << Thread.new do $RUBY_YAML_PARSE end" return fi -RUBY_YAML_PARSE="Value = YAML.load_file('$1'); Value$2=Value$2.uniq; File.open('$1','w') {|f| YAML.dump(Value, f)}" -ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null +if openclash_custom_overwrite; then + RUBY_YAML_PARSE="yaml_file_path='$1'; if Value$2 then Value$2=Value$2.uniq; end" + write_ruby_part "$RUBY_YAML_PARSE" + return +fi +RUBY_YAML_PARSE="Value = YAML.load_file('$1'); if Value$2 then Value$2=Value$2.uniq; end; File.open('$1','w') {|f| YAML.dump(Value, f)}" +run_ruby_part "$RUBY_YAML_PARSE" } ruby_merge_hash() { local RUBY_YAML_PARSE -if [ -z "$1" ] || [ -z "$2" ]; then - return -fi -if openclash_custom_overwrite; then - RUBY_YAML_PARSE="yaml_file_path='$1'; Value$2.merge!($3)" - write_ruby_part "threads << Thread.new do $RUBY_YAML_PARSE end" +if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ]; then return fi -RUBY_YAML_PARSE="Value = YAML.load_file('$1'); Value$2.merge!($3); File.open('$1','w') {|f| YAML.dump(Value, f)}" -ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null +if openclash_custom_overwrite; then + RUBY_YAML_PARSE="yaml_file_path='$1'; if not Value$2 then Value$2 = {}; end; Value$2.merge!({$3})" + write_ruby_part "$RUBY_YAML_PARSE" + return +fi +RUBY_YAML_PARSE="Value = YAML.load_file('$1'); if not Value$2 then Value$2 = {}; end; Value$2.merge!({$3}); File.open('$1','w') {|f| YAML.dump(Value, f)}" +run_ruby_part "$RUBY_YAML_PARSE" } ruby_arr_add_file() { local RUBY_YAML_PARSE -if [ -z "$1" ] || [ -z "$2" ]; then - return -fi -if openclash_custom_overwrite; then - RUBY_YAML_PARSE="yaml_file_path='$1'; Value_1 = YAML.load_file('$4'); Value_1$5.reverse.each{|x| Value$2.insert($3,x)}; Value$2=Value$2.uniq" - write_ruby_part "threads << Thread.new do $RUBY_YAML_PARSE end" +if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ] || [ -z "$4" ] || [ -z "$5" ]; then return fi -RUBY_YAML_PARSE="Value = YAML.load_file('$1'); Value_1 = YAML.load_file('$4'); Value_1$5.reverse.each{|x| Value$2.insert($3,x)}; Value$2=Value$2.uniq; File.open('$1','w') {|f| YAML.dump(Value, f)}" -ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null +if openclash_custom_overwrite; then + RUBY_YAML_PARSE="yaml_file_path='$1'; if File::exist?('$4') then Value_1 = YAML.load_file('$4'); if not Value$2 or Value$2.nil? then Value$2 = []; end; if Value_1$5 && Value_1$5.is_a?(Array) then idx = [$3.to_i, 0].max; idx = [idx, Value$2.length].min; Value_1$5.reverse.each{|x| Value$2.insert(idx,x); idx += 1}; Value$2=Value$2.uniq end end" + write_ruby_part "$RUBY_YAML_PARSE" + return +fi +RUBY_YAML_PARSE="Value = YAML.load_file('$1'); if File::exist?('$4') then Value_1 = YAML.load_file('$4'); if not Value$2 or Value$2.nil? then Value$2 = []; end; if Value_1$5 && Value_1$5.is_a?(Array) then idx = [$3.to_i, 0].max; idx = [idx, Value$2.length].min; Value_1$5.reverse.each{|x| Value$2.insert(idx,x); idx += 1}; Value$2=Value$2.uniq end end; File.open('$1','w') {|f| YAML.dump(Value, f)}" +run_ruby_part "$RUBY_YAML_PARSE" } ruby_arr_head_add_file() { local RUBY_YAML_PARSE -if [ -z "$1" ] || [ -z "$2" ]; then - return -fi -if openclash_custom_overwrite; then - RUBY_YAML_PARSE="yaml_file_path='$1'; Value_1 = YAML.load_file('$3'); Value$2=(Value_1$4+Value$2).uniq" - write_ruby_part "threads << Thread.new do $RUBY_YAML_PARSE end" +if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ] || [ -z "$4" ]; then return fi -RUBY_YAML_PARSE="Value = YAML.load_file('$1'); Value_1 = YAML.load_file('$3'); Value$2=(Value_1$4+Value$2).uniq; File.open('$1','w') {|f| YAML.dump(Value, f)}" -ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null +if openclash_custom_overwrite; then + RUBY_YAML_PARSE="yaml_file_path='$1'; if File::exist?('$3') then Value_1 = YAML.load_file('$3'); if not Value$2 or Value$2.nil? then Value$2 = []; end; if Value_1$4 && Value_1$4.is_a?(Array) then Value$2=(Value_1$4+Value$2).uniq else Value$2=Value$2.uniq end end" + write_ruby_part "$RUBY_YAML_PARSE" + return +fi +RUBY_YAML_PARSE="Value = YAML.load_file('$1'); if File::exist?('$3') then Value_1 = YAML.load_file('$3'); if not Value$2 or Value$2.nil? then Value$2 = []; end; if Value_1$4 && Value_1$4.is_a?(Array) then Value$2=(Value_1$4+Value$2).uniq else Value$2=Value$2.uniq end end; File.open('$1','w') {|f| YAML.dump(Value, f)}" +run_ruby_part "$RUBY_YAML_PARSE" } ruby_arr_insert() { local RUBY_YAML_PARSE -if [ -z "$1" ] || [ -z "$2" ]; then - return -fi -if openclash_custom_overwrite; then - RUBY_YAML_PARSE="yaml_file_path='$1'; if not Value$2 or Value$2.nil? then Value$2 = []; end; Value$2=Value$2.insert($3,'$4').uniq" - write_ruby_part "threads << Thread.new do $RUBY_YAML_PARSE end" +if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ] || [ -z "$4" ]; then return fi -RUBY_YAML_PARSE="Value = YAML.load_file('$1'); if not Value$2 or Value$2.nil? then Value$2 = []; end; Value$2=Value$2.insert($3,'$4').uniq; File.open('$1','w') {|f| YAML.dump(Value, f)}" -ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null +if openclash_custom_overwrite; then + RUBY_YAML_PARSE="yaml_file_path='$1'; if not Value$2 or Value$2.nil? then Value$2 = []; end; idx = [$3.to_i, 0].max; idx = [idx, Value$2.length].min; Value$2=Value$2.insert(idx,'$4').uniq" + write_ruby_part "$RUBY_YAML_PARSE" + return +fi +RUBY_YAML_PARSE="Value = YAML.load_file('$1'); if not Value$2 or Value$2.nil? then Value$2 = []; end; idx = [$3.to_i, 0].max; idx = [idx, Value$2.length].min; Value$2=Value$2.insert(idx,'$4').uniq; File.open('$1','w') {|f| YAML.dump(Value, f)}" +run_ruby_part "$RUBY_YAML_PARSE" } ruby_arr_insert_hash() { local RUBY_YAML_PARSE -if [ -z "$1" ] || [ -z "$2" ]; then - return -fi -if openclash_custom_overwrite; then - RUBY_YAML_PARSE="yaml_file_path='$1'; if not Value$2 or Value$2.nil? then Value$2 = []; end; Value$2=Value$2.insert($3,$4).uniq" - write_ruby_part "threads << Thread.new do $RUBY_YAML_PARSE end" +if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ] || [ -z "$4" ]; then return fi -RUBY_YAML_PARSE="Value = YAML.load_file('$1'); if not Value$2 or Value$2.nil? then Value$2 = []; end; Value$2=Value$2.insert($3,$4).uniq; File.open('$1','w') {|f| YAML.dump(Value, f)}" -ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null +if openclash_custom_overwrite; then + RUBY_YAML_PARSE="yaml_file_path='$1'; if not Value$2 or Value$2.nil? then Value$2 = []; end; idx = [$3.to_i, 0].max; idx = [idx, Value$2.length].min; Value$2=Value$2.insert(idx,$4).uniq" + write_ruby_part "$RUBY_YAML_PARSE" + return +fi +RUBY_YAML_PARSE="Value = YAML.load_file('$1'); if not Value$2 or Value$2.nil? then Value$2 = []; end; idx = [$3.to_i, 0].max; idx = [idx, Value$2.length].min; Value$2=Value$2.insert(idx,$4).uniq; File.open('$1','w') {|f| YAML.dump(Value, f)}" +run_ruby_part "$RUBY_YAML_PARSE" } ruby_arr_insert_arr() { local RUBY_YAML_PARSE -if [ -z "$1" ] || [ -z "$2" ]; then - return -fi -if openclash_custom_overwrite; then - RUBY_YAML_PARSE="yaml_file_path='$1'; if not Value$2 or Value$2.nil? then Value$2 = []; end; ${4}.reverse.each{|x| Value$2=Value$2.insert($3,x).uniq}" - write_ruby_part "threads << Thread.new do $RUBY_YAML_PARSE end" +if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ] || [ -z "$4" ]; then return fi -RUBY_YAML_PARSE="Value = YAML.load_file('$1'); if not Value$2 or Value$2.nil? then Value$2 = []; end; ${4}.reverse.each{|x| Value$2=Value$2.insert($3,x).uniq}; File.open('$1','w') {|f| YAML.dump(Value, f)}" -ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null +if openclash_custom_overwrite; then + RUBY_YAML_PARSE="yaml_file_path='$1'; if not Value$2 or Value$2.nil? then Value$2 = []; end; if $4.is_a?(Array) then idx = [$3.to_i, 0].max; idx = [idx, Value$2.length].min; $4.reverse.each{|x| Value$2=Value$2.insert(idx,x); idx += 1}; Value$2=Value$2.uniq end" + write_ruby_part "$RUBY_YAML_PARSE" + return +fi +RUBY_YAML_PARSE="Value = YAML.load_file('$1'); if not Value$2 or Value$2.nil? then Value$2 = []; end; if $4.is_a?(Array) then idx = [$3.to_i, 0].max; idx = [idx, Value$2.length].min; $4.reverse.each{|x| Value$2=Value$2.insert(idx,x); idx += 1}; Value$2=Value$2.uniq end; File.open('$1','w') {|f| YAML.dump(Value, f)}" +run_ruby_part "$RUBY_YAML_PARSE" } ruby_delete() { local RUBY_YAML_PARSE if [ -z "$1" ] || [ -z "$3" ]; then - return -fi -if openclash_custom_overwrite; then - RUBY_YAML_PARSE="yaml_file_path='$1'; Value$2.delete('$3')" - write_ruby_part "threads << Thread.new do $RUBY_YAML_PARSE end" return fi -RUBY_YAML_PARSE="Value = YAML.load_file('$1'); Value$2.delete('$3'); File.open('$1','w') {|f| YAML.dump(Value, f)}" -ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null +if openclash_custom_overwrite; then + if [ -z "$2" ]; then + RUBY_YAML_PARSE="yaml_file_path='$1'; Value.delete('$3')" + else + RUBY_YAML_PARSE="yaml_file_path='$1'; if Value$2 then if Value$2.is_a?(Hash) then Value$2.delete('$3') elsif Value$2.is_a?(Array) then Value$2.delete('$3') end end" + fi + write_ruby_part "$RUBY_YAML_PARSE" + return +fi +if [ -z "$2" ]; then + RUBY_YAML_PARSE="Value = YAML.load_file('$1'); Value.delete('$3'); File.open('$1','w') {|f| YAML.dump(Value, f)}" +else + RUBY_YAML_PARSE="Value = YAML.load_file('$1'); if Value$2 then if Value$2.is_a?(Hash) then Value$2.delete('$3') elsif Value$2.is_a?(Array) then Value$2.delete('$3') end end; File.open('$1','w') {|f| YAML.dump(Value, f)}" +fi +run_ruby_part "$RUBY_YAML_PARSE" } ruby_map_edit() { local RUBY_YAML_PARSE -if [ -z "$1" ] || [ -z "$2" ]; then - return -fi -if openclash_custom_overwrite; then - RUBY_YAML_PARSE="yaml_file_path='$1'; Value$2.each{|x,y| if x == '$3' then y$4 = '$5' end}" - write_ruby_part "threads << Thread.new do $RUBY_YAML_PARSE end" +if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ] || [ -z "$4" ]; then return fi -RUBY_YAML_PARSE="Value = YAML.load_file('$1'); Value$2.each{|x,y| if x == '$3' then y$4 = '$5' end}; File.open('$1','w') {|f| YAML.dump(Value, f)}" -ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null +if openclash_custom_overwrite; then + RUBY_YAML_PARSE="yaml_file_path='$1'; if Value$2 && Value$2.is_a?(Hash) then if Value$2['$3'] && Value$2['$3'].is_a?(Hash) then Value$2['$3']$4 = '$5' end end" + write_ruby_part "$RUBY_YAML_PARSE" + return +fi +RUBY_YAML_PARSE="Value = YAML.load_file('$1'); if Value$2 && Value$2.is_a?(Hash) then if Value$2['$3'] && Value$2['$3'].is_a?(Hash) then Value$2['$3']$4 = '$5' end end; File.open('$1','w') {|f| YAML.dump(Value, f)}" +run_ruby_part "$RUBY_YAML_PARSE" } ruby_arr_edit() { local RUBY_YAML_PARSE if [ -z "$1" ] || [ -z "$2" ]; then - return -fi -if openclash_custom_overwrite; then - RUBY_YAML_PARSE="yaml_file_path='$1'; Value$2[$3] = '$4'" - write_ruby_part "threads << Thread.new do $RUBY_YAML_PARSE end" return fi -RUBY_YAML_PARSE="Value = YAML.load_file('$1'); Value$2.map!{|x| if x$3 == '$4' then x$5='$6'; x else x end }.uniq!; File.open('$1','w') {|f| YAML.dump(Value, f)}" -ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null +if openclash_custom_overwrite; then + RUBY_YAML_PARSE="yaml_file_path='$1'; if Value$2 && Value$2.is_a?(Array) then" + if [ -n "$3" ] && [ -n "$4" ] && [ -n "$5" ] && [ -n "$6" ]; then + RUBY_YAML_PARSE="$RUBY_YAML_PARSE Value$2.each{|x| if x.is_a?(Hash) && x$3 == '$4' then x$5='$6' end} end" + elif [ -z "$3" ] && [ -n "$4" ] && [ -z "$5" ] && [ -n "$6" ]; then + RUBY_YAML_PARSE="$RUBY_YAML_PARSE Value$2.map!{|x| if x == '$4' then '$6' else x end}; Value$2.uniq! end" + else + return + fi + write_ruby_part "$RUBY_YAML_PARSE" + return +fi +if [ -n "$3" ] && [ -n "$4" ] && [ -n "$5" ] && [ -n "$6" ]; then + RUBY_YAML_PARSE="Value = YAML.load_file('$1'); if Value$2 && Value$2.is_a?(Array) then Value$2.map!{|x| if x.is_a?(Hash) && x$3 == '$4' then x$5='$6' end; x}; Value$2.uniq! end; File.open('$1','w') {|f| YAML.dump(Value, f)}" +elif [ -z "$3" ] && [ -n "$4" ] && [ -z "$5" ] && [ -n "$6" ]; then + RUBY_YAML_PARSE="Value = YAML.load_file('$1'); if Value$2 && Value$2.is_a?(Array) then Value$2.map!{|x| if x == '$4' then '$6' else x end}; Value$2.uniq! end; File.open('$1','w') {|f| YAML.dump(Value, f)}" +else + return +fi +run_ruby_part "$RUBY_YAML_PARSE" } \ No newline at end of file diff --git a/luci-app-openclash/root/usr/share/openclash/yml_change.sh b/luci-app-openclash/root/usr/share/openclash/yml_change.sh index 4f3bb1fb..2af99b64 100755 --- a/luci-app-openclash/root/usr/share/openclash/yml_change.sh +++ b/luci-app-openclash/root/usr/share/openclash/yml_change.sh @@ -83,7 +83,7 @@ yml_auth_get() if [ -z "$username" ] || [ -z "$password" ]; then return else - LOG_OUT "Tip: You have seted the authentication of SOCKS5/HTTP(S) proxy with【$username:$password】..." + LOG_TIP "You have seted the authentication of SOCKS5/HTTP(S) proxy with【$username:$password】..." echo " - $username:$password" >>/tmp/yaml_openclash_auth fi } @@ -170,7 +170,7 @@ PROXY_GROUPS=$(ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e " Value['proxy-groups'].each { |x| puts x['name'] if x.key?('name') } end rescue Exception => e - YAML.LOG('Error: proxy-groups Get Failed,【%s】' % [e.message]) + YAML.LOG_ERROR('proxy-groups Get Failed,【%s】' % [e.message]) end " 2>/dev/null) @@ -206,6 +206,7 @@ yml_dns_get() config_get "ecs_subnet" "$section" "ecs_subnet" "" config_get_bool "disable_ipv4" "$section" "disable_ipv4" "0" config_get_bool "disable_ipv6" "$section" "disable_ipv6" "0" + config_get_bool "disable_reuse" "$section" "disable_reuse" "0" config_list_foreach "$section" "disable_qtype" set_disable_qtype if [[ "$ip" =~ "$regex" ]] || [ -n "$(echo "${ip}" | grep -Eo "${regex}")" ]; then @@ -245,6 +246,7 @@ yml_dns_get() [ "$ecs_override" = "1" ] && [ -n "$ecs_subnet_param" ] && ecs_override_param="ecs-override=true" || ecs_override_param="" [ "$disable_ipv4" = "1" ] && disable_ipv4_param="disable-ipv4=true" || disable_ipv4_param="" [ "$disable_ipv6" = "1" ] && disable_ipv6_param="disable-ipv6=true" || disable_ipv6_param="" + [ "$disable_reuse" = "1" ] && disable_reuse_param="disable-reuse=true" || disable_reuse_param="" params="" append_param() { @@ -263,6 +265,7 @@ yml_dns_get() append_param "$disable_ipv4_param" append_param "$disable_ipv6_param" append_param "$disable_qtype_param" + append_param "$disable_reuse_param" full_dns_address="$dns_type$dns_address$params" @@ -327,474 +330,477 @@ begin config_file = '$5' Value = YAML.load_file(config_file) rescue Exception => e - YAML.LOG('Error: Load File Failed,【%s】' % [e.message]) + YAML.LOG_ERROR('Load File Failed,【%s】' % [e.message]) exit end -fake_ip_mode = '$1' -secret = '$2' -controller_port = '$3' -redir_port = '$4' -enable_ipv6 = '$6' == '1' -http_port = '$7' -socks_port = '$8' -log_level = '$9' -mode = '${10}' -en_mode_tun = '$en_mode_tun' -stack_type = '$stack_type' -dns_listen_port = '${13}' -mixed_port = '${14}' -tproxy_port = '${15}' -dns_ipv6 = '${16}' == '1' -store_fake_ip = '${17}' == '1' -enable_sniffer = '${18}' == '1' -geodata_mode = '${19}' == '1' -geodata_loader = '${20}' -append_sniffer_config = '${21}' == '1' -interface_name = '${22}' -tcp_concurrent = '${23}' == '1' -add_default_from_dns = '${25}' == '1' -sniffer_parse_pure_ip = '${26}' == '1' -find_process_mode = '${27}' -fake_ip_range = '${28}' -ipv6_mode = '${29}' -unified_delay = '${31}' == '1' -respect_rules = '${32}' == '1' -fake_ip_filter_mode = '${33}' -routing_mark_setting = '${34}' -quic_gso = '${35}' == '1' -cors_origin = '${36}' -geo_custom_url = '${37}' -geoip_custom_url = '${38}' -geosite_custom_url = '${39}' -geoasn_custom_url = '${40}' -lgbm_auto_update = '${41}' == '1' -lgbm_custom_url = '${42}' -lgbm_update_interval = '${43}' -smart_collect = '${44}' == '1' -smart_collect_size = '${45}' -fake_ip_range6 = '${46}' -default_dashboard = '$default_dashboard' -yacd_type = '$yacd_type' -dashboard_type = '$dashboard_type' - -enable_custom_dns = '$enable_custom_dns' == '1' -append_wan_dns = '$append_wan_dns' == '1' -custom_fakeip_filter = '$custom_fakeip_filter' == '1' -china_ip_route = '$china_ip_route' != '0' -china_ip6_route = '$china_ip6_route' != '0' -custom_name_policy = '$custom_name_policy' == '1' -custom_proxy_server_policy = '$custom_proxy_server_policy' == '1' -custom_host = '$custom_host' == '1' -enable_redirect_dns = '$enable_redirect_dns' - -Value['dns'] ||= {} -threads = [] - -threads << Thread.new do - begin - Value['redir-port'] = redir_port.to_i - Value['tproxy-port'] = tproxy_port.to_i - Value['port'] = http_port.to_i - Value['socks-port'] = socks_port.to_i - Value['mixed-port'] = mixed_port.to_i - Value['mode'] = mode - Value['log-level'] = log_level if log_level != '0' - Value['allow-lan'] = true - Value['external-controller'] = '0.0.0.0:' + controller_port - Value['secret'] = secret - Value['bind-address'] = '*' - Value['external-ui'] = '/usr/share/openclash/ui' - Value['external-ui-name'] = default_dashboard - case default_dashboard - when 'dashboard' - if dashboard_type == 'Official' - Value['external-ui-url'] = 'https://codeload.github.com/ayanamist/clash-dashboard/zip/refs/heads/gh-pages' - else - Value['external-ui-url'] = 'https://codeload.github.com/MetaCubeX/Razord-meta/zip/refs/heads/gh-pages' - end - when 'yacd' - if yacd_type == 'Official' - Value['external-ui-url'] = 'https://codeload.github.com/haishanh/yacd/zip/refs/heads/gh-pages' - else - Value['external-ui-url'] = 'https://codeload.github.com/MetaCubeX/Yacd-meta/zip/refs/heads/gh-pages' - end - when 'metacubexd' - Value['external-ui-url'] = 'https://codeload.github.com/MetaCubeX/metacubexd/zip/refs/heads/gh-pages' - when 'zashboard' - Value['external-ui-url'] = 'https://codeload.github.com/Zephyruso/zashboard/zip/refs/heads/gh-pages-cdn-fonts' - end - if !Value.key?('keep-alive-interval') && !Value.key?('keep-alive-idle') - Value['keep-alive-interval'] = 15 - Value['keep-alive-idle'] = 600 - end - Value['ipv6'] = enable_ipv6 - Value['interface-name'] = interface_name if interface_name != '0' - Value['geodata-mode'] = true if geodata_mode - Value['geodata-loader'] = geodata_loader if geodata_loader != '0' - Value['tcp-concurrent'] = true if tcp_concurrent - Value['unified-delay'] = true if unified_delay - Value['find-process-mode'] = find_process_mode if find_process_mode != '0' - - (Value['experimental'] ||= {})['quic-go-disable-gso'] = true if quic_gso - if cors_origin != '0' - (Value['external-controller-cors'] ||= {})['allow-origins'] = [cors_origin] - Value['external-controller-cors']['allow-private-network'] = true - end - - Value['lgbm-auto-update'] = true if lgbm_auto_update - if lgbm_auto_update - Value['lgbm-url'] = lgbm_custom_url.strip - Value['lgbm-update-interval'] = lgbm_update_interval.to_i - end - - if smart_collect - (Value['profile'] ||= {})['smart-collector-size'] = smart_collect_size.to_f - end - - Value['geox-url'] ||= {} - if geo_custom_url != '0' - Value['geox-url']['mmdb'] = geo_custom_url - end - if geoip_custom_url != '0' - Value['geox-url']['geoip'] = geoip_custom_url - end - if geosite_custom_url != '0' - Value['geox-url']['geosite'] = geosite_custom_url - end - if geoasn_custom_url != '0' - Value['geox-url']['asn'] = geoasn_custom_url - end - - Value['dns']['enable'] = true - Value['dns']['ipv6'] = dns_ipv6 - Value['ipv6'] = true if dns_ipv6 - - if fake_ip_mode == 'redir-host' - Value['dns']['enhanced-mode'] = 'redir-host' - Value['dns'].delete('fake-ip-range') - else - Value['dns']['enhanced-mode'] = 'fake-ip' - Value['dns']['fake-ip-range'] = fake_ip_range - if Value['dns']['ipv6'] - Value['dns']['fake-ip-range6'] = fake_ip_range6 - end - end - Value['dns']['listen'] = '0.0.0.0:' + dns_listen_port - Value['dns']['respect-rules'] = respect_rules - - if enable_sniffer - sniffer_config = { - 'enable' => true, 'override-destination' => true, - 'sniff' => {'QUIC' => {'ports' => [443]}, 'TLS' => {'ports' => [443, 8443]}, 'HTTP' => {'ports' => [80, '8080-8880'], 'override-destination' => true}}, - 'force-domain' => ['+.netflix.com', '+.nflxvideo.net', '+.amazonaws.com', '+.media.dssott.com'], - 'skip-domain' => ['Mijia Cloud', 'dlg.io.mi.com', '+.oray.com', '+.sunlogin.net', '+.push.apple.com'] - } - sniffer_config['force-dns-mapping'] = true if fake_ip_mode == 'redir-host' - sniffer_config['parse-pure-ip'] = true if sniffer_parse_pure_ip - Value['sniffer'] = sniffer_config - if append_sniffer_config && (custom_sniffer = safe_load_yaml('/etc/openclash/custom/openclash_custom_sniffer.yaml')) - Value['sniffer'].merge!(custom_sniffer['sniffer']) if custom_sniffer && custom_sniffer['sniffer'] - end - else - Value['sniffer']['enable'] = false if Value.key?('sniffer') - end - - if en_mode_tun != '0' || ['2', '3'].include?(ipv6_mode) - Value['tun'] = { - 'enable' => true, 'stack' => stack_type, 'device' => 'utun', - 'dns-hijack' => ['127.0.0.1:53'], 'endpoint-independent-nat' => true, - 'auto-route' => false, 'auto-detect-interface' => false, - 'auto-redirect' => false, 'strict-route' => false, 'disable-icmp-forwarding' => false - } - Value['tun'].delete('iproute2-table-index') - else - Value.delete('tun') - end - - Value.delete('iptables') - (Value['profile'] ||= {})['store-selected'] = true - Value['profile']['store-fake-ip'] = true if store_fake_ip - Value.delete('ebpf') - - if routing_mark_setting == '0' - Value['routing-mark'] = 6666 - else - Value.delete('routing-mark') - end - Value.delete('auto-redir') - - (Value['ntp'] ||= {})['enable'] = true - Value['ntp']['server'] = 'time.apple.com' if !Value['ntp'].key?('server') - Value['ntp']['port'] = 123 if !Value['ntp'].key?('port') - Value['ntp']['interval'] = 30 if !Value['ntp'].key?('interval') - Value['ntp']['write-to-system'] = true if !Value['ntp'].key?('write-to-system') - - rescue Exception => e - YAML.LOG('Error: Set General Failed,【%s】' % [e.message]) - end -end - -threads << Thread.new do - begin - if enable_custom_dns || append_wan_dns - if (namedns_config = safe_load_yaml('/tmp/yaml_config.namedns.yaml')) && namedns_config['nameserver'] - if enable_custom_dns - Value['dns']['nameserver'] = namedns_config['nameserver'].uniq - elsif append_wan_dns - (Value['dns']['nameserver'] ||= []).concat(namedns_config['nameserver']).uniq! - end - - if enable_custom_dns && (falldns_config = safe_load_yaml('/tmp/yaml_config.falldns.yaml')) && falldns_config['fallback'] - Value['dns']['fallback'] = falldns_config['fallback'].uniq - end - elsif enable_custom_dns - YAML.LOG('Error: Nameserver Option Must Be Setted, Stop Customing DNS Servers') - end - end - rescue Exception => e - YAML.LOG('Error: Set Custom DNS Failed,【%s】' % [e.message]) - end - - begin - if enable_custom_dns - if (defaultdns_config = safe_load_yaml('/tmp/yaml_config.defaultdns.yaml')) && defaultdns_config['default-nameserver'] - (Value['dns']['default-nameserver'] ||= []).concat(defaultdns_config['default-nameserver']).uniq! - end - end - if add_default_from_dns - reg = /^dhcp:\/\/|^system($|:\/\/)|([0-9a-zA-Z-]{1,}\.)+([a-zA-Z]{2,})/ - servers_to_check = Value.dig('dns', 'nameserver').to_a | Value.dig('dns', 'fallback').to_a - non_domain_servers = servers_to_check.reject { |s| s.match?(reg) } - if non_domain_servers.any? - (Value['dns']['default-nameserver'] ||= []).concat(non_domain_servers).uniq! - end - end - rescue Exception => e - YAML.LOG('Error: Set default-nameserver Failed,【%s】' % [e.message]) - end - - begin - if '$custom_fallback_filter' == '1' - if !Value.dig('dns', 'fallback') - YAML.LOG('Error: Fallback-Filter Need fallback of DNS Been Setted, Ignore...') - elsif (filter_config = safe_load_yaml('/etc/openclash/custom/openclash_custom_fallback_filter.yaml')) - Value['dns']['fallback-filter'] = filter_config['fallback-filter'] - else - YAML.LOG('Error: Unable To Parse Custom Fallback-Filter File, Ignore...') - end - end - rescue Exception => e - YAML.LOG('Error: Set fallback-filter Failed,【%s】' % [e.message]) - end -end - -# proxy-server-nameserver -threads << Thread.new do - begin - if enable_custom_dns - if (proxydns = safe_load_yaml('/tmp/yaml_config.proxynamedns.yaml')) && proxydns['proxy-server-nameserver'] - (Value['dns']['proxy-server-nameserver'] ||= []).concat(proxydns['proxy-server-nameserver']).uniq! - end - end - rescue Exception => e - YAML.LOG('Error: Set proxy-server-nameserver Failed,【%s】' % [e.message]) - end -end - -# direct-nameserver -threads << Thread.new do - begin - if enable_custom_dns - if (directdns = safe_load_yaml('/tmp/yaml_config.directnamedns.yaml')) && directdns['direct-nameserver'] - (Value['dns']['direct-nameserver'] ||= []).concat(directdns['direct-nameserver']).uniq! - end - end - rescue Exception => e - YAML.LOG('Error: Set direct-nameserver Failed,【%s】' % [e.message]) - end -end - -# nameserver-policy -threads << Thread.new do - begin - if custom_name_policy - if (policy = safe_load_yaml('/etc/openclash/custom/openclash_custom_domain_dns_policy.list')) - (Value['dns']['nameserver-policy'] ||= {}).merge!(policy) - end - end - rescue Exception => e - YAML.LOG('Error: Set Nameserver-Policy Failed,【%s】' % [e.message]) - end -end - -# proxy-server-nameserver-policy -threads << Thread.new do - begin - if custom_proxy_server_policy - if (policy = safe_load_yaml('/etc/openclash/custom/openclash_custom_proxy_server_dns_policy.list')) - (Value['dns']['proxy-server-nameserver-policy'] ||= {}).merge!(policy) - end - end - rescue Exception => e - YAML.LOG('Error: Set Proxy-Server-Nameserver-Policy Failed,【%s】' % [e.message]) - end -end - -# Fake-IP Filter -threads << Thread.new do - begin - if custom_fakeip_filter - Value['dns']['fake-ip-filter-mode'] = fake_ip_filter_mode - if fake_ip_mode == 'fake-ip' - merge_list_from_file(Value['dns'], 'fake-ip-filter', '/etc/openclash/custom/openclash_custom_fake_filter.list') - merge_list_from_file(Value['dns'], 'fake-ip-filter', '/tmp/yaml_openclash_fake_filter_include') - end - end - if fake_ip_mode == 'fake-ip' && (china_ip_route || china_ip6_route) - filter_mode = Value.dig('dns', 'fake-ip-filter-mode') - filters = Value.dig('dns', 'fake-ip-filter') || [] - deleted_filters = filters.select { |f| f =~ /(geosite:?|rule-set:?).*(@cn|:cn|,cn|:china)/i } - if filter_mode == 'blacklist' || filter_mode.nil? - if !deleted_filters.any? - (Value['dns']['fake-ip-filter'] ||= []) << 'geosite:cn' - YAML.LOG('Tip: Because Need Ensure Bypassing IP Option Work, Added The Fake-IP-Filter Rule【geosite:cn】...') - end - else - if deleted_filters.any? - Value['dns']['fake-ip-filter'] -= deleted_filters - deleted_filters.each do |f| - YAML.LOG('Tip: Because Need Ensure Bypassing IP Option Work, Deleted The Fake-IP-Filter Rule【%s】...' % [f]) - end - end - end - if filter_mode == 'rule' - (Value['dns']['fake-ip-filter'] ||= []).unshift('GEOSITE,cn,real-ip') - YAML.LOG('Tip: Because Need Ensure Bypassing IP Option Work, Added The Fake-IP-Filter Rule【GEOSITE,cn,real-ip】...') - end - end - rescue Exception => e - YAML.LOG('Error: Set Fake-IP-Filter Failed,【%s】' % [e.message]) - end -end - -# Custom Hosts -threads << Thread.new do - begin - if custom_host - if (hosts_content = safe_load_yaml('/etc/openclash/custom/openclash_custom_hosts.list')) && !hosts_content.empty? - Value['dns']['use-hosts'] = true - if hosts_content.is_a?(Hash) && hosts_content.key?('hosts') - (Value['hosts'] ||= {}).merge!(hosts_content['hosts']) - else - (Value['hosts'] ||= {}).merge!(hosts_content) - end - YAML.LOG('Warning: You May Need to Turn off The Rebinding Protection Option of Dnsmasq When Hosts Has Set a Reserved Address...') - end - end - rescue Exception => e - YAML.LOG('Error: Set Hosts Rules Failed,【%s】' % [e.message]) - end -end - -# Authentication -threads << Thread.new do - begin - if (auth_config = safe_load_yaml('/tmp/yaml_openclash_auth')) - Value['authentication'] = auth_config - end - rescue Exception => e - YAML.LOG('Error: Set authentication Failed,【%s】' % [e.message]) - end -end - -threads.each(&:join) - begin - threads.clear + fake_ip_mode = '$1' + secret = '$2' + controller_port = '$3' + redir_port = '$4' + enable_ipv6 = '$6' == '1' + http_port = '$7' + socks_port = '$8' + log_level = '$9' + mode = '${10}' + en_mode_tun = '$en_mode_tun' + stack_type = '$stack_type' + dns_listen_port = '${13}' + mixed_port = '${14}' + tproxy_port = '${15}' + dns_ipv6 = '${16}' == '1' + store_fake_ip = '${17}' == '1' + enable_sniffer = '${18}' == '1' + geodata_mode = '${19}' == '1' + geodata_loader = '${20}' + append_sniffer_config = '${21}' == '1' + interface_name = '${22}' + tcp_concurrent = '${23}' == '1' + add_default_from_dns = '${25}' == '1' + sniffer_parse_pure_ip = '${26}' == '1' + find_process_mode = '${27}' + fake_ip_range = '${28}' + ipv6_mode = '${29}' + unified_delay = '${31}' == '1' + respect_rules = '${32}' == '1' + fake_ip_filter_mode = '${33}' + routing_mark_setting = '${34}' + quic_gso = '${35}' == '1' + cors_origin = '${36}' + geo_custom_url = '${37}' + geoip_custom_url = '${38}' + geosite_custom_url = '${39}' + geoasn_custom_url = '${40}' + lgbm_auto_update = '${41}' == '1' + lgbm_custom_url = '${42}' + lgbm_update_interval = '${43}' + smart_collect = '${44}' == '1' + smart_collect_size = '${45}' + fake_ip_range6 = '${46}' + default_dashboard = '$default_dashboard' + yacd_type = '$yacd_type' + dashboard_type = '$dashboard_type' - # DNS Loop Check - if enable_redirect_dns != '2' - dns_options = ['nameserver', 'fallback', 'default-nameserver', 'proxy-server-nameserver', 'nameserver-policy', 'direct-nameserver', 'proxy-server-nameserver-policy'] - dns_options.each do |option| - threads << Thread.new(option) do |opt| - begin - next unless Value['dns'].key?(opt) && !Value['dns'][opt].nil? - if opt != 'nameserver-policy' && opt != 'proxy-server-nameserver-policy' - original_size = Value['dns'][opt].size - Value['dns'][opt].reject! { |v| v.to_s.match?(/^system($|:\/\/)/) } - if Value['dns'][opt].size < original_size - YAML.LOG('Tip: Option【%s】is Setted【system】as DNS Server Which May Cause DNS Loop, Already Remove It...' % [opt]) - end - else - Value['dns'][opt].each do |k, v| - if v.is_a?(Array) - original_size = v.size - v.reject! { |z| z.to_s.match?(/^system($|:\/\/)/) } - if v.empty? - Value['dns'][opt].delete(k) - YAML.LOG('Tip: Option【%s - %s】is Setted【system】as DNS Server Which May Cause DNS Loop, Already Remove It...' % [opt, k]) - elsif v.size < original_size - YAML.LOG('Tip: Option【%s - %s】is Setted【system】as DNS Server Which May Cause DNS Loop, Already Remove It...' % [opt, k]) - end - elsif v.to_s.match?(/^system($|:\/\/)/) - Value['dns'][opt].delete(k) - YAML.LOG('Tip: Option【%s - %s】is Setted【%s】as DNS Server Which May Cause DNS Loop, Already Remove It...' % [opt, k, v.to_s]) - end - end - end - rescue Exception => e - YAML.LOG('Error: DNS Loop Check,【%s】' % [e.message]) + enable_custom_dns = '$enable_custom_dns' == '1' + append_wan_dns = '$append_wan_dns' == '1' + custom_fakeip_filter = '$custom_fakeip_filter' == '1' + china_ip_route = '$china_ip_route' != '0' + china_ip6_route = '$china_ip6_route' != '0' + custom_name_policy = '$custom_name_policy' == '1' + custom_proxy_server_policy = '$custom_proxy_server_policy' == '1' + custom_host = '$custom_host' == '1' + enable_redirect_dns = '$enable_redirect_dns' + + Value['dns'] ||= {} + threads = [] + + threads << Thread.new do + begin + Value['redir-port'] = redir_port.to_i + Value['tproxy-port'] = tproxy_port.to_i + Value['port'] = http_port.to_i + Value['socks-port'] = socks_port.to_i + Value['mixed-port'] = mixed_port.to_i + Value['mode'] = mode + Value['log-level'] = log_level if log_level != '0' + Value['allow-lan'] = true + Value['external-controller'] = '0.0.0.0:' + controller_port + Value['secret'] = secret + Value['bind-address'] = '*' + Value['external-ui'] = '/usr/share/openclash/ui' + Value['external-ui-name'] = default_dashboard + case default_dashboard + when 'dashboard' + if dashboard_type == 'Official' + Value['external-ui-url'] = 'https://codeload.github.com/ayanamist/clash-dashboard/zip/refs/heads/gh-pages' + else + Value['external-ui-url'] = 'https://codeload.github.com/MetaCubeX/Razord-meta/zip/refs/heads/gh-pages' + end + when 'yacd' + if yacd_type == 'Official' + Value['external-ui-url'] = 'https://codeload.github.com/haishanh/yacd/zip/refs/heads/gh-pages' + else + Value['external-ui-url'] = 'https://codeload.github.com/MetaCubeX/Yacd-meta/zip/refs/heads/gh-pages' + end + when 'metacubexd' + Value['external-ui-url'] = 'https://codeload.github.com/MetaCubeX/metacubexd/zip/refs/heads/gh-pages' + when 'zashboard' + Value['external-ui-url'] = 'https://codeload.github.com/Zephyruso/zashboard/zip/refs/heads/gh-pages-cdn-fonts' + end + if !Value.key?('keep-alive-interval') && !Value.key?('keep-alive-idle') + Value['keep-alive-interval'] = 15 + Value['keep-alive-idle'] = 600 + end + Value['ipv6'] = enable_ipv6 + Value['interface-name'] = interface_name if interface_name != '0' + Value['geodata-mode'] = true if geodata_mode + Value['geodata-loader'] = geodata_loader if geodata_loader != '0' + Value['tcp-concurrent'] = true if tcp_concurrent + Value['unified-delay'] = true if unified_delay + Value['find-process-mode'] = find_process_mode if find_process_mode != '0' + + (Value['experimental'] ||= {})['quic-go-disable-gso'] = true if quic_gso + if cors_origin != '0' + (Value['external-controller-cors'] ||= {})['allow-origins'] = [cors_origin] + Value['external-controller-cors']['allow-private-network'] = true + end + + Value['lgbm-auto-update'] = true if lgbm_auto_update + if lgbm_auto_update + Value['lgbm-url'] = lgbm_custom_url.strip + Value['lgbm-update-interval'] = lgbm_update_interval.to_i + end + + if smart_collect + (Value['profile'] ||= {})['smart-collector-size'] = smart_collect_size.to_f + end + + Value['geox-url'] ||= {} + if geo_custom_url != '0' + Value['geox-url']['mmdb'] = geo_custom_url + end + if geoip_custom_url != '0' + Value['geox-url']['geoip'] = geoip_custom_url + end + if geosite_custom_url != '0' + Value['geox-url']['geosite'] = geosite_custom_url + end + if geoasn_custom_url != '0' + Value['geox-url']['asn'] = geoasn_custom_url + end + + Value['dns']['enable'] = true + Value['dns']['ipv6'] = dns_ipv6 + Value['ipv6'] = true if dns_ipv6 + + if fake_ip_mode == 'redir-host' + Value['dns']['enhanced-mode'] = 'redir-host' + Value['dns'].delete('fake-ip-range') + else + Value['dns']['enhanced-mode'] = 'fake-ip' + Value['dns']['fake-ip-range'] = fake_ip_range + if Value['dns']['ipv6'] + Value['dns']['fake-ip-range6'] = fake_ip_range6 end end + Value['dns']['listen'] = '0.0.0.0:' + dns_listen_port + Value['dns']['respect-rules'] = respect_rules + + if enable_sniffer + sniffer_config = { + 'enable' => true, 'override-destination' => true, + 'sniff' => {'QUIC' => {'ports' => [443]}, 'TLS' => {'ports' => [443, 8443]}, 'HTTP' => {'ports' => [80, '8080-8880'], 'override-destination' => true}}, + 'force-domain' => ['+.netflix.com', '+.nflxvideo.net', '+.amazonaws.com', '+.media.dssott.com'], + 'skip-domain' => ['Mijia Cloud', 'dlg.io.mi.com', '+.oray.com', '+.sunlogin.net', '+.push.apple.com'] + } + sniffer_config['force-dns-mapping'] = true if fake_ip_mode == 'redir-host' + sniffer_config['parse-pure-ip'] = true if sniffer_parse_pure_ip + Value['sniffer'] = sniffer_config + if append_sniffer_config && (custom_sniffer = safe_load_yaml('/etc/openclash/custom/openclash_custom_sniffer.yaml')) + Value['sniffer'].merge!(custom_sniffer['sniffer']) if custom_sniffer && custom_sniffer['sniffer'] + end + else + Value['sniffer']['enable'] = false if Value.key?('sniffer') + end + + if en_mode_tun != '0' || ['2', '3'].include?(ipv6_mode) + Value['tun'] = { + 'enable' => true, 'stack' => stack_type, 'device' => 'utun', + 'dns-hijack' => ['127.0.0.1:53'], 'endpoint-independent-nat' => true, + 'auto-route' => false, 'auto-detect-interface' => false, + 'auto-redirect' => false, 'strict-route' => false, 'disable-icmp-forwarding' => false + } + Value['tun'].delete('iproute2-table-index') + else + Value.delete('tun') + end + + Value.delete('iptables') + (Value['profile'] ||= {})['store-selected'] = true + Value['profile']['store-fake-ip'] = true if store_fake_ip + Value.delete('ebpf') + + if routing_mark_setting == '0' + Value['routing-mark'] = 6666 + else + Value.delete('routing-mark') + end + Value.delete('auto-redir') + + (Value['ntp'] ||= {})['enable'] = true + Value['ntp']['server'] = 'time.apple.com' if !Value['ntp'].key?('server') + Value['ntp']['port'] = 123 if !Value['ntp'].key?('port') + Value['ntp']['interval'] = 30 if !Value['ntp'].key?('interval') + Value['ntp']['write-to-system'] = true if !Value['ntp'].key?('write-to-system') + + rescue Exception => e + YAML.LOG_ERROR('Set General Failed,【%s】' % [e.message]) end - threads.each(&:join) end - if Value.dig('dns', 'nameserver').to_a.empty? - YAML.LOG('Tip: Detected That The nameserver DNS Option Has No Server Set, Starting To Complete...') - Value['dns']['nameserver'] = ['114.114.114.114', '119.29.29.29', '8.8.8.8', '1.1.1.1'] - Value['dns']['fallback'] ||= ['https://dns.cloudflare.com/dns-query', 'https://dns.google/dns-query'] - end + threads << Thread.new do + begin + if enable_custom_dns || append_wan_dns + if (namedns_config = safe_load_yaml('/tmp/yaml_config.namedns.yaml')) && namedns_config['nameserver'] + if enable_custom_dns + Value['dns']['nameserver'] = namedns_config['nameserver'].uniq + elsif append_wan_dns + (Value['dns']['nameserver'] ||= []).concat(namedns_config['nameserver']).uniq! + end - if Value['dns'].key?('default-nameserver') && Value['dns']['default-nameserver'].to_a.empty? - YAML.LOG('Tip: Detected That The default-nameserver DNS Option Has No Server Set, Starting To Complete...') - Value['dns']['default-nameserver'] = ['114.114.114.114', '119.29.29.29', '8.8.8.8', '1.1.1.1'] + if enable_custom_dns && (falldns_config = safe_load_yaml('/tmp/yaml_config.falldns.yaml')) && falldns_config['fallback'] + Value['dns']['fallback'] = falldns_config['fallback'].uniq + end + elsif enable_custom_dns + YAML.LOG_ERROR('Nameserver Option Must Be Setted, Stop Customing DNS Servers') + end + end + rescue Exception => e + YAML.LOG_ERROR('Set Custom DNS Failed,【%s】' % [e.message]) + end + + begin + if enable_custom_dns + if (defaultdns_config = safe_load_yaml('/tmp/yaml_config.defaultdns.yaml')) && defaultdns_config['default-nameserver'] + Value['dns']['default-nameserver'] = defaultdns_config['default-nameserver'].uniq + end + end + if add_default_from_dns + reg = /^dhcp:\/\/|^system($|:\/\/)|([0-9a-zA-Z-]{1,}\.)+([a-zA-Z]{2,})/ + servers_to_check = Value.dig('dns', 'nameserver').to_a | Value.dig('dns', 'fallback').to_a + non_domain_servers = servers_to_check.reject { |s| s.match?(reg) } + if non_domain_servers.any? + (Value['dns']['default-nameserver'] ||= []).concat(non_domain_servers).uniq! + end + end + rescue Exception => e + YAML.LOG_ERROR('Set default-nameserver Failed,【%s】' % [e.message]) + end + + begin + if '$custom_fallback_filter' == '1' + if !Value.dig('dns', 'fallback') + YAML.LOG_ERROR('Fallback-Filter Need fallback of DNS Been Setted, Ignore...') + elsif (filter_config = safe_load_yaml('/etc/openclash/custom/openclash_custom_fallback_filter.yaml')) + Value['dns']['fallback-filter'] = filter_config['fallback-filter'] + else + YAML.LOG_ERROR('Unable To Parse Custom Fallback-Filter File, Ignore...') + end + end + rescue Exception => e + YAML.LOG_ERROR('Set fallback-filter Failed,【%s】' % [e.message]) + end end # proxy-server-nameserver - local_exclude = (%x{ls -l /sys/class/net/ |awk '{print \$9}' 2>&1}.each_line.map(&:strip) + ['h3=', 'skip-cert-verify=', 'ecs=', 'ecs-override=', 'disable-ipv6=', 'disable-ipv4=', 'disable-qtype-'] + ['utun', 'tailscale0', 'docker0', 'tun163', 'br-lan', 'mihomo']).uniq.join('|') - non_domain_reg = /^dhcp:\/\/|^system($|:\/\/)|([0-9a-zA-Z-]{1,}\.)+([a-zA-Z]{2,})/ - proxied_server_reg = /^[^#&]+#(?:(?:#{local_exclude})[^&]*&)*(?:(?!(?:#{local_exclude}))[^&]+)/ - servers_to_check = Value.dig('dns', 'nameserver').to_a | Value.dig('dns', 'fallback').to_a | Value.dig('dns', 'default-nameserver').to_a - default_proxy_servers = servers_to_check.reject { |s| s.match?(non_domain_reg) } - if ! default_proxy_servers.any? || default_proxy_servers.all? { |x| x.match?(proxied_server_reg) } - default_proxy_servers = ['114.114.114.114', '119.29.29.29', '8.8.8.8', '1.1.1.1'] + threads << Thread.new do + begin + if enable_custom_dns + if (proxydns = safe_load_yaml('/tmp/yaml_config.proxynamedns.yaml')) && proxydns['proxy-server-nameserver'] + (Value['dns']['proxy-server-nameserver'] ||= []).concat(proxydns['proxy-server-nameserver']).uniq! + end + end + rescue Exception => e + YAML.LOG_ERROR('Set proxy-server-nameserver Failed,【%s】' % [e.message]) + end end - proxy_server_nameserver_policy = Value.dig('dns', 'proxy-server-nameserver-policy') && !Value['dns']['proxy-server-nameserver-policy'].empty? - if Value.dig('dns', 'proxy-server-nameserver').to_a.empty? - all_ns_proxied = Value.dig('dns', 'nameserver').to_a.all? { |x| x.match?(proxied_server_reg) } - if respect_rules || Value.dig('dns', 'respect-rules').to_s == 'true' || all_ns_proxied || proxy_server_nameserver_policy - Value['dns']['proxy-server-nameserver'] = default_proxy_servers - if all_ns_proxied - YAML.LOG('Tip: Nameserver Option Maybe All Setted The Proxy Option, Auto Set Proxy-server-nameserver Option to【%s】For Avoiding Proxies Server Resolve Loop...' % [default_proxy_servers.join(', ')]) - elsif proxy_server_nameserver_policy - YAML.LOG('Tip:【Proxy-server-nameserver-policy】Need Proxy-server-nameserver Option Must Be Setted, Auto Set to【%s】' % [default_proxy_servers.join(', ')]) - else - YAML.LOG('Tip:【Respect-rules】Need Proxy-server-nameserver Option Must Be Setted, Auto Set to【%s】' % [default_proxy_servers.join(', ')]) + # direct-nameserver + threads << Thread.new do + begin + if enable_custom_dns + if (directdns = safe_load_yaml('/tmp/yaml_config.directnamedns.yaml')) && directdns['direct-nameserver'] + (Value['dns']['direct-nameserver'] ||= []).concat(directdns['direct-nameserver']).uniq! + end + end + rescue Exception => e + YAML.LOG_ERROR('Set direct-nameserver Failed,【%s】' % [e.message]) + end + end + + # nameserver-policy + threads << Thread.new do + begin + if custom_name_policy + if (policy = safe_load_yaml('/etc/openclash/custom/openclash_custom_domain_dns_policy.list')) + (Value['dns']['nameserver-policy'] ||= {}).merge!(policy) + end + end + rescue Exception => e + YAML.LOG_ERROR('Set Nameserver-Policy Failed,【%s】' % [e.message]) + end + end + + # proxy-server-nameserver-policy + threads << Thread.new do + begin + if custom_proxy_server_policy + if (policy = safe_load_yaml('/etc/openclash/custom/openclash_custom_proxy_server_dns_policy.list')) + (Value['dns']['proxy-server-nameserver-policy'] ||= {}).merge!(policy) + end + end + rescue Exception => e + YAML.LOG_ERROR('Set Proxy-Server-Nameserver-Policy Failed,【%s】' % [e.message]) + end + end + + # Fake-IP Filter + threads << Thread.new do + begin + if custom_fakeip_filter + Value['dns']['fake-ip-filter-mode'] = fake_ip_filter_mode + if fake_ip_mode == 'fake-ip' + merge_list_from_file(Value['dns'], 'fake-ip-filter', '/etc/openclash/custom/openclash_custom_fake_filter.list') + merge_list_from_file(Value['dns'], 'fake-ip-filter', '/tmp/yaml_openclash_fake_filter_include') + end + end + if fake_ip_mode == 'fake-ip' && (china_ip_route || china_ip6_route) + filter_mode = Value.dig('dns', 'fake-ip-filter-mode') + filters = Value.dig('dns', 'fake-ip-filter') || [] + deleted_filters = filters.select { |f| f =~ /(geosite:?|rule-set:?).*(@cn|:cn|,cn|:china)/i } + if filter_mode == 'blacklist' || filter_mode.nil? + if !deleted_filters.any? + (Value['dns']['fake-ip-filter'] ||= []) << 'geosite:cn' + YAML.LOG_TIP('Because Need Ensure Bypassing IP Option Work, Added The Fake-IP-Filter Rule【geosite:cn】...') + end + else + if deleted_filters.any? + Value['dns']['fake-ip-filter'] -= deleted_filters + deleted_filters.each do |f| + YAML.LOG_TIP('Because Need Ensure Bypassing IP Option Work, Deleted The Fake-IP-Filter Rule【%s】...' % [f]) + end + end + end + if filter_mode == 'rule' + (Value['dns']['fake-ip-filter'] ||= []).unshift('GEOSITE,cn,real-ip') + YAML.LOG_TIP('Because Need Ensure Bypassing IP Option Work, Added The Fake-IP-Filter Rule【GEOSITE,cn,real-ip】...') + end + end + rescue Exception => e + YAML.LOG_ERROR('Set Fake-IP-Filter Failed,【%s】' % [e.message]) + end + end + + # Custom Hosts + threads << Thread.new do + begin + if custom_host + if (hosts_content = safe_load_yaml('/etc/openclash/custom/openclash_custom_hosts.list')) && !hosts_content.empty? + Value['dns']['use-hosts'] = true + if hosts_content.is_a?(Hash) && hosts_content.key?('hosts') + (Value['hosts'] ||= {}).merge!(hosts_content['hosts']) + else + (Value['hosts'] ||= {}).merge!(hosts_content) + end + YAML.LOG_WARN('You May Need to Turn off The Rebinding Protection Option of Dnsmasq When Hosts Has Set a Reserved Address...') + end + end + rescue Exception => e + YAML.LOG_ERROR('Set Hosts Rules Failed,【%s】' % [e.message]) + end + end + + # Authentication + threads << Thread.new do + begin + if (auth_config = safe_load_yaml('/tmp/yaml_openclash_auth')) + Value['authentication'] = auth_config + end + rescue Exception => e + YAML.LOG_ERROR('Set authentication Failed,【%s】' % [e.message]) + end + end + + threads.each(&:join) + + begin + threads.clear + + # DNS Loop Check + if enable_redirect_dns == '1' + dns_options = ['nameserver', 'fallback', 'default-nameserver', 'proxy-server-nameserver', 'nameserver-policy', 'direct-nameserver', 'proxy-server-nameserver-policy'] + dns_options.each do |option| + threads << Thread.new(option) do |opt| + begin + next unless Value['dns'].key?(opt) && !Value['dns'][opt].nil? + if opt != 'nameserver-policy' && opt != 'proxy-server-nameserver-policy' + original_size = Value['dns'][opt].size + Value['dns'][opt].reject! { |v| v.to_s.match?(/^system($|:\/\/)/) } + if Value['dns'][opt].size < original_size + YAML.LOG_TIP('Option【%s】is Setted【system】as DNS Server Which May Cause DNS Loop, Already Remove It...' % [opt]) + end + else + Value['dns'][opt].each do |k, v| + if v.is_a?(Array) + original_size = v.size + v.reject! { |z| z.to_s.match?(/^system($|:\/\/)/) } + if v.empty? + Value['dns'][opt].delete(k) + YAML.LOG_TIP('Option【%s - %s】is Setted【system】as DNS Server Which May Cause DNS Loop, Already Remove It...' % [opt, k]) + elsif v.size < original_size + YAML.LOG_TIP('Option【%s - %s】is Setted【system】as DNS Server Which May Cause DNS Loop, Already Remove It...' % [opt, k]) + end + elsif v.to_s.match?(/^system($|:\/\/)/) + Value['dns'][opt].delete(k) + YAML.LOG_TIP('Option【%s - %s】is Setted【%s】as DNS Server Which May Cause DNS Loop, Already Remove It...' % [opt, k, v.to_s]) + end + end + end + rescue Exception => e + YAML.LOG_ERROR('DNS Loop Check,【%s】' % [e.message]) + end + end + end + threads.each(&:join) + end + + if Value.dig('dns', 'nameserver').to_a.empty? + YAML.LOG_TIP('Detected That The nameserver DNS Option Has No Server Set, Starting To Complete...') + Value['dns']['nameserver'] = ['114.114.114.114', '119.29.29.29', '8.8.8.8', '1.1.1.1'] + Value['dns']['fallback'] ||= ['https://dns.cloudflare.com/dns-query', 'https://dns.google/dns-query'] + end + + if Value['dns'].key?('default-nameserver') && Value['dns']['default-nameserver'].to_a.empty? + YAML.LOG_TIP('Detected That The default-nameserver DNS Option Has No Server Set, Starting To Complete...') + Value['dns']['default-nameserver'] = ['114.114.114.114', '119.29.29.29', '8.8.8.8', '1.1.1.1'] + end + + # proxy-server-nameserver + local_exclude = (%x{ls -l /sys/class/net/ |awk '{print \$9}' 2>&1}.each_line.map(&:strip) + ['h3=', 'skip-cert-verify=', 'ecs=', 'ecs-override=', 'disable-ipv6=', 'disable-ipv4=', 'disable-qtype-', 'disable-reuse='] + ['utun', 'tailscale0', 'docker0', 'tun163', 'br-lan', 'mihomo']).uniq.join('|') + non_domain_reg = /^dhcp:\/\/|^system($|:\/\/)|([0-9a-zA-Z-]{1,}\.)+([a-zA-Z]{2,})/ + proxied_server_reg = /^[^#&]+#(?:(?:#{local_exclude})[^&]*&)*(?:(?!(?:#{local_exclude}))[^&]+)/ + servers_to_check = Value.dig('dns', 'nameserver').to_a | Value.dig('dns', 'fallback').to_a | Value.dig('dns', 'default-nameserver').to_a + default_proxy_servers = servers_to_check.reject { |s| s.match?(non_domain_reg) } + if ! default_proxy_servers.any? || default_proxy_servers.all? { |x| x.match?(proxied_server_reg) } + default_proxy_servers = ['114.114.114.114', '119.29.29.29', '8.8.8.8', '1.1.1.1'] + end + proxy_server_nameserver_policy = Value.dig('dns', 'proxy-server-nameserver-policy') && !Value['dns']['proxy-server-nameserver-policy'].empty? + + if Value.dig('dns', 'proxy-server-nameserver').to_a.empty? + all_ns_proxied = Value.dig('dns', 'nameserver').to_a.all? { |x| x.match?(proxied_server_reg) } + if respect_rules || Value.dig('dns', 'respect-rules').to_s == 'true' || all_ns_proxied || proxy_server_nameserver_policy + Value['dns']['proxy-server-nameserver'] = default_proxy_servers + if all_ns_proxied + YAML.LOG_TIP('Nameserver Option Maybe All Setted The Proxy Option, Auto Set Proxy-server-nameserver Option to【%s】For Avoiding Proxies Server Resolve Loop...' % [default_proxy_servers.join(', ')]) + elsif proxy_server_nameserver_policy + YAML.LOG_TIP('【Proxy-server-nameserver-policy】Need Proxy-server-nameserver Option Must Be Setted, Auto Set to【%s】' % [default_proxy_servers.join(', ')]) + else + YAML.LOG_TIP('【Respect-rules】Need Proxy-server-nameserver Option Must Be Setted, Auto Set to【%s】' % [default_proxy_servers.join(', ')]) + end + end + else + all_psn_proxied = Value.dig('dns', 'proxy-server-nameserver').to_a.all? { |x| x.match?(proxied_server_reg) } + if all_psn_proxied + (Value['dns']['proxy-server-nameserver'] ||= []).concat(default_proxy_servers).uniq! + YAML.LOG_TIP('Proxy-server-nameserver Option Maybe All Setted The Proxy Option, Auto Set Proxy-server-nameserver Option to【%s】For Avoiding Proxies Server Resolve Loop...' % [default_proxy_servers.join(', ')]) end end - else - all_psn_proxied = Value.dig('dns', 'proxy-server-nameserver').to_a.all? { |x| x.match?(proxied_server_reg) } - if all_psn_proxied - (Value['dns']['proxy-server-nameserver'] ||= []).concat(default_proxy_servers).uniq! - YAML.LOG('Tip: Proxy-server-nameserver Option Maybe All Setted The Proxy Option, Auto Set Proxy-server-nameserver Option to【%s】For Avoiding Proxies Server Resolve Loop...' % [default_proxy_servers.join(', ')]) - end + rescue Exception => e + YAML.LOG_ERROR('Config File params checked Failed,【%s】' % [e.message]) end - rescue Exception => e - YAML.LOG('Error: Config File Overwrite Failed,【%s】' % [e.message]) + YAML.LOG_ERROR('Config File Overwrite Failed,【%s】' % [e.message]) ensure File.open(config_file, 'w') { |f| YAML.dump(Value, f) } end diff --git a/luci-app-openclash/root/usr/share/openclash/yml_groups_get.sh b/luci-app-openclash/root/usr/share/openclash/yml_groups_get.sh index cba461b2..0c8ba147 100755 --- a/luci-app-openclash/root/usr/share/openclash/yml_groups_get.sh +++ b/luci-app-openclash/root/usr/share/openclash/yml_groups_get.sh @@ -13,13 +13,9 @@ del_lock() { rm -rf "/tmp/lock/openclash_groups_get.lock" } -CFG_FILE="/etc/config/openclash" -other_group_file="/tmp/yaml_other_group.yaml" -servers_update=$(uci_get_config "servers_update") -servers_if_update=$(uci_get_config "servers_if_update") CONFIG_FILE=$(uci_get_config "config_path") CONFIG_NAME=$(echo "$CONFIG_FILE" |awk -F '/' '{print $5}' 2>/dev/null) -UPDATE_CONFIG_FILE=$(uci_get_config "config_update_path") +UPDATE_CONFIG_FILE=$1 UPDATE_CONFIG_NAME=$(echo "$UPDATE_CONFIG_FILE" |awk -F '/' '{print $5}' 2>/dev/null) LOG_FILE="/tmp/openclash.log" set_lock @@ -45,95 +41,36 @@ if [ -z "$CONFIG_NAME" ]; then CONFIG_NAME="config.yaml" fi -BACKUP_FILE="/etc/openclash/backup/$(echo "$CONFIG_FILE" |awk -F '/' '{print $5}' 2>/dev/null)" - -if [ ! -s "$CONFIG_FILE" ] && [ ! -s "$BACKUP_FILE" ]; then +if [ ! -s "$CONFIG_FILE" ]; then del_lock exit 0 -elif [ ! -s "$CONFIG_FILE" ] && [ -s "$BACKUP_FILE" ]; then - mv "$BACKUP_FILE" "$CONFIG_FILE" fi LOG_OUT "Start Getting【$CONFIG_NAME】Groups Setting..." +LOG_OUT "Deleting Old Configuration..." -/usr/share/openclash/yml_groups_name_get.sh -if [ $? -ne 0 ]; then - LOG_OUT "Read Error, Config File【$CONFIG_NAME】Abnormal!" - uci -q commit openclash - SLOG_CLEAN - del_lock - exit 0 -fi - -#判断当前配置文件是否有策略组信息 -cfg_group_name() +del_options() { local section="$1" local config config_get "config" "$section" "config" "" - if [ -z "$config" ]; then - return + if [ "$config" = "$CONFIG_NAME" ]; then + uci -q delete openclash."$section" fi - - [ "$config" = "$CONFIG_NAME" ] || [ "$config" = "all" ] && { - config_group_exist=1 - } -} - -#删除不必要的配置 -cfg_delete() -{ - LOG_OUT "Deleting Old Configuration..." -#删除策略组 - group_num=$(grep "^config groups$" "$CFG_FILE" |wc -l) - for ((i=$group_num;i>=0;i--)) - do - if [ "$(uci -q get openclash.@groups["$i"].config)" = "$CONFIG_NAME" ]; then - uci -q delete openclash.@groups["$i"] - uci -q commit openclash - fi - done -#删除启用的节点 - server_num=$(grep "^config servers$" "$CFG_FILE" |wc -l) - for ((i=$server_num;i>=0;i--)) - do - if [ "$(uci -q get openclash.@servers["$i"].config)" = "$CONFIG_NAME" ]; then - if [ "$(uci -q get openclash.@servers["$i"].enabled)" = "1" ] && [ "$(uci -q get openclash.@servers["$i"].manual)" = "0" ]; then - uci -q delete openclash.@servers["$i"] - uci -q commit openclash - fi - fi - done -#删除启用的代理集 - provider_num=$(grep "^config proxy-provider$" "$CFG_FILE" 2>/dev/null |wc -l) - for ((i=$provider_num;i>=0;i--)) - do - if [ "$(uci -q get openclash.@proxy-provider["$i"].config)" = "$CONFIG_NAME" ]; then - if [ "$(uci -q get openclash.@proxy-provider["$i"].enabled)" = "1" ] && [ "$(uci -q get openclash.@proxy-provider["$i"].manual)" = "0" ]; then - uci -q delete openclash.@proxy-provider["$i"] - uci -q commit openclash - fi - fi - done } config_load "openclash" -config_foreach cfg_group_name "groups" - -if [ "$servers_if_update" -eq 1 ] && [ "$servers_update" -eq 1 ] && [ "$config_group_exist" -eq 1 ]; then - /usr/share/openclash/yml_proxys_get.sh - del_lock - exit 0 -fi - -cfg_delete +config_foreach del_options "groups" +config_foreach del_options "servers" +config_foreach del_options "proxy-provider" +uci -q commit openclash ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e " begin Value = YAML.load_file('$CONFIG_FILE'); rescue Exception => e - YAML.LOG('Error: Load File Failed,【' + e.message + '】'); + YAML.LOG_ERROR('Load File Failed,【' + e.message + '】'); end; threads_g = []; @@ -148,7 +85,7 @@ ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e " proxy-groups = []; end; - Value_1 = File.readlines('/tmp/Proxy_Group').map!{|x| x.strip}; + CONFIG_GROUP = (['DIRECT', 'REJECT', 'GLOBAL', 'REJECT-DROP', 'PASS', 'COMPATIBLE'] + (Value['proxy-groups']&.map { |x| x['name'] } || [])).uniq; Value['proxy-groups'].each_with_index do |x, index| uci_name_tmp << %x{uci -q add openclash groups 2>&1}.chomp queue.push(nil) @@ -181,8 +118,6 @@ ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e " uci_commands << uci_set + 'config=\"' + '${CONFIG_NAME}' + '\"' #old_name uci_commands << uci_set + 'old_name=\"' + x['name'] + '\"' - #old_name_cfg - uci_commands << uci_set + 'old_name_cfg=\"' + x['name'] + '\"' }; threads_g << Thread.new { @@ -274,7 +209,7 @@ ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e " if x.key?('proxies') then x['proxies'].each{ |y| - if Value_1.include?(y) then + if CONFIG_GROUP.include?(y) then uci_commands << uci_add + 'other_group=\"^' + y.to_s + '$\"' end } @@ -289,7 +224,7 @@ ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e " }; threads_g.each(&:join); rescue Exception => e - YAML.LOG('Error: Resolve Groups Failed,【${CONFIG_NAME} - ' + x['type'] + ' - ' + x['name'] + ': ' + e.message + '】'); + YAML.LOG_ERROR('Resolve Groups Failed,【${CONFIG_NAME} - ' + x['type'] + ' - ' + x['name'] + ': ' + e.message + '】'); ensure queue.pop end; @@ -314,5 +249,5 @@ ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e " system('rm -rf /tmp/yaml_other_group.yaml 2>/dev/null'); " 2>/dev/null >> $LOG_FILE -/usr/share/openclash/yml_proxys_get.sh +/usr/share/openclash/yml_proxys_get.sh "$CONFIG_FILE" >/dev/null 2>&1 del_lock \ No newline at end of file diff --git a/luci-app-openclash/root/usr/share/openclash/yml_groups_name_ch.sh b/luci-app-openclash/root/usr/share/openclash/yml_groups_name_ch.sh deleted file mode 100755 index 5d39a3f9..00000000 --- a/luci-app-openclash/root/usr/share/openclash/yml_groups_name_ch.sh +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/bash -. /lib/functions.sh - -set_lock() { - exec 882>"/tmp/lock/openclash_name_ch.lock" 2>/dev/null - flock -x 882 2>/dev/null -} - -del_lock() { - flock -u 882 2>/dev/null - rm -rf "/tmp/lock/openclash_name_ch.lock" -} - -cfg_groups_set() -{ - - CFG_FILE="/etc/config/openclash" - local section="$1" - local name old_name_cfg old_name - config_get "name" "$section" "name" "" - config_get "old_name_cfg" "$section" "old_name_cfg" "" - config_get "old_name" "$section" "old_name" "" - - if [ -z "$name" ]; then - return - fi - - if [ -z "$old_name_cfg" ]; then - uci -q set openclash."$section".old_name_cfg="$name" - uci -q commit openclash - fi - - if [ -z "$old_name" ]; then - uci -q set openclash."$section".old_name="$name" - uci -q commit openclash - fi - - #名字变化时处理配置文件 - if [ "$name" != "$old_name_cfg" ] && [ ! -z "$old_name_cfg" ]; then - convert_name=$(echo "$name" | sed 's/\//\\\//g' 2>/dev/null) - convert_old_name_cfg=$(echo "$old_name_cfg" | sed 's/\//\\\//g' 2>/dev/null) - sed -i "s/old_name_cfg '\(\^*\)${convert_old_name_cfg}\(\$*\)'/old_name_cfg '\1${convert_name}\2'/g" $CFG_FILE 2>/dev/null - sed -i "s/groups '\(\^*\)${convert_old_name_cfg}\(\$*\)'/groups '\1${convert_name}\2'/g" $CFG_FILE 2>/dev/null - sed -i "s/option group '\(\^*\)${convert_old_name_cfg}\(\$*\)'/option group '\1${convert_name}\2'/g" $CFG_FILE 2>/dev/null - sed -i "s/option specific_group '\(\^*\)${convert_old_name_cfg}\(\$*\)'/option specific_group '\1${convert_name}\2'/g" $CFG_FILE 2>/dev/null - sed -i "s/other_group '\(\^*\)${convert_old_name_cfg}\(\$*\)'/other_group '\1${convert_name}\2'/g" $CFG_FILE 2>/dev/null - sed -i "s/new_servers_group '\(\^*\)${convert_old_name_cfg}\(\$*\)'/new_servers_group '\1${convert_name}\2'/g" $CFG_FILE 2>/dev/null - sed -i "s/dialer_proxy '\(\^*\)${convert_old_name_cfg}\(\$*\)'/dialer_proxy '\1${convert_name}\2'/g" $CFG_FILE - #第三方规则处理 - OTHER_RULE_NAMES=("GlobalTV" "AsianTV" "MainlandTV" "Proxy" "Youtube" "Bilibili" "Bahamut" "HBOMax" "Pornhub" "Apple" "GoogleFCM" "Scholar" "Microsoft" "Netflix" "Disney Plus" "Spotify" "Steam" "TikTok" "Speedtest" "Telegram" "PayPal" "Netease_Music" "AdBlock" "Domestic" "Others" "miHoYo" "AI_Suite" "AppleTV" "Crypto" "Discord" "HTTPDNS") - for i in ${OTHER_RULE_NAMES[@]}; do - sed -i "s/option ${i} \'${convert_old_name_cfg}\'/option ${i} \'${convert_name}\'/g" $CFG_FILE 2>/dev/null - done 2>/dev/null - config_load "openclash" - fi -} - -set_lock -config_load "openclash" -config_foreach cfg_groups_set "groups" -del_lock \ No newline at end of file diff --git a/luci-app-openclash/root/usr/share/openclash/yml_groups_name_get.sh b/luci-app-openclash/root/usr/share/openclash/yml_groups_name_get.sh deleted file mode 100755 index c8449bfc..00000000 --- a/luci-app-openclash/root/usr/share/openclash/yml_groups_name_get.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/sh -. /usr/share/openclash/ruby.sh -. /usr/share/openclash/uci.sh - -CFG_FILE=$(uci_get_config "config_path") -UPDATE_CONFIG_FILE=$(uci_get_config "config_update_path") - -if [ ! -z "$UPDATE_CONFIG_FILE" ]; then - CFG_FILE="$UPDATE_CONFIG_FILE" -fi - -if [ -z "$CFG_FILE" ]; then - for file_name in /etc/openclash/config/* - do - if [ -f "$file_name" ]; then - CFG_FILE=$file_name - break - fi - done -fi - -if [ -f "$CFG_FILE" ]; then - rm -rf "/tmp/Proxy_Group" 2>/dev/null - ruby_read_hash_arr "$CFG_FILE" "['proxy-groups']" "['name']" >/tmp/Proxy_Group 2>&1 - - if [ -f "/tmp/Proxy_Group" ]; then - echo 'DIRECT' >>/tmp/Proxy_Group - echo 'REJECT' >>/tmp/Proxy_Group - echo 'REJECT-DROP' >>/tmp/Proxy_Group - echo 'PASS' >>/tmp/Proxy_Group - echo 'GLOBAL' >>/tmp/Proxy_Group - else - return 1 - fi -else - return 1 -fi \ No newline at end of file diff --git a/luci-app-openclash/root/usr/share/openclash/yml_groups_set.sh b/luci-app-openclash/root/usr/share/openclash/yml_groups_set.sh index 7acf887f..1df974fe 100755 --- a/luci-app-openclash/root/usr/share/openclash/yml_groups_set.sh +++ b/luci-app-openclash/root/usr/share/openclash/yml_groups_set.sh @@ -16,13 +16,12 @@ del_lock() { set_lock GROUP_FILE="/tmp/yaml_groups.yaml" CFG_FILE="/etc/config/openclash" -servers_update=$(uci_get_config "servers_update") CONFIG_FILE=$(uci_get_config "config_path") CONFIG_NAME=$(echo "$CONFIG_FILE" |awk -F '/' '{print $5}' 2>/dev/null) -UPDATE_CONFIG_FILE=$(uci_get_config "config_update_path") +UPDATE_CONFIG_FILE=$1 UPDATE_CONFIG_NAME=$(echo "$UPDATE_CONFIG_FILE" |awk -F '/' '{print $5}' 2>/dev/null) -if [ -n "$UPDATE_CONFIG_FILE" ]; then +if [ ! -z "$UPDATE_CONFIG_FILE" ]; then CONFIG_FILE="$UPDATE_CONFIG_FILE" CONFIG_NAME="$UPDATE_CONFIG_NAME" fi @@ -82,10 +81,6 @@ yml_servers_add() if [ -z "$4" ]; then config_list_foreach "$section" "groups" set_groups "$name" "$2" fi - - if [ -n "$if_game_group" ] && [ -z "$(ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "Value = YAML.load_file('$CONFIG_FILE'); Value['proxies'].each{|x| if x['name'].eql?('$name') then puts x['name'] end}" 2>/dev/null)" ]; then - /usr/share/openclash/yml_proxys_set.sh "$name" "proxy" - fi fi } @@ -172,7 +167,7 @@ set_proxy_provider() if [ -n "$config" ] && [ "$config" != "$CONFIG_NAME" ] && [ "$config" != "all" ]; then return - fi + fi if [ "$enabled" = "0" ]; then return @@ -180,10 +175,6 @@ set_proxy_provider() if [ -z "$3" ]; then config_list_foreach "$section" "groups" set_provider_groups "$name" "$2" fi - - if [ -n "$if_game_group" ] && [ -z "$(ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "Value = YAML.load_file('$CONFIG_FILE'); Value['proxy-providers'].keys.each{|x| if x.eql?('$name') then puts x end}" 2>/dev/null)" ]; then - /usr/share/openclash/yml_proxys_set.sh "$name" "proxy-provider" - fi fi } @@ -207,7 +198,6 @@ set_provider_groups() #创建策略组 yml_groups_set() { - local section="$1" local enabled config type name disable_udp strategy old_name test_url test_interval tolerance policy_filter uselightgbm collectdata policy_priority other_parameters icon config_get_bool "enabled" "$section" "enabled" "1" @@ -231,10 +221,6 @@ yml_groups_set() return fi - if [ -n "$if_game_group" ] && [ "$if_game_group" != "$name" ]; then - return - fi - if [ -n "$config" ] && [ "$config" != "$CONFIG_NAME" ] && [ "$config" != "all" ]; then return fi @@ -247,28 +233,12 @@ yml_groups_set() return fi - #游戏策略组存在时判断节点是否存在 - if [ -n "$if_game_group" ] && [ -n "$(grep "^$if_game_group$" /tmp/Proxy_Group)" ]; then - config_foreach yml_servers_add "servers" "$name" "$type" "check" #加入服务器节点 - config_foreach set_proxy_provider "proxy-provider" "$name" "check" #加入代理集 - return - fi - LOG_OUT "Start Writing【$CONFIG_NAME - $type - $name】Group To Config File..." echo " - name: $name" >>$GROUP_FILE echo " type: $type" >>$GROUP_FILE echo " proxies: $name" >>$GROUP_FILE - #名字变化时处理规则部分 - if [ "$name" != "$old_name" ] && [ -n "$old_name" ]; then - sed -i "s/,${old_name}/,${name}#delete_/g" "$CONFIG_FILE" 2>/dev/null - sed -i "s/: \"${old_name}\"/: \"${name}#delete_\"/g" "$CONFIG_FILE" 2>/dev/null - sed -i "s/return \"${old_name}\"$/return \"${name}#delete_\"/g" "$CONFIG_FILE" 2>/dev/null - sed -i "s/old_name \'${old_name}\'/old_name \'${name}\'/g" "$CFG_FILE" 2>/dev/null - config_load "openclash" - fi - set_group=0 set_proxy_provider=0 @@ -350,28 +320,13 @@ yml_groups_set() fi } -create_config=$(uci_get_config "create_config") -servers_if_update=$(uci_get_config "servers_if_update") -if_game_group="$1" -if [ "$create_config" = "0" ] || [ "$servers_if_update" = "1" ] || [ -n "$if_game_group" ]; then - /usr/share/openclash/yml_groups_name_get.sh - if [ $? -ne 0 ]; then - LOG_OUT "Error: Config File【$CONFIG_NAME】Unable To Parse, Please Choose One-key Function To Create Config File..." - uci -q commit openclash - SLOG_CLEAN - del_lock - exit 0 - else - if [ -z "$if_game_group" ]; then - echo "proxy-groups:" >$GROUP_FILE - fi - config_load "openclash" - config_foreach yml_groups_set "groups" - sed -i "s/#delete_//g" "$CONFIG_FILE" 2>/dev/null - fi -fi + +echo "proxy-groups:" >$GROUP_FILE +config_load "openclash" +config_foreach yml_groups_set "groups" +sed -i "s/#delete_//g" "$CONFIG_FILE" 2>/dev/null + +/usr/share/openclash/yml_proxys_set.sh "$CONFIG_FILE" >/dev/null 2>&1 del_lock -if [ -z "$if_game_group" ]; then - /usr/share/openclash/yml_proxys_set.sh -fi + diff --git a/luci-app-openclash/root/usr/share/openclash/yml_proxys_get.sh b/luci-app-openclash/root/usr/share/openclash/yml_proxys_get.sh index 1746b8f3..6a622522 100755 --- a/luci-app-openclash/root/usr/share/openclash/yml_proxys_get.sh +++ b/luci-app-openclash/root/usr/share/openclash/yml_proxys_get.sh @@ -15,7 +15,7 @@ del_lock() { CONFIG_FILE=$(uci_get_config "config_path") CONFIG_NAME=$(echo "$CONFIG_FILE" |awk -F '/' '{print $5}' 2>/dev/null) -UPDATE_CONFIG_FILE=$(uci_get_config "config_update_path") +UPDATE_CONFIG_FILE=$1 UPDATE_CONFIG_NAME=$(echo "$UPDATE_CONFIG_FILE" |awk -F '/' '{print $5}' 2>/dev/null) LOG_FILE="/tmp/openclash.log" set_lock @@ -41,115 +41,17 @@ if [ -z "$CONFIG_NAME" ]; then CONFIG_NAME="config.yaml" fi -BACKUP_FILE="/etc/openclash/backup/$(echo "$CONFIG_FILE" |awk -F '/' '{print $5}' 2>/dev/null)" - -if [ ! -s "$CONFIG_FILE" ] && [ ! -s "$BACKUP_FILE" ]; then +if [ ! -s "$CONFIG_FILE" ]; then del_lock exit 0 -elif [ ! -s "$CONFIG_FILE" ] && [ -s "$BACKUP_FILE" ]; then - mv "$BACKUP_FILE" "$CONFIG_FILE" fi -CFG_FILE="/etc/config/openclash" -match_servers="/tmp/match_servers.list" -match_provider="/tmp/match_provider.list" -servers_update=$(uci_get_config "servers_update") -servers_if_update=$(uci_get_config "servers_if_update") - -cfg_new_servers_groups_check() -{ - - if [ -z "$1" ]; then - return - fi - - config_foreach cfg_group_name "groups" "$1" -} - -cfg_group_name() -{ - local section="$1" - local name config - config_get "name" "$section" "name" "" - config_get "config" "$section" "config" "" - - if [ -z "$config" ]; then - return - fi - - if [ "$config" != "$CONFIG_NAME" ] && [ "$config" != "all" ]; then - return - fi - - if [ -z "$name" ]; then - return - fi - - if [ "$name" = "$2" ]; then - if [ -z "$new_server_add_group" ]; then - new_server_add_group="$name" - else - new_server_add_group="$new_server_add_group|||$name" - fi - fi -} - -#判断当前配置文件策略组信息是否包含指定策略组 -config_load "openclash" -config_list_foreach "config" "new_servers_group" cfg_new_servers_groups_check - -if [ "$(uci_get_config "new_servers_group")" = "all" ]; then - if [ -z "$new_server_add_group" ]; then - new_server_add_group="all" - else - new_server_add_group="all|||$new_server_add_group" - fi -fi - -yml_provider_name_get() -{ - local section="$1" - local name config - config_get "name" "$section" "name" "" - config_get "config" "$section" "config" "" - if [ -n "$name" ] && [ "$config" = "$CONFIG_NAME" ]; then - echo "$provider_nums.$name" >>"$match_provider" - fi - provider_nums=$(( $provider_nums + 1 )) -} - -yml_servers_name_get() -{ - local section="$1" - local name config - config_get "name" "$section" "name" "" - config_get "config" "$section" "config" "" - if [ -n "$name" ] && [ "$config" = "$CONFIG_NAME" ]; then - echo "$server_num.$name" >>"$match_servers" - fi - server_num=$(( $server_num + 1 )) -} - -LOG_OUT "Start Getting【$CONFIG_NAME】Proxy-providers Setting..." - -echo "" >"$match_provider" -provider_nums=0 -config_load "openclash" -config_foreach yml_provider_name_get "proxy-provider" - -LOG_OUT "Start Getting【$CONFIG_NAME】Proxies Setting..." - -echo "" >"$match_servers" -server_num=0 -config_load "openclash" -config_foreach yml_servers_name_get "servers" - #获取代理集信息 ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e " begin Value = YAML.load_file('$CONFIG_FILE'); rescue Exception => e - YAML.LOG('Error: Load File Failed,【' + e.message + '】'); + YAML.LOG_ERROR('Load File Failed,【' + e.message + '】'); end; threads = []; @@ -176,37 +78,16 @@ ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e " threads_pr << Thread.new { begin YAML.LOG('Start Getting【${CONFIG_NAME} - ' + y['type'].to_s + ' - ' + x.to_s + '】Proxy-provider Setting...'); - #代理集存在时获取代理集编号 - cmd = 'grep -F \'.' + x + '\' ${match_provider} 2>/dev/null |awk -F \".\" \'{print \$1}\''; - provider_nums = %x(#{cmd}).chomp; - if not provider_nums.empty? then - cmd = 'sed -i \"/^' + provider_nums + '\./c\\#match#\" $match_provider 2>/dev/null'; - system(cmd); - uci_set='set openclash.@proxy-provider[' + provider_nums + '].'; - uci_add='add_list openclash.@proxy-provider[' + provider_nums + '].'; - uci_del='uci -q delete openclash.@proxy-provider[' + provider_nums + '].'; - if not provider_nums then - uci_commands << uci_set + 'manual=0'; - end; - uci_commands << uci_set + 'type=\"' + y['type'].to_s + '\"'; - uci_name_tmp_prv[index] = 'uci -q delete openclash.' + uci_name_tmp_prv[index]; - else - #代理集不存在时添加新代理集 - uci_set='set openclash.' + uci_name_tmp_prv[index] + '.'; - uci_add='add_list openclash.' + uci_name_tmp_prv[index] + '.'; - uci_del='uci -q delete openclash.' + uci_name_tmp_prv[index] + '.'; - - if '$new_server_add_group'.to_s.strip.empty? and '$servers_if_update' == '1' and '$servers_update' == 1 then - uci_commands << uci_set + 'enabled=0'; - else - uci_commands << uci_set + 'enabled=1'; - end; - uci_commands << uci_set + 'manual=0'; - uci_commands << uci_set + 'config=\"$CONFIG_NAME\"'; - next unless x && y['type']; - uci_commands << uci_set + 'name=\"' + x.to_s + '\"'; - uci_commands << uci_set + 'type=\"' + y['type'].to_s + '\"'; - end; + #代理集不存在时添加新代理集 + uci_set='set openclash.' + uci_name_tmp_prv[index] + '.'; + uci_add='add_list openclash.' + uci_name_tmp_prv[index] + '.'; + uci_del='uci -q delete openclash.' + uci_name_tmp_prv[index] + '.'; + uci_commands << uci_set + 'enabled=1'; + uci_commands << uci_set + 'manual=0'; + uci_commands << uci_set + 'config=\"$CONFIG_NAME\"'; + next unless x && y['type']; + uci_commands << uci_set + 'name=\"' + x.to_s + '\"'; + uci_commands << uci_set + 'type=\"' + y['type'].to_s + '\"'; threads_prv << Thread.new{ #path @@ -269,36 +150,28 @@ ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e " threads_prv << Thread.new{ #加入策略组 - if '$servers_if_update' == '1' and ! '$new_server_add_group'.to_s.strip.empty? and '$servers_update' == '1' and provider_nums.empty? then - #新代理集且设置默认策略组时加入指定策略组 - new_provider_groups = '$new_server_add_group'.to_s.split('|||').map(&:strip).reject(&:empty?); - new_provider_groups.each do |x| - uci_commands << uci_add + 'groups=\"^' + x + '$\"' - end - elsif '$servers_if_update' != '1' then - threads_agr = []; - cmd = uci_del + 'groups >/dev/null 2>&1'; - system(cmd); - Value['proxy-groups'].each{ - |z| - threads_agr << Thread.new { - if z.key?('use') then - z['use'].each{ - |v| - if v == x then - uci_commands << uci_add + 'groups=\"^' + z['name'] + '$\"' - break - end - } + threads_agr = []; + cmd = uci_del + 'groups >/dev/null 2>&1'; + system(cmd); + Value['proxy-groups'].each{ + |z| + threads_agr << Thread.new { + if z.key?('use') then + z['use'].each{ + |v| + if v == x then + uci_commands << uci_add + 'groups=\"^' + z['name'] + '$\"' + break end - }; + } + end }; - threads_agr.each(&:join); - end; + }; + threads_agr.each(&:join); }; threads_prv.each(&:join); rescue Exception => e - YAML.LOG('Error: Resolve Proxy-providers Failed,【${CONFIG_NAME} - ' + x + ': ' + e.message + '】'); + YAML.LOG_ERROR('Resolve Proxy-providers Failed,【${CONFIG_NAME} - ' + x + ': ' + e.message + '】'); ensure queue.pop end; @@ -311,36 +184,16 @@ ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e " threads_pr << Thread.new { begin YAML.LOG('Start Getting【${CONFIG_NAME} - ' + x['type'].to_s + ' - ' + x['name'].to_s + '】Proxy Setting...'); - #节点存在时获取节点编号 - cmd = 'grep -F \'.' + x['name'].to_s + '\' ${match_servers} 2>/dev/null |awk -F \".\" \'{print \$1}\''; - server_num = %x(#{cmd}).chomp; - if not server_num.empty? then - #更新已有节点 - cmd = 'sed -i \"/^' + server_num + '\./c\\#match#\" $match_servers 2>/dev/null'; - system(cmd); - uci_set='set openclash.@servers[' + server_num + '].'; - uci_add='add_list openclash.@servers[' + server_num + '].'; - uci_del='uci -q delete openclash.@servers[' + server_num + '].'; - if not server_num then - uci_commands << uci_set + 'manual=0'; - end; - uci_name_tmp[index] = 'uci -q delete openclash.' + uci_name_tmp[index]; - else - #添加新节点 - uci_set='set openclash.' + uci_name_tmp[index] + '.'; - uci_add='add_list openclash.' + uci_name_tmp[index] + '.'; - uci_del='uci -q delete openclash.' + uci_name_tmp[index] + '.'; - if '$new_server_add_group'.to_s.strip.empty? and '$servers_if_update' == '1' and '$servers_update' == 1 then - uci_commands << uci_set + 'enabled=0'; - else - uci_commands << uci_set + 'enabled=1'; - end; - uci_commands << uci_set + 'manual=0'; - uci_commands << uci_set + 'config=\"$CONFIG_NAME\"'; - next unless x['name'] && x['type']; - if x.key?('name') then - uci_commands << uci_set + 'name=\"' + x['name'].to_s + '\"'; - end; + #添加新节点 + uci_set='set openclash.' + uci_name_tmp[index] + '.'; + uci_add='add_list openclash.' + uci_name_tmp[index] + '.'; + uci_del='uci -q delete openclash.' + uci_name_tmp[index] + '.'; + uci_commands << uci_set + 'enabled=1'; + uci_commands << uci_set + 'manual=0'; + uci_commands << uci_set + 'config=\"$CONFIG_NAME\"'; + next unless x['name'] && x['type']; + if x.key?('name') then + uci_commands << uci_set + 'name=\"' + x['name'].to_s + '\"'; end; threads << Thread.new{ @@ -1574,36 +1427,28 @@ ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e " #加入策略组 threads << Thread.new{ #加入策略组 - if '$servers_if_update' == '1' and ! '$new_server_add_group'.to_s.strip.empty? and '$servers_update' == '1' and server_num.empty? then - #新代理且设置默认策略组时加入指定策略组 - new_server_groups = '$new_server_add_group'.to_s.split('|||').map(&:strip).reject(&:empty?); - new_server_groups.each do |x| - uci_commands << uci_add + 'groups=\"^' + x + '$\"' - end - elsif '$servers_if_update' != '1' then - threads_gr = []; - cmd = uci_del + 'groups >/dev/null 2>&1'; - system(cmd); - Value['proxy-groups'].each{ - |z| - threads_gr << Thread.new{ - if z.key?('proxies') then - z['proxies'].each{ - |v| - if v == x['name'] then - uci_commands << uci_add + 'groups=\"^' + z['name'] + '$\"' - break - end - } - end; - }; + threads_gr = []; + cmd = uci_del + 'groups >/dev/null 2>&1'; + system(cmd); + Value['proxy-groups'].each{ + |z| + threads_gr << Thread.new{ + if z.key?('proxies') then + z['proxies'].each{ + |v| + if v == x['name'] then + uci_commands << uci_add + 'groups=\"^' + z['name'] + '$\"' + break + end + } + end; }; - threads_gr.each(&:join); - end; + }; + threads_gr.each(&:join); }; threads.each(&:join); rescue Exception => e - YAML.LOG('Error: Resolve Proxies Failed,【${CONFIG_NAME} - '+ x['type'] + ' - ' + x['name'] + ': ' + e.message + '】'); + YAML.LOG_ERROR('Resolve Proxies Failed,【${CONFIG_NAME} - '+ x['type'] + ' - ' + x['name'] + ': ' + e.message + '】'); ensure queue.pop end; @@ -1632,40 +1477,6 @@ ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e " system('uci -q commit openclash'); " >> $LOG_FILE -#删除订阅中已不存在的代理集 -if [ "$servers_if_update" = "1" ]; then - LOG_OUT "Deleting【$CONFIG_NAME】Proxy-providers That no Longer Exists in Subscription" - sed -i '/#match#/d' "$match_provider" 2>/dev/null - cat $match_provider 2>/dev/null|awk -F '.' '{print $1}' |sort -rn |while read line - do - if [ -z "$line" ]; then - continue - fi - if [ "$(uci get openclash.@proxy-provider["$line"].manual)" = "0" ] && [ "$(uci get openclash.@proxy-provider["$line"].config)" = "$CONFIG_NAME" ]; then - uci delete openclash.@proxy-provider["$line"] 2>/dev/null - fi - done -fi - -#删除订阅中已不存在的节点 -if [ "$servers_if_update" = "1" ]; then - LOG_OUT "Deleting【$CONFIG_NAME】Proxies That no Longer Exists in Subscription" - sed -i '/#match#/d' "$match_servers" 2>/dev/null - cat $match_servers |awk -F '.' '{print $1}' |sort -rn |while read -r line - do - if [ -z "$line" ]; then - continue - fi - if [ "$(uci -q get openclash.@servers["$line"].manual)" = "0" ] && [ "$(uci -q get openclash.@servers["$line"].config)" = "$CONFIG_NAME" ]; then - uci -q delete openclash.@servers["$line"] - fi - done 2>/dev/null -fi - -uci -q set openclash.config.servers_if_update=0 -uci -q commit openclash LOG_OUT "Config File【$CONFIG_NAME】Read Successful!" SLOG_CLEAN -rm -rf /tmp/match_servers.list 2>/dev/null -rm -rf /tmp/match_provider.list 2>/dev/null del_lock diff --git a/luci-app-openclash/root/usr/share/openclash/yml_proxys_set.sh b/luci-app-openclash/root/usr/share/openclash/yml_proxys_set.sh index 0a083163..7ec1a9e7 100755 --- a/luci-app-openclash/root/usr/share/openclash/yml_proxys_set.sh +++ b/luci-app-openclash/root/usr/share/openclash/yml_proxys_set.sh @@ -16,16 +16,13 @@ del_lock() { SERVER_FILE="/tmp/yaml_servers.yaml" PROXY_PROVIDER_FILE="/tmp/yaml_provider.yaml" -servers_if_update=$(uci_get_config "servers_if_update") -config_auto_update=$(uci_get_config "auto_update") CONFIG_FILE=$(uci_get_config "config_path") CONFIG_NAME=$(echo "$CONFIG_FILE" |awk -F '/' '{print $5}' 2>/dev/null) -UPDATE_CONFIG_FILE=$(uci_get_config "config_update_path") +UPDATE_CONFIG_FILE=$1 UPDATE_CONFIG_NAME=$(echo "$UPDATE_CONFIG_FILE" |awk -F '/' '{print $5}' 2>/dev/null) UCI_DEL_LIST="uci -q del_list openclash.config.new_servers_group" UCI_ADD_LIST="uci -q add_list openclash.config.new_servers_group" UCI_SET="uci -q set openclash.config." -MIX_PROXY=$(uci_get_config "mix_proxies") servers_name="/tmp/servers_name.list" proxy_provider_name="/tmp/provider_name.list" set_lock @@ -51,20 +48,6 @@ if [ -z "$CONFIG_NAME" ]; then CONFIG_NAME="config.yaml" fi -yml_other_rules_del() -{ - local section="$1" - local enabled config - config_get_bool "enabled" "$section" "enabled" "1" - config_get "config" "$section" "config" "" - config_get "rule_name" "$section" "rule_name" "" - - if [ "$enabled" = "0" ] || [ "$config" != "$2" ] || [ "$rule_name" != "$3" ]; then - return - else - uci -q set openclash."$section".enabled=0 - fi -} #写入代理集到配置文件 yml_proxy_provider_set() { @@ -105,11 +88,7 @@ yml_proxy_provider_set() return fi - if [ ! -z "$if_game_proxy" ] && [ "$if_game_proxy" != "$name" ] && [ "$if_game_proxy_type" = "proxy-provider" ]; then - return - fi - - if [ "$MIX_PROXY" != "1" ] && [ ! -z "$config" ] && [ "$config" != "$CONFIG_NAME" ] && [ "$config" != "all" ]; then + if [ ! -z "$config" ] && [ "$config" != "$CONFIG_NAME" ] && [ "$config" != "all" ]; then return fi @@ -363,11 +342,7 @@ yml_servers_set() fi fi - if [ ! -z "$if_game_proxy" ] && [ "$if_game_proxy" != "$name" ] && [ "$if_game_proxy_type" = "proxy" ]; then - return - fi - - if [ "$MIX_PROXY" != "1" ] && [ ! -z "$config" ] && [ "$config" != "$CONFIG_NAME" ] && [ "$config" != "all" ]; then + if [ ! -z "$config" ] && [ "$config" != "$CONFIG_NAME" ] && [ "$config" != "all" ]; then return fi @@ -1637,25 +1612,6 @@ EOF fi } -new_servers_group_set() -{ - local section="$1" - local enabled name - config_get_bool "enabled" "$section" "enabled" "1" - config_get "name" "$section" "name" "" - - if [ "$enabled" = "0" ]; then - return - fi - - if [ -z "$name" ] || [ "$(echo $name.yaml)" != "$CONFIG_NAME" ]; then - return - fi - - new_servers_group_set=1 - -} - yml_servers_name_get() { local section="$1" @@ -1677,14 +1633,10 @@ yml_proxy_provider_name_get() } #创建配置文件 -if_game_proxy="$1" -if_game_proxy_type="$2" -#创建对比文件防止重复 config_load "openclash" config_foreach yml_servers_name_get "servers" config_foreach yml_proxy_provider_name_get "proxy-provider" -#判断是否启用保留配置 -config_foreach new_servers_group_set "config_subscribe" + #proxy-provider LOG_OUT "Start Writing【$CONFIG_NAME】Proxy-providers Setting..." echo "proxy-providers:" >$PROXY_PROVIDER_FILE @@ -1698,8 +1650,6 @@ fi rm -rf $proxy_provider_name #proxy -rule_sources=$(uci_get_config "rule_sources") -create_config=$(uci_get_config "create_config") LOG_OUT "Start Writing【$CONFIG_NAME】Proxies Setting..." echo "proxies:" >$SERVER_FILE config_foreach yml_servers_set "servers" @@ -1712,551 +1662,23 @@ else fi rm -rf $servers_name -#一键创建配置文件 -if [ "$rule_sources" = "lhie1" ] && [ "$servers_if_update" != "1" ] && [ -z "$if_game_proxy" ]; then -LOG_OUT "Creating By Using lhie1 Rules..." -echo "proxy-groups:" >>$SERVER_FILE -cat >> "$SERVER_FILE" <<-EOF - - name: Auto - UrlTest - type: url-test -EOF -if [ -f "/tmp/Proxy_Server" ]; then -cat >> "$SERVER_FILE" <<-EOF - proxies: -EOF -fi -cat /tmp/Proxy_Server >> $SERVER_FILE 2>/dev/null -if [ -f "/tmp/Proxy_Provider" ]; then -cat >> "$SERVER_FILE" <<-EOF - use: -EOF -fi -cat /tmp/Proxy_Provider >> $SERVER_FILE 2>/dev/null -cat >> "$SERVER_FILE" <<-EOF - url: http://cp.cloudflare.com/generate_204 - interval: "600" - tolerance: "150" - - name: Proxy - type: select - proxies: - - Auto - UrlTest - - DIRECT -EOF -cat /tmp/Proxy_Server >> $SERVER_FILE 2>/dev/null -if [ -f "/tmp/Proxy_Provider" ]; then -cat >> "$SERVER_FILE" <<-EOF - use: -EOF -fi -cat /tmp/Proxy_Provider >> $SERVER_FILE 2>/dev/null -cat >> "$SERVER_FILE" <<-EOF - - name: Domestic - type: select - proxies: - - DIRECT - - Proxy - - name: Others - type: select - proxies: - - Proxy - - DIRECT - - Domestic - - name: Microsoft - type: select - proxies: - - Proxy - - DIRECT -EOF -cat >> "$SERVER_FILE" <<-EOF - - name: AI Suite - type: select - proxies: - - Proxy - - DIRECT -EOF -cat /tmp/Proxy_Server >> $SERVER_FILE 2>/dev/null -if [ -f "/tmp/Proxy_Provider" ]; then -cat >> "$SERVER_FILE" <<-EOF - use: -EOF -fi -cat /tmp/Proxy_Provider >> $SERVER_FILE 2>/dev/null -cat >> "$SERVER_FILE" <<-EOF - - name: Apple - type: select - proxies: - - Proxy - - DIRECT -EOF -cat /tmp/Proxy_Server >> $SERVER_FILE 2>/dev/null -if [ -f "/tmp/Proxy_Provider" ]; then -cat >> "$SERVER_FILE" <<-EOF - use: -EOF -fi -cat /tmp/Proxy_Provider >> $SERVER_FILE 2>/dev/null -cat >> "$SERVER_FILE" <<-EOF - - name: Apple TV - type: select - proxies: - - Proxy - - DIRECT -EOF -cat /tmp/Proxy_Server >> $SERVER_FILE 2>/dev/null -if [ -f "/tmp/Proxy_Provider" ]; then -cat >> "$SERVER_FILE" <<-EOF - use: -EOF -fi -cat /tmp/Proxy_Provider >> $SERVER_FILE 2>/dev/null -cat >> "$SERVER_FILE" <<-EOF - - name: Google FCM - type: select - proxies: - - Proxy - - DIRECT -EOF -cat /tmp/Proxy_Server >> $SERVER_FILE 2>/dev/null -if [ -f "/tmp/Proxy_Provider" ]; then -cat >> "$SERVER_FILE" <<-EOF - use: -EOF -fi -cat /tmp/Proxy_Provider >> $SERVER_FILE 2>/dev/null -cat >> "$SERVER_FILE" <<-EOF - - name: Scholar - type: select - proxies: - - DIRECT - - Proxy -EOF -cat /tmp/Proxy_Server >> $SERVER_FILE 2>/dev/null -if [ -f "/tmp/Proxy_Provider" ]; then -cat >> "$SERVER_FILE" <<-EOF - use: -EOF -fi -cat /tmp/Proxy_Provider >> $SERVER_FILE 2>/dev/null -cat >> "$SERVER_FILE" <<-EOF - - name: Bilibili - type: select - proxies: - - CN Mainland TV - - DIRECT -EOF -cat /tmp/Proxy_Server >> $SERVER_FILE 2>/dev/null -if [ -f "/tmp/Proxy_Provider" ]; then -cat >> "$SERVER_FILE" <<-EOF - use: -EOF -fi -cat /tmp/Proxy_Provider >> $SERVER_FILE 2>/dev/null -cat >> "$SERVER_FILE" <<-EOF - - name: Bahamut - type: select - proxies: - - Global TV - - DIRECT -EOF -cat /tmp/Proxy_Server >> $SERVER_FILE 2>/dev/null -if [ -f "/tmp/Proxy_Provider" ]; then -cat >> "$SERVER_FILE" <<-EOF - use: -EOF -fi -cat /tmp/Proxy_Provider >> $SERVER_FILE 2>/dev/null -cat >> "$SERVER_FILE" <<-EOF - - name: HBO Max - type: select - proxies: - - Global TV - - DIRECT -EOF -cat /tmp/Proxy_Server >> $SERVER_FILE 2>/dev/null -if [ -f "/tmp/Proxy_Provider" ]; then -cat >> "$SERVER_FILE" <<-EOF - use: -EOF -fi -cat /tmp/Proxy_Provider >> $SERVER_FILE 2>/dev/null -cat >> "$SERVER_FILE" <<-EOF - - name: Pornhub - type: select - proxies: - - Global TV - - DIRECT -EOF -cat /tmp/Proxy_Server >> $SERVER_FILE 2>/dev/null -if [ -f "/tmp/Proxy_Provider" ]; then -cat >> "$SERVER_FILE" <<-EOF - use: -EOF -fi -cat /tmp/Proxy_Provider >> $SERVER_FILE 2>/dev/null -cat >> "$SERVER_FILE" <<-EOF - - name: Netflix - type: select - proxies: - - Global TV - - DIRECT -EOF -cat /tmp/Proxy_Server >> $SERVER_FILE 2>/dev/null -if [ -f "/tmp/Proxy_Provider" ]; then -cat >> "$SERVER_FILE" <<-EOF - use: -EOF -fi -cat /tmp/Proxy_Provider >> $SERVER_FILE 2>/dev/null -cat >> "$SERVER_FILE" <<-EOF - - name: Disney Plus - type: select - proxies: - - Global TV - - DIRECT -EOF -cat /tmp/Proxy_Server >> $SERVER_FILE 2>/dev/null -if [ -f "/tmp/Proxy_Provider" ]; then -cat >> "$SERVER_FILE" <<-EOF - use: -EOF -fi -cat /tmp/Proxy_Provider >> $SERVER_FILE 2>/dev/null -cat >> "$SERVER_FILE" <<-EOF - - name: Youtube - type: select - disable-udp: true - proxies: - - Global TV - - DIRECT -EOF -cat /tmp/Proxy_Server >> $SERVER_FILE 2>/dev/null -if [ -f "/tmp/Proxy_Provider" ]; then -cat >> "$SERVER_FILE" <<-EOF - use: -EOF -fi -cat /tmp/Proxy_Provider >> $SERVER_FILE 2>/dev/null -cat >> "$SERVER_FILE" <<-EOF - - name: Discovery Plus - type: select - proxies: - - Global TV - - DIRECT -EOF -cat /tmp/Proxy_Server >> $SERVER_FILE 2>/dev/null -if [ -f "/tmp/Proxy_Provider" ]; then -cat >> "$SERVER_FILE" <<-EOF - use: -EOF -fi -cat /tmp/Proxy_Provider >> $SERVER_FILE 2>/dev/null -cat >> "$SERVER_FILE" <<-EOF - - name: DAZN - type: select - proxies: - - Global TV - - DIRECT -EOF -cat /tmp/Proxy_Server >> $SERVER_FILE 2>/dev/null -if [ -f "/tmp/Proxy_Provider" ]; then -cat >> "$SERVER_FILE" <<-EOF - use: -EOF -fi -cat /tmp/Proxy_Provider >> $SERVER_FILE 2>/dev/null -cat >> "$SERVER_FILE" <<-EOF - - name: Spotify - type: select - proxies: - - Global TV - - DIRECT -EOF -cat /tmp/Proxy_Server >> $SERVER_FILE 2>/dev/null -if [ -f "/tmp/Proxy_Provider" ]; then -cat >> "$SERVER_FILE" <<-EOF - use: -EOF -fi -cat /tmp/Proxy_Provider >> $SERVER_FILE 2>/dev/null -cat >> "$SERVER_FILE" <<-EOF - - name: Steam - type: select - proxies: - - Proxy - - DIRECT -EOF -cat /tmp/Proxy_Server >> $SERVER_FILE 2>/dev/null -if [ -f "/tmp/Proxy_Provider" ]; then -cat >> "$SERVER_FILE" <<-EOF - use: -EOF -fi -cat /tmp/Proxy_Provider >> $SERVER_FILE 2>/dev/null -cat >> "$SERVER_FILE" <<-EOF - - name: TikTok - type: select - proxies: - - Proxy - - DIRECT -EOF -cat /tmp/Proxy_Server >> $SERVER_FILE 2>/dev/null -if [ -f "/tmp/Proxy_Provider" ]; then -cat >> "$SERVER_FILE" <<-EOF - use: -EOF -fi -cat /tmp/Proxy_Provider >> $SERVER_FILE 2>/dev/null -cat >> "$SERVER_FILE" <<-EOF - - name: miHoYo - type: select - proxies: - - DIRECT - - Proxy -EOF -cat /tmp/Proxy_Server >> $SERVER_FILE 2>/dev/null -if [ -f "/tmp/Proxy_Provider" ]; then -cat >> "$SERVER_FILE" <<-EOF - use: -EOF -fi -cat /tmp/Proxy_Provider >> $SERVER_FILE 2>/dev/null -cat >> "$SERVER_FILE" <<-EOF - - name: AdBlock - type: select - proxies: - - REJECT - - DIRECT - - Proxy - - name: HTTPDNS - type: select - proxies: - - REJECT - - DIRECT - - Proxy -EOF -cat /tmp/Proxy_Server >> $SERVER_FILE 2>/dev/null -if [ -f "/tmp/Proxy_Provider" ]; then -cat >> "$SERVER_FILE" <<-EOF - use: -EOF -fi -cat /tmp/Proxy_Provider >> $SERVER_FILE 2>/dev/null -cat >> "$SERVER_FILE" <<-EOF - - name: CN Mainland TV - type: select - proxies: - - DIRECT - - Proxy -EOF -cat /tmp/Proxy_Server >> $SERVER_FILE 2>/dev/null -if [ -f "/tmp/Proxy_Provider" ]; then -cat >> "$SERVER_FILE" <<-EOF - use: -EOF -fi -cat /tmp/Proxy_Provider >> $SERVER_FILE 2>/dev/null -cat >> "$SERVER_FILE" <<-EOF - - name: Asian TV - type: select - proxies: - - Proxy - - DIRECT -EOF -cat /tmp/Proxy_Server >> $SERVER_FILE 2>/dev/null -if [ -f "/tmp/Proxy_Provider" ]; then -cat >> "$SERVER_FILE" <<-EOF - use: -EOF -fi -cat /tmp/Proxy_Provider >> $SERVER_FILE 2>/dev/null -cat >> "$SERVER_FILE" <<-EOF - - name: Global TV - type: select - proxies: - - Proxy - - DIRECT -EOF -cat /tmp/Proxy_Server >> $SERVER_FILE 2>/dev/null -if [ -f "/tmp/Proxy_Provider" ]; then -cat >> "$SERVER_FILE" <<-EOF - use: -EOF -fi -cat /tmp/Proxy_Provider >> $SERVER_FILE 2>/dev/null -cat >> "$SERVER_FILE" <<-EOF - - name: Speedtest - type: select - proxies: - - Proxy - - DIRECT -EOF -cat /tmp/Proxy_Server >> $SERVER_FILE 2>/dev/null -if [ -f "/tmp/Proxy_Provider" ]; then -cat >> "$SERVER_FILE" <<-EOF - use: -EOF -fi -cat /tmp/Proxy_Provider >> $SERVER_FILE 2>/dev/null -cat >> "$SERVER_FILE" <<-EOF - - name: Telegram - type: select - proxies: - - Proxy - - DIRECT -EOF -cat /tmp/Proxy_Server >> $SERVER_FILE 2>/dev/null -if [ -f "/tmp/Proxy_Provider" ]; then -cat >> "$SERVER_FILE" <<-EOF - use: -EOF -fi -cat /tmp/Proxy_Provider >> $SERVER_FILE 2>/dev/null -cat >> "$SERVER_FILE" <<-EOF - - name: Crypto - type: select - proxies: - - Proxy - - DIRECT -EOF -cat /tmp/Proxy_Server >> $SERVER_FILE 2>/dev/null -if [ -f "/tmp/Proxy_Provider" ]; then -cat >> "$SERVER_FILE" <<-EOF - use: -EOF -fi -cat /tmp/Proxy_Provider >> $SERVER_FILE 2>/dev/null -cat >> "$SERVER_FILE" <<-EOF - - name: Discord - type: select - proxies: - - Proxy - - DIRECT -EOF -cat /tmp/Proxy_Server >> $SERVER_FILE 2>/dev/null -if [ -f "/tmp/Proxy_Provider" ]; then -cat >> "$SERVER_FILE" <<-EOF - use: -EOF -fi -cat /tmp/Proxy_Provider >> $SERVER_FILE 2>/dev/null -cat >> "$SERVER_FILE" <<-EOF - - name: PayPal - type: select - proxies: - - DIRECT - - Proxy -EOF -cat /tmp/Proxy_Server >> $SERVER_FILE 2>/dev/null -if [ -f "/tmp/Proxy_Provider" ]; then -cat >> "$SERVER_FILE" <<-EOF - use: -EOF -fi -cat /tmp/Proxy_Provider >> $SERVER_FILE 2>/dev/null -config_load "openclash" -config_foreach yml_other_rules_del "other_rules" "$CONFIG_NAME" "lhie1" -uci_name_tmp=$(uci -q add openclash other_rules) -uci_set="uci -q set openclash.$uci_name_tmp." -${UCI_SET}rule_source="1" -${uci_set}enable="1" -${uci_set}rule_name="lhie1" -${uci_set}config="$CONFIG_NAME" -${uci_set}GlobalTV="Global TV" -${uci_set}AsianTV="Asian TV" -${uci_set}MainlandTV="CN Mainland TV" -${uci_set}Proxy="Proxy" -${uci_set}Youtube="Youtube" -${uci_set}Bilibili="Bilibili" -${uci_set}Bahamut="Bahamut" -${uci_set}HBOMax="HBO Max" -${uci_set}Pornhub="Pornhub" -${uci_set}Apple="Apple" -${uci_set}AppleTV="Apple TV" -${uci_set}GoogleFCM="Google FCM" -${uci_set}Scholar="Scholar" -${uci_set}Microsoft="Microsoft" -${uci_set}AI_Suite="AI Suite" -${uci_set}Netflix="Netflix" -${uci_set}Discovery="Discovery Plus" -${uci_set}DAZN="DAZN" -${uci_set}Disney="Disney Plus" -${uci_set}Spotify="Spotify" -${uci_set}Steam="Steam" -${uci_set}TikTok="TikTok" -${uci_set}miHoYo="miHoYo" -${uci_set}AdBlock="AdBlock" -${uci_set}HTTPDNS="HTTPDNS" -${uci_set}Speedtest="Speedtest" -${uci_set}Telegram="Telegram" -${uci_set}Crypto="Crypto" -${uci_set}Discord="Discord" -${uci_set}PayPal="PayPal" -${uci_set}Domestic="Domestic" -${uci_set}Others="Others" -[ "$config_auto_update" -eq 1 ] && [ "$new_servers_group_set" -eq 1 ] && { - ${UCI_SET}servers_update="1" - ${UCI_DEL_LIST}="all" >/dev/null 2>&1 - ${UCI_DEL_LIST}="Auto - UrlTest" >/dev/null 2>&1 && ${UCI_ADD_LIST}="Auto - UrlTest" >/dev/null 2>&1 - ${UCI_DEL_LIST}="Proxy" >/dev/null 2>&1 && ${UCI_ADD_LIST}="Proxy" >/dev/null 2>&1 - ${UCI_DEL_LIST}="Youtube" >/dev/null 2>&1 && ${UCI_ADD_LIST}="Youtube" >/dev/null 2>&1 - ${UCI_DEL_LIST}="Bilibili" >/dev/null 2>&1 && ${UCI_ADD_LIST}="Bilibili" >/dev/null 2>&1 - ${UCI_DEL_LIST}="Bahamut" >/dev/null 2>&1 && ${UCI_ADD_LIST}="Bahamut" >/dev/null 2>&1 - ${UCI_DEL_LIST}="HBO Max" >/dev/null 2>&1 && ${UCI_ADD_LIST}="HBO Max" >/dev/null 2>&1 - ${UCI_DEL_LIST}="Pornhub" >/dev/null 2>&1 && ${UCI_ADD_LIST}="Pornhub" >/dev/null 2>&1 - ${UCI_DEL_LIST}="Asian TV" >/dev/null 2>&1 && ${UCI_ADD_LIST}="Asian TV" >/dev/null 2>&1 - ${UCI_DEL_LIST}="CN Mainland TV" >/dev/null 2>&1 && ${UCI_ADD_LIST}="CN Mainland TV" >/dev/null 2>&1 - ${UCI_DEL_LIST}="Global TV" >/dev/null 2>&1 && ${UCI_ADD_LIST}="Global TV" >/dev/null 2>&1 - ${UCI_DEL_LIST}="Netflix" >/dev/null 2>&1 && ${UCI_ADD_LIST}="Netflix" >/dev/null 2>&1 - ${UCI_DEL_LIST}="Discovery Plus" >/dev/null 2>&1 && ${UCI_ADD_LIST}="Discovery Plus" >/dev/null 2>&1 - ${UCI_DEL_LIST}="DAZN" >/dev/null 2>&1 && ${UCI_ADD_LIST}="DAZN" >/dev/null 2>&1 - ${UCI_DEL_LIST}="AI Suite" >/dev/null 2>&1 && ${UCI_ADD_LIST}="AI Suite" >/dev/null 2>&1 - ${UCI_DEL_LIST}="Apple TV" >/dev/null 2>&1 && ${UCI_ADD_LIST}="Apple TV" >/dev/null 2>&1 - ${UCI_DEL_LIST}="Google FCM" >/dev/null 2>&1 && ${UCI_ADD_LIST}="Google FCM" >/dev/null 2>&1 - ${UCI_DEL_LIST}="Scholar" >/dev/null 2>&1 && ${UCI_ADD_LIST}="Scholar" >/dev/null 2>&1 - ${UCI_DEL_LIST}="Disney Plus" >/dev/null 2>&1 && ${UCI_ADD_LIST}="Disney Plus" >/dev/null 2>&1 - ${UCI_DEL_LIST}="Spotify" >/dev/null 2>&1 && ${UCI_ADD_LIST}="Spotify" >/dev/null 2>&1 - ${UCI_DEL_LIST}="Steam" >/dev/null 2>&1 && ${UCI_ADD_LIST}="Steam" >/dev/null 2>&1 - ${UCI_DEL_LIST}="TikTok" >/dev/null 2>&1 && ${UCI_ADD_LIST}="TikTok" >/dev/null 2>&1 - ${UCI_DEL_LIST}="miHoYo" >/dev/null 2>&1 && ${UCI_ADD_LIST}="miHoYo" >/dev/null 2>&1 - ${UCI_DEL_LIST}="Telegram" >/dev/null 2>&1 && ${UCI_ADD_LIST}="Telegram" >/dev/null 2>&1 - ${UCI_DEL_LIST}="Crypto" >/dev/null 2>&1 && ${UCI_ADD_LIST}="Crypto" >/dev/null 2>&1 - ${UCI_DEL_LIST}="Discord" >/dev/null 2>&1 && ${UCI_ADD_LIST}="Discord" >/dev/null 2>&1 - ${UCI_DEL_LIST}="PayPal" >/dev/null 2>&1 && ${UCI_ADD_LIST}="PayPal" >/dev/null 2>&1 - ${UCI_DEL_LIST}="Speedtest" >/dev/null 2>&1 && ${UCI_ADD_LIST}="Speedtest" >/dev/null 2>&1 - ${UCI_DEL_LIST}="Others" >/dev/null 2>&1 && ${UCI_ADD_LIST}="Others" >/dev/null 2>&1 -} +LOG_OUT "Proxies, Proxy-providers, Groups Edited Successful, Updating Config File【$CONFIG_NAME】..." +config_hash=$(ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "Value = YAML.load_file('$CONFIG_FILE'); puts Value" 2>/dev/null) +if [ "$config_hash" != "false" ] && [ -n "$config_hash" ]; then + ruby_cover "$CONFIG_FILE" "['proxies']" "$SERVER_FILE" "proxies" + ruby_cover "$CONFIG_FILE" "['proxy-providers']" "$PROXY_PROVIDER_FILE" "proxy-providers" + ruby_cover "$CONFIG_FILE" "['proxy-groups']" "/tmp/yaml_groups.yaml" "proxy-groups" +else + cat "$SERVER_FILE" "$PROXY_PROVIDER_FILE" "/tmp/yaml_groups.yaml" > "$CONFIG_FILE" 2>/dev/null fi -if [ "$create_config" != "0" ] && [ "$servers_if_update" != "1" ] && [ -z "$if_game_proxy" ]; then - echo "rules:" >>$SERVER_FILE - LOG_OUT "Config File【$CONFIG_NAME】Created Successful, Updating Proxies, Proxy-providers, Groups..." - cat "$PROXY_PROVIDER_FILE" > "$CONFIG_FILE" 2>/dev/null - cat "$SERVER_FILE" >> "$CONFIG_FILE" 2>/dev/null - /usr/share/openclash/yml_groups_get.sh >/dev/null 2>&1 -elif [ -z "$if_game_proxy" ]; then - LOG_OUT "Proxies, Proxy-providers, Groups Edited Successful, Updating Config File【$CONFIG_NAME】..." - config_hash=$(ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "Value = YAML.load_file('$CONFIG_FILE'); puts Value" 2>/dev/null) - if [ "$config_hash" != "false" ] && [ -n "$config_hash" ]; then - ruby_cover "$CONFIG_FILE" "['proxies']" "$SERVER_FILE" "proxies" - ruby_cover "$CONFIG_FILE" "['proxy-providers']" "$PROXY_PROVIDER_FILE" "proxy-providers" - ruby_cover "$CONFIG_FILE" "['proxy-groups']" "/tmp/yaml_groups.yaml" "proxy-groups" - else - cat "$SERVER_FILE" "$PROXY_PROVIDER_FILE" "/tmp/yaml_groups.yaml" > "$CONFIG_FILE" 2>/dev/null - fi -fi - -if [ -z "$if_game_proxy" ]; then - rm -rf $SERVER_FILE 2>/dev/null - rm -rf $PROXY_PROVIDER_FILE 2>/dev/null - rm -rf /tmp/yaml_groups.yaml 2>/dev/null - LOG_OUT "Config File【$CONFIG_NAME】Write Successful!" - SLOG_CLEAN -fi +rm -rf $SERVER_FILE 2>/dev/null +rm -rf $PROXY_PROVIDER_FILE 2>/dev/null +rm -rf /tmp/yaml_groups.yaml 2>/dev/null rm -rf /tmp/Proxy_Server 2>/dev/null rm -rf /tmp/Proxy_Provider 2>/dev/null -del_lock -${UCI_SET}enable=1 2>/dev/null -[ "$(uci_get_config "servers_if_update")" == "0" ] && [ -z "$if_game_proxy" ] && /etc/init.d/openclash restart >/dev/null 2>&1 -${UCI_SET}servers_if_update=0 -uci -q commit openclash + +LOG_OUT "Config File【$CONFIG_NAME】Write Successful!" +SLOG_CLEAN +del_lock \ No newline at end of file diff --git a/luci-app-openclash/root/usr/share/openclash/yml_rules_change.sh b/luci-app-openclash/root/usr/share/openclash/yml_rules_change.sh index 050401a5..f0bb09f1 100755 --- a/luci-app-openclash/root/usr/share/openclash/yml_rules_change.sh +++ b/luci-app-openclash/root/usr/share/openclash/yml_rules_change.sh @@ -5,916 +5,405 @@ . /usr/share/openclash/uci.sh LOG_FILE="/tmp/openclash.log" -RULE_PROVIDER_FILE="/tmp/yaml_rule_provider.yaml" -GAME_RULE_FILE="/tmp/yaml_game_rule.yaml" github_address_mod=$(uci_get_config "github_address_mod" || echo 0) urltest_address_mod=$(uci_get_config "urltest_address_mod" || echo 0) tolerance=$(uci_get_config "tolerance" || echo 0) urltest_interval_mod=$(uci_get_config "urltest_interval_mod" || echo 0) -CONFIG_NAME="$5" -rule_name="" -SKIP_CUSTOM_OTHER_RULES=0 - -cache_file_content() { - local file="$1" - local cache_var="$2" - if [ -f "$file" ] && [ -z "$(eval echo \$$cache_var)" ]; then - eval "$cache_var=\"\$(cat '$file')\"" - fi -} - -check_duplicate_url() { - [ -n "$1" ] && [ -n "${RULE_PROVIDER_CACHE}" ] && echo "${RULE_PROVIDER_CACHE}" | grep -q "$1" -} - -check_duplicate_path() { - [ -n "$1" ] && [ -n "${RULE_PROVIDER_CACHE}" ] && echo "${RULE_PROVIDER_CACHE}" | grep -q "$1" -} - -# Custom rule-provider -yml_set_custom_rule_provider() -{ - local section="$1" - local enabled name config type behavior path url interval group position other_parameters format - config_get_bool "enabled" "$section" "enabled" "1" - - [ "$enabled" = "0" ] && return - - config_get "name" "$section" "name" "" - config_get "config" "$section" "config" "" - config_get "type" "$section" "type" "" - config_get "behavior" "$section" "behavior" "" - config_get "path" "$section" "path" "" - config_get "url" "$section" "url" "" - config_get "interval" "$section" "interval" "" - config_get "group" "$section" "group" "" - config_get "position" "$section" "position" "" - config_get "format" "$section" "format" "" - config_get "other_parameters" "$section" "other_parameters" "" - - cache_file_content "$RULE_PROVIDER_FILE" "RULE_PROVIDER_CACHE" - - if check_duplicate_url "$url" || [ -n "$config" ] && [ "$config" != "$CONFIG_NAME" ] && [ "$config" != "all" ]; then - return - fi - - if [ -z "$name" ] || [ -z "$type" ] || [ -z "$behavior" ] || { [ "$type" = "http" ] && [ -z "$url" ]; }; then - return - fi - - [ -z "$format" ] && format="yaml" - - if [ "$type" = "http" ] && [ -z "$(echo "$path" | grep "./rule_provider/")" ]; then - case "$format" in - "text") path="./rule_provider/$name" ;; - "mrs") path="./rule_provider/$name.mrs" ;; - *) path="./rule_provider/$name.yaml" ;; - esac - elif [ -z "$path" ] && [ "$type" != "inline" ]; then - return - fi - - check_duplicate_path "$path" && return - - [ -z "$interval" ] && [ "$type" = "http" ] && interval=86400 - - { - echo " $name:" - echo " type: $type" - echo " behavior: $behavior" - [ -n "$path" ] && echo " path: $path" - [ -n "$format" ] && echo " format: $format" - if [ "$type" = "http" ]; then - echo " url: $url" - echo " interval: $interval" - fi - [ -n "$other_parameters" ] && echo -e "$other_parameters" - } >> "$RULE_PROVIDER_FILE" - - yml_rule_set_add "$name" "$group" "$position" -} - -yml_rule_set_add() -{ - [ -z "$3" ] && return - - local target_file rule_content - if [ "$3" = "1" ]; then - target_file="/tmp/yaml_rule_set_bottom_custom.yaml" - else - target_file="/tmp/yaml_rule_set_top_custom.yaml" - fi - - rule_content="- RULE-SET,${1},${2}" - - if [ ! -f "$target_file" ] || [ -z "$(grep "^ \{0,\}rules:$" "$target_file" 2>/dev/null)" ]; then - echo "rules:" > "$target_file" - fi - echo "$rule_content" >> "$target_file" -} - -yml_gen_rule_provider_file() -{ - [ -z "$1" ] && return - - if [ -z "$RULE_PROVIDERS_LIST_CACHE" ]; then - RULE_PROVIDERS_LIST_CACHE=$(cat /usr/share/openclash/res/rule_providers.list 2>/dev/null) - fi - - local rule_line=$(echo "$RULE_PROVIDERS_LIST_CACHE" | grep "^$1,") - [ -z "$rule_line" ] && return - - RULE_PROVIDER_FILE_NAME=$(echo "$rule_line" | awk -F ',' '{print ($6 != "") ? $6 : $5}') - RULE_PROVIDER_FILE_BEHAVIOR=$(echo "$rule_line" | awk -F ',' '{print $3}') - RULE_PROVIDER_FILE_PATH="/etc/openclash/rule_provider/$RULE_PROVIDER_FILE_NAME" - RULE_PROVIDER_FILE_URL_PATH=$(echo "$rule_line" | awk -F ',' '{print $4$5}') - - if [ "$github_address_mod" -eq 0 ]; then - RULE_PROVIDER_FILE_URL="https://raw.githubusercontent.com/${RULE_PROVIDER_FILE_URL_PATH}" - else - case "$github_address_mod" in - "https://cdn.jsdelivr.net/"|"https://fastly.jsdelivr.net/"|"https://testingcf.jsdelivr.net/") - local repo_part=$(echo "$RULE_PROVIDER_FILE_URL_PATH" | awk -F '/master' '{print $1}') - local path_part=$(echo "$RULE_PROVIDER_FILE_URL_PATH" | awk -F 'master' '{print $2}') - RULE_PROVIDER_FILE_URL="${github_address_mod}gh/${repo_part}@master${path_part}" - ;; - *) - RULE_PROVIDER_FILE_URL="${github_address_mod}https://raw.githubusercontent.com/${RULE_PROVIDER_FILE_URL_PATH}" - ;; - esac - fi - - cache_file_content "$RULE_PROVIDER_FILE" "RULE_PROVIDER_CACHE" - check_duplicate_url "$RULE_PROVIDER_FILE_URL" && return - - [ -z "$RULE_PROVIDER_FILE_NAME" ] || [ -z "$RULE_PROVIDER_FILE_BEHAVIOR" ] || [ -z "$RULE_PROVIDER_FILE_URL" ] && return - - { - echo " $1:" - echo " type: http" - echo " behavior: $RULE_PROVIDER_FILE_BEHAVIOR" - echo " path: $RULE_PROVIDER_FILE_PATH" - echo " url: $RULE_PROVIDER_FILE_URL" - echo " interval: ${3:-86400}" - } >> "$RULE_PROVIDER_FILE" - - yml_rule_set_add "$1" "$2" "$4" -} - -yml_get_rule_provider() -{ - local section="$1" - local enabled group config interval position - config_get_bool "enabled" "$section" "enabled" "1" - - [ "$enabled" = "0" ] && return - - config_get "group" "$section" "group" "" - config_get "config" "$section" "config" "" - config_get "interval" "$section" "interval" "" - config_get "position" "$section" "position" "" - - if [ -n "$config" ] && [ "$config" != "$CONFIG_NAME" ] && [ "$config" != "all" ] || [ -z "$group" ]; then - return - fi - - config_list_foreach "$section" "rule_name" yml_gen_rule_provider_file "$group" "$interval" "$position" -} - -get_rule_file() -{ - [ -z "$1" ] && return - - if [ -z "$GAME_RULES_LIST_CACHE" ]; then - GAME_RULES_LIST_CACHE=$(cat /usr/share/openclash/res/game_rules.list 2>/dev/null) - fi - - local game_line=$(echo "$GAME_RULES_LIST_CACHE" | grep "^$1,") - [ -z "$game_line" ] && return - - GAME_RULE_FILE_NAME=$(echo "$game_line" | awk -F ',' '{print ($3 != "") ? $3 : $2}') - GAME_RULE_PATH="./game_rules/$GAME_RULE_FILE_NAME" - - yml_rule_set_add "$1" "$2" "1" - - { - echo " $1:" - echo " type: file" - echo " behavior: ipcidr" - echo " path: '${GAME_RULE_PATH}'" - } >> "$RULE_PROVIDER_FILE" -} - -yml_game_rule_get() -{ - local section="$1" - local enabled group config - config_get_bool "enabled" "$section" "enabled" "1" - - [ "$enabled" = "0" ] && return - - config_get "group" "$section" "group" "" - config_get "config" "$section" "config" "" - - if [ -n "$config" ] && [ "$config" != "$CONFIG_NAME" ] && [ "$config" != "all" ] || [ -z "$group" ]; then - return - fi - - config_list_foreach "$section" "rule_name" get_rule_file "$group" -} - -yml_rule_group_get() -{ - local section="$1" - local enabled group config - config_get_bool "enabled" "$section" "enabled" "1" - - [ "$enabled" = "0" ] && return - - config_get "group" "$section" "group" "" - config_get "config" "$section" "config" "" - - if [ -n "$config" ] && [ "$config" != "$CONFIG_NAME" ] && [ "$config" != "all" ] || \ - [ -z "$group" ] || [ "$group" = "DIRECT" ] || [ "$group" = "REJECT" ] || \ - [ "$group" = "REJECT-DROP" ] || [ "$group" = "PASS" ] || [ "$group" = "COMPATIBLE" ] || [ "$group" = "GLOBAL" ]; then - return - fi - - group_check=$(ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e " - begin - Value = YAML.load_file('$2'); - Value['proxy-groups'].each{ - |x| - if x['name'] == '$group' then - if (x.key?('use') and not x['use'].to_a.empty?) or (x.key?('proxies') and not x['proxies'].to_a.empty?) then - puts 'return'; - break; - end; - end; - }; - end;" 2>/dev/null) - - if [ "$group_check" != "return" ]; then - /usr/share/openclash/yml_groups_set.sh >/dev/null 2>&1 "$group" - fi -} yml_other_set() { - config_load "openclash" - config_foreach yml_get_rule_provider "rule_provider_config" - config_foreach yml_set_custom_rule_provider "rule_providers" - config_foreach yml_game_rule_get "game_config" - config_foreach yml_rule_group_get "rule_provider_config" "$3" - config_foreach yml_rule_group_get "rule_providers" "$3" - config_foreach yml_rule_group_get "game_config" "$3" - ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e " begin - Value = YAML.load_file('$3'); + Value = YAML.load_file('$2'); rescue Exception => e - YAML.LOG('Error: Load File Failed,【' + e.message + '】'); + YAML.LOG_ERROR('Load File Failed,【' + e.message + '】'); end; begin - if '$rule_name' == 'lhie1' and $SKIP_CUSTOM_OTHER_RULES == 0 then - Value_1 = YAML.load_file('/usr/share/openclash/res/lhie1.yaml'); - if Value.has_key?('script') then - Value.delete('script') - end; - if Value.has_key?('rules') then - Value.delete('rules') - end; - if Value_1.has_key?('rule-providers') and not Value_1['rule-providers'].to_a.empty? then - if Value.has_key?('rule-providers') and not Value['rule-providers'].to_a.empty? then - Value['rule-providers'].merge!(Value_1['rule-providers']) - else - Value['rule-providers']=Value_1['rule-providers'] - end - end; - Value['rules']=Value_1['rules']; - - rule_replacements = { - ',[\s]?Bilibili,[\s]?CN Mainland TV$' => ',Bilibili,$Bilibili#delete_', - ',[\s]?Bahamut,[\s]?Asian TV$' => ',Bahamut,$Bahamut#delete_', - ',[\s]?Max,[\s]?Max$' => ',Max,$HBOMax#delete_', - ',[\s]?Discovery Plus,[\s]?Global TV$' => ',Discovery Plus,$Discovery#delete_', - ',[\s]?DAZN,[\s]?Global TV$' => ',DAZN,$DAZN#delete_', - ',[\s]?Pornhub,[\s]?Global TV$' => ',Pornhub,$Pornhub#delete_', - ',[\s]?Global TV$' => ',$GlobalTV#delete_', - ',[\s]?Asian TV$' => ',$AsianTV#delete_', - ',[\s]?CN Mainland TV$' => ',$MainlandTV#delete_', - ',[\s]?Proxy$' => ',$Proxy#delete_', - ',[\s]?YouTube$' => ',$Youtube#delete_', - ',[\s]?Apple$' => ',$Apple#delete_', - ',[\s]?Apple TV$' => ',$AppleTV#delete_', - ',[\s]?Scholar$' => ',$Scholar#delete_', - ',[\s]?Netflix$' => ',$Netflix#delete_', - ',[\s]?Disney Plus$' => ',$Disney#delete_', - ',[\s]?Spotify$' => ',$Spotify#delete_', - ',[\s]?AI Suite$' => ',$AI_Suite#delete_', - ',[\s]?Steam$' => ',$Steam#delete_', - ',[\s]?TikTok$' => ',$TikTok#delete_', - ',[\s]?miHoYo$' => ',$miHoYo#delete_', - ',[\s]?AdBlock$' => ',$AdBlock#delete_', - ',[\s]?HTTPDNS$' => ',$HTTPDNS#delete_', - ',[\s]?Speedtest$' => ',$Speedtest#delete_', - ',[\s]?Telegram$' => ',$Telegram#delete_', - ',[\s]?Crypto$' => ',$Crypto#delete_', - ',[\s]?Discord$' => ',$Discord#delete_', - ',[\s]?Microsoft$' => ',$Microsoft#delete_', - ',[\s]?PayPal$' => ',$PayPal#delete_', - ',[\s]?Domestic$' => ',$Domestic#delete_', - ',[\s]?Others$' => ',$Others#delete_', - ',[\s]?Google FCM$' => ',$GoogleFCM#delete_' - }; - - Value['rules'].to_a.collect!{|x| - result = x.to_s; - rule_replacements.each{|pattern, replacement| - result = result.gsub(/#{pattern}/, replacement); - }; - result.gsub(/#delete_/, ''); - }; - end; - rescue Exception => e - YAML.LOG('Error: Set lhie1 Rules Failed,【' + e.message + '】'); - end; - - thread_pool = []; - - thread_pool << Thread.new{ - #BT/P2P DIRECT Rules - begin - if $4 == 1 then - if system('strings /etc/openclash/GeoSite.dat /etc/openclash/GeoSite.dat |grep -i category-public-tracker >/dev/null 2>&1') then - bt_rules = ['GEOSITE,category-public-tracker,DIRECT']; - else - bt_rules = [ - 'DOMAIN-SUFFIX,awesome-hd.me,DIRECT', - 'DOMAIN-SUFFIX,broadcasthe.net,DIRECT', - 'DOMAIN-SUFFIX,chdbits.co,DIRECT', - 'DOMAIN-SUFFIX,classix-unlimited.co.uk,DIRECT', - 'DOMAIN-SUFFIX,empornium.me,DIRECT', - 'DOMAIN-SUFFIX,gazellegames.net,DIRECT', - 'DOMAIN-SUFFIX,hdchina.org,DIRECT', - 'DOMAIN-SUFFIX,hdsky.me,DIRECT', - 'DOMAIN-SUFFIX,icetorrent.org,DIRECT', - 'DOMAIN-SUFFIX,jpopsuki.eu,DIRECT', - 'DOMAIN-SUFFIX,keepfrds.com,DIRECT', - 'DOMAIN-SUFFIX,madsrevolution.net,DIRECT', - 'DOMAIN-SUFFIX,m-team.cc,DIRECT', - 'DOMAIN-SUFFIX,nanyangpt.com,DIRECT', - 'DOMAIN-SUFFIX,ncore.cc,DIRECT', - 'DOMAIN-SUFFIX,open.cd,DIRECT', - 'DOMAIN-SUFFIX,ourbits.club,DIRECT', - 'DOMAIN-SUFFIX,passthepopcorn.me,DIRECT', - 'DOMAIN-SUFFIX,privatehd.to,DIRECT', - 'DOMAIN-SUFFIX,redacted.ch,DIRECT', - 'DOMAIN-SUFFIX,springsunday.net,DIRECT', - 'DOMAIN-SUFFIX,tjupt.org,DIRECT', - 'DOMAIN-SUFFIX,totheglory.im,DIRECT', - 'DOMAIN-SUFFIX,smtp,DIRECT', - 'DOMAIN-KEYWORD,announce,DIRECT', - 'DOMAIN-KEYWORD,torrent,DIRECT', - 'DOMAIN-KEYWORD,tracker,DIRECT' - ]; - end; - - Value['rules'] = bt_rules + Value['rules'].to_a; - - match_group=Value['rules'].grep(/(MATCH|FINAL)/)[0]; - if not match_group.nil? then - common_port_group = (match_group.split(',')[-1] =~ /^no-resolve$|^src$/) ? match_group.split(',')[-2] : match_group.split(',')[-1]; - if not common_port_group.nil? then - ruby_add_index = Value['rules'].index(Value['rules'].grep(/(MATCH|FINAL)/).first); - ruby_add_index ||= -1; - - process_rules = [ - 'PROCESS-NAME,aria2c,DIRECT', - 'PROCESS-NAME,BitComet,DIRECT', - 'PROCESS-NAME,fdm,DIRECT', - 'PROCESS-NAME,NetTransport,DIRECT', - 'PROCESS-NAME,qbittorrent,DIRECT', - 'PROCESS-NAME,Thunder,DIRECT', - 'PROCESS-NAME,transmission-daemon,DIRECT', - 'PROCESS-NAME,transmission-qt,DIRECT', - 'PROCESS-NAME,uTorrent,DIRECT', - 'PROCESS-NAME,WebTorrent,DIRECT', - 'PROCESS-NAME,Folx,DIRECT', - 'PROCESS-NAME,Transmission,DIRECT', - 'PROCESS-NAME,WebTorrent Helper,DIRECT', - 'PROCESS-NAME,v2ray,DIRECT', - 'PROCESS-NAME,ss-local,DIRECT', - 'PROCESS-NAME,ssr-local,DIRECT', - 'PROCESS-NAME,ss-redir,DIRECT', - 'PROCESS-NAME,ssr-redir,DIRECT', - 'PROCESS-NAME,ss-server,DIRECT', - 'PROCESS-NAME,trojan-go,DIRECT', - 'PROCESS-NAME,xray,DIRECT', - 'PROCESS-NAME,hysteria,DIRECT', - 'PROCESS-NAME,singbox,DIRECT', - 'PROCESS-NAME,UUBooster,DIRECT', - 'PROCESS-NAME,uugamebooster,DIRECT', - 'DST-PORT,80,' + common_port_group, - 'DST-PORT,443,' + common_port_group + thread_pool = []; + thread_pool << Thread.new{ + #BT/P2P DIRECT Rules + begin + if $3 == 1 then + if system('strings /etc/openclash/GeoSite.dat /etc/openclash/GeoSite.dat |grep -i category-public-tracker >/dev/null 2>&1') then + bt_rules = ['GEOSITE,category-public-tracker,DIRECT']; + else + bt_rules = [ + 'DOMAIN-SUFFIX,awesome-hd.me,DIRECT', + 'DOMAIN-SUFFIX,broadcasthe.net,DIRECT', + 'DOMAIN-SUFFIX,chdbits.co,DIRECT', + 'DOMAIN-SUFFIX,classix-unlimited.co.uk,DIRECT', + 'DOMAIN-SUFFIX,empornium.me,DIRECT', + 'DOMAIN-SUFFIX,gazellegames.net,DIRECT', + 'DOMAIN-SUFFIX,hdchina.org,DIRECT', + 'DOMAIN-SUFFIX,hdsky.me,DIRECT', + 'DOMAIN-SUFFIX,icetorrent.org,DIRECT', + 'DOMAIN-SUFFIX,jpopsuki.eu,DIRECT', + 'DOMAIN-SUFFIX,keepfrds.com,DIRECT', + 'DOMAIN-SUFFIX,madsrevolution.net,DIRECT', + 'DOMAIN-SUFFIX,m-team.cc,DIRECT', + 'DOMAIN-SUFFIX,nanyangpt.com,DIRECT', + 'DOMAIN-SUFFIX,ncore.cc,DIRECT', + 'DOMAIN-SUFFIX,open.cd,DIRECT', + 'DOMAIN-SUFFIX,ourbits.club,DIRECT', + 'DOMAIN-SUFFIX,passthepopcorn.me,DIRECT', + 'DOMAIN-SUFFIX,privatehd.to,DIRECT', + 'DOMAIN-SUFFIX,redacted.ch,DIRECT', + 'DOMAIN-SUFFIX,springsunday.net,DIRECT', + 'DOMAIN-SUFFIX,tjupt.org,DIRECT', + 'DOMAIN-SUFFIX,totheglory.im,DIRECT', + 'DOMAIN-SUFFIX,smtp,DIRECT', + 'DOMAIN-KEYWORD,announce,DIRECT', + 'DOMAIN-KEYWORD,torrent,DIRECT', + 'DOMAIN-KEYWORD,tracker,DIRECT' ]; - - process_rules.reverse.each{|rule| Value['rules'].insert(ruby_add_index, rule)}; end; - end; - # GEOIP replace - geoip_pattern = /GEOIP,([A-Z]{2}),([^,]+)(,.*)?/; - match_pattern = /(^MATCH.*|^FINAL.*)/; + Value['rules'] = bt_rules + Value['rules'].to_a; - Value['rules'].to_a.collect!{|x| - x.to_s.gsub(geoip_pattern, 'GEOIP,\1,DIRECT\3').gsub(match_pattern, 'MATCH,DIRECT') - }; - end; - rescue Exception => e - YAML.LOG('Error: Set BT/P2P DIRECT Rules Failed,【' + e.message + '】'); - end; - }; - - thread_pool << Thread.new{ - #Custom Rule Provider - begin - if File::exist?('$RULE_PROVIDER_FILE') then - Value_1 = YAML.load_file('$RULE_PROVIDER_FILE'); - if Value.has_key?('rule-providers') and not Value['rule-providers'].to_a.empty? then - Value['rule-providers'].merge!(Value_1); - else - Value['rule-providers']=Value_1; - end; - end; - rescue Exception => e - YAML.LOG('Error: Custom Rule Provider Merge Failed,【' + e.message + '】'); - end; - - #Game Proxy - begin - yaml_files = { - '/tmp/yaml_groups.yaml' => 'proxy-groups', - '/tmp/yaml_servers.yaml' => 'proxies', - '/tmp/yaml_provider.yaml' => 'proxy-providers' - }; - - yaml_files.each{|file, key| - if File::exist?(file) then - file_data = YAML.load_file(file); - case key - when 'proxy-groups' - if Value.has_key?(key) and not Value[key].to_a.empty? then - Value[key] = Value[key] + file_data; - Value[key].uniq; - else - Value[key] = file_data; - end; - when 'proxies' - if Value.has_key?(key) and not Value[key].to_a.empty? then - Value[key] = Value[key] + file_data[key]; - Value[key].uniq; - else - Value[key] = file_data[key]; - end; - when 'proxy-providers' - if Value.has_key?(key) and not Value[key].to_a.empty? then - Value[key].merge!(file_data[key]); - Value[key].uniq; - else - Value[key] = file_data[key]; - end; - end; - end; - }; - rescue Exception => e - YAML.LOG('Error: Game Proxy Merge Failed,【' + e.message + '】'); - end; - }; - - thread_pool.each(&:join); - - begin - CUSTOM_RULE = File::exist?('/etc/openclash/custom/openclash_custom_rules.list') ? YAML.load_file('/etc/openclash/custom/openclash_custom_rules.list') : {}; - CUSTOM_RULE_2 = File::exist?('/etc/openclash/custom/openclash_custom_rules_2.list') ? YAML.load_file('/etc/openclash/custom/openclash_custom_rules_2.list') : {}; - - CONFIG_GROUP = (['DIRECT', 'REJECT', 'GLOBAL', 'REJECT-DROP', 'PASS', 'COMPATIBLE'] + - (Value['proxy-groups']&.map { |x| x['name'] } || []) + - (Value['proxies']&.map { |x| x['name'] } || []) + - (Value['sub-rules']&.keys || []) + - (CUSTOM_RULE.is_a?(Hash) ? CUSTOM_RULE['sub-rules']&.keys || [] : []) + - (CUSTOM_RULE_2.is_a?(Hash) ? CUSTOM_RULE_2['sub-rules']&.keys || [] : [])).uniq; - rescue Exception => e - CONFIG_GROUP = ['DIRECT', 'REJECT', 'GLOBAL', 'REJECT-DROP', 'PASS', 'COMPATIBLE']; - end; - - rule_thread_pool = []; - - rule_thread_pool << Thread.new{ - #Custom Rule Set - begin - rule_files = [ - { file: '/tmp/yaml_rule_set_top_custom.yaml', position: 'top' }, - { file: '/tmp/yaml_rule_set_bottom_custom.yaml', position: 'bottom' } - ]; - - rule_files.each{|rule_file_info| - if File::exist?(rule_file_info[:file]) then - custom_rules = YAML.load_file(rule_file_info[:file])['rules'].uniq; - - valid_rules = custom_rules.select{|x| - RULE_GROUP = ((x.split(',')[-1] =~ /^no-resolve$|^src$/) ? x.split(',')[-2] : x.split(',')[-1]).strip; - if CONFIG_GROUP.include?(RULE_GROUP) then - true; - else - YAML.LOG('Warning: Skiped The Custom Rule Because Group & Proxy Not Found:【' + x + '】'); - false; - end; - }; - - if Value.has_key?('rules') and not Value['rules'].to_a.empty? then - if rule_file_info[:position] == 'top' then - valid_rules.reverse.each{|x| Value['rules'].insert(0,x)}; - else - if $4 != 1 then - ruby_add_index = Value['rules'].index(Value['rules'].grep(/(GEOIP|MATCH|FINAL)/).first); - else - if Value['rules'].grep(/GEOIP/)[0].nil? or Value['rules'].grep(/GEOIP/)[0].empty? then - ruby_add_index = Value['rules'].index(Value['rules'].grep(/DST-PORT,80/).last); - ruby_add_index ||= Value['rules'].index(Value['rules'].grep(/(MATCH|FINAL)/).first); - else - ruby_add_index = Value['rules'].index(Value['rules'].grep(/GEOIP/).first); - end; - end; + match_group=Value['rules'].grep(/(MATCH|FINAL)/)[0]; + if not match_group.nil? then + common_port_group = (match_group.split(',')[-1] =~ /^no-resolve$|^src$/) ? match_group.split(',')[-2] : match_group.split(',')[-1]; + if not common_port_group.nil? then + ruby_add_index = Value['rules'].index(Value['rules'].grep(/(MATCH|FINAL)/).first); ruby_add_index ||= -1; - if ruby_add_index != -1 then - valid_rules.reverse.each{|x| Value['rules'].insert(ruby_add_index,x)}; - else - valid_rules.each{|x| Value['rules'].insert(ruby_add_index,x)}; - end; + process_rules = [ + 'PROCESS-NAME,aria2c,DIRECT', + 'PROCESS-NAME,BitComet,DIRECT', + 'PROCESS-NAME,fdm,DIRECT', + 'PROCESS-NAME,NetTransport,DIRECT', + 'PROCESS-NAME,qbittorrent,DIRECT', + 'PROCESS-NAME,Thunder,DIRECT', + 'PROCESS-NAME,transmission-daemon,DIRECT', + 'PROCESS-NAME,transmission-qt,DIRECT', + 'PROCESS-NAME,uTorrent,DIRECT', + 'PROCESS-NAME,WebTorrent,DIRECT', + 'PROCESS-NAME,Folx,DIRECT', + 'PROCESS-NAME,Transmission,DIRECT', + 'PROCESS-NAME,WebTorrent Helper,DIRECT', + 'PROCESS-NAME,v2ray,DIRECT', + 'PROCESS-NAME,ss-local,DIRECT', + 'PROCESS-NAME,ssr-local,DIRECT', + 'PROCESS-NAME,ss-redir,DIRECT', + 'PROCESS-NAME,ssr-redir,DIRECT', + 'PROCESS-NAME,ss-server,DIRECT', + 'PROCESS-NAME,trojan-go,DIRECT', + 'PROCESS-NAME,xray,DIRECT', + 'PROCESS-NAME,hysteria,DIRECT', + 'PROCESS-NAME,singbox,DIRECT', + 'PROCESS-NAME,UUBooster,DIRECT', + 'PROCESS-NAME,uugamebooster,DIRECT', + 'DST-PORT,80,' + common_port_group, + 'DST-PORT,443,' + common_port_group + ]; + + process_rules.reverse.each{|rule| Value['rules'].insert(ruby_add_index, rule)}; end; - else - Value['rules'] = rule_file_info[:position] == 'top' ? valid_rules : (Value['rules'].to_a | valid_rules); end; + + # GEOIP replace + geoip_pattern = /GEOIP,([A-Za-z]{2}),([^,]+)(,.*)?/; + match_pattern = /(^MATCH.*|^FINAL.*)/; + + Value['rules'].to_a.collect!{|x| + x.to_s.gsub(geoip_pattern, 'GEOIP,\1,DIRECT\3').gsub(match_pattern, 'MATCH,DIRECT') + }; end; - }; - rescue Exception => e - YAML.LOG('Error: Rule Set Add Failed,【' + e.message + '】'); - end; + rescue Exception => e + YAML.LOG_ERROR('Set BT/P2P DIRECT Rules Failed,【' + e.message + '】'); + end; - #Custom Rules - begin - if $2 == 1 then - custom_files = [ - { file: '/etc/openclash/custom/openclash_custom_rules.list', position: 'top' }, - { file: '/etc/openclash/custom/openclash_custom_rules_2.list', position: 'bottom' } - ]; + begin + CUSTOM_RULE = File::exist?('/etc/openclash/custom/openclash_custom_rules.list') ? YAML.load_file('/etc/openclash/custom/openclash_custom_rules.list') : {}; + CUSTOM_RULE_2 = File::exist?('/etc/openclash/custom/openclash_custom_rules_2.list') ? YAML.load_file('/etc/openclash/custom/openclash_custom_rules_2.list') : {}; - custom_files.each{|file_info| - if File::exist?(file_info[:file]) then - custom_data = YAML.load_file(file_info[:file]); - next if custom_data == false; + CONFIG_GROUP = (['DIRECT', 'REJECT', 'GLOBAL', 'REJECT-DROP', 'PASS', 'COMPATIBLE'] + + (Value['proxy-groups']&.map { |x| x['name'] } || []) + + (Value['proxies']&.map { |x| x['name'] } || []) + + (Value['sub-rules']&.keys || []) + + (CUSTOM_RULE.is_a?(Hash) ? CUSTOM_RULE['sub-rules']&.keys || [] : []) + + (CUSTOM_RULE_2.is_a?(Hash) ? CUSTOM_RULE_2['sub-rules']&.keys || [] : [])).uniq; + rescue Exception => e + CONFIG_GROUP = ['DIRECT', 'REJECT', 'GLOBAL', 'REJECT-DROP', 'PASS', 'COMPATIBLE']; + end; - rules_array = case custom_data.class.to_s - when 'Hash' - custom_data['rules'].to_a if custom_data['rules'].class.to_s == 'Array' - when 'Array' - custom_data - else - [] - end; + #Custom Rules + begin + if $1 == 1 then + custom_files = [ + { file: '/etc/openclash/custom/openclash_custom_rules.list', position: 'top' }, + { file: '/etc/openclash/custom/openclash_custom_rules_2.list', position: 'bottom' } + ]; - next unless rules_array; - - ipv4_regex = /^(\d{1,3}\.){3}\d{1,3}$/; - ipv6_regex = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?[0-9])?[0-9])\.){3}(25[0-5]|(2[0-4]|1?[0-9])?[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?[0-9])?[0-9])\.){3}(25[0-5]|(2[0-4]|1?[0-9])?[0-9]))$/; - cidr_regex = /\/\d+$/; - rule_suffix_regex = /^no-resolve$|^src$/; - - transformed_rules = rules_array.map{|x| - parts = x.split(','); - if parts.length >= 2 then - ip_part = parts[1].strip; - if ip_part !~ cidr_regex then - # IPv4 - if ip_part =~ ipv4_regex then - octets = ip_part.split('.'); - valid_ipv4 = octets.all? { |octet| octet.to_i >= 0 && octet.to_i <= 255 }; - if valid_ipv4 then - parts[1] = ip_part + '/32'; - x = parts.join(','); - end; - # IPv6 - elsif ip_part =~ ipv6_regex then - parts[1] = ip_part + '/128'; - x = parts.join(','); - end; - end; - end; - x; - }; - - valid_rules = transformed_rules.select{|x| - RULE_GROUP = ((x.split(',')[-1] =~ rule_suffix_regex) ? x.split(',')[-2] : x.split(',')[-1]).strip; - if CONFIG_GROUP.include?(RULE_GROUP) then - true; - else - YAML.LOG('Warning: Skiped The Custom Rule Because Group & Proxy Not Found:【' + x + '】'); - false; - end; - }; - - if Value.has_key?('rules') and not Value['rules'].to_a.empty? then - if file_info[:position] == 'top' then - valid_rules.reverse.each{|x| Value['rules'].insert(0,x)}; - else - if Value['rules'].grep(/GEOIP/)[0].nil? or Value['rules'].grep(/GEOIP/)[0].empty? then - ruby_add_index = Value['rules'].index(Value['rules'].grep(/DST-PORT,80/).last); - ruby_add_index ||= Value['rules'].index(Value['rules'].grep(/(MATCH|FINAL)/).first); - else - ruby_add_index = Value['rules'].index(Value['rules'].grep(/GEOIP/).first); - end; - ruby_add_index ||= -1; - - insert_rules = ruby_add_index == -1 ? valid_rules : valid_rules.reverse; - insert_rules.each{|x| Value['rules'].insert(ruby_add_index,x)}; - end; - Value['rules'] = Value['rules'].uniq; - else - Value['rules'] = valid_rules.uniq; - end; - end; - }; - - # SUB-RULE - ['sub-rules'].each{|key| custom_files.each{|file_info| if File::exist?(file_info[:file]) then custom_data = YAML.load_file(file_info[:file]); - if custom_data != false and custom_data.class.to_s == 'Hash' then - if not custom_data[key].to_a.empty? and custom_data[key].class.to_s == 'Hash' then - if Value.has_key?(key) and not Value[key].to_a.empty? then - Value[key] = Value[key].merge!(custom_data[key]); - else - Value[key] = custom_data[key]; + next if custom_data == false; + + rules_array = case custom_data.class.to_s + when 'Hash' + custom_data['rules'].to_a if custom_data['rules'].class.to_s == 'Array' + when 'Array' + custom_data + else + [] + end; + + next unless rules_array; + + ipv4_regex = /^(\d{1,3}\.){3}\d{1,3}$/; + ipv6_regex = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?[0-9])?[0-9])\.){3}(25[0-5]|(2[0-4]|1?[0-9])?[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?[0-9])?[0-9])\.){3}(25[0-5]|(2[0-4]|1?[0-9])?[0-9]))$/; + cidr_regex = /\/\d+$/; + rule_suffix_regex = /^no-resolve$|^src$/; + + transformed_rules = rules_array.map{|x| + parts = x.split(','); + if parts.length >= 2 then + ip_part = parts[1].strip; + if ip_part !~ cidr_regex then + # IPv4 + if ip_part =~ ipv4_regex then + octets = ip_part.split('.'); + valid_ipv4 = octets.all? { |octet| octet.to_i >= 0 && octet.to_i <= 255 }; + if valid_ipv4 then + parts[1] = ip_part + '/32'; + x = parts.join(','); + end; + # IPv6 + elsif ip_part =~ ipv6_regex then + parts[1] = ip_part + '/128'; + x = parts.join(','); + end; end; end; + x; + }; + + valid_rules = transformed_rules.select{|x| + RULE_GROUP = ((x.split(',')[-1] =~ rule_suffix_regex) ? x.split(',')[-2] : x.split(',')[-1]).strip; + if CONFIG_GROUP.include?(RULE_GROUP) then + true; + else + YAML.LOG_WARN('Skiped The Custom Rule Because Group & Proxy Not Found:【' + x + '】'); + false; + end; + }; + + if Value.has_key?('rules') and not Value['rules'].to_a.empty? then + if file_info[:position] == 'top' then + valid_rules.reverse.each{|x| Value['rules'].insert(0,x)}; + else + if Value['rules'].grep(/GEOIP/)[0].nil? or Value['rules'].grep(/GEOIP/)[0].empty? then + ruby_add_index = Value['rules'].index(Value['rules'].grep(/DST-PORT,80/).last); + ruby_add_index ||= Value['rules'].index(Value['rules'].grep(/(MATCH|FINAL)/).first); + else + ruby_add_index = Value['rules'].index(Value['rules'].grep(/GEOIP/).first); + end; + ruby_add_index ||= -1; + + insert_rules = ruby_add_index == -1 ? valid_rules : valid_rules.reverse; + insert_rules.each{|x| Value['rules'].insert(ruby_add_index,x)}; + end; + Value['rules'] = Value['rules'].uniq; + else + Value['rules'] = valid_rules.uniq; end; end; }; - }; - end; - rescue Exception => e - YAML.LOG('Error: Set Custom Rules Failed,【' + e.message + '】'); - end; - #Router Self Proxy Rule - begin - if $6 == 0 and $8 != 2 and '$9' == 'fake-ip' then - router_rule = 'SRC-IP-CIDR,$7/32,DIRECT'; - if Value.has_key?('rules') and not Value['rules'].to_a.empty? then - if Value['rules'].to_a.grep(/(?=.*SRC-IP-CIDR,'$7')/).empty? and not '$7'.empty? then - Value['rules']=Value['rules'].to_a.insert(0, router_rule); - end; - else - Value['rules']=[router_rule]; - end; - elsif Value.has_key?('rules') and not Value['rules'].to_a.empty? then - Value['rules'].delete('SRC-IP-CIDR,$7/32,DIRECT'); - end; - rescue Exception => e - YAML.LOG('Error: Set Router Self Proxy Rule Failed,【' + e.message + '】'); - end; - }; - - rule_thread_pool.each(&:join); - - provider_thread = Thread.new{ - threads = []; - - #provider path - begin - provider_configs = {'proxy-providers' => 'proxy_provider', 'rule-providers' => 'rule_provider'}; - provider_configs.each do |provider_type, path_prefix| - if Value.key?(provider_type) then - Value[provider_type].each{|name, config| - threads << Thread.new { - if config['path'] and not config['path'] =~ /.\/#{path_prefix}\/*/ and not config['path'] =~ /.\/game_rules\/*/ then - config['path'] = './'+path_prefix+'/'+File.basename(config['path']); - elsif not config['path'] and config['type'] == 'http' then - config['path'] = './'+path_prefix+'/'+name; - end; - - # CDN - if '$github_address_mod' != '0' and config['url'] then - if config['url'] =~ /^https:\/\/raw.githubusercontent.com/ then - if '$github_address_mod' == 'https://cdn.jsdelivr.net/' or - '$github_address_mod' == 'https://fastly.jsdelivr.net/' or - '$github_address_mod' == 'https://testingcf.jsdelivr.net/' then - url_parts = config['url'].split('/'); - if url_parts.length >= 5 then - config['url'] = '$github_address_mod' + 'gh/' + url_parts[3] + '/' + - url_parts[4] + '@' + config['url'].split(url_parts[2] + - '/' + url_parts[3] + '/' + url_parts[4] + '/')[1]; + # SUB-RULE + ['sub-rules'].each{|key| + custom_files.each{|file_info| + if File::exist?(file_info[:file]) then + custom_data = YAML.load_file(file_info[:file]); + if custom_data != false and custom_data.class.to_s == 'Hash' then + if not custom_data[key].to_a.empty? and custom_data[key].class.to_s == 'Hash' then + if Value.has_key?(key) and not Value[key].to_a.empty? then + Value[key] = Value[key].merge!(custom_data[key]); + else + Value[key] = custom_data[key]; end; - else + end; + end; + end; + }; + }; + end; + rescue Exception => e + YAML.LOG_ERROR('Set Custom Rules Failed,【' + e.message + '】'); + end; + + #Router Self Proxy Rule + begin + if $4 == 0 and $6 != 2 and '$7' == 'fake-ip' then + router_rule = 'SRC-IP-CIDR,$5/32,DIRECT'; + if Value.has_key?('rules') and not Value['rules'].to_a.empty? then + if Value['rules'].to_a.grep(/(?=.*SRC-IP-CIDR,'$5')/).empty? and not '$5'.empty? then + Value['rules']=Value['rules'].to_a.insert(0, router_rule); + end; + else + Value['rules']=[router_rule]; + end; + elsif Value.has_key?('rules') and not Value['rules'].to_a.empty? then + Value['rules'].delete('SRC-IP-CIDR,$5/32,DIRECT'); + end; + rescue Exception => e + YAML.LOG_ERROR('Set Router Self Proxy Rule Failed,【' + e.message + '】'); + end; + }; + + thread_pool << Thread.new{ + threads = []; + + #provider path + begin + provider_configs = {'proxy-providers' => 'proxy_provider', 'rule-providers' => 'rule_provider'}; + provider_configs.each do |provider_type, path_prefix| + if Value.key?(provider_type) then + Value[provider_type].each{|name, config| + threads << Thread.new { + if config['path'] and not config['path'] =~ /.\/#{path_prefix}\/*/ then + config['path'] = './'+path_prefix+'/'+File.basename(config['path']); + elsif not config['path'] and config['type'] == 'http' then + config['path'] = './'+path_prefix+'/'+name; + end; + + # CDN + if '$github_address_mod' != '0' and config['url'] then + if config['url'] =~ /^https:\/\/raw.githubusercontent.com/ then + if '$github_address_mod' == 'https://cdn.jsdelivr.net/' or + '$github_address_mod' == 'https://fastly.jsdelivr.net/' or + '$github_address_mod' == 'https://testingcf.jsdelivr.net/' then + url_parts = config['url'].split('/'); + if url_parts.length >= 5 then + config['url'] = '$github_address_mod' + 'gh/' + url_parts[3] + '/' + + url_parts[4] + '@' + config['url'].split(url_parts[2] + + '/' + url_parts[3] + '/' + url_parts[4] + '/')[1]; + end; + else + config['url'] = '$github_address_mod' + config['url']; + end; + elsif config['url'] =~ /^https:\/\/(raw.|gist.)(githubusercontent.com|github.com)/ then config['url'] = '$github_address_mod' + config['url']; end; - elsif config['url'] =~ /^https:\/\/(raw.|gist.)(githubusercontent.com|github.com)/ then - config['url'] = '$github_address_mod' + config['url']; end; - end; + }; }; - }; + end; end; + rescue Exception => e + YAML.LOG_ERROR('Edit Provider Path Failed,【' + e.message + '】'); end; - rescue Exception => e - YAML.LOG('Error: Edit Provider Path Failed,【' + e.message + '】'); - end; - # tolerance - begin - if '$tolerance' != '0' and Value.key?('proxy-groups') then - Value['proxy-groups'].each{|group| - threads << Thread.new { - if group['type'] == 'url-test' then - group['tolerance'] = ${tolerance}; - end; - }; - }; - end; - rescue Exception => e - YAML.LOG('Error: Edit URL-Test Group Tolerance Option Failed,【' + e.message + '】'); - end; - - # URL-Test interval - begin - if '$urltest_interval_mod' != '0' then - if Value.key?('proxy-groups') then + # tolerance + begin + if '$tolerance' != '0' and Value.key?('proxy-groups') then Value['proxy-groups'].each{|group| threads << Thread.new { - if ['url-test', 'fallback', 'load-balance', 'smart'].include?(group['type']) then - group['interval'] = ${urltest_interval_mod}; - end; - }; - }; - end; - if Value.key?('proxy-providers') then - Value['proxy-providers'].each{|name, provider| - threads << Thread.new { - if provider['health-check'] and provider['health-check']['enable'] then - provider['health-check']['interval'] = ${urltest_interval_mod}; + if group['type'] == 'url-test' then + group['tolerance'] = ${tolerance}; end; }; }; end; + rescue Exception => e + YAML.LOG_ERROR('Edit URL-Test Group Tolerance Option Failed,【' + e.message + '】'); end; - rescue Exception => e - YAML.LOG('Error: Edit URL-Test Interval Failed,【' + e.message + '】'); - end; - # health-check url - begin - if '$urltest_address_mod' != '0' then - if Value.key?('proxy-providers') then - Value['proxy-providers'].each{|name, provider| - threads << Thread.new { - if provider['health-check'] and provider['health-check']['enable'] then - provider['health-check']['url'] = '$urltest_address_mod'; - end; + # URL-Test interval + begin + if '$urltest_interval_mod' != '0' then + if Value.key?('proxy-groups') then + Value['proxy-groups'].each{|group| + threads << Thread.new { + if ['url-test', 'fallback', 'load-balance', 'smart'].include?(group['type']) then + group['interval'] = ${urltest_interval_mod}; + end; + }; }; - }; + end; + if Value.key?('proxy-providers') then + Value['proxy-providers'].each{|name, provider| + threads << Thread.new { + if provider['health-check'] and provider['health-check']['enable'] then + provider['health-check']['interval'] = ${urltest_interval_mod}; + end; + }; + }; + end; end; - if Value.key?('proxy-groups') then + rescue Exception => e + YAML.LOG_ERROR('Edit URL-Test Interval Failed,【' + e.message + '】'); + end; + + # health-check url + begin + if '$urltest_address_mod' != '0' then + if Value.key?('proxy-providers') then + Value['proxy-providers'].each{|name, provider| + threads << Thread.new { + if provider['health-check'] and provider['health-check']['enable'] then + provider['health-check']['url'] = '$urltest_address_mod'; + end; + }; + }; + end; + if Value.key?('proxy-groups') then + Value['proxy-groups'].each{|group| + threads << Thread.new { + if ['url-test', 'fallback', 'load-balance', 'smart'].include?(group['type']) then + group['url'] = '$urltest_address_mod'; + end; + }; + }; + end; + end; + rescue Exception => e + YAML.LOG_ERROR('Edit URL-Test URL Failed,【' + e.message + '】'); + end; + + # smart auto switch + begin + if ('${8}' == '1' or '${9}' == '1' or '${11}' != '0' or '${12}' != '0' or '${12}' == '1' or '${13}' == '1') and Value.key?('proxy-groups') then Value['proxy-groups'].each{|group| threads << Thread.new { - if ['url-test', 'fallback', 'load-balance', 'smart'].include?(group['type']) then - group['url'] = '$urltest_address_mod'; + if '${8}' == '1' and ['url-test', 'load-balance'].include?(group['type']) then + group['type'] = 'smart'; + group['uselightgbm'] = true if '${12}' == '1'; + group['collectdata'] = true if '${9}' == '1'; + group['sample-rate'] = '${10}'.to_f if '${9}' == '1'; + end; + if '${9}' == '1' and group['type'] == 'smart' then + group['collectdata'] = true; + group['sample-rate'] = '${10}'.to_f; + end; + if '${11}' != '0' and group['type'] == 'smart' then + group['policy-priority'] = '${11}'; + end; + if '${12}' == '1' and group['type'] == 'smart' then + group['uselightgbm'] = true; + end; + if '${13}' == '1' and group['type'] == 'smart' then + group['prefer-asn'] = true; end; }; }; end; + rescue Exception => e + YAML.LOG_ERROR('Setting Smart Auto Switch Failed,【' + e.message + '】'); end; - rescue Exception => e - YAML.LOG('Error: Edit URL-Test URL Failed,【' + e.message + '】'); - end; - # smart auto switch - begin - if ('${10}' == '1' or '${11}' == '1' or '${13}' != '0' or '${14}' != '0' or '${14}' == '1' or '${15}' == '1') and Value.key?('proxy-groups') then - Value['proxy-groups'].each{|group| - threads << Thread.new { - if '${10}' == '1' and ['url-test', 'load-balance'].include?(group['type']) then - group['type'] = 'smart'; - group['uselightgbm'] = true if '${14}' == '1'; - group['collectdata'] = true if '${11}' == '1'; - group['sample-rate'] = '${12}'.to_f if '${11}' == '1'; - end; - if '${11}' == '1' and group['type'] == 'smart' then - group['collectdata'] = true; - group['sample-rate'] = '${12}'.to_f; - end; - if '${13}' != '0' and group['type'] == 'smart' then - group['policy-priority'] = '${13}'; - end; - if '${14}' == '1' and group['type'] == 'smart' then - group['uselightgbm'] = true; - end; - if '${15}' == '1' and group['type'] == 'smart' then - group['prefer-asn'] = true; - end; - }; - }; - end; - rescue Exception => e - YAML.LOG('Error: Setting Smart Auto Switch Failed,【' + e.message + '】'); - end; + threads.each(&:join); + }; - threads.each(&:join); - }; + thread_pool.each(&:join); - provider_thread.join; - - begin - File.open('$3','w') {|f| YAML.dump(Value, f)}; + rescue Exception => e + YAML.LOG_ERROR('Config File Overwrite Failed,【%s】' % [e.message]) + ensure + File.open('$2','w') {|f| YAML.dump(Value, f)}; end" 2>/dev/null >> $LOG_FILE } -yml_other_rules_get() -{ - local section="$1" - local enabled config - config_get_bool "enabled" "$section" "enabled" "1" - config_get "config" "$section" "config" "" - - if [ "$enabled" = "0" ] || [ "$config" != "$2" ]; then - return - fi - - if [ -n "$rule_name" ]; then - LOG_OUT "Warning: Multiple Other-Rules-Configurations Enabled, Ignore..." - return - fi - - local vars="rule_name GlobalTV AsianTV MainlandTV Proxy Youtube Bilibili Bahamut HBOMax Pornhub Apple Scholar Netflix Disney Spotify Steam TikTok AdBlock HTTPDNS Netease_Music Speedtest Telegram Crypto Discord Microsoft PayPal Domestic Others GoogleFCM Discovery DAZN AI_Suite AppleTV miHoYo position format other_parameters" - - for var in $vars; do - case "$var" in - "MainlandTV") config_get "$var" "$section" "$var" "DIRECT" ;; - "HBOMax") config_get "$var" "$section" "$var" "$GlobalTV" ;; - "TikTok") config_get "$var" "$section" "$var" "$GlobalTV" ;; - "HTTPDNS") config_get "$var" "$section" "$var" "REJECT" ;; - "Crypto") config_get "$var" "$section" "$var" "$Proxy" ;; - "Discord") config_get "$var" "$section" "$var" "$Proxy" ;; - "GoogleFCM") config_get "$var" "$section" "$var" "DIRECT" ;; - "Discovery") config_get "$var" "$section" "$var" "$GlobalTV" ;; - "DAZN") config_get "$var" "$section" "$var" "$GlobalTV" ;; - "AI_Suite") config_get "$var" "$section" "$var" "$Proxy" ;; - "AppleTV") config_get "$var" "$section" "$var" "$GlobalTV" ;; - "miHoYo") config_get "$var" "$section" "$var" "$Domestic" ;; - *) config_get "$var" "$section" "$var" "" ;; - esac - done -} - -if [ "$1" != "0" ]; then - /usr/share/openclash/yml_groups_name_get.sh - if [ $? -ne 0 ]; then - LOG_OUT "Error: Unable To Parse Config File, Please Check And Try Again!" - exit 0 - fi - config_load "openclash" - config_foreach yml_other_rules_get "other_rules" "$5" - if [ -z "$rule_name" ]; then - SKIP_CUSTOM_OTHER_RULES=1 - yml_other_set "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9" "${10}" "${11}" "${12}" "${13}" "${14}" "${15}" - exit 0 - - elif [ "$rule_name" = "lhie1" ]; then - - if [ -z "$PROXY_GROUP_CACHE" ]; then - PROXY_GROUP_CACHE=$(cat /tmp/Proxy_Group 2>/dev/null) - fi - - required_groups="$GlobalTV $AsianTV $MainlandTV $Proxy $Youtube $Bilibili $Bahamut $HBOMax $Pornhub $Apple $AppleTV $Scholar $Netflix $Disney $Discovery $DAZN $AI_Suite $Spotify $Steam $TikTok $miHoYo $AdBlock $HTTPDNS $Speedtest $Telegram $Crypto $Discord $Microsoft $PayPal $Others $GoogleFCM $Domestic" - - for group in $required_groups; do - if [ -n "$group" ] && [ -z "$(echo "$PROXY_GROUP_CACHE" | grep -F "$group")" ]; then - LOG_OUT "Warning: Because of The Different Porxy-Group's Name, Stop Setting The Other Rules!" - SKIP_CUSTOM_OTHER_RULES=1 - yml_other_set "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9" "${10}" "${11}" "${12}" "${13}" "${14}" "${15}" - exit 0 - fi - done - fi - if [ -z "$Proxy" ]; then - LOG_OUT "Error: Missing Porxy-Group's Name, Stop Setting The Other Rules!" - SKIP_CUSTOM_OTHER_RULES=1 - yml_other_set "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9" "${10}" "${11}" "${12}" "${13}" "${14}" "${15}" - exit 0 - fi -fi - -yml_other_set "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9" "${10}" "${11}" "${12}" "${13}" "${14}" "${15}" \ No newline at end of file +yml_other_set "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9" "${10}" "${11}" "${12}" "${13}" \ No newline at end of file diff --git a/luci-app-openclash/root/www/luci-static/resources/openclash/fonts/TwemojiMozilla-flags-B12sb_Bp.woff2 b/luci-app-openclash/root/www/luci-static/resources/openclash/fonts/TwemojiMozilla-flags-B12sb_Bp.woff2 new file mode 100644 index 00000000..b87c4ce0 Binary files /dev/null and b/luci-app-openclash/root/www/luci-static/resources/openclash/fonts/TwemojiMozilla-flags-B12sb_Bp.woff2 differ diff --git a/luci-app-openclash/root/www/luci-static/resources/openclash/img/arrow-clockwise-light.svg b/luci-app-openclash/root/www/luci-static/resources/openclash/img/arrow-clockwise-light.svg deleted file mode 100644 index 462dc5ef..00000000 --- a/luci-app-openclash/root/www/luci-static/resources/openclash/img/arrow-clockwise-light.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/luci-app-openclash/root/www/luci-static/resources/openclash/img/wrench-light.svg b/luci-app-openclash/root/www/luci-static/resources/openclash/img/wrench-light.svg deleted file mode 100644 index 7463aa67..00000000 --- a/luci-app-openclash/root/www/luci-static/resources/openclash/img/wrench-light.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/luci-app-openclash/root/www/luci-static/resources/openclash/mode/log/log.js b/luci-app-openclash/root/www/luci-static/resources/openclash/mode/log/log.js new file mode 100644 index 00000000..3da708a1 --- /dev/null +++ b/luci-app-openclash/root/www/luci-static/resources/openclash/mode/log/log.js @@ -0,0 +1,117 @@ +// CodeMirror log mode +// Distributed under an MIT license: https://codemirror.net/5/LICENSE +// Supports log output with level and category highlighting + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("log", function(config, parserConfig) { + return { + startState: function(basecol) { + return { + basecol: basecol || 0, + tabDone: false + }; + }, + + token: function(stream, state) { + if (stream.sol()) { + state.tabDone = false; + + if (stream.match(/\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/)) { + return "log-timestamp"; + } + } + + if (stream.eatSpace()) return null; + + var ch = stream.peek(); + + if (!ch) { + stream.skipToEnd(); + return null; + } + + if (ch === '【') { + if (stream.match(/【[^】]*】/)) { + return "log-bracket"; + } + } + + if (state.tabDone) { + stream.next(); + return "log-string"; + } + + if (ch === '[' && window.levelTranslations) { + for (var levelKey in window.levelTranslations) { + var levelText = '[' + window.levelTranslations[levelKey] + ']'; + if (stream.match(levelText)) { + return "log-level-" + levelKey; + } + } + } + + if (ch === '[' && stream.match(/\[[A-Z][^\]]*\]/)) { + return "log-category"; + } + + if (ch !== '[') { + state.tabDone = true; + } + + stream.next(); + return "log-string"; + } + }; +}); + +CodeMirror.defineMIME("text/x-log", "log"); + +}); + +(function() { + function initLogLevelWidth() { + if (!window.levelTranslations) return; + + var tempContainer = document.createElement('div'); + tempContainer.style.position = 'absolute'; + tempContainer.style.visibility = 'hidden'; + tempContainer.style.whiteSpace = 'nowrap'; + tempContainer.style.fontSize = '15px'; + tempContainer.style.fontWeight = '600'; + tempContainer.style.fontFamily = 'Consolas, Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, sans-serif'; + tempContainer.style.padding = '0px 5px'; + document.body.appendChild(tempContainer); + + let maxWidth = 0; + + for (var levelKey in window.levelTranslations) { + var translatedText = '[' + window.levelTranslations[levelKey] + ']'; + tempContainer.textContent = translatedText; + var width = tempContainer.offsetWidth; + if (width > maxWidth) { + maxWidth = width; + } + } + + document.body.removeChild(tempContainer); + + if (maxWidth > 0) { + document.documentElement.style.setProperty('--log-level-width', maxWidth + 'px'); + } + } + + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', initLogLevelWidth); + } else { + initLogLevelWidth(); + } +})(); diff --git a/luci-app-openclash/root/www/luci-static/resources/openclash/mode/lua/lua.js b/luci-app-openclash/root/www/luci-static/resources/openclash/mode/lua/lua.js deleted file mode 100644 index b9e5172d..00000000 --- a/luci-app-openclash/root/www/luci-static/resources/openclash/mode/lua/lua.js +++ /dev/null @@ -1,191 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: https://codemirror.net/5/LICENSE - -// LUA mode. Ported to CodeMirror 2 from Franciszek Wawrzak's -// CodeMirror 1 mode. -// highlights keywords, strings, comments (no leveling supported! ("[==[")), tokens, basic indenting - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("lua", function(config, parserConfig) { - var indentUnit = config.indentUnit; - - function prefixRE(words) { - return new RegExp("^(?:" + words.join("|") + ")", "i"); - } - function wordRE(words) { - return new RegExp("^(?:" + words.join("|") + ")$", "i"); - } - var specials = wordRE(parserConfig.specials || []); - - // long list of standard functions from lua manual - var builtins = wordRE([ - "_G","_VERSION","assert","collectgarbage","dofile","error","getfenv","getmetatable","ipairs","load", - "loadfile","loadstring","module","next","pairs","pcall","print","rawequal","rawget","rawset","require", - "select","setfenv","setmetatable","tonumber","tostring","type","unpack","xpcall", - - "coroutine.create","coroutine.resume","coroutine.running","coroutine.status","coroutine.wrap","coroutine.yield", - - "debug.debug","debug.getfenv","debug.gethook","debug.getinfo","debug.getlocal","debug.getmetatable", - "debug.getregistry","debug.getupvalue","debug.setfenv","debug.sethook","debug.setlocal","debug.setmetatable", - "debug.setupvalue","debug.traceback", - - "close","flush","lines","read","seek","setvbuf","write", - - "io.close","io.flush","io.input","io.lines","io.open","io.output","io.popen","io.read","io.stderr","io.stdin", - "io.stdout","io.tmpfile","io.type","io.write", - - "math.abs","math.acos","math.asin","math.atan","math.atan2","math.ceil","math.cos","math.cosh","math.deg", - "math.exp","math.floor","math.fmod","math.frexp","math.huge","math.ldexp","math.log","math.log10","math.max", - "math.min","math.modf","math.pi","math.pow","math.rad","math.random","math.randomseed","math.sin","math.sinh", - "math.sqrt","math.tan","math.tanh", - - "os.clock","os.date","os.difftime","os.execute","os.exit","os.getenv","os.remove","os.rename","os.setlocale", - "os.time","os.tmpname", - - "package.cpath","package.loaded","package.loaders","package.loadlib","package.path","package.preload", - "package.seeall", - - "string.byte","string.char","string.dump","string.find","string.format","string.gmatch","string.gsub", - "string.len","string.lower","string.match","string.rep","string.reverse","string.sub","string.upper", - - "table.concat","table.insert","table.maxn","table.remove","table.sort" - ]); - var keywords = wordRE(["and","break","elseif","false","nil","not","or","return", - "true","function", "end", "if", "then", "else", "do", - "while", "repeat", "until", "for", "in", "local" ]); - - var indentTokens = wordRE(["function", "if","repeat","do", "\\(", "{"]); - var dedentTokens = wordRE(["end", "until", "\\)", "}"]); - var dedentPartial = prefixRE(["end", "until", "\\)", "}", "else", "elseif"]); - - function readBracket(stream) { - var level = 0; - while (stream.eat("=")) ++level; - stream.eat("["); - return level; - } - - function normal(stream, state) { - var ch = stream.next(); - if (ch == "-" && stream.eat("-")) { - if (stream.eat("[") && stream.eat("[")) - return (state.cur = bracketed(readBracket(stream), "comment"))(stream, state); - stream.skipToEnd(); - return "comment"; - } - if (ch == "【") { - stream.eatWhile(/[^】]/); - stream.eat("】"); - return "string-2"; - } - if (((ch == "提" && stream.eat("示")) || (ch == "T" && stream.eat("i") && stream.eat("p"))) && (stream.eat(":") || stream.eat(":"))) { - stream.skipToEnd(); - return "tip"; - } - if (ch == "守" && stream.eat("护") && stream.eat("程") && stream.eat("序") && (stream.eat(":") || stream.eat(":"))) { - stream.skipToEnd(); - return "watchdog"; - } - if (ch == "警" && stream.eat("告") && (stream.eat(":") || stream.eat(":"))) { - stream.skipToEnd(); - return "warn"; - } - if (ch == "W" && stream.eat("a")) { - if (stream.eat("t") && stream.eat("c") && stream.eat("h") && stream.eat("d") && stream.eat("o") && stream.eat("g") && (stream.eat(":") || stream.eat(":"))) { - stream.skipToEnd(); - return "watchdog"; - } - if (stream.eat("r") && stream.eat("n") && stream.eat("i") && stream.eat("n") && stream.eat("g") && (stream.eat(":") || stream.eat(":"))) { - stream.skipToEnd(); - return "warn"; - } - } - if (((ch == "错" && stream.eat("误")) || (ch == "E" && stream.eat("r") && stream.eat("r") && stream.eat("o") && stream.eat("r"))) && (stream.eat(":") || stream.eat(":"))) { - stream.skipToEnd(); - return "error"; - } - if (ch == "\"" || ch == "'") - return (state.cur = string(ch))(stream, state); - if (ch == "[" && /[\[=]/.test(stream.peek())) - return (state.cur = bracketed(readBracket(stream), "string"))(stream, state); - if (/\d/.test(ch)) { - stream.eatWhile(/[\w.%]/); - return "number"; - } - if (/[\w_]/.test(ch)) { - stream.eatWhile(/[\w\\\-_.]/); - return "variable"; - } - return null; - } - - function bracketed(level, style) { - return function(stream, state) { - var curlev = null, ch; - while ((ch = stream.next()) != null) { - if (curlev == null) {if (ch == "]") curlev = 0;} - else if (ch == "=") ++curlev; - else if (ch == "]" && curlev == level) { state.cur = normal; break; } - else curlev = null; - } - return style; - }; - } - - function string(quote) { - return function(stream, state) { - var escaped = false, ch; - while ((ch = stream.next()) != null) { - if (ch == quote && !escaped) break; - escaped = !escaped && ch == "\\"; - } - if (!escaped) state.cur = normal; - return "string"; - }; - } - - return { - startState: function(basecol) { - return {basecol: basecol || 0, indentDepth: 0, cur: normal}; - }, - - token: function(stream, state) { - if (stream.eatSpace()) return null; - var style = state.cur(stream, state); - var word = stream.current(); - //if (style == "variable") { - // if (keywords.test(word)) style = "keyword"; - // else if (builtins.test(word)) style = "builtin"; - // else if (specials.test(word)) style = "variable-2"; - //} - if ((style != "comment") && (style != "string")){ - if (indentTokens.test(word)) ++state.indentDepth; - else if (dedentTokens.test(word)) --state.indentDepth; - } - return style; - }, - - indent: function(state, textAfter) { - var closing = dedentPartial.test(textAfter); - return state.basecol + indentUnit * (state.indentDepth - (closing ? 1 : 0)); - }, - - electricInput: /^\s*(?:end|until|else|\)|\})$/, - lineComment: "--", - blockCommentStart: "--[[", - blockCommentEnd: "]]" - }; -}); - -CodeMirror.defineMIME("text/x-lua", "lua"); - -}); diff --git a/luci-app-openclash/root/www/luci-static/resources/openclash/theme/idea.css b/luci-app-openclash/root/www/luci-static/resources/openclash/theme/idea.css deleted file mode 100644 index a22e0c85..00000000 --- a/luci-app-openclash/root/www/luci-static/resources/openclash/theme/idea.css +++ /dev/null @@ -1,45 +0,0 @@ -/** - Name: IDEA default theme - From IntelliJ IDEA by JetBrains - */ - -.cm-s-idea span.cm-meta { color: #808000; } -.cm-s-idea span.cm-number { color: #0000FF; } -.cm-s-idea span.cm-keyword { line-height: 1em; font-weight: bold; color: #000080; } -.cm-s-idea span.cm-atom { font-weight: bold; color: #000080; } -.cm-s-idea span.cm-def { color: #000000; } -.cm-s-idea span.cm-variable { color: black; } -.cm-s-idea span.cm-variable-2 { color: black; } -.cm-s-idea span.cm-variable-3, .cm-s-idea span.cm-type { color: black; } -.cm-s-idea span.cm-property { color: black; } -.cm-s-idea span.cm-operator { color: black; } -.cm-s-idea span.cm-comment { color: #808080; } -.cm-s-idea span.cm-string { color: #008000; } -.cm-s-idea span.cm-string-2 { color: #008000; } -.cm-s-idea span.cm-qualifier { color: #555; } -.cm-s-idea span.cm-error { line-height: 1em; font-weight: bold; color: #FF0000; } -.cm-s-idea span.cm-attribute { color: #0000FF; } -.cm-s-idea span.cm-tag { color: #000080; } -.cm-s-idea span.cm-link { color: #0000FF; } -.cm-s-idea span.cm-tip { color: #ff6f00; } -.cm-s-idea span.cm-watchdog { color: #b300ff; } -.cm-s-idea span.cm-warn { line-height: 1em; font-weight: bold; color: #ff00bb; } -.cm-s-idea .CodeMirror-activeline-background { background: #FFFAE3; } - -.cm-s-idea span.cm-builtin { color: #30a; } -.cm-s-idea span.cm-bracket { color: #cc7; } -.cm-s-idea { font-family: Consolas, Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, sans-serif;} - - -.cm-s-idea .CodeMirror-matchingbracket { outline:1px solid grey; color:black !important; } - -.CodeMirror-hints.idea { - font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; - color: #616569; - background-color: #ebf3fd !important; -} - -.CodeMirror-hints.idea .CodeMirror-hint-active { - background-color: #a2b8c9 !important; - color: #5c6065 !important; -} \ No newline at end of file diff --git a/luci-app-openclash/root/www/luci-static/resources/openclash/theme/log.css b/luci-app-openclash/root/www/luci-static/resources/openclash/theme/log.css new file mode 100644 index 00000000..4b3b32c2 --- /dev/null +++ b/luci-app-openclash/root/www/luci-static/resources/openclash/theme/log.css @@ -0,0 +1,309 @@ +/* + Log syntax highlighting styles for CodeMirror + Light mode: .cm-s-log + Dark mode: :root[data-darkmode="true"] .cm-s-log +*/ + +:root { + --log-level-width: auto; +} + +/* ========== Light Mode ========== */ + +.cm-s-log.CodeMirror { + background-color: #ffffff; + color: #000000; +} + +.cm-s-log .CodeMirror-gutters { + background: #f5f5f5; + color: #999; + border-right: 1px solid #ddd; +} + +.cm-s-log .CodeMirror-guttermarker, +.cm-s-log .CodeMirror-guttermarker-subtle, +.cm-s-log .CodeMirror-linenumber { + color: #999; +} + +.cm-s-log .CodeMirror-cursor { + border-left: 1px solid #000; +} + +.cm-s-log.cm-fat-cursor .CodeMirror-cursor { + background-color: #0000ff30 !important; +} + +.cm-s-log .cm-animate-fat-cursor { + background-color: #0000ff30 !important; +} + +.cm-s-log div.CodeMirror-selected { + background: #e8f2fe; +} + +.cm-s-log.CodeMirror-focused div.CodeMirror-selected { + background: #e8f2fe; +} + +.cm-s-log .CodeMirror-line::selection, +.cm-s-log .CodeMirror-line>span::selection, +.cm-s-log .CodeMirror-line>span>span::selection { + background: #e8f2fe; +} + +.cm-s-log .CodeMirror-line::-moz-selection, +.cm-s-log .CodeMirror-line>span::-moz-selection, +.cm-s-log .CodeMirror-line>span>span::-moz-selection { + background: #e8f2fe; +} + +.cm-s-log .CodeMirror-activeline-background { + background: #FFFAE3; +} + +.cm-s-log span.cm-meta { color: #808000; } +.cm-s-log span.cm-number { color: #0000FF; } +.cm-s-log span.cm-keyword { line-height: 1em; font-weight: bold; color: #000080; } +.cm-s-log span.cm-atom { font-weight: bold; color: #000080; } +.cm-s-log span.cm-def { color: #000000; } +.cm-s-log span.cm-variable { color: black; } +.cm-s-log span.cm-variable-2 { color: black; } +.cm-s-log span.cm-variable-3, +.cm-s-log span.cm-type { color: black; } +.cm-s-log span.cm-property { color: black; } +.cm-s-log span.cm-operator { color: black; } +.cm-s-log span.cm-comment { color: #808080; } +.cm-s-log span.cm-string { color: #008000; } +.cm-s-log span.cm-qualifier { color: #555; } +.cm-s-log span.cm-error { line-height: 1em; font-weight: bold; color: #FF0000; } +.cm-s-log span.cm-attribute { color: #0000FF; } +.cm-s-log span.cm-tag { color: #000080; } +.cm-s-log span.cm-link { color: #0000FF; } +.cm-s-log span.cm-builtin { color: #30a; } +.cm-s-log span.cm-bracket { color: #cc7; } + +.cm-s-log { + font-family: Consolas, Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, sans-serif; +} + +.cm-s-log .CodeMirror-matchingbracket { + outline: 1px solid grey; + color: black !important; +} + +/* Log specific styles - Light Mode */ +.cm-s-log span.cm-log-timestamp { + color: #b53cf1; + font-weight: 500; + background-color: rgba(181, 60, 241, 0.15); + padding: 0px 5px; + margin: 2px 0px; + border-radius: 5px; + display: inline-block; + text-align: center; +} + +.cm-s-log span.cm-log-level-info, +.cm-s-log span.cm-log-level-warning, +.cm-s-log span.cm-log-level-error, +.cm-s-log span.cm-log-level-debug, +.cm-s-log span.cm-log-level-tip, +.cm-s-log span.cm-log-level-fatal, +.cm-s-log span.cm-log-level-watchdog { + font-weight: 500; + margin: 2px 0px; + border-radius: 5px; + display: inline-flex; + align-items: center; + justify-content: center; + width: var(--log-level-width); +} + +.cm-s-log span.cm-log-level-info { + color: #25b5b8; + background-color: rgba(37, 181, 184, 0.15); +} +.cm-s-log span.cm-log-level-warning { + color: #ff00bb; + background-color: rgba(255, 0, 187, 0.15); +} +.cm-s-log span.cm-log-level-error { + color: #FF0000; + background-color: rgba(255, 0, 0, 0.15); +} +.cm-s-log span.cm-log-level-debug { + color: #0062ff; + background-color: rgba(0, 98, 255, 0.15); +} +.cm-s-log span.cm-log-level-tip { + color: #FF6B00; + background-color: rgba(255, 107, 0, 0.15); +} +.cm-s-log span.cm-log-level-fatal { + color: #FF0000; + background-color: rgba(255, 0, 0, 0.15); +} +.cm-s-log span.cm-log-level-watchdog { + color: #ffa700; + background-color: rgba(255, 167, 0, 0.15); +} +.cm-s-log span.cm-log-category { + color: #FF6B00; + font-weight: 500; + background-color: rgba(255, 107, 0, 0.15); + padding: 0px 5px; + margin: 2px 0px; + border-radius: 5px; + display: inline-block; + text-align: center; +} +.cm-s-log span.cm-log-bracket { color: #059669; font-weight: 600; } +.cm-s-log span.cm-log-string { color: #000000; font-weight: 400; } + +.CodeMirror-hints.log { + font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; + color: #616569; + background-color: #ebf3fd !important; +} + +.CodeMirror-hints.log .CodeMirror-hint-active { + background-color: #a2b8c9 !important; + color: #5c6065 !important; +} + +/* ========== Dark Mode ========== */ + +:root[data-darkmode="true"] .cm-s-log.CodeMirror { + background-color: #263238; + color: #EEFFFF; +} + +:root[data-darkmode="true"] .cm-s-log .CodeMirror-gutters { + background: #263238; + color: #546E7A; + border: none; +} + +:root[data-darkmode="true"] .cm-s-log .CodeMirror-guttermarker, +:root[data-darkmode="true"] .cm-s-log .CodeMirror-guttermarker-subtle, +:root[data-darkmode="true"] .cm-s-log .CodeMirror-linenumber { + color: #546E7A; +} + +:root[data-darkmode="true"] .cm-s-log .CodeMirror-cursor { + border-left: 1px solid #FFCC00; +} + +:root[data-darkmode="true"] .cm-s-log.cm-fat-cursor .CodeMirror-cursor { + background-color: #5d6d5c80 !important; +} + +:root[data-darkmode="true"] .cm-s-log .cm-animate-fat-cursor { + background-color: #5d6d5c80 !important; +} + +:root[data-darkmode="true"] .cm-s-log div.CodeMirror-selected { + background: rgba(128, 203, 196, 0.2); +} + +:root[data-darkmode="true"] .cm-s-log.CodeMirror-focused div.CodeMirror-selected { + background: rgba(128, 203, 196, 0.2); +} + +:root[data-darkmode="true"] .cm-s-log .CodeMirror-line::selection, +:root[data-darkmode="true"] .cm-s-log .CodeMirror-line>span::selection, +:root[data-darkmode="true"] .cm-s-log .CodeMirror-line>span>span::selection { + background: rgba(128, 203, 196, 0.2); +} + +:root[data-darkmode="true"] .cm-s-log .CodeMirror-line::-moz-selection, +:root[data-darkmode="true"] .cm-s-log .CodeMirror-line>span::-moz-selection, +:root[data-darkmode="true"] .cm-s-log .CodeMirror-line>span>span::-moz-selection { + background: rgba(128, 203, 196, 0.2); +} + +:root[data-darkmode="true"] .cm-s-log .CodeMirror-activeline-background { + background: rgba(0, 0, 0, 0.5); +} + +:root[data-darkmode="true"] .cm-s-log span.cm-meta { color: #FFCB6B; } +:root[data-darkmode="true"] .cm-s-log span.cm-number { color: #FF5370; } +:root[data-darkmode="true"] .cm-s-log span.cm-keyword { color: #C792EA; } +:root[data-darkmode="true"] .cm-s-log span.cm-atom { color: #F78C6C; } +:root[data-darkmode="true"] .cm-s-log span.cm-def { color: #82AAFF; } +:root[data-darkmode="true"] .cm-s-log span.cm-variable { color: #f07178; } +:root[data-darkmode="true"] .cm-s-log span.cm-variable-2 { color: #EEFFFF; } +:root[data-darkmode="true"] .cm-s-log span.cm-variable-3, +:root[data-darkmode="true"] .cm-s-log span.cm-type { color: #f07178; } +:root[data-darkmode="true"] .cm-s-log span.cm-property { color: #C792EA; } +:root[data-darkmode="true"] .cm-s-log span.cm-operator { color: #89DDFF; } +:root[data-darkmode="true"] .cm-s-log span.cm-comment { color: #546E7A; } +:root[data-darkmode="true"] .cm-s-log span.cm-string { color: #C3E88D; } +:root[data-darkmode="true"] .cm-s-log span.cm-qualifier { color: #DECB6B; } +:root[data-darkmode="true"] .cm-s-log span.cm-error { + color: rgba(255, 255, 255, 1.0); + background-color: #FF5370; +} +:root[data-darkmode="true"] .cm-s-log span.cm-attribute { color: #C792EA; } +:root[data-darkmode="true"] .cm-s-log span.cm-tag { color: #FF5370; } +:root[data-darkmode="true"] .cm-s-log span.cm-link { color: #82AAFF; } +:root[data-darkmode="true"] .cm-s-log span.cm-builtin { color: #FFCB6B; } +:root[data-darkmode="true"] .cm-s-log span.cm-bracket { color: #F78C6C; } + +:root[data-darkmode="true"] .cm-s-log .CodeMirror-matchingbracket { + text-decoration: underline; + color: white !important; +} + +/* Log specific styles - Dark Mode */ +:root[data-darkmode="true"] .cm-s-log span.cm-log-timestamp { + color: #c655ff; + background-color: rgba(198, 85, 255, 0.2); +} +:root[data-darkmode="true"] .cm-s-log span.cm-log-level-info { + color: #31edf0; + background-color: rgba(49, 237, 240, 0.2); +} +:root[data-darkmode="true"] .cm-s-log span.cm-log-level-warning { + color: #ff66cc; + background-color: rgba(255, 102, 204, 0.2); +} +:root[data-darkmode="true"] .cm-s-log span.cm-log-level-error { + color: #FF0000; + background-color: rgba(255, 0, 0, 0.2); +} +:root[data-darkmode="true"] .cm-s-log span.cm-log-level-debug { + color: #287bff; + background-color: rgba(40, 123, 255, 0.2); +} +:root[data-darkmode="true"] .cm-s-log span.cm-log-level-tip { + color: #ff6f00; + background-color: rgba(255, 111, 0, 0.2); +} +:root[data-darkmode="true"] .cm-s-log span.cm-log-level-fatal { + color: #FF0000; + background-color: rgba(255, 0, 0, 0.2); +} +:root[data-darkmode="true"] .cm-s-log span.cm-log-level-watchdog { + color: #ffb833; + background-color: rgba(255, 184, 51, 0.15); +} +:root[data-darkmode="true"] .cm-s-log span.cm-log-category { + color: #ff6f00; + background-color: rgba(255, 111, 0, 0.2); +} +:root[data-darkmode="true"] .cm-s-log span.cm-log-bracket { color: #34d399; } +:root[data-darkmode="true"] .cm-s-log span.cm-log-string { color: #ffffff; } + +:root[data-darkmode="true"] .CodeMirror-hints.log { + font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; + color: #EEFFFF; + background-color: #37474F !important; +} + +:root[data-darkmode="true"] .CodeMirror-hints.log .CodeMirror-hint-active { + background-color: #546E7A !important; + color: #EEFFFF !important; +} \ No newline at end of file diff --git a/luci-app-openclash/root/www/luci-static/resources/openclash/theme/material-log.css b/luci-app-openclash/root/www/luci-static/resources/openclash/theme/material-log.css deleted file mode 100644 index d3a8f1e3..00000000 --- a/luci-app-openclash/root/www/luci-static/resources/openclash/theme/material-log.css +++ /dev/null @@ -1,153 +0,0 @@ -/* - Name: material - Author: Mattia Astorino (http://github.com/equinusocio) - Website: https://material-theme.site/ -*/ - -.cm-s-material-log.CodeMirror { - background-color: #263238; - color: #EEFFFF; -} - -.cm-s-material-log .CodeMirror-gutters { - background: #263238; - color: #546E7A; - border: none; -} - -.cm-s-material-log .CodeMirror-guttermarker, -.cm-s-material-log .CodeMirror-guttermarker-subtle, -.cm-s-material-log .CodeMirror-linenumber { - color: #546E7A; -} - -.cm-s-material-log .CodeMirror-cursor { - border-left: 1px solid #FFCC00; -} -.cm-s-material-log.cm-fat-cursor .CodeMirror-cursor { - background-color: #5d6d5c80 !important; -} -.cm-s-material-log .cm-animate-fat-cursor { - background-color: #5d6d5c80 !important; -} - -.cm-s-material-log div.CodeMirror-selected { - background: rgba(128, 203, 196, 0.2); -} - -.cm-s-material-log.CodeMirror-focused div.CodeMirror-selected { - background: rgba(128, 203, 196, 0.2); -} - -.cm-s-material-log .CodeMirror-line::selection, -.cm-s-material-log .CodeMirror-line>span::selection, -.cm-s-material-log .CodeMirror-line>span>span::selection { - background: rgba(128, 203, 196, 0.2); -} - -.cm-s-material-log .CodeMirror-line::-moz-selection, -.cm-s-material-log .CodeMirror-line>span::-moz-selection, -.cm-s-material-log .CodeMirror-line>span>span::-moz-selection { - background: rgba(128, 203, 196, 0.2); -} - -.cm-s-material-log .CodeMirror-activeline-background { - background: rgba(0, 0, 0, 0.5); -} - -.cm-s-material-log .cm-keyword { - color: #C792EA; -} - -.cm-s-material-log .cm-operator { - color: #89DDFF; -} - -.cm-s-material-log .cm-variable-2 { - color: #EEFFFF; -} - -.cm-s-material-log .cm-variable-3 { - color: #EEFFFF; -} - -.cm-s-material-log .cm-type { - color: #f07178; -} - -.cm-s-material-log .cm-builtin { - color: #FFCB6B; -} - -.cm-s-material-log .cm-atom { - color: #F78C6C; -} - -.cm-s-material-log .cm-number { - color: #FF5370; -} - -.cm-s-material-log .cm-def { - color: #82AAFF; -} - -.cm-s-material-log .cm-string { - color: #C3E88D; -} - -.cm-s-material-log .cm-string-2 { - color: #C3E88D; -} - -.cm-s-material-log .cm-comment { - color: #546E7A; -} - -.cm-s-material-log .cm-variable { - color: #EEFFFF; -} - -.cm-s-material-log .cm-tag { - color: #FF5370; -} - -.cm-s-material-log .cm-tip { - color: #ff6f00; -} - -.cm-s-material-log .cm-watchdog { - color: #b300ff; -} - -.cm-s-material-log .cm-warn { - line-height: 1em; - font-weight: bold; - color: #ff00bb; -} - -.cm-s-material-log .cm-meta { - color: #FFCB6B; -} - -.cm-s-material-log .cm-attribute { - color: #C792EA; -} - -.cm-s-material-log .cm-property { - color: #C792EA; -} - -.cm-s-material-log .cm-qualifier { - color: #DECB6B; -} - -.cm-s-material-log .cm-error { - line-height: 1em; - font-weight: bold; - color: #FF0000; -} - -.cm-s-material-log .CodeMirror-matchingbracket { - text-decoration: underline; - color: white !important; -} diff --git a/luci-app-openclawmgr/Makefile b/luci-app-openclawmgr/Makefile index 5e6b95e7..f7bb5cdd 100644 --- a/luci-app-openclawmgr/Makefile +++ b/luci-app-openclawmgr/Makefile @@ -1,12 +1,12 @@ include $(TOPDIR)/rules.mk -PKG_VERSION:=0.1.0 -PKG_RELEASE:=2 +PKG_VERSION:=0.1.1 +PKG_RELEASE:=3 LUCI_TITLE:=LuCI support for OpenClaw Launcher LUCI_PKGARCH:=all -LUCI_DEPENDS:=+luci-base +luci-compat +luci-lib-taskd +curl +ca-bundle +tar +xz-utils +jsonfilter +LUCI_DEPENDS:=+luci-base +luci-compat +luci-lib-taskd +curl +ca-bundle +tar +xz-utils +jsonfilter +git +git-http define Package/luci-app-openclawmgr/conffiles /etc/config/openclawmgr diff --git a/luci-app-openclawmgr/htdocs/luci-static/resources/openclawmgr/app.js b/luci-app-openclawmgr/htdocs/luci-static/resources/openclawmgr/app.js index 1e55e1df..fbf6d6b7 100644 --- a/luci-app-openclawmgr/htdocs/luci-static/resources/openclawmgr/app.js +++ b/luci-app-openclawmgr/htdocs/luci-static/resources/openclawmgr/app.js @@ -34,11 +34,12 @@ activeTab: "basic", savingSection: "", lastAppliedAt: "", - showLogModal: false, - logText: "", - logTimer: null, statusTimer: null, - installWatchTimer: null + installWatchTimer: null, + lastTaskRunning: false, + taskLogOpenTs: 0, + consoleReady: false, + consoleCheckTimer: null }; var styleText = ""; @@ -247,45 +248,22 @@ ''; } - function openLogModal() { - state.showLogModal = true; - if (state.logTimer) { - window.clearTimeout(state.logTimer); - state.logTimer = null; - } - pollLogs(); - render(); + function taskWindowAvailable() { + return !!(window.taskd && window.taskd.show_log); } - function closeLogModal() { - state.showLogModal = false; - if (state.logTimer) { - window.clearTimeout(state.logTimer); - state.logTimer = null; - } - refreshStatus(); - } - - function pollLogs() { - if (!state.showLogModal) { + function showTaskLog(taskId) { + taskId = taskId || "openclawmgr"; + if (!taskWindowAvailable()) { + window.alert("任务窗口不可用(未加载 taskd/xterm)。请安装 luci-lib-taskd 和 luci-lib-xterm,然后强制刷新页面。"); return; } - if (state.logTimer) { - window.clearTimeout(state.logTimer); - state.logTimer = null; + var now = Date.now ? Date.now() : (+new Date()); + if (state.taskLogOpenTs && now - state.taskLogOpenTs < 1500) { + return; } - request(config.logUrl + "?n=200").then(function(data) { - state.logText = (data && data.log) || ""; - refreshStatus(function() { - if (state.showLogModal) { - state.logTimer = window.setTimeout(pollLogs, 3000); - } - }); - }).catch(function() { - if (state.showLogModal) { - state.logTimer = window.setTimeout(pollLogs, 5000); - } - }); + state.taskLogOpenTs = now; + window.taskd.show_log(taskId); } function stopStatusPolling() { @@ -302,6 +280,41 @@ } } + function stopConsoleCheck() { + if (state.consoleCheckTimer) { + window.clearTimeout(state.consoleCheckTimer); + state.consoleCheckTimer = null; + } + } + + function pollConsoleReady(rounds) { + rounds = typeof rounds === "number" ? rounds : 20; + stopConsoleCheck(); + state.consoleReady = false; + + function tick(remaining) { + request(config.readyUrl).then(function(rv) { + state.consoleReady = !!(rv && rv.ok && rv.ready); + render(); + if (!state.consoleReady && remaining > 1) { + state.consoleCheckTimer = window.setTimeout(function() { tick(remaining - 1); }, 1000); + } else { + state.consoleCheckTimer = null; + } + }).catch(function() { + state.consoleReady = false; + render(); + if (remaining > 1) { + state.consoleCheckTimer = window.setTimeout(function() { tick(remaining - 1); }, 1500); + } else { + state.consoleCheckTimer = null; + } + }); + } + + tick(rounds); + } + function backgroundStatusDelay(status) { if (status && status.installing) { return 3000; @@ -317,9 +330,6 @@ function ensureInstallWatch() { stopInstallWatch(); - if (state.status && state.status.installing && state.showLogModal) { - return; - } state.installWatchTimer = window.setTimeout(function() { refreshStatus(function() { ensureInstallWatch(); @@ -347,16 +357,6 @@ tick(rounds); } - function scrollLogToBottom() { - if (!state.showLogModal) { - return; - } - var body = root.querySelector(".oclm-log-body"); - if (body) { - body.scrollTop = body.scrollHeight; - } - } - function render() { var status = state.status || {}; var form = state.form || {}; @@ -381,6 +381,12 @@ var savingBasic = state.savingSection === "basic"; var savingAccess = state.savingSection === "access"; + var serviceButtons = showServiceActions ? ( + (!status.running ? '' : '') + + (status.running ? '' : '') + + '' + ) : ''; + root.innerHTML = '' + '
' + @@ -403,10 +409,7 @@ '
' + '
' + (showInstallAction ? '
' : '') + - (status.running ? '' + openclawIcon("oclm-button-icon") + '打开控制台' : '') + - (!status.running && showServiceActions ? '' : '') + - (status.running && showServiceActions ? '' : '') + - (showServiceActions ? '' : '') + + (status.running ? '' : '') + (status.installing ? '' : '') + '
' + (status.installing ? '
安装任务正在后台运行,点击“安装中”可继续查看日志。
' : '') + @@ -421,7 +424,6 @@ '
' + '

基础配置

' + '
' + - fieldToggle("启用服务", "enabled", form.enabled) + fieldInput("监听端口", '') + fieldInput("监听范围", selectHtml("oclm-bind", form.bind, [ ["lan", "所有地址"], @@ -438,7 +440,7 @@ fieldInput("API 密钥", passwordHtml("oclm-api-key", form.provider_api_key || "", "sk-...")) + fieldInput("中转地址(可选)", '') + fieldInput("默认模型", '') + - '
' + (state.lastAppliedAt ? '已于 ' + escapeHtml(state.lastAppliedAt) + ' 更新配置' : '') + '
' + + '
' + serviceButtons + (state.lastAppliedAt ? '已于 ' + escapeHtml(state.lastAppliedAt) + ' 更新配置' : '') + '
' + '
' + '
' + @@ -463,27 +465,9 @@ '
' + '' + '' + - - (state.showLogModal ? ( - '
' + - '
' + - '
' + - '

安装日志

' + - '
' + - '' + - '' + - '' + - '
' + - '
' + - '
' + escapeHtml(state.logText || "日志为空") + '
' + - '
' + - '
' - ) : '') + - ''; bindEvents(); - scrollLogToBottom(); } function fieldInput(label, control) { @@ -547,18 +531,45 @@ if (op === "purge" && !window.confirm("彻底清理会删除运行时和数据目录。确认继续?")) return; postForm(config.opUrl, { op: op }).then(function(rv) { if (!rv || !rv.ok) { + if (rv && rv.busy && rv.running_task_id) { + showTaskLog(rv.running_task_id); + return; + } window.alert((rv && rv.error) || "操作失败"); return; } + state.lastTaskRunning = true; + showTaskLog((rv && (rv.running_task_id || rv.task_id)) || "openclawmgr"); scheduleStatusRefresh(op === "restart" ? 8 : 6, 1000); }); }; }); + Array.prototype.forEach.call(root.querySelectorAll("[data-open-console]"), function(el) { + el.onclick = function() { + if (!state.consoleReady) { + window.alert("控制台正在启动,请稍候再试。"); + return; + } + var url = (state.status && state.status.token_url) || ""; + if (!url) { + window.alert("控制台地址不可用"); + return; + } + window.open(url, "_blank", "noreferrer"); + }; + }); + Array.prototype.forEach.call(root.querySelectorAll("[data-install-action]"), function(el) { el.onclick = function() { - openLogModal(); var accelerated = !!(root.getElementById("oclm-install-accelerated") && root.getElementById("oclm-install-accelerated").checked); + var baseDirEl = root.getElementById("oclm-base-dir"); + var baseDir = baseDirEl && baseDirEl.value ? baseDirEl.value.trim() : ""; + if (!baseDir) { + window.alert("请先选择数据目录并保存应用,再执行安装。"); + if (baseDirEl) baseDirEl.focus(); + return; + } if (!state.status || state.status.installing) { return; } @@ -566,7 +577,7 @@ state.status.task_running = true; state.status.task_op = "install"; render(); - postJson(config.configUrl, { install_accelerated: accelerated }).then(function(cfgRv) { + postJson(config.configUrl, { base_dir: baseDir, install_accelerated: accelerated }).then(function(cfgRv) { if (!cfgRv || !cfgRv.ok) { state.status.installing = false; render(); @@ -574,15 +585,22 @@ return; } state.form.install_accelerated = accelerated; + state.form.base_dir = baseDir; return postForm(config.opUrl, { op: "install" }); }).then(function(rv) { if (!rv) return; if (!rv || !rv.ok) { + if (rv && rv.busy && rv.running_task_id) { + showTaskLog(rv.running_task_id); + return; + } state.status.installing = false; render(); window.alert((rv && rv.error) || "启动安装失败"); return; } + state.lastTaskRunning = true; + showTaskLog((rv && (rv.running_task_id || rv.task_id)) || "openclawmgr"); scheduleStatusRefresh(10, 1000); }).catch(function() { state.status.installing = false; @@ -592,12 +610,6 @@ }; }); - Array.prototype.forEach.call(root.querySelectorAll("[data-close-log], [data-close-log-btn]"), function(el) { - el.onclick = function() { - closeLogModal(); - }; - }); - Array.prototype.forEach.call(root.querySelectorAll("[data-toggle-password]"), function(el) { el.onclick = function() { var id = el.getAttribute("data-toggle-password"); @@ -616,18 +628,6 @@ }; } - Array.prototype.forEach.call(root.querySelectorAll("[data-refresh-log]"), function(el) { - el.onclick = function() { - pollLogs(); - }; - }); - - Array.prototype.forEach.call(root.querySelectorAll("[data-copy-log]"), function(el) { - el.onclick = function() { - copyText(state.logText || ""); - }; - }); - Array.prototype.forEach.call(root.querySelectorAll("[data-copy-token-url]"), function(el) { el.onclick = function() { var value = (state.status && (state.status.token_url || state.status.base_url)) || ""; @@ -687,7 +687,6 @@ if (saveBasic) { saveBasic.onclick = function() { var payload = { - enabled: !!root.getElementById("oclm-enabled").checked, port: root.getElementById("oclm-port").value, bind: root.getElementById("oclm-bind").value, base_dir: root.getElementById("oclm-base-dir").value, @@ -759,6 +758,18 @@ function refreshStatus(done) { request(config.statusUrl).then(function(data) { state.status = data || {}; + if (state.status && state.status.running) { + if (!state.consoleReady) { + pollConsoleReady(20); + } + } else { + stopConsoleCheck(); + state.consoleReady = false; + } + if (state.status && state.status.task_running && !state.lastTaskRunning) { + showTaskLog("openclawmgr"); + } + state.lastTaskRunning = !!(state.status && state.status.task_running); render(); ensureInstallWatch(); if (typeof done === "function") { @@ -782,6 +793,12 @@ state.form = data.config || {}; state.form.default_model = resolveModelValue(state.form); state.options = data.options || {}; + if (!state.form.base_dir) { + var suggested = state.options && state.options.suggested_base_dir ? String(state.options.suggested_base_dir) : ""; + if (suggested) { + state.form.base_dir = suggested; + } + } render(); refreshStatus(); }).catch(function() { diff --git a/luci-app-openclawmgr/luasrc/controller/openclawmgr.lua b/luci-app-openclawmgr/luasrc/controller/openclawmgr.lua index 45f372f6..0af6e9c9 100644 --- a/luci-app-openclawmgr/luasrc/controller/openclawmgr.lua +++ b/luci-app-openclawmgr/luasrc/controller/openclawmgr.lua @@ -11,10 +11,10 @@ function index() page.leaf = true entry({"admin", "services", "openclawmgr", "status"}, call("action_status")).leaf = true + entry({"admin", "services", "openclawmgr", "ready"}, call("action_ready")).leaf = true entry({"admin", "services", "openclawmgr", "op"}, call("action_op")).leaf = true entry({"admin", "services", "openclawmgr", "config_data"}, call("action_config_data")).leaf = true entry({"admin", "services", "openclawmgr", "apply_config"}, call("action_apply_config")).leaf = true - entry({"admin", "services", "openclawmgr", "log"}, call("action_log")).leaf = true entry({"admin", "services", "openclawmgr", "diag_info"}, call("action_diag_info")).leaf = true entry({"admin", "services", "openclawmgr", "diag_run"}, call("action_diag_run")).leaf = true @@ -181,7 +181,10 @@ end local function configured_base_path(base_dir) local jsonc = require "luci.jsonc" - local path = (base_dir or "/opt/openclawmgr") .. "/data/.openclaw/openclaw.json" + if type(base_dir) ~= "string" or base_dir == "" then + return "/" + end + local path = base_dir .. "/data/.openclaw/openclaw.json" local f = io.open(path, "r") if not f then return "/" @@ -307,29 +310,40 @@ function action_status() local enabled = uci:get("openclawmgr", "main", "enabled") or "0" local port = uci:get("openclawmgr", "main", "port") or "18789" local bind = uci:get("openclawmgr", "main", "bind") or "lan" - local base_dir = uci:get("openclawmgr", "main", "base_dir") or "/opt/openclawmgr" + local base_dir = uci:get("openclawmgr", "main", "base_dir") or "" local token = uci:get("openclawmgr", "main", "token") or "" if not port:match("^%d+$") then port = "18789" end - local st = sys.exec("/usr/libexec/istorec/openclawmgr.sh status 2>/dev/null"):gsub("%s+$", "") - local running = (st == "running") - local installed = (st == "running" or st == "stopped") + local running = false + local installed = false + if base_dir ~= "" then + local st = sys.exec("/usr/libexec/istorec/openclawmgr.sh status 2>/dev/null"):gsub("%s+$", "") + running = (st == "running") + installed = (st == "running" or st == "stopped") + end local lock_running, lock_pid = installer_lock_running() local installing = (task.running and (task.op == "install" or task.op == "upgrade")) or lock_running if not installing and task.running and not installed and not running then installing = true end - local node_ver = sys.exec("/usr/libexec/istorec/openclawmgr.sh node_version 2>/dev/null"):gsub("%s+$", "") - local oc_ver = sys.exec("/usr/libexec/istorec/openclawmgr.sh openclaw_version 2>/dev/null"):gsub("%s+$", "") + local node_ver = "" + local oc_ver = "" + if base_dir ~= "" then + node_ver = sys.exec("/usr/libexec/istorec/openclawmgr.sh node_version 2>/dev/null"):gsub("%s+$", "") + oc_ver = sys.exec("/usr/libexec/istorec/openclawmgr.sh openclaw_version 2>/dev/null"):gsub("%s+$", "") + end local pid = running and get_running_pid() or "" if pid == "" and installing and lock_pid ~= "" then pid = lock_pid end local uptime_human = running and get_pid_uptime_human(pid) or "" - local base_url = "http://" .. get_host() .. ":" .. port .. configured_base_path(base_dir) + local base_url = "" + if base_dir ~= "" then + base_url = "http://" .. get_host() .. ":" .. port .. configured_base_path(base_dir) + end local token_url = base_url if token ~= "" then token_url = token_url .. "#token=" .. token @@ -357,19 +371,36 @@ function action_status() }) end -function action_log() +function action_ready() local sys = require "luci.sys" local util = require "luci.util" local uci = require "luci.model.uci".cursor() - local base_dir = uci:get("openclawmgr", "main", "base_dir") or "/opt/openclawmgr" - local log_file = base_dir .. "/log/installer.log" - local n = tonumber((require "luci.http").formvalue("n") or "") or 200 - if n < 10 then n = 10 end - if n > 2000 then n = 2000 end + local port = uci:get("openclawmgr", "main", "port") or "18789" + local base_dir = uci:get("openclawmgr", "main", "base_dir") or "" - local content = sys.exec("tail -n " .. n .. " " .. util.shellquote(log_file) .. " 2>/dev/null") or "" - write_json({ ok = true, log = content }) + if not port:match("^%d+$") then port = "18789" end + + if base_dir == "" then + write_json({ ok = true, ready = false, reason = "base_dir missing" }) + return + end + + local base_url = "http://127.0.0.1:" .. port .. configured_base_path(base_dir) + local cmd = string.format( + "curl -fsS -o /dev/null --connect-timeout 1 --max-time 2 -w '%%{http_code}' %s 2>/dev/null", + util.shellquote(base_url) + ) + local code = sys.exec(cmd):gsub("%s+$", "") + local n = tonumber(code) or 0 + local ready = (n >= 200 and n < 400) + + write_json({ + ok = true, + ready = ready, + http_code = code, + url = base_url, + }) end function action_apply_config() @@ -402,8 +433,8 @@ function action_config_data() return end - local body = read_json_body() or {} - local section = "main" + local body = read_json_body() or {} + local section = "main" local function bool_to_uci(value) return value and "1" or "0" @@ -513,7 +544,7 @@ function action_config_data() return end - local base_dir = uci:get("openclawmgr", "main", "base_dir") or "/opt/openclawmgr" + local base_dir = uci:get("openclawmgr", "main", "base_dir") or "" local port = uci:get("openclawmgr", "main", "port") or "18789" local blocks = model.blocks() local home = model.home() @@ -528,11 +559,13 @@ function action_config_data() end end - add_choice(base_dir) + if base_dir ~= "" then + add_choice(base_dir) + end for _, path in ipairs(paths or {}) do add_choice(path) end - add_choice(default_path or "/opt/openclawmgr") + add_choice(default_path or "/root/Configs/OpenClawMgr") local allowed_origins = {} for _, item in ipairs(uci:get_list("openclawmgr", "main", "allowed_origins") or {}) do @@ -558,6 +591,7 @@ function action_config_data() }, options = { base_dir_choices = choices, + suggested_base_dir = default_path or "", default_origin = default_allowed_origin(port), } }) @@ -665,22 +699,34 @@ function action_diag_info() local util = require "luci.util" local uci = require "luci.model.uci".cursor() - local base_dir = uci:get("openclawmgr", "main", "base_dir") or "/opt/openclawmgr" + local base_dir = uci:get("openclawmgr", "main", "base_dir") or "" local port = uci:get("openclawmgr", "main", "port") or "18789" local bind = uci:get("openclawmgr", "main", "bind") or "lan" local enabled = uci:get("openclawmgr", "main", "enabled") or "0" if not port:match("^%d+$") then port = "18789" end - local df_kb = sys.exec("df -kP " .. util.shellquote(base_dir) .. " 2>/dev/null | awk 'NR==2{print $4}'"):gsub("%s+", "") - local avail_mb = math.floor((tonumber(df_kb) or 0) / 1024) + local avail_mb = 0 + if base_dir ~= "" then + local df_kb = sys.exec("df -kP " .. util.shellquote(base_dir) .. " 2>/dev/null | awk 'NR==2{print $4}'"):gsub("%s+", "") + avail_mb = math.floor((tonumber(df_kb) or 0) / 1024) + end - local node_ver = sys.exec("/usr/libexec/istorec/openclawmgr.sh node_version 2>/dev/null"):gsub("%s+$", "") - local oc_ver = sys.exec("/usr/libexec/istorec/openclawmgr.sh openclaw_version 2>/dev/null"):gsub("%s+$", "") + local node_ver = "" + local oc_ver = "" + if base_dir ~= "" then + node_ver = sys.exec("/usr/libexec/istorec/openclawmgr.sh node_version 2>/dev/null"):gsub("%s+$", "") + oc_ver = sys.exec("/usr/libexec/istorec/openclawmgr.sh openclaw_version 2>/dev/null"):gsub("%s+$", "") + end - local has_node = sys.call("[ -x " .. util.shellquote(base_dir .. "/node/bin/node") .. " ] >/dev/null 2>&1") == 0 - local has_openclaw = sys.call("[ -x " .. util.shellquote(base_dir .. "/global/bin/openclaw") .. " ] >/dev/null 2>&1") == 0 - local has_config = sys.call("[ -f " .. util.shellquote(base_dir .. "/data/.openclaw/openclaw.json") .. " ] >/dev/null 2>&1") == 0 + local has_node = false + local has_openclaw = false + local has_config = false + if base_dir ~= "" then + has_node = sys.call("[ -x " .. util.shellquote(base_dir .. "/node/bin/node") .. " ] >/dev/null 2>&1") == 0 + has_openclaw = sys.call("[ -x " .. util.shellquote(base_dir .. "/global/bin/openclaw") .. " ] >/dev/null 2>&1") == 0 + has_config = sys.call("[ -f " .. util.shellquote(base_dir .. "/data/.openclaw/openclaw.json") .. " ] >/dev/null 2>&1") == 0 + end local default_gw = sys.exec("ip route 2>/dev/null | awk '/^default/{print $3; exit}' 2>/dev/null"):gsub("%s+", "") @@ -709,9 +755,9 @@ function action_diag_info() has_config = has_config, procd_pid = pid, running = running, - url = "http://" .. get_host() .. ":" .. port .. configured_base_path(base_dir), - }) -end + url = (base_dir ~= "" and ("http://" .. get_host() .. ":" .. port .. configured_base_path(base_dir)) or ""), + }) + end function action_diag_run() local http = require "luci.http" diff --git a/luci-app-openclawmgr/luasrc/view/openclawmgr/app.htm b/luci-app-openclawmgr/luasrc/view/openclawmgr/app.htm index 2706524d..080f5071 100644 --- a/luci-app-openclawmgr/luasrc/view/openclawmgr/app.htm +++ b/luci-app-openclawmgr/luasrc/view/openclawmgr/app.htm @@ -1,13 +1,15 @@ <%+header%> + +<%+tasks/embed%>