update-10.13

This commit is contained in:
github-actions[bot] 2021-10-13 09:03:39 +08:00
parent 54209fe518
commit 49e5709a89
32 changed files with 2049 additions and 3790 deletions

View File

@ -13,8 +13,8 @@ end
function check_update() function check_update()
needs_update, notice, md5 = false, false, false needs_update, notice, md5 = false, false, false
remote_version = luci.sys.exec("curl -s https://op.supes.top/firmware/" ..model.. "/version.txt") remote_version = luci.sys.exec("curl -skfL https://op.supes.top/firmware/" ..model.. "/version.txt")
updatelogs = luci.sys.exec("curl -s https://op.supes.top/firmware/" ..model.. "/updatelogs.txt") updatelogs = luci.sys.exec("curl -skfL https://op.supes.top/firmware/" ..model.. "/updatelogs.txt")
remoteformat = luci.sys.exec("date -d $(echo \"" ..remote_version.. "\" | tr '\r\n' ',' | awk -F, '{printf $1}' | awk -F. '{printf $3\"-\"$1\"-\"$2}') +%s") remoteformat = luci.sys.exec("date -d $(echo \"" ..remote_version.. "\" | tr '\r\n' ',' | awk -F, '{printf $1}' | awk -F. '{printf $3\"-\"$1\"-\"$2}') +%s")
fnotice = luci.sys.exec("echo \"" ..remote_version.. "\" | tr '\r\n' ',' | awk -F, '{printf $(NF-1)}'") fnotice = luci.sys.exec("echo \"" ..remote_version.. "\" | tr '\r\n' ',' | awk -F, '{printf $(NF-1)}'")
dateyr = luci.sys.exec("echo \"" ..remote_version.. "\" | tr '\r\n' ',' | awk -F. '{printf $1\".\"$2}'") dateyr = luci.sys.exec("echo \"" ..remote_version.. "\" | tr '\r\n' ',' | awk -F. '{printf $1\".\"$2}'")

View File

@ -9,16 +9,12 @@ PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/package.mk
define Package/$(PKG_NAME)/config
select PACKAGE_libcap-bin
endef
define Package/$(PKG_NAME) define Package/$(PKG_NAME)
CATEGORY:=LuCI CATEGORY:=LuCI
SUBMENU:=3. Applications SUBMENU:=3. Applications
TITLE:=LuCI support for clash TITLE:=LuCI support for clash
PKGARCH:=all PKGARCH:=all
DEPENDS:=+iptables +dnsmasq-full +coreutils +coreutils-nohup +bash +curl +ca-bundle +ipset +ip-full +iptables-mod-tproxy +iptables-mod-extra +libcap +ruby +ruby-yaml DEPENDS:=+iptables +dnsmasq-full +coreutils +coreutils-nohup +bash +curl +ca-bundle +ipset +ip-full +iptables-mod-tproxy +iptables-mod-extra +libcap +libcap-bin +ruby +ruby-yaml +kmod-tun
MAINTAINER:=vernesong MAINTAINER:=vernesong
endef endef
@ -81,6 +77,8 @@ define Package/$(PKG_NAME)/postrm
rm -rf /tmp/openclash.log rm -rf /tmp/openclash.log
rm -rf /tmp/openclash_start.log rm -rf /tmp/openclash_start.log
rm -rf /tmp/openclash_last_version rm -rf /tmp/openclash_last_version
rm -rf /tmp/openclash_config.tmp
rm -rf /tmp/openclash.change
rm -rf /tmp/Proxy_Group rm -rf /tmp/Proxy_Group
rm -rf /tmp/rules_name rm -rf /tmp/rules_name
rm -rf /tmp/rule_providers_name rm -rf /tmp/rule_providers_name
@ -88,6 +86,7 @@ define Package/$(PKG_NAME)/postrm
rm -rf /usr/share/openclash/backup rm -rf /usr/share/openclash/backup
rm -rf /tmp/openclash_fake_filter.list rm -rf /tmp/openclash_fake_filter.list
rm -rf /tmp/openclash_servers_fake_filter.conf rm -rf /tmp/openclash_servers_fake_filter.conf
rm -rf /tmp/dler*
uci -q delete firewall.openclash uci -q delete firewall.openclash
uci -q commit firewall uci -q commit firewall
uci -q delete ucitrack.@openclash[-1] uci -q delete ucitrack.@openclash[-1]

View File

@ -30,6 +30,7 @@ function index()
entry({"admin", "services", "openclash", "coreupdate"},call("action_coreupdate")) entry({"admin", "services", "openclash", "coreupdate"},call("action_coreupdate"))
entry({"admin", "services", "openclash", "ping"}, call("act_ping")) entry({"admin", "services", "openclash", "ping"}, call("act_ping"))
entry({"admin", "services", "openclash", "download_rule"}, call("action_download_rule")) entry({"admin", "services", "openclash", "download_rule"}, call("action_download_rule"))
entry({"admin", "services", "openclash", "download_netflix_domains"}, call("action_download_netflix_domains"))
entry({"admin", "services", "openclash", "restore"}, call("action_restore_config")) entry({"admin", "services", "openclash", "restore"}, call("action_restore_config"))
entry({"admin", "services", "openclash", "backup"}, call("action_backup")) entry({"admin", "services", "openclash", "backup"}, call("action_backup"))
entry({"admin", "services", "openclash", "remove_all_core"}, call("action_remove_all_core")) entry({"admin", "services", "openclash", "remove_all_core"}, call("action_remove_all_core"))
@ -298,6 +299,11 @@ function download_rule()
return state return state
end end
function download_netflix_domains()
local state = luci.sys.call(string.format('/usr/share/openclash/openclash_download_rule_list.sh "%s" >/dev/null 2>&1',"netflix_domains"))
return state
end
function action_restore_config() function action_restore_config()
uci:set("openclash", "config", "enable", "0") uci:set("openclash", "config", "enable", "0")
uci:commit("openclash") uci:commit("openclash")
@ -629,11 +635,11 @@ end
end end
function action_toolbar_show_sys() function action_toolbar_show_sys()
local pid = luci.sys.exec("pidof clash |tr -d '\n' 2>/dev/null") local pid = luci.sys.exec("pidof clash |head -1 |tr -d '\n' 2>/dev/null")
local mem, cpu local mem, cpu
if pid and pid ~= "" then if pid and pid ~= "" then
mem = tonumber(luci.sys.exec(string.format("cat /proc/%s/status 2>/dev/null |grep -w VmRSS |awk '{print $2}'", pid))) mem = tonumber(luci.sys.exec(string.format("cat /proc/%s/status 2>/dev/null |grep -w VmRSS |awk '{print $2}'", pid)))
cpu = luci.sys.exec(string.format("top -b -n1 |grep %s 2>/dev/null |head -1 |awk '{print $7}' 2>/dev/null", pid)) cpu = luci.sys.exec(string.format("top -b -n1 |grep -E '(%s|PID)' 2>/dev/null |grep -v grep |awk '{for (i=1;i<=NF;i++) {if ($i ~ /CPU/) num=i}};{print $num}' 2>/dev/null | sed -n '2p' 2>/dev/null", pid))
if mem and cpu then if mem and cpu then
mem = fs.filesize(mem*1024) mem = fs.filesize(mem*1024)
cpu = string.gsub(cpu, "%%\n", "") cpu = string.gsub(cpu, "%%\n", "")
@ -652,7 +658,7 @@ function action_toolbar_show_sys()
end end
function action_toolbar_show() function action_toolbar_show()
local pid = luci.sys.exec("pidof clash |tr -d '\n' 2>/dev/null") local pid = luci.sys.exec("pidof clash |head -1 |tr -d '\n' 2>/dev/null")
local traffic, connections, connection, up, down, up_total, down_total, mem, cpu local traffic, connections, connection, up, down, up_total, down_total, mem, cpu
if pid and pid ~= "" then if pid and pid ~= "" then
local daip = daip() local daip = daip()
@ -675,7 +681,7 @@ function action_toolbar_show()
connection = "0" connection = "0"
end end
mem = tonumber(luci.sys.exec(string.format("cat /proc/%s/status 2>/dev/null |grep -w VmRSS |awk '{print $2}'", pid))) mem = tonumber(luci.sys.exec(string.format("cat /proc/%s/status 2>/dev/null |grep -w VmRSS |awk '{print $2}'", pid)))
cpu = luci.sys.exec(string.format("top -b -n1 |grep %s 2>/dev/null |head -1 |awk '{print $7}' 2>/dev/null", pid)) cpu = luci.sys.exec(string.format("top -b -n1 |grep -E '(%s|PID)' 2>/dev/null |grep -v grep |awk '{for (i=1;i<=NF;i++) {if ($i ~ /CPU/) num=i}};{print $num}' 2>/dev/null | sed -n '2p' 2>/dev/null", pid))
if mem and cpu then if mem and cpu then
mem = fs.filesize(mem*1024) mem = fs.filesize(mem*1024)
cpu = string.gsub(cpu, "%%\n", "") cpu = string.gsub(cpu, "%%\n", "")
@ -903,6 +909,13 @@ function action_download_rule()
}) })
end end
function action_download_netflix_domains()
luci.http.prepare_content("application/json")
luci.http.write_json({
rule_download_status = download_netflix_domains();
})
end
function action_refresh_log() function action_refresh_log()
luci.http.prepare_content("application/json") luci.http.prepare_content("application/json")
local logfile="/tmp/openclash.log" local logfile="/tmp/openclash.log"

View File

@ -75,9 +75,7 @@ for t,f in ipairs(fs.glob("/etc/openclash/rule_provider/*"))do
if h then if h then
p[t]={} p[t]={}
p[t].name=fs.basename(f) p[t].name=fs.basename(f)
if IsYamlFile(p[t].name) or IsYmlFile(p[t].name) then o:value("./rule_provider/"..p[t].name)
o:value("./rule_provider/"..p[t].name)
end
end end
end end
o.rmempty = false o.rmempty = false

View File

@ -18,9 +18,6 @@ m.description=translate("Attention:")..
"<br/>"..translate("2. Click the <manage third party game rules> or <manage third party rule set> button to enter the rule list and download the rules you want to use").. "<br/>"..translate("2. Click the <manage third party game rules> or <manage third party rule set> button to enter the rule list and download the rules you want to use")..
"<br/>"..translate("3. On this page, set the corresponding configuration file and policy group of the rule you have downloaded, and save the settings").. "<br/>"..translate("3. On this page, set the corresponding configuration file and policy group of the rule you have downloaded, and save the settings")..
"<br/>".. "<br/>"..
"<br/>"..translate("Use in normal mode (rules of the game only):")..
"<br/>"..translate("1. Select normal mode in <global settings> - <mode settings> - <running mode> and enable UDP traffic, then restart")..
"<br/>"..
"<br/>"..translate("Use in tun mode:").. "<br/>"..translate("Use in tun mode:")..
"<br/>"..translate("1. In the <global settings> - <version update tab>, download and install the corresponding mode core first").. "<br/>"..translate("1. In the <global settings> - <version update tab>, download and install the corresponding mode core first")..
"<br/>"..translate("2. Select mixed mode, Tun mode or game mode in <global settings> - <mode settings> - <running mode> and restart").. "<br/>"..translate("2. Select mixed mode, Tun mode or game mode in <global settings> - <mode settings> - <running mode> and restart")..
@ -48,7 +45,7 @@ function IsYmlFile(e)
end end
-- [[ Edit Game Rule ]] -- -- [[ Edit Game Rule ]] --
s = m:section(TypedSection, "game_config", translate("Game Rules and Groups")) s = m:section(TypedSection, "game_config", translate("Game Rules and Groups (Only TUN Core Support)"))
s.anonymous = true s.anonymous = true
s.addremove = true s.addremove = true
s.sortable = true s.sortable = true

View File

