update-02.01
This commit is contained in:
parent
26864d9bb6
commit
107e9cdc4c
|
@ -1,7 +1,7 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=luci-app-openclash
|
PKG_NAME:=luci-app-openclash
|
||||||
PKG_VERSION:=0.44.09
|
PKG_VERSION:=0.44.16
|
||||||
PKG_RELEASE:=beta
|
PKG_RELEASE:=beta
|
||||||
PKG_MAINTAINER:=vernesong <https://github.com/vernesong/OpenClash>
|
PKG_MAINTAINER:=vernesong <https://github.com/vernesong/OpenClash>
|
||||||
|
|
||||||
|
|
|
@ -107,10 +107,10 @@ end
|
||||||
|
|
||||||
local function is_watchdog()
|
local function is_watchdog()
|
||||||
local ps_version = luci.sys.exec("ps --version 2>&1 |grep -c procps-ng |tr -d '\n'")
|
local ps_version = luci.sys.exec("ps --version 2>&1 |grep -c procps-ng |tr -d '\n'")
|
||||||
if ps_version == "0" then
|
if ps_version == "1" then
|
||||||
return luci.sys.call("ps |grep openclash_watchdog.sh |grep -v grep >/dev/null") == 0
|
return luci.sys.call("ps -efw |grep openclash_watchdog.sh |grep -v grep >/dev/null") == 0
|
||||||
else
|
else
|
||||||
return luci.sys.call("ps -ef |grep openclash_watchdog.sh |grep -v grep >/dev/null") == 0
|
return luci.sys.call("ps -w |grep openclash_watchdog.sh |grep -v grep >/dev/null") == 0
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -274,6 +274,10 @@ local function corever()
|
||||||
return uci:get("openclash", "config", "core_version")
|
return uci:get("openclash", "config", "core_version")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function release_branch()
|
||||||
|
return uci:get("openclash", "config", "release_branch")
|
||||||
|
end
|
||||||
|
|
||||||
local function save_corever_branch()
|
local function save_corever_branch()
|
||||||
if luci.http.formvalue("core_ver") then
|
if luci.http.formvalue("core_ver") then
|
||||||
uci:set("openclash", "config", "core_version", luci.http.formvalue("core_ver"))
|
uci:set("openclash", "config", "core_version", luci.http.formvalue("core_ver"))
|
||||||
|
@ -919,6 +923,7 @@ function action_update()
|
||||||
coretuncv = coretuncv(),
|
coretuncv = coretuncv(),
|
||||||
opcv = opcv(),
|
opcv = opcv(),
|
||||||
corever = corever(),
|
corever = corever(),
|
||||||
|
release_branch = release_branch(),
|
||||||
upchecktime = upchecktime(),
|
upchecktime = upchecktime(),
|
||||||
corelv = corelv(),
|
corelv = corelv(),
|
||||||
oplv = oplv();
|
oplv = oplv();
|
||||||
|
|
|
@ -163,6 +163,7 @@ o.rmempty = true
|
||||||
---- de_exkey
|
---- de_exkey
|
||||||
o = s:option(MultiValue, "de_ex_keyword", font_red..bold_on..translate("Exclude Keyword Match Default")..bold_off..font_off)
|
o = s:option(MultiValue, "de_ex_keyword", font_red..bold_on..translate("Exclude Keyword Match Default")..bold_off..font_off)
|
||||||
o.rmempty = true
|
o.rmempty = true
|
||||||
|
o:depends("sub_convert", 0)
|
||||||
o:value("过期时间")
|
o:value("过期时间")
|
||||||
o:value("剩余流量")
|
o:value("剩余流量")
|
||||||
o:value("TG群")
|
o:value("TG群")
|
||||||
|
|
|
@ -95,6 +95,16 @@ o.default = "150"
|
||||||
o.rmempty = true
|
o.rmempty = true
|
||||||
o:depends("type", "url-test")
|
o:depends("type", "url-test")
|
||||||
|
|
||||||
|
-- [[ interface-name ]]--
|
||||||
|
o = s:option(Value, "interface_name", translate("interface-name"))
|
||||||
|
o.rmempty = true
|
||||||
|
o.placeholder = translate("eth0")
|
||||||
|
|
||||||
|
-- [[ routing-mark ]]--
|
||||||
|
o = s:option(Value, "routing_mark", translate("routing-mark"))
|
||||||
|
o.rmempty = true
|
||||||
|
o.placeholder = translate("2333")
|
||||||
|
|
||||||
o = s:option(DynamicList, "other_group", translate("Other Group"))
|
o = s:option(DynamicList, "other_group", translate("Other Group"))
|
||||||
o.description = font_red..bold_on..translate("The Added Proxy Groups Must Exist Except 'DIRECT' & 'REJECT'")..bold_off..font_off
|
o.description = font_red..bold_on..translate("The Added Proxy Groups Must Exist Except 'DIRECT' & 'REJECT'")..bold_off..font_off
|
||||||
uci:foreach("openclash", "groups",
|
uci:foreach("openclash", "groups",
|
||||||
|
|
|
@ -11,7 +11,7 @@ local uci = require "luci.model.uci".cursor()
|
||||||
|
|
||||||
m = SimpleForm("openclash", translate("Other Rule Providers List"))
|
m = SimpleForm("openclash", translate("Other Rule Providers List"))
|
||||||
m.description=translate("Rule Project:").." ConnersHua ( https://github.com/DivineEngine/Profiles )<br/>"..
|
m.description=translate("Rule Project:").." ConnersHua ( https://github.com/DivineEngine/Profiles )<br/>"..
|
||||||
translate("Rule Project:").." lhie1 ( https://github.com/lhie1/Rules )<br/>"..
|
translate("Rule Project:").." lhie1 ( https://github.com/dler-io/Rules )<br/>"..
|
||||||
translate("Rule Project:").." ACL4SSR ( https://github.com/ACL4SSR/ACL4SSR/tree/master )"
|
translate("Rule Project:").." ACL4SSR ( https://github.com/ACL4SSR/ACL4SSR/tree/master )"
|
||||||
m.reset = false
|
m.reset = false
|
||||||
m.submit = false
|
m.submit = false
|
||||||
|
|
|
@ -150,6 +150,11 @@ o = s:option(Value, "psk", translate("Psk"))
|
||||||
o.rmempty = false
|
o.rmempty = false
|
||||||
o:depends("type", "snell")
|
o:depends("type", "snell")
|
||||||
|
|
||||||
|
o = s:option(ListValue, "snell_version", translate("Version"))
|
||||||
|
o:value("2")
|
||||||
|
o:value("3")
|
||||||
|
o:depends("type", "snell")
|
||||||
|
|
||||||
o = s:option(ListValue, "cipher", translate("Encrypt Method"))
|
o = s:option(ListValue, "cipher", translate("Encrypt Method"))
|
||||||
for _, v in ipairs(encrypt_methods_ss) do o:value(v) end
|
for _, v in ipairs(encrypt_methods_ss) do o:value(v) end
|
||||||
o.rmempty = true
|
o.rmempty = true
|
||||||
|
@ -204,6 +209,7 @@ o:depends("type", "ssr")
|
||||||
o:depends("type", "vmess")
|
o:depends("type", "vmess")
|
||||||
o:depends("type", "socks5")
|
o:depends("type", "socks5")
|
||||||
o:depends("type", "trojan")
|
o:depends("type", "trojan")
|
||||||
|
o:depends({type = "snell", snell_version = "3"})
|
||||||
|
|
||||||
o = s:option(ListValue, "obfs", translate("obfs-mode"))
|
o = s:option(ListValue, "obfs", translate("obfs-mode"))
|
||||||
o.rmempty = true
|
o.rmempty = true
|
||||||
|
@ -398,7 +404,7 @@ o = s:option(Value, "interface_name", translate("interface-name"))
|
||||||
o.rmempty = true
|
o.rmempty = true
|
||||||
o.placeholder = translate("eth0")
|
o.placeholder = translate("eth0")
|
||||||
|
|
||||||
-- [[ interface-name ]]--
|
-- [[ routing-mark ]]--
|
||||||
o = s:option(Value, "routing_mark", translate("routing-mark"))
|
o = s:option(Value, "routing_mark", translate("routing-mark"))
|
||||||
o.rmempty = true
|
o.rmempty = true
|
||||||
o.placeholder = translate("2333")
|
o.placeholder = translate("2333")
|
||||||
|
|
|
@ -475,80 +475,122 @@ o = s:taboption("stream_enhance", Flag, "stream_auto_select_netflix", translate(
|
||||||
o.default=1
|
o.default=1
|
||||||
o:depends("stream_auto_select", "1")
|
o:depends("stream_auto_select", "1")
|
||||||
|
|
||||||
o = s:taboption("stream_enhance", Value, "stream_auto_select_group_key_netflix", translate("Netflix Group Filter Keywords"))
|
o = s:taboption("stream_enhance", Value, "stream_auto_select_group_key_netflix", translate("Netflix Group Filter"))
|
||||||
o.default = "Netflix|奈飞"
|
o.default = "Netflix|奈飞"
|
||||||
o.placeholder = "Netflix|奈飞"
|
o.placeholder = "Netflix|奈飞"
|
||||||
o.description = translate("It Will Be Searched According To The Keywords When Auto Search Group Fails")
|
o.description = translate("It Will Be Searched According To The Regex When Auto Search Group Fails")
|
||||||
|
o:depends("stream_auto_select_netflix", "1")
|
||||||
|
|
||||||
|
o = s:taboption("stream_enhance", Value, "stream_auto_select_region_key_netflix", translate("Netflix Unlock Region Filter"))
|
||||||
|
o.default = ""
|
||||||
|
o.placeholder = "HK|SG|TW"
|
||||||
|
o.description = translate("It Will Be Selected Region According To The Regex")
|
||||||
o:depends("stream_auto_select_netflix", "1")
|
o:depends("stream_auto_select_netflix", "1")
|
||||||
|
|
||||||
o = s:taboption("stream_enhance", Flag, "stream_auto_select_disney", translate("Disney Plus"))
|
o = s:taboption("stream_enhance", Flag, "stream_auto_select_disney", translate("Disney Plus"))
|
||||||
o.default=0
|
o.default=0
|
||||||
o:depends("stream_auto_select", "1")
|
o:depends("stream_auto_select", "1")
|
||||||
|
|
||||||
o = s:taboption("stream_enhance", Value, "stream_auto_select_group_key_disney", translate("Disney Plus Group Filter Keywords"))
|
o = s:taboption("stream_enhance", Value, "stream_auto_select_group_key_disney", translate("Disney Plus Group Filter"))
|
||||||
o.default = "Disney|迪士尼"
|
o.default = "Disney|迪士尼"
|
||||||
o.placeholder = "Disney|迪士尼"
|
o.placeholder = "Disney|迪士尼"
|
||||||
o.description = translate("It Will Be Searched According To The Keywords When Auto Search Group Fails")
|
o.description = translate("It Will Be Searched According To The Regex When Auto Search Group Fails")
|
||||||
|
o:depends("stream_auto_select_disney", "1")
|
||||||
|
|
||||||
|
o = s:taboption("stream_enhance", Value, "stream_auto_select_region_key_disney", translate("Disney Plus Unlock Region Filter"))
|
||||||
|
o.default = ""
|
||||||
|
o.placeholder = "HK|SG|TW"
|
||||||
|
o.description = translate("It Will Be Selected Region According To The Regex")
|
||||||
o:depends("stream_auto_select_disney", "1")
|
o:depends("stream_auto_select_disney", "1")
|
||||||
|
|
||||||
o = s:taboption("stream_enhance", Flag, "stream_auto_select_ytb", translate("YouTube Premium"))
|
o = s:taboption("stream_enhance", Flag, "stream_auto_select_ytb", translate("YouTube Premium"))
|
||||||
o.default=0
|
o.default=0
|
||||||
o:depends("stream_auto_select", "1")
|
o:depends("stream_auto_select", "1")
|
||||||
|
|
||||||
o = s:taboption("stream_enhance", Value, "stream_auto_select_group_key_ytb", translate("YouTube Premium Group Filter Keywords"))
|
o = s:taboption("stream_enhance", Value, "stream_auto_select_group_key_ytb", translate("YouTube Premium Group Filter"))
|
||||||
o.default = "YouTube|油管"
|
o.default = "YouTube|油管"
|
||||||
o.placeholder = "YouTube|油管"
|
o.placeholder = "YouTube|油管"
|
||||||
o.description = translate("It Will Be Searched According To The Keywords When Auto Search Group Fails")
|
o.description = translate("It Will Be Searched According To The Regex When Auto Search Group Fails")
|
||||||
|
o:depends("stream_auto_select_ytb", "1")
|
||||||
|
|
||||||
|
o = s:taboption("stream_enhance", Value, "stream_auto_select_region_key_ytb", translate("YouTube Premium Unlock Region Filter"))
|
||||||
|
o.default = ""
|
||||||
|
o.placeholder = "HK|US"
|
||||||
|
o.description = translate("It Will Be Selected Region According To The Regex")
|
||||||
o:depends("stream_auto_select_ytb", "1")
|
o:depends("stream_auto_select_ytb", "1")
|
||||||
|
|
||||||
o = s:taboption("stream_enhance", Flag, "stream_auto_select_prime_video", translate("Amazon Prime Video"))
|
o = s:taboption("stream_enhance", Flag, "stream_auto_select_prime_video", translate("Amazon Prime Video"))
|
||||||
o.default=0
|
o.default=0
|
||||||
o:depends("stream_auto_select", "1")
|
o:depends("stream_auto_select", "1")
|
||||||
|
|
||||||
o = s:taboption("stream_enhance", Value, "stream_auto_select_group_key_prime_video", translate("Amazon Prime Video Group Filter Keywords"))
|
o = s:taboption("stream_enhance", Value, "stream_auto_select_group_key_prime_video", translate("Amazon Prime Video Group Filter"))
|
||||||
o.default = "Amazon|Prime Video"
|
o.default = "Amazon|Prime Video"
|
||||||
o.placeholder = "Amazon|Prime Video"
|
o.placeholder = "Amazon|Prime Video"
|
||||||
o.description = translate("It Will Be Searched According To The Keywords When Auto Search Group Fails")
|
o.description = translate("It Will Be Searched According To The Regex When Auto Search Group Fails")
|
||||||
|
o:depends("stream_auto_select_prime_video", "1")
|
||||||
|
|
||||||
|
o = s:taboption("stream_enhance", Value, "stream_auto_select_region_key_prime_video", translate("Amazon Prime Video Unlock Region Filter"))
|
||||||
|
o.default = ""
|
||||||
|
o.placeholder = "HK|US|SG"
|
||||||
|
o.description = translate("It Will Be Selected Region According To The Regex")
|
||||||
o:depends("stream_auto_select_prime_video", "1")
|
o:depends("stream_auto_select_prime_video", "1")
|
||||||
|
|
||||||
o = s:taboption("stream_enhance", Flag, "stream_auto_select_hbo_now", translate("HBO Now"))
|
o = s:taboption("stream_enhance", Flag, "stream_auto_select_hbo_now", translate("HBO Now"))
|
||||||
o.default=0
|
o.default=0
|
||||||
o:depends("stream_auto_select", "1")
|
o:depends("stream_auto_select", "1")
|
||||||
|
|
||||||
o = s:taboption("stream_enhance", Value, "stream_auto_select_group_key_hbo_now", translate("HBO Now Group Filter Keywords"))
|
o = s:taboption("stream_enhance", Value, "stream_auto_select_group_key_hbo_now", translate("HBO Now Group Filter"))
|
||||||
o.default = "HBO|HBONow|HBO Now"
|
o.default = "HBO|HBONow|HBO Now"
|
||||||
o.placeholder = "HBO|HBONow|HBO Now"
|
o.placeholder = "HBO|HBONow|HBO Now"
|
||||||
o.description = translate("It Will Be Searched According To The Keywords When Auto Search Group Fails")
|
o.description = translate("It Will Be Searched According To The Regex When Auto Search Group Fails")
|
||||||
o:depends("stream_auto_select_hbo_now", "1")
|
o:depends("stream_auto_select_hbo_now", "1")
|
||||||
|
|
||||||
o = s:taboption("stream_enhance", Flag, "stream_auto_select_hbo_max", translate("HBO Max"))
|
o = s:taboption("stream_enhance", Flag, "stream_auto_select_hbo_max", translate("HBO Max"))
|
||||||
o.default=0
|
o.default=0
|
||||||
o:depends("stream_auto_select", "1")
|
o:depends("stream_auto_select", "1")
|
||||||
|
|
||||||
o = s:taboption("stream_enhance", Value, "stream_auto_select_group_key_hbo_max", translate("HBO Max Group Filter Keywords"))
|
o = s:taboption("stream_enhance", Value, "stream_auto_select_group_key_hbo_max", translate("HBO Max Group Filter"))
|
||||||
o.default = "HBO|HBOMax|HBO Max"
|
o.default = "HBO|HBOMax|HBO Max"
|
||||||
o.placeholder = "HBO|HBOMax|HBO Max"
|
o.placeholder = "HBO|HBOMax|HBO Max"
|
||||||
o.description = translate("It Will Be Searched According To The Keywords When Auto Search Group Fails")
|
o.description = translate("It Will Be Searched According To The Regex When Auto Search Group Fails")
|
||||||
|
o:depends("stream_auto_select_hbo_max", "1")
|
||||||
|
|
||||||
|
o = s:taboption("stream_enhance", Value, "stream_auto_select_region_key_hbo_max", translate("HBO Max Unlock Region Filter"))
|
||||||
|
o.default = ""
|
||||||
|
o.placeholder = "US"
|
||||||
|
o.description = translate("It Will Be Selected Region According To The Regex")
|
||||||
o:depends("stream_auto_select_hbo_max", "1")
|
o:depends("stream_auto_select_hbo_max", "1")
|
||||||
|
|
||||||
o = s:taboption("stream_enhance", Flag, "stream_auto_select_hbo_go_asia", translate("HBO GO Asia"))
|
o = s:taboption("stream_enhance", Flag, "stream_auto_select_hbo_go_asia", translate("HBO GO Asia"))
|
||||||
o.default=0
|
o.default=0
|
||||||
o:depends("stream_auto_select", "1")
|
o:depends("stream_auto_select", "1")
|
||||||
|
|
||||||
o = s:taboption("stream_enhance", Value, "stream_auto_select_group_key_hbo_go_asia", translate("HBO GO Asia Group Filter Keywords"))
|
o = s:taboption("stream_enhance", Value, "stream_auto_select_group_key_hbo_go_asia", translate("HBO GO Asia Group Filter"))
|
||||||
o.default = "HBO|HBOGO|HBO GO"
|
o.default = "HBO|HBOGO|HBO GO"
|
||||||
o.placeholder = "HBO|HBOGO|HBO GO"
|
o.placeholder = "HBO|HBOGO|HBO GO"
|
||||||
o.description = translate("It Will Be Searched According To The Keywords When Auto Search Group Fails")
|
o.description = translate("It Will Be Searched According To The Regex When Auto Search Group Fails")
|
||||||
|
o:depends("stream_auto_select_hbo_go_asia", "1")
|
||||||
|
|
||||||
|
o = s:taboption("stream_enhance", Value, "stream_auto_select_region_key_hbo_go_asia", translate("HBO Max Unlock Region Filter"))
|
||||||
|
o.default = ""
|
||||||
|
o.placeholder = "HK|SG|TW"
|
||||||
|
o.description = translate("It Will Be Selected Region According To The Regex")
|
||||||
o:depends("stream_auto_select_hbo_go_asia", "1")
|
o:depends("stream_auto_select_hbo_go_asia", "1")
|
||||||
|
|
||||||
o = s:taboption("stream_enhance", Flag, "stream_auto_select_tvb_anywhere", translate("TVB Anywhere+"))
|
o = s:taboption("stream_enhance", Flag, "stream_auto_select_tvb_anywhere", translate("TVB Anywhere+"))
|
||||||
o.default=0
|
o.default=0
|
||||||
o:depends("stream_auto_select", "1")
|
o:depends("stream_auto_select", "1")
|
||||||
|
|
||||||
o = s:taboption("stream_enhance", Value, "stream_auto_select_group_key_tvb_anywhere", translate("TVB Anywhere+ Group Filter Keywords"))
|
o = s:taboption("stream_enhance", Value, "stream_auto_select_group_key_tvb_anywhere", translate("TVB Anywhere+ Group Filter"))
|
||||||
o.default = "TVB"
|
o.default = "TVB"
|
||||||
o.placeholder = "TVB"
|
o.placeholder = "TVB"
|
||||||
o.description = translate("It Will Be Searched According To The Keywords When Auto Search Group Fails")
|
o.description = translate("It Will Be Searched According To The Regex When Auto Search Group Fails")
|
||||||
|
o:depends("stream_auto_select_tvb_anywhere", "1")
|
||||||
|
|
||||||
|
o = s:taboption("stream_enhance", Value, "stream_auto_select_region_key_tvb_anywhere", translate("HBO Max Unlock Region Filter"))
|
||||||
|
o.default = ""
|
||||||
|
o.placeholder = "HK|SG|TW"
|
||||||
|
o.description = translate("It Will Be Selected Region According To The Regex")
|
||||||
o:depends("stream_auto_select_tvb_anywhere", "1")
|
o:depends("stream_auto_select_tvb_anywhere", "1")
|
||||||
|
|
||||||
---- update Settings
|
---- update Settings
|
||||||
|
|
|
@ -57,11 +57,10 @@ ul{
|
||||||
}
|
}
|
||||||
|
|
||||||
.radio-button{
|
.radio-button{
|
||||||
width: fit-content;
|
width: fit-content;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
margin: 10px auto;
|
margin: 10px auto;
|
||||||
white-space: nowrap;
|
|
||||||
background-color: #d1d1d1;
|
background-color: #d1d1d1;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
}
|
}
|
||||||
|
|
|
@ -383,7 +383,7 @@
|
||||||
XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "state")%>', null, function(x, status) {
|
XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "state")%>', null, function(x, status) {
|
||||||
if ( x && x.status == 200 ) {
|
if ( x && x.status == 200 ) {
|
||||||
ipdb.innerHTML = status.ipdb ? "<b style=color:green>"+status.ipdb+"</b>" : "<b style=color:red>"+"<%:File Not Exist%>"+"</b>";
|
ipdb.innerHTML = status.ipdb ? "<b style=color:green>"+status.ipdb+"</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>";
|
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.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>";
|
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>";
|
chnroute.innerHTML = status.chnroute ? "<b style=color:green>"+status.chnroute+"</b>" : "<b style=color:red>"+"<%:File Not Exist%>"+"</b>";
|
||||||
|
|
|
@ -73,7 +73,7 @@ function sub_info_get_<%=idname%>()
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
var s_<%=idname%> = setTimeout("sub_info_get_<%=idname%>()",1000*10);
|
var s_<%=idname%> = setTimeout("sub_info_get_<%=idname%>()",1000*60);
|
||||||
};
|
};
|
||||||
|
|
||||||
//]]></script>
|
//]]></script>
|
||||||
|
|
|
@ -24,8 +24,8 @@
|
||||||
</select></td>
|
</select></td>
|
||||||
<td width="25%"><%:Release Branch Selected%></td>
|
<td width="25%"><%:Release Branch Selected%></td>
|
||||||
<td width="25%" align="left"><select id="RELEASE_BRANCH">
|
<td width="25%" align="left"><select id="RELEASE_BRANCH">
|
||||||
<option value="master"><%:Master%></option>
|
<option value="master">Master</option>
|
||||||
<option value="dev"><%:Developer%></option>
|
<option value="dev">Developer</option>
|
||||||
</select></td>
|
</select></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -116,6 +116,12 @@
|
||||||
else {
|
else {
|
||||||
core_version.value = "0";
|
core_version.value = "0";
|
||||||
}
|
}
|
||||||
|
if ( status.release_branch != "" ) {
|
||||||
|
release_branch.value = status.release_branch;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
release_branch.value = "master";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -173,7 +179,7 @@
|
||||||
var oplvis = arr_op[0];
|
var oplvis = arr_op[0];
|
||||||
var new_op = arr_op[1];
|
var new_op = arr_op[1];
|
||||||
op_cv.innerHTML = status.opcv ? "<b style=color:green>"+status.opcv+"</b>" : "<b style=color:red><%:Unknown%></b>";
|
op_cv.innerHTML = status.opcv ? "<b style=color:green>"+status.opcv+"</b>" : "<b style=color:red><%:Unknown%></b>";
|
||||||
if ( new_op == "2" ) {
|
if ( new_op == "2" && oplvis != "") {
|
||||||
op_lv.innerHTML = "<b style=color:green>"+oplvis+"<%:<New>%></b>";
|
op_lv.innerHTML = "<b style=color:green>"+oplvis+"<%:<New>%></b>";
|
||||||
}
|
}
|
||||||
else if (oplvis != "") {
|
else if (oplvis != "") {
|
||||||
|
|
|
@ -2474,29 +2474,50 @@ msgstr "展开策略组"
|
||||||
msgid "Automatically Expand The Group When Selected"
|
msgid "Automatically Expand The Group When Selected"
|
||||||
msgstr "自动展开嵌套的策略组并进行解锁检测,启用后可能会造成网络不稳定"
|
msgstr "自动展开嵌套的策略组并进行解锁检测,启用后可能会造成网络不稳定"
|
||||||
|
|
||||||
msgid "Netflix Group Filter Keywords"
|
msgid "Netflix Group Filter"
|
||||||
msgstr "Netflix 策略组筛选关键字"
|
msgstr "Netflix 策略组筛选"
|
||||||
|
|
||||||
msgid "Disney Plus Group Filter Keywords"
|
msgid "Disney Plus Group Filter"
|
||||||
msgstr "Disney Plus 策略组筛选关键字"
|
msgstr "Disney Plus 策略组筛选"
|
||||||
|
|
||||||
msgid "HBO Now Group Filter Keywords"
|
msgid "HBO Now Group Filter"
|
||||||
msgstr "HBO Now 策略组筛选关键字"
|
msgstr "HBO Now 策略组筛选"
|
||||||
|
|
||||||
msgid "HBO Max Group Filter Keywords"
|
msgid "HBO Max Group Filter"
|
||||||
msgstr "HBO Max 策略组筛选关键字"
|
msgstr "HBO Max 策略组筛选"
|
||||||
|
|
||||||
msgid "HBO GO Asia Group Filter Keywords"
|
msgid "HBO GO Asia Group Filter"
|
||||||
msgstr "HBO GO Asia 策略组筛选关键字"
|
msgstr "HBO GO Asia 策略组筛选"
|
||||||
|
|
||||||
msgid "YouTube Premium Group Filter Keywords"
|
msgid "YouTube Premium Group Filter"
|
||||||
msgstr "YouTube Premium 策略组筛选关键字"
|
msgstr "YouTube Premium 策略组筛选"
|
||||||
|
|
||||||
msgid "TVB Anywhere+ Group Filter Keywords"
|
msgid "TVB Anywhere+ Group Filter"
|
||||||
msgstr "TVB Anywhere+ 策略组筛选关键字"
|
msgstr "TVB Anywhere+ 策略组筛选"
|
||||||
|
|
||||||
msgid "Amazon Prime Video Group Filter Keywords"
|
msgid "Amazon Prime Video Group Filter"
|
||||||
msgstr "Amazon Prime Video 策略组筛选关键字"
|
msgstr "Amazon Prime Video 策略组筛选"
|
||||||
|
|
||||||
|
msgid "Netflix Unlock Region Filter"
|
||||||
|
msgstr "Netflix 解锁区域筛选"
|
||||||
|
|
||||||
|
msgid "Disney Plus Unlock Region Filter"
|
||||||
|
msgstr "Disney Plus 解锁区域筛选"
|
||||||
|
|
||||||
|
msgid "HBO Max Unlock Region Filter"
|
||||||
|
msgstr "HBO Max 解锁区域筛选"
|
||||||
|
|
||||||
|
msgid "HBO GO Asia Unlock Region Filter"
|
||||||
|
msgstr "HBO GO Asia 解锁区域筛选"
|
||||||
|
|
||||||
|
msgid "YouTube Premium Unlock Region Filter"
|
||||||
|
msgstr "YouTube Premium 解锁区域筛选"
|
||||||
|
|
||||||
|
msgid "TVB Anywhere+ Unlock Region Filter"
|
||||||
|
msgstr "TVB Anywhere+ 解锁区域筛选"
|
||||||
|
|
||||||
|
msgid "Amazon Prime Video Unlock Region Filter"
|
||||||
|
msgstr "Amazon Prime Video 解锁区域筛选"
|
||||||
|
|
||||||
msgid "Tip: Start Auto Select Proxy For Netflix Unlock..."
|
msgid "Tip: Start Auto Select Proxy For Netflix Unlock..."
|
||||||
msgstr "提示:开始自动选择(检测)Netflix 解锁节点..."
|
msgstr "提示:开始自动选择(检测)Netflix 解锁节点..."
|
||||||
|
@ -2576,8 +2597,11 @@ msgstr "仅支持自制剧!开始进行解锁节点自动选择..."
|
||||||
msgid "unlock test faild! start auto select unlock proxy..."
|
msgid "unlock test faild! start auto select unlock proxy..."
|
||||||
msgstr "解锁检测失败!开始进行解锁节点自动选择..."
|
msgstr "解锁检测失败!开始进行解锁节点自动选择..."
|
||||||
|
|
||||||
msgid "It Will Be Searched According To The Keywords When Auto Search Group Fails"
|
msgid "It Will Be Searched According To The Regex When Auto Search Group Fails"
|
||||||
msgstr "策略组自动获取失败时将会根据关键字进行匹配"
|
msgstr "策略组自动获取失败时将会根据正则表达式进行匹配"
|
||||||
|
|
||||||
|
msgid "It Will Be Selected Region According To The Regex"
|
||||||
|
msgstr "解锁区域将会根据正则表达式进行匹配"
|
||||||
|
|
||||||
msgid "not support unlock!"
|
msgid "not support unlock!"
|
||||||
msgstr "不支持解锁!"
|
msgstr "不支持解锁!"
|
||||||
|
@ -2597,9 +2621,21 @@ msgstr "解锁节点自动选择失败,无可用节点,回退到"
|
||||||
msgid ", area:"
|
msgid ", area:"
|
||||||
msgstr ",区域:"
|
msgstr ",区域:"
|
||||||
|
|
||||||
msgid "failed to search based on keywords and automatically obtain the group, please confirm the validity of the keywords!"
|
msgid "failed to search based on keywords and automatically obtain the group, please confirm the validity of the regex!"
|
||||||
msgstr "根据关键字搜索且自动获取策略组失败,请确认关键字的有效性!"
|
msgstr "根据关键字搜索且自动获取策略组失败,请确认关键字的有效性!"
|
||||||
|
|
||||||
|
msgid "unlock node auto selected failed, no node match the regex, rolled back to other full support node"
|
||||||
|
msgstr "解锁节点自动选择失败,未找到区域匹配的节点,回退到其他区域的解锁节点"
|
||||||
|
|
||||||
|
msgid "full support but not match the regex!"
|
||||||
|
msgstr "完整解锁但区域不匹配!"
|
||||||
|
|
||||||
|
msgid "but not match the regex! the type of group is not select, auto select could not work!"
|
||||||
|
msgstr "完整解锁但区域不匹配!当前策略组类型非 Select,无法进行自动选择!"
|
||||||
|
|
||||||
|
msgid "full support but not match the regex! start auto select unlock proxy..."
|
||||||
|
msgstr "完整解锁但区域不匹配!开始进行解锁节点自动选择..."
|
||||||
|
|
||||||
msgid "DNS Remote"
|
msgid "DNS Remote"
|
||||||
msgstr "*远程域名解析"
|
msgstr "*远程域名解析"
|
||||||
|
|
||||||
|
|
|
@ -1,26 +1,26 @@
|
||||||
#!/bin/sh /etc/rc.common
|
#!/bin/sh /etc/rc.common
|
||||||
# Copyright (c) 2019 vernesong
|
# Copyright (c) 2019 vernesong
|
||||||
|
|
||||||
[ ! -f /etc/openwrt_release ] && exit 0
|
|
||||||
|
|
||||||
. /usr/share/openclash/openclash_ps.sh
|
|
||||||
. /usr/share/openclash/ruby.sh
|
|
||||||
. /usr/share/openclash/log.sh
|
|
||||||
|
|
||||||
START=99
|
START=99
|
||||||
STOP=15
|
STOP=15
|
||||||
|
|
||||||
|
. $IPKG_INSTROOT/usr/share/openclash/openclash_ps.sh
|
||||||
|
. $IPKG_INSTROOT/usr/share/openclash/ruby.sh
|
||||||
|
. $IPKG_INSTROOT/usr/share/openclash/log.sh
|
||||||
|
|
||||||
|
[ -f /etc/openwrt_release ] && {
|
||||||
|
RAW_CONFIG_FILE=$(uci -q get openclash.config.config_path)
|
||||||
|
BACKUP_FILE="/etc/openclash/backup/$(uci -q get openclash.config.config_path |awk -F '/' '{print $5}' 2>/dev/null)"
|
||||||
|
CONFIG_FILE="/etc/openclash/$(uci -q get openclash.config.config_path |awk -F '/' '{print $5}' 2>/dev/null)"
|
||||||
|
}
|
||||||
LOGTIME=$(echo $(date "+%Y-%m-%d %H:%M:%S"))
|
LOGTIME=$(echo $(date "+%Y-%m-%d %H:%M:%S"))
|
||||||
CLASH="/etc/openclash/clash"
|
CLASH="/etc/openclash/clash"
|
||||||
CLASH_CONFIG="/etc/openclash"
|
CLASH_CONFIG="/etc/openclash"
|
||||||
CRON_FILE="/etc/crontabs/root"
|
CRON_FILE="/etc/crontabs/root"
|
||||||
RAW_CONFIG_FILE=$(uci -q get openclash.config.config_path)
|
|
||||||
BACKUP_FILE="/etc/openclash/backup/$(uci -q get openclash.config.config_path |awk -F '/' '{print $5}' 2>/dev/null)"
|
|
||||||
CACHE_PATH_OLD="/etc/openclash/.cache"
|
CACHE_PATH_OLD="/etc/openclash/.cache"
|
||||||
CACHE_PATH="/etc/openclash/cache.db"
|
CACHE_PATH="/etc/openclash/cache.db"
|
||||||
LOG_FILE="/tmp/openclash.log"
|
LOG_FILE="/tmp/openclash.log"
|
||||||
START_LOG="/tmp/openclash_start.log"
|
START_LOG="/tmp/openclash_start.log"
|
||||||
CONFIG_FILE="/etc/openclash/$(uci -q get openclash.config.config_path |awk -F '/' '{print $5}' 2>/dev/null)"
|
|
||||||
RULE_PROVIDER_FILE="/tmp/yaml_rule_provider.yaml"
|
RULE_PROVIDER_FILE="/tmp/yaml_rule_provider.yaml"
|
||||||
DNS_FILE="/tmp/yaml_dns.yaml"
|
DNS_FILE="/tmp/yaml_dns.yaml"
|
||||||
GAME_RULE_FILE="/tmp/yaml_game_rule.yaml"
|
GAME_RULE_FILE="/tmp/yaml_game_rule.yaml"
|
||||||
|
@ -301,7 +301,7 @@ yml_provider_path()
|
||||||
end
|
end
|
||||||
#CDN Replace
|
#CDN Replace
|
||||||
if x['url'] and x['url'] =~ /^https:\/\/raw.githubusercontent.com/ then
|
if x['url'] and x['url'] =~ /^https:\/\/raw.githubusercontent.com/ then
|
||||||
x['url'] = 'https://cdn.jsdelivr.net/gh/' + x['url'].split('/')[3] + '/' + x['url'].split('/')[4] + '@' + x['url'].split(x['url'].split('/')[4] + '/')[1]
|
x['url'] = 'https://cdn.jsdelivr.net/gh/' + x['url'].split('/')[3] + '/' + x['url'].split('/')[4] + '@' + x['url'].split(x['url'].split('/')[2] + '/' + x['url'].split('/')[3] + '/' + x['url'].split('/')[4] + '/')[1]
|
||||||
end
|
end
|
||||||
};
|
};
|
||||||
if not Value_1.eql?(Value['$2']) then
|
if not Value_1.eql?(Value['$2']) then
|
||||||
|
@ -1172,6 +1172,11 @@ do_run_file()
|
||||||
geoip_path="/etc/openclash/Country.mmdb"
|
geoip_path="/etc/openclash/Country.mmdb"
|
||||||
chnr_path="/etc/openclash/china_ip_route.ipset"
|
chnr_path="/etc/openclash/china_ip_route.ipset"
|
||||||
chnr6_path="/etc/openclash/china_ip6_route.ipset"
|
chnr6_path="/etc/openclash/china_ip6_route.ipset"
|
||||||
|
mv "/tmp/etc/openclash/Country.mmdb" "$geoip_path" 2>/dev/null
|
||||||
|
mv "/tmp/etc/openclash/china_ip_route.ipset" "$chnr_path" 2>/dev/null
|
||||||
|
mv "/tmp/etc/openclash/china_ip6_route.ipset" "$chnr6_path" 2>/dev/null
|
||||||
|
mv "/tmp/etc/openclash/core/" "/etc/openclash" 2>/dev/null
|
||||||
|
mv "/tmp/etc/openclash/cache.db" "/etc/openclash/cache.db" 2>/dev/null
|
||||||
rm -rf "/tmp/etc/openclash" 2>/dev/null
|
rm -rf "/tmp/etc/openclash" 2>/dev/null
|
||||||
else
|
else
|
||||||
dev_core_path="/tmp/etc/openclash/core/clash"
|
dev_core_path="/tmp/etc/openclash/core/clash"
|
||||||
|
@ -1179,10 +1184,13 @@ do_run_file()
|
||||||
geoip_path="/tmp/etc/openclash/Country.mmdb"
|
geoip_path="/tmp/etc/openclash/Country.mmdb"
|
||||||
chnr_path="/tmp/etc/openclash/china_ip_route.ipset"
|
chnr_path="/tmp/etc/openclash/china_ip_route.ipset"
|
||||||
chnr6_path="/tmp/etc/openclash/china_ip6_route.ipset"
|
chnr6_path="/tmp/etc/openclash/china_ip6_route.ipset"
|
||||||
rm -rf "/etc/openclash/Country.mmdb" 2>/dev/null
|
CACHE_PATH="/tmp/etc/openclash/cache.db"
|
||||||
rm -rf "/etc/openclash/china_ip_route.ipset" 2>/dev/null
|
mkdir -p /tmp/etc/openclash
|
||||||
rm -rf "/etc/openclash/china_ip6_route.ipset" 2>/dev/null
|
[ ! -h "/etc/openclash/Country.mmdb" ] && mv "/etc/openclash/Country.mmdb" "$geoip_path" 2>/dev/null
|
||||||
rm -rf "/etc/openclash/core" 2>/dev/null
|
[ ! -h "/etc/openclash/china_ip_route.ipset" ] && mv "/etc/openclash/china_ip_route.ipset" "$chnr_path" 2>/dev/null
|
||||||
|
[ ! -h "/etc/openclash/china_ip6_route.ipset" ] && mv "/etc/openclash/china_ip6_route.ipset" "$chnr6_path" 2>/dev/null
|
||||||
|
mv "/etc/openclash/core/" "/tmp/etc/openclash" 2>/dev/null
|
||||||
|
[ ! -h "/etc/openclash/cache.db" ] && mv "/etc/openclash/cache.db" "$CACHE_PATH" 2>/dev/null
|
||||||
fi
|
fi
|
||||||
|
|
||||||
rm -rf "/etc/openclash/clash" 2>/dev/null
|
rm -rf "/etc/openclash/clash" 2>/dev/null
|
||||||
|
@ -1227,11 +1235,40 @@ do_run_file()
|
||||||
core_start_log="Tip: Detected that the Dev Core is not Installed, Use TUN Core to Start..."
|
core_start_log="Tip: Detected that the Dev Core is not Installed, Use TUN Core to Start..."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#权限检查
|
[ ! -f "$CLASH" ] && {
|
||||||
|
LOG_OUT "Tip: Detected that the Core is not Installed, Ready to Download..."
|
||||||
|
rm -rf "/tmp/clash_last_version"
|
||||||
|
/usr/share/openclash/openclash_core.sh "$core_type"
|
||||||
|
if [ "$core_type" == "TUN" ] && [ ! -f "$tun_core_path" ]; then
|
||||||
|
start_fail
|
||||||
|
elif [ -z "$core_type" ] && [ ! -f "$dev_core_path" ]; then
|
||||||
|
start_fail
|
||||||
|
else
|
||||||
|
del_lock
|
||||||
|
restart
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
[ ! -f "$geoip_path" ] && {
|
||||||
|
LOG_OUT "Tip: Detected that the GEOIP Database is not Installed, Ready to Download..."
|
||||||
|
/usr/share/openclash/openclash_ipdb.sh
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ "$china_ip_route" = "1" ] || [ "$china_ip6_route" = "1" ] || [ "$disable_udp_quic" = "1" ]; then
|
||||||
|
if [ ! -f "$chnr_path" ] || [ ! -f "$chnr6_path" ]; then
|
||||||
|
LOG_OUT "Tip: Detected that the Chnroute Cidr List is not Installed, Ready to Download..."
|
||||||
|
/usr/share/openclash/openclash_chnroute.sh
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f "$chnr_path" ] || [ ! -f "$chnr6_path" ] || [ ! -f "$geoip_path" ]; then
|
||||||
|
start_fail
|
||||||
|
fi
|
||||||
|
|
||||||
[ ! -x "$tun_core_path" ] && chmod 4755 "$tun_core_path" 2>/dev/null
|
[ ! -x "$tun_core_path" ] && chmod 4755 "$tun_core_path" 2>/dev/null
|
||||||
[ ! -x "$dev_core_path" ] && chmod 4755 "$dev_core_path" 2>/dev/null
|
[ ! -x "$dev_core_path" ] && chmod 4755 "$dev_core_path" 2>/dev/null
|
||||||
|
|
||||||
#文件检查
|
|
||||||
#fake_ip_filter
|
#fake_ip_filter
|
||||||
if [ "$3" = "fake-ip" ]; then
|
if [ "$3" = "fake-ip" ]; then
|
||||||
if [ ! -f "/tmp/openclash_fake_filter.list" ] || [ -n "$(grep "config servers" /etc/config/openclash 2>/dev/null)" ]; then
|
if [ ! -f "/tmp/openclash_fake_filter.list" ] || [ -n "$(grep "config servers" /etc/config/openclash 2>/dev/null)" ]; then
|
||||||
|
@ -1255,31 +1292,36 @@ do_run_file()
|
||||||
ln -s "$chnr6_path" /etc/openclash/china_ip6_route.ipset 2>/dev/null
|
ln -s "$chnr6_path" /etc/openclash/china_ip6_route.ipset 2>/dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
[ ! -f "$geoip_path" ] && {
|
#Resore history cache
|
||||||
LOG_OUT "Tip: Detected that the GEOIP Database is not Installed, Ready to Download..."
|
if [ -f "$HISTORY_PATH" ] && [ -f "$HISTORY_PATH_OLD" ]; then
|
||||||
nofile=1
|
if [ "$(date -r $HISTORY_PATH +%s)" -ge "$(date -r $HISTORY_PATH_OLD +%s)" ]; then
|
||||||
nohup /usr/share/openclash/openclash_ipdb.sh &
|
cmp -s "$CACHE_PATH" "$HISTORY_PATH"
|
||||||
}
|
if [ "$?" -ne "0" ]; then
|
||||||
|
cp "$HISTORY_PATH" "$CACHE_PATH" 2>/dev/null
|
||||||
[ ! -f "$CLASH" ] && {
|
fi
|
||||||
LOG_OUT "Tip: Detected that the Core is not Installed, Ready to Download..."
|
else
|
||||||
nofile=1
|
cmp -s "$CACHE_PATH_OLD" "$HISTORY_PATH_OLD"
|
||||||
rm -rf "/tmp/clash_last_version"
|
if [ "$?" -ne "0" ]; then
|
||||||
nohup /usr/share/openclash/openclash_core.sh "$core_type" &
|
cp "$HISTORY_PATH_OLD" "$CACHE_PATH_OLD" 2>/dev/null
|
||||||
}
|
fi
|
||||||
|
fi
|
||||||
if [ "$china_ip_route" = "1" ] || [ "$china_ip6_route" = "1" ] || [ "$disable_udp_quic" = "1" ]; then
|
else
|
||||||
if [ ! -f "$chnr_path" ] || [ ! -f "$chnr6_path" ]; then
|
if [ -f "$HISTORY_PATH" ]; then
|
||||||
LOG_OUT "Tip: Detected that the Chnroute Cidr List is not Installed, Ready to Download..."
|
cmp -s "$CACHE_PATH" "$HISTORY_PATH"
|
||||||
nofile=1
|
if [ "$?" -ne "0" ]; then
|
||||||
nohup /usr/share/openclash/openclash_chnroute.sh &
|
cp "$HISTORY_PATH" "$CACHE_PATH" 2>/dev/null
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ -f "$HISTORY_PATH_OLD" ]; then
|
||||||
|
cmp -s "$CACHE_PATH_OLD" "$HISTORY_PATH_OLD"
|
||||||
|
if [ "$?" -ne "0" ]; then
|
||||||
|
cp "$HISTORY_PATH_OLD" "$CACHE_PATH_OLD" 2>/dev/null
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
[ -f "$CACHE_PATH" ] && [ "$small_flash_memory" = "1" ] && {
|
||||||
if [ "$nofile" = "1" ]; then
|
ln -s "$CACHE_PATH" /etc/openclash/cache.db 2>/dev/null
|
||||||
del_lock
|
}
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "$_koolshare" ]; then
|
if [ -z "$_koolshare" ]; then
|
||||||
if ! capsh --is-uid=0 >/dev/null || ! capsh --has-ambient >/dev/null; then
|
if ! capsh --is-uid=0 >/dev/null || ! capsh --has-ambient >/dev/null; then
|
||||||
|
@ -1322,40 +1364,13 @@ start_run_core()
|
||||||
modprobe tun >/dev/null 2>&1
|
modprobe tun >/dev/null 2>&1
|
||||||
check_interface_name
|
check_interface_name
|
||||||
config_reload=$(uci -q get openclash.config.config_reload)
|
config_reload=$(uci -q get openclash.config.config_reload)
|
||||||
#Resore history cache
|
|
||||||
if [ -f "$HISTORY_PATH" ] && [ -f "$HISTORY_PATH_OLD" ]; then
|
|
||||||
if [ "$(date -r $HISTORY_PATH +%s)" -ge "$(date -r $HISTORY_PATH_OLD +%s)" ]; then
|
|
||||||
cmp -s "$CACHE_PATH" "$HISTORY_PATH"
|
|
||||||
if [ "$?" -ne "0" ]; then
|
|
||||||
cp "$HISTORY_PATH" "$CACHE_PATH" 2>/dev/null
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
cmp -s "$CACHE_PATH_OLD" "$HISTORY_PATH_OLD"
|
|
||||||
if [ "$?" -ne "0" ]; then
|
|
||||||
cp "$HISTORY_PATH_OLD" "$CACHE_PATH_OLD" 2>/dev/null
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
if [ -f "$HISTORY_PATH" ]; then
|
|
||||||
cmp -s "$CACHE_PATH" "$HISTORY_PATH"
|
|
||||||
if [ "$?" -ne "0" ]; then
|
|
||||||
cp "$HISTORY_PATH" "$CACHE_PATH" 2>/dev/null
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if [ -f "$HISTORY_PATH_OLD" ]; then
|
|
||||||
cmp -s "$CACHE_PATH_OLD" "$HISTORY_PATH_OLD"
|
|
||||||
if [ "$?" -ne "0" ]; then
|
|
||||||
cp "$HISTORY_PATH_OLD" "$CACHE_PATH_OLD" 2>/dev/null
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if [ -n "$(pidof clash)" ] && [ "$core_type" != "TUN" ] && [ "$config_reload" != "0" ]; then
|
if [ -n "$(pidof clash)" ] && [ "$core_type" != "TUN" ] && [ "$config_reload" != "0" ]; then
|
||||||
curl -s --connect-timeout 5 -m 5 -H 'Content-Type: application/json' -H "Authorization: Bearer ${da_password}" -XPUT http://"$lan_ip":"$cn_port"/configs -d "{\"path\": \"$CONFIG_FILE\"}" 2>/dev/null
|
curl -s --connect-timeout 5 -m 5 -H 'Content-Type: application/json' -H "Authorization: Bearer ${da_password}" -XPUT http://"$lan_ip":"$cn_port"/configs -d "{\"path\": \"$CONFIG_FILE\"}" 2>/dev/null
|
||||||
else
|
else
|
||||||
kill_clash
|
kill_clash
|
||||||
if [ -z "$_koolshare" ]; then
|
if [ -z "$_koolshare" ]; then
|
||||||
#防止赋权失败
|
#防止赋权失败
|
||||||
touch /tmp/openclash.log 2>/dev/null
|
touch "/tmp/openclash.log" 2>/dev/null
|
||||||
chmod o+w /etc/openclash/proxy_provider/* 2>/dev/null
|
chmod o+w /etc/openclash/proxy_provider/* 2>/dev/null
|
||||||
chmod o+w /etc/openclash/rule_provider/* 2>/dev/null
|
chmod o+w /etc/openclash/rule_provider/* 2>/dev/null
|
||||||
chmod o+w /tmp/openclash.log 2>/dev/null
|
chmod o+w /tmp/openclash.log 2>/dev/null
|
||||||
|
@ -1692,7 +1707,7 @@ fi
|
||||||
if [ "$enable_redirect_dns" -eq 1 ] && [ -z "$(iptables -t nat -nL PREROUTING --line-number |grep 'DNS Hijack')"]; then
|
if [ "$enable_redirect_dns" -eq 1 ] && [ -z "$(iptables -t nat -nL PREROUTING --line-number |grep 'DNS Hijack')"]; then
|
||||||
DNSPORT=$(uci -q get dhcp.@dnsmasq[0].port)
|
DNSPORT=$(uci -q get dhcp.@dnsmasq[0].port)
|
||||||
if [ -z "$DNSPORT" ]; then
|
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 "$dns_port")
|
DNSPORT=$(netstat -nlp |grep -E '127.0.0.1:.*dnsmasq' |awk -F '127.0.0.1:' '{print $2}' |awk '{print $1}' |head -1 || echo "$dns_port")
|
||||||
fi
|
fi
|
||||||
iptables -t nat -I PREROUTING -p udp --dport 53 -j REDIRECT --to-ports "$DNSPORT" -m comment --comment "DNS Hijack"
|
iptables -t nat -I PREROUTING -p udp --dport 53 -j REDIRECT --to-ports "$DNSPORT" -m comment --comment "DNS Hijack"
|
||||||
iptables -t nat -I PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports "$DNSPORT" -m comment --comment "DNS Hijack"
|
iptables -t nat -I PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports "$DNSPORT" -m comment --comment "DNS Hijack"
|
||||||
|
@ -1861,6 +1876,10 @@ if [ -z "$en_mode_tun" ] || [ "$en_mode_tun" -eq 2 ]; then
|
||||||
if [ "$en_mode" = "fake-ip" ]; then
|
if [ "$en_mode" = "fake-ip" ]; then
|
||||||
iptables -t nat -N openclash_output
|
iptables -t nat -N openclash_output
|
||||||
iptables -t nat -F openclash_output
|
iptables -t nat -F openclash_output
|
||||||
|
if [ "$enable_redirect_dns" -eq 1 ] && [ -z "$(iptables -t nat -nL OUTPUT --line-number |grep 'DNS Hijack')"]; then
|
||||||
|
iptables -t nat -I OUTPUT -p udp --dport 53 -j REDIRECT --to-ports "$DNSPORT" -m comment --comment "DNS Hijack"
|
||||||
|
iptables -t nat -I OUTPUT -p tcp --dport 53 -j REDIRECT --to-ports "$DNSPORT" -m comment --comment "DNS Hijack"
|
||||||
|
fi
|
||||||
iptables -t nat -A openclash_output -m set --match-set localnetwork dst -j RETURN
|
iptables -t nat -A openclash_output -m set --match-set localnetwork dst -j RETURN
|
||||||
if [ "$intranet_allowed" -eq 1 ]; then
|
if [ "$intranet_allowed" -eq 1 ]; then
|
||||||
iptables -t nat -A openclash_output -p tcp -d 198.18.0.0/16 -j DNAT --to-destination "$lan_ip:$proxy_port"
|
iptables -t nat -A openclash_output -p tcp -d 198.18.0.0/16 -j DNAT --to-destination "$lan_ip:$proxy_port"
|
||||||
|
@ -1870,7 +1889,7 @@ if [ -z "$en_mode_tun" ] || [ "$en_mode_tun" -eq 2 ]; then
|
||||||
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
iptables -t nat -I OUTPUT -j openclash_output >/dev/null 2>&1
|
iptables -t nat -A OUTPUT -j openclash_output >/dev/null 2>&1
|
||||||
fi
|
fi
|
||||||
if [ -n "$en_mode_tun" ]; then
|
if [ -n "$en_mode_tun" ]; then
|
||||||
#TUN模式
|
#TUN模式
|
||||||
|
@ -1902,7 +1921,7 @@ if [ -n "$en_mode_tun" ]; then
|
||||||
elif [ -z "$_koolshare" ]; then
|
elif [ -z "$_koolshare" ]; then
|
||||||
iptables -t mangle -A openclash_output -m owner ! --uid-owner 65534 -p udp -d 198.18.0.0/16 -j MARK --set-mark "$PROXY_FWMARK"
|
iptables -t mangle -A openclash_output -m owner ! --uid-owner 65534 -p udp -d 198.18.0.0/16 -j MARK --set-mark "$PROXY_FWMARK"
|
||||||
fi
|
fi
|
||||||
iptables -t mangle -I OUTPUT -j openclash_output
|
iptables -t mangle -A OUTPUT -j openclash_output
|
||||||
elif [ -z "$_koolshare" ] && [ "$en_mode" = "redir-host" ] && [ "$en_mode_tun" -eq 1 ]; then
|
elif [ -z "$_koolshare" ] && [ "$en_mode" = "redir-host" ] && [ "$en_mode_tun" -eq 1 ]; then
|
||||||
iptables -t mangle -N openclash_output
|
iptables -t mangle -N openclash_output
|
||||||
iptables -t mangle -F openclash_output
|
iptables -t mangle -F openclash_output
|
||||||
|
@ -1913,7 +1932,7 @@ if [ -n "$en_mode_tun" ]; then
|
||||||
iptables -t mangle -A openclash_output -m owner ! --uid-owner 65534 -m set --match-set china_ip_route dst -j RETURN >/dev/null 2>&1
|
iptables -t mangle -A openclash_output -m owner ! --uid-owner 65534 -m set --match-set china_ip_route dst -j RETURN >/dev/null 2>&1
|
||||||
fi
|
fi
|
||||||
iptables -t mangle -A openclash_output -m owner ! --uid-owner 65534 -p tcp -j MARK --set-mark "$PROXY_FWMARK"
|
iptables -t mangle -A openclash_output -m owner ! --uid-owner 65534 -p tcp -j MARK --set-mark "$PROXY_FWMARK"
|
||||||
iptables -t mangle -I OUTPUT -j openclash_output
|
iptables -t mangle -A OUTPUT -j openclash_output
|
||||||
fi
|
fi
|
||||||
|
|
||||||
iptables -t mangle -N openclash
|
iptables -t mangle -N openclash
|
||||||
|
|
|
@ -17,10 +17,10 @@ set_lock
|
||||||
|
|
||||||
if [ "$CKTIME" != "$(grep "CheckTime" $LAST_OPVER 2>/dev/null |awk -F ':' '{print $2}')" ]; then
|
if [ "$CKTIME" != "$(grep "CheckTime" $LAST_OPVER 2>/dev/null |awk -F ':' '{print $2}')" ]; then
|
||||||
if pidof clash >/dev/null; then
|
if pidof clash >/dev/null; then
|
||||||
curl -sL --connect-timeout 10 --retry 2 https://raw.githubusercontent.com/vernesong/OpenClash/"$RELEASE_BRANCH"/core_version -o $LAST_OPVER >/dev/null 2>&1
|
curl -sL --connect-timeout 5 --retry 2 https://raw.githubusercontent.com/vernesong/OpenClash/"$RELEASE_BRANCH"/core_version -o $LAST_OPVER >/dev/null 2>&1
|
||||||
fi
|
fi
|
||||||
if [ "$?" -ne "0" ] || ! pidof clash >/dev/null; then
|
if [ "$?" -ne "0" ] || ! pidof clash >/dev/null; then
|
||||||
curl -sL --connect-timeout 10 --retry 2 https://cdn.jsdelivr.net/gh/vernesong/OpenClash@"$RELEASE_BRANCH"/core_version -o $LAST_OPVER >/dev/null 2>&1
|
curl -sL --connect-timeout 5 --retry 2 https://cdn.jsdelivr.net/gh/vernesong/OpenClash@"$RELEASE_BRANCH"/core_version -o $LAST_OPVER >/dev/null 2>&1
|
||||||
fi
|
fi
|
||||||
if [ "$?" -eq "0" ] && [ -s "$LAST_OPVER" ]; then
|
if [ "$?" -eq "0" ] && [ -s "$LAST_OPVER" ]; then
|
||||||
echo "CheckTime:$CKTIME" >>$LAST_OPVER
|
echo "CheckTime:$CKTIME" >>$LAST_OPVER
|
||||||
|
|
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
|
@ -8,9 +8,9 @@
|
||||||
<meta name="description" content="Clash web port" />
|
<meta name="description" content="Clash web port" />
|
||||||
<!--meta name="external-controller" content="http://secret@example.com:9090"-->
|
<!--meta name="external-controller" content="http://secret@example.com:9090"-->
|
||||||
<title>Clash</title>
|
<title>Clash</title>
|
||||||
<script type="module" crossorigin src="./assets/index.c727f058.js"></script>
|
<script type="module" crossorigin src="./assets/index.049e98b9.js"></script>
|
||||||
<link rel="modulepreload" href="./assets/vendor.5151d57b.js">
|
<link rel="modulepreload" href="./assets/vendor.e882027f.js">
|
||||||
<link rel="stylesheet" href="./assets/index.61b62488.css">
|
<link rel="stylesheet" href="./assets/index.760643c8.css">
|
||||||
<link rel="manifest" href="./manifest.webmanifest"><script>if('serviceWorker' in navigator) {window.addEventListener('load', () => {navigator.serviceWorker.register('./sw.js', { scope: './' })})}</script></head>
|
<link rel="manifest" href="./manifest.webmanifest"><script>if('serviceWorker' in navigator) {window.addEventListener('load', () => {navigator.serviceWorker.register('./sw.js', { scope: './' })})}</script></head>
|
||||||
<body>
|
<body>
|
||||||
<noscript>You need to enable JavaScript to run this app.</noscript>
|
<noscript>You need to enable JavaScript to run this app.</noscript>
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
if(!self.define){let e,s={};const n=(n,i)=>(n=new URL(n+".js",i).href,s[n]||new Promise((s=>{if("document"in self){const e=document.createElement("script");e.src=n,e.onload=s,document.head.appendChild(e)}else e=n,importScripts(n),s()})).then((()=>{let e=s[n];if(!e)throw new Error(`Module ${n} didn’t register its module`);return e})));self.define=(i,t)=>{const r=e||("document"in self?document.currentScript.src:"")||location.href;if(s[r])return;let o={};const l=e=>n(e,r),u={module:{uri:r},exports:o,require:l};s[r]=Promise.all(i.map((e=>u[e]||l(e)))).then((e=>(t(...e),o)))}}define(["./workbox-6659438f"],(function(e){"use strict";self.addEventListener("message",(e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()})),e.precacheAndRoute([{url:"assets/index.61b62488.css",revision:null},{url:"assets/index.c727f058.js",revision:null},{url:"assets/vendor.5151d57b.js",revision:null},{url:"index.html",revision:"6315ca1a6e197faa97288f5bcf8cc706"},{url:"manifest.webmanifest",revision:"d3dd1da0aa7614180924343e65244285"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html")))}));
|
if(!self.define){let e,s={};const n=(n,i)=>(n=new URL(n+".js",i).href,s[n]||new Promise((s=>{if("document"in self){const e=document.createElement("script");e.src=n,e.onload=s,document.head.appendChild(e)}else e=n,importScripts(n),s()})).then((()=>{let e=s[n];if(!e)throw new Error(`Module ${n} didn’t register its module`);return e})));self.define=(i,t)=>{const r=e||("document"in self?document.currentScript.src:"")||location.href;if(s[r])return;let o={};const l=e=>n(e,r),d={module:{uri:r},exports:o,require:l};s[r]=Promise.all(i.map((e=>d[e]||l(e)))).then((e=>(t(...e),o)))}}define(["./workbox-b7e829be"],(function(e){"use strict";self.addEventListener("message",(e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()})),e.precacheAndRoute([{url:"assets/index.049e98b9.js",revision:null},{url:"assets/index.760643c8.css",revision:null},{url:"assets/vendor.e882027f.js",revision:null},{url:"index.html",revision:"4e8629bf048d1d7a769b0e0678133f08"},{url:"manifest.webmanifest",revision:"d3dd1da0aa7614180924343e65244285"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html")))}));
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -462,7 +462,7 @@ sub_info_get()
|
||||||
template_path_encode=$(urlencode "$template_path")
|
template_path_encode=$(urlencode "$template_path")
|
||||||
[ -n "$key_match_param" ] && key_match_param="(?i)$(urlencode "$key_match_param")"
|
[ -n "$key_match_param" ] && key_match_param="(?i)$(urlencode "$key_match_param")"
|
||||||
[ -n "$key_ex_match_param" ] && key_ex_match_param="(?i)$(urlencode "$key_ex_match_param")"
|
[ -n "$key_ex_match_param" ] && key_ex_match_param="(?i)$(urlencode "$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"
|
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&expand=false"
|
||||||
c_address="$convert_address"
|
c_address="$convert_address"
|
||||||
else
|
else
|
||||||
subscribe_url=$address
|
subscribe_url=$address
|
||||||
|
|
|
@ -11,6 +11,13 @@ CPU_MODEL=$(uci get openclash.config.core_version 2>/dev/null)
|
||||||
RELEASE_BRANCH=$(uci -q get openclash.config.release_branch || echo "master")
|
RELEASE_BRANCH=$(uci -q get openclash.config.release_branch || echo "master")
|
||||||
|
|
||||||
[ ! -f "/tmp/clash_last_version" ] && /usr/share/openclash/clash_version.sh 2>/dev/null
|
[ ! -f "/tmp/clash_last_version" ] && /usr/share/openclash/clash_version.sh 2>/dev/null
|
||||||
|
if [ ! -f "/tmp/clash_last_version" ]; then
|
||||||
|
LOG_OUT "Error: 【"$CORE_TYPE"】Core Version Check Error, Please Try Again Later..."
|
||||||
|
sleep 3
|
||||||
|
SLOG_CLEAN
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$small_flash_memory" != "1" ]; then
|
if [ "$small_flash_memory" != "1" ]; then
|
||||||
dev_core_path="/etc/openclash/core/clash"
|
dev_core_path="/etc/openclash/core/clash"
|
||||||
tun_core_path="/etc/openclash/core/clash_tun"
|
tun_core_path="/etc/openclash/core/clash_tun"
|
||||||
|
|
|
@ -26,10 +26,15 @@ fi
|
||||||
|
|
||||||
CONFIG_FILE=$(unify_ps_cfgname)
|
CONFIG_FILE=$(unify_ps_cfgname)
|
||||||
CONFIG_NAME=$(echo "$CONFIG_FILE" |awk -F '/' '{print $4}' 2>/dev/null)
|
CONFIG_NAME=$(echo "$CONFIG_FILE" |awk -F '/' '{print $4}' 2>/dev/null)
|
||||||
|
small_flash_memory=$(uci -q get openclash.config.small_flash_memory)
|
||||||
HISTORY_PATH_OLD="/etc/openclash/history/${CONFIG_NAME%.*}"
|
HISTORY_PATH_OLD="/etc/openclash/history/${CONFIG_NAME%.*}"
|
||||||
HISTORY_PATH="/etc/openclash/history/${CONFIG_NAME%.*}.db"
|
HISTORY_PATH="/etc/openclash/history/${CONFIG_NAME%.*}.db"
|
||||||
CACHE_PATH_OLD="/etc/openclash/.cache"
|
CACHE_PATH_OLD="/etc/openclash/.cache"
|
||||||
CACHE_PATH="/etc/openclash/cache.db"
|
if [ "$small_flash_memory" != "1" ]; then
|
||||||
|
CACHE_PATH="/etc/openclash/cache.db"
|
||||||
|
else
|
||||||
|
CACHE_PATH="/tmp/etc/openclash/cache.db"
|
||||||
|
fi
|
||||||
set_lock
|
set_lock
|
||||||
|
|
||||||
if [ -z "$CONFIG_FILE" ] || [ ! -f "$CONFIG_FILE" ]; then
|
if [ -z "$CONFIG_FILE" ] || [ ! -f "$CONFIG_FILE" ]; then
|
||||||
|
|
|
@ -35,10 +35,10 @@
|
||||||
LOG_OUT "Start Downloading Third Party Rules in Use..."
|
LOG_OUT "Start Downloading Third Party Rules in Use..."
|
||||||
if [ "$rule_name" = "lhie1" ]; then
|
if [ "$rule_name" = "lhie1" ]; then
|
||||||
if pidof clash >/dev/null; then
|
if pidof clash >/dev/null; then
|
||||||
curl -sL --connect-timeout 10 --retry 2 https://raw.githubusercontent.com/lhie1/Rules/master/Clash/Rule.yaml -o /tmp/rules.yaml >/dev/null 2>&1
|
curl -sL --connect-timeout 10 --retry 2 https://raw.githubusercontent.com/dler-io/Rules/master/Clash/Rule.yaml -o /tmp/rules.yaml >/dev/null 2>&1
|
||||||
fi
|
fi
|
||||||
if [ "$?" -ne "0" ] || ! pidof clash >/dev/null; then
|
if [ "$?" -ne "0" ] || ! pidof clash >/dev/null; then
|
||||||
curl -sL --connect-timeout 10 --retry 2 https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Rule.yaml -o /tmp/rules.yaml >/dev/null 2>&1
|
curl -sL --connect-timeout 10 --retry 2 https://cdn.jsdelivr.net/gh/dler-io/Rules@master/Clash/Rule.yaml -o /tmp/rules.yaml >/dev/null 2>&1
|
||||||
fi
|
fi
|
||||||
sed -i '1i rules:' /tmp/rules.yaml
|
sed -i '1i rules:' /tmp/rules.yaml
|
||||||
elif [ "$rule_name" = "ConnersHua" ]; then
|
elif [ "$rule_name" = "ConnersHua" ]; then
|
||||||
|
|
|
@ -8,15 +8,14 @@ local uci = require("luci.model.uci").cursor()
|
||||||
local fs = require "luci.openclash"
|
local fs = require "luci.openclash"
|
||||||
local json = require "luci.jsonc"
|
local json = require "luci.jsonc"
|
||||||
local UA = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36"
|
local UA = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36"
|
||||||
local filmId = 81215567
|
local filmId = 70143836
|
||||||
local type = arg[1]
|
local type = arg[1]
|
||||||
local enable = tonumber(uci:get("openclash", "config", "stream_auto_select")) or 0
|
local enable = tonumber(uci:get("openclash", "config", "stream_auto_select")) or 0
|
||||||
local now_name, group_name, group_type, group_show, status
|
local now_name, group_name, group_type, group_show, status
|
||||||
local groups = {}
|
local groups = {}
|
||||||
local proxies = {}
|
local proxies = {}
|
||||||
|
|
||||||
if enable == 0 then os.exit(0) end
|
if enable == 0 or not type then os.exit(0) end
|
||||||
if not type then os.exit(0) end
|
|
||||||
|
|
||||||
function unlock_auto_select()
|
function unlock_auto_select()
|
||||||
local key_group, region, now, proxy, group_match, proxy_default, auto_get_group, info, group_now
|
local key_group, region, now, proxy, group_match, proxy_default, auto_get_group, info, group_now
|
||||||
|
@ -24,10 +23,11 @@ function unlock_auto_select()
|
||||||
local passwd = uci:get("openclash", "config", "dashboard_password") or ""
|
local passwd = uci:get("openclash", "config", "dashboard_password") or ""
|
||||||
local ip = luci.sys.exec("uci -q get network.lan.ipaddr |awk -F '/' '{print $1}' 2>/dev/null |tr -d '\n'")
|
local ip = luci.sys.exec("uci -q get network.lan.ipaddr |awk -F '/' '{print $1}' 2>/dev/null |tr -d '\n'")
|
||||||
local original = {}
|
local original = {}
|
||||||
local key_groups = {}
|
local other_region_unlock = {}
|
||||||
local tested_proxy = {}
|
local tested_proxy = {}
|
||||||
|
local fallback_select = {}
|
||||||
local gorup_i18 = "Group:"
|
local gorup_i18 = "Group:"
|
||||||
local no_group_find = "failed to search based on keywords and automatically obtain the group, please confirm the validity of the keywords!"
|
local no_group_find = "failed to search based on keywords and automatically obtain the group, please confirm the validity of the regex!"
|
||||||
local full_support_no_area = "full support."
|
local full_support_no_area = "full support."
|
||||||
local full_support = "full support, area:"
|
local full_support = "full support, area:"
|
||||||
local only_original = "only support homemade!"
|
local only_original = "only support homemade!"
|
||||||
|
@ -43,6 +43,10 @@ function unlock_auto_select()
|
||||||
local no_unlock_test_start = "not support unlock! start auto select unlock proxy..."
|
local no_unlock_test_start = "not support unlock! start auto select unlock proxy..."
|
||||||
local faild_test_start = "unlock test faild! start auto select unlock proxy..."
|
local faild_test_start = "unlock test faild! start auto select unlock proxy..."
|
||||||
local area_i18 = ", area:"
|
local area_i18 = ", area:"
|
||||||
|
local select_faild_other_region = "unlock node auto selected failed, no node match the regex, rolled back to other full support node"
|
||||||
|
local other_region_unlock_test = "full support but not match the regex!"
|
||||||
|
local other_region_unlock_no_select = "but not match the regex! the type of group is not select, auto select could not work!"
|
||||||
|
local other_region_unlock_test_start = "full support but not match the regex! start auto select unlock proxy..."
|
||||||
|
|
||||||
if not ip or ip == "" then
|
if not ip or ip == "" then
|
||||||
ip = luci.sys.exec("ip addr show 2>/dev/null | grep -w 'inet' | grep 'global' | grep 'brd' | grep -Eo 'inet [0-9\.]+' | awk '{print $2}' | head -n 1 | tr -d '\n'")
|
ip = luci.sys.exec("ip addr show 2>/dev/null | grep -w 'inet' | grep 'global' | grep 'brd' | grep -Eo 'inet [0-9\.]+' | awk '{print $2}' | head -n 1 | tr -d '\n'")
|
||||||
|
@ -82,10 +86,9 @@ function unlock_auto_select()
|
||||||
elseif type == "Amazon Prime Video" then
|
elseif type == "Amazon Prime Video" then
|
||||||
key_group = uci:get("openclash", "config", "stream_auto_select_group_key_prime_video") or "prime video|amazon"
|
key_group = uci:get("openclash", "config", "stream_auto_select_group_key_prime_video") or "prime video|amazon"
|
||||||
end
|
end
|
||||||
string.gsub(key_group, '[^%|]+', function(w) table.insert(key_groups, w) end)
|
if not key_group then key_group = type end
|
||||||
if #key_groups == 0 then table.insert(key_groups, type) end
|
|
||||||
else
|
else
|
||||||
table.insert(key_groups, auto_get_group)
|
key_group = "^" .. auto_get_group .. "$"
|
||||||
end
|
end
|
||||||
|
|
||||||
--save group name
|
--save group name
|
||||||
|
@ -98,189 +101,206 @@ function unlock_auto_select()
|
||||||
group_match = false
|
group_match = false
|
||||||
for _, value in pairs(info.proxies) do
|
for _, value in pairs(info.proxies) do
|
||||||
--match only once
|
--match only once
|
||||||
for g = 1, #key_groups do
|
while true do
|
||||||
while true do
|
--find group
|
||||||
--find group
|
if not datamatch(value.name, key_group) then
|
||||||
if not string.find(string.lower(value.name), string.lower(key_groups[g])) then
|
break
|
||||||
break
|
else
|
||||||
|
--get groups info
|
||||||
|
get_proxy(info, value.name, value.name)
|
||||||
|
table.insert(tested_proxy, now_name)
|
||||||
|
group_match = true
|
||||||
|
--test now proxy
|
||||||
|
region = proxy_unlock_test()
|
||||||
|
if table_include(groups, now_name) then
|
||||||
|
now = os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..group_show.."】"
|
||||||
else
|
else
|
||||||
--get groups info
|
now = os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..group_show.." ➟ "..now_name.."】"
|
||||||
get_proxy(info, value.name, value.name)
|
end
|
||||||
table.insert(tested_proxy, now_name)
|
if status ~= 2 then
|
||||||
group_match = true
|
os.execute("sleep 3")
|
||||||
--test now proxy
|
|
||||||
region = proxy_unlock_test()
|
region = proxy_unlock_test()
|
||||||
if table_include(groups, now_name) then
|
end
|
||||||
now = os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..group_show.."】"
|
if status == 2 then
|
||||||
|
if region and region ~= "" then
|
||||||
|
print(now..full_support.."【"..region.."】")
|
||||||
else
|
else
|
||||||
now = os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..group_show.." ➟ "..now_name.."】"
|
print(now..full_support_no_area)
|
||||||
end
|
end
|
||||||
if status ~= 2 then
|
break
|
||||||
os.execute("sleep 3")
|
elseif status == 3 then
|
||||||
region = proxy_unlock_test()
|
table.insert(other_region_unlock, {get_group_now(info, value.name), group_name, now_name})
|
||||||
end
|
print(now..other_region_unlock_test_start)
|
||||||
if status == 2 then
|
elseif status == 1 then
|
||||||
if region then
|
table.insert(original, {get_group_now(info, value.name), group_name, now_name})
|
||||||
print(now..full_support.."【"..region.."】")
|
if type == "Netflix" then
|
||||||
else
|
print(now..original_test_start)
|
||||||
print(now..full_support_no_area)
|
|
||||||
end
|
|
||||||
break
|
|
||||||
elseif status == 1 then
|
|
||||||
table.insert(original, {get_group_now(info, value.name), group_name, now_name})
|
|
||||||
if type == "Netflix" then
|
|
||||||
print(now..original_test_start)
|
|
||||||
else
|
|
||||||
print(now..no_unlock_test_start)
|
|
||||||
end
|
|
||||||
else
|
else
|
||||||
print(now..faild_test_start)
|
print(now..no_unlock_test_start)
|
||||||
end
|
end
|
||||||
|
else
|
||||||
|
print(now..faild_test_start)
|
||||||
|
end
|
||||||
|
|
||||||
--find new unlock
|
--find new unlock
|
||||||
if value.type == "Selector" then
|
if value.type == "Selector" then
|
||||||
--loop proxy test
|
--loop proxy test
|
||||||
for i = 1, #(value.all) do
|
for i = 1, #(value.all) do
|
||||||
--save group current selected
|
--save group current selected
|
||||||
proxy_default = value.now
|
proxy_default = value.now
|
||||||
while true do
|
while true do
|
||||||
if value.all[i] == "REJECT" or value.all[i] == "DIRECT" then
|
if value.all[i] == "REJECT" or value.all[i] == "DIRECT" then
|
||||||
break
|
break
|
||||||
else
|
else
|
||||||
get_proxy(info, value.all[i], value.name)
|
get_proxy(info, value.all[i], value.name)
|
||||||
if group_type == "Selector" then
|
if group_type == "Selector" then
|
||||||
if group_name == value.all[i] then
|
if group_name == value.all[i] then
|
||||||
luci.sys.exec(string.format("curl -sL -m 3 --retry 2 -w %%{http_code} -o /dev/null -H 'Authorization: Bearer %s' -H 'Content-Type:application/json' -X PUT -d '{\"name\":\"%s\"}' http://%s:%s/proxies/%s", passwd, group_name, ip, port, urlencode(value.name)))
|
luci.sys.exec(string.format("curl -sL -m 3 --retry 2 -w %%{http_code} -o /dev/null -H 'Authorization: Bearer %s' -H 'Content-Type:application/json' -X PUT -d '{\"name\":\"%s\"}' http://%s:%s/proxies/%s", passwd, group_name, ip, port, urlencode(value.name)))
|
||||||
|
end
|
||||||
|
for p = 1, #(proxies) do
|
||||||
|
proxy = proxies[p]
|
||||||
|
if table_include(groups, proxy) then
|
||||||
|
group_now = get_group_now(info, proxy)
|
||||||
|
now = os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..group_show.." ➟ "..group_now.."】"
|
||||||
|
else
|
||||||
|
now = os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..group_show.." ➟ "..proxy.."】"
|
||||||
end
|
end
|
||||||
for p = 1, #(proxies) do
|
--skip tested proxy
|
||||||
proxy = proxies[p]
|
|
||||||
if table_include(groups, proxy) then
|
|
||||||
group_now = get_group_now(info, proxy)
|
|
||||||
now = os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..group_show.." ➟ "..group_now.."】"
|
|
||||||
else
|
|
||||||
now = os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..group_show.." ➟ "..proxy.."】"
|
|
||||||
end
|
|
||||||
--skip tested proxy
|
|
||||||
while true do
|
|
||||||
if table_include(tested_proxy, proxy) then
|
|
||||||
break
|
|
||||||
else
|
|
||||||
table.insert(tested_proxy, proxy)
|
|
||||||
end
|
|
||||||
while true do
|
|
||||||
if proxy == "REJECT" or proxy == "DIRECT" then
|
|
||||||
break
|
|
||||||
else
|
|
||||||
luci.sys.exec(string.format("curl -sL -m 3 --retry 2 -w %%{http_code} -o /dev/null -H 'Authorization: Bearer %s' -H 'Content-Type:application/json' -X PUT -d '{\"name\":\"%s\"}' http://%s:%s/proxies/%s", passwd, proxy, ip, port, urlencode(group_name)))
|
|
||||||
region = proxy_unlock_test()
|
|
||||||
if status == 2 then
|
|
||||||
if region then
|
|
||||||
print(now..full_support.."【"..region.."】")
|
|
||||||
print(os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..value.name.."】"..select_success.."【"..proxy.."】"..area_i18.."【"..region.."】")
|
|
||||||
else
|
|
||||||
print(now..full_support_no_area)
|
|
||||||
print(os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..value.name.."】"..select_success.."【"..proxy.."】")
|
|
||||||
end
|
|
||||||
elseif status == 1 then
|
|
||||||
table.insert(original, {value.all[i], group_name, proxy})
|
|
||||||
if type == "Netflix" then
|
|
||||||
print(now..only_original)
|
|
||||||
else
|
|
||||||
print(now..no_unlock)
|
|
||||||
end
|
|
||||||
else
|
|
||||||
print(now..test_faild)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
break
|
|
||||||
end
|
|
||||||
if status == 2 then
|
|
||||||
break
|
|
||||||
elseif p == #(proxies) and #(proxies) ~= 1 then
|
|
||||||
luci.sys.exec(string.format("curl -sL -m 3 --retry 2 -w %%{http_code} -o /dev/null -H 'Authorization: Bearer %s' -H 'Content-Type:application/json' -X PUT -d '{\"name\":\"%s\"}' http://%s:%s/proxies/%s", passwd, now_name, ip, port, urlencode(group_name)))
|
|
||||||
end
|
|
||||||
break
|
|
||||||
end
|
|
||||||
if status == 2 then break end
|
|
||||||
end
|
|
||||||
else
|
|
||||||
--only group expand
|
|
||||||
luci.sys.exec(string.format("curl -sL -m 3 --retry 2 -w %%{http_code} -o /dev/null -H 'Authorization: Bearer %s' -H 'Content-Type:application/json' -X PUT -d '{\"name\":\"%s\"}' http://%s:%s/proxies/%s", passwd, value.all[i], ip, port, urlencode(group_name)))
|
|
||||||
while true do
|
while true do
|
||||||
if table_include(tested_proxy, now_name) then
|
if table_include(tested_proxy, proxy) then
|
||||||
break
|
break
|
||||||
else
|
else
|
||||||
table.insert(tested_proxy, now_name)
|
table.insert(tested_proxy, proxy)
|
||||||
end
|
end
|
||||||
region = proxy_unlock_test()
|
while true do
|
||||||
if table_include(groups, now_name) then
|
if proxy == "REJECT" or proxy == "DIRECT" then
|
||||||
now = os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..group_show.."】"
|
break
|
||||||
else
|
else
|
||||||
now = os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..group_show.." ➟ "..now_name.."】"
|
luci.sys.exec(string.format("curl -sL -m 3 --retry 2 -w %%{http_code} -o /dev/null -H 'Authorization: Bearer %s' -H 'Content-Type:application/json' -X PUT -d '{\"name\":\"%s\"}' http://%s:%s/proxies/%s", passwd, proxy, ip, port, urlencode(group_name)))
|
||||||
end
|
region = proxy_unlock_test()
|
||||||
if status == 2 then
|
if status == 2 then
|
||||||
if region then
|
if region and region ~= "" then
|
||||||
print(now..full_support.."【"..region.."】")
|
print(now..full_support.."【"..region.."】")
|
||||||
print(os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..value.name.."】"..select_success.."【"..get_group_now(info, now_name).."】"..area_i18.."【"..region.."】")
|
print(os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..value.name.."】"..select_success.."【"..proxy.."】"..area_i18.."【"..region.."】")
|
||||||
|
else
|
||||||
|
print(now..full_support_no_area)
|
||||||
|
print(os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..value.name.."】"..select_success.."【"..proxy.."】")
|
||||||
|
end
|
||||||
|
elseif status == 3 then
|
||||||
|
table.insert(other_region_unlock, {value.all[i], group_name, proxy})
|
||||||
|
print(now..other_region_unlock_test)
|
||||||
|
elseif status == 1 then
|
||||||
|
table.insert(original, {value.all[i], group_name, proxy})
|
||||||
|
if type == "Netflix" then
|
||||||
|
print(now..only_original)
|
||||||
|
else
|
||||||
|
print(now..no_unlock)
|
||||||
|
end
|
||||||
else
|
else
|
||||||
print(now..full_support_no_area)
|
print(now..test_faild)
|
||||||
print(os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..value.name.."】"..select_success.."【"..get_group_now(info, now_name).."】")
|
|
||||||
end
|
end
|
||||||
elseif status == 1 then
|
|
||||||
table.insert(original, {value.all[i], group_name, value.all[i]})
|
|
||||||
if type == "Netflix" then
|
|
||||||
print(now..original_no_select)
|
|
||||||
else
|
|
||||||
print(now..no_unlock_no_select)
|
|
||||||
end
|
|
||||||
else
|
|
||||||
print(now..faild_no_select)
|
|
||||||
end
|
end
|
||||||
|
break
|
||||||
|
end
|
||||||
|
if status == 2 then
|
||||||
|
break
|
||||||
|
elseif p == #(proxies) and #(proxies) ~= 1 then
|
||||||
|
luci.sys.exec(string.format("curl -sL -m 3 --retry 2 -w %%{http_code} -o /dev/null -H 'Authorization: Bearer %s' -H 'Content-Type:application/json' -X PUT -d '{\"name\":\"%s\"}' http://%s:%s/proxies/%s", passwd, now_name, ip, port, urlencode(group_name)))
|
||||||
|
end
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
|
if status == 2 then break end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
--only group expand
|
||||||
|
luci.sys.exec(string.format("curl -sL -m 3 --retry 2 -w %%{http_code} -o /dev/null -H 'Authorization: Bearer %s' -H 'Content-Type:application/json' -X PUT -d '{\"name\":\"%s\"}' http://%s:%s/proxies/%s", passwd, value.all[i], ip, port, urlencode(group_name)))
|
||||||
|
while true do
|
||||||
|
if table_include(tested_proxy, now_name) then
|
||||||
|
break
|
||||||
|
else
|
||||||
|
table.insert(tested_proxy, now_name)
|
||||||
|
end
|
||||||
|
region = proxy_unlock_test()
|
||||||
|
if table_include(groups, now_name) then
|
||||||
|
now = os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..group_show.."】"
|
||||||
|
else
|
||||||
|
now = os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..group_show.." ➟ "..now_name.."】"
|
||||||
|
end
|
||||||
|
if status == 2 then
|
||||||
|
if region and region ~= "" then
|
||||||
|
print(now..full_support.."【"..region.."】")
|
||||||
|
print(os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..value.name.."】"..select_success.."【"..get_group_now(info, now_name).."】"..area_i18.."【"..region.."】")
|
||||||
|
else
|
||||||
|
print(now..full_support_no_area)
|
||||||
|
print(os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..value.name.."】"..select_success.."【"..get_group_now(info, now_name).."】")
|
||||||
|
end
|
||||||
|
elseif status == 3 then
|
||||||
|
table.insert(other_region_unlock, {value.all[i], group_name, value.all[i]})
|
||||||
|
print(now..full_support.."【"..region.."】"..other_region_unlock_no_select)
|
||||||
|
elseif status == 1 then
|
||||||
|
table.insert(original, {value.all[i], group_name, value.all[i]})
|
||||||
|
if type == "Netflix" then
|
||||||
|
print(now..original_no_select)
|
||||||
|
else
|
||||||
|
print(now..no_unlock_no_select)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
print(now..faild_no_select)
|
||||||
|
end
|
||||||
|
break
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
break
|
|
||||||
end
|
|
||||||
if status == 2 then
|
|
||||||
break
|
|
||||||
elseif i == #(value.all) and #original > 0 then
|
|
||||||
for k, v in pairs(original) do
|
|
||||||
luci.sys.exec(string.format("curl -sL -m 3 --retry 2 -w %%{http_code} -o /dev/null -H 'Authorization: Bearer %s' -H 'Content-Type:application/json' -X PUT -d '{\"name\":\"%s\"}' http://%s:%s/proxies/%s", passwd, v[1], ip, port, urlencode(value.name)))
|
|
||||||
luci.sys.exec(string.format("curl -sL -m 3 --retry 2 -w %%{http_code} -o /dev/null -H 'Authorization: Bearer %s' -H 'Content-Type:application/json' -X PUT -d '{\"name\":\"%s\"}' http://%s:%s/proxies/%s", passwd, v[3], ip, port, urlencode(v[2])))
|
|
||||||
print(os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..value.name.."】"..select_faild.."【"..v[3].."】")
|
|
||||||
break
|
|
||||||
end
|
|
||||||
elseif i == #(value.all) then
|
|
||||||
luci.sys.exec(string.format("curl -sL -m 3 --retry 2 -w %%{http_code} -o /dev/null -H 'Authorization: Bearer %s' -H 'Content-Type:application/json' -X PUT -d '{\"name\":\"%s\"}' http://%s:%s/proxies/%s", passwd, proxy_default, ip, port, urlencode(value.name)))
|
|
||||||
print(os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..value.name.."】"..select_faild.."【"..proxy_default.."】")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
else
|
|
||||||
region = proxy_unlock_test()
|
|
||||||
if status == 2 then
|
|
||||||
if region then
|
|
||||||
print(now..full_support.."【"..region.."】")
|
|
||||||
print(os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..value.name.."】"..select_success.."【"..get_group_now(info, value.name).."】"..area_i18.."【"..region.."】")
|
|
||||||
else
|
|
||||||
print(now..full_support_no_area)
|
|
||||||
print(os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..value.name.."】"..select_success.."【"..get_group_now(info, value.name).."】")
|
|
||||||
end
|
end
|
||||||
break
|
break
|
||||||
elseif status == 1 then
|
end
|
||||||
if type == "Netflix" then
|
if status == 2 then
|
||||||
print(now..original_no_select)
|
break
|
||||||
|
elseif i == #(value.all) and (#original > 0 or #other_region_unlock > 0) then
|
||||||
|
if #other_region_unlock > 0 then
|
||||||
|
fallback_select = other_region_unlock
|
||||||
else
|
else
|
||||||
print(now..no_unlock_no_select)
|
fallback_select = original
|
||||||
end
|
end
|
||||||
else
|
for k, v in pairs(fallback_select) do
|
||||||
print(now..faild_no_select)
|
luci.sys.exec(string.format("curl -sL -m 3 --retry 2 -w %%{http_code} -o /dev/null -H 'Authorization: Bearer %s' -H 'Content-Type:application/json' -X PUT -d '{\"name\":\"%s\"}' http://%s:%s/proxies/%s", passwd, v[1], ip, port, urlencode(value.name)))
|
||||||
|
luci.sys.exec(string.format("curl -sL -m 3 --retry 2 -w %%{http_code} -o /dev/null -H 'Authorization: Bearer %s' -H 'Content-Type:application/json' -X PUT -d '{\"name\":\"%s\"}' http://%s:%s/proxies/%s", passwd, v[3], ip, port, urlencode(v[2])))
|
||||||
|
if #other_region_unlock > 0 then
|
||||||
|
print(os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..value.name.."】"..select_faild_other_region.."【"..v[3].."】")
|
||||||
|
else
|
||||||
|
print(os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..value.name.."】"..select_faild.."【"..v[3].."】")
|
||||||
|
end
|
||||||
|
break
|
||||||
|
end
|
||||||
|
elseif i == #(value.all) then
|
||||||
|
luci.sys.exec(string.format("curl -sL -m 3 --retry 2 -w %%{http_code} -o /dev/null -H 'Authorization: Bearer %s' -H 'Content-Type:application/json' -X PUT -d '{\"name\":\"%s\"}' http://%s:%s/proxies/%s", passwd, proxy_default, ip, port, urlencode(value.name)))
|
||||||
|
print(os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..value.name.."】"..select_faild.."【"..proxy_default.."】")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
else
|
||||||
|
region = proxy_unlock_test()
|
||||||
|
if status == 2 then
|
||||||
|
if region and region ~= "" then
|
||||||
|
print(now..full_support.."【"..region.."】")
|
||||||
|
print(os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..value.name.."】"..select_success.."【"..get_group_now(info, value.name).."】"..area_i18.."【"..region.."】")
|
||||||
|
else
|
||||||
|
print(now..full_support_no_area)
|
||||||
|
print(os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..value.name.."】"..select_success.."【"..get_group_now(info, value.name).."】")
|
||||||
|
end
|
||||||
|
break
|
||||||
|
elseif status == 3 then
|
||||||
|
print(now..full_support.."【"..region.."】"..other_region_unlock_no_select)
|
||||||
|
elseif status == 1 then
|
||||||
|
if type == "Netflix" then
|
||||||
|
print(now..original_no_select)
|
||||||
|
else
|
||||||
|
print(now..no_unlock_no_select)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
print(now..faild_no_select)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
break
|
|
||||||
end
|
end
|
||||||
if group_match then break end
|
break
|
||||||
end
|
end
|
||||||
if auto_get_group and group_match then break end
|
if auto_get_group and group_match then break end
|
||||||
if status == 2 then break end
|
if status == 2 then break end
|
||||||
|
@ -511,6 +531,11 @@ function urlencode(data)
|
||||||
return luci.sys.exec(string.format("echo %s |sed 's/+/%%20/g'", string.match(data, "/%?(.+)")))
|
return luci.sys.exec(string.format("echo %s |sed 's/+/%%20/g'", string.match(data, "/%?(.+)")))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function datamatch(data, regex)
|
||||||
|
local result = luci.sys.exec(string.format('ruby -E UTF-8 -e "x=\'%s\'; if x =~ /%s/i then print \'true\' else print \'false\' end"', data, regex))
|
||||||
|
if result == "true" then return true else return false end
|
||||||
|
end
|
||||||
|
|
||||||
function netflix_unlock_test()
|
function netflix_unlock_test()
|
||||||
status = 0
|
status = 0
|
||||||
local url = "https://www.netflix.com/title/"..filmId
|
local url = "https://www.netflix.com/title/"..filmId
|
||||||
|
@ -518,6 +543,7 @@ function netflix_unlock_test()
|
||||||
local info = luci.sys.exec(string.format('curl -sLI -m 3 --retry 2 -o /dev/null -w %%{json} -H "Content-Type: application/json" -H "%s" -XGET %s', headers, url))
|
local info = luci.sys.exec(string.format('curl -sLI -m 3 --retry 2 -o /dev/null -w %%{json} -H "Content-Type: application/json" -H "%s" -XGET %s', headers, url))
|
||||||
local result = {}
|
local result = {}
|
||||||
local region
|
local region
|
||||||
|
local regex = uci:get("openclash", "config", "stream_auto_select_region_key_netflix") or ""
|
||||||
if info then
|
if info then
|
||||||
info = json.parse(info)
|
info = json.parse(info)
|
||||||
end
|
end
|
||||||
|
@ -527,8 +553,11 @@ function netflix_unlock_test()
|
||||||
string.gsub(info.url_effective, '[^/]+', function(w) table.insert(result, w) end)
|
string.gsub(info.url_effective, '[^/]+', function(w) table.insert(result, w) end)
|
||||||
region = string.upper(string.match(result[3], "^%a+"))
|
region = string.upper(string.match(result[3], "^%a+"))
|
||||||
if region == "TITLE" then region = "US" end
|
if region == "TITLE" then region = "US" end
|
||||||
|
if not datamatch(region, regex) then
|
||||||
|
status = 3
|
||||||
|
end
|
||||||
return region
|
return region
|
||||||
elseif info.http_code == 404 then
|
elseif info.http_code == 404 or info.http_code == 403 then
|
||||||
status = 1
|
status = 1
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -543,12 +572,16 @@ function disney_unlock_test()
|
||||||
local auth = '"grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Atoken-exchange&latitude=0&longitude=0&platform=browser&subject_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJiNDAzMjU0NS0yYmE2LTRiZGMtOGFlOS04ZWI3YTY2NzBjMTIiLCJhdWQiOiJ1cm46YmFtdGVjaDpzZXJ2aWNlOnRva2VuIiwibmJmIjoxNjIyNjM3OTE2LCJpc3MiOiJ1cm46YmFtdGVjaDpzZXJ2aWNlOmRldmljZSIsImV4cCI6MjQ4NjYzNzkxNiwiaWF0IjoxNjIyNjM3OTE2LCJqdGkiOiI0ZDUzMTIxMS0zMDJmLTQyNDctOWQ0ZC1lNDQ3MTFmMzNlZjkifQ.g-QUcXNzMJ8DwC9JqZbbkYUSKkB1p4JGW77OON5IwNUcTGTNRLyVIiR8mO6HFyShovsR38HRQGVa51b15iAmXg&subject_token_type=urn%3Abamtech%3Aparams%3Aoauth%3Atoken-type%3Adevice"'
|
local auth = '"grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Atoken-exchange&latitude=0&longitude=0&platform=browser&subject_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJiNDAzMjU0NS0yYmE2LTRiZGMtOGFlOS04ZWI3YTY2NzBjMTIiLCJhdWQiOiJ1cm46YmFtdGVjaDpzZXJ2aWNlOnRva2VuIiwibmJmIjoxNjIyNjM3OTE2LCJpc3MiOiJ1cm46YmFtdGVjaDpzZXJ2aWNlOmRldmljZSIsImV4cCI6MjQ4NjYzNzkxNiwiaWF0IjoxNjIyNjM3OTE2LCJqdGkiOiI0ZDUzMTIxMS0zMDJmLTQyNDctOWQ0ZC1lNDQ3MTFmMzNlZjkifQ.g-QUcXNzMJ8DwC9JqZbbkYUSKkB1p4JGW77OON5IwNUcTGTNRLyVIiR8mO6HFyShovsR38HRQGVa51b15iAmXg&subject_token_type=urn%3Abamtech%3Aparams%3Aoauth%3Atoken-type%3Adevice"'
|
||||||
local httpcode = luci.sys.exec(string.format("curl -sL -m 3 --retry 2 -o /dev/null -w %%{http_code} %s -H 'User-Agent: %s' -d %s -XPOST %s", headers, UA, auth, url))
|
local httpcode = luci.sys.exec(string.format("curl -sL -m 3 --retry 2 -o /dev/null -w %%{http_code} %s -H 'User-Agent: %s' -d %s -XPOST %s", headers, UA, auth, url))
|
||||||
local region
|
local region
|
||||||
|
local regex = uci:get("openclash", "config", "stream_auto_select_region_key_disney") or ""
|
||||||
if tonumber(httpcode) == 200 then
|
if tonumber(httpcode) == 200 then
|
||||||
status = 1
|
status = 1
|
||||||
local url_effective = luci.sys.exec(string.format("curl -sL -m 3 --retry 2 -o /dev/null -w %%{url_effective} -H 'Content-Type: application/json' -H 'User-Agent: %s' %s", UA, url2))
|
local url_effective = luci.sys.exec(string.format("curl -sL -m 3 --retry 2 -o /dev/null -w %%{url_effective} -H 'Content-Type: application/json' -H 'User-Agent: %s' %s", UA, url2))
|
||||||
if url_effective == "https://disneyplus.disney.co.jp/" then
|
if url_effective == "https://disneyplus.disney.co.jp/" then
|
||||||
status = 2
|
status = 2
|
||||||
region = "JP"
|
region = "JP"
|
||||||
|
if not datamatch(region, regex) then
|
||||||
|
status = 3
|
||||||
|
end
|
||||||
return region
|
return region
|
||||||
elseif string.find(url_effective,"hotstar") then
|
elseif string.find(url_effective,"hotstar") then
|
||||||
return
|
return
|
||||||
|
@ -556,6 +589,9 @@ function disney_unlock_test()
|
||||||
local region = luci.sys.exec(string.format("curl -sL -m 3 --retry 2 -H 'Content-Type: application/json' -H 'User-Agent: %s' %s |grep 'Region: ' |awk '{print $2}' |tr -d '\n'", UA, url2))
|
local region = luci.sys.exec(string.format("curl -sL -m 3 --retry 2 -H 'Content-Type: application/json' -H 'User-Agent: %s' %s |grep 'Region: ' |awk '{print $2}' |tr -d '\n'", UA, url2))
|
||||||
if region and region ~= "" then
|
if region and region ~= "" then
|
||||||
status = 2
|
status = 2
|
||||||
|
if not datamatch(region, regex) then
|
||||||
|
status = 3
|
||||||
|
end
|
||||||
return region
|
return region
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -585,7 +621,8 @@ function hbo_max_unlock_test()
|
||||||
local url = "https://www.hbomax.com/"
|
local url = "https://www.hbomax.com/"
|
||||||
local data = luci.sys.exec(string.format("curl -sL -m 3 --retry 2 -o /dev/null -w %%{json} -H 'Content-Type: application/json' -H 'User-Agent: %s' %s", UA, url))
|
local data = luci.sys.exec(string.format("curl -sL -m 3 --retry 2 -o /dev/null -w %%{json} -H 'Content-Type: application/json' -H 'User-Agent: %s' %s", UA, url))
|
||||||
local result = {}
|
local result = {}
|
||||||
local region
|
local region = ""
|
||||||
|
local regex = uci:get("openclash", "config", "stream_auto_select_region_key_hbo_max") or ""
|
||||||
if data then
|
if data then
|
||||||
data = json.parse(data)
|
data = json.parse(data)
|
||||||
end
|
end
|
||||||
|
@ -597,10 +634,11 @@ function hbo_max_unlock_test()
|
||||||
string.gsub(data.url_effective, '[^/]+', function(w) table.insert(result, w) end)
|
string.gsub(data.url_effective, '[^/]+', function(w) table.insert(result, w) end)
|
||||||
if result[3] then
|
if result[3] then
|
||||||
region = string.upper(string.match(result[3], "^%a+"))
|
region = string.upper(string.match(result[3], "^%a+"))
|
||||||
if region then
|
|
||||||
return region
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
if not datamatch(region, regex) then
|
||||||
|
status = 3
|
||||||
|
end
|
||||||
|
return region
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -611,6 +649,8 @@ function hbo_go_asia_unlock_test()
|
||||||
status = 0
|
status = 0
|
||||||
local url = "https://api2.hbogoasia.com/v1/geog?lang=undefined&version=0&bundleId=www.hbogoasia.com"
|
local url = "https://api2.hbogoasia.com/v1/geog?lang=undefined&version=0&bundleId=www.hbogoasia.com"
|
||||||
local httpcode = luci.sys.exec(string.format("curl -sL -m 3 --retry 2 -o /dev/null -w %%{http_code} -H 'Content-Type: application/json' -H 'User-Agent: %s' %s", UA, url))
|
local httpcode = luci.sys.exec(string.format("curl -sL -m 3 --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 = ""
|
||||||
if tonumber(httpcode) == 200 then
|
if tonumber(httpcode) == 200 then
|
||||||
status = 1
|
status = 1
|
||||||
local data = luci.sys.exec(string.format("curl -sL -m 3 --retry 2 -H 'Content-Type: application/json' -H 'User-Agent: %s' %s", UA, url))
|
local data = luci.sys.exec(string.format("curl -sL -m 3 --retry 2 -H 'Content-Type: application/json' -H 'User-Agent: %s' %s", UA, url))
|
||||||
|
@ -621,8 +661,12 @@ function hbo_go_asia_unlock_test()
|
||||||
if data.territory then
|
if data.territory then
|
||||||
status = 2
|
status = 2
|
||||||
if data.country then
|
if data.country then
|
||||||
return string.upper(data.country)
|
region = string.upper(data.country)
|
||||||
end
|
end
|
||||||
|
if not datamatch(region, regex) then
|
||||||
|
status = 3
|
||||||
|
end
|
||||||
|
return region
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -633,7 +677,8 @@ function ytb_unlock_test()
|
||||||
status = 0
|
status = 0
|
||||||
local url = "https://m.youtube.com/premium"
|
local url = "https://m.youtube.com/premium"
|
||||||
local httpcode = luci.sys.exec(string.format("curl -sL -m 3 --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 httpcode = luci.sys.exec(string.format("curl -sL -m 3 --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 region = ""
|
||||||
|
local regex = uci:get("openclash", "config", "stream_auto_select_region_key_ytb") or ""
|
||||||
if tonumber(httpcode) == 200 then
|
if tonumber(httpcode) == 200 then
|
||||||
status = 1
|
status = 1
|
||||||
local data = luci.sys.exec(string.format("curl -sL -m 3 --retry 2 -H 'Accept-Language: en' -H 'Content-Type: application/json' -H 'User-Agent: %s' %s", UA, url))
|
local data = luci.sys.exec(string.format("curl -sL -m 3 --retry 2 -H 'Accept-Language: en' -H 'Content-Type: application/json' -H 'User-Agent: %s' %s", UA, url))
|
||||||
|
@ -643,22 +688,25 @@ function ytb_unlock_test()
|
||||||
region = string.sub(string.match(data, "\"GL\":\"%a+\""), 7, -2)
|
region = string.sub(string.match(data, "\"GL\":\"%a+\""), 7, -2)
|
||||||
if region then
|
if region then
|
||||||
status = 2
|
status = 2
|
||||||
return region
|
|
||||||
else
|
else
|
||||||
if not string.find(data,"www%.google%.cn") then
|
if not string.find(data,"www%.google%.cn") then
|
||||||
status = 2
|
status = 2
|
||||||
return "US"
|
region = "US"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
if not datamatch(region, regex) then
|
||||||
|
status = 3
|
||||||
|
end
|
||||||
end
|
end
|
||||||
return
|
return region
|
||||||
end
|
end
|
||||||
|
|
||||||
function tvb_anywhere_unlock_test()
|
function tvb_anywhere_unlock_test()
|
||||||
status = 0
|
status = 0
|
||||||
local url = "https://uapisfm.tvbanywhere.com.sg/geoip/check/platform/android"
|
local url = "https://uapisfm.tvbanywhere.com.sg/geoip/check/platform/android"
|
||||||
local httpcode = luci.sys.exec(string.format("curl -sL -m 3 --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 httpcode = luci.sys.exec(string.format("curl -sL -m 3 --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 region = ""
|
||||||
|
local regex = uci:get("openclash", "config", "stream_auto_select_region_key_tvb_anywhere") or ""
|
||||||
if tonumber(httpcode) == 200 then
|
if tonumber(httpcode) == 200 then
|
||||||
status = 1
|
status = 1
|
||||||
local data = luci.sys.exec(string.format("curl -sL -m 3 --retry 2 -H 'Accept-Language: en' -H 'Content-Type: application/json' -H 'User-Agent: %s' %s", UA, url))
|
local data = luci.sys.exec(string.format("curl -sL -m 3 --retry 2 -H 'Accept-Language: en' -H 'Content-Type: application/json' -H 'User-Agent: %s' %s", UA, url))
|
||||||
|
@ -667,13 +715,15 @@ function tvb_anywhere_unlock_test()
|
||||||
end
|
end
|
||||||
if data and data.allow_in_this_country then
|
if data and data.allow_in_this_country then
|
||||||
status = 2
|
status = 2
|
||||||
region = string.upper(data.country)
|
if data.country then
|
||||||
if region then
|
region = string.upper(data.country)
|
||||||
return region
|
end
|
||||||
|
if not datamatch(region, regex) then
|
||||||
|
status = 3
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return
|
return region
|
||||||
end
|
end
|
||||||
|
|
||||||
function prime_video_unlock_test()
|
function prime_video_unlock_test()
|
||||||
|
@ -681,6 +731,7 @@ function prime_video_unlock_test()
|
||||||
local url = "https://www.primevideo.com"
|
local url = "https://www.primevideo.com"
|
||||||
local httpcode = luci.sys.exec(string.format("curl -sL -m 3 --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 httpcode = luci.sys.exec(string.format("curl -sL -m 3 --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 region
|
||||||
|
local regex = uci:get("openclash", "config", "stream_auto_select_region_key_prime_video") or ""
|
||||||
if tonumber(httpcode) == 200 then
|
if tonumber(httpcode) == 200 then
|
||||||
status = 1
|
status = 1
|
||||||
local data = luci.sys.exec(string.format("curl -sL -m 3 --retry 2 -H 'Accept-Language: en' -H 'Content-Type: application/json' -H 'User-Agent: %s' %s", UA, url))
|
local data = luci.sys.exec(string.format("curl -sL -m 3 --retry 2 -H 'Accept-Language: en' -H 'Content-Type: application/json' -H 'User-Agent: %s' %s", UA, url))
|
||||||
|
@ -688,6 +739,9 @@ function prime_video_unlock_test()
|
||||||
region = string.sub(string.match(data, "\"currentTerritory\":\"%a+\""), 21, -2)
|
region = string.sub(string.match(data, "\"currentTerritory\":\"%a+\""), 21, -2)
|
||||||
if region then
|
if region then
|
||||||
status = 2
|
status = 2
|
||||||
|
if not datamatch(region, regex) then
|
||||||
|
status = 3
|
||||||
|
end
|
||||||
return region
|
return region
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -7,10 +7,10 @@ OP_LV=$(sed -n 1p $LAST_OPVER 2>/dev/null |awk -F '-' '{print $1}' |awk -F 'v' '
|
||||||
|
|
||||||
if [ "$CKTIME" != "$(grep "CheckTime" $LAST_OPVER 2>/dev/null |awk -F ':' '{print $2}')" ]; then
|
if [ "$CKTIME" != "$(grep "CheckTime" $LAST_OPVER 2>/dev/null |awk -F ':' '{print $2}')" ]; then
|
||||||
if pidof clash >/dev/null; then
|
if pidof clash >/dev/null; then
|
||||||
curl -sL --connect-timeout 10 --retry 2 https://raw.githubusercontent.com/vernesong/OpenClash/"$RELEASE_BRANCH"/version -o $LAST_OPVER >/dev/null 2>&1
|
curl -sL --connect-timeout 5 --retry 2 https://raw.githubusercontent.com/vernesong/OpenClash/"$RELEASE_BRANCH"/version -o $LAST_OPVER >/dev/null 2>&1
|
||||||
fi
|
fi
|
||||||
if [ "$?" -ne "0" ] || ! pidof clash >/dev/null; then
|
if [ "$?" -ne "0" ] || ! pidof clash >/dev/null; then
|
||||||
curl -sL --connect-timeout 10 --retry 2 https://cdn.jsdelivr.net/gh/vernesong/OpenClash@"$RELEASE_BRANCH"/version -o $LAST_OPVER >/dev/null 2>&1
|
curl -sL --connect-timeout 5 --retry 2 https://cdn.jsdelivr.net/gh/vernesong/OpenClash@"$RELEASE_BRANCH"/version -o $LAST_OPVER >/dev/null 2>&1
|
||||||
fi
|
fi
|
||||||
if [ "$?" -eq "0" ] && [ -s "$LAST_OPVER" ]; then
|
if [ "$?" -eq "0" ] && [ -s "$LAST_OPVER" ]; then
|
||||||
OP_LV=$(sed -n 1p $LAST_OPVER 2>/dev/null |awk -F '-' '{print $1}' |awk -F 'v' '{print $2}' |awk -F '.' '{print $2$3}' 2>/dev/null)
|
OP_LV=$(sed -n 1p $LAST_OPVER 2>/dev/null |awk -F '-' '{print $1}' |awk -F 'v' '{print $2}' |awk -F '.' '{print $2$3}' 2>/dev/null)
|
||||||
|
|
|
@ -553,3 +553,22 @@ ipv4-c221-sjc002-ix.1.oca.nflxvideo.net
|
||||||
ipv4-c204-sjc002-dev-ix.1.oca.nflxvideo.net
|
ipv4-c204-sjc002-dev-ix.1.oca.nflxvideo.net
|
||||||
ipv4-c070-lax009-ix.1.oca.nflxvideo.net
|
ipv4-c070-lax009-ix.1.oca.nflxvideo.net
|
||||||
ipv4-c024-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
|
||||||
|
|
|
@ -145,318 +145,318 @@ rule-providers:
|
||||||
Reject:
|
Reject:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Reject.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Reject.yaml
|
||||||
path: "./Rules/Reject"
|
path: "./Rules/Reject"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
Special:
|
Special:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Special.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Special.yaml
|
||||||
path: "./Rules/Special"
|
path: "./Rules/Special"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
Netflix:
|
Netflix:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Netflix.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Media/Netflix.yaml
|
||||||
path: "./Rules/Media/Netflix"
|
path: "./Rules/Media/Netflix"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
Spotify:
|
Spotify:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Spotify.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Media/Spotify.yaml
|
||||||
path: "./Rules/Media/Spotify"
|
path: "./Rules/Media/Spotify"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
YouTube:
|
YouTube:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/YouTube.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Media/YouTube.yaml
|
||||||
path: "./Rules/Media/YouTube"
|
path: "./Rules/Media/YouTube"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
Bilibili:
|
Bilibili:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Bilibili.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Media/Bilibili.yaml
|
||||||
path: "./Rules/Media/Bilibili"
|
path: "./Rules/Media/Bilibili"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
IQ:
|
IQ:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/IQ.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Media/IQ.yaml
|
||||||
path: "./Rules/Media/IQI"
|
path: "./Rules/Media/IQI"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
IQIYI:
|
IQIYI:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/IQIYI.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Media/IQIYI.yaml
|
||||||
path: "./Rules/Media/IQYI"
|
path: "./Rules/Media/IQYI"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
Letv:
|
Letv:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Letv.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Media/Letv.yaml
|
||||||
path: "./Rules/Media/Letv"
|
path: "./Rules/Media/Letv"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
Netease Music:
|
Netease Music:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Netease%20Music.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Media/Netease%20Music.yaml
|
||||||
path: "./Rules/Media/Netease_Music"
|
path: "./Rules/Media/Netease_Music"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
Tencent Video:
|
Tencent Video:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Tencent%20Video.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Media/Tencent%20Video.yaml
|
||||||
path: "./Rules/Media/Tencent_Video"
|
path: "./Rules/Media/Tencent_Video"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
Youku:
|
Youku:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Youku.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Media/Youku.yaml
|
||||||
path: "./Rules/Media/Youku"
|
path: "./Rules/Media/Youku"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
WeTV:
|
WeTV:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/WeTV.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Media/WeTV.yaml
|
||||||
path: "./Rules/Media/WeTV"
|
path: "./Rules/Media/WeTV"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
ABC:
|
ABC:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/ABC.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Media/ABC.yaml
|
||||||
path: "./Rules/Media/ABC"
|
path: "./Rules/Media/ABC"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
Abema TV:
|
Abema TV:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Abema%20TV.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Media/Abema%20TV.yaml
|
||||||
path: "./Rules/Media/Abema_TV"
|
path: "./Rules/Media/Abema_TV"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
Amazon:
|
Amazon:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Amazon.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Media/Amazon.yaml
|
||||||
path: "./Rules/Media/Amazon"
|
path: "./Rules/Media/Amazon"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
Apple News:
|
Apple News:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Apple%20News.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Media/Apple%20News.yaml
|
||||||
path: "./Rules/Media/Apple_News"
|
path: "./Rules/Media/Apple_News"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
Apple TV:
|
Apple TV:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Apple%20TV.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Media/Apple%20TV.yaml
|
||||||
path: "./Rules/Media/Apple_TV"
|
path: "./Rules/Media/Apple_TV"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
Bahamut:
|
Bahamut:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Bahamut.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Media/Bahamut.yaml
|
||||||
path: "./Rules/Media/Bahamut"
|
path: "./Rules/Media/Bahamut"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
BBC iPlayer:
|
BBC iPlayer:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/BBC%20iPlayer.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Media/BBC%20iPlayer.yaml
|
||||||
path: "./Rules/Media/BBC_iPlayer"
|
path: "./Rules/Media/BBC_iPlayer"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
DAZN:
|
DAZN:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/DAZN.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Media/DAZN.yaml
|
||||||
path: "./Rules/Media/DAZN"
|
path: "./Rules/Media/DAZN"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
Discovery Plus:
|
Discovery Plus:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Discovery%20Plus.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Media/Discovery%20Plus.yaml
|
||||||
path: "./Rules/Media/Discovery_Plus"
|
path: "./Rules/Media/Discovery_Plus"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
Disney Plus:
|
Disney Plus:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Disney%20Plus.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Media/Disney%20Plus.yaml
|
||||||
path: "./Rules/Media/Disney_Plus"
|
path: "./Rules/Media/Disney_Plus"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
encoreTVB:
|
encoreTVB:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/encoreTVB.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Media/encoreTVB.yaml
|
||||||
path: "./Rules/Media/encoreTVB"
|
path: "./Rules/Media/encoreTVB"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
Fox Now:
|
Fox Now:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Fox%20Now.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Media/Fox%20Now.yaml
|
||||||
path: "./Rules/Media/Fox_Now"
|
path: "./Rules/Media/Fox_Now"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
Fox+:
|
Fox+:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Fox%2B.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Media/Fox%2B.yaml
|
||||||
path: "./Rules/Media/Fox+"
|
path: "./Rules/Media/Fox+"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
HBO Go:
|
HBO Go:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/HBO%20Go.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Media/HBO%20Go.yaml
|
||||||
path: "./Rules/Media/HBO_Go"
|
path: "./Rules/Media/HBO_Go"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
HBO Max:
|
HBO Max:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/HBO%20Max.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Media/HBO%20Max.yaml
|
||||||
path: "./Rules/Media/HBO_Max"
|
path: "./Rules/Media/HBO_Max"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
Hulu Japan:
|
Hulu Japan:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Hulu%20Japan.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Media/Hulu%20Japan.yaml
|
||||||
path: "./Rules/Media/Hulu_Japan"
|
path: "./Rules/Media/Hulu_Japan"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
Hulu:
|
Hulu:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Hulu.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Media/Hulu.yaml
|
||||||
path: "./Rules/Media/Hulu"
|
path: "./Rules/Media/Hulu"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
Japonx:
|
Japonx:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Japonx.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Media/Japonx.yaml
|
||||||
path: "./Rules/Media/Japonx"
|
path: "./Rules/Media/Japonx"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
JOOX:
|
JOOX:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/JOOX.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Media/JOOX.yaml
|
||||||
path: "./Rules/Media/JOOX"
|
path: "./Rules/Media/JOOX"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
KKBOX:
|
KKBOX:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/KKBOX.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Media/KKBOX.yaml
|
||||||
path: "./Rules/Media/KKBOX"
|
path: "./Rules/Media/KKBOX"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
KKTV:
|
KKTV:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/KKTV.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Media/KKTV.yaml
|
||||||
path: "./Rules/Media/KKTV"
|
path: "./Rules/Media/KKTV"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
Line TV:
|
Line TV:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Line%20TV.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Media/Line%20TV.yaml
|
||||||
path: "./Rules/Media/Line_TV"
|
path: "./Rules/Media/Line_TV"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
myTV SUPER:
|
myTV SUPER:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/myTV%20SUPER.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Media/myTV%20SUPER.yaml
|
||||||
path: "./Rules/Media/myTV_SUPER"
|
path: "./Rules/Media/myTV_SUPER"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
Pandora:
|
Pandora:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Pandora.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Media/Pandora.yaml
|
||||||
path: "./Rules/Media/Pandora"
|
path: "./Rules/Media/Pandora"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
PBS:
|
PBS:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/PBS.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Media/PBS.yaml
|
||||||
path: "./Rules/Media/PBS"
|
path: "./Rules/Media/PBS"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
Pornhub:
|
Pornhub:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Pornhub.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Media/Pornhub.yaml
|
||||||
path: "./Rules/Media/Pornhub"
|
path: "./Rules/Media/Pornhub"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
Soundcloud:
|
Soundcloud:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/Soundcloud.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Media/Soundcloud.yaml
|
||||||
path: "./Rules/Media/Soundcloud"
|
path: "./Rules/Media/Soundcloud"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
ViuTV:
|
ViuTV:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Media/ViuTV.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Media/ViuTV.yaml
|
||||||
path: "./Rules/Media/ViuTV"
|
path: "./Rules/Media/ViuTV"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
Telegram:
|
Telegram:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Telegram.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Telegram.yaml
|
||||||
path: "./Rules/Telegram"
|
path: "./Rules/Telegram"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
Steam:
|
Steam:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Steam.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Steam.yaml
|
||||||
path: "./Rules/Steam"
|
path: "./Rules/Steam"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
Speedtest:
|
Speedtest:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Speedtest.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Speedtest.yaml
|
||||||
path: "./Rules/Speedtest"
|
path: "./Rules/Speedtest"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
PayPal:
|
PayPal:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/PayPal.yaml
|
url: https://raw.dler.io/main/Clash/Provider/PayPal.yaml
|
||||||
path: "./Rules/PayPal"
|
path: "./Rules/PayPal"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
Microsoft:
|
Microsoft:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Microsoft.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Microsoft.yaml
|
||||||
path: "./Rules/Microsoft"
|
path: "./Rules/Microsoft"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
PROXY:
|
PROXY:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Proxy.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Proxy.yaml
|
||||||
path: "./Rules/Proxy"
|
path: "./Rules/Proxy"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
Domestic:
|
Domestic:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Domestic.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Domestic.yaml
|
||||||
path: "./Rules/Domestic"
|
path: "./Rules/Domestic"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
Apple:
|
Apple:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Apple.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Apple.yaml
|
||||||
path: "./Rules/Apple"
|
path: "./Rules/Apple"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
Google FCM:
|
Google FCM:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Google%20FCM.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Google%20FCM.yaml
|
||||||
path: "./Rules/Google FCM"
|
path: "./Rules/Google FCM"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
Scholar:
|
Scholar:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Scholar.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Scholar.yaml
|
||||||
path: "./Rules/Scholar"
|
path: "./Rules/Scholar"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
Domestic IPs:
|
Domestic IPs:
|
||||||
type: http
|
type: http
|
||||||
behavior: ipcidr
|
behavior: ipcidr
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/Domestic%20IPs.yaml
|
url: https://raw.dler.io/main/Clash/Provider/Domestic%20IPs.yaml
|
||||||
path: "./Rules/Domestic_IPs"
|
path: "./Rules/Domestic_IPs"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
LAN:
|
LAN:
|
||||||
type: http
|
type: http
|
||||||
behavior: classical
|
behavior: classical
|
||||||
url: https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Clash/Provider/LAN.yaml
|
url: https://raw.dler.io/main/Clash/Provider/LAN.yaml
|
||||||
path: "./Rules/LAN"
|
path: "./Rules/LAN"
|
||||||
interval: 86400
|
interval: 86400
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,49 +1,49 @@
|
||||||
放行规则-ConnersHua(建议置顶并直连),ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/,Unbreak.yaml
|
放行规则-ConnersHua(建议置顶并直连),ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/,Unbreak.yaml
|
||||||
放行规则-lhie1(建议置顶并直连),lhie1,classical,lhie1/Rules/master/Clash/Provider/,Special.yaml
|
放行规则-lhie1(建议置顶并直连),lhie1,classical,dler-io/Rules/master/Clash/Provider/,Special.yaml
|
||||||
放行规则-ACL4SSR(建议置顶并直连),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/,UnBan.yaml
|
放行规则-ACL4SSR(建议置顶并直连),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/,UnBan.yaml
|
||||||
反劫持规则,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Guard/,Hijacking.yaml
|
反劫持规则,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Guard/,Hijacking.yaml
|
||||||
国内IP白名单(By lhie1),lhie1,ipcidr,lhie1/Rules/master/Clash/Provider/,Domestic%20IPs.yaml,Domestic IPs.yaml
|
国内IP白名单(By lhie1),lhie1,ipcidr,dler-io/Rules/master/Clash/Provider/,Domestic%20IPs.yaml,Domestic IPs.yaml
|
||||||
国内IP白名单,ConnersHua,ipcidr,DivineEngine/Profiles/master/Clash/RuleSet/Extra/,ChinaIP.yaml
|
国内IP白名单,ConnersHua,ipcidr,DivineEngine/Profiles/master/Clash/RuleSet/Extra/,ChinaIP.yaml
|
||||||
国内域名白名单(By lhie1),lhie1,classical,lhie1/Rules/master/Clash/Provider/,Domestic.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/,China.yaml
|
||||||
国内流媒体合集,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/,StreamingCN.yaml
|
国内流媒体合集,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/,StreamingCN.yaml
|
||||||
国内流媒体国际版合集,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/,StreamingSE.yaml
|
国内流媒体国际版合集,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/,StreamingSE.yaml
|
||||||
国外常用网站合集(By lhie1),lhie1,classical,lhie1/Rules/master/Clash/Provider/,Proxy.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/,Global.yaml
|
||||||
国外流媒体合集,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/,Streaming.yaml
|
国外流媒体合集,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/,Streaming.yaml
|
||||||
学术网站,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/,Scholar.yaml
|
学术网站,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/,Scholar.yaml
|
||||||
广告规则(By lhie1),lhie1,classical,lhie1/Rules/master/Clash/Provider/,Reject.yaml
|
广告规则(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/,Reject.yaml
|
||||||
广告规则,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Guard/,Advertising.yaml
|
广告规则,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Guard/,Advertising.yaml
|
||||||
微软服务,lhie1,classical,lhie1/Rules/master/Clash/Provider/,Microsoft.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/Extra/,Cryptocurrency.yaml
|
||||||
隐私规则合集,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Guard/,Privacy.yaml
|
隐私规则合集,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Guard/,Privacy.yaml
|
||||||
ABC,lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,ABC.yaml
|
ABC,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,ABC.yaml
|
||||||
Abema TV,lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,Abema%20TV.yaml,Abema TV.yaml
|
Abema TV,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Abema%20TV.yaml,Abema TV.yaml
|
||||||
AbemaTV(By ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,AbemaTV.yaml,AbemaTV-ACL4SSR.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
|
AbemaTV,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,AbemaTV.yaml
|
||||||
Adobe,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Adobe.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
|
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(By ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Amazon.yaml,Amazon-ACL4SSR.yaml
|
||||||
Amazon,lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,Amazon.yaml
|
Amazon,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Amazon.yaml
|
||||||
AmazonIp,ACL4SSR,ipcidr,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,AmazonIp.yaml
|
AmazonIp,ACL4SSR,ipcidr,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,AmazonIp.yaml
|
||||||
AppStore,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Apple/,AppStore.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
|
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 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 Music,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Apple/,Music.yaml
|
||||||
Apple News(By lhie1),lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,Apple%20News.yaml,Apple News.yaml
|
Apple News(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Apple%20News.yaml,Apple News.yaml
|
||||||
Apple News,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/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 SoftwareUpdate,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Apple/,SoftwareUpdate.yaml
|
||||||
Apple TV(By lhie1),lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,Apple%20TV.yaml,Apple TV.yaml
|
Apple TV(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Apple%20TV.yaml,Apple TV.yaml
|
||||||
Apple TV,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/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 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 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 ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Apple.yaml,Apple-ACL4SSR.yaml
|
||||||
Apple(By lhie1),lhie1,classical,lhie1/Rules/master/Clash/Provider/,Apple.yaml,Apple-lhie1.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
|
Apple,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Apple/,Apple.yaml
|
||||||
BBC iPlayer,lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,BBC iPlayer.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
|
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 ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Bahamut.yaml,Bahamut-ACL4SSR.yaml
|
||||||
Bahamut(By lhie1),lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,Bahamut.yaml,Bahamut-lhie1.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
|
Bahamut,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,Bahamut.yaml
|
||||||
BanAD,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/,BanAD.yaml
|
BanAD,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/,BanAD.yaml
|
||||||
BanEasyList,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/,BanEasyList.yaml
|
BanEasyList,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/,BanEasyList.yaml
|
||||||
|
@ -51,7 +51,7 @@ BanEasyListChina,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/,BanEa
|
||||||
BanEasyPrivacy,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/,BanEasyPrivacy.yaml
|
BanEasyPrivacy,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/,BanEasyPrivacy.yaml
|
||||||
BanProgramAD,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/,BanProgramAD.yaml
|
BanProgramAD,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/,BanProgramAD.yaml
|
||||||
Bilibili(By ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Bilibili.yaml,Bilibili-ACL4SSR.yaml
|
Bilibili(By ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Bilibili.yaml,Bilibili-ACL4SSR.yaml
|
||||||
Bilibili,lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,Bilibili.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
|
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
|
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(By ConnersHua),ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Game/,Blizzard.yaml,Blizzard-ConnersHua.yaml
|
||||||
|
@ -61,21 +61,21 @@ ChinaDomain,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/,ChinaDomai
|
||||||
ChinaIp(By ACL4SSR),ACL4SSR,ipcidr,ACL4SSR/ACL4SSR/master/Clash/Providers/,ChinaIp.yaml,ChinaIp-ACL4SSR.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
|
ChinaMedia,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/,ChinaMedia.yaml
|
||||||
Chromecast,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Google/,Chromecast.yaml
|
Chromecast,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Google/,Chromecast.yaml
|
||||||
DAZN(By lhie1),lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,DAZN.yaml,DAZN-lhie1.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
|
DAZN,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,DAZN.yaml
|
||||||
Deezer,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Music/,Deezer.yaml
|
Deezer,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Music/,Deezer.yaml
|
||||||
Developer,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Developer.yaml
|
Developer,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Developer.yaml
|
||||||
Discord,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Game/,Discord.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
|
DiscoveryPlus,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,DiscoveryPlus.yaml
|
||||||
Disney Plus,lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,Disney%20Plus.yaml,Disney Plus.yaml
|
Disney Plus,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Disney%20Plus.yaml,Disney Plus.yaml
|
||||||
DisneyPlus(By ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,DisneyPlus.yaml,DisneyPlus-ACL4SSR.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
|
DisneyPlus,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,DisneyPlus.yaml
|
||||||
Download,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/,Download.yaml
|
Download,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/,Download.yaml
|
||||||
EHGallery,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,EHGallery.yaml
|
EHGallery,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,EHGallery.yaml
|
||||||
Epic,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Epic.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,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,FOX.yaml
|
||||||
Fox Now,lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,Fox%20Now.yaml,Fox Now.yaml
|
Fox Now,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Fox%20Now.yaml,Fox Now.yaml
|
||||||
Fox+,lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,Fox+.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
|
GFW地址,ConnersHua,ipcidr,DivineEngine/Profiles/master/Clash/RuleSet/Extra/,IP-Blackhole.yaml
|
||||||
Google,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Google.yaml
|
Google,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Google.yaml
|
||||||
GoogleCN,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,GoogleCN.yaml
|
GoogleCN,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,GoogleCN.yaml
|
||||||
|
@ -84,52 +84,52 @@ GoogleFCM,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Goog
|
||||||
GoogleSearch,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Google/,GoogleSearch.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
|
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 ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,HBO.yaml,HBO-ACL4SSR.yaml
|
||||||
HBO(By lhie1),lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,HBO.yaml,HBO-lhie1.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,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
|
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
|
HWTV,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,HWTV.yaml
|
||||||
Himalaya,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Podcast/,Himalaya.yaml
|
Himalaya,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Podcast/,Himalaya.yaml
|
||||||
Hulu Japan,lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,Hulu Japan.yaml
|
Hulu Japan,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Hulu Japan.yaml
|
||||||
Hulu(By lhie1),lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,Hulu.yaml,Hulu-lhie1.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,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
|
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
|
ITV,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,ITV.yaml
|
||||||
Instagram,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Music/,Instagram.yaml
|
Instagram,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Music/,Instagram.yaml
|
||||||
JOOX(By lhie1),lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,JOOX.yaml,JOOX-lhie1.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
|
JOOX,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Music/,JOOX.yaml
|
||||||
Japonx,lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,Japonx.yaml
|
Japonx,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Japonx.yaml
|
||||||
KKBOX(By lhie1),lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,KKBOX.yaml,KKBOX-lhie1.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
|
KKBOX,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Music/,KKBOX.yaml
|
||||||
KKTV(By lhie1),lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,KKTV.yaml,KKTV-lhie1.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
|
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
|
LINE-TV,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,LINE-TV.yaml
|
||||||
Letv,lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,Letv.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
|
LiTV,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,LiTV.yaml
|
||||||
Line TV,lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,Line%20TV.yaml,Line TV.yaml
|
Line TV,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Line%20TV.yaml,Line TV.yaml
|
||||||
LocalAreaNetwork,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/,LocalAreaNetwork.yaml
|
LocalAreaNetwork,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/,LocalAreaNetwork.yaml
|
||||||
MOO,lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,MOO.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
|
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
|
My5,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,My5.yaml
|
||||||
NetEaseMusic,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,NetEaseMusic.yaml
|
NetEaseMusic,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,NetEaseMusic.yaml
|
||||||
Netease Music,lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,Netease%20Music.yaml,Netease Music.yaml
|
Netease Music,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Netease%20Music.yaml,Netease Music.yaml
|
||||||
Netflix(By ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Netflix.yaml,Netflix-ACL4SSR.yaml
|
Netflix(By ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Netflix.yaml,Netflix-ACL4SSR.yaml
|
||||||
Netflix(By lhie1),lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,Netflix.yaml,Netflix-lhie1.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
|
Netflix,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,Netflix.yaml
|
||||||
Nintendo,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Game/,Nintendo.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
|
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(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
|
OneDrive,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Microsoft/,OneDrive.yaml
|
||||||
Origin,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Game/,Origin.yaml
|
Origin,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Game/,Origin.yaml
|
||||||
PBS(By lhie1),lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,PBS.yaml,PBS-lhie1.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
|
PBS,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,PBS.yaml
|
||||||
Pandora(By lhie1),lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,Pandora.yaml,Pandora-lhie1.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
|
Pandora,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Music/,Pandora.yaml
|
||||||
ParamountPlus,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,ParamountPlus.yaml
|
ParamountPlus,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,ParamountPlus.yaml
|
||||||
PayPal(By lhie1),lhie1,classical,lhie1/Rules/master/Clash/Provider/,PayPal.yaml,PayPal-lhie1.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
|
PayPal,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/,PayPal.yaml
|
||||||
Peacock,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,Peacock.yaml
|
Peacock,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,Peacock.yaml
|
||||||
Porn,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Porn.yaml
|
Porn,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Porn.yaml
|
||||||
Pornhub(By lhie1),lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,Pornhub.yaml,Pornhub-lhie1.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
|
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
|
Prime-Video,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,Prime-Video.yaml
|
||||||
ProxyGFWlist,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/,ProxyGFWlist.yaml
|
ProxyGFWlist,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/,ProxyGFWlist.yaml
|
||||||
|
@ -139,40 +139,40 @@ Scholar(By ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Rul
|
||||||
Siri,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Apple/,Siri.yaml
|
Siri,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Apple/,Siri.yaml
|
||||||
Sony,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Sony.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,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Music/,SoundCloud.yaml
|
||||||
Soundcloud(By lhie1),lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,Soundcloud.yaml,Soundcloud-lhie1.yaml
|
Soundcloud(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Soundcloud.yaml,Soundcloud-lhie1.yaml
|
||||||
Speedtest,lhie1,classical,lhie1/Rules/master/Clash/Provider/,Speedtest.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 ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Spotify.yaml,Spotify-ACL4SSR.yaml
|
||||||
Spotify(By lhie1),lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,Spotify.yaml,Spotify-lhie1.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
|
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(By ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Steam.yaml,Steam-ACL4SSR.yaml
|
||||||
Steam,lhie1,classical,lhie1/Rules/master/Clash/Provider/,Steam.yaml
|
Steam,lhie1,classical,dler-io/Rules/master/Clash/Provider/,Steam.yaml
|
||||||
SteamCN,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,SteamCN.yaml
|
SteamCN,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,SteamCN.yaml
|
||||||
TIDAL,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Music/,TIDAL.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
|
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 ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Telegram.yaml,Telegram-ACL4SSR.yaml
|
||||||
Telegram(By lhie1),lhie1,classical,lhie1/Rules/master/Clash/Provider/,Telegram.yaml,Telegram-lhie1.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
|
Telegram,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Telegram/,Telegram.yaml
|
||||||
TelegramNL,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Telegram/,TelegramNL.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
|
TelegramSG,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Telegram/,TelegramSG.yaml
|
||||||
TelegramUS,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Telegram/,TelegramUS.yaml
|
TelegramUS,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Telegram/,TelegramUS.yaml
|
||||||
Tencent Video,lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,Tencent%20Video.yaml,Tencent Video.yaml
|
Tencent Video,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Tencent%20Video.yaml,Tencent Video.yaml
|
||||||
TikTok,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,TikTok.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
|
Twitch,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Live/,Twitch.yaml
|
||||||
ViuTV(By lhie1),lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,ViuTV.yaml,ViuTV-lhie1.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
|
ViuTV,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,ViuTV.yaml
|
||||||
WeTV,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,WeTV.yaml
|
WeTV,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,WeTV.yaml
|
||||||
Xbox,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Xbox.yaml
|
Xbox,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Xbox.yaml
|
||||||
YouTube Music,lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,YouTube%20Music.yaml,YouTube Music.yaml
|
YouTube Music,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,YouTube%20Music.yaml,YouTube Music.yaml
|
||||||
YouTube(By ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,YouTube.yaml,YouTube-ACL4SSR.yaml
|
YouTube(By ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,YouTube.yaml,YouTube-ACL4SSR.yaml
|
||||||
YouTube(By lhie1),lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,YouTube.yaml,YouTube-lhie1.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
|
YouTube,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,YouTube.yaml
|
||||||
YouTubeMusic,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Music/,YouTubeMusic.yaml
|
YouTubeMusic,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Music/,YouTubeMusic.yaml
|
||||||
Youku,lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,Youku.yaml
|
Youku,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Youku.yaml
|
||||||
encoreTVB(By lhie1),lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,encoreTVB.yaml,encoreTVB-lhie1.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
|
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
|
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,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,iQIYI.yaml
|
||||||
iQiyi,lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,iQiyi.yaml
|
iQiyi,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,iQiyi.yaml
|
||||||
myTV SUPER,lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,myTV%20SUPER.yaml,myTV SUPER.yaml
|
myTV SUPER,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,myTV%20SUPER.yaml,myTV SUPER.yaml
|
||||||
myTV-SUPER,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,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
|
niconico,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,niconico.yaml
|
|
@ -1,9 +1,7 @@
|
||||||
默认(附带用于Clash的AdGuard DNS),default_with_clash_adg.yml,https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/default_with_clash_adg.yml
|
默认(附带用于Clash的AdGuard DNS),default_with_clash_adg.yml,https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/default_with_clash_adg.yml
|
||||||
无Urltest,no_urltest.ini,https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/no_urltest.ini
|
无Urltest,no_urltest.ini,https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/no_urltest.ini
|
||||||
带Urltest,urltest.ini,https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/urltest.ini
|
带Urltest,urltest.ini,https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/urltest.ini
|
||||||
ConnersHua 神机规则 Basic,connershua_basic.ini,https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/connershua_basic.ini
|
|
||||||
ConnersHua 神机规则 Pro,connershua_pro.ini,https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/connershua_new.ini
|
ConnersHua 神机规则 Pro,connershua_pro.ini,https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/connershua_new.ini
|
||||||
ConnersHua 神机规则 BacktoCN 回国专用,connershua_backtocn.ini,https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/connershua_backtocn.ini
|
|
||||||
lhie1 洞主规则(使用 Clash 分组规则),lhie1_clash.ini,https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/lhie1_clash.ini
|
lhie1 洞主规则(使用 Clash 分组规则),lhie1_clash.ini,https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/lhie1_clash.ini
|
||||||
lhie1 洞主规则完整版,lhie1_dler.ini,https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/lhie1_dler.ini
|
lhie1 洞主规则完整版,lhie1_dler.ini,https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/lhie1_dler.ini
|
||||||
ACL4SSR 规则标准版,acl4ssr_standard.ini,https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/acl4ssr_standard.ini
|
ACL4SSR 规则标准版,acl4ssr_standard.ini,https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/acl4ssr_standard.ini
|
||||||
|
@ -23,28 +21,20 @@ ACL4SSR 规则 Online,ACL4SSR_Online.ini,https://raw.githubusercontent.com/tindy
|
||||||
ACL4SSR 规则 Online AdblockPlus,ACL4SSR_Online_AdblockPlus.ini,https://raw.githubusercontent.com/tindy2013/subconverter/master/base/config/ACL4SSR_Online_AdblockPlus.ini
|
ACL4SSR 规则 Online AdblockPlus,ACL4SSR_Online_AdblockPlus.ini,https://raw.githubusercontent.com/tindy2013/subconverter/master/base/config/ACL4SSR_Online_AdblockPlus.ini
|
||||||
ACL4SSR 规则 Online Full,ACL4SSR_Online_Full.ini,https://raw.githubusercontent.com/tindy2013/subconverter/master/base/config/ACL4SSR_Online_Full.ini
|
ACL4SSR 规则 Online Full,ACL4SSR_Online_Full.ini,https://raw.githubusercontent.com/tindy2013/subconverter/master/base/config/ACL4SSR_Online_Full.ini
|
||||||
ACL4SSR 规则 Online Full AdblockPlus,ACL4SSR_Online_Full_AdblockPlus.ini,https://raw.githubusercontent.com/tindy2013/subconverter/master/base/config/ACL4SSR_Online_Full_AdblockPlus.ini
|
ACL4SSR 规则 Online Full AdblockPlus,ACL4SSR_Online_Full_AdblockPlus.ini,https://raw.githubusercontent.com/tindy2013/subconverter/master/base/config/ACL4SSR_Online_Full_AdblockPlus.ini
|
||||||
|
ACL4SSR 规则 Online Full Google,ACL4SSR_Online_Full_Google.ini,https://raw.githubusercontent.com/tindy2013/subconverter/master/base/config/ACL4SSR_Online_Full_Google.ini
|
||||||
|
ACL4SSR 规则 Online Full MultiMode,ACL4SSR_Online_Full_MultiMode.ini,https://raw.githubusercontent.com/tindy2013/subconverter/master/base/config/ACL4SSR_Online_Full_MultiMode.ini
|
||||||
ACL4SSR 规则 Online Full Netflix,ACL4SSR_Online_Full_Netflix.ini,https://raw.githubusercontent.com/tindy2013/subconverter/master/base/config/ACL4SSR_Online_Full_Netflix.ini
|
ACL4SSR 规则 Online Full Netflix,ACL4SSR_Online_Full_Netflix.ini,https://raw.githubusercontent.com/tindy2013/subconverter/master/base/config/ACL4SSR_Online_Full_Netflix.ini
|
||||||
ACL4SSR 规则 Online Full NoAuto,ACL4SSR_Online_Full_NoAuto.ini,https://raw.githubusercontent.com/tindy2013/subconverter/master/base/config/ACL4SSR_Online_Full_NoAuto.ini
|
ACL4SSR 规则 Online Full NoAuto,ACL4SSR_Online_Full_NoAuto.ini,https://raw.githubusercontent.com/tindy2013/subconverter/master/base/config/ACL4SSR_Online_Full_NoAuto.ini
|
||||||
ACL4SSR 规则 Online Mini,ACL4SSR_Online_Mini.ini,https://raw.githubusercontent.com/tindy2013/subconverter/master/base/config/ACL4SSR_Online_Mini.ini
|
ACL4SSR 规则 Online Mini,ACL4SSR_Online_Mini.ini,https://raw.githubusercontent.com/tindy2013/subconverter/master/base/config/ACL4SSR_Online_Mini.ini
|
||||||
ACL4SSR 规则 Online Mini AdblockPlus,ACL4SSR_Online_Mini_AdblockPlus.ini,https://raw.githubusercontent.com/tindy2013/subconverter/master/base/config/ACL4SSR_Online_Mini_AdblockPlus.ini
|
ACL4SSR 规则 Online Mini AdblockPlus,ACL4SSR_Online_Mini_AdblockPlus.ini,https://raw.githubusercontent.com/tindy2013/subconverter/master/base/config/ACL4SSR_Online_Mini_AdblockPlus.ini
|
||||||
ACL4SSR 规则 Online Mini Fallback,ACL4SSR_Online_Mini_Fallback.ini,https://raw.githubusercontent.com/tindy2013/subconverter/master/base/config/ACL4SSR_Online_Mini_Fallback.ini
|
ACL4SSR 规则 Online Mini Fallback,ACL4SSR_Online_Mini_Fallback.ini,https://raw.githubusercontent.com/tindy2013/subconverter/master/base/config/ACL4SSR_Online_Mini_Fallback.ini
|
||||||
|
ACL4SSR 规则 Online Mini MultiCountry,ACL4SSR_Online_Mini_MultiCountry.ini,https://raw.githubusercontent.com/tindy2013/subconverter/master/base/config/ACL4SSR_Online_Mini_MultiCountry.ini
|
||||||
ACL4SSR 规则 Online Mini MultiMode,ACL4SSR_Online_Mini_MultiMode.ini,https://raw.githubusercontent.com/tindy2013/subconverter/master/base/config/ACL4SSR_Online_Mini_MultiMode.ini
|
ACL4SSR 规则 Online Mini MultiMode,ACL4SSR_Online_Mini_MultiMode.ini,https://raw.githubusercontent.com/tindy2013/subconverter/master/base/config/ACL4SSR_Online_Mini_MultiMode.ini
|
||||||
ACL4SSR 规则 Online Mini NoAuto,ACL4SSR_Online_Mini_NoAuto.ini,https://raw.githubusercontent.com/tindy2013/subconverter/master/base/config/ACL4SSR_Online_Mini_NoAuto.ini
|
ACL4SSR 规则 Online Mini NoAuto,ACL4SSR_Online_Mini_NoAuto.ini,https://raw.githubusercontent.com/tindy2013/subconverter/master/base/config/ACL4SSR_Online_Mini_NoAuto.ini
|
||||||
|
ACL4SSR 规则 Online MultiCountry,ACL4SSR_Online_MultiCountry.ini,https://raw.githubusercontent.com/tindy2013/subconverter/master/base/config/ACL4SSR_Online_MultiCountry.ini
|
||||||
ACL4SSR 规则 Online NoAuto,ACL4SSR_Online_NoAuto.ini,https://raw.githubusercontent.com/tindy2013/subconverter/master/base/config/ACL4SSR_Online_NoAuto.ini
|
ACL4SSR 规则 Online NoAuto,ACL4SSR_Online_NoAuto.ini,https://raw.githubusercontent.com/tindy2013/subconverter/master/base/config/ACL4SSR_Online_NoAuto.ini
|
||||||
ACL4SSR 规则 Online NoReject,ACL4SSR_Online_NoReject.ini,https://raw.githubusercontent.com/tindy2013/subconverter/master/base/config/ACL4SSR_Online_NoReject.ini
|
ACL4SSR 规则 Online NoReject,ACL4SSR_Online_NoReject.ini,https://raw.githubusercontent.com/tindy2013/subconverter/master/base/config/ACL4SSR_Online_NoReject.ini
|
||||||
ACL4SSR 规则 WithChinaIp,ACL4SSR_WithChinaIp.ini,https://raw.githubusercontent.com/tindy2013/subconverter/master/base/config/ACL4SSR_WithChinaIp.ini
|
ACL4SSR 规则 WithChinaIp,ACL4SSR_WithChinaIp.ini,https://raw.githubusercontent.com/tindy2013/subconverter/master/base/config/ACL4SSR_WithChinaIp.ini
|
||||||
ACL4SSR 规则 WithChinaIp WithGFW,ACL4SSR_WithChinaIp_WithGFW.ini,https://raw.githubusercontent.com/tindy2013/subconverter/master/base/config/ACL4SSR_WithChinaIp_WithGFW.ini
|
ACL4SSR 规则 WithChinaIp WithGFW,ACL4SSR_WithChinaIp_WithGFW.ini,https://raw.githubusercontent.com/tindy2013/subconverter/master/base/config/ACL4SSR_WithChinaIp_WithGFW.ini
|
||||||
|
ACL4SSR 规则 WithGFW,ACL4SSR_WithGFW.ini,https://raw.githubusercontent.com/tindy2013/subconverter/master/base/config/ACL4SSR_WithGFW.ini
|
||||||
eHpo1 规则,ehpo1_main.ini,https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/ehpo1_main.ini
|
eHpo1 规则,ehpo1_main.ini,https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/ehpo1_main.ini
|
||||||
nzw9314 规则,nzw9314_custom.ini,https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/nzw9314_custom.ini
|
|
||||||
maicoo-l 规则,maicoo-l_custom.ini,https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/maicoo-l_custom.ini
|
|
||||||
rixCloud 官方规则,rixcloud_custom.ini,https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/rixcloud_custom.ini
|
|
||||||
Maying,maying_optimized.ini,https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/maying_optimized.ini
|
|
||||||
Nexitally,nexitally_optimized.ini,https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/nexitally_optimized.ini
|
|
||||||
贼船,zeichuan_optimized.ini,https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/zeichuan_optimized.ini
|
|
||||||
N3RO,n3ro_optimized.ini,https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/n3ro_optimized.ini
|
|
||||||
Scholar,scholar_optimized.ini,https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/scholar_optimized.ini
|
|
||||||
YToo,ytoo_optimized.ini,https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/ytoo_optimized.ini
|
|
||||||
DlerCloud Platinum 李哥定制规则,dlercloud_lige_platinum.ini,https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/dlercloud_lige_platinum.ini
|
|
||||||
DlerCloud Gold 李哥定制规则,dlercloud_lige_gold.ini,https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/dlercloud_lige_gold.ini
|
|
||||||
DlerCloud Silver 李哥定制规则,dlercloud_lige_silver.ini,https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/dlercloud_lige_silver.ini
|
|
||||||
网易云解锁(仅规则分组),netease.ini,https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/netease.ini
|
|
|
@ -217,9 +217,25 @@ do
|
||||||
end
|
end
|
||||||
}.join;
|
}.join;
|
||||||
|
|
||||||
|
Thread.new{
|
||||||
|
#interface-name
|
||||||
|
if Value['proxy-groups'][$count].key?('interface-name') then
|
||||||
|
interface_name = '${uci_set}interface_name=' + Value['proxy-groups'][$count]['interface-name'].to_s
|
||||||
|
system(interface_name)
|
||||||
|
end
|
||||||
|
}.join;
|
||||||
|
|
||||||
|
Thread.new{
|
||||||
|
#routing-mark
|
||||||
|
if Value['proxy-groups'][$count].key?('routing-mark') then
|
||||||
|
routing_mark = '${uci_set}routing_mark=' + Value['proxy-groups'][$count]['routing-mark'].to_s
|
||||||
|
system(routing_mark)
|
||||||
|
end
|
||||||
|
}.join;
|
||||||
|
|
||||||
Thread.new{
|
Thread.new{
|
||||||
#other_group
|
#other_group
|
||||||
Value_1=YAML.load_file('/tmp/Proxy_Group');
|
Value_1 = File.readlines('/tmp/Proxy_Group').map!{|x| x.strip};
|
||||||
if Value['proxy-groups'][$count].key?('proxies') then
|
if Value['proxy-groups'][$count].key?('proxies') then
|
||||||
Value['proxy-groups'][$count]['proxies'].each{
|
Value['proxy-groups'][$count]['proxies'].each{
|
||||||
|x|
|
|x|
|
||||||
|
|
|
@ -178,6 +178,8 @@ yml_groups_set()
|
||||||
config_get "test_url" "$section" "test_url" ""
|
config_get "test_url" "$section" "test_url" ""
|
||||||
config_get "test_interval" "$section" "test_interval" ""
|
config_get "test_interval" "$section" "test_interval" ""
|
||||||
config_get "tolerance" "$section" "tolerance" ""
|
config_get "tolerance" "$section" "tolerance" ""
|
||||||
|
config_get "interface_name" "$section" "interface_name" ""
|
||||||
|
config_get "routing_mark" "$section" "routing_mark" ""
|
||||||
|
|
||||||
if [ ! -z "$if_game_group" ] && [ "$if_game_group" != "$name" ]; then
|
if [ ! -z "$if_game_group" ] && [ "$if_game_group" != "$name" ]; then
|
||||||
return
|
return
|
||||||
|
@ -258,15 +260,21 @@ yml_groups_set()
|
||||||
sed -i "/use: ${group_name}/d" $GROUP_FILE 2>/dev/null
|
sed -i "/use: ${group_name}/d" $GROUP_FILE 2>/dev/null
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[ ! -z "$test_url" ] && {
|
[ -n "$test_url" ] && {
|
||||||
echo " url: $test_url" >>$GROUP_FILE
|
echo " url: $test_url" >>$GROUP_FILE
|
||||||
}
|
}
|
||||||
[ ! -z "$test_interval" ] && {
|
[ -n "$test_interval" ] && {
|
||||||
echo " interval: \"$test_interval\"" >>$GROUP_FILE
|
echo " interval: \"$test_interval\"" >>$GROUP_FILE
|
||||||
}
|
}
|
||||||
[ ! -z "$tolerance" ] && {
|
[ -n "$tolerance" ] && {
|
||||||
echo " tolerance: \"$tolerance\"" >>$GROUP_FILE
|
echo " tolerance: \"$tolerance\"" >>$GROUP_FILE
|
||||||
}
|
}
|
||||||
|
[ -n "$interface_name" ] && {
|
||||||
|
echo " interface-name: \"$interface_name\"" >>$GROUP_FILE
|
||||||
|
}
|
||||||
|
[ -n "$routing_mark" ] && {
|
||||||
|
echo " routing-mark: \"$routing_mark\"" >>$GROUP_FILE
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
create_config=$(uci get openclash.config.create_config 2>/dev/null)
|
create_config=$(uci get openclash.config.create_config 2>/dev/null)
|
||||||
|
|
|
@ -745,6 +745,13 @@ do
|
||||||
system(psk)
|
system(psk)
|
||||||
end
|
end
|
||||||
}.join
|
}.join
|
||||||
|
|
||||||
|
Thread.new{
|
||||||
|
if Value['proxies'][$count].key?('version') then
|
||||||
|
snell_version = '${uci_set}snell_version=' + Value['proxies'][$count]['version'].to_s
|
||||||
|
system(snell_version)
|
||||||
|
end
|
||||||
|
}.join
|
||||||
end;
|
end;
|
||||||
if '$server_type' == 'socks5' or '$server_type' == 'http' then
|
if '$server_type' == 'socks5' or '$server_type' == 'http' then
|
||||||
Thread.new{
|
Thread.new{
|
||||||
|
|
|
@ -217,6 +217,7 @@ yml_servers_set()
|
||||||
config_get "auth_pass" "$section" "auth_pass" ""
|
config_get "auth_pass" "$section" "auth_pass" ""
|
||||||
config_get "psk" "$section" "psk" ""
|
config_get "psk" "$section" "psk" ""
|
||||||
config_get "obfs_snell" "$section" "obfs_snell" ""
|
config_get "obfs_snell" "$section" "obfs_snell" ""
|
||||||
|
config_get "snell_version" "$section" "snell_version" ""
|
||||||
config_get "sni" "$section" "sni" ""
|
config_get "sni" "$section" "sni" ""
|
||||||
config_get "alpn" "$section" "alpn" ""
|
config_get "alpn" "$section" "alpn" ""
|
||||||
config_get "http_path" "$section" "http_path" ""
|
config_get "http_path" "$section" "http_path" ""
|
||||||
|
@ -661,6 +662,11 @@ cat >> "$SERVER_FILE" <<-EOF
|
||||||
port: $port
|
port: $port
|
||||||
psk: $psk
|
psk: $psk
|
||||||
EOF
|
EOF
|
||||||
|
if [ -n "$snell_version" ]; then
|
||||||
|
cat >> "$SERVER_FILE" <<-EOF
|
||||||
|
version: "$snell_version"
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
if [ "$obfs_snell" != "none" ] && [ ! -z "$host" ]; then
|
if [ "$obfs_snell" != "none" ] && [ ! -z "$host" ]; then
|
||||||
cat >> "$SERVER_FILE" <<-EOF
|
cat >> "$SERVER_FILE" <<-EOF
|
||||||
obfs-opts:
|
obfs-opts:
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=shadowsocks-rust
|
PKG_NAME:=shadowsocks-rust
|
||||||
PKG_VERSION:=1.12.5
|
PKG_VERSION:=1.13.1
|
||||||
PKG_RELEASE:=$(AUTORELEASE)
|
PKG_RELEASE:=$(AUTORELEASE)
|
||||||
|
|
||||||
PKG_SOURCE_HEADER:=shadowsocks-v$(PKG_VERSION)
|
PKG_SOURCE_HEADER:=shadowsocks-v$(PKG_VERSION)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=Xray-core
|
PKG_NAME:=Xray-core
|
||||||
PKG_VERSION:=1.5.2
|
PKG_VERSION:=1.5.3
|
||||||
PKG_RELEASE:=$(AUTORELEASE)
|
PKG_RELEASE:=$(AUTORELEASE)
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=xray-plugin
|
PKG_NAME:=xray-plugin
|
||||||
PKG_VERSION:=1.5.2
|
PKG_VERSION:=1.5.3
|
||||||
PKG_RELEASE:=$(AUTORELEASE)
|
PKG_RELEASE:=$(AUTORELEASE)
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||||
|
|
Loading…
Reference in New Issue