mirror of
https://github.com/kenzok8/openwrt-packages.git
synced 2025-01-08 11:37:36 +08:00
update 2022-08-05 20:18:31
This commit is contained in:
parent
de1c9638f7
commit
ca77e652c8
@ -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>
|
||||
|
||||
|
@ -1,3 +1,6 @@
|
||||
## 更新:2022年8月5日:
|
||||
1、修复coding规则地址失效。
|
||||
|
||||
## 更新:2022年3月24日:
|
||||
1、删除以前所有commits。升级到了最新的comiits:其中重要的几次如下
|
||||
|
||||
|
@ -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`
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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"))
|
||||
|
@ -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
|
||||
|
||||
|
@ -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 的重绑定保护选项才能生效"
|
@ -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
@ -0,0 +1,2 @@
|
||||
#baidu.com
|
||||
#2400:da00::dbf:0:100
|
@ -0,0 +1,2 @@
|
||||
#baidu.com
|
||||
#114.114.114.114
|
@ -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)\/
|
128
luci-app-openclash/root/etc/openclash/rule_provider/Crypto
Normal file
128
luci-app-openclash/root/etc/openclash/rule_provider/Crypto
Normal 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
|
||||
|
@ -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
|
||||
|
@ -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
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
5
luci-app-openclash/root/usr/share/openclash/YAML.rb
Normal file
5
luci-app-openclash/root/usr/share/openclash/YAML.rb
Normal file
@ -0,0 +1,5 @@
|
||||
module YAML
|
||||
class << self
|
||||
alias_method :load, :unsafe_load if YAML.respond_to? :unsafe_load
|
||||
end
|
||||
end
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
}
|
@ -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;
|
||||
|
@ -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{
|
||||
|
@ -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
|
||||
|
@ -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};
|
||||
|
@ -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"
|
||||
|
@ -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');
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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
|
||||
//
|
||||
|
@ -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
|
||||
|
@ -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) {
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 |
@ -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;
|
||||
|
||||
|
@ -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")){
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user