mirror of
https://github.com/kenzok8/small-package
synced 2025-01-08 13:27:36 +08:00
update 2024-09-20 00:24:06
This commit is contained in:
parent
a804cd2f0c
commit
0079a9d6f9
@ -1,7 +1,7 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=luci-app-openclash
|
||||
PKG_VERSION:=0.46.014
|
||||
PKG_VERSION:=0.46.031
|
||||
PKG_RELEASE:=beta
|
||||
PKG_MAINTAINER:=vernesong <https://github.com/vernesong/OpenClash>
|
||||
|
||||
@ -64,7 +64,6 @@ define Build/Prepare
|
||||
cp -f "$(PKG_BUILD_DIR)/root/etc/openclash/custom/openclash_custom_domain_dns.list" "$(PKG_BUILD_DIR)/root/usr/share/openclash/backup/openclash_custom_domain_dns.list" >/dev/null 2>&1
|
||||
cp -f "$(PKG_BUILD_DIR)/root/etc/openclash/custom/openclash_custom_domain_dns_policy.list" "$(PKG_BUILD_DIR)/root/usr/share/openclash/backup/openclash_custom_domain_dns_policy.list" >/dev/null 2>&1
|
||||
cp -f "$(PKG_BUILD_DIR)/root/etc/openclash/custom/openclash_custom_fallback_filter.yaml" "$(PKG_BUILD_DIR)/root/usr/share/openclash/backup/openclash_custom_fallback_filter.yaml" >/dev/null 2>&1
|
||||
cp -f "$(PKG_BUILD_DIR)/root/etc/openclash/custom/openclash_custom_netflix_domains.list" "$(PKG_BUILD_DIR)/root/usr/share/openclash/backup/openclash_custom_netflix_domains.list" >/dev/null 2>&1
|
||||
cp -f "$(PKG_BUILD_DIR)/root/etc/openclash/custom/openclash_force_sniffing_domain.yaml" "$(PKG_BUILD_DIR)/root/usr/share/openclash/backup/openclash_force_sniffing_domain.yaml" >/dev/null 2>&1
|
||||
cp -f "$(PKG_BUILD_DIR)/root/etc/openclash/custom/openclash_sniffing_domain_filter.yaml" "$(PKG_BUILD_DIR)/root/usr/share/openclash/backup/openclash_sniffing_domain_filter.yaml" >/dev/null 2>&1
|
||||
cp -f "$(PKG_BUILD_DIR)/root/etc/openclash/custom/openclash_sniffing_ports_filter.yaml" "$(PKG_BUILD_DIR)/root/usr/share/openclash/backup/openclash_sniffing_ports_filter.yaml" >/dev/null 2>&1
|
||||
@ -132,11 +131,9 @@ define Package/$(PKG_NAME)/postrm
|
||||
rm -rf ${dnsmasqconfdir}/dnsmasq_openclash_custom_domain.conf >/dev/null 2>&1
|
||||
rm -rf ${dnsmasqconfdir}/dnsmasq_openclash_chnroute_pass.conf >/dev/null 2>&1
|
||||
rm -rf ${dnsmasqconfdir}/dnsmasq_openclash_chnroute6_pass.conf >/dev/null 2>&1
|
||||
rm -rf ${dnsmasqconfdir}/dnsmasq_accelerated-domains.china.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_*_region>/dev/null 2>&1
|
||||
sed -i '/OpenClash Append/,/OpenClash Append End/d' "/usr/lib/lua/luci/model/network.lua" >/dev/null 2>&1
|
||||
sed -i '/.*kB maximum content size*/c\HTTP_MAX_CONTENT = 1024*100 -- 100 kB maximum content size' /usr/lib/lua/luci/http.lua >/dev/null 2>&1
|
||||
sed -i '/.*kB maximum content size*/c\export let HTTP_MAX_CONTENT = 1024*100; // 100 kB maximum content size' /usr/share/ucode/luci/http.uc >/dev/null 2>&1
|
||||
|
@ -32,10 +32,6 @@ function index()
|
||||
entry({"admin", "services", "openclash", "coreupdate"},call("action_coreupdate"))
|
||||
entry({"admin", "services", "openclash", "flush_fakeip_cache"}, call("action_flush_fakeip_cache"))
|
||||
entry({"admin", "services", "openclash", "download_rule"}, call("action_download_rule"))
|
||||
entry({"admin", "services", "openclash", "download_netflix_domains"}, call("action_download_netflix_domains"))
|
||||
entry({"admin", "services", "openclash", "download_disney_domains"}, call("action_download_disney_domains"))
|
||||
entry({"admin", "services", "openclash", "catch_netflix_domains"}, call("action_catch_netflix_domains"))
|
||||
entry({"admin", "services", "openclash", "write_netflix_domains"}, call("action_write_netflix_domains"))
|
||||
entry({"admin", "services", "openclash", "restore"}, call("action_restore_config"))
|
||||
entry({"admin", "services", "openclash", "backup"}, call("action_backup"))
|
||||
entry({"admin", "services", "openclash", "backup_ex_core"}, call("action_backup_ex_core"))
|
||||
@ -103,18 +99,17 @@ local json = require "luci.jsonc"
|
||||
local uci = require("luci.model.uci").cursor()
|
||||
local datatype = require "luci.cbi.datatypes"
|
||||
local opkg
|
||||
local device_name = uci:get("system", "@system[0]", "hostname")
|
||||
local device_arh = luci.sys.exec("uname -m |tr -d '\n'")
|
||||
|
||||
if pcall(require, "luci.model.ipkg") then
|
||||
opkg = require "luci.model.ipkg"
|
||||
end
|
||||
|
||||
local core_path_mode = uci:get("openclash", "config", "small_flash_memory")
|
||||
if core_path_mode ~= "1" then
|
||||
dev_core_path="/etc/openclash/core/clash"
|
||||
tun_core_path="/etc/openclash/core/clash_tun"
|
||||
meta_core_path="/etc/openclash/core/clash_meta"
|
||||
else
|
||||
dev_core_path="/tmp/etc/openclash/core/clash"
|
||||
tun_core_path="/tmp/etc/openclash/core/clash_tun"
|
||||
meta_core_path="/tmp/etc/openclash/core/clash_meta"
|
||||
end
|
||||
|
||||
@ -126,10 +121,6 @@ local function is_web()
|
||||
return luci.sys.call("pidof clash >/dev/null") == 0
|
||||
end
|
||||
|
||||
local function restricted_mode()
|
||||
return uci:get("openclash", "config", "restricted_mode")
|
||||
end
|
||||
|
||||
local function is_watchdog()
|
||||
return process_status("openclash_watchdog.sh")
|
||||
end
|
||||
@ -158,14 +149,6 @@ local function lhie1()
|
||||
return os.date("%Y-%m-%d %H:%M:%S",fs.mtime("/usr/share/openclash/res/lhie1.yaml"))
|
||||
end
|
||||
|
||||
local function ConnersHua()
|
||||
return os.date("%Y-%m-%d %H:%M:%S",fs.mtime("/usr/share/openclash/res/ConnersHua.yaml"))
|
||||
end
|
||||
|
||||
local function ConnersHua_return()
|
||||
return os.date("%Y-%m-%d %H:%M:%S",fs.mtime("/usr/share/openclash/res/ConnersHua_return.yaml"))
|
||||
end
|
||||
|
||||
local function chnroute()
|
||||
return os.date("%Y-%m-%d %H:%M:%S",fs.mtime("/etc/openclash/china_ip_route.ipset"))
|
||||
end
|
||||
@ -238,29 +221,13 @@ local function coremodel()
|
||||
end
|
||||
|
||||
local function check_core()
|
||||
if not nixio.fs.access(dev_core_path) and not nixio.fs.access(tun_core_path) and not nixio.fs.access(meta_core_path) then
|
||||
if not nixio.fs.access(meta_core_path) then
|
||||
return "0"
|
||||
else
|
||||
return "1"
|
||||
end
|
||||
end
|
||||
|
||||
local function corecv()
|
||||
if not nixio.fs.access(dev_core_path) then
|
||||
return "0"
|
||||
else
|
||||
return luci.sys.exec(string.format("%s -v 2>/dev/null |awk -F ' ' '{print $2}'", dev_core_path))
|
||||
end
|
||||
end
|
||||
|
||||
local function coretuncv()
|
||||
if not nixio.fs.access(tun_core_path) then
|
||||
return "0"
|
||||
else
|
||||
return luci.sys.exec(string.format("%s -v 2>/dev/null |awk -F ' ' '{print $2}'", tun_core_path))
|
||||
end
|
||||
end
|
||||
|
||||
local function coremetacv()
|
||||
if not nixio.fs.access(meta_core_path) then
|
||||
return "0"
|
||||
@ -271,10 +238,8 @@ end
|
||||
|
||||
local function corelv()
|
||||
luci.sys.call("bash /usr/share/openclash/clash_version.sh")
|
||||
local core_lv = luci.sys.exec("sed -n 1p /tmp/clash_last_version 2>/dev/null")
|
||||
local core_tun_lv = luci.sys.exec("sed -n 2p /tmp/clash_last_version 2>/dev/null")
|
||||
local core_meta_lv = luci.sys.exec("sed -n 3p /tmp/clash_last_version 2>/dev/null")
|
||||
return core_lv .. "," .. core_tun_lv .. "," .. core_meta_lv
|
||||
return core_meta_lv
|
||||
end
|
||||
|
||||
local function opcv()
|
||||
@ -354,13 +319,9 @@ 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 'Dev' '%s' >/dev/null 2>&1 &", cdn_url))
|
||||
luci.sys.call(string.format("bash /usr/share/openclash/openclash_core.sh 'TUN' '%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 'Dev' >/dev/null 2>&1 &")
|
||||
luci.sys.call("bash /usr/share/openclash/openclash_core.sh 'TUN' >/dev/null 2>&1 &")
|
||||
luci.sys.call("bash /usr/share/openclash/openclash_core.sh 'Meta' >/dev/null 2>&1 &")
|
||||
end
|
||||
|
||||
@ -372,16 +333,6 @@ function download_rule()
|
||||
return state
|
||||
end
|
||||
|
||||
function download_disney_domains()
|
||||
local state = luci.sys.call(string.format('/usr/share/openclash/openclash_download_rule_list.sh "%s" >/dev/null 2>&1',"disney_domains"))
|
||||
return state
|
||||
end
|
||||
|
||||
function download_netflix_domains()
|
||||
local state = luci.sys.call(string.format('/usr/share/openclash/openclash_download_rule_list.sh "%s" >/dev/null 2>&1',"netflix_domains"))
|
||||
return state
|
||||
end
|
||||
|
||||
function action_flush_fakeip_cache()
|
||||
local state = 0
|
||||
if is_running() then
|
||||
@ -751,7 +702,7 @@ function action_rule_mode()
|
||||
local daip = daip()
|
||||
local dase = dase() or ""
|
||||
local cn_port = cn_port()
|
||||
core_type = uci:get("openclash", "config", "core_type") or "Dev"
|
||||
core_type = uci:get("openclash", "config", "core_type") or "Meta"
|
||||
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)))
|
||||
if info then
|
||||
@ -773,9 +724,7 @@ function action_switch_rule_mode()
|
||||
local daip = daip()
|
||||
local dase = dase() or ""
|
||||
local cn_port = cn_port()
|
||||
local core_type = uci:get("openclash", "config", "core_type") or "Dev"
|
||||
mode = luci.http.formvalue("rule_mode")
|
||||
if mode == script and core_type ~= "TUN" then luci.http.status(500, "Switch Faild") return end
|
||||
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))
|
||||
if info ~= "" then
|
||||
@ -1081,8 +1030,7 @@ function action_status()
|
||||
db_forward_ssl = db_foward_ssl(),
|
||||
web = is_web(),
|
||||
cn_port = cn_port(),
|
||||
restricted_mode = restricted_mode(),
|
||||
core_type = uci:get("openclash", "config", "core_type") or "Dev";
|
||||
core_type = uci:get("openclash", "config", "core_type") or "Meta";
|
||||
})
|
||||
end
|
||||
|
||||
@ -1090,8 +1038,6 @@ function action_state()
|
||||
luci.http.prepare_content("application/json")
|
||||
luci.http.write_json({
|
||||
lhie1 = lhie1(),
|
||||
ConnersHua = ConnersHua(),
|
||||
ConnersHua_return = ConnersHua_return(),
|
||||
ipdb = ipdb(),
|
||||
geosite = geosite(),
|
||||
historychecktime = historychecktime(),
|
||||
@ -1117,8 +1063,6 @@ end
|
||||
function action_update()
|
||||
luci.http.prepare_content("application/json")
|
||||
luci.http.write_json({
|
||||
corecv = corecv(),
|
||||
coretuncv = coretuncv(),
|
||||
coremetacv = coremetacv(),
|
||||
coremodel = coremodel(),
|
||||
opcv = opcv(),
|
||||
@ -1198,20 +1142,6 @@ function action_download_rule()
|
||||
})
|
||||
end
|
||||
|
||||
function action_download_netflix_domains()
|
||||
luci.http.prepare_content("application/json")
|
||||
luci.http.write_json({
|
||||
rule_download_status = download_netflix_domains();
|
||||
})
|
||||
end
|
||||
|
||||
function action_download_disney_domains()
|
||||
luci.http.prepare_content("application/json")
|
||||
luci.http.write_json({
|
||||
rule_download_status = download_disney_domains();
|
||||
})
|
||||
end
|
||||
|
||||
function action_refresh_log()
|
||||
luci.http.prepare_content("application/json")
|
||||
local logfile="/tmp/openclash.log"
|
||||
@ -1326,38 +1256,6 @@ function split(str,delimiter)
|
||||
return arr
|
||||
end
|
||||
|
||||
function action_write_netflix_domains()
|
||||
local domains = luci.http.formvalue("domains")
|
||||
local dustom_file = "/etc/openclash/custom/openclash_custom_netflix_domains.list"
|
||||
local file = io.open(dustom_file, "a+")
|
||||
file:seek("set")
|
||||
local domain = file:read("*a")
|
||||
for v, k in pairs(split(domains,"\n")) do
|
||||
if not string.find(domain,k,1,true) then
|
||||
file:write(k.."\n")
|
||||
end
|
||||
end
|
||||
file:close()
|
||||
return
|
||||
end
|
||||
|
||||
function action_catch_netflix_domains()
|
||||
local cmd = "/usr/share/openclash/openclash_debug_getcon.lua 'netflix-nflxvideo'"
|
||||
luci.http.prepare_content("text/plain")
|
||||
local util = io.popen(cmd)
|
||||
if util and util ~= "" then
|
||||
while true do
|
||||
local ln = util:read("*l")
|
||||
if not ln then break end
|
||||
luci.http.write(ln)
|
||||
luci.http.write(",")
|
||||
end
|
||||
util:close()
|
||||
return
|
||||
end
|
||||
luci.http.status(500, "Bad address")
|
||||
end
|
||||
|
||||
function action_diag_connection()
|
||||
local addr = luci.http.formvalue("addr")
|
||||
if addr and (datatype.hostname(addr) or datatype.ipaddr(addr)) then
|
||||
@ -1425,8 +1323,8 @@ function action_backup()
|
||||
local reader = ltn12_popen("tar -C '/etc/openclash/' -cz . 2>/dev/null")
|
||||
|
||||
luci.http.header(
|
||||
'Content-Disposition', 'attachment; filename="Backup-OpenClash-%s.tar.gz"' %{
|
||||
os.date("%Y-%m-%d-%H-%M-%S")
|
||||
'Content-Disposition', 'attachment; filename="Backup-OpenClash-%s-%s-%s.tar.gz"' %{
|
||||
device_name, device_arh, os.date("%Y-%m-%d-%H-%M-%S")
|
||||
})
|
||||
|
||||
luci.http.prepare_content("application/x-targz")
|
||||
@ -1439,8 +1337,8 @@ function action_backup_ex_core()
|
||||
local reader = ltn12_popen("echo 'core' > /tmp/oc_exclude.txt && tar -C '/etc/openclash/' -X '/tmp/oc_exclude.txt' -cz . 2>/dev/null")
|
||||
|
||||
luci.http.header(
|
||||
'Content-Disposition', 'attachment; filename="Backup-OpenClash-Exclude-Cores-%s.tar.gz"' %{
|
||||
os.date("%Y-%m-%d-%H-%M-%S")
|
||||
'Content-Disposition', 'attachment; filename="Backup-OpenClash-Exclude-Cores-%s-%s-%s.tar.gz"' %{
|
||||
device_name, device_arh, os.date("%Y-%m-%d-%H-%M-%S")
|
||||
})
|
||||
|
||||
luci.http.prepare_content("application/x-targz")
|
||||
@ -1452,8 +1350,8 @@ function action_backup_only_config()
|
||||
local reader = ltn12_popen("tar -C '/etc/openclash' -cz './config' 2>/dev/null")
|
||||
|
||||
luci.http.header(
|
||||
'Content-Disposition', 'attachment; filename="Backup-OpenClash-Config-%s.tar.gz"' %{
|
||||
os.date("%Y-%m-%d-%H-%M-%S")
|
||||
'Content-Disposition', 'attachment; filename="Backup-OpenClash-Config-%s-%s-%s.tar.gz"' %{
|
||||
device_name, device_arh, os.date("%Y-%m-%d-%H-%M-%S")
|
||||
})
|
||||
|
||||
luci.http.prepare_content("application/x-targz")
|
||||
@ -1464,8 +1362,8 @@ function action_backup_only_core()
|
||||
local reader = ltn12_popen("tar -C '/etc/openclash' -cz './core' 2>/dev/null")
|
||||
|
||||
luci.http.header(
|
||||
'Content-Disposition', 'attachment; filename="Backup-OpenClash-Cores-%s.tar.gz"' %{
|
||||
os.date("%Y-%m-%d-%H-%M-%S")
|
||||
'Content-Disposition', 'attachment; filename="Backup-OpenClash-Cores-%s-%s-%s.tar.gz"' %{
|
||||
device_name, device_arh, os.date("%Y-%m-%d-%H-%M-%S")
|
||||
})
|
||||
|
||||
luci.http.prepare_content("application/x-targz")
|
||||
@ -1476,8 +1374,8 @@ function action_backup_only_rule()
|
||||
local reader = ltn12_popen("tar -C '/etc/openclash' -cz './rule_provider' 2>/dev/null")
|
||||
|
||||
luci.http.header(
|
||||
'Content-Disposition', 'attachment; filename="Backup-OpenClash-Only-Rule-Provider-%s.tar.gz"' %{
|
||||
os.date("%Y-%m-%d-%H-%M-%S")
|
||||
'Content-Disposition', 'attachment; filename="Backup-OpenClash-Only-Rule-Provider-%s-%s-%s.tar.gz"' %{
|
||||
device_name, device_arh, os.date("%Y-%m-%d-%H-%M-%S")
|
||||
})
|
||||
|
||||
luci.http.prepare_content("application/x-targz")
|
||||
@ -1488,8 +1386,8 @@ function action_backup_only_proxy()
|
||||
local reader = ltn12_popen("tar -C '/etc/openclash' -cz './proxy_provider' 2>/dev/null")
|
||||
|
||||
luci.http.header(
|
||||
'Content-Disposition', 'attachment; filename="Backup-OpenClash-Proxy-Provider-%s.tar.gz"' %{
|
||||
os.date("%Y-%m-%d-%H-%M-%S")
|
||||
'Content-Disposition', 'attachment; filename="Backup-OpenClash-Proxy-Provider-%s-%s-%s.tar.gz"' %{
|
||||
device_name, device_arh, os.date("%Y-%m-%d-%H-%M-%S")
|
||||
})
|
||||
|
||||
luci.http.prepare_content("application/x-targz")
|
||||
|
@ -18,6 +18,7 @@ bold_off = [[</strong>]]
|
||||
local op_mode = string.sub(luci.sys.exec('uci get openclash.config.operation_mode 2>/dev/null'),0,-2)
|
||||
if not op_mode then op_mode = "redir-host" end
|
||||
local lan_int_name = uci:get("openclash", "config", "lan_interface_name") or "0"
|
||||
|
||||
local lan_ip
|
||||
if lan_int_name == "0" then
|
||||
lan_ip = SYS.exec("uci -q get network.lan.ipaddr |awk -F '/' '{print $1}' 2>/dev/null |tr -d '\n'")
|
||||
@ -146,26 +147,9 @@ o = s:taboption("dns", Flag, "enable_custom_dns", font_red..bold_on..translate("
|
||||
o.description = font_red..bold_on..translate("Set OpenClash Upstream DNS Resolve Server")..bold_off..font_off
|
||||
o.default = 0
|
||||
|
||||
---- Fallback DNS Proxy Group
|
||||
o = s:taboption("dns", Value, "proxy_dns_group", font_red..bold_on..translate("Fallback DNS Proxy Group (Support Regex)")..bold_off..font_off)
|
||||
o.description = translate("Group Use For Proxy The Fallback DNS, Preventing DNS Lookup Failures")..translate("(Only Meta Core)")
|
||||
local groupnames,filename
|
||||
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
|
||||
o:value(groupname)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
o:value("DIRECT")
|
||||
o:value("Disable", translate("Disable"))
|
||||
o.default = "Disable"
|
||||
o.rempty = false
|
||||
o = s:taboption("dns", Flag, "enable_respect_rules", font_red..bold_on..translate("Respect Rules")..bold_off..font_off)
|
||||
o.description = font_red..bold_on..translate("Whether or not The Connection to the DNS Server Follow the Rules in Config")..bold_off..font_off
|
||||
o.default = 0
|
||||
|
||||
o = s:taboption("dns", Flag, "append_wan_dns", translate("Append Upstream DNS"))
|
||||
o.description = translate("Append The Upstream Assigned DNS And Gateway IP To The Nameserver")
|
||||
@ -225,6 +209,13 @@ if op_mode == "fake-ip" then
|
||||
o = s:taboption("dns", Flag, "custom_fakeip_filter", translate("Fake-IP-Filter"))
|
||||
o.default = 0
|
||||
|
||||
o = s:taboption("dns", ListValue, "custom_fakeip_filter_mode", translate("Fake-IP-Filter-Mode"))
|
||||
o.description = translate("Fake-IP is not returned if the matching succeeds when blacklist mode or Fake-IP is returned if the matching succeeds when whitelist mode")
|
||||
o.default = "blacklist"
|
||||
o:value("blacklist", translate("Blacklist Mode"))
|
||||
o:value("whitelist", translate("Whitelist Mode"))
|
||||
o:depends("custom_fakeip_filter", "1")
|
||||
|
||||
custom_fake_black = s:taboption("dns", Value, "custom_fake_filter")
|
||||
custom_fake_black.template = "cbi/tvalue"
|
||||
custom_fake_black.description = translate("Domain Names In The List Do Not Return Fake-IP, One rule per line")
|
||||
@ -432,7 +423,7 @@ o.default = 0
|
||||
custom_rules = s:taboption("rules", Value, "custom_rules")
|
||||
custom_rules:depends("enable_custom_clash_rules", 1)
|
||||
custom_rules.template = "cbi/tvalue"
|
||||
custom_rules.description = font_green..bold_on..translate("(Priority)")..bold_off..font_off.." "..translate("Custom Rules Here, For More Go:").." ".."<a href='javascript:void(0)' onclick='javascript:return winOpen(\"https://lancellc.gitbook.io/clash/clash-config-file/rules\")'>https://lancellc.gitbook.io/clash/clash-config-file/rules</a>".." ,"..translate("IP To CIDR:").." ".."<a href='javascript:void(0)' onclick='javascript:return winOpen(\"http://ip2cidr.com\")'>http://ip2cidr.com</a>"
|
||||
custom_rules.description = font_green..bold_on..translate("(Priority)")..bold_off..font_off.." "..translate("Custom Rules Here, For More Go:").." ".."<a href='javascript:void(0)' onclick='javascript:return winOpen(\"https://wiki.metacubex.one/config/rules/\")'>https://wiki.metacubex.one/config/rules/</a>".." ,"..translate("IP To CIDR:").." ".."<a href='javascript:void(0)' onclick='javascript:return winOpen(\"http://ip2cidr.com\")'>http://ip2cidr.com</a>"
|
||||
custom_rules.rows = 20
|
||||
custom_rules.wrap = "off"
|
||||
|
||||
@ -452,7 +443,7 @@ end
|
||||
custom_rules_2 = s:taboption("rules", Value, "custom_rules_2")
|
||||
custom_rules_2:depends("enable_custom_clash_rules", 1)
|
||||
custom_rules_2.template = "cbi/tvalue"
|
||||
custom_rules_2.description = font_green..bold_on..translate("(Extended)")..bold_off..font_off.." "..translate("Custom Rules Here, For More Go:").." ".."<a href='javascript:void(0)' onclick='javascript:return winOpen(\"https://lancellc.gitbook.io/clash/clash-config-file/rules\")'>https://lancellc.gitbook.io/clash/clash-config-file/rules</a>".." ,"..translate("IP To CIDR:").." ".."<a href='javascript:void(0)' onclick='javascript:return winOpen(\"http://ip2cidr.com\")'>http://ip2cidr.com</a>"
|
||||
custom_rules_2.description = font_green..bold_on..translate("(Extended)")..bold_off..font_off.." "..translate("Custom Rules Here, For More Go:").." ".."<a href='javascript:void(0)' onclick='javascript:return winOpen(\"https://wiki.metacubex.one/config/rules/\")'>https://wiki.metacubex.one/config/rules/</a>".." ,"..translate("IP To CIDR:").." ".."<a href='javascript:void(0)' onclick='javascript:return winOpen(\"http://ip2cidr.com\")'>http://ip2cidr.com</a>"
|
||||
custom_rules_2.rows = 20
|
||||
custom_rules_2.wrap = "off"
|
||||
|
||||
@ -572,10 +563,6 @@ o = ss:option(DummyValue, "rule_name", translate("Other Rules Name"))
|
||||
function o.cfgvalue(...)
|
||||
if Value.cfgvalue(...) == "lhie1" then
|
||||
return translate("lhie1 Rules")
|
||||
elseif Value.cfgvalue(...) == "ConnersHua" then
|
||||
return translate("ConnersHua(Provider-type) Rules")
|
||||
elseif Value.cfgvalue(...) == "ConnersHua_return" then
|
||||
return translate("ConnersHua Return Rules")
|
||||
else
|
||||
return translate("None")
|
||||
end
|
||||
|
@ -177,6 +177,12 @@ o:value("true", translate("Enable"))
|
||||
o.default = "false"
|
||||
o:depends("sub_convert", "1")
|
||||
|
||||
---- custom params
|
||||
o = s:option(DynamicList, "custom_params", translate("Custom Params"))
|
||||
o.description = font_red..bold_on..translate("eg: \"rename=\\s+([2-9])[xX]@ (HIGH:$1)\"")..bold_off..font_off
|
||||
o.rmempty = false
|
||||
o:depends("sub_convert", "1")
|
||||
|
||||
---- key
|
||||
o = s:option(DynamicList, "keyword", font_red..bold_on..translate("Keyword Match")..bold_off..font_off)
|
||||
o.description = font_red..bold_on..translate("eg: hk or tw&bgp")..bold_off..font_off
|
||||
|
@ -79,6 +79,20 @@ o:depends("type", "https")
|
||||
o.rmempty = false
|
||||
o.default = o.disbled
|
||||
|
||||
---- ECS Subnet
|
||||
o = s:option(Value, "ecs_subnet", translate("ECS Subnet"),translate("Specify the ECS Subnet Address")..translate("(Only Meta Core)"))
|
||||
o:depends("type", "https")
|
||||
o.rmempty = true
|
||||
o.datatype = "ipaddr"
|
||||
o:value("1.1.1.1/24")
|
||||
|
||||
---- ECS Override
|
||||
o = s:option(Flag, "ecs_override", translate("ECS Override"),translate("Override the ECS Subnet Address")..translate("(Only Meta Core)"))
|
||||
o:depends("type", "https")
|
||||
o.rmempty = false
|
||||
o.datatype = "ipaddr"
|
||||
o.default = o.disbled
|
||||
|
||||
---- Proxy group
|
||||
o = s:option(Value, "specific_group", translate("Specific Group (Support Regex)"))
|
||||
o.description = translate("Group Use For Proxy The DNS")..translate("(Only Meta Core)")
|
||||
|
@ -72,12 +72,9 @@ if groupnames ~= 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:value("ConnersHua", translate("ConnersHua(Provider-type) Rules"))
|
||||
o:value("ConnersHua_return", translate("ConnersHua Return Rules"))
|
||||
|
||||
o = s:option(ListValue, "GlobalTV", translate("GlobalTV"))
|
||||
o:depends("rule_name", "lhie1")
|
||||
o:depends("rule_name", "ConnersHua")
|
||||
o.rmempty = true
|
||||
for groupname in string.gmatch(groupnames, "([^'##\n']+)##") do
|
||||
if groupname ~= nil and groupname ~= "" then
|
||||
@ -89,7 +86,6 @@ o:value("REJECT")
|
||||
|
||||
o = s:option(ListValue, "AsianTV", translate("AsianTV"))
|
||||
o:depends("rule_name", "lhie1")
|
||||
o:depends("rule_name", "ConnersHua")
|
||||
o.rmempty = true
|
||||
for groupname in string.gmatch(groupnames, "([^'##\n']+)##") do
|
||||
if groupname ~= nil and groupname ~= "" then
|
||||
@ -101,8 +97,6 @@ o:value("REJECT")
|
||||
|
||||
o = s:option(ListValue, "Proxy", translate("Proxy"))
|
||||
o:depends("rule_name", "lhie1")
|
||||
o:depends("rule_name", "ConnersHua")
|
||||
o:depends("rule_name", "ConnersHua_return")
|
||||
o.rmempty = true
|
||||
for groupname in string.gmatch(groupnames, "([^'##\n']+)##") do
|
||||
if groupname ~= nil and groupname ~= "" then
|
||||
@ -389,7 +383,6 @@ o:value("REJECT")
|
||||
|
||||
o = s:option(ListValue, "Domestic", translate("Domestic"))
|
||||
o:depends("rule_name", "lhie1")
|
||||
o:depends("rule_name", "ConnersHua")
|
||||
o.rmempty = true
|
||||
for groupname in string.gmatch(groupnames, "([^'##\n']+)##") do
|
||||
if groupname ~= nil and groupname ~= "" then
|
||||
@ -401,8 +394,6 @@ o:value("REJECT")
|
||||
|
||||
o = s:option(ListValue, "Others", translate("Others"))
|
||||
o:depends("rule_name", "lhie1")
|
||||
o:depends("rule_name", "ConnersHua")
|
||||
o:depends("rule_name", "ConnersHua_return")
|
||||
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 string.gmatch(groupnames, "([^'##\n']+)##") do
|
||||
|
@ -108,6 +108,45 @@ o = s:option(Value, "health_check_interval", translate("Health Check Interval(s)
|
||||
o.default = "300"
|
||||
o.rmempty = false
|
||||
|
||||
-- [[ 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"..
|
||||
"# header:\n"..
|
||||
"# User-Agent:\n"..
|
||||
"# - \"Clash/v1.18.0\"\n"..
|
||||
"# - \"mihomo/1.18.3\"\n"..
|
||||
"# Authorization:\n"..
|
||||
"# - \"token 1231231\"\n"..
|
||||
"# override:\n"..
|
||||
"# skip-cert-verify: true\n"..
|
||||
"# additional-prefix: \"provider1 prefix |\"\n"..
|
||||
"# additional-suffix: \"| provider1 suffix\"\n"..
|
||||
"# proxy-name:\n"..
|
||||
"# - pattern: \"IPLC-(.*?)倍\"\n"..
|
||||
"# target: \"iplc x $1\"\n"..
|
||||
"# exclude-type: \"ss|http\""
|
||||
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
|
||||
|
||||
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.rmempty = true
|
||||
@ -141,4 +180,5 @@ o.write = function()
|
||||
end
|
||||
|
||||
m:append(Template("openclash/toolbar_show"))
|
||||
m:append(Template("openclash/config_editor"))
|
||||
return m
|
||||
|
@ -69,9 +69,10 @@ o:value("classical")
|
||||
|
||||
o = s:option(ListValue, "format", translate("Rule Format")..translate("(TUN&Meta Core)"))
|
||||
o.rmempty = true
|
||||
o.description = translate("Choose The Rule File Format, For More Info:").." ".."<a href='javascript:void(0)' onclick='javascript:return winOpen(\"https://github.com/Dreamacro/clash/wiki/Premium%3A-Rule-Providers\")'>https://github.com/Dreamacro/clash/wiki/</a>"
|
||||
o.description = translate("Choose The Rule File Format, For More Info:").." ".."<a href='javascript:void(0)' onclick='javascript:return winOpen(\"https://wiki.metacubex.one/config/rule-providers/content/\")'>https://wiki.metacubex.one/config/rule-providers/content/</a>"
|
||||
o:value("yaml")
|
||||
o:value("text")
|
||||
o:value("mrs")
|
||||
|
||||
o = s:option(ListValue, "path", translate("Rule Providers Path"))
|
||||
o.description = translate("Update Your Rule Providers File From Config Luci Page")
|
||||
|
@ -10,8 +10,7 @@ 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:").." ConnersHua ( https://github.com/DivineEngine/Profiles )<br/>"..
|
||||
translate("Rule Project:").." lhie1 ( https://github.com/dler-io/Rules )<br/>"..
|
||||
m.description=translate("Rule Project:").." lhie1 ( https://github.com/dler-io/Rules )<br/>"..
|
||||
translate("Rule Project:").." ACL4SSR ( https://github.com/ACL4SSR/ACL4SSR/tree/master )"
|
||||
m.reset = false
|
||||
m.submit = false
|
||||
|
@ -42,7 +42,7 @@ function IsYmlFile(e)
|
||||
end
|
||||
|
||||
-- [[ Edit Game Rule ]] --
|
||||
s = m:section(TypedSection, "game_config", translate("Game Rules Append (Only TUN & Meta Core Support)"))
|
||||
s = m:section(TypedSection, "game_config", translate("Game Rules Append"))
|
||||
s.anonymous = true
|
||||
s.addremove = true
|
||||
s.sortable = true
|
||||
@ -118,7 +118,7 @@ o:value("REJECT")
|
||||
o.rmempty = true
|
||||
|
||||
-- [[ Edit Other Rule Provider ]] --
|
||||
s = m:section(TypedSection, "rule_provider_config", translate("Other Rule Providers Append (Only TUN & Meta Core Support)"))
|
||||
s = m:section(TypedSection, "rule_provider_config", translate("Other Rule Providers Append"))
|
||||
s.anonymous = true
|
||||
s.addremove = true
|
||||
s.sortable = true
|
||||
@ -204,7 +204,7 @@ 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 (Only TUN & Meta Core Support)"))
|
||||
s = m:section(TypedSection, "rule_providers", translate("Custom Rule Providers Append"))
|
||||
s.anonymous = true
|
||||
s.addremove = true
|
||||
s.sortable = true
|
||||
|
@ -140,7 +140,7 @@ o:value("trojan", translate("trojan"))
|
||||
o:value("vless", translate("Vless ")..translate("(Only Meta Core)"))
|
||||
o:value("hysteria", translate("Hysteria ")..translate("(Only Meta Core)"))
|
||||
o:value("hysteria2", translate("Hysteria2 ")..translate("(Only Meta Core)"))
|
||||
o:value("wireguard", translate("WireGuard")..translate("(TUN&Meta Core)"))
|
||||
o:value("wireguard", translate("WireGuard")..translate("(Only Meta Core)"))
|
||||
o:value("tuic", translate("Tuic")..translate("(Only Meta Core)"))
|
||||
o:value("snell", translate("Snell"))
|
||||
o:value("socks5", translate("Socks5"))
|
||||
|
@ -38,7 +38,8 @@ m.description = translate("Note: To restore the default configuration, try acces
|
||||
"<br/>"..font_green..translate("Note: Game proxy please use nodes except VMess")..font_off..
|
||||
"<br/>"..font_green..translate("Note: If you need to perform client access control in Fake-IP mode, please change the DNS hijacking mode to firewall forwarding")..font_off..
|
||||
"<br/>"..translate("Note: The default proxy routes local traffic, BT, PT download, etc., please use Redir-Host mode as much as possible and pay attention to traffic avoidance")..
|
||||
"<br/>"..translate("Note: If the connection is abnormal, please follow the steps on this page to check first")..": ".."<a href='javascript:void(0)' onclick='javascript:return winOpen(\"https://github.com/vernesong/OpenClash/wiki/%E7%BD%91%E7%BB%9C%E8%BF%9E%E6%8E%A5%E5%BC%82%E5%B8%B8%E6%97%B6%E6%8E%92%E6%9F%A5%E5%8E%9F%E5%9B%A0\")'>"..translate("Click to the page").."</a>"
|
||||
"<br/>"..translate("Note: If the connection is abnormal, please follow the steps on this page to check first")..": ".."<a href='javascript:void(0)' onclick='javascript:return winOpen(\"https://github.com/vernesong/OpenClash/wiki/%E7%BD%91%E7%BB%9C%E8%BF%9E%E6%8E%A5%E5%BC%82%E5%B8%B8%E6%97%B6%E6%8E%92%E6%9F%A5%E5%8E%9F%E5%9B%A0\")'>"..translate("Click to the page").."</a>"..
|
||||
"<br/>"..font_green..translate("For More Useful Meta Core Functions Go Wiki")..": "..font_off.."<a href='javascript:void(0)' onclick='javascript:return winOpen(\"https://wiki.metacubex.one/\")'>"..translate("https://wiki.metacubex.one/").."</a>"
|
||||
|
||||
s = m:section(TypedSection, "openclash")
|
||||
s.anonymous = true
|
||||
@ -59,10 +60,6 @@ s:tab("developer", translate("Developer Settings"))
|
||||
s:tab("debug", translate("Debug Logs"))
|
||||
s:tab("dlercloud", translate("Dler Cloud"))
|
||||
|
||||
o = s:taboption("op_mode", Flag, "enable_meta_core", font_red..bold_on..translate("Enable Meta Core")..bold_off..font_off)
|
||||
o.description = font_red..bold_on..translate("Some Premium Core Features are Unavailable, For Other More Useful Functions Go Wiki:")..bold_off..font_off.." ".."<a href='javascript:void(0)' onclick='javascript:return winOpen(\"https://wiki.metacubex.one/\")'>https://wiki.metacubex.one/</a>"
|
||||
o.default = 0
|
||||
|
||||
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")
|
||||
if op_mode == "redir-host" then
|
||||
@ -99,7 +96,6 @@ o.description = translate("Select Proxy Mode")
|
||||
o:value("rule", translate("Rule Proxy Mode"))
|
||||
o:value("global", translate("Global Proxy Mode"))
|
||||
o:value("direct", translate("Direct Proxy Mode"))
|
||||
o:value("script", translate("Script Proxy Mode (Tun Core Only)"))
|
||||
o.default = "rule"
|
||||
|
||||
o = s:taboption("op_mode", Value, "delay_start", translate("Delay Start (s)"))
|
||||
@ -244,7 +240,7 @@ o.description = translate("Only Supported for Rule Mode")..", "..font_red..bold_
|
||||
o.default = 1
|
||||
|
||||
o = s:taboption("traffic_control", Flag, "disable_udp_quic", font_red..bold_on..translate("Disable QUIC")..bold_off..font_off)
|
||||
o.description = translate("Prevent YouTube and Others To Use QUIC Transmission")..", "..font_red..bold_on..translate("REJECT UDP Traffic(Not Include CN) On Port 443")..bold_off..font_off
|
||||
o.description = translate("Prevent YouTube and Others To Use QUIC Transmission")..", "..font_red..bold_on..translate("REJECT UDP Traffic(Not Include bypassed regions via China IP Route setting) On Port 443")..bold_off..font_off
|
||||
o.default = 1
|
||||
|
||||
o = s:taboption("traffic_control", Flag, "skip_proxy_address", translate("Skip Proxy Address"))
|
||||
@ -261,23 +257,12 @@ o:depends("en_mode", "redir-host")
|
||||
o:depends("en_mode", "redir-host-tun")
|
||||
o:depends("en_mode", "redir-host-mix")
|
||||
|
||||
if op_mode == "redir-host" then
|
||||
o = s:taboption("traffic_control", Flag, "china_ip_route", translate("China IP Route"))
|
||||
o.description = translate("Bypass The China Network Flows, Improve Performance")
|
||||
o.default = 0
|
||||
else
|
||||
o = s:taboption("traffic_control", Flag, "china_ip_route", translate("China IP Route"))
|
||||
o.description = translate("Bypass The China Network Flows, Improve Performance, If Inaccessibility on Bypass Gateway, Try to Enable Bypass Gateway Compatible Option, Depend on Dnsmasq")
|
||||
o.default = 0
|
||||
o:depends("enable_redirect_dns", "1")
|
||||
o:depends("enable_redirect_dns", "0")
|
||||
|
||||
o = s:taboption("traffic_control", Value, "custom_china_domain_dns_server", translate("Specify CN DNS Server"))
|
||||
o.description = translate("Specify DNS Server For CN Domain Lists, Only One IP Server Address Support")
|
||||
o.default = "114.114.114.114"
|
||||
o.placeholder = translate("114.114.114.114 or 127.0.0.1#5300")
|
||||
o:depends("china_ip_route", "1")
|
||||
end
|
||||
o = s:taboption("traffic_control", ListValue, "china_ip_route", translate("China IP Route"))
|
||||
o.description = translate("Bypass Specified Regions Network Flows, Improve Performance, If Inaccessibility on Bypass Gateway, Try to Enable Bypass Gateway Compatible Option")
|
||||
o.default = 0
|
||||
o:value("0", translate("Disable"))
|
||||
o:value("1", translate("Bypass Mainland China"))
|
||||
o:value("2", translate("Bypass Overseas"))
|
||||
|
||||
o = s:taboption("traffic_control", Flag, "intranet_allowed", translate("Only intranet allowed"))
|
||||
o.description = translate("When Enabled, The Control Panel And The Connection Broker Port Will Not Be Accessible From The Public Network")
|
||||
@ -340,50 +325,20 @@ function o.write(self, section, value)
|
||||
end
|
||||
|
||||
--Stream Enhance
|
||||
se_dns_ip = s:taboption("stream_enhance", DynamicList, "lan_block_google_dns_ips", translate("LAN Block Google DNS IP List"))
|
||||
se_dns_ip.datatype = "ipmask"
|
||||
se_dns_ip.rmempty = true
|
||||
|
||||
se_dns_mac = s:taboption("stream_enhance", DynamicList, "lan_block_google_dns_macs", translate("LAN Block Google DNS Mac List"))
|
||||
se_dns_mac.datatype = "list(macaddr)"
|
||||
se_dns_mac.rmempty = true
|
||||
|
||||
luci.ip.neighbors({ family = 4 }, function(n)
|
||||
if n.mac and n.dest then
|
||||
se_dns_ip:value(n.dest:string())
|
||||
se_dns_mac:value(n.mac, "%s (%s)" %{ n.mac, n.dest:string() })
|
||||
end
|
||||
end)
|
||||
|
||||
if string.len(SYS.exec("/usr/share/openclash/openclash_get_network.lua 'gateway6'")) ~= 0 then
|
||||
luci.ip.neighbors({ family = 6 }, function(n)
|
||||
if n.mac and n.dest then
|
||||
se_dns_ip:value(n.dest:string())
|
||||
se_dns_mac:value(n.mac, "%s (%s)" %{ n.mac, n.dest:string() })
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
o = s:taboption("stream_enhance", Flag, "stream_domains_prefetch", translate("Prefetch Netflix, Disney Plus Domains"))
|
||||
o.description = translate("Prevent Some Devices From Directly Using IP Access To Cause Unlocking Failure, Recommend Use meta Sniffer Function")
|
||||
o.default = 0
|
||||
o:depends("router_self_proxy", "1")
|
||||
|
||||
o = s:taboption("stream_enhance", Value, "stream_domains_prefetch_interval", translate("Domains Prefetch Interval(min)"))
|
||||
o.default = "1440"
|
||||
o.datatype = "uinteger"
|
||||
o.description = translate("Will Run Once Immediately After Started, The Interval Does Not Need To Be Too Short (Take Effect Immediately After Commit)")
|
||||
o:depends("stream_domains_prefetch", "1")
|
||||
|
||||
o = s:taboption("stream_enhance", DummyValue, "stream_domains_update", translate("Update Preset Domains List"))
|
||||
o:depends("stream_domains_prefetch", "1")
|
||||
o.template = "openclash/download_stream_domains"
|
||||
|
||||
o = s:taboption("stream_enhance", Flag, "stream_auto_select", font_red..bold_on..translate("Auto Select Unlock Proxy")..bold_off..font_off)
|
||||
o.description = translate("Auto Select Proxy For Streaming Unlock, Support Netflix, Disney Plus, HBO And YouTube Premium, etc")
|
||||
o.default = 0
|
||||
o:depends("router_self_proxy", "1")
|
||||
|
||||
o = s:taboption("stream_enhance", Button, translate("Flush Unlock Test Cache"))
|
||||
o.title = translate("Flush Unlock Test Cache")
|
||||
o.inputtitle = translate("Flush Cache")
|
||||
o.inputstyle = "reload"
|
||||
o.write = function()
|
||||
SYS.call("rm -rf /etc/openclash/history/streaming_unlock_cache >/dev/null 2>&1 &")
|
||||
end
|
||||
o:depends("stream_auto_select", "1")
|
||||
|
||||
o = s:taboption("stream_enhance", Value, "stream_auto_select_interval", translate("Auto Select Interval(min)"))
|
||||
o.default = "30"
|
||||
o.datatype = "uinteger"
|
||||
@ -1061,16 +1016,6 @@ o.description = translate("Custom Chnroute6 Lists URL, Click Button Below To Ref
|
||||
o:value("https://ispip.clang.cn/all_cn_ipv6.txt", translate("Clang-CN-IPV6")..translate("(Default)"))
|
||||
o.default = "https://ispip.clang.cn/all_cn_ipv6.txt"
|
||||
|
||||
o = s:taboption("chnr_update", Value, "cndomain_custom_url")
|
||||
o.title = translate("Custom CN Doamin Lists URL")
|
||||
o.rmempty = false
|
||||
o.description = translate("Custom CN Doamin Dnsmasq Conf URL, Click Button Below To Refresh After Edit")
|
||||
o:value("https://testingcf.jsdelivr.net/gh/felixonmars/dnsmasq-china-list@master/accelerated-domains.china.conf", translate("dnsmasq-china-list-testingcf-jsdelivr")..translate("(Default)"))
|
||||
o:value("https://fastly.jsdelivr.net/gh/felixonmars/dnsmasq-china-list@master/accelerated-domains.china.conf", translate("dnsmasq-china-list-fastly-jsdelivr"))
|
||||
o:value("https://raw.fastgit.org/felixonmars/dnsmasq-china-list/master/accelerated-domains.china.conf", translate("dnsmasq-china-list-fastgit"))
|
||||
o:value("https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/accelerated-domains.china.conf", translate("dnsmasq-china-list-github"))
|
||||
o.default = "https://testingcf.jsdelivr.net/gh/felixonmars/dnsmasq-china-list@master/accelerated-domains.china.conf"
|
||||
|
||||
o = s:taboption("chnr_update", Button, translate("Chnroute Lists Update"))
|
||||
o.title = translate("Update Chnroute Lists")
|
||||
o.inputtitle = translate("Check And Update")
|
||||
@ -1178,9 +1123,12 @@ o = s:taboption("ipv6", Flag, "ipv6_dns", translate("IPv6 DNS Resolve"))
|
||||
o.description = translate("Enable to Resolve IPv6 DNS Requests")
|
||||
o.default = 0
|
||||
|
||||
o = s:taboption("ipv6", Flag, "china_ip6_route", translate("China IPv6 Route"))
|
||||
o.description = translate("Bypass The China Network Flows, Improve Performance")
|
||||
o = s:taboption("ipv6", ListValue, "china_ip6_route", translate("China IPv6 Route"))
|
||||
o.description = translate("Bypass Specified Regions Network Flows, Improve Performance, If Inaccessibility on Bypass Gateway, Try to Enable Bypass Gateway Compatible Option")
|
||||
o.default = 0
|
||||
o:value("0", translate("Disable"))
|
||||
o:value("1", translate("Bypass Mainland China"))
|
||||
o:value("2", translate("Bypass Overseas"))
|
||||
o:depends("ipv6_enable", "1")
|
||||
|
||||
o = s:taboption("ipv6", Value, "local_network6_pass", translate("Local IPv6 Network Bypassed List"))
|
||||
|
@ -1,152 +0,0 @@
|
||||
<%+cbi/valueheader%>
|
||||
|
||||
<script type="text/javascript">//<![CDATA[
|
||||
var catch_num;
|
||||
var catch_timeout;
|
||||
var catch_out;
|
||||
|
||||
function act_download_disney_rule(btn)
|
||||
{
|
||||
btn.disabled = true;
|
||||
btn.value = '<%:Downloading Rule...%> ';
|
||||
XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash","download_disney_domains")%>',
|
||||
null,
|
||||
function(x,status)
|
||||
{
|
||||
if ( x && x.status == 200 ) {
|
||||
if(status.rule_download_status=="0")
|
||||
{
|
||||
btn.value = '<%:Download Failed%>';
|
||||
}
|
||||
else if (status.rule_download_status=="1")
|
||||
{
|
||||
btn.value = '<%:Download Successful%>';
|
||||
}
|
||||
else if (status.rule_download_status=="2")
|
||||
{
|
||||
btn.value = '<%:Rule No Change%>';
|
||||
}
|
||||
}
|
||||
else {
|
||||
btn.value = '<%:Download Timeout%>';
|
||||
}
|
||||
}
|
||||
);
|
||||
btn.disabled = false;
|
||||
return false;
|
||||
};
|
||||
|
||||
function act_download_netflix_rule(btn)
|
||||
{
|
||||
btn.disabled = true;
|
||||
btn.value = '<%:Downloading Rule...%> ';
|
||||
XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash","download_netflix_domains")%>',
|
||||
null,
|
||||
function(x,status)
|
||||
{
|
||||
if ( x && x.status == 200 ) {
|
||||
if(status.rule_download_status=="0")
|
||||
{
|
||||
btn.value = '<%:Downloading Fail%>';
|
||||
}
|
||||
else if (status.rule_download_status=="1")
|
||||
{
|
||||
btn.value = '<%:Downloading Successful%>';
|
||||
}
|
||||
else if (status.rule_download_status=="2")
|
||||
{
|
||||
btn.value = '<%:Rule No Change%>';
|
||||
}
|
||||
}
|
||||
else {
|
||||
btn.value = '<%:Downloading Timeout%>';
|
||||
}
|
||||
}
|
||||
);
|
||||
btn.disabled = false;
|
||||
return false;
|
||||
};
|
||||
|
||||
function catch_netflix_domains()
|
||||
{
|
||||
var legend = document.getElementById('catch-netflix-state');
|
||||
var output = document.getElementById('catch-netflix-output');
|
||||
var r = confirm("<%:Attention:%>\n<%:The catch result will be automatically saved%>\n\n1. <%:Please make sure the OpenClash works normally%>\n2. <%:The domains catch time is one minute%>\n3. <%:About to open fast.com%>\n4. <%:You can also try to catch while unlocking device playing%>");
|
||||
if (r == true) {
|
||||
|
||||
winOpen("https://fast.com/");
|
||||
|
||||
if (legend && output)
|
||||
{
|
||||
output.innerHTML =
|
||||
'<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /> ' +
|
||||
'<%:Waiting for command to complete...%>';
|
||||
|
||||
legend.parentNode.style.display = 'block';
|
||||
legend.style.display = 'inline';
|
||||
catch_num = 0;
|
||||
catch_out = "";
|
||||
get_netflix_domains();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
function strUnique(str){
|
||||
var ret = [];
|
||||
str.replace(/[^,]+/g, function($1, $2) {
|
||||
(str.indexOf($1) == $2) && ret.push($1);
|
||||
});
|
||||
return ret.join('\n');
|
||||
}
|
||||
|
||||
function get_netflix_domains()
|
||||
{
|
||||
var legend = document.getElementById('catch-netflix-state');
|
||||
var output = document.getElementById('catch-netflix-output');
|
||||
XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "catch_netflix_domains")%>', null, function(x, status) {
|
||||
if (x && x.status == 200 && x.responseText != "")
|
||||
{
|
||||
if (catch_out != "") {
|
||||
catch_out = catch_out + x.responseText;
|
||||
}
|
||||
else
|
||||
{
|
||||
catch_out = x.responseText;
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
catch_num = catch_num + 1;
|
||||
|
||||
if ( catch_num < 20 ) {
|
||||
catch_timeout = setTimeout("get_netflix_domains()", 3000);
|
||||
}
|
||||
else {
|
||||
clearTimeout(catch_timeout);
|
||||
if (catch_out != "")
|
||||
{
|
||||
legend.style.display = 'none';
|
||||
output.innerHTML = '<textarea class="cbi-input-textarea" style="width: 100%;display:inline" data-update="change" rows="10" cols="50" readonly="readonly" >'+strUnique(catch_out)+'</textarea>';
|
||||
XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "write_netflix_domains")%>', {domains: strUnique(catch_out)}, function(x, status) {});
|
||||
}
|
||||
else
|
||||
{
|
||||
legend.style.display = 'none';
|
||||
output.innerHTML = '<span class="error"><%:No domain names were catched...%></span>';
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
//]]></script>
|
||||
|
||||
|
||||
<input type="button" class="btn cbi-button cbi-input-reload" value="<%:Netflix%>" onclick="return act_download_netflix_rule(this)" />
|
||||
<input type="button" class="btn cbi-button cbi-input-reload" value="<%:Disney Plus%>" onclick="return act_download_disney_rule(this)" />
|
||||
<input type="button" class="btn cbi-button cbi-input-reload" value="<%:Catch Netflix%>" onclick="return catch_netflix_domains(this)" />
|
||||
<fieldset style="display: none;margin: 0 auto;">
|
||||
<legend id="catch-netflix-state"><%:Collecting data...%></legend>
|
||||
<br />
|
||||
<span id="catch-netflix-output"></span>
|
||||
</fieldset>
|
||||
<%+cbi/valuefooter%>
|
@ -7,13 +7,13 @@
|
||||
<meta http-equiv="x-dns-prefetch-control" content="on">
|
||||
<link rel="dns-prefetch" href="//cdn.jsdelivr.net">
|
||||
<link rel="dns-prefetch" href="//whois.pconline.com.cn">
|
||||
<link rel="dns-prefetch" href="//forge.speedtest.cn">
|
||||
<link rel="dns-prefetch" href="//pubstatic.b0.upaiyun.com">
|
||||
<link rel="dns-prefetch" href="//api-ipv4.ip.sb">
|
||||
<link rel="dns-prefetch" href="//api.ipify.org">
|
||||
<link rel="dns-prefetch" href="//api.ttt.sh">
|
||||
<link rel="dns-prefetch" href="//qqwry.api.skk.moe">
|
||||
<link rel="dns-prefetch" href="//d.skk.moe">
|
||||
<link rel="preconnect" href="https://forge.speedtest.cn">
|
||||
<link rel="preconnect" href="https://pubstatic.b0.upaiyun.com">
|
||||
<link rel="preconnect" href="https://whois.pconline.com.cn">
|
||||
<link rel="preconnect" href="https://api-ipv4.ip.sb">
|
||||
<link rel="preconnect" href="https://api.ipify.org">
|
||||
@ -143,7 +143,7 @@
|
||||
<span style="float: right;"><img src="/luci-static/resources/openclash/img/eye-light.svg" height="20px" title="<%:Hide IP%>" alt="<%:Hide IP%>" id="eye-icon" onclick="return privacy_my_ip(this)" /></span>
|
||||
</p>
|
||||
<p style="margin: 10px -2% 0 8%; text-align: left; padding-left: 0px !important; padding-right: 0px !important;">
|
||||
<span class="ip-title">SpeedTest:</span><span class="ip-result" id="ip-speedtest"></span> <span class="ip-geo" id="ip-speedtest-geo"></span>
|
||||
<span class="ip-title">UpaiYun:</span><span class="ip-result" id="ip-upaiyun"></span> <span class="ip-geo" id="ip-upaiyun-geo"></span>
|
||||
</p>
|
||||
<p style="margin: 10px -2% 0 8%; text-align: left; padding-left: 0px !important; padding-right: 0px !important;">
|
||||
<span class="ip-title">PConline:</span><span class="ip-result" id="ip-pcol"></span> <span class="ip-geo" id="ip-pcol-geo"></span>
|
||||
@ -181,6 +181,15 @@
|
||||
</fieldset>
|
||||
</body>
|
||||
<script>
|
||||
function addTitleOnOverflow() {
|
||||
document.querySelectorAll('.ip-result, .ip-geo').forEach(function (span) {
|
||||
if (span.scrollWidth > span.clientWidth && localStorage.getItem('privacy_my_ip') !== 'true') {
|
||||
span.setAttribute('title', span.textContent);
|
||||
} else {
|
||||
span.removeAttribute('title');
|
||||
}
|
||||
});
|
||||
}
|
||||
function ip_skk()
|
||||
{
|
||||
url2='https://ip.skk.moe';
|
||||
@ -189,13 +198,13 @@
|
||||
const $$ = document;
|
||||
var ip_pcol_ip;
|
||||
var ip_ipsb_ip;
|
||||
var ip_speedtest_ip;
|
||||
var ip_upaiyun_ip;
|
||||
var ip_ipify_ip;
|
||||
var refresh_http;
|
||||
var refresh_ip;
|
||||
$$.getElementById('ip-pcol').innerHTML = '<%:Querying...%>';
|
||||
$$.getElementById('ip-ipify').innerHTML = '<%:Querying...%>';
|
||||
$$.getElementById('ip-speedtest').innerHTML = '<%:Querying...%>';
|
||||
$$.getElementById('ip-upaiyun').innerHTML = '<%:Querying...%>';
|
||||
$$.getElementById('ip-ipsb').innerHTML = '<%:Querying...%>';
|
||||
let random = parseInt(Math.random() * 100000000);
|
||||
let IP = {
|
||||
@ -248,6 +257,7 @@
|
||||
$$.getElementById('ip-ipipnet').innerHTML = `${data[0]}`;
|
||||
};
|
||||
$$.getElementById('ip-ipipnet-geo').innerHTML = `${data[1]}`;
|
||||
addTitleOnOverflow();
|
||||
});
|
||||
},
|
||||
getIPApiIP: () => {
|
||||
@ -257,16 +267,28 @@
|
||||
$$.getElementById('ip-ipapi').innerHTML = resp.data.ip;
|
||||
};
|
||||
IP.parseIPIpip(resp.data.ip, 'ip-ipapi-geo');
|
||||
addTitleOnOverflow();
|
||||
})
|
||||
},
|
||||
getSpeedIP: () => {
|
||||
IP.get(`https://forge.speedtest.cn/api/location/info?z=${random}`, 'json')
|
||||
//getSpeedIP: () => {
|
||||
// IP.get(`https://forge.speedtest.cn/api/location/info?z=${random}`, 'json')
|
||||
// .then(resp => {
|
||||
// if (localStorage.getItem('privacy_my_ip') != 'true') {
|
||||
// $$.getElementById('ip-speedtest').innerHTML = resp.data.ip;
|
||||
// };
|
||||
//$$.getElementById('ip-speedtest-geo').innerHTML = resp.data.country + resp.data.province + resp.data.city + (resp.data.distinct == "null" ? '' : resp.data.distinct) + ' ' + (resp.data.isp == "null" ? '' : resp.data.isp);
|
||||
// IP.parseIPIpip(resp.data.ip, 'ip-speedtest-geo');
|
||||
// })
|
||||
//},
|
||||
getUpaiIP: () => {
|
||||
IP.get(`https://pubstatic.b0.upaiyun.com/?_upnode&z=${random}`, 'json')
|
||||
.then(resp => {
|
||||
if (localStorage.getItem('privacy_my_ip') != 'true') {
|
||||
$$.getElementById('ip-speedtest').innerHTML = resp.data.ip;
|
||||
$$.getElementById('ip-upaiyun').innerHTML = resp.data.remote_addr;
|
||||
};
|
||||
//$$.getElementById('ip-speedtest-geo').innerHTML = resp.data.country + resp.data.province + resp.data.city + (resp.data.distinct == "null" ? '' : resp.data.distinct) + ' ' + (resp.data.isp == "null" ? '' : resp.data.isp);
|
||||
IP.parseIPIpip(resp.data.ip, 'ip-speedtest-geo');
|
||||
$$.getElementById('ip-upaiyun-geo').innerHTML = resp.data.remote_addr_location.country + resp.data.remote_addr_location.province + resp.data.remote_addr_location.city + ' ' + resp.data.remote_addr_location.isp;
|
||||
//IP.parseIPIpip(resp.data.remote_addr, 'ip-upaiyun-geo');
|
||||
addTitleOnOverflow();
|
||||
})
|
||||
},
|
||||
getIpifyIP: () => {
|
||||
@ -279,6 +301,7 @@
|
||||
})
|
||||
.then(ip => {
|
||||
IP.parseIPIpip(ip, 'ip-ipify-geo');
|
||||
addTitleOnOverflow();
|
||||
})
|
||||
}
|
||||
};
|
||||
@ -340,6 +363,7 @@
|
||||
$$.getElementById('ip-pcol').innerHTML = data.ip;
|
||||
};
|
||||
$$.getElementById('ip-pcol-geo').innerHTML = `${data.pro}${data.city}${data.region} ${pcisp[1]}`;
|
||||
addTitleOnOverflow();
|
||||
};
|
||||
|
||||
function getIpsbIP(data){
|
||||
@ -347,6 +371,7 @@
|
||||
$$.getElementById('ip-ipsb').innerHTML = data.ip;
|
||||
};
|
||||
IP.parseIPIpip(data.ip, 'ip-ipsb-geo');
|
||||
addTitleOnOverflow();
|
||||
};
|
||||
|
||||
//function ipCallback(data){
|
||||
@ -379,11 +404,11 @@
|
||||
|
||||
var sbipScript= document.createElement("script");
|
||||
sbipScript.defer = "defer";
|
||||
sbipScript.src='https://api-ipv4.ip.sb/jsonip?callback=getIpsbIP';
|
||||
sbipScript.src=`https://api-ipv4.ip.sb/jsonip?callback=getIpsbIP&z=${random}`;
|
||||
mypage.appendChild(sbipScript);
|
||||
|
||||
//HTTP.runcheck();
|
||||
IP.getSpeedIP();
|
||||
IP.getUpaiIP();
|
||||
IP.getIpifyIP();
|
||||
};
|
||||
|
||||
@ -395,12 +420,13 @@
|
||||
$$.getElementById('eye-icon').alt='<%:Show IP%>';
|
||||
ip_pcol_ip = $$.getElementById('ip-pcol').innerHTML;
|
||||
ip_ipsb_ip = $$.getElementById('ip-ipsb').innerHTML;
|
||||
ip_speedtest_ip = $$.getElementById('ip-speedtest').innerHTML;
|
||||
ip_upaiyun_ip = $$.getElementById('ip-upaiyun').innerHTML;
|
||||
ip_ipify_ip = $$.getElementById('ip-ipify').innerHTML;
|
||||
$$.getElementById('ip-pcol').innerHTML = '***.***.***.***';
|
||||
$$.getElementById('ip-ipsb').innerHTML = '***.***.***.***';
|
||||
$$.getElementById('ip-speedtest').innerHTML = '***.***.***.***';
|
||||
$$.getElementById('ip-upaiyun').innerHTML = '***.***.***.***';
|
||||
$$.getElementById('ip-ipify').innerHTML = '***.***.***.***';
|
||||
addTitleOnOverflow();
|
||||
}
|
||||
else {
|
||||
refresh_http = setInterval("HTTP.runcheck()", Math.floor(Math.random()*(10-5+1)+5)*1000);
|
||||
@ -419,12 +445,13 @@
|
||||
imgobj.alt='<%:Show IP%>';
|
||||
ip_pcol_ip = $$.getElementById('ip-pcol').innerHTML;
|
||||
ip_ipsb_ip = $$.getElementById('ip-ipsb').innerHTML;
|
||||
ip_speedtest_ip = $$.getElementById('ip-speedtest').innerHTML;
|
||||
ip_upaiyun_ip = $$.getElementById('ip-upaiyun').innerHTML;
|
||||
ip_ipify_ip = $$.getElementById('ip-ipify').innerHTML;
|
||||
$$.getElementById('ip-pcol').innerHTML = '***.***.***.***';
|
||||
$$.getElementById('ip-ipsb').innerHTML = '***.***.***.***';
|
||||
$$.getElementById('ip-speedtest').innerHTML = '***.***.***.***';
|
||||
$$.getElementById('ip-upaiyun').innerHTML = '***.***.***.***';
|
||||
$$.getElementById('ip-ipify').innerHTML = '***.***.***.***';
|
||||
addTitleOnOverflow();
|
||||
}
|
||||
else {
|
||||
imgobj.src='/luci-static/resources/openclash/img/eye-light.svg';
|
||||
@ -432,7 +459,7 @@
|
||||
imgobj.alt='<%:Hide IP%>';
|
||||
$$.getElementById('ip-pcol').innerHTML = ip_pcol_ip;
|
||||
$$.getElementById('ip-ipsb').innerHTML = ip_ipsb_ip;
|
||||
$$.getElementById('ip-speedtest').innerHTML = ip_speedtest_ip;
|
||||
$$.getElementById('ip-upaiyun').innerHTML = ip_upaiyun_ip;
|
||||
$$.getElementById('ip-ipify').innerHTML = ip_ipify_ip;
|
||||
localStorage.removeItem('privacy_my_ip');
|
||||
myip_Load();
|
||||
@ -452,11 +479,13 @@
|
||||
|
||||
HTTP.runcheck();
|
||||
IP.getIpifyIP();
|
||||
IP.getSpeedIP();
|
||||
IP.getUpaiIP();
|
||||
show_my_ip();
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
document.write('<script defer="defer" src="https://whois.pconline.com.cn/ipJson.jsp?callback=getPcolIP&z='+parseInt(Math.random() * 100000000)+'" type="text/javascript"><\/script>');
|
||||
</script>
|
||||
<script defer="defer" src="https://api-ipv4.ip.sb/jsonip?callback=getIpsbIP"></script>
|
||||
<script type="text/javascript">
|
||||
document.write('<script defer="defer" src="https://api-ipv4.ip.sb/jsonip?callback=getIpsbIP&z='+parseInt(Math.random() * 100000000)+'" type="text/javascript"><\/script>');
|
||||
</script>
|
||||
</html>
|
||||
|
@ -36,17 +36,7 @@
|
||||
<tr>
|
||||
<td colspan="4" width="100%">
|
||||
<p style="margin: 10px 0; text-align: center">
|
||||
<%
|
||||
if uci:get("openclash", "config", "enable_meta_core") ~= '1' then
|
||||
%>
|
||||
<img id="_logo" src="/luci-static/resources/openclash/img/logo.png?<%=random%>" loading="lazy" width="150px" height="150px" onload="return logo_check(this,this.src,'https://raw.githubusercontent.com/vernesong/OpenClash/<%=RELEASE_BRANCH%>/img/logo.png')" onerror="return logo_error(this,'/luci-static/resources/openclash/img/logo.png?<%=random%>')" title="Hello, World!" alt="OpenClash" onclick="return homepage()" />
|
||||
<%
|
||||
else
|
||||
%>
|
||||
<img id="_logo" src="/luci-static/resources/openclash/img/meta.png?<%=random%>" loading="lazy" width="150px" height="150px" onload="return logo_check(this,this.src,'https://raw.githubusercontent.com/vernesong/OpenClash/<%=RELEASE_BRANCH%>/img/meta.png')" onerror="return logo_error(this,'/luci-static/resources/openclash/img/meta.png?<%=random%>')" title="Hello, World!" alt="OpenClash" onclick="return homepage()" />
|
||||
<%
|
||||
end
|
||||
%>
|
||||
<img id="_logo" src="/luci-static/resources/openclash/img/meta.png?<%=random%>" loading="lazy" width="150px" height="150px" onload="return logo_check(this,this.src,'https://raw.githubusercontent.com/vernesong/OpenClash/<%=RELEASE_BRANCH%>/img/meta.png')" onerror="return logo_error(this,'/luci-static/resources/openclash/img/meta.png?<%=random%>')" title="Hello, World!" alt="OpenClash" onclick="return homepage()" />
|
||||
</p>
|
||||
<p id="_clashversion" style="margin: 10px 0; text-align: center">
|
||||
<img src="/luci-static/resources/openclash/img/version.svg?<%=random%>" alt="currentversion" height="21px" onclick="return go_update()">
|
||||
@ -185,9 +175,8 @@
|
||||
</p>
|
||||
</td></tr>
|
||||
<tr><td width="25%"><%:Node Select Backup%></td><td width="25%" align="left" id="_historychecktime"><%:Collecting data...%></td><td width="25%"><%:lhie1 Rule Update%></td><td width="25%" align="left" id="_lhie1"><%:Collecting data...%></td></tr>
|
||||
<tr><td width="25%"><%:ConnersHua Rule Update%></td><td width="25%" align="left" id="_ConnersHua"><%:Collecting data...%></td><td width="25%"><%:ConnersHua Return Rule Update%></td><td width="25%" align="left" id="_ConnersHua_return"><%:Collecting data...%></td></tr>
|
||||
<tr><td width="25%"><%:Mainland IP Update%></td><td width="25%" align="left" id="_chnroute"><%:Collecting data...%></td><td width="25%"><%: Mainland IPv6 Update%></td><td width="25%" align="left" id="_chnroutev6"><%:Collecting data...%></td></tr>
|
||||
<tr><td width="25%"><%:GEOIP Data Update%></td><td width="25%" align="left" id="_ipdb"><%:Collecting data...%></td><td width="25%"><%:GeoSite Data Update%></td><td width="25%" align="left" id="_geosite"><%:Collecting data...%></td></tr>
|
||||
<tr><td width="25%"><%:GeoIP Data Update%></td><td width="25%" align="left" id="_ipdb"><%:Collecting data...%></td><td width="25%"><%:GeoSite Data Update%></td><td width="25%" align="left" id="_geosite"><%:Collecting data...%></td></tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
<script type="text/javascript">//<![CDATA[
|
||||
@ -213,8 +202,6 @@
|
||||
var ipdb = document.getElementById('_ipdb');
|
||||
var geosite = document.getElementById('_geosite');
|
||||
var lhie1 = document.getElementById('_lhie1');
|
||||
var ConnersHua = document.getElementById('_ConnersHua');
|
||||
var ConnersHua_return = document.getElementById('_ConnersHua_return');
|
||||
var chnroute = document.getElementById('_chnroute');
|
||||
var chnroutev6 = document.getElementById('_chnroutev6');
|
||||
var historychecktime = document.getElementById('_historychecktime');
|
||||
@ -250,14 +237,7 @@
|
||||
|
||||
XHR.poll(3, '<%=luci.dispatcher.build_url("admin", "services", "openclash", "status")%>', null, function(x, status) {
|
||||
if ( x && x.status == 200 ) {
|
||||
if ( status.restricted_mode != "1" )
|
||||
{
|
||||
clash.innerHTML = status.clash ? '<b style=color:green>' + status.core_type +' <%:Running%></b>' : '<b style=color:red><%:Not Running%></b>';
|
||||
}
|
||||
else
|
||||
{
|
||||
clash.innerHTML = status.clash ? '<b style=color:green>' + status.core_type +' <%:Running%> <%:<Limited State>%></b>' : '<b style=color:red><%:Not Running%></b>';
|
||||
}
|
||||
clash.innerHTML = status.clash ? '<b style=color:green>' + status.core_type +' <%:Running%></b>' : '<b style=color:red><%:Not Running%></b>';
|
||||
watchdog.innerHTML = status.watchdog ? ' | <%:Daemons%>: <b style=color:green><%:Running%></b>' : ' | <%:Daemons%>: <b style=color:red><%:Not Running%></b>';
|
||||
dase.innerHTML = status.dase ? "<b style=color:green>"+status.dase+"</b>" : "<b style=color:red>"+"<%:Not Set%>"+"</b>";
|
||||
web.innerHTML = status.web ? '<input type="button" class="btn cbi-button cbi-button-reload" value="<%:Yacd Control Panel%>" onclick="return ycad_dashboard(this)"/>' : '<b style=color:red><%:Not Running%></b>';
|
||||
@ -346,9 +326,9 @@
|
||||
|
||||
XHR.poll(3, '<%=luci.dispatcher.build_url("admin", "services", "openclash", "startlog")%>', null, function(x, status) {
|
||||
if ( x && x.status == 200 ) {
|
||||
if ( status.startlog.match("level=fatal") || status.startlog.indexOf("FTL [Config]") != "-1" ) {
|
||||
if ( status.startlog.match("level=fatal") || status.startlog.match("level=error") || 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") ) {
|
||||
if ( status.startlog.match("level=fatal") || status.startlog.match("level=error") ) {
|
||||
alert('<%:OpenClash Start Failed%> :\n\n' + status.startlog.split('msg=')[1]);
|
||||
}
|
||||
else {
|
||||
@ -544,8 +524,6 @@
|
||||
ipdb.innerHTML = status.ipdb ? "<b style=color:green>"+status.ipdb+"</b>" : "<b style=color:red>"+"<%:File Not Exist%>"+"</b>";
|
||||
geosite.innerHTML = status.geosite ? "<b style=color:green>"+status.geosite+"</b>" : "<b style=color:red>"+"<%:File Not Exist%>"+"</b>";
|
||||
lhie1.innerHTML = status.lhie1 ? "<b style=color:green>"+status.lhie1+"</b>" : "<b style=color:red>"+"<%:File Not Exist%>"+"</b>";
|
||||
ConnersHua.innerHTML = status.ConnersHua ? "<b style=color:green>"+status.ConnersHua+"</b>" : "<b style=color:red>"+"<%:File Not Exist%>"+"</b>";
|
||||
ConnersHua_return.innerHTML = status.ConnersHua_return ? "<b style=color:green>"+status.ConnersHua_return+"</b>" : "<b style=color:red>"+"<%:File Not Exist%>"+"</b>";
|
||||
chnroute.innerHTML = status.chnroute ? "<b style=color:green>"+status.chnroute+"</b>" : "<b style=color:red>"+"<%:File Not Exist%>"+"</b>";
|
||||
chnroutev6.innerHTML = status.chnroutev6 ? "<b style=color:green>"+status.chnroutev6+"</b>" : "<b style=color:red>"+"<%:File Not Exist%>"+"</b>";
|
||||
if ( status.historychecktime != "0" ) {
|
||||
@ -854,14 +832,14 @@
|
||||
btn.disabled = true;
|
||||
btn.value = '<%:Metacubexd Control Panel%>';
|
||||
if (status.daip && window.location.hostname == status.daip) {
|
||||
url9='<%="http://'+window.location.hostname+':'+status.cn_port+'/ui/metacubexd/#/?hostname='+ window.location.hostname + '&port=' + status.cn_port + '&secret=' + status.dase +'"%>';
|
||||
url9='<%="http://'+window.location.hostname+':'+status.cn_port+'/ui/metacubexd/#/setup?hostname='+ window.location.hostname + '&port=' + status.cn_port + '&secret=' + status.dase +'"%>';
|
||||
}
|
||||
else if (status.daip && window.location.hostname != status.daip && status.db_foward_domain && status.db_foward_port) {
|
||||
var ui_proto = status.db_forward_ssl == 0 ? 'http://' : 'https://';
|
||||
url9='<%="'+ui_proto+status.db_foward_domain+':'+status.db_foward_port+'/ui/metacubexd/#/?hostname='+ status.db_foward_domain + '&port=' + status.db_foward_port + '&secret=' + status.dase +'"%>';
|
||||
url9='<%="'+ui_proto+status.db_foward_domain+':'+status.db_foward_port+'/ui/metacubexd/#/setup?hostname='+ status.db_foward_domain + '&port=' + status.db_foward_port + '&secret=' + status.dase +'"%>';
|
||||
}
|
||||
else {
|
||||
url9='<%="http://'+window.location.hostname+':'+status.cn_port+'/ui/metacubexd/"%>';
|
||||
url9='<%="http://'+window.location.hostname+':'+status.cn_port+'/ui/metacubexd/#/"%>';
|
||||
}
|
||||
winOpen(url9);
|
||||
return false;
|
||||
@ -917,7 +895,7 @@
|
||||
|
||||
function gitbookpage()
|
||||
{
|
||||
url8='https://lancellc.gitbook.io/clash';
|
||||
url8='https://wiki.metacubex.one';
|
||||
winOpen(url8);
|
||||
};
|
||||
|
||||
|
@ -38,20 +38,6 @@
|
||||
<td width="25%"><%:Last Check Update%></td><td width="25%" align="left" id="CHECKTIME"><%:Collecting data...%></td>
|
||||
</tr>
|
||||
<tr><td width="100%" colspan="4">
|
||||
<p align="center">
|
||||
<b><%:Core path:%>/etc/openclash/core/clash</b>
|
||||
</p>
|
||||
</td></tr>
|
||||
<tr><td width="25%">[Dev] <%:Current Core%></td><td width="25%" align="left" id="CORE_CV"><%:Collecting data...%></td><td width="25%">[Dev] <%:Latest Core%></td><td width="25%" align="left" id="CORE_LV"><%:Collecting data...%></td></tr>
|
||||
<tr><td width="25%"><%:Update Core%></td><td width="25%" align="left" id="core_up"><%:Collecting data...%></td><td width="25%"><%:Download Latest Core%></td><td width="25%" align="left" id="ma_core_up"><%:Collecting data...%></td></tr>
|
||||
<tr><td width="100%" colspan="4">
|
||||
<p align="center">
|
||||
<b><%:Core path:%>/etc/openclash/core/clash_tun</b>
|
||||
</p>
|
||||
</td></tr>
|
||||
<tr><td width="25%">[TUN] <%:Current Core%></td><td width="25%" align="left" id="CORE_TUN_CV"><%:Collecting data...%></td><td width="25%">[TUN] <%:Latest Core%></td><td width="25%" align="left" id="CORE_TUN_LV"><%:Collecting data...%></td></tr>
|
||||
<tr><td width="25%"><%:Update Core%></td><td width="25%" align="left" id="core_tun_up"><%:Collecting data...%></td><td width="25%"><%:Download Latest Core%></td><td width="25%" align="left" id="ma_core_tun_up"><%:Collecting data...%></td></tr>
|
||||
<tr><td width="100%" colspan="4">
|
||||
<p align="center">
|
||||
<b><%:Core path:%>/etc/openclash/core/clash_meta</b>
|
||||
</p>
|
||||
@ -145,21 +131,13 @@
|
||||
var core_version = document.getElementById('CORE_VERSION');
|
||||
var checktime = document.getElementById('CHECKTIME');
|
||||
var cpu_model = document.getElementById('CPU_MODEL');
|
||||
var core_cv = document.getElementById('CORE_CV');
|
||||
var core_lv = document.getElementById('CORE_LV');
|
||||
var core_tun_cv = document.getElementById('CORE_TUN_CV');
|
||||
var core_tun_lv = document.getElementById('CORE_TUN_LV');
|
||||
var core_meta_cv = document.getElementById('CORE_META_CV');
|
||||
var core_meta_lv = document.getElementById('CORE_META_LV');
|
||||
var op_cv = document.getElementById('OP_CV');
|
||||
var op_lv = document.getElementById('OP_LV');
|
||||
var core_up = document.getElementById('core_up');
|
||||
var core_tun_up = document.getElementById('core_tun_up');
|
||||
var core_meta_up = document.getElementById('core_meta_up');
|
||||
var op_up = document.getElementById('op_up');
|
||||
var update_tip = document.getElementById('update_tip');
|
||||
var ma_core_up = document.getElementById('ma_core_up');
|
||||
var ma_core_tun_up = document.getElementById('ma_core_tun_up');
|
||||
var ma_core_meta_up = document.getElementById('ma_core_meta_up');
|
||||
var ma_op_up = document.getElementById('ma_op_up');
|
||||
var restore = document.getElementById('restore');
|
||||
@ -173,12 +151,8 @@
|
||||
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');
|
||||
core_up.innerHTML = '<input type="button" class="btn cbi-button cbi-button-reload" value="<%:Check And Update%>" onclick="return core_update(this,\'Dev\')"/>';
|
||||
core_tun_up.innerHTML = '<input type="button" class="btn cbi-button cbi-button-reload" value="<%:Check And Update%>" onclick="return core_update(this,\'TUN\')"/>';
|
||||
core_meta_up.innerHTML = '<input type="button" class="btn cbi-button cbi-button-reload" value="<%:Check And Update%>" onclick="return core_update(this,\'Meta\')"/>';
|
||||
op_up.innerHTML = '<input type="button" class="btn cbi-button cbi-button-reload" value="<%:Check And Update%>" onclick="return op_update(this)"/>';
|
||||
ma_core_up.innerHTML = '<input type="button" class="btn cbi-button cbi-button-reload" value="<%:Download%>" onclick="return ma_core_update(this,\'Dev\')"/>';
|
||||
ma_core_tun_up.innerHTML = '<input type="button" class="btn cbi-button cbi-button-reload" value="<%:Download%>" onclick="return ma_core_update(this,\'TUN\')"/>';
|
||||
ma_core_meta_up.innerHTML = '<input type="button" class="btn cbi-button cbi-button-reload" value="<%:Download%>" onclick="return ma_core_update(this,\'Meta\')"/>';
|
||||
ma_op_up.innerHTML = '<input type="button" class="btn cbi-button cbi-button-reload" value="<%:Download%>" onclick="return ma_op_update(this)"/>';
|
||||
restore.innerHTML = '<input type="button" class="btn cbi-button cbi-button-reset" value="<%:Restore Default Config%>" onclick="return restore_config(this)"/>';
|
||||
@ -222,24 +196,6 @@
|
||||
else {
|
||||
checktime.innerHTML = "<b style=color:red><%:Check Failed%></b>";
|
||||
}
|
||||
if ( status.corecv == "0" ) {
|
||||
core_cv.innerHTML = "<b style=color:red><%:File Not Exist%></b>";
|
||||
}
|
||||
else if (status.corecv != "") {
|
||||
core_cv.innerHTML = "<b style=color:green>"+status.corecv+"</b>";
|
||||
}
|
||||
else {
|
||||
core_cv.innerHTML = "<b style=color:red><%:Unknown%></b>";
|
||||
}
|
||||
if ( status.coretuncv == "0" ) {
|
||||
core_tun_cv.innerHTML = "<b style=color:red><%:File Not Exist%></b>";
|
||||
}
|
||||
else if (status.coretuncv != "") {
|
||||
core_tun_cv.innerHTML = "<b style=color:green>"+status.coretuncv+"</b>";
|
||||
}
|
||||
else {
|
||||
core_tun_cv.innerHTML = "<b style=color:red><%:Unknown%></b>";
|
||||
}
|
||||
if ( status.coremetacv == "0" ) {
|
||||
core_meta_cv.innerHTML = "<b style=color:red><%:File Not Exist%></b>";
|
||||
}
|
||||
@ -249,29 +205,7 @@
|
||||
else {
|
||||
core_meta_cv.innerHTML = "<b style=color:red><%:Unknown%></b>";
|
||||
}
|
||||
var corelv = status.corelv;
|
||||
var arr_core = corelv.split(",");
|
||||
var corelvis = arr_core[0];
|
||||
var coretunlvis = arr_core[1];
|
||||
var coremetalvis = arr_core[2];
|
||||
if (corelvis != status.corecv && corelvis != "" && corelvis != "\n") {
|
||||
core_lv.innerHTML = "<b style=color:green>"+corelvis+"<%:<New>%></b>";
|
||||
}
|
||||
else if (corelvis != "" && corelvis == status.corecv && corelvis != "\n") {
|
||||
core_lv.innerHTML = "<b style=color:green>"+corelvis+"</b>";
|
||||
}
|
||||
else {
|
||||
core_lv.innerHTML = "<b style=color:red><%:Unknown%></b>";
|
||||
}
|
||||
if (coretunlvis != status.coretuncv && coretunlvis != "" && coretunlvis != "\n") {
|
||||
core_tun_lv.innerHTML = "<b style=color:green>"+coretunlvis+"<%:<New>%></b>";
|
||||
}
|
||||
else if (coretunlvis != "" && coretunlvis == status.coretuncv && coretunlvis != "\n") {
|
||||
core_tun_lv.innerHTML = "<b style=color:green>"+coretunlvis+"</b>";
|
||||
}
|
||||
else {
|
||||
core_tun_lv.innerHTML = "<b style=color:red><%:Unknown%></b>";
|
||||
}
|
||||
var coremetalvis = status.corelv;
|
||||
if (coremetalvis != status.coremetacv && coremetalvis != "" && coremetalvis != "\n") {
|
||||
core_meta_lv.innerHTML = "<b style=color:green>"+coremetalvis+"<%:<New>%></b>";
|
||||
}
|
||||
@ -385,25 +319,9 @@
|
||||
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 == "Dev") {
|
||||
url1='https://raw.githubusercontent.com/vernesong/OpenClash/core/'+r+'/dev/clash-'+status.corever+'.tar.gz';
|
||||
window.location.href=url1;
|
||||
}
|
||||
if (type == "TUN") {
|
||||
var corelv = status.corelv;
|
||||
var arr_core = corelv.split(",");
|
||||
var coretunlvis = arr_core[1];
|
||||
if ( coretunlvis != "" ) {
|
||||
url3='https://raw.githubusercontent.com/vernesong/OpenClash/core/'+r+'/premium/clash-'+status.corever+'-'+coretunlvis+'.gz';
|
||||
window.location.href=url3;
|
||||
}
|
||||
else {
|
||||
alert('<%:Failed to get the latest version. Please try again later!%>')
|
||||
}
|
||||
}
|
||||
if (type == "Meta") {
|
||||
url4='https://raw.githubusercontent.com/vernesong/OpenClash/core/'+r+'/meta/clash-'+status.corever+'.tar.gz';
|
||||
window.location.href=url4;
|
||||
window.location.href=url4;
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
@ -5,8 +5,6 @@
|
||||
<option value="config" selected="selected"><%:Config File%> (.yaml)</option>
|
||||
<option value="proxy-provider"><%:Proxy Provider File%></option>
|
||||
<option value="rule-provider"><%:Rule Provider File%></option>
|
||||
<option value="clash">[Dev] <%:Core File%> (.tar.gz)</option>
|
||||
<option value="clash_tun">[TUN] <%:Core File%> (.gz)</option>
|
||||
<option value="clash_meta">[Meta] <%:Core File%> (.tar.gz)</option>
|
||||
<option value="backup-file"><%:Backup File%> (.tar.gz)</option>
|
||||
</select>
|
||||
|
@ -26,14 +26,14 @@ msgstr "覆写设置"
|
||||
msgid "Rule Providers Append"
|
||||
msgstr "规则附加"
|
||||
|
||||
msgid "Game Rules Append (Only TUN & Meta Core Support)"
|
||||
msgstr "游戏规则附加(仅 TUN & Meta 内核)"
|
||||
msgid "Game Rules Append"
|
||||
msgstr "游戏规则附加"
|
||||
|
||||
msgid "Other Rule Providers Append (Only TUN & Meta Core Support)"
|
||||
msgstr "第三方规则集附加(仅 TUN & Meta 内核)"
|
||||
msgid "Other Rule Providers Append"
|
||||
msgstr "第三方规则集附加"
|
||||
|
||||
msgid "Custom Rule Providers Append (Only TUN & Meta Core Support)"
|
||||
msgstr "自定义规则集附加(仅 TUN & Meta 内核)"
|
||||
msgid "Custom Rule Providers Append"
|
||||
msgstr "自定义规则集附加"
|
||||
|
||||
msgid "General Settings"
|
||||
msgstr "常规设置"
|
||||
@ -155,9 +155,6 @@ msgstr "Global【全局代理(需前往控制面板手动指定节点)】"
|
||||
msgid "Direct Proxy Mode"
|
||||
msgstr "Direct【全局直连】"
|
||||
|
||||
msgid "Script Proxy Mode (Tun Core Only)"
|
||||
msgstr "Script【脚本模式 - 仅TUN内核】"
|
||||
|
||||
msgid "Select Stack Type"
|
||||
msgstr "网络栈类型"
|
||||
|
||||
@ -165,16 +162,19 @@ msgid "Select Stack Type For TUN Mode, According To The Running Speed on Your Ma
|
||||
msgstr "请自行根据运行速度为 TUN 模式选择合适的网络栈"
|
||||
|
||||
msgid "China IP Route"
|
||||
msgstr "实验性:绕过中国大陆 IP"
|
||||
msgstr "实验性:绕过指定区域 IP"
|
||||
|
||||
msgid "China IPv6 Route"
|
||||
msgstr "实验性:绕过中国大陆 IPv6"
|
||||
msgstr "实验性:绕过指定区域 IPv6"
|
||||
|
||||
msgid "Bypass The China Network Flows, Improve Performance"
|
||||
msgstr "启用后中国大陆流量将不再经过内核,提升系统性能"
|
||||
msgid "Bypass Mainland China"
|
||||
msgstr "绕过中国大陆"
|
||||
|
||||
msgid "Bypass The China Network Flows, Improve Performance, If Inaccessibility on Bypass Gateway, Try to Enable Bypass Gateway Compatible Option, Depend on Dnsmasq"
|
||||
msgstr "启用后中国大陆流量将不再经过内核,提升系统性能,如旁路由遇到无法访问,请尝试启用旁路由兼容模式,此功能依赖于 Dnsmasq"
|
||||
msgid "Bypass Overseas"
|
||||
msgstr "海外用户回国模式"
|
||||
|
||||
msgid "Bypass Specified Regions Network Flows, Improve Performance, If Inaccessibility on Bypass Gateway, Try to Enable Bypass Gateway Compatible Option"
|
||||
msgstr "启用后指定区域流量将不再经过内核,提升系统性能,如旁路由遇到无法访问,请尝试启用旁路由兼容模式"
|
||||
|
||||
msgid "Log Level"
|
||||
msgstr "日志等级"
|
||||
@ -479,15 +479,6 @@ msgstr "将覆盖配置文件内的所有规则 (不包括自定义规则),启
|
||||
msgid "lhie1 Rules"
|
||||
msgstr "lhie1 规则"
|
||||
|
||||
msgid "ConnersHua Rules"
|
||||
msgstr "ConnersHua 规则"
|
||||
|
||||
msgid "ConnersHua(Provider-type) Rules"
|
||||
msgstr "ConnersHua(规则集) 规则"
|
||||
|
||||
msgid "ConnersHua Return Rules"
|
||||
msgstr "ConnersHua 回国规则"
|
||||
|
||||
msgid "Auto Update Other Rules"
|
||||
msgstr "正在使用第三方规则时更新设置才会生效"
|
||||
|
||||
@ -1053,8 +1044,8 @@ msgstr "*禁用 QUIC"
|
||||
msgid "Prevent YouTube and Others To Use QUIC Transmission"
|
||||
msgstr "防止 YouTube 等使用 QUIC 导致速度不佳"
|
||||
|
||||
msgid "REJECT UDP Traffic(Not Include CN) On Port 443"
|
||||
msgstr "禁用 443 端口 UDP 流量(不包括国内)"
|
||||
msgid "REJECT UDP Traffic(Not Include bypassed regions via China IP Route setting) On Port 443"
|
||||
msgstr "禁用 443 端口 UDP 流量(绕过指定区域IP:启用或绕过中国大陆时禁用海外方向QUIC;回国模式禁用大陆方向QUIC)"
|
||||
|
||||
msgid "Operation Mode"
|
||||
msgstr "模式设置"
|
||||
@ -1224,9 +1215,6 @@ msgstr "组件的状态显示,运行前请确保各项目显示正常,需要
|
||||
msgid "Node Select Backup"
|
||||
msgstr "策略组节点选择 备份日期"
|
||||
|
||||
msgid "ConnersHua Rule Update"
|
||||
msgstr "ConnersHua 规则更新日期"
|
||||
|
||||
msgid "Mainland IP Update"
|
||||
msgstr "大陆 IP 白名单 更新日期"
|
||||
|
||||
@ -1236,11 +1224,8 @@ msgstr "大陆 IPv6 白名单 更新日期"
|
||||
msgid "lhie1 Rule Update"
|
||||
msgstr "lhie1 规则更新日期"
|
||||
|
||||
msgid "ConnersHua Return Rule Update"
|
||||
msgstr "ConnersHua 回国规则更新日期"
|
||||
|
||||
msgid "GEOIP Data Update"
|
||||
msgstr "GEOIP 数据库日期"
|
||||
msgid "GeoIP Data Update"
|
||||
msgstr "GeoIP 数据库日期"
|
||||
|
||||
msgid "GeoSite Data Update"
|
||||
msgstr "GeoSite 数据库日期"
|
||||
@ -1251,9 +1236,6 @@ msgstr "暂未备份"
|
||||
msgid "Backup"
|
||||
msgstr "备份"
|
||||
|
||||
msgid "<Limited State>"
|
||||
msgstr "<受限状态>"
|
||||
|
||||
msgid "Enhance"
|
||||
msgstr "增强"
|
||||
|
||||
@ -1503,9 +1485,6 @@ msgstr "大陆IPv6段更新 URL"
|
||||
msgid "Custom Chnroute Lists URL"
|
||||
msgstr "大陆IP段更新 URL"
|
||||
|
||||
msgid "Custom CN Doamin Lists URL"
|
||||
msgstr "大陆域名列表文件更新 URL"
|
||||
|
||||
msgid "Custom GeoIP MMDB URL, Click Button Below To Refresh After Edit"
|
||||
msgstr "自定义 GeoIP MMDB 数据库的更新来源,编辑后点击下方按钮生效"
|
||||
|
||||
@ -1518,9 +1497,6 @@ msgstr "自定义大陆 IP 段的更新来源,编辑后点击下方按钮生
|
||||
msgid "Custom Chnroute6 Lists URL, Click Button Below To Refresh After Edit"
|
||||
msgstr "自定义大陆 IPv6 段的更新来源,编辑后点击下方按钮生效"
|
||||
|
||||
msgid "Custom CN Doamin Dnsmasq Conf URL, Click Button Below To Refresh After Edit"
|
||||
msgstr "自定义大陆域名列表配置文件(Dnsmasq Conf)的更新来源,编辑后点击下方按钮生效"
|
||||
|
||||
msgid "(Default)"
|
||||
msgstr "(默认)"
|
||||
|
||||
@ -1779,54 +1755,36 @@ msgstr "开始下载大陆 IP 白名单..."
|
||||
msgid "Start Downloading The Chnroute6 Cidr List..."
|
||||
msgstr "开始下载大陆 IPv6 白名单..."
|
||||
|
||||
msgid "Start Downloading The CN Domains List..."
|
||||
msgstr "开始下载大陆域名白名单..."
|
||||
|
||||
msgid "Chnroute Cidr List Download Success, Check Updated..."
|
||||
msgstr "大陆 IP 白名单下载成功,检查版本是否更新..."
|
||||
|
||||
msgid "Chnroute6 Cidr List Download Success, Check Updated..."
|
||||
msgstr "大陆 IPv6 白名单下载成功,检查版本是否更新..."
|
||||
|
||||
msgid "CN Domains List Download Success, Check Updated..."
|
||||
msgstr "大陆域名白名单下载成功,检查版本是否更新..."
|
||||
|
||||
msgid "Chnroute Cidr List Has Been Updated, Starting To Replace The Old Version..."
|
||||
msgstr "大陆 IP 白名单有更新,开始替换旧版本..."
|
||||
|
||||
msgid "Chnroute6 Cidr List Has Been Updated, Starting To Replace The Old Version..."
|
||||
msgstr "大陆 IPv6 白名单有更新,开始替换旧版本..."
|
||||
|
||||
msgid "CN Domains List Has Been Updated, Starting To Replace The Old Version..."
|
||||
msgstr "大陆域名白名单有更新,开始替换旧版本..."
|
||||
|
||||
msgid "Chnroute Cidr List Update Successful!"
|
||||
msgstr "大陆 IP 白名单更新成功!"
|
||||
|
||||
msgid "Chnroute6 Cidr List Update Successful!"
|
||||
msgstr "大陆 IPv6 白名单更新成功!"
|
||||
|
||||
msgid "CN Domains List Update Successful!"
|
||||
msgstr "大陆域名白名单更新成功!"
|
||||
|
||||
msgid "Updated Chnroute Cidr List No Change, Do Nothing..."
|
||||
msgstr "大陆 IP 白名单没有更新,停止继续操作..."
|
||||
|
||||
msgid "Updated Chnroute6 Cidr List No Change, Do Nothing..."
|
||||
msgstr "大陆 IPv6 白名单没有更新,停止继续操作..."
|
||||
|
||||
msgid "Updated CN Domains List No Change, Do Nothing..."
|
||||
msgstr "大陆域名白名单没有更新,停止继续操作..."
|
||||
|
||||
msgid "Chnroute Cidr List Update Error, Please Try Again Later..."
|
||||
msgstr "大陆 IP 白名单下载失败,请检查网络或稍后再试..."
|
||||
|
||||
msgid "Chnroute6 Cidr List Update Error, Please Try Again Later..."
|
||||
msgstr "大陆 IPv6 白名单下载失败,请检查网络或稍后再试..."
|
||||
|
||||
msgid "CN Domains List Update Error, Please Try Again Later..."
|
||||
msgstr "大陆域名白名单下载失败,请检查网络或稍后再试..."
|
||||
|
||||
msgid "Start Downloading GeoSite Database..."
|
||||
msgstr "开始下载 GeoSite 数据库..."
|
||||
|
||||
@ -1950,15 +1908,9 @@ msgstr "读取完成!"
|
||||
msgid "Write Successful!"
|
||||
msgstr "写入完成!"
|
||||
|
||||
msgid "Creating By Using Connershua (rule set) Rules..."
|
||||
msgstr "使用 ConnersHua(规则集) 规则创建中..."
|
||||
|
||||
msgid "Creating By Using lhie1 Rules..."
|
||||
msgstr "使用 lhie1 规则创建中..."
|
||||
|
||||
msgid "Creating By Using ConnersHua Return Rules..."
|
||||
msgstr "使用 ConnersHua 回国规则创建中..."
|
||||
|
||||
msgid "Created Successful, Updating Proxies, Proxy-providers, Groups..."
|
||||
msgstr "创建完成,正在更新服务器、代理集、策略组信息..."
|
||||
|
||||
@ -1974,12 +1926,6 @@ msgstr "错误:丢失或未指定第三方规则中的部分策略组,停止
|
||||
msgid "Tip: Detected That The nameserver DNS Option Has No Server Set, Starting To Complete..."
|
||||
msgstr "提示:检测到DNS选项下的 Nameserver 未设置服务器,开始补全..."
|
||||
|
||||
msgid "Error: Failed To Download Proxy-providers, Please Check The Log Page For Detailed error information!"
|
||||
msgstr "错误:代理集文件下载失败,请到日志页面查看详细错误信息!"
|
||||
|
||||
msgid "Error: Failed To Download Rule-providers, Please Check The Log Page For Detailed error information!"
|
||||
msgstr "错误:规则集文件下载失败,请到日志页面查看详细错误信息!"
|
||||
|
||||
msgid "Error: Nameserver Option Must Be Setted, Stop Customing DNS Servers"
|
||||
msgstr "错误:配置文件DNS选项下的 Nameserver 必须设置服务器,已停止设置自定义DNS服务器!"
|
||||
|
||||
@ -1992,21 +1938,6 @@ msgstr "错误:缺少配置文件,请上传或更新配置文件!"
|
||||
msgid "Error: Config File Format Validation Failed..."
|
||||
msgstr "错误:配置文件格式校验失败..."
|
||||
|
||||
msgid "Tip: Detected The Exclusive Function of The TUN Core, Use TUN Core to Start..."
|
||||
msgstr "提示:检测到配置了 TUN 内核专属功能,调用 TUN 内核启动..."
|
||||
|
||||
msgid "Tip: Detected The Exclusive Function of The Meta Core, Use Meta Core to Start..."
|
||||
msgstr "提示:检测到配置了 Meta 内核专属功能,调用 Meta 内核启动..."
|
||||
|
||||
msgid "Tip: No Special Configuration Detected, Use Dev Core to Start..."
|
||||
msgstr "提示:未检测到特殊配置,调用 Dev 内核启动..."
|
||||
|
||||
msgid "Tip: Detected that the Dev Core is not Installed, Use TUN Core to Start..."
|
||||
msgstr "提示:检测到 Dev 内核未安装,调用 TUN 内核启动..."
|
||||
|
||||
msgid "Tip: Detected that the Dev Core is not Installed, Use Meta Core to Start..."
|
||||
msgstr "提示:检测到 Dev 内核未安装,调用 Meta 内核启动..."
|
||||
|
||||
msgid "Tip: Detected that the GEOIP Database is not Installed, Ready to Download..."
|
||||
msgstr "提示:检测到 GEOIP 数据库文件不存在,准备开始下载..."
|
||||
|
||||
@ -2019,7 +1950,7 @@ msgstr "提示:检测到 GEOIP Dat 数据库文件不存在,准备开始下
|
||||
msgid "Tip: Detected that the Core is not Installed, Ready to Download..."
|
||||
msgstr "提示:检测到内核文件不存在,准备开始下载..."
|
||||
|
||||
msgid "Tip: Detected that the Chnroute Cidr or CN Domains List is not Installed, Ready to Download..."
|
||||
msgid "Tip: 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..."
|
||||
@ -2031,24 +1962,9 @@ msgstr "错误:Capsh 异常,请尝试重新安装依赖【libcap】和相应
|
||||
msgid "Tip: You Could Download And Re-Install The libcap & libcap-bin Library From The Address Give"
|
||||
msgstr "提示:你可以尝试从给出的地址中查找、下载并重新安装架构对应的 libcap 和 libcap-bin 依赖"
|
||||
|
||||
msgid "Error: Get DNS 'listen' Option Error, OpenClash Can Not Start With Raw Config File"
|
||||
msgstr "错误:无法获取 DNS 部分的监听端口设置, OpenClash 使用原始配置文件启动失败"
|
||||
|
||||
msgid "Error: Get DNS 'enhanced-mode' Option Error, OpenClash Can Not Start With Raw Config File"
|
||||
msgstr "错误:无法获取 DNS 部分的运行模式设置, OpenClash 使用原始配置文件启动失败"
|
||||
|
||||
msgid "Error: Get General 'redir-port' Option Error, OpenClash Can Not Start With Raw Config File"
|
||||
msgstr "错误:无法获取 General 部分的转发端口设置, OpenClash 使用原始配置文件启动失败"
|
||||
|
||||
msgid "Error: OpenClash Can Not Start, Please Check The Error Info And Try Again!"
|
||||
msgstr "错误:OpenClash 启动失败,请到日志页面查看详细错误信息!"
|
||||
|
||||
msgid "Error: OpenClash Can Not Start, Try Use Raw Config Restart Again..."
|
||||
msgstr "错误:OpenClash 启动失败,尝试使用原始配置文件启动..."
|
||||
|
||||
msgid "Error: OpenClash Can Not Start, Try Use Backup Rules Start Again..."
|
||||
msgstr "错误:OpenClash 启动失败,尝试还原第三方规则并重新启动 Clash 主程序..."
|
||||
|
||||
msgid "Found 53 Port Hijacked, Clean Up Firewall Rules..."
|
||||
msgstr "发现 53 端口被劫持,清理防火墙规则..."
|
||||
|
||||
@ -2073,17 +1989,14 @@ msgstr "第四步: 启动主程序..."
|
||||
msgid "Step 5: Check The Core Status..."
|
||||
msgstr "第五步: 检查内核启动状态..."
|
||||
|
||||
msgid "Step 6: Wait For The File Downloading..."
|
||||
msgstr "第六步: 等待主程序下载外部文件..."
|
||||
msgid "Step 6: Set Firewall Rules..."
|
||||
msgstr "第六步: 设置防火墙规则..."
|
||||
|
||||
msgid "Step 7: Set Firewall Rules..."
|
||||
msgstr "第七步: 设置防火墙规则..."
|
||||
msgid "Step 7: Restart Dnsmasq..."
|
||||
msgstr "第七步: 重启 Dnsmasq 程序..."
|
||||
|
||||
msgid "Step 8: Restart Dnsmasq..."
|
||||
msgstr "第八步: 重启 Dnsmasq 程序..."
|
||||
|
||||
msgid "Step 9: Add Cron Rules, Start Daemons..."
|
||||
msgstr "第九步: 添加计划任务,启动进程守护程序..."
|
||||
msgid "Step 8: Add Cron Rules, Start Daemons..."
|
||||
msgstr "第八步: 添加计划任务,启动进程守护程序..."
|
||||
|
||||
msgid "OpenClash Start Successful!"
|
||||
msgstr "OpenClash 启动成功,请等待服务器上线!"
|
||||
@ -2091,9 +2004,6 @@ msgstr "OpenClash 启动成功,请等待服务器上线!"
|
||||
msgid "Warning: OpenClash Start Successful, Please Note That Network May Abnormal With IPv6's DHCP Server"
|
||||
msgstr "警告:OpenClash 启动成功,检测到您启用了IPv6的DHCP服务,可能会造成连接异常!"
|
||||
|
||||
msgid "Warning: OpenClash Start Successful With Raw Config File, Please Note That It's Restricted Mode Now"
|
||||
msgstr "警告:OpenClash 使用原始配置文件启动成功,部分设置可能未生效!"
|
||||
|
||||
msgid "OpenClash Stoping..."
|
||||
msgstr "OpenClash 开始关闭..."
|
||||
|
||||
@ -2184,14 +2094,14 @@ msgstr "4、安装 TUN 或者 Meta 内核"
|
||||
msgid "When setting this page, if the groups is empty, please go to the <server and group management> page to add"
|
||||
msgstr "本页设置时如策略组为空,请先到《服务器与策略组管理》页面进行添加"
|
||||
|
||||
msgid "Introduction to rule set usage: https://lancellc.gitbook.io/clash/clash-config-file/rule-provider"
|
||||
msgstr "规则集使用介绍:https://lancellc.gitbook.io/clash/clash-config-file/rule-provider"
|
||||
msgid "Introduction to rule set usage: https://wiki.metacubex.one/config/rule-providers/content/"
|
||||
msgstr "规则集使用介绍:https://wiki.metacubex.one/config/rule-providers/content/"
|
||||
|
||||
msgid "Introduction to proxy usage: https://lancellc.gitbook.io/clash/clash-config-file/proxies"
|
||||
msgstr "代理使用介绍:https://lancellc.gitbook.io/clash/clash-config-file/proxies"
|
||||
msgid "Introduction to proxy usage: https://wiki.metacubex.one/config/proxies/"
|
||||
msgstr "代理使用介绍:https://wiki.metacubex.one/config/proxies/"
|
||||
|
||||
msgid "Introduction to proxy-provider usage: https://lancellc.gitbook.io/clash/clash-config-file/proxy-provider"
|
||||
msgstr "代理集使用介绍:https://lancellc.gitbook.io/clash/clash-config-file/proxy-provider"
|
||||
msgid "Introduction to proxy-provider usage: https://wiki.metacubex.one/config/proxy-providers/"
|
||||
msgstr "代理集使用介绍:https://wiki.metacubex.one/config/proxy-providers/"
|
||||
|
||||
msgid "Subconverter external configuration (subscription conversion template) Description: https://github.com/tindy2013/subconverter#external-configuration-file"
|
||||
msgstr "subconverter 外部配置(订阅转换模板)说明:https://github.com/tindy2013/subconverter#external-configuration-file"
|
||||
@ -2385,12 +2295,6 @@ msgstr "错误:设置防回环规则失败,"
|
||||
msgid "Error: Set lhie1 Rules Failed,"
|
||||
msgstr "错误:设置第三方规则(lhie1)失败,"
|
||||
|
||||
msgid "Error: Set ConnersHua Rules Failed,"
|
||||
msgstr "错误:设置第三方规则(ConnersHua)失败,"
|
||||
|
||||
msgid "Error: Set ConnersHua Return Rules Failed,"
|
||||
msgstr "错误:设置第三方规则(ConnersHua 回国)失败,"
|
||||
|
||||
msgid "Error: Filter Proxies Failed,"
|
||||
msgstr "错误:节点筛选失败,"
|
||||
|
||||
@ -2415,9 +2319,6 @@ msgstr "错误:规则集 Rule-Set 规则添加失败,"
|
||||
msgid "Error: Custom Rule Provider Merge Failed,"
|
||||
msgstr "错误:规则集 Rule Provider 合并失败,"
|
||||
|
||||
msgid "Error: Restore Backup Rules Failed,"
|
||||
msgstr "错误:还原默认规则失败,"
|
||||
|
||||
msgid "Error: Resolve Proxy-providers Failed,"
|
||||
msgstr "错误:解析代理集失败,"
|
||||
|
||||
@ -2529,63 +2430,12 @@ msgstr "被修改,暂停快速启动..."
|
||||
msgid "Click to Update"
|
||||
msgstr "点击更新规则"
|
||||
|
||||
msgid "Prefetch Netflix, Disney Plus Domains"
|
||||
msgstr "实验性:预解析 Netflix、Disney Plus 域名"
|
||||
|
||||
msgid "Prevent Some Devices From Directly Using IP Access To Cause Unlocking Failure, Recommend Use meta Sniffer Function"
|
||||
msgstr "防止部分设备直接使用IP访问导致DNS解锁失败,建议换用 meta 内核的探测功能"
|
||||
|
||||
msgid "Update Preset Domains List"
|
||||
msgstr "更新预置域名列表"
|
||||
|
||||
msgid "Domains Prefetch Interval(min)"
|
||||
msgstr "域名预解析间隔(分钟)"
|
||||
|
||||
msgid "Tip: Start Prefetch Netflix Domains..."
|
||||
msgstr "提示:开始预解析 Netflix 域名..."
|
||||
|
||||
msgid "Tip: Netflix Domains Prefetch Finished!"
|
||||
msgstr "提示:Netflix 域名预解析完成!"
|
||||
|
||||
msgid "Tip: Start Prefetch Disney Plus Domains..."
|
||||
msgstr "提示:开始预解析 Disney Plus 域名..."
|
||||
|
||||
msgid "Tip: Disney Plus Domains Prefetch Finished!"
|
||||
msgstr "提示:Disney Plus 域名预解析完成!"
|
||||
|
||||
msgid "Persistence Fake-IP"
|
||||
msgstr "Fake-IP 持久化"
|
||||
|
||||
msgid "Cache Fake-IP DNS Resolution Records To File, Improve The Response Speed After Startup"
|
||||
msgstr "存储 Fake-IP 的 DNS 解析记录到文件,提升内核启动后的反应速度和稳定性"
|
||||
|
||||
msgid "About to open fast.com"
|
||||
msgstr "确认后将打开 fast.com 进行测速"
|
||||
|
||||
msgid "Please make sure the OpenClash works normally"
|
||||
msgstr "请确保 OpenClash 已在正常运行"
|
||||
|
||||
msgid "The domains catch time is one minute"
|
||||
msgstr "域名抓取功能运行时间为一分钟"
|
||||
|
||||
msgid "You can also try to catch while unlocking device playing"
|
||||
msgstr "您也可以在正常解锁的设备播放时尝试抓取"
|
||||
|
||||
msgid "The catch result will be automatically saved"
|
||||
msgstr "抓取结果将自动保存"
|
||||
|
||||
msgid "Click to Catch"
|
||||
msgstr "手动抓取域名"
|
||||
|
||||
msgid "Catch Netflix"
|
||||
msgstr "手动抓取 Netflix 域名"
|
||||
|
||||
msgid "No domain names were catched..."
|
||||
msgstr "未抓取到任何域名..."
|
||||
|
||||
msgid "Will Run Once Immediately After Started, The Interval Does Not Need To Be Too Short (Take Effect Immediately After Commit)"
|
||||
msgstr "启动后会立即执行一次,间隔无需太短(修改后保存配置即可生效)"
|
||||
|
||||
msgid "Test failed"
|
||||
msgstr "检测失败"
|
||||
|
||||
@ -2874,6 +2724,12 @@ msgstr "Fake-IP 持久化缓存清理"
|
||||
msgid "No Specify Upload File"
|
||||
msgstr "未选择上传文件"
|
||||
|
||||
msgid "Custom Params"
|
||||
msgstr "自定义参数"
|
||||
|
||||
msgid "eg: \"rename=\\s+([2-9])[xX]@ (HIGH:$1)\""
|
||||
msgstr "格式示例:\"rename=\\s+([2-9])[xX]@ (高倍率:$1)\""
|
||||
|
||||
msgid "Use Rule Provider"
|
||||
msgstr "使用规则集"
|
||||
|
||||
@ -2937,15 +2793,6 @@ msgstr "错误:因为禁用了代理路由器自身流量,流媒体解锁无
|
||||
msgid "Error: Multiple Scripts Running, Exiting..."
|
||||
msgstr "错误:多个脚本运行中,退出..."
|
||||
|
||||
msgid "Error: Streaming DNS Prefetch Could not Work Because of Router-Self Proxy Disabled, Exiting..."
|
||||
msgstr "错误:因为禁用了代理路由器自身流量,预解析无法工作,退出..."
|
||||
|
||||
msgid "Enable Meta Core"
|
||||
msgstr "*使用 Meta 内核"
|
||||
|
||||
msgid "Some Premium Core Features are Unavailable, For Other More Useful Functions Go Wiki:"
|
||||
msgstr "Meta 内核还未支持 Premium 内核的全部功能,要了解其独有功能,请前往Wiki:"
|
||||
|
||||
msgid "Enable Sniffer"
|
||||
msgstr "*启用流量(域名)探测"
|
||||
|
||||
@ -3027,9 +2874,6 @@ msgstr "(仅 TUN 内核)"
|
||||
msgid "(TUN&Meta Core)"
|
||||
msgstr "(TUN&Meta 内核)"
|
||||
|
||||
msgid "Warning: Only Meta Core Support QUIC Type DNS, Skip"
|
||||
msgstr "警告:仅 Meta 内核支持 QUIC 类型的 DNS,跳过"
|
||||
|
||||
msgid "Will Override Dns Queries If Domains in The List"
|
||||
msgstr "列表中的域名将会强制进行探测(嗅探)"
|
||||
|
||||
@ -3063,9 +2907,6 @@ msgstr "天"
|
||||
msgid "Douyin"
|
||||
msgstr "抖音(Douyin)"
|
||||
|
||||
msgid "Warning: Skip the Custom Rule that Core not Support"
|
||||
msgstr "警告:跳过核心不支持的自定义规则"
|
||||
|
||||
msgid "Specific Interface"
|
||||
msgstr "指定接口"
|
||||
|
||||
@ -3078,24 +2919,12 @@ msgstr "指定策略组(支持正则匹配)"
|
||||
msgid "Group Use For Proxy The DNS"
|
||||
msgstr "用于代理此 DNS 的策略组"
|
||||
|
||||
msgid "Warning: Only Meta Core Support Specific Group, Skip Setting"
|
||||
msgstr "警告:仅 Meta 内核支持指定 DNS 的策略组,跳过设置"
|
||||
|
||||
msgid "Node Domain Resolve"
|
||||
msgstr "节点域名解析"
|
||||
|
||||
msgid "Use For Node Domain Resolve"
|
||||
msgstr "用于解析节点域名的 IP 地址"
|
||||
|
||||
msgid "Warning: Only Meta Core Support proxy-server-nameserver, Skip Setting"
|
||||
msgstr "警告:仅 Meta 内核支持设置解析节点域名的 DNS,跳过设置"
|
||||
|
||||
msgid "Warning: Meta Core not Support Specific Interface, Skip Setting"
|
||||
msgstr "警告:Meta 内核不支持设置指定 DNS 的出口,跳过设置"
|
||||
|
||||
msgid "Warning: Only Meta Core Support Force HTTP/3 to connect, Skip Setting"
|
||||
msgstr "警告:仅 Meta 内核支持 DOH 强制启用 HTTP/3,跳过设置"
|
||||
|
||||
msgid "Lan Bypassed Port List"
|
||||
msgstr "绕过核心的来源端口"
|
||||
|
||||
@ -3199,23 +3028,17 @@ msgid "Backup Proxy Provider"
|
||||
msgstr "仅备份代理集"
|
||||
|
||||
msgid "Chnroute Bypassed List"
|
||||
msgstr "绕过中国大陆 IPv4 黑名单"
|
||||
msgstr "绕过指定区域 IPv4 黑名单"
|
||||
|
||||
msgid "Chnroute6 Bypassed List"
|
||||
msgstr "绕过中国大陆 IPv6 黑名单"
|
||||
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"
|
||||
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 "LAN Block Google DNS IP List"
|
||||
msgstr "实验性:屏蔽 Google DNS 的局域网设备 IP"
|
||||
|
||||
msgid "LAN Block Google DNS Mac List"
|
||||
msgstr "实验性:屏蔽 Google DNS 的局域网设备 Mac"
|
||||
|
||||
msgid "Auto Select Logic"
|
||||
msgstr "*自动选择逻辑"
|
||||
|
||||
@ -3252,9 +3075,6 @@ msgstr "下载失败:"
|
||||
msgid "Tip: Waiting for TUN Interface Start..."
|
||||
msgstr "提示:正在等待 TUN 接口启动..."
|
||||
|
||||
msgid "Tip: You Can Try to Restart With Meta Core"
|
||||
msgstr "提示:您可以尝试使用 Meta 内核启动"
|
||||
|
||||
msgid "Warning: Dnsmasq not Support nftset, Use ipset..."
|
||||
msgstr "警告:Dnsmasq 不支持 nftset, 使用 ipset 代替..."
|
||||
|
||||
@ -3264,18 +3084,6 @@ msgstr "提示:检测到 Firewall4,使用 NFTABLE 规则..."
|
||||
msgid "Specify CN DNS Server"
|
||||
msgstr "大陆域名 DNS 服务器"
|
||||
|
||||
msgid "Specify DNS Server For CN Domain Lists, Only One IP Server Address Support"
|
||||
msgstr "指定大陆域名的 DNS 服务器,只支持填写一个IP地址"
|
||||
|
||||
msgid "Warning: Dnsmasq Work is Unnormal, Setting The Firewall DNS Hijacking Rules..."
|
||||
msgstr "警告:检测到 Dnsmasq 工作异常,设置防火墙 DNS 劫持规则..."
|
||||
|
||||
msgid "Tip: Dnsmasq Work is Normal, Restore The Firewall DNS Hijacking Rules..."
|
||||
msgstr "提示:检测到 Dnsmasq 正常工作,还原防火墙 DNS 劫持规则..."
|
||||
|
||||
msgid "Tip: Bypass the China IP May Cause the Dnsmasq Load For a Long Time After Restart in FAKE-IP Mode, Hijack the DNS to Core Untill the Dnsmasq Works Well..."
|
||||
msgstr "提示:在 FAKE-IP 模式下绕过中国 IP 可能会导致 Dnsmasq 加载时间过长,暂时劫持 DNS 至内核直到 Dnsmasq 正常工作..."
|
||||
|
||||
msgid "Seconds..."
|
||||
msgstr "秒后开始启动..."
|
||||
|
||||
@ -3438,9 +3246,6 @@ msgstr "提示:IPv6 代理模式为 TUN..."
|
||||
msgid "Tip: IPv6 Proxy Mode is TProxy..."
|
||||
msgstr "提示:IPv6 代理模式为 TProxy..."
|
||||
|
||||
msgid "Warning: Only Meta Core Support IPv6 Tun Mode, Use TProxy Instead..."
|
||||
msgstr "提示:只有 Meta 内核支持 IPv6 Tun 模式,使用 TProxy 模式代替..."
|
||||
|
||||
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 口请忽略此提示..."
|
||||
|
||||
@ -3474,9 +3279,6 @@ msgstr "请在此编辑您的附加配置"
|
||||
msgid "Error: Config Not Found, Switch Config File to"
|
||||
msgstr "错误:未找到配置文件,切换至配置文件"
|
||||
|
||||
msgid "Warning: Skip the nameserver-policy that Core not Support"
|
||||
msgstr "警告:跳过核心不支持的 nameserver-policy 规则"
|
||||
|
||||
msgid "Enable Unified Delay"
|
||||
msgstr "*启用统一延迟"
|
||||
|
||||
@ -3507,14 +3309,11 @@ msgstr "清理成功"
|
||||
msgid "Flush Timeout"
|
||||
msgstr "清理超时"
|
||||
|
||||
msgid "Fallback DNS Proxy Group (Support Regex)"
|
||||
msgstr "Fallback DNS 代理组 (支持正则匹配)"
|
||||
msgid "Respect Rules"
|
||||
msgstr "遵循规则"
|
||||
|
||||
msgid "Group Use For Proxy The Fallback DNS, Preventing DNS Lookup Failures"
|
||||
msgstr "为所有 Fallback DNS 设置代理策略组,防止 DNS 查询失败"
|
||||
|
||||
msgid "Error: Set Fallback DNS Proxy Group Failed,"
|
||||
msgstr "错误:Fallback DNS 代理策略组设置失败,"
|
||||
msgid "Whether or not The Connection to the DNS Server Follow the Rules in Config"
|
||||
msgstr "与 DNS 服务器的连接是否遵循配置文件中的规则"
|
||||
|
||||
msgid "To Use in Fake-IP Mode, Please Switch The Dns Redirect Mode To Firewall Forwarding"
|
||||
msgstr "要在 Fake-IP 模式下使用,请将 Dns 重定向模式切换为防火墙转发模式"
|
||||
@ -3550,4 +3349,49 @@ msgid "LAN Interface Name"
|
||||
msgstr "LAN 接口名称"
|
||||
|
||||
msgid "Select LAN Interface Name"
|
||||
msgstr "指定正确的 LAN 接口名称"
|
||||
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 "Tip: 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"
|
||||
|
||||
msgid "Blacklist Mode"
|
||||
msgstr "黑名单模式"
|
||||
|
||||
msgid "Whitelist Mode"
|
||||
msgstr "白名单模式"
|
||||
|
||||
msgid "Cached Compliant Nodes Number:"
|
||||
msgstr "已缓存的符合优先测试条件的节点数量:"
|
||||
|
||||
msgid ", Cached Non-compliant Nodes Number:"
|
||||
msgstr ",不符合优先测试条件的节点数量:"
|
||||
|
||||
msgid ", Prioritize Testing With Cached Compliant Nodes..."
|
||||
msgstr ",将优先使用符合条件的节点进行测试..."
|
||||
|
||||
msgid "Flush Unlock Test Cache"
|
||||
msgstr "清理解锁检测缓存"
|
||||
|
||||
msgid "Flush Cache"
|
||||
msgstr "清理缓存"
|
||||
|
||||
msgid "ECS Subnet"
|
||||
msgstr "ECS 区域地址"
|
||||
|
||||
msgid "Specify the ECS Subnet Address"
|
||||
msgstr "指定 ECS 子网区域地址"
|
||||
|
||||
msgid "ECS Override"
|
||||
msgstr "ECS 区域地址覆盖"
|
||||
|
||||
msgid "Override the ECS Subnet Address"
|
||||
msgstr "强制覆盖 DNS 查询的子网区域地址"
|
@ -21,7 +21,7 @@ config openclash 'config'
|
||||
option enable_custom_clash_rules '0'
|
||||
option other_rule_auto_update '0'
|
||||
option core_version '0'
|
||||
option en_mode 'redir-host'
|
||||
option en_mode 'fake-ip'
|
||||
option enable_redirect_dns '1'
|
||||
option servers_if_update '0'
|
||||
option disable_masq_cache '1'
|
||||
@ -32,7 +32,7 @@ config openclash 'config'
|
||||
option enable_udp_proxy '1'
|
||||
option disable_udp_quic '1'
|
||||
option lan_ac_mode '0'
|
||||
option operation_mode 'redir-host'
|
||||
option operation_mode 'fake-ip'
|
||||
option enable_rule_proxy '0'
|
||||
option redirect_dns '0'
|
||||
option cachesize_dns '0'
|
||||
@ -48,7 +48,6 @@ config openclash 'config'
|
||||
option custom_host '0'
|
||||
option custom_name_policy '0'
|
||||
option append_wan_dns '0'
|
||||
option stream_domains_prefetch '0'
|
||||
option stream_auto_select '0'
|
||||
option bypass_gateway_compatible '0'
|
||||
option github_address_mod '0'
|
||||
@ -57,16 +56,15 @@ config openclash 'config'
|
||||
option delay_start '0'
|
||||
option router_self_proxy '1'
|
||||
option release_branch 'master'
|
||||
option enable_meta_core '0'
|
||||
option dashboard_type 'Official'
|
||||
option yacd_type 'Official'
|
||||
option append_default_dns '0'
|
||||
option enable_respect_rules '0'
|
||||
option geo_custom_url 'https://testingcf.jsdelivr.net/gh/alecthw/mmdb_china_ip_list@release/lite/Country.mmdb'
|
||||
option geosite_custom_url 'https://testingcf.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/geosite.dat'
|
||||
option geoip_custom_url 'https://testingcf.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/geoip.dat'
|
||||
option chnr_custom_url 'https://ispip.clang.cn/all_cn.txt'
|
||||
option chnr6_custom_url 'https://ispip.clang.cn/all_cn_ipv6.txt'
|
||||
option cndomain_custom_url 'https://testingcf.jsdelivr.net/gh/felixonmars/dnsmasq-china-list@master/accelerated-domains.china.conf'
|
||||
|
||||
config dns_servers
|
||||
option type 'udp'
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
@ -1,2 +1,6 @@
|
||||
#baidu.com
|
||||
#2400:da00::dbf:0:100
|
||||
#2400:da00::dbf:0:100
|
||||
##解决绕过大陆后谷歌商店无法更新
|
||||
services.googleapis.cn
|
||||
googleapis.cn
|
||||
xn--ngstr-lra8j.com
|
@ -1,4 +1,6 @@
|
||||
#baidu.com
|
||||
#114.114.114.114
|
||||
##解决绕过大陆后谷歌商店无法更新
|
||||
services.googleapis.cn
|
||||
services.googleapis.cn
|
||||
googleapis.cn
|
||||
xn--ngstr-lra8j.com
|
@ -1,2 +1,5 @@
|
||||
#'www.baidu.com': '114.114.114.114'
|
||||
#'+.internal.crop.com': '10.0.0.1'
|
||||
#'+.internal.crop.com': '10.0.0.1'
|
||||
#"geosite:category-games@cn": [https://doh.pub/dns-query, 114.114.114.114, 223.5.5.5]
|
||||
#"geosite:google": [tls://8.8.4.4, https://1.0.0.1/dns-query]
|
||||
#"geosite:cn": [https://doh.pub/dns-query, 114.114.114.114, 223.5.5.5]
|
@ -140,4 +140,10 @@ local.adguard.org
|
||||
+.n0808.com
|
||||
#UU Plugin
|
||||
+.uu.163.com
|
||||
ps.res.netease.com
|
||||
ps.res.netease.com
|
||||
#Wifi Calling
|
||||
+.pub.3gppnetwork.org
|
||||
#GEOSITE(Meta core)
|
||||
geosite:category-games
|
||||
#geosite:apple-cn
|
||||
#geosite:google-cn
|
@ -1,11 +0,0 @@
|
||||
ipv4-c041-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c016-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c007-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c010-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c047-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c041-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c056-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c030-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c025-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c027-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c046-hkg001-ix.1.oca.nflxvideo.net
|
@ -1,25 +1,4 @@
|
||||
script:
|
||||
## shortcuts:
|
||||
## Notice: The core timezone is UTC
|
||||
## CST 20:00-24:00 = time.now().hour > 12 and time.now().hour < 16
|
||||
## 内核时区为UTC,故以下time.now()函数的取值需要根据本地时区进行转换
|
||||
## 北京时间(CST) 20:00-24:00 = time.now().hour > 12 and time.now().hour < 16
|
||||
## quic: network == 'udp' and dst_port == 443 and (geoip(resolve_ip(host)) != 'CN' or geoip(dst_ip) != 'CN')
|
||||
## time-limit: in_cidr(src_ip,'192.168.1.2/32') and time.now().hour < 20 or time.now().hour > 21
|
||||
## time-limit: src_ip == '192.168.1.2' and time.now().hour < 20 or time.now().hour > 21
|
||||
|
||||
## code: |
|
||||
## def main(ctx, metadata):
|
||||
## directkeywordlist = ["baidu"]
|
||||
## for directkeyword in directkeywordlist:
|
||||
## if directkeyword in metadata["host"]:
|
||||
## ctx.log('[Script] matched keyword %s use direct' % directkeyword)
|
||||
## return "DIRECT"
|
||||
|
||||
rules:
|
||||
##- SCRIPT,quic,REJECT #shortcuts rule
|
||||
##- SCRIPT,time-limit,REJECT #shortcuts rule
|
||||
|
||||
##- PROCESS-NAME,curl,DIRECT #匹配路由自身进程(curl直连)
|
||||
##- DOMAIN-SUFFIX,google.com,Proxy #匹配域名后缀(交由Proxy代理服务器组)
|
||||
##- DOMAIN-KEYWORD,google,Proxy #匹配域名关键字(交由Proxy代理服务器组)
|
||||
@ -29,6 +8,34 @@ rules:
|
||||
##- SRC-IP-CIDR,192.168.1.201/32,DIRECT #匹配数据发起IP(直连)
|
||||
##- DST-PORT,80,DIRECT #匹配数据目标端口(直连)
|
||||
##- SRC-PORT,7777,DIRECT #匹配数据源端口(直连)
|
||||
##- GEOSITE,category-public-tracker,DIRECT #匹配GEOSITE数据库规则(直连)
|
||||
##- DOMAIN-REGEX,^abc.*com,PROXY #正则匹配域名
|
||||
##- RULE-SET,providername,PROXY #匹配规则集
|
||||
|
||||
##- IP-CIDR6,2620:0:2d0:200::7/32,PROXY
|
||||
##- IP-SUFFIX,8.8.8.8/24,PROXY
|
||||
##- IP-ASN,13335,DIRECT
|
||||
|
||||
##- SRC-GEOIP,cn,DIRECT
|
||||
##- SRC-IP-ASN,9808,DIRECT
|
||||
##- SRC-IP-SUFFIX,192.168.1.201/8,DIRECT
|
||||
|
||||
##- IN-PORT,7890,PROXY
|
||||
##- IN-TYPE,SOCKS/HTTP,PROXY
|
||||
##- IN-USER,mihomo,PROXY
|
||||
##- IN-NAME,ss,PROXY
|
||||
|
||||
##- PROCESS-NAME-REGEX,curl$,PROXY
|
||||
##- PROCESS-NAME-REGEX,(?i)Telegram,PROXY
|
||||
##- PROCESS-NAME-REGEX,.*telegram.*,PROXY
|
||||
|
||||
##- NETWORK,udp,DIRECT
|
||||
##- DSCP,4,DIRECT
|
||||
|
||||
##- AND,((DOMAIN,baidu.com),(NETWORK,UDP)),DIRECT
|
||||
##- OR,((NETWORK,UDP),(DOMAIN,baidu.com)),REJECT
|
||||
##- NOT,((DOMAIN,baidu.com)),PROXY
|
||||
##- SUB-RULE,(NETWORK,tcp),sub-rule
|
||||
|
||||
##排序在上的规则优先生效,如添加(去除规则前的#号):
|
||||
##IP段:192.168.1.2-192.168.1.200 直连
|
||||
@ -56,6 +63,8 @@ rules:
|
||||
##- SRC-IP-CIDR,198.18.0.1/32,DIRECT
|
||||
|
||||
##DDNS
|
||||
##- DOMAIN-KEYWORD,synology,DIRECT
|
||||
##- DOMAIN-KEYWORD,quickconnect,DIRECT
|
||||
##- DOMAIN-SUFFIX,checkip.dyndns.org,DIRECT
|
||||
##- DOMAIN-SUFFIX,checkipv6.dyndns.org,DIRECT
|
||||
##- DOMAIN-SUFFIX,checkip.synology.com,DIRECT
|
||||
|
@ -1,18 +1,4 @@
|
||||
script:
|
||||
## shortcuts:
|
||||
## common_port: dst_port not in [21, 22, 23, 53, 80, 123, 143, 194, 443, 465, 587, 853, 993, 995, 998, 2052, 2053, 2082, 2083, 2086, 2095, 2096, 5222, 5228, 5229, 5230, 8080, 8443, 8880, 8888, 8889]
|
||||
|
||||
## code: |
|
||||
## def main(ctx, metadata):
|
||||
## directkeywordlist = ["baidu"]
|
||||
## for directkeyword in directkeywordlist:
|
||||
## if directkeyword in metadata["host"]:
|
||||
## ctx.log('[Script] matched keyword %s use direct' % directkeyword)
|
||||
## return "DIRECT"
|
||||
|
||||
rules:
|
||||
##- SCRIPT,common_port,DIRECT #shortcuts rule
|
||||
|
||||
##- DOMAIN-SUFFIX,google.com,Proxy #匹配域名后缀(交由Proxy代理服务器组)
|
||||
##- DOMAIN-KEYWORD,google,Proxy #匹配域名关键字(交由Proxy代理服务器组)
|
||||
##- DOMAIN,google.com,Proxy #匹配域名(交由Proxy代理服务器组)
|
||||
|
@ -1,4 +1,7 @@
|
||||
skip-domain:
|
||||
- '+.apple.com'
|
||||
- Mijia Cloud
|
||||
- dlg.io.mi.com
|
||||
- dlg.io.mi.com
|
||||
- +.oray.com
|
||||
- +.sunlogin.net
|
||||
#- geosite:cn
|
@ -1,130 +0,0 @@
|
||||
# 针对部分网站显示IP归属地的分流规则
|
||||
# anti-ip-attribution rule-provider.yaml v0.3.0 b38fca55691235e8b59879093163d971ce803e2e
|
||||
# https://github.com/lwd-temp/anti-ip-attribution
|
||||
# 适用于Clash的Rule Provider功能,详见https://lancellc.gitbook.io/clash/clash-config-file/rule-provider
|
||||
payload:
|
||||
- DOMAIN-SUFFIX,biliapi.net
|
||||
- DOMAIN,api.bilibili.com
|
||||
- DOMAIN,api.bilibili.tv
|
||||
- DOMAIN,app.bilibili.com
|
||||
- DOMAIN-SUFFIX,biliapi.com
|
||||
- DOMAIN,api.live.bilibili.com
|
||||
- DOMAIN,api.vc.bilibili.com
|
||||
- DOMAIN,passport.bilibili.com
|
||||
- DOMAIN,live-trace.bilibili.com
|
||||
- DOMAIN,message.bilibili.com
|
||||
- DOMAIN,cm.bilibili.com
|
||||
- DOMAIN-SUFFIX,bilibili.com
|
||||
- DOMAIN-SUFFIX,im9.com
|
||||
- DOMAIN-SUFFIX,acg.tv
|
||||
- DOMAIN-SUFFIX,biligame.com
|
||||
- IP-CIDR,203.107.1.0/24,REJECT
|
||||
- DOMAIN-SUFFIX,weibo.cn
|
||||
- DOMAIN-SUFFIX,weibo.com
|
||||
- DOMAIN-SUFFIX,weibocdn.com
|
||||
- DOMAIN-KEYWORD,weibo
|
||||
- DOMAIN,tieba.baidu.com
|
||||
- DOMAIN,tbmsg.baidu.com
|
||||
- DOMAIN,tb5.bdstatic.com
|
||||
- DOMAIN,fclog.baidu.com
|
||||
- DOMAIN,gsp0.baidu.com
|
||||
- DOMAIN,hm.baidu.com
|
||||
- DOMAIN,www.baidu.com
|
||||
- DOMAIN,tiebac.baidu.com
|
||||
- IP-CIDR,180.76.76.0/24
|
||||
- DOMAIN,httpsdns.baidu.com
|
||||
- DOMAIN,c.tieba.baidu.com
|
||||
- DOMAIN,httpdns.baidu.com
|
||||
- DOMAIN,httpdns.baidubce.com
|
||||
- DOMAIN,szshort.weixin.qq.com
|
||||
- DOMAIN,szextshort.weixin.qq.com
|
||||
- DOMAIN,szminorshort.weixin.qq.com
|
||||
- DOMAIN,mp.weixin.qq.com
|
||||
- DOMAIN-SUFFIX,zhihu.com
|
||||
- IP-CIDR,103.41.167.0/24
|
||||
- IP-CIDR,118.89.204.198/23,REJECT
|
||||
- IP-CIDR6,2402:4e00:1200:ed00:0:9089:6dac:96b6/40,REJECT
|
||||
- DOMAIN-KEYWORD,core-c-lq
|
||||
- DOMAIN-KEYWORD,core-lq
|
||||
- DOMAIN-KEYWORD,normal-c-lq
|
||||
- DOMAIN-KEYWORD,normal-lq
|
||||
- DOMAIN-KEYWORD,search-quic-lq
|
||||
- DOMAIN-KEYWORD,search-lq
|
||||
- DOMAIN-SUFFIX,zijieapi.com,DIRECT
|
||||
- DOMAIN-SUFFIX,ecombdapi.com,DIRECT
|
||||
- DOMAIN-KEYWORD,-normal-hl
|
||||
- DOMAIN-KEYWORD,-normal-c-hl
|
||||
- DOMAIN-KEYWORD,-core-c-hl
|
||||
- DOMAIN-KEYWORD,-normal-lf
|
||||
- DOMAIN-KEYWORD,-normal-c-lf
|
||||
- DOMAIN-KEYWORD,-core-c-lf
|
||||
- DOMAIN,sso.douyin.com
|
||||
- DOMAIN,www.douyin.com
|
||||
- DOMAIN-SUFFIX,snssdk.com
|
||||
- DOMAIN-SUFFIX,toutiaoapi.com
|
||||
- DOMAIN-SUFFIX,gifshow.com
|
||||
- DOMAIN-SUFFIX,ksapisrv.com
|
||||
- DOMAIN-SUFFIX,xiaohongshu.com
|
||||
- DOMAIN,keylol.com
|
||||
- DOMAIN-SUFFIX,ixigua.com
|
||||
- DOMAIN,www.wenshushu.cn
|
||||
- IP-CIDR,119.29.29.98/32,REJECT
|
||||
- DOMAIN,frodo.douban.com
|
||||
- DOMAIN,www.douban.com
|
||||
- DOMAIN,api.coolapk.com
|
||||
- DOMAIN,api.taptapdada.com
|
||||
- DOMAIN,god.gameyw.netease.com
|
||||
- DOMAIN-SUFFIX,huya.com
|
||||
- DOMAIN-SUFFIX,dongqiudi.com
|
||||
- DOMAIN,ngabbs.com
|
||||
- DOMAIN,api.vip.miui.com
|
||||
- DOMAIN-SUFFIX,music.163.com
|
||||
- DOMAIN,nstool.netease.com
|
||||
- DOMAIN,wanproxy.127.net
|
||||
- DOMAIN,mam.netease.com
|
||||
- DOMAIN,dt.netease.im
|
||||
- DOMAIN,api.iplay.163.com
|
||||
- DOMAIN,api.k.163.com
|
||||
- DOMAIN,lbs.netease.im
|
||||
- DOMAIN,wannos.127.net
|
||||
- DOMAIN,ac.dun.163.com
|
||||
- DOMAIN-SUFFIX,music.126.net
|
||||
- DOMAIN-SUFFIX,laiqukankan.com
|
||||
- DOMAIN-SUFFIX,music.ntes53.netease.com
|
||||
- IP-CIDR,101.71.154.241/32
|
||||
- IP-CIDR,103.126.92.132/32
|
||||
- IP-CIDR,103.126.92.133/32
|
||||
- IP-CIDR,112.13.119.18/32
|
||||
- IP-CIDR,112.13.122.4/32
|
||||
- IP-CIDR,115.236.118.34/32
|
||||
- IP-CIDR,115.236.121.4/32
|
||||
- IP-CIDR,45.254.48.1/32
|
||||
- IP-CIDR,59.111.160.195/32
|
||||
- IP-CIDR,59.111.19.33/32
|
||||
- IP-CIDR,59.111.19.53/32
|
||||
- DOMAIN-SUFFIX,hls3-akm.douyucdn.cn,DIRECT
|
||||
- DOMAIN-SUFFIX,hlsa-akm.douyucdn.cn,DIRECT
|
||||
- DOMAIN-SUFFIX,hls1a-akm.douyucdn.cn,DIRECT
|
||||
- DOMAIN-SUFFIX,hls3a-akm.douyucdn.cn,DIRECT
|
||||
- DOMAIN-SUFFIX,vplay1a.douyucdn.cn,DIRECT
|
||||
- DOMAIN-SUFFIX,vplay3a.douyucdn.cn,DIRECT
|
||||
- DOMAIN-SUFFIX,ws-tct.douyucdn.cn,DIRECT
|
||||
- DOMAIN-SUFFIX,akm-tct.douyucdn.cn,DIRECT
|
||||
- DOMAIN-SUFFIX,tx2play1.douyucdn.cn,DIRECT
|
||||
- DOMAIN-SUFFIX,tc-tct1.douyucdn.cn,DIRECT
|
||||
- DOMAIN-SUFFIX,wsproxy.douyu.com,DIRECT
|
||||
- DOMAIN-SUFFIX,danmuproxy.douyu.com,DIRECT
|
||||
- DOMAIN-SUFFIX,img.douyucdn.cn,DIRECT
|
||||
- DOMAIN-SUFFIX,douyucdn.cn
|
||||
- DOMAIN-SUFFIX,douyu.com
|
||||
- DOMAIN,bbs-api.mihoyo.com
|
||||
- DOMAIN,bbs-api.miyoushe.com
|
||||
- DOMAIN-SUFFIX,douban.com
|
||||
- IP-CIDR,49.233.242.15/32
|
||||
- IP-CIDR,81.70.124.99/32
|
||||
- IP-CIDR,81.70.125.19/32
|
||||
- IP-CIDR,140.143.177.206/32
|
||||
- DOMAIN,api.xiaoheihe.cn
|
||||
- DOMAIN,y.qq.com,DIRECT
|
||||
- DOMAIN-SUFFIX,y.qq.com
|
||||
- DOMAIN,zonai.skland.com
|
@ -1,3 +0,0 @@
|
||||
payload:
|
||||
# > ChatGPT
|
||||
- DOMAIN-SUFFIX,openai.com
|
@ -1,366 +0,0 @@
|
||||
payload:
|
||||
# China Area Network
|
||||
# > 360
|
||||
- DOMAIN-SUFFIX,qhres.com
|
||||
- DOMAIN-SUFFIX,qhimg.com
|
||||
# > Alibaba
|
||||
# USER-AGENT,%E4%BC%98%E9%85%B7*
|
||||
- DOMAIN-SUFFIX,alibaba.com
|
||||
- DOMAIN-SUFFIX,alibabausercontent.com
|
||||
- DOMAIN-SUFFIX,alicdn.com
|
||||
- DOMAIN-SUFFIX,alikunlun.com
|
||||
- DOMAIN-SUFFIX,alipay.com
|
||||
- DOMAIN-SUFFIX,amap.com
|
||||
- DOMAIN-SUFFIX,autonavi.com
|
||||
- DOMAIN-SUFFIX,dingtalk.com
|
||||
- DOMAIN-SUFFIX,mxhichina.com
|
||||
- DOMAIN-SUFFIX,soku.com
|
||||
- DOMAIN-SUFFIX,taobao.com
|
||||
- DOMAIN-SUFFIX,tmall.com
|
||||
- DOMAIN-SUFFIX,tmall.hk
|
||||
- DOMAIN-SUFFIX,ykimg.com
|
||||
- DOMAIN-SUFFIX,youku.com
|
||||
- DOMAIN-SUFFIX,xiami.com
|
||||
- DOMAIN-SUFFIX,xiami.net
|
||||
# > Apple
|
||||
- DOMAIN-SUFFIX,aaplimg.com
|
||||
- DOMAIN-SUFFIX,apple.co
|
||||
- DOMAIN-SUFFIX,apple.com
|
||||
- DOMAIN-SUFFIX,apple-cloudkit.com
|
||||
- DOMAIN-SUFFIX,appstore.com
|
||||
- DOMAIN-SUFFIX,cdn-apple.com
|
||||
- DOMAIN-SUFFIX,icloud.com
|
||||
- DOMAIN-SUFFIX,icloud-content.com
|
||||
- DOMAIN-SUFFIX,me.com
|
||||
- DOMAIN-SUFFIX,mzstatic.com
|
||||
# - DOMAIN-KEYWORD,apple.com.akadns.net
|
||||
# - DOMAIN-KEYWORD,icloud.com.akadns.net
|
||||
# > Baidu
|
||||
- DOMAIN-SUFFIX,baidu.com
|
||||
- DOMAIN-SUFFIX,baidubcr.com
|
||||
- DOMAIN-SUFFIX,baidupan.com
|
||||
- DOMAIN-SUFFIX,baidupcs.com
|
||||
- DOMAIN-SUFFIX,bdimg.com
|
||||
- DOMAIN-SUFFIX,bdstatic.com
|
||||
- DOMAIN-SUFFIX,yunjiasu-cdn.net
|
||||
# > Battle
|
||||
- DOMAIN-SUFFIX,battle.net
|
||||
- DOMAIN-SUFFIX,blizzard.com
|
||||
# > bilibili
|
||||
- DOMAIN-SUFFIX,acgvideo.com
|
||||
- DOMAIN-SUFFIX,biliapi.com
|
||||
- DOMAIN-SUFFIX,biliapi.net
|
||||
- DOMAIN-SUFFIX,bilibili.com
|
||||
- DOMAIN-SUFFIX,bilibili.tv
|
||||
- DOMAIN-SUFFIX,hdslb.com
|
||||
# > ByteDance
|
||||
- DOMAIN-SUFFIX,feiliao.com
|
||||
- DOMAIN-SUFFIX,pstatp.com
|
||||
- DOMAIN-SUFFIX,snssdk.com
|
||||
- DOMAIN-SUFFIX,iesdouyin.com
|
||||
- DOMAIN-SUFFIX,toutiao.com
|
||||
# > CCTV
|
||||
- DOMAIN-SUFFIX,cctv.com
|
||||
- DOMAIN-SUFFIX,cctvpic.com
|
||||
- DOMAIN-SUFFIX,livechina.com
|
||||
# > ChinaTelecom
|
||||
- DOMAIN-SUFFIX,21cn.com
|
||||
# > DiDi
|
||||
- DOMAIN-SUFFIX,didialift.com
|
||||
- DOMAIN-SUFFIX,didiglobal.com
|
||||
- DOMAIN-SUFFIX,udache.com
|
||||
# > HunanTV
|
||||
- DOMAIN-SUFFIX,hitv.com
|
||||
- DOMAIN-SUFFIX,mgtv.com
|
||||
# > iQiyi
|
||||
- DOMAIN-SUFFIX,iqiyi.com
|
||||
- DOMAIN-SUFFIX,iqiyipic.com
|
||||
- DOMAIN-SUFFIX,71.am
|
||||
# > JD
|
||||
- DOMAIN-SUFFIX,jd.com
|
||||
- DOMAIN-SUFFIX,jd.hk
|
||||
- DOMAIN-SUFFIX,jdpay.com
|
||||
- DOMAIN-SUFFIX,360buyimg.com
|
||||
# > Kingsoft
|
||||
- DOMAIN-SUFFIX,iciba.com
|
||||
- DOMAIN-SUFFIX,ksosoft.com
|
||||
# > Meitu
|
||||
- DOMAIN-SUFFIX,meitu.com
|
||||
- DOMAIN-SUFFIX,meitudata.com
|
||||
- DOMAIN-SUFFIX,meitustat.com
|
||||
- DOMAIN-SUFFIX,meipai.com
|
||||
# > Meituan
|
||||
- DOMAIN-SUFFIX,dianping.com
|
||||
- DOMAIN-SUFFIX,dpfile.com
|
||||
- DOMAIN-SUFFIX,meituan.com
|
||||
- DOMAIN-SUFFIX,meituan.net
|
||||
# > MI
|
||||
- DOMAIN-SUFFIX,duokan.com
|
||||
- DOMAIN-SUFFIX,mi.com
|
||||
- DOMAIN-SUFFIX,mi-img.com
|
||||
- DOMAIN-SUFFIX,miui.com
|
||||
- DOMAIN-SUFFIX,miwifi.com
|
||||
- DOMAIN-SUFFIX,xiaomi.com
|
||||
- DOMAIN-SUFFIX,xiaomi.net
|
||||
# > Microsoft
|
||||
# - DOMAIN-SUFFIX,microsoft.com
|
||||
# - DOMAIN-SUFFIX,msecnd.net
|
||||
# - DOMAIN-SUFFIX,office.com
|
||||
# - DOMAIN-SUFFIX,office365.com
|
||||
# - DOMAIN-SUFFIX,s-microsoft.com
|
||||
# - DOMAIN-SUFFIX,windows.com
|
||||
- DOMAIN-SUFFIX,visualstudio.com
|
||||
# >> Microsoft Software Download
|
||||
# - DOMAIN,software-download.microsoft.com
|
||||
# - DOMAIN-KEYWORD,-microsoft-com.akamaized.net
|
||||
# >> OneDrive
|
||||
# - DOMAIN-SUFFIX,1drv.com
|
||||
# - DOMAIN-SUFFIX,storage.live.com
|
||||
# >> Outlook
|
||||
- DOMAIN-SUFFIX,hotmail.com
|
||||
- DOMAIN-SUFFIX,outlook.com
|
||||
- DOMAIN,outlook.office365.com
|
||||
- DOMAIN,smtp.office365.com
|
||||
# >> Windows Server Update Services
|
||||
- DOMAIN-SUFFIX,dl.delivery.mp.microsoft.com
|
||||
- DOMAIN-SUFFIX,update.microsoft.com
|
||||
- DOMAIN-SUFFIX,windowsupdate.com
|
||||
- DOMAIN-SUFFIX,windowsupdate.microsoft.com
|
||||
- DOMAIN,download.microsoft.com
|
||||
- DOMAIN,wustat.windows.com
|
||||
- DOMAIN,ntservicepack.microsoft.com
|
||||
# > NetEase
|
||||
# USER-AGENT,NeteaseMusic*
|
||||
# USER-AGENT,%E7%BD%91%E6%98%93%E4%BA%91%E9%9F%B3%E4%B9%90*
|
||||
- DOMAIN-SUFFIX,163.com
|
||||
- DOMAIN-SUFFIX,126.com
|
||||
- DOMAIN-SUFFIX,126.net
|
||||
- DOMAIN-SUFFIX,127.net
|
||||
- DOMAIN-SUFFIX,163yun.com
|
||||
- DOMAIN-SUFFIX,lofter.com
|
||||
- DOMAIN-SUFFIX,netease.com
|
||||
- DOMAIN-SUFFIX,ydstatic.com
|
||||
- DOMAIN-SUFFIX,youdao.com
|
||||
# > PayPal
|
||||
# USER-AGENT,PayPal*
|
||||
- DOMAIN-SUFFIX,paypal.com
|
||||
- DOMAIN-SUFFIX,paypal.me
|
||||
- DOMAIN-SUFFIX,paypalobjects.com
|
||||
# > Sina
|
||||
- DOMAIN-SUFFIX,sina.com
|
||||
- DOMAIN-SUFFIX,weibo.com
|
||||
- DOMAIN-SUFFIX,weibocdn.com
|
||||
# > Sohu
|
||||
- DOMAIN-SUFFIX,sohu.com
|
||||
- DOMAIN-SUFFIX,sohucs.com
|
||||
- DOMAIN-SUFFIX,sohu-inc.com
|
||||
- DOMAIN-SUFFIX,v-56.com
|
||||
# > Sogo
|
||||
- DOMAIN-SUFFIX,sogo.com
|
||||
- DOMAIN-SUFFIX,sogou.com
|
||||
- DOMAIN-SUFFIX,sogoucdn.com
|
||||
# > Steam
|
||||
- DOMAIN-SUFFIX,steamcontent.com
|
||||
- DOMAIN-SUFFIX,steampowered.com
|
||||
- DOMAIN-SUFFIX,steamstatic.com
|
||||
# > Tencent
|
||||
# USER-AGENT,MicroMessenger*
|
||||
# USER-AGENT,WeChat*
|
||||
# USER-AGENT,%E4%BC%81%E4%B8%9A%E5%BE%AE%E4%BF%A1*
|
||||
- DOMAIN-SUFFIX,gtimg.com
|
||||
- DOMAIN-SUFFIX,idqqimg.com
|
||||
- DOMAIN-SUFFIX,igamecj.com
|
||||
- DOMAIN-SUFFIX,myapp.com
|
||||
- DOMAIN-SUFFIX,myqcloud.com
|
||||
- DOMAIN-SUFFIX,qq.com
|
||||
- DOMAIN-SUFFIX,qqmail.com
|
||||
- DOMAIN-SUFFIX,servicewechat.com
|
||||
- DOMAIN-SUFFIX,tencent.com
|
||||
- DOMAIN-SUFFIX,tencent-cloud.com
|
||||
- DOMAIN-SUFFIX,tencent-cloud.net
|
||||
- DOMAIN-SUFFIX,tenpay.com
|
||||
- DOMAIN-SUFFIX,wechat.com
|
||||
- DOMAIN,file-igamecj.akamaized.net
|
||||
- IP-CIDR,182.254.116.0/24,no-resolve
|
||||
- IP-CIDR,203.205.254.0/23,no-resolve
|
||||
# > Content Delivery Network
|
||||
- DOMAIN-SUFFIX,ccgslb.com
|
||||
- DOMAIN-SUFFIX,ccgslb.net
|
||||
- DOMAIN-SUFFIX,chinanetcenter.com
|
||||
- DOMAIN-SUFFIX,meixincdn.com
|
||||
- DOMAIN-SUFFIX,ourdvs.com
|
||||
- DOMAIN-SUFFIX,staticdn.net
|
||||
- DOMAIN-SUFFIX,wangsu.com
|
||||
# > IP Query
|
||||
- DOMAIN-SUFFIX,ipip.net
|
||||
- DOMAIN-SUFFIX,ip.la
|
||||
- DOMAIN-SUFFIX,ip.sb
|
||||
- DOMAIN-SUFFIX,ip-cdn.com
|
||||
- DOMAIN-SUFFIX,ipv6-test.com
|
||||
- DOMAIN-SUFFIX,myip.la
|
||||
- DOMAIN-SUFFIX,test-ipv6.com
|
||||
- DOMAIN-SUFFIX,whatismyip.com
|
||||
- DOMAIN,ip.istatmenus.app
|
||||
- DOMAIN,sms.imagetasks.com
|
||||
# > Speed Test
|
||||
# - DOMAIN-SUFFIX,speedtest.net
|
||||
- DOMAIN-SUFFIX,netspeedtestmaster.com
|
||||
- DOMAIN,speedtest.macpaw.com
|
||||
# > Private Tracker
|
||||
- DOMAIN-SUFFIX,acg.rip
|
||||
- DOMAIN-SUFFIX,animebytes.tv
|
||||
- DOMAIN-SUFFIX,awesome-hd.me
|
||||
- DOMAIN-SUFFIX,broadcasthe.net
|
||||
- DOMAIN-SUFFIX,chdbits.co
|
||||
- DOMAIN-SUFFIX,classix-unlimited.co.uk
|
||||
- DOMAIN-SUFFIX,comicat.org
|
||||
- DOMAIN-SUFFIX,empornium.me
|
||||
- DOMAIN-SUFFIX,gazellegames.net
|
||||
- DOMAIN-SUFFIX,hdbits.org
|
||||
- DOMAIN-SUFFIX,hdchina.org
|
||||
- DOMAIN-SUFFIX,hddolby.com
|
||||
- DOMAIN-SUFFIX,hdhome.org
|
||||
- DOMAIN-SUFFIX,hdsky.me
|
||||
- DOMAIN-SUFFIX,icetorrent.org
|
||||
- DOMAIN-SUFFIX,jpopsuki.eu
|
||||
- DOMAIN-SUFFIX,keepfrds.com
|
||||
- DOMAIN-SUFFIX,madsrevolution.net
|
||||
- DOMAIN-SUFFIX,morethan.tv
|
||||
- DOMAIN-SUFFIX,m-team.cc
|
||||
- DOMAIN-SUFFIX,myanonamouse.net
|
||||
- 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,pterclub.com
|
||||
- DOMAIN-SUFFIX,redacted.ch
|
||||
- DOMAIN-SUFFIX,springsunday.net
|
||||
- DOMAIN-SUFFIX,tjupt.org
|
||||
- DOMAIN-SUFFIX,totheglory.im
|
||||
# > Other
|
||||
- DOMAIN-SUFFIX,cn
|
||||
- DOMAIN-SUFFIX,115.com
|
||||
- DOMAIN-SUFFIX,360in.com
|
||||
- DOMAIN-SUFFIX,51ym.me
|
||||
- DOMAIN-SUFFIX,8686c.com
|
||||
- DOMAIN-SUFFIX,99.com
|
||||
- DOMAIN-SUFFIX,abchina.com
|
||||
- DOMAIN-SUFFIX,accuweather.com
|
||||
- DOMAIN-SUFFIX,agora.io
|
||||
- DOMAIN-SUFFIX,aicoinstorge.com
|
||||
- DOMAIN-SUFFIX,air-matters.com
|
||||
- DOMAIN-SUFFIX,air-matters.io
|
||||
- DOMAIN-SUFFIX,aixifan.com
|
||||
- DOMAIN-SUFFIX,amd.com
|
||||
- DOMAIN-SUFFIX,b612.net
|
||||
- DOMAIN-SUFFIX,bdatu.com
|
||||
- DOMAIN-SUFFIX,beitaichufang.com
|
||||
- DOMAIN-SUFFIX,booking.com
|
||||
- DOMAIN-SUFFIX,bstatic.com
|
||||
- DOMAIN-SUFFIX,cailianpress.com
|
||||
- DOMAIN-SUFFIX,camera360.com
|
||||
- DOMAIN-SUFFIX,chaoxing.com
|
||||
- DOMAIN-SUFFIX,chaoxing.com
|
||||
- DOMAIN-SUFFIX,chinaso.com
|
||||
- DOMAIN-SUFFIX,chuimg.com
|
||||
- DOMAIN-SUFFIX,chunyu.mobi
|
||||
- DOMAIN-SUFFIX,cibntv.net
|
||||
- DOMAIN-SUFFIX,cmbchina.com
|
||||
- DOMAIN-SUFFIX,cmbimg.com
|
||||
- DOMAIN-SUFFIX,coolapk.com
|
||||
- DOMAIN-SUFFIX,ctrip.com
|
||||
- DOMAIN-SUFFIX,dfcfw.com
|
||||
- DOMAIN-SUFFIX,dji.net
|
||||
- DOMAIN-SUFFIX,docschina.org
|
||||
- DOMAIN-SUFFIX,douban.com
|
||||
- DOMAIN-SUFFIX,doubanio.com
|
||||
- DOMAIN-SUFFIX,douyu.com
|
||||
- DOMAIN-SUFFIX,dxycdn.com
|
||||
- DOMAIN-SUFFIX,dytt8.net
|
||||
- DOMAIN-SUFFIX,eastmoney.com
|
||||
- DOMAIN-SUFFIX,eudic.net
|
||||
- DOMAIN-SUFFIX,feng.com
|
||||
- DOMAIN-SUFFIX,fengkongcloud.com
|
||||
- DOMAIN-SUFFIX,frdic.com
|
||||
- DOMAIN-SUFFIX,futu5.com
|
||||
- DOMAIN-SUFFIX,futunn.com
|
||||
- DOMAIN-SUFFIX,gandi.net
|
||||
- DOMAIN-SUFFIX,gcores.com
|
||||
- DOMAIN-SUFFIX,geilicdn.com
|
||||
- DOMAIN-SUFFIX,getpricetag.com
|
||||
- DOMAIN-SUFFIX,gifshow.com
|
||||
- DOMAIN-SUFFIX,godic.net
|
||||
- DOMAIN-SUFFIX,heweather.net
|
||||
- DOMAIN-SUFFIX,hicloud.com
|
||||
- DOMAIN-SUFFIX,hongxiu.com
|
||||
- DOMAIN-SUFFIX,hostbuf.com
|
||||
- DOMAIN-SUFFIX,huxiucdn.com
|
||||
- DOMAIN-SUFFIX,huya.com
|
||||
- DOMAIN-SUFFIX,ibm.com
|
||||
- DOMAIN-SUFFIX,infinitynewtab.com
|
||||
- DOMAIN-SUFFIX,ithome.com
|
||||
- DOMAIN-SUFFIX,java.com
|
||||
- DOMAIN-SUFFIX,jianguoyun.com
|
||||
- DOMAIN-SUFFIX,jianshu.com
|
||||
- DOMAIN-SUFFIX,jianshu.io
|
||||
- DOMAIN-SUFFIX,jidian.im
|
||||
- DOMAIN-SUFFIX,kaiyanapp.com
|
||||
- DOMAIN-SUFFIX,kaspersky-labs.com
|
||||
- DOMAIN-SUFFIX,keepcdn.com
|
||||
- DOMAIN-SUFFIX,kkmh.com
|
||||
- DOMAIN-SUFFIX,lanzous.com
|
||||
- DOMAIN-SUFFIX,luojilab.com
|
||||
- DOMAIN-SUFFIX,maoyan.com
|
||||
- DOMAIN-SUFFIX,maoyun.tv
|
||||
- DOMAIN-SUFFIX,mls-cdn.com
|
||||
- DOMAIN-SUFFIX,mobike.com
|
||||
- DOMAIN-SUFFIX,moke.com
|
||||
- DOMAIN-SUFFIX,mubu.com
|
||||
- DOMAIN-SUFFIX,myzaker.com
|
||||
- DOMAIN-SUFFIX,nim-lang-cn.org
|
||||
- DOMAIN-SUFFIX,ntp.org
|
||||
- DOMAIN-SUFFIX,nvidia.com
|
||||
- DOMAIN-SUFFIX,oracle.com
|
||||
- DOMAIN-SUFFIX,plex.tv
|
||||
- DOMAIN-SUFFIX,qidian.com
|
||||
- DOMAIN-SUFFIX,qweather.com
|
||||
- DOMAIN-SUFFIX,qyer.com
|
||||
- DOMAIN-SUFFIX,qyerstatic.com
|
||||
- DOMAIN-SUFFIX,raychase.net
|
||||
- DOMAIN-SUFFIX,ronghub.com
|
||||
- DOMAIN-SUFFIX,ruguoapp.com
|
||||
- DOMAIN-SUFFIX,sankuai.com
|
||||
- DOMAIN-SUFFIX,scomper.me
|
||||
- DOMAIN-SUFFIX,shouqianba.com
|
||||
- DOMAIN-SUFFIX,sm.ms
|
||||
- DOMAIN-SUFFIX,smzdm.com
|
||||
- DOMAIN-SUFFIX,snapdrop.net
|
||||
- DOMAIN-SUFFIX,snwx.com
|
||||
- DOMAIN-SUFFIX,s-reader.com
|
||||
- DOMAIN-SUFFIX,sspai.com
|
||||
- DOMAIN-SUFFIX,subhd.tv
|
||||
- DOMAIN-SUFFIX,takungpao.com
|
||||
- DOMAIN-SUFFIX,teamviewer.com
|
||||
- DOMAIN-SUFFIX,tianyancha.com
|
||||
- DOMAIN-SUFFIX,tophub.today
|
||||
- DOMAIN-SUFFIX,uning.com
|
||||
- DOMAIN-SUFFIX,weather.com
|
||||
- DOMAIN-SUFFIX,weico.cc
|
||||
- DOMAIN-SUFFIX,weidian.com
|
||||
- DOMAIN-SUFFIX,xiachufang.com
|
||||
- DOMAIN-SUFFIX,xiaoka.tv
|
||||
- DOMAIN-SUFFIX,ximalaya.com
|
||||
- DOMAIN-SUFFIX,xinhuanet.com
|
||||
- DOMAIN-SUFFIX,xmcdn.com
|
||||
- DOMAIN-SUFFIX,yangkeduo.com
|
||||
- DOMAIN-SUFFIX,yizhibo.com
|
||||
- DOMAIN-SUFFIX,zhangzishi.cc
|
||||
- DOMAIN-SUFFIX,zhihu.com
|
||||
- DOMAIN-SUFFIX,zhihuishu.com
|
||||
- DOMAIN-SUFFIX,zhimg.com
|
||||
- DOMAIN-SUFFIX,zhuihd.com
|
||||
|
||||
- DOMAIN,download.jetbrains.com
|
||||
- DOMAIN,images-cn.ssl-images-amazon.com
|
File diff suppressed because it is too large
Load Diff
@ -1,622 +0,0 @@
|
||||
payload:
|
||||
# (DNS Cache Pollution)
|
||||
# > Amazon
|
||||
- DOMAIN-SUFFIX,amazon.co.jp
|
||||
- DOMAIN,d3c33hcgiwev3.cloudfront.net
|
||||
- DOMAIN,payments-jp.amazon.com
|
||||
- DOMAIN,s3-ap-northeast-1.amazonaws.com
|
||||
- DOMAIN,s3-ap-southeast-2.amazonaws.com
|
||||
# > Akamai
|
||||
- DOMAIN,a248.e.akamai.net
|
||||
- DOMAIN,a771.dscq.akamai.net
|
||||
# > Apple
|
||||
- DOMAIN,testflight.apple.com
|
||||
# > Crypto
|
||||
- DOMAIN-SUFFIX,aex.com
|
||||
- DOMAIN-SUFFIX,bibox.com
|
||||
- DOMAIN-SUFFIX,binance.cc
|
||||
- DOMAIN-SUFFIX,binance.com
|
||||
- DOMAIN-SUFFIX,binance.us
|
||||
- DOMAIN-SUFFIX,bitcointalk.org
|
||||
- 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,coingecko.com
|
||||
- DOMAIN-SUFFIX,coinmarketcap.com
|
||||
- DOMAIN-SUFFIX,coinone.co.kr
|
||||
- DOMAIN-SUFFIX,ftx.com
|
||||
- DOMAIN-SUFFIX,gate.io
|
||||
- DOMAIN-SUFFIX,gemini.com
|
||||
- DOMAIN-SUFFIX,huobi.com
|
||||
- DOMAIN-SUFFIX,korbit.co.kr
|
||||
- DOMAIN-SUFFIX,kraken.com
|
||||
- DOMAIN-SUFFIX,kucoin.com
|
||||
- DOMAIN-SUFFIX,liquid.com
|
||||
- DOMAIN-SUFFIX,okex.com
|
||||
- DOMAIN-SUFFIX,poloniex.com
|
||||
- DOMAIN-SUFFIX,uniswap.org
|
||||
- DOMAIN-SUFFIX,zb.com
|
||||
# > Discord
|
||||
- DOMAIN-SUFFIX,discord.com
|
||||
- DOMAIN-SUFFIX,discordapp.com
|
||||
- DOMAIN-SUFFIX,discordapp.net
|
||||
# > Dropbox
|
||||
- DOMAIN-SUFFIX,dropbox.com
|
||||
- DOMAIN-SUFFIX,dropboxapi.com
|
||||
- DOMAIN-SUFFIX,dropboxusercontent.com
|
||||
# > Facebook
|
||||
- DOMAIN-SUFFIX,cdninstagram.com
|
||||
- DOMAIN-SUFFIX,facebook.com
|
||||
- DOMAIN-SUFFIX,facebook.net
|
||||
- DOMAIN-SUFFIX,fb.com
|
||||
- DOMAIN-SUFFIX,fb.me
|
||||
- DOMAIN-SUFFIX,fbaddins.com
|
||||
- DOMAIN-SUFFIX,fbcdn.net
|
||||
- DOMAIN-SUFFIX,fbsbx.com
|
||||
- DOMAIN-SUFFIX,fbworkmail.com
|
||||
- DOMAIN-SUFFIX,instagram.com
|
||||
- DOMAIN-SUFFIX,m.me
|
||||
- DOMAIN-SUFFIX,messenger.com
|
||||
- DOMAIN-SUFFIX,oculus.com
|
||||
- DOMAIN-SUFFIX,oculuscdn.com
|
||||
- DOMAIN-SUFFIX,rocksdb.org
|
||||
- DOMAIN-SUFFIX,whatsapp.com
|
||||
- DOMAIN-SUFFIX,whatsapp.net
|
||||
# > Github
|
||||
- DOMAIN-SUFFIX,github.com
|
||||
- DOMAIN-SUFFIX,github.io
|
||||
- DOMAIN-SUFFIX,githubusercontent.com
|
||||
# > Google
|
||||
- DOMAIN-SUFFIX,appspot.com
|
||||
- DOMAIN-SUFFIX,blogger.com
|
||||
- DOMAIN-SUFFIX,getoutline.org
|
||||
- DOMAIN-SUFFIX,gvt0.com
|
||||
- DOMAIN-SUFFIX,gvt1.com
|
||||
- DOMAIN-SUFFIX,gvt3.com
|
||||
- DOMAIN-SUFFIX,xn--ngstr-lra8j.com
|
||||
- DOMAIN-SUFFIX,ytimg.com
|
||||
- DOMAIN-KEYWORD,google
|
||||
- DOMAIN-KEYWORD,.blogspot.
|
||||
# > Line
|
||||
- DOMAIN-SUFFIX,line.me
|
||||
- DOMAIN-SUFFIX,line-apps.com
|
||||
- DOMAIN-SUFFIX,line-scdn.net
|
||||
- DOMAIN-SUFFIX,naver.jp
|
||||
- IP-CIDR,103.2.30.0/23,no-resolve
|
||||
- IP-CIDR,125.209.208.0/20,no-resolve
|
||||
- IP-CIDR,147.92.128.0/17,no-resolve
|
||||
- IP-CIDR,203.104.144.0/21,no-resolve
|
||||
# > Microsoft
|
||||
- DOMAIN-SUFFIX,aka.ms
|
||||
- DOMAIN-SUFFIX,onedrive.live.com
|
||||
- DOMAIN-SUFFIX,streaming.mediaservices.windows.net
|
||||
- DOMAIN,assets1.xboxlive.com
|
||||
- DOMAIN,assets2.xboxlive.com
|
||||
- DOMAIN,az416426.vo.msecnd.net
|
||||
- DOMAIN,az668014.vo.msecnd.net
|
||||
# > The New York Times
|
||||
- DOMAIN-SUFFIX,nyt.com
|
||||
- DOMAIN-SUFFIX,nytchina.com
|
||||
- DOMAIN-SUFFIX,nytcn.me
|
||||
- DOMAIN-SUFFIX,nytco.com
|
||||
- DOMAIN-SUFFIX,nytimes.com
|
||||
- DOMAIN-SUFFIX,nytimg.com
|
||||
- DOMAIN-SUFFIX,nytlog.com
|
||||
- DOMAIN-SUFFIX,nytstyle.com
|
||||
# > Pinterest
|
||||
- DOMAIN-SUFFIX,pinterest.at
|
||||
- DOMAIN-SUFFIX,pinterest.ca
|
||||
- DOMAIN-SUFFIX,pinterest.co.uk
|
||||
- DOMAIN-SUFFIX,pinterest.com
|
||||
- DOMAIN-SUFFIX,pinterest.de
|
||||
- DOMAIN-SUFFIX,pinterest.fr
|
||||
- DOMAIN-SUFFIX,pinterest.jp
|
||||
- DOMAIN-SUFFIX,pinterest.se
|
||||
# > pixiv
|
||||
- DOMAIN-SUFFIX,pixiv.net
|
||||
- DOMAIN-SUFFIX,pixiv.org
|
||||
- DOMAIN-SUFFIX,pximg.net
|
||||
# > Reddit
|
||||
- DOMAIN-SUFFIX,redd.it
|
||||
- DOMAIN-SUFFIX,reddit.com
|
||||
- DOMAIN-SUFFIX,redditmedia.com
|
||||
# > Telegram
|
||||
- DOMAIN-SUFFIX,telegra.ph
|
||||
- DOMAIN-SUFFIX,telegram.org
|
||||
- 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,91.108.56.0/22,no-resolve
|
||||
- IP-CIDR,91.105.192.0/23,no-resolve
|
||||
- IP-CIDR,149.154.160.0/20,no-resolve
|
||||
- IP-CIDR,185.76.151.0/24,no-resolve
|
||||
- IP-CIDR,2001:b28:f23d::/48,no-resolve
|
||||
- IP-CIDR,2001:b28:f23f::/48,no-resolve
|
||||
- IP-CIDR,2001:67c:4e8::/48,no-resolve
|
||||
- IP-CIDR,2001:b28:f23c::/48,no-resolve
|
||||
- IP-CIDR,2a0a:f280::/32,no-resolve
|
||||
# > Twitter
|
||||
- DOMAIN-SUFFIX,pscp.tv
|
||||
- DOMAIN-SUFFIX,periscope.tv
|
||||
- DOMAIN-SUFFIX,t.co
|
||||
- DOMAIN-SUFFIX,twimg.co
|
||||
- DOMAIN-SUFFIX,twimg.com
|
||||
- DOMAIN-SUFFIX,twitpic.com
|
||||
- DOMAIN-SUFFIX,twitter.com
|
||||
- DOMAIN-SUFFIX,vine.co
|
||||
# > Wikimedia Foundation
|
||||
- DOMAIN-SUFFIX,wikileaks.org
|
||||
- DOMAIN-SUFFIX,wikimapia.org
|
||||
- DOMAIN-SUFFIX,wikimedia.org
|
||||
- DOMAIN-SUFFIX,wikinews.org
|
||||
- DOMAIN-SUFFIX,wikipedia.org
|
||||
- DOMAIN-SUFFIX,wikiquote.org
|
||||
# > Others
|
||||
- DOMAIN-SUFFIX,4shared.com
|
||||
- DOMAIN-SUFFIX,9cache.com
|
||||
- DOMAIN-SUFFIX,9gag.com
|
||||
- DOMAIN-SUFFIX,abc.com
|
||||
- DOMAIN-SUFFIX,abc.net.au
|
||||
- DOMAIN-SUFFIX,abebooks.com
|
||||
- DOMAIN-SUFFIX,ao3.org
|
||||
- DOMAIN-SUFFIX,apigee.com
|
||||
- DOMAIN-SUFFIX,apkcombo.com
|
||||
- DOMAIN-SUFFIX,apk-dl.com
|
||||
- DOMAIN-SUFFIX,apkfind.com
|
||||
- DOMAIN-SUFFIX,apkmirror.com
|
||||
- DOMAIN-SUFFIX,apkmonk.com
|
||||
- DOMAIN-SUFFIX,apkpure.com
|
||||
- DOMAIN-SUFFIX,aptoide.com
|
||||
- DOMAIN-SUFFIX,archive.is
|
||||
- DOMAIN-SUFFIX,archive.org
|
||||
- DOMAIN-SUFFIX,archiveofourown.com
|
||||
- DOMAIN-SUFFIX,archiveofourown.org
|
||||
- DOMAIN-SUFFIX,arte.tv
|
||||
- DOMAIN-SUFFIX,artstation.com
|
||||
- DOMAIN-SUFFIX,arukas.io
|
||||
- DOMAIN-SUFFIX,ask.com
|
||||
- DOMAIN-SUFFIX,avg.com
|
||||
- DOMAIN-SUFFIX,avgle.com
|
||||
- DOMAIN-SUFFIX,badoo.com
|
||||
- DOMAIN-SUFFIX,bandcamp.com
|
||||
- DOMAIN-SUFFIX,bandwagonhost.com
|
||||
- DOMAIN-SUFFIX,bangkokpost.com
|
||||
- DOMAIN-SUFFIX,bbc.com
|
||||
- DOMAIN-SUFFIX,behance.net
|
||||
- DOMAIN-SUFFIX,biggo.com.tw
|
||||
- DOMAIN-SUFFIX,bit.ly
|
||||
- DOMAIN-SUFFIX,bloglovin.com
|
||||
- DOMAIN-SUFFIX,bloomberg.cn
|
||||
- DOMAIN-SUFFIX,bloomberg.com
|
||||
- DOMAIN-SUFFIX,blubrry.com
|
||||
- DOMAIN-SUFFIX,book.com.tw
|
||||
- DOMAIN-SUFFIX,booklive.jp
|
||||
- DOMAIN-SUFFIX,books.com.tw
|
||||
- DOMAIN-SUFFIX,boslife.net
|
||||
- DOMAIN-SUFFIX,box.com
|
||||
- DOMAIN-SUFFIX,brave.com
|
||||
- DOMAIN-SUFFIX,businessinsider.com
|
||||
- DOMAIN-SUFFIX,buzzfeed.com
|
||||
- DOMAIN-SUFFIX,bwh1.net
|
||||
- DOMAIN-SUFFIX,castbox.fm
|
||||
- DOMAIN-SUFFIX,cbc.ca
|
||||
- DOMAIN-SUFFIX,cdw.com
|
||||
- DOMAIN-SUFFIX,change.org
|
||||
- DOMAIN-SUFFIX,channelnewsasia.com
|
||||
- DOMAIN-SUFFIX,ck101.com
|
||||
- DOMAIN-SUFFIX,clarionproject.org
|
||||
- DOMAIN-SUFFIX,cloudcone.com
|
||||
- DOMAIN-SUFFIX,clubhouseapi.com
|
||||
- DOMAIN-SUFFIX,clyp.it
|
||||
- DOMAIN-SUFFIX,cna.com.tw
|
||||
- DOMAIN-SUFFIX,comparitech.com
|
||||
- DOMAIN-SUFFIX,conoha.jp
|
||||
- DOMAIN-SUFFIX,crucial.com
|
||||
- DOMAIN-SUFFIX,cts.com.tw
|
||||
- DOMAIN-SUFFIX,cw.com.tw
|
||||
- DOMAIN-SUFFIX,cyberctm.com
|
||||
- DOMAIN-SUFFIX,cyclingnews.com
|
||||
- DOMAIN-SUFFIX,dailymotion.com
|
||||
- DOMAIN-SUFFIX,dailyview.tw
|
||||
- DOMAIN-SUFFIX,dandanzan.com
|
||||
- DOMAIN-SUFFIX,daum.net
|
||||
- DOMAIN-SUFFIX,daumcdn.net
|
||||
- DOMAIN-SUFFIX,dcard.tw
|
||||
- DOMAIN-SUFFIX,deadline.com
|
||||
- DOMAIN-SUFFIX,deepdiscount.com
|
||||
- DOMAIN-SUFFIX,depositphotos.com
|
||||
- DOMAIN-SUFFIX,deviantart.com
|
||||
- DOMAIN-SUFFIX,disconnect.me
|
||||
- DOMAIN-SUFFIX,disqus.com
|
||||
- DOMAIN-SUFFIX,dlercloud.com
|
||||
- DOMAIN-SUFFIX,dmhy.org
|
||||
- DOMAIN-SUFFIX,dns2go.com
|
||||
- DOMAIN-SUFFIX,dowjones.com
|
||||
- DOMAIN-SUFFIX,duckduckgo.com
|
||||
- DOMAIN-SUFFIX,duyaoss.com
|
||||
- DOMAIN-SUFFIX,dw.com
|
||||
- DOMAIN-SUFFIX,dynu.com
|
||||
- DOMAIN-SUFFIX,earthcam.com
|
||||
- DOMAIN-SUFFIX,ebookservice.tw
|
||||
- DOMAIN-SUFFIX,economist.com
|
||||
- DOMAIN-SUFFIX,edgecastcdn.net
|
||||
- DOMAIN-SUFFIX,edx-cdn.org
|
||||
- DOMAIN-SUFFIX,elpais.com
|
||||
- DOMAIN-SUFFIX,enanyang.my
|
||||
- DOMAIN-SUFFIX,encyclopedia.com
|
||||
- DOMAIN-SUFFIX,esoir.be
|
||||
- DOMAIN-SUFFIX,etherscan.io
|
||||
- DOMAIN-SUFFIX,euronews.com
|
||||
- DOMAIN-SUFFIX,evozi.com
|
||||
- DOMAIN-SUFFIX,exblog.jp
|
||||
- DOMAIN-SUFFIX,feeder.co
|
||||
- DOMAIN-SUFFIX,feedly.com
|
||||
- DOMAIN-SUFFIX,feedx.net
|
||||
- DOMAIN-SUFFIX,firech.at
|
||||
- DOMAIN-SUFFIX,flickr.com
|
||||
- DOMAIN-SUFFIX,flipboard.com
|
||||
- DOMAIN-SUFFIX,flitto.com
|
||||
- DOMAIN-SUFFIX,foreignpolicy.com
|
||||
- DOMAIN-SUFFIX,fortawesome.com
|
||||
- DOMAIN-SUFFIX,freetls.fastly.net
|
||||
- DOMAIN-SUFFIX,friday.tw
|
||||
- DOMAIN-SUFFIX,ft.com
|
||||
- DOMAIN-SUFFIX,ftchinese.com
|
||||
- DOMAIN-SUFFIX,ftimg.net
|
||||
- DOMAIN-SUFFIX,genius.com
|
||||
- DOMAIN-SUFFIX,getlantern.org
|
||||
- DOMAIN-SUFFIX,getsync.com
|
||||
- DOMAIN-SUFFIX,globalvoices.org
|
||||
- DOMAIN-SUFFIX,goo.ne.jp
|
||||
- DOMAIN-SUFFIX,goodreads.com
|
||||
- DOMAIN-SUFFIX,gov.tw
|
||||
- DOMAIN-SUFFIX,gravatar.com
|
||||
- DOMAIN-SUFFIX,greatfire.org
|
||||
- DOMAIN-SUFFIX,gumroad.com
|
||||
- DOMAIN-SUFFIX,heroku.com
|
||||
- DOMAIN-SUFFIX,hightail.com
|
||||
- DOMAIN-SUFFIX,hk01.com
|
||||
- DOMAIN-SUFFIX,hkbf.org
|
||||
- DOMAIN-SUFFIX,hkbookcity.com
|
||||
- DOMAIN-SUFFIX,hkej.com
|
||||
- DOMAIN-SUFFIX,hket.com
|
||||
- DOMAIN-SUFFIX,hootsuite.com
|
||||
- DOMAIN-SUFFIX,hudson.org
|
||||
- DOMAIN-SUFFIX,huffpost.com
|
||||
- DOMAIN-SUFFIX,hyread.com.tw
|
||||
- DOMAIN-SUFFIX,ibtimes.com
|
||||
- DOMAIN-SUFFIX,i-cable.com
|
||||
- DOMAIN-SUFFIX,icij.org
|
||||
- DOMAIN-SUFFIX,icoco.com
|
||||
- DOMAIN-SUFFIX,imgur.com
|
||||
- DOMAIN-SUFFIX,independent.co.uk
|
||||
- DOMAIN-SUFFIX,initiummall.com
|
||||
- DOMAIN-SUFFIX,inoreader.com
|
||||
- DOMAIN-SUFFIX,insecam.org
|
||||
- DOMAIN-SUFFIX,ipfs.io
|
||||
- DOMAIN-SUFFIX,issuu.com
|
||||
- DOMAIN-SUFFIX,istockphoto.com
|
||||
- DOMAIN-SUFFIX,japantimes.co.jp
|
||||
- DOMAIN-SUFFIX,jiji.com
|
||||
- DOMAIN-SUFFIX,jinx.com
|
||||
- DOMAIN-SUFFIX,jkforum.net
|
||||
- DOMAIN-SUFFIX,joinclubhouse.com
|
||||
- DOMAIN-SUFFIX,joinmastodon.org
|
||||
- DOMAIN-SUFFIX,justmysocks.net
|
||||
- DOMAIN-SUFFIX,justpaste.it
|
||||
- DOMAIN-SUFFIX,kadokawa.co.jp
|
||||
- DOMAIN-SUFFIX,kakao.com
|
||||
- DOMAIN-SUFFIX,kakaocorp.com
|
||||
- DOMAIN-SUFFIX,kik.com
|
||||
- DOMAIN-SUFFIX,kingkong.com.tw
|
||||
- DOMAIN-SUFFIX,knowyourmeme.com
|
||||
- DOMAIN-SUFFIX,kobo.com
|
||||
- DOMAIN-SUFFIX,kobobooks.com
|
||||
- DOMAIN-SUFFIX,kodingen.com
|
||||
- DOMAIN-SUFFIX,lemonde.fr
|
||||
- DOMAIN-SUFFIX,lepoint.fr
|
||||
- DOMAIN-SUFFIX,lihkg.com
|
||||
- DOMAIN-SUFFIX,limbopro.xyz
|
||||
- DOMAIN-SUFFIX,listennotes.com
|
||||
- DOMAIN-SUFFIX,livestream.com
|
||||
- DOMAIN-SUFFIX,logimg.jp
|
||||
- DOMAIN-SUFFIX,logmein.com
|
||||
- DOMAIN-SUFFIX,mail.ru
|
||||
- DOMAIN-SUFFIX,mailchimp.com
|
||||
- DOMAIN-SUFFIX,marc.info
|
||||
- DOMAIN-SUFFIX,matters.news
|
||||
- DOMAIN-SUFFIX,maying.co
|
||||
- DOMAIN-SUFFIX,medium.com
|
||||
- DOMAIN-SUFFIX,mega.nz
|
||||
- DOMAIN-SUFFIX,mergersandinquisitions.com
|
||||
- DOMAIN-SUFFIX,mingpao.com
|
||||
- DOMAIN-SUFFIX,mixi.jp
|
||||
- DOMAIN-SUFFIX,mixlr.com
|
||||
- DOMAIN-SUFFIX,mobile01.com
|
||||
- DOMAIN-SUFFIX,mubi.com
|
||||
- DOMAIN-SUFFIX,myspace.com
|
||||
- DOMAIN-SUFFIX,myspacecdn.com
|
||||
- DOMAIN-SUFFIX,nanyang.com
|
||||
- DOMAIN-SUFFIX,nationalinterest.org
|
||||
- DOMAIN-SUFFIX,naver.com
|
||||
- DOMAIN-SUFFIX,nbcnews.com
|
||||
- DOMAIN-SUFFIX,ndr.de
|
||||
- DOMAIN-SUFFIX,neowin.net
|
||||
- DOMAIN-SUFFIX,newstapa.org
|
||||
- DOMAIN-SUFFIX,nexitally.com
|
||||
- DOMAIN-SUFFIX,nhk.or.jp
|
||||
- DOMAIN-SUFFIX,nii.ac.jp
|
||||
- DOMAIN-SUFFIX,nikkei.com
|
||||
- DOMAIN-SUFFIX,nitter.net
|
||||
- DOMAIN-SUFFIX,nofile.io
|
||||
- DOMAIN-SUFFIX,notion.so
|
||||
- DOMAIN-SUFFIX,now.com
|
||||
- DOMAIN-SUFFIX,nrk.no
|
||||
- DOMAIN-SUFFIX,nuget.org
|
||||
- DOMAIN-SUFFIX,nyaa.si
|
||||
- DOMAIN-SUFFIX,ok.ru
|
||||
- DOMAIN-SUFFIX,on.cc
|
||||
- DOMAIN-SUFFIX,orientaldaily.com.my
|
||||
- DOMAIN-SUFFIX,overcast.fm
|
||||
- DOMAIN-SUFFIX,paltalk.com
|
||||
- DOMAIN-SUFFIX,parsevideo.com
|
||||
- DOMAIN-SUFFIX,pawoo.net
|
||||
- DOMAIN-SUFFIX,pbxes.com
|
||||
- DOMAIN-SUFFIX,pcdvd.com.tw
|
||||
- DOMAIN-SUFFIX,pchome.com.tw
|
||||
- DOMAIN-SUFFIX,pcloud.com
|
||||
- DOMAIN-SUFFIX,peing.net
|
||||
- DOMAIN-SUFFIX,picacomic.com
|
||||
- DOMAIN-SUFFIX,pinimg.com
|
||||
- DOMAIN-SUFFIX,player.fm
|
||||
- DOMAIN-SUFFIX,plurk.com
|
||||
- DOMAIN-SUFFIX,po18.tw
|
||||
- DOMAIN-SUFFIX,potato.im
|
||||
- DOMAIN-SUFFIX,potatso.com
|
||||
- DOMAIN-SUFFIX,prism-break.org
|
||||
- DOMAIN-SUFFIX,proxifier.com
|
||||
- DOMAIN-SUFFIX,pt.im
|
||||
- DOMAIN-SUFFIX,pts.org.tw
|
||||
- DOMAIN-SUFFIX,pubu.com.tw
|
||||
- DOMAIN-SUFFIX,pubu.tw
|
||||
- DOMAIN-SUFFIX,pureapk.com
|
||||
- DOMAIN-SUFFIX,quora.com
|
||||
- DOMAIN-SUFFIX,quoracdn.net
|
||||
- DOMAIN-SUFFIX,qz.com
|
||||
- DOMAIN-SUFFIX,radio.garden
|
||||
- DOMAIN-SUFFIX,rakuten.co.jp
|
||||
- DOMAIN-SUFFIX,rarbgprx.org
|
||||
- DOMAIN-SUFFIX,reabble.com
|
||||
- DOMAIN-SUFFIX,readingtimes.com.tw
|
||||
- DOMAIN-SUFFIX,readmoo.com
|
||||
- DOMAIN-SUFFIX,redbubble.com
|
||||
- DOMAIN-SUFFIX,resilio.com
|
||||
- DOMAIN-SUFFIX,reuters.com
|
||||
- DOMAIN-SUFFIX,reutersmedia.net
|
||||
- DOMAIN-SUFFIX,rfi.fr
|
||||
- DOMAIN-SUFFIX,roadshow.hk
|
||||
- DOMAIN-SUFFIX,rsshub.app
|
||||
- DOMAIN-SUFFIX,scmp.com
|
||||
- DOMAIN-SUFFIX,scribd.com
|
||||
- DOMAIN-SUFFIX,seatguru.com
|
||||
- DOMAIN-SUFFIX,shadowsocks.org
|
||||
- DOMAIN-SUFFIX,shindanmaker.com
|
||||
- DOMAIN-SUFFIX,shopee.tw
|
||||
- DOMAIN-SUFFIX,signal.org
|
||||
- DOMAIN-SUFFIX,sina.com.hk
|
||||
- DOMAIN-SUFFIX,slideshare.net
|
||||
- DOMAIN-SUFFIX,softfamous.com
|
||||
- DOMAIN-SUFFIX,spiegel.de
|
||||
- DOMAIN-SUFFIX,startpage.com
|
||||
- DOMAIN-SUFFIX,steamcommunity.com
|
||||
- DOMAIN-SUFFIX,steemit.com
|
||||
- DOMAIN-SUFFIX,steemitwallet.com
|
||||
- DOMAIN-SUFFIX,straitstimes.com
|
||||
- DOMAIN-SUFFIX,streamable.com
|
||||
- DOMAIN-SUFFIX,streema.com
|
||||
- DOMAIN-SUFFIX,substack.com
|
||||
- DOMAIN-SUFFIX,t66y.com
|
||||
- DOMAIN-SUFFIX,tapatalk.com
|
||||
- DOMAIN-SUFFIX,teco-hk.org
|
||||
- DOMAIN-SUFFIX,teco-mo.org
|
||||
- DOMAIN-SUFFIX,teddysun.com
|
||||
- DOMAIN-SUFFIX,textnow.me
|
||||
- DOMAIN-SUFFIX,theguardian.com
|
||||
- DOMAIN-SUFFIX,theinitium.com
|
||||
- DOMAIN-SUFFIX,themoviedb.org
|
||||
- DOMAIN-SUFFIX,thetvdb.com
|
||||
- DOMAIN-SUFFIX,time.com
|
||||
- DOMAIN-SUFFIX,tineye.com
|
||||
- DOMAIN-SUFFIX,tiny.cc
|
||||
- DOMAIN-SUFFIX,tinyurl.com
|
||||
- DOMAIN-SUFFIX,torproject.org
|
||||
- DOMAIN-SUFFIX,tradingview.com
|
||||
- DOMAIN-SUFFIX,tumblr.com
|
||||
- DOMAIN-SUFFIX,turbobit.net
|
||||
- DOMAIN-SUFFIX,tutanota.com
|
||||
- DOMAIN-SUFFIX,tvboxnow.com
|
||||
- DOMAIN-SUFFIX,udn.com
|
||||
- DOMAIN-SUFFIX,unseen.is
|
||||
- DOMAIN-SUFFIX,upmedia.mg
|
||||
- DOMAIN-SUFFIX,uptodown.com
|
||||
- DOMAIN-SUFFIX,urbandictionary.com
|
||||
- DOMAIN-SUFFIX,ustream.tv
|
||||
- DOMAIN-SUFFIX,uwants.com
|
||||
- DOMAIN-SUFFIX,v2ex.com
|
||||
- DOMAIN-SUFFIX,v2fly.org
|
||||
- DOMAIN-SUFFIX,v2ray.com
|
||||
- DOMAIN-SUFFIX,viber.com
|
||||
- DOMAIN-SUFFIX,videopress.com
|
||||
- DOMAIN-SUFFIX,vimeo.com
|
||||
- DOMAIN-SUFFIX,voachinese.com
|
||||
- DOMAIN-SUFFIX,voanews.com
|
||||
- DOMAIN-SUFFIX,voxer.com
|
||||
- DOMAIN-SUFFIX,vzw.com
|
||||
- DOMAIN-SUFFIX,w3schools.com
|
||||
- DOMAIN-SUFFIX,washingtonpost.com
|
||||
- DOMAIN-SUFFIX,wattpad.com
|
||||
- DOMAIN-SUFFIX,whoer.net
|
||||
- DOMAIN-SUFFIX,wikiwand.com
|
||||
- DOMAIN-SUFFIX,winudf.com
|
||||
- DOMAIN-SUFFIX,wire.com
|
||||
- DOMAIN-SUFFIX,wn.com
|
||||
- DOMAIN-SUFFIX,wordpress.com
|
||||
- DOMAIN-SUFFIX,worldcat.org
|
||||
- DOMAIN-SUFFIX,wsj.com
|
||||
- DOMAIN-SUFFIX,wsj.net
|
||||
- DOMAIN-SUFFIX,xhamster.com
|
||||
- DOMAIN-SUFFIX,xn--90wwvt03e.com
|
||||
- DOMAIN-SUFFIX,xn--i2ru8q2qg.com
|
||||
- DOMAIN-SUFFIX,xnxx.com
|
||||
- DOMAIN-SUFFIX,xvideos.com
|
||||
- DOMAIN-SUFFIX,yadi.sk
|
||||
- DOMAIN-SUFFIX,yahoo.com
|
||||
- DOMAIN-SUFFIX,yandex.ru
|
||||
- DOMAIN-SUFFIX,ycombinator.com
|
||||
- DOMAIN-SUFFIX,yesasia.com
|
||||
- DOMAIN-SUFFIX,yes-news.com
|
||||
- DOMAIN-SUFFIX,yomiuri.co.jp
|
||||
- DOMAIN-SUFFIX,you-get.org
|
||||
- DOMAIN-SUFFIX,zaobao.com
|
||||
- DOMAIN-SUFFIX,zello.com
|
||||
- DOMAIN-SUFFIX,zeronet.io
|
||||
- DOMAIN-SUFFIX,z-lib.org
|
||||
- DOMAIN-SUFFIX,zoom.us
|
||||
|
||||
- DOMAIN,cc.tvbs.com.tw
|
||||
- DOMAIN,clubhouse.pubnubapi.com
|
||||
- DOMAIN,ocsp.int-x3.letsencrypt.org
|
||||
- DOMAIN,us.weibo.com
|
||||
|
||||
- DOMAIN-SUFFIX,edu
|
||||
- DOMAIN-SUFFIX,gov
|
||||
- DOMAIN-SUFFIX,mil
|
||||
|
||||
# (IP Blackhole)
|
||||
# > Google
|
||||
- DOMAIN-SUFFIX,abc.xyz
|
||||
- DOMAIN-SUFFIX,advertisercommunity.com
|
||||
- DOMAIN-SUFFIX,ampproject.org
|
||||
- DOMAIN-SUFFIX,android.com
|
||||
- DOMAIN-SUFFIX,androidify.com
|
||||
- DOMAIN-SUFFIX,autodraw.com
|
||||
- DOMAIN-SUFFIX,capitalg.com
|
||||
- DOMAIN-SUFFIX,certificate-transparency.org
|
||||
- DOMAIN-SUFFIX,chrome.com
|
||||
- DOMAIN-SUFFIX,chromeexperiments.com
|
||||
- DOMAIN-SUFFIX,chromestatus.com
|
||||
- DOMAIN-SUFFIX,chromium.org
|
||||
- DOMAIN-SUFFIX,creativelab5.com
|
||||
- DOMAIN-SUFFIX,debug.com
|
||||
- DOMAIN-SUFFIX,deepmind.com
|
||||
- DOMAIN-SUFFIX,dialogflow.com
|
||||
- DOMAIN-SUFFIX,firebaseio.com
|
||||
- DOMAIN-SUFFIX,getmdl.io
|
||||
- DOMAIN-SUFFIX,ggpht.com
|
||||
- DOMAIN-SUFFIX,gmail.com
|
||||
- DOMAIN-SUFFIX,gmodules.com
|
||||
- DOMAIN-SUFFIX,godoc.org
|
||||
- DOMAIN-SUFFIX,gstatic.com
|
||||
- DOMAIN-SUFFIX,gv.com
|
||||
- DOMAIN-SUFFIX,gwtproject.org
|
||||
- DOMAIN-SUFFIX,itasoftware.com
|
||||
- DOMAIN-SUFFIX,madewithcode.com
|
||||
- DOMAIN-SUFFIX,material.io
|
||||
- DOMAIN-SUFFIX,page.link
|
||||
- DOMAIN-SUFFIX,polymer-project.org
|
||||
- DOMAIN-SUFFIX,recaptcha.net
|
||||
- DOMAIN-SUFFIX,shattered.io
|
||||
- DOMAIN-SUFFIX,synergyse.com
|
||||
- DOMAIN-SUFFIX,telephony.goog
|
||||
- DOMAIN-SUFFIX,tensorflow.org
|
||||
- DOMAIN-SUFFIX,tfhub.dev
|
||||
- DOMAIN-SUFFIX,tiltbrush.com
|
||||
- DOMAIN-SUFFIX,waveprotocol.org
|
||||
- DOMAIN-SUFFIX,waymo.com
|
||||
- DOMAIN-SUFFIX,webmproject.org
|
||||
- DOMAIN-SUFFIX,webrtc.org
|
||||
- DOMAIN-SUFFIX,whatbrowser.org
|
||||
- DOMAIN-SUFFIX,widevine.com
|
||||
- DOMAIN-SUFFIX,x.company
|
||||
- DOMAIN-SUFFIX,youtu.be
|
||||
- DOMAIN-SUFFIX,yt.be
|
||||
- DOMAIN-SUFFIX,ytimg.com
|
||||
# > Telegram
|
||||
- DOMAIN-SUFFIX,t.me
|
||||
- DOMAIN-SUFFIX,tdesktop.com
|
||||
- DOMAIN-SUFFIX,telegram.me
|
||||
- DOMAIN-SUFFIX,telesco.pe
|
||||
# > Facebook
|
||||
- DOMAIN-KEYWORD,.facebook.
|
||||
- DOMAIN-SUFFIX,facebookmail.com
|
||||
# > Others
|
||||
- DOMAIN-SUFFIX,noxinfluencer.com
|
||||
- DOMAIN-SUFFIX,smartmailcloud.com
|
||||
- DOMAIN-SUFFIX,weebly.com
|
||||
- DOMAIN-SUFFIX,twitter.jp
|
||||
|
||||
# (Region-Restricted Access Denied)
|
||||
# ---(Apple)---
|
||||
- DOMAIN-SUFFIX,appsto.re
|
||||
- DOMAIN,books.itunes.apple.com
|
||||
- DOMAIN-SUFFIX,smoot.apple.com
|
||||
- DOMAIN,beta.music.apple.com
|
||||
- DOMAIN,lookup-api.apple.com
|
||||
# > Web Preview
|
||||
- DOMAIN,apps.apple.com
|
||||
- DOMAIN,books.apple.com
|
||||
- DOMAIN,itunes.apple.com
|
||||
- DOMAIN,tv.apple.com
|
||||
# > Podcasts
|
||||
- DOMAIN,amp-api.podcasts.apple.com
|
||||
- DOMAIN,bookkeeper.itunes.apple.com
|
||||
# > News
|
||||
- DOMAIN,gateway.icloud.com
|
||||
- DOMAIN-SUFFIX,apple.news
|
||||
- DOMAIN,news-assets.apple.com
|
||||
- DOMAIN,news-client.apple.com
|
||||
- DOMAIN,news-client-search.apple.com
|
||||
- DOMAIN,news-edge.apple.com
|
||||
- DOMAIN,news-events.apple.com
|
||||
- DOMAIN,apple.comscoreresearch.com
|
||||
# ------
|
||||
# Google
|
||||
- DOMAIN-SUFFIX,go.dev
|
||||
- DOMAIN-SUFFIX,golang.org
|
||||
# > Others
|
||||
- DOMAIN-SUFFIX,aicoin.com
|
||||
- DOMAIN-SUFFIX,aimoon.com
|
||||
- DOMAIN-SUFFIX,bing.com
|
||||
- DOMAIN-SUFFIX,cccat.io
|
||||
- DOMAIN-SUFFIX,dubox.com
|
||||
- DOMAIN-SUFFIX,duboxcdn.com
|
||||
- DOMAIN-SUFFIX,ifixit.com
|
||||
- DOMAIN-SUFFIX,mangakakalot.com
|
||||
- DOMAIN-SUFFIX,shopeemobile.com
|
||||
- DOMAIN-SUFFIX,sushi.com
|
||||
|
||||
# (Network Jitter)
|
||||
# > Apple
|
||||
- DOMAIN,appleid.apple.com
|
||||
- DOMAIN,developer.apple.com
|
||||
- DOMAIN,www.icloud.com
|
||||
- DOMAIN,ocsp.apple.com
|
||||
# > DigiCert
|
||||
- DOMAIN,cacerts.digicert.com
|
||||
- DOMAIN,crl3.digicert.com
|
||||
- DOMAIN,crl4.digicert.com
|
||||
- DOMAIN,ocsp.digicert.com
|
||||
# > Others
|
||||
- DOMAIN-SUFFIX,cloudcone.com.cn
|
||||
- DOMAIN-SUFFIX,inkbunny.net
|
||||
- DOMAIN-SUFFIX,metapix.net
|
||||
- DOMAIN-SUFFIX,s3.amazonaws.com
|
||||
- DOMAIN-SUFFIX,zaobao.com.sg
|
||||
- DOMAIN,international-gfe.download.nvidia.com
|
47
luci-app-openclash/root/etc/openclash/rule_provider/OpenAI
Normal file
47
luci-app-openclash/root/etc/openclash/rule_provider/OpenAI
Normal file
@ -0,0 +1,47 @@
|
||||
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,bing.com
|
||||
- DOMAIN-SUFFIX,bingapis.com
|
||||
- DOMAIN-SUFFIX,microsoft-falcon.io
|
||||
- DOMAIN-SUFFIX,microsoftapp.net
|
||||
- DOMAIN,api.msn.com
|
||||
- DOMAIN,assets.msn.com
|
||||
- DOMAIN,copilot.microsoft.com
|
||||
- DOMAIN,location.microsoft.com
|
||||
- DOMAIN,login.microsoftonline.com
|
||||
- DOMAIN,self.events.data.microsoft.com
|
||||
|
||||
# > Gemini
|
||||
- DOMAIN-SUFFIX,gemini.google.com
|
||||
- DOMAIN,apis.google.com
|
||||
- DOMAIN,colab.research.google.com
|
||||
- DOMAIN,content-developerprofiles-pa.googleapis.com
|
||||
- DOMAIN,generativelanguage.googleapis.com
|
||||
|
||||
# > Meta AI
|
||||
- DOMAIN-SUFFIX,meta.ai
|
||||
|
||||
# > Perplexity AI
|
||||
- DOMAIN-SUFFIX,perplexity.ai
|
@ -1,332 +0,0 @@
|
||||
payload:
|
||||
# Streaming Media
|
||||
|
||||
# (Live)
|
||||
# > Twitch
|
||||
- PROCESS-NAME,tv.twitch.android.app
|
||||
- DOMAIN-SUFFIX,ext-twitch.tv
|
||||
- DOMAIN-SUFFIX,jtvnw.net
|
||||
- DOMAIN-SUFFIX,ttvnw.net
|
||||
- DOMAIN-SUFFIX,twitch.tv
|
||||
- DOMAIN-SUFFIX,twitchcdn.net
|
||||
- DOMAIN-SUFFIX,twitch-ext.rootonline.de
|
||||
|
||||
# (Music)
|
||||
# > Deezer
|
||||
- PROCESS-NAME,deezer.android.app
|
||||
- DOMAIN-SUFFIX,deezer.com
|
||||
- DOMAIN-SUFFIX,dzcdn.net
|
||||
# > JOOX
|
||||
- PROCESS-NAME,com.tencent.ibg.joox
|
||||
- PROCESS-NAME,com.tencent.ibg.jooxtv
|
||||
- DOMAIN-SUFFIX,joox.com
|
||||
- DOMAIN-KEYWORD,jooxweb-api
|
||||
# > KKBOX
|
||||
- PROCESS-NAME,com.skysoft.kkbox.android
|
||||
- DOMAIN-SUFFIX,kkbox.com
|
||||
- DOMAIN-SUFFIX,kkbox.com.tw
|
||||
- DOMAIN-SUFFIX,kfs.io
|
||||
# > Pandora
|
||||
- PROCESS-NAME,com.pandora.android
|
||||
- DOMAIN-SUFFIX,pandora.com
|
||||
# > SoundCloud
|
||||
- PROCESS-NAME,com.soundcloud.android
|
||||
- DOMAIN-SUFFIX,p-cdn.us
|
||||
- DOMAIN-SUFFIX,sndcdn.com
|
||||
- DOMAIN-SUFFIX,soundcloud.com
|
||||
# > Spotify
|
||||
- PROCESS-NAME,com.spotify.music
|
||||
- DOMAIN-SUFFIX,pscdn.co
|
||||
- DOMAIN-SUFFIX,scdn.co
|
||||
- DOMAIN-SUFFIX,spotify.com
|
||||
- DOMAIN-SUFFIX,spoti.fi
|
||||
- DOMAIN-KEYWORD,spotify.com
|
||||
- DOMAIN-KEYWORD,-spotify-com
|
||||
# > TIDAL
|
||||
- PROCESS-NAME,com.aspiro.tidal
|
||||
- DOMAIN-SUFFIX,tidal.com
|
||||
# > YouTubeMusic
|
||||
- PROCESS-NAME,com.google.android.apps.youtube.music
|
||||
- PROCESS-NAME,com.google.android.youtube.tvmusic
|
||||
|
||||
# (Podcast)
|
||||
# > Himalaya
|
||||
- PROCESS-NAME,com.ximalaya.ting.himalaya
|
||||
- DOMAIN-SUFFIX,himalaya.com
|
||||
|
||||
# (Video)
|
||||
# > AbemaTV
|
||||
- PROCESS-NAME,tv.abema
|
||||
- DOMAIN-SUFFIX,abema.io
|
||||
- DOMAIN-SUFFIX,abema.tv
|
||||
- DOMAIN-SUFFIX,ameba.jp
|
||||
- DOMAIN-SUFFIX,hayabusa.io
|
||||
- DOMAIN-KEYWORD,abematv.akamaized.net
|
||||
# > All 4
|
||||
- PROCESS-NAME,com.channel4.ondemand
|
||||
- DOMAIN-SUFFIX,c4assets.com
|
||||
- DOMAIN-SUFFIX,channel4.com
|
||||
# > Amazon Prime Video
|
||||
- PROCESS-NAME,com.amazon.avod.thirdp
|
||||
- DOMAIN-SUFFIX,aiv-cdn.net
|
||||
- DOMAIN-SUFFIX,aiv-delivery.net
|
||||
- DOMAIN-SUFFIX,amazonvideo.com
|
||||
- DOMAIN-SUFFIX,media-amazon.com
|
||||
- DOMAIN-SUFFIX,primevideo.com
|
||||
- DOMAIN-SUFFIX,pv-cdn.net
|
||||
- DOMAIN,atv-ps.amazon.com
|
||||
- DOMAIN,fls-na.amazon.com
|
||||
- DOMAIN,avodmp4s3ww-a.akamaihd.net
|
||||
- DOMAIN,d25xi40x97liuc.cloudfront.net
|
||||
- DOMAIN,dmqdd6hw24ucf.cloudfront.net
|
||||
- DOMAIN,dmqdd6hw24ucf.cloudfront.net
|
||||
- DOMAIN,d22qjgkvxw22r6.cloudfront.net
|
||||
- DOMAIN,d1v5ir2lpwr8os.cloudfront.net
|
||||
- DOMAIN,d27xxe7juh1us6.cloudfront.net
|
||||
# - DOMAIN,www.amazon.com
|
||||
- DOMAIN-KEYWORD,avoddashs
|
||||
# > Apple Music TV
|
||||
- DOMAIN,tv.applemusic.com
|
||||
# > Apple TV
|
||||
- DOMAIN,linear.tv.apple.com
|
||||
- DOMAIN,play-edge.itunes.apple.com
|
||||
- DOMAIN,uts-api.itunes.apple.com
|
||||
# > Bahamut
|
||||
- PROCESS-NAME,tw.com.gamer.android.animad
|
||||
- DOMAIN-SUFFIX,bahamut.com.tw
|
||||
- DOMAIN-SUFFIX,gamer.com.tw
|
||||
- DOMAIN,bahamut.akamaized.net
|
||||
- DOMAIN,gamer-cds.cdn.hinet.net
|
||||
- DOMAIN,gamer2-cds.cdn.hinet.net
|
||||
# > BBC iPlayer
|
||||
- PROCESS-NAME,bbc.iplayer.android
|
||||
- DOMAIN-SUFFIX,bbc.co.uk
|
||||
- DOMAIN-SUFFIX,bbci.co.uk
|
||||
- DOMAIN-KEYWORD,bbcfmt
|
||||
- DOMAIN-KEYWORD,uk-live
|
||||
# > bilibili Intl
|
||||
- PROCESS-NAME,com.bstar.intl
|
||||
- DOMAIN-SUFFIX,biliintl.com
|
||||
- DOMAIN,apm-misaka.biliapi.net
|
||||
- DOMAIN,p.bstarstatic.com
|
||||
- DOMAIN,p-bstarstatic.akamaized.net
|
||||
- DOMAIN,upos-bstar-mirrorakam.akamaized.net
|
||||
- DOMAIN,upos-bstar1-mirrorakam.akamaized.net
|
||||
# > DAZN
|
||||
- PROCESS-NAME,com.dazn
|
||||
- DOMAIN-SUFFIX,dazn.com
|
||||
- DOMAIN-SUFFIX,dazn-api.com
|
||||
- DOMAIN-SUFFIX,dazndn.com
|
||||
- DOMAIN-SUFFIX,indazn.com
|
||||
- DOMAIN,d151l6v8er5bdm.cloudfront.net
|
||||
- DOMAIN-KEYWORD,voddazn
|
||||
# > discovery+
|
||||
- PROCESS-NAME,com.discovery.discoveryplus.mobile
|
||||
- DOMAIN-SUFFIX,disco-api.com
|
||||
- DOMAIN-SUFFIX,discoveryplus.co.uk
|
||||
- DOMAIN-SUFFIX,discoveryplus.com
|
||||
- DOMAIN-SUFFIX,discoveryplus.in
|
||||
- DOMAIN-SUFFIX,dnitv.com
|
||||
# - DOMAIN,go-prod-vz.akamaized.net
|
||||
- DOMAIN,x-default-stgec.uplynk.com
|
||||
- DOMAIN-KEYWORD,discovery.uplynk.com
|
||||
# > Disney+
|
||||
- PROCESS-NAME,com.disney.disneyplus
|
||||
- DOMAIN-SUFFIX,bamgrid.com
|
||||
- DOMAIN-SUFFIX,disneyplus.com
|
||||
- DOMAIN-SUFFIX,disney-plus.net
|
||||
- DOMAIN-SUFFIX,disneystreaming.com
|
||||
- DOMAIN-SUFFIX,dssott.com
|
||||
- DOMAIN,cdn.registerdisney.go.com
|
||||
# > DMM
|
||||
- PROCESS-NAME,com.dmm.app.movieplayer
|
||||
- DOMAIN-SUFFIX,dmm.co.jp
|
||||
- DOMAIN-SUFFIX,dmm.com
|
||||
- DOMAIN-SUFFIX,dmm-extension.com
|
||||
# > encoreTVB
|
||||
- PROCESS-NAME,com.tvbusa.encore
|
||||
- DOMAIN-SUFFIX,encoretvb.com
|
||||
- DOMAIN,edge.api.brightcove.com
|
||||
- DOMAIN,bcbolt446c5271-a.akamaihd.net
|
||||
# > HBO NOW & 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 Asia
|
||||
- PROCESS-NAME,hk.hbo.hbogo
|
||||
- DOMAIN-SUFFIX,hbogoasia.com
|
||||
- DOMAIN-SUFFIX,hbogoasia.hk
|
||||
- DOMAIN-KEYWORD,.hbogoasia.
|
||||
- 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,hboasialive.akamaized.net
|
||||
- DOMAIN,hbogoprod-vod.akamaized.net
|
||||
- DOMAIN,hbolb.onwardsmg.com
|
||||
- DOMAIN,hbounify-prod.evergent.com
|
||||
- DOMAIN,players.brightcove.net
|
||||
- DOMAIN,s3-ap-southeast-1.amazonaws.com
|
||||
# > 华文电视
|
||||
- DOMAIN-SUFFIX,5itv.tv
|
||||
- DOMAIN-SUFFIX,ocnttv.com
|
||||
# > Hulu
|
||||
- PROCESS-NAME,com.hulu.plus
|
||||
- DOMAIN-SUFFIX,hulu.com
|
||||
- DOMAIN-SUFFIX,huluim.com
|
||||
- DOMAIN-SUFFIX,hulustream.com
|
||||
# > Hulu / フールー
|
||||
- PROCESS-NAME,jp.happyon.android
|
||||
- DOMAIN-SUFFIX,happyon.jp
|
||||
- DOMAIN-SUFFIX,hjholdings.jp
|
||||
- DOMAIN-SUFFIX,hulu.jp
|
||||
# > ITV
|
||||
- PROCESS-NAME,air.ITVMobilePlayer
|
||||
- DOMAIN-SUFFIX,itv.com
|
||||
- DOMAIN-SUFFIX,itvstatic.com
|
||||
- DOMAIN,itvpnpmobile-a.akamaihd.net
|
||||
# > iQIYI
|
||||
- DOMAIN-SUFFIX,iq.com
|
||||
- DOMAIN,intl.iqiyi.com
|
||||
- DOMAIN,intl-rcd.iqiyi.com
|
||||
- DOMAIN,intl-subscription.iqiyi.com
|
||||
- IP-CIDR,23.53.32.88/32,no-resolve
|
||||
- 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.74.95.153/32,no-resolve
|
||||
- IP-CIDR,203.211.4.169/32,no-resolve
|
||||
- IP-CIDR,203.211.4.193/32,no-resolve
|
||||
- IP-CIDR,210.71.227.200/32,no-resolve
|
||||
- IP-CIDR,210.71.227.202/32,no-resolve
|
||||
- IP-CIDR,210.201.32.8/32,no-resolve
|
||||
- IP-CIDR,210.201.32.11/32,no-resolve
|
||||
# > KKTV
|
||||
- PROCESS-NAME,com.kktv.kktv
|
||||
- DOMAIN-SUFFIX,kktv.com.tw
|
||||
- DOMAIN-SUFFIX,kktv.me
|
||||
- DOMAIN,kktv-theater.kk.stream
|
||||
# > LINE TV
|
||||
- PROCESS-NAME,com.linecorp.linetv
|
||||
- DOMAIN-SUFFIX,linetv.tw
|
||||
- DOMAIN,d3c7rimkq79yfu.cloudfront.net
|
||||
# > LiTV
|
||||
- PROCESS-NAME,com.litv.mobile.gp.litv
|
||||
- DOMAIN-SUFFIX,litv.tv
|
||||
- DOMAIN,litvfreemobile-hichannel.cdn.hinet.net
|
||||
# > My5
|
||||
- PROCESS-NAME,com.mobileiq.demand5
|
||||
- DOMAIN-SUFFIX,channel5.com
|
||||
- DOMAIN-SUFFIX,my5.tv
|
||||
- DOMAIN,d349g9zuie06uo.cloudfront.net
|
||||
# > myTV SUPER
|
||||
- PROCESS-NAME,com.tvb.mytvsuper
|
||||
- DOMAIN-SUFFIX,mytvsuper.com
|
||||
- DOMAIN-SUFFIX,tvb.com
|
||||
# > Naver TV
|
||||
- PROCESS-NAME,com.nhn.android.naverplayer
|
||||
- DOMAIN-SUFFIX,naver.com
|
||||
- DOMAIN-SUFFIX,smartmediarep.com
|
||||
# > Netflix
|
||||
- PROCESS-NAME,com.netflix.mediaclient
|
||||
- DOMAIN-SUFFIX,netflix.com
|
||||
- DOMAIN-SUFFIX,netflix.net
|
||||
- DOMAIN-SUFFIX,nflxext.com
|
||||
- DOMAIN-SUFFIX,nflximg.com
|
||||
- DOMAIN-SUFFIX,nflximg.net
|
||||
- DOMAIN-SUFFIX,nflxso.net
|
||||
- DOMAIN-SUFFIX,nflxvideo.net
|
||||
- DOMAIN-KEYWORD,netflixdnstest
|
||||
- DOMAIN-KEYWORD,apiproxy-device-prod-nlb-
|
||||
- DOMAIN-KEYWORD,dualstack.apiproxy-
|
||||
- GEOIP,NETFLIX,no-resolve
|
||||
# > niconico
|
||||
- PROCESS-NAME,jp.nicovideo.android
|
||||
- DOMAIN-SUFFIX,dmc.nico
|
||||
- DOMAIN-SUFFIX,nicovideo.jp
|
||||
- DOMAIN-SUFFIX,nimg.jp
|
||||
# > Now E
|
||||
- PROCESS-NAME,com.pccw.nowemobile
|
||||
- DOMAIN-SUFFIX,nowe.com
|
||||
- DOMAIN-SUFFIX,nowestatic.com
|
||||
# > Paramount+
|
||||
- PROCESS-NAME,com.cbs.app
|
||||
- DOMAIN-SUFFIX,cbsi.com
|
||||
- DOMAIN-SUFFIX,cbsaavideo.com
|
||||
- DOMAIN-SUFFIX,cbsivideo.com
|
||||
- DOMAIN-SUFFIX,paramountplus.com
|
||||
- DOMAIN-SUFFIX,pplusstatic.com
|
||||
- DOMAIN,cbsi.live.ott.irdeto.com
|
||||
- DOMAIN,cbsplaylistserver.aws.syncbak.com
|
||||
- DOMAIN,cbsservice.aws.syncbak.com
|
||||
- DOMAIN,link.theplatform.com
|
||||
# > PBS
|
||||
- PROCESS-NAME,com.pbs.video
|
||||
- DOMAIN-SUFFIX,pbs.org
|
||||
# > Peacock
|
||||
- PROCESS-NAME,com.peacocktv.peacockandroid
|
||||
- DOMAIN-SUFFIX,peacocktv.com
|
||||
# > Pornhub
|
||||
- DOMAIN-SUFFIX,phncdn.com
|
||||
- DOMAIN-SUFFIX,phprcdn.com
|
||||
- DOMAIN-SUFFIX,pornhub.com
|
||||
- DOMAIN-SUFFIX,pornhubpremium.com
|
||||
# > 台湾好
|
||||
- PROCESS-NAME,com.twgood.android
|
||||
- DOMAIN-SUFFIX,skyking.com.tw
|
||||
- DOMAIN,hamifans.emome.net
|
||||
# > TikTok
|
||||
- PROCESS-NAME,com.ss.android.ugc.trill
|
||||
- DOMAIN-SUFFIX,byteoversea.com
|
||||
- DOMAIN-SUFFIX,ibytedtos.com
|
||||
- DOMAIN-SUFFIX,muscdn.com
|
||||
- DOMAIN-SUFFIX,musical.ly
|
||||
- DOMAIN-SUFFIX,tiktok.com
|
||||
- DOMAIN-SUFFIX,tik-tokapi.com
|
||||
- DOMAIN-SUFFIX,tiktokcdn.com
|
||||
- DOMAIN-SUFFIX,tiktokv.com
|
||||
- DOMAIN-KEYWORD,tiktokcdn-
|
||||
# > TVer
|
||||
- PROCESS-NAME,jp.hamitv.hamiand1
|
||||
- DOMAIN-SUFFIX,tver.jp
|
||||
- DOMAIN,edge.api.brightcove.com
|
||||
# > ViuTV
|
||||
- PROCESS-NAME,com.hktve.viutv
|
||||
- DOMAIN-SUFFIX,viu.com
|
||||
- DOMAIN-SUFFIX,viu.tv
|
||||
- DOMAIN,api.viu.now.com
|
||||
- DOMAIN,d1k2us671qcoau.cloudfront.net
|
||||
- DOMAIN,d2anahhhmp1ffz.cloudfront.net
|
||||
- DOMAIN,dfp6rglgjqszk.cloudfront.net
|
||||
# > WeTV
|
||||
- PROCESS-NAME,com.tencent.qqlivei18n
|
||||
- DOMAIN-SUFFIX,wetv.vip
|
||||
- DOMAIN-SUFFIX,wetvinfo.com
|
||||
- IP-CIDR,150.109.28.51/32,no-resolve
|
||||
# > YouTube
|
||||
- PROCESS-NAME,com.google.android.youtube
|
||||
- PROCESS-NAME,com.google.android.youtube.tv
|
||||
- DOMAIN-SUFFIX,googlevideo.com
|
||||
- DOMAIN-SUFFIX,withyoutube.com
|
||||
- DOMAIN-SUFFIX,youtu.be
|
||||
- DOMAIN-SUFFIX,youtube.com
|
||||
- DOMAIN-SUFFIX,youtubeeducation.com
|
||||
- DOMAIN-SUFFIX,youtubegaming.com
|
||||
- DOMAIN-SUFFIX,youtubekids.com
|
||||
- DOMAIN-SUFFIX,youtube-nocookie.com
|
||||
- DOMAIN-SUFFIX,yt.be
|
||||
- DOMAIN-SUFFIX,ytimg.com
|
||||
- DOMAIN,youtubei.googleapis.com
|
||||
- DOMAIN,yt3.ggpht.com
|
@ -1,66 +0,0 @@
|
||||
payload:
|
||||
# (Video)
|
||||
# > Acfun
|
||||
- DOMAIN-SUFFIX,acfun.cn
|
||||
- DOMAIN-SUFFIX,aixifan.com
|
||||
# > bilibili
|
||||
- DOMAIN-SUFFIX,biliapi.net
|
||||
- DOMAIN-SUFFIX,bilibili.com
|
||||
- DOMAIN-SUFFIX,bilivideo.com
|
||||
- DOMAIN-SUFFIX,hdslb.com
|
||||
# > Tencent Video
|
||||
- DOMAIN-SUFFIX,video.qq.com
|
||||
- DOMAIN-SUFFIX,i.qq.com
|
||||
- DOMAIN-SUFFIX,v.qq.com
|
||||
# > iQiyi
|
||||
- DOMAIN-SUFFIX,iqiyi.com
|
||||
- DOMAIN-SUFFIX,71edge.com
|
||||
# > Youku
|
||||
- DOMAIN-SUFFIX,soku.com
|
||||
- DOMAIN-SUFFIX,youku.com
|
||||
- DOMAIN-SUFFIX,ykimg.com
|
||||
# > XiGua
|
||||
- DOMAIN-SUFFIX,ixigua.com
|
||||
- DOMAIN-SUFFIX,snssdk.com
|
||||
# > HunanTV
|
||||
- DOMAIN-SUFFIX,hitv.com
|
||||
- DOMAIN-SUFFIX,hunantv.com
|
||||
- DOMAIN-SUFFIX,mgtv.com
|
||||
# > Le
|
||||
- DOMAIN-SUFFIX,le.com
|
||||
# > PPLive
|
||||
- DOMAIN-SUFFIX,pplive.cn
|
||||
- DOMAIN-SUFFIX,pptv.com
|
||||
# > Sohu Video
|
||||
- DOMAIN-SUFFIX,itc.cn
|
||||
- DOMAIN-SUFFIX,sohu.com
|
||||
# > Migu Video
|
||||
- DOMAIN-SUFFIX,cmvideo.cn
|
||||
- DOMAIN-SUFFIX,miguvideo.com
|
||||
|
||||
# (Music)
|
||||
# > QQ Music
|
||||
- DOMAIN-SUFFIX,music.qq.com
|
||||
- DOMAIN-SUFFIX,music.tc.qq.com
|
||||
- DOMAIN-SUFFIX,qqmusic.qq.com
|
||||
- DOMAIN-SUFFIX,tencentmusic.com
|
||||
- DOMAIN-SUFFIX,y.qq.com
|
||||
- DOMAIN,aqqmusic.tc.qq.com
|
||||
- DOMAIN,moo.qq.com
|
||||
# > China Music Corp
|
||||
- DOMAIN-SUFFIX,kuwo.cn
|
||||
- DOMAIN-SUFFIX,kugou.com
|
||||
# > Netease Cloud Music
|
||||
- DOMAIN-SUFFIX,music.163.com
|
||||
- DOMAIN-SUFFIX,music.126.net
|
||||
- DOMAIN,mam.netease.com
|
||||
- DOMAIN,api.iplay.163.com
|
||||
# > Qianqian Music
|
||||
- DOMAIN-SUFFIX,qianqian.com
|
||||
- DOMAIN-SUFFIX,taihe.com
|
||||
# > Migu Music
|
||||
- DOMAIN-SUFFIX,migu.cn
|
||||
# > Xiaomi
|
||||
- DOMAIN-SUFFIX,ai.xiaomi.com
|
||||
- DOMAIN-SUFFIX,music.xiaomi.com
|
||||
- DOMAIN-SUFFIX,dmhmusic.com
|
@ -1,20 +0,0 @@
|
||||
payload:
|
||||
# > bilibili
|
||||
- DOMAIN,api.biliapi.com
|
||||
- DOMAIN,api.biliapi.net
|
||||
- DOMAIN,api.bilibili.com
|
||||
- DOMAIN,app.biliapi.com
|
||||
- DOMAIN,app.biliapi.net
|
||||
- DOMAIN,app.bilibili.com
|
||||
- DOMAIN,grpc.biliapi.net
|
||||
- DOMAIN,m.bilibili.com
|
||||
- DOMAIN,upos-hz-mirrorakam.akamaized.net
|
||||
- DOMAIN,www.bilibili.com
|
||||
- DOMAIN-KEYWORD,cn-hk-eq-bcache-
|
||||
# > 愛奇藝台灣站
|
||||
- DOMAIN,cache.video.iqiyi.com
|
||||
- IP-CIDR,116.211.202.206/32,no-resolve
|
||||
- IP-CIDR,116.211.202.216/32,no-resolve
|
||||
# > MangoTV(芒果TV国际)
|
||||
- DOMAIN-SUFFIX,api.mgtv.com
|
||||
- DOMAIN,mobileso.bz.mgtv.com
|
@ -1,20 +0,0 @@
|
||||
payload:
|
||||
# Unbreak
|
||||
# > Google
|
||||
- DOMAIN-SUFFIX,blog.google
|
||||
- DOMAIN-SUFFIX,googletraveladservices.com
|
||||
- DOMAIN,clientservices.googleapis.com
|
||||
- DOMAIN,dl.google.com
|
||||
- DOMAIN,dl.l.google.com
|
||||
- DOMAIN,update.googleapis.com
|
||||
- DOMAIN,translate.googleapis.com
|
||||
# >> Firebase Cloud Messaging
|
||||
- DOMAIN,mtalk.google.com
|
||||
- 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
|
@ -30,7 +30,6 @@ cp -f "/etc/openclash/custom/openclash_custom_fake_filter.list" "/usr/share/open
|
||||
cp -f "/etc/openclash/custom/openclash_custom_domain_dns.list" "/usr/share/openclash/backup/openclash_custom_domain_dns.list" >/dev/null 2>&1
|
||||
cp -f "/etc/openclash/custom/openclash_custom_domain_dns_policy.list" "/usr/share/openclash/backup/openclash_custom_domain_dns_policy.list" >/dev/null 2>&1
|
||||
cp -f "/etc/openclash/custom/openclash_custom_fallback_filter.yaml" "/usr/share/openclash/backup/openclash_custom_fallback_filter.yaml" >/dev/null 2>&1
|
||||
cp -f "/etc/openclash/custom/openclash_custom_netflix_domains.list" "/usr/share/openclash/backup/openclash_custom_netflix_domains.list" >/dev/null 2>&1
|
||||
cp -f "/etc/openclash/custom/openclash_force_sniffing_domain.yaml" "/usr/share/openclash/backup/openclash_force_sniffing_domain.yaml" >/dev/null 2>&1
|
||||
cp -f "/etc/openclash/custom/openclash_sniffing_domain_filter.yaml" "/usr/share/openclash/backup/openclash_sniffing_domain_filter.yaml" >/dev/null 2>&1
|
||||
cp -f "/etc/openclash/custom/openclash_sniffing_ports_filter.yaml" "/usr/share/openclash/backup/openclash_sniffing_ports_filter.yaml" >/dev/null 2>&1
|
||||
@ -127,6 +126,9 @@ if [ -f "/tmp/openclash.bak" ]; then
|
||||
rm -rf "/etc/openclash/openclash" >/dev/null 2>&1
|
||||
rm -rf "/etc/openclash/fake_filter.list" >/dev/null 2>&1
|
||||
rm -rf "/etc/openclash/openclash_servers_fake_filter.conf" >/dev/null 2>&1
|
||||
rm -rf /etc/openclash/core/clash >/dev/null 2>&1
|
||||
rm -rf /etc/openclash/core/clash_tun >/dev/null 2>&1
|
||||
rm -rf /etc/openclash/accelerated-domains.china.conf >/dev/null 2>&1
|
||||
rm -rf "/tmp/openclash" >/dev/null 2>&1
|
||||
rm -rf "/tmp/openclash.bak" >/dev/null 2>&1
|
||||
fi
|
||||
|
@ -13,7 +13,7 @@ LOG_OUT()
|
||||
|
||||
LOG_ALERT()
|
||||
{
|
||||
echo -e "$(tail -n 20 $LOG_FILE |grep -E 'level=fatal|FTL\ \[Config\]' |awk 'END {print}')" > $START_LOG
|
||||
echo -e "$(tail -n 20 $LOG_FILE |grep -E 'level=fatal|level=error|FTL\ \[Config\]' |awk 'END {print}')" > $START_LOG
|
||||
sleep 3
|
||||
}
|
||||
|
||||
|
@ -367,9 +367,18 @@ server_key_match()
|
||||
fi
|
||||
}
|
||||
|
||||
convert_custom_param()
|
||||
{
|
||||
if ! (echo "$1" | grep -qE "^\w+=.+$") then
|
||||
return
|
||||
fi
|
||||
local p_name="${1%%=*}" p_value="${1#*=}"
|
||||
append_custom_params="${append_custom_params}&${p_name}=$(urlencode "$p_value")"
|
||||
}
|
||||
|
||||
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
|
||||
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 "sub_convert" "$section" "sub_convert" ""
|
||||
@ -454,10 +463,11 @@ sub_info_get()
|
||||
template_path=$custom_template_url
|
||||
fi
|
||||
if [ -n "$template_path" ]; then
|
||||
config_list_foreach "$section" "custom_params" convert_custom_param
|
||||
template_path_encode=$(urlencode "$template_path")
|
||||
[ -n "$key_match_param" ] && key_match_param="$(urlencode "(?i)$key_match_param")"
|
||||
[ -n "$key_ex_match_param" ] && key_ex_match_param="$(urlencode "(?i)$key_ex_match_param")"
|
||||
subscribe_url_param="?target=clash&new_name=true&url=$subscribe_url&config=$template_path_encode&include=$key_match_param&exclude=$key_ex_match_param&emoji=$emoji&list=false&sort=$sort$udp&scv=$skip_cert_verify&append_type=$node_type&fdn=true$rule_provider"
|
||||
subscribe_url_param="?target=clash&new_name=true&url=$subscribe_url&config=$template_path_encode&include=$key_match_param&exclude=$key_ex_match_param&emoji=$emoji&list=false&sort=$sort$udp&scv=$skip_cert_verify&append_type=$node_type&fdn=true$rule_provider$append_custom_params"
|
||||
c_address="$convert_address"
|
||||
else
|
||||
subscribe_url=$address
|
||||
|
@ -29,12 +29,10 @@
|
||||
if [ "$small_flash_memory" != "1" ]; then
|
||||
chnr_path="/etc/openclash/china_ip_route.ipset"
|
||||
chnr6_path="/etc/openclash/china_ip6_route.ipset"
|
||||
cndomain_path="/etc/openclash/accelerated-domains.china.conf"
|
||||
mkdir -p /etc/openclash
|
||||
else
|
||||
chnr_path="/tmp/etc/openclash/china_ip_route.ipset"
|
||||
chnr6_path="/tmp/etc/openclash/china_ip6_route.ipset"
|
||||
cndomain_path="/tmp/etc/openclash/accelerated-domains.china.conf"
|
||||
mkdir -p /tmp/etc/openclash
|
||||
fi
|
||||
|
||||
@ -67,7 +65,7 @@
|
||||
if [ "$?" -ne "0" ]; then
|
||||
LOG_OUT "Chnroute Cidr List Has Been Updated, Starting To Replace The Old Version..."
|
||||
mv /tmp/china_ip_route.list "$chnr_path" >/dev/null 2>&1
|
||||
if [ "$china_ip_route" -eq 1 ] || [ "$disable_udp_quic" -eq 1 ]; then
|
||||
if [ "$china_ip_route" -ne 0 ] || [ "$disable_udp_quic" -eq 1 ]; then
|
||||
restart=1
|
||||
fi
|
||||
LOG_OUT "Chnroute Cidr List Update Successful!"
|
||||
@ -102,7 +100,7 @@
|
||||
if [ "$?" -ne "0" ]; then
|
||||
LOG_OUT "Chnroute6 Cidr List Has Been Updated, Starting To Replace The Old Version..."
|
||||
mv /tmp/china_ip6_route.list "$chnr6_path" >/dev/null 2>&1
|
||||
if [ "$china_ip6_route" -eq 1 ] || [ "$disable_udp_quic" -eq 1 ]; then
|
||||
if [ "$china_ip6_route" -ne 0 ] || [ "$disable_udp_quic" -eq 1 ]; then
|
||||
restart=1
|
||||
fi
|
||||
LOG_OUT "Chnroute6 Cidr List Update Successful!"
|
||||
@ -113,41 +111,6 @@
|
||||
LOG_OUT "Chnroute6 Cidr List Update Error, Please Try Again Later..."
|
||||
fi
|
||||
|
||||
#CN DOMAIN
|
||||
LOG_OUT "Start Downloading The CN Domains List..."
|
||||
if [ -n "$CNDOMAIN_CUSTOM_URL" ]; then
|
||||
curl -SsL --connect-timeout 30 -m 60 --speed-time 30 --speed-limit 1 --retry 2 "$CNDOMAIN_CUSTOM_URL" -o "/tmp/china_domains.list" 2>&1 |sed ':a;N;$!ba; s/\n/ /g' | awk -v time="$(date "+%Y-%m-%d %H:%M:%S")" -v file="/tmp/china_domains.list" '{print time "【" file "】Download Failed:【"$0"】"}' >> "$LOG_FILE"
|
||||
else
|
||||
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
|
||||
curl -SsL --connect-timeout 30 -m 60 --speed-time 30 --speed-limit 1 --retry 2 "$github_address_mod"gh/felixonmars/dnsmasq-china-list@master/accelerated-domains.china.conf -o "/tmp/china_domains.list" 2>&1 |sed ':a;N;$!ba; s/\n/ /g' | awk -v time="$(date "+%Y-%m-%d %H:%M:%S")" -v file="/tmp/china_domains.list" '{print time "【" file "】Download Failed:【"$0"】"}' >> "$LOG_FILE"
|
||||
elif [ "$github_address_mod" == "https://raw.fastgit.org/" ]; then
|
||||
curl -SsL --connect-timeout 30 -m 60 --speed-time 30 --speed-limit 1 --retry 2 https://raw.fastgit.org/felixonmars/dnsmasq-china-list/master/accelerated-domains.china.conf -o "/tmp/china_domains.list" 2>&1 |sed ':a;N;$!ba; s/\n/ /g' | awk -v time="$(date "+%Y-%m-%d %H:%M:%S")" -v file="/tmp/china_domains.list" '{print time "【" file "】Download Failed:【"$0"】"}' >> "$LOG_FILE"
|
||||
else
|
||||
curl -SsL --connect-timeout 30 -m 60 --speed-time 30 --speed-limit 1 --retry 2 "$github_address_mod"https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/accelerated-domains.china.conf -o "/tmp/china_domains.list" 2>&1 |sed ':a;N;$!ba; s/\n/ /g' | awk -v time="$(date "+%Y-%m-%d %H:%M:%S")" -v file="/tmp/china_domains.list" '{print time "【" file "】Download Failed:【"$0"】"}' >> "$LOG_FILE"
|
||||
fi
|
||||
else
|
||||
curl -SsL --connect-timeout 30 -m 60 --speed-time 30 --speed-limit 1 --retry 2 https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/accelerated-domains.china.conf -o "/tmp/china_domains.list" 2>&1 |sed ':a;N;$!ba; s/\n/ /g' | awk -v time="$(date "+%Y-%m-%d %H:%M:%S")" -v file="/tmp/china_domains.list" '{print time "【" file "】Download Failed:【"$0"】"}' >> "$LOG_FILE"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "${PIPESTATUS[0]}" -eq "0" ] && [ -s "/tmp/china_domains.list" ] && [ -n "$(cat "/tmp/china_domains.list" |head -1 |grep "server=")" ]; then
|
||||
LOG_OUT "CN Domains List Download Success, Check Updated..."
|
||||
cmp -s /tmp/china_domains.list "$cndomain_path"
|
||||
if [ "$?" -ne "0" ]; then
|
||||
LOG_OUT "CN Domains List Has Been Updated, Starting To Replace The Old Version..."
|
||||
mv /tmp/china_domains.list "$cndomain_path" >/dev/null 2>&1
|
||||
if [ "$china_ip_route" -eq 1 ] && [ -z "$(echo "$en_mode" |grep "redir-host")" ]; then
|
||||
restart=1
|
||||
fi
|
||||
LOG_OUT "CN Domains List Update Successful!"
|
||||
else
|
||||
LOG_OUT "Updated CN Domains List No Change, Do Nothing..."
|
||||
fi
|
||||
else
|
||||
LOG_OUT "CN Domains List Update Error, Please Try Again Later..."
|
||||
fi
|
||||
|
||||
if [ "$restart" -eq 1 ] && [ "$(unify_ps_prevent)" -eq 0 ] && [ "$(find /tmp/lock/ |grep -v "openclash.lock" |grep -c "openclash")" -le 1 ]; then
|
||||
/etc/init.d/openclash restart >/dev/null 2>&1 &
|
||||
elif [ "$restart" -eq 0 ] && [ "$(unify_ps_prevent)" -eq 0 ] && [ "$(find /tmp/lock/ |grep -v "openclash.lock" |grep -c "openclash")" -le 1 ] && [ "$(uci -q get openclash.config.restart)" -eq 1 ]; then
|
||||
@ -160,6 +123,5 @@
|
||||
fi
|
||||
|
||||
rm -rf /tmp/china_ip*_route* >/dev/null 2>&1
|
||||
rm -rf /tmp/china_domains.list >/dev/null 2>&1
|
||||
SLOG_CLEAN
|
||||
del_lock
|
@ -15,7 +15,7 @@ if [ -n "$2" ] && [ "$2" != "one_key_update" ]; then
|
||||
fi
|
||||
CORE_TYPE="$1"
|
||||
C_CORE_TYPE=$(uci -q get openclash.config.core_type)
|
||||
[ -z "$CORE_TYPE" ] && CORE_TYPE="Dev"
|
||||
[ -z "$CORE_TYPE" ] && CORE_TYPE="Meta"
|
||||
small_flash_memory=$(uci -q get openclash.config.small_flash_memory)
|
||||
CPU_MODEL=$(uci -q get openclash.config.core_version)
|
||||
RELEASE_BRANCH=$(uci -q get openclash.config.release_branch || echo "master")
|
||||
@ -33,159 +33,63 @@ if [ ! -f "/tmp/clash_last_version" ]; then
|
||||
fi
|
||||
|
||||
if [ "$small_flash_memory" != "1" ]; then
|
||||
dev_core_path="/etc/openclash/core/clash"
|
||||
tun_core_path="/etc/openclash/core/clash_tun"
|
||||
meta_core_path="/etc/openclash/core/clash_meta"
|
||||
mkdir -p /etc/openclash/core
|
||||
else
|
||||
dev_core_path="/tmp/etc/openclash/core/clash"
|
||||
tun_core_path="/tmp/etc/openclash/core/clash_tun"
|
||||
meta_core_path="/tmp/etc/openclash/core/clash_meta"
|
||||
mkdir -p /tmp/etc/openclash/core
|
||||
fi
|
||||
|
||||
case $CORE_TYPE in
|
||||
"TUN")
|
||||
CORE_CV=$($tun_core_path -v 2>/dev/null |awk -F ' ' '{print $2}')
|
||||
CORE_LV=$(sed -n 2p /tmp/clash_last_version 2>/dev/null)
|
||||
if [ -z "$CORE_LV" ]; then
|
||||
LOG_OUT "Error: 【"$CORE_TYPE"】Core Version Check Error, Please Try Again Later..."
|
||||
SLOG_CLEAN
|
||||
exit 0
|
||||
fi
|
||||
;;
|
||||
"Meta")
|
||||
CORE_CV=$($meta_core_path -v 2>/dev/null |awk -F ' ' '{print $3}' |head -1)
|
||||
CORE_LV=$(sed -n 3p /tmp/clash_last_version 2>/dev/null)
|
||||
;;
|
||||
*)
|
||||
CORE_CV=$($dev_core_path -v 2>/dev/null |awk -F ' ' '{print $2}')
|
||||
CORE_LV=$(sed -n 1p /tmp/clash_last_version 2>/dev/null)
|
||||
esac
|
||||
CORE_CV=$($meta_core_path -v 2>/dev/null |awk -F ' ' '{print $3}' |head -1)
|
||||
CORE_LV=$(sed -n 3p /tmp/clash_last_version 2>/dev/null)
|
||||
|
||||
|
||||
[ "$C_CORE_TYPE" = "$CORE_TYPE" ] || [ -z "$C_CORE_TYPE" ] && if_restart=1
|
||||
|
||||
if [ "$CORE_CV" != "$CORE_LV" ] || [ -z "$CORE_CV" ]; then
|
||||
if [ "$CPU_MODEL" != 0 ]; then
|
||||
case $CORE_TYPE in
|
||||
"TUN")
|
||||
LOG_OUT "【TUN】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
|
||||
curl -SsL --connect-timeout 30 -m 60 --speed-time 30 --speed-limit 1 --retry 2 "$github_address_mod"gh/vernesong/OpenClash@core/"$RELEASE_BRANCH"/premium/clash-"$CPU_MODEL"-"$CORE_LV".gz -o /tmp/clash_tun.gz 2>&1 |sed ':a;N;$!ba; s/\n/ /g' | awk -v time="$(date "+%Y-%m-%d %H:%M:%S")" -v file="/tmp/clash_tun.gz" '{print time "【" file "】Download Failed:【"$0"】"}' >> "$LOG_FILE"
|
||||
elif [ "$github_address_mod" == "https://raw.fastgit.org/" ]; then
|
||||
curl -SsL --connect-timeout 30 -m 60 --speed-time 30 --speed-limit 1 --retry 2 https://raw.fastgit.org/vernesong/OpenClash/core/"$RELEASE_BRANCH"/premium/clash-"$CPU_MODEL"-"$CORE_LV".gz -o /tmp/clash_tun.gz 2>&1 |sed ':a;N;$!ba; s/\n/ /g' | awk -v time="$(date "+%Y-%m-%d %H:%M:%S")" -v file="/tmp/clash_tun.gz" '{print time "【" file "】Download Failed:【"$0"】"}' >> "$LOG_FILE"
|
||||
else
|
||||
curl -SsL --connect-timeout 30 -m 60 --speed-time 30 --speed-limit 1 --retry 2 "$github_address_mod"https://raw.githubusercontent.com/vernesong/OpenClash/core/"$RELEASE_BRANCH"/premium/clash-"$CPU_MODEL"-"$CORE_LV".gz -o /tmp/clash_tun.gz 2>&1 |sed ':a;N;$!ba; s/\n/ /g' | awk -v time="$(date "+%Y-%m-%d %H:%M:%S")" -v file="/tmp/clash_tun.gz" '{print time "【" file "】Download Failed:【"$0"】"}' >> "$LOG_FILE"
|
||||
fi
|
||||
else
|
||||
curl -SsL --connect-timeout 30 -m 60 --speed-time 30 --speed-limit 1 --retry 2 https://raw.githubusercontent.com/vernesong/OpenClash/core/"$RELEASE_BRANCH"/premium/clash-"$CPU_MODEL"-"$CORE_LV".gz -o /tmp/clash_tun.gz 2>&1 |sed ':a;N;$!ba; s/\n/ /g' | awk -v time="$(date "+%Y-%m-%d %H:%M:%S")" -v file="/tmp/clash_tun.gz" '{print time "【" file "】Download Failed:【"$0"】"}' >> "$LOG_FILE"
|
||||
fi
|
||||
LOG_OUT "【Meta】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
|
||||
curl -SsL --connect-timeout 30 -m 60 --speed-time 30 --speed-limit 1 --retry 2 "$github_address_mod"gh/vernesong/OpenClash@core/"$RELEASE_BRANCH"/meta/clash-"$CPU_MODEL".tar.gz -o /tmp/clash_meta.tar.gz 2>&1 |sed ':a;N;$!ba; s/\n/ /g' | awk -v time="$(date "+%Y-%m-%d %H:%M:%S")" -v file="/tmp/clash_meta.tar.gz" '{print time "【" file "】Download Failed:【"$0"】"}' >> "$LOG_FILE"
|
||||
elif [ "$github_address_mod" == "https://raw.fastgit.org/" ]; then
|
||||
curl -SsL --connect-timeout 30 -m 60 --speed-time 30 --speed-limit 1 --retry 2 https://raw.fastgit.org/vernesong/OpenClash/core/"$RELEASE_BRANCH"/meta/clash-"$CPU_MODEL".tar.gz -o /tmp/clash_meta.tar.gz 2>&1 |sed ':a;N;$!ba; s/\n/ /g' | awk -v time="$(date "+%Y-%m-%d %H:%M:%S")" -v file="/tmp/clash_meta.tar.gz" '{print time "【" file "】Download Failed:【"$0"】"}' >> "$LOG_FILE"
|
||||
else
|
||||
curl -SsL --connect-timeout 30 -m 60 --speed-time 30 --speed-limit 1 --retry 2 "$github_address_mod"https://raw.githubusercontent.com/vernesong/OpenClash/core/"$RELEASE_BRANCH"/meta/clash-"$CPU_MODEL".tar.gz -o /tmp/clash_meta.tar.gz 2>&1 |sed ':a;N;$!ba; s/\n/ /g' | awk -v time="$(date "+%Y-%m-%d %H:%M:%S")" -v file="/tmp/clash_meta.tar.gz" '{print time "【" file "】Download Failed:【"$0"】"}' >> "$LOG_FILE"
|
||||
fi
|
||||
else
|
||||
curl -SsL --connect-timeout 30 -m 60 --speed-time 30 --speed-limit 1 --retry 2 https://raw.githubusercontent.com/vernesong/OpenClash/core/"$RELEASE_BRANCH"/meta/clash-"$CPU_MODEL".tar.gz -o /tmp/clash_meta.tar.gz 2>&1 |sed ':a;N;$!ba; s/\n/ /g' | awk -v time="$(date "+%Y-%m-%d %H:%M:%S")" -v file="/tmp/clash_meta.tar.gz" '{print time "【" file "】Download Failed:【"$0"】"}' >> "$LOG_FILE"
|
||||
fi
|
||||
|
||||
if [ "${PIPESTATUS[0]}" -eq 0 ]; then
|
||||
gzip -t /tmp/clash_tun.gz >/dev/null 2>&1
|
||||
fi
|
||||
;;
|
||||
"Meta")
|
||||
LOG_OUT "【Meta】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
|
||||
curl -SsL --connect-timeout 30 -m 60 --speed-time 30 --speed-limit 1 --retry 2 "$github_address_mod"gh/vernesong/OpenClash@core/"$RELEASE_BRANCH"/meta/clash-"$CPU_MODEL".tar.gz -o /tmp/clash_meta.tar.gz 2>&1 |sed ':a;N;$!ba; s/\n/ /g' | awk -v time="$(date "+%Y-%m-%d %H:%M:%S")" -v file="/tmp/clash_meta.tar.gz" '{print time "【" file "】Download Failed:【"$0"】"}' >> "$LOG_FILE"
|
||||
elif [ "$github_address_mod" == "https://raw.fastgit.org/" ]; then
|
||||
curl -SsL --connect-timeout 30 -m 60 --speed-time 30 --speed-limit 1 --retry 2 https://raw.fastgit.org/vernesong/OpenClash/core/"$RELEASE_BRANCH"/meta/clash-"$CPU_MODEL".tar.gz -o /tmp/clash_meta.tar.gz 2>&1 |sed ':a;N;$!ba; s/\n/ /g' | awk -v time="$(date "+%Y-%m-%d %H:%M:%S")" -v file="/tmp/clash_meta.tar.gz" '{print time "【" file "】Download Failed:【"$0"】"}' >> "$LOG_FILE"
|
||||
else
|
||||
curl -SsL --connect-timeout 30 -m 60 --speed-time 30 --speed-limit 1 --retry 2 "$github_address_mod"https://raw.githubusercontent.com/vernesong/OpenClash/core/"$RELEASE_BRANCH"/meta/clash-"$CPU_MODEL".tar.gz -o /tmp/clash_meta.tar.gz 2>&1 |sed ':a;N;$!ba; s/\n/ /g' | awk -v time="$(date "+%Y-%m-%d %H:%M:%S")" -v file="/tmp/clash_meta.tar.gz" '{print time "【" file "】Download Failed:【"$0"】"}' >> "$LOG_FILE"
|
||||
fi
|
||||
else
|
||||
curl -SsL --connect-timeout 30 -m 60 --speed-time 30 --speed-limit 1 --retry 2 https://raw.githubusercontent.com/vernesong/OpenClash/core/"$RELEASE_BRANCH"/meta/clash-"$CPU_MODEL".tar.gz -o /tmp/clash_meta.tar.gz 2>&1 |sed ':a;N;$!ba; s/\n/ /g' | awk -v time="$(date "+%Y-%m-%d %H:%M:%S")" -v file="/tmp/clash_meta.tar.gz" '{print time "【" file "】Download Failed:【"$0"】"}' >> "$LOG_FILE"
|
||||
fi
|
||||
|
||||
if [ "${PIPESTATUS[0]}" -eq 0 ]; then
|
||||
gzip -t /tmp/clash_meta.tar.gz >/dev/null 2>&1
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
LOG_OUT "【Dev】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
|
||||
curl -SsL --connect-timeout 30 -m 60 --speed-time 30 --speed-limit 1 --retry 2 "$github_address_mod"gh/vernesong/OpenClash@core/"$RELEASE_BRANCH"/dev/clash-"$CPU_MODEL".tar.gz -o /tmp/clash.tar.gz 2>&1 |sed ':a;N;$!ba; s/\n/ /g' | awk -v time="$(date "+%Y-%m-%d %H:%M:%S")" -v file="/tmp/clash.tar.gz" '{print time "【" file "】Download Failed:【"$0"】"}' >> "$LOG_FILE"
|
||||
elif [ "$github_address_mod" == "https://raw.fastgit.org/" ]; then
|
||||
curl -SsL --connect-timeout 30 -m 60 --speed-time 30 --speed-limit 1 --retry 2 https://raw.fastgit.org/vernesong/OpenClash/core/"$RELEASE_BRANCH"/dev/clash-"$CPU_MODEL".tar.gz -o /tmp/clash.tar.gz 2>&1 |sed ':a;N;$!ba; s/\n/ /g' | awk -v time="$(date "+%Y-%m-%d %H:%M:%S")" -v file="/tmp/clash.tar.gz" '{print time "【" file "】Download Failed:【"$0"】"}' >> "$LOG_FILE"
|
||||
else
|
||||
curl -SsL --connect-timeout 30 -m 60 --speed-time 30 --speed-limit 1 --retry 2 "$github_address_mod"https://raw.githubusercontent.com/vernesong/OpenClash/core/"$RELEASE_BRANCH"/dev/clash-"$CPU_MODEL".tar.gz -o /tmp/clash.tar.gz 2>&1 |sed ':a;N;$!ba; s/\n/ /g' | awk -v time="$(date "+%Y-%m-%d %H:%M:%S")" -v file="/tmp/clash.tar.gz" '{print time "【" file "】Download Failed:【"$0"】"}' >> "$LOG_FILE"
|
||||
fi
|
||||
else
|
||||
curl -SsL --connect-timeout 30 -m 60 --speed-time 30 --speed-limit 1 --retry 2 https://raw.githubusercontent.com/vernesong/OpenClash/core/"$RELEASE_BRANCH"/dev/clash-"$CPU_MODEL".tar.gz -o /tmp/clash.tar.gz 2>&1 |sed ':a;N;$!ba; s/\n/ /g' | awk -v time="$(date "+%Y-%m-%d %H:%M:%S")" -v file="/tmp/clash.tar.gz" '{print time "【" file "】Download Failed:【"$0"】"}' >> "$LOG_FILE"
|
||||
fi
|
||||
|
||||
if [ "${PIPESTATUS[0]}" -eq 0 ]; then
|
||||
gzip -t /tmp/clash.tar.gz >/dev/null 2>&1
|
||||
fi
|
||||
esac
|
||||
if [ "${PIPESTATUS[0]}" -eq 0 ]; then
|
||||
gzip -t /tmp/clash_meta.tar.gz >/dev/null 2>&1
|
||||
fi
|
||||
|
||||
if [ "$?" == "0" ]; then
|
||||
LOG_OUT "【"$CORE_TYPE"】Core Download Successful, Start Update..."
|
||||
case $CORE_TYPE in
|
||||
"TUN")
|
||||
[ -s "/tmp/clash_tun.gz" ] && {
|
||||
gzip -d /tmp/clash_tun.gz >/dev/null 2>&1
|
||||
rm -rf /tmp/clash_tun.gz >/dev/null 2>&1
|
||||
rm -rf "$tun_core_path" >/dev/null 2>&1
|
||||
chmod 4755 /tmp/clash_tun >/dev/null 2>&1
|
||||
/tmp/clash_tun -v >/dev/null 2>&1
|
||||
}
|
||||
;;
|
||||
"Meta")
|
||||
[ -s "/tmp/clash_meta.tar.gz" ] && {
|
||||
rm -rf "$meta_core_path" >/dev/null 2>&1
|
||||
tar zxvf /tmp/clash_meta.tar.gz -C /tmp
|
||||
mv /tmp/clash /tmp/clash_meta >/dev/null 2>&1
|
||||
rm -rf /tmp/clash_meta.tar.gz >/dev/null 2>&1
|
||||
chmod 4755 /tmp/clash_meta >/dev/null 2>&1
|
||||
/tmp/clash_meta -v >/dev/null 2>&1
|
||||
}
|
||||
;;
|
||||
*)
|
||||
[ -s "/tmp/clash.tar.gz" ] && {
|
||||
rm -rf "$dev_core_path" >/dev/null 2>&1
|
||||
tar zxvf /tmp/clash.tar.gz -C /tmp
|
||||
rm -rf /tmp/clash.tar.gz >/dev/null 2>&1
|
||||
chmod 4755 /tmp/clash >/dev/null 2>&1
|
||||
/tmp/clash -v >/dev/null 2>&1
|
||||
}
|
||||
esac
|
||||
[ -s "/tmp/clash_meta.tar.gz" ] && {
|
||||
rm -rf "$meta_core_path" >/dev/null 2>&1
|
||||
tar zxvf /tmp/clash_meta.tar.gz -C /tmp
|
||||
mv /tmp/clash /tmp/clash_meta >/dev/null 2>&1
|
||||
rm -rf /tmp/clash_meta.tar.gz >/dev/null 2>&1
|
||||
chmod 4755 /tmp/clash_meta >/dev/null 2>&1
|
||||
/tmp/clash_meta -v >/dev/null 2>&1
|
||||
}
|
||||
|
||||
if [ "$?" != "0" ]; then
|
||||
LOG_OUT "【"$CORE_TYPE"】Core Update Failed. Please Make Sure Enough Flash Memory Space or Selected Correct Core Platform And Try Again!"
|
||||
case $CORE_TYPE in
|
||||
"TUN")
|
||||
rm -rf /tmp/clash_tun >/dev/null 2>&1
|
||||
;;
|
||||
"Meta")
|
||||
rm -rf /tmp/clash_meta >/dev/null 2>&1
|
||||
;;
|
||||
*)
|
||||
rm -rf /tmp/clash >/dev/null 2>&1
|
||||
esac
|
||||
rm -rf /tmp/clash_meta >/dev/null 2>&1
|
||||
SLOG_CLEAN
|
||||
exit 0
|
||||
fi
|
||||
|
||||
case $CORE_TYPE in
|
||||
"TUN")
|
||||
mv /tmp/clash_tun "$tun_core_path" >/dev/null 2>&1
|
||||
;;
|
||||
"Meta")
|
||||
mv /tmp/clash_meta "$meta_core_path" >/dev/null 2>&1
|
||||
;;
|
||||
*)
|
||||
mv /tmp/clash "$dev_core_path" >/dev/null 2>&1
|
||||
esac
|
||||
|
||||
mv /tmp/clash_meta "$meta_core_path" >/dev/null 2>&1
|
||||
|
||||
if [ "$?" == "0" ]; then
|
||||
LOG_OUT "【"$CORE_TYPE"】Core Update Successful!"
|
||||
if [ "$if_restart" -eq 1 ]; then
|
||||
uci -q set openclash.config.config_reload=0
|
||||
uci -q commit openclash
|
||||
uci -q set openclash.config.config_reload=1
|
||||
uci -q commit openclash
|
||||
if ([ -z "$2" ] || ([ -n "$2" ] && [ "$2" != "one_key_update" ])) && [ "$(find /tmp/lock/ |grep -v "openclash.lock" |grep -c "openclash")" -le 1 ] && [ "$(unify_ps_prevent)" -eq 0 ]; then
|
||||
/etc/init.d/openclash restart >/dev/null 2>&1 &
|
||||
fi
|
||||
@ -209,13 +113,5 @@ else
|
||||
SLOG_CLEAN
|
||||
fi
|
||||
|
||||
case $CORE_TYPE in
|
||||
"TUN")
|
||||
rm -rf /tmp/clash_tun >/dev/null 2>&1
|
||||
;;
|
||||
"Meta")
|
||||
rm -rf /tmp/clash_meta >/dev/null 2>&1
|
||||
;;
|
||||
*)
|
||||
rm -rf /tmp/clash >/dev/null 2>&1
|
||||
esac
|
||||
rm -rf /tmp/clash_meta >/dev/null 2>&1
|
||||
|
||||
|
@ -14,7 +14,6 @@ del_lock() {
|
||||
|
||||
DEBUG_LOG="/tmp/openclash_debug.log"
|
||||
LOGTIME=$(echo $(date "+%Y-%m-%d %H:%M:%S"))
|
||||
uci -q commit openclash
|
||||
set_lock
|
||||
|
||||
enable_custom_dns=$(uci -q get openclash.config.enable_custom_dns)
|
||||
@ -33,8 +32,6 @@ RAW_CONFIG_FILE=$(uci -q get openclash.config.config_path)
|
||||
CONFIG_FILE="/etc/openclash/$(uci -q get openclash.config.config_path |awk -F '/' '{print $5}' 2>/dev/null)"
|
||||
core_model=$(uci -q get openclash.config.core_version)
|
||||
cpu_model=$(opkg status libc 2>/dev/null |grep 'Architecture' |awk -F ': ' '{print $2}' 2>/dev/null)
|
||||
core_version=$(/etc/openclash/core/clash -v 2>/dev/null |awk -F ' ' '{print $2}' 2>/dev/null)
|
||||
core_tun_version=$(/etc/openclash/core/clash_tun -v 2>/dev/null |awk -F ' ' '{print $2}' 2>/dev/null)
|
||||
core_meta_version=$(/etc/openclash/core/clash_meta -v 2>/dev/null |awk -F ' ' '{print $3}' |head -1 2>/dev/null)
|
||||
servers_update=$(uci -q get openclash.config.servers_update)
|
||||
mix_proxies=$(uci -q get openclash.config.mix_proxies)
|
||||
@ -67,11 +64,11 @@ fi
|
||||
|
||||
ts_cf()
|
||||
{
|
||||
if [ "$1" != 1 ]; then
|
||||
if [ "$1" = "0" ] || [ -z "$1" ]; then
|
||||
echo "停用"
|
||||
else
|
||||
echo "启用"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
ts_re()
|
||||
@ -187,51 +184,6 @@ cat >> "$DEBUG_LOG" <<-EOF
|
||||
#下方无法显示内核版本号时请确认您的内核版本是否正确或者有无权限
|
||||
EOF
|
||||
|
||||
cat >> "$DEBUG_LOG" <<-EOF
|
||||
Tun内核版本: $core_tun_version
|
||||
EOF
|
||||
if [ ! -f "/etc/openclash/core/clash_tun" ]; then
|
||||
cat >> "$DEBUG_LOG" <<-EOF
|
||||
Tun内核文件: 不存在
|
||||
EOF
|
||||
else
|
||||
cat >> "$DEBUG_LOG" <<-EOF
|
||||
Tun内核文件: 存在
|
||||
EOF
|
||||
fi
|
||||
if [ ! -x "/etc/openclash/core/clash_tun" ]; then
|
||||
cat >> "$DEBUG_LOG" <<-EOF
|
||||
Tun内核运行权限: 否
|
||||
EOF
|
||||
else
|
||||
cat >> "$DEBUG_LOG" <<-EOF
|
||||
Tun内核运行权限: 正常
|
||||
EOF
|
||||
fi
|
||||
|
||||
cat >> "$DEBUG_LOG" <<-EOF
|
||||
|
||||
Dev内核版本: $core_version
|
||||
EOF
|
||||
if [ ! -f "/etc/openclash/core/clash" ]; then
|
||||
cat >> "$DEBUG_LOG" <<-EOF
|
||||
Dev内核文件: 不存在
|
||||
EOF
|
||||
else
|
||||
cat >> "$DEBUG_LOG" <<-EOF
|
||||
Dev内核文件: 存在
|
||||
EOF
|
||||
fi
|
||||
if [ ! -x "/etc/openclash/core/clash" ]; then
|
||||
cat >> "$DEBUG_LOG" <<-EOF
|
||||
Dev内核运行权限: 否
|
||||
EOF
|
||||
else
|
||||
cat >> "$DEBUG_LOG" <<-EOF
|
||||
Dev内核运行权限: 正常
|
||||
EOF
|
||||
fi
|
||||
|
||||
cat >> "$DEBUG_LOG" <<-EOF
|
||||
|
||||
Meta内核版本: $core_meta_version
|
||||
@ -386,7 +338,7 @@ EOF
|
||||
for nft in "input" "forward" "dstnat" "srcnat" "nat_output" "mangle_prerouting" "mangle_output"; do
|
||||
nft list chain inet fw4 "$nft" >> "$DEBUG_LOG" 2>/dev/null
|
||||
done >/dev/null 2>&1
|
||||
for nft in "openclash" "openclash_mangle" "openclash_mangle_output" "openclash_output" "openclash_post" "openclash_wan_input" "openclash_dns_hijack" "openclash_dns_redirect" "openclash_mangle_v6" "openclash_mangle_output_v6" "openclash_post_v6" "openclash_wan6_input"; do
|
||||
for nft in "openclash" "openclash_mangle" "openclash_mangle_output" "openclash_output" "openclash_post" "openclash_wan_input" "openclash_dns_hijack" "openclash_dns_redirect" "openclash_v6" "openclash_mangle_v6" "openclash_mangle_output_v6" "openclash_output_v6" "openclash_post_v6" "openclash_wan6_input"; do
|
||||
nft list chain inet fw4 "$nft" >> "$DEBUG_LOG" 2>/dev/null
|
||||
done >/dev/null 2>&1
|
||||
fi
|
||||
@ -490,7 +442,7 @@ cat >> "$DEBUG_LOG" <<-EOF
|
||||
#===================== 测试本机网络下载(raw.githubusercontent.com) =====================#
|
||||
|
||||
EOF
|
||||
VERSION_URL="https://raw.githubusercontent.com/vernesong/OpenClash/master/version"
|
||||
VERSION_URL="https://raw.githubusercontent.com/vernesong/OpenClash/refs/heads/master/LICENSE"
|
||||
if pidof clash >/dev/null; then
|
||||
curl -SsIL -m 3 --retry 2 "$VERSION_URL" >> "$DEBUG_LOG" 2>/dev/null
|
||||
else
|
||||
@ -504,9 +456,10 @@ cat >> "$DEBUG_LOG" <<-EOF
|
||||
EOF
|
||||
|
||||
if pidof clash >/dev/null; then
|
||||
curl -sL -m 3 -H "Content-Type: application/json" -H "Authorization: Bearer ${da_password}" -XPATCH http://${lan_ip}:${cn_port}/configs -d '{"log-level": "debug"}'
|
||||
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
|
||||
sleep 10
|
||||
fi
|
||||
|
||||
tail -n 100 "/tmp/openclash.log" >> "$DEBUG_LOG" 2>/dev/null
|
||||
cat >> "$DEBUG_LOG" <<-EOF
|
||||
|
||||
@ -514,7 +467,7 @@ cat >> "$DEBUG_LOG" <<-EOF
|
||||
|
||||
EOF
|
||||
if pidof clash >/dev/null; then
|
||||
curl -sL -m 3 -H "Content-Type: application/json" -H "Authorization: Bearer ${da_password}" -XPATCH http://${lan_ip}:${cn_port}/configs -d '{"log-level": "silent"}'
|
||||
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
|
||||
fi
|
||||
|
||||
cat >> "$DEBUG_LOG" <<-EOF
|
||||
|
@ -49,10 +49,6 @@ local function debug_getcon()
|
||||
end
|
||||
if not addr then
|
||||
luci.sys.exec(string.format('echo "%s. SourceIP:【%s】 - Host:【%s】 - DestinationIP:【%s】 - Network:【%s】 - RulePayload:【%s】 - Lastchain:【%s】" >> /tmp/openclash_debug.log', i, (info.connections[i].metadata.sourceIP), host, (info.connections[i].metadata.destinationIP), (info.connections[i].metadata.network), (info.connections[i].rulePayload),(info.connections[i].chains[1])))
|
||||
elseif addr == "netflix-nflxvideo" then
|
||||
if string.match(host, "nflxvideo.net") or string.match(host, "amazonaws.com") then
|
||||
print(host)
|
||||
end
|
||||
else
|
||||
if datatype.hostname(addr) and string.lower(addr) == host or datatype.ipaddr(addr) and addr == (info.connections[i].metadata.destinationIP) then
|
||||
print("id: "..(info.connections[i].id))
|
||||
|
@ -12,37 +12,7 @@ urlencode() {
|
||||
LOG_FILE="/tmp/openclash.log"
|
||||
RELEASE_BRANCH=$(uci -q get openclash.config.release_branch || echo "master")
|
||||
github_address_mod=$(uci -q get openclash.config.github_address_mod || echo 0)
|
||||
if [ "$1" == "netflix_domains" ]; 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_PATH="${github_address_mod}gh/vernesong/OpenClash@$RELEASE_BRANCH/luci-app-openclash/root/usr/share/openclash/res/Netflix_Domains.list"
|
||||
elif [ "$github_address_mod" == "https://raw.fastgit.org/" ]; then
|
||||
DOWNLOAD_PATH="https://raw.fastgit.org/vernesong/OpenClash/$RELEASE_BRANCH/luci-app-openclash/root/usr/share/openclash/res/Netflix_Domains.list"
|
||||
else
|
||||
DOWNLOAD_PATH="${github_address_mod}https://raw.githubusercontent.com/vernesong/OpenClash/$RELEASE_BRANCH/luci-app-openclash/root/usr/share/openclash/res/Netflix_Domains.list"
|
||||
fi
|
||||
else
|
||||
DOWNLOAD_PATH="https://raw.githubusercontent.com/vernesong/OpenClash/$RELEASE_BRANCH/luci-app-openclash/root/usr/share/openclash/res/Netflix_Domains.list"
|
||||
fi
|
||||
RULE_FILE_DIR="/usr/share/openclash/res/Netflix_Domains.list"
|
||||
RULE_FILE_NAME="Netflix_Domains"
|
||||
RULE_TYPE="netflix"
|
||||
elif [ "$1" == "disney_domains" ]; 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_PATH="${github_address_mod}gh/vernesong/OpenClash@$RELEASE_BRANCH/luci-app-openclash/root/usr/share/openclash/res/Disney_Plus_Domains.list"
|
||||
elif [ "$github_address_mod" == "https://raw.fastgit.org/" ]; then
|
||||
DOWNLOAD_PATH="https://raw.fastgit.org/vernesong/OpenClash/$RELEASE_BRANCH/luci-app-openclash/root/usr/share/openclash/res/Disney_Plus_Domains.list"
|
||||
else
|
||||
DOWNLOAD_PATH="${github_address_mod}https://raw.githubusercontent.com/vernesong/OpenClash/$RELEASE_BRANCH/luci-app-openclash/root/usr/share/openclash/res/Disney_Plus_Domains.list"
|
||||
fi
|
||||
else
|
||||
DOWNLOAD_PATH="https://raw.githubusercontent.com/vernesong/OpenClash/$RELEASE_BRANCH/luci-app-openclash/root/usr/share/openclash/res/Disney_Plus_Domains.list"
|
||||
fi
|
||||
RULE_FILE_DIR="/usr/share/openclash/res/Disney_Plus_Domains.list"
|
||||
RULE_FILE_NAME="Disney_Plus_Domains"
|
||||
RULE_TYPE="disney"
|
||||
elif [ -z "$(grep "$RULE_FILE_NAME" /usr/share/openclash/res/rule_providers.list 2>/dev/null)" ]; then
|
||||
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"
|
||||
@ -60,13 +30,9 @@ urlencode() {
|
||||
|
||||
TMP_RULE_DIR="/tmp/$RULE_FILE_NAME"
|
||||
TMP_RULE_DIR_TMP="/tmp/$RULE_FILE_NAME.tmp"
|
||||
[ "$RULE_TYPE" != "netflix" ] && [ "$RULE_TYPE" != "disney" ] && DOWNLOAD_PATH=$(urlencode "$DOWNLOAD_PATH")
|
||||
DOWNLOAD_PATH=$(urlencode "$DOWNLOAD_PATH")
|
||||
|
||||
if [ "$RULE_TYPE" = "netflix" ]; then
|
||||
curl -SsL --connect-timeout 30 -m 60 --speed-time 30 --speed-limit 1 --retry 2 "$DOWNLOAD_PATH" -o "$TMP_RULE_DIR" 2>&1 |sed ':a;N;$!ba; s/\n/ /g' |sed ':a;N;$!ba; s/\n/ /g' | awk -v time="$(date "+%Y-%m-%d %H:%M:%S")" -v file="$TMP_RULE_DIR" '{print time "【" file "】Download Failed:【"$0"】"}' >> "$LOG_FILE"
|
||||
elif [ "$RULE_TYPE" = "disney" ]; then
|
||||
curl -SsL --connect-timeout 30 -m 60 --speed-time 30 --speed-limit 1 --retry 2 "$DOWNLOAD_PATH" -o "$TMP_RULE_DIR" 2>&1 |sed ':a;N;$!ba; s/\n/ /g' |sed ':a;N;$!ba; s/\n/ /g' | awk -v time="$(date "+%Y-%m-%d %H:%M:%S")" -v file="$TMP_RULE_DIR" '{print time "【" file "】Download Failed:【"$0"】"}' >> "$LOG_FILE"
|
||||
elif [ "$RULE_TYPE" = "game" ]; then
|
||||
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
|
||||
curl -SsL --connect-timeout 30 -m 60 --speed-time 30 --speed-limit 1 --retry 2 "$github_address_mod"gh/FQrabbit/SSTap-Rule@master/rules/"$DOWNLOAD_PATH" -o "$TMP_RULE_DIR" 2>&1 |sed ':a;N;$!ba; s/\n/ /g' | awk -v time="$(date "+%Y-%m-%d %H:%M:%S")" -v file="$TMP_RULE_DIR" '{print time "【" file "】Download Failed:【"$0"】"}' >> "$LOG_FILE"
|
||||
|
@ -70,4 +70,4 @@
|
||||
|
||||
rm -rf /tmp/Country.mmdb >/dev/null 2>&1
|
||||
SLOG_CLEAN
|
||||
del_lock
|
||||
del_lock
|
@ -46,32 +46,6 @@
|
||||
curl -SsL --connect-timeout 30 -m 60 --speed-time 30 --speed-limit 1 --retry 2 https://raw.githubusercontent.com/dler-io/Rules/master/Clash/Rule.yaml -o /tmp/rules.yaml 2>&1 |sed ':a;N;$!ba; s/\n/ /g' | awk -v time="$(date "+%Y-%m-%d %H:%M:%S")" -v file="/tmp/rules.yaml" '{print time "【" file "】Download Failed:【"$0"】"}' >> "$LOG_FILE"
|
||||
fi
|
||||
sed -i '1i rules:' /tmp/rules.yaml
|
||||
elif [ "$rule_name" = "ConnersHua" ]; 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
|
||||
curl -SsL --connect-timeout 30 -m 60 --speed-time 30 --speed-limit 1 --retry 2 "$github_address_mod"gh/DivineEngine/Profiles@master/Clash/Outbound.yaml -o /tmp/rules.yaml 2>&1 |sed ':a;N;$!ba; s/\n/ /g' | awk -v time="$(date "+%Y-%m-%d %H:%M:%S")" -v file="/tmp/rules.yaml" '{print time "【" file "】Download Failed:【"$0"】"}' >> "$LOG_FILE"
|
||||
elif [ "$github_address_mod" == "https://raw.fastgit.org/" ]; then
|
||||
curl -SsL --connect-timeout 30 -m 60 --speed-time 30 --speed-limit 1 --retry 2 https://raw.fastgit.org/DivineEngine/Profiles/master/Clash/Outbound.yaml -o /tmp/rules.yaml 2>&1 |sed ':a;N;$!ba; s/\n/ /g' | awk -v time="$(date "+%Y-%m-%d %H:%M:%S")" -v file="/tmp/rules.yaml" '{print time "【" file "】Download Failed:【"$0"】"}' >> "$LOG_FILE"
|
||||
else
|
||||
curl -SsL --connect-timeout 30 -m 60 --speed-time 30 --speed-limit 1 --retry 2 "$github_address_mod"https://raw.githubusercontent.com/DivineEngine/Profiles/master/Clash/Outbound.yaml -o /tmp/rules.yaml 2>&1 |sed ':a;N;$!ba; s/\n/ /g' | awk -v time="$(date "+%Y-%m-%d %H:%M:%S")" -v file="/tmp/rules.yaml" '{print time "【" file "】Download Failed:【"$0"】"}' >> "$LOG_FILE"
|
||||
fi
|
||||
else
|
||||
curl -SsL --connect-timeout 30 -m 60 --speed-time 30 --speed-limit 1 --retry 2 https://raw.githubusercontent.com/DivineEngine/Profiles/master/Clash/Outbound.yaml -o /tmp/rules.yaml 2>&1 |sed ':a;N;$!ba; s/\n/ /g' | awk -v time="$(date "+%Y-%m-%d %H:%M:%S")" -v file="/tmp/rules.yaml" '{print time "【" file "】Download Failed:【"$0"】"}' >> "$LOG_FILE"
|
||||
fi
|
||||
sed -i "s/# - RULE-SET,ChinaIP,DIRECT/- RULE-SET,ChinaIP,DIRECT/g" /tmp/rules.yaml 2>/dev/null
|
||||
sed -i "s/- GEOIP,/#- GEOIP,/g" /tmp/rules.yaml 2>/dev/null
|
||||
elif [ "$rule_name" = "ConnersHua_return" ]; 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
|
||||
curl -SsL --connect-timeout 30 -m 60 --speed-time 30 --speed-limit 1 --retry 2 "$github_address_mod"gh/DivineEngine/Profiles@master/Clash/Inbound.yaml -o /tmp/rules.yaml 2>&1 |sed ':a;N;$!ba; s/\n/ /g' | awk -v time="$(date "+%Y-%m-%d %H:%M:%S")" -v file="/tmp/rules.yaml" '{print time "【" file "】Download Failed:【"$0"】"}' >> "$LOG_FILE"
|
||||
elif [ "$github_address_mod" == "https://raw.fastgit.org/" ]; then
|
||||
curl -SsL --connect-timeout 30 -m 60 --speed-time 30 --speed-limit 1 --retry 2 https://raw.fastgit.org/DivineEngine/Profiles/master/Clash/Inbound.yaml -o /tmp/rules.yaml 2>&1 |sed ':a;N;$!ba; s/\n/ /g' | awk -v time="$(date "+%Y-%m-%d %H:%M:%S")" -v file="/tmp/rules.yaml" '{print time "【" file "】Download Failed:【"$0"】"}' >> "$LOG_FILE"
|
||||
else
|
||||
curl -SsL --connect-timeout 30 -m 60 --speed-time 30 --speed-limit 1 --retry 2 "$github_address_mod"https://raw.githubusercontent.com/DivineEngine/Profiles/master/Clash/Inbound.yaml -o /tmp/rules.yaml 2>&1 |sed ':a;N;$!ba; s/\n/ /g' | awk -v time="$(date "+%Y-%m-%d %H:%M:%S")" -v file="/tmp/rules.yaml" '{print time "【" file "】Download Failed:【"$0"】"}' >> "$LOG_FILE"
|
||||
fi
|
||||
else
|
||||
curl -SsL --connect-timeout 30 -m 60 --speed-time 30 --speed-limit 1 --retry 2 https://raw.githubusercontent.com/DivineEngine/Profiles/master/Clash/Inbound.yaml -o /tmp/rules.yaml 2>&1 |sed ':a;N;$!ba; s/\n/ /g' | awk -v time="$(date "+%Y-%m-%d %H:%M:%S")" -v file="/tmp/rules.yaml" '{print time "【" file "】Download Failed:【"$0"】"}' >> "$LOG_FILE"
|
||||
fi
|
||||
fi
|
||||
if [ -s "/tmp/rules.yaml" ]; then
|
||||
LOG_OUT "Download Successful, Start Preprocessing Rule File..."
|
||||
|
@ -17,6 +17,12 @@ local now_name, group_name, group_type, group_show, status, ip, port, passwd, gr
|
||||
local groups = {}
|
||||
local proxies = {}
|
||||
local tested_proxy = {}
|
||||
local unlock_cache_file = "/etc/openclash/history/streaming_unlock_cache"
|
||||
local unlock_cache = FS.readfile(unlock_cache_file)
|
||||
local unlock_cache_info = {}
|
||||
if unlock_cache then
|
||||
unlock_cache_info = JSON.parse(unlock_cache)
|
||||
end
|
||||
local self_status = SYS.exec(string.format('ps -w |grep -v grep |grep -c "openclash_streaming_unlock.lua %s"', type))
|
||||
local select_logic = UCI:get("openclash", "config", "stream_auto_select_logic") or "urltest"
|
||||
|
||||
@ -158,19 +164,21 @@ function unlock_auto_select()
|
||||
if region and region ~= "" then
|
||||
table.insert(full_support_list, {value.now, value.now, get_group_now(info, value.now), region})
|
||||
print(now..full_support.."【"..region.."】")
|
||||
write_cache(type, get_group_now(info, value.now), region)
|
||||
else
|
||||
table.insert(full_support_list, {value.now, value.now, get_group_now(info, value.now)})
|
||||
print(now..full_support_no_area)
|
||||
write_cache(type, get_group_now(info, value.now))
|
||||
end
|
||||
if not all_test and #nodes_filter(now_name, info) ~= 0 then
|
||||
if status == 4 then
|
||||
status = 2
|
||||
if region and region ~= "" then
|
||||
FS.writefile(string.format("/tmp/openclash_%s_region", type), region)
|
||||
write_cache(type, "old_region", region)
|
||||
end
|
||||
end
|
||||
if status == 2 and type == "Google" then
|
||||
FS.writefile(string.format("/tmp/openclash_%s_region", type), now_name)
|
||||
write_cache(type, "old_region", now_name)
|
||||
end
|
||||
break
|
||||
else
|
||||
@ -179,8 +187,10 @@ function unlock_auto_select()
|
||||
elseif status == 3 then
|
||||
if region and region ~= "" then
|
||||
table.insert(other_region_unlock, {value.now, value.now, get_group_now(info, value.now), region})
|
||||
write_cache(type, get_group_now(info, value.now), region)
|
||||
else
|
||||
table.insert(other_region_unlock, {value.now, value.now, get_group_now(info, value.now)})
|
||||
write_cache(type, get_group_now(info, value.now))
|
||||
end
|
||||
if not all_test then
|
||||
if region and region ~= "" then
|
||||
@ -210,6 +220,7 @@ function unlock_auto_select()
|
||||
print(now..no_unlock)
|
||||
end
|
||||
end
|
||||
delete_cache(type, get_group_now(info, value.now))
|
||||
else
|
||||
if not all_test then
|
||||
print(now..faild_test_start)
|
||||
@ -225,12 +236,16 @@ function unlock_auto_select()
|
||||
if not all_test then
|
||||
--filter nodes
|
||||
value.all = nodes_filter(value.all, info)
|
||||
if select_logic == "random" then
|
||||
--sort by random
|
||||
value.all = table_rand(value.all, proxy_default)
|
||||
else
|
||||
--sort by urltest
|
||||
value.all = table_sort_by_urltest(value.all, proxy_default)
|
||||
if #value.all > 1 then
|
||||
if select_logic == "random" then
|
||||
--sort by random
|
||||
value.all = table_rand(value.all, proxy_default)
|
||||
else
|
||||
--sort by urltest
|
||||
value.all = table_sort_by_urltest(value.all, proxy_default)
|
||||
end
|
||||
--sort by cache
|
||||
value.all = table_sort_by_cache(value.all)
|
||||
end
|
||||
end
|
||||
if #(value.all) == 0 then
|
||||
@ -251,12 +266,16 @@ function unlock_auto_select()
|
||||
if not all_test then
|
||||
--filter nodes
|
||||
proxies = nodes_filter(proxies, info)
|
||||
if select_logic == "random" then
|
||||
--sort by random
|
||||
proxies = table_rand(proxies)
|
||||
else
|
||||
--sort by urltest
|
||||
proxies = table_sort_by_urltest(proxies)
|
||||
if #proxies > 1 then
|
||||
if select_logic == "random" then
|
||||
--sort by random
|
||||
proxies = table_rand(proxies)
|
||||
else
|
||||
--sort by urltest
|
||||
proxies = table_sort_by_urltest(proxies)
|
||||
end
|
||||
--sort by cache
|
||||
proxies = table_sort_by_cache(proxies)
|
||||
end
|
||||
end
|
||||
if #(proxies) == 0 then
|
||||
@ -293,6 +312,7 @@ function unlock_auto_select()
|
||||
else
|
||||
print(now..full_support.."【"..region.."】")
|
||||
end
|
||||
write_cache(type, proxy, region)
|
||||
else
|
||||
table.insert(full_support_list, {value.all[i], group_name, proxy})
|
||||
if not all_test then
|
||||
@ -301,23 +321,27 @@ function unlock_auto_select()
|
||||
else
|
||||
print(now..full_support_no_area)
|
||||
end
|
||||
write_cache(type, proxy)
|
||||
end
|
||||
elseif status == 3 then
|
||||
if region and region ~= "" then
|
||||
table.insert(other_region_unlock, {value.all[i], group_name, proxy, region})
|
||||
print(now..full_support.."【"..region.."】"..other_region_unlock_test)
|
||||
|
||||
write_cache(type, proxy, region)
|
||||
else
|
||||
table.insert(other_region_unlock, {value.all[i], group_name, proxy})
|
||||
print(now..full_support_no_area..other_region_unlock_test)
|
||||
write_cache(type, proxy)
|
||||
end
|
||||
elseif status == 4 then
|
||||
if region and region ~= "" then
|
||||
table.insert(no_old_region_unlock, {value.all[i], group_name, proxy, region})
|
||||
print(now..full_support.."【"..region.."】"..no_old_region_unlock_old_region.."【"..old_region.."】")
|
||||
write_cache(type, proxy, region)
|
||||
else
|
||||
table.insert(no_old_region_unlock, {value.all[i], group_name, proxy})
|
||||
print(now..no_old_region_unlock_test)
|
||||
write_cache(type, proxy)
|
||||
end
|
||||
elseif status == 1 then
|
||||
table.insert(original, {value.all[i], group_name, proxy})
|
||||
@ -326,6 +350,7 @@ function unlock_auto_select()
|
||||
else
|
||||
print(now..no_unlock)
|
||||
end
|
||||
delete_cache(type, proxy)
|
||||
else
|
||||
print(now..test_faild)
|
||||
end
|
||||
@ -365,6 +390,7 @@ function unlock_auto_select()
|
||||
else
|
||||
print(now..full_support.."【"..region.."】")
|
||||
end
|
||||
write_cache(type, value.all[i], region)
|
||||
else
|
||||
table.insert(full_support_list, {value.all[i], group_name, value.all[i]})
|
||||
if not all_test then
|
||||
@ -373,23 +399,27 @@ function unlock_auto_select()
|
||||
else
|
||||
print(now..full_support_no_area)
|
||||
end
|
||||
write_cache(type, value.all[i])
|
||||
end
|
||||
elseif status == 3 then
|
||||
if region and region ~= "" then
|
||||
table.insert(other_region_unlock, {value.all[i], group_name, value.all[i], region})
|
||||
print(now..full_support.."【"..region.."】"..other_region_unlock_no_select)
|
||||
write_cache(type, value.all[i], region)
|
||||
else
|
||||
table.insert(other_region_unlock, {value.all[i], group_name, value.all[i]})
|
||||
print(now..full_support_no_area..other_region_unlock_no_select)
|
||||
write_cache(type, value.all[i])
|
||||
end
|
||||
|
||||
elseif status == 4 then
|
||||
if region and region ~= "" then
|
||||
table.insert(no_old_region_unlock, {value.all[i], group_name, value.all[i], region})
|
||||
print(now..full_support.."【"..region.."】"..no_old_region_unlock_old_region.."【"..old_region.."】"..no_old_region_unlock_old_region_no_select)
|
||||
write_cache(type, value.all[i], region)
|
||||
else
|
||||
table.insert(no_old_region_unlock, {value.all[i], group_name, value.all[i]})
|
||||
print(now..full_support_no_area..no_old_region_unlock_no_select)
|
||||
write_cache(type, value.all[i])
|
||||
end
|
||||
elseif status == 1 then
|
||||
table.insert(original, {value.all[i], group_name, value.all[i]})
|
||||
@ -398,6 +428,7 @@ function unlock_auto_select()
|
||||
else
|
||||
print(now..no_unlock_no_select)
|
||||
end
|
||||
delete_cache(type, value.all[i])
|
||||
else
|
||||
print(now..faild_no_select)
|
||||
end
|
||||
@ -424,7 +455,7 @@ function unlock_auto_select()
|
||||
if #nodes_filter(v[3], info) ~= 0 then
|
||||
if v[4] then
|
||||
table.insert(fallback_select, 1, {v[1], v[2], v[3], v[4]})
|
||||
FS.writefile(string.format("/tmp/openclash_%s_region", type), v[4])
|
||||
write_cache(type, "old_region", v[4])
|
||||
else
|
||||
table.insert(fallback_select, 1, {v[1], v[2], v[3]})
|
||||
end
|
||||
@ -441,8 +472,6 @@ function unlock_auto_select()
|
||||
end
|
||||
if v[4] then
|
||||
group_now = group_now .. area_i18 .. "【"..v[4].."】"
|
||||
else
|
||||
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)
|
||||
@ -526,6 +555,8 @@ function unlock_auto_select()
|
||||
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)
|
||||
end
|
||||
--write cache
|
||||
FS.writefile(unlock_cache_file, JSON.stringify(unlock_cache_info))
|
||||
end
|
||||
|
||||
function urlencode(data)
|
||||
@ -538,6 +569,54 @@ function datamatch(data, regex)
|
||||
if result == "true" then return true else return false end
|
||||
end
|
||||
|
||||
function get_old_region(stream_type)
|
||||
local old_region = ""
|
||||
if not stream_type then
|
||||
stream_type = type
|
||||
end
|
||||
for k, v in pairs(unlock_cache_info) do
|
||||
if v[1] == stream_type and v[2] == "old_region" and v[3] then
|
||||
old_region = v[3]
|
||||
break
|
||||
end
|
||||
end
|
||||
return old_region
|
||||
end
|
||||
|
||||
function get_old_regex(stream_type)
|
||||
local old_regex = ""
|
||||
if not stream_type then
|
||||
stream_type = type
|
||||
end
|
||||
for k, v in pairs(unlock_cache_info) do
|
||||
if v[1] == stream_type and v[2] == "old_regex" and v[3] then
|
||||
old_regex = v[3]
|
||||
break
|
||||
end
|
||||
end
|
||||
return old_regex
|
||||
end
|
||||
|
||||
function write_cache(stream_type, node, region)
|
||||
if not region then
|
||||
region = ""
|
||||
end
|
||||
if not table_include(unlock_cache_info, {stream_type, node, region}) then
|
||||
if table_include(unlock_cache_info, {stream_type, node, "cache"}) then
|
||||
delete_cache(stream_type, node)
|
||||
end
|
||||
table.insert(unlock_cache_info, {stream_type, node, region})
|
||||
end
|
||||
end
|
||||
|
||||
function delete_cache(stream_type, node)
|
||||
for k, v in pairs(unlock_cache_info) do
|
||||
if v[1] == stream_type and v[2] == node then
|
||||
table.remove(unlock_cache_info, k)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function table_rand(t, d)
|
||||
if t == nil then
|
||||
return
|
||||
@ -547,7 +626,7 @@ function table_rand(t, d)
|
||||
while #t ~= 0 do
|
||||
local n = math.random(0, #t)
|
||||
if t[n] ~= nil then
|
||||
if type == "YouTube Premium" and FS.isfile("/tmp/openclash_Google_region") and FS.readfile("/tmp/openclash_Google_region") == t[n] then
|
||||
if type == "YouTube Premium" and get_old_region("Google") == t[n] then
|
||||
table.insert(tab, 1, t[n])
|
||||
elseif d ~= nil and table_include(groups, d) and d == t[n] then
|
||||
table.insert(tab, 1, t[n])
|
||||
@ -618,7 +697,7 @@ function table_sort_by_urltest(t, d)
|
||||
end)
|
||||
|
||||
for _, value in pairs(tab) do
|
||||
if type == "YouTube Premium" and FS.isfile("/tmp/openclash_Google_region") and FS.readfile("/tmp/openclash_Google_region") == value[1] then
|
||||
if type == "YouTube Premium" and get_old_region("Google") == value[1] then
|
||||
table.insert(result, 1, value[1])
|
||||
elseif d ~= nil and table_include(groups, d) and d == value[1] then
|
||||
table.insert(result, 1, value[1])
|
||||
@ -626,23 +705,71 @@ function table_sort_by_urltest(t, d)
|
||||
table.insert(result, value[1])
|
||||
end
|
||||
end
|
||||
|
||||
return result
|
||||
end
|
||||
|
||||
function table_sort_by_cache(t)
|
||||
local tab = {}
|
||||
local tab_b = {}
|
||||
local old_region = get_old_region()
|
||||
if old_region == "" then
|
||||
old_region = "cache"
|
||||
end
|
||||
for n = 1, #(t) do
|
||||
if table_include(unlock_cache_info, {type, t[n], old_region}) then
|
||||
table.insert(tab, t[n])
|
||||
else
|
||||
table.insert(tab_b, t[n])
|
||||
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...")
|
||||
end
|
||||
for k,v in pairs(tab_b) do table.insert(tab, v) end
|
||||
return tab
|
||||
end
|
||||
|
||||
function table_include(table, value)
|
||||
if table == nil then
|
||||
return false
|
||||
end
|
||||
|
||||
for k, v in pairs(table) do
|
||||
if v == value then
|
||||
return true
|
||||
if class_type(v) == "table" and class_type(value) == "table" then
|
||||
if table_eq(v, value) then
|
||||
return true
|
||||
else
|
||||
if v[1] == value[1] and v[2] == value[2] and value[3] == "cache" then
|
||||
return true
|
||||
end
|
||||
end
|
||||
else
|
||||
if v == value then
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
function table_eq(t1, t2)
|
||||
if t1 == t2 then return true end
|
||||
if class_type(t1) ~= "table" or class_type(t2) ~= "table" then return false end
|
||||
for k1, v1 in pairs(t1) do
|
||||
local v2 = t2[k1]
|
||||
if v2 == nil or not table_eq(v1, v2) then
|
||||
return false
|
||||
end
|
||||
end
|
||||
for k2, v2 in pairs(t2) do
|
||||
local v1 = t1[k2]
|
||||
if v1 == nil or not table_eq(v1, v2) then
|
||||
return false
|
||||
end
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
function get_auth_info()
|
||||
port = UCI:get("openclash", "config", "cn_port")
|
||||
passwd = UCI:get("openclash", "config", "dashboard_password") or ""
|
||||
@ -1026,7 +1153,8 @@ function netflix_unlock_test()
|
||||
local info = SYS.exec(string.format('curl -sLI --connect-timeout 5 -m 5 --speed-time 5 --speed-limit 1 --retry 2 -o /dev/null -w %%{json} -H "Content-Type: application/json" -H "%s" -XGET %s', headers, url))
|
||||
local result = {}
|
||||
local region
|
||||
local old_region = ""
|
||||
local old_region = get_old_region()
|
||||
local old_regex = get_old_regex()
|
||||
local regex = UCI:get("openclash", "config", "stream_auto_select_region_key_netflix") or ""
|
||||
if info then
|
||||
info = JSON.parse(info)
|
||||
@ -1038,16 +1166,18 @@ function netflix_unlock_test()
|
||||
region = string.upper(string.match(result[3], "^%a+"))
|
||||
if region == "TITLE" then region = "US" end
|
||||
if region then
|
||||
if FS.isfile(string.format("/tmp/openclash_%s_region", type)) then
|
||||
old_region = FS.readfile(string.format("/tmp/openclash_%s_region", type))
|
||||
end
|
||||
if not datamatch(region, regex) then
|
||||
status = 3
|
||||
elseif old_regex ~= regex and not all_test then
|
||||
status = 2
|
||||
elseif old_region ~= "" and region ~= old_region and not all_test then
|
||||
status = 4
|
||||
end
|
||||
if status == 2 and not all_test and ((old_region ~= "" and region ~= old_region) or (old_region == "")) then
|
||||
FS.writefile(string.format("/tmp/openclash_%s_region", type), region)
|
||||
if status == 2 and not all_test and region ~= "" and region ~= old_region then
|
||||
write_cache(type, "old_region", region)
|
||||
end
|
||||
if status == 2 and not all_test and regex ~= old_regex then
|
||||
write_cache(type, "old_regex", regex)
|
||||
end
|
||||
end
|
||||
return region, old_region
|
||||
@ -1068,7 +1198,8 @@ function disney_unlock_test()
|
||||
local body = '{"query":"mutation registerDevice($input: RegisterDeviceInput!) { registerDevice(registerDevice: $input) { grant { grantType assertion } } }","variables":{"input":{"deviceFamily":"browser","applicationRuntime":"chrome","deviceProfile":"windows","deviceLanguage":"en","attributes":{"osDeviceIds":[],"manufacturer":"microsoft","model":null,"operatingSystem":"windows","operatingSystemVersion":"10.0","browserName":"chrome","browserVersion":"96.0.4606"}}}}'
|
||||
local region, assertion, data, preassertion, disneycookie, tokencontent
|
||||
local regex = UCI:get("openclash", "config", "stream_auto_select_region_key_disney") or ""
|
||||
local old_region = ""
|
||||
local old_region = get_old_region()
|
||||
local old_regex = get_old_regex()
|
||||
|
||||
preassertion = SYS.exec(string.format("curl -sL --connect-timeout 5 -m 5 --speed-time 5 --speed-limit 1 --retry 2 %s -H 'User-Agent: %s' -H 'content-type: application/json; charset=UTF-8' -d '{\"deviceFamily\":\"browser\",\"applicationRuntime\":\"chrome\",\"deviceProfile\":\"windows\",\"attributes\":{}}' -XPOST %s", auth, UA, url))
|
||||
|
||||
@ -1097,32 +1228,34 @@ function disney_unlock_test()
|
||||
inSupportedLocation = JSON.parse(data).extensions.sdk.session.inSupportedLocation or ""
|
||||
if region == "JP" then
|
||||
status = 2
|
||||
if FS.isfile(string.format("/tmp/openclash_%s_region", type)) then
|
||||
old_region = FS.readfile(string.format("/tmp/openclash_%s_region", type))
|
||||
end
|
||||
if not datamatch(region, regex) then
|
||||
status = 3
|
||||
elseif old_regex ~= regex and not all_test then
|
||||
status = 2
|
||||
elseif old_region ~= "" and not datamatch(region, old_region) and not all_test then
|
||||
status = 4
|
||||
end
|
||||
if status == 2 and not all_test and ((old_region ~= "" and not datamatch(region, old_region)) or (old_region == "")) then
|
||||
FS.writefile(string.format("/tmp/openclash_%s_region", type), region)
|
||||
if status == 2 and not all_test and region ~= "" and region ~= old_region then
|
||||
write_cache(type, "old_region", region)
|
||||
end
|
||||
if status == 2 and not all_test and regex ~= old_regex then
|
||||
write_cache(type, "old_regex", regex)
|
||||
end
|
||||
return region, old_region
|
||||
end
|
||||
|
||||
if region and region ~= "" and inSupportedLocation then
|
||||
status = 2
|
||||
if FS.isfile(string.format("/tmp/openclash_%s_region", type)) then
|
||||
old_region = FS.readfile(string.format("/tmp/openclash_%s_region", type))
|
||||
end
|
||||
if not datamatch(region, regex) then
|
||||
status = 3
|
||||
elseif old_region ~= "" and not datamatch(region, old_region) and not all_test then
|
||||
status = 4
|
||||
end
|
||||
if status == 2 and not all_test and ((old_region ~= "" and not datamatch(region, old_region)) or (old_region == "")) then
|
||||
FS.writefile(string.format("/tmp/openclash_%s_region", type), region)
|
||||
if status == 2 and not all_test and region ~= "" and region ~= old_region then
|
||||
write_cache(type, "old_region", region)
|
||||
end
|
||||
if status == 2 and not all_test and regex ~= old_regex then
|
||||
write_cache(type, "old_regex", regex)
|
||||
end
|
||||
return region, old_region
|
||||
end
|
||||
@ -1155,7 +1288,8 @@ function hbo_max_unlock_test()
|
||||
local data = SYS.exec(string.format("curl -sL --connect-timeout 5 -m 5 --speed-time 5 --speed-limit 1 --retry 2 -o /dev/null -w %%{json} -H 'Content-Type: application/json' -H 'User-Agent: %s' %s", UA, url))
|
||||
local result = {}
|
||||
local region = ""
|
||||
local old_region = ""
|
||||
local old_region = get_old_region()
|
||||
local old_regex = get_old_regex()
|
||||
local regex = UCI:get("openclash", "config", "stream_auto_select_region_key_hbo_max") or ""
|
||||
if data then
|
||||
data = JSON.parse(data)
|
||||
@ -1170,16 +1304,18 @@ function hbo_max_unlock_test()
|
||||
region = string.upper(string.match(result[3], "^%a+"))
|
||||
end
|
||||
if region then
|
||||
if FS.isfile(string.format("/tmp/openclash_%s_region", type)) then
|
||||
old_region = FS.readfile(string.format("/tmp/openclash_%s_region", type))
|
||||
end
|
||||
if not datamatch(region, regex) then
|
||||
status = 3
|
||||
elseif old_regex ~= regex and not all_test then
|
||||
status = 2
|
||||
elseif old_region ~= "" and region ~= old_region and not all_test then
|
||||
status = 4
|
||||
end
|
||||
if status == 2 and not all_test and ((old_region ~= "" and region ~= old_region) or (old_region == "")) then
|
||||
FS.writefile(string.format("/tmp/openclash_%s_region", type), region)
|
||||
if status == 2 and not all_test and region ~= "" and region ~= old_region then
|
||||
write_cache(type, "old_region", region)
|
||||
end
|
||||
if status == 2 and not all_test and regex ~= old_regex then
|
||||
write_cache(type, "old_regex", regex)
|
||||
end
|
||||
end
|
||||
return region, old_region
|
||||
@ -1195,7 +1331,8 @@ function hbo_go_asia_unlock_test()
|
||||
local httpcode = SYS.exec(string.format("curl -sL --connect-timeout 5 -m 5 --speed-time 5 --speed-limit 1 --retry 2 -o /dev/null -w %%{http_code} -H 'Content-Type: application/json' -H 'User-Agent: %s' %s", UA, url))
|
||||
local regex = UCI:get("openclash", "config", "stream_auto_select_region_key_hbo_go_asia") or ""
|
||||
local region = ""
|
||||
local old_region = ""
|
||||
local old_region = get_old_region()
|
||||
local old_regex = get_old_regex()
|
||||
if tonumber(httpcode) == 200 then
|
||||
status = 1
|
||||
local data = SYS.exec(string.format("curl -sL --connect-timeout 5 -m 5 --speed-time 5 --speed-limit 1 --retry 2 -H 'Content-Type: application/json' -H 'User-Agent: %s' %s", UA, url))
|
||||
@ -1209,16 +1346,18 @@ function hbo_go_asia_unlock_test()
|
||||
region = string.upper(data.country)
|
||||
end
|
||||
if region then
|
||||
if FS.isfile(string.format("/tmp/openclash_%s_region", type)) then
|
||||
old_region = FS.readfile(string.format("/tmp/openclash_%s_region", type))
|
||||
end
|
||||
if not datamatch(region, regex) then
|
||||
status = 3
|
||||
elseif old_regex ~= regex and not all_test then
|
||||
status = 2
|
||||
elseif old_region ~= "" and region ~= old_region and not all_test then
|
||||
status = 4
|
||||
end
|
||||
if status == 2 and not all_test and ((old_region ~= "" and region ~= old_region) or (old_region == "")) then
|
||||
FS.writefile(string.format("/tmp/openclash_%s_region", type), region)
|
||||
if status == 2 and not all_test and region ~= "" and region ~= old_region then
|
||||
write_cache(type, "old_region", region)
|
||||
end
|
||||
if status == 2 and not all_test and regex ~= old_regex then
|
||||
write_cache(type, "old_regex", regex)
|
||||
end
|
||||
end
|
||||
return region, old_region
|
||||
@ -1233,9 +1372,10 @@ function ytb_unlock_test()
|
||||
local url = "https://m.youtube.com/premium"
|
||||
local httpcode = SYS.exec(string.format("curl -sL --connect-timeout 5 -m 5 --speed-time 5 --speed-limit 1 --retry 2 -o /dev/null -w %%{http_code} -H 'Accept-Language: en' -H 'Content-Type: application/json' -H 'User-Agent: %s' %s", UA, url))
|
||||
local region = ""
|
||||
local old_region = ""
|
||||
local old_region = get_old_region()
|
||||
local data, he_data
|
||||
local regex = UCI:get("openclash", "config", "stream_auto_select_region_key_ytb") or ""
|
||||
local old_regex = get_old_regex()
|
||||
if tonumber(httpcode) == 200 then
|
||||
status = 1
|
||||
data = SYS.exec(string.format("curl -sL --connect-timeout 5 -m 5 --speed-time 5 --speed-limit 1 --retry 2 -H 'Accept-Language: en' -H 'Content-Type: application/json' -H 'User-Agent: %s' -b 'YSC=BiCUU3-5Gdk; CONSENT=YES+cb.20220301-11-p0.en+FX+700; GPS=1; VISITOR_INFO1_LIVE=4VwPMkB7W5A; PREF=tz=Asia.Shanghai; _gcl_au=1.1.1809531354.1646633279' %s", UA, url))
|
||||
@ -1254,16 +1394,18 @@ function ytb_unlock_test()
|
||||
region = "US"
|
||||
end
|
||||
end
|
||||
if FS.isfile(string.format("/tmp/openclash_%s_region", type)) then
|
||||
old_region = FS.readfile(string.format("/tmp/openclash_%s_region", type))
|
||||
end
|
||||
if not datamatch(region, regex) then
|
||||
status = 3
|
||||
elseif old_regex ~= regex and not all_test then
|
||||
status = 2
|
||||
elseif old_region ~= "" and region ~= old_region and not all_test then
|
||||
status = 4
|
||||
end
|
||||
if status == 2 and not all_test and ((old_region ~= "" and region ~= old_region) or (old_region == "")) then
|
||||
FS.writefile(string.format("/tmp/openclash_%s_region", type), region)
|
||||
if status == 2 and not all_test and region ~= "" and region ~= old_region then
|
||||
write_cache(type, "old_region", region)
|
||||
end
|
||||
if status == 2 and not all_test and regex ~= old_regex then
|
||||
write_cache(type, "old_regex", regex)
|
||||
end
|
||||
end
|
||||
return region, old_region
|
||||
@ -1274,7 +1416,8 @@ function tvb_anywhere_unlock_test()
|
||||
local url = "https://uapisfm.tvbanywhere.com.sg/geoip/check/platform/android"
|
||||
local httpcode = SYS.exec(string.format("curl -sL --connect-timeout 5 -m 5 --speed-time 5 --speed-limit 1 --retry 2 -o /dev/null -w %%{http_code} -H 'Accept-Language: en' -H 'Content-Type: application/json' -H 'User-Agent: %s' %s", UA, url))
|
||||
local region = ""
|
||||
local old_region = ""
|
||||
local old_region = get_old_region()
|
||||
local old_regex = get_old_regex()
|
||||
local regex = UCI:get("openclash", "config", "stream_auto_select_region_key_tvb_anywhere") or ""
|
||||
if tonumber(httpcode) == 200 then
|
||||
status = 1
|
||||
@ -1288,16 +1431,18 @@ function tvb_anywhere_unlock_test()
|
||||
region = string.upper(data.country)
|
||||
end
|
||||
if region then
|
||||
if FS.isfile(string.format("/tmp/openclash_%s_region", type)) then
|
||||
old_region = FS.readfile(string.format("/tmp/openclash_%s_region", type))
|
||||
end
|
||||
if not datamatch(region, regex) then
|
||||
status = 3
|
||||
elseif old_regex ~= regex and not all_test then
|
||||
status = 2
|
||||
elseif old_region ~= "" and region ~= old_region and not all_test then
|
||||
status = 4
|
||||
end
|
||||
if status == 2 and not all_test and ((old_region ~= "" and region ~= old_region) or (old_region == "")) then
|
||||
FS.writefile(string.format("/tmp/openclash_%s_region", type), region)
|
||||
if status == 2 and not all_test and region ~= "" and region ~= old_region then
|
||||
write_cache(type, "old_region", region)
|
||||
end
|
||||
if status == 2 and not all_test and regex ~= old_regex then
|
||||
write_cache(type, "old_regex", regex)
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -1310,7 +1455,8 @@ function prime_video_unlock_test()
|
||||
local url = "https://www.primevideo.com"
|
||||
local httpcode = SYS.exec(string.format("curl -sL --connect-timeout 5 -m 5 --speed-time 5 --speed-limit 1 --retry 2 -o /dev/null -w %%{http_code} -H 'Accept-Language: en' -H 'Content-Type: application/json' -H 'User-Agent: %s' %s", UA, url))
|
||||
local region
|
||||
local old_region = ""
|
||||
local old_region = get_old_region()
|
||||
local old_regex = get_old_regex()
|
||||
local regex = UCI:get("openclash", "config", "stream_auto_select_region_key_prime_video") or ""
|
||||
if tonumber(httpcode) == 200 then
|
||||
status = 1
|
||||
@ -1319,16 +1465,18 @@ function prime_video_unlock_test()
|
||||
region = string.sub(string.match(data, "\"currentTerritory\":\"%a+\""), 21, -2)
|
||||
if region then
|
||||
status = 2
|
||||
if FS.isfile(string.format("/tmp/openclash_%s_region", type)) then
|
||||
old_region = FS.readfile(string.format("/tmp/openclash_%s_region", type))
|
||||
end
|
||||
if not datamatch(region, regex) then
|
||||
status = 3
|
||||
elseif old_regex ~= regex and not all_test then
|
||||
status = 2
|
||||
elseif old_region ~= "" and region ~= old_region and not all_test then
|
||||
status = 4
|
||||
end
|
||||
if status == 2 and not all_test and ((old_region ~= "" and region ~= old_region) or (old_region == "")) then
|
||||
FS.writefile(string.format("/tmp/openclash_%s_region", type), region)
|
||||
if status == 2 and not all_test and region ~= "" and region ~= old_region then
|
||||
write_cache(type, "old_region", region)
|
||||
end
|
||||
if status == 2 and not all_test and regex ~= old_regex then
|
||||
write_cache(type, "old_regex", regex)
|
||||
end
|
||||
return region, old_region
|
||||
end
|
||||
@ -1343,7 +1491,8 @@ function dazn_unlock_test()
|
||||
local url2 = "https://startup.core.indazn.com/misl/v5/Startup"
|
||||
local httpcode = SYS.exec(string.format("curl -sL --connect-timeout 5 -m 5 --speed-time 5 --speed-limit 1 --retry 2 -o /dev/null -w %%{http_code} -H 'Accept-Language: en' -H 'Content-Type: application/json' -H 'User-Agent: %s' %s", UA, url))
|
||||
local region
|
||||
local old_region = ""
|
||||
local old_region = get_old_region()
|
||||
local old_regex = get_old_regex()
|
||||
local regex = UCI:get("openclash", "config", "stream_auto_select_region_key_dazn") or ""
|
||||
if tonumber(httpcode) == 200 then
|
||||
status = 1
|
||||
@ -1357,16 +1506,18 @@ function dazn_unlock_test()
|
||||
region = string.upper(data.Region.GeolocatedCountry)
|
||||
end
|
||||
if region then
|
||||
if FS.isfile(string.format("/tmp/openclash_%s_region", type)) then
|
||||
old_region = FS.readfile(string.format("/tmp/openclash_%s_region", type))
|
||||
end
|
||||
if not datamatch(region, regex) then
|
||||
status = 3
|
||||
elseif old_regex ~= regex and not all_test then
|
||||
status = 2
|
||||
elseif old_region ~= "" and region ~= old_region and not all_test then
|
||||
status = 4
|
||||
end
|
||||
if status == 2 and not all_test and ((old_region ~= "" and region ~= old_region) or (old_region == "")) then
|
||||
FS.writefile(string.format("/tmp/openclash_%s_region", type), region)
|
||||
if status == 2 and not all_test and region ~= "" and region ~= old_region then
|
||||
write_cache(type, "old_region", region)
|
||||
end
|
||||
if status == 2 and not all_test and regex ~= old_regex then
|
||||
write_cache(type, "old_regex", regex)
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -1378,7 +1529,8 @@ function paramount_plus_unlock_test()
|
||||
status = 0
|
||||
local url = "https://www.paramountplus.com/"
|
||||
local region
|
||||
local old_region = ""
|
||||
local old_region = get_old_region()
|
||||
local old_regex = get_old_regex()
|
||||
local regex = UCI:get("openclash", "config", "stream_auto_select_region_key_paramount_plus") or ""
|
||||
local data = SYS.exec(string.format("curl -sL --connect-timeout 5 -m 5 --speed-time 5 --speed-limit 1 --retry 2 -o /dev/null -w %%{json} -H 'Accept-Language: en' -H 'Content-Type: application/json' -H 'User-Agent: %s' %s", UA, url))
|
||||
data = JSON.parse(data)
|
||||
@ -1389,16 +1541,18 @@ function paramount_plus_unlock_test()
|
||||
data = SYS.exec(string.format("curl -sL --connect-timeout 5 -m 5 --speed-time 5 --speed-limit 1 --retry 2 -H 'Accept-Language: en' -H 'Content-Type: application/json' -H 'User-Agent: %s' %s", UA, url))
|
||||
region = string.upper(string.sub(string.match(data, "\"siteEdition\":\"%a+|%a+\""), 19, -2)) or string.upper(string.sub(string.match(data, "property: '%a+'"), 12, -2))
|
||||
if region then
|
||||
if FS.isfile(string.format("/tmp/openclash_%s_region", type)) then
|
||||
old_region = FS.readfile(string.format("/tmp/openclash_%s_region", type))
|
||||
end
|
||||
if not datamatch(region, regex) then
|
||||
status = 3
|
||||
elseif old_regex ~= regex and not all_test then
|
||||
status = 2
|
||||
elseif old_region ~= "" and region ~= old_region and not all_test then
|
||||
status = 4
|
||||
end
|
||||
if status == 2 and not all_test and ((old_region ~= "" and region ~= old_region) or (old_region == "")) then
|
||||
FS.writefile(string.format("/tmp/openclash_%s_region", type), region)
|
||||
if status == 2 and not all_test and region ~= "" and region ~= old_region then
|
||||
write_cache(type, "old_region", region)
|
||||
end
|
||||
if status == 2 and not all_test and regex ~= old_regex then
|
||||
write_cache(type, "old_regex", regex)
|
||||
end
|
||||
return region, old_region
|
||||
end
|
||||
@ -1411,7 +1565,8 @@ function discovery_plus_unlock_test()
|
||||
local url = "https://us1-prod-direct.discoveryplus.com/token?deviceId=d1a4a5d25212400d1e6985984604d740&realm=go&shortlived=true"
|
||||
local url1 = "https://us1-prod-direct.discoveryplus.com/users/me"
|
||||
local region
|
||||
local old_region = ""
|
||||
local old_region = get_old_region()
|
||||
local old_regex = get_old_regex()
|
||||
local regex = UCI:get("openclash", "config", "stream_auto_select_region_key_discovery_plus") or ""
|
||||
local token = SYS.exec(string.format("curl -sL --connect-timeout 5 -m 5 --speed-time 5 --speed-limit 1 --retry 2 -H 'Accept-Language: en' -H 'Content-Type: application/json' -H 'User-Agent: %s' '%s'", UA, url))
|
||||
if token and JSON.parse(token) and JSON.parse(token).data and JSON.parse(token).data.attributes then
|
||||
@ -1423,16 +1578,18 @@ function discovery_plus_unlock_test()
|
||||
region = string.upper(JSON.parse(data).data.attributes.currentLocationTerritory) or string.upper(JSON.parse(data).data.attributes.currentLocationSovereignTerritory)
|
||||
if region then
|
||||
status = 2
|
||||
if FS.isfile(string.format("/tmp/openclash_%s_region", type)) then
|
||||
old_region = FS.readfile(string.format("/tmp/openclash_%s_region", type))
|
||||
end
|
||||
if not datamatch(region, regex) then
|
||||
status = 3
|
||||
elseif old_regex ~= regex and not all_test then
|
||||
status = 2
|
||||
elseif old_region ~= "" and region ~= old_region and not all_test then
|
||||
status = 4
|
||||
end
|
||||
if status == 2 and not all_test and ((old_region ~= "" and region ~= old_region) or (old_region == "")) then
|
||||
FS.writefile(string.format("/tmp/openclash_%s_region", type), region)
|
||||
if status == 2 and not all_test and region ~= "" and region ~= old_region then
|
||||
write_cache(type, "old_region", region)
|
||||
end
|
||||
if status == 2 and not all_test and regex ~= old_regex then
|
||||
write_cache(type, "old_regex", regex)
|
||||
end
|
||||
return region, old_region
|
||||
end
|
||||
@ -1445,7 +1602,7 @@ function bilibili_unlock_test()
|
||||
local randsession = SYS.exec("cat /dev/urandom | head -n 32 | md5sum | head -c 32")
|
||||
local region, httpcode, data, url
|
||||
local regex = UCI:get("openclash", "config", "stream_auto_select_region_key_bilibili") or ""
|
||||
local old_region = ""
|
||||
local old_region = get_old_region()
|
||||
if regex == "HK/MO/TW" then
|
||||
url = string.format("https://api.bilibili.com/pgc/player/web/playurl?avid=18281381&cid=29892777&qn=0&type=&otype=json&ep_id=183799&fourk=1&fnver=0&fnval=16&session=%s&module=bangumi", randsession)
|
||||
region = "HK/MO/TW"
|
||||
@ -1465,14 +1622,14 @@ function bilibili_unlock_test()
|
||||
if data.code then
|
||||
if data.code == 0 then
|
||||
status = 2
|
||||
if FS.isfile(string.format("/tmp/openclash_%s_region", type)) then
|
||||
old_region = FS.readfile(string.format("/tmp/openclash_%s_region", type))
|
||||
end
|
||||
if old_region ~= "" and region ~= old_region and not all_test then
|
||||
status = 4
|
||||
end
|
||||
if status == 2 and not all_test and ((old_region ~= "" and region ~= old_region) or (old_region == "")) then
|
||||
FS.writefile(string.format("/tmp/openclash_%s_region", type), region)
|
||||
if status == 2 and not all_test and region ~= "" and region ~= old_region then
|
||||
write_cache(type, "old_region", region)
|
||||
end
|
||||
if status == 2 and not all_test and regex ~= old_regex then
|
||||
write_cache(type, "old_regex", regex)
|
||||
end
|
||||
return region, old_region
|
||||
end
|
||||
@ -1491,7 +1648,7 @@ function google_not_cn_test()
|
||||
status = 2
|
||||
region = "NOT CN"
|
||||
if not all_test then
|
||||
FS.writefile(string.format("/tmp/openclash_%s_region", type), tested_proxy[-1])
|
||||
write_cache(type, "old_region", tested_proxy[-1])
|
||||
end
|
||||
else
|
||||
region = "CN"
|
||||
@ -1507,7 +1664,8 @@ function openai_unlock_test()
|
||||
local region_url = "https://chat.openai.com/cdn-cgi/trace"
|
||||
local regex = UCI:get("openclash", "config", "stream_auto_select_region_key_openai") or ""
|
||||
local region = ""
|
||||
local old_region = ""
|
||||
local old_region = get_old_region()
|
||||
local old_regex = get_old_regex()
|
||||
local data = SYS.exec(string.format("curl -sIL --connect-timeout 5 -m 5 --speed-time 5 --speed-limit 1 --retry 2 -H 'Accept-Language: en' -H 'Content-Type: application/json' -H 'User-Agent: %s' '%s'", UA, url))
|
||||
if data then
|
||||
if string.find(data, "text/html") then
|
||||
@ -1517,16 +1675,18 @@ function openai_unlock_test()
|
||||
region = string.upper(string.sub(string.match(region_data, "loc=%a+"), 5, -1))
|
||||
end
|
||||
if region then
|
||||
if FS.isfile(string.format("/tmp/openclash_%s_region", type)) then
|
||||
old_region = FS.readfile(string.format("/tmp/openclash_%s_region", type))
|
||||
end
|
||||
if not datamatch(region, regex) then
|
||||
status = 3
|
||||
elseif old_regex ~= regex and not all_test then
|
||||
status = 2
|
||||
elseif old_region ~= "" and region ~= old_region and not all_test then
|
||||
status = 4
|
||||
end
|
||||
if status == 2 and not all_test and ((old_region ~= "" and region ~= old_region) or (old_region == "")) then
|
||||
FS.writefile(string.format("/tmp/openclash_%s_region", type), region)
|
||||
if status == 2 and not all_test and region ~= "" and region ~= old_region then
|
||||
write_cache(type, "old_region", region)
|
||||
end
|
||||
if status == 2 and not all_test and regex ~= old_regex then
|
||||
write_cache(type, "old_regex", regex)
|
||||
end
|
||||
end
|
||||
else
|
||||
|
@ -41,13 +41,9 @@ if [ "$1" = "one_key_update" ]; then
|
||||
LOG_OUT "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 "Dev" "$1" "$2" >/dev/null 2>&1 &
|
||||
/usr/share/openclash/openclash_core.sh "TUN" "$1" "$2" >/dev/null 2>&1 &
|
||||
/usr/share/openclash/openclash_core.sh "Meta" "$1" "$2" >/dev/null 2>&1 &
|
||||
github_address_mod="$2"
|
||||
else
|
||||
/usr/share/openclash/openclash_core.sh "Dev" "$1" >/dev/null 2>&1 &
|
||||
/usr/share/openclash/openclash_core.sh "TUN" "$1" >/dev/null 2>&1 &
|
||||
/usr/share/openclash/openclash_core.sh "Meta" "$1" >/dev/null 2>&1 &
|
||||
fi
|
||||
|
||||
@ -79,8 +75,8 @@ if [ -n "$OP_CV" ] && [ -n "$OP_LV" ] && [ "$(expr "$OP_LV" \> "$OP_CV")" -eq 1
|
||||
|
||||
if [ -z "$(opkg install /tmp/openclash.ipk --noaction 2>/dev/null |grep 'Upgrading luci-app-openclash on root' 2>/dev/null)" ]; then
|
||||
LOG_OUT "【OpenClash - v$LAST_VER】Pre Update Test Failed, The File is Saved in /tmp/openclash.ipk, Please Try to Update Manually!"
|
||||
if [ "$(uci -q get openclash.config.config_reload)" -eq 0 ]; then
|
||||
/etc/init.d/openclash restart >/dev/null 2>&1 &
|
||||
if [ "$(uci -q get openclash.config.config_reload)" -eq 1 ]; then
|
||||
/etc/init.d/openclash restart >/dev/null 2>&1 &
|
||||
else
|
||||
SLOG_CLEAN
|
||||
fi
|
||||
@ -134,8 +130,8 @@ EOF
|
||||
else
|
||||
LOG_OUT "【OpenClash - v$LAST_VER】Download Failed, Please Check The Network or Try Again Later!"
|
||||
rm -rf /tmp/openclash.ipk >/dev/null 2>&1
|
||||
if [ "$(uci -q get openclash.config.config_reload)" -eq 0 ]; then
|
||||
/etc/init.d/openclash restart >/dev/null 2>&1 &
|
||||
if [ "$(uci -q get openclash.config.config_reload)" -eq 1 ]; then
|
||||
/etc/init.d/openclash restart >/dev/null 2>&1 &
|
||||
else
|
||||
SLOG_CLEAN
|
||||
fi
|
||||
@ -146,7 +142,7 @@ else
|
||||
else
|
||||
LOG_OUT "OpenClash Has not Been Updated, Stop Continuing!"
|
||||
fi
|
||||
if [ "$(uci -q get openclash.config.config_reload)" -eq 0 ]; then
|
||||
if [ "$(uci -q get openclash.config.config_reload)" -eq 1 ]; then
|
||||
/etc/init.d/openclash restart >/dev/null 2>&1 &
|
||||
else
|
||||
SLOG_CLEAN
|
||||
|
@ -16,122 +16,16 @@ cfg_update_interval=$(uci -q get openclash.config.config_update_interval || echo
|
||||
log_size=$(uci -q get openclash.config.log_size || echo 1024)
|
||||
core_type=$(uci -q get openclash.config.core_type)
|
||||
router_self_proxy=$(uci -q get openclash.config.router_self_proxy || echo 1)
|
||||
stream_domains_prefetch_interval=$(uci -q get openclash.config.stream_domains_prefetch_interval || echo 1440)
|
||||
stream_auto_select_interval=$(uci -q get openclash.config.stream_auto_select_interval || echo 30)
|
||||
NETFLIX_DOMAINS_LIST="/usr/share/openclash/res/Netflix_Domains.list"
|
||||
NETFLIX_DOMAINS_CUSTOM_LIST="/etc/openclash/custom/openclash_custom_netflix_domains.list"
|
||||
DISNEY_DOMAINS_LIST="/usr/share/openclash/res/Disney_Plus_Domains.list"
|
||||
china_ip_route=$(uci -q get openclash.config.china_ip_route)
|
||||
en_mode=$(uci -q get openclash.config.en_mode)
|
||||
fakeip_range=$(uci -q get openclash.config.fakeip_range || echo "198.18.0.1/16")
|
||||
ipv6_mode=$(uci -q get openclash.config.ipv6_mode || echo 0)
|
||||
skip_proxy_address=$(uci -q get openclash.config.skip_proxy_address || echo 0)
|
||||
CRASH_NUM=0
|
||||
CFG_UPDATE_INT=1
|
||||
SKIP_PROXY_ADDRESS=1
|
||||
SKIP_PROXY_ADDRESS_INTERVAL=30
|
||||
STREAM_DOMAINS_PREFETCH=1
|
||||
STREAM_AUTO_SELECT=1
|
||||
FW4=$(command -v fw4)
|
||||
|
||||
|
||||
check_dnsmasq() {
|
||||
if [ -z "$(echo "$en_mode" |grep "redir-host")" ] && [ "$china_ip_route" -eq 1 ] && [ "$enable_redirect_dns" != "2" ]; then
|
||||
DNSPORT=$(uci -q get dhcp.@dnsmasq[0].port)
|
||||
if [ -z "$DNSPORT" ]; then
|
||||
DNSPORT=$(netstat -nlp |grep -E '127.0.0.1:.*dnsmasq' |awk -F '127.0.0.1:' '{print $2}' |awk '{print $1}' |head -1 || echo 53)
|
||||
fi
|
||||
if [ "$(nslookup www.baidu.com >/dev/null 2>&1 || echo $?)" = "1" ]; then
|
||||
if [ -n "$FW4" ]; then
|
||||
if [ -z "$(nft list chain inet fw4 nat_output |grep '12353')" ]; then
|
||||
LOG_OUT "Warning: Dnsmasq Work is Unnormal, Setting The Firewall DNS Hijacking Rules..."
|
||||
nft insert rule inet fw4 dstnat position 0 tcp dport 53 counter redirect to "$dns_port" comment \"OpenClash DNS Hijack\" 2>/dev/null
|
||||
nft insert rule inet fw4 dstnat position 0 udp dport 53 counter redirect to "$dns_port" comment \"OpenClash DNS Hijack\" 2>/dev/null
|
||||
nft 'add chain inet fw4 nat_output { type nat hook output priority -1; }' 2>/dev/null
|
||||
nft insert rule inet fw4 nat_output position 0 tcp dport 53 meta skuid != 65534 counter redirect to "$dns_port" comment \"OpenClash DNS Hijack\" 2>/dev/null
|
||||
nft insert rule inet fw4 nat_output position 0 udp dport 53 meta skuid != 65534 counter redirect to "$dns_port" comment \"OpenClash DNS Hijack\" 2>/dev/null
|
||||
nft insert rule inet fw4 nat_output position 0 tcp dport 12353 meta skuid != 65534 counter redirect to "$DNSPORT" comment \"OpenClash DNS Hijack\" 2>/dev/null
|
||||
nft insert rule inet fw4 nat_output position 0 udp dport 12353 meta skuid != 65534 counter redirect to "$DNSPORT" comment \"OpenClash DNS Hijack\" 2>/dev/null
|
||||
if [ "$ipv6_enable" -eq 1 ]; then
|
||||
nft insert rule inet fw4 dstnat position 0 meta nfproto {ipv6} tcp dport 53 counter redirect to "$dns_port" comment \"OpenClash DNS Hijack\" 2>/dev/null
|
||||
nft insert rule inet fw4 dstnat position 0 meta nfproto {ipv6} udp dport 53 counter redirect to "$dns_port" comment \"OpenClash DNS Hijack\" 2>/dev/null
|
||||
nft 'add chain inet fw4 nat_output { type nat hook output priority -1; }' 2>/dev/null
|
||||
nft add rule inet fw4 nat_output position 0 meta nfproto {ipv6} tcp dport 53 meta skuid != 65534 counter redirect to "$dns_port" comment \"OpenClash DNS Hijack\" 2>/dev/null
|
||||
nft add rule inet fw4 nat_output position 0 meta nfproto {ipv6} udp dport 53 meta skuid != 65534 counter redirect to "$dns_port" comment \"OpenClash DNS Hijack\" 2>/dev/null
|
||||
nft add rule inet fw4 nat_output position 0 meta nfproto {ipv6} tcp dport 12353 meta skuid != 65534 counter redirect to "$DNSPORT" comment \"OpenClash DNS Hijack\" 2>/dev/null
|
||||
nft add rule inet fw4 nat_output position 0 meta nfproto {ipv6} udp dport 12353 meta skuid != 65534 counter redirect to "$DNSPORT" comment \"OpenClash DNS Hijack\" 2>/dev/null
|
||||
fi
|
||||
fi
|
||||
else
|
||||
if [ -z "$(iptables -t nat -nL OUTPUT --line-number |grep '12353')" ]; then
|
||||
LOG_OUT "Warning: Dnsmasq Work is Unnormal, Setting The Firewall DNS Hijacking Rules..."
|
||||
iptables -t nat -I PREROUTING -p udp --dport 53 -j REDIRECT --to-ports "$dns_port" -m comment --comment "OpenClash DNS Hijack" 2>/dev/null
|
||||
iptables -t nat -I PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports "$dns_port" -m comment --comment "OpenClash DNS Hijack" 2>/dev/null
|
||||
iptables -t nat -I OUTPUT -p udp --dport 53 -m owner ! --uid-owner 65534 -j REDIRECT --to-ports "$dns_port" -m comment --comment "OpenClash DNS Hijack" 2>/dev/null
|
||||
iptables -t nat -I OUTPUT -p tcp --dport 53 -m owner ! --uid-owner 65534 -j REDIRECT --to-ports "$dns_port" -m comment --comment "OpenClash DNS Hijack" 2>/dev/null
|
||||
iptables -t nat -I OUTPUT -p udp --dport 12353 -m owner ! --uid-owner 65534 -j REDIRECT --to-ports "$DNSPORT" -m comment --comment "OpenClash DNS Hijack" 2>/dev/null
|
||||
iptables -t nat -I OUTPUT -p tcp --dport 12353 -m owner ! --uid-owner 65534 -j REDIRECT --to-ports "$DNSPORT" -m comment --comment "OpenClash DNS Hijack" 2>/dev/null
|
||||
if [ "$ipv6_enable" -eq 1 ]; then
|
||||
ip6tables -t nat -I PREROUTING -p udp --dport 53 -j REDIRECT --to-ports "$dns_port" -m comment --comment "OpenClash DNS Hijack" 2>/dev/null
|
||||
ip6tables -t nat -I PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports "$dns_port" -m comment --comment "OpenClash DNS Hijack" 2>/dev/null
|
||||
ip6tables -t nat -I OUTPUT -p udp --dport 53 -m owner ! --uid-owner 65534 -j REDIRECT --to-ports "$dns_port" -m comment --comment "OpenClash DNS Hijack" 2>/dev/null
|
||||
ip6tables -t nat -I OUTPUT -p tcp --dport 53 -m owner ! --uid-owner 65534 -j REDIRECT --to-ports "$dns_port" -m comment --comment "OpenClash DNS Hijack" 2>/dev/null
|
||||
ip6tables -t nat -I OUTPUT -p udp --dport 12353 -m owner ! --uid-owner 65534 -j REDIRECT --to-ports "$DNSPORT" -m comment --comment "OpenClash DNS Hijack" 2>/dev/null
|
||||
ip6tables -t nat -I OUTPUT -p tcp --dport 12353 -m owner ! --uid-owner 65534 -j REDIRECT --to-ports "$DNSPORT" -m comment --comment "OpenClash DNS Hijack" 2>/dev/null
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if [ "$(nslookup www.baidu.com 127.0.0.1:12353 >/dev/null 2>&1 || echo $?)" != "1" ]; then
|
||||
if [ -n "$FW4" ]; then
|
||||
if [ -n "$(nft list chain inet fw4 nat_output |grep 'OpenClash DNS Hijack')" ]; then
|
||||
LOG_OUT "Tip: Dnsmasq Work is Normal, Restore The Firewall DNS Hijacking Rules..."
|
||||
for nft in "nat_output" "dstnat"; do
|
||||
handles=$(nft -a list chain inet fw4 ${nft} |grep "OpenClash DNS Hijack" |awk -F '# handle ' '{print$2}')
|
||||
for handle in $handles; do
|
||||
nft delete rule inet fw4 ${nft} handle ${handle}
|
||||
done
|
||||
done >/dev/null 2>&1
|
||||
local position=$(nft -a list chain inet fw4 dstnat |grep "OpenClash" |grep "DNS" |awk -F '# handle ' '{print$2}' |sort -rn |head -1)
|
||||
[ -z "$position" ] && position=0
|
||||
nft add rule inet fw4 dstnat position "$position" tcp dport 53 redirect to "$DNSPORT" comment \"OpenClash DNS Hijack\" 2>/dev/null
|
||||
nft add rule inet fw4 dstnat position "$position" udp dport 53 redirect to "$DNSPORT" comment \"OpenClash DNS Hijack\" 2>/dev/null
|
||||
if [ "$ipv6_enable" -eq 1 ]; then
|
||||
nft add rule inet fw4 dstnat position "$position" meta nfproto {ipv6} tcp dport 53 counter redirect to "$DNSPORT" comment \"OpenClash DNS Hijack\" 2>/dev/null
|
||||
nft add rule inet fw4 dstnat position "$position" meta nfproto {ipv6} udp dport 53 counter redirect to "$DNSPORT" comment \"OpenClash DNS Hijack\" 2>/dev/null
|
||||
fi
|
||||
fi
|
||||
else
|
||||
if [ -n "$(iptables -t nat -nL OUTPUT --line-number |grep 'OpenClash DNS Hijack')" ]; then
|
||||
LOG_OUT "Tip: Dnsmasq Work is Normal, Restore The Firewall DNS Hijacking Rules..."
|
||||
for ipt in "iptables -nvL OUTPUT -t nat" "iptables -nvL PREROUTING -t nat" "ip6tables -nvL PREROUTING -t nat" "ip6tables -nvL OUTPUT -t nat"; do
|
||||
lines=$($ipt |sed 1,2d |sed -n "/OpenClash DNS Hijack/=" 2>/dev/null |sort -rn)
|
||||
if [ -n "$lines" ]; then
|
||||
for line in $lines; do
|
||||
$(echo "$ipt" |awk -v OFS=" " '{print $1,$4,$5}' |sed 's/[ ]*$//g') -D $(echo "$ipt" |awk '{print $3}') $line
|
||||
done
|
||||
fi
|
||||
done >/dev/null 2>&1
|
||||
local position=$(iptables -nvL PREROUTING -t nat |sed 1,2d |grep "OpenClash" |sed -n "/DNS/=" 2>/dev/null |sort -rn |head -1)
|
||||
[ -z "$position" ] && position=0
|
||||
[ "$position" -ne 0 ] && let position++
|
||||
iptables -t nat -I PREROUTING "$position" -p udp --dport 53 -j REDIRECT --to-ports "$DNSPORT" -m comment --comment "OpenClash DNS Hijack" 2>/dev/null
|
||||
iptables -t nat -I PREROUTING "$position" -p tcp --dport 53 -j REDIRECT --to-ports "$DNSPORT" -m comment --comment "OpenClash DNS Hijack" 2>/dev/null
|
||||
if [ "$ipv6_enable" -eq 1 ]; then
|
||||
position=$(ip6tables -nvL PREROUTING -t nat |sed 1,2d |grep "OpenClash" |sed -n "/DNS/=" 2>/dev/null |sort -rn |head -1)
|
||||
[ -z "$position" ] && position=0
|
||||
[ "$position" -ne 0 ] && let position++
|
||||
ip6tables -t nat -I PREROUTING "$position" -p udp --dport 53 -j REDIRECT --to-ports "$DNSPORT" -m comment --comment "OpenClash DNS Hijack" 2>/dev/null
|
||||
ip6tables -t nat -I PREROUTING "$position" -p tcp --dport 53 -j REDIRECT --to-ports "$DNSPORT" -m comment --comment "OpenClash DNS Hijack" 2>/dev/null
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
check_dnsmasq
|
||||
SLOG_CLEAN
|
||||
sleep 60
|
||||
|
||||
while :;
|
||||
@ -139,8 +33,6 @@ do
|
||||
cfg_update=$(uci -q get openclash.config.auto_update)
|
||||
cfg_update_mode=$(uci -q get openclash.config.config_auto_update_mode)
|
||||
cfg_update_interval_now=$(uci -q get openclash.config.config_update_interval || echo 60)
|
||||
stream_domains_prefetch=$(uci -q get openclash.config.stream_domains_prefetch || echo 0)
|
||||
stream_domains_prefetch_interval_now=$(uci -q get openclash.config.stream_domains_prefetch_interval || echo 1440)
|
||||
stream_auto_select=$(uci -q get openclash.config.stream_auto_select || echo 0)
|
||||
stream_auto_select_interval_now=$(uci -q get openclash.config.stream_auto_select_interval || echo 30)
|
||||
stream_auto_select_netflix=$(uci -q get openclash.config.stream_auto_select_netflix || echo 0)
|
||||
@ -181,7 +73,7 @@ if [ "$enable" -eq 1 ]; then
|
||||
chmod o+w /tmp/openclash.log 2>/dev/null
|
||||
chmod o+w /etc/openclash/cache.db 2>/dev/null
|
||||
chown nobody:nogroup /etc/openclash/core/* 2>/dev/null
|
||||
capabilties="cap_sys_resource,cap_dac_override,cap_net_raw,cap_net_bind_service,cap_net_admin,cap_sys_ptrace"
|
||||
capabilties="cap_sys_resource,cap_dac_override,cap_net_raw,cap_net_bind_service,cap_net_admin,cap_sys_ptrace,cap_sys_admin"
|
||||
capsh --caps="${capabilties}+eip" -- -c "capsh --user=nobody --addamb='${capabilties}' -- -c 'nohup $CLASH -d $CLASH_CONFIG -f \"$CONFIG_FILE\" >> $LOG_FILE 2>&1 &'" >> $LOG_FILE 2>&1
|
||||
sleep 3
|
||||
if [ "$core_type" == "TUN" ] || [ "$core_type" == "Meta" ]; then
|
||||
@ -190,6 +82,9 @@ if [ "$enable" -eq 1 ]; then
|
||||
if [ "$ipv6_mode" -eq 2 ] && [ "$ipv6_enable" -eq 1 ] && [ "$core_type" == "Meta" ]; then
|
||||
ip -6 rule del oif utun table 2022 >/dev/null 2>&1
|
||||
ip -6 route del default dev utun table 2022 >/dev/null 2>&1
|
||||
ip -6 addr add fdfe:dcba:9876::1/126 dev utun >/dev/null 2>&1
|
||||
ip -6 route add fdfe:dcba:9876::/126 dev utun proto kernel metric 256 pref medium >/dev/null 2>&1
|
||||
ip -6 route add fe80::/64 dev utun proto kernel metric 256 pref medium >/dev/null 2>&1
|
||||
ip -6 route replace default dev utun table "$PROXY_ROUTE_TABLE" >/dev/null 2>&1
|
||||
ip -6 rule add fwmark "$PROXY_FWMARK" table "$PROXY_ROUTE_TABLE" >/dev/null 2>&1
|
||||
fi
|
||||
@ -228,9 +123,6 @@ fi
|
||||
LOG_OUT "Watchdog: Setting Firewall For Enabling Redirect..."
|
||||
fi
|
||||
|
||||
## 防止 DNSMASQ 加载配置时间过长导致 DNS 无法解析
|
||||
check_dnsmasq
|
||||
|
||||
## Localnetwork 刷新
|
||||
wan_ip4s=$(/usr/share/openclash/openclash_get_network.lua "wanip" 2>/dev/null)
|
||||
wan_ip6s=$(ifconfig | grep 'inet6 addr' | awk '{print $3}' 2>/dev/null)
|
||||
@ -517,35 +409,7 @@ fi
|
||||
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..."
|
||||
fi
|
||||
|
||||
##STREAM_DNS_PREFETCH
|
||||
if [ "$stream_domains_prefetch" -eq 1 ] && [ "$router_self_proxy" -eq 1 ]; then
|
||||
[ "$stream_domains_prefetch_interval" -ne "$stream_domains_prefetch_interval_now" ] && STREAM_DOMAINS_PREFETCH=1 && stream_domains_prefetch_interval="$stream_domains_prefetch_interval_now"
|
||||
if [ "$STREAM_DOMAINS_PREFETCH" -ne 0 ]; then
|
||||
if [ "$(expr "$STREAM_DOMAINS_PREFETCH" % "$stream_domains_prefetch_interval_now")" -eq 0 ] || [ "$STREAM_DOMAINS_PREFETCH" -eq 1 ]; then
|
||||
LOG_OUT "Tip: Start Prefetch Netflix Domains..."
|
||||
cat "$NETFLIX_DOMAINS_LIST" |while read -r line
|
||||
do
|
||||
[ -n "$line" ] && nslookup $line
|
||||
done >/dev/null 2>&1
|
||||
cat "$NETFLIX_DOMAINS_CUSTOM_LIST" |while read -r line
|
||||
do
|
||||
[ -n "$line" ] && nslookup $line
|
||||
done >/dev/null 2>&1
|
||||
LOG_OUT "Tip: Netflix Domains Prefetch Finished!"
|
||||
LOG_OUT "Tip: Start Prefetch Disney Plus Domains..."
|
||||
cat "$DISNEY_DOMAINS_LIST" |while read -r line
|
||||
do
|
||||
[ -n "$line" ] && nslookup $line
|
||||
done >/dev/null 2>&1
|
||||
LOG_OUT "Tip: Disney Plus Domains Prefetch Finished!"
|
||||
fi
|
||||
fi
|
||||
STREAM_DOMAINS_PREFETCH=$(expr "$STREAM_DOMAINS_PREFETCH" + 1)
|
||||
elif [ "$router_self_proxy" != "1" ] && [ "$stream_domains_prefetch" -eq 1 ]; then
|
||||
LOG_OUT "Error: Streaming DNS Prefetch Could not Work Because of Router-Self Proxy Disabled, Exiting..."
|
||||
fi
|
||||
|
||||
|
||||
SLOG_CLEAN
|
||||
sleep 60
|
||||
done 2>/dev/null
|
||||
|
@ -1,47 +0,0 @@
|
||||
rule-providers:
|
||||
Unbreak:
|
||||
type: http
|
||||
behavior: classical
|
||||
path: "./RuleSet/Unbreak.yaml"
|
||||
url: https://raw.githubusercontent.com/DivineEngine/Profiles/master/Clash/RuleSet/Unbreak.yaml
|
||||
interval: 86400
|
||||
Streaming:
|
||||
type: http
|
||||
behavior: classical
|
||||
path: "./RuleSet/StreamingMedia/Streaming.yaml"
|
||||
url: https://raw.githubusercontent.com/DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Streaming.yaml
|
||||
interval: 86400
|
||||
StreamingSE:
|
||||
type: http
|
||||
behavior: classical
|
||||
path: "./RuleSet/StreamingMedia/StreamingSE.yaml"
|
||||
url: https://raw.githubusercontent.com/DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/StreamingSE.yaml
|
||||
interval: 86400
|
||||
Global:
|
||||
type: http
|
||||
behavior: classical
|
||||
path: "./RuleSet/Global.yaml"
|
||||
url: https://raw.githubusercontent.com/DivineEngine/Profiles/master/Clash/RuleSet/Global.yaml
|
||||
interval: 86400
|
||||
China:
|
||||
type: http
|
||||
behavior: classical
|
||||
path: "./RuleSet/China.yaml"
|
||||
url: https://raw.githubusercontent.com/DivineEngine/Profiles/master/Clash/RuleSet/China.yaml
|
||||
interval: 86400
|
||||
rules:
|
||||
- RULE-SET,Unbreak,DIRECT
|
||||
- RULE-SET,Streaming,Streaming
|
||||
- RULE-SET,StreamingSE,StreamingSE
|
||||
- RULE-SET,Global,PROXY
|
||||
- RULE-SET,China,DIRECT
|
||||
- IP-CIDR,192.168.0.0/16,DIRECT
|
||||
- IP-CIDR,10.0.0.0/8,DIRECT
|
||||
- IP-CIDR,172.16.0.0/12,DIRECT
|
||||
- IP-CIDR,127.0.0.0/8,DIRECT
|
||||
- IP-CIDR,100.64.0.0/10,DIRECT
|
||||
- IP-CIDR,224.0.0.0/4,DIRECT
|
||||
- IP-CIDR,fe80::/10,DIRECT
|
||||
- IP-CIDR,119.28.28.28/32,DIRECT
|
||||
- IP-CIDR,182.254.116.0/24,DIRECT
|
||||
- MATCH,MATCH
|
@ -1,79 +0,0 @@
|
||||
rules:
|
||||
##source:ConnersHua_return
|
||||
# (Video)
|
||||
# AcFun
|
||||
# USER-AGENT,AcFun*,PROXY
|
||||
- DOMAIN-SUFFIX,acfun.cn,PROXY
|
||||
- DOMAIN-SUFFIX,acfun.com,PROXY
|
||||
- DOMAIN-SUFFIX,aixifan.com,PROXY
|
||||
# > bilibili
|
||||
# USER-AGENT,bili-universal,PROXY
|
||||
# USER-AGENT,Bilibili*,PROXY
|
||||
- DOMAIN-SUFFIX,acgvideo.com,PROXY
|
||||
- DOMAIN-SUFFIX,bilibili.com,PROXY
|
||||
- DOMAIN-SUFFIX,hdslb.com,PROXY
|
||||
# > HunanTV
|
||||
# USER-AGENT,MGTV*,PROXY
|
||||
- DOMAIN-SUFFIX,hitv.com,PROXY
|
||||
- DOMAIN-SUFFIX,hunantv.com,PROXY
|
||||
- DOMAIN-SUFFIX,mgtv.com,PROXY
|
||||
# > Migu
|
||||
# USER-AGENT,MiguVideo*,PROXY
|
||||
# USER-AGENT,%E5%92%AA%E5%92%95%E8%A7%86%E9%A2%91,PROXY
|
||||
- DOMAIN-SUFFIX,cmvideo.cn,PROXY
|
||||
- DOMAIN-SUFFIX,migu.cn,PROXY
|
||||
- DOMAIN-SUFFIX,miguvideo.com,PROXY
|
||||
# > iQiyi
|
||||
# USER-AGENT,iQiYiPhoneVideo,PROXY
|
||||
# USER-AGENT,PPStream,PROXY
|
||||
# USER-AGENT,QIYIVideo,PROXY
|
||||
# USER-AGENT,QYPlayer,PROXY
|
||||
- DOMAIN-SUFFIX,iqiyi.com,PROXY
|
||||
- DOMAIN-SUFFIX,iqiyipic.com,PROXY
|
||||
- DOMAIN-SUFFIX,qy.net,PROXY
|
||||
# > Sohu
|
||||
- DOMAIN-SUFFIX,sohu.com,PROXY
|
||||
- DOMAIN-SUFFIX,sohu.com.cn,PROXY
|
||||
- DOMAIN-SUFFIX,itc.cn,PROXY
|
||||
- DOMAIN-SUFFIX,v-56.com,PROXY
|
||||
# > Tencent
|
||||
# USER-AGENT,live4iphone*,PROXY
|
||||
# USER-AGENT,qqlive4iphone*,PROXY
|
||||
# USER-AGENT,TencentMidasConnect*,PROXY
|
||||
- DOMAIN-SUFFIX,video.qq.com,PROXY
|
||||
# > Youku
|
||||
# USER-AGENT,Youku*,PROXY
|
||||
# USER-AGENT,%E4%BC%98%E9%85%B7*,PROXY
|
||||
- DOMAIN-SUFFIX,soku.com,PROXY
|
||||
- DOMAIN-SUFFIX,youku.com,PROXY
|
||||
- DOMAIN-SUFFIX,ykimg.com,PROXY
|
||||
|
||||
# (Music)
|
||||
# > Alibaba
|
||||
# USER-AGENT,walkman*,PROXY
|
||||
# USER-AGENT,xiami*,PROXY
|
||||
- DOMAIN-SUFFIX,xiami.com,PROXY
|
||||
- DOMAIN-SUFFIX,xiami.net,PROXY
|
||||
# > Netease
|
||||
# USER-AGENT,NeteaseMusic*,PROXY
|
||||
# USER-AGENT,%E7%BD%91%E6%98%93%E4%BA%91%E9%9F%B3%E4%B9%90*,PROXY
|
||||
- DOMAIN-SUFFIX,music.126.net,PROXY
|
||||
- DOMAIN-SUFFIX,music.163.com,PROXY
|
||||
# > Tencent
|
||||
# USER-AGENT,MOO%E9%9F%B3%E4%B9%90*,PROXY
|
||||
# USER-AGENT,QQ%E9%9F%B3%E4%B9%90,PROXY
|
||||
- DOMAIN-SUFFIX,qqmusic.qq.com,PROXY
|
||||
- DOMAIN-SUFFIX,y.qq.com,PROXY
|
||||
- DOMAIN,aqqmusic.tc.qq.com,PROXY
|
||||
# Kugou and Kuwo
|
||||
- DOMAIN-SUFFIX,kugou.com,PROXY
|
||||
# USER-AGENT,%E9%85%B7%E6%88%91%E9%9F%B3%E4%B9%90*,PROXY
|
||||
- DOMAIN-SUFFIX,kuwo.cn,PROXY
|
||||
- DOMAIN-SUFFIX,koowo.com,PROXY
|
||||
# > Baidu
|
||||
# USER-AGENT,baiduyinyue,PROXY
|
||||
- DOMAIN-SUFFIX,qianqian.com,PROXY
|
||||
|
||||
- GEOIP,CN,PROXY
|
||||
|
||||
- MATCH,DIRECT
|
@ -1,48 +0,0 @@
|
||||
vod-akc-eu-south-1.media.dssott.com
|
||||
vod-vzc-eu-south-1.media.dssott.com
|
||||
vod-l3c-na-central-1.media.dssott.com
|
||||
vod-akc-na-central-1.media.dssott.com
|
||||
vod-ftc-na-central-1.media.dssott.com
|
||||
vod-vzc-na-central-1.media.dssott.com
|
||||
vod-l3c-na-east-1.media.dssott.com
|
||||
vod-bgc-na-east-1.media.dssott.com
|
||||
vod-akc-na-east-1.media.dssott.com
|
||||
vod-ftc-na-east-1.media.dssott.com
|
||||
vod-vzc-na-east-1.media.dssott.com
|
||||
vod-bgc-oc-east-1.media.dssott.com
|
||||
vod-l3c-na-west-1.media.dssott.com
|
||||
vod-akc-na-west-1.media.dssott.com
|
||||
vod-ftc-na-west-1.media.dssott.com
|
||||
vod-vzc-na-west-1.media.dssott.com
|
||||
vod-l3c-eu-south-2.media.dssott.com
|
||||
vod-ftc-eu-south-2.media.dssott.com
|
||||
vod-l3c-na-east-2.media.dssott.com
|
||||
vod-akc-na-east-2.media.dssott.com
|
||||
vod-ftc-na-east-2.media.dssott.com
|
||||
vod-vzc-na-east-2.media.dssott.com
|
||||
vod-l3c-oc-east-2.media.dssott.com
|
||||
vod-akc-oc-east-2.media.dssott.com
|
||||
vod-ftc-oc-east-2.media.dssott.com
|
||||
vod-vzc-oc-east-2.media.dssott.com
|
||||
vod-l3c-na-west-2.media.dssott.com
|
||||
vod-akc-na-west-2.media.dssott.com
|
||||
vod-llc-na-west-2.media.dssott.com
|
||||
vod-cmc-na-west-2.media.dssott.com
|
||||
vod-ftc-na-west-2.media.dssott.com
|
||||
vod-vzc-na-west-2.media.dssott.com
|
||||
cdn.registerdisney.go.com
|
||||
qa.cdn.registerdisney.go.com
|
||||
stg.cdn.registerdisney.go.com
|
||||
val.cdn.registerdisney.go.com
|
||||
prod-ripcut-delivery.disney-plus.net
|
||||
appconfigs.disney-plus.net
|
||||
prod-static.disney-plus.net
|
||||
global.edge.bamgrid.com
|
||||
bam-sdk-configs.bamgrid.com
|
||||
playback-certs.bamgrid.com
|
||||
search-api-disney.bamgrid.com
|
||||
content.global.edge.bamgrid.com
|
||||
disney.playback.edge.bamgrid.com
|
||||
disney.api.edge.bamgrid.com
|
||||
disney.content.edge.bamgrid.com
|
||||
disney.connections.edge.bamgrid.com
|
@ -1,574 +0,0 @@
|
||||
ipv4-c001-hkg001-hgc-isp.1.oca.nflxvideo.net
|
||||
ipv4-c003-hkg001-hgc-isp.1.oca.nflxvideo.net
|
||||
ipv4-c004-hkg001-hgc-isp.1.oca.nflxvideo.net
|
||||
ipv4-c001-hkg002-hgc-isp.1.oca.nflxvideo.net
|
||||
ipv4-c002-hkg002-hgc-isp.1.oca.nflxvideo.net
|
||||
ipv4-c001-hkg001-cmhk-isp.1.oca.nflxvideo.net
|
||||
ipv4-c002-hkg001-cmhk-isp.1.oca.nflxvideo.net
|
||||
ipv4-c002-hkg001-hkbn-isp.1.oca.nflxvideo.net
|
||||
ipv4-c003-hkg001-hkbn-isp.1.oca.nflxvideo.net
|
||||
ipv4-c004-hkg001-hkbn-isp.1.oca.nflxvideo.net
|
||||
ipv4-c005-hkg001-hkbn-isp.1.oca.nflxvideo.net
|
||||
ipv4-c001-hkg002-hkbn-isp.1.oca.nflxvideo.net
|
||||
ipv4-c002-hkg002-hkbn-isp.1.oca.nflxvideo.net
|
||||
ipv4-c003-hkg002-hkbn-isp.1.oca.nflxvideo.net
|
||||
ipv4-c004-hkg002-hkbn-isp.1.oca.nflxvideo.net
|
||||
ipv4-c001-hkg001-pccw-isp.1.oca.nflxvideo.net
|
||||
ipv4-c003-hkg001-pccw-isp.1.oca.nflxvideo.net
|
||||
ipv4-c004-hkg001-pccw-isp.1.oca.nflxvideo.net
|
||||
ipv4-c002-hkg002-pccw-isp.1.oca.nflxvideo.net
|
||||
ipv4-c003-hkg002-pccw-isp.1.oca.nflxvideo.net
|
||||
ipv4-c004-hkg002-pccw-isp.1.oca.nflxvideo.net
|
||||
ipv4-c005-hkg002-pccw-isp.1.oca.nflxvideo.net
|
||||
ipv4-c001-hkg003-pccw-isp.1.oca.nflxvideo.net
|
||||
ipv4-c002-hkg003-pccw-isp.1.oca.nflxvideo.net
|
||||
ipv4-c003-hkg003-pccw-isp.1.oca.nflxvideo.net
|
||||
ipv4-c004-hkg003-pccw-isp.1.oca.nflxvideo.net
|
||||
ipv4-c010-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c010-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c020-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c020-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c030-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c030-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c040-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c040-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c050-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c060-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c001-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c011-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c011-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c021-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c021-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c031-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c031-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c041-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c041-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c051-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c061-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c002-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c002-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c012-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c022-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c022-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c032-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c032-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c042-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c042-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c052-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c062-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c003-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c003-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c013-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c013-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c023-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c023-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c033-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c033-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c043-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c043-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c053-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c004-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c004-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c014-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c014-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c024-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c024-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c034-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c034-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c044-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c044-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c054-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c005-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c005-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c015-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c015-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c025-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c025-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c035-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c035-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c045-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c055-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c006-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c006-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c016-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c016-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c026-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c026-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c036-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c036-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c046-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c056-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c007-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c007-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c017-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c017-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c027-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c027-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c037-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c037-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c047-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c057-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c008-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c008-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c018-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c018-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c028-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c028-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c038-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c038-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c048-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c058-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c009-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c009-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c019-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c029-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c029-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c039-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c039-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c049-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c059-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c001-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c019-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c001-sin001-starhub-isp.1.oca.nflxvideo.net
|
||||
ipv6-c001-sin001-starhub-isp.1.oca.nflxvideo.net
|
||||
ipv4-c002-sin001-starhub-isp.1.oca.nflxvideo.net
|
||||
ipv6-c002-sin001-starhub-isp.1.oca.nflxvideo.net
|
||||
ipv4-c003-sin001-starhub-isp.1.oca.nflxvideo.net
|
||||
ipv6-c003-sin001-starhub-isp.1.oca.nflxvideo.net
|
||||
ipv4-c004-sin001-starhub-isp.1.oca.nflxvideo.net
|
||||
ipv6-c004-sin001-starhub-isp.1.oca.nflxvideo.net
|
||||
ipv4-c005-sin001-starhub-isp.1.oca.nflxvideo.net
|
||||
ipv6-c005-sin001-starhub-isp.1.oca.nflxvideo.net
|
||||
ipv4-c006-sin001-starhub-isp.1.oca.nflxvideo.net
|
||||
ipv4-c010-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c010-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c020-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c030-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c030-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c040-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c040-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c050-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c060-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c001-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c011-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c011-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c021-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c031-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c031-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c041-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c041-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c051-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c061-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c002-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c002-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c012-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c012-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c032-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c032-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c042-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c042-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c052-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c062-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c003-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c013-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c013-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c033-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c043-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c043-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c053-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c053-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c063-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c004-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c004-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c014-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c014-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c034-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c034-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c044-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c044-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c054-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c005-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c005-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c015-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c015-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c025-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c025-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c035-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c035-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c045-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c045-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c055-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c006-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c016-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c026-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c036-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c036-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c046-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c046-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c056-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c007-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c007-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c017-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c017-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c027-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c027-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c037-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c037-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c047-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c047-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c057-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c008-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c008-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c018-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c028-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c028-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c038-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c038-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c048-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c048-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c058-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c009-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c009-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c019-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c019-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c029-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c039-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c039-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c049-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c049-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c059-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c050-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c029-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c001-xsp001-m1-isp.1.oca.nflxvideo.net
|
||||
ipv4-c002-xsp001-m1-isp.1.oca.nflxvideo.net
|
||||
ipv4-c003-xsp001-m1-isp.1.oca.nflxvideo.net
|
||||
ipv4-c001-xsp002-m1-isp.1.oca.nflxvideo.net
|
||||
ipv4-c002-xsp002-m1-isp.1.oca.nflxvideo.net
|
||||
ipv4-c003-xsp002-m1-isp.1.oca.nflxvideo.net
|
||||
ipv4-c001-xsp002-starhub-isp.1.oca.nflxvideo.net
|
||||
ipv6-c001-xsp002-starhub-isp.1.oca.nflxvideo.net
|
||||
ipv4-c003-xsp002-starhub-isp.1.oca.nflxvideo.net
|
||||
ipv6-c003-xsp002-starhub-isp.1.oca.nflxvideo.net
|
||||
ipv4-c004-xsp002-starhub-isp.1.oca.nflxvideo.net
|
||||
ipv6-c004-xsp002-starhub-isp.1.oca.nflxvideo.net
|
||||
ipv4-c005-xsp002-starhub-isp.1.oca.nflxvideo.net
|
||||
ipv6-c005-xsp002-starhub-isp.1.oca.nflxvideo.net
|
||||
ipv4-c006-xsp002-starhub-isp.1.oca.nflxvideo.net
|
||||
ipv6-c006-xsp002-starhub-isp.1.oca.nflxvideo.net
|
||||
ipv4-c007-xsp002-starhub-isp.1.oca.nflxvideo.net
|
||||
ipv4-c002-xsp003-starhub-isp.1.oca.nflxvideo.net
|
||||
ipv6-c002-xsp003-starhub-isp.1.oca.nflxvideo.net
|
||||
ipv4-c004-xsp003-starhub-isp.1.oca.nflxvideo.net
|
||||
ipv6-c004-xsp003-starhub-isp.1.oca.nflxvideo.net
|
||||
ipv4-c005-xsp003-starhub-isp.1.oca.nflxvideo.net
|
||||
ipv4-c006-xsp003-starhub-isp.1.oca.nflxvideo.net
|
||||
ipv6-c006-xsp003-starhub-isp.1.oca.nflxvideo.net
|
||||
ipv4-c007-xsp003-starhub-isp.1.oca.nflxvideo.net
|
||||
ipv4-c008-xsp003-starhub-isp.1.oca.nflxvideo.net
|
||||
ipv6-c008-xsp003-starhub-isp.1.oca.nflxvideo.net
|
||||
ipv4-c100-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c010-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c110-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c020-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c120-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c030-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c130-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c040-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c140-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c050-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c150-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c060-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c070-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c080-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c090-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c001-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c101-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c011-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c111-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c021-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c121-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c031-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c131-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c041-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c141-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c051-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c061-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c071-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c081-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c091-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c002-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c102-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c012-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c112-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c022-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c122-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c132-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c042-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c062-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c072-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c082-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c092-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c003-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c103-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c013-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c113-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c023-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c123-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c033-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c133-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c043-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c153-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c063-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c073-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c083-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c093-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c004-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c104-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c014-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c114-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c024-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c124-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c034-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c134-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c044-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c154-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c064-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c074-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c084-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c094-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c005-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c105-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c015-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c115-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c025-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c125-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c035-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c135-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c045-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c145-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c065-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c075-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c085-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c095-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c006-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c106-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c016-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c116-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c026-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c126-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c036-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c136-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c046-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c146-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c056-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c156-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c066-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c076-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c086-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c096-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c007-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c107-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c017-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c117-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c027-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c127-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c037-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c137-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c047-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c057-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c067-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c077-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c087-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c097-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c008-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c108-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c018-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c028-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c128-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c038-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c138-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c048-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c148-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c058-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c158-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c068-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c078-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c088-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c098-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c009-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c109-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c019-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c119-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c029-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c129-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c039-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c139-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c049-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c149-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c059-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c069-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c079-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c089-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c099-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c010-fra002-dev-ix.1.oca.nflxvideo.net
|
||||
ipv4-c001-fra002-dev-ix.1.oca.nflxvideo.net
|
||||
ipv4-c011-fra002-dev-ix.1.oca.nflxvideo.net
|
||||
ipv4-c002-fra002-dev-ix.1.oca.nflxvideo.net
|
||||
ipv6-c002-fra002-dev-ix.1.oca.nflxvideo.net
|
||||
ipv4-c012-fra002-dev-ix.1.oca.nflxvideo.net
|
||||
ipv4-c003-fra002-dev-ix.1.oca.nflxvideo.net
|
||||
ipv6-c003-fra002-dev-ix.1.oca.nflxvideo.net
|
||||
ipv4-c004-fra002-dev-ix.1.oca.nflxvideo.net
|
||||
ipv6-c004-fra002-dev-ix.1.oca.nflxvideo.net
|
||||
ipv4-c005-fra002-dev-ix.1.oca.nflxvideo.net
|
||||
ipv4-c006-fra002-dev-ix.1.oca.nflxvideo.net
|
||||
ipv4-c007-fra002-dev-ix.1.oca.nflxvideo.net
|
||||
ipv4-c008-fra002-dev-ix.1.oca.nflxvideo.net
|
||||
ipv4-c009-fra002-dev-ix.1.oca.nflxvideo.net
|
||||
ipv4-c151-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c032-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c142-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c152-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c143-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c144-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c155-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c147-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c157-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c118-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c003-mfm001-ctm-isp.1.oca.nflxvideo.net
|
||||
ipv4-c001-tsa001-chieftelecom-isp.1.oca.nflxvideo.net
|
||||
ipv4-c001-tsa001-cht-isp.1.oca.nflxvideo.net
|
||||
ipv4-c002-tsa001-cht-isp.1.oca.nflxvideo.net
|
||||
ipv4-c003-tsa001-cht-isp.1.oca.nflxvideo.net
|
||||
ipv4-c004-tsa001-cht-isp.1.oca.nflxvideo.net
|
||||
ipv4-c005-tsa001-cht-isp.1.oca.nflxvideo.net
|
||||
ipv4-c006-tsa001-cht-isp.1.oca.nflxvideo.net
|
||||
ipv4-c007-tsa001-cht-isp.1.oca.nflxvideo.net
|
||||
ipv4-c008-tsa001-cht-isp.1.oca.nflxvideo.net
|
||||
ipv4-c002-cjj001-lguplus-isp.1.oca.nflxvideo.net
|
||||
ipv4-c006-cjj001-lguplus-isp.1.oca.nflxvideo.net
|
||||
ipv4-c001-hlp001-im2-isp.1.oca.nflxvideo.net
|
||||
ipv4-c001-hlp001-myrepublicid-isp.1.oca.nflxvideo.net
|
||||
ipv4-c002-hlp001-myrepublicid-isp.1.oca.nflxvideo.net
|
||||
ipv4-c001-hlp001-cbn-isp.1.oca.nflxvideo.net
|
||||
ipv4-c002-hlp001-cbn-isp.1.oca.nflxvideo.net
|
||||
ipv4-c001-hlp002-linknet-isp.1.oca.nflxvideo.net
|
||||
ipv4-c002-hlp002-linknet-isp.1.oca.nflxvideo.net
|
||||
ipv4-c001-hlp003-linknet-isp.1.oca.nflxvideo.net
|
||||
ipv4-c002-hlp003-linknet-isp.1.oca.nflxvideo.net
|
||||
ipv4-c001-hlp001-mncplay-isp.1.oca.nflxvideo.net
|
||||
ipv4-c002-hlp001-mncplay-isp.1.oca.nflxvideo.net
|
||||
ipv4-c001-bdo001-starnetid-isp.1.oca.nflxvideo.net
|
||||
ipv4-c002-bdo001-starnetid-isp.1.oca.nflxvideo.net
|
||||
ipv4-c002-cgk001-moratel-isp.1.oca.nflxvideo.net
|
||||
ipv4-c001-cgk001-linknet-isp.1.oca.nflxvideo.net
|
||||
ipv4-c002-cgk001-linknet-isp.1.oca.nflxvideo.net
|
||||
ipv4-c003-cgk001-linknet-isp.1.oca.nflxvideo.net
|
||||
ipv4-c001-cgk002-linknet-isp.1.oca.nflxvideo.net
|
||||
ipv4-c002-cgk002-linknet-isp.1.oca.nflxvideo.net
|
||||
ipv4-c003-cgk002-linknet-isp.1.oca.nflxvideo.net
|
||||
ipv4-c003-cgk002-biznet-isp.1.oca.nflxvideo.net
|
||||
ipv4-c004-cgk002-biznet-isp.1.oca.nflxvideo.net
|
||||
ipv4-c001-cxp001-biznet-isp.1.oca.nflxvideo.net
|
||||
ipv4-c001-sub001-biznet-isp.1.oca.nflxvideo.net
|
||||
ipv4-c016-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c010-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c025-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c027-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c001-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c002-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c008-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c004-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c063-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c117-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c037-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c026-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c124-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv6-c062-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c058-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c057-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c051-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c108-fra002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c024-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c030-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c010-osa001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c020-osa001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c001-osa001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c011-osa001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c021-osa001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c002-osa001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c012-osa001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c022-osa001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c003-osa001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c013-osa001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c004-osa001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c014-osa001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c005-osa001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c015-osa001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c006-osa001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c016-osa001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c007-osa001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c017-osa001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c008-osa001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c018-osa001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c009-osa001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c019-osa001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c020-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c001-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c011-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c021-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c031-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c012-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c022-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c032-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c003-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c023-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c033-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c014-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c034-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c005-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c015-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c006-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c036-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c007-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c017-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c018-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c028-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c038-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c009-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c019-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c029-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c013-jnb001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c035-jnb001-ix.1.oca.nflxvideo.net
|
||||
dualstack.apiproxy-nrdp-prod-nlb-4-9fae3883a092e5c6.elb.us-west-2.amazonaws.com
|
||||
dualstack.apiproxy-nrdp-prod-nlb-2-42101415231301e4.elb.us-west-2.amazonaws.com
|
||||
dualstack.apiproxy-nrdp-prod-nlb-1-4659b24f746a127b.elb.us-west-2.amazonaws.com
|
||||
dualstack.apiproxy-nrdp-prod-nlb-3-80d1f4b305f7c0e4.elb.us-west-2.amazonaws.com
|
||||
ipv4-c002-hkg001-pccw-isp.1.oca.nflxvideo.net
|
||||
ipv6-c012-hkg001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c006-sin001-starhub-isp.1.oca.nflxvideo.net
|
||||
ipv6-c026-sin001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c001-cgk001-moratel-isp.1.oca.nflxvideo.net
|
||||
ipv4-c221-sjc002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c204-sjc002-dev-ix.1.oca.nflxvideo.net
|
||||
ipv4-c070-lax009-ix.1.oca.nflxvideo.net
|
||||
ipv4-c024-lax009-ix.1.oca.nflxvideo.net
|
||||
ipv4-c044-lhr005-ix.1.oca.nflxvideo.net
|
||||
ipv4-c133-lhr004-ix.1.oca.nflxvideo.net
|
||||
ipv4-c144-sea001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c046-nyc005-ix.1.oca.nflxvideo.net
|
||||
ipv4-c007-pdx001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c111-lhr004-ix.1.oca.nflxvideo.net
|
||||
ipv4-c059-lhr005-ix.1.oca.nflxvideo.net
|
||||
ipv4-c162-sea001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c031-nyc005-ix.1.oca.nflxvideo.net
|
||||
ipv4-c022-pdx001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c212-sea001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c147-sea001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c181-sea001-ix.1.oca.nflxvideo.net
|
||||
ipv6-c204-sea001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c132-lhr004-ix.1.oca.nflxvideo.net
|
||||
ipv4-c067-lhr005-ix.1.oca.nflxvideo.net
|
||||
ipv4-c197-sea001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c044-pdx001-ix.1.oca.nflxvideo.net
|
||||
ipv4-c060-nyc005-ix.1.oca.nflxvideo.net
|
@ -106,6 +106,11 @@ dns:
|
||||
# fake-ip-filter:
|
||||
# - '*.lan'
|
||||
# - localhost.ptlogin2.qq.com
|
||||
|
||||
# The matching mode of fake-ip-filter is set to a blacklist by default.
|
||||
# That is, fake-ip is not returned if the matching succeeds
|
||||
# It can be set to whitelist, that is, fake-ip is returned only after the match is successful
|
||||
fake-ip-filter-mode: blacklist
|
||||
|
||||
# Supports UDP, TCP, DoT, DoH. You can specify the port to connect to.
|
||||
# All DNS questions are sent directly to the nameserver, without proxies
|
||||
@ -469,4 +474,4 @@ rules:
|
||||
- DST-PORT,80,DIRECT
|
||||
- SRC-PORT,7777,DIRECT
|
||||
- RULE-SET,apple,REJECT # Premium only
|
||||
- MATCH,auto
|
||||
- MATCH,auto
|
||||
|
@ -1,18 +1,18 @@
|
||||
300英雄,300hero-cn.rules
|
||||
方舟:生存进化,ARK--Survival-Evolved.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
|
||||
战地4,BattleField-4.rules
|
||||
战地1,Battlefield-1.rules
|
||||
战地4,BattleField-4.rules
|
||||
戰地5,Battlefield-Ⅴ.rules,Battlefield-5.rules
|
||||
黑色沙漠,Black-Desert.rules
|
||||
黑色幸存者,BlackSurvivor.rules
|
||||
@ -24,17 +24,17 @@ Atlas-全区,Atlas.rules
|
||||
泡泡战士-跑跑卡丁车-韩服,BubbleFighter-KartRider-KR.rules
|
||||
绕过大陆和局域网,BypassCNandLan.rules
|
||||
绕过大陆和局域网someip,BypassCNandLan_someip.rules
|
||||
反恐精英:全球攻势,CS-GO.rules
|
||||
反恐精英:全球攻势-港服(tx),CSGO-HKtx.rules
|
||||
反恐精英:全球攻势-港服(uu),CSGO-HKuu.rules
|
||||
反恐精英:全球攻势-日服(tx),CSGO-JPtx.rules
|
||||
反恐精英:全球攻势-美服(tx),CSGO-UStx.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
|
||||
@ -43,24 +43,24 @@ DayZ steam,DayZ.rules
|
||||
命运2-全服(uu),Destiny2-Alluu.rules
|
||||
天命2-亚服/命运2-亚服,Destiny2-Asia.rules
|
||||
天命2-欧服/命运2-欧服,Destiny2-EU.rules
|
||||
天命2-美服/命运2-美服,Destiny2-US.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
|
||||
饥荒-steam,Don't-Starve-steam.rules,Dont-Starve-steam.rules
|
||||
刀塔霸业,Dota-Underlords.rules
|
||||
DOTA2-日服,Dota2-jp.rules
|
||||
逃离塔科夫,Escape-from-Tarkov.rules
|
||||
欧卡2所有分区-UU,Euro-Truck-Simulator-2.rules
|
||||
Eve-online欧服,Eve-online.rules
|
||||
FIFA20,FIFA20.rules
|
||||
最终幻想14国服,FINAL-FANTASY-XIV-cn.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
|
||||
@ -69,12 +69,14 @@ FIFA19,FiFa19-INT.rules
|
||||
极限竞速地平线5,Forza-Horizon-5.rules
|
||||
极限竞速7,Forza-Motorsport-7.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
|
||||
杀手2外服,HITMAN2.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
|
||||
@ -83,25 +85,25 @@ Jump大乱斗,Jump-Force.rules
|
||||
酷狗回国,KuGou-cn.rules
|
||||
Kurtzpel,Kurtzpel.rules
|
||||
求生之路2-Test,L4D2-Test.rules
|
||||
英雄联盟PBE,League-of-Legends-PBE.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
|
||||
传奇4-亚服,MIR4-asia.rules
|
||||
万智牌:竞技场-国际服,MTG-Arena.rules
|
||||
奇迹传奇MU2,MU2.rules
|
||||
冒险岛,Maplestory-us.rules
|
||||
心灵终结,MentalOmega.rules
|
||||
微软模拟飞行年度版,Microsoft-Flight-Simulator-Game-Of-The-Year-Edition.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
|
||||
@ -109,18 +111,18 @@ NBA2K20,NBA2K20.rules
|
||||
Osu!,Osu!.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-INT.rules
|
||||
绝地求生韩服,PUBG-kakao.rules
|
||||
绝地求生轻量版-WEB客户端,PUBGLITE-WEB.rules
|
||||
绝地求生低配版-Garena,PUBGLite-Garena.rules
|
||||
流亡黯道-国际服,Path Of Exile.rules
|
||||
流放之路,PathOfexile.rules
|
||||
行星边际2,PlanetSide-2.rules
|
||||
绝地求生大逃杀,PlayerUnknown's-Battlegrounds-update.rules
|
||||
实况足球-2018,Pro-Evolution-Soccer-2018.rules
|
||||
实况足球-2019,Pro-Evolution-Soccer-2019.rules
|
||||
绝地求生轻量版-WEB客户端,PUBGLITE-WEB.rules
|
||||
R2竞技场服,R2Arena.rules
|
||||
R2俄服官服,R2RU.rules
|
||||
R2美服,R2US.rules
|
||||
@ -141,42 +143,41 @@ StarCraft 2 亚服,StarCraft-2-asia.rules
|
||||
Steam-社区(Beta),Steam.rules
|
||||
极限巅峰,Steep.rules
|
||||
街头霸王5,Street-Fighter-V.rules
|
||||
神谕之战,TERA.rules
|
||||
新枫之谷,TMS.rules
|
||||
仅代理Telegram,Telegram.rules
|
||||
神谕之战,TERA.rules
|
||||
飙酷车神,The-Crew.rules
|
||||
飙酷车神2,The-Crew2.rules
|
||||
上古卷轴OL,The-Elder-Scrolls-Online.rules
|
||||
泰坦陨落2,TiTanFall2.rules
|
||||
天涯明月刀-台服,TianYaMingYueDao-tw.rules
|
||||
幽灵行动:荒野,Tom-Clancy's-Ghost-Recon-Wildlands.rules
|
||||
彩虹六号-异种-全部,Tom-Clancy's-Rainbow-Six-Extraction-all.rules
|
||||
彩虹六号-围攻-EAS,Tom-Clancy's-Rainbow-Six-Siege-EAS.rules
|
||||
彩虹六号-围攻-全部,Tom-Clancy's-Rainbow-Six-Siege-all.rules
|
||||
全境封锁2,Tom-clancy's-The-Division-2.rules
|
||||
全境封锁,Tom-clancy's-The-Division.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
|
||||
VRchat,VRchat.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
|
||||
魔兽世界-欧服,WoW-EU.rules
|
||||
World War 3,World-War-3.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-of-warcraft-tw.rules
|
||||
战舰世界欧服,World-of-warships-EU.rules
|
||||
World War 3,World-War-3.rules
|
||||
僵尸世界大战,Worldwar-Z.rules
|
||||
魔兽世界-欧服,WoW-EU.rules
|
||||
游戏王决斗链接,YO-GI-HO delulinks.rules
|
||||
YY语音,YY-cn.rules
|
||||
游侠对战平台,YouXiaDuiZhanPingTai.rules
|
||||
风暴英雄,heros of the storm-kr.rules
|
||||
YY语音,YY-cn.rules
|
||||
|
@ -1,50 +1,24 @@
|
||||
放行规则-ConnersHua(建议置顶并直连),ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/,Unbreak.yaml
|
||||
放行规则-lhie1(建议置顶并直连),lhie1,classical,dler-io/Rules/master/Clash/Provider/,Special.yaml
|
||||
放行规则-ACL4SSR(建议置顶并直连),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/,UnBan.yaml
|
||||
反劫持规则,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Guard/,Hijacking.yaml
|
||||
国内IP白名单(By lhie1),lhie1,ipcidr,dler-io/Rules/master/Clash/Provider/,Domestic IPs.yaml
|
||||
国内IP白名单,ConnersHua,ipcidr,DivineEngine/Profiles/master/Clash/RuleSet/Extra/,ChinaIP.yaml
|
||||
国内域名白名单(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/,Domestic.yaml
|
||||
国内域名白名单,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/,China.yaml
|
||||
国内流媒体合集,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/,StreamingCN.yaml
|
||||
国内流媒体国际版合集,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/,StreamingSE.yaml
|
||||
国外常用网站合集(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/,Proxy.yaml
|
||||
国外常用网站合集,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/,Global.yaml
|
||||
国外流媒体合集,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/,Streaming.yaml
|
||||
学术网站,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/,Scholar.yaml
|
||||
广告规则(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/,Reject.yaml
|
||||
广告规则,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Guard/,Advertising.yaml
|
||||
微软服务,lhie1,classical,dler-io/Rules/master/Clash/Provider/,Microsoft.yaml
|
||||
数字货币相关,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/,Cryptocurrency.yaml
|
||||
隐私规则合集,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Guard/,Privacy.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
|
||||
AbemaTV,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,AbemaTV.yaml
|
||||
Adobe,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Adobe.yaml
|
||||
All-4,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,All-4.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
|
||||
AppStore,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Apple/,AppStore.yaml
|
||||
AppStoreConnect,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Apple/,AppStoreConnect.yaml
|
||||
Apple FindMy,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Apple/,FindMy.yaml
|
||||
Apple Music,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Apple/,Music.yaml
|
||||
Apple News(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Apple News.yaml
|
||||
Apple News,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Apple/,News.yaml
|
||||
Apple SoftwareUpdate,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Apple/,SoftwareUpdate.yaml
|
||||
Apple TV(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Apple TV.yaml
|
||||
Apple TV,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Apple/,TV.yaml
|
||||
Apple TestFlight,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Apple/,TestFlight.yaml
|
||||
Apple iCloud,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Apple/,iCloud.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
|
||||
Apple,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Apple/,Apple.yaml
|
||||
BBC iPlayer,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,BBC iPlayer.yaml
|
||||
BBC-iPlayer,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,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
|
||||
Bahamut,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,Bahamut.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
|
||||
@ -52,129 +26,70 @@ BanEasyPrivacy,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/,BanEasy
|
||||
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
|
||||
Bilibili-Intl,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,bilibili-Intl.yaml
|
||||
BilibiliHMT,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,BilibiliHMT.yaml
|
||||
Blizzard(By ConnersHua),ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Game/,Blizzard.yaml,Blizzard-ConnersHua.yaml
|
||||
Blizzard,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Blizzard.yaml
|
||||
ChatGPT,lhie1,classical,dler-io/Rules/master/Clash/Provider/,ChatGPT.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
|
||||
Chromecast,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Google/,Chromecast.yaml
|
||||
DAZN(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,DAZN.yaml,DAZN-lhie1.yaml
|
||||
DAZN,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,DAZN.yaml
|
||||
Deezer,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Music/,Deezer.yaml
|
||||
Developer,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Developer.yaml
|
||||
Discord,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Game/,Discord.yaml
|
||||
DiscoveryPlus,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,DiscoveryPlus.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
|
||||
DisneyPlus,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,DisneyPlus.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,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,FOX.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
|
||||
GFW地址,ConnersHua,ipcidr,DivineEngine/Profiles/master/Clash/RuleSet/Extra/,IP-Blackhole.yaml
|
||||
Google,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Google.yaml
|
||||
GoogleCN,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,GoogleCN.yaml
|
||||
GoogleDrive,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Google/,GoogleDrive.yaml
|
||||
GoogleFCM,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,GoogleFCM.yaml
|
||||
GoogleSearch,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Google/,GoogleSearch.yaml
|
||||
GoogleVoice,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Google/,GoogleVoice.yaml
|
||||
HBO(By ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,HBO.yaml,HBO-ACL4SSR.yaml
|
||||
HBO(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,HBO.yaml,HBO-lhie1.yaml
|
||||
HBO,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,HBO.yaml
|
||||
HBO-GO-HKG,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,HBO-GO-HKG.yaml
|
||||
HWTV,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,HWTV.yaml
|
||||
Himalaya,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Podcast/,Himalaya.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
|
||||
Hulu,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,Hulu.yaml
|
||||
Hulu-JPN,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,Hulu-JPN.yaml
|
||||
ITV,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,ITV.yaml
|
||||
Instagram,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Music/,Instagram.yaml
|
||||
JOOX(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,JOOX.yaml,JOOX-lhie1.yaml
|
||||
JOOX,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Music/,JOOX.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
|
||||
KKBOX,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Music/,KKBOX.yaml
|
||||
KKTV(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,KKTV.yaml,KKTV-lhie1.yaml
|
||||
KKTV,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,KKTV.yaml
|
||||
LINE-TV,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,LINE-TV.yaml
|
||||
Letv,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Letv.yaml
|
||||
LiTV,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,LiTV.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
|
||||
My5,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,My5.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
|
||||
Netflix,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,Netflix.yaml
|
||||
Nintendo,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Game/,Nintendo.yaml
|
||||
Now-E,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,Now-E.yaml
|
||||
OneDrive(By ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,OneDrive.yaml,OneDrive-ACL4SSR.yaml
|
||||
OneDrive,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Microsoft/,OneDrive.yaml
|
||||
Origin,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Game/,Origin.yaml
|
||||
PBS(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,PBS.yaml,PBS-lhie1.yaml
|
||||
PBS,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,PBS.yaml
|
||||
Pandora(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Pandora.yaml,Pandora-lhie1.yaml
|
||||
Pandora,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Music/,Pandora.yaml
|
||||
ParamountPlus,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,ParamountPlus.yaml
|
||||
PayPal(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/,PayPal.yaml,PayPal-lhie1.yaml
|
||||
PayPal,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/,PayPal.yaml
|
||||
Peacock,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,Peacock.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
|
||||
Pornhub,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,Pornhub.yaml
|
||||
Prime-Video,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,Prime-Video.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
|
||||
Siri,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Apple/,Siri.yaml
|
||||
Sony,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Sony.yaml
|
||||
SoundCloud,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Music/,SoundCloud.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
|
||||
Spotify,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Music/,Spotify.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
|
||||
TIDAL,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Music/,TIDAL.yaml
|
||||
TaiwanGood,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,TaiwanGood.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
|
||||
Telegram,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Telegram/,Telegram.yaml
|
||||
TelegramNL,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Telegram/,TelegramNL.yaml
|
||||
TelegramSG,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Telegram/,TelegramSG.yaml
|
||||
TelegramUS,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Telegram/,TelegramUS.yaml
|
||||
Tencent Video,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Tencent Video.yaml
|
||||
TikTok,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,TikTok.yaml
|
||||
Twitch,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Live/,Twitch.yaml
|
||||
ViuTV(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,ViuTV.yaml,ViuTV-lhie1.yaml
|
||||
ViuTV,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,ViuTV.yaml
|
||||
WeTV,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,WeTV.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
|
||||
YouTube,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,YouTube.yaml
|
||||
YouTubeMusic,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Music/,YouTubeMusic.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
|
||||
encoreTVB,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,encoreTVB.yaml
|
||||
iCloud-email,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Apple/,Mail.yaml
|
||||
iQIYI,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,iQIYI.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
|
||||
myTV-SUPER,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,myTV-SUPER.yaml
|
||||
niconico,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,niconico.yaml
|
||||
myTV SUPER,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,myTV SUPER.yaml
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
||||
import{i,f as r,b as s,d as a}from"./vendor-TCjgV7Sn.js";var l=a('<div class="py-2 text-center text-lg font-semibold">');const n=t=>(()=>{var e=l();return i(e,r(()=>t.children)),s(()=>e.classList.toggle("divider",!!t.withDivider)),e})();export{n as C};
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
||||
import{c as t,L as V,i as e,F as C,b as w,d as v,k as y,p as P,j as X,g as I,M as Z,ae as G,P as J,ap as K,aq as Q,t as A,D as U,e as Y}from"./vendor-TCjgV7Sn.js";import{c as ee,g as te,a as re,e as le,f as j,r as ae}from"./index-IZ7lrjtp.js";import{u as W,z as se,T as ne,A as ie,L as g,E as oe,F as ce,G as N,H as O,I as B,M as de,c as ge,B as ue,y as he}from"./index-k-FO5KmN.js";import{C as M}from"./ConfigTitle-_jKUZ02Y.js";var ve=v('<div class="flex flex-col gap-4"><div><select class="select select-bordered w-full"></select></div><div><select class="select select-bordered w-full"></select></div><div><select class="select select-bordered w-full">'),k=v("<option>");const fe=i=>{const[a]=W();return t(de,{ref:c=>{var o;return(o=i.ref)==null?void 0:o.call(i,c)},get icon(){return t(V,{size:24})},get title(){return a("logsSettings")},get children(){var c=ve(),o=c.firstChild,d=o.firstChild,_=o.nextSibling,b=_.firstChild,$=_.nextSibling,p=$.firstChild;return e(o,t(M,{withDivider:!0,get children(){return a("tableSize")}}),d),d.addEventListener("change",r=>se(r.target.value)),e(d,t(C,{get each(){return Object.values(ne)},children:r=>(()=>{var s=k();return s.value=r,e(s,()=>a(r)),s})()})),e(_,t(M,{withDivider:!0,get children(){return a("logLevel")}}),b),b.addEventListener("change",r=>ie(r.target.value)),e(b,t(C,{get each(){return[g.Info,g.Error,g.Warning,g.Debug,g.Silent]},children:r=>(()=>{var s=k();return s.value=r,e(s,()=>a(r)),s})()})),e($,t(M,{withDivider:!0,get children(){return a("logMaxRows")}}),p),p.addEventListener("change",r=>oe(parseInt(r.target.value))),e(p,t(C,{each:ce,children:r=>(()=>{var s=k();return s.value=r,e(s,r),s})()})),w(()=>d.value=N()),w(()=>b.value=O()),w(()=>p.value=B()),c}})};var me=v("<span>"),be=v('<div class="flex h-full flex-col gap-2"><div class="join w-full"><input type=search class="input join-item input-primary input-sm flex-1 flex-shrink-0 sm:input-md"></div><div class="overflow-x-auto whitespace-nowrap rounded-md bg-base-300"><table><thead class="sticky top-0 z-10"></thead><tbody>'),pe=v("<tr>"),_e=v('<th class=bg-base-200><div class="flex items-center"><div>'),$e=v('<tr class="hover:!bg-primary hover:text-primary-content">'),Se=v("<td class=py-2>");const q=(i,a,c,o)=>{const d=ae(i.getValue(a),c);return o({itemRank:d}),d.passed},Fe=()=>{let i;const[a]=W();let c=1;const[o,d]=y([]),_=ge("logs",{level:O()});P(()=>{const l=_();l&&(d(f=>[{...l,seq:c},...f].slice(0,B())),c++)});const[b,$]=y(""),[p,r]=X(y([]),{name:"logsTableSorting",storage:localStorage}),s=[{header:a("sequence"),accessorFn:l=>l.seq},{header:a("type"),accessorFn:l=>l.type,cell:({row:l})=>{const f=l.original.type;let u="";switch(f){case g.Error:u="text-error";break;case g.Warning:u="text-warning";break;case g.Info:u="text-info";break;case g.Debug:u="text-success";break}return(()=>{var S=me();return I(S,u),e(S,()=>`[${l.original.type}]`),S})()}},{header:a("payload"),accessorFn:l=>l.payload}],E=ee({filterFns:{fuzzy:q},state:{get globalFilter(){return b()},get sorting(){return p()}},get data(){return o()},sortDescFirst:!0,columns:s,onGlobalFilterChange:$,onSortingChange:r,globalFilterFn:q,getFilteredRowModel:te(),getSortedRowModel:re(),getCoreRowModel:le()});return(()=>{var l=be(),f=l.firstChild,u=f.firstChild,S=f.nextSibling,R=S.firstChild,D=R.firstChild,H=D.nextSibling;return u.$$input=n=>$(n.target.value),e(f,t(ue,{class:"join-item btn-sm sm:btn-md",onClick:()=>i==null?void 0:i.showModal(),get icon(){return t(Z,{})}}),null),e(D,t(G,{get each(){return E.getHeaderGroups()},children:n=>{const m=n();return(()=>{var h=pe();return e(h,t(G,{get each(){return m.headers},children:L=>{const x=L();return(()=>{var z=_e(),T=z.firstChild,F=T.firstChild;return J(F,"click",x.column.getToggleSortingHandler(),!0),e(F,()=>j(x.column.columnDef.header,x.getContext())),e(T,()=>({asc:t(K,{}),desc:t(Q,{})})[x.column.getIsSorted()]??null,null),w(()=>I(F,A(x.column.getCanSort()&&"cursor-pointer select-none","flex-1"))),z})()}})),h})()}})),e(H,t(C,{get each(){return E.getRowModel().rows},children:n=>(()=>{var m=$e();return e(m,t(C,{get each(){return n.getVisibleCells()},children:h=>(()=>{var L=Se();return e(L,()=>j(h.column.columnDef.cell,h.getContext())),L})()})),m})()})),e(l,t(fe,{ref:n=>i=n}),null),w(n=>{var m=a("search"),h=A(he(N()),"table relative rounded-none");return m!==n.e&&U(u,"placeholder",n.e=m),h!==n.t&&I(R,n.t=h),n},{e:void 0,t:void 0}),l})()};Y(["input","click"]);export{Fe as default};
|
@ -0,0 +1 @@
|
||||
import{u as O,f as e,ah as X,i as t,ai as I,aj as Z,F as x,ak as J,al as K,am as u,an as U,ao as Y,_ as C,ap as W,aq as B,ar as V,O as ee,t as v,y as L,A as te,q as ae,b as re,x as le,Q as se,$ as k,C as ne,a2 as oe,a3 as ie,B as P,a5 as ce,a1 as j,a6 as de,a9 as ue,aa as ge,a0 as q,ae as he,ag as ve,k as fe}from"./index-QV8LhAb2.js";import{c as me,g as be,a as pe,e as _e,f as A,r as $e}from"./index-DzC0BcbT.js";var Se=v('<div class="flex flex-col gap-4"><div><select class="select select-bordered w-full"></select></div><div><select class="select select-bordered w-full"></select></div><div><select class="select select-bordered w-full">'),M=v("<option>");const xe=i=>{const[r]=O();return e(ee,{ref:o=>{var c;return(c=i.ref)==null?void 0:c.call(i,o)},get icon(){return e(X,{size:24})},get title(){return r("logsSettings")},get children(){var o=Se(),c=o.firstChild,d=c.firstChild,_=c.nextSibling,m=_.firstChild,w=_.nextSibling,b=w.firstChild;return t(c,e(I,{withDivider:!0,get children(){return r("tableSize")}}),d),d.addEventListener("change",a=>Z(a.target.value)),t(d,e(x,{get each(){return Object.values(J)},children:a=>(()=>{var s=M();return s.value=a,t(s,()=>r(a)),s})()})),t(_,e(I,{withDivider:!0,get children(){return r("logLevel")}}),m),m.addEventListener("change",a=>K(a.target.value)),t(m,e(x,{get each(){return[u.Info,u.Error,u.Warning,u.Debug,u.Silent]},children:a=>(()=>{var s=M();return s.value=a,t(s,()=>r(a)),s})()})),t(w,e(I,{withDivider:!0,get children(){return r("logMaxRows")}}),b),b.addEventListener("change",a=>U(parseInt(a.target.value))),t(b,e(x,{each:Y,children:a=>(()=>{var s=M();return s.value=a,t(s,a),s})()})),C(()=>d.value=W()),C(()=>m.value=B()),C(()=>b.value=V()),o}})};let G=1;const[Ce,we]=L([]),ye=te("logs",{level:B()}),[H,Le]=L(!1);ae(()=>{const i=ye();!i||H()||(we(r=>[{...i,seq:G},...r].slice(0,V())),G++)});const Fe=()=>({logs:Ce,paused:H,setPaused:Le});var Ie=v("<span>"),ke=v('<div class="flex h-full flex-col gap-2"><div class="join w-full"><input type=search class="input input-sm join-item input-primary flex-1 flex-shrink-0"></div><div class="overflow-x-auto whitespace-nowrap rounded-md bg-base-300"><table><thead class="sticky top-0 z-10"></thead><tbody>'),Me=v("<tr>"),Re=v('<th class=bg-base-200><div class="flex items-center"><div>'),Ee=v('<tr class="hover:!bg-primary hover:text-primary-content">'),De=v("<td class=py-2>");const N=(i,r,o,c)=>{const d=$e(i.getValue(r),o);return c({itemRank:d}),d.passed},Pe=()=>{const i=re();if(!le())return i("/setup",{replace:!0}),null;let r;const[o]=O(),[c,d]=L(""),{logs:_,paused:m,setPaused:w}=Fe(),[b,a]=se(L([]),{name:"logsTableSorting",storage:localStorage}),s=[{header:o("sequence"),accessorFn:n=>n.seq},{header:o("type"),accessorFn:n=>n.type,cell:({row:n})=>{const p=n.original.type;let g="";switch(p){case u.Error:g="text-error";break;case u.Warning:g="text-warning";break;case u.Info:g="text-info";break;case u.Debug:g="text-success";break}return(()=>{var $=Ie();return k($,g),t($,()=>`[${n.original.type}]`),$})()}},{header:o("payload"),accessorFn:n=>n.payload}],R=me({filterFns:{fuzzy:N},state:{get globalFilter(){return c()},get sorting(){return b()}},get data(){return _()},sortDescFirst:!0,columns:s,onGlobalFilterChange:d,onSortingChange:a,globalFilterFn:N,getFilteredRowModel:be(),getSortedRowModel:pe(),getCoreRowModel:_e()});return(()=>{var n=ke(),p=n.firstChild,g=p.firstChild,$=p.nextSibling,E=$.firstChild,D=E.firstChild,Q=D.nextSibling;return g.$$input=l=>d(l.target.value),t(p,e(P,{class:"btn-primary join-item btn-sm",onClick:()=>w(l=>!l),get icon(){return ne(()=>!!m())()?e(oe,{}):e(ie,{})}}),null),t(p,e(P,{class:"btn-primary join-item btn-sm",onClick:()=>r==null?void 0:r.showModal(),get icon(){return e(ce,{})}}),null),t(D,e(j,{get each(){return R.getHeaderGroups()},children:l=>{const f=l();return(()=>{var h=Me();return t(h,e(j,{get each(){return f.headers},children:y=>{const S=y();return(()=>{var z=Re(),T=z.firstChild,F=T.firstChild;return de(F,"click",S.column.getToggleSortingHandler(),!0),t(F,()=>A(S.column.columnDef.header,S.getContext())),t(T,()=>({asc:e(ue,{}),desc:e(ge,{})})[S.column.getIsSorted()]??null,null),C(()=>k(F,q(S.column.getCanSort()&&"cursor-pointer select-none","flex-1"))),z})()}})),h})()}})),t(Q,e(x,{get each(){return R.getRowModel().rows},children:l=>(()=>{var f=Ee();return t(f,e(x,{get each(){return l.getVisibleCells()},children:h=>(()=>{var y=De();return t(y,()=>A(h.column.columnDef.cell,h.getContext())),y})()})),f})()})),t(n,e(xe,{ref:l=>r=l}),null),C(l=>{var f=o("search"),h=q(he(W()),"table relative rounded-none");return f!==l.e&&ve(g,"placeholder",l.e=f),h!==l.t&&k(E,l.t=h),l},{e:void 0,t:void 0}),n})()};fe(["input","click"]);export{Pe as default};
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
||||
import{B as z,a1 as A,a2 as N,a3 as P,a4 as q,N as H,i as c,c as h,O as M,F as O,d as C,a5 as x,v as U,e as T,w as X}from"./vendor-TCjgV7Sn.js";import{u as G,e as m,B as _,s as f,a as J,b as S,t as K}from"./index-k-FO5KmN.js";let v;const Q=new Uint8Array(16);function W(){if(!v&&(v=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!v))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return v(Q)}const a=[];for(let t=0;t<256;++t)a.push((t+256).toString(16).slice(1));function Y(t,e=0){return a[t[e+0]]+a[t[e+1]]+a[t[e+2]]+a[t[e+3]]+"-"+a[t[e+4]]+a[t[e+5]]+"-"+a[t[e+6]]+a[t[e+7]]+"-"+a[t[e+8]]+a[t[e+9]]+"-"+a[t[e+10]]+a[t[e+11]]+a[t[e+12]]+a[t[e+13]]+a[t[e+14]]+a[t[e+15]]}const Z=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),E={randomUUID:Z};function tt(t,e,d){if(E.randomUUID&&!e&&!t)return E.randomUUID();t=t||{};const i=t.random||(t.rng||W)();if(i[6]=i[6]&15|64,i[8]=i[8]&63|128,e){d=d||0;for(let o=0;o<16;++o)e[d+o]=i[o];return e}return Y(i)}var et=C('<div class="mx-auto flex max-w-screen-sm flex-col items-center gap-4 py-10"><form class=contents><div class="flex w-full flex-col gap-4"><div class=flex-1><label class=label><span class=label-text></span></label><input name=url type=url class="input input-bordered w-full"placeholder=http://127.0.0.1:9090 list=defaultEndpoints><datalist id=defaultEndpoints><option value=http://127.0.0.1:9090></option></datalist></div><div class=flex-1><label class=label><span class=label-text></span></label><input name=secret type=password class="input input-bordered w-full"placeholder=secret></div></div></form><div class="grid w-full grid-cols-2 gap-4">'),nt=C('<div class="badge badge-info flex w-full cursor-pointer items-center justify-between gap-4 py-4"><span class=truncate>');const st=x.object({url:x.string().min(1),secret:x.string()}),it=()=>{const[t]=G(),e=z(),d=A(),i=n=>{S(n),d("/overview")},o=(n,s)=>X.get(n,{headers:s?{Authorization:`Bearer ${s}`}:{}}).then(({ok:l})=>l).catch(l=>{const{message:r}=l;U.error(r)}),R=async n=>{const s=m().find(l=>l.id===n);s&&await o(s.url,s.secret)&&i(n)},y=async({url:n,secret:s})=>{const l=K(n);if(!await o(l,s))return;const r=tt(),u=m().slice(),p=u.find(b=>b.url===l);if(!p){f([{id:r,url:l,secret:s},...u]),i(r);return}p.secret=s,p.id=r,f(u),i(r)},I=n=>{const{message:s}=n;U.error(s)},{form:$}=N({extend:P({schema:st}),onSubmit:y,onError:I}),L=n=>{J()===n&&S(""),f(m().filter(s=>s.id!==n))};return q(()=>{const n=new URLSearchParams(e.search);n.has("hostname")?y({url:`${window.location.protocol}//${n.get("hostname")}${n.get("port")?`:${n.get("port")}`:""}`,secret:n.get("secret")??""}):m().length===0&&y({url:"http://127.0.0.1:9090",secret:""})}),(()=>{var n=et(),s=n.firstChild,l=s.firstChild,r=l.firstChild,u=r.firstChild,p=u.firstChild,b=r.nextSibling,k=b.firstChild,D=k.firstChild,B=s.nextSibling;return H($,s,()=>$),c(p,()=>t("endpointURL")),c(D,()=>t("secret")),c(l,h(_,{type:"submit",class:"btn-primary uppercase",get children(){return t("add")}}),null),c(B,h(O,{get each(){return m()},children:({id:w,url:V})=>(()=>{var g=nt(),j=g.firstChild;return g.$$click=()=>R(w),c(j,V),c(g,h(_,{class:"btn-circle btn-ghost btn-xs text-white",onClick:F=>{F.stopPropagation(),L(w)},get children(){return h(M,{})}}),null),g})()})),n})()};T(["click"]);export{it as default};
|
@ -0,0 +1 @@
|
||||
import{u as z,a as P,b as q,c as H,v as M,o as N,e as u,d as T,i as o,f as h,B as _,I as X,F as G,t as L,z as f,s as b,g as S,h as J,j as C,k as K,l as O,m as Q}from"./index-QV8LhAb2.js";var a=[];for(var y=0;y<256;++y)a.push((y+256).toString(16).slice(1));function W(t,n=0){return(a[t[n+0]]+a[t[n+1]]+a[t[n+2]]+a[t[n+3]]+"-"+a[t[n+4]]+a[t[n+5]]+"-"+a[t[n+6]]+a[t[n+7]]+"-"+a[t[n+8]]+a[t[n+9]]+"-"+a[t[n+10]]+a[t[n+11]]+a[t[n+12]]+a[t[n+13]]+a[t[n+14]]+a[t[n+15]]).toLowerCase()}var m,Y=new Uint8Array(16);function Z(){if(!m&&(m=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!m))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return m(Y)}var tt=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto);const E={randomUUID:tt};function et(t,n,x){if(E.randomUUID&&!n&&!t)return E.randomUUID();t=t||{};var l=t.random||(t.rng||Z)();return l[6]=l[6]&15|64,l[8]=l[8]&63|128,W(l)}var nt=L('<div class="mx-auto flex max-w-screen-sm flex-col items-center gap-4 py-10"><form class=contents><div class="flex w-full flex-col gap-4"><div class=flex-1><label class=label><span class=label-text></span></label><input name=url type=url class="input input-bordered w-full"placeholder=http://127.0.0.1:9090 list=defaultEndpoints><datalist id=defaultEndpoints><option value=http://127.0.0.1:9090></option></datalist></div><div class=flex-1><label class=label><span class=label-text></span></label><input name=secret type=password class="input input-bordered w-full"placeholder=secret></div></div></form><div class="grid w-full grid-cols-2 gap-4">'),st=L('<div class="badge badge-info flex w-full cursor-pointer items-center justify-between gap-4 py-4"><span class=truncate>');const at=f.object({url:f.string().min(1),secret:f.string()}),lt=()=>{const[t]=z(),n=P(),x=q(),l=s=>{C(s),x("/overview")},$=(s,e)=>O.get(s,{headers:e?{Authorization:`Bearer ${e}`}:{}}).then(({ok:r})=>r).catch(r=>{const{message:i}=r;S.error(i)}),R=async s=>{const e=u().find(r=>r.id===s);e&&await $(e.url,e.secret)&&l(s)},g=async({url:s,secret:e})=>{const r=Q(s);if(!await $(r,e))return;const i=et(),c=u().slice(),d=c.find(v=>v.url===r);if(!d){b([{id:i,url:r,secret:e},...c]),l(i);return}d.secret=e,d.id=i,b(c),l(i)},I=s=>{const{message:e}=s;S.error(e)},{form:w}=H({extend:M({schema:at}),onSubmit:g,onError:I}),k=s=>{J()===s&&C(""),b(u().filter(e=>e.id!==s))};return N(()=>{let s=n.search||window.location.search;if(s){const r=n.hash.match(/\?.*$/);Array.isArray(r)&&r[0]&&(s=r[0].replace("?",""))}const e=new URLSearchParams(s);e.has("hostname")?g({url:`${e.get("http")?"http:":e.get("https")?"https:":window.location.protocol}//${e.get("hostname")}${e.get("port")?`:${e.get("port")}`:""}`,secret:e.get("secret")??""}):u().length===0&&g({url:"http://127.0.0.1:9090",secret:""})}),(()=>{var s=nt(),e=s.firstChild,r=e.firstChild,i=r.firstChild,c=i.firstChild,d=c.firstChild,v=i.nextSibling,D=v.firstChild,j=D.firstChild,A=e.nextSibling;return T(w,e,()=>w),o(d,()=>t("endpointURL")),o(j,()=>t("secret")),o(r,h(_,{type:"submit",class:"btn-primary uppercase",get children(){return t("add")}}),null),o(A,h(G,{get each(){return u()},children:({id:U,url:V})=>(()=>{var p=st(),B=p.firstChild;return p.$$click=()=>R(U),o(B,V),o(p,h(_,{class:"btn-circle btn-ghost btn-xs text-white",onClick:F=>{F.stopPropagation(),k(U)},get children(){return h(X,{})}}),null),p})()})),s})()};K(["click"]);export{lt as default};
|
@ -0,0 +1 @@
|
||||
import{V as a,b2 as m}from"./index-QV8LhAb2.js";const s=o=>a(o).locale(m()).fromNow();export{s as f};
|
@ -1 +0,0 @@
|
||||
import{Y as a}from"./vendor-TCjgV7Sn.js";import{ad as m}from"./index-k-FO5KmN.js";const s=o=>a(o).locale(m()).fromNow();export{s as f};
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -11,9 +11,8 @@
|
||||
<link rel="apple-touch-icon" href="./pwa-192x192.png" />
|
||||
|
||||
<title>metacubexd</title>
|
||||
<script type="module" crossorigin src="./assets/index-k-FO5KmN.js"></script>
|
||||
<link rel="modulepreload" crossorigin href="./assets/vendor-TCjgV7Sn.js">
|
||||
<link rel="stylesheet" crossorigin href="./assets/index-5ivcdObt.css">
|
||||
<script type="module" crossorigin src="./assets/index-QV8LhAb2.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="./assets/index-BVqcsp-M.css">
|
||||
<link rel="manifest" href="./manifest.webmanifest"><script id="vite-plugin-pwa:register-sw" src="./registerSW.js"></script></head>
|
||||
<body>
|
||||
<noscript>You need to enable JavaScript to run this app.</noscript>
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user