luci-app-clash: bump to 1.6.1f
This commit is contained in:
parent
f87679a869
commit
c04a61aa9f
@ -1,7 +1,7 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=luci-app-clash
|
||||
PKG_VERSION:=1.6.0
|
||||
PKG_VERSION:=1.6.1
|
||||
PKG_MAINTAINER:=frainzy1477
|
||||
|
||||
|
||||
@ -12,7 +12,7 @@ define Package/luci-app-clash
|
||||
CATEGORY:=LuCI
|
||||
SUBMENU:=3. Applications
|
||||
TITLE:=LuCI app for clash
|
||||
DEPENDS:=+luci-base +wget +iptables +coreutils-base64 +coreutils +coreutils-nohup +bash +ipset +libustream-openssl +libopenssl +openssl-util +curl +jsonfilter +ca-certificates
|
||||
DEPENDS:=+luci-base +wget +iptables +coreutils-base64 +coreutils +coreutils-nohup +bash +ipset +libustream-openssl +libopenssl +openssl-util +curl +jsonfilter +ca-certificates +iptables-mod-tproxy
|
||||
PKGARCH:=all
|
||||
MAINTAINER:=frainzy1477
|
||||
endef
|
||||
@ -141,10 +141,10 @@ define Package/$(PKG_NAME)/install
|
||||
$(INSTALL_BIN) ./root/usr/share/clash/clash.txt $(1)/usr/share/clash/
|
||||
|
||||
$(INSTALL_BIN) ./root/usr/share/clash/dashboard/index.html $(1)/usr/share/clash/dashboard/
|
||||
$(INSTALL_BIN) ./root/usr/share/clash/dashboard/main.f302eae39f433a9c3fa1.css $(1)/usr/share/clash/dashboard/
|
||||
$(INSTALL_BIN) ./root/usr/share/clash/dashboard/main.f42e08fe49cdc3329278.css $(1)/usr/share/clash/dashboard/
|
||||
$(INSTALL_BIN) ./root/usr/share/clash/dashboard/img/33343e6117c37aaef8886179007ba6b5.png $(1)/usr/share/clash/dashboard/img/
|
||||
$(INSTALL_BIN) ./root/usr/share/clash/dashboard/js/1.bundle.f302eae39f433a9c3fa1.min.js $(1)/usr/share/clash/dashboard/js/
|
||||
$(INSTALL_BIN) ./root/usr/share/clash/dashboard/js/bundle.f302eae39f433a9c3fa1.min.js $(1)/usr/share/clash/dashboard/js/
|
||||
$(INSTALL_BIN) ./root/usr/share/clash/dashboard/js/1.bundle.f42e08fe49cdc3329278.min.js $(1)/usr/share/clash/dashboard/js/
|
||||
$(INSTALL_BIN) ./root/usr/share/clash/dashboard/js/bundle.f42e08fe49cdc3329278.min.js $(1)/usr/share/clash/dashboard/js/
|
||||
$(INSTALL_BIN) ./root/usr/share/clash/yacd/* $(1)/usr/share/clash/yacd/
|
||||
|
||||
$(INSTALL_DATA) ./luasrc/clash.lua $(1)/usr/lib/lua/luci/
|
||||
|
||||
@ -29,6 +29,12 @@ o:value("4", translate("Clash(dTun)"))
|
||||
end
|
||||
o.description = translate("Select core, clashr support ssr while clash does not.")
|
||||
|
||||
|
||||
o = s:option(ListValue, "new_conf", translate("New Config(Rename fields)"))
|
||||
o:value("0", translate("Disable"))
|
||||
o:value("1", translate("Enable"))
|
||||
o.description = translate("https://github.com/Dreamacro/clash/commit/88d8f937938d7aba774b1af638df6910b1a1a14d")
|
||||
|
||||
o = s:option(ListValue, "g_rules", translate("Game Rules"))
|
||||
o.default = "0"
|
||||
o:value("0", translate("Disable"))
|
||||
|
||||
@ -71,6 +71,11 @@ o.title = translate("Config Name")
|
||||
o.rmempty = true
|
||||
o.description = translate("Give a name for your config")
|
||||
|
||||
o = s:option(ListValue, "new_conff", translate("New Config(Rename fields)"))
|
||||
o:value("0", translate("Disable"))
|
||||
o:value("1", translate("Enable"))
|
||||
o.description = translate("https://github.com/Dreamacro/clash/commit/88d8f937938d7aba774b1af638df6910b1a1a14d")
|
||||
|
||||
cc = s:option(Flag, "same_tag", translate("Force Same Name"))
|
||||
cc.default = 1
|
||||
cc.description = translate("Enable to overwrite config file")
|
||||
|
||||
@ -21,6 +21,11 @@ y:value("0", translate("disabled"))
|
||||
y:value("1", translate("enabled"))
|
||||
y.description = translate("Set custom DNS forwarder in DHCP and DNS Settings and forward all dns traffic to clash")
|
||||
|
||||
y = s:option(ListValue, "enable_udp", translate("Enable UDP"))
|
||||
y:value("0", translate("disabled"))
|
||||
y:value("1", translate("enabled"))
|
||||
y.description = translate("Enable udp traffic ,make sure your server support udp")
|
||||
|
||||
deldns = s:option(Flag, "delan", translate("Remove Lan DNS"))
|
||||
deldns.description = translate("Remove Lan custom DNS Servers when client is disabled")
|
||||
|
||||
@ -35,17 +40,16 @@ dns.datatype = "ipaddr"
|
||||
dns.cast = "string"
|
||||
dns:depends("culan", 1)
|
||||
|
||||
y = s:option(ListValue, "ipv6", translate("Enable ipv6"))
|
||||
y:value("0", translate("disabled"))
|
||||
y:value("1", translate("enabled"))
|
||||
y.description = translate("Allow ipv6 traffic through clash")
|
||||
|
||||
|
||||
md = s:option(Flag, "tun_mode", translate("Tun Mode DNS"))
|
||||
md.default = 0
|
||||
md.description = translate("Enable Tun custom DNS and make sure you are using tun supported core")
|
||||
md:depends("mode", 0)
|
||||
|
||||
y = s:option(ListValue, "ipv6", translate("Enable ipv6"))
|
||||
y:value("0", translate("disabled"))
|
||||
y:value("1", translate("enabled"))
|
||||
y.description = translate("Allow ipv6 traffic through clash")
|
||||
|
||||
md = s:option(Flag, "mode", translate("Custom DNS"))
|
||||
md.default = 1
|
||||
|
||||
@ -161,7 +161,7 @@ var HTTP = {
|
||||
XHR.poll(1, '<%=luci.dispatcher.build_url("admin", "services", "clash", "status")%>', null, function(x, status) {
|
||||
if ( x && x.status == 200 ) {
|
||||
web.innerHTML = status.clash ? '<a type="button" class="btn" style="background-color:black;padding: 5px;" href="http://'+window.location.hostname+':'+status.dash_port+'/ui" target="_blank"/><b><font color="green"><%:DASHBOARD%></font></b></a>' : '<b><font color="red"><%:NOT RUNNING%></font></b>';
|
||||
webb.innerHTML = status.clash ? '<a type="button" class="btn" style="background-color:black;padding: 5px;" href="http://'+window.location.hostname+'/luci-static/yacd" target="_blank"/><b><font color="green"><%:DASHBOARD%></font></b></a>' : '<b><font color="red"><%:NOT RUNNING%></font></b>';
|
||||
webb.innerHTML = status.clash ? '<a type="button" class="btn" style="background-color:black;padding: 5px;" href="http://'+window.location.hostname+'/luci-static/yacd?hostname='+ status.localip + '&port=' + status.dash_port + '&secret=' + status.dash_pass +'" target="_blank"/><b><font color="green"><%:DASHBOARD%></font></b></a>' : '<b><font color="red"><%:NOT RUNNING%></font></b>';
|
||||
clash.innerHTML = status.clash ? '<b><font color="green"><%:RUNNING%></font> </b>' : '<b><font color="red"><%:NOT RUNNING%></font></b>';
|
||||
ip.innerHTML = status.localip ? '<b><font color="green">'+status.localip+'</font> </b>' : '<em><b><font color="red"><%:NOT SET%></font></b></em>';
|
||||
port.innerHTML = status.dash_port ? '<b><font color="green">'+status.dash_port+'</font> </b>' : '<em><b><font color="red"><%:NOT SET%></font></b></em>';
|
||||
|
||||
@ -1025,5 +1025,11 @@ msgstr "Yacd控制面板"
|
||||
msgid "Enable Ping Servers"
|
||||
msgstr "启用Ping服务器"
|
||||
|
||||
msgid "DISABLED"
|
||||
msgstr "禁用"
|
||||
msgid "New Config(Rename fields)"
|
||||
msgstr "新配置(重命名字段)"
|
||||
|
||||
msgid "Enable UDP"
|
||||
msgstr "启用UDP"
|
||||
|
||||
msgid "Enable udp traffic ,make sure your server support udp"
|
||||
msgstr "启用udp流量,服务器必须支持udp"
|
||||
|
||||
@ -28,6 +28,9 @@ config clash 'config'
|
||||
option auto_update_time '12'
|
||||
option clear_time '12'
|
||||
option append_rules '0'
|
||||
option enable_udp '0'
|
||||
option new_conf '0'
|
||||
option ping_enable '1'
|
||||
|
||||
|
||||
config groups
|
||||
@ -57,27 +60,11 @@ config groups
|
||||
option name '🔑Proxy'
|
||||
list other_group 'ALL'
|
||||
|
||||
|
||||
config addtype
|
||||
option type 'SRC-IP-CIDR'
|
||||
option pgroup 'DIRECT'
|
||||
list ipaaddr '192.168.1.4/30'
|
||||
option type 'IP-CIDR'
|
||||
option pgroup 'REJECT'
|
||||
option ipaaddr '198.18.0.1/16'
|
||||
option res '1'
|
||||
|
||||
|
||||
config addtype
|
||||
option type 'SRC-IP-CIDR'
|
||||
option pgroup 'DIRECT'
|
||||
option ipaaddr '192.168.1.2/31'
|
||||
|
||||
config addtype
|
||||
option type 'DOMAIN-KEYWORD'
|
||||
option pgroup 'DIRECT'
|
||||
option ipaaddr 'baidu'
|
||||
|
||||
config addtype
|
||||
option type 'SRC-PORT'
|
||||
option pgroup 'DIRECT'
|
||||
option ipaaddr '22'
|
||||
|
||||
config addtype
|
||||
option type 'DST-PORT'
|
||||
option pgroup 'DIRECT'
|
||||
option ipaaddr '443'
|
||||
|
||||
@ -33,7 +33,7 @@ revert_dns() {
|
||||
add_cron(){
|
||||
config_type=$(uci get clash.config.config_type 2>/dev/null)
|
||||
#===========================================================================================================================
|
||||
[ -z "$(grep -w "/usr/share/clash/clash-watchdog.sh" $CRON_FILE)" ] && echo "*/1 * * * * /usr/share/clash/clash-watchdog.sh" >> $CRON_FILE
|
||||
[ -z "$(grep -w "/usr/share/clash/clash-watchdog.sh" $CRON_FILE)" ] && echo "*/2 * * * * /usr/share/clash/clash-watchdog.sh" >> $CRON_FILE
|
||||
[ -z "$(grep -w "/usr/share/clash/kill_watchdog.sh" $CRON_FILE)" ] && echo "*/1 * * * * /usr/share/clash/kill_watchdog.sh" >> $CRON_FILE
|
||||
clear=$(uci get clash.config.auto_clear_log 2>/dev/null)
|
||||
if [ "${clear}" -eq 1 ]; then
|
||||
@ -208,6 +208,16 @@ yml_dns_change(){
|
||||
#===========================================================================================================================
|
||||
}
|
||||
|
||||
|
||||
check(){
|
||||
|
||||
sed -i 's/Proxy Group:/proxy-groups:/g' "$CONFIG_YAML"
|
||||
sed -i 's/proxy-provider:/proxy-providers:/g' "$CONFIG_YAML"
|
||||
sed -i 's/Proxy:/proxies:/g' "$CONFIG_YAML"
|
||||
sed -i 's/Rule:/rules:/g' "$CONFIG_YAML"
|
||||
|
||||
}
|
||||
|
||||
rules(){
|
||||
#===========================================================================================================================
|
||||
|
||||
@ -218,9 +228,12 @@ rules(){
|
||||
core=$(uci get clash.config.core 2>/dev/null)
|
||||
tun_mode=$(uci get clash.config.tun_mode 2>/dev/null)
|
||||
lan_ip=$(uci get network.lan.ipaddr 2>/dev/null |awk -F '/' '{print $1}' 2>/dev/null)
|
||||
wan=$(ubus call network.interface.wan status 2>/dev/null | grep \"address\" | grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' 2>/dev/null)
|
||||
wan=$(ifconfig | grep 'inet addr' | awk '{print $2}' | cut -d: -f2 2>/dev/null)
|
||||
ip6=$(ifconfig | grep 'inet6 addr' | awk '{print $3}' 2>/dev/null)
|
||||
enable_udp=$(uci get clash.config.enable_udp 2>/dev/null)
|
||||
|
||||
if [ "${core}" -eq 1 ] || [ "${core}" -eq 2 ];then
|
||||
iptables -t nat -N clash
|
||||
iptables -t nat -N clash
|
||||
iptables -t nat -A clash -d 0.0.0.0/8 -j RETURN
|
||||
iptables -t nat -A clash -d 10.0.0.0/8 -j RETURN
|
||||
iptables -t nat -A clash -d 127.0.0.0/8 -j RETURN
|
||||
@ -230,18 +243,57 @@ rules(){
|
||||
iptables -t nat -A clash -d 224.0.0.0/4 -j RETURN
|
||||
iptables -t nat -A clash -d 240.0.0.0/4 -j RETURN
|
||||
iptables -t nat -A clash -d "${lan_ip}" -j RETURN
|
||||
if [ ! -z "${wan}" ]; then
|
||||
iptables -t nat -A clash -d "${wan}" -j RETURN
|
||||
if [ ! -z "${wan}" ]; then
|
||||
for wan_ip in $wan; do
|
||||
iptables -t mangle -A clash -d "$wan_ip" -j RETURN 2>/dev/null
|
||||
done
|
||||
fi
|
||||
iptables -t nat -A clash -p tcp -j REDIRECT --to-ports "${redir_port}"
|
||||
iptables -t nat -A PREROUTING -p tcp -j clash
|
||||
|
||||
|
||||
iptables -t nat -A clash -p tcp -j REDIRECT --to-ports "${redir_port}"
|
||||
iptables -t nat -A PREROUTING -p tcp -j clash
|
||||
|
||||
|
||||
|
||||
if [ "${enable_udp}" -eq 1 ]; then
|
||||
|
||||
ip rule add fwmark 1 table 100
|
||||
ip route add local default dev lo table 100
|
||||
|
||||
iptables -t mangle -N clash
|
||||
iptables -t mangle -A clash -d 0.0.0.0/8 -j RETURN
|
||||
iptables -t mangle -A clash -d 10.0.0.0/8 -j RETURN
|
||||
iptables -t mangle -A clash -d 127.0.0.0/8 -j RETURN
|
||||
iptables -t mangle -A clash -d 169.254.0.0/16 -j RETURN
|
||||
iptables -t mangle -A clash -d 172.16.0.0/12 -j RETURN
|
||||
iptables -t mangle -A clash -d 192.168.0.0/16 -j RETURN
|
||||
iptables -t mangle -A clash -d 224.0.0.0/4 -j RETURN
|
||||
iptables -t mangle -A clash -d 240.0.0.0/4 -j RETURN
|
||||
if [ ! -z "${wan}" ]; then
|
||||
for wan_ip in $wan; do
|
||||
iptables -t mangle -A clash -d "$wan_ip" -j RETURN 2>/dev/null
|
||||
done
|
||||
fi
|
||||
|
||||
iptables -t mangle -A clash -p udp -j TPROXY --on-port "${redir_port}" --tproxy-mark 1
|
||||
#iptables -t mangle -A clash -p udp --dport 53 -j TPROXY --on-port "${redir_port}" --tproxy-mark 0x01/0x01
|
||||
iptables -t mangle -A PREROUTING -p udp -j clash
|
||||
|
||||
fi
|
||||
|
||||
|
||||
|
||||
fake_ip_range=$(egrep '^ {0,}fake-ip-range' /etc/clash/config.yaml |grep fake-ip-range: |awk -F ': ' '{print $2}')
|
||||
|
||||
if [ ! -z "${fake_ip_range}" ];then
|
||||
iptables -t nat -A OUTPUT -p tcp -d $fake_ip_range -j REDIRECT --to-ports "${redir_port}"
|
||||
if [ "${enable_udp}" -eq 1 ]; then
|
||||
iptables -t mangle -A OUTPUT -p udp -d $fake_ip_range -j MARK --set-mark 1
|
||||
fi
|
||||
else
|
||||
iptables -t nat -A OUTPUT -p tcp -d 198.18.0.1/16 -j REDIRECT --to-ports "${redir_port}"
|
||||
if [ "${enable_udp}" -eq 1 ]; then
|
||||
iptables -t mangle -A OUTPUT -p udp -d 198.18.0.1/16 -j MARK --set-mark 1
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
@ -250,6 +302,20 @@ rules(){
|
||||
ip6tables -t nat -A clash_ipv6 -p tcp -j REDIRECT --to-ports "${redir_port}"
|
||||
ip6tables -t nat -A PREROUTING -p tcp -j clash_ipv6
|
||||
|
||||
|
||||
if [ "${enable_udp}" -eq 1 ]; then
|
||||
ip6tables -t mangle -N clash
|
||||
if [ ! -z "${ip6}" ]; then
|
||||
for lan_ip6 in $ip6; do
|
||||
if [ "$enable_udp" -eq 1 ]; then
|
||||
ip6tables -t mangle -A clash -d "$lan_ip6" -j RETURN 2>/dev/null
|
||||
fi
|
||||
done
|
||||
fi
|
||||
ip6tables -t mangle -A clash -p udp -j TPROXY --on-port "$proxy_port" --tproxy-mark 1
|
||||
ip6tables -t mangle -A PREROUTING -p udp -j clash
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
elif [ "${core}" -eq 3 ] || [ "${core}" -eq 4 ];then
|
||||
@ -281,6 +347,7 @@ rules(){
|
||||
ip link set $TUN_DEVICE_NAME up
|
||||
ip address replace 198.18.0.0/16 dev $TUN_DEVICE_NAME
|
||||
ip route replace default dev $TUN_DEVICE_NAME table "$PROXY_ROUTE_TABLE"
|
||||
iptables -t nat -I PREROUTING -p tcp --dport 53 -j ACCEPT
|
||||
elif [ "${core}" -eq 4 ];then
|
||||
ip route replace default dev utun table "$PROXY_ROUTE_TABLE"
|
||||
fi
|
||||
@ -293,6 +360,7 @@ rules(){
|
||||
iptables -t mangle -A clash -m set --match-set localnetwork dst -j RETURN
|
||||
iptables -t mangle -I OUTPUT -j clash
|
||||
iptables -t mangle -I PREROUTING -m set ! --match-set localnetwork dst -j MARK --set-mark "$PROXY_FWMARK"
|
||||
iptables -t nat -I PREROUTING -p tcp --dport 53 -j ACCEPT
|
||||
|
||||
if [ -f /usr/sbin/ip6tables ] && [ "${ipv6}" -eq 1 ]; then
|
||||
ip6tables -t mangle -I PREROUTING -j MARK --set-mark "$PROXY_FWMARK"
|
||||
@ -321,6 +389,7 @@ enable=$(uci get clash.config.enable 2>/dev/null)
|
||||
core=$(uci get clash.config.core 2>/dev/null)
|
||||
tun_mode=$(uci get clash.config.tun_mode 2>/dev/null)
|
||||
|
||||
|
||||
if [ -f /etc/clash/config.yaml ];then
|
||||
rm -rf /etc/clash/config.yaml >/dev/null 2>&1
|
||||
fi
|
||||
@ -370,11 +439,14 @@ elif [ "${core}" -eq 3 ] && [ ! -f /etc/clash/clashtun/clash ]; then
|
||||
exit 0
|
||||
else
|
||||
if [ -f $CONFIG_YAML ] && [ "$(ls -l $CONFIG_YAML|awk '{print int($5/1024)}')" -ne 0 ] ; then
|
||||
|
||||
new_conf=$(uci get clash.config.new_conf 2>/dev/null)
|
||||
yml_change >/dev/null 2>&1
|
||||
if [ "$new_conf" -eq 1 ];then
|
||||
check >/dev/null 2>&1
|
||||
fi
|
||||
|
||||
checktype=$(grep -c "type: ssr" /etc/clash/config.yaml 2>/dev/null)
|
||||
if [ "${checktype}" -gt 0 ] && [ "${core}" -eq 1 ] || [ "${checktype}" -gt 0 ] && [ "${core}" -eq 3 ]; then
|
||||
if [ "${checktype}" -gt 0 ] && [ "${core}" -ne 2 ]; then
|
||||
|
||||
if [ "${lang}" == "en" ] || [ $lang == "auto" ];then
|
||||
echo "Clash Core does not Support Config, use clashr core" >$REAL_LOG
|
||||
@ -632,23 +704,53 @@ stop(){
|
||||
echo "删除clash iptables规则" >$REAL_LOG
|
||||
fi
|
||||
|
||||
iptables -t nat -F clash >/dev/null 2>&1 && iptables -t nat -X clash >/dev/null 2>&1
|
||||
nat_indexs=$(iptables -nvL PREROUTING -t nat | sed 1,2d | sed -n '/clash/=' | sort -r)
|
||||
for nat_index in $nat_indexs; do
|
||||
iptables -t nat -D PREROUTING $nat_index >/dev/null 2>&1
|
||||
iptables -t nat -F clash >/dev/null 2>&1 && iptables -t nat -X clash >/dev/null 2>&1
|
||||
iptables -t mangle -F clash >/dev/null 2>&1 && iptables -t mangle -D PREROUTING -p udp -j clash >/dev/null 2>&1 && iptables -t mangle -X clash >/dev/null 2>&1
|
||||
done
|
||||
|
||||
sleep 1
|
||||
|
||||
ip rule del fwmark 1 table 100 >/dev/null 2>&1
|
||||
ip route del local default dev lo table 100 >/dev/null 2>&1
|
||||
|
||||
iptables -t nat -D PREROUTING -p tcp --dport 53 -j ACCEPT >/dev/null 2>&1
|
||||
|
||||
sleep 1
|
||||
|
||||
ip6tables -t mangle -F clash >/dev/null 2>&1
|
||||
ip6tables -t mangle -D PREROUTING -p udp -j clash >/dev/null 2>&1
|
||||
ip6tables -t mangle -X clash >/dev/null 2>&1
|
||||
|
||||
|
||||
out_linese=$(iptables -nvL OUTPUT -t mangle |sed 1,2d |sed -n '/198.18.0.1\/16/=' 2>/dev/null |sort -rn)
|
||||
for out_linee in $out_linese; do
|
||||
iptables -t mangle -D OUTPUT "$out_linee" >/dev/null 2>&1
|
||||
done
|
||||
|
||||
out_linesee=$(iptables -nvL OUTPUT -t mangle |sed 1,2d |sed -n '/198.18.0.0\/16/=' 2>/dev/null |sort -rn)
|
||||
for out_linees in $out_linesee; do
|
||||
iptables -t mangle -D OUTPUT "$out_linees" >/dev/null 2>&1
|
||||
done
|
||||
|
||||
nat_indexs=$(iptables -nvL PREROUTING -t nat | sed 1,2d | sed -n '/clash/=' | sort -r)
|
||||
for nat_index in $nat_indexs; do
|
||||
iptables -t nat -D PREROUTING $nat_index >/dev/null 2>&1
|
||||
done
|
||||
|
||||
|
||||
|
||||
fake=$(iptables -nvL OUTPUT -t nat |sed 1,2d |sed -n '/198.18.0.0\/16/=' |sort -r)
|
||||
for fake in $fake; do
|
||||
iptables -t nat -D OUTPUT $fake >/dev/null 2>&1
|
||||
done
|
||||
for fake in $fake; do
|
||||
iptables -t nat -D OUTPUT $fake >/dev/null 2>&1
|
||||
done
|
||||
|
||||
fake2=$(iptables -nvL OUTPUT -t nat |sed 1,2d |sed -n '/198.18.0.1\/16/=' |sort -r)
|
||||
for fake2 in $fake2; do
|
||||
iptables -t nat -D OUTPUT $fake2 >/dev/null 2>&1
|
||||
done
|
||||
for fake2 in $fake2; do
|
||||
iptables -t nat -D OUTPUT $fake2 >/dev/null 2>&1
|
||||
done
|
||||
|
||||
remove_mark >/dev/null 2>&1
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
Rule:
|
||||
rules:
|
||||
# (GlobalTV)
|
||||
# > ABC
|
||||
- DOMAIN-SUFFIX,edgedatg.com,📺GlobalTV
|
||||
|
||||
@ -4,9 +4,9 @@
|
||||
<meta charset="UTF-8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<link rel="icon" type="image/x-icon" href="https://cdn.jsdelivr.net/gh/Dreamacro/clash/docs/logo.png" />
|
||||
<title>Clash</title>
|
||||
<link href="main.f302eae39f433a9c3fa1.css" rel="stylesheet"></head>
|
||||
<title>Clash Dashboard</title>
|
||||
<link href="main.f42e08fe49cdc3329278.css" rel="stylesheet"></head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
<script type="text/javascript" src="js/1.bundle.f302eae39f433a9c3fa1.min.js"></script><script type="text/javascript" src="js/bundle.f302eae39f433a9c3fa1.min.js"></script></body>
|
||||
<script type="text/javascript" src="js/1.bundle.f42e08fe49cdc3329278.min.js"></script><script type="text/javascript" src="js/bundle.f42e08fe49cdc3329278.min.js"></script></body>
|
||||
</html>
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -5,6 +5,7 @@ lang=$(uci get luci.main.lang 2>/dev/null)
|
||||
loadgroups=$(uci get clash.config.loadgroups 2>/dev/null)
|
||||
loadservers=$(uci get clash.config.loadservers 2>/dev/null)
|
||||
loadprovider=$(uci get clash.config.loadprovider 2>/dev/null)
|
||||
new_conf=$(uci get clash.config.new_conff 2>/dev/null)
|
||||
|
||||
run_load(){
|
||||
|
||||
@ -20,7 +21,7 @@ if [ ! -f $load ] || [ "$(ls -l $load|awk '{print int($5)}')" -eq 0 ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
CFG_FILE="/etc/config/clash"
|
||||
REAL_LOG="/usr/share/clash/clash_real.txt"
|
||||
@ -37,6 +38,13 @@ rm -rf /tmp/Proxy_Group /tmp/servers.yaml /tmp/yaml_proxy.yaml /tmp/group_*.yaml
|
||||
|
||||
sleep 3
|
||||
|
||||
if [ "${new_conf}" -eq 1 ];then
|
||||
sed -i 's/Proxy Group:/proxy-groups:/g' "$load"
|
||||
sed -i 's/proxy-provider:/proxy-providers:/g' "$load"
|
||||
sed -i 's/Proxy:/proxies:/g' "$load"
|
||||
sed -i 's/Rule:/rules:/g' "$load"
|
||||
else
|
||||
|
||||
[ ! -z "$(grep "^ \{0,\}'Proxy':" "$load")" ] || [ ! -z "$(grep '^ \{0,\}"Proxy":' "$load")" ] && {
|
||||
sed -i "/^ \{0,\}\'Proxy\':/c\Proxy:" "$load"
|
||||
sed -i '/^ \{0,\}\"Proxy\":/c\Proxy:' "$load"
|
||||
@ -62,8 +70,27 @@ rm -rf /tmp/Proxy_Group /tmp/servers.yaml /tmp/yaml_proxy.yaml /tmp/group_*.yaml
|
||||
sed -i '/^ \{0,\}\"dns\":/c\dns:' "$load"
|
||||
}
|
||||
|
||||
fi
|
||||
|
||||
[ ! -z "$(grep "^ \{0,\}'dns':" "$load")" ] || [ ! -z "$(grep '^ \{0,\}"dns":' "$load")" ] && {
|
||||
sed -i "/^ \{0,\}\'dns\':/c\dns:" "$load"
|
||||
sed -i '/^ \{0,\}\"dns\":/c\dns:' "$load"
|
||||
}
|
||||
|
||||
#awk '/Proxy:/,/Rule:/{print}' $load 2>/dev/null |sed "s/\'//g" 2>/dev/null |sed 's/\"//g' 2>/dev/null |sed 's/\t/ /g' 2>/dev/null |grep name: |awk -F 'name:' '{print $2}' |sed 's/,.*//' |sed 's/^ \{0,\}//' 2>/dev/null |sed 's/ \{0,\}$//' 2>/dev/null |sed 's/ \{0,\}\}\{0,\}$//g' 2>/dev/null >/tmp/Proxy_Group 2>&1
|
||||
|
||||
|
||||
if [ "${new_conf}" -eq 1 ];then
|
||||
group_len=$(sed -n '/^ \{0,\}proxy-groups:/=' "$load" 2>/dev/null)
|
||||
provider_len=$(sed -n '/^ \{0,\}proxy-providers:/=' "$load" 2>/dev/null)
|
||||
if [ "$provider_len" -ge "$group_len" ]; then
|
||||
awk '/proxies:/,/proxy-providers:/{print}' "$load" 2>/dev/null |sed "s/\'//g" 2>/dev/null |sed 's/\"//g' 2>/dev/null |sed 's/\t/ /g' 2>/dev/null |grep name: |awk -F 'name:' '{print $2}' |sed 's/,.*//' |sed 's/^ \{0,\}//' 2>/dev/null |sed 's/ \{0,\}$//' 2>/dev/null |sed 's/ \{0,\}\}\{0,\}$//g' 2>/dev/null >/tmp/Proxy_Group 2>&1
|
||||
sed -i "s/proxy-providers://g" /tmp/Proxy_Group 2>&1
|
||||
else
|
||||
awk '/proxies:/,/rules:/{print}' "$load" 2>/dev/null |sed "s/\'//g" 2>/dev/null |sed 's/\"//g' 2>/dev/null |sed 's/\t/ /g' 2>/dev/null |grep name: |awk -F 'name:' '{print $2}' |sed 's/,.*//' |sed 's/^ \{0,\}//' 2>/dev/null |sed 's/ \{0,\}$//' 2>/dev/null |sed 's/ \{0,\}\}\{0,\}$//g' 2>/dev/null >/tmp/Proxy_Group 2>&1
|
||||
fi
|
||||
|
||||
elif [ "${new_conf}" -eq 0 ];then
|
||||
group_len=$(sed -n '/^ \{0,\}Proxy Group:/=' "$load" 2>/dev/null)
|
||||
provider_len=$(sed -n '/^ \{0,\}proxy-provider:/=' "$load" 2>/dev/null)
|
||||
if [ "$provider_len" -ge "$group_len" ]; then
|
||||
@ -71,7 +98,9 @@ rm -rf /tmp/Proxy_Group /tmp/servers.yaml /tmp/yaml_proxy.yaml /tmp/group_*.yaml
|
||||
sed -i "s/proxy-provider://g" /tmp/Proxy_Group 2>&1
|
||||
else
|
||||
awk '/Proxy:/,/Rule:/{print}' "$load" 2>/dev/null |sed "s/\'//g" 2>/dev/null |sed 's/\"//g' 2>/dev/null |sed 's/\t/ /g' 2>/dev/null |grep name: |awk -F 'name:' '{print $2}' |sed 's/,.*//' |sed 's/^ \{0,\}//' 2>/dev/null |sed 's/ \{0,\}$//' 2>/dev/null |sed 's/ \{0,\}\}\{0,\}$//g' 2>/dev/null >/tmp/Proxy_Group 2>&1
|
||||
fi
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
|
||||
if [ "$?" -eq "0" ]; then
|
||||
@ -89,7 +118,17 @@ rm -rf /tmp/Proxy_Group /tmp/servers.yaml /tmp/yaml_proxy.yaml /tmp/group_*.yaml
|
||||
|
||||
|
||||
#awk '/Proxy Group:/,/Rule:/{print}' $load 2>/dev/null |sed 's/\"//g' 2>/dev/null |sed "s/\'//g" 2>/dev/null |sed 's/\t/ /g' 2>/dev/null >/tmp/yaml_group.yaml 2>&1
|
||||
if [ "${new_conf}" -eq 1 ];then
|
||||
group_len=$(sed -n '/^ \{0,\}Proxy Group:/=' "$load" 2>/dev/null)
|
||||
provider_len=$(sed -n '/^ \{0,\}proxy-provider:/=' "$load" 2>/dev/null)
|
||||
if [ "$provider_len" -ge "$group_len" ]; then
|
||||
awk '/proxy-groups:/,/proxy-providers:/{print}' "$load" 2>/dev/null |sed 's/\"//g' 2>/dev/null |sed "s/\'//g" 2>/dev/null |sed 's/\t/ /g' 2>/dev/null >/tmp/yaml_group.yaml 2>&1
|
||||
sed -i "s/proxy-providers://g" /tmp/yaml_group.yaml 2>&1
|
||||
else
|
||||
awk '/proxy-groups:/,/rules:/{print}' "$load" 2>/dev/null |sed 's/\"//g' 2>/dev/null |sed "s/\'//g" 2>/dev/null |sed 's/\t/ /g' 2>/dev/null >/tmp/yaml_group.yaml 2>&1
|
||||
fi
|
||||
|
||||
elif [ "${new_conf}" -eq 0 ];then
|
||||
group_len=$(sed -n '/^ \{0,\}Proxy Group:/=' "$load" 2>/dev/null)
|
||||
provider_len=$(sed -n '/^ \{0,\}proxy-provider:/=' "$load" 2>/dev/null)
|
||||
if [ "$provider_len" -ge "$group_len" ]; then
|
||||
@ -99,6 +138,7 @@ else
|
||||
awk '/Proxy Group:/,/Rule:/{print}' "$load" 2>/dev/null |sed 's/\"//g' 2>/dev/null |sed "s/\'//g" 2>/dev/null |sed 's/\t/ /g' 2>/dev/null >/tmp/yaml_group.yaml 2>&1
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
#######READ GROUPS START
|
||||
if [ $loadgroups -eq 1 ];then
|
||||
@ -237,8 +277,11 @@ uci commit clash
|
||||
fi
|
||||
|
||||
|
||||
|
||||
if [ "${new_conf}" -eq 1 ];then
|
||||
awk '/^ {0,}rules:/,/^ {0,}##END/{print}' $load 2>/dev/null |sed 's/\"//g' 2>/dev/null |sed "s/\'//g" 2>/dev/null |sed 's/\t/ /g' 2>/dev/null >/tmp/rule.yaml 2>&1
|
||||
else
|
||||
awk '/^ {0,}Rule:/,/^ {0,}##END/{print}' $load 2>/dev/null |sed 's/\"//g' 2>/dev/null |sed "s/\'//g" 2>/dev/null |sed 's/\t/ /g' 2>/dev/null >/tmp/rule.yaml 2>&1
|
||||
fi
|
||||
rm -rf /usr/shar/clash/custom_rule.yaml 2>/dev/null
|
||||
mv /tmp/rule.yaml /usr/share/clash/custom_rule.yaml 2>/dev/null
|
||||
rm -rf /tmp/rule.yaml 2>&1
|
||||
@ -251,8 +294,32 @@ fi
|
||||
#awk '/^ {0,}Proxy:/,/^ {0,}Proxy Group:/{print}' $load 2>/dev/null |sed 's/\"//g' 2>/dev/null |sed "s/\'//g" 2>/dev/null |sed 's/\t/ /g' 2>/dev/null >/tmp/yaml_proxy.yaml 2>&1
|
||||
|
||||
|
||||
|
||||
if [ "${new_conf}" -eq 1 ];then
|
||||
|
||||
proxy_len=$(sed -n '/^ \{0,\}proxies:/=' $load 2>/dev/null)
|
||||
group_len=$(sed -n '/^ \{0,\}proxy-groups:/=' "$load" 2>/dev/null)
|
||||
provider_len=$(sed -n '/^ \{0,\}proxy-providers:/=' $load 2>/dev/null)
|
||||
|
||||
if [ ! -z "$provider_len" ] && [ "$provider_len" -ge "$proxy_len" ] && [ "$provider_len" -le "$group_len" ]; then
|
||||
awk '/^ {0,}proxies:/,/^ {0,}proxy-providers:/{print}' "$load" 2>/dev/null |sed 's/\"//g' 2>/dev/null |sed "s/\'//g" 2>/dev/null |sed 's/\t/ /g' 2>/dev/null >/tmp/yaml_proxy.yaml 2>&1
|
||||
awk '/^ {0,}proxy-providers:/,/^ {0,}proxy-groups:/{print}' "$load" 2>/dev/null |sed 's/\"//g' 2>/dev/null |sed "s/\'//g" 2>/dev/null |sed 's/\t/ /g' 2>/dev/null >/tmp/yaml_provider.yaml 2>&1
|
||||
sed -i "s/proxy-groups://g" /tmp/yaml_provider.yaml 2>&1
|
||||
sed -i "s/proxy-providers://g" /tmp/yaml_proxy.yaml 2>&1
|
||||
elif [ ! -z "$provider_len" ] && [ "$provider_len" -le "$proxy_len" ]; then
|
||||
awk '/^ {0,}proxies:/,/^ {0,}proxy-groups:/{print}' "$load" 2>/dev/null |sed 's/\"//g' 2>/dev/null |sed "s/\'//g" 2>/dev/null |sed 's/\t/ /g' 2>/dev/null >/tmp/yaml_proxy.yaml 2>&1
|
||||
awk '/^ {0,}proxy-providers:/,/^ {0,}proxies:/{print}' "$load" 2>/dev/null |sed 's/\"//g' 2>/dev/null |sed "s/\'//g" 2>/dev/null |sed 's/\t/ /g' 2>/dev/null >/tmp/yaml_provider.yaml 2>&1
|
||||
sed -i "s/Proxy://g" /tmp/yaml_provider.yaml 2>&1
|
||||
sed -i "s/proxy-groups://g" /tmp/yaml_proxy.yaml 2>&1
|
||||
elif [ ! -z "$provider_len" ] && [ "$provider_len" -ge "$group_len" ]; then
|
||||
awk '/^ {0,}proxies:/,/^ {0,}proxy-groups:/{print}' "$load" 2>/dev/null |sed 's/\"//g' 2>/dev/null |sed "s/\'//g" 2>/dev/null |sed 's/\t/ /g' 2>/dev/null >/tmp/yaml_proxy.yaml 2>&1
|
||||
awk '/^ {0,}proxy-providers:/,/^ {0,}rules:/{print}' "$load" 2>/dev/null |sed 's/\"//g' 2>/dev/null |sed "s/\'//g" 2>/dev/null |sed 's/\t/ /g' 2>/dev/null >/tmp/yaml_provider.yaml 2>&1
|
||||
sed -i "s/rules://g" /tmp/yaml_provider.yaml 2>&1
|
||||
sed -i "s/proxy-groups://g" /tmp/yaml_proxy.yaml 2>&1
|
||||
else
|
||||
awk '/^ {0,}proxies:/,/^ {0,}proxy-groups:/{print}' "$load" 2>/dev/null |sed 's/\"//g' 2>/dev/null |sed "s/\'//g" 2>/dev/null |sed 's/\t/ /g' 2>/dev/null >/tmp/yaml_proxy.yaml 2>&1
|
||||
fi
|
||||
|
||||
elif [ "${new_conf}" -eq 0 ];then
|
||||
proxy_len=$(sed -n '/^ \{0,\}Proxy:/=' $load 2>/dev/null)
|
||||
group_len=$(sed -n '/^ \{0,\}Proxy Group:/=' "$load" 2>/dev/null)
|
||||
provider_len=$(sed -n '/^ \{0,\}proxy-provider:/=' $load 2>/dev/null)
|
||||
@ -276,7 +343,7 @@ else
|
||||
awk '/^ {0,}Proxy:/,/^ {0,}Proxy Group:/{print}' "$load" 2>/dev/null |sed 's/\"//g' 2>/dev/null |sed "s/\'//g" 2>/dev/null |sed 's/\t/ /g' 2>/dev/null >/tmp/yaml_proxy.yaml 2>&1
|
||||
fi
|
||||
|
||||
|
||||
fi
|
||||
match_provider="/tmp/match_provider.list"
|
||||
single_provider="/tmp/provider.yaml"
|
||||
single_provider_gen="/tmp/provider_gen.yaml"
|
||||
@ -296,7 +363,11 @@ count=1
|
||||
sed -i '/^ *$/d' $provider_file 2>/dev/null
|
||||
sed -i '/^ \{0,\}#/d' $provider_file 2>/dev/null
|
||||
sed -i 's/\t/ /g' $provider_file 2>/dev/null
|
||||
if [ "${new_conf}" -eq 1 ];then
|
||||
provider_line=$(awk '{print $0"#*#"FNR}' $provider_file |grep -v '^ \{0,\}proxy-providers:\|^ \{0,\}proxies:\|^ \{0,\}proxy-groups:\|^ \{0,\}rules:\|^ \{0,\}type:\|^ \{0,\}path:\|^ \{0,\}url:\|^ \{0,\}interval:\|^ \{0,\}health-check:\|^ \{0,\}enable:' |awk -F '#*#' '{print $3}')
|
||||
elif [ "${new_conf}" -eq 0 ];then
|
||||
provider_line=$(awk '{print $0"#*#"FNR}' $provider_file |grep -v '^ \{0,\}proxy-provider:\|^ \{0,\}Proxy:\|^ \{0,\}Proxy Group:\|^ \{0,\}Rule:\|^ \{0,\}type:\|^ \{0,\}path:\|^ \{0,\}url:\|^ \{0,\}interval:\|^ \{0,\}health-check:\|^ \{0,\}enable:' |awk -F '#*#' '{print $3}')
|
||||
fi
|
||||
provider_num=$(grep -c "^ \{0,\}type:" $provider_file)
|
||||
provider_count=1
|
||||
|
||||
|
||||
@ -1 +1 @@
|
||||
1.6.0
|
||||
1.6.1
|
||||
|
||||
@ -10,7 +10,7 @@ config_name=$(uci get clash.config.create_tag 2>/dev/null)
|
||||
CONFIG_YAML="/usr/share/clash/config/custom/${config_name}.yaml"
|
||||
check_name=$(grep -F "${config_name}.yaml" "/usr/share/clashbackup/create_list.conf")
|
||||
same_tag=$(uci get clash.config.same_tag 2>/dev/null)
|
||||
|
||||
new_conf=$(uci get clash.config.new_conff 2>/dev/null)
|
||||
|
||||
if [ $config_name == "" ] || [ -z $config_name ];then
|
||||
|
||||
@ -150,7 +150,11 @@ fi
|
||||
|
||||
if [ -f $PROVIDER_FILE ];then
|
||||
sed -i "1i\ " $PROVIDER_FILE 2>/dev/null
|
||||
if [ "${new_conf}" -eq 1 ];then
|
||||
sed -i "2i\proxy-providers:" $PROVIDER_FILE 2>/dev/null
|
||||
else
|
||||
sed -i "2i\proxy-provider:" $PROVIDER_FILE 2>/dev/null
|
||||
fi
|
||||
#echo "proxy-provider:" >$PROVIDER_FILE
|
||||
rm -rf /tmp/Proxy_Provider
|
||||
|
||||
@ -404,8 +408,12 @@ fi
|
||||
if [ ! -z "${scount}" ] || [ "${scount}" -ne 0 ];then
|
||||
|
||||
sed -i "1i\ " $SERVER_FILE 2>/dev/null
|
||||
sed -i "2i\Proxy:" $SERVER_FILE 2>/dev/null
|
||||
|
||||
if [ "${new_conf}" -eq 1 ];then
|
||||
sed -i "2i\proxies:" $SERVER_FILE 2>/dev/null
|
||||
else
|
||||
sed -i "2i\Proxy:" $SERVER_FILE 2>/dev/null
|
||||
fi
|
||||
egrep '^ {0,}-' $SERVER_FILE |grep name: |awk -F 'name: ' '{print $2}' |sed 's/,.*//' >$Proxy_Group 2>&1
|
||||
|
||||
sed -i "s/^ \{0,\}/ - /" $Proxy_Group 2>/dev/null
|
||||
@ -549,8 +557,12 @@ config_foreach yml_groups_set "groups"
|
||||
|
||||
if [ "$(ls -l $GROUP_FILE|awk '{print $5}')" -ne 0 ]; then
|
||||
sed -i "1i\ " $GROUP_FILE 2>/dev/null
|
||||
if [ "${new_conf}" -eq 1 ];then
|
||||
sed -i "2i\proxy-groups:" $GROUP_FILE 2>/dev/null
|
||||
else
|
||||
sed -i "2i\Proxy Group:" $GROUP_FILE 2>/dev/null
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
@ -6,13 +6,23 @@ HISTORY_PATH="/usr/share/clashbackup/history"
|
||||
SECRET=$(uci get clash.config.dash_pass 2>/dev/null)
|
||||
LAN_IP=$(uci get network.lan.ipaddr 2>/dev/null |awk -F '/' '{print $1}' 2>/dev/null)
|
||||
PORT=$(uci get clash.config.dash_port 2>/dev/null)
|
||||
|
||||
urlencode() {
|
||||
local data
|
||||
if [ "$#" != 1 ]; then
|
||||
return 1
|
||||
fi
|
||||
data=$(curl -s -o /dev/null -w %{url_effective} --get --data-urlencode "$1" "")
|
||||
if [ ! -z "$data" ]; then
|
||||
echo "${data##/?}"
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
cat $HISTORY_PATH |while read line
|
||||
do
|
||||
if [ -z "$(echo $line |grep "#*#")" ]; then
|
||||
continue
|
||||
else
|
||||
GORUP_NAME=$(echo $line |awk -F '#*#' '{print $1}')
|
||||
GORUP_NAME=$(urlencode "$(echo $line |awk -F '#*#' '{print $1}')")
|
||||
NOW_NAME=$(echo $line |awk -F '#*#' '{print $3}')
|
||||
curl -H "Authorization: Bearer ${SECRET}" -H "Content-Type:application/json" -X PUT -d '{"name":"'"$NOW_NAME"'"}' http://"$LAN_IP":"$PORT"/proxies/"$GORUP_NAME" >/dev/null 2>&1
|
||||
fi
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1 @@
|
||||
yacd.haishan.me
|
||||
@ -0,0 +1,12 @@
|
||||
# for netlify hosting
|
||||
# https://docs.netlify.com/routing/headers/#syntax-for-the-headers-file
|
||||
|
||||
/*
|
||||
X-Frame-Options: DENY
|
||||
X-XSS-Protection: 1; mode=block
|
||||
X-Content-Type-Options: nosniff
|
||||
Referrer-Policy: same-origin
|
||||
/*.css
|
||||
Cache-Control: public, max-age=31536000, immutable
|
||||
/*.js
|
||||
Cache-Control: public, max-age=31536000, immutable
|
||||
File diff suppressed because one or more lines are too long
@ -2,21 +2,20 @@
|
||||
._2MMSFnbhST{stroke-dasharray:890;stroke-dashoffset:890;-webkit-animation:apL4DUAKgd 3s ease-in-out infinite normal forwards;animation:apL4DUAKgd 3s ease-in-out infinite normal forwards}@-webkit-keyframes apL4DUAKgd{0%{stroke-dashoffset:890}to{stroke-dashoffset:0}}@keyframes apL4DUAKgd{0%{stroke-dashoffset:890}to{stroke-dashoffset:0}}
|
||||
._3oi0NFbeOm{opacity:.5;width:100%;height:100%;display:-webkit-box;display:flex;-webkit-box-pack:center;justify-content:center;-webkit-box-align:center;align-items:center}
|
||||
._1rJPiLWN4s{position:fixed;top:0;bottom:0;left:0;right:0;overflow:hidden;padding:20px;background:var(--color-background);color:var(--color-text);text-align:center}._3h_IywJG1l{color:#2a477a;opacity:.6;display:-webkit-box;display:flex;-webkit-box-pack:center;justify-content:center;padding:40px}.aXXDDfyTjE,._3h_IywJG1l{-webkit-box-align:center;align-items:center}.aXXDDfyTjE{display:-webkit-inline-box;display:inline-flex;color:var(--color-text-secondary)}.aXXDDfyTjE:active,.aXXDDfyTjE:hover{color:#387cec}.aXXDDfyTjE svg{margin-right:5px}
|
||||
._30oJwXNik9{background:var(--color-bg-sidebar);position:relative}._1SsCcpJvxN{display:block}._2r8EkOI78X{display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center;padding:25px 0 15px;color:#2a477a;-webkit-transition:color .3s ease-in-out;transition:color .3s ease-in-out}@media (max-width:768px){._2r8EkOI78X{display:none}}._2r8EkOI78X:hover{-webkit-animation:_2KRqAfqV8c .3s ease-in-out 0s infinite alternate;animation:_2KRqAfqV8c .3s ease-in-out 0s infinite alternate}._2r8EkOI78X img{width:80px;height:80px}@-webkit-keyframes _2KRqAfqV8c{0%{color:#2a477a}to{color:#1f52ac}}@keyframes _2KRqAfqV8c{0%{color:#2a477a}to{color:#1f52ac}}@media (max-width:768px){._2vUQ0Hs_C5{display:-webkit-box;display:flex;-webkit-box-pack:justify;justify-content:space-between;overflow:scroll}}._8mEn9Wlw1n{color:var(--color-text);text-decoration:none;display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;padding:6px 16px}@media screen and (min-width:30em){._8mEn9Wlw1n{padding:8px 20px}}@media (max-width:768px){._8mEn9Wlw1n{-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}}._8mEn9Wlw1n svg{color:var(--color-icon);width:22px;height:22px}@media screen and (min-width:30em){._8mEn9Wlw1n svg{width:24px;height:24px}}._1WyHmd6t6y{background:var(--color-sb-active-row-bg)}@media (max-width:768px){._1WyHmd6t6y{background:none;border-bottom:2px solid #387cec}}._2eMIYGbP9O{padding-left:14px;font-size:.75em}@media (max-width:768px){._2eMIYGbP9O{padding-left:0;padding-top:5px}}@media screen and (min-width:30em){._2eMIYGbP9O{font-size:1em}}.nURY8qkFLS{--sz:50px;position:absolute;bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:var(--sz);height:var(--sz);padding:20px 0;display:-webkit-box;display:flex;-webkit-box-pack:center;justify-content:center;-webkit-box-align:center;align-items:center}@media (max-width:768px){.nURY8qkFLS{display:none}}.nURY8qkFLS svg{display:block;color:var(--color-icon)}
|
||||
._30oJwXNik9{background:var(--color-bg-sidebar);position:relative}._1SsCcpJvxN{display:block}._2r8EkOI78X{display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center;padding:25px 0 15px;color:#2a477a;-webkit-transition:color .3s ease-in-out;transition:color .3s ease-in-out}@media (max-width:768px){._2r8EkOI78X{display:none}}._2r8EkOI78X:hover{-webkit-animation:_2KRqAfqV8c .3s ease-in-out 0s infinite alternate;animation:_2KRqAfqV8c .3s ease-in-out 0s infinite alternate}._2r8EkOI78X img{width:80px;height:80px}@-webkit-keyframes _2KRqAfqV8c{0%{color:#2a477a}to{color:#1f52ac}}@keyframes _2KRqAfqV8c{0%{color:#2a477a}to{color:#1f52ac}}@media (max-width:768px){._2vUQ0Hs_C5{display:-webkit-box;display:flex;-webkit-box-pack:justify;justify-content:space-between;overflow:scroll}}._8mEn9Wlw1n{color:var(--color-text);text-decoration:none;display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;padding:6px 16px}@media screen and (min-width:30em){._8mEn9Wlw1n{padding:8px 20px}}@media (max-width:768px){._8mEn9Wlw1n{-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}}._8mEn9Wlw1n svg{color:var(--color-icon);width:22px;height:22px}@media screen and (min-width:30em){._8mEn9Wlw1n svg{width:24px;height:24px}}._1WyHmd6t6y{background:var(--color-sb-active-row-bg)}@media (max-width:768px){._1WyHmd6t6y{background:none;border-bottom:2px solid #387cec}}._2eMIYGbP9O{padding-left:14px;font-size:.75em}@media (max-width:768px){._2eMIYGbP9O{padding-left:0;padding-top:5px}}@media screen and (min-width:30em){._2eMIYGbP9O{font-size:1em}}.nURY8qkFLS{--sz:40px;position:absolute;bottom:10px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:var(--sz);height:var(--sz);display:-webkit-box;display:flex;-webkit-box-pack:center;justify-content:center;-webkit-box-align:center;align-items:center;color:var(--color-text);padding:5px;-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;background:none;cursor:pointer;border:1px solid transparent;border-radius:100%}@media (max-width:768px){.nURY8qkFLS{display:none}}.nURY8qkFLS:focus{border-color:var(--color-focus-blue)}
|
||||
.SNYKRrv_2I{height:76px;display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center}.VG1cD2OYvg{padding:0 15px;font-size:1.7em;text-align:left;margin:0}@media screen and (min-width:30em){.VG1cD2OYvg{padding:0 40px;font-size:2em}}
|
||||
._37kQcxVR4T{color:var(--color-text);display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;flex-wrap:wrap}._37kQcxVR4T .sec{padding:10px;width:180px}._37kQcxVR4T .sec div:first-child{color:var(--color-text-secondary);font-size:.7em}._37kQcxVR4T .sec div:nth-child(2){padding:10px 0 0;font-size:1.8em}
|
||||
._1EnK5MMInH{width:100%;height:100%;display:-webkit-box;display:flex;-webkit-box-pack:center;justify-content:center;-webkit-box-align:center;align-items:center}._39z9L5I2ao{--color1:#ddd;--size:40px;width:var(--size);height:var(--size);margin:10px;background-color:var(--color1);border-radius:100%;-webkit-animation:_1DSWK2a-pe 1s ease-in-out infinite;animation:_1DSWK2a-pe 1s ease-in-out infinite}@-webkit-keyframes _1DSWK2a-pe{0%{-webkit-transform:scale(0);transform:scale(0)}to{-webkit-transform:scale(1);transform:scale(1);opacity:0}}@keyframes _1DSWK2a-pe{0%{-webkit-transform:scale(0);transform:scale(0)}to{-webkit-transform:scale(1);transform:scale(1);opacity:0}}
|
||||
._2rN7aLQPCl{padding:6px 15px}@media screen and (min-width:30em){._2rN7aLQPCl{padding:10px 40px}}
|
||||
._1u5AP7XMF9{padding:0 40px 5px}._2zeyKJDdFH{position:relative;height:40px}._3DQ7SXxKRA{position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);left:0;width:100%}._1f-XUgRxH1{-webkit-appearance:none;background-color:var(--color-input-bg);background-image:none;border-radius:20px;border:1px solid var(--color-input-border);box-sizing:border-box;color:#c1c1c1;display:inline-block;font-size:inherit;height:40px;outline:none;padding:0 15px 0 35px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}._3PLtWxZwrd{position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);left:10px}
|
||||
._2tpN_G7FeO{display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;flex-wrap:wrap;font-size:.9em;padding:10px}._3wuPHKqO5W{color:#eee;flex-shrink:0;text-align:center;width:66px;background:green;border-radius:5px;padding:3px 5px;margin:0 8px}.IwiVCclCSC{flex-shrink:0;color:#999;font-size:14px}._3I1beKAMFt{flex-shrink:0;display:-webkit-box;display:flex;font-family:Roboto Mono,Menlo,monospace;-webkit-box-align:center;align-items:center;padding:8px 0;width:100%;white-space:pre;overflow:auto}._2MDNI6JESq{margin:0;padding:0;color:var(--color-text)}._2MDNI6JESq li,._2MDNI6JESq li.even{background:var(--color-background)}._3KX1sKJ1QD{padding:10px 40px}._19_8g6kTIV{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center;color:#2d2d30}._19_8g6kTIV div:nth-child(2){color:var(--color-text-secondary);font-size:1.4em;opacity:.6}._3ljFcrWmBC{opacity:.3}
|
||||
input.nJQwngxVo8[type=checkbox]{--white:#fff;--grey:#d3d3d3;--color-theme:#047aff;-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;background-color:darken(var(--white),2%);border:1px solid var(--grey);border-radius:26px;box-shadow:inset 0 0 0 1px var(--grey);cursor:pointer;height:28px;position:relative;-webkit-transition:border .25s .15s,box-shadow .25s .3s,padding .25s;transition:border .25s .15s,box-shadow .25s .3s,padding .25s;width:44px;vertical-align:top}input.nJQwngxVo8[type=checkbox]:after{background-color:var(--white);border:1px solid var(--grey);border-radius:24px;box-shadow:inset 0 -3px 3px rgba(0,0,0,.025),0 1px 4px rgba(0,0,0,.15),0 4px 4px rgba(0,0,0,.1);content:"";display:block;height:26px;left:0;position:absolute;right:16px;top:0;-webkit-transition:border .25s .15s,left .25s .1s,right .15s .175s;transition:border .25s .15s,left .25s .1s,right .15s .175s}input.nJQwngxVo8[type=checkbox]:checked{border-color:var(--color-theme);box-shadow:inset 0 0 0 13px var(--color-theme);padding-left:18px;-webkit-transition:border .25s,box-shadow .25s,padding .25s .15s;transition:border .25s,box-shadow .25s,padding .25s .15s}input.nJQwngxVo8[type=checkbox]:checked:after{border-color:var(--color-theme);left:16px;right:0;-webkit-transition:border .25s,left .15s .25s,right .25s .175s;transition:border .25s,left .15s .25s,right .25s .175s}
|
||||
._3evbv-Ui87{-webkit-user-select:none;-ms-user-select:none;user-select:none;border:1px solid #525252;color:var(--color-text);background:var(--color-toggle-bg);display:-webkit-box;display:flex;position:relative}._3evbv-Ui87 input{position:absolute;left:0;opacity:0}._3evbv-Ui87 label{-webkit-box-flex:1;flex:1;z-index:2;display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center;padding:10px 0;cursor:pointer}._1ok8KIb1RH{z-index:1;position:absolute;display:block;left:0;height:100%;-webkit-transition:left .2s ease-out;transition:left .2s ease-out;background:var(--color-toggle-selected)}
|
||||
._2S85tjFa1n{-webkit-appearance:none;background-color:var(--color-input-bg);background-image:none;border-radius:4px;border:1px solid var(--color-input-border);box-sizing:border-box;color:#c1c1c1;display:inline-block;font-size:inherit;height:40px;outline:none;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}._2S85tjFa1n:focus{border-color:var(--color-focus-blue)}input::-webkit-inner-spin-button,input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
|
||||
h2._1p7G03ShKD{margin:0;font-size:1.3em}@media screen and (min-width:30em){h2._1p7G03ShKD{font-size:1.5em}}h2._1p7G03ShKD span:nth-child(2){font-size:12px;color:#777;font-weight:400;margin:0 .3em}body.light{--loading-dot-1-1:rgba(0,0,0,0.1);--loading-dot-1-2:rgba(0,0,0,0.5);--loading-dot-1-3:rgba(0,0,0,0.3);--loading-dot-2-1:rgba(0,0,0,0.3);--loading-dot-2-2:rgba(0,0,0,0.1);--loading-dot-2-3:rgba(0,0,0,0.5);--loading-dot-3-1:rgba(0,0,0,0.5);--loading-dot-3-2:rgba(0,0,0,0.3);--loading-dot-3-3:rgba(0,0,0,0.1)}body.dark{--loading-dot-1-1:hsla(0,0%,100%,0.5);--loading-dot-1-2:hsla(0,0%,100%,0.1);--loading-dot-1-3:hsla(0,0%,100%,0.3);--loading-dot-2-1:hsla(0,0%,100%,0.3);--loading-dot-2-2:hsla(0,0%,100%,0.5);--loading-dot-2-3:hsla(0,0%,100%,0.1);--loading-dot-3-1:hsla(0,0%,100%,0.1);--loading-dot-3-2:hsla(0,0%,100%,0.3);--loading-dot-3-3:hsla(0,0%,100%,0.5)}._1l_b31nvKC,._1l_b31nvKC:after,._1l_b31nvKC:before{display:inline-block;vertical-align:middle;width:6px;height:6px;border-radius:50%;font-size:0}._1l_b31nvKC{position:relative;background-color:var(--loading-dot-2-1);-webkit-animation:AmeWPxQSDb 1s step-start infinite;animation:AmeWPxQSDb 1s step-start infinite}._1l_b31nvKC:before{content:"";position:absolute;left:-12px;background-color:var(--loading-dot-1-1);-webkit-animation:_1C49ms67Ai 1s step-start infinite;animation:_1C49ms67Ai 1s step-start infinite}._1l_b31nvKC:after{content:"";position:absolute;right:-12px;background-color:var(--loading-dot-3-1);-webkit-animation:p_etI2Ova8 1s step-start infinite;animation:p_etI2Ova8 1s step-start infinite}@-webkit-keyframes _1C49ms67Ai{0%,to{background-color:var(--loading-dot-1-1)}33%{background-color:var(--loading-dot-1-2)}66%{background-color:var(--loading-dot-1-3)}}@keyframes _1C49ms67Ai{0%,to{background-color:var(--loading-dot-1-1)}33%{background-color:var(--loading-dot-1-2)}66%{background-color:var(--loading-dot-1-3)}}@-webkit-keyframes AmeWPxQSDb{0%,to{background-color:var(--loading-dot-2-1)}33%{background-color:var(--loading-dot-2-2)}66%{background-color:var(--loading-dot-2-3)}}@keyframes AmeWPxQSDb{0%,to{background-color:var(--loading-dot-2-1)}33%{background-color:var(--loading-dot-2-2)}66%{background-color:var(--loading-dot-2-3)}}@-webkit-keyframes p_etI2Ova8{0%,to{background-color:var(--loading-dot-3-1)}33%{background-color:var(--loading-dot-3-2)}66%{background-color:var(--loading-dot-3-3)}}@keyframes p_etI2Ova8{0%,to{background-color:var(--loading-dot-3-1)}33%{background-color:var(--loading-dot-3-2)}66%{background-color:var(--loading-dot-3-3)}}
|
||||
._2A0HoxnDqc{-webkit-appearance:none;outline:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;position:relative;display:-webkit-inline-box;display:inline-flex;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center;color:var(--color-btn-fg);background:var(--color-btn-bg);border:1px solid #555;border-radius:100px;font-size:.85em;padding:4px 7px}._2A0HoxnDqc:focus{border-color:var(--color-focus-blue)}._2A0HoxnDqc:hover{background:#387cec;border:1px solid #387cec;color:#fff}._2A0HoxnDqc:active{-webkit-transform:scale(.97);transform:scale(.97)}@media screen and (min-width:30em){._2A0HoxnDqc{font-size:1em;padding:6px 12px}}._2A0HoxnDqc.rBrOhcv1IU{border-color:transparent;background:none}._2A0HoxnDqc.rBrOhcv1IU:focus{border-color:var(--color-focus-blue)}._2A0HoxnDqc.rBrOhcv1IU:hover{color:#fff;background:#387cec;border:1px solid #387cec}.CtvjIaf7QB{margin-right:5px;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center}.CtvjIaf7QB,._2KAqQdptfT{display:-webkit-inline-box;display:inline-flex}._2KAqQdptfT{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}
|
||||
._2id19fefQX{display:-webkit-box;display:flex;flex-wrap:wrap}._2QQQyNTKoG{-webkit-box-flex:0;flex-grow:0;margin-right:10px;margin-bottom:10px;cursor:pointer;border:2px solid transparent}.XJkW0wZSAx{border-color:#387cec}
|
||||
._2OZZRrEL0J>div{min-width:345px}@media screen and (min-width:30em){._2OZZRrEL0J>div{width:360px}}._2OZZRrEL0J,.lF_ZoyIdZN{padding:6px 15px 15px}@media screen and (min-width:30em){._2OZZRrEL0J,.lF_ZoyIdZN{padding:10px 40px 40px}}.VduFBb2hWX{padding:0 15px}@media screen and (min-width:30em){.VduFBb2hWX{padding:0 40px}}.VduFBb2hWX>div{border-top:1px dashed #373737}._2NQoBOQcGA{padding:16px 0}
|
||||
._29HgaNl_dV ._73r9mFp69q{display:grid;grid-template-columns:repeat(11,-webkit-max-content);grid-template-columns:repeat(11,max-content)}.hEAcjybq1r{padding:8px 10px;height:50px;background:var(--color-background);position:-webkit-sticky;position:sticky;top:0;display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;-webkit-box-pack:justify;justify-content:space-between}._1x7JSEXzR8{padding:8px 13px;font-size:.9em;font-family:var(--font-normal)}._1x7JSEXzR8._3n5sGVMC-F{background:var(--color-row-odd)}._26SQDJZWya{text-align:right}._3LKH-WXUjR{display:-webkit-inline-box;display:inline-flex;margin-left:10px;width:16px;height:16px}._1CoVX1S_So{-webkit-transform:rotate(180deg);transform:rotate(180deg)}
|
||||
._29HgaNl_dV ._73r9mFp69q{display:grid;grid-template-columns:repeat(13,-webkit-max-content);grid-template-columns:repeat(13,max-content)}.hEAcjybq1r{padding:8px 10px;height:50px;background:var(--color-background);position:-webkit-sticky;position:sticky;top:0;display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;-webkit-box-pack:justify;justify-content:space-between}._1x7JSEXzR8{padding:8px 13px;font-size:.9em;font-family:var(--font-normal)}._1x7JSEXzR8._3n5sGVMC-F{background:var(--color-row-odd)}._26SQDJZWya{text-align:right}._3LKH-WXUjR{display:-webkit-inline-box;display:inline-flex;margin-left:10px;width:16px;height:16px}._1CoVX1S_So{-webkit-transform:rotate(180deg);transform:rotate(180deg)}
|
||||
.ctrHyq7uir{position:fixed;top:0;right:0;left:0;bottom:0;background:#444;z-index:1024}._17mHpKiOUD{outline:none;position:absolute;color:#ddd;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);background:#444;padding:20px;border-radius:10px}
|
||||
._3R-iKwDVj-{background-color:rgba(0,0,0,.6)}._1vh9rFTHqn{background-color:var(--bg-modal);color:var(--color-text);max-width:300px;line-height:1.4;-webkit-transform:translate(-50%,-50%) scale(1.5);transform:translate(-50%,-50%) scale(1.5);opacity:.6;-webkit-transition:all .3s ease;transition:all .3s ease}._3bTCBReMiZ{opacity:1;-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}._1lwetyauPD{display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center;margin-top:30px}
|
||||
.react-tabs{-webkit-tap-highlight-color:transparent}.react-tabs__tab-list{margin:0 0 10px;padding:0 30px}.react-tabs__tab{display:-webkit-inline-box;display:inline-flex;-webkit-box-align:center;align-items:center;border:1px solid transparent;border-radius:5px;bottom:-1px;position:relative;list-style:none;padding:6px 10px;cursor:pointer;font-size:1.2em;opacity:.5}.react-tabs__tab--selected{opacity:1}.react-tabs__tab--disabled{color:GrayText;cursor:default}.react-tabs__tab:focus{border-color:#0188fe;outline:none}.react-tabs__tab:focus:after{content:"";position:absolute}.react-tabs__tab-panel{display:none}.react-tabs__tab-panel--selected{display:block}
|
||||
File diff suppressed because one or more lines are too long
@ -22,20 +22,20 @@
|
||||
<meta property="og:description" content="Yet Another Clash Dashboard">
|
||||
|
||||
|
||||
<link href="app.02ba11cfe63c3d5e1e73.css" rel="stylesheet">
|
||||
<link href="app.7b7c4c1f4709f2490841.css" rel="stylesheet">
|
||||
|
||||
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
|
||||
|
||||
<script src="runtime.bff50a6a16255f3cd6b4.js" type="text/javascript"></script>
|
||||
<script src="runtime.0b409d402f89d6765576.js" type="text/javascript"></script>
|
||||
|
||||
<script src="core-js~app.ed5efc5f285120e8ca95.js" type="text/javascript"></script>
|
||||
|
||||
<script src="react~app.71e146262a2c1f21d27e.js" type="text/javascript"></script>
|
||||
|
||||
<script src="app.bd4b077ac38d27d94ff2.js" type="text/javascript"></script>
|
||||
<script src="app.52c1edcce9d28ad103e5.js" type="text/javascript"></script>
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
||||
!function(e){function t(t){for(var n,o,i=t[0],l=t[1],f=t[2],s=t[3]||[],d=0,h=[];d<i.length;d++)o=i[d],Object.prototype.hasOwnProperty.call(a,o)&&a[o]&&h.push(a[o][0]),a[o]=0;for(n in l)Object.prototype.hasOwnProperty.call(l,n)&&(e[n]=l[n]);for(p&&p(t),u.push.apply(u,s);h.length;)h.shift()();return c.push.apply(c,f||[]),r()}function r(){for(var e,t=0;t<c.length;t++){for(var r=c[t],n=!0,o=1;o<r.length;o++){var f=r[o];0!==a[f]&&(n=!1)}n&&(c.splice(t--,1),e=l(l.s=r[0]))}return 0===c.length&&(u.forEach((function(e){if(void 0===a[e]){a[e]=null;var t=document.createElement("link");l.nc&&t.setAttribute("nonce",l.nc),t.rel="prefetch",t.as="script",t.href=i(e),document.head.appendChild(t)}})),u.length=0),e}var n={},o={5:0},a={5:0},c=[],u=[];function i(e){return l.p+""+({2:"proxies",4:"rules",6:"vendors~chartjs",7:"vendors~proxies"}[e]||e)+"."+{2:"c47b16ee58ce8279a498",4:"14d9a873af5f71681a8b",6:"7079553c634b376d7c1c",7:"0af997e119f76c516134",8:"3361cb36d32327fae41e"}[e]+".js"}function l(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,l),r.l=!0,r.exports}l.e=function(e){var t=[];o[e]?t.push(o[e]):0!==o[e]&&{2:1,4:1}[e]&&t.push(o[e]=new Promise((function(t,r){for(var n=({2:"proxies",4:"rules",6:"vendors~chartjs",7:"vendors~proxies"}[e]||e)+"."+{2:"241abbb3a6eecf3d305f",4:"f60a65ba29535b87ba96",6:"31d6cfe0d16ae931b73c",7:"31d6cfe0d16ae931b73c",8:"31d6cfe0d16ae931b73c"}[e]+".css",a=l.p+n,c=document.getElementsByTagName("link"),u=0;u<c.length;u++){var i=(s=c[u]).getAttribute("data-href")||s.getAttribute("href");if("stylesheet"===s.rel&&(i===n||i===a))return t()}var f=document.getElementsByTagName("style");for(u=0;u<f.length;u++){var s;if((i=(s=f[u]).getAttribute("data-href"))===n||i===a)return t()}var d=document.createElement("link");d.rel="stylesheet",d.type="text/css",d.onload=t,d.onerror=function(t){var n=t&&t.target&&t.target.src||a,c=new Error("Loading CSS chunk "+e+" failed.\n("+n+")");c.code="CSS_CHUNK_LOAD_FAILED",c.request=n,delete o[e],d.parentNode.removeChild(d),r(c)},d.href=a,document.getElementsByTagName("head")[0].appendChild(d)})).then((function(){o[e]=0})));var r=a[e];if(0!==r)if(r)t.push(r[2]);else{var n=new Promise((function(t,n){r=a[e]=[t,n]}));t.push(r[2]=n);var c,u=document.createElement("script");u.charset="utf-8",u.timeout=120,l.nc&&u.setAttribute("nonce",l.nc),u.src=i(e);var f=new Error;c=function(t){u.onerror=u.onload=null,clearTimeout(s);var r=a[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;f.message="Loading chunk "+e+" failed.\n("+n+": "+o+")",f.name="ChunkLoadError",f.type=n,f.request=o,r[1](f)}a[e]=void 0}};var s=setTimeout((function(){c({type:"timeout",target:u})}),12e4);u.onerror=u.onload=c,document.head.appendChild(u)}return Promise.all(t)},l.m=e,l.c=n,l.d=function(e,t,r){l.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},l.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.t=function(e,t){if(1&t&&(e=l(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(l.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)l.d(r,n,function(t){return e[t]}.bind(null,n));return r},l.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return l.d(t,"a",t),t},l.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},l.p="",l.oe=function(e){throw console.error(e),e};var f=window.webpackJsonp=window.webpackJsonp||[],s=f.push.bind(f);f.push=t,f=f.slice();for(var d=0;d<f.length;d++)t(f[d]);var p=s;r()}([]);
|
||||
!function(e){function t(t){for(var n,o,i=t[0],l=t[1],f=t[2],s=t[3]||[],d=0,h=[];d<i.length;d++)o=i[d],Object.prototype.hasOwnProperty.call(a,o)&&a[o]&&h.push(a[o][0]),a[o]=0;for(n in l)Object.prototype.hasOwnProperty.call(l,n)&&(e[n]=l[n]);for(p&&p(t),u.push.apply(u,s);h.length;)h.shift()();return c.push.apply(c,f||[]),r()}function r(){for(var e,t=0;t<c.length;t++){for(var r=c[t],n=!0,o=1;o<r.length;o++){var f=r[o];0!==a[f]&&(n=!1)}n&&(c.splice(t--,1),e=l(l.s=r[0]))}return 0===c.length&&(u.forEach((function(e){if(void 0===a[e]){a[e]=null;var t=document.createElement("link");l.nc&&t.setAttribute("nonce",l.nc),t.rel="prefetch",t.as="script",t.href=i(e),document.head.appendChild(t)}})),u.length=0),e}var n={},o={5:0},a={5:0},c=[],u=[];function i(e){return l.p+""+({2:"proxies",4:"rules",6:"vendors~chartjs",7:"vendors~proxies"}[e]||e)+"."+{2:"885cb4b4a87c66e08e71",4:"77b403da39cb4f89767e",6:"7079553c634b376d7c1c",7:"0ab0478edefe25bc30a4",8:"ab0cff960a5b01ba8822"}[e]+".js"}function l(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,l),r.l=!0,r.exports}l.e=function(e){var t=[];o[e]?t.push(o[e]):0!==o[e]&&{2:1,4:1}[e]&&t.push(o[e]=new Promise((function(t,r){for(var n=({2:"proxies",4:"rules",6:"vendors~chartjs",7:"vendors~proxies"}[e]||e)+"."+{2:"241abbb3a6eecf3d305f",4:"f60a65ba29535b87ba96",6:"31d6cfe0d16ae931b73c",7:"31d6cfe0d16ae931b73c",8:"31d6cfe0d16ae931b73c"}[e]+".css",a=l.p+n,c=document.getElementsByTagName("link"),u=0;u<c.length;u++){var i=(s=c[u]).getAttribute("data-href")||s.getAttribute("href");if("stylesheet"===s.rel&&(i===n||i===a))return t()}var f=document.getElementsByTagName("style");for(u=0;u<f.length;u++){var s;if((i=(s=f[u]).getAttribute("data-href"))===n||i===a)return t()}var d=document.createElement("link");d.rel="stylesheet",d.type="text/css",d.onload=t,d.onerror=function(t){var n=t&&t.target&&t.target.src||a,c=new Error("Loading CSS chunk "+e+" failed.\n("+n+")");c.code="CSS_CHUNK_LOAD_FAILED",c.request=n,delete o[e],d.parentNode.removeChild(d),r(c)},d.href=a,document.getElementsByTagName("head")[0].appendChild(d)})).then((function(){o[e]=0})));var r=a[e];if(0!==r)if(r)t.push(r[2]);else{var n=new Promise((function(t,n){r=a[e]=[t,n]}));t.push(r[2]=n);var c,u=document.createElement("script");u.charset="utf-8",u.timeout=120,l.nc&&u.setAttribute("nonce",l.nc),u.src=i(e);var f=new Error;c=function(t){u.onerror=u.onload=null,clearTimeout(s);var r=a[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;f.message="Loading chunk "+e+" failed.\n("+n+": "+o+")",f.name="ChunkLoadError",f.type=n,f.request=o,r[1](f)}a[e]=void 0}};var s=setTimeout((function(){c({type:"timeout",target:u})}),12e4);u.onerror=u.onload=c,document.head.appendChild(u)}return Promise.all(t)},l.m=e,l.c=n,l.d=function(e,t,r){l.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},l.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.t=function(e,t){if(1&t&&(e=l(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(l.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)l.d(r,n,function(t){return e[t]}.bind(null,n));return r},l.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return l.d(t,"a",t),t},l.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},l.p="",l.oe=function(e){throw console.error(e),e};var f=window.webpackJsonp=window.webpackJsonp||[],s=f.push.bind(f);f.push=t,f=f.slice();for(var d=0;d<f.length;d++)t(f[d]);var p=s;r()}([]);
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,14 +0,0 @@
|
||||
/*! *****************************************************************************
|
||||
Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
||||
this file except in compliance with the License. You may obtain a copy of the
|
||||
License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
|
||||
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
|
||||
MERCHANTABLITY OR NON-INFRINGEMENT.
|
||||
|
||||
See the Apache Version 2.0 License for specific language governing permissions
|
||||
and limitations under the License.
|
||||
***************************************************************************** */
|
||||
@ -1,7 +1,6 @@
|
||||
#!/bin/sh
|
||||
CONFIG_YAML="/etc/clash/config.yaml"
|
||||
lang=$(uci get luci.main.lang 2>/dev/null)
|
||||
core=$(uci get clash.config.core 2>/dev/null)
|
||||
subscribe_url=$(uci get clash.config.subscribe_url_clash 2>/dev/null)
|
||||
subscribe_urll=$(uci get $name.config.subscribe_url 2>/dev/null)
|
||||
|
||||
@ -10,26 +9,45 @@ REAL_LOG="/usr/share/clash/clash_real.txt"
|
||||
|
||||
|
||||
if [ $lang == "en" ] || [ $lang == "auto" ];then
|
||||
echo "Checking DNS Settings.. " >$REAL_LOG
|
||||
echo "Checking DNS Settings.. " >$REAL_LOG
|
||||
elif [ $lang == "zh_cn" ];then
|
||||
echo "DNS设置检查..." >$REAL_LOG
|
||||
fi
|
||||
|
||||
|
||||
#===========================================================================================================================
|
||||
core=$(uci get clash.config.core 2>/dev/null)
|
||||
mode=$(uci get clash.config.mode 2>/dev/null)
|
||||
tun_mode=$(uci get clash.config.tun_mode 2>/dev/null)
|
||||
|
||||
if [ "${core}" -eq 3 ] || [ "${core}" -eq 4 ];then
|
||||
|
||||
if [ "${tun_mode}" -eq 0 ] && [ "${core}" -eq 3 ] || [ "${tun_mode}" -eq 0 ] && [ "${core}" -eq 4 ];then
|
||||
if [ -z "$(grep "^ \{0,\}tun:" $CONFIG_YAML)" ] || [ -z "$(grep "^ \{0,\}listen:" $CONFIG_YAML)" ] || [ -z "$(grep "^ \{0,\}enhanced-mode:" $CONFIG_YAML)" ] || [ -z "$(grep "^ \{0,\}enable:" $CONFIG_YAML)" ] || [ -z "$(grep "^ \{0,\}dns:" $CONFIG_YAML)" ] ;then
|
||||
uci set clash.config.mode="0" && uci set clash.config.tun_mode="1" && uci commit clash
|
||||
fi
|
||||
elif [ "${tun_mode}" -eq 1 ] && [ "${core}" -eq 3 ] || [ "${tun_mode}" -eq 1 ] && [ "${core}" -eq 4 ];then
|
||||
uci set clash.config.mode="0" && uci set clash.config.tun_mode="1" && uci commit clash
|
||||
fi
|
||||
elif [ "${core}" -eq 1 ] || [ "${core}" -eq 2 ];then
|
||||
fi
|
||||
|
||||
|
||||
if [ "$core" -eq 1 ] || [ "$core" -eq 2 ];then
|
||||
if [ "${mode}" -eq 0 ] && [ "${core}" -eq 1 ] || [ "${mode}" -eq 0 ] && [ "${core}" -eq 2 ];then
|
||||
if [ -z "$(grep "^ \{0,\}listen:" $CONFIG_YAML)" ] || [ -z "$(grep "^ \{0,\}enhanced-mode:" $CONFIG_YAML)" ] || [ -z "$(grep "^ \{0,\}enable:" $CONFIG_YAML)" ] || [ -z "$(grep "^ \{0,\}dns:" $CONFIG_YAML)" ] ;then
|
||||
uci set clash.config.mode="1" && uci set clash.config.tun_mode="0" && uci commit clash
|
||||
fi
|
||||
fi
|
||||
elif [ "$mode" -eq 1 ] && [ "$core" -eq 1 ] || [ "$mode" -eq 1 ] && [ "$core" -eq 2 ];then
|
||||
uci set clash.config.mode="1" && uci set clash.config.tun_mode="0" && uci commit clash
|
||||
|
||||
fi
|
||||
fi
|
||||
|
||||
#===========================================================================================================================
|
||||
|
||||
|
||||
sleep 2
|
||||
sleep 3
|
||||
|
||||
#===========================================================================================================================
|
||||
mode=$(uci get clash.config.mode 2>/dev/null)
|
||||
da_password=$(uci get clash.config.dash_pass 2>/dev/null)
|
||||
@ -45,9 +63,9 @@ sleep 2
|
||||
p_mode=$(uci get clash.config.p_mode 2>/dev/null)
|
||||
|
||||
if [ "${mode}" -eq 1 ]; then
|
||||
|
||||
if [ "$core" -eq 1 ] || [ "$core" -eq 2 ];then
|
||||
if [ $lang == "en" ] || [ $lang == "auto" ];then
|
||||
echo "Setting Up Ports and Password.. " >$REAL_LOG
|
||||
echo "Setting Up Ports and Password.. " >$REAL_LOG
|
||||
elif [ $lang == "zh_cn" ];then
|
||||
echo "设置端口,DNS和密码..." >$REAL_LOG
|
||||
fi
|
||||
@ -98,10 +116,11 @@ if [ "${mode}" -eq 1 ]; then
|
||||
sed -i "/experimental:/i\ " $CONFIG_YAML 2>/dev/null
|
||||
else
|
||||
sed -i "/dns:/i\ " $CONFIG_YAML 2>/dev/null
|
||||
fi
|
||||
|
||||
fi
|
||||
sed -i '/#clash-openwrt/ d' $CONFIG_YAML 2>/dev/null
|
||||
fi
|
||||
elif [ "${tun_mode}" -eq 1 ]; then
|
||||
|
||||
if [ "${core}" -eq 3 ] || [ "${core}" -eq 4 ];then
|
||||
if [ $lang == "en" ] || [ $lang == "auto" ];then
|
||||
echo "Setting Up Ports and Password.. " >$REAL_LOG
|
||||
elif [ $lang == "zh_cn" ];then
|
||||
@ -153,6 +172,8 @@ elif [ "${tun_mode}" -eq 1 ]; then
|
||||
else
|
||||
sed -i "/dns:/i\ " $CONFIG_YAML 2>/dev/null
|
||||
fi
|
||||
sed -i '/#clash-openwrt/ d' $CONFIG_YAML 2>/dev/null
|
||||
fi
|
||||
else
|
||||
if [ $lang == "en" ] || [ $lang == "auto" ];then
|
||||
echo "Setting Up Ports and Password.. " >$REAL_LOG
|
||||
@ -209,6 +230,8 @@ else
|
||||
else
|
||||
sed -i "/dns:/i\ " $CONFIG_YAML 2>/dev/null
|
||||
fi
|
||||
sed -i '/#clash-openwrt/ d' $CONFIG_YAML 2>/dev/null
|
||||
|
||||
fi
|
||||
#===========================================================================================================================
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user