@ -116,6 +116,19 @@ o:depends("en_mode", "redir-host-tun")
o:depends("en_mode", "redir-host-vpn") o:depends("en_mode", "redir-host-vpn")
o:depends("en_mode", "redir-host-mix") o:depends("en_mode", "redir-host-mix")
o = s:taboption("op_mode", Flag, "netflix_domains_prefetch", font_red..bold_on..translate("Prefetch Netflix Domains")..bold_off..font_off)
o.description = translate("Prevent Some Devices From Directly Using IP Access To Cause Unlocking Failure")
o.default=0
o = s:taboption("op_mode", Value, "netflix_domains_prefetch_interval", translate("Netflix Domains Prefetch Interval(min)"))
o.default=60
o.datatype = "uinteger"
o:depends("netflix_domains_prefetch", "1")
o = s:taboption("op_mode", DummyValue, "netflix_domains_update", translate("Update Netflix Domains List"))
o:depends("netflix_domains_prefetch", "1")
o.template = "openclash/download_netflix_domains"
o = s:taboption("op_mode", Flag, "small_flash_memory", translate("Small Flash Memory")) o = s:taboption("op_mode", Flag, "small_flash_memory", translate("Small Flash Memory"))
o.description = translate("Move Core And GEOIP Data File To /tmp/etc/openclash For Small Flash Memory Device") o.description = translate("Move Core And GEOIP Data File To /tmp/etc/openclash For Small Flash Memory Device")
o.default=0 o.default=0
@ -215,6 +228,12 @@ o = s:taboption("dns", Flag, "append_wan_dns", font_red..bold_on..translate("App
o.description = font_red..bold_on..translate("Append The Upstream Assigned DNS And Gateway IP To The Nameserver")..bold_off..font_off o.description = font_red..bold_on..translate("Append The Upstream Assigned DNS And Gateway IP To The Nameserver")..bold_off..font_off
o.default=1 o.default=1
if op_mode == "fake-ip" then
o = s:taboption("dns", Flag, "store_fakeip", font_red..bold_on..translate("Persistence Fake-IP")..bold_off..font_off)
o.description = font_red..bold_on..translate("Cache Fake-IP DNS Resolution Records To File, Improve The Response Speed After Startup")..bold_off..font_off
o.default=1
end
o = s:taboption("dns", Flag, "ipv6_dns", translate("IPv6 DNS Resolve")) o = s:taboption("dns", Flag, "ipv6_dns", translate("IPv6 DNS Resolve"))
o.description = font_red..bold_on..translate("Enable Clash to Resolve IPv6 DNS Requests")..bold_off..font_off o.description = font_red..bold_on..translate("Enable Clash to Resolve IPv6 DNS Requests")..bold_off..font_off
o.default=0 o.default=0

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,39 @@
<%+cbi/valueheader%>
<script type="text/javascript">//<![CDATA[
function act_download_rule(btn)
{
btn.disabled = true;
btn.value = '<%:Downloading Rule...%> ';
XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash","download_netflix_domains")%>',
null,
function(x,status)
{
if ( x && x.status == 200 ) {
if(status.rule_download_status=="0")
{
btn.value = '<%:Downloading Fail%>';
}
else if (status.rule_download_status=="1")
{
btn.value = '<%:Downloading Successful%>';
}
else if (status.rule_download_status=="2")
{
btn.value = '<%:Rule No Change%>';
}
}
else {
btn.value = '<%:Downloading Timeout%>';
}
}
);
btn.disabled = false;
return false;
}
//]]></script>
<input type="button" class="btn cbi-button cbi-input-reload" value="<%:Click to Update%>" onclick="return act_download_rule(this)" />
<%+cbi/valuefooter%>

View File

@ -36,6 +36,6 @@
//]]></script> //]]></script>
<input type="button" class="btn cbi-button cbi-input-reload" value="<%:点击更新规则%>" onclick="return act_download_rule(this,'<%=self:cfgvalue(section)%>')" /> <input type="button" class="btn cbi-button cbi-input-reload" value="<%:Click to Update%>" onclick="return act_download_rule(this,'<%=self:cfgvalue(section)%>')" />
<%+cbi/valuefooter%> <%+cbi/valuefooter%>

View File

@ -23,8 +23,8 @@ msgstr "全局设置"
msgid "Rule Providers and Groups" msgid "Rule Providers and Groups"
msgstr "规则集与策略组管理" msgstr "规则集与策略组管理"
msgid "Game Rules and Groups" msgid "Game Rules and Groups (Only TUN Core Support)"
msgstr "游戏规则与策略组管理" msgstr "游戏规则与策略组管理仅TUN内核"
msgid "Other Rule Providers and Groups (Only TUN Core Support)" msgid "Other Rule Providers and Groups (Only TUN Core Support)"
msgstr "第三方规则集与策略组管理仅TUN内核" msgstr "第三方规则集与策略组管理仅TUN内核"
@ -1859,38 +1859,38 @@ msgstr "错误: 缺少配置文件,请上传或更新配置文件!"
msgid "Error: Config File Format Validation Failed..." msgid "Error: Config File Format Validation Failed..."
msgstr "错误:配置文件格式校验失败..." msgstr "错误:配置文件格式校验失败..."
msgid "Detected The Exclusive Function of The TUN Core, Use TUN Core to Start..." msgid "Tip: Detected The Exclusive Function of The TUN Core, Use TUN Core to Start..."
msgstr "检测到配置了 TUN 内核专属功能,调用 TUN 内核启动..." msgstr "提示: 检测到配置了 TUN 内核专属功能,调用 TUN 内核启动..."
msgid "Detected The Exclusive Function of The Game Core, Use Game Core to Start..." msgid "Tip: Detected The Exclusive Function of The Game Core, Use Game Core to Start..."
msgstr "检测到配置了 Game 内核专属功能,调用 Game 内核启动..." msgstr "提示: 检测到配置了 Game 内核专属功能,调用 Game 内核启动..."
msgid "No Special Configuration Detected, Use Dev Core to Start..." msgid "Tip: No Special Configuration Detected, Use Dev Core to Start..."
msgstr "未检测到特殊配置,调用 Dev 内核启动..." msgstr "提示: 未检测到特殊配置,调用 Dev 内核启动..."
msgid "Detect that the Dev Core is not Installed, Use TUN Core to Start..." msgid "Tip: Detected that the Dev Core is not Installed, Use TUN Core to Start..."
msgstr "检测到 Dev 内核未安装,调用 TUN 内核启动..." msgstr "提示: 检测到 Dev 内核未安装,调用 TUN 内核启动..."
msgid "Detect that the Dev Core is not Installed, Use Game Core to Start..." msgid "Tip: Detected that the Dev Core is not Installed, Use Game Core to Start..."
msgstr "检测到 Dev 内核未安装,调用 Game 内核启动..." msgstr "提示: 检测到 Dev 内核未安装,调用 Game 内核启动..."
msgid "Detect that the Dev Core is not Installed, Use Game Core to Start..." msgid "Tip: Detected that the Dev Core is not Installed, Use Game Core to Start..."
msgstr "检测到 Dev 内核未安装,调用 Game 内核启动..." msgstr "提示: 检测到 Dev 内核未安装,调用 Game 内核启动..."
msgid "Detect that the GEOIP Database is not Installed, Ready to Download..." msgid "Tip: Detected that the GEOIP Database is not Installed, Ready to Download..."
msgstr "检测到GEOIP数据库文件不存在准备开始下载..." msgstr "提示: 检测到GEOIP数据库文件不存在准备开始下载..."
msgid "Detect that the Core is not Installed, Ready to Download..." msgid "Tip: Detected that the Core is not Installed, Ready to Download..."
msgstr "检测到内核文件不存在,准备开始下载..." msgstr "提示: 检测到内核文件不存在,准备开始下载..."
msgid "Detect that the Chnroute Cidr List is not Installed, Ready to Download..." msgid "Tip: Detected that the Chnroute Cidr List is not Installed, Ready to Download..."
msgstr "检测到大陆白名单列表不存在,准备开始下载..." msgstr "提示: 检测到大陆白名单列表不存在,准备开始下载..."
msgid "Error: Could Not Load The Capsh Library, Please Verify The Capsh Shell Library Work Well..." msgid "Error: Could Not Load The Capsh Library, Please Verify The Capsh Shell Library Work Well..."
msgstr "错误Capsh异常请尝试重新安装依赖【libcap】和相应的Capsh库终止启动..." msgstr "错误Capsh异常请尝试重新安装依赖【libcap】和相应的Capsh库终止启动..."
msgid "Tip: You Could Download And Re-Install The libcap & libcap-bin Library From The Address Give" msgid "Tip: You Could Download And Re-Install The libcap & libcap-bin Library From The Address Give"
msgstr "Tip: 你可以尝试从给出的地址中查找、下载并重新安装架构对应的 libcap 和 libcap-bin 依赖" msgstr "提示: 你可以尝试从给出的地址中查找、下载并重新安装架构对应的 libcap 和 libcap-bin 依赖"
msgid "Error: Get DNS 'listen' Option Error, OpenClash Can Not Start With Raw Config File" msgid "Error: Get DNS 'listen' Option Error, OpenClash Can Not Start With Raw Config File"
msgstr "错误: 无法获取DNS部分的监听端口设置, OpenClash 使用原始配置文件启动失败" msgstr "错误: 无法获取DNS部分的监听端口设置, OpenClash 使用原始配置文件启动失败"
@ -2039,12 +2039,6 @@ msgstr "2、点击《管理第三方游戏规则》或者《管理第三方规
msgid "3. On this page, set the corresponding configuration file and policy group of the rule you have downloaded, and save the settings" msgid "3. On this page, set the corresponding configuration file and policy group of the rule you have downloaded, and save the settings"
msgstr "3、在此页面设置您已下载的规则的对应配置文件、策略组并保存设置" msgstr "3、在此页面设置您已下载的规则的对应配置文件、策略组并保存设置"
msgid "Use in normal mode (rules of the game only):"
msgstr "在普通模式下使用(仅游戏规则):"
msgid "1. Select normal mode in <global settings> - <mode settings> - <running mode> and enable UDP traffic, then restart"
msgstr "1、在《全局设置》-《模式设置》-《运行模式》中选择普通模式并启用UDP流量代理然后重新启动"
msgid "Use in tun mode:" msgid "Use in tun mode:"
msgstr "在TUN模式下使用" msgstr "在TUN模式下使用"
@ -2306,6 +2300,9 @@ msgstr "错误:策略组解析失败,"
msgid "Error: Set default-nameserver Error," msgid "Error: Set default-nameserver Error,"
msgstr "错误修改default-nameserver配置失败" msgstr "错误修改default-nameserver配置失败"
msgid "Error: Netflix IP Rules Complete Error,"
msgstr "错误Netflix IP 规则补全失败,"
msgid "switching succeeded!" msgid "switching succeeded!"
msgstr "切换成功!" msgstr "切换成功!"
@ -2391,4 +2388,37 @@ msgid "All Groups"
msgstr "所有策略组" msgstr "所有策略组"
msgid "Are you sure want to switch the running mode?" msgid "Are you sure want to switch the running mode?"
msgstr "确认要切换运行模式吗?" msgstr "确认要切换运行模式吗?"
msgid "Tip: Because of the file"
msgstr "提示: 由于文件"
msgid "modificated, Pause quick start..."
msgstr "被修改,暂停快速启动..."
msgid "Click to Update"
msgstr "点击更新规则"
msgid "Prefetch Netflix Domains"
msgstr "实验性:预解析 Netflix 域名"
msgid "Prevent Some Devices From Directly Using IP Access To Cause Unlocking Failure"
msgstr "防止部分设备直接使用IP访问导致DNS解锁失败"
msgid "Update Netflix Domains List"
msgstr "更新 Netflix 域名列表"
msgid "Netflix Domains Prefetch Interval(min)"
msgstr "Netflix 域名预解析间隔(分钟)"
msgid "Tip: Start Prefetch Netflix Domains..."
msgstr "提示:开始预解析 Netflix 域名..."
msgid "Tip: Netflix Domains Prefetch Finished..."
msgstr "提示Netflix 域名预解析完成..."
msgid "Persistence Fake-IP"
msgstr "Fake-IP 持久化"
msgid "Cache Fake-IP DNS Resolution Records To File, Improve The Response Speed After Startup"
msgstr "存储Fake-IP的DNS解析记录到文件提升内核启动后的反应速度和稳定性"

View File

@ -40,8 +40,10 @@ config openclash 'config'
option common_ports '0' option common_ports '0'
option log_size '1024' option log_size '1024'
option tolerance '0' option tolerance '0'
option store_fakeip '1'
option custom_fallback_filter '0' option custom_fallback_filter '0'
option append_wan_dns '1' option append_wan_dns '1'
option netflix_domains_prefetch '0'
option geo_custom_url 'https://cdn.jsdelivr.net/gh/alecthw/mmdb_china_ip_list@release/lite/Country.mmdb' option geo_custom_url 'https://cdn.jsdelivr.net/gh/alecthw/mmdb_china_ip_list@release/lite/Country.mmdb'
option chnr_custom_url 'https://ispip.clang.cn/all_cn.txt' option chnr_custom_url 'https://ispip.clang.cn/all_cn.txt'
option chnr6_custom_url 'https://ispip.clang.cn/all_cn_ipv6.txt' option chnr6_custom_url 'https://ispip.clang.cn/all_cn_ipv6.txt'

View File

@ -235,7 +235,7 @@ yml_provider_path()
Value_1 = Marshal.load(Marshal.dump(Value['$2'])); Value_1 = Marshal.load(Marshal.dump(Value['$2']));
Value['$2'].values.each{ Value['$2'].values.each{
|x,v| |x,v|
unless x['path'].include? '$3' then if not x['path'].include? '$3' and not x['path'].include? 'game_rules' then
v=File.basename(x['path']) v=File.basename(x['path'])
x['path']='./$3/'+v x['path']='./$3/'+v
end end
@ -502,9 +502,31 @@ get_rule_file()
GAME_RULE_FILE_NAME=$(grep "^$1," /usr/share/openclash/res/game_rules.list |awk -F ',' '{print $2}' 2>/dev/null) GAME_RULE_FILE_NAME=$(grep "^$1," /usr/share/openclash/res/game_rules.list |awk -F ',' '{print $2}' 2>/dev/null)
fi fi
GAME_RULE_PATH="/etc/openclash/game_rules/$GAME_RULE_FILE_NAME" GAME_RULE_PATH="./game_rules/$GAME_RULE_FILE_NAME"
sed '/^#/d' "$GAME_RULE_PATH" 2>/dev/null |sed '/^ *$/d' |awk '{print "- IP-CIDR,"$0}' |awk -v tag="$2" '{print $0","'tag'""}' >> $GAME_RULE_FILE 2>/dev/null [ ! -f "$GAME_RULE_FILE" ] && echo "rules:" > "$GAME_RULE_FILE"
ruby -ryaml -E UTF-8 -e "
begin
Value = YAML.load_file('$GAME_RULE_FILE');
if Value.has_key?('rules') and not Value['rules'].to_a.empty? then
Value['rules'].insert(-1,'RULE-SET,${1},${2}')
Value['rules']=Value['rules'].uniq
else
Value={'rules'=>['RULE-SET,${1},${2}']}
end;
Value_1={'rule-providers'=>{'${1}'=>{'type'=>'file', 'behavior'=>'ipcidr', 'path'=>'${GAME_RULE_PATH}'}}};
if Value.has_key?('rule-providers') and not Value['rule-providers'].to_a.empty? then
Value['rule-providers'].merge!(Value_1['rule-providers'])
Value['rule-providers'].uniq
else
Value['rule-providers']=Value_1['rule-providers']
end;
File.open('$GAME_RULE_FILE','w') {|f| YAML.dump(Value, f)};
rescue Exception => e
puts '${LOGTIME} Error: Game Rule Merge Error,【' + e.message + '】'
end
" 2>/dev/null >> $LOG_FILE
} }
yml_game_rule_get() yml_game_rule_get()
@ -566,11 +588,17 @@ Value_1 = YAML.load_file('$GAME_RULE_FILE');
if Value.has_key?('rules') and not Value['rules'].to_a.empty? then if Value.has_key?('rules') and not Value['rules'].to_a.empty? then
ruby_add_index = Value['rules'].index(Value['rules'].grep(/(GEOIP|MATCH|FINAL)/).first) ruby_add_index = Value['rules'].index(Value['rules'].grep(/(GEOIP|MATCH|FINAL)/).first)
ruby_add_index ||= -1 ruby_add_index ||= -1
Value_2 = Value_1.reverse! Value_2 = Value_1['rules'].reverse!
Value_2.each{|x| Value['rules'].insert(ruby_add_index,x)} Value_2.each{|x| Value['rules'].insert(ruby_add_index,x)}
Value['rules']=Value['rules'].uniq; Value['rules']=Value['rules'].uniq;
else else
Value['rules'] = Value_1 Value['rules'] = Value_1['rules']
end;
if Value.has_key?('rule-providers') and not Value['rule-providers'].to_a.empty? then
Value['rule-providers'].merge!(Value_1['rule-providers'])
Value['rule-providers'].uniq
else
Value['rule-providers']=Value_1['rule-providers']
end; end;
File.open('$CONFIG_FILE','w') {|f| YAML.dump(Value, f)} File.open('$CONFIG_FILE','w') {|f| YAML.dump(Value, f)}
rescue Exception => e rescue Exception => e
@ -631,12 +659,12 @@ if Value.has_key?('rules') and not Value['rules'].to_a.empty? then
if $3 == 1 then if $3 == 1 then
ruby_add_index = Value['rules'].index(Value['rules'].grep(/(GEOIP|MATCH|FINAL)/).first) ruby_add_index = Value['rules'].index(Value['rules'].grep(/(GEOIP|MATCH|FINAL)/).first)
ruby_add_index ||= -1 ruby_add_index ||= -1
Value['rules'].insert(ruby_add_index,'RULE-SET,$1,$2') Value['rules'].insert(ruby_add_index,'RULE-SET,${1},${2}')
else else
Value['rules'].insert(0,'RULE-SET,$1,$2') Value['rules'].insert(0,'RULE-SET,${1},${2}')
end end
else else
Value_1 = {'rules'=>['RULE-SET,$1,$2']} Value_1 = {'rules'=>['RULE-SET,${1},${2}']}
Value.merge!(Value_1); Value.merge!(Value_1);
end; end;
File.open('$CONFIG_FILE','w') {|f| YAML.dump(Value, f)} File.open('$CONFIG_FILE','w') {|f| YAML.dump(Value, f)}
@ -865,16 +893,20 @@ if [ ! -f "$RAW_CONFIG_FILE" ]; then
exit 0 exit 0
fi fi
fi fi
}
config_check()
{
#创建启动配置 #创建启动配置
#rm -rf "/etc/openclash/*.y*" 2>/dev/null #rm -rf "/etc/openclash/*.y*" 2>/dev/null
cp "$RAW_CONFIG_FILE" "$CONFIG_FILE" cp "$RAW_CONFIG_FILE" "$CONFIG_FILE"
ruby -ryaml -E UTF-8 -e " ruby -ryaml -E UTF-8 -e "
begin begin
YAML.load_file('$RAW_CONFIG_FILE'); YAML.load_file('$RAW_CONFIG_FILE');
rescue Exception => e rescue Exception => e
puts '${LOGTIME} Error: Unable To Parse Config File,【' + e.message + '】' puts '${LOGTIME} Error: Unable To Parse Config File,【' + e.message + '】'
system 'rm -rf ${CONFIG_FILE}' system 'rm -rf ${CONFIG_FILE}'
end end
" 2>/dev/null >> $LOG_FILE " 2>/dev/null >> $LOG_FILE
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
@ -895,15 +927,18 @@ ruby -ryaml -E UTF-8 -e "
Value['proxies'] = Value['Proxy'] Value['proxies'] = Value['Proxy']
Value.delete('Proxy') Value.delete('Proxy')
puts '${LOGTIME} Warning: Proxy is no longer used. Auto replaced by proxies' puts '${LOGTIME} Warning: Proxy is no longer used. Auto replaced by proxies'
elsif Value.key?('Proxy Group') then end
if Value.key?('Proxy Group') then
Value['proxy-groups'] = Value['Proxy Group'] Value['proxy-groups'] = Value['Proxy Group']
Value.delete('Proxy Group') Value.delete('Proxy Group')
puts '${LOGTIME} Warning: Proxy Group is no longer used. Auto replaced by proxy-groups' puts '${LOGTIME} Warning: Proxy Group is no longer used. Auto replaced by proxy-groups'
elsif Value.key?('Rule') then end
if Value.key?('Rule') then
Value['rules'] = Value['Rule'] Value['rules'] = Value['Rule']
Value.delete('Rule') Value.delete('Rule')
puts '${LOGTIME} Warning: Rule is no longer used. Auto replaced by rules' puts '${LOGTIME} Warning: Rule is no longer used. Auto replaced by rules'
elsif Value.key?('rule-provider') then end
if Value.key?('rule-provider') then
Value['rule-providers'] = Value['rule-provider'] Value['rule-providers'] = Value['rule-provider']
Value.delete('rule-provider') Value.delete('rule-provider')
puts '${LOGTIME} Warning: rule-provider is no longer used. Auto replaced by rule-providers' puts '${LOGTIME} Warning: rule-provider is no longer used. Auto replaced by rule-providers'
@ -931,6 +966,42 @@ yml_other_rules_get()
config_get "rule_name" "$section" "rule_name" "" config_get "rule_name" "$section" "rule_name" ""
} }
check_run_quick()
{
quick_start=true
check_file="$RAW_CONFIG_FILE /etc/openclash/custom/openclash_custom_domain_dns.list /etc/openclash/custom/openclash_custom_domain_dns_policy.list /etc/openclash/custom/openclash_custom_fake_filter.list /etc/openclash/custom/openclash_custom_fallback_filter.yaml /etc/openclash/custom/openclash_custom_hosts.list /etc/openclash/custom/openclash_custom_rules.list /etc/openclash/custom/openclash_custom_rules_2.list $dev_core_path $tun_core_path $game_core_path $geoip_path $chnr_path $chnr6_path /usr/share/openclash/res/ConnersHua.yaml /usr/share/openclash/res/ConnersHua_return.yaml /usr/share/openclash/res/lhie1.yaml /usr/share/openclash/res/openclash_version"
if [ ! -f "$CONFIG_FILE" ] || [ ! -f "/tmp/openclash_config.tmp" ] || [ ! -f "/tmp/openclash.change" ]; then
quick_start=false
return
fi
cmp -s "/etc/config/openclash" "/tmp/openclash_config.tmp"
if [ "$?" -ne "0" ]; then
LOG_OUT "Tip: Because of the file【 /etc/config/openclash 】modificated, Pause quick start..."
quick_start=false
else
if [ -s "/tmp/openclash.change" ]; then
for i in $check_file; do
if [ -z "$(grep "$i $(date -r $i)" "/tmp/openclash.change")" ]; then
LOG_OUT "Tip: Because of the file【 $i 】modificated, Pause quick start..."
quick_start=false
break
fi
done
fi
fi
}
write_run_quick()
{
if ! $quick_start; then
cp "/etc/config/openclash" "/tmp/openclash_config.tmp"
: > "/tmp/openclash.change"
for i in $check_file; do
echo "$i $(date -r $i)" >> "/tmp/openclash.change"
done
fi
}
#运行模式处理 #运行模式处理
do_run_mode() do_run_mode()
{ {
@ -996,13 +1067,13 @@ do_run_file()
if [ "$en_mode_tun" = "1" ] || [ "$en_mode_tun" = "3" ]; then if [ "$en_mode_tun" = "1" ] || [ "$en_mode_tun" = "3" ]; then
ln -s "$tun_core_path" /etc/openclash/clash 2>/dev/null ln -s "$tun_core_path" /etc/openclash/clash 2>/dev/null
core_type="TUN" core_type="TUN"
core_start_log="Detected The Exclusive Function of The TUN Core, Use TUN Core to Start..." core_start_log="Tip: Detected The Exclusive Function of The TUN Core, Use TUN Core to Start..."
fi fi
if [ "$en_mode_tun" = "2" ]; then if [ "$en_mode_tun" = "2" ]; then
ln -s "$game_core_path" /etc/openclash/clash 2>/dev/null ln -s "$game_core_path" /etc/openclash/clash 2>/dev/null
core_type="Game" core_type="Game"
core_start_log="Detected The Exclusive Function of The Game Core, Use Game Core to Start..." core_start_log="Tip: Detected The Exclusive Function of The Game Core, Use Game Core to Start..."
fi fi
if [ "$rule_source" != "0" ]; then if [ "$rule_source" != "0" ]; then
@ -1010,30 +1081,30 @@ do_run_file()
config_foreach yml_other_rules_get "other_rules" "$CONFIG_NAME" config_foreach yml_other_rules_get "other_rules" "$CONFIG_NAME"
fi fi
if [ "$proxy_mode" = "script" ] || [ "$rule_name" = "ConnersHua" ] || [ "$rule_name" = "lhie1" ] || [ -n "$(ruby_read "$CONFIG_FILE" "['rules'].grep(/(^RULE-SET,|^SCRIPT,)/)")" ] || [ -n "$(ruby_read "/etc/openclash/custom/openclash_custom_rules.list" "['rules'].grep(/(^RULE-SET,|^SCRIPT,)/)")" ] || [ -n "$(ruby_read "/etc/openclash/custom/openclash_custom_rules_2.list" "['rules'].grep(/(^RULE-SET,|^SCRIPT,)/)")" ]; then if [ "$proxy_mode" = "script" ] || [ "$rule_name" = "ConnersHua" ] || [ "$rule_name" = "lhie1" ] || [ -n "$(ruby_read "$RAW_CONFIG_FILE" "['rules'].grep(/(^RULE-SET,|^SCRIPT,)/)")" ] || [ -n "$(ruby_read "/etc/openclash/custom/openclash_custom_rules.list" "['rules'].grep(/(^RULE-SET,|^SCRIPT,)/)")" ] || [ -n "$(ruby_read "/etc/openclash/custom/openclash_custom_rules_2.list" "['rules'].grep(/(^RULE-SET,|^SCRIPT,)/)")" ]; then
if [ "$en_mode_tun" != "2" ]; then if [ "$en_mode_tun" != "2" ]; then
rm -rf "/etc/openclash/clash" rm -rf "/etc/openclash/clash"
ln -s "$tun_core_path" /etc/openclash/clash 2>/dev/null ln -s "$tun_core_path" /etc/openclash/clash 2>/dev/null
core_type="TUN" core_type="TUN"
core_start_log="Detected The Exclusive Function of The TUN Core, Use TUN Core to Start..." core_start_log="Tip: Detected The Exclusive Function of The TUN Core, Use TUN Core to Start..."
fi fi
fi fi
if [ ! -f "/etc/openclash/clash" ] && [ -f "$dev_core_path" ] && [ -z "$core_type" ]; then if [ ! -f "/etc/openclash/clash" ] && [ -f "$dev_core_path" ] && [ -z "$core_type" ]; then
ln -s "$dev_core_path" /etc/openclash/clash 2>/dev/null ln -s "$dev_core_path" /etc/openclash/clash 2>/dev/null
core_start_log="No Special Configuration Detected, Use Dev Core to Start..." core_start_log="Tip: No Special Configuration Detected, Use Dev Core to Start..."
fi fi
if [ ! -f "/etc/openclash/clash" ] && [ -f "$tun_core_path" ] && [ "$core_type" != "Game" ]; then if [ ! -f "/etc/openclash/clash" ] && [ -f "$tun_core_path" ] && [ "$core_type" != "Game" ]; then
ln -s "$tun_core_path" /etc/openclash/clash 2>/dev/null ln -s "$tun_core_path" /etc/openclash/clash 2>/dev/null
core_type="TUN" core_type="TUN"
core_start_log="Detect that the Dev Core is not Installed, Use TUN Core to Start..." core_start_log="Tip: Detected that the Dev Core is not Installed, Use TUN Core to Start..."
fi fi
if [ ! -f "/etc/openclash/clash" ] && [ -f "$game_core_path" ] && [ "$core_type" != "TUN" ]; then if [ ! -f "/etc/openclash/clash" ] && [ -f "$game_core_path" ] && [ "$core_type" != "TUN" ]; then
ln -s "$game_core_path" /etc/openclash/clash 2>/dev/null ln -s "$game_core_path" /etc/openclash/clash 2>/dev/null
core_type="Game" core_type="Game"
core_start_log="Detect that the Dev Core is not Installed, Use Game Core to Start..." core_start_log="Tip: Detected that the Dev Core is not Installed, Use Game Core to Start..."
fi fi
#权限检查 #权限检查
@ -1055,13 +1126,13 @@ do_run_file()
} }
[ ! -f "$geoip_path" ] && { [ ! -f "$geoip_path" ] && {
LOG_OUT "Detect that the GEOIP Database is not Installed, Ready to Download..." LOG_OUT "Tip: Detected that the GEOIP Database is not Installed, Ready to Download..."
nofile=1 nofile=1
nohup /usr/share/openclash/openclash_ipdb.sh & nohup /usr/share/openclash/openclash_ipdb.sh &
} }
[ ! -f "$CLASH" ] && { [ ! -f "$CLASH" ] && {
LOG_OUT "Detect that the Core is not Installed, Ready to Download..." LOG_OUT "Tip: Detected that the Core is not Installed, Ready to Download..."
nofile=1 nofile=1
rm -rf "/tmp/clash_last_version" rm -rf "/tmp/clash_last_version"
nohup /usr/share/openclash/openclash_core.sh "$core_type" & nohup /usr/share/openclash/openclash_core.sh "$core_type" &
@ -1069,7 +1140,7 @@ do_run_file()
if [ "$china_ip_route" = "1" ] || [ "$china_ip6_route" = "1" ] || [ "$disable_udp_quic" = "1" ]; then if [ "$china_ip_route" = "1" ] || [ "$china_ip6_route" = "1" ] || [ "$disable_udp_quic" = "1" ]; then
if [ ! -f "$chnr_path" ] || [ ! -f "$chnr6_path" ]; then if [ ! -f "$chnr_path" ] || [ ! -f "$chnr6_path" ]; then
LOG_OUT "Detect that the Chnroute Cidr List is not Installed, Ready to Download..." LOG_OUT "Tip: Detected that the Chnroute Cidr List is not Installed, Ready to Download..."
nofile=1 nofile=1
nohup /usr/share/openclash/openclash_chnroute.sh & nohup /usr/share/openclash/openclash_chnroute.sh &
fi fi
@ -1922,6 +1993,7 @@ get_config()
tolerance=$(uci -q get openclash.config.tolerance) tolerance=$(uci -q get openclash.config.tolerance)
custom_fallback_filter=$(uci -q get openclash.config.custom_fallback_filter) custom_fallback_filter=$(uci -q get openclash.config.custom_fallback_filter)
append_wan_dns=$(uci -q get openclash.config.append_wan_dns || echo 1) append_wan_dns=$(uci -q get openclash.config.append_wan_dns || echo 1)
store_fakeip=$(uci -q get openclash.config.store_fakeip || echo 1)
_koolshare=$(cat /usr/lib/os-release 2>/dev/null |grep OPENWRT_RELEASE 2>/dev/null |grep -i koolshare 2>/dev/null) _koolshare=$(cat /usr/lib/os-release 2>/dev/null |grep OPENWRT_RELEASE 2>/dev/null |grep -i koolshare 2>/dev/null)
[ -z "$dns_port" ] && dns_port=7874 && uci -q set openclash.config.dns_port=7874 [ -z "$dns_port" ] && dns_port=7874 && uci -q set openclash.config.dns_port=7874
[ "$ipv6_enable" -eq 1 ] && [ "$intranet_allowed" -eq 1 ] && intranet_allowed=0 && uci -q set openclash.config.intranet_allowed=0 [ "$ipv6_enable" -eq 1 ] && [ "$intranet_allowed" -eq 1 ] && intranet_allowed=0 && uci -q set openclash.config.intranet_allowed=0
@ -1934,9 +2006,8 @@ start()
enable=$(uci -q get openclash.config.enable) enable=$(uci -q get openclash.config.enable)
[ "$enable" != "1" ] && LOG_OUT "Warning: OpenClash Now Disabled, Need Start From Luci Page, Exit..." && SLOG_CLEAN && del_lock && exit 0 [ "$enable" != "1" ] && LOG_OUT "Warning: OpenClash Now Disabled, Need Start From Luci Page, Exit..." && SLOG_CLEAN && del_lock && exit 0
config_choose
LOG_OUT "OpenClash Start Running..." LOG_OUT "OpenClash Start Running..."
config_choose
do_run_mode do_run_mode
LOG_OUT "Step 1: Get The Configuration..." LOG_OUT "Step 1: Get The Configuration..."
@ -1944,22 +2015,28 @@ start()
LOG_OUT "Step 2: Check The Components..." LOG_OUT "Step 2: Check The Components..."
#检查文件是否存在 #检查文件是否存在
do_run_file "$CONFIG_FILE" "$BACKUP_FILE" do_run_file "$RAW_CONFIG_FILE" "$BACKUP_FILE"
LOG_OUT "Step 3: Modify The Config File..." #快速启动判断
config_load "openclash" check_run_quick
config_foreach yml_auth_get "authentication"
yml_auth_custom "$CONFIG_FILE" if ! $quick_start; then
yml_dns_custom "$enable_custom_dns" "$CONFIG_FILE" "$append_wan_dns" "$ipv6_dns" LOG_OUT "Step 3: Modify The Config File..."
/usr/share/openclash/yml_change.sh 2>/dev/null "$LOGTIME" "$en_mode" "$enable_custom_dns" "$da_password" "$cn_port" "$proxy_port" "$CONFIG_FILE" "$ipv6_enable" "$http_port" "$socks_port" "$lan_ip" "$log_level" "$proxy_mode" "$intranet_allowed" "$en_mode_tun" "$stack_type" "$dns_port" "$core_type" "$mixed_port" "$tproxy_port" "$ipv6_dns" config_check
/usr/share/openclash/yml_rules_change.sh 2>/dev/null "$LOGTIME" "$rule_source" "$enable_custom_clash_rules" "$CONFIG_FILE" "$enable_rule_proxy" "$CONFIG_NAME" config_load "openclash"
yml_custom_rule_provider config_foreach yml_auth_get "authentication"
yml_game_custom yml_auth_custom "$CONFIG_FILE"
yml_provider_path "$CONFIG_FILE" "proxy-providers" "proxy_provider" yml_dns_custom "$enable_custom_dns" "$CONFIG_FILE" "$append_wan_dns" "$ipv6_dns"
yml_provider_path "$CONFIG_FILE" "rule-providers" "rule_provider" /usr/share/openclash/yml_change.sh 2>/dev/null "$LOGTIME" "$en_mode" "$enable_custom_dns" "$da_password" "$cn_port" "$proxy_port" "$CONFIG_FILE" "$ipv6_enable" "$http_port" "$socks_port" "$lan_ip" "$log_level" "$proxy_mode" "$intranet_allowed" "$en_mode_tun" "$stack_type" "$dns_port" "$core_type" "$mixed_port" "$tproxy_port" "$ipv6_dns" "$store_fakeip"
yml_dns_check "$CONFIG_FILE" "$FALLBACK_FILTER_FILE" /usr/share/openclash/yml_rules_change.sh 2>/dev/null "$LOGTIME" "$rule_source" "$enable_custom_clash_rules" "$CONFIG_FILE" "$enable_rule_proxy" "$CONFIG_NAME"
yml_tolerance_set "$CONFIG_FILE" "$tolerance" yml_custom_rule_provider
yml_game_custom
yml_provider_path "$CONFIG_FILE" "proxy-providers" "proxy_provider"
yml_provider_path "$CONFIG_FILE" "rule-providers" "rule_provider"
yml_dns_check "$CONFIG_FILE" "$FALLBACK_FILTER_FILE"
yml_tolerance_set "$CONFIG_FILE" "$tolerance"
fi
LOG_OUT "Step 4: Start Running The Clash Core..." LOG_OUT "Step 4: Start Running The Clash Core..."
start_run_core start_run_core
@ -1996,6 +2073,7 @@ start()
sleep 3 sleep 3
fi fi
echo "OpenClash Already Start!" echo "OpenClash Already Start!"
write_run_quick
SLOG_CLEAN SLOG_CLEAN
rm -rf /tmp/yaml_* rm -rf /tmp/yaml_*
} }
@ -2033,25 +2111,24 @@ stop()
LOG_OUT "Step 6: Delete OpenClash Residue File..." LOG_OUT "Step 6: Delete OpenClash Residue File..."
if [ "$enable" != "1" ]; then if [ "$enable" != "1" ]; then
rm -rf $LOG_FILE
rm -rf /tmp/openclash_debug.log
rm -rf /www/luci-static/openclash rm -rf /www/luci-static/openclash
rm -rf /tmp/openclash_last_version
rm -rf /tmp/clash_last_version rm -rf /tmp/clash_last_version
rm -rf /tmp/Proxy_Group rm -rf /tmp/Proxy_Group
rm -rf /tmp/rules_name rm -rf /tmp/rules_name
rm -rf /tmp/rule_providers_name rm -rf /tmp/rule_providers_name
rm -rf /tmp/openclash_fake_filter.list rm -rf /tmp/openclash_fake_filter.list
rm -rf /tmp/openclash_servers_fake_filter.conf rm -rf /tmp/openclash_servers_fake_filter.conf
rm -rf /tmp/openclash_last_version
rm -rf /tmp/openclash_config.tmp
rm -rf /tmp/openclash.change
rm -rf /tmp/openclash_debug.log
del_lock del_lock
LOG_OUT "OpenClash Already Stop!" LOG_OUT "OpenClash Already Stop!"
sleep 3 sleep 3
rm -rf $LOG_FILE
fi fi
del_cron del_cron
uci -q delete openclash.config.core_type
uci -q commit openclash
rm -rf /tmp/yaml_* rm -rf /tmp/yaml_*
rm -rf $START_LOG rm -rf $START_LOG
echo "OpenClash Already Stop!" echo "OpenClash Already Stop!"

File diff suppressed because it is too large Load Diff

View File

@ -1,295 +1,294 @@
#Monster Hunter: World,怪兽世界猎人steam版,0,0,1,0,1,0,By-normanbb payload:
2.16.0.0/16 - 2.16.0.0/16
2.17.0.0/16 - 2.17.0.0/16
2.18.0.0/16 - 2.18.0.0/16
2.19.0.0/16 - 2.19.0.0/16
2.20.0.0/16 - 2.20.0.0/16
2.21.0.0/16 - 2.21.0.0/16
2.22.0.0/16 - 2.22.0.0/16
2.23.0.0/16 - 2.23.0.0/16
8.7.0.0/16 - 8.7.0.0/16
14.21.0.0/16 - 14.21.0.0/16
23.0.0.0/4 - 23.0.0.0/4
23.1.0.0/16 - 23.1.0.0/16
23.2.0.0/16 - 23.2.0.0/16
23.3.0.0/16 - 23.3.0.0/16
23.4.0.0/16 - 23.4.0.0/16
23.5.0.0/16 - 23.5.0.0/16
23.7.0.0/16 - 23.7.0.0/16
23.8.0.0/16 - 23.8.0.0/16
23.9.0.0/16 - 23.9.0.0/16
23.11.0.0/16 - 23.11.0.0/16
23.12.0.0/16 - 23.12.0.0/16
23.13.0.0/16 - 23.13.0.0/16
23.14.0.0/16 - 23.14.0.0/16
23.15.0.0/16 - 23.15.0.0/16
23.32.0.0/16 - 23.32.0.0/16
23.33.0.0/16 - 23.33.0.0/16
23.34.0.0/16 - 23.34.0.0/16
23.35.0.0/16 - 23.35.0.0/16
23.36.0.0/16 - 23.36.0.0/16
23.37.0.0/16 - 23.37.0.0/16
23.38.0.0/16 - 23.38.0.0/16
23.39.0.0/16 - 23.39.0.0/16
23.40.0.0/16 - 23.40.0.0/16
23.41.0.0/16 - 23.41.0.0/16
23.42.0.0/16 - 23.42.0.0/16
23.44.0.0/16 - 23.44.0.0/16
23.45.0.0/16 - 23.45.0.0/16
23.46.0.0/16 - 23.46.0.0/16
23.48.0.0/16 - 23.48.0.0/16
23.49.0.0/16 - 23.49.0.0/16
23.50.0.0/16 - 23.50.0.0/16
23.51.0.0/16 - 23.51.0.0/16
23.52.0.0/16 - 23.52.0.0/16
23.53.0.0/16 - 23.53.0.0/16
23.54.0.0/16 - 23.54.0.0/16
23.55.0.0/16 - 23.55.0.0/16
23.56.0.0/16 - 23.56.0.0/16
23.57.0.0/16 - 23.57.0.0/16
23.58.0.0/16 - 23.58.0.0/16
23.59.0.0/16 - 23.59.0.0/16
23.60.0.0/16 - 23.60.0.0/16
23.61.0.0/16 - 23.61.0.0/16
23.62.0.0/16 - 23.62.0.0/16
23.63.0.0/16 - 23.63.0.0/16
23.64.0.0/16 - 23.64.0.0/16
23.65.0.0/16 - 23.65.0.0/16
23.67.0.0/16 - 23.67.0.0/16
23.72.0.0/16 - 23.72.0.0/16
23.73.0.0/16 - 23.73.0.0/16
23.74.0.0/16 - 23.74.0.0/16
23.75.0.0/16 - 23.75.0.0/16
23.76.0.0/16 - 23.76.0.0/16
23.77.0.0/16 - 23.77.0.0/16
23.78.0.0/16 - 23.78.0.0/16
23.79.0.0/16 - 23.79.0.0/16
23.192.0.0/16 - 23.192.0.0/16
23.193.0.0/16 - 23.193.0.0/16
23.194.0.0/16 - 23.194.0.0/16
23.196.0.0/16 - 23.196.0.0/16
23.197.0.0/16 - 23.197.0.0/16
23.198.0.0/16 - 23.198.0.0/16
23.199.0.0/16 - 23.199.0.0/16
23.200.0.0/16 - 23.200.0.0/16
23.201.0.0/16 - 23.201.0.0/16
23.202.0.0/16 - 23.202.0.0/16
23.203.0.0/16 - 23.203.0.0/16
23.204.0.0/16 - 23.204.0.0/16
23.205.0.0/16 - 23.205.0.0/16
23.206.0.0/16 - 23.206.0.0/16
23.207.0.0/16 - 23.207.0.0/16
23.208.0.0/16 - 23.208.0.0/16
23.209.0.0/16 - 23.209.0.0/16
23.210.0.0/16 - 23.210.0.0/16
23.211.0.0/16 - 23.211.0.0/16
23.212.0.0/16 - 23.212.0.0/16
23.213.0.0/16 - 23.213.0.0/16
23.214.0.0/16 - 23.214.0.0/16
23.215.0.0/16 - 23.215.0.0/16
23.216.0.0/16 - 23.216.0.0/16
23.217.0.0/16 - 23.217.0.0/16
23.218.0.0/16 - 23.218.0.0/16
23.219.0.0/16 - 23.219.0.0/16
23.220.0.0/16 - 23.220.0.0/16
23.221.0.0/16 - 23.221.0.0/16
23.222.0.0/16 - 23.222.0.0/16
23.223.0.0/16 - 23.223.0.0/16
31.0.0.0/4 - 31.0.0.0/4
31.13.0.0/16 - 31.13.0.0/16
37.10.0.0/16 - 37.10.0.0/16
45.121.0.0/16 - 45.121.0.0/16
45.121.184.0/24 - 45.121.184.0/24
45.121.186.0/24 - 45.121.186.0/24
46.0.0.0/4 - 46.0.0.0/4
59.0.0.0/4 - 59.0.0.0/4
60.254.0.0/16 - 60.254.0.0/16
61.213.0.0/16 - 61.213.0.0/16
63.146.0.0/16 - 63.146.0.0/16
63.219.0.0/16 - 63.219.0.0/16
63.243.0.0/16 - 63.243.0.0/16
64.0.0.0/4 - 64.0.0.0/4
64.124.0.0/16 - 64.124.0.0/16
65.152.0.0/16 - 65.152.0.0/16
65.158.0.0/16 - 65.158.0.0/16
66.0.0.0/4 - 66.0.0.0/4
67.0.0.0/4 - 67.0.0.0/4
67.131.0.0/16 - 67.131.0.0/16
69.0.0.0/4 - 69.0.0.0/4
69.16.0.0/16 - 69.16.0.0/16
69.63.0.0/16 - 69.63.0.0/16
69.171.0.0/16 - 69.171.0.0/16
69.192.0.0/16 - 69.192.0.0/16
72.165.0.0/16 - 72.165.0.0/16
72.246.0.0/16 - 72.246.0.0/16
72.247.0.0/16 - 72.247.0.0/16
74.0.0.0/4 - 74.0.0.0/4
74.86.0.0/16 - 74.86.0.0/16
74.201.0.0/16 - 74.201.0.0/16
75.0.0.0/4 - 75.0.0.0/4
75.126.0.0/16 - 75.126.0.0/16
78.16.0.0/16 - 78.16.0.0/16
84.53.0.0/16 - 84.53.0.0/16
85.190.0.0/16 - 85.190.0.0/16
88.0.0.0/4 - 88.0.0.0/4
88.221.0.0/16 - 88.221.0.0/16
92.122.0.0/16 - 92.122.0.0/16
92.123.0.0/16 - 92.123.0.0/16
95.100.0.0/16 - 95.100.0.0/16
95.101.0.0/16 - 95.101.0.0/16
96.0.0.0/4 - 96.0.0.0/4
96.6.0.0/16 - 96.6.0.0/16
96.16.0.0/16 - 96.16.0.0/16
96.17.0.0/16 - 96.17.0.0/16
103.10.124.0/24 - 103.10.124.0/24
103.28.0.0/16 - 103.28.0.0/16
103.28.54.0/24 - 103.28.54.0/24
103.74.0.0/16 - 103.74.0.0/16
104.0.0.0/4 - 104.0.0.0/4
104.65.0.0/16 - 104.65.0.0/16
104.66.0.0/16 - 104.66.0.0/16
104.67.0.0/16 - 104.67.0.0/16
104.68.0.0/16 - 104.68.0.0/16
104.70.0.0/16 - 104.70.0.0/16
104.71.0.0/16 - 104.71.0.0/16
104.72.0.0/16 - 104.72.0.0/16
104.73.0.0/16 - 104.73.0.0/16
104.75.0.0/16 - 104.75.0.0/16
104.76.0.0/16 - 104.76.0.0/16
104.77.0.0/16 - 104.77.0.0/16
104.79.0.0/16 - 104.79.0.0/16
104.80.0.0/16 - 104.80.0.0/16
104.81.0.0/16 - 104.81.0.0/16
104.82.0.0/16 - 104.82.0.0/16
104.83.0.0/16 - 104.83.0.0/16
104.84.0.0/16 - 104.84.0.0/16
104.85.0.0/16 - 104.85.0.0/16
104.86.0.0/16 - 104.86.0.0/16
104.87.0.0/16 - 104.87.0.0/16
104.89.0.0/16 - 104.89.0.0/16
104.90.0.0/16 - 104.90.0.0/16
104.91.0.0/16 - 104.91.0.0/16
104.92.0.0/16 - 104.92.0.0/16
104.94.0.0/16 - 104.94.0.0/16
104.95.0.0/16 - 104.95.0.0/16
104.97.0.0/16 - 104.97.0.0/16
104.98.0.0/16 - 104.98.0.0/16
104.100.0.0/16 - 104.100.0.0/16
104.101.0.0/16 - 104.101.0.0/16
104.102.0.0/16 - 104.102.0.0/16
104.103.0.0/16 - 104.103.0.0/16
104.104.0.0/16 - 104.104.0.0/16
104.105.0.0/16 - 104.105.0.0/16
104.106.0.0/16 - 104.106.0.0/16
104.107.0.0/16 - 104.107.0.0/16
104.108.0.0/16 - 104.108.0.0/16
104.109.0.0/16 - 104.109.0.0/16
104.110.0.0/16 - 104.110.0.0/16
104.111.0.0/16 - 104.111.0.0/16
104.112.0.0/16 - 104.112.0.0/16
104.113.0.0/16 - 104.113.0.0/16
104.115.0.0/16 - 104.115.0.0/16
104.116.0.0/16 - 104.116.0.0/16
104.117.0.0/16 - 104.117.0.0/16
104.118.0.0/16 - 104.118.0.0/16
104.119.0.0/16 - 104.119.0.0/16
104.120.0.0/16 - 104.120.0.0/16
104.121.0.0/16 - 104.121.0.0/16
104.122.0.0/16 - 104.122.0.0/16
104.123.0.0/16 - 104.123.0.0/16
104.124.0.0/16 - 104.124.0.0/16
104.126.0.0/16 - 104.126.0.0/16
104.127.0.0/16 - 104.127.0.0/16
106.15.0.0/16 - 106.15.0.0/16
110.45.0.0/16 - 110.45.0.0/16
115.223.0.0/16 - 115.223.0.0/16
117.103.0.0/16 - 117.103.0.0/16
118.155.0.0/16 - 118.155.0.0/16
118.214.0.0/16 - 118.214.0.0/16
118.215.0.0/16 - 118.215.0.0/16
120.24.184.25/32 - 120.24.184.25/32
121.156.0.0/16 - 121.156.0.0/16
122.252.0.0/16 - 122.252.0.0/16
125.56.0.0/16 - 125.56.0.0/16
125.252.0.0/16 - 125.252.0.0/16
128.241.0.0/16 - 128.241.0.0/16
139.175.0.0/16 - 139.175.0.0/16
141.0.0.0/4 - 141.0.0.0/4
146.66.0.0/16 - 146.66.0.0/16
152.199.0.0/16 - 152.199.0.0/16
153.254.0.0/16 - 153.254.0.0/16
153.254.86.0/24 - 153.254.86.0/24
155.133.0.0/16 - 155.133.0.0/16
155.133.232.0/24 - 155.133.232.0/24
155.133.233.0/24 - 155.133.233.0/24
155.133.234.0/24 - 155.133.234.0/24
155.133.235.0/24 - 155.133.235.0/24
155.133.239.0/24 - 155.133.239.0/24
155.133.244.0/24 - 155.133.244.0/24
155.133.253.0/24 - 155.133.253.0/24
155.133.254.0/24 - 155.133.254.0/24
162.254.0.0/16 - 162.254.0.0/16
162.254.192.0/24 - 162.254.192.0/24
162.254.193.0/24 - 162.254.193.0/24
162.254.194.0/24 - 162.254.194.0/24
162.254.199.0/24 - 162.254.199.0/24
165.254.0.0/16 - 165.254.0.0/16
172.0.0.0/4 - 172.0.0.0/4
172.224.0.0/16 - 172.224.0.0/16
172.226.0.0/16 - 172.226.0.0/16
172.227.0.0/16 - 172.227.0.0/16
172.228.0.0/16 - 172.228.0.0/16
172.229.0.0/16 - 172.229.0.0/16
172.230.0.0/16 - 172.230.0.0/16
172.231.0.0/16 - 172.231.0.0/16
173.0.0.0/4 - 173.0.0.0/4
173.197.0.0/16 - 173.197.0.0/16
173.205.0.0/16 - 173.205.0.0/16
173.222.0.0/16 - 173.222.0.0/16
173.223.0.0/16 - 173.223.0.0/16
173.252.0.0/16 - 173.252.0.0/16
174.36.0.0/16 - 174.36.0.0/16
175.99.0.0/16 - 175.99.0.0/16
175.139.0.0/16 - 175.139.0.0/16
180.101.192.0/24 - 180.101.192.0/24
182.162.0.0/16 - 182.162.0.0/16
184.0.0.0/4 - 184.0.0.0/4
184.24.0.0/16 - 184.24.0.0/16
184.25.0.0/16 - 184.25.0.0/16
184.26.0.0/16 - 184.26.0.0/16
184.29.0.0/16 - 184.29.0.0/16
184.30.0.0/16 - 184.30.0.0/16
184.31.0.0/16 - 184.31.0.0/16
184.50.0.0/16 - 184.50.0.0/16
184.51.0.0/16 - 184.51.0.0/16
184.84.0.0/16 - 184.84.0.0/16
184.85.0.0/16 - 184.85.0.0/16
184.87.0.0/16 - 184.87.0.0/16
185.25.0.0/16 - 185.25.0.0/16
185.27.0.0/16 - 185.27.0.0/16
185.88.0.0/16 - 185.88.0.0/16
192.69.96.0/24 - 192.69.96.0/24
192.81.0.0/16 - 192.81.0.0/16
198.87.0.0/16 - 198.87.0.0/16
198.172.0.0/16 - 198.172.0.0/16
199.0.0.0/4 - 199.0.0.0/4
199.239.0.0/16 - 199.239.0.0/16
203.69.0.0/16 - 203.69.0.0/16
203.80.149.0/24 - 203.80.149.0/24
205.186.0.0/16 - 205.186.0.0/16
205.196.6.0/24 - 205.196.6.0/24
205.197.0.0/16 - 205.197.0.0/16
208.0.0.0/4 - 208.0.0.0/4
208.64.0.0/16 - 208.64.0.0/16
208.64.200.0/24 - 208.64.200.0/24
208.78.0.0/16 - 208.78.0.0/16
208.78.164.0/24 - 208.78.164.0/24
208.78.166.0/24 - 208.78.166.0/24
208.78.167.0/24 - 208.78.167.0/24
209.170.0.0/16 - 209.170.0.0/16
210.61.0.0/16 - 210.61.0.0/16
210.201.0.0/16 - 210.201.0.0/16
216.3.0.0/16 - 216.3.0.0/16
216.156.0.0/16 - 216.156.0.0/16
223.119.0.0/16 - 223.119.0.0/16

