update-02.01
This commit is contained in:
parent
26864d9bb6
commit
107e9cdc4c
|
@ -1,7 +1,7 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=luci-app-openclash
|
||||
PKG_VERSION:=0.44.09
|
||||
PKG_VERSION:=0.44.16
|
||||
PKG_RELEASE:=beta
|
||||
PKG_MAINTAINER:=vernesong <https://github.com/vernesong/OpenClash>
|
||||
|
||||
|
|
|
@ -107,10 +107,10 @@ end
|
|||
|
||||
local function is_watchdog()
|
||||
local ps_version = luci.sys.exec("ps --version 2>&1 |grep -c procps-ng |tr -d '\n'")
|
||||
if ps_version == "0" then
|
||||
return luci.sys.call("ps |grep openclash_watchdog.sh |grep -v grep >/dev/null") == 0
|
||||
if ps_version == "1" then
|
||||
return luci.sys.call("ps -efw |grep openclash_watchdog.sh |grep -v grep >/dev/null") == 0
|
||||
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
|
||||
|
||||
|
@ -274,6 +274,10 @@ local function corever()
|
|||
return uci:get("openclash", "config", "core_version")
|
||||
end
|
||||
|
||||
local function release_branch()
|
||||
return uci:get("openclash", "config", "release_branch")
|
||||
end
|
||||
|
||||
local function save_corever_branch()
|
||||
if luci.http.formvalue("core_ver") then
|
||||
uci:set("openclash", "config", "core_version", luci.http.formvalue("core_ver"))
|
||||
|
@ -919,6 +923,7 @@ function action_update()
|
|||
coretuncv = coretuncv(),
|
||||
opcv = opcv(),
|
||||
corever = corever(),
|
||||
release_branch = release_branch(),
|
||||
upchecktime = upchecktime(),
|
||||
corelv = corelv(),
|
||||
oplv = oplv();
|
||||
|
|
|
@ -163,6 +163,7 @@ o.rmempty = true
|
|||
---- de_exkey
|
||||
o = s:option(MultiValue, "de_ex_keyword", font_red..bold_on..translate("Exclude Keyword Match Default")..bold_off..font_off)
|
||||
o.rmempty = true
|
||||
o:depends("sub_convert", 0)
|
||||
o:value("过期时间")
|
||||
o:value("剩余流量")
|
||||
o:value("TG群")
|
||||
|
|
|
@ -95,6 +95,16 @@ o.default = "150"
|
|||
o.rmempty = true
|
||||
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.description = font_red..bold_on..translate("The Added Proxy Groups Must Exist Except 'DIRECT' & 'REJECT'")..bold_off..font_off
|
||||
uci:foreach("openclash", "groups",
|
||||
|
|
|
@ -11,7 +11,7 @@ local uci = require "luci.model.uci".cursor()
|
|||
|
||||
m = SimpleForm("openclash", translate("Other Rule Providers List"))
|
||||
m.description=translate("Rule Project:").." ConnersHua ( https://github.com/DivineEngine/Profiles )<br/>"..
|
||||
translate("Rule Project:").." lhie1 ( https://github.com/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 )"
|
||||
m.reset = false
|
||||
m.submit = false
|
||||
|
|
|
@ -150,6 +150,11 @@ o = s:option(Value, "psk", translate("Psk"))
|
|||
o.rmempty = false
|
||||
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"))
|
||||
for _, v in ipairs(encrypt_methods_ss) do o:value(v) end
|
||||
o.rmempty = true
|
||||
|
@ -204,6 +209,7 @@ o:depends("type", "ssr")
|
|||
o:depends("type", "vmess")
|
||||
o:depends("type", "socks5")
|
||||
o:depends("type", "trojan")
|
||||
o:depends({type = "snell", snell_version = "3"})
|
||||
|
||||
o = s:option(ListValue, "obfs", translate("obfs-mode"))
|
||||
o.rmempty = true
|
||||
|
@ -398,7 +404,7 @@ o = s:option(Value, "interface_name", translate("interface-name"))
|
|||
o.rmempty = true
|
||||
o.placeholder = translate("eth0")
|
||||
|
||||
-- [[ interface-name ]]--
|
||||
-- [[ routing-mark ]]--
|
||||
o = s:option(Value, "routing_mark", translate("routing-mark"))
|
||||
o.rmempty = true
|
||||
o.placeholder = translate("2333")
|
||||
|
|
|
@ -475,80 +475,122 @@ o = s:taboption("stream_enhance", Flag, "stream_auto_select_netflix", translate(
|
|||
o.default=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.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 = s:taboption("stream_enhance", Flag, "stream_auto_select_disney", translate("Disney Plus"))
|
||||
o.default=0
|
||||
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.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 = s:taboption("stream_enhance", Flag, "stream_auto_select_ytb", translate("YouTube Premium"))
|
||||
o.default=0
|
||||
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.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 = s:taboption("stream_enhance", Flag, "stream_auto_select_prime_video", translate("Amazon Prime Video"))
|
||||
o.default=0
|
||||
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.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 = s:taboption("stream_enhance", Flag, "stream_auto_select_hbo_now", translate("HBO Now"))
|
||||
o.default=0
|
||||
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.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 = s:taboption("stream_enhance", Flag, "stream_auto_select_hbo_max", translate("HBO Max"))
|
||||
o.default=0
|
||||
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.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 = s:taboption("stream_enhance", Flag, "stream_auto_select_hbo_go_asia", translate("HBO GO Asia"))
|
||||
o.default=0
|
||||
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.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 = s:taboption("stream_enhance", Flag, "stream_auto_select_tvb_anywhere", translate("TVB Anywhere+"))
|
||||
o.default=0
|
||||
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.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")
|
||||
|
||||
---- update Settings
|
||||
|
|
|
@ -57,11 +57,10 @@ ul{
|
|||
}
|
||||
|
||||
.radio-button{
|
||||
width: fit-content;
|
||||
width: fit-content;
|
||||
text-align: center;
|
||||
overflow: auto;
|
||||
margin: 10px auto;
|
||||
white-space: nowrap;
|
||||
background-color: #d1d1d1;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
|
|
@ -383,7 +383,7 @@
|
|||
XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "state")%>', null, function(x, status) {
|
||||
if ( x && x.status == 200 ) {
|
||||
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_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>";
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -24,8 +24,8 @@
|
|||
</select></td>
|
||||
<td width="25%"><%:Release Branch Selected%></td>
|
||||
<td width="25%" align="left"><select id="RELEASE_BRANCH">
|
||||
<option value="master"><%:Master%></option>
|
||||
<option value="dev"><%:Developer%></option>
|
||||
<option value="master">Master</option>
|
||||
<option value="dev">Developer</option>
|
||||
</select></td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -116,6 +116,12 @@
|
|||
else {
|
||||
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 new_op = arr_op[1];
|
||||
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>";
|
||||
}
|
||||
else if (oplvis != "") {
|
||||
|
|
|
@ -2474,29 +2474,50 @@ msgstr "展开策略组"
|
|||
msgid "Automatically Expand The Group When Selected"
|
||||
msgstr "自动展开嵌套的策略组并进行解锁检测,启用后可能会造成网络不稳定"
|
||||
|
||||
msgid "Netflix Group Filter Keywords"
|
||||
msgstr "Netflix 策略组筛选关键字"
|
||||
msgid "Netflix Group Filter"
|
||||
msgstr "Netflix 策略组筛选"
|
||||
|
||||
msgid "Disney Plus Group Filter Keywords"
|
||||
msgstr "Disney Plus 策略组筛选关键字"
|
||||
msgid "Disney Plus Group Filter"
|
||||
msgstr "Disney Plus 策略组筛选"
|
||||
|
||||
msgid "HBO Now Group Filter Keywords"
|
||||
msgstr "HBO Now 策略组筛选关键字"
|
||||
msgid "HBO Now Group Filter"
|
||||
msgstr "HBO Now 策略组筛选"
|
||||
|
||||
msgid "HBO Max Group Filter Keywords"
|
||||
msgstr "HBO Max 策略组筛选关键字"
|
||||
msgid "HBO Max Group Filter"
|
||||
msgstr "HBO Max 策略组筛选"
|
||||
|
||||
msgid "HBO GO Asia Group Filter Keywords"
|
||||
msgstr "HBO GO Asia 策略组筛选关键字"
|
||||
msgid "HBO GO Asia Group Filter"
|
||||
msgstr "HBO GO Asia 策略组筛选"
|
||||
|
||||
msgid "YouTube Premium Group Filter Keywords"
|
||||
msgstr "YouTube Premium 策略组筛选关键字"
|
||||
msgid "YouTube Premium Group Filter"
|
||||
msgstr "YouTube Premium 策略组筛选"
|
||||
|
||||
msgid "TVB Anywhere+ Group Filter Keywords"
|
||||
msgstr "TVB Anywhere+ 策略组筛选关键字"
|
||||
msgid "TVB Anywhere+ Group Filter"
|
||||
msgstr "TVB Anywhere+ 策略组筛选"
|
||||
|
||||
msgid "Amazon Prime Video Group Filter Keywords"
|
||||
msgstr "Amazon Prime Video 策略组筛选关键字"
|
||||
msgid "Amazon Prime Video Group Filter"
|
||||
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..."
|
||||
msgstr "提示:开始自动选择(检测)Netflix 解锁节点..."
|
||||
|
@ -2576,8 +2597,11 @@ msgstr "仅支持自制剧!开始进行解锁节点自动选择..."
|
|||
msgid "unlock test faild! start auto select unlock proxy..."
|
||||
msgstr "解锁检测失败!开始进行解锁节点自动选择..."
|
||||
|
||||
msgid "It Will Be Searched According To The Keywords When Auto Search Group Fails"
|
||||
msgstr "策略组自动获取失败时将会根据关键字进行匹配"
|
||||
msgid "It Will Be Searched According To The Regex When Auto Search Group Fails"
|
||||
msgstr "策略组自动获取失败时将会根据正则表达式进行匹配"
|
||||
|
||||
msgid "It Will Be Selected Region According To The Regex"
|
||||
msgstr "解锁区域将会根据正则表达式进行匹配"
|
||||
|
||||
msgid "not support unlock!"
|
||||
msgstr "不支持解锁!"
|
||||
|
@ -2597,9 +2621,21 @@ msgstr "解锁节点自动选择失败,无可用节点,回退到"
|
|||
msgid ", area:"
|
||||
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 "根据关键字搜索且自动获取策略组失败,请确认关键字的有效性!"
|
||||
|
||||
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"
|
||||
msgstr "*远程域名解析"
|
||||
|
||||
|
|
|
@ -1,26 +1,26 @@
|
|||
#!/bin/sh /etc/rc.common
|
||||
# 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
|
||||
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"))
|
||||
CLASH="/etc/openclash/clash"
|
||||
CLASH_CONFIG="/etc/openclash"
|
||||
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="/etc/openclash/cache.db"
|
||||
LOG_FILE="/tmp/openclash.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"
|
||||
DNS_FILE="/tmp/yaml_dns.yaml"
|
||||
GAME_RULE_FILE="/tmp/yaml_game_rule.yaml"
|
||||
|
@ -301,7 +301,7 @@ yml_provider_path()
|
|||
end
|
||||
#CDN Replace
|
||||
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
|
||||
};
|
||||
if not Value_1.eql?(Value['$2']) then
|
||||
|
@ -1172,6 +1172,11 @@ do_run_file()
|
|||
geoip_path="/etc/openclash/Country.mmdb"
|
||||
chnr_path="/etc/openclash/china_ip_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
|
||||
else
|
||||
dev_core_path="/tmp/etc/openclash/core/clash"
|
||||
|
@ -1179,10 +1184,13 @@ do_run_file()
|
|||
geoip_path="/tmp/etc/openclash/Country.mmdb"
|
||||
chnr_path="/tmp/etc/openclash/china_ip_route.ipset"
|
||||
chnr6_path="/tmp/etc/openclash/china_ip6_route.ipset"
|
||||
rm -rf "/etc/openclash/Country.mmdb" 2>/dev/null
|
||||
rm -rf "/etc/openclash/china_ip_route.ipset" 2>/dev/null
|
||||
rm -rf "/etc/openclash/china_ip6_route.ipset" 2>/dev/null
|
||||
rm -rf "/etc/openclash/core" 2>/dev/null
|
||||
CACHE_PATH="/tmp/etc/openclash/cache.db"
|
||||
mkdir -p /tmp/etc/openclash
|
||||
[ ! -h "/etc/openclash/Country.mmdb" ] && mv "/etc/openclash/Country.mmdb" "$geoip_path" 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
|
||||
|
||||
rm -rf "/etc/openclash/clash" 2>/dev/null
|
||||
|
@ -1226,12 +1234,41 @@ do_run_file()
|
|||
core_type="TUN"
|
||||
core_start_log="Tip: Detected that the Dev Core is not Installed, Use TUN Core to Start..."
|
||||
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 "$dev_core_path" ] && chmod 4755 "$dev_core_path" 2>/dev/null
|
||||
|
||||
#文件检查
|
||||
#fake_ip_filter
|
||||
if [ "$3" = "fake-ip" ]; 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
|
||||
}
|
||||
|
||||
[ ! -f "$geoip_path" ] && {
|
||||
LOG_OUT "Tip: Detected that the GEOIP Database is not Installed, Ready to Download..."
|
||||
nofile=1
|
||||
nohup /usr/share/openclash/openclash_ipdb.sh &
|
||||
}
|
||||
|
||||
[ ! -f "$CLASH" ] && {
|
||||
LOG_OUT "Tip: Detected that the Core is not Installed, Ready to Download..."
|
||||
nofile=1
|
||||
rm -rf "/tmp/clash_last_version"
|
||||
nohup /usr/share/openclash/openclash_core.sh "$core_type" &
|
||||
}
|
||||
|
||||
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..."
|
||||
nofile=1
|
||||
nohup /usr/share/openclash/openclash_chnroute.sh &
|
||||
#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 [ "$nofile" = "1" ]; then
|
||||
del_lock
|
||||
exit 0
|
||||
fi
|
||||
[ -f "$CACHE_PATH" ] && [ "$small_flash_memory" = "1" ] && {
|
||||
ln -s "$CACHE_PATH" /etc/openclash/cache.db 2>/dev/null
|
||||
}
|
||||
|
||||
if [ -z "$_koolshare" ]; 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
|
||||
check_interface_name
|
||||
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
|
||||
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
|
||||
kill_clash
|
||||
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/rule_provider/* 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
|
||||
DNSPORT=$(uci -q get dhcp.@dnsmasq[0].port)
|
||||
if [ -z "$DNSPORT" ]; then
|
||||
DNSPORT=$(netstat -nlp |grep -E '127.0.0.1:.*dnsmasq' |awk -F '127.0.0.1:' '{print $2}' |awk '{print $1}' |head -1 || echo "$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
|
||||
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"
|
||||
|
@ -1861,6 +1876,10 @@ if [ -z "$en_mode_tun" ] || [ "$en_mode_tun" -eq 2 ]; then
|
|||
if [ "$en_mode" = "fake-ip" ]; then
|
||||
iptables -t nat -N 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
|
||||
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"
|
||||
|
@ -1870,7 +1889,7 @@ if [ -z "$en_mode_tun" ] || [ "$en_mode_tun" -eq 2 ]; then
|
|||
|
||||
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
|
||||
if [ -n "$en_mode_tun" ]; then
|
||||
#TUN模式
|
||||
|
@ -1902,7 +1921,7 @@ if [ -n "$en_mode_tun" ]; 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"
|
||||
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
|
||||
iptables -t mangle -N 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
|
||||
fi
|
||||
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
|
||||
|
||||
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 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
|
||||
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
|
||||
if [ "$?" -eq "0" ] && [ -s "$LAST_OPVER" ]; then
|
||||
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="external-controller" content="http://secret@example.com:9090"-->
|
||||
<title>Clash</title>
|
||||
<script type="module" crossorigin src="./assets/index.c727f058.js"></script>
|
||||
<link rel="modulepreload" href="./assets/vendor.5151d57b.js">
|
||||
<link rel="stylesheet" href="./assets/index.61b62488.css">
|
||||
<script type="module" crossorigin src="./assets/index.049e98b9.js"></script>
|
||||
<link rel="modulepreload" href="./assets/vendor.e882027f.js">
|
||||
<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>
|
||||
<body>
|
||||
<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")
|
||||
[ -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")"
|
||||
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"
|
||||
else
|
||||
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")
|
||||
|
||||
[ ! -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
|
||||
dev_core_path="/etc/openclash/core/clash"
|
||||
tun_core_path="/etc/openclash/core/clash_tun"
|
||||
|
|
|
@ -26,10 +26,15 @@ fi
|
|||
|
||||
CONFIG_FILE=$(unify_ps_cfgname)
|
||||
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="/etc/openclash/history/${CONFIG_NAME%.*}.db"
|
||||
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
|
||||
|
||||
if [ -z "$CONFIG_FILE" ] || [ ! -f "$CONFIG_FILE" ]; then
|
||||
|
|
|
@ -35,10 +35,10 @@
|
|||
LOG_OUT "Start Downloading Third Party Rules in Use..."
|
||||
if [ "$rule_name" = "lhie1" ]; 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
|
||||
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
|
||||
sed -i '1i rules:' /tmp/rules.yaml
|
||||
elif [ "$rule_name" = "ConnersHua" ]; then
|
||||
|
|
|
@ -8,15 +8,14 @@ local uci = require("luci.model.uci").cursor()
|
|||
local fs = require "luci.openclash"
|
||||
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 filmId = 81215567
|
||||
local filmId = 70143836
|
||||
local type = arg[1]
|
||||
local enable = tonumber(uci:get("openclash", "config", "stream_auto_select")) or 0
|
||||
local now_name, group_name, group_type, group_show, status
|
||||
local groups = {}
|
||||
local proxies = {}
|
||||
|
||||
if enable == 0 then os.exit(0) end
|
||||
if not type then os.exit(0) end
|
||||
if enable == 0 or not type then os.exit(0) end
|
||||
|
||||
function unlock_auto_select()
|
||||
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 ip = luci.sys.exec("uci -q get network.lan.ipaddr |awk -F '/' '{print $1}' 2>/dev/null |tr -d '\n'")
|
||||
local original = {}
|
||||
local key_groups = {}
|
||||
local other_region_unlock = {}
|
||||
local tested_proxy = {}
|
||||
local fallback_select = {}
|
||||
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 = "full support, area:"
|
||||
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 faild_test_start = "unlock test faild! start auto select unlock proxy..."
|
||||
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
|
||||
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
|
||||
key_group = uci:get("openclash", "config", "stream_auto_select_group_key_prime_video") or "prime video|amazon"
|
||||
end
|
||||
string.gsub(key_group, '[^%|]+', function(w) table.insert(key_groups, w) end)
|
||||
if #key_groups == 0 then table.insert(key_groups, type) end
|
||||
if not key_group then key_group = type end
|
||||
else
|
||||
table.insert(key_groups, auto_get_group)
|
||||
key_group = "^" .. auto_get_group .. "$"
|
||||
end
|
||||
|
||||
--save group name
|
||||
|
@ -98,189 +101,206 @@ function unlock_auto_select()
|
|||
group_match = false
|
||||
for _, value in pairs(info.proxies) do
|
||||
--match only once
|
||||
for g = 1, #key_groups do
|
||||
while true do
|
||||
--find group
|
||||
if not string.find(string.lower(value.name), string.lower(key_groups[g])) then
|
||||
break
|
||||
while true do
|
||||
--find group
|
||||
if not datamatch(value.name, key_group) then
|
||||
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
|
||||
--get groups info
|
||||
get_proxy(info, value.name, value.name)
|
||||
table.insert(tested_proxy, now_name)
|
||||
group_match = true
|
||||
--test now proxy
|
||||
now = os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..group_show.." ➟ "..now_name.."】"
|
||||
end
|
||||
if status ~= 2 then
|
||||
os.execute("sleep 3")
|
||||
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.."】"
|
||||
end
|
||||
if status == 2 then
|
||||
if region and region ~= "" then
|
||||
print(now..full_support.."【"..region.."】")
|
||||
else
|
||||
now = os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..group_show.." ➟ "..now_name.."】"
|
||||
print(now..full_support_no_area)
|
||||
end
|
||||
if status ~= 2 then
|
||||
os.execute("sleep 3")
|
||||
region = proxy_unlock_test()
|
||||
end
|
||||
if status == 2 then
|
||||
if region then
|
||||
print(now..full_support.."【"..region.."】")
|
||||
else
|
||||
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
|
||||
break
|
||||
elseif status == 3 then
|
||||
table.insert(other_region_unlock, {get_group_now(info, value.name), group_name, now_name})
|
||||
print(now..other_region_unlock_test_start)
|
||||
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..faild_test_start)
|
||||
print(now..no_unlock_test_start)
|
||||
end
|
||||
|
||||
--find new unlock
|
||||
if value.type == "Selector" then
|
||||
--loop proxy test
|
||||
for i = 1, #(value.all) do
|
||||
--save group current selected
|
||||
proxy_default = value.now
|
||||
while true do
|
||||
if value.all[i] == "REJECT" or value.all[i] == "DIRECT" then
|
||||
break
|
||||
else
|
||||
get_proxy(info, value.all[i], value.name)
|
||||
if group_type == "Selector" 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)))
|
||||
else
|
||||
print(now..faild_test_start)
|
||||
end
|
||||
|
||||
--find new unlock
|
||||
if value.type == "Selector" then
|
||||
--loop proxy test
|
||||
for i = 1, #(value.all) do
|
||||
--save group current selected
|
||||
proxy_default = value.now
|
||||
while true do
|
||||
if value.all[i] == "REJECT" or value.all[i] == "DIRECT" then
|
||||
break
|
||||
else
|
||||
get_proxy(info, value.all[i], value.name)
|
||||
if group_type == "Selector" 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)))
|
||||
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
|
||||
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
|
||||
--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)))
|
||||
--skip tested proxy
|
||||
while true do
|
||||
if table_include(tested_proxy, now_name) then
|
||||
if table_include(tested_proxy, proxy) then
|
||||
break
|
||||
else
|
||||
table.insert(tested_proxy, now_name)
|
||||
table.insert(tested_proxy, proxy)
|
||||
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.."】"
|
||||
while true do
|
||||
if proxy == "REJECT" or proxy == "DIRECT" then
|
||||
break
|
||||
else
|
||||
now = os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..group_show.." ➟ "..now_name.."】"
|
||||
end
|
||||
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, now_name).."】"..area_i18.."【"..region.."】")
|
||||
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 and 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 == 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
|
||||
print(now..full_support_no_area)
|
||||
print(os.date("%Y-%m-%d %H:%M:%S").." "..type.." "..gorup_i18.."【"..value.name.."】"..select_success.."【"..get_group_now(info, now_name).."】")
|
||||
print(now..test_faild)
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
break
|
||||
elseif status == 1 then
|
||||
if type == "Netflix" then
|
||||
print(now..original_no_select)
|
||||
end
|
||||
if status == 2 then
|
||||
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
|
||||
print(now..no_unlock_no_select)
|
||||
fallback_select = original
|
||||
end
|
||||
else
|
||||
print(now..faild_no_select)
|
||||
for k, v in pairs(fallback_select) 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])))
|
||||
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
|
||||
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
|
||||
break
|
||||
end
|
||||
if group_match then break end
|
||||
break
|
||||
end
|
||||
if auto_get_group and group_match 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, "/%?(.+)")))
|
||||
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()
|
||||
status = 0
|
||||
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 result = {}
|
||||
local region
|
||||
local regex = uci:get("openclash", "config", "stream_auto_select_region_key_netflix") or ""
|
||||
if info then
|
||||
info = json.parse(info)
|
||||
end
|
||||
|
@ -527,8 +553,11 @@ function netflix_unlock_test()
|
|||
string.gsub(info.url_effective, '[^/]+', function(w) table.insert(result, w) end)
|
||||
region = string.upper(string.match(result[3], "^%a+"))
|
||||
if region == "TITLE" then region = "US" end
|
||||
if not datamatch(region, regex) then
|
||||
status = 3
|
||||
end
|
||||
return region
|
||||
elseif info.http_code == 404 then
|
||||
elseif info.http_code == 404 or info.http_code == 403 then
|
||||
status = 1
|
||||
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 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 regex = uci:get("openclash", "config", "stream_auto_select_region_key_disney") or ""
|
||||
if tonumber(httpcode) == 200 then
|
||||
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))
|
||||
if url_effective == "https://disneyplus.disney.co.jp/" then
|
||||
status = 2
|
||||
region = "JP"
|
||||
if not datamatch(region, regex) then
|
||||
status = 3
|
||||
end
|
||||
return region
|
||||
elseif string.find(url_effective,"hotstar") then
|
||||
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))
|
||||
if region and region ~= "" then
|
||||
status = 2
|
||||
if not datamatch(region, regex) then
|
||||
status = 3
|
||||
end
|
||||
return region
|
||||
end
|
||||
end
|
||||
|
@ -585,7 +621,8 @@ function hbo_max_unlock_test()
|
|||
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 result = {}
|
||||
local region
|
||||
local region = ""
|
||||
local regex = uci:get("openclash", "config", "stream_auto_select_region_key_hbo_max") or ""
|
||||
if data then
|
||||
data = json.parse(data)
|
||||
end
|
||||
|
@ -597,10 +634,11 @@ function hbo_max_unlock_test()
|
|||
string.gsub(data.url_effective, '[^/]+', function(w) table.insert(result, w) end)
|
||||
if result[3] then
|
||||
region = string.upper(string.match(result[3], "^%a+"))
|
||||
if region then
|
||||
return region
|
||||
end
|
||||
end
|
||||
if not datamatch(region, regex) then
|
||||
status = 3
|
||||
end
|
||||
return region
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -611,6 +649,8 @@ function hbo_go_asia_unlock_test()
|
|||
status = 0
|
||||
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 regex = uci:get("openclash", "config", "stream_auto_select_region_key_hbo_go_asia") or ""
|
||||
local region = ""
|
||||
if tonumber(httpcode) == 200 then
|
||||
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))
|
||||
|
@ -621,8 +661,12 @@ function hbo_go_asia_unlock_test()
|
|||
if data.territory then
|
||||
status = 2
|
||||
if data.country then
|
||||
return string.upper(data.country)
|
||||
region = string.upper(data.country)
|
||||
end
|
||||
if not datamatch(region, regex) then
|
||||
status = 3
|
||||
end
|
||||
return region
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -633,7 +677,8 @@ function ytb_unlock_test()
|
|||
status = 0
|
||||
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 region
|
||||
local region = ""
|
||||
local regex = uci:get("openclash", "config", "stream_auto_select_region_key_ytb") or ""
|
||||
if tonumber(httpcode) == 200 then
|
||||
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))
|
||||
|
@ -643,22 +688,25 @@ function ytb_unlock_test()
|
|||
region = string.sub(string.match(data, "\"GL\":\"%a+\""), 7, -2)
|
||||
if region then
|
||||
status = 2
|
||||
return region
|
||||
else
|
||||
if not string.find(data,"www%.google%.cn") then
|
||||
status = 2
|
||||
return "US"
|
||||
region = "US"
|
||||
end
|
||||
end
|
||||
if not datamatch(region, regex) then
|
||||
status = 3
|
||||
end
|
||||
end
|
||||
return
|
||||
return region
|
||||
end
|
||||
|
||||
function tvb_anywhere_unlock_test()
|
||||
status = 0
|
||||
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 region
|
||||
local region = ""
|
||||
local regex = uci:get("openclash", "config", "stream_auto_select_region_key_tvb_anywhere") or ""
|
||||
if tonumber(httpcode) == 200 then
|
||||
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))
|
||||
|
@ -667,13 +715,15 @@ function tvb_anywhere_unlock_test()
|
|||
end
|
||||
if data and data.allow_in_this_country then
|
||||
status = 2
|
||||
region = string.upper(data.country)
|
||||
if region then
|
||||
return region
|
||||
if data.country then
|
||||
region = string.upper(data.country)
|
||||
end
|
||||
if not datamatch(region, regex) then
|
||||
status = 3
|
||||
end
|
||||
end
|
||||
end
|
||||
return
|
||||
return region
|
||||
end
|
||||
|
||||
function prime_video_unlock_test()
|
||||
|
@ -681,6 +731,7 @@ function prime_video_unlock_test()
|
|||
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 region
|
||||
local regex = uci:get("openclash", "config", "stream_auto_select_region_key_prime_video") or ""
|
||||
if tonumber(httpcode) == 200 then
|
||||
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))
|
||||
|
@ -688,6 +739,9 @@ function prime_video_unlock_test()
|
|||
region = string.sub(string.match(data, "\"currentTerritory\":\"%a+\""), 21, -2)
|
||||
if region then
|
||||
status = 2
|
||||
if not datamatch(region, regex) then
|
||||
status = 3
|
||||
end
|
||||
return region
|
||||
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 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
|
||||
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
|
||||
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)
|
||||
|
|
|
@ -552,4 +552,23 @@ ipv4-c001-cgk001-moratel-isp.1.oca.nflxvideo.net
|
|||
ipv4-c221-sjc002-ix.1.oca.nflxvideo.net
|
||||
ipv4-c204-sjc002-dev-ix.1.oca.nflxvideo.net
|
||||
ipv4-c070-lax009-ix.1.oca.nflxvideo.net
|
||||
ipv4-c024-lax009-ix.1.oca.nflxvideo.net
|
||||
ipv4-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:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
Special:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
Netflix:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
Spotify:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
YouTube:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
Bilibili:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
IQ:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
IQIYI:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
Letv:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
Netease Music:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
Tencent Video:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
Youku:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
WeTV:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
ABC:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
Abema TV:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
Amazon:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
Apple News:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
Apple TV:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
Bahamut:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
BBC iPlayer:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
DAZN:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
Discovery Plus:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
Disney Plus:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
encoreTVB:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
Fox Now:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
Fox+:
|
||||
type: http
|
||||
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+"
|
||||
interval: 86400
|
||||
HBO Go:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
HBO Max:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
Hulu Japan:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
Hulu:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
Japonx:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
JOOX:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
KKBOX:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
KKTV:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
Line TV:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
myTV SUPER:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
Pandora:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
PBS:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
Pornhub:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
Soundcloud:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
ViuTV:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
Telegram:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
Steam:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
Speedtest:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
PayPal:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
Microsoft:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
PROXY:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
Domestic:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
Apple:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
Google FCM:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
Scholar:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
Domestic IPs:
|
||||
type: http
|
||||
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"
|
||||
interval: 86400
|
||||
LAN:
|
||||
type: http
|
||||
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"
|
||||
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
|
||||
放行规则-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
|
||||
反劫持规则,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
|
||||
国内域名白名单(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/StreamingMedia/,StreamingCN.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/StreamingMedia/,Streaming.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
|
||||
微软服务,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/Guard/,Privacy.yaml
|
||||
ABC,lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,ABC.yaml
|
||||
Abema TV,lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,Abema%20TV.yaml,Abema TV.yaml
|
||||
ABC,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,ABC.yaml
|
||||
Abema TV,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Abema%20TV.yaml,Abema TV.yaml
|
||||
AbemaTV(By ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,AbemaTV.yaml,AbemaTV-ACL4SSR.yaml
|
||||
AbemaTV,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,AbemaTV.yaml
|
||||
Adobe,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Adobe.yaml
|
||||
All-4,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,All-4.yaml
|
||||
Amazon(By ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Amazon.yaml,Amazon-ACL4SSR.yaml
|
||||
Amazon,lhie1,classical,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
|
||||
AppStore,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Apple/,AppStore.yaml
|
||||
AppStoreConnect,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Apple/,AppStoreConnect.yaml
|
||||
Apple FindMy,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Apple/,FindMy.yaml
|
||||
Apple Music,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Apple/,Music.yaml
|
||||
Apple News(By lhie1),lhie1,classical,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 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 TestFlight,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Apple/,TestFlight.yaml
|
||||
Apple iCloud,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Apple/,iCloud.yaml
|
||||
Apple(By ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Apple.yaml,Apple-ACL4SSR.yaml
|
||||
Apple(By lhie1),lhie1,classical,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
|
||||
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
|
||||
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
|
||||
BanAD,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/,BanAD.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
|
||||
BanProgramAD,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/,BanProgramAD.yaml
|
||||
Bilibili(By ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Bilibili.yaml,Bilibili-ACL4SSR.yaml
|
||||
Bilibili,lhie1,classical,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
|
||||
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
|
||||
|
@ -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
|
||||
ChinaMedia,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/,ChinaMedia.yaml
|
||||
Chromecast,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Google/,Chromecast.yaml
|
||||
DAZN(By lhie1),lhie1,classical,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
|
||||
Deezer,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Music/,Deezer.yaml
|
||||
Developer,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Developer.yaml
|
||||
Discord,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Game/,Discord.yaml
|
||||
DiscoveryPlus,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,DiscoveryPlus.yaml
|
||||
Disney Plus,lhie1,classical,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,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,DisneyPlus.yaml
|
||||
Download,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/,Download.yaml
|
||||
EHGallery,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,EHGallery.yaml
|
||||
Epic,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Epic.yaml
|
||||
FOX,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,FOX.yaml
|
||||
Fox Now,lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,Fox%20Now.yaml,Fox Now.yaml
|
||||
Fox+,lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,Fox+.yaml
|
||||
Fox Now,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Fox%20Now.yaml,Fox Now.yaml
|
||||
Fox+,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Fox+.yaml
|
||||
GFW地址,ConnersHua,ipcidr,DivineEngine/Profiles/master/Clash/RuleSet/Extra/,IP-Blackhole.yaml
|
||||
Google,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Google.yaml
|
||||
GoogleCN,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,GoogleCN.yaml
|
||||
|
@ -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
|
||||
GoogleVoice,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Google/,GoogleVoice.yaml
|
||||
HBO(By ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,HBO.yaml,HBO-ACL4SSR.yaml
|
||||
HBO(By lhie1),lhie1,classical,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-GO-HKG,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,HBO-GO-HKG.yaml
|
||||
HWTV,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,HWTV.yaml
|
||||
Himalaya,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Podcast/,Himalaya.yaml
|
||||
Hulu Japan,lhie1,classical,lhie1/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 Japan,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Hulu Japan.yaml
|
||||
Hulu(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Hulu.yaml,Hulu-lhie1.yaml
|
||||
Hulu,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,Hulu.yaml
|
||||
Hulu-JPN,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,Hulu-JPN.yaml
|
||||
ITV,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,ITV.yaml
|
||||
Instagram,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Music/,Instagram.yaml
|
||||
JOOX(By lhie1),lhie1,classical,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
|
||||
Japonx,lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,Japonx.yaml
|
||||
KKBOX(By lhie1),lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,KKBOX.yaml,KKBOX-lhie1.yaml
|
||||
Japonx,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Japonx.yaml
|
||||
KKBOX(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,KKBOX.yaml,KKBOX-lhie1.yaml
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
My5,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,My5.yaml
|
||||
NetEaseMusic,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,NetEaseMusic.yaml
|
||||
Netease Music,lhie1,classical,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 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
|
||||
Nintendo,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Game/,Nintendo.yaml
|
||||
Now-E,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,Now-E.yaml
|
||||
OneDrive(By ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,OneDrive.yaml,OneDrive-ACL4SSR.yaml
|
||||
OneDrive,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Microsoft/,OneDrive.yaml
|
||||
Origin,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Game/,Origin.yaml
|
||||
PBS(By lhie1),lhie1,classical,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
|
||||
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
|
||||
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
|
||||
Peacock,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,Peacock.yaml
|
||||
Porn,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Porn.yaml
|
||||
Pornhub(By lhie1),lhie1,classical,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
|
||||
Prime-Video,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,Prime-Video.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
|
||||
Sony,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Sony.yaml
|
||||
SoundCloud,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Music/,SoundCloud.yaml
|
||||
Soundcloud(By lhie1),lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,Soundcloud.yaml,Soundcloud-lhie1.yaml
|
||||
Speedtest,lhie1,classical,lhie1/Rules/master/Clash/Provider/,Speedtest.yaml
|
||||
Soundcloud(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Soundcloud.yaml,Soundcloud-lhie1.yaml
|
||||
Speedtest,lhie1,classical,dler-io/Rules/master/Clash/Provider/,Speedtest.yaml
|
||||
Spotify(By ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Spotify.yaml,Spotify-ACL4SSR.yaml
|
||||
Spotify(By lhie1),lhie1,classical,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
|
||||
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
|
||||
TIDAL,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Music/,TIDAL.yaml
|
||||
TaiwanGood,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,TaiwanGood.yaml
|
||||
Telegram(By ACL4SSR),ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Telegram.yaml,Telegram-ACL4SSR.yaml
|
||||
Telegram(By lhie1),lhie1,classical,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
|
||||
TelegramNL,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Telegram/,TelegramNL.yaml
|
||||
TelegramSG,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Telegram/,TelegramSG.yaml
|
||||
TelegramUS,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Telegram/,TelegramUS.yaml
|
||||
Tencent Video,lhie1,classical,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
|
||||
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
|
||||
WeTV,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,WeTV.yaml
|
||||
Xbox,ACL4SSR,classical,ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/,Xbox.yaml
|
||||
YouTube Music,lhie1,classical,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 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
|
||||
YouTubeMusic,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Music/,YouTubeMusic.yaml
|
||||
Youku,lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,Youku.yaml
|
||||
encoreTVB(By lhie1),lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,encoreTVB.yaml,encoreTVB-lhie1.yaml
|
||||
Youku,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,Youku.yaml
|
||||
encoreTVB(By lhie1),lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,encoreTVB.yaml,encoreTVB-lhie1.yaml
|
||||
encoreTVB,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,encoreTVB.yaml
|
||||
iCloud-email,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/Extra/Apple/,Mail.yaml
|
||||
iQIYI,ConnersHua,classical,DivineEngine/Profiles/master/Clash/RuleSet/StreamingMedia/Video/,iQIYI.yaml
|
||||
iQiyi,lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,iQiyi.yaml
|
||||
myTV SUPER,lhie1,classical,lhie1/Rules/master/Clash/Provider/Media/,myTV%20SUPER.yaml,myTV SUPER.yaml
|
||||
iQiyi,lhie1,classical,dler-io/Rules/master/Clash/Provider/Media/,iQiyi.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
|
||||
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
|
||||
无Urltest,no_urltest.ini,https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/no_urltest.ini
|
||||
带Urltest,urltest.ini,https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/urltest.ini
|
||||
ConnersHua 神机规则 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 神机规则 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 洞主规则完整版,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
|
||||
|
@ -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 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 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 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 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 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 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 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 WithGFW,ACL4SSR_WithChinaIp_WithGFW.ini,https://raw.githubusercontent.com/tindy2013/subconverter/master/base/config/ACL4SSR_WithChinaIp_WithGFW.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
|
||||
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
|
|
@ -217,9 +217,25 @@ do
|
|||
end
|
||||
}.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{
|
||||
#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
|
||||
Value['proxy-groups'][$count]['proxies'].each{
|
||||
|x|
|
||||
|
|
|
@ -178,6 +178,8 @@ yml_groups_set()
|
|||
config_get "test_url" "$section" "test_url" ""
|
||||
config_get "test_interval" "$section" "test_interval" ""
|
||||
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
|
||||
return
|
||||
|
@ -258,15 +260,21 @@ yml_groups_set()
|
|||
sed -i "/use: ${group_name}/d" $GROUP_FILE 2>/dev/null
|
||||
fi
|
||||
|
||||
[ ! -z "$test_url" ] && {
|
||||
[ -n "$test_url" ] && {
|
||||
echo " url: $test_url" >>$GROUP_FILE
|
||||
}
|
||||
[ ! -z "$test_interval" ] && {
|
||||
[ -n "$test_interval" ] && {
|
||||
echo " interval: \"$test_interval\"" >>$GROUP_FILE
|
||||
}
|
||||
[ ! -z "$tolerance" ] && {
|
||||
[ -n "$tolerance" ] && {
|
||||
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)
|
||||
|
|
|
@ -745,6 +745,13 @@ do
|
|||
system(psk)
|
||||
end
|
||||
}.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;
|
||||
if '$server_type' == 'socks5' or '$server_type' == 'http' then
|
||||
Thread.new{
|
||||
|
|
|
@ -217,6 +217,7 @@ yml_servers_set()
|
|||
config_get "auth_pass" "$section" "auth_pass" ""
|
||||
config_get "psk" "$section" "psk" ""
|
||||
config_get "obfs_snell" "$section" "obfs_snell" ""
|
||||
config_get "snell_version" "$section" "snell_version" ""
|
||||
config_get "sni" "$section" "sni" ""
|
||||
config_get "alpn" "$section" "alpn" ""
|
||||
config_get "http_path" "$section" "http_path" ""
|
||||
|
@ -661,6 +662,11 @@ cat >> "$SERVER_FILE" <<-EOF
|
|||
port: $port
|
||||
psk: $psk
|
||||
EOF
|
||||
if [ -n "$snell_version" ]; then
|
||||
cat >> "$SERVER_FILE" <<-EOF
|
||||
version: "$snell_version"
|
||||
EOF
|
||||
fi
|
||||
if [ "$obfs_snell" != "none" ] && [ ! -z "$host" ]; then
|
||||
cat >> "$SERVER_FILE" <<-EOF
|
||||
obfs-opts:
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=shadowsocks-rust
|
||||
PKG_VERSION:=1.12.5
|
||||
PKG_VERSION:=1.13.1
|
||||
PKG_RELEASE:=$(AUTORELEASE)
|
||||
|
||||
PKG_SOURCE_HEADER:=shadowsocks-v$(PKG_VERSION)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=Xray-core
|
||||
PKG_VERSION:=1.5.2
|
||||
PKG_VERSION:=1.5.3
|
||||
PKG_RELEASE:=$(AUTORELEASE)
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=xray-plugin
|
||||
PKG_VERSION:=1.5.2
|
||||
PKG_VERSION:=1.5.3
|
||||
PKG_RELEASE:=$(AUTORELEASE)
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
|
|
Loading…
Reference in New Issue