update-10.13
This commit is contained in:
parent
54209fe518
commit
49e5709a89
|
@ -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}'")
|
||||||
|
|
|
@ -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]
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
@ -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%>
|
|
@ -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%>
|
||||||
|
|
|
@ -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解析记录到文件,提升内核启动后的反应速度和稳定性"
|
|
@ -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'
|
||||||
|
|
|
@ -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
|
@ -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
File diff suppressed because it is too large
Load Diff
|
@ -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'
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 &
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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"}
|
||||||
|
|
|
@ -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)
|
||||||
|
|
||||||
|
|
|
@ -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 "无子连接时的健康检查"
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue