update 2022-08-05 20:18:31

This commit is contained in:
github-actions[bot] 2022-08-05 20:18:31 +08:00
parent de1c9638f7
commit ca77e652c8
58 changed files with 31438 additions and 31275 deletions

View File

@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-ikoolproxy
PKG_VERSION:=3.8.5
PKG_RELEASE:=20220521
PKG_RELEASE:=20220805
PKG_MAINTAINER:=panda-mute <wxuzju@gmail.com>

View File

@ -1,3 +1,6 @@
## 更新2022年8月5日
1、修复coding规则地址失效。
## 更新2022年3月24日
1、删除以前所有commits。升级到了最新的comiits其中重要的几次如下

View File

@ -111,16 +111,16 @@ update_rss_rules() {
update_rules() {
echo $(date "+%F %T"): ------------------- 内置规则更新 ------------------- >>$LOGFILE
wget 'https://yaof.coding.net/p/ikoolproxy/d/rules/git/raw/master/rules/kp.dat' -q -O $KP_DIR/data/rules/kp.dat
wget 'https://yaof.coding.net/p/ikoolproxy/d/rules/git/raw/master/rules/daily.txt' -q -O $KP_DIR/data/rules/daily.txt
wget 'https://yaof.coding.net/p/ikoolproxy/d/rules/git/raw/master/rules/koolproxy.txt' -q -O $KP_DIR/data/rules/koolproxy.txt
wget 'https://yaof.coding.net/p/ikoolproxy/d/rules/git/raw/master/rules/yhosts.txt' -q -O $KP_DIR/data/rules/yhosts.txt
wget 'https://yaof.coding.net/p/ikoolproxy/d/rules/git/raw/master/rules/steven.txt' -q -O $KP_DIR/data/rules/steven.txt
wget 'https://yaof.coding.net/p/ikoolproxy/d/rules/git/raw/master/rules/adg.txt' -q -O $KP_DIR/data/rules/adg.txt
wget 'https://yaof.coding.net/p/ikoolproxy/d/rules/git/raw/master/rules/antiad.txt' -q -O $KP_DIR/data/rules/antiad.txt
wget 'https://yaof.coding.net/p/ikoolproxy/d/rules/git/raw/master/rules/adgk.txt' -q -O $KP_DIR/data/rules/adgk.txt
wget 'https://yaof.coding.net/p/ikoolproxy/d/rules/git/raw/master/rules/koolproxy_ipset.conf' -q -O $KP_DIR/koolproxy_ipset.conf
wget 'https://yaof.coding.net/p/ikoolproxy/d/rules/git/raw/master/rules/dnsmasq.adblock' -q -O $KP_DIR/dnsmasq.adblock
wget 'https://cdn.jsdelivr.net/gh/yaof2/koolproxy@main/rules/kp.dat' -q -O $KP_DIR/data/rules/kp.dat
wget 'https://cdn.jsdelivr.net/gh/yaof2/koolproxy@main/rules/daily.txt' -q -O $KP_DIR/data/rules/daily.txt
wget 'https://cdn.jsdelivr.net/gh/yaof2/koolproxy@main/rules/koolproxy.txt' -q -O $KP_DIR/data/rules/koolproxy.txt
wget 'https://cdn.jsdelivr.net/gh/yaof2/koolproxy@main/rules/yhosts.txt' -q -O $KP_DIR/data/rules/yhosts.txt
wget 'https://cdn.jsdelivr.net/gh/yaof2/koolproxy@main/rules/steven.txt' -q -O $KP_DIR/data/rules/steven.txt
wget 'https://cdn.jsdelivr.net/gh/yaof2/koolproxy@main/rules/adg.txt' -q -O $KP_DIR/data/rules/adg.txt
wget 'https://cdn.jsdelivr.net/gh/yaof2/koolproxy@main/rules/antiad.txt' -q -O $KP_DIR/data/rules/antiad.txt
wget 'https://cdn.jsdelivr.net/gh/yaof2/koolproxy@main/rules/adgk.txt' -q -O $KP_DIR/data/rules/adgk.txt
wget 'https://cdn.jsdelivr.net/gh/yaof2/koolproxy@main/rules/koolproxy_ipset.conf' -q -O $KP_DIR/koolproxy_ipset.conf
wget 'https://cdn.jsdelivr.net/gh/yaof2/koolproxy@main/rules/dnsmasq.adblock' -q -O $KP_DIR/dnsmasq.adblock
adg_rules_local=`cat /usr/share/koolproxy/data/rules/adg.txt | sed -n '4p'|awk '{print $4}'`
steven_rules_local=`cat /usr/share/koolproxy/data/rules/steven.txt | sed -n '2p'|awk '{print $3,$4,$5,$6}'`
yhosts_rules_local=`cat /usr/share/koolproxy/data/rules/yhosts.txt | sed -n '1p' | cut -d ":" -f2`

View File

@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-openclash
PKG_VERSION:=0.45.41
PKG_VERSION:=0.45.47
PKG_RELEASE:=beta
PKG_MAINTAINER:=vernesong <https://github.com/vernesong/OpenClash>
@ -54,6 +54,9 @@ define Build/Prepare
cp -f "$(PKG_BUILD_DIR)/root/etc/openclash/custom/openclash_sniffing_port_filter.yaml" "$(PKG_BUILD_DIR)/root/usr/share/openclash/backup/openclash_sniffing_port_filter.yaml" >/dev/null 2>&1
cp -f "$(PKG_BUILD_DIR)/root/etc/openclash/custom/openclash_custom_localnetwork_ipv4.list" "$(PKG_BUILD_DIR)/root/usr/share/openclash/backup/openclash_custom_localnetwork_ipv4.list" >/dev/null 2>&1
cp -f "$(PKG_BUILD_DIR)/root/etc/openclash/custom/openclash_custom_localnetwork_ipv6.list" "$(PKG_BUILD_DIR)/root/usr/share/openclash/backup/openclash_custom_localnetwork_ipv6.list" >/dev/null 2>&1
cp -f "$(PKG_BUILD_DIR)/root/etc/openclash/custom/openclash_custom_chnroute_pass.list" "$(PKG_BUILD_DIR)/root/usr/share/openclash/backup/openclash_custom_chnroute_pass.list" >/dev/null 2>&1
cp -f "$(PKG_BUILD_DIR)/root/etc/openclash/custom/openclash_custom_chnroute6_pass.list" "$(PKG_BUILD_DIR)/root/usr/share/openclash/backup/openclash_custom_chnroute6_pass.list" >/dev/null 2>&1
exit 0
endef
@ -106,6 +109,8 @@ define Package/$(PKG_NAME)/postrm
rm -rf /usr/share/openclash/backup >/dev/null 2>&1
rm -rf /tmp/dnsmasq.d/dnsmasq_openclash.conf >/dev/null 2>&1
rm -rf /tmp/dnsmasq.d/dnsmasq_openclash_custom_domain.conf >/dev/null 2>&1
rm -rf /tmp/dnsmasq.d/dnsmasq_openclash_chnroute_pass.conf >/dev/null 2>&1
rm -rf /tmp/dnsmasq.d/dnsmasq_openclash_chnroute6_pass.conf >/dev/null 2>&1
rm -rf /tmp/dler* >/dev/null 2>&1
rm -rf /tmp/etc/openclash >/dev/null 2>&1
rm -rf /tmp/openclash_edit_file_name >/dev/null 2>&1

View File

@ -28,7 +28,7 @@ end
function config_check(CONFIG_FILE)
local yaml = fs.isfile(CONFIG_FILE)
if yaml then
yaml = SYS.exec(string.format('ruby -ryaml -E UTF-8 -e "puts YAML.load_file(\'%s\')" 2>/dev/null',CONFIG_FILE))
yaml = SYS.exec(string.format('ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "puts YAML.load_file(\'%s\')" 2>/dev/null',CONFIG_FILE))
if yaml ~= "false\n" and yaml ~= "" then
return "Config Normal"
else

View File

@ -47,14 +47,14 @@ function default_config_set(f)
end
function config_check(CONFIG_FILE)
local yaml = fs.isfile(CONFIG_FILE)
if yaml then
yaml = SYS.exec(string.format('ruby -ryaml -E UTF-8 -e "puts YAML.load_file(\'%s\')" 2>/dev/null',CONFIG_FILE))
if yaml ~= "false\n" and yaml ~= "" then
return "Config Normal"
else
return "Config Abnormal"
end
local yaml = fs.isfile(CONFIG_FILE)
if yaml then
yaml = SYS.exec(string.format('ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "puts YAML.load_file(\'%s\')" 2>/dev/null',CONFIG_FILE))
if yaml ~= "false\n" and yaml ~= "" then
return "Config Normal"
else
return "Config Abnormal"
end
elseif (yaml ~= 0) then
return "File Not Exist"
end

View File

@ -27,8 +27,9 @@ s.addremove = false
---- group
o = s:option(ListValue, "group", translate("DNS Server Group"))
o.description = font_red..bold_on..translate("NameServer Group Must Be Set")..bold_off..font_off
o:value("nameserver", translate("NameServer"))
o:value("fallback", translate("FallBack"))
o:value("nameserver", translate("NameServer "))
o:value("fallback", translate("FallBack "))
o:value("default", translate("Default-NameServer"))
o.default = "nameserver"
o.rempty = false
@ -81,10 +82,12 @@ o.default = o.disbled
---- Proxy group
o = s:option(Value, "specific_group", translate("Specific Group"))
o.description = translate("Group Use For Proxy The DNS")..translate("(Only Meta Core)")
o:depends("group", "nameserver")
o:depends("group", "fallback")
local groupnames,filename
filename = m.uci:get(openclash, "config", "config_path")
if filename then
groupnames = SYS.exec(string.format('ruby -ryaml -E UTF-8 -e "YAML.load_file(\'%s\')[\'proxy-groups\'].each do |i| puts i[\'name\']+\'##\' end" 2>/dev/null',filename))
groupnames = SYS.exec(string.format('ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "YAML.load_file(\'%s\')[\'proxy-groups\'].each do |i| puts i[\'name\']+\'##\' end" 2>/dev/null',filename))
if groupnames then
for groupname in string.gmatch(groupnames, "([^'##\n']+)##") do
if groupname ~= nil and groupname ~= "" then

View File

@ -53,7 +53,7 @@ for t,f in ipairs(fs.glob("/etc/openclash/config/*"))do
end
if e[t].name == m.uci:get(openclash, sid, "config") then
filename = e[t].name
groupnames = sys.exec(string.format('ruby -ryaml -E UTF-8 -e "YAML.load_file(\'%s\')[\'proxy-groups\'].each do |i| puts i[\'name\']+\'##\' end" 2>/dev/null',f))
groupnames = sys.exec(string.format('ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "YAML.load_file(\'%s\')[\'proxy-groups\'].each do |i| puts i[\'name\']+\'##\' end" 2>/dev/null',f))
end
end
end

View File

@ -109,7 +109,7 @@ o.rmempty = true
local groupnames,filename
filename = m.uci:get(openclash, "config", "config_path")
if filename then
groupnames = sys.exec(string.format('ruby -ryaml -E UTF-8 -e "YAML.load_file(\'%s\')[\'proxy-groups\'].each do |i| puts i[\'name\']+\'##\' end" 2>/dev/null',filename))
groupnames = sys.exec(string.format('ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "YAML.load_file(\'%s\')[\'proxy-groups\'].each do |i| puts i[\'name\']+\'##\' end" 2>/dev/null',filename))
if groupnames then
for groupname in string.gmatch(groupnames, "([^'##\n']+)##") do
if groupname ~= nil and groupname ~= "" then

View File

@ -96,7 +96,7 @@ o = s:option(ListValue, "group", translate("Select Proxy Group"))
local groupnames,filename
filename = m.uci:get(openclash, "config", "config_path")
if filename then
groupnames = SYS.exec(string.format('ruby -ryaml -E UTF-8 -e "YAML.load_file(\'%s\')[\'proxy-groups\'].each do |i| puts i[\'name\']+\'##\' end" 2>/dev/null',filename))
groupnames = SYS.exec(string.format('ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "YAML.load_file(\'%s\')[\'proxy-groups\'].each do |i| puts i[\'name\']+\'##\' end" 2>/dev/null',filename))
if groupnames then
for groupname in string.gmatch(groupnames, "([^'##\n']+)##") do
if groupname ~= nil and groupname ~= "" then
@ -172,7 +172,7 @@ o = s:option(ListValue, "group", translate("Select Proxy Group"))
local groupnames,filename
filename = m.uci:get(openclash, "config", "config_path")
if filename then
groupnames = SYS.exec(string.format('ruby -ryaml -E UTF-8 -e "YAML.load_file(\'%s\')[\'proxy-groups\'].each do |i| puts i[\'name\']+\'##\' end" 2>/dev/null',filename))
groupnames = SYS.exec(string.format('ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "YAML.load_file(\'%s\')[\'proxy-groups\'].each do |i| puts i[\'name\']+\'##\' end" 2>/dev/null',filename))
if groupnames then
for groupname in string.gmatch(groupnames, "([^'##\n']+)##") do
if groupname ~= nil and groupname ~= "" then

View File

@ -163,24 +163,24 @@ o.rmempty = false
o:depends("type", "hysteria")
o = s:option(Value, "hysteria_up", translate("up"))
o.rmempty = true
o.rmempty = false
o.description = translate("Required")
o:depends("type", "hysteria")
o = s:option(Value, "hysteria_down", translate("down"))
o.rmempty = true
o.rmempty = false
o.description = translate("Required")
o:depends("type", "hysteria")
o = s:option(Value, "up_mbps", translate("up_mbps"))
o.rmempty = true
o.datatype = "uinteger"
o:depends("type", "hysteria")
--o = s:option(Value, "up_mbps", translate("up_mbps"))
--o.rmempty = true
--o.datatype = "uinteger"
--o:depends("type", "hysteria")
o = s:option(Value, "down_mbps", translate("down_mbps"))
o.rmempty = true
o.datatype = "uinteger"
o:depends("type", "hysteria")
--o = s:option(Value, "down_mbps", translate("down_mbps"))
--o.rmempty = true
--o.datatype = "uinteger"
--o:depends("type", "hysteria")
o = s:option(Value, "psk", translate("Psk"))
o.rmempty = true
@ -450,7 +450,7 @@ o:depends("type", "trojan")
-- [[ alpn ]]--
o = s:option(Value, "hysteria_alpn", translate("alpn"))
o.rmempty = true
o.rmempty = false
o.default = "h3"
o:depends("type", "hysteria")
@ -477,15 +477,15 @@ o:depends("obfs_trojan", "ws")
-- [[ hysteria_obfs ]]--
o = s:option(Value, "hysteria_obfs", translate("obfs"))
o.rmempty = false
o.rmempty = true
o.placeholder = translate("yourpassword")
o:depends("type", "hysteria")
-- [[ hysteria_auth ]]--
o = s:option(Value, "hysteria_auth", translate("auth"))
o.rmempty = true
o.placeholder = translate("[BASE64]")
o:depends("type", "hysteria")
--o = s:option(Value, "hysteria_auth", translate("auth"))
--o.rmempty = true
--o.placeholder = translate("[BASE64]")
--o:depends("type", "hysteria")
-- [[ hysteria_auth_str ]]--
o = s:option(Value, "hysteria_auth_str", translate("auth_str"))

View File

@ -327,7 +327,7 @@ o:depends("dns_advanced_setting", "1")
custom_domain_dns = s:taboption("dns", Value, "custom_domain_dns")
custom_domain_dns.template = "cbi/tvalue"
custom_domain_dns.description = translate("Domain Names In The List Use The Custom DNS Server, One rule per line")
custom_domain_dns.description = translate("Domain Names In The List Use The Custom DNS Server, One rule per line, Depend on Dnsmasq")
custom_domain_dns.rows = 20
custom_domain_dns.wrap = "off"
custom_domain_dns:depends("dns_advanced_setting", "1")
@ -637,6 +637,45 @@ function o.write(self, section, value)
end
end
if op_mode == "redir-host" then
o = s:taboption("lan_ac", Value, "chnroute_pass", translate("Chnroute Bypassed List"))
o.template = "cbi/tvalue"
o.description = translate("Domains or IPs in The List Will Not be Affected by The China IP Route Option, Depend on Dnsmasq")
o.rows = 20
o.wrap = "off"
function o.cfgvalue(self, section)
return NXFS.readfile("/etc/openclash/custom/openclash_custom_chnroute_pass.list") or ""
end
function o.write(self, section, value)
if value then
value = value:gsub("\r\n?", "\n")
local old_value = NXFS.readfile("/etc/openclash/custom/openclash_custom_chnroute_pass.list")
if value ~= old_value then
NXFS.writefile("/etc/openclash/custom/openclash_custom_chnroute_pass.list", value)
end
end
end
o = s:taboption("lan_ac", Value, "chnroute6_pass", translate("Chnroute6 Bypassed List"))
o.template = "cbi/tvalue"
o.description = translate("Domains or IPs in The List Will Not be Affected by The China IP Route Option, Depend on Dnsmasq")
o.rows = 20
o.wrap = "off"
function o.cfgvalue(self, section)
return NXFS.readfile("/etc/openclash/custom/openclash_custom_chnroute6_pass.list") or ""
end
function o.write(self, section, value)
if value then
value = value:gsub("\r\n?", "\n")
local old_value = NXFS.readfile("/etc/openclash/custom/openclash_custom_chnroute6_pass.list")
if value ~= old_value then
NXFS.writefile("/etc/openclash/custom/openclash_custom_chnroute6_pass.list", value)
end
end
end
end
---- Rules Settings
o = s:taboption("rules", Flag, "rule_source", translate("Enable Other Rules"))
o.description = translate("Use Other Rules")
@ -1403,6 +1442,7 @@ end
o = ds:option(ListValue, "group", translate("DNS Server Group"))
o:value("nameserver", translate("NameServer "))
o:value("fallback", translate("FallBack "))
o:value("default", translate("Default-NameServer"))
o.default = "nameserver"
o.rempty = false

View File

@ -240,10 +240,10 @@ msgid "Specify DNS Server For List and Server Nodes With Fake-IP Mode, Only One
msgstr "指定下方列表中域名和 Fake-IP 模式下非代理集内节点的DNS服务器只支持填写一个IP地址"
msgid "Domain Names In The List Do Not Return Fake-IP, One rule per line"
msgstr "每行请只填写一个域名列表中的域名在Fake-IP模式下查询DNS时将返回真实IP地址,更改后点击上方按钮生效"
msgstr "每行请只填写一个域名列表中的域名在Fake-IP模式下查询DNS时将返回真实IP地址"
msgid "Domain Names In The List Use The Custom DNS Server, One rule per line"
msgstr "每行请只填写一个域名列表中的域名将使用上方指定的DNS进行查询"
msgid "Domain Names In The List Use The Custom DNS Server, One rule per line, Depend on Dnsmasq"
msgstr "每行请只填写一个域名列表中的域名将使用上方指定的DNS进行查询,此功能依赖于 Dnsmasq"
msgid "Domain Names In The List Use The Custom DNS Server, But Still Return Fake-IP Results, One rule per line"
@ -256,7 +256,7 @@ msgid "DNS Server Group"
msgstr "服务器分组"
msgid "NameServer Group Must Be Set"
msgstr "NameServer 组必须设置"
msgstr "NameServer 组必须设置至少一个"
msgid "DNS Server Address"
msgstr "服务器地址"
@ -3096,3 +3096,15 @@ msgstr "仅备份规则集"
msgid "Backup Proxy Provider"
msgstr "仅备份代理集"
msgid "Chnroute Bypassed List"
msgstr "绕过中国大陆 IPv4 黑名单"
msgid "Chnroute6 Bypassed List"
msgstr "绕过中国大陆 IPv6 黑名单"
msgid "Domains or IPs in The List Will Not be Affected by The China IP Route Option, Depend on Dnsmasq"
msgstr "列表中的域名或 IP 将不会受到绕过中国大陆 IP 选项的影响,此功能依赖于 Dnsmasq"
msgid "Warning: You May Need to Turn off The Rebinding Protection Option of Dnsmasq When Hosts Has Set a Reserved Address"
msgstr "警告Hosts 设置了保留地址时可能需要关闭 dnsmasq 的重绑定保护选项才能生效"

View File

@ -212,7 +212,7 @@ local provider_path_check
if "$provider_path_line"; then
while :;
do
provider_path_check=$(ruby -ryaml -E UTF-8 -e "
provider_path_check=$(ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "
Value = YAML.load_file('$1');
Value['$2'].values.each{|x,v|
if not x['path'].empty? then
@ -324,7 +324,7 @@ config_check()
#rm -rf "/etc/openclash/*.y*" 2>/dev/null
cp "$RAW_CONFIG_FILE" "$TMP_CONFIG_FILE"
ruby -ryaml -E UTF-8 -e "
ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "
begin
YAML.load_file('$RAW_CONFIG_FILE');
rescue Exception => e
@ -804,7 +804,7 @@ try_restore_start()
raw_config_start
else
LOG_OUT "Error: OpenClash Can Not Start, Try Use Backup Rules Start Again..."
ruby -ryaml -E UTF-8 -e "
ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "
begin
Value = YAML.load_file('$RAW_CONFIG_FILE');
Value_1 = YAML.load_file('$CONFIG_FILE');
@ -1054,6 +1054,13 @@ EOF
if [ "$china_ip_route" = "1" ] || [ "$disable_udp_quic" = "1" ]; then
ipset -! flush china_ip_route 2>/dev/null
ipset -! restore </etc/openclash/china_ip_route.ipset 2>/dev/null
mkdir -p /tmp/dnsmasq.d 2>/dev/null
echo "create china_ip_route_pass hash:net family inet hashsize 1024 maxelem 1000000" >/tmp/openclash_china_ip_route_pass.list
awk '!/^$/&&!/^#/&&/(^([1-9]|1[0-9]|1[1-9]{2}|2[0-4][0-9]|25[0-5])\.)(([0-9]{1,2}|1[1-9]{2}|2[0-4][0-9]|25[0-5])\.){2}([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-5][0-9]|25[0-4])((\/[0-9][0-9])?)$/{printf("add china_ip_route_pass %s'" "'\n",$0)}' /etc/openclash/custom/openclash_custom_chnroute_pass.list >>/tmp/openclash_china_ip_route_pass.list 2>/dev/null
awk '!/^$/&&!/^#/&&!/(^([1-9]|1[0-9]|1[1-9]{2}|2[0-4][0-9]|25[0-5])\.)(([0-9]{1,2}|1[1-9]{2}|2[0-4][0-9]|25[0-5])\.){2}([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-5][0-9]|25[0-4])((\/[0-9][0-9])?)$/{printf("ipset=/%s/china_ip_route_pass'" "'\n",$0)}' /etc/openclash/custom/openclash_custom_chnroute_pass.list >>/tmp/dnsmasq.d/dnsmasq_openclash_chnroute_pass.conf 2>/dev/null
ipset -! flush china_ip_route_pass 2>/dev/null
ipset -! restore </tmp/openclash_china_ip_route_pass.list 2>/dev/null
rm -rf /tmp/openclash_china_ip_route_pass.list 2>/dev/null
fi
if [ "$enable_redirect_dns" -eq 1 ] && [ -z "$(iptables -t nat -nL PREROUTING --line-number |grep 'OpenClash DNS Hijack')"]; then
@ -1168,7 +1175,7 @@ if [ "$intranet_allowed" -eq 1 ]; then
iptables -t filter -N openclash_wan_input
iptables -t filter -F openclash_wan_input
for wan_int in $wan_ints; do
iptables -t filter -I INPUT -i "$wan_int" -j openclash_wan_input
iptables -t filter -I INPUT -i "$wan_int" -m set ! --match-set localnetwork src -j openclash_wan_input
done
iptables -t filter -A openclash_wan_input -p udp -m multiport --dport "$proxy_port,$tproxy_port,$cn_port,$http_port,$socks_port,$mixed_port,$dns_port" -j REJECT >/dev/null 2>&1
iptables -t filter -A openclash_wan_input -p tcp -m multiport --dport "$proxy_port,$tproxy_port,$cn_port,$http_port,$socks_port,$mixed_port,$dns_port" -j REJECT >/dev/null 2>&1
@ -1189,7 +1196,7 @@ if [ -z "$en_mode_tun" ] || [ "$en_mode_tun" -eq 2 ]; then
if [ "$en_mode" = "redir-host" ]; then
iptables -t nat -A openclash -m set ! --match-set common_ports dst -j RETURN >/dev/null 2>&1
if [ "$china_ip_route" = "1" ]; then
iptables -t nat -A openclash -m set --match-set china_ip_route dst -j RETURN >/dev/null 2>&1
iptables -t nat -A openclash -m set --match-set china_ip_route dst -m set ! --match-set china_ip_route_pass dst -j RETURN >/dev/null 2>&1
fi
fi
iptables -t nat -A openclash -p tcp -j REDIRECT --to-ports "$proxy_port"
@ -1215,7 +1222,7 @@ if [ -z "$en_mode_tun" ] || [ "$en_mode_tun" -eq 2 ]; then
if [ "$en_mode" = "redir-host" ]; then
iptables -t mangle -A openclash -m set ! --match-set common_ports dst -j RETURN >/dev/null 2>&1
if [ "$china_ip_route" = "1" ]; then
iptables -t mangle -A openclash -m set --match-set china_ip_route dst -j RETURN >/dev/null 2>&1
iptables -t mangle -A openclash -m set --match-set china_ip_route dst -m set ! --match-set china_ip_route_pass dst -j RETURN >/dev/null 2>&1
fi
fi
iptables -t mangle -A openclash -p udp --dport 53 -j RETURN >/dev/null 2>&1
@ -1255,7 +1262,7 @@ if [ -z "$en_mode_tun" ] || [ "$en_mode_tun" -eq 2 ]; then
if [ "$en_mode" = "redir-host" ]; then
iptables -t nat -A openclash_output -m set --match-set wan_ac_black_ips dst -j RETURN >/dev/null 2>&1
if [ "$china_ip_route" = "1" ]; then
iptables -t nat -A openclash_output -m owner ! --uid-owner 65534 -m set --match-set china_ip_route dst -j RETURN >/dev/null 2>&1
iptables -t nat -A openclash_output -m owner ! --uid-owner 65534 -m set --match-set china_ip_route dst -m set ! --match-set china_ip_route_pass dst -j RETURN >/dev/null 2>&1
fi
fi
iptables -t nat -A openclash_output -m owner ! --uid-owner 65534 -p tcp -j REDIRECT --to-ports "$proxy_port"
@ -1322,7 +1329,7 @@ if [ -n "$en_mode_tun" ]; then
iptables -t mangle -A openclash_output -m set --match-set wan_ac_black_ips dst -j RETURN >/dev/null 2>&1
iptables -t mangle -A openclash_output -m owner ! --uid-owner 65534 -m set ! --match-set common_ports dst -j RETURN >/dev/null 2>&1
if [ "$china_ip_route" = "1" ]; then
iptables -t mangle -A openclash_output -m owner ! --uid-owner 65534 -m set --match-set china_ip_route dst -j RETURN >/dev/null 2>&1
iptables -t mangle -A openclash_output -m owner ! --uid-owner 65534 -m set --match-set china_ip_route dst -m set ! --match-set china_ip_route_pass dst -j RETURN >/dev/null 2>&1
fi
iptables -t mangle -A openclash_output -m owner ! --uid-owner 65534 -p tcp -j MARK --set-mark "$PROXY_FWMARK"
iptables -t mangle -A OUTPUT -j openclash_output
@ -1343,7 +1350,7 @@ if [ -n "$en_mode_tun" ]; then
if [ "$en_mode" = "redir-host" ]; then
iptables -t mangle -A openclash -m set ! --match-set common_ports dst -j RETURN >/dev/null 2>&1
if [ "$china_ip_route" = "1" ]; then
iptables -t mangle -A openclash -m set --match-set china_ip_route dst -j RETURN >/dev/null 2>&1
iptables -t mangle -A openclash -m set --match-set china_ip_route dst -m set ! --match-set china_ip_route_pass dst -j RETURN >/dev/null 2>&1
fi
fi
iptables -t mangle -A openclash -j MARK --set-mark "$PROXY_FWMARK"
@ -1377,6 +1384,13 @@ if [ "$ipv6_enable" -eq 1 ] && [ -n "$(ip6tables -t mangle -L 2>&1 | grep -o 'Ch
if [ "$china_ip6_route" = "1" ] || [ "$disable_udp_quic" = "1" ]; then
ipset -! flush china_ip6_route 2>/dev/null
ipset -! restore </etc/openclash/china_ip6_route.ipset 2>/dev/null
mkdir -p /tmp/dnsmasq.d 2>/dev/null
echo "create china_ip6_route_pass hash:net family inet6 hashsize 1024 maxelem 1000000" >/tmp/openclash_china_ip6_route_pass.list
awk '!/^$/&&!/^#/&&!/^(\*?\.?)*[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})*$/{printf("add china_ip6_route_pass %s'" "'\n",$0)}' /etc/openclash/custom/openclash_custom_chnroute6_pass.list >>/tmp/openclash_china_ip6_route_pass.list 2>/dev/null
awk '!/^$/&&!/^#/&&/^(\*?\.?)*[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})*$/{printf("ipset=/%s/china_ip6_route_pass'" "'\n",$0)}' /etc/openclash/custom/openclash_custom_chnroute6_pass.list >>/tmp/dnsmasq.d/dnsmasq_openclash_chnroute6_pass.conf 2>/dev/null
ipset -! flush china_ip6_route_pass 2>/dev/null
ipset -! restore </tmp/openclash_china_ip6_route_pass.list 2>/dev/null
rm -rf /tmp/openclash_china_ip6_route_pass.list 2>/dev/null
fi
#local
@ -1425,7 +1439,7 @@ if [ "$ipv6_enable" -eq 1 ] && [ -n "$(ip6tables -t mangle -L 2>&1 | grep -o 'Ch
ip6tables -t mangle -N openclash
ip6tables -t mangle -F openclash
ip6tables -t mangle -A openclash -m set --match-set localnetwork6 dst -j RETURN
ip6tables -t mangle -A openclash -m set --match-set localnetwork src -m set --match-set lan_ac_black_ports src -j RETURN
ip6tables -t mangle -A openclash -m set --match-set localnetwork6 src -m set --match-set lan_ac_black_ports src -j RETURN
ip6tables -t mangle -A openclash -m set --match-set wan_ac_black_ipv6s dst -j RETURN >/dev/null 2>&1
if [ "$en_mode" == "redir-host" ]; then
ip6tables -t mangle -A openclash -m set --match-set lan_ac_black_macs src -j RETURN >/dev/null 2>&1
@ -1435,7 +1449,7 @@ if [ "$ipv6_enable" -eq 1 ] && [ -n "$(ip6tables -t mangle -L 2>&1 | grep -o 'Ch
ip6tables -t mangle -A openclash -m set ! --match-set common_ports dst -j RETURN >/dev/null 2>&1
fi
if [ "$china_ip6_route" = "1" ]; then
ip6tables -t mangle -A openclash -m set --match-set china_ip6_route dst -j RETURN >/dev/null 2>&1
ip6tables -t mangle -A openclash -m set --match-set china_ip6_route dst -m set ! --match-set china_ip6_route_pass dst -j RETURN >/dev/null 2>&1
fi
ip6tables -t mangle -A openclash -p tcp -m comment --comment "OpenClash TCP Tproxy" -j TPROXY --on-port "$tproxy_port" --tproxy-mark "$PROXY_FWMARK"
ip6tables -t mangle -A PREROUTING -j openclash
@ -1444,11 +1458,11 @@ if [ "$ipv6_enable" -eq 1 ] && [ -n "$(ip6tables -t mangle -L 2>&1 | grep -o 'Ch
ip6tables -t mangle -N openclash_output
ip6tables -t mangle -F openclash_output
ip6tables -t mangle -A openclash_output -m set --match-set localnetwork6 dst -j RETURN
ip6tables -t mangle -A openclash_output -m set --match-set localnetwork src -m set --match-set lan_ac_black_ports src -j RETURN
ip6tables -t mangle -A openclash_output -m set --match-set wan_ac_black_ips dst -j RETURN >/dev/null 2>&1
ip6tables -t mangle -A openclash_output -m set --match-set localnetwork6 src -m set --match-set lan_ac_black_ports src -j RETURN
ip6tables -t mangle -A openclash_output -m set --match-set wan_ac_black_ipv6s dst -j RETURN >/dev/null 2>&1
ip6tables -t mangle -A openclash_output -m owner ! --uid-owner 65534 -m set ! --match-set common_ports dst -j RETURN >/dev/null 2>&1
if [ "$china_ip6_route" = "1" ]; then
ip6tables -t mangle -A openclash_output -m owner ! --uid-owner 65534 -m set --match-set china_ip6_route dst -j RETURN >/dev/null 2>&1
ip6tables -t mangle -A openclash_output -m owner ! --uid-owner 65534 -m set --match-set china_ip6_route dst -m set ! --match-set china_ip6_route_pass dst -j RETURN >/dev/null 2>&1
fi
ip6tables -t mangle -A openclash_output -p tcp -m owner ! --uid-owner 65534 -j MARK --set-xmark "$PROXY_FWMARK"
ip6tables -t mangle -A OUTPUT -j openclash_output
@ -1482,7 +1496,7 @@ if [ "$ipv6_enable" -eq 1 ] && [ -n "$(ip6tables -t mangle -L 2>&1 | grep -o 'Ch
ip6tables -t filter -N openclash_wan_input
ip6tables -t filter -F openclash_wan_input
for wan6_int in $wan6_ints; do
ip6tables -t filter -I INPUT -i "$wan_int" -j openclash_wan_input
ip6tables -t filter -I INPUT -i "$wan_int" -m set --match-set localnetwork6 src -j openclash_wan_input
done
ip6tables -t filter -A openclash_wan_input -p udp -m multiport --dport "$proxy_port,$tproxy_port,$cn_port,$http_port,$socks_port,$mixed_port,$dns_port" -j REJECT >/dev/null 2>&1
ip6tables -t filter -A openclash_wan_input -p tcp -m multiport --dport "$proxy_port,$tproxy_port,$cn_port,$http_port,$socks_port,$mixed_port,$dns_port" -j REJECT >/dev/null 2>&1
@ -1498,7 +1512,9 @@ config_foreach firewall_rule_exclude "rule"
revert_firewall()
{
rm -rf /var/etc/openclash.include
rm -rf /var/etc/openclash.include >/dev/null 2>&1
rm -rf /tmp/dnsmasq.d/dnsmasq_openclash_chnroute_pass.conf >/dev/null 2>&1
rm -rf /tmp/dnsmasq.d/dnsmasq_openclash_chnroute6_pass.conf >/dev/null 2>&1
ip rule del fwmark "$PROXY_FWMARK" table "$PROXY_ROUTE_TABLE" >/dev/null 2>&1
ip route del local 0.0.0.0/0 dev lo table "$PROXY_ROUTE_TABLE" >/dev/null 2>&1
@ -1541,12 +1557,14 @@ revert_firewall()
ipset destroy localnetwork6 >/dev/null 2>&1
ipset destroy china_ip6_route >/dev/null 2>&1
ipset destroy china_ip6_route_pass >/dev/null 2>&1
ipset destroy lan_ac_white_ipv6s >/dev/null 2>&1
ipset destroy lan_ac_black_ipv6s >/dev/null 2>&1
ipset destroy wan_ac_black_ipv6s >/dev/null 2>&1
ipset destroy localnetwork >/dev/null 2>&1
ipset destroy china_ip_route >/dev/null 2>&1
ipset destroy china_ip_route_pass >/dev/null 2>&1
ipset destroy lan_ac_white_ips >/dev/null 2>&1
ipset destroy lan_ac_black_ips >/dev/null 2>&1
ipset destroy lan_ac_white_macs >/dev/null 2>&1
@ -1730,6 +1748,8 @@ stop()
rm -rf /tmp/rule_providers_name >/dev/null 2>&1
rm -rf /tmp/dnsmasq.d/dnsmasq_openclash.conf >/dev/null 2>&1
rm -rf /tmp/dnsmasq.d/dnsmasq_openclash_custom_domain.conf >/dev/null 2>&1
rm -rf /tmp/dnsmasq.d/dnsmasq_openclash_chnroute_pass.conf >/dev/null 2>&1
rm -rf /tmp/dnsmasq.d/dnsmasq_openclash_chnroute6_pass.conf >/dev/null 2>&1
rm -rf /tmp/openclash_last_version >/dev/null 2>&1
rm -rf /tmp/openclash_config.tmp >/dev/null 2>&1
rm -rf /tmp/openclash.change >/dev/null 2>&1

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,2 @@
#baidu.com
#2400:da00::dbf:0:100

View File

@ -0,0 +1,2 @@
#baidu.com
#114.114.114.114

View File

@ -2,24 +2,33 @@ payload:
# > Amazon Prime Video
# - USER-AGENT,InstantVideo.US*
# - USER-AGENT,Prime%20Video*
- DOMAIN-KEYWORD,avoddashs
- DOMAIN-SUFFIX,amazonvideo.com
- DOMAIN-SUFFIX,media-amazon.com
- DOMAIN-SUFFIX,pv-cdn.net
- DOMAIN-SUFFIX,aiv-cdn.net
- DOMAIN-SUFFIX,aiv-delivery.net
# - DOMAIN,www.amazon.com
- DOMAIN-SUFFIX,amazonvideo.com
- DOMAIN-SUFFIX,amazonvideo.cc
- DOMAIN-SUFFIX,media-amazon.com
- DOMAIN-SUFFIX,primevideo.com
- DOMAIN-SUFFIX,prime-video.com
- DOMAIN-SUFFIX,primevideo.cc
- DOMAIN-SUFFIX,primevideo.info
- DOMAIN-SUFFIX,primevideo.org
- DOMAIN-SUFFIX,primevideo.tv
- DOMAIN-SUFFIX,amazonvideodirect.cc
- DOMAIN-SUFFIX,amazonprimevideos.com
- DOMAIN,atv-ps.amazon.com
- DOMAIN,fls-na.amazon.com
- DOMAIN,avodmp4s3ww-a.akamaihd.net
- DOMAIN,d1v5ir2lpwr8os.cloudfront.net
- DOMAIN,d1xfray82862hr.cloudfront.net
- DOMAIN,d22qjgkvxw22r6.cloudfront.net
- DOMAIN,d25xi40x97liuc.cloudfront.net
- DOMAIN,d27xxe7juh1us6.cloudfront.net
- DOMAIN,d3196yreox78o9.cloudfront.net
- DOMAIN,dmqdd6hw24ucf.cloudfront.net
- DOMAIN,ktpx.amazon.com
- DOMAIN,d27xxe7juh1us6.cloudfront.net
# 美区网页版需二选一走代理,如 URL-REGEX 则需 MITM www.amazon.com
# - DOMAIN,www.amazon.com
# - URL-REGEX,^https?:\/\/www\.amazon\.com\/(Amazon-Video|gp\/video)\/
# // 美区网页版需二选一走代理,如 URL-REGEX 则需 MITM www.amazon.com
# // DOMAIN,www.amazon.com
# URL-REGEX,^https?:\/\/www\.amazon\.com\/(Amazon-Video|gp\/video)\/

View File

@ -0,0 +1,128 @@
payload:
# > Forum
- DOMAIN-SUFFIX,bitcointalk.org
# > Exchange
- DOMAIN-SUFFIX,aex.com
- DOMAIN-SUFFIX,bibox.com
- DOMAIN-SUFFIX,bitfinex.com
- DOMAIN-SUFFIX,bithumb.com
- DOMAIN-SUFFIX,bitmex.com
- DOMAIN-SUFFIX,bitstamp.net
- DOMAIN-SUFFIX,bittrex.com
- DOMAIN-SUFFIX,bybit.com
- DOMAIN-SUFFIX,coinbase.com
- DOMAIN-SUFFIX,coincheck.com
- DOMAIN-SUFFIX,coinone.co.kr
- DOMAIN-SUFFIX,ftx.com
- DOMAIN-SUFFIX,gate.io
- DOMAIN-SUFFIX,gemini.com
- DOMAIN-SUFFIX,korbit.co.kr
- DOMAIN-SUFFIX,kraken.com
- DOMAIN-SUFFIX,kucoin.com
- DOMAIN-SUFFIX,liquid.com
- DOMAIN-SUFFIX,poloniex.com
- DOMAIN-SUFFIX,sushi.com
- DOMAIN-SUFFIX,uniswap.org
- DOMAIN-SUFFIX,bitbank.cc
- DOMAIN-SUFFIX,bitcoin.org
- DOMAIN-SUFFIX,bitquick.co
- DOMAIN-SUFFIX,btcbox.co.jp
- DOMAIN-SUFFIX,cex.io
- DOMAIN-SUFFIX,dogecoin.com
- DOMAIN-SUFFIX,paxful.com
# > Binance
- DOMAIN-SUFFIX,binance.cc
- DOMAIN-SUFFIX,binance.cloud
- DOMAIN-SUFFIX,binance.com
- DOMAIN-SUFFIX,binance.im
- DOMAIN-SUFFIX,binance.me
- DOMAIN-SUFFIX,binance.us
- DOMAIN-SUFFIX,bnappzh.co
- DOMAIN-SUFFIX,bnappzh.com
- DOMAIN-SUFFIX,bnbstatic.com
- DOMAIN-SUFFIX,bntrace.com
- DOMAIN-SUFFIX,binance.charity
- DOMAIN-SUFFIX,binance.co
- DOMAIN-SUFFIX,binance.info
- DOMAIN-SUFFIX,binance.net
- DOMAIN-SUFFIX,binance.org
- DOMAIN-SUFFIX,binance.vision
- DOMAIN-SUFFIX,binanceapi.com
- DOMAIN-SUFFIX,binancezh.be
- DOMAIN-SUFFIX,binancezh.biz
- DOMAIN-SUFFIX,binancezh.cc
- DOMAIN-SUFFIX,binancezh.co
- DOMAIN-SUFFIX,binancezh.com
- DOMAIN-SUFFIX,binancezh.info
- DOMAIN-SUFFIX,binancezh.ink
- DOMAIN-SUFFIX,binancezh.kim
- DOMAIN-SUFFIX,binancezh.link
- DOMAIN-SUFFIX,binancezh.live
- DOMAIN-SUFFIX,binancezh.mobi
- DOMAIN-SUFFIX,binancezh.net
- DOMAIN-SUFFIX,binancezh.pro
- DOMAIN-SUFFIX,binancezh.sh
- DOMAIN-SUFFIX,binancezh.top
# > Huobi
- DOMAIN-SUFFIX,hbabit.com
- DOMAIN-SUFFIX,hbfile.net
- DOMAIN-SUFFIX,huobi.com
- DOMAIN-SUFFIX,huobi.me
- DOMAIN-SUFFIX,huobi.pro
- DOMAIN-SUFFIX,huobi.sc
- DOMAIN-SUFFIX,huobiasia.vip
- DOMAIN-SUFFIX,huobigroup.com
- DOMAIN-SUFFIX,huobitoken.com
- DOMAIN-SUFFIX,heco-scan.com
- DOMAIN-SUFFIX,hecoview.com
- DOMAIN-SUFFIX,hbfile.net
- DOMAIN-SUFFIX,huobi.br.com
- DOMAIN-SUFFIX,bitderiv.com
# > OKX
- DOMAIN-SUFFIX,okex.com
- DOMAIN-SUFFIX,okx.com
# > asproex
- DOMAIN-SUFFIX,asproex.com
- DOMAIN-SUFFIX,asproexapi.com
# > bitflyer
- DOMAIN-SUFFIX,bitflyer.com
- DOMAIN-SUFFIX,bitflyer.jp
# > bitsquare
- DOMAIN-SUFFIX,bisq.io
- DOMAIN-SUFFIX,bisq.network
- DOMAIN-SUFFIX,bitsquare.io
# > coinone
- DOMAIN-SUFFIX,coinone.co.kr
- DOMAIN-SUFFIX,coinonecore.com
- DOMAIN-SUFFIX,coinonecorp.com
# > ethereum
- DOMAIN-SUFFIX,devcon.org
- DOMAIN-SUFFIX,ethereum.foundation
- DOMAIN-SUFFIX,ethereum.org
# > localbitcoins
- DOMAIN-SUFFIX,localbitcoins.com
- DOMAIN-SUFFIX,localbitcoinschain.com
# > zb
- DOMAIN-SUFFIX,zb.app
- DOMAIN-SUFFIX,zb.com
- DOMAIN-SUFFIX,zb.io
- DOMAIN-SUFFIX,zb.live
# Analysis
- DOMAIN-SUFFIX,aicoin.com
- DOMAIN-SUFFIX,aimoon.com
- DOMAIN-SUFFIX,coingecko.com
- DOMAIN-SUFFIX,coinmarketcap.com

View File

@ -78,7 +78,6 @@ payload:
- DOMAIN-SUFFIX,appshike.com
- DOMAIN-SUFFIX,appstore.com
- DOMAIN-SUFFIX,autonavi.com
- DOMAIN-SUFFIX,aweme.snssdk.com
- DOMAIN-SUFFIX,bababian.com
- DOMAIN-SUFFIX,baidu.com
- DOMAIN-SUFFIX,baidupcs.com
@ -196,7 +195,6 @@ payload:
- DOMAIN-SUFFIX,pgyer.com
- DOMAIN-SUFFIX,pniao.com
- DOMAIN-SUFFIX,privatehd.to
- DOMAIN-SUFFIX,pstatp.com
- DOMAIN-SUFFIX,qbox.me
- DOMAIN-SUFFIX,qcloud.com
- DOMAIN-SUFFIX,qdaily.com
@ -222,7 +220,6 @@ payload:
- DOMAIN-SUFFIX,sinaimg.com
- DOMAIN-SUFFIX,sm.ms
- DOMAIN-SUFFIX,smzdm.com
- DOMAIN-SUFFIX,snssdk.com
- DOMAIN-SUFFIX,snwx.com
- DOMAIN-SUFFIX,so.com
- DOMAIN-SUFFIX,sogou.com
@ -265,6 +262,7 @@ payload:
- DOMAIN-SUFFIX,wkcdn.com
- DOMAIN-SUFFIX,xdrig.com
- DOMAIN-SUFFIX,xhostfire.com
- DOMAIN-SUFFIX,xhscdn.com
- DOMAIN-SUFFIX,xiami.com
- DOMAIN-SUFFIX,xiami.net
- DOMAIN-SUFFIX,xiaohongshu.com

View File

@ -1,922 +1,36 @@
payload:
# > Netflix
- PROCESS-NAME,com.netflix.mediaclient
- DOMAIN-KEYWORD,netflix
- DOMAIN-KEYWORD,netflixdnstest
- DOMAIN-KEYWORD,dualstack.apiproxy-
- DOMAIN-KEYWORD,dualstack.ichnaea-web-
- DOMAIN-KEYWORD,apiproxy-device-prod-nlb-
- DOMAIN,netflix.api.fast.com
- DOMAIN,api.fast.com
- DOMAIN,netflix.com.edgesuite.net
- DOMAIN-SUFFIX,netflix.com
- DOMAIN-SUFFIX,netflix.net
- DOMAIN-SUFFIX,netflixdnstest0.com
- DOMAIN-SUFFIX,netflixdnstest1.com
- DOMAIN-SUFFIX,netflixdnstest2.com
- DOMAIN-SUFFIX,netflixdnstest3.com
- DOMAIN-SUFFIX,netflixdnstest4.com
- DOMAIN-SUFFIX,netflixdnstest5.com
- DOMAIN-SUFFIX,netflixdnstest6.com
- DOMAIN-SUFFIX,netflixdnstest7.com
- DOMAIN-SUFFIX,netflixdnstest8.com
- DOMAIN-SUFFIX,netflixdnstest9.com
- DOMAIN-SUFFIX,nflxext.com
- DOMAIN-SUFFIX,nflximg.com
- DOMAIN-SUFFIX,nflximg.net
- DOMAIN-SUFFIX,nflxsearch
- DOMAIN-SUFFIX,nflxso.net
- DOMAIN-SUFFIX,nflxvideo.net
- IP-CIDR,3.0.5.32/29,no-resolve
- IP-CIDR,3.0.5.224/27,no-resolve
- IP-CIDR,3.6.70.76/30,no-resolve
- IP-CIDR,3.7.10.0/23,no-resolve
- IP-CIDR,3.7.25.48/30,no-resolve
- IP-CIDR,3.8.37.24/29,no-resolve
- IP-CIDR,3.8.37.96/27,no-resolve
- IP-CIDR,3.9.41.0/26,no-resolve
- IP-CIDR,3.9.41.64/27,no-resolve
- IP-CIDR,3.9.94.0/24,no-resolve
- IP-CIDR,3.9.159.64/29,no-resolve
- IP-CIDR,3.9.159.72/30,no-resolve
- IP-CIDR,3.10.17.0/24,no-resolve
- IP-CIDR,3.10.127.32/27,no-resolve
- IP-CIDR,3.10.201.64/27,no-resolve
- IP-CIDR,3.11.53.0/24,no-resolve
- IP-CIDR,3.12.23.88/29,no-resolve
- IP-CIDR,3.12.216.0/22,no-resolve
- IP-CIDR,3.15.35.0/24,no-resolve
- IP-CIDR,3.15.36.0/26,no-resolve
- IP-CIDR,3.16.146.0/29,no-resolve
- IP-CIDR,3.18.132.0/25,no-resolve
- IP-CIDR,3.19.147.0/24,no-resolve
- IP-CIDR,3.21.86.0/23,no-resolve
- IP-CIDR,3.24.1.208/28,no-resolve
- IP-CIDR,3.25.37.128/25,no-resolve
- IP-CIDR,3.25.38.0/23,no-resolve
- IP-CIDR,3.25.40.0/24,no-resolve
- IP-CIDR,3.25.43.0/24,no-resolve
- IP-CIDR,3.25.44.0/23,no-resolve
- IP-CIDR,3.25.47.28/30,no-resolve
- IP-CIDR,3.25.47.32/30,no-resolve
- IP-CIDR,3.26.58.224/27,no-resolve
- IP-CIDR,3.26.81.0/26,no-resolve
- IP-CIDR,3.26.82.236/30,no-resolve
- IP-CIDR,3.26.82.240/29,no-resolve
- IP-CIDR,3.26.83.0/24,no-resolve
- IP-CIDR,3.26.84.0/22,no-resolve
- IP-CIDR,3.26.88.0/27,no-resolve
- IP-CIDR,3.26.109.216/30,no-resolve
- IP-CIDR,3.26.127.24/29,no-resolve
- IP-CIDR,3.26.138.0/23,no-resolve
- IP-CIDR,3.26.246.0/23,no-resolve
- IP-CIDR,3.32.190.244/30,no-resolve
- IP-CIDR,3.32.190.248/29,no-resolve
- IP-CIDR,3.34.37.0/24,no-resolve
- IP-CIDR,3.34.38.0/23,no-resolve
- IP-CIDR,3.34.89.64/26,no-resolve
- IP-CIDR,3.34.89.192/29,no-resolve
- IP-CIDR,3.35.130.128/25,no-resolve
- IP-CIDR,3.36.3.96/27,no-resolve
- IP-CIDR,3.36.3.160/28,no-resolve
- IP-CIDR,3.36.3.192/26,no-resolve
- IP-CIDR,3.36.167.28/30,no-resolve
- IP-CIDR,3.36.167.48/29,no-resolve
- IP-CIDR,3.36.167.64/27,no-resolve
- IP-CIDR,3.36.167.128/25,no-resolve
- IP-CIDR,3.36.190.0/23,no-resolve
- IP-CIDR,3.36.192.0/22,no-resolve
- IP-CIDR,3.36.202.0/25,no-resolve
- IP-CIDR,3.36.245.204/30,no-resolve
- IP-CIDR,3.36.245.232/30,no-resolve
- IP-CIDR,3.38.90.8/29,no-resolve
- IP-CIDR,3.38.229.0/25,no-resolve
- IP-CIDR,3.64.1.0/25,no-resolve
- IP-CIDR,3.64.1.128/26,no-resolve
- IP-CIDR,3.64.1.192/28,no-resolve
- IP-CIDR,3.64.226.232/29,no-resolve
- IP-CIDR,3.64.226.240/30,no-resolve
- IP-CIDR,3.65.246.0/27,no-resolve
- IP-CIDR,3.66.172.0/24,no-resolve
- IP-CIDR,3.68.251.176/30,no-resolve
- IP-CIDR,3.68.251.232/29,no-resolve
- IP-CIDR,3.70.195.64/26,no-resolve
- IP-CIDR,3.70.195.128/25,no-resolve
- IP-CIDR,3.70.211.0/25,no-resolve
- IP-CIDR,3.71.104.0/24,no-resolve
- IP-CIDR,3.96.2.68/30,no-resolve
- IP-CIDR,3.96.2.72/30,no-resolve
- IP-CIDR,3.97.49.128/25,no-resolve
- IP-CIDR,3.97.99.64/28,no-resolve
- IP-CIDR,3.97.99.96/27,no-resolve
- IP-CIDR,3.97.99.128/26,no-resolve
- IP-CIDR,3.97.192.112/29,no-resolve
- IP-CIDR,3.97.192.128/25,no-resolve
- IP-CIDR,3.97.217.0/24,no-resolve
- IP-CIDR,3.97.218.0/23,no-resolve
- IP-CIDR,3.97.230.0/25,no-resolve
- IP-CIDR,3.98.24.0/27,no-resolve
- IP-CIDR,3.98.86.0/23,no-resolve
- IP-CIDR,3.98.171.92/30,no-resolve
- IP-CIDR,3.98.171.196/30,no-resolve
- IP-CIDR,3.98.171.224/29,no-resolve
- IP-CIDR,3.99.194.0/23,no-resolve
- IP-CIDR,3.99.196.0/22,no-resolve
- IP-CIDR,3.101.52.208/29,no-resolve
- IP-CIDR,3.101.100.128/25,no-resolve
- IP-CIDR,3.101.145.192/26,no-resolve
- IP-CIDR,3.101.156.0/26,no-resolve
- IP-CIDR,3.101.157.128/25,no-resolve
- IP-CIDR,3.101.158.0/23,no-resolve
- IP-CIDR,3.101.160.44/30,no-resolve
- IP-CIDR,3.101.160.48/28,no-resolve
- IP-CIDR,3.101.160.240/29,no-resolve
- IP-CIDR,3.101.161.0/24,no-resolve
- IP-CIDR,3.101.162.0/24,no-resolve
- IP-CIDR,3.101.163.0/26,no-resolve
- IP-CIDR,3.101.163.64/27,no-resolve
- IP-CIDR,3.101.163.96/28,no-resolve
- IP-CIDR,3.101.164.0/24,no-resolve
- IP-CIDR,3.101.176.0/24,no-resolve
- IP-CIDR,3.101.177.20/30,no-resolve
- IP-CIDR,3.101.177.48/29,no-resolve
- IP-CIDR,3.101.200.0/24,no-resolve
- IP-CIDR,3.105.5.0/26,no-resolve
- IP-CIDR,3.105.172.0/22,no-resolve
- IP-CIDR,3.108.13.124/30,no-resolve
- IP-CIDR,3.109.72.0/25,no-resolve
- IP-CIDR,3.109.72.152/29,no-resolve
- IP-CIDR,3.111.90.0/23,no-resolve
- IP-CIDR,3.112.23.0/29,no-resolve
- IP-CIDR,3.112.85.96/27,no-resolve
- IP-CIDR,3.112.96.0/25,no-resolve
- IP-CIDR,3.112.96.128/26,no-resolve
- IP-CIDR,3.112.162.0/23,no-resolve
- IP-CIDR,3.113.218.68/30,no-resolve
- IP-CIDR,3.113.218.72/29,no-resolve
- IP-CIDR,3.113.218.112/28,no-resolve
- IP-CIDR,3.113.218.128/27,no-resolve
- IP-CIDR,3.120.181.40/29,no-resolve
- IP-CIDR,3.120.181.224/27,no-resolve
- IP-CIDR,3.123.14.0/24,no-resolve
- IP-CIDR,3.123.15.0/25,no-resolve
- IP-CIDR,3.123.44.0/27,no-resolve
- IP-CIDR,3.123.44.80/28,no-resolve
- IP-CIDR,3.123.44.96/27,no-resolve
- IP-CIDR,3.123.44.128/26,no-resolve
- IP-CIDR,3.127.48.244/30,no-resolve
- IP-CIDR,3.127.48.248/30,no-resolve
- IP-CIDR,3.127.74.0/23,no-resolve
- IP-CIDR,3.128.93.0/24,no-resolve
- IP-CIDR,3.134.215.0/24,no-resolve
- IP-CIDR,3.139.136.128/27,no-resolve
- IP-CIDR,3.139.136.184/30,no-resolve
- IP-CIDR,3.139.136.192/26,no-resolve
- IP-CIDR,3.140.136.128/27,no-resolve
- IP-CIDR,3.141.102.184/29,no-resolve
- IP-CIDR,3.141.102.192/30,no-resolve
- IP-CIDR,3.141.102.208/28,no-resolve
- IP-CIDR,3.141.102.224/28,no-resolve
- IP-CIDR,3.143.206.104/29,no-resolve
- IP-CIDR,3.144.141.192/26,no-resolve
- IP-CIDR,3.145.31.0/26,no-resolve
- IP-CIDR,3.208.72.176/28,no-resolve
- IP-CIDR,3.209.83.0/25,no-resolve
- IP-CIDR,3.209.83.144/28,no-resolve
- IP-CIDR,3.209.83.160/27,no-resolve
- IP-CIDR,3.209.83.192/26,no-resolve
- IP-CIDR,3.209.84.0/24,no-resolve
- IP-CIDR,3.209.85.0/25,no-resolve
- IP-CIDR,3.209.85.128/26,no-resolve
- IP-CIDR,3.209.85.192/27,no-resolve
- IP-CIDR,3.209.87.0/24,no-resolve
- IP-CIDR,3.209.202.48/28,no-resolve
- IP-CIDR,3.216.99.160/27,no-resolve
- IP-CIDR,3.216.135.0/24,no-resolve
- IP-CIDR,3.216.136.0/21,no-resolve
- IP-CIDR,3.216.144.0/23,no-resolve
- IP-CIDR,3.216.148.0/22,no-resolve
- IP-CIDR,3.217.228.0/22,no-resolve
- IP-CIDR,3.218.180.0/22,no-resolve
- IP-CIDR,3.228.170.0/23,no-resolve
- IP-CIDR,3.228.172.0/23,no-resolve
- IP-CIDR,3.228.181.0/24,no-resolve
- IP-CIDR,3.228.182.0/31,no-resolve
- IP-CIDR,3.228.182.5/32,no-resolve
- IP-CIDR,3.228.182.6/31,no-resolve
- IP-CIDR,3.228.182.8/31,no-resolve
- IP-CIDR,3.228.182.10/32,no-resolve
- IP-CIDR,3.228.182.46/31,no-resolve
- IP-CIDR,3.228.182.48/28,no-resolve
- IP-CIDR,3.228.182.64/27,no-resolve
- IP-CIDR,3.228.182.96/30,no-resolve
- IP-CIDR,3.228.182.100/32,no-resolve
- IP-CIDR,3.231.2.0/25,no-resolve
- IP-CIDR,3.234.232.224/27,no-resolve
- IP-CIDR,3.235.26.0/23,no-resolve
- IP-CIDR,3.235.32.0/21,no-resolve
- IP-CIDR,3.235.112.0/21,no-resolve
- IP-CIDR,3.235.189.96/29,no-resolve
- IP-CIDR,3.236.48.0/23,no-resolve
- IP-CIDR,3.236.169.192/26,no-resolve
- IP-CIDR,3.238.178.100/30,no-resolve
- IP-CIDR,3.238.178.104/29,no-resolve
- IP-CIDR,3.238.178.112/29,no-resolve
- IP-CIDR,3.238.178.120/31,no-resolve
- IP-CIDR,3.238.178.128/27,no-resolve
- IP-CIDR,3.238.178.160/29,no-resolve
- IP-CIDR,3.238.178.168/30,no-resolve
- IP-CIDR,3.238.178.197/32,no-resolve
- IP-CIDR,3.238.178.198/31,no-resolve
- IP-CIDR,3.238.178.200/29,no-resolve
- IP-CIDR,3.238.178.208/28,no-resolve
- IP-CIDR,3.238.178.224/27,no-resolve
- IP-CIDR,3.238.207.0/26,no-resolve
- IP-CIDR,3.238.207.128/25,no-resolve
- IP-CIDR,3.238.208.0/23,no-resolve
- IP-CIDR,3.238.210.0/25,no-resolve
- IP-CIDR,3.238.212.0/22,no-resolve
- IP-CIDR,3.238.216.128/25,no-resolve
- IP-CIDR,3.239.152.0/31,no-resolve
- IP-CIDR,3.239.152.5/32,no-resolve
- IP-CIDR,3.239.152.6/31,no-resolve
- IP-CIDR,3.239.152.8/30,no-resolve
- IP-CIDR,3.239.152.12/31,no-resolve
- IP-CIDR,3.239.152.46/31,no-resolve
- IP-CIDR,3.239.152.48/28,no-resolve
- IP-CIDR,3.239.152.64/26,no-resolve
- IP-CIDR,3.239.152.128/29,no-resolve
- IP-CIDR,3.239.152.136/31,no-resolve
- IP-CIDR,3.239.153.0/24,no-resolve
- IP-CIDR,3.239.154.0/23,no-resolve
- IP-CIDR,3.239.156.0/31,no-resolve
- IP-CIDR,3.239.156.10/31,no-resolve
- IP-CIDR,3.239.156.100/30,no-resolve
- IP-CIDR,3.239.156.104/29,no-resolve
- IP-CIDR,3.239.156.112/29,no-resolve
- IP-CIDR,3.239.157.2/31,no-resolve
- IP-CIDR,3.239.157.4/30,no-resolve
- IP-CIDR,3.239.157.8/31,no-resolve
- IP-CIDR,3.239.157.19/32,no-resolve
- IP-CIDR,3.239.157.20/30,no-resolve
- IP-CIDR,3.239.157.24/29,no-resolve
- IP-CIDR,3.239.157.32/27,no-resolve
- IP-CIDR,3.239.157.64/27,no-resolve
- IP-CIDR,3.239.157.96/30,no-resolve
- IP-CIDR,3.239.157.188/30,no-resolve
- IP-CIDR,3.239.157.192/26,no-resolve
- IP-CIDR,3.248.180.40/29,no-resolve
- IP-CIDR,3.248.180.64/26,no-resolve
- IP-CIDR,3.248.180.128/25,no-resolve
- IP-CIDR,3.248.186.0/26,no-resolve
- IP-CIDR,3.248.186.64/29,no-resolve
- IP-CIDR,3.248.186.92/30,no-resolve
- IP-CIDR,3.248.186.128/25,no-resolve
- IP-CIDR,3.248.216.32/27,no-resolve
- IP-CIDR,3.248.244.240/30,no-resolve
- IP-CIDR,3.248.245.0/24,no-resolve
- IP-CIDR,3.248.246.0/23,no-resolve
- IP-CIDR,3.249.28.0/23,no-resolve
- IP-CIDR,3.251.56.0/24,no-resolve
- IP-CIDR,3.251.62.128/25,no-resolve
- IP-CIDR,3.251.94.0/24,no-resolve
- IP-CIDR,3.251.95.96/27,no-resolve
- IP-CIDR,3.251.95.128/27,no-resolve
- IP-CIDR,3.251.104.0/26,no-resolve
- IP-CIDR,3.251.104.128/25,no-resolve
- IP-CIDR,3.251.105.0/24,no-resolve
- IP-CIDR,3.251.109.92/30,no-resolve
- IP-CIDR,3.251.110.208/28,no-resolve
- IP-CIDR,3.251.110.224/28,no-resolve
- IP-CIDR,3.251.144.0/29,no-resolve
- IP-CIDR,3.251.148.120/29,no-resolve
- IP-CIDR,3.251.152.44/30,no-resolve
- IP-CIDR,13.36.18.0/28,no-resolve
- IP-CIDR,13.36.18.32/27,no-resolve
- IP-CIDR,13.36.18.64/27,no-resolve
- IP-CIDR,13.36.76.0/23,no-resolve
- IP-CIDR,13.36.78.0/24,no-resolve
- IP-CIDR,13.36.84.24/29,no-resolve
- IP-CIDR,13.36.84.32/30,no-resolve
- IP-CIDR,13.36.84.44/30,no-resolve
- IP-CIDR,13.36.84.48/28,no-resolve
- IP-CIDR,13.36.84.64/28,no-resolve
- IP-CIDR,13.36.84.112/29,no-resolve
- IP-CIDR,13.36.155.0/24,no-resolve
- IP-CIDR,13.38.132.0/22,no-resolve
- IP-CIDR,13.38.140.0/23,no-resolve
- IP-CIDR,13.40.204.0/22,no-resolve
- IP-CIDR,13.48.4.128/27,no-resolve
- IP-CIDR,13.48.4.160/28,no-resolve
- IP-CIDR,13.48.4.192/29,no-resolve
- IP-CIDR,13.48.4.200/30,no-resolve
- IP-CIDR,13.48.4.208/28,no-resolve
- IP-CIDR,13.48.4.224/29,no-resolve
- IP-CIDR,13.48.32.0/24,no-resolve
- IP-CIDR,13.48.74.0/24,no-resolve
- IP-CIDR,13.48.186.128/26,no-resolve
- IP-CIDR,13.49.42.0/23,no-resolve
- IP-CIDR,13.49.253.224/27,no-resolve
- IP-CIDR,13.51.29.0/26,no-resolve
- IP-CIDR,13.51.71.152/29,no-resolve
- IP-CIDR,13.51.71.160/30,no-resolve
- IP-CIDR,13.51.71.176/28,no-resolve
- IP-CIDR,13.51.71.192/28,no-resolve
- IP-CIDR,13.51.95.0/24,no-resolve
- IP-CIDR,13.51.96.0/23,no-resolve
- IP-CIDR,13.51.120.0/24,no-resolve
- IP-CIDR,13.51.253.80/29,no-resolve
- IP-CIDR,13.52.1.0/27,no-resolve
- IP-CIDR,13.52.1.32/29,no-resolve
- IP-CIDR,13.52.6.112/29,no-resolve
- IP-CIDR,13.52.32.96/27,no-resolve
- IP-CIDR,13.52.110.192/26,no-resolve
- IP-CIDR,13.52.146.128/28,no-resolve
- IP-CIDR,13.52.200.160/27,no-resolve
- IP-CIDR,13.52.201.0/24,no-resolve
- IP-CIDR,13.52.202.0/24,no-resolve
- IP-CIDR,13.52.232.224/27,no-resolve
- IP-CIDR,13.53.63.128/26,no-resolve
- IP-CIDR,13.53.63.192/27,no-resolve
- IP-CIDR,13.54.63.128/26,no-resolve
- IP-CIDR,13.55.255.216/29,no-resolve
- IP-CIDR,13.56.32.200/29,no-resolve
- IP-CIDR,13.56.112.168/29,no-resolve
- IP-CIDR,13.57.180.64/26,no-resolve
- IP-CIDR,13.57.180.176/28,no-resolve
- IP-CIDR,13.57.180.208/28,no-resolve
- IP-CIDR,13.59.250.0/26,no-resolve
- IP-CIDR,13.112.191.184/29,no-resolve
- IP-CIDR,13.113.196.64/26,no-resolve
- IP-CIDR,13.113.203.0/24,no-resolve
- IP-CIDR,13.124.145.16/28,no-resolve
- IP-CIDR,13.124.145.64/26,no-resolve
- IP-CIDR,13.124.199.0/24,no-resolve
- IP-CIDR,13.124.247.0/24,no-resolve
- IP-CIDR,13.126.23.136/29,no-resolve
- IP-CIDR,13.126.23.144/28,no-resolve
- IP-CIDR,13.126.23.160/27,no-resolve
- IP-CIDR,13.126.23.192/27,no-resolve
- IP-CIDR,13.126.243.0/24,no-resolve
- IP-CIDR,13.127.70.128/27,no-resolve
- IP-CIDR,13.127.70.160/29,no-resolve
- IP-CIDR,13.208.33.8/29,no-resolve
- IP-CIDR,13.208.33.16/28,no-resolve
- IP-CIDR,13.208.131.0/27,no-resolve
- IP-CIDR,13.208.131.32/28,no-resolve
- IP-CIDR,13.208.131.128/26,no-resolve
- IP-CIDR,13.208.131.192/27,no-resolve
- IP-CIDR,13.208.131.224/29,no-resolve
- IP-CIDR,13.208.131.232/30,no-resolve
- IP-CIDR,13.208.177.224/27,no-resolve
- IP-CIDR,13.208.180.0/24,no-resolve
- IP-CIDR,13.208.194.0/23,no-resolve
- IP-CIDR,13.208.217.64/26,no-resolve
- IP-CIDR,13.208.227.0/24,no-resolve
- IP-CIDR,13.208.228.0/25,no-resolve
- IP-CIDR,13.208.228.128/29,no-resolve
- IP-CIDR,13.208.228.136/30,no-resolve
- IP-CIDR,13.209.1.0/28,no-resolve
- IP-CIDR,13.209.1.56/29,no-resolve
- IP-CIDR,13.209.1.96/27,no-resolve
- IP-CIDR,13.209.71.128/27,no-resolve
- IP-CIDR,13.209.71.224/27,no-resolve
- IP-CIDR,13.210.2.192/26,no-resolve
- IP-CIDR,13.210.67.128/26,no-resolve
- IP-CIDR,13.211.12.160/27,no-resolve
- IP-CIDR,13.211.12.192/27,no-resolve
- IP-CIDR,13.211.12.248/29,no-resolve
- IP-CIDR,13.211.166.192/28,no-resolve
- IP-CIDR,13.212.209.94/31,no-resolve
- IP-CIDR,13.212.209.96/27,no-resolve
- IP-CIDR,13.212.209.128/26,no-resolve
- IP-CIDR,13.213.20.132/30,no-resolve
- IP-CIDR,13.213.20.136/29,no-resolve
- IP-CIDR,13.213.20.144/28,no-resolve
- IP-CIDR,13.213.20.160/28,no-resolve
- IP-CIDR,13.213.21.0/24,no-resolve
- IP-CIDR,13.213.22.0/23,no-resolve
- IP-CIDR,13.213.24.0/23,no-resolve
- IP-CIDR,13.213.75.224/29,no-resolve
- IP-CIDR,13.214.224.0/23,no-resolve
- IP-CIDR,13.228.69.0/24,no-resolve
- IP-CIDR,13.229.187.192/27,no-resolve
- IP-CIDR,13.229.187.232/29,no-resolve
- IP-CIDR,13.230.21.128/26,no-resolve
- IP-CIDR,13.230.21.224/27,no-resolve
- IP-CIDR,13.231.6.64/27,no-resolve
- IP-CIDR,13.231.6.104/29,no-resolve
- IP-CIDR,13.231.6.112/28,no-resolve
- IP-CIDR,13.231.6.192/28,no-resolve
- IP-CIDR,13.231.6.208/29,no-resolve
- IP-CIDR,13.232.67.128/26,no-resolve
- IP-CIDR,13.233.177.0/29,no-resolve
- IP-CIDR,13.233.177.32/27,no-resolve
- IP-CIDR,13.233.177.192/26,no-resolve
- IP-CIDR,13.234.221.136/29,no-resolve
- IP-CIDR,13.235.6.0/23,no-resolve
- IP-CIDR,13.235.197.96/27,no-resolve
- IP-CIDR,13.235.228.0/24,no-resolve
- IP-CIDR,13.236.8.0/25,no-resolve
- IP-CIDR,13.236.82.96/27,no-resolve
- IP-CIDR,13.236.82.128/27,no-resolve
- IP-CIDR,13.239.158.0/29,no-resolve
- IP-CIDR,13.244.33.0/25,no-resolve
- IP-CIDR,13.244.33.128/26,no-resolve
- IP-CIDR,13.244.121.196/30,no-resolve
- IP-CIDR,13.244.132.0/23,no-resolve
- IP-CIDR,13.244.202.40/29,no-resolve
- IP-CIDR,13.244.244.192/26,no-resolve
- IP-CIDR,13.245.1.32/27,no-resolve
- IP-CIDR,13.245.93.140/30,no-resolve
- IP-CIDR,13.245.93.160/29,no-resolve
- IP-CIDR,13.245.93.176/28,no-resolve
- IP-CIDR,13.245.93.192/28,no-resolve
- IP-CIDR,13.245.112.0/23,no-resolve
- IP-CIDR,13.245.114.0/24,no-resolve
- IP-CIDR,13.245.127.232/30,no-resolve
- IP-CIDR,13.245.155.128/27,no-resolve
- IP-CIDR,13.245.155.224/27,no-resolve
- IP-CIDR,13.245.166.128/29,no-resolve
- IP-CIDR,13.245.166.176/29,no-resolve
- IP-CIDR,13.246.70.0/23,no-resolve
- IP-CIDR,13.248.224.0/21,no-resolve
- IP-CIDR,13.248.232.0/23,no-resolve
- IP-CIDR,13.250.186.0/28,no-resolve
- IP-CIDR,13.250.186.16/29,no-resolve
- IP-CIDR,13.250.186.128/26,no-resolve
- IP-CIDR,13.250.186.192/28,no-resolve
- IP-CIDR,13.250.186.208/29,no-resolve
- IP-CIDR,15.152.10.0/24,no-resolve
- IP-CIDR,15.152.24.0/26,no-resolve
- IP-CIDR,15.152.24.128/29,no-resolve
- IP-CIDR,15.152.174.0/23,no-resolve
- IP-CIDR,15.152.176.0/22,no-resolve
- IP-CIDR,15.160.55.112/29,no-resolve
- IP-CIDR,15.161.66.0/25,no-resolve
- IP-CIDR,15.161.66.128/26,no-resolve
- IP-CIDR,15.161.135.64/26,no-resolve
- IP-CIDR,15.161.135.164/30,no-resolve
- IP-CIDR,15.161.140.0/23,no-resolve
- IP-CIDR,15.161.192.240/28,no-resolve
- IP-CIDR,15.161.247.64/26,no-resolve
- IP-CIDR,15.161.247.128/27,no-resolve
- IP-CIDR,15.164.156.0/23,no-resolve
- IP-CIDR,15.164.243.0/28,no-resolve
- IP-CIDR,15.164.243.32/27,no-resolve
- IP-CIDR,15.164.243.192/27,no-resolve
- IP-CIDR,15.165.224.0/23,no-resolve
- IP-CIDR,15.184.70.200/29,no-resolve
- IP-CIDR,15.184.70.224/29,no-resolve
- IP-CIDR,15.184.125.0/25,no-resolve
- IP-CIDR,15.184.125.128/26,no-resolve
- IP-CIDR,15.184.125.224/29,no-resolve
- IP-CIDR,15.184.125.232/30,no-resolve
- IP-CIDR,15.184.125.240/28,no-resolve
- IP-CIDR,15.184.153.0/28,no-resolve
- IP-CIDR,15.184.184.96/29,no-resolve
- IP-CIDR,15.185.33.32/27,no-resolve
- IP-CIDR,15.185.33.64/26,no-resolve
- IP-CIDR,15.185.91.32/27,no-resolve
- IP-CIDR,15.185.141.160/27,no-resolve
- IP-CIDR,15.185.144.0/23,no-resolve
- IP-CIDR,15.188.102.0/27,no-resolve
- IP-CIDR,15.188.184.0/24,no-resolve
- IP-CIDR,15.188.210.32/27,no-resolve
- IP-CIDR,15.188.210.64/27,no-resolve
- IP-CIDR,15.188.210.196/30,no-resolve
- IP-CIDR,15.188.210.200/30,no-resolve
- IP-CIDR,15.200.28.80/30,no-resolve
- IP-CIDR,15.200.28.88/29,no-resolve
- IP-CIDR,15.200.28.240/28,no-resolve
- IP-CIDR,15.200.141.0/25,no-resolve
- IP-CIDR,15.200.176.128/28,no-resolve
- IP-CIDR,15.205.82.0/23,no-resolve
- IP-CIDR,15.205.84.0/23,no-resolve
- IP-CIDR,15.207.13.128/25,no-resolve
- IP-CIDR,15.207.213.128/25,no-resolve
- IP-CIDR,15.222.16.8/29,no-resolve
- IP-CIDR,15.222.16.32/27,no-resolve
- IP-CIDR,15.222.16.96/27,no-resolve
- IP-CIDR,15.222.43.0/27,no-resolve
- IP-CIDR,15.222.43.64/26,no-resolve
- IP-CIDR,15.223.52.0/23,no-resolve
- IP-CIDR,15.223.100.0/24,no-resolve
- IP-CIDR,15.223.102.0/23,no-resolve
- IP-CIDR,15.228.72.64/26,no-resolve
- IP-CIDR,15.228.92.192/26,no-resolve
- IP-CIDR,15.228.97.0/24,no-resolve
- IP-CIDR,15.228.103.240/29,no-resolve
- IP-CIDR,15.228.104.0/23,no-resolve
- IP-CIDR,15.228.106.0/24,no-resolve
- IP-CIDR,15.228.107.0/27,no-resolve
- IP-CIDR,15.228.126.48/30,no-resolve
- IP-CIDR,15.228.126.72/30,no-resolve
- IP-CIDR,15.228.126.200/29,no-resolve
- IP-CIDR,15.228.129.0/24,no-resolve
- IP-CIDR,15.228.144.0/24,no-resolve
- IP-CIDR,15.228.151.0/24,no-resolve
- IP-CIDR,15.229.36.0/23,no-resolve
- IP-CIDR,15.229.40.0/23,no-resolve
- IP-CIDR,15.236.80.0/23,no-resolve
- IP-CIDR,16.16.2.0/23,no-resolve
- IP-CIDR,16.162.52.0/24,no-resolve
- IP-CIDR,16.162.162.96/29,no-resolve
- IP-CIDR,16.163.196.0/22,no-resolve
- IP-CIDR,16.163.206.0/23,no-resolve
- IP-CIDR,16.171.48.0/22,no-resolve
- IP-CIDR,18.102.2.0/23,no-resolve
- IP-CIDR,18.117.239.68/30,no-resolve
- IP-CIDR,18.130.91.144/29,no-resolve
- IP-CIDR,18.132.21.0/24,no-resolve
- IP-CIDR,18.132.22.0/23,no-resolve
- IP-CIDR,18.134.255.160/27,no-resolve
- IP-CIDR,18.134.255.192/26,no-resolve
- IP-CIDR,18.135.226.192/26,no-resolve
- IP-CIDR,18.136.1.192/26,no-resolve
- IP-CIDR,18.138.134.128/25,no-resolve
- IP-CIDR,18.138.244.0/23,no-resolve
- IP-CIDR,18.139.204.176/28,no-resolve
- IP-CIDR,18.139.204.192/27,no-resolve
- IP-CIDR,18.140.177.0/25,no-resolve
- IP-CIDR,18.141.66.248/29,no-resolve
- IP-CIDR,18.141.148.128/25,no-resolve
- IP-CIDR,18.141.150.0/23,no-resolve
- IP-CIDR,18.141.152.0/24,no-resolve
- IP-CIDR,18.141.154.0/23,no-resolve
- IP-CIDR,18.141.238.68/30,no-resolve
- IP-CIDR,18.144.76.32/29,no-resolve
- IP-CIDR,18.144.76.128/25,no-resolve
- IP-CIDR,18.144.158.0/27,no-resolve
- IP-CIDR,18.144.184.0/23,no-resolve
- IP-CIDR,18.156.52.0/24,no-resolve
- IP-CIDR,18.156.54.0/23,no-resolve
- IP-CIDR,18.162.127.0/26,no-resolve
- IP-CIDR,18.162.127.64/27,no-resolve
- IP-CIDR,18.162.189.0/24,no-resolve
- IP-CIDR,18.162.221.128/26,no-resolve
- IP-CIDR,18.162.221.192/27,no-resolve
- IP-CIDR,18.163.139.32/27,no-resolve
- IP-CIDR,18.163.201.96/27,no-resolve
- IP-CIDR,18.163.204.0/23,no-resolve
- IP-CIDR,18.166.237.64/26,no-resolve
- IP-CIDR,18.166.237.128/27,no-resolve
- IP-CIDR,18.167.88.72/29,no-resolve
- IP-CIDR,18.167.88.80/30,no-resolve
- IP-CIDR,18.167.88.96/27,no-resolve
- IP-CIDR,18.167.111.0/24,no-resolve
- IP-CIDR,18.167.112.0/23,no-resolve
- IP-CIDR,18.168.33.0/24,no-resolve
- IP-CIDR,18.168.34.0/23,no-resolve
- IP-CIDR,18.168.36.0/24,no-resolve
- IP-CIDR,18.168.37.0/27,no-resolve
- IP-CIDR,18.168.37.32/28,no-resolve
- IP-CIDR,18.168.37.48/30,no-resolve
- IP-CIDR,18.168.37.64/26,no-resolve
- IP-CIDR,18.168.37.136/29,no-resolve
- IP-CIDR,18.168.37.144/30,no-resolve
- IP-CIDR,18.168.37.160/27,no-resolve
- IP-CIDR,18.168.133.0/24,no-resolve
- IP-CIDR,18.169.230.136/30,no-resolve
- IP-CIDR,18.169.230.200/29,no-resolve
- IP-CIDR,18.176.203.120/30,no-resolve
- IP-CIDR,18.179.48.96/27,no-resolve
- IP-CIDR,18.179.48.128/27,no-resolve
- IP-CIDR,18.180.88.0/23,no-resolve
- IP-CIDR,18.180.178.0/24,no-resolve
- IP-CIDR,18.180.180.0/23,no-resolve
- IP-CIDR,18.182.96.64/26,no-resolve
- IP-CIDR,18.184.2.128/25,no-resolve
- IP-CIDR,18.184.138.224/27,no-resolve
- IP-CIDR,18.184.203.128/27,no-resolve
- IP-CIDR,18.188.9.0/26,no-resolve
- IP-CIDR,18.188.9.64/29,no-resolve
- IP-CIDR,18.188.9.80/28,no-resolve
- IP-CIDR,18.192.142.0/23,no-resolve
- IP-CIDR,18.196.161.0/26,no-resolve
- IP-CIDR,18.196.161.80/28,no-resolve
- IP-CIDR,18.196.161.184/29,no-resolve
- IP-CIDR,18.196.161.192/28,no-resolve
- IP-CIDR,18.200.212.0/23,no-resolve
- IP-CIDR,18.202.216.48/29,no-resolve
- IP-CIDR,18.206.107.24/29,no-resolve
- IP-CIDR,18.206.107.160/29,no-resolve
- IP-CIDR,18.209.113.64/27,no-resolve
- IP-CIDR,18.209.113.240/28,no-resolve
- IP-CIDR,18.213.156.96/28,no-resolve
- IP-CIDR,18.216.170.128/25,no-resolve
- IP-CIDR,18.217.41.64/26,no-resolve
- IP-CIDR,18.217.41.192/27,no-resolve
- IP-CIDR,18.228.1.0/28,no-resolve
- IP-CIDR,18.228.1.16/29,no-resolve
- IP-CIDR,18.228.70.32/29,no-resolve
- IP-CIDR,18.229.37.0/26,no-resolve
- IP-CIDR,18.229.70.96/27,no-resolve
- IP-CIDR,18.229.99.0/24,no-resolve
- IP-CIDR,18.229.100.0/26,no-resolve
- IP-CIDR,18.229.100.112/29,no-resolve
- IP-CIDR,18.229.100.128/25,no-resolve
- IP-CIDR,18.229.220.192/26,no-resolve
- IP-CIDR,18.230.46.0/26,no-resolve
- IP-CIDR,18.230.54.0/23,no-resolve
- IP-CIDR,18.230.103.0/24,no-resolve
- IP-CIDR,18.230.104.0/23,no-resolve
- IP-CIDR,18.231.105.0/28,no-resolve
- IP-CIDR,18.231.105.128/26,no-resolve
- IP-CIDR,18.231.194.8/29,no-resolve
- IP-CIDR,18.232.1.32/27,no-resolve
- IP-CIDR,18.232.1.64/26,no-resolve
- IP-CIDR,18.232.1.128/25,no-resolve
- IP-CIDR,18.236.61.0/25,no-resolve
- IP-CIDR,18.237.140.160/29,no-resolve
- IP-CIDR,18.252.4.0/30,no-resolve
- IP-CIDR,18.252.4.16/29,no-resolve
- IP-CIDR,18.252.56.0/23,no-resolve
- IP-CIDR,18.252.145.156/30,no-resolve
- IP-CIDR,18.252.145.160/28,no-resolve
- IP-CIDR,18.252.145.192/27,no-resolve
- IP-CIDR,18.253.186.0/24,no-resolve
- IP-CIDR,23.246.0.0/18,no-resolve
- IP-CIDR,34.195.252.0/24,no-resolve
- IP-CIDR,34.216.51.0/25,no-resolve
- IP-CIDR,34.216.226.136/29,no-resolve
- IP-CIDR,34.216.226.144/28,no-resolve
- IP-CIDR,34.216.226.192/26,no-resolve
- IP-CIDR,34.217.141.0/27,no-resolve
- IP-CIDR,34.217.141.32/28,no-resolve
- IP-CIDR,34.217.141.224/27,no-resolve
- IP-CIDR,34.218.119.32/27,no-resolve
- IP-CIDR,34.218.119.80/28,no-resolve
- IP-CIDR,34.218.119.96/27,no-resolve
- IP-CIDR,34.218.119.128/27,no-resolve
- IP-CIDR,34.218.216.160/27,no-resolve
- IP-CIDR,34.218.216.208/28,no-resolve
- IP-CIDR,34.218.216.240/28,no-resolve
- IP-CIDR,34.221.183.32/27,no-resolve
- IP-CIDR,34.221.183.224/27,no-resolve
- IP-CIDR,34.222.66.64/27,no-resolve
- IP-CIDR,34.223.12.224/27,no-resolve
- IP-CIDR,34.223.21.192/26,no-resolve
- IP-CIDR,34.223.22.176/29,no-resolve
- IP-CIDR,34.223.37.224/27,no-resolve
- IP-CIDR,34.223.45.128/25,no-resolve
- IP-CIDR,34.223.46.0/24,no-resolve
- IP-CIDR,34.223.47.0/27,no-resolve
- IP-CIDR,34.223.47.128/25,no-resolve
- IP-CIDR,34.223.49.128/25,no-resolve
- IP-CIDR,34.223.51.0/26,no-resolve
- IP-CIDR,34.223.64.224/27,no-resolve
- IP-CIDR,34.223.68.0/22,no-resolve
- IP-CIDR,34.223.72.0/23,no-resolve
- IP-CIDR,34.223.74.0/25,no-resolve
- IP-CIDR,34.223.80.192/26,no-resolve
- IP-CIDR,34.223.92.0/25,no-resolve
- IP-CIDR,34.223.95.176/28,no-resolve
- IP-CIDR,34.223.112.0/26,no-resolve
- IP-CIDR,34.223.112.64/27,no-resolve
- IP-CIDR,34.223.112.128/25,no-resolve
- IP-CIDR,34.226.14.0/24,no-resolve
- IP-CIDR,34.226.106.180/32,no-resolve
- IP-CIDR,34.228.4.208/28,no-resolve
- IP-CIDR,34.231.114.205/32,no-resolve
- IP-CIDR,34.231.213.21/32,no-resolve
- IP-CIDR,34.236.241.44/30,no-resolve
- IP-CIDR,34.238.188.0/29,no-resolve
- IP-CIDR,34.242.153.128/26,no-resolve
- IP-CIDR,34.242.153.224/27,no-resolve
- IP-CIDR,34.245.82.0/26,no-resolve
- IP-CIDR,34.245.205.0/27,no-resolve
- IP-CIDR,34.245.205.64/26,no-resolve
- IP-CIDR,34.245.205.128/28,no-resolve
- IP-CIDR,34.245.205.160/27,no-resolve
- IP-CIDR,34.250.63.248/29,no-resolve
- IP-CIDR,35.72.36.140/30,no-resolve
- IP-CIDR,35.72.36.144/29,no-resolve
- IP-CIDR,35.72.36.192/26,no-resolve
- IP-CIDR,35.72.37.0/24,no-resolve
- IP-CIDR,35.72.164.212/30,no-resolve
- IP-CIDR,35.72.164.232/29,no-resolve
- IP-CIDR,35.72.164.240/28,no-resolve
- IP-CIDR,35.72.255.0/24,no-resolve
- IP-CIDR,35.73.4.0/24,no-resolve
- IP-CIDR,35.73.115.0/28,no-resolve
- IP-CIDR,35.73.115.128/25,no-resolve
- IP-CIDR,35.74.77.240/30,no-resolve
- IP-CIDR,35.75.130.0/24,no-resolve
- IP-CIDR,35.75.131.0/26,no-resolve
- IP-CIDR,35.75.131.80/29,no-resolve
- IP-CIDR,35.77.112.0/22,no-resolve
- IP-CIDR,35.80.35.0/24,no-resolve
- IP-CIDR,35.80.36.192/27,no-resolve
- IP-CIDR,35.80.36.224/28,no-resolve
- IP-CIDR,35.80.88.0/21,no-resolve
- IP-CIDR,35.82.136.192/29,no-resolve
- IP-CIDR,35.83.248.40/29,no-resolve
- IP-CIDR,35.84.36.0/30,no-resolve
- IP-CIDR,35.152.74.128/29,no-resolve
- IP-CIDR,35.152.74.136/30,no-resolve
- IP-CIDR,35.152.74.144/28,no-resolve
- IP-CIDR,35.152.74.160/28,no-resolve
- IP-CIDR,35.152.86.0/23,no-resolve
- IP-CIDR,35.152.88.0/24,no-resolve
- IP-CIDR,35.157.127.248/29,no-resolve
- IP-CIDR,35.158.127.64/26,no-resolve
- IP-CIDR,35.158.136.0/24,no-resolve
- IP-CIDR,35.162.63.192/26,no-resolve
- IP-CIDR,35.167.191.128/26,no-resolve
- IP-CIDR,35.168.231.216/29,no-resolve
- IP-CIDR,35.170.83.0/25,no-resolve
- IP-CIDR,35.170.83.144/28,no-resolve
- IP-CIDR,35.170.83.160/27,no-resolve
- IP-CIDR,35.170.83.192/26,no-resolve
- IP-CIDR,35.171.100.0/28,no-resolve
- IP-CIDR,35.171.100.64/26,no-resolve
- IP-CIDR,35.171.100.128/26,no-resolve
- IP-CIDR,35.171.100.208/28,no-resolve
- IP-CIDR,35.171.100.224/27,no-resolve
- IP-CIDR,35.172.155.96/27,no-resolve
- IP-CIDR,35.172.155.192/27,no-resolve
- IP-CIDR,35.176.32.0/24,no-resolve
- IP-CIDR,35.176.92.32/29,no-resolve
- IP-CIDR,35.177.154.128/26,no-resolve
- IP-CIDR,35.177.154.192/29,no-resolve
- IP-CIDR,35.179.42.0/23,no-resolve
- IP-CIDR,35.180.1.8/29,no-resolve
- IP-CIDR,35.180.1.16/28,no-resolve
- IP-CIDR,35.180.1.32/27,no-resolve
- IP-CIDR,35.180.112.80/29,no-resolve
- IP-CIDR,35.180.112.128/26,no-resolve
- IP-CIDR,35.181.128.0/24,no-resolve
- IP-CIDR,35.182.14.48/29,no-resolve
- IP-CIDR,35.182.14.208/28,no-resolve
- IP-CIDR,35.183.38.0/26,no-resolve
- IP-CIDR,35.183.38.64/29,no-resolve
- IP-CIDR,35.183.92.176/29,no-resolve
- IP-CIDR,35.183.255.0/24,no-resolve
- IP-CIDR,37.77.184.0/21,no-resolve
- IP-CIDR,38.72.126.0/24,no-resolve
- IP-CIDR,44.192.134.240/28,no-resolve
- IP-CIDR,44.192.135.0/24,no-resolve
- IP-CIDR,44.192.140.64/28,no-resolve
- IP-CIDR,44.192.140.112/28,no-resolve
- IP-CIDR,44.192.140.128/29,no-resolve
- IP-CIDR,44.192.245.160/28,no-resolve
- IP-CIDR,44.192.255.128/28,no-resolve
- IP-CIDR,44.194.111.224/30,no-resolve
- IP-CIDR,44.227.178.0/24,no-resolve
- IP-CIDR,44.233.54.0/23,no-resolve
- IP-CIDR,44.234.28.0/22,no-resolve
- IP-CIDR,44.234.54.0/23,no-resolve
- IP-CIDR,44.234.73.116/30,no-resolve
- IP-CIDR,44.234.73.120/30,no-resolve
- IP-CIDR,44.234.90.252/30,no-resolve
- IP-CIDR,44.234.108.128/25,no-resolve
- IP-CIDR,44.242.143.180/31,no-resolve
- IP-CIDR,44.242.143.224/30,no-resolve
- IP-CIDR,44.242.143.242/31,no-resolve
- IP-CIDR,44.242.143.244/30,no-resolve
- IP-CIDR,44.242.143.248/29,no-resolve
- IP-CIDR,44.242.161.0/28,no-resolve
- IP-CIDR,44.242.161.16/31,no-resolve
- IP-CIDR,44.242.161.20/30,no-resolve
- IP-CIDR,44.242.176.192/26,no-resolve
- IP-CIDR,44.242.177.0/25,no-resolve
- IP-CIDR,44.242.177.128/27,no-resolve
- IP-CIDR,44.242.178.0/23,no-resolve
- IP-CIDR,44.242.180.0/24,no-resolve
- IP-CIDR,44.242.181.0/27,no-resolve
- IP-CIDR,44.242.181.32/28,no-resolve
- IP-CIDR,45.57.0.0/17,no-resolve
- IP-CIDR,52.15.127.128/26,no-resolve
- IP-CIDR,52.15.247.208/29,no-resolve
- IP-CIDR,52.19.124.0/23,no-resolve
- IP-CIDR,52.23.61.0/24,no-resolve
- IP-CIDR,52.23.62.0/24,no-resolve
- IP-CIDR,52.43.76.88/29,no-resolve
- IP-CIDR,52.46.0.0/22,no-resolve
- IP-CIDR,52.46.4.0/23,no-resolve
- IP-CIDR,52.46.16.0/20,no-resolve
- IP-CIDR,52.46.32.0/19,no-resolve
- IP-CIDR,52.47.73.72/29,no-resolve
- IP-CIDR,52.47.73.160/27,no-resolve
- IP-CIDR,52.47.139.0/24,no-resolve
- IP-CIDR,52.52.191.128/26,no-resolve
- IP-CIDR,52.55.191.224/27,no-resolve
- IP-CIDR,52.56.127.0/25,no-resolve
- IP-CIDR,52.57.254.0/24,no-resolve
- IP-CIDR,52.59.127.0/24,no-resolve
- IP-CIDR,52.61.40.104/29,no-resolve
- IP-CIDR,52.61.193.0/24,no-resolve
- IP-CIDR,52.66.194.128/26,no-resolve
- IP-CIDR,52.76.127.0/24,no-resolve
- IP-CIDR,52.78.247.128/26,no-resolve
- IP-CIDR,52.82.128.0/23,no-resolve
- IP-CIDR,52.82.134.0/23,no-resolve
- IP-CIDR,52.199.127.192/26,no-resolve
- IP-CIDR,52.212.248.0/26,no-resolve
- IP-CIDR,52.215.218.64/28,no-resolve
- IP-CIDR,52.215.218.112/28,no-resolve
- IP-CIDR,52.220.191.0/26,no-resolve
- IP-CIDR,52.221.221.128/29,no-resolve
- IP-CIDR,54.153.254.0/24,no-resolve
- IP-CIDR,54.182.128.0/20,no-resolve
- IP-CIDR,54.182.144.0/21,no-resolve
- IP-CIDR,54.182.154.0/23,no-resolve
- IP-CIDR,54.182.156.0/22,no-resolve
- IP-CIDR,54.182.160.0/21,no-resolve
- IP-CIDR,54.182.172.0/22,no-resolve
- IP-CIDR,54.182.176.0/21,no-resolve
- IP-CIDR,54.182.184.0/22,no-resolve
- IP-CIDR,54.182.188.0/23,no-resolve
- IP-CIDR,54.182.224.0/21,no-resolve
- IP-CIDR,54.182.240.0/21,no-resolve
- IP-CIDR,54.182.248.0/22,no-resolve
- IP-CIDR,54.183.255.128/26,no-resolve
- IP-CIDR,54.190.198.32/28,no-resolve
- IP-CIDR,54.228.16.0/26,no-resolve
- IP-CIDR,54.232.40.64/26,no-resolve
- IP-CIDR,54.233.204.0/24,no-resolve
- IP-CIDR,54.233.255.128/26,no-resolve
- IP-CIDR,54.239.134.0/23,no-resolve
- IP-CIDR,54.239.170.0/23,no-resolve
- IP-CIDR,54.239.204.0/22,no-resolve
- IP-CIDR,54.239.208.0/21,no-resolve
- IP-CIDR,54.241.32.64/26,no-resolve
- IP-CIDR,54.243.31.192/26,no-resolve
- IP-CIDR,54.244.46.0/23,no-resolve
- IP-CIDR,54.244.52.192/26,no-resolve
- IP-CIDR,54.245.168.0/26,no-resolve
- IP-CIDR,54.248.220.0/26,no-resolve
- IP-CIDR,54.250.251.0/24,no-resolve
- IP-CIDR,54.250.253.192/26,no-resolve
- IP-CIDR,54.251.31.128/26,no-resolve
- IP-CIDR,54.252.79.128/26,no-resolve
- IP-CIDR,54.252.254.192/26,no-resolve
- IP-CIDR,54.255.254.192/26,no-resolve
- IP-CIDR,64.120.128.0/17,no-resolve
- IP-CIDR,65.0.192.176/28,no-resolve
- IP-CIDR,65.0.192.224/27,no-resolve
- IP-CIDR,65.0.234.0/26,no-resolve
- IP-CIDR,65.1.103.192/29,no-resolve
- IP-CIDR,65.1.103.200/30,no-resolve
- IP-CIDR,65.1.103.208/28,no-resolve
- IP-CIDR,65.1.103.224/28,no-resolve
- IP-CIDR,65.1.170.0/23,no-resolve
- IP-CIDR,65.1.172.0/22,no-resolve
- IP-CIDR,66.197.128.0/17,no-resolve
- IP-CIDR,69.53.224.0/19,no-resolve
- IP-CIDR,70.232.86.124/31,no-resolve
- IP-CIDR,70.232.86.126/32,no-resolve
- IP-CIDR,76.223.95.0/24,no-resolve
- IP-CIDR,76.223.96.0/21,no-resolve
- IP-CIDR,76.223.104.0/24,no-resolve
- IP-CIDR,99.77.55.0/30,no-resolve
- IP-CIDR,99.77.55.12/30,no-resolve
- IP-CIDR,99.77.55.24/30,no-resolve
- IP-CIDR,99.77.55.253/32,no-resolve
- IP-CIDR,99.77.55.254/31,no-resolve
- IP-CIDR,99.78.238.251/32,no-resolve
- IP-CIDR,99.78.238.253/32,no-resolve
- IP-CIDR,99.78.238.255/32,no-resolve
- IP-CIDR,99.79.20.192/26,no-resolve
- IP-CIDR,99.79.126.0/24,no-resolve
- IP-CIDR,99.79.169.0/24,no-resolve
- IP-CIDR,99.80.34.48/28,no-resolve
- IP-CIDR,99.80.34.64/26,no-resolve
- IP-CIDR,99.80.88.0/25,no-resolve
- IP-CIDR,103.87.204.0/22,no-resolve
- IP-CIDR,107.23.255.0/26,no-resolve
- IP-CIDR,108.128.160.0/23,no-resolve
- IP-CIDR,108.128.162.0/24,no-resolve
- IP-CIDR,108.136.154.16/28,no-resolve
- IP-CIDR,108.136.154.32/27,no-resolve
- IP-CIDR,108.175.32.0/20,no-resolve
- IP-CIDR,130.176.0.0/18,no-resolve
- IP-CIDR,130.176.64.0/21,no-resolve
- IP-CIDR,130.176.72.0/22,no-resolve
- IP-CIDR,130.176.76.0/24,no-resolve
- IP-CIDR,130.176.78.0/23,no-resolve
- IP-CIDR,130.176.80.0/22,no-resolve
- IP-CIDR,130.176.86.0/23,no-resolve
- IP-CIDR,130.176.88.0/21,no-resolve
- IP-CIDR,130.176.96.0/19,no-resolve
- IP-CIDR,130.176.128.0/21,no-resolve
- IP-CIDR,130.176.136.0/23,no-resolve
- IP-CIDR,130.176.140.0/22,no-resolve
- IP-CIDR,130.176.144.0/20,no-resolve
- IP-CIDR,130.176.160.0/19,no-resolve
- IP-CIDR,157.175.102.96/27,no-resolve
- IP-CIDR,157.175.102.128/26,no-resolve
- IP-CIDR,157.175.140.0/23,no-resolve
- IP-CIDR,157.175.255.0/24,no-resolve
- IP-CIDR,157.241.2.0/23,no-resolve
- IP-CIDR,160.1.128.0/24,no-resolve
- IP-CIDR,176.34.159.192/26,no-resolve
- IP-CIDR,177.71.207.128/26,no-resolve
- IP-CIDR,185.2.220.0/22,no-resolve
- IP-CIDR,185.9.188.0/22,no-resolve
- IP-CIDR,192.173.64.0/18,no-resolve
- IP-CIDR,198.38.96.0/19,no-resolve
- IP-CIDR,198.45.48.0/20,no-resolve
- IP-CIDR,204.246.166.0/24,no-resolve
- IP-CIDR,205.251.218.0/24,no-resolve
- IP-CIDR,208.75.76.0/22,no-resolve
- IP-CIDR,208.75.76.0/22,no-resolve
- IP-CIDR,34.210.42.111/32,no-resolve
- IP-CIDR,52.89.124.203/32,no-resolve
- IP-CIDR,54.148.37.5/32,no-resolve

View File

@ -132,7 +132,6 @@ payload:
- DOMAIN-SUFFIX,store.videojj.com
- DOMAIN-SUFFIX,v2.da.mgtv.com
- DOMAIN-SUFFIX,va.videojj.com
- DOMAIN-SUFFIX,videojj.com
- DOMAIN-SUFFIX,web.da.mgtv.com
- DOMAIN-SUFFIX,x.da.hunantv.com
- DOMAIN-SUFFIX,x.da.mgtv.com
@ -1423,6 +1422,7 @@ payload:
- DOMAIN-SUFFIX,am.zdnet.com.cn
- DOMAIN-SUFFIX,am15.net
- DOMAIN-SUFFIX,amazingmagics.com
- DOMAIN-SUFFIX,amazon-adsystem.com
- DOMAIN-SUFFIX,amdc.m.taobao.com
- DOMAIN-SUFFIX,amfi.gou.sogou.com
- DOMAIN-SUFFIX,amiok.org
@ -1585,6 +1585,7 @@ payload:
- DOMAIN-SUFFIX,apps2.outfit7.com
- DOMAIN-SUFFIX,appsdk.tanv.com
- DOMAIN-SUFFIX,appservices.comcsoft.com
- DOMAIN-SUFFIX,appsflyer.com
- DOMAIN-SUFFIX,appspromote.wostore.cn
- DOMAIN-SUFFIX,appsrv1.madserving.com
- DOMAIN-SUFFIX,appsrv4.madserving.com

View File

@ -1,7 +1,5 @@
payload:
# > Telegram
# - PROCESS-NAME,org.telegram.messenger
# - PROCESS-NAME,Telegram
- DOMAIN-SUFFIX,t.me
- DOMAIN-SUFFIX,tx.me
- DOMAIN-SUFFIX,tdesktop.com
@ -9,12 +7,17 @@ payload:
- DOMAIN-SUFFIX,telegram.me
- DOMAIN-SUFFIX,telegram.org
- DOMAIN-SUFFIX,telegram-cdn.org
- IP-CIDR,91.105.192.0/23,no-resolve
- IP-CIDR,91.108.56.0/22,no-resolve
- IP-CIDR,91.108.4.0/22,no-resolve
- IP-CIDR,91.108.8.0/22,no-resolve
- IP-CIDR,91.108.12.0/22,no-resolve
- IP-CIDR,91.108.16.0/22,no-resolve
- IP-CIDR,91.108.56.0/22,no-resolve
- IP-CIDR,91.108.20.0/22,no-resolve
- IP-CIDR,149.154.160.0/20,no-resolve
- IP-CIDR,185.76.151.0/24,no-resolve
- IP-CIDR6,2001:67c:4e8::/48,no-resolve
- IP-CIDR6,2001:b28:f23d::/48,no-resolve
- IP-CIDR6,2001:b28:f23f::/48,no-resolve
- IP-CIDR6,2001:67c:4e8::/48,no-resolve
- IP-CIDR6,2a0a:f280::/32,no-resolve

View File

@ -1,4 +1,5 @@
#!/bin/sh
#!/bin/bash
. /lib/functions.sh
uci -q delete ucitrack.@openclash[-1]
uci -q add ucitrack openclash
@ -32,6 +33,8 @@ cp -f "/etc/openclash/custom/openclash_sniffing_domain_filter.yaml" "/usr/share/
cp -f "/etc/openclash/custom/openclash_sniffing_port_filter.yaml" "/usr/share/openclash/backup/openclash_sniffing_port_filter.yaml" >/dev/null 2>&1
cp -f "/etc/openclash/custom/openclash_custom_localnetwork_ipv4.list" "/usr/share/openclash/backup/openclash_custom_localnetwork_ipv4.list" >/dev/null 2>&1
cp -f "/etc/openclash/custom/openclash_custom_localnetwork_ipv6.list" "/usr/share/openclash/backup/openclash_custom_localnetwork_ipv6.list" >/dev/null 2>&1
cp -f "/etc/openclash/custom/openclash_custom_chnroute_pass.list" "/usr/share/openclash/backup/openclash_custom_chnroute_pass.list" >/dev/null 2>&1
cp -f "/etc/openclash/custom/openclash_custom_chnroute6_pass.list" "/usr/share/openclash/backup/openclash_custom_chnroute6_pass.list" >/dev/null 2>&1
mkdir -p /lib/upgrade/keep.d
cat > "/lib/upgrade/keep.d/luci-app-openclash" <<-EOF
@ -162,6 +165,31 @@ end
EOF
fi
#Set authentication
auth_info_get()
{
local section="$1"
config_get_bool "enabled" "$section" "enabled" "1"
if [ "$enabled" == "1" ]; then
auth_cfg=false
fi
return
}
auth_cfg=true
config_load "openclash"
config_foreach auth_info_get "authentication"
if $auth_cfg; then
uci_name_tmp=$(uci add openclash authentication)
uci_set="uci -q set openclash.$uci_name_tmp."
${uci_set}enabled="1"
${uci_set}username="Clash"
${uci_set}password="$(tr -cd 'a-zA-Z0-9' </dev/urandom 2>/dev/null| head -c8 || date +%N| md5sum |head -c8)"
fi
uci -q set openclash.config.enable=0
uci -q commit openclash

View File

@ -0,0 +1,5 @@
module YAML
class << self
alias_method :load, :unsafe_load if YAML.respond_to? :unsafe_load
end
end

View File

@ -76,7 +76,7 @@ config_cus_up()
if [ -z "$subscribe_url_param" ]; then
if [ -n "$key_match_param" ] || [ -n "$key_ex_match_param" ]; then
LOG_OUT "Config File【$name】is Replaced Successfully, Start Picking Nodes..."
ruby -ryaml -E UTF-8 -e "
ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "
begin
Value = YAML.load_file('$CONFIG_FILE');
if Value.has_key?('proxies') and not Value['proxies'].to_a.empty? then
@ -170,7 +170,7 @@ config_su_check()
cp "$CFG_FILE" "$BACKPACK_FILE"
#保留规则部分
if [ "$servers_update" -eq 1 ] && [ "$only_download" -eq 0 ]; then
ruby -ryaml -E UTF-8 -e "
ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "
Value = YAML.load_file('$CONFIG_FILE');
Value_1 = YAML.load_file('$CFG_FILE');
if Value.key?('rules') or Value.key?('script') or Value.key?('rule-providers') then
@ -248,7 +248,7 @@ change_dns()
field_name_check()
{
#检查field名称不兼容旧写法
ruby -ryaml -E UTF-8 -e "
ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "
Value = YAML.load_file('$CFG_FILE');
if Value.key?('Proxy') or Value.key?('Proxy Group') or Value.key?('Rule') or Value.key?('rule-provider') then
if Value.key?('Proxy') then
@ -311,7 +311,7 @@ EOF
config_download
if [ "$?" -eq 0 ] && [ -s "$CFG_FILE" ]; then
ruby -ryaml -E UTF-8 -e "
ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "
begin
YAML.load_file('$CFG_FILE');
rescue Exception => e
@ -489,7 +489,7 @@ sub_info_get()
config_download
if [ "$?" -eq 0 ] && [ -s "$CFG_FILE" ]; then
ruby -ryaml -E UTF-8 -e "
ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "
begin
YAML.load_file('$CFG_FILE');
rescue Exception => e

View File

@ -119,10 +119,10 @@ ruby: $(ts_re "$(opkg status ruby 2>/dev/null |grep 'Status' |awk -F ': ' '{prin
ruby-yaml: $(ts_re "$(opkg status ruby-yaml 2>/dev/null |grep 'Status' |awk -F ': ' '{print $2}' 2>/dev/null)")
ruby-psych: $(ts_re "$(opkg status ruby-psych 2>/dev/null |grep 'Status' |awk -F ': ' '{print $2}' 2>/dev/null)")
ruby-pstore: $(ts_re "$(opkg status ruby-pstore 2>/dev/null |grep 'Status' |awk -F ': ' '{print $2}' 2>/dev/null)")
ruby-dbm: $(ts_re "$(opkg status ruby-dbm 2>/dev/null |grep 'Status' |awk -F ': ' '{print $2}' 2>/dev/null)")
kmod-tun(TUN模式): $(ts_re "$(opkg status kmod-tun 2>/dev/null |grep 'Status' |awk -F ': ' '{print $2}' 2>/dev/null)")
luci-compat(Luci-19.07): $(ts_re "$(opkg status luci-compat 2>/dev/null |grep 'Status' |awk -F ': ' '{print $2}' 2>/dev/null)")
kmod-inet-diag(PROCESS-NAME): $(ts_re "$(opkg status kmod-inet-diag 2>/dev/null |grep 'Status' |awk -F ': ' '{print $2}' 2>/dev/null)")
unzip: $(ts_re "$(opkg status unzip 2>/dev/null |grep 'Status' |awk -F ': ' '{print $2}' 2>/dev/null)")
EOF
#core

View File

@ -81,7 +81,7 @@
fi
if [ "$?" -eq "0" ] && [ -s "/tmp/rules.yaml" ]; then
LOG_OUT "Download Successful, Start Preprocessing Rule File..."
ruby -ryaml -E UTF-8 -e "
ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "
begin
YAML.load_file('/tmp/rules.yaml');
rescue Exception => e
@ -111,7 +111,7 @@
del_lock
exit 0
#校验是否含有新策略组
elif ! "$(ruby -ryaml -E UTF-8 -e "
elif ! "$(ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "
Value = YAML.load_file('/usr/share/openclash/res/${rule_name}.yaml');
Value_1 = YAML.load_file('/tmp/rules.yaml');
OLD_GROUP = Value['rules'].collect{|x| x.split(',')[2] or x.split(',')[1]}.uniq;

View File

@ -217,7 +217,7 @@ function unlock_auto_select()
--loop proxy test
for i = 1, #(value.all) do
while true do
if value.all[i] == "REJECT" or value.all[i] == "DIRECT" then
if value.all[i] == "REJECT" then
break
else
get_proxy(info, value.all[i], value.name)
@ -251,7 +251,7 @@ function unlock_auto_select()
table.insert(tested_proxy, proxy)
end
while true do
if proxy == "REJECT" or proxy == "DIRECT" or get_group_now(info, proxy) == "REJECT" or get_group_now(info, proxy) == "DIRECT" then
if proxy == "REJECT" or get_group_now(info, proxy) == "REJECT" then
break
else
luci.sys.exec(string.format("curl -sL -m 3 --retry 2 -w %%{http_code} -o /dev/null -H 'Authorization: Bearer %s' -H 'Content-Type:application/json' -X PUT -d '{\"name\":\"%s\"}' http://%s:%s/proxies/%s", passwd, proxy, ip, port, urlencode(group_name)))
@ -531,7 +531,7 @@ function get_auth_info()
ip = luci.sys.exec("uci -q get network.lan.ipaddr |awk -F '/' '{print $1}' 2>/dev/null |tr -d '\n'")
if not ip or ip == "" then
ip = luci.sys.exec("ip address show $(uci -q -p /tmp/state get network.lan.ifname) | grep -w 'inet' 2>/dev/null |grep -Eo 'inet [0-9\.]+' | awk '{print $2}' | tr -d '\n'")
ip = luci.sys.exec("ip address show $(uci -q -p /tmp/state get network.lan.ifname || uci -q -p /tmp/state get network.lan.device) | grep -w 'inet' 2>/dev/null |grep -Eo 'inet [0-9\.]+' | awk '{print $2}' | tr -d '\n'")
end
if not ip or ip == "" then

View File

@ -151,336 +151,336 @@ rule-providers:
Reject:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Reject.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Reject.yaml
path: "./Rules/Reject"
interval: 86400
Special:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Special.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Special.yaml
path: "./Rules/Special"
interval: 86400
Netflix:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Netflix.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Netflix.yaml
path: "./Rules/Media/Netflix"
interval: 86400
Spotify:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Spotify.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Spotify.yaml
path: "./Rules/Media/Spotify"
interval: 86400
YouTube:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/YouTube.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/YouTube.yaml
path: "./Rules/Media/YouTube"
interval: 86400
Bilibili:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Bilibili.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Bilibili.yaml
path: "./Rules/Media/Bilibili"
interval: 86400
IQ:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/IQ.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/IQ.yaml
path: "./Rules/Media/IQI"
interval: 86400
IQIYI:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/IQIYI.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/IQIYI.yaml
path: "./Rules/Media/IQYI"
interval: 86400
Letv:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Letv.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Letv.yaml
path: "./Rules/Media/Letv"
interval: 86400
Netease Music:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Netease%20Music.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Netease%20Music.yaml
path: "./Rules/Media/Netease_Music"
interval: 86400
Tencent Video:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Tencent%20Video.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Tencent%20Video.yaml
path: "./Rules/Media/Tencent_Video"
interval: 86400
Youku:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Youku.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Youku.yaml
path: "./Rules/Media/Youku"
interval: 86400
WeTV:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/WeTV.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/WeTV.yaml
path: "./Rules/Media/WeTV"
interval: 86400
ABC:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/ABC.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/ABC.yaml
path: "./Rules/Media/ABC"
interval: 86400
Abema TV:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Abema%20TV.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Abema%20TV.yaml
path: "./Rules/Media/Abema_TV"
interval: 86400
Amazon:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Amazon.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Amazon.yaml
path: "./Rules/Media/Amazon"
interval: 86400
Apple News:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Apple%20News.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Apple%20News.yaml
path: "./Rules/Media/Apple_News"
interval: 86400
Apple TV:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Apple%20TV.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Apple%20TV.yaml
path: "./Rules/Media/Apple_TV"
interval: 86400
Bahamut:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Bahamut.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Bahamut.yaml
path: "./Rules/Media/Bahamut"
interval: 86400
BBC iPlayer:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/BBC%20iPlayer.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/BBC%20iPlayer.yaml
path: "./Rules/Media/BBC_iPlayer"
interval: 86400
DAZN:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/DAZN.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/DAZN.yaml
path: "./Rules/Media/DAZN"
interval: 86400
Discovery Plus:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Discovery%20Plus.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Discovery%20Plus.yaml
path: "./Rules/Media/Discovery_Plus"
interval: 86400
Disney Plus:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Disney%20Plus.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Disney%20Plus.yaml
path: "./Rules/Media/Disney_Plus"
interval: 86400
encoreTVB:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/encoreTVB.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/encoreTVB.yaml
path: "./Rules/Media/encoreTVB"
interval: 86400
F1 TV:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/F1%20TV.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/F1%20TV.yaml
path: "./Rules/Media/F1_TV"
interval: 86400
Fox Now:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Fox%20Now.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Fox%20Now.yaml
path: "./Rules/Media/Fox_Now"
interval: 86400
Fox+:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Fox%2B.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Fox%2B.yaml
path: "./Rules/Media/Fox+"
interval: 86400
HBO Go:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/HBO%20Go.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/HBO%20Go.yaml
path: "./Rules/Media/HBO_Go"
interval: 86400
HBO Max:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/HBO%20Max.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/HBO%20Max.yaml
path: "./Rules/Media/HBO_Max"
interval: 86400
Hulu Japan:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Hulu%20Japan.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Hulu%20Japan.yaml
path: "./Rules/Media/Hulu_Japan"
interval: 86400
Hulu:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Hulu.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Hulu.yaml
path: "./Rules/Media/Hulu"
interval: 86400
Japonx:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Japonx.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Japonx.yaml
path: "./Rules/Media/Japonx"
interval: 86400
JOOX:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/JOOX.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/JOOX.yaml
path: "./Rules/Media/JOOX"
interval: 86400
KKBOX:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/KKBOX.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/KKBOX.yaml
path: "./Rules/Media/KKBOX"
interval: 86400
KKTV:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/KKTV.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/KKTV.yaml
path: "./Rules/Media/KKTV"
interval: 86400
Line TV:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Line%20TV.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Line%20TV.yaml
path: "./Rules/Media/Line_TV"
interval: 86400
myTV SUPER:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/myTV%20SUPER.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/myTV%20SUPER.yaml
path: "./Rules/Media/myTV_SUPER"
interval: 86400
Pandora:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Pandora.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Pandora.yaml
path: "./Rules/Media/Pandora"
interval: 86400
PBS:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/PBS.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/PBS.yaml
path: "./Rules/Media/PBS"
interval: 86400
Pornhub:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Pornhub.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Pornhub.yaml
path: "./Rules/Media/Pornhub"
interval: 86400
Soundcloud:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Soundcloud.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Soundcloud.yaml
path: "./Rules/Media/Soundcloud"
interval: 86400
ViuTV:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/ViuTV.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/ViuTV.yaml
path: "./Rules/Media/ViuTV"
interval: 86400
Telegram:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Telegram.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Telegram.yaml
path: "./Rules/Telegram"
interval: 86400
Crypto:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Crypto.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Crypto.yaml
path: "./Rules/Crypto"
interval: 86400
Douyin:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Douyin.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Douyin.yaml
path: "./Rules/Douyin"
interval: 86400
Steam:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Steam.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Steam.yaml
path: "./Rules/Steam"
interval: 86400
Speedtest:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Speedtest.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Speedtest.yaml
path: "./Rules/Speedtest"
interval: 86400
PayPal:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/PayPal.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/PayPal.yaml
path: "./Rules/PayPal"
interval: 86400
Microsoft:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Microsoft.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Microsoft.yaml
path: "./Rules/Microsoft"
interval: 86400
PROXY:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Proxy.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Proxy.yaml
path: "./Rules/Proxy"
interval: 86400
Domestic:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Domestic.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Domestic.yaml
path: "./Rules/Domestic"
interval: 86400
Apple:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Apple.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Apple.yaml
path: "./Rules/Apple"
interval: 86400
Google FCM:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Google%20FCM.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Google%20FCM.yaml
path: "./Rules/Google FCM"
interval: 86400
Scholar:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Scholar.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Scholar.yaml
path: "./Rules/Scholar"
interval: 86400
Domestic IPs:
type: http
behavior: ipcidr
url: https://dler.cloud/Rules/Clash/Provider/Domestic%20IPs.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Domestic%20IPs.yaml
path: "./Rules/Domestic_IPs"
interval: 86400
LAN:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/LAN.yaml
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/LAN.yaml
path: "./Rules/LAN"
interval: 86400

View File

@ -8,9 +8,9 @@ if [ -z "$1" ] || [ -z "$2" ]; then
fi
RUBY_YAML_PARSE="Thread.new{Value = YAML.load_file('$1'); puts Value$2}.join"
if [ -n "$(echo "$2" |grep '.to_yaml' 2>/dev/null)" ]; then
ruby -ryaml -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null |sed '1d' 2>/dev/null
ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null |sed '1d' 2>/dev/null
else
ruby -ryaml -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null
ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null
fi
}
@ -21,7 +21,7 @@ if [ -z "$1" ] || [ -z "$2" ]; then
return
fi
RUBY_YAML_PARSE="Thread.new{Value = $1; puts Value$2}.join"
ruby -ryaml -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null
ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null
}
ruby_edit()
@ -31,7 +31,7 @@ if [ -z "$1" ] || [ -z "$2" ]; then
return
fi
RUBY_YAML_PARSE="Thread.new{Value = YAML.load_file('$1'); Value$2; File.open('$1','w') {|f| YAML.dump(Value, f)}}.join"
ruby -ryaml -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null
ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null
}
#数组覆盖
@ -42,7 +42,7 @@ if [ -z "$1" ] || [ -z "$2" ]; then
return
fi
RUBY_YAML_PARSE="Thread.new{Value = YAML.load_file('$1'); if File::exist?('$3') then Value_1 = YAML.load_file('$3'); if not '$4'.empty? then Value$2=Value_1['$4']; else Value$2=Value_1 end else if not '$4'.empty? then Value.delete('$4'); end; end; File.open('$1','w') {|f| YAML.dump(Value, f)}}.join"
ruby -ryaml -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null
ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null
}
#hash增加
@ -53,7 +53,7 @@ if [ -z "$1" ] || [ -z "$2" ]; then
return
fi
RUBY_YAML_PARSE="Thread.new{Value = YAML.load_file('$1'); Value_1 = YAML.load_file('$3'); Value$2.merge!(Value_1$4); File.open('$1','w') {|f| YAML.dump(Value, f)}}.join"
ruby -ryaml -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null
ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null
}
#hash去重
@ -64,7 +64,7 @@ if [ -z "$1" ] || [ -z "$2" ]; then
return
fi
RUBY_YAML_PARSE="Thread.new{Value = YAML.load_file('$1'); Value$2=Value$2.uniq; File.open('$1','w') {|f| YAML.dump(Value, f)}}.join"
ruby -ryaml -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null
ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null
}
#数组指定位置前添加一组值(不要key)
@ -75,7 +75,7 @@ if [ -z "$1" ] || [ -z "$2" ]; then
return
fi
RUBY_YAML_PARSE="Thread.new{Value = YAML.load_file('$1'); Value_1 = YAML.load_file('$4').reverse!; Value_1$5.each{|x| Value$2.insert($3,x)}; Value$2=Value$2.uniq; File.open('$1','w') {|f| YAML.dump(Value, f)}}.join"
ruby -ryaml -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null
ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null
}
#数组开头添加一组值(含key)
@ -86,7 +86,7 @@ if [ -z "$1" ] || [ -z "$2" ]; then
return
fi
RUBY_YAML_PARSE="Thread.new{Value = YAML.load_file('$1'); Value_1 = YAML.load_file('$3'); Value$2=(Value_1$4+Value$2).uniq; File.open('$1','w') {|f| YAML.dump(Value, f)}}.join"
ruby -ryaml -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null
ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null
}
#数组指定位置前增加值
@ -97,7 +97,7 @@ if [ -z "$1" ] || [ -z "$2" ]; then
return
fi
RUBY_YAML_PARSE="Thread.new{Value = YAML.load_file('$1'); Value$2=Value$2.insert($3,'$4').uniq; File.open('$1','w') {|f| YAML.dump(Value, f)}}.join"
ruby -ryaml -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null
ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null
}
ruby_read_hash_arr()
@ -107,5 +107,5 @@ if [ -z "$1" ] || [ -z "$2" ]; then
return
fi
RUBY_YAML_PARSE="Thread.new{Value = YAML.load_file('$1'); Value$2.each do |i| puts i$3 end}.join"
ruby -ryaml -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null
ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null
}

View File

@ -214,7 +214,7 @@ yml_dns_get()
fi
if [ "$specific_group" != "Disable" ] && [ -n "$specific_group" ] && [ "$enable_meta_core" = "1" ]; then
group_check=$(ruby -ryaml -E UTF-8 -e "
group_check=$(ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "
begin
Thread.new{
Value = YAML.load_file('$2');
@ -279,11 +279,16 @@ yml_dns_get()
echo " nameserver:" >/tmp/yaml_config.namedns.yaml
fi
echo " - \"$dns_type$dns_address\"" >>/tmp/yaml_config.namedns.yaml
else
elif [ "$group" = "fallback" ]; then
if [ -z "$(grep "^ \{0,\}fallback:$" /tmp/yaml_config.falldns.yaml 2>/dev/null)" ]; then
echo " fallback:" >/tmp/yaml_config.falldns.yaml
fi
echo " - \"$dns_type$dns_address\"" >>/tmp/yaml_config.falldns.yaml
elif [ "$group" = "default" ]; then
if [ -z "$(grep "^ \{0,\}default-nameserver:$" /tmp/yaml_config.defaultdns.yaml 2>/dev/null)" ]; then
echo " default-nameserver:" >/tmp/yaml_config.defaultdns.yaml
fi
echo " - \"$dns_type$dns_address\"" >>/tmp/yaml_config.defaultdns.yaml
fi
else
return
@ -294,7 +299,7 @@ config_load "openclash"
config_foreach yml_auth_get "authentication"
yml_dns_custom "$enable_custom_dns" "$5" "$append_wan_dns" "${16}"
ruby -ryaml -E UTF-8 -e "
ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "
begin
Value = YAML.load_file('$5');
rescue Exception => e
@ -483,14 +488,20 @@ Thread.new{
if '$enable_custom_dns' == '1' or '$append_wan_dns' == '1' then
if File::exist?('/tmp/yaml_config.namedns.yaml') then
Value_1 = YAML.load_file('/tmp/yaml_config.namedns.yaml');
Value_1['nameserver'] = Value_1['nameserver'].uniq;
Value['dns']['nameserver'] = Value_1['nameserver'];
if File::exist?('/tmp/yaml_config.falldns.yaml') then
Value_2 = YAML.load_file('/tmp/yaml_config.falldns.yaml');
Value_2['fallback'] = Value_2['fallback'].uniq;
Value['dns']['fallback'] = Value_2['fallback'];
if '$enable_custom_dns' == '1' then
Value['dns']['nameserver'] = Value_1['nameserver'].uniq;
elsif '$append_wan_dns' == '1' then
if Value['dns'].has_key?('nameserver') then
Value['dns']['nameserver'] = Value['dns']['nameserver'] | Value_1['nameserver'];
else
Value['dns']['nameserver'] = Value_1['nameserver'].uniq;
end;
end;
else
if File::exist?('/tmp/yaml_config.falldns.yaml') and '$enable_custom_dns' == '1' then
Value_2 = YAML.load_file('/tmp/yaml_config.falldns.yaml');
Value['dns']['fallback'] = Value_2['fallback'].uniq;
end;
elsif '$enable_custom_dns' == '1' then
puts '${LOGTIME} Error: Nameserver Option Must Be Setted, Stop Customing DNS Servers';
end;
end;
@ -513,6 +524,16 @@ end;
#default-nameserver
begin
Thread.new{
if '$enable_custom_dns' == '1' then
if File::exist?('/tmp/yaml_config.defaultdns.yaml') then
Value_1 = YAML.load_file('/tmp/yaml_config.defaultdns.yaml');
if Value['dns'].has_key?('default-nameserver') then
Value['dns']['default-nameserver'] = Value['dns']['default-nameserver'] | Value_1['default-nameserver'];
else
Value['dns']['default-nameserver'] = Value_1['default-nameserver'].uniq;
end;
end;
end;
if ${28} == 1 then
if ${20} == 1 then
reg = /(^https:\/\/|^tls:\/\/|^quic:\/\/)?((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])(?::(?:[0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?/;
@ -642,6 +663,7 @@ Thread.new{
Value['hosts']=Value_3;
end;
Value['hosts'].uniq;
puts '${LOGTIME} Warning: You May Need to Turn off The Rebinding Protection Option of Dnsmasq When Hosts Has Set a Reserved Address';
end;
rescue
Value_3 = IO.readlines('/etc/openclash/custom/openclash_custom_hosts.list');
@ -654,6 +676,7 @@ Thread.new{
Value_3.each{|x| Value['hosts'].merge!(x)};
end;
Value['hosts'].uniq;
puts '${LOGTIME} Warning: You May Need to Turn off The Rebinding Protection Option of Dnsmasq When Hosts Has Set a Reserved Address';
end;
end;
end;

View File

@ -15,13 +15,13 @@ del_lock() {
ruby_read_hash()
{
RUBY_YAML_PARSE="Thread.new{Value = $1; puts Value$2}.join"
ruby -ryaml -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null
ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null
}
ruby_read()
{
RUBY_YAML_PARSE="Thread.new{Value = YAML.load_file('$1'); puts Value$2}.join"
ruby -ryaml -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null
ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null
}
CFG_FILE="/etc/config/openclash"
@ -175,7 +175,7 @@ do
${uci_set}old_name_cfg="$group_name"
${uci_set}type="$group_type"
ruby -ryaml -E UTF-8 -e "
ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "
begin
Value = ${group_hash};
Thread.new{

View File

@ -102,7 +102,7 @@ yml_servers_add()
config_list_foreach "$section" "groups" set_groups "$name" "$2"
fi
if [ ! -z "$if_game_group" ] && [ -z "$(ruby -ryaml -E UTF-8 -e "Value = YAML.load_file('$CONFIG_FILE'); Value['proxies'].each{|x| if x['name'].eql?('$name') then puts x['name'] end}" 2>/dev/null)" ]; then
if [ ! -z "$if_game_group" ] && [ -z "$(ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "Value = YAML.load_file('$CONFIG_FILE'); Value['proxies'].each{|x| if x['name'].eql?('$name') then puts x['name'] end}" 2>/dev/null)" ]; then
/usr/share/openclash/yml_proxys_set.sh "$name" "proxy"
fi
fi
@ -140,7 +140,7 @@ set_proxy_provider()
config_list_foreach "$section" "groups" set_provider_groups "$name" "$2"
fi
if [ ! -z "$if_game_group" ] && [ -z "$(ruby -ryaml -E UTF-8 -e "Value = YAML.load_file('$CONFIG_FILE'); Value['proxy-providers'].keys.each{|x| if x.eql?('$name') then puts x end}" 2>/dev/null)" ]; then
if [ ! -z "$if_game_group" ] && [ -z "$(ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "Value = YAML.load_file('$CONFIG_FILE'); Value['proxy-providers'].keys.each{|x| if x.eql?('$name') then puts x end}" 2>/dev/null)" ]; then
/usr/share/openclash/yml_proxys_set.sh "$name" "proxy-provider"
fi
fi

View File

@ -27,13 +27,13 @@ sub_info_get()
ruby_read_hash()
{
RUBY_YAML_PARSE="Thread.new{Value = $1; puts Value$2}.join"
ruby -ryaml -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null
ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null
}
ruby_read()
{
RUBY_YAML_PARSE="Thread.new{Value = YAML.load_file('$1'); puts Value$2}.join"
ruby -ryaml -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null
ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null
}
CONFIG_FILE=$(uci get openclash.config.config_path 2>/dev/null)
@ -232,7 +232,7 @@ do
${uci_set}name="$provider_name"
${uci_set}type="$provider_type"
fi
ruby -ryaml -E UTF-8 -e "
ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "
begin
Value = $proxy_hash;
Thread.new{
@ -312,7 +312,7 @@ do
config_load "openclash"
config_list_foreach "config" "new_servers_group" cfg_new_provider_groups_get
elif [ "$servers_if_update" != "1" ]; then
ruby -ryaml -E UTF-8 -e "
ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "
Thread.new{
begin
Value = ${group_hash};
@ -435,7 +435,7 @@ do
${uci_set}type="$server_type"
fi
ruby -ryaml -E UTF-8 -e "
ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "
begin
Value = $proxy_hash;
Thread.new{
@ -1090,7 +1090,7 @@ do
config_load "openclash"
config_list_foreach "config" "new_servers_group" cfg_new_servers_groups_get
elif [ "$servers_if_update" != "1" ]; then
ruby -ryaml -E UTF-8 -e "
ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "
Thread.new{
begin
Value = ${group_hash};

View File

@ -774,7 +774,7 @@ cat >> "$SERVER_FILE" <<-EOF
sni: "$sni"
EOF
fi
if [ -n "$ws_opts_headers" ]; then
if [ -n "$http_headers" ]; then
cat >> "$SERVER_FILE" <<-EOF
headers:
EOF
@ -1551,7 +1551,7 @@ if [ "$create_config" != "0" ] && [ "$servers_if_update" != "1" ] && [ -z "$if_g
/usr/share/openclash/yml_groups_get.sh >/dev/null 2>&1
elif [ -z "$if_game_proxy" ]; then
LOG_OUT "Proxies, Proxy-providers, Groups Edited Successful, Updating Config File【$CONFIG_NAME】..."
config_hash=$(ruby -ryaml -E UTF-8 -e "Value = YAML.load_file('$CONFIG_FILE'); puts Value" 2>/dev/null)
config_hash=$(ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "Value = YAML.load_file('$CONFIG_FILE'); puts Value" 2>/dev/null)
if [ "$config_hash" != "false" ] && [ -n "$config_hash" ]; then
ruby_cover "$CONFIG_FILE" "['proxies']" "$SERVER_FILE" "proxies"
ruby_cover "$CONFIG_FILE" "['proxy-providers']" "$PROXY_PROVIDER_FILE" "proxy-providers"

View File

@ -235,7 +235,7 @@ yml_rule_group_get()
return
fi
group_check=$(ruby -ryaml -E UTF-8 -e "
group_check=$(ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "
begin
Thread.new{
Value = YAML.load_file('$2');
@ -267,7 +267,7 @@ yml_other_set()
config_foreach yml_rule_group_get "rule_provider_config" "$3"
config_foreach yml_rule_group_get "rule_providers" "$3"
config_foreach yml_rule_group_get "game_config" "$3"
ruby -ryaml -E UTF-8 -e "
ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "
begin
Value = YAML.load_file('$3');
rescue Exception => e
@ -873,7 +873,7 @@ if [ "$1" != "0" ]; then
exit 0
else
if [ "$rule_name" = "lhie1" ]; then
ruby -ryaml -E UTF-8 -e "
ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "
begin
Value = YAML.load_file('$3');
Value_1 = YAML.load_file('/usr/share/openclash/res/lhie1.yaml');
@ -956,7 +956,7 @@ if [ "$1" != "0" ]; then
puts '${LOGTIME} Error: Set lhie1 Rules Failed,【' + e.message + '】';
end" 2>/dev/null >> $LOG_FILE
elif [ "$rule_name" = "ConnersHua" ]; then
ruby -ryaml -E UTF-8 -e "
ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "
begin
Value = YAML.load_file('$3');
Value_1 = YAML.load_file('/usr/share/openclash/res/ConnersHua.yaml');
@ -989,7 +989,7 @@ if [ "$1" != "0" ]; then
puts '${LOGTIME} Error: Set ConnersHua Rules Failed,【' + e.message + '】';
end" 2>/dev/null >> $LOG_FILE
else
ruby -ryaml -E UTF-8 -e "
ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "
begin
Value = YAML.load_file('$3');
Value_1 = YAML.load_file('/usr/share/openclash/res/ConnersHua_return.yaml');

View File

@ -1,5 +1,5 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
// Open simple dialogs on top of an editor. Relies on dialog.css.

View File

@ -1,5 +1,5 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS

View File

@ -1,5 +1,5 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS

View File

@ -1,5 +1,5 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS

View File

@ -1,5 +1,5 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS

View File

@ -1,5 +1,5 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS

View File

@ -1,5 +1,5 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS

View File

@ -1,5 +1,5 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS

View File

@ -1,5 +1,5 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS

View File

@ -1,5 +1,5 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS

View File

@ -1,5 +1,5 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
// Defines jumpToLine command. Uses dialog.js if present.

View File

@ -1,5 +1,5 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
// Highlighting text that matches the selection
//

View File

@ -1,5 +1,5 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS

View File

@ -1,5 +1,5 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
// Define search commands. Depends on dialog.js or another
// implementation of the openDialog method.
@ -202,16 +202,19 @@
}
function getQueryDialog(cm) {
return el("", null,
el("span", {className: "CodeMirror-search-label"}, cm.phrase("Search:")), " ",
el("input", {type: "text", "style": "width: 10em", className: "CodeMirror-search-field"}), " ",
el("span", {style: "color: #888", className: "CodeMirror-search-hint"},
var label = el("label", {className: "CodeMirror-search-label"},
cm.phrase("Search:"),
el("input", {type: "text", "style": "width: 10em", className: "CodeMirror-search-field",
id: "CodeMirror-search-field"}));
label.setAttribute("for","CodeMirror-search-field");
return el("", null, label, " ",
el("span", {style: "color: #666", className: "CodeMirror-search-hint"},
cm.phrase("(Use /re/ syntax for regexp search)")));
}
function getReplaceQueryDialog(cm) {
return el("", null, " ",
el("input", {type: "text", "style": "width: 10em", className: "CodeMirror-search-field"}), " ",
el("span", {style: "color: #888", className: "CodeMirror-search-hint"},
el("span", {style: "color: #666", className: "CodeMirror-search-hint"},
cm.phrase("(Use /re/ syntax for regexp search)")));
}
function getReplacementQueryDialog(cm) {

View File

@ -1,5 +1,5 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS

View File

@ -1,5 +1,5 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="186" height="20" role="img" aria-label="Current Version: v0.45.41-beta"><title>Current Version: v0.45.41-beta</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="186" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="97" height="20" fill="#555"/><rect x="97" width="89" height="20" fill="#007ec6"/><rect width="186" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="495" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="870">Current Version</text><text x="495" y="140" transform="scale(.1)" fill="#fff" textLength="870">Current Version</text><text aria-hidden="true" x="1405" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="790">v0.45.41-beta</text><text x="1405" y="140" transform="scale(.1)" fill="#fff" textLength="790">v0.45.41-beta</text></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="186" height="20" role="img" aria-label="Current Version: v0.45.47-beta"><title>Current Version: v0.45.47-beta</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="186" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="97" height="20" fill="#555"/><rect x="97" width="89" height="20" fill="#007ec6"/><rect width="186" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="495" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="870">Current Version</text><text x="495" y="140" transform="scale(.1)" fill="#fff" textLength="870">Current Version</text><text aria-hidden="true" x="1405" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="790">v0.45.47-beta</text><text x="1405" y="140" transform="scale(.1)" fill="#fff" textLength="790">v0.45.47-beta</text></g></svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -1,7 +1,7 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
// This is CodeMirror (https://codemirror.net), a code editor
// This is CodeMirror (https://codemirror.net/5), a code editor
// implemented in JavaScript on top of the browser's DOM.
//
// You can find some technical background for some of the code below
@ -26,7 +26,8 @@
var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);
var webkit = !edge && /WebKit\//.test(userAgent);
var qtwebkit = webkit && /Qt\/\d+\.\d+/.test(userAgent);
var chrome = !edge && /Chrome\//.test(userAgent);
var chrome = !edge && /Chrome\/(\d+)/.exec(userAgent);
var chrome_version = chrome && +chrome[1];
var presto = /Opera\//.test(userAgent);
var safari = /Apple Computer/.test(navigator.vendor);
var mac_geMountainLion = /Mac OS X 1\d\D([8-9]|\d\d)\D/.test(userAgent);
@ -111,15 +112,15 @@
} while (child = child.parentNode)
}
function activeElt() {
function activeElt(doc) {
// IE and Edge may throw an "Unspecified Error" when accessing document.activeElement.
// IE < 10 will throw when accessed while the page is loading or in an iframe.
// IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.
var activeElement;
try {
activeElement = document.activeElement;
activeElement = doc.activeElement;
} catch(e) {
activeElement = document.body || null;
activeElement = doc.body || null;
}
while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement)
{ activeElement = activeElement.shadowRoot.activeElement; }
@ -143,6 +144,10 @@
else if (ie) // Suppress mysterious IE10 errors
{ selectInput = function(node) { try { node.select(); } catch(_e) {} }; }
function doc(cm) { return cm.display.wrapper.ownerDocument }
function win(cm) { return doc(cm).defaultView }
function bind(f) {
var args = Array.prototype.slice.call(arguments, 1);
return function(){return f.apply(null, args)}
@ -1324,7 +1329,7 @@
// Add a span to a line.
function addMarkedSpan(line, span, op) {
var inThisOp = op && window.WeakSet && (op.markedSpans || (op.markedSpans = new WeakSet));
if (inThisOp && inThisOp.has(line.markedSpans)) {
if (inThisOp && line.markedSpans && inThisOp.has(line.markedSpans)) {
line.markedSpans.push(span);
} else {
line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];
@ -2572,16 +2577,16 @@
cm.display.lineNumChars = null;
}
function pageScrollX() {
function pageScrollX(doc) {
// Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206
// which causes page_Offset and bounding client rects to use
// different reference viewports and invalidate our calculations.
if (chrome && android) { return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft)) }
return window.pageXOffset || (document.documentElement || document.body).scrollLeft
if (chrome && android) { return -(doc.body.getBoundingClientRect().left - parseInt(getComputedStyle(doc.body).marginLeft)) }
return doc.defaultView.pageXOffset || (doc.documentElement || doc.body).scrollLeft
}
function pageScrollY() {
if (chrome && android) { return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop)) }
return window.pageYOffset || (document.documentElement || document.body).scrollTop
function pageScrollY(doc) {
if (chrome && android) { return -(doc.body.getBoundingClientRect().top - parseInt(getComputedStyle(doc.body).marginTop)) }
return doc.defaultView.pageYOffset || (doc.documentElement || doc.body).scrollTop
}
function widgetTopHeight(lineObj) {
@ -2609,8 +2614,8 @@
else { yOff -= cm.display.viewOffset; }
if (context == "page" || context == "window") {
var lOff = cm.display.lineSpace.getBoundingClientRect();
yOff += lOff.top + (context == "window" ? 0 : pageScrollY());
var xOff = lOff.left + (context == "window" ? 0 : pageScrollX());
yOff += lOff.top + (context == "window" ? 0 : pageScrollY(doc(cm)));
var xOff = lOff.left + (context == "window" ? 0 : pageScrollX(doc(cm)));
rect.left += xOff; rect.right += xOff;
}
rect.top += yOff; rect.bottom += yOff;
@ -2624,8 +2629,8 @@
var left = coords.left, top = coords.top;
// First move into "page" coordinate system
if (context == "page") {
left -= pageScrollX();
top -= pageScrollY();
left -= pageScrollX(doc(cm));
top -= pageScrollY(doc(cm));
} else if (context == "local" || !context) {
var localBox = cm.display.sizer.getBoundingClientRect();
left += localBox.left;
@ -3441,8 +3446,9 @@
if (signalDOMEvent(cm, "scrollCursorIntoView")) { return }
var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null;
var doc = display.wrapper.ownerDocument;
if (rect.top + box.top < 0) { doScroll = true; }
else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) { doScroll = false; }
else if (rect.bottom + box.top > (doc.defaultView.innerHeight || doc.documentElement.clientHeight)) { doScroll = false; }
if (doScroll != null && !phantom) {
var scrollNode = elt("div", "\u200b", null, ("position: absolute;\n top: " + (rect.top - display.viewOffset - paddingTop(cm.display)) + "px;\n height: " + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + "px;\n left: " + (rect.left) + "px; width: " + (Math.max(2, rect.right - rect.left)) + "px;"));
cm.display.lineSpace.appendChild(scrollNode);
@ -3696,13 +3702,13 @@
NativeScrollbars.prototype.zeroWidthHack = function () {
var w = mac && !mac_geMountainLion ? "12px" : "18px";
this.horiz.style.height = this.vert.style.width = w;
this.horiz.style.pointerEvents = this.vert.style.pointerEvents = "none";
this.horiz.style.visibility = this.vert.style.visibility = "hidden";
this.disableHoriz = new Delayed;
this.disableVert = new Delayed;
};
NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {
bar.style.pointerEvents = "auto";
bar.style.visibility = "";
function maybeDisable() {
// To find out whether the scrollbar is still visible, we
// check whether the element under the pixel in the bottom
@ -3713,7 +3719,7 @@
var box = bar.getBoundingClientRect();
var elt = type == "vert" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2)
: document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);
if (elt != bar) { bar.style.pointerEvents = "none"; }
if (elt != bar) { bar.style.visibility = "hidden"; }
else { delay.set(1000, maybeDisable); }
}
delay.set(1000, maybeDisable);
@ -3894,7 +3900,7 @@
cm.display.maxLineChanged = false;
}
var takeFocus = op.focus && op.focus == activeElt();
var takeFocus = op.focus && op.focus == activeElt(doc(cm));
if (op.preparedSelection)
{ cm.display.input.showSelection(op.preparedSelection, takeFocus); }
if (op.updatedDisplay || op.startHeight != cm.doc.height)
@ -4071,11 +4077,11 @@
function selectionSnapshot(cm) {
if (cm.hasFocus()) { return null }
var active = activeElt();
var active = activeElt(doc(cm));
if (!active || !contains(cm.display.lineDiv, active)) { return null }
var result = {activeElt: active};
if (window.getSelection) {
var sel = window.getSelection();
var sel = win(cm).getSelection();
if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) {
result.anchorNode = sel.anchorNode;
result.anchorOffset = sel.anchorOffset;
@ -4087,11 +4093,12 @@
}
function restoreSelection(snapshot) {
if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) { return }
if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt(snapshot.activeElt.ownerDocument)) { return }
snapshot.activeElt.focus();
if (!/^(INPUT|TEXTAREA)$/.test(snapshot.activeElt.nodeName) &&
snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {
var sel = window.getSelection(), range = document.createRange();
var doc = snapshot.activeElt.ownerDocument;
var sel = doc.defaultView.getSelection(), range = doc.createRange();
range.setEnd(snapshot.anchorNode, snapshot.anchorOffset);
range.collapse(false);
sel.removeAllRanges();
@ -4509,6 +4516,17 @@
}
function onScrollWheel(cm, e) {
// On Chrome 102, viewport updates somehow stop wheel-based
// scrolling. Turning off pointer events during the scroll seems
// to avoid the issue.
if (chrome && chrome_version == 102) {
if (cm.display.chromeScrollHack == null) { cm.display.sizer.style.pointerEvents = "none"; }
else { clearTimeout(cm.display.chromeScrollHack); }
cm.display.chromeScrollHack = setTimeout(function () {
cm.display.chromeScrollHack = null;
cm.display.sizer.style.pointerEvents = "";
}, 100);
}
var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y;
var pixelsPerUnit = wheelPixelsPerUnit;
if (e.deltaMode === 0) {
@ -5192,7 +5210,7 @@
var range = sel.ranges[i];
var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i];
var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear);
var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear);
var newHead = range.head == range.anchor ? newAnchor : skipAtomic(doc, range.head, old && old.head, bias, mayClear);
if (out || newAnchor != range.anchor || newHead != range.head) {
if (!out) { out = sel.ranges.slice(0, i); }
out[i] = new Range(newAnchor, newHead);
@ -7244,7 +7262,7 @@
function onKeyDown(e) {
var cm = this;
if (e.target && e.target != cm.display.input.getField()) { return }
cm.curOp.focus = activeElt();
cm.curOp.focus = activeElt(doc(cm));
if (signalDOMEvent(cm, e)) { return }
// IE does strange things with escape.
if (ie && ie_version < 11 && e.keyCode == 27) { e.returnValue = false; }
@ -7351,7 +7369,7 @@
}
if (clickInGutter(cm, e)) { return }
var pos = posFromMouse(cm, e), button = e_button(e), repeat = pos ? clickRepeat(pos, button) : "single";
window.focus();
win(cm).focus();
// #3261: make sure, that we're not starting a second selection
if (button == 1 && cm.state.selectingText)
@ -7406,7 +7424,7 @@
function leftButtonDown(cm, pos, repeat, event) {
if (ie) { setTimeout(bind(ensureFocus, cm), 0); }
else { cm.curOp.focus = activeElt(); }
else { cm.curOp.focus = activeElt(doc(cm)); }
var behavior = configureMouse(cm, repeat, event);
@ -7476,19 +7494,19 @@
// Normal selection, as opposed to text dragging.
function leftButtonSelect(cm, event, start, behavior) {
if (ie) { delayBlurEvent(cm); }
var display = cm.display, doc = cm.doc;
var display = cm.display, doc$1 = cm.doc;
e_preventDefault(event);
var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges;
var ourRange, ourIndex, startSel = doc$1.sel, ranges = startSel.ranges;
if (behavior.addNew && !behavior.extend) {
ourIndex = doc.sel.contains(start);
ourIndex = doc$1.sel.contains(start);
if (ourIndex > -1)
{ ourRange = ranges[ourIndex]; }
else
{ ourRange = new Range(start, start); }
} else {
ourRange = doc.sel.primary();
ourIndex = doc.sel.primIndex;
ourRange = doc$1.sel.primary();
ourIndex = doc$1.sel.primIndex;
}
if (behavior.unit == "rectangle") {
@ -7505,18 +7523,18 @@
if (!behavior.addNew) {
ourIndex = 0;
setSelection(doc, new Selection([ourRange], 0), sel_mouse);
startSel = doc.sel;
setSelection(doc$1, new Selection([ourRange], 0), sel_mouse);
startSel = doc$1.sel;
} else if (ourIndex == -1) {
ourIndex = ranges.length;
setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex),
setSelection(doc$1, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex),
{scroll: false, origin: "*mouse"});
} else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == "char" && !behavior.extend) {
setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),
setSelection(doc$1, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),
{scroll: false, origin: "*mouse"});
startSel = doc.sel;
startSel = doc$1.sel;
} else {
replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);
replaceOneSelection(doc$1, ourIndex, ourRange, sel_mouse);
}
var lastPos = start;
@ -7526,19 +7544,19 @@
if (behavior.unit == "rectangle") {
var ranges = [], tabSize = cm.options.tabSize;
var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);
var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);
var startCol = countColumn(getLine(doc$1, start.line).text, start.ch, tabSize);
var posCol = countColumn(getLine(doc$1, pos.line).text, pos.ch, tabSize);
var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol);
for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line));
line <= end; line++) {
var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize);
var text = getLine(doc$1, line).text, leftPos = findColumn(text, left, tabSize);
if (left == right)
{ ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); }
else if (text.length > leftPos)
{ ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); }
}
if (!ranges.length) { ranges.push(new Range(start, start)); }
setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),
setSelection(doc$1, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),
{origin: "*mouse", scroll: false});
cm.scrollIntoView(pos);
} else {
@ -7553,8 +7571,8 @@
anchor = maxPos(oldRange.to(), range.head);
}
var ranges$1 = startSel.ranges.slice(0);
ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head));
setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);
ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc$1, anchor), head));
setSelection(doc$1, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);
}
}
@ -7570,9 +7588,9 @@
var cur = posFromMouse(cm, e, true, behavior.unit == "rectangle");
if (!cur) { return }
if (cmp(cur, lastPos) != 0) {
cm.curOp.focus = activeElt();
cm.curOp.focus = activeElt(doc(cm));
extendTo(cur);
var visible = visibleLines(display, doc);
var visible = visibleLines(display, doc$1);
if (cur.line >= visible.to || cur.line < visible.from)
{ setTimeout(operation(cm, function () {if (counter == curCount) { extend(e); }}), 150); }
} else {
@ -7597,7 +7615,7 @@
}
off(display.wrapper.ownerDocument, "mousemove", move);
off(display.wrapper.ownerDocument, "mouseup", up);
doc.history.lastSelOrigin = null;
doc$1.history.lastSelOrigin = null;
}
var move = operation(cm, function (e) {
@ -8197,7 +8215,7 @@
var pasted = e.clipboardData && e.clipboardData.getData("Text");
if (pasted) {
e.preventDefault();
if (!cm.isReadOnly() && !cm.options.disableInput)
if (!cm.isReadOnly() && !cm.options.disableInput && cm.hasFocus())
{ runInOp(cm, function () { return applyTextInput(cm, pasted, 0, null, "paste"); }); }
return true
}
@ -8274,7 +8292,7 @@
CodeMirror.prototype = {
constructor: CodeMirror,
focus: function(){window.focus(); this.display.input.focus();},
focus: function(){win(this).focus(); this.display.input.focus();},
setOption: function(option, value) {
var options = this.options, old = options[option];
@ -8598,7 +8616,7 @@
signal(this, "overwriteToggle", this, this.state.overwrite);
},
hasFocus: function() { return this.display.input.getField() == activeElt() },
hasFocus: function() { return this.display.input.getField() == activeElt(doc(this)) },
isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) },
scrollTo: methodOp(function (x, y) { scrollToCoords(this, x, y); }),
@ -8779,7 +8797,7 @@
function findPosV(cm, pos, dir, unit) {
var doc = cm.doc, x = pos.left, y;
if (unit == "page") {
var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight);
var pageSize = Math.min(cm.display.wrapper.clientHeight, win(cm).innerHeight || doc(cm).documentElement.clientHeight);
var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);
y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;
@ -8879,7 +8897,7 @@
var kludge = hiddenTextarea(), te = kludge.firstChild;
cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);
te.value = lastCopied.text.join("\n");
var hadFocus = activeElt();
var hadFocus = activeElt(div.ownerDocument);
selectInput(te);
setTimeout(function () {
cm.display.lineSpace.removeChild(kludge);
@ -8902,7 +8920,7 @@
ContentEditableInput.prototype.prepareSelection = function () {
var result = prepareSelection(this.cm, false);
result.focus = activeElt() == this.div;
result.focus = activeElt(this.div.ownerDocument) == this.div;
return result
};
@ -8998,7 +9016,7 @@
ContentEditableInput.prototype.focus = function () {
if (this.cm.options.readOnly != "nocursor") {
if (!this.selectionInEditor() || activeElt() != this.div)
if (!this.selectionInEditor() || activeElt(this.div.ownerDocument) != this.div)
{ this.showSelection(this.prepareSelection(), true); }
this.div.focus();
}
@ -9501,7 +9519,7 @@
TextareaInput.prototype.supportsTouch = function () { return false };
TextareaInput.prototype.focus = function () {
if (this.cm.options.readOnly != "nocursor" && (!mobile || activeElt() != this.textarea)) {
if (this.cm.options.readOnly != "nocursor" && (!mobile || activeElt(this.textarea.ownerDocument) != this.textarea)) {
try { this.textarea.focus(); }
catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM
}
@ -9624,9 +9642,9 @@
input.wrapper.style.cssText = "position: static";
te.style.cssText = "position: absolute; width: 30px; height: 30px;\n top: " + (e.clientY - wrapperBox.top - 5) + "px; left: " + (e.clientX - wrapperBox.left - 5) + "px;\n z-index: 1000; background: " + (ie ? "rgba(255, 255, 255, .05)" : "transparent") + ";\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);";
var oldScrollY;
if (webkit) { oldScrollY = window.scrollY; } // Work around Chrome issue (#2712)
if (webkit) { oldScrollY = te.ownerDocument.defaultView.scrollY; } // Work around Chrome issue (#2712)
display.input.focus();
if (webkit) { window.scrollTo(null, oldScrollY); }
if (webkit) { te.ownerDocument.defaultView.scrollTo(null, oldScrollY); }
display.input.reset();
// Adds "Select all" to context menu in FF
if (!cm.somethingSelected()) { te.value = input.prevInput = " "; }
@ -9708,7 +9726,7 @@
// Set autofocus to true if this textarea is focused, or if it has
// autofocus and no other element is focused.
if (options.autofocus == null) {
var hasFocus = activeElt();
var hasFocus = activeElt(textarea.ownerDocument);
options.autofocus = hasFocus == textarea ||
textarea.getAttribute("autofocus") != null && hasFocus == document.body;
}
@ -9842,7 +9860,7 @@
addLegacyProps(CodeMirror);
CodeMirror.version = "5.65.2";
CodeMirror.version = "5.65.7";
return CodeMirror;

View File

@ -1,5 +1,5 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
// LUA mode. Ported to CodeMirror 2 from Franciszek Wawrzak's
// CodeMirror 1 mode.
@ -138,7 +138,7 @@ CodeMirror.defineMode("lua", function(config, parserConfig) {
var word = stream.current();
//if (style == "variable") {
// if (keywords.test(word)) style = "keyword";
// if (builtins.test(word)) style = "builtin";
// else if (builtins.test(word)) style = "builtin";
// else if (specials.test(word)) style = "variable-2";
//}
if ((style != "comment") && (style != "string")){

View File

@ -1,5 +1,5 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS

View File

@ -25,7 +25,7 @@
.cm-s-idea span.cm-builtin { color: #30a; }
.cm-s-idea span.cm-bracket { color: #cc7; }
.cm-s-idea { font-family: Consolas, Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, sans-serif;}
.cm-s-idea { font-family: Consolas, Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, serif;}
.cm-s-idea .CodeMirror-matchingbracket { outline:1px solid grey; color:black !important; }
@ -39,4 +39,4 @@
.CodeMirror-hints.idea .CodeMirror-hint-active {
background-color: #a2b8c9 !important;
color: #5c6065 !important;
}
}