File diff suppressed because it is too large Load Diff

View File

@ -193,7 +193,7 @@ config_su_check()
else else
LOG_OUT "Config File【$name】No Change, Do Nothing!" LOG_OUT "Config File【$name】No Change, Do Nothing!"
rm -rf "$CFG_FILE" rm -rf "$CFG_FILE"
sleep 5 sleep 3
SLOG_CLEAN SLOG_CLEAN
fi fi
else else
@ -214,7 +214,7 @@ config_error()
{ {
LOG_OUT "Error:【$name】Update Error, Please Try Again Later..." LOG_OUT "Error:【$name】Update Error, Please Try Again Later..."
rm -rf "$CFG_FILE" 2>/dev/null rm -rf "$CFG_FILE" 2>/dev/null
sleep 5 sleep 3
SLOG_CLEAN SLOG_CLEAN
} }
@ -248,15 +248,18 @@ field_name_check()
Value['proxies'] = Value['Proxy'] Value['proxies'] = Value['Proxy']
Value.delete('Proxy') Value.delete('Proxy')
puts '${LOGTIME} Warning: Proxy is no longer used. Auto replaced by proxies' puts '${LOGTIME} Warning: Proxy is no longer used. Auto replaced by proxies'
elsif Value.key?('Proxy Group') then end
if Value.key?('Proxy Group') then
Value['proxy-groups'] = Value['Proxy Group'] Value['proxy-groups'] = Value['Proxy Group']
Value.delete('Proxy Group') Value.delete('Proxy Group')
puts '${LOGTIME} Warning: Proxy Group is no longer used. Auto replaced by proxy-groups' puts '${LOGTIME} Warning: Proxy Group is no longer used. Auto replaced by proxy-groups'
elsif Value.key?('Rule') then end
if Value.key?('Rule') then
Value['rules'] = Value['Rule'] Value['rules'] = Value['Rule']
Value.delete('Rule') Value.delete('Rule')
puts '${LOGTIME} Warning: Rule is no longer used. Auto replaced by rules' puts '${LOGTIME} Warning: Rule is no longer used. Auto replaced by rules'
elsif Value.key?('rule-provider') then end
if Value.key?('rule-provider') then
Value['rule-providers'] = Value['rule-provider'] Value['rule-providers'] = Value['rule-provider']
Value.delete('rule-provider') Value.delete('rule-provider')
puts '${LOGTIME} Warning: rule-provider is no longer used. Auto replaced by rule-providers' puts '${LOGTIME} Warning: rule-provider is no longer used. Auto replaced by rule-providers'

View File

@ -13,9 +13,10 @@
} }
china_ip_route=$(uci get openclash.config.china_ip_route 2>/dev/null) china_ip_route=$(uci get openclash.config.china_ip_route 2>/dev/null)
china_ip6_route=$(uci get openclash.config.china_ip_route 2>/dev/null) china_ip6_route=$(uci get openclash.config.china_ip6_route 2>/dev/null)
CHNR_CUSTOM_URL=$(uci get openclash.config.chnr_custom_url 2>/dev/null) CHNR_CUSTOM_URL=$(uci get openclash.config.chnr_custom_url 2>/dev/null)
CHNR6_CUSTOM_URL=$(uci get openclash.config.chnr6_custom_url 2>/dev/null) CHNR6_CUSTOM_URL=$(uci get openclash.config.chnr6_custom_url 2>/dev/null)
disable_udp_quic=$(uci get openclash.config.disable_udp_quic 2>/dev/null)
small_flash_memory=$(uci get openclash.config.small_flash_memory 2>/dev/null) small_flash_memory=$(uci get openclash.config.small_flash_memory 2>/dev/null)
set_lock set_lock
@ -49,16 +50,18 @@
if [ "$?" -ne "0" ]; then if [ "$?" -ne "0" ]; then
LOG_OUT "Chnroute Cidr List Has Been Updated, Starting To Replace The Old Version..." LOG_OUT "Chnroute Cidr List Has Been Updated, Starting To Replace The Old Version..."
mv /tmp/china_ip_route.list "$chnr_path" >/dev/null 2>&1 mv /tmp/china_ip_route.list "$chnr_path" >/dev/null 2>&1
[ "$china_ip_route" -eq 1 ] && [ "$(unify_ps_prevent)" -eq 0 ] && /etc/init.d/openclash restart >/dev/null 2>&1 & if [ "$china_ip_route" -eq 1 ] || [ "$disable_udp_quic" -eq 1 ]; then
[ "$(unify_ps_prevent)" -eq 0 ] && /etc/init.d/openclash restart >/dev/null 2>&1 &
fi
LOG_OUT "Chnroute Cidr List Update Successful!" LOG_OUT "Chnroute Cidr List Update Successful!"
sleep 5 sleep 3
else else
LOG_OUT "Updated Chnroute Cidr List No Change, Do Nothing..." LOG_OUT "Updated Chnroute Cidr List No Change, Do Nothing..."
sleep 5 sleep 3
fi fi
else else
LOG_OUT "Chnroute Cidr List Update Error, Please Try Again Later..." LOG_OUT "Chnroute Cidr List Update Error, Please Try Again Later..."
sleep 5 sleep 3
fi fi
#ipv6 #ipv6
@ -77,16 +80,18 @@
if [ "$?" -ne "0" ]; then if [ "$?" -ne "0" ]; then
LOG_OUT "Chnroute6 Cidr List Has Been Updated, Starting To Replace The Old Version..." LOG_OUT "Chnroute6 Cidr List Has Been Updated, Starting To Replace The Old Version..."
mv /tmp/china_ip6_route.list "$chnr6_path" >/dev/null 2>&1 mv /tmp/china_ip6_route.list "$chnr6_path" >/dev/null 2>&1
[ "$china_ip6_route" -eq 1 ] && [ "$(unify_ps_prevent)" -eq 0 ] && /etc/init.d/openclash restart >/dev/null 2>&1 & if [ "$china_ip6_route" -eq 1 ] || [ "$disable_udp_quic" -eq 1 ]; then
[ "$(unify_ps_prevent)" -eq 0 ] && /etc/init.d/openclash restart >/dev/null 2>&1 &
fi
LOG_OUT "Chnroute6 Cidr List Update Successful!" LOG_OUT "Chnroute6 Cidr List Update Successful!"
sleep 5 sleep 3
else else
LOG_OUT "Updated Chnroute6 Cidr List No Change, Do Nothing..." LOG_OUT "Updated Chnroute6 Cidr List No Change, Do Nothing..."
sleep 5 sleep 3
fi fi
else else
LOG_OUT "Chnroute6 Cidr List Update Error, Please Try Again Later..." LOG_OUT "Chnroute6 Cidr List Update Error, Please Try Again Later..."
sleep 5 sleep 3
fi fi
rm -rf /tmp/china_ip*_route* >/dev/null 2>&1 rm -rf /tmp/china_ip*_route* >/dev/null 2>&1
SLOG_CLEAN SLOG_CLEAN

View File

@ -28,7 +28,7 @@ case $CORE_TYPE in
CORE_LV=$(sed -n 2p /tmp/clash_last_version 2>/dev/null) CORE_LV=$(sed -n 2p /tmp/clash_last_version 2>/dev/null)
if [ -z "$CORE_LV" ]; then if [ -z "$CORE_LV" ]; then
LOG_OUT "Error: 【"$CORE_TYPE"】Core Version Check Error, Please Try Again Later..." LOG_OUT "Error: 【"$CORE_TYPE"】Core Version Check Error, Please Try Again Later..."
sleep 5 sleep 3
SLOG_CLEAN SLOG_CLEAN
exit 0 exit 0
fi fi
@ -121,7 +121,7 @@ if [ "$CORE_CV" != "$CORE_LV" ] || [ -z "$CORE_CV" ]; then
;; ;;
*) *)
esac esac
sleep 5 sleep 3
SLOG_CLEAN SLOG_CLEAN
exit 0 exit 0
fi fi
@ -162,7 +162,7 @@ if [ "$CORE_CV" != "$CORE_LV" ] || [ -z "$CORE_CV" ]; then
;; ;;
*) *)
esac esac
sleep 5 sleep 3
SLOG_CLEAN SLOG_CLEAN
fi fi
else else
@ -177,16 +177,16 @@ if [ "$CORE_CV" != "$CORE_LV" ] || [ -z "$CORE_CV" ]; then
*) *)
rm -rf /tmp/clash >/dev/null 2>&1 rm -rf /tmp/clash >/dev/null 2>&1
esac esac
sleep 10 sleep 3
SLOG_CLEAN SLOG_CLEAN
fi fi
else else
LOG_OUT "No Compiled Version Selected, Please Select In Global Settings And Try Again!" LOG_OUT "No Compiled Version Selected, Please Select In Global Settings And Try Again!"
sleep 10 sleep 3
SLOG_CLEAN SLOG_CLEAN
fi fi
else else
LOG_OUT "【"$CORE_TYPE"】Core Has Not Been Updated, Stop Continuing Operation!" LOG_OUT "【"$CORE_TYPE"】Core Has Not Been Updated, Stop Continuing Operation!"
sleep 5 sleep 3
SLOG_CLEAN SLOG_CLEAN
fi fi

View File

