v1.7.8
~自定义配置文件功能重写,现在支持在脚本中快捷管理自定义规则 ~自定义配置文件入口由7-7变更为6-6 ~现在支持禁用配置文件覆写功能 ~现在路由设备重新拨号不会使clash自动重启 ~修复了开机启动时,无法正确获取本机IP导致代理出错的问题 ~修复了在不支持su的设备上提示缺少su命令的问题 ~修复了部分在线sub规则不可用的问题 ~修复自定义定时任务命令不可用的bug
This commit is contained in:
108
scripts/clash.sh
108
scripts/clash.sh
@@ -146,6 +146,13 @@ ckstatus(){
|
||||
echo -----------------------------------------------
|
||||
}
|
||||
done
|
||||
#检查禁用配置覆写
|
||||
[ "$disoverride" = "1" ] && {
|
||||
echo -e "\033[33m你已经禁用了配置文件覆写功能,这会导致大量脚本功能无法使用!\033[0m "
|
||||
read -p "是否取消禁用?(1/0) > " res
|
||||
[ "$res" = 1 ] && unset disoverride && setconfig disoverride
|
||||
echo -----------------------------------------------
|
||||
}
|
||||
}
|
||||
|
||||
#启动相关
|
||||
@@ -593,9 +600,9 @@ setipv6(){
|
||||
[ -z "$ipv6_dns" ] && ipv6_dns=已开启
|
||||
[ -z "$cn_ipv6_route" ] && cn_ipv6_route=未开启
|
||||
echo -----------------------------------------------
|
||||
echo -e " 1 ipv6内核支持: \033[36m$ipv6_support\033[0m ——用于ipv6节点及规则支持"
|
||||
[ "$disoverride" != "1" ] && echo -e " 1 ipv6内核支持: \033[36m$ipv6_support\033[0m ——用于ipv6节点及规则支持"
|
||||
echo -e " 2 ipv6透明代理: \033[36m$ipv6_redir\033[0m ——代理ipv6流量"
|
||||
echo -e " 3 ipv6-DNS解析: \033[36m$ipv6_dns\033[0m ——决定内置DNS是否返回ipv6地址"
|
||||
[ "$disoverride" != "1" ] && echo -e " 3 ipv6-DNS解析: \033[36m$ipv6_dns\033[0m ——决定内置DNS是否返回ipv6地址"
|
||||
echo -e " 4 CNIP绕过内核: \033[36m$cn_ipv6_route\033[0m ——优化性能,不兼容fake-ip"
|
||||
echo -e " 0 返回上级菜单"
|
||||
echo -----------------------------------------------
|
||||
@@ -1230,15 +1237,19 @@ clashcfg(){
|
||||
echo -e "\033[30;47m欢迎使用功能设置菜单:\033[0m"
|
||||
echo -----------------------------------------------
|
||||
echo -e " 1 切换Clash运行模式: \033[36m$redir_mod\033[0m"
|
||||
echo -e " 2 切换DNS运行模式: \033[36m$dns_mod\033[0m"
|
||||
echo -e " 3 跳过本地证书验证: \033[36m$skip_cert\033[0m ————解决节点证书验证错误"
|
||||
[ "$disoverride" != "1" ] && {
|
||||
echo -e " 2 切换DNS运行模式: \033[36m$dns_mod\033[0m"
|
||||
echo -e " 3 跳过本地证书验证: \033[36m$skip_cert\033[0m ————解决节点证书验证错误"
|
||||
}
|
||||
echo -e " 4 只代理常用端口: \033[36m$common_ports\033[0m ————用于过滤P2P流量"
|
||||
echo -e " 5 过滤局域网设备: \033[36m$mac_return\033[0m ————使用黑/白名单进行过滤"
|
||||
echo -e " 6 设置本机代理服务: \033[36m$local_proxy\033[0m ————使本机流量经过clash内核"
|
||||
echo -e " 7 屏蔽QUIC流量: \033[36m$quic_rj\033[0m ————优化视频性能"
|
||||
[ "$dns_mod" = "fake-ip" ] && \
|
||||
echo -e " 8 管理Fake-ip过滤列表" || \
|
||||
echo -e " 8 CN_IP绕过内核: \033[36m$cn_ip_route\033[0m ————优化性能,不兼容Fake-ip"
|
||||
[ "$disoverride" != "1" ] && {
|
||||
[ "$dns_mod" = "fake-ip" ] && \
|
||||
echo -e " 8 管理Fake-ip过滤列表" || \
|
||||
echo -e " 8 CN_IP绕过内核: \033[36m$cn_ip_route\033[0m ————优化性能,不兼容Fake-ip"
|
||||
}
|
||||
echo -----------------------------------------------
|
||||
echo -e " 0 返回上级菜单 \033[0m"
|
||||
echo -----------------------------------------------
|
||||
@@ -1373,14 +1384,13 @@ clashadv(){
|
||||
echo -e "\033[30;47m欢迎使用进阶模式菜单:\033[0m"
|
||||
echo -e "\033[33m如您并不了解clash的运行机制,请勿更改本页面功能!\033[0m"
|
||||
echo -----------------------------------------------
|
||||
echo -e " 1 ipv6相关"
|
||||
[ "$disoverride" != "1" ] && echo -e " 1 ipv6相关"
|
||||
#echo -e " 2 配置Meta特性"
|
||||
echo -e " 3 配置公网及局域网防火墙"
|
||||
echo -e " 4 启用域名嗅探: \033[36m$sniffer\033[0m ————用于流媒体及防DNS污染"
|
||||
echo -e " 5 启用节点绕过: \033[36m$proxies_bypass\033[0m ————用于防止多设备多重流量"
|
||||
echo -e " 6 配置内置DNS服务 \033[36m$dns_no\033[0m"
|
||||
echo -e " 7 使用自定义配置"
|
||||
echo -e " 8 手动指定相关端口、秘钥"
|
||||
[ "$disoverride" != "1" ] && {
|
||||
echo -e " 4 启用域名嗅探: \033[36m$sniffer\033[0m ————用于流媒体及防DNS污染"
|
||||
echo -e " 5 启用节点绕过: \033[36m$proxies_bypass\033[0m ————用于防止多设备多重流量"
|
||||
}
|
||||
echo -----------------------------------------------
|
||||
echo -e " 9 \033[31m重置/备份/还原\033[0m脚本设置"
|
||||
echo -e " 0 返回上级菜单 \033[0m"
|
||||
@@ -1433,73 +1443,6 @@ clashadv(){
|
||||
sleep 1
|
||||
clashadv
|
||||
;;
|
||||
6)
|
||||
source $CFG_PATH
|
||||
if [ "$dns_no" = "已禁用" ];then
|
||||
read -p "检测到内置DNS已被禁用,是否启用内置DNS?(1/0) > " res
|
||||
if [ "$res" = "1" ];then
|
||||
setconfig dns_no
|
||||
setdns
|
||||
fi
|
||||
else
|
||||
setdns
|
||||
fi
|
||||
clashadv
|
||||
;;
|
||||
7)
|
||||
[ ! -f $clashdir/user.yaml ] && cat > $clashdir/user.yaml <<EOF
|
||||
#用于编写自定义设定(可参考https://lancellc.gitbook.io/clash),例如
|
||||
#新版已经支持直接读取系统hosts(/etc/hosts)并写入配置文件,无需在此处添加!
|
||||
#新版meta内核已经支持yaml-v3,所有能在脚本中修改的条目请勿在此处配置以免报错!
|
||||
#port: 7890
|
||||
EOF
|
||||
[ ! -f $clashdir/rules.yaml ] && cat > $clashdir/rules.yaml <<EOF
|
||||
#用于编写自定义规则(此处规则将优先生效),(可参考https://lancellc.gitbook.io/clash/clash-config-file/rules):
|
||||
#例如“🚀 节点选择”、“🎯 全球直连”这样的自定义规则组必须与config.yaml中的代理规则组相匹配,否则将无法运行
|
||||
# 【#】号代表注释!!!注释条目不会生效!!!
|
||||
# - DOMAIN-SUFFIX,google.com,🚀 节点选择
|
||||
# - DOMAIN-KEYWORD,baidu,🎯 全球直连
|
||||
# - DOMAIN,ad.com,REJECT
|
||||
# - SRC-IP-CIDR,192.168.1.201/32,DIRECT
|
||||
# - IP-CIDR,127.0.0.0/8,DIRECT
|
||||
# - IP-CIDR6,2620:0:2d0:200::7/32,🚀 节点选择
|
||||
# - DST-PORT,80,DIRECT
|
||||
# - SRC-PORT,7777,DIRECT
|
||||
EOF
|
||||
[ ! -f $clashdir/proxies.yaml ] && cat > $clashdir/proxies.yaml <<EOF
|
||||
#proxies:
|
||||
# - {name: "test", server: 192.168.1.1, port: 9050, type: socks5, udp: true}
|
||||
EOF
|
||||
[ ! -f $clashdir/proxy-groups.yaml ] && cat > $clashdir/proxy-groups.yaml <<EOF
|
||||
#proxy-groups:
|
||||
# - name: OFFICE
|
||||
# type: select
|
||||
# proxies:
|
||||
# - office-router
|
||||
EOF
|
||||
echo -e "\033[32m已经启用自定义配置功能!\033[0m"
|
||||
echo -e "Windows下请\n使用\033[33mwinscp软件\033[0m进入$clashdir目录后手动编辑!\033[0m"
|
||||
echo -e "Shell下(\033[31m部分旧设备可能不显示中文\033[0m)可\n使用【\033[36mvi $clashdir/user.yaml\033[0m】编辑自定义设定文件;\n使用【\033[36mvi $clashdir/rules.yaml\033[0m】编辑自定义规则文件。"
|
||||
echo -e "使用【\033[36mvi $clashdir/proxies.yaml\033[0m】编辑自定义代理文件;\n使用【\033[36mvi $clashdir/proxy-groups.yaml\033[0m】编辑自定义策略组文件。"
|
||||
echo -e "如需自定义节点,可以在config.yaml文件中修改或者直接替换config.yaml文件!\033[0m"
|
||||
sleep 3
|
||||
clashadv
|
||||
;;
|
||||
8)
|
||||
source $CFG_PATH
|
||||
if [ -n "$(pidof clash)" ];then
|
||||
echo -----------------------------------------------
|
||||
echo -e "\033[33m检测到clash服务正在运行,需要先停止clash服务!\033[0m"
|
||||
read -p "是否停止clash服务?(1/0) > " res
|
||||
if [ "$res" = "1" ];then
|
||||
$clashdir/start.sh stop
|
||||
setport
|
||||
fi
|
||||
else
|
||||
setport
|
||||
fi
|
||||
clashadv
|
||||
;;
|
||||
9)
|
||||
echo -e " 1 备份脚本设置"
|
||||
echo -e " 2 还原脚本设置"
|
||||
@@ -1757,7 +1700,7 @@ clashcron(){
|
||||
echo 将在$week1的$hour点$min分$cronname(旧的任务会被覆盖)
|
||||
read -p "是否确认添加定时任务?(1/0) > " res
|
||||
if [ "$res" = '1' ]; then
|
||||
cronwords="$min $hour * * $week $cronset >/dev/null 2>&1 #$week1的$hour点$min分$cronname"
|
||||
cronwords="$min $hour * * $week $cronset #$week1的$hour点$min分$cronname"
|
||||
tmpcron=/tmp/cron_$USER
|
||||
croncmd -l > $tmpcron
|
||||
sed -i "/$cronname/d" $tmpcron
|
||||
@@ -1856,11 +1799,10 @@ clashcron(){
|
||||
echo -e "\033[33m可包含空格,请确保命令可执行!\033[0m"
|
||||
read -p "请输入命令语句 > " script
|
||||
if [ -n "$script" ];then
|
||||
cronset=\'$script\'
|
||||
cronset=$script
|
||||
echo -e "请检查输入:\033[32m$cronset\033[0m"
|
||||
read -p "请输入任务备注 > " txt
|
||||
[ -n "$txt" ] && cronname=$txt || cronname=ShellClash自定义
|
||||
cronset="$clashdir/start.sh updateyaml"
|
||||
setcron
|
||||
else
|
||||
echo -e "\033[31m输入错误,请重新输入!\033[0m"
|
||||
|
||||
@@ -10,25 +10,24 @@ error_down(){
|
||||
linkconfig(){
|
||||
echo -----------------------------------------------
|
||||
echo 当前使用规则为:$rule_link
|
||||
echo " 1 Acl4SSR全能优化版(推荐)"
|
||||
echo " 2 Acl4SSR精简优化版(推荐)"
|
||||
echo " 1 Acl4SSR全能优化版(推荐)"
|
||||
echo " 2 Acl4SSR精简优化版(推荐)"
|
||||
echo " 3 Acl4SSR全能优化+去广告增强"
|
||||
echo " 4 Acl4SSR极简版(适合自建节点)"
|
||||
echo " 4 Acl4SSR极简版(适合自建)"
|
||||
echo " 5 Acl4SSR分流&游戏增强"
|
||||
echo " 6 Acl4SSR分流&游戏&去广告增强(低性能设备慎用)"
|
||||
echo " 7 洞主规则精简版(推荐)"
|
||||
echo " 6 Acl4SSR分流&游戏&去广告增强"
|
||||
echo " 7 洞主规则精简版"
|
||||
echo " 8 洞主规则重度完整版"
|
||||
echo " 9 神机规则高级版"
|
||||
echo " 10 神机规则-回国专用"
|
||||
echo " 11 李哥规则-墙洞专用"
|
||||
echo " 9 Acl4SSR多国精简"
|
||||
echo " 10 Acl4SSR回国专用"
|
||||
echo -----------------------------------------------
|
||||
echo 0 返回上级菜单
|
||||
read -p "请输入对应数字 > " num
|
||||
if [ -z "$num" ] || [ "$num" -gt 17 ];then
|
||||
if [ -z "$num" ] || [ "$num" -gt 10 ];then
|
||||
errornum
|
||||
elif [ "$num" = 0 ];then
|
||||
echo
|
||||
elif [ "$num" -le 17 ];then
|
||||
elif [ "$num" -le 10 ];then
|
||||
#将对应标记值写入mark
|
||||
rule_link=$num
|
||||
setconfig rule_link $rule_link
|
||||
@@ -225,6 +224,197 @@ getlink2(){
|
||||
getlink2
|
||||
fi
|
||||
}
|
||||
setrules(){
|
||||
set_rule_type(){
|
||||
echo -----------------------------------------------
|
||||
echo -e "\033[33m请选择规则类型\033[0m"
|
||||
echo $rule_type | awk -F ' ' '{for(i=1;i<=NF;i++){print i" "$i}}'
|
||||
echo -e " 0 返回上级菜单"
|
||||
read -p "请输入对应数字 > " num
|
||||
case $num in
|
||||
0) ;;
|
||||
[0-9]*)
|
||||
if [ $num -gt $(echo $rule_type | awk -F " " '{print NF}') ];then
|
||||
errornum
|
||||
else
|
||||
rule_type_set=$(echo $rule_type|cut -d' ' -f$num)
|
||||
echo -----------------------------------------------
|
||||
echo -e "\033[33m请输入规则语句,可以是域名、泛域名、IP网段或者其他匹配规则类型的内容\033[0m"
|
||||
read -p "请输入对应规则 > " rule_state_set
|
||||
[ -n "$rule_state_set" ] && set_group_type || errornum
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
errornum
|
||||
;;
|
||||
esac
|
||||
}
|
||||
set_group_type(){
|
||||
echo -----------------------------------------------
|
||||
echo -e "\033[36m请选择具体规则\033[0m"
|
||||
echo -e "\033[33m此处规则读取自现有配置文件,如果你后续更换配置文件时运行出错,请尝试重新添加\033[0m"
|
||||
echo $rule_group | awk -F '#' '{for(i=1;i<=NF;i++){print i" "$i}}'
|
||||
echo -e " 0 返回上级菜单"
|
||||
read -p "请输入对应数字 > " num
|
||||
case $num in
|
||||
0) ;;
|
||||
[0-9]*)
|
||||
if [ $num -gt $(echo $rule_group | awk -F "#" '{print NF}') ];then
|
||||
errornum
|
||||
else
|
||||
rule_group_set=$(echo $rule_group|cut -d'#' -f$num)
|
||||
rule_all="- ${rule_type_set},${rule_state_set},${rule_group_set}"
|
||||
[ -n "$(echo IP-CIDR SRC-IP-CIDR IP-CIDR6|grep "$rule_type_set")" ] && rule_all="${rule_all},no-resolve"
|
||||
echo $rule_all >> $clashdir/rules.yaml
|
||||
echo -----------------------------------------------
|
||||
echo -e "\033[32m添加成功!\033[0m"
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
errornum
|
||||
;;
|
||||
esac
|
||||
}
|
||||
echo -----------------------------------------------
|
||||
echo -e "当前已添加的自定义规则为:"
|
||||
cat $clashdir/rules.yaml | grep -Ev '^#' | awk '{print " "NR" "$2" "$3}'
|
||||
|
||||
echo -----------------------------------------------
|
||||
echo -e "\033[33m输入规则对应数字可以移除对应规则\033[0m"
|
||||
echo -e " a 新建自定义规则"
|
||||
echo -e " b 清空自定义规则"
|
||||
echo -e " 0 返回上级菜单"
|
||||
read -p "请输入对应字母或数字 > " char
|
||||
case $char in
|
||||
a)
|
||||
rule_type="DOMAIN-SUFFIX DOMAIN-KEYWORD IP-CIDR SRC-IP-CIDR DST-PORT SRC-PORT GEOIP GEOSITE IP-CIDR6 DOMAIN MATCH"
|
||||
rule_group="DIRECT#REJECT$(grep -o '\- name:.*' $clashdir/config.yaml | sed 's/- name: /#/g' | tr -d '\n')"
|
||||
set_rule_type
|
||||
setrules
|
||||
;;
|
||||
b)
|
||||
sed -i '/^\s*[^#]/d' $clashdir/rules.yaml
|
||||
setrules
|
||||
;;
|
||||
0)
|
||||
;;
|
||||
"")
|
||||
errornum
|
||||
;;
|
||||
*)
|
||||
if [ $char -le $(cat $clashdir/rules.yaml | grep -Ev '^#' | wc -l) ];then
|
||||
sed -i "$char{/^\s*[^#]/d}" $clashdir/rules.yaml
|
||||
else
|
||||
errornum
|
||||
fi
|
||||
sleep 1
|
||||
setrules
|
||||
;;
|
||||
esac
|
||||
}
|
||||
override(){
|
||||
[ -z "$rule_link" ] && rule_link=1
|
||||
[ -z "$server_link" ] && server_link=1
|
||||
echo -----------------------------------------------
|
||||
echo -e "\033[30;47m 欢迎使用配置文件覆写功能!\033[0m"
|
||||
echo -----------------------------------------------
|
||||
echo -e " 1 自定义\033[32m端口及秘钥\033[0m"
|
||||
echo -e " 2 配置\033[33m内置DNS服务\033[0m"
|
||||
echo -e " 3 \033[36m管理\033[0m自定义规则"
|
||||
#echo -e " 4 \033[36m管理\033[0m自定义节点"
|
||||
#echo -e " 5 \033[36m管理\033[0m自定义代理链"
|
||||
echo -e " 6 \033[32m自定义\033[0m其他功能"
|
||||
[ "$disoverride" != 1 ] && echo -e " 9 \033[33m禁用\033[0m配置文件覆写"
|
||||
echo -----------------------------------------------
|
||||
[ "$inuserguide" = 1 ] || echo -e " 0 返回上级菜单"
|
||||
read -p "请输入对应数字 > " num
|
||||
case "$num" in
|
||||
1)
|
||||
source $CFG_PATH
|
||||
if [ -n "$(pidof clash)" ];then
|
||||
echo -----------------------------------------------
|
||||
echo -e "\033[33m检测到clash服务正在运行,需要先停止clash服务!\033[0m"
|
||||
read -p "是否停止clash服务?(1/0) > " res
|
||||
if [ "$res" = "1" ];then
|
||||
$clashdir/start.sh stop
|
||||
setport
|
||||
fi
|
||||
else
|
||||
setport
|
||||
fi
|
||||
override
|
||||
;;
|
||||
2)
|
||||
source $CFG_PATH
|
||||
if [ "$dns_no" = "已禁用" ];then
|
||||
read -p "检测到内置DNS已被禁用,是否启用内置DNS?(1/0) > " res
|
||||
if [ "$res" = "1" ];then
|
||||
setconfig dns_no
|
||||
setdns
|
||||
fi
|
||||
else
|
||||
setdns
|
||||
fi
|
||||
override
|
||||
;;
|
||||
3)
|
||||
setrules
|
||||
override
|
||||
;;
|
||||
4)
|
||||
setproxies
|
||||
override
|
||||
;;
|
||||
5)
|
||||
setgroups
|
||||
override
|
||||
;;
|
||||
6)
|
||||
[ ! -f $clashdir/user.yaml ] && cat > $clashdir/user.yaml <<EOF
|
||||
#用于编写自定义设定(可参考https://lancellc.gitbook.io/clash)
|
||||
#port: 7890
|
||||
EOF
|
||||
[ ! -f $clashdir/others.yaml ] && cat > $clashdir/others.yaml <<EOF
|
||||
#用于编写自定义的锚点、入站、proxy-providers、sub-rules、rule-set、script等功能
|
||||
#可参考 https://github.com/MetaCubeX/Clash.Meta/blob/Meta/docs/config.yaml 或 https://lancellc.gitbook.io/clash/clash-config-file/an-example-configuration-file
|
||||
#此处内容会被添加在配置文件的“proxy-group:”模块的末尾与“rules:”模块之前的位置
|
||||
#例如:
|
||||
#proxy-providers:
|
||||
#rule-providers:
|
||||
#sub-rules:
|
||||
#tunnels:
|
||||
#script:
|
||||
#listeners:
|
||||
EOF
|
||||
echo -e "\033[32m已经创建自定义功能文件:$clashdir/user.yaml !\033[0m"
|
||||
echo -e "\033[33m可用于编写自定义的锚点、入站、proxy-providers、sub-rules、rule-set、script等功能\033[0m"
|
||||
echo -e "Windows下请\n使用\033[33mWinSCP软件\033[0m进行编辑!\033[0m"
|
||||
echo -e "MacOS下请\n使用\033[33mSecureFX软件\033[0m进行编辑!\033[0m"
|
||||
echo -e "Linux本机请\n使用\033[33mVim\033[0m进行编辑(不支持路由设备)!\033[0m"
|
||||
sleep 3
|
||||
override
|
||||
;;
|
||||
9)
|
||||
echo -----------------------------------------------
|
||||
echo -e "\033[33m此功能可能会导致严重问题!启用后脚本中大部分功能都将禁用!!!\033[0m"
|
||||
echo -e "如果你不是非常了解Clash的运行机制,切勿开启!\033[0m"
|
||||
echo -e "\033[33m继续后如出现任何问题,请务必自行解决,一切提问恕不受理!\033[0m"
|
||||
echo -----------------------------------------------
|
||||
sleep 2
|
||||
read -p "我确认遇到问题可以自行解决[1/0] > " res
|
||||
[ "$res" = '1' ] && {
|
||||
disoverride=1
|
||||
setconfig disoverride $disoverride
|
||||
echo -----------------------------------------------
|
||||
echo -e "\033[32m设置成功!\033[0m"
|
||||
}
|
||||
override
|
||||
;;
|
||||
*)
|
||||
errornum
|
||||
;;
|
||||
esac
|
||||
}
|
||||
clashlink(){
|
||||
[ -z "$rule_link" ] && rule_link=1
|
||||
[ -z "$server_link" ] && server_link=1
|
||||
@@ -236,14 +426,12 @@ clashlink(){
|
||||
echo -e " 3 \033[36m还原\033[0m配置文件"
|
||||
echo -e " 4 \033[33m更新\033[0m配置文件"
|
||||
echo -e " 5 设置\033[36m自动更新\033[0m"
|
||||
echo -e " 6 配置文件\033[32m覆写\033[0m"
|
||||
echo -----------------------------------------------
|
||||
[ "$inuserguide" = 1 ] || echo -e " 0 返回上级菜单"
|
||||
read -p "请输入对应数字 > " num
|
||||
if [ -z "$num" ];then
|
||||
errornum
|
||||
elif [ "$num" = 0 ];then
|
||||
i=
|
||||
elif [ "$num" = 1 ];then
|
||||
case "$num" in
|
||||
1)
|
||||
if [ -n "$Url" ];then
|
||||
echo -----------------------------------------------
|
||||
echo -e "\033[33m检测到已记录的链接内容:\033[0m"
|
||||
@@ -259,8 +447,8 @@ clashlink(){
|
||||
fi
|
||||
fi
|
||||
getlink
|
||||
|
||||
elif [ "$num" = 2 ];then
|
||||
;;
|
||||
2)
|
||||
echo -----------------------------------------------
|
||||
echo -e "\033[33m此功能可能会导致严重bug!!!\033[0m"
|
||||
echo -e "强烈建议你使用\033[32m在线生成配置文件功能!\033[0m"
|
||||
@@ -276,8 +464,8 @@ clashlink(){
|
||||
sleep 1
|
||||
getlink
|
||||
fi
|
||||
|
||||
elif [ "$num" = 3 ];then
|
||||
;;
|
||||
3)
|
||||
yamlbak=$yaml.bak
|
||||
if [ ! -f "$yaml".bak ];then
|
||||
echo -----------------------------------------------
|
||||
@@ -298,8 +486,8 @@ clashlink(){
|
||||
clashlink
|
||||
fi
|
||||
fi
|
||||
|
||||
elif [ "$num" = 4 ];then
|
||||
;;
|
||||
4)
|
||||
if [ -z "$Url" -a -z "$Https" ];then
|
||||
echo -----------------------------------------------
|
||||
echo -e "\033[31m没有找到你的配置文件/订阅链接!请先输入链接!\033[0m"
|
||||
@@ -317,12 +505,16 @@ clashlink(){
|
||||
clashlink
|
||||
fi
|
||||
fi
|
||||
|
||||
elif [ "$num" = 5 ];then
|
||||
;;
|
||||
5)
|
||||
clashcron
|
||||
else
|
||||
;;
|
||||
6)
|
||||
override
|
||||
;;
|
||||
*)
|
||||
errornum
|
||||
fi
|
||||
esac
|
||||
}
|
||||
#下载更新相关
|
||||
gettar(){
|
||||
|
||||
@@ -67,9 +67,6 @@ case "$1" in
|
||||
*)
|
||||
if [ -z $(pidof clash) ];then
|
||||
init &
|
||||
else
|
||||
sleep 10
|
||||
$clashdir/start.sh restart
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -117,6 +117,13 @@ cronset(){
|
||||
croncmd $tmpcron
|
||||
rm -f $tmpcron
|
||||
}
|
||||
get_save(){
|
||||
if curl --version > /dev/null 2>&1;then
|
||||
curl -s -H "Authorization: Bearer ${secret}" -H "Content-Type:application/json" "$1"
|
||||
elif [ -n "$(wget --help 2>&1|grep '\-\-method')" ];then
|
||||
wget -q --header="Authorization: Bearer ${secret}" --header="Content-Type:application/json" -O - "$1"
|
||||
fi
|
||||
}
|
||||
put_save(){
|
||||
if curl --version > /dev/null 2>&1;then
|
||||
curl -sS -X PUT -H "Authorization: Bearer ${secret}" -H "Content-Type:application/json" "$1" -d "$2" >/dev/null
|
||||
@@ -128,15 +135,21 @@ mark_time(){
|
||||
echo `date +%s` > /tmp/clash_start_time
|
||||
}
|
||||
getlanip(){
|
||||
host_ipv4=$(ip a 2>&1 | grep -w 'inet' | grep 'global' | grep 'br' | grep -v 'iot' | grep -E ' 1(92|0|72)\.' | sed 's/.*inet.//g' | sed 's/br.*$//g' ) #ipv4局域网网段
|
||||
host_ipv6=$(ip a 2>&1 | grep -w 'inet6' | grep -E 'global' | sed 's/.*inet6.//g' | sed 's/scope.*$//g' ) #ipv6公网地址段
|
||||
i=1
|
||||
while [ "$i" -le "10" ];do
|
||||
host_ipv4=$(ip a 2>&1 | grep -w 'inet' | grep 'global' | grep 'br' | grep -v 'iot' | grep -E ' 1(92|0|72)\.' | sed 's/.*inet.//g' | sed 's/br.*$//g' ) #ipv4局域网网段
|
||||
host_ipv6=$(ip a 2>&1 | grep -w 'inet6' | grep -E 'global' | sed 's/.*inet6.//g' | sed 's/scope.*$//g' ) #ipv6公网地址段
|
||||
[ -n "$host_ipv4" -a -n "$host_ipv6" ] && break
|
||||
[ -f /tmp/ShellClash_log ] && break
|
||||
sleep 2 && i=$((i+1))
|
||||
done
|
||||
#添加自定义ipv4局域网网段
|
||||
host_ipv4="$host_ipv4$cust_host_ipv4"
|
||||
#缺省配置
|
||||
[ -z "$host_ipv4" ] && host_ipv4='192.168.0.0/16 10.0.0.0/12 172.16.0.0/12'
|
||||
[ -z "$host_ipv6" ] && host_ipv6='fe80::/10 fd00::/8'
|
||||
#获取本机出口IP地址
|
||||
local_ipv4=$(ip route 2>&1 | grep 'src' | grep -Ev 'utun|iot'| grep -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} $' | sed 's/.*src //g' )
|
||||
local_ipv4=$(ip route 2>&1 | grep 'src' | grep -Ev 'utun|iot|docker' | grep -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} $' | sed 's/.*src //g' )
|
||||
[ -z "$local_ipv4" ] && local_ipv4=$(ip route 2>&1 | grep -Eo 'src.*' | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | sort -u )
|
||||
#保留地址
|
||||
reserve_ipv4="0.0.0.0/8 10.0.0.0/8 127.0.0.0/8 100.64.0.0/10 169.254.0.0/16 172.16.0.0/12 192.168.0.0/16 224.0.0.0/4 240.0.0.0/4"
|
||||
@@ -164,15 +177,8 @@ https://github.com/juewuy/ShellClash/raw/master/rules/ShellClash_Full.ini
|
||||
https://github.com/juewuy/ShellClash/raw/master/rules/ShellClash_Full_Block.ini
|
||||
https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/lhie1_clash.ini
|
||||
https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/lhie1_dler.ini
|
||||
https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/connershua_pro.ini
|
||||
https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/connershua_backtocn.ini
|
||||
https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/dlercloud_lige_platinum.ini
|
||||
https://subconverter.oss-ap-southeast-1.aliyuncs.com/Rules/RemoteConfig/special/basic.ini
|
||||
https://subconverter.oss-ap-southeast-1.aliyuncs.com/Rules/RemoteConfig/special/netease.ini
|
||||
https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_Full_Google.ini
|
||||
https://github.com/juewuy/ShellClash/raw/master/rules/ACL4SSR_Online_Games.ini
|
||||
https://github.com/juewuy/ShellClash/raw/master/rules/ACL4SSR_Online_Mini_Games.ini
|
||||
https://github.com/juewuy/ShellClash/raw/master/rules/ACL4SSR_Online_Full_Games.ini
|
||||
https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_Mini_MultiCountry.ini
|
||||
https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_BackCN.ini
|
||||
EOF`
|
||||
#如果传来的是Url链接则合成Https链接,否则直接使用Https链接
|
||||
if [ -z "$Https" ];then
|
||||
@@ -1014,13 +1020,6 @@ stop_firewall(){
|
||||
}
|
||||
#面板配置保存相关
|
||||
web_save(){
|
||||
get_save(){
|
||||
if curl --version > /dev/null 2>&1;then
|
||||
curl -s -H "Authorization: Bearer ${secret}" -H "Content-Type:application/json" "$1"
|
||||
elif [ -n "$(wget --help 2>&1|grep '\-\-method')" ];then
|
||||
wget -q --header="Authorization: Bearer ${secret}" --header="Content-Type:application/json" -O - "$1"
|
||||
fi
|
||||
}
|
||||
#使用get_save获取面板节点设置
|
||||
get_save http://127.0.0.1:${db_port}/proxies | awk -F "{" '{for(i=1;i<=NF;i++) print $i}' | grep -E '^"all".*"Selector"' > /tmp/clash_web_check_$USER
|
||||
while read line ;do
|
||||
@@ -1277,7 +1276,8 @@ afstart(){
|
||||
start_old(){
|
||||
#使用传统后台执行二进制文件的方式执行
|
||||
if [ "$local_proxy" = "已开启" -a -n "$(echo $local_type | grep '增强模式')" ];then
|
||||
su shellclash -c "$bindir/clash -d $bindir >/dev/null" &
|
||||
ckcmd su && su=su
|
||||
$su shellclash -c "$bindir/clash -d $bindir >/dev/null" &
|
||||
else
|
||||
ckcmd nohup && nohup=nohup
|
||||
$nohup $bindir/clash -d $bindir >/dev/null 2>&1 &
|
||||
@@ -1301,7 +1301,7 @@ start)
|
||||
bfstart
|
||||
stop_firewall #清理路由策略
|
||||
#使用内置规则强行覆盖config配置文件
|
||||
[ "$modify_yaml" != "已开启" ] && modify_yaml
|
||||
[ "$disoverride" != "1" ] && modify_yaml
|
||||
#使用不同方式启动clash服务
|
||||
if [ "$start_old" = "已开启" ];then
|
||||
start_old
|
||||
@@ -1413,6 +1413,9 @@ webget)
|
||||
fi
|
||||
[ "$result" = "200" ] && exit 0 || exit 1
|
||||
;;
|
||||
get_save)
|
||||
get_save $2
|
||||
;;
|
||||
web_save)
|
||||
getconfig
|
||||
web_save
|
||||
|
||||
Reference in New Issue
Block a user