@ -13,7 +13,11 @@ urlencode() {
} }
RULE_FILE_NAME="$1" RULE_FILE_NAME="$1"
if [ -z "$(grep "$RULE_FILE_NAME" /usr/share/openclash/res/rule_providers.list 2>/dev/null)" ]; then if [ "$1" == "netflix_domains" ]; then
DOWNLOAD_PATH="https://cdn.jsdelivr.net/gh/vernesong/OpenClash@master/luci-app-openclash/root/usr/share/openclash/res/Netflix_Domains.list"
RULE_FILE_DIR="/usr/share/openclash/res/Netflix_Domains.list"
RULE_TYPE="netflix"
elif [ -z "$(grep "$RULE_FILE_NAME" /usr/share/openclash/res/rule_providers.list 2>/dev/null)" ]; then
DOWNLOAD_PATH=$(grep -F "$RULE_FILE_NAME" /usr/share/openclash/res/game_rules.list |awk -F ',' '{print $2}' 2>/dev/null) DOWNLOAD_PATH=$(grep -F "$RULE_FILE_NAME" /usr/share/openclash/res/game_rules.list |awk -F ',' '{print $2}' 2>/dev/null)
RULE_FILE_DIR="/etc/openclash/game_rules/$RULE_FILE_NAME" RULE_FILE_DIR="/etc/openclash/game_rules/$RULE_FILE_NAME"
RULE_TYPE="game" RULE_TYPE="game"
@ -30,9 +34,12 @@ urlencode() {
fi fi
TMP_RULE_DIR="/tmp/$RULE_FILE_NAME" TMP_RULE_DIR="/tmp/$RULE_FILE_NAME"
DOWNLOAD_PATH=$(urlencode "$DOWNLOAD_PATH") TMP_RULE_DIR_TMP="/tmp/$RULE_FILE_NAME.tmp"
[ "$RULE_TYPE" != "netflix" ] && DOWNLOAD_PATH=$(urlencode "$DOWNLOAD_PATH")
if [ "$RULE_TYPE" = "game" ]; then if [ "$RULE_TYPE" = "netflix" ]; then
curl -sL --connect-timeout 5 --retry 2 "$DOWNLOAD_PATH" -o "$TMP_RULE_DIR" >/dev/null 2>&1
elif [ "$RULE_TYPE" = "game" ]; then
if pidof clash >/dev/null; then if pidof clash >/dev/null; then
curl -sL --connect-timeout 5 --retry 2 https://raw.githubusercontent.com/FQrabbit/SSTap-Rule/master/rules/"$DOWNLOAD_PATH" -o "$TMP_RULE_DIR" >/dev/null 2>&1 curl -sL --connect-timeout 5 --retry 2 https://raw.githubusercontent.com/FQrabbit/SSTap-Rule/master/rules/"$DOWNLOAD_PATH" -o "$TMP_RULE_DIR" >/dev/null 2>&1
fi fi
@ -49,15 +56,26 @@ urlencode() {
fi fi
if [ "$?" -eq "0" ] && [ -s "$TMP_RULE_DIR" ] && [ -z "$(grep "404: Not Found" "$TMP_RULE_DIR")" ]; then if [ "$?" -eq "0" ] && [ -s "$TMP_RULE_DIR" ] && [ -z "$(grep "404: Not Found" "$TMP_RULE_DIR")" ]; then
cmp -s "$TMP_RULE_DIR" "$RULE_FILE_DIR" if [ "$RULE_TYPE" = "game" ]; then
cat "$TMP_RULE_DIR" |sed '/^#/d' 2>/dev/null |sed '/^ *$/d' 2>/dev/null |awk '{print " - "$0}' > "$TMP_RULE_DIR_TMP" 2>/dev/null
sed -i '1i\payload:' "$TMP_RULE_DIR_TMP" 2>/dev/null
cmp -s "$TMP_RULE_DIR_TMP" "$RULE_FILE_DIR"
else
cmp -s "$TMP_RULE_DIR" "$RULE_FILE_DIR"
fi
if [ "$?" -ne "0" ]; then if [ "$?" -ne "0" ]; then
mv "$TMP_RULE_DIR" "$RULE_FILE_DIR" >/dev/null 2>&1\ if [ "$RULE_TYPE" = "game" ]; then
&& rm -rf "$TMP_RULE_DIR" >/dev/null 2>&1 mv "$TMP_RULE_DIR_TMP" "$RULE_FILE_DIR" >/dev/null 2>&1
else
mv "$TMP_RULE_DIR" "$RULE_FILE_DIR" >/dev/null 2>&1
fi
rm -rf "$TMP_RULE_DIR" >/dev/null 2>&1
LOG_OUT "Rule File【$RULE_FILE_NAME】Download Successful!" && SLOG_CLEAN LOG_OUT "Rule File【$RULE_FILE_NAME】Download Successful!" && SLOG_CLEAN
return 1 return 1
else else
LOG_OUT "Rule File【$RULE_FILE_NAME】No Change, Do Nothing!" && SLOG_CLEAN LOG_OUT "Rule File【$RULE_FILE_NAME】No Change, Do Nothing!" && SLOG_CLEAN
rm -rf "$TMP_RULE_DIR" >/dev/null 2>&1 rm -rf "$TMP_RULE_DIR" >/dev/null 2>&1
rm -rf "$TMP_RULE_DIR_TMP" >/dev/null 2>&1
return 2 return 2
fi fi
else else

View File

@ -41,15 +41,15 @@
LOG_OUT "Geoip Database Has Been Updated, Starting To Replace The Old Version..." LOG_OUT "Geoip Database Has Been Updated, Starting To Replace The Old Version..."
mv /tmp/Country.mmdb "$geoip_path" >/dev/null 2>&1 mv /tmp/Country.mmdb "$geoip_path" >/dev/null 2>&1
LOG_OUT "Geoip Database Update Successful!" LOG_OUT "Geoip Database Update Successful!"
sleep 5 sleep 3
[ "$(unify_ps_prevent)" -eq 0 ] && /etc/init.d/openclash restart >/dev/null 2>&1 & [ "$(unify_ps_prevent)" -eq 0 ] && /etc/init.d/openclash restart >/dev/null 2>&1 &
else else
LOG_OUT "Updated Geoip Database No Change, Do Nothing..." LOG_OUT "Updated Geoip Database No Change, Do Nothing..."
sleep 5 sleep 3
fi fi
else else
LOG_OUT "Geoip Database Update Error, Please Try Again Later..." LOG_OUT "Geoip Database Update Error, Please Try Again Later..."
sleep 5 sleep 3
fi fi
rm -rf /tmp/Country.mmdb >/dev/null 2>&1 rm -rf /tmp/Country.mmdb >/dev/null 2>&1
SLOG_CLEAN SLOG_CLEAN

View File

@ -120,11 +120,11 @@
ifrestart=1 ifrestart=1
else else
LOG_OUT "Updated Other Rules【$rule_name】No Change, Do Nothing!" LOG_OUT "Updated Other Rules【$rule_name】No Change, Do Nothing!"
sleep 5 sleep 3
fi fi
else else
LOG_OUT "Other Rules【$rule_name】Update Error, Please Try Again Later..." LOG_OUT "Other Rules【$rule_name】Update Error, Please Try Again Later..."
sleep 5 sleep 3
fi fi
} }
@ -135,7 +135,7 @@
if [ "$RUlE_SOURCE" = "0" ]; then if [ "$RUlE_SOURCE" = "0" ]; then
LOG_OUT "Other Rules Not Enable, Update Stop!" LOG_OUT "Other Rules Not Enable, Update Stop!"
sleep 5 sleep 3
else else
OTHER_RULE_FILE="/tmp/other_rule.yaml" OTHER_RULE_FILE="/tmp/other_rule.yaml"
CONFIG_FILE=$(uci get openclash.config.config_path 2>/dev/null) CONFIG_FILE=$(uci get openclash.config.config_path 2>/dev/null)
@ -156,7 +156,7 @@
config_foreach yml_other_rules_dl "other_rules" "$CONFIG_NAME" config_foreach yml_other_rules_dl "other_rules" "$CONFIG_NAME"
if [ -z "$rule_name" ]; then if [ -z "$rule_name" ]; then
LOG_OUT "Get Other Rules Settings Faild, Update Stop!" LOG_OUT "Get Other Rules Settings Faild, Update Stop!"
sleep 5 sleep 3
fi fi
if [ "$ifrestart" -eq 1 ] && [ "$(unify_ps_prevent)" -eq 0 ]; then if [ "$ifrestart" -eq 1 ] && [ "$(unify_ps_prevent)" -eq 0 ]; then
/etc/init.d/openclash restart >/dev/null 2>&1 & /etc/init.d/openclash restart >/dev/null 2>&1 &

View File

@ -40,7 +40,7 @@ if [ "$(expr "$OP_LV" \> "$OP_CV")" -eq 1 ] && [ -f "$LAST_OPVER" ]; then
opkg install /tmp/openclash.ipk --noaction >>$LOG_FILE opkg install /tmp/openclash.ipk --noaction >>$LOG_FILE
if [ "$?" -ne "0" ]; then if [ "$?" -ne "0" ]; then
LOG_OUT "【OpenClash - v$LAST_VER】Pre Update Test Failed, The File is Saved in /tmp/opencrash.ipk, Please Try to Update Manually!" LOG_OUT "【OpenClash - v$LAST_VER】Pre Update Test Failed, The File is Saved in /tmp/opencrash.ipk, Please Try to Update Manually!"
sleep 10 sleep 3
SLOG_CLEAN SLOG_CLEAN
del_lock del_lock
exit 0 exit 0
@ -80,7 +80,7 @@ if [ "$?" -eq "0" ]; then
/etc/init.d/openclash restart 2>/dev/null /etc/init.d/openclash restart 2>/dev/null
else else
LOG_OUT "OpenClash Update Failed, The File is Saved in /tmp/openclash.ipk, Please Try to Update Manually!" LOG_OUT "OpenClash Update Failed, The File is Saved in /tmp/openclash.ipk, Please Try to Update Manually!"
sleep 10 sleep 3
SLOG_CLEAN SLOG_CLEAN
fi fi
EOF EOF
@ -91,7 +91,7 @@ EOF
else else
LOG_OUT "【OpenClash - v$LAST_VER】Download Failed, Please Check The Network or Try Again Later!" LOG_OUT "【OpenClash - v$LAST_VER】Download Failed, Please Check The Network or Try Again Later!"
rm -rf /tmp/openclash.ipk >/dev/null 2>&1 rm -rf /tmp/openclash.ipk >/dev/null 2>&1
sleep 5 sleep 3
SLOG_CLEAN SLOG_CLEAN
if [ "$(uci get openclash.config.config_reload 2>/dev/null)" -eq 0 ]; then if [ "$(uci get openclash.config.config_reload 2>/dev/null)" -eq 0 ]; then
uci set openclash.config.config_reload=1 uci set openclash.config.config_reload=1
@ -102,11 +102,11 @@ EOF
else else
if [ ! -f "$LAST_OPVER" ]; then if [ ! -f "$LAST_OPVER" ]; then
LOG_OUT "Failed to Get Version Information, Please Try Again Later..." LOG_OUT "Failed to Get Version Information, Please Try Again Later..."
sleep 5 sleep 3
SLOG_CLEAN SLOG_CLEAN
else else
LOG_OUT "OpenClash Has not Been Updated, Stop Continuing!" LOG_OUT "OpenClash Has not Been Updated, Stop Continuing!"
sleep 5 sleep 3
SLOG_CLEAN SLOG_CLEAN
fi fi
if [ "$(uci get openclash.config.config_reload 2>/dev/null)" -eq 0 ]; then if [ "$(uci get openclash.config.config_reload 2>/dev/null)" -eq 0 ]; then

View File

@ -9,19 +9,24 @@ PROXY_ROUTE_TABLE="0x162"
enable_redirect_dns=$(uci -q get openclash.config.enable_redirect_dns) enable_redirect_dns=$(uci -q get openclash.config.enable_redirect_dns)
dns_port=$(uci -q get openclash.config.dns_port) dns_port=$(uci -q get openclash.config.dns_port)
disable_masq_cache=$(uci -q get openclash.config.disable_masq_cache) disable_masq_cache=$(uci -q get openclash.config.disable_masq_cache)
cfg_update_interval=$(uci -q get openclash.config.config_update_interval) cfg_update_interval=$(uci -q get openclash.config.config_update_interval || echo 60)
log_size=$(uci -q get openclash.config.log_size || echo 1024) log_size=$(uci -q get openclash.config.log_size || echo 1024)
core_type=$(uci -q get openclash.config.core_type) core_type=$(uci -q get openclash.config.core_type)
netflix_domains_prefetch_interval=$(uci -q get openclash.config.netflix_domains_prefetch_interval || echo 60)
NETFLIX_DOMAINS_LIST="/usr/share/openclash/res/Netflix_Domains.list"
_koolshare=$(cat /usr/lib/os-release 2>/dev/null |grep OPENWRT_RELEASE 2>/dev/null |grep -i koolshare 2>/dev/null) _koolshare=$(cat /usr/lib/os-release 2>/dev/null |grep OPENWRT_RELEASE 2>/dev/null |grep -i koolshare 2>/dev/null)
CRASH_NUM=0 CRASH_NUM=0
CFG_UPDATE_INT=0 CFG_UPDATE_INT=1
NETFLIX_DOMAINS_PREFETCH=1
sleep 60 sleep 60
while :; while :;
do do
cfg_update=$(uci -q get openclash.config.auto_update) cfg_update=$(uci -q get openclash.config.auto_update)
cfg_update_mode=$(uci -q get openclash.config.config_auto_update_mode) cfg_update_mode=$(uci -q get openclash.config.config_auto_update_mode)
cfg_update_interval_now=$(uci -q get openclash.config.config_update_interval) cfg_update_interval_now=$(uci -q get openclash.config.config_update_interval || echo 60)
netflix_domains_prefetch=$(uci -q get openclash.config.netflix_domains_prefetch || echo 0)
netflix_domains_prefetch_interval_now=$(uci -q get openclash.config.netflix_domains_prefetch_interval || echo 60)
enable=$(uci -q get openclash.config.enable) enable=$(uci -q get openclash.config.enable)
if [ "$enable" -eq 1 ]; then if [ "$enable" -eq 1 ]; then
@ -110,12 +115,6 @@ fi
## 配置文件循环更新 ## 配置文件循环更新
if [ "$cfg_update" -eq 1 ] && [ "$cfg_update_mode" -eq 1 ]; then if [ "$cfg_update" -eq 1 ] && [ "$cfg_update_mode" -eq 1 ]; then
if [ -z "$cfg_update_interval_now" ]; then
cfg_update_interval_now=60
fi
if [ -z "$cfg_update_interval" ]; then
cfg_update_interval=60
fi
[ "$cfg_update_interval" -ne "$cfg_update_interval_now" ] && CFG_UPDATE_INT=0 && cfg_update_interval="$cfg_update_interval_now" [ "$cfg_update_interval" -ne "$cfg_update_interval_now" ] && CFG_UPDATE_INT=0 && cfg_update_interval="$cfg_update_interval_now"
if [ "$CFG_UPDATE_INT" -ne 0 ]; then if [ "$CFG_UPDATE_INT" -ne 0 ]; then
[ "$(expr "$CFG_UPDATE_INT" % "$cfg_update_interval_now")" -eq 0 ] && /usr/share/openclash/openclash.sh [ "$(expr "$CFG_UPDATE_INT" % "$cfg_update_interval_now")" -eq 0 ] && /usr/share/openclash/openclash.sh
@ -123,8 +122,24 @@ fi
CFG_UPDATE_INT=$(expr "$CFG_UPDATE_INT" + 1) CFG_UPDATE_INT=$(expr "$CFG_UPDATE_INT" + 1)
fi fi
##dler checkin ##Dler Cloud Checkin
/usr/share/openclash/openclash_dler_checkin.lua /usr/share/openclash/openclash_dler_checkin.lua >/dev/null 2>&1
##NETFLIX_DNS_PREFETCH
if [ "$netflix_domains_prefetch" -eq 1 ]; then
[ "$netflix_domains_prefetch_interval" -ne "$netflix_domains_prefetch_interval_now" ] && NETFLIX_DOMAINS_PREFETCH=0 && netflix_domains_prefetch_interval="$netflix_domains_prefetch_interval_now"
if [ "$NETFLIX_DOMAINS_PREFETCH" -ne 0 ]; then
if [ "$(expr "$NETFLIX_DOMAINS_PREFETCH" % "$netflix_domains_prefetch_interval_now")" -eq 0 ]; then
LOG_OUT "Tip: Start Prefetch Netflix Domains..."
cat "$NETFLIX_DOMAINS_LIST" |while read -r line
do
[ -n "$line" ] && nslookup $line >/dev/null 2>&1
done
LOG_OUT "Tip: Netflix Domains Prefetch Finished..."
fi
fi
NETFLIX_DOMAINS_PREFETCH=$(expr "$NETFLIX_DOMAINS_PREFETCH" + 1)
fi
SLOG_CLEAN SLOG_CLEAN
sleep 60 sleep 60

View File

@ -0,0 +1,519 @@
ipv4-c001-hkg001-hgc-isp.1.oca.nflxvideo.net
ipv4-c003-hkg001-hgc-isp.1.oca.nflxvideo.net
ipv4-c004-hkg001-hgc-isp.1.oca.nflxvideo.net
ipv4-c001-hkg002-hgc-isp.1.oca.nflxvideo.net
ipv4-c002-hkg002-hgc-isp.1.oca.nflxvideo.net
ipv4-c001-hkg001-cmhk-isp.1.oca.nflxvideo.net
ipv4-c002-hkg001-cmhk-isp.1.oca.nflxvideo.net
ipv4-c002-hkg001-hkbn-isp.1.oca.nflxvideo.net
ipv4-c003-hkg001-hkbn-isp.1.oca.nflxvideo.net
ipv4-c004-hkg001-hkbn-isp.1.oca.nflxvideo.net
ipv4-c005-hkg001-hkbn-isp.1.oca.nflxvideo.net
ipv4-c001-hkg002-hkbn-isp.1.oca.nflxvideo.net
ipv4-c002-hkg002-hkbn-isp.1.oca.nflxvideo.net
ipv4-c003-hkg002-hkbn-isp.1.oca.nflxvideo.net
ipv4-c004-hkg002-hkbn-isp.1.oca.nflxvideo.net
ipv4-c001-hkg001-pccw-isp.1.oca.nflxvideo.net
ipv4-c002-hkg001-pccw-isp.1.oca.nflxvideo.net
ipv4-c003-hkg001-pccw-isp.1.oca.nflxvideo.net
ipv4-c004-hkg001-pccw-isp.1.oca.nflxvideo.net
ipv4-c002-hkg002-pccw-isp.1.oca.nflxvideo.net
ipv4-c003-hkg002-pccw-isp.1.oca.nflxvideo.net
ipv4-c004-hkg002-pccw-isp.1.oca.nflxvideo.net
ipv4-c005-hkg002-pccw-isp.1.oca.nflxvideo.net
ipv4-c001-hkg003-pccw-isp.1.oca.nflxvideo.net
ipv4-c002-hkg003-pccw-isp.1.oca.nflxvideo.net
ipv4-c004-hkg003-pccw-isp.1.oca.nflxvideo.net
ipv4-c010-hkg001-ix.1.oca.nflxvideo.net
ipv6-c010-hkg001-ix.1.oca.nflxvideo.net
ipv6-c010-hkg001-ix.1.oca.nflxvideo.net
ipv4-c020-hkg001-ix.1.oca.nflxvideo.net
ipv6-c020-hkg001-ix.1.oca.nflxvideo.net
ipv6-c020-hkg001-ix.1.oca.nflxvideo.net
ipv4-c030-hkg001-ix.1.oca.nflxvideo.net
ipv6-c030-hkg001-ix.1.oca.nflxvideo.net
ipv6-c030-hkg001-ix.1.oca.nflxvideo.net
ipv4-c040-hkg001-ix.1.oca.nflxvideo.net
ipv6-c040-hkg001-ix.1.oca.nflxvideo.net
ipv6-c040-hkg001-ix.1.oca.nflxvideo.net
ipv4-c050-hkg001-ix.1.oca.nflxvideo.net
ipv4-c001-hkg001-ix.1.oca.nflxvideo.net
ipv6-c001-hkg001-ix.1.oca.nflxvideo.net
ipv6-c001-hkg001-ix.1.oca.nflxvideo.net
ipv4-c011-hkg001-ix.1.oca.nflxvideo.net
ipv6-c011-hkg001-ix.1.oca.nflxvideo.net
ipv6-c011-hkg001-ix.1.oca.nflxvideo.net
ipv4-c021-hkg001-ix.1.oca.nflxvideo.net
ipv6-c021-hkg001-ix.1.oca.nflxvideo.net
ipv6-c021-hkg001-ix.1.oca.nflxvideo.net
ipv4-c031-hkg001-ix.1.oca.nflxvideo.net
ipv6-c031-hkg001-ix.1.oca.nflxvideo.net
ipv6-c031-hkg001-ix.1.oca.nflxvideo.net
ipv4-c041-hkg001-ix.1.oca.nflxvideo.net
ipv6-c041-hkg001-ix.1.oca.nflxvideo.net
ipv6-c041-hkg001-ix.1.oca.nflxvideo.net
ipv4-c051-hkg001-ix.1.oca.nflxvideo.net
ipv4-c002-hkg001-ix.1.oca.nflxvideo.net
ipv6-c002-hkg001-ix.1.oca.nflxvideo.net
ipv6-c002-hkg001-ix.1.oca.nflxvideo.net
ipv4-c012-hkg001-ix.1.oca.nflxvideo.net
ipv6-c012-hkg001-ix.1.oca.nflxvideo.net
ipv6-c012-hkg001-ix.1.oca.nflxvideo.net
ipv4-c022-hkg001-ix.1.oca.nflxvideo.net
ipv6-c022-hkg001-ix.1.oca.nflxvideo.net
ipv6-c022-hkg001-ix.1.oca.nflxvideo.net
ipv4-c032-hkg001-ix.1.oca.nflxvideo.net
ipv6-c032-hkg001-ix.1.oca.nflxvideo.net
ipv6-c032-hkg001-ix.1.oca.nflxvideo.net
ipv4-c042-hkg001-ix.1.oca.nflxvideo.net
ipv6-c042-hkg001-ix.1.oca.nflxvideo.net
ipv6-c042-hkg001-ix.1.oca.nflxvideo.net
ipv4-c052-hkg001-ix.1.oca.nflxvideo.net
ipv4-c003-hkg001-ix.1.oca.nflxvideo.net
ipv6-c003-hkg001-ix.1.oca.nflxvideo.net
ipv4-c013-hkg001-ix.1.oca.nflxvideo.net
ipv6-c013-hkg001-ix.1.oca.nflxvideo.net
ipv6-c013-hkg001-ix.1.oca.nflxvideo.net
ipv4-c023-hkg001-ix.1.oca.nflxvideo.net
ipv6-c023-hkg001-ix.1.oca.nflxvideo.net
ipv6-c023-hkg001-ix.1.oca.nflxvideo.net
ipv4-c033-hkg001-ix.1.oca.nflxvideo.net
ipv6-c033-hkg001-ix.1.oca.nflxvideo.net
ipv6-c033-hkg001-ix.1.oca.nflxvideo.net
ipv4-c043-hkg001-ix.1.oca.nflxvideo.net
ipv6-c043-hkg001-ix.1.oca.nflxvideo.net
ipv6-c043-hkg001-ix.1.oca.nflxvideo.net
ipv4-c053-hkg001-ix.1.oca.nflxvideo.net
ipv4-c004-hkg001-ix.1.oca.nflxvideo.net
ipv6-c004-hkg001-ix.1.oca.nflxvideo.net
ipv6-c004-hkg001-ix.1.oca.nflxvideo.net
ipv4-c014-hkg001-ix.1.oca.nflxvideo.net
ipv6-c014-hkg001-ix.1.oca.nflxvideo.net
ipv6-c014-hkg001-ix.1.oca.nflxvideo.net
ipv4-c024-hkg001-ix.1.oca.nflxvideo.net
ipv6-c024-hkg001-ix.1.oca.nflxvideo.net
ipv6-c024-hkg001-ix.1.oca.nflxvideo.net
ipv4-c034-hkg001-ix.1.oca.nflxvideo.net
ipv6-c034-hkg001-ix.1.oca.nflxvideo.net
ipv6-c034-hkg001-ix.1.oca.nflxvideo.net
ipv4-c044-hkg001-ix.1.oca.nflxvideo.net
ipv6-c044-hkg001-ix.1.oca.nflxvideo.net
ipv6-c044-hkg001-ix.1.oca.nflxvideo.net
ipv4-c054-hkg001-ix.1.oca.nflxvideo.net
ipv4-c005-hkg001-ix.1.oca.nflxvideo.net
ipv6-c005-hkg001-ix.1.oca.nflxvideo.net
ipv6-c005-hkg001-ix.1.oca.nflxvideo.net
ipv4-c015-hkg001-ix.1.oca.nflxvideo.net
ipv6-c015-hkg001-ix.1.oca.nflxvideo.net
ipv6-c015-hkg001-ix.1.oca.nflxvideo.net
ipv4-c025-hkg001-ix.1.oca.nflxvideo.net
ipv6-c025-hkg001-ix.1.oca.nflxvideo.net
ipv6-c025-hkg001-ix.1.oca.nflxvideo.net
ipv4-c035-hkg001-ix.1.oca.nflxvideo.net
ipv6-c035-hkg001-ix.1.oca.nflxvideo.net
ipv6-c035-hkg001-ix.1.oca.nflxvideo.net
ipv4-c045-hkg001-ix.1.oca.nflxvideo.net
ipv4-c055-hkg001-ix.1.oca.nflxvideo.net
ipv4-c006-hkg001-ix.1.oca.nflxvideo.net
ipv6-c006-hkg001-ix.1.oca.nflxvideo.net
ipv6-c006-hkg001-ix.1.oca.nflxvideo.net
ipv4-c016-hkg001-ix.1.oca.nflxvideo.net
ipv6-c016-hkg001-ix.1.oca.nflxvideo.net
ipv6-c016-hkg001-ix.1.oca.nflxvideo.net
ipv4-c026-hkg001-ix.1.oca.nflxvideo.net
ipv6-c026-hkg001-ix.1.oca.nflxvideo.net
ipv6-c026-hkg001-ix.1.oca.nflxvideo.net
ipv4-c036-hkg001-ix.1.oca.nflxvideo.net
ipv6-c036-hkg001-ix.1.oca.nflxvideo.net
ipv6-c036-hkg001-ix.1.oca.nflxvideo.net
ipv4-c046-hkg001-ix.1.oca.nflxvideo.net
ipv4-c007-hkg001-ix.1.oca.nflxvideo.net
ipv6-c007-hkg001-ix.1.oca.nflxvideo.net
ipv6-c007-hkg001-ix.1.oca.nflxvideo.net
ipv4-c017-hkg001-ix.1.oca.nflxvideo.net
ipv6-c017-hkg001-ix.1.oca.nflxvideo.net
ipv6-c017-hkg001-ix.1.oca.nflxvideo.net
ipv4-c027-hkg001-ix.1.oca.nflxvideo.net
ipv6-c027-hkg001-ix.1.oca.nflxvideo.net
ipv6-c027-hkg001-ix.1.oca.nflxvideo.net
ipv4-c037-hkg001-ix.1.oca.nflxvideo.net
ipv6-c037-hkg001-ix.1.oca.nflxvideo.net
ipv6-c037-hkg001-ix.1.oca.nflxvideo.net
ipv4-c008-hkg001-ix.1.oca.nflxvideo.net
ipv6-c008-hkg001-ix.1.oca.nflxvideo.net
ipv6-c008-hkg001-ix.1.oca.nflxvideo.net
ipv4-c018-hkg001-ix.1.oca.nflxvideo.net
ipv6-c018-hkg001-ix.1.oca.nflxvideo.net
ipv6-c018-hkg001-ix.1.oca.nflxvideo.net
ipv4-c028-hkg001-ix.1.oca.nflxvideo.net
ipv6-c028-hkg001-ix.1.oca.nflxvideo.net
ipv6-c028-hkg001-ix.1.oca.nflxvideo.net
ipv4-c038-hkg001-ix.1.oca.nflxvideo.net
ipv6-c038-hkg001-ix.1.oca.nflxvideo.net
ipv6-c038-hkg001-ix.1.oca.nflxvideo.net
ipv4-c009-hkg001-ix.1.oca.nflxvideo.net
ipv6-c009-hkg001-ix.1.oca.nflxvideo.net
ipv4-c019-hkg001-ix.1.oca.nflxvideo.net
ipv6-c019-hkg001-ix.1.oca.nflxvideo.net
ipv6-c019-hkg001-ix.1.oca.nflxvideo.net
ipv4-c029-hkg001-ix.1.oca.nflxvideo.net
ipv6-c029-hkg001-ix.1.oca.nflxvideo.net
ipv6-c029-hkg001-ix.1.oca.nflxvideo.net
ipv4-c039-hkg001-ix.1.oca.nflxvideo.net
ipv6-c039-hkg001-ix.1.oca.nflxvideo.net
ipv6-c039-hkg001-ix.1.oca.nflxvideo.net
ipv4-c049-hkg001-ix.1.oca.nflxvideo.net
ipv4-c001-sin001-starhub-isp.1.oca.nflxvideo.net
ipv6-c001-sin001-starhub-isp.1.oca.nflxvideo.net
ipv6-c001-sin001-starhub-isp.1.oca.nflxvideo.net
ipv4-c002-sin001-starhub-isp.1.oca.nflxvideo.net
ipv6-c002-sin001-starhub-isp.1.oca.nflxvideo.net
ipv6-c002-sin001-starhub-isp.1.oca.nflxvideo.net
ipv4-c003-sin001-starhub-isp.1.oca.nflxvideo.net
ipv6-c003-sin001-starhub-isp.1.oca.nflxvideo.net
ipv4-c004-sin001-starhub-isp.1.oca.nflxvideo.net
ipv6-c004-sin001-starhub-isp.1.oca.nflxvideo.net
ipv6-c004-sin001-starhub-isp.1.oca.nflxvideo.net
ipv4-c005-sin001-starhub-isp.1.oca.nflxvideo.net
ipv6-c005-sin001-starhub-isp.1.oca.nflxvideo.net
ipv6-c005-sin001-starhub-isp.1.oca.nflxvideo.net
ipv4-c006-sin001-starhub-isp.1.oca.nflxvideo.net
ipv6-c006-sin001-starhub-isp.1.oca.nflxvideo.net
ipv6-c006-sin001-starhub-isp.1.oca.nflxvideo.net
ipv4-c010-sin001-ix.1.oca.nflxvideo.net
ipv6-c010-sin001-ix.1.oca.nflxvideo.net
ipv6-c010-sin001-ix.1.oca.nflxvideo.net
ipv4-c020-sin001-ix.1.oca.nflxvideo.net
ipv4-c030-sin001-ix.1.oca.nflxvideo.net
ipv6-c030-sin001-ix.1.oca.nflxvideo.net
ipv4-c040-sin001-ix.1.oca.nflxvideo.net
ipv6-c040-sin001-ix.1.oca.nflxvideo.net
ipv6-c040-sin001-ix.1.oca.nflxvideo.net
ipv4-c001-sin001-ix.1.oca.nflxvideo.net
ipv4-c011-sin001-ix.1.oca.nflxvideo.net
ipv6-c011-sin001-ix.1.oca.nflxvideo.net
ipv6-c011-sin001-ix.1.oca.nflxvideo.net
ipv4-c021-sin001-ix.1.oca.nflxvideo.net
ipv4-c031-sin001-ix.1.oca.nflxvideo.net
ipv6-c031-sin001-ix.1.oca.nflxvideo.net
ipv6-c031-sin001-ix.1.oca.nflxvideo.net
ipv4-c041-sin001-ix.1.oca.nflxvideo.net
ipv6-c041-sin001-ix.1.oca.nflxvideo.net
ipv6-c041-sin001-ix.1.oca.nflxvideo.net
ipv4-c002-sin001-ix.1.oca.nflxvideo.net
ipv6-c002-sin001-ix.1.oca.nflxvideo.net
ipv6-c002-sin001-ix.1.oca.nflxvideo.net
ipv4-c012-sin001-ix.1.oca.nflxvideo.net
ipv6-c012-sin001-ix.1.oca.nflxvideo.net
ipv6-c012-sin001-ix.1.oca.nflxvideo.net
ipv4-c032-sin001-ix.1.oca.nflxvideo.net
ipv6-c032-sin001-ix.1.oca.nflxvideo.net
ipv6-c032-sin001-ix.1.oca.nflxvideo.net
ipv4-c042-sin001-ix.1.oca.nflxvideo.net
ipv6-c042-sin001-ix.1.oca.nflxvideo.net
ipv6-c042-sin001-ix.1.oca.nflxvideo.net
ipv4-c003-sin001-ix.1.oca.nflxvideo.net
ipv4-c013-sin001-ix.1.oca.nflxvideo.net
ipv6-c013-sin001-ix.1.oca.nflxvideo.net
ipv6-c013-sin001-ix.1.oca.nflxvideo.net
ipv4-c033-sin001-ix.1.oca.nflxvideo.net
ipv4-c043-sin001-ix.1.oca.nflxvideo.net
ipv6-c043-sin001-ix.1.oca.nflxvideo.net
ipv6-c043-sin001-ix.1.oca.nflxvideo.net
ipv6-c004-sin001-ix.1.oca.nflxvideo.net
ipv6-c004-sin001-ix.1.oca.nflxvideo.net
ipv4-c014-sin001-ix.1.oca.nflxvideo.net
ipv6-c014-sin001-ix.1.oca.nflxvideo.net
ipv6-c014-sin001-ix.1.oca.nflxvideo.net
ipv4-c034-sin001-ix.1.oca.nflxvideo.net
ipv6-c034-sin001-ix.1.oca.nflxvideo.net
ipv6-c034-sin001-ix.1.oca.nflxvideo.net
ipv4-c044-sin001-ix.1.oca.nflxvideo.net
ipv6-c044-sin001-ix.1.oca.nflxvideo.net
ipv6-c044-sin001-ix.1.oca.nflxvideo.net
ipv4-c005-sin001-ix.1.oca.nflxvideo.net
ipv6-c005-sin001-ix.1.oca.nflxvideo.net
ipv6-c005-sin001-ix.1.oca.nflxvideo.net
ipv4-c015-sin001-ix.1.oca.nflxvideo.net
ipv6-c015-sin001-ix.1.oca.nflxvideo.net
ipv6-c015-sin001-ix.1.oca.nflxvideo.net
ipv4-c025-sin001-ix.1.oca.nflxvideo.net
ipv6-c025-sin001-ix.1.oca.nflxvideo.net
ipv6-c025-sin001-ix.1.oca.nflxvideo.net
ipv4-c035-sin001-ix.1.oca.nflxvideo.net
ipv6-c035-sin001-ix.1.oca.nflxvideo.net
ipv6-c035-sin001-ix.1.oca.nflxvideo.net
ipv4-c045-sin001-ix.1.oca.nflxvideo.net
ipv6-c045-sin001-ix.1.oca.nflxvideo.net
ipv6-c045-sin001-ix.1.oca.nflxvideo.net
ipv4-c006-sin001-ix.1.oca.nflxvideo.net
ipv4-c016-sin001-ix.1.oca.nflxvideo.net
ipv4-c026-sin001-ix.1.oca.nflxvideo.net
ipv6-c026-sin001-ix.1.oca.nflxvideo.net
ipv6-c026-sin001-ix.1.oca.nflxvideo.net
ipv4-c036-sin001-ix.1.oca.nflxvideo.net
ipv6-c036-sin001-ix.1.oca.nflxvideo.net
ipv6-c036-sin001-ix.1.oca.nflxvideo.net
ipv4-c046-sin001-ix.1.oca.nflxvideo.net
ipv6-c046-sin001-ix.1.oca.nflxvideo.net
ipv6-c046-sin001-ix.1.oca.nflxvideo.net
ipv4-c007-sin001-ix.1.oca.nflxvideo.net
ipv6-c007-sin001-ix.1.oca.nflxvideo.net
ipv6-c007-sin001-ix.1.oca.nflxvideo.net
ipv4-c017-sin001-ix.1.oca.nflxvideo.net
ipv6-c017-sin001-ix.1.oca.nflxvideo.net
ipv6-c017-sin001-ix.1.oca.nflxvideo.net
ipv4-c027-sin001-ix.1.oca.nflxvideo.net
ipv6-c027-sin001-ix.1.oca.nflxvideo.net
ipv6-c027-sin001-ix.1.oca.nflxvideo.net
ipv4-c037-sin001-ix.1.oca.nflxvideo.net
ipv6-c037-sin001-ix.1.oca.nflxvideo.net
ipv6-c037-sin001-ix.1.oca.nflxvideo.net
ipv4-c047-sin001-ix.1.oca.nflxvideo.net
ipv6-c047-sin001-ix.1.oca.nflxvideo.net
ipv6-c047-sin001-ix.1.oca.nflxvideo.net
ipv4-c008-sin001-ix.1.oca.nflxvideo.net
ipv6-c008-sin001-ix.1.oca.nflxvideo.net
ipv6-c008-sin001-ix.1.oca.nflxvideo.net
ipv4-c018-sin001-ix.1.oca.nflxvideo.net
ipv4-c028-sin001-ix.1.oca.nflxvideo.net
ipv6-c028-sin001-ix.1.oca.nflxvideo.net
ipv6-c028-sin001-ix.1.oca.nflxvideo.net
ipv4-c038-sin001-ix.1.oca.nflxvideo.net
ipv6-c038-sin001-ix.1.oca.nflxvideo.net
ipv6-c038-sin001-ix.1.oca.nflxvideo.net
ipv4-c048-sin001-ix.1.oca.nflxvideo.net
ipv6-c048-sin001-ix.1.oca.nflxvideo.net
ipv6-c048-sin001-ix.1.oca.nflxvideo.net
ipv4-c009-sin001-ix.1.oca.nflxvideo.net
ipv6-c009-sin001-ix.1.oca.nflxvideo.net
ipv6-c009-sin001-ix.1.oca.nflxvideo.net
ipv4-c019-sin001-ix.1.oca.nflxvideo.net
ipv6-c019-sin001-ix.1.oca.nflxvideo.net
ipv6-c019-sin001-ix.1.oca.nflxvideo.net
ipv4-c029-sin001-ix.1.oca.nflxvideo.net
ipv6-c029-sin001-ix.1.oca.nflxvideo.net
ipv4-c039-sin001-ix.1.oca.nflxvideo.net
ipv6-c039-sin001-ix.1.oca.nflxvideo.net
ipv6-c039-sin001-ix.1.oca.nflxvideo.net
ipv4-c049-sin001-ix.1.oca.nflxvideo.net
ipv6-c049-sin001-ix.1.oca.nflxvideo.net
ipv6-c049-sin001-ix.1.oca.nflxvideo.net
ipv4-c001-xsp001-m1-isp.1.oca.nflxvideo.net
ipv4-c002-xsp001-m1-isp.1.oca.nflxvideo.net
ipv4-c003-xsp001-m1-isp.1.oca.nflxvideo.net
ipv4-c002-xsp002-m1-isp.1.oca.nflxvideo.net
ipv4-c003-xsp002-m1-isp.1.oca.nflxvideo.net
ipv4-c001-xsp002-starhub-isp.1.oca.nflxvideo.net
ipv6-c001-xsp002-starhub-isp.1.oca.nflxvideo.net
ipv6-c001-xsp002-starhub-isp.1.oca.nflxvideo.net
ipv4-c003-xsp002-starhub-isp.1.oca.nflxvideo.net
ipv6-c003-xsp002-starhub-isp.1.oca.nflxvideo.net
ipv6-c003-xsp002-starhub-isp.1.oca.nflxvideo.net
ipv4-c004-xsp002-starhub-isp.1.oca.nflxvideo.net
ipv6-c004-xsp002-starhub-isp.1.oca.nflxvideo.net
ipv6-c004-xsp002-starhub-isp.1.oca.nflxvideo.net
ipv4-c005-xsp002-starhub-isp.1.oca.nflxvideo.net
ipv6-c005-xsp002-starhub-isp.1.oca.nflxvideo.net
ipv6-c005-xsp002-starhub-isp.1.oca.nflxvideo.net
ipv4-c006-xsp002-starhub-isp.1.oca.nflxvideo.net
ipv6-c006-xsp002-starhub-isp.1.oca.nflxvideo.net
ipv6-c006-xsp002-starhub-isp.1.oca.nflxvideo.net
ipv4-c007-xsp002-starhub-isp.1.oca.nflxvideo.net
ipv4-c002-xsp003-starhub-isp.1.oca.nflxvideo.net
ipv6-c002-xsp003-starhub-isp.1.oca.nflxvideo.net
ipv6-c002-xsp003-starhub-isp.1.oca.nflxvideo.net
ipv4-c004-xsp003-starhub-isp.1.oca.nflxvideo.net
ipv6-c004-xsp003-starhub-isp.1.oca.nflxvideo.net
ipv6-c004-xsp003-starhub-isp.1.oca.nflxvideo.net
ipv4-c005-xsp003-starhub-isp.1.oca.nflxvideo.net
ipv4-c006-xsp003-starhub-isp.1.oca.nflxvideo.net
ipv6-c006-xsp003-starhub-isp.1.oca.nflxvideo.net
ipv6-c006-xsp003-starhub-isp.1.oca.nflxvideo.net
ipv4-c007-xsp003-starhub-isp.1.oca.nflxvideo.net
ipv4-c008-xsp003-starhub-isp.1.oca.nflxvideo.net
ipv6-c008-xsp003-starhub-isp.1.oca.nflxvideo.net
ipv6-c008-xsp003-starhub-isp.1.oca.nflxvideo.net
ipv4-c100-fra002-ix.1.oca.nflxvideo.net
ipv4-c010-fra002-ix.1.oca.nflxvideo.net
ipv4-c110-fra002-ix.1.oca.nflxvideo.net
ipv4-c020-fra002-ix.1.oca.nflxvideo.net
ipv4-c120-fra002-ix.1.oca.nflxvideo.net
ipv4-c030-fra002-ix.1.oca.nflxvideo.net
ipv4-c130-fra002-ix.1.oca.nflxvideo.net
ipv4-c040-fra002-ix.1.oca.nflxvideo.net
ipv4-c050-fra002-ix.1.oca.nflxvideo.net
ipv4-c060-fra002-ix.1.oca.nflxvideo.net
ipv4-c070-fra002-ix.1.oca.nflxvideo.net
ipv4-c080-fra002-ix.1.oca.nflxvideo.net
ipv4-c090-fra002-ix.1.oca.nflxvideo.net
ipv4-c001-fra002-ix.1.oca.nflxvideo.net
ipv4-c101-fra002-ix.1.oca.nflxvideo.net
ipv4-c011-fra002-ix.1.oca.nflxvideo.net
ipv4-c111-fra002-ix.1.oca.nflxvideo.net
ipv4-c021-fra002-ix.1.oca.nflxvideo.net
ipv4-c121-fra002-ix.1.oca.nflxvideo.net
ipv4-c031-fra002-ix.1.oca.nflxvideo.net
ipv4-c131-fra002-ix.1.oca.nflxvideo.net
ipv4-c041-fra002-ix.1.oca.nflxvideo.net
ipv4-c051-fra002-ix.1.oca.nflxvideo.net
ipv4-c061-fra002-ix.1.oca.nflxvideo.net
ipv4-c071-fra002-ix.1.oca.nflxvideo.net
ipv4-c081-fra002-ix.1.oca.nflxvideo.net
ipv4-c091-fra002-ix.1.oca.nflxvideo.net
ipv4-c002-fra002-ix.1.oca.nflxvideo.net
ipv4-c102-fra002-ix.1.oca.nflxvideo.net
ipv4-c012-fra002-ix.1.oca.nflxvideo.net
ipv4-c112-fra002-ix.1.oca.nflxvideo.net
ipv4-c022-fra002-ix.1.oca.nflxvideo.net
ipv4-c122-fra002-ix.1.oca.nflxvideo.net
ipv4-c032-fra002-ix.1.oca.nflxvideo.net
ipv4-c132-fra002-ix.1.oca.nflxvideo.net
ipv4-c042-fra002-ix.1.oca.nflxvideo.net
ipv4-c062-fra002-ix.1.oca.nflxvideo.net
ipv4-c072-fra002-ix.1.oca.nflxvideo.net
ipv4-c082-fra002-ix.1.oca.nflxvideo.net
ipv4-c092-fra002-ix.1.oca.nflxvideo.net
ipv4-c003-fra002-ix.1.oca.nflxvideo.net
ipv4-c103-fra002-ix.1.oca.nflxvideo.net
ipv4-c013-fra002-ix.1.oca.nflxvideo.net
ipv4-c113-fra002-ix.1.oca.nflxvideo.net
ipv4-c023-fra002-ix.1.oca.nflxvideo.net
ipv4-c123-fra002-ix.1.oca.nflxvideo.net
ipv4-c033-fra002-ix.1.oca.nflxvideo.net
ipv4-c133-fra002-ix.1.oca.nflxvideo.net
ipv4-c043-fra002-ix.1.oca.nflxvideo.net
ipv4-c063-fra002-ix.1.oca.nflxvideo.net
ipv4-c073-fra002-ix.1.oca.nflxvideo.net
ipv4-c083-fra002-ix.1.oca.nflxvideo.net
ipv4-c093-fra002-ix.1.oca.nflxvideo.net
ipv4-c004-fra002-ix.1.oca.nflxvideo.net
ipv4-c104-fra002-ix.1.oca.nflxvideo.net
ipv4-c114-fra002-ix.1.oca.nflxvideo.net
ipv4-c024-fra002-ix.1.oca.nflxvideo.net
ipv4-c124-fra002-ix.1.oca.nflxvideo.net
ipv4-c034-fra002-ix.1.oca.nflxvideo.net
ipv4-c134-fra002-ix.1.oca.nflxvideo.net
ipv4-c044-fra002-ix.1.oca.nflxvideo.net
ipv4-c064-fra002-ix.1.oca.nflxvideo.net
ipv4-c074-fra002-ix.1.oca.nflxvideo.net
ipv4-c084-fra002-ix.1.oca.nflxvideo.net
ipv4-c094-fra002-ix.1.oca.nflxvideo.net
ipv4-c005-fra002-ix.1.oca.nflxvideo.net
ipv4-c105-fra002-ix.1.oca.nflxvideo.net
ipv4-c015-fra002-ix.1.oca.nflxvideo.net
ipv4-c115-fra002-ix.1.oca.nflxvideo.net
ipv4-c125-fra002-ix.1.oca.nflxvideo.net
ipv4-c035-fra002-ix.1.oca.nflxvideo.net
ipv4-c045-fra002-ix.1.oca.nflxvideo.net
ipv4-c065-fra002-ix.1.oca.nflxvideo.net
ipv4-c075-fra002-ix.1.oca.nflxvideo.net
ipv4-c085-fra002-ix.1.oca.nflxvideo.net
ipv4-c095-fra002-ix.1.oca.nflxvideo.net
ipv4-c006-fra002-ix.1.oca.nflxvideo.net
ipv4-c106-fra002-ix.1.oca.nflxvideo.net
ipv4-c016-fra002-ix.1.oca.nflxvideo.net
ipv4-c116-fra002-ix.1.oca.nflxvideo.net
ipv4-c026-fra002-ix.1.oca.nflxvideo.net
ipv4-c126-fra002-ix.1.oca.nflxvideo.net
ipv4-c036-fra002-ix.1.oca.nflxvideo.net
ipv4-c136-fra002-ix.1.oca.nflxvideo.net
ipv4-c046-fra002-ix.1.oca.nflxvideo.net
ipv4-c056-fra002-ix.1.oca.nflxvideo.net
ipv4-c066-fra002-ix.1.oca.nflxvideo.net
ipv4-c076-fra002-ix.1.oca.nflxvideo.net
ipv4-c086-fra002-ix.1.oca.nflxvideo.net
ipv4-c096-fra002-ix.1.oca.nflxvideo.net
ipv4-c007-fra002-ix.1.oca.nflxvideo.net
ipv4-c107-fra002-ix.1.oca.nflxvideo.net
ipv4-c017-fra002-ix.1.oca.nflxvideo.net
ipv4-c117-fra002-ix.1.oca.nflxvideo.net
ipv4-c027-fra002-ix.1.oca.nflxvideo.net
ipv4-c127-fra002-ix.1.oca.nflxvideo.net
ipv4-c037-fra002-ix.1.oca.nflxvideo.net
ipv4-c047-fra002-ix.1.oca.nflxvideo.net
ipv4-c057-fra002-ix.1.oca.nflxvideo.net
ipv4-c067-fra002-ix.1.oca.nflxvideo.net
ipv4-c077-fra002-ix.1.oca.nflxvideo.net
ipv4-c087-fra002-ix.1.oca.nflxvideo.net
ipv4-c097-fra002-ix.1.oca.nflxvideo.net
ipv4-c008-fra002-ix.1.oca.nflxvideo.net
ipv4-c108-fra002-ix.1.oca.nflxvideo.net
ipv4-c018-fra002-ix.1.oca.nflxvideo.net
ipv4-c118-fra002-ix.1.oca.nflxvideo.net
ipv4-c028-fra002-ix.1.oca.nflxvideo.net
ipv4-c128-fra002-ix.1.oca.nflxvideo.net
ipv4-c038-fra002-ix.1.oca.nflxvideo.net
ipv4-c048-fra002-ix.1.oca.nflxvideo.net
ipv4-c058-fra002-ix.1.oca.nflxvideo.net
ipv4-c068-fra002-ix.1.oca.nflxvideo.net
ipv4-c078-fra002-ix.1.oca.nflxvideo.net
ipv4-c088-fra002-ix.1.oca.nflxvideo.net
ipv4-c098-fra002-ix.1.oca.nflxvideo.net
ipv4-c009-fra002-ix.1.oca.nflxvideo.net
ipv4-c109-fra002-ix.1.oca.nflxvideo.net
ipv4-c019-fra002-ix.1.oca.nflxvideo.net
ipv4-c119-fra002-ix.1.oca.nflxvideo.net
ipv4-c029-fra002-ix.1.oca.nflxvideo.net
ipv4-c129-fra002-ix.1.oca.nflxvideo.net
ipv4-c039-fra002-ix.1.oca.nflxvideo.net
ipv4-c049-fra002-ix.1.oca.nflxvideo.net
ipv4-c059-fra002-ix.1.oca.nflxvideo.net
ipv4-c069-fra002-ix.1.oca.nflxvideo.net
ipv4-c079-fra002-ix.1.oca.nflxvideo.net
ipv4-c089-fra002-ix.1.oca.nflxvideo.net
ipv4-c099-fra002-ix.1.oca.nflxvideo.net
ipv4-c010-fra002-dev-ix.1.oca.nflxvideo.net
ipv4-c001-fra002-dev-ix.1.oca.nflxvideo.net
ipv4-c011-fra002-dev-ix.1.oca.nflxvideo.net
ipv4-c002-fra002-dev-ix.1.oca.nflxvideo.net
ipv6-c002-fra002-dev-ix.1.oca.nflxvideo.net
ipv6-c002-fra002-dev-ix.1.oca.nflxvideo.net
ipv4-c012-fra002-dev-ix.1.oca.nflxvideo.net
ipv6-c003-fra002-dev-ix.1.oca.nflxvideo.net
ipv6-c003-fra002-dev-ix.1.oca.nflxvideo.net
ipv4-c004-fra002-dev-ix.1.oca.nflxvideo.net
ipv6-c004-fra002-dev-ix.1.oca.nflxvideo.net
ipv6-c004-fra002-dev-ix.1.oca.nflxvideo.net
ipv4-c005-fra002-dev-ix.1.oca.nflxvideo.net
ipv4-c006-fra002-dev-ix.1.oca.nflxvideo.net
ipv4-c007-fra002-dev-ix.1.oca.nflxvideo.net
ipv4-c008-fra002-dev-ix.1.oca.nflxvideo.net
ipv4-c009-fra002-dev-ix.1.oca.nflxvideo.net
ipv4-c003-mfm001-ctm-isp.1.oca.nflxvideo.net
ipv4-c001-tsa001-chieftelecom-isp.1.oca.nflxvideo.net
ipv4-c001-tsa001-cht-isp.1.oca.nflxvideo.net
ipv4-c002-tsa001-cht-isp.1.oca.nflxvideo.net
ipv4-c003-tsa001-cht-isp.1.oca.nflxvideo.net
ipv4-c004-tsa001-cht-isp.1.oca.nflxvideo.net
ipv4-c005-tsa001-cht-isp.1.oca.nflxvideo.net
ipv4-c006-tsa001-cht-isp.1.oca.nflxvideo.net
ipv4-c007-tsa001-cht-isp.1.oca.nflxvideo.net
ipv4-c008-tsa001-cht-isp.1.oca.nflxvideo.net
ipv4-c002-cjj001-lguplus-isp.1.oca.nflxvideo.net
ipv4-c006-cjj001-lguplus-isp.1.oca.nflxvideo.net
ipv4-c001-hlp001-im2-isp.1.oca.nflxvideo.net
ipv4-c001-hlp001-myrepublicid-isp.1.oca.nflxvideo.net
ipv4-c002-hlp001-myrepublicid-isp.1.oca.nflxvideo.net
ipv4-c001-hlp001-cbn-isp.1.oca.nflxvideo.net
ipv4-c002-hlp001-cbn-isp.1.oca.nflxvideo.net
ipv4-c001-hlp002-linknet-isp.1.oca.nflxvideo.net
ipv4-c002-hlp002-linknet-isp.1.oca.nflxvideo.net
ipv4-c001-hlp003-linknet-isp.1.oca.nflxvideo.net
ipv4-c002-hlp003-linknet-isp.1.oca.nflxvideo.net
ipv4-c001-hlp001-mncplay-isp.1.oca.nflxvideo.net
ipv4-c002-hlp001-mncplay-isp.1.oca.nflxvideo.net
ipv4-c001-bdo001-starnetid-isp.1.oca.nflxvideo.net
ipv4-c002-bdo001-starnetid-isp.1.oca.nflxvideo.net
ipv4-c001-cgk001-moratel-isp.1.oca.nflxvideo.net
ipv4-c002-cgk001-moratel-isp.1.oca.nflxvideo.net
ipv4-c001-cgk001-linknet-isp.1.oca.nflxvideo.net
ipv4-c002-cgk001-linknet-isp.1.oca.nflxvideo.net
ipv4-c003-cgk001-linknet-isp.1.oca.nflxvideo.net
ipv4-c001-cgk002-linknet-isp.1.oca.nflxvideo.net
ipv4-c002-cgk002-linknet-isp.1.oca.nflxvideo.net
ipv4-c003-cgk002-linknet-isp.1.oca.nflxvideo.net
ipv4-c003-cgk002-biznet-isp.1.oca.nflxvideo.net
ipv4-c004-cgk002-biznet-isp.1.oca.nflxvideo.net
ipv4-c001-cxp001-biznet-isp.1.oca.nflxvideo.net
ipv4-c001-sub001-biznet-isp.1.oca.nflxvideo.net

View File

@ -125,6 +125,11 @@ if not Value.key?('profile') then
else else
Value['profile']['store-selected']=true Value['profile']['store-selected']=true
end; end;
if ${22} != 1 then
Value['profile']['store-fakeip']=false
else
Value['profile']['store-fakeip']=true
end;
rescue Exception => e rescue Exception => e
puts '${LOGTIME} Error: Set General Error,【' + e.message + '】' puts '${LOGTIME} Error: Set General Error,【' + e.message + '】'
end end

View File

@ -275,7 +275,7 @@ if [ "$create_config" = "0" ] || [ "$servers_if_update" = "1" ] || [ ! -z "$if_g
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
LOG_OUT "Error: Config File【$CONFIG_NAME】Unable To Parse, Please Choose One-key Function To Create Config File..." LOG_OUT "Error: Config File【$CONFIG_NAME】Unable To Parse, Please Choose One-key Function To Create Config File..."
uci commit openclash uci commit openclash
sleep 5 sleep 3
SLOG_CLEAN SLOG_CLEAN
del_lock del_lock
exit 0 exit 0

View File

@ -3174,7 +3174,9 @@
if (/\bcm-fat-cursor\b/.test(cm.getWrapperElement().className)) { if (/\bcm-fat-cursor\b/.test(cm.getWrapperElement().className)) {
var charPos = charCoords(cm, head, "div", null, null); var charPos = charCoords(cm, head, "div", null, null);
cursor.style.width = Math.max(0, charPos.right - charPos.left) + "px"; if (charPos.right - charPos.left > 0) {
cursor.style.width = (charPos.right - charPos.left) + "px";
}
} }
if (pos.other) { if (pos.other) {
@ -3349,10 +3351,14 @@
function updateHeightsInViewport(cm) { function updateHeightsInViewport(cm) {
var display = cm.display; var display = cm.display;
var prevBottom = display.lineDiv.offsetTop; var prevBottom = display.lineDiv.offsetTop;
var viewTop = Math.max(0, display.scroller.getBoundingClientRect().top);
var oldHeight = display.lineDiv.getBoundingClientRect().top;
var mustScroll = 0;
for (var i = 0; i < display.view.length; i++) { for (var i = 0; i < display.view.length; i++) {
var cur = display.view[i], wrapping = cm.options.lineWrapping; var cur = display.view[i], wrapping = cm.options.lineWrapping;
var height = (void 0), width = 0; var height = (void 0), width = 0;
if (cur.hidden) { continue } if (cur.hidden) { continue }
oldHeight += cur.line.height;
if (ie && ie_version < 8) { if (ie && ie_version < 8) {
var bot = cur.node.offsetTop + cur.node.offsetHeight; var bot = cur.node.offsetTop + cur.node.offsetHeight;
height = bot - prevBottom; height = bot - prevBottom;
@ -3367,6 +3373,7 @@
} }
var diff = cur.line.height - height; var diff = cur.line.height - height;
if (diff > .005 || diff < -.005) { if (diff > .005 || diff < -.005) {
if (oldHeight < viewTop) { mustScroll -= diff; }
updateLineHeight(cur.line, height); updateLineHeight(cur.line, height);
updateWidgetHeight(cur.line); updateWidgetHeight(cur.line);
if (cur.rest) { for (var j = 0; j < cur.rest.length; j++) if (cur.rest) { for (var j = 0; j < cur.rest.length; j++)
@ -3381,6 +3388,7 @@
} }
} }
} }
if (Math.abs(mustScroll) > 2) { display.scroller.scrollTop += mustScroll; }
} }
// Read and store the height of line widgets associated with the // Read and store the height of line widgets associated with the
@ -4492,6 +4500,12 @@
function onScrollWheel(cm, e) { function onScrollWheel(cm, e) {
var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y; var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y;
var pixelsPerUnit = wheelPixelsPerUnit;
if (event.deltaMode === 0) {
dx = e.deltaX;
dy = e.deltaY;
pixelsPerUnit = 1;
}
var display = cm.display, scroll = display.scroller; var display = cm.display, scroll = display.scroller;
// Quit if there's nothing to scroll here // Quit if there's nothing to scroll here
@ -4520,10 +4534,10 @@
// estimated pixels/delta value, we just handle horizontal // estimated pixels/delta value, we just handle horizontal
// scrolling entirely here. It'll be slightly off from native, but // scrolling entirely here. It'll be slightly off from native, but
// better than glitching out. // better than glitching out.
if (dx && !gecko && !presto && wheelPixelsPerUnit != null) { if (dx && !gecko && !presto && pixelsPerUnit != null) {
if (dy && canScrollY) if (dy && canScrollY)
{ updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * wheelPixelsPerUnit)); } { updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * pixelsPerUnit)); }
setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * wheelPixelsPerUnit)); setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * pixelsPerUnit));
// Only prevent default scrolling if vertical scrolling is // Only prevent default scrolling if vertical scrolling is
// actually possible. Otherwise, it causes vertical scroll // actually possible. Otherwise, it causes vertical scroll
// jitter on OSX trackpads when deltaX is small and deltaY // jitter on OSX trackpads when deltaX is small and deltaY
@ -4536,15 +4550,15 @@
// 'Project' the visible viewport to cover the area that is being // 'Project' the visible viewport to cover the area that is being
// scrolled into view (if we know enough to estimate it). // scrolled into view (if we know enough to estimate it).
if (dy && wheelPixelsPerUnit != null) { if (dy && pixelsPerUnit != null) {
var pixels = dy * wheelPixelsPerUnit; var pixels = dy * pixelsPerUnit;
var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight; var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight;
if (pixels < 0) { top = Math.max(0, top + pixels - 50); } if (pixels < 0) { top = Math.max(0, top + pixels - 50); }
else { bot = Math.min(cm.doc.height, bot + pixels + 50); } else { bot = Math.min(cm.doc.height, bot + pixels + 50); }
updateDisplaySimple(cm, {top: top, bottom: bot}); updateDisplaySimple(cm, {top: top, bottom: bot});
} }
if (wheelSamples < 20) { if (wheelSamples < 20 && e.deltaMode !== 0) {
if (display.wheelStartX == null) { if (display.wheelStartX == null) {
display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop; display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop;
display.wheelDX = dx; display.wheelDY = dy; display.wheelDX = dx; display.wheelDY = dy;
@ -8985,9 +8999,11 @@
ContentEditableInput.prototype.supportsTouch = function () { return true }; ContentEditableInput.prototype.supportsTouch = function () { return true };
ContentEditableInput.prototype.receivedFocus = function () { ContentEditableInput.prototype.receivedFocus = function () {
var this$1 = this;
var input = this; var input = this;
if (this.selectionInEditor()) if (this.selectionInEditor())
{ this.pollSelection(); } { setTimeout(function () { return this$1.pollSelection(); }, 20); }
else else
{ runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }); } { runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }); }
@ -9816,7 +9832,7 @@
addLegacyProps(CodeMirror); addLegacyProps(CodeMirror);
CodeMirror.version = "5.62.3"; CodeMirror.version = "5.63.1";
return CodeMirror; return CodeMirror;

View File

@ -125,7 +125,7 @@ function gen_outbound(node, tag, proxy_table)
tlsSettings = (node.stream_security == "tls") and { tlsSettings = (node.stream_security == "tls") and {
serverName = node.tls_serverName, serverName = node.tls_serverName,
allowInsecure = (node.tls_allowInsecure == "1") and true or false, allowInsecure = (node.tls_allowInsecure == "1") and true or false,
fingerprint = (node.fingerprint and node.fingerprint ~= "disable") and node.fingerprint or nil fingerprint = (node.type == "Xray" and node.fingerprint and node.fingerprint ~= "disable") and node.fingerprint or nil
} or nil, } or nil,
tcpSettings = (node.transport == "tcp" and node.protocol ~= "socks") and { tcpSettings = (node.transport == "tcp" and node.protocol ~= "socks") and {
header = { header = {
@ -152,11 +152,15 @@ function gen_outbound(node, tag, proxy_table)
wsSettings = (node.transport == "ws") and { wsSettings = (node.transport == "ws") and {
path = node.ws_path or "", path = node.ws_path or "",
headers = (node.ws_host ~= nil) and headers = (node.ws_host ~= nil) and
{Host = node.ws_host} or nil {Host = node.ws_host} or nil,
maxEarlyData = tonumber(node.ws_maxEarlyData) or nil
} or nil,
httpSettings = (node.transport == "h2") and {
path = node.h2_path,
host = node.h2_host,
read_idle_timeout = tonumber(node.h2_read_idle_timeout) or nil,
health_check_timeout = tonumber(node.h2_health_check_timeout) or nil
} or nil, } or nil,
httpSettings = (node.transport == "h2") and
{path = node.h2_path, host = node.h2_host} or
nil,
dsSettings = (node.transport == "ds") and dsSettings = (node.transport == "ds") and
{path = node.ds_path} or nil, {path = node.ds_path} or nil,
quicSettings = (node.transport == "quic") and { quicSettings = (node.transport == "quic") and {
@ -166,7 +170,10 @@ function gen_outbound(node, tag, proxy_table)
} or nil, } or nil,
grpcSettings = (node.transport == "grpc") and { grpcSettings = (node.transport == "grpc") and {
serviceName = node.grpc_serviceName, serviceName = node.grpc_serviceName,
multiMode = (node.grpc_mode == "multi") and true or false multiMode = (node.grpc_mode == "multi") and true or nil,
idle_timeout = tonumber(node.grpc_idle_timeout) or nil,
health_check_timeout = tonumber(node.grpc_health_check_timeout) or nil,
permit_without_stream = (node.grpc_permit_without_stream == "1") and true or nil
} or nil } or nil
} or nil, } or nil,
settings = { settings = {
@ -451,7 +458,7 @@ if node_section then
routing = { routing = {
domainStrategy = node.domainStrategy or "AsIs", domainStrategy = node.domainStrategy or "AsIs",
domainMatcher = "hybrid", domainMatcher = node.domainMatcher or "hybrid",
rules = rules rules = rules
} }
elseif node.protocol == "_balancing" then elseif node.protocol == "_balancing" then
@ -465,7 +472,7 @@ if node_section then
end end
routing = { routing = {
domainStrategy = node.domainStrategy or "AsIs", domainStrategy = node.domainStrategy or "AsIs",
domainMatcher = "hybrid", domainMatcher = node.domainMatcher or "hybrid",
balancers = {{tag = "balancer", selector = nodes}}, balancers = {{tag = "balancer", selector = nodes}},
rules = { rules = {
{type = "field", network = "tcp,udp", balancerTag = "balancer"} {type = "field", network = "tcp,udp", balancerTag = "balancer"}

View File

@ -188,6 +188,13 @@ domainStrategy.description = "<br /><ul><li>" .. translate("'AsIs': Only use dom
domainStrategy:depends("protocol", "_balancing") domainStrategy:depends("protocol", "_balancing")
domainStrategy:depends("protocol", "_shunt") domainStrategy:depends("protocol", "_shunt")
domainMatcher = s:option(ListValue, "domainMatcher", translate("Domain matcher"))
domainMatcher:value("hybrid")
domainMatcher:value("linear")
domainMatcher:depends("protocol", "_balancing")
domainMatcher:depends("protocol", "_shunt")
-- Brook协议 -- Brook协议
brook_protocol = s:option(ListValue, "brook_protocol", translate("Protocol")) brook_protocol = s:option(ListValue, "brook_protocol", translate("Protocol"))
brook_protocol:value("client", translate("Brook")) brook_protocol:value("client", translate("Brook"))
@ -690,6 +697,19 @@ ws_path:depends("ss_transport", "ws")
ws_path:depends("trojan_transport", "ws") ws_path:depends("trojan_transport", "ws")
ws_path:depends({ type = "Brook", brook_protocol = "wsclient" }) ws_path:depends({ type = "Brook", brook_protocol = "wsclient" })
ws_enableEarlyData = s:option(Flag, "ws_enableEarlyData", translate("Enable early data"))
ws_enableEarlyData:depends("transport", "ws")
ws_maxEarlyData = s:option(Value, "ws_maxEarlyData", translate("Early data length"))
ws_maxEarlyData.default = "1024"
ws_maxEarlyData:depends("ws_enableEarlyData", true)
function ws_maxEarlyData.cfgvalue(self, section)
return m:get(section, "ws_maxEarlyData")
end
function ws_maxEarlyData.write(self, section, value)
m:set(section, "ws_maxEarlyData", value)
end
-- [[ HTTP/2部分 ]]-- -- [[ HTTP/2部分 ]]--
h2_host = s:option(Value, "h2_host", translate("HTTP/2 Host")) h2_host = s:option(Value, "h2_host", translate("HTTP/2 Host"))
h2_host:depends("transport", "h2") h2_host:depends("transport", "h2")
@ -699,6 +719,17 @@ h2_path = s:option(Value, "h2_path", translate("HTTP/2 Path"))
h2_path:depends("transport", "h2") h2_path:depends("transport", "h2")
h2_path:depends("ss_transport", "h2") h2_path:depends("ss_transport", "h2")
h2_health_check = s:option(Flag, "h2_health_check", translate("Health check"))
h2_health_check:depends({ type = "Xray", transport = "h2"})
h2_read_idle_timeout = s:option(Value, "h2_read_idle_timeout", translate("Idle timeout"))
h2_read_idle_timeout.default = "10"
h2_read_idle_timeout:depends("h2_health_check", true)
h2_health_check_timeout = s:option(Value, "h2_health_check_timeout", translate("Health check timeout"))
h2_health_check_timeout.default = "15"
h2_health_check_timeout:depends("h2_health_check", true)
-- [[ DomainSocket部分 ]]-- -- [[ DomainSocket部分 ]]--
ds_path = s:option(Value, "ds_path", "Path", translate("A legal file path. This file must not exist before running.")) ds_path = s:option(Value, "ds_path", "Path", translate("A legal file path. This file must not exist before running."))
ds_path:depends("transport", "ds") ds_path:depends("transport", "ds")
@ -724,7 +755,22 @@ grpc_serviceName:depends("transport", "grpc")
grpc_mode = s:option(ListValue, "grpc_mode", "gRPC " .. translate("Transfer mode")) grpc_mode = s:option(ListValue, "grpc_mode", "gRPC " .. translate("Transfer mode"))
grpc_mode:value("gun") grpc_mode:value("gun")
grpc_mode:value("multi") grpc_mode:value("multi")
grpc_mode:depends("transport", "grpc") grpc_mode:depends({ type = "Xray", transport = "grpc"})
grpc_health_check = s:option(Flag, "grpc_health_check", translate("Health check"))
grpc_health_check:depends({ type = "Xray", transport = "grpc"})
grpc_idle_timeout = s:option(Value, "grpc_idle_timeout", translate("Idle timeout"))
grpc_idle_timeout.default = "10"
grpc_idle_timeout:depends("grpc_health_check", true)
grpc_health_check_timeout = s:option(Value, "grpc_health_check_timeout", translate("Health check timeout"))
grpc_health_check_timeout.default = "20"
grpc_health_check_timeout:depends("grpc_health_check", true)
grpc_permit_without_stream = s:option(Flag, "grpc_permit_without_stream", translate("Permit without stream"))
grpc_permit_without_stream.default = "0"
grpc_permit_without_stream:depends("grpc_health_check", true)
-- [[ Trojan-Go Shadowsocks2 ]] -- -- [[ Trojan-Go Shadowsocks2 ]] --
ss_aead = s:option(Flag, "ss_aead", translate("Shadowsocks secondary encryption")) ss_aead = s:option(Flag, "ss_aead", translate("Shadowsocks secondary encryption"))
@ -741,11 +787,11 @@ ss_aead_pwd.password = true
ss_aead_pwd:depends("ss_aead", "1") ss_aead_pwd:depends("ss_aead", "1")
-- [[ Trojan-Go Mux ]]-- -- [[ Trojan-Go Mux ]]--
mux = s:option(Flag, "smux", translate("smux")) mux = s:option(Flag, "smux", translate("Smux"))
mux:depends("type", "Trojan-Go") mux:depends("type", "Trojan-Go")
-- [[ Mux ]]-- -- [[ Mux ]]--
mux = s:option(Flag, "mux", translate("mux")) mux = s:option(Flag, "mux", translate("Mux"))
mux:depends({ type = "V2ray", protocol = "vmess" }) mux:depends({ type = "V2ray", protocol = "vmess" })
mux:depends({ type = "V2ray", protocol = "vless", xtls = false }) mux:depends({ type = "V2ray", protocol = "vless", xtls = false })
mux:depends({ type = "V2ray", protocol = "http" }) mux:depends({ type = "V2ray", protocol = "http" })
@ -759,12 +805,12 @@ mux:depends({ type = "Xray", protocol = "socks" })
mux:depends({ type = "Xray", protocol = "shadowsocks" }) mux:depends({ type = "Xray", protocol = "shadowsocks" })
mux:depends({ type = "Xray", protocol = "trojan" }) mux:depends({ type = "Xray", protocol = "trojan" })
mux_concurrency = s:option(Value, "mux_concurrency", translate("mux concurrency")) mux_concurrency = s:option(Value, "mux_concurrency", translate("Mux concurrency"))
mux_concurrency.default = 8 mux_concurrency.default = 8
mux_concurrency:depends("mux", true) mux_concurrency:depends("mux", true)
mux_concurrency:depends("smux", true) mux_concurrency:depends("smux", true)
smux_idle_timeout = s:option(Value, "smux_idle_timeout", translate("mux idle timeout")) smux_idle_timeout = s:option(Value, "smux_idle_timeout", translate("Mux idle timeout"))
smux_idle_timeout.default = 60 smux_idle_timeout.default = 60
smux_idle_timeout:depends("smux", true) smux_idle_timeout:depends("smux", true)

View File

@ -457,6 +457,9 @@ msgstr "当使用时,本机将首先连接到此节点,然后再使用此节
msgid "Domain Strategy" msgid "Domain Strategy"
msgstr "域名解析策略" msgstr "域名解析策略"
msgid "Domain matcher"
msgstr "域名匹配算法"
msgid "'AsIs': Only use domain for routing. Default value." msgid "'AsIs': Only use domain for routing. Default value."
msgstr "AsIs只使用域名进行路由选择。默认值。" msgstr "AsIs只使用域名进行路由选择。默认值。"
@ -1323,3 +1326,27 @@ msgstr "客户端文件不适合当前设备。"
msgid "Can't move new file to path: %s" msgid "Can't move new file to path: %s"
msgstr "无法移动新文件到:%s" msgstr "无法移动新文件到:%s"
msgid "Mux concurrency"
msgstr "最大并发连接数"
msgid "Mux idle timeout"
msgstr "最大闲置时间"
msgid "Enable early data"
msgstr "启用前置数据"
msgid "Early data length"
msgstr "前置数据最大长度"
msgid "Health check"
msgstr "健康检查"
msgid "Idle timeout"
msgstr "闲置时间"
msgid "Health check timeout"
msgstr "检查超时时间"
msgid "Permit without stream"
msgstr "无子连接时的健康检查"

View File

@ -29,7 +29,7 @@ ifeq ($(ARCH),powerpc64)
endif endif
PKG_NAME:=verysync PKG_NAME:=verysync
PKG_VERSION:=v2.8.2 PKG_VERSION:=v2.10.5
PKG_RELEASE:=1 PKG_RELEASE:=1
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION) PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE:=$(PKG_NAME)-linux-$(PKG_ARCH_VERYSYNC)-$(PKG_VERSION).tar.gz PKG_SOURCE:=$(PKG_NAME)-linux-$(PKG_ARCH_VERYSYNC)-$(PKG_VERSION).tar.gz