v1.0.0beta15.3
~优化脚本语句和结构 ~增加wget下载方式 ~修复部分情况下开机自启显示错误的bug
This commit is contained in:
980
scripts/clash.sh
980
scripts/clash.sh
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,17 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# Copyright (C) Juewuy
|
# Copyright (C) Juewuy
|
||||||
|
|
||||||
|
webget(){
|
||||||
|
[ -n "$(pidof clash)" ] && export http_proxy="http:/127.0.0.1:$mix_port" #设置临时http代理
|
||||||
|
if curl --version > /dev/null 2>&1;then
|
||||||
|
result=$(curl -w %{http_code} --connect-timeout 5 -# -kLo $1 $2)
|
||||||
|
elif wget --version > /dev/null 2>&1;then
|
||||||
|
wget -q --show-progress --no-check-certificate --timeout=5 -O $1 $2
|
||||||
|
[ $? -eq 0 ] && result="200"
|
||||||
|
else
|
||||||
|
echo 找不到curl或者wget,无法下载,请先安装相应依赖!
|
||||||
|
fi
|
||||||
|
}
|
||||||
linkconfig(){
|
linkconfig(){
|
||||||
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
echo -e "\033[44m 实验性功能,遇问题请加TG群反馈:\033[42;30m t.me/clashfm \033[0m"
|
echo -e "\033[44m 实验性功能,遇问题请加TG群反馈:\033[42;30m t.me/clashfm \033[0m"
|
||||||
@@ -21,12 +32,11 @@ linkconfig(){
|
|||||||
echo -----------------------------------------------
|
echo -----------------------------------------------
|
||||||
echo 0 返回上级菜单
|
echo 0 返回上级菜单
|
||||||
read -p "请输入对应数字 > " num
|
read -p "请输入对应数字 > " num
|
||||||
if [ -z "$num" ] || [[ $num -gt 13 ]];then
|
if [ -z "$num" ] || [ "$num" -gt 13 ];then
|
||||||
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
echoerrornum
|
||||||
echo -e "\033[31m请输入正确的数字!\033[0m"
|
elif [ "$num" = 0 ];then
|
||||||
elif [[ "$num" = "0" ]];then
|
|
||||||
echo
|
echo
|
||||||
elif [[ $num -le 13 ]];then
|
elif [ "$num" -le 13 ];then
|
||||||
#将对应标记值写入mark
|
#将对应标记值写入mark
|
||||||
sed -i '/rule_link*/'d $ccfg
|
sed -i '/rule_link*/'d $ccfg
|
||||||
sed -i "4i\rule_link="$num"" $ccfg
|
sed -i "4i\rule_link="$num"" $ccfg
|
||||||
@@ -48,12 +58,11 @@ linkserver(){
|
|||||||
echo -----------------------------------------------
|
echo -----------------------------------------------
|
||||||
echo 0 返回上级菜单
|
echo 0 返回上级菜单
|
||||||
read -p "请输入对应数字 > " num
|
read -p "请输入对应数字 > " num
|
||||||
if [ -z "$num" ] || [[ $num -gt 5 ]];then
|
if [ -z "$num" ] || [ "$num" -gt 5 ];then
|
||||||
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
echoerrornum
|
||||||
echo -e "\033[31m请输入正确的数字!\033[0m"
|
elif [ "$num" = 0 ];then
|
||||||
elif [[ "$num" = 0 ]];then
|
|
||||||
echo
|
echo
|
||||||
elif [[ $num -le 5 ]];then
|
elif [ "$num" -le 5 ];then
|
||||||
#将对应标记值写入mark
|
#将对应标记值写入mark
|
||||||
sed -i '/server_link*/'d $ccfg
|
sed -i '/server_link*/'d $ccfg
|
||||||
sed -i "4i\server_link="$num"" $ccfg
|
sed -i "4i\server_link="$num"" $ccfg
|
||||||
@@ -169,8 +178,7 @@ linkset(){
|
|||||||
fi
|
fi
|
||||||
linkset
|
linkset
|
||||||
else
|
else
|
||||||
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
echoerrornum
|
||||||
echo -e "\033[31m请输入正确的数字!\033[0m"
|
|
||||||
linkset
|
linkset
|
||||||
fi
|
fi
|
||||||
clashlink
|
clashlink
|
||||||
@@ -196,7 +204,7 @@ getlink(){
|
|||||||
url=`echo ${url/*\&url\=/""}` #将clash完整链接还原成单一链接
|
url=`echo ${url/*\&url\=/""}` #将clash完整链接还原成单一链接
|
||||||
url=`echo ${url/\&config\=*/""}` #将clash完整链接还原成单一链接
|
url=`echo ${url/\&config\=*/""}` #将clash完整链接还原成单一链接
|
||||||
url=`echo ${url//\&/\%26}` #将分隔符 & 替换成urlcode:%26
|
url=`echo ${url//\&/\%26}` #将分隔符 & 替换成urlcode:%26
|
||||||
if [[ "$test" != "" ]];then
|
if [ -n "$test" ];then
|
||||||
if [ -z "$Url" ];then
|
if [ -z "$Url" ];then
|
||||||
Url="$url"
|
Url="$url"
|
||||||
else
|
else
|
||||||
@@ -205,7 +213,7 @@ getlink(){
|
|||||||
i=$((i+1))
|
i=$((i+1))
|
||||||
elif [ -z "$url" ];then
|
elif [ -z "$url" ];then
|
||||||
[ -n "$Url" ] && linkset
|
[ -n "$Url" ] && linkset
|
||||||
elif [[ $url == 0 ]];then
|
elif [ "$url" = 0 ];then
|
||||||
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
echo -e "\033[31m已撤销并删除所有已输入的链接!!!\033[0m"
|
echo -e "\033[31m已撤销并删除所有已输入的链接!!!\033[0m"
|
||||||
Url=""
|
Url=""
|
||||||
@@ -248,7 +256,7 @@ getlink2(){
|
|||||||
start_over
|
start_over
|
||||||
exit;
|
exit;
|
||||||
fi
|
fi
|
||||||
elif [[ $Https == 0 ]];then
|
elif [ "$Https" = 0 ];then
|
||||||
clashlink
|
clashlink
|
||||||
else
|
else
|
||||||
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
@@ -257,8 +265,133 @@ getlink2(){
|
|||||||
clashlink
|
clashlink
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
clashlink(){
|
||||||
|
#获取订阅规则
|
||||||
|
if [ -z "$rule_link" ]; then
|
||||||
|
sed -i "4i\rule_link=1" $ccfg
|
||||||
|
rule_link=1
|
||||||
|
fi
|
||||||
|
#获取后端服务器地址
|
||||||
|
if [ -z "$server_link" ]; then
|
||||||
|
sed -i "5i\server_link=1" $ccfg
|
||||||
|
server_link=1
|
||||||
|
fi
|
||||||
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
echo -e "\033[30;47m 欢迎使用导入配置文件功能!\033[0m"
|
||||||
|
echo -----------------------------------------------
|
||||||
|
echo -e " 1 在线导入\033[36m订阅\033[0m并生成Clash配置文件"
|
||||||
|
echo -e " 2 在线导入\033[33mClash\033[0m配置文件"
|
||||||
|
echo -e " 3 设置\033[31m节点过滤\033[0m关键字 \033[47;30m$exclude\033[0m"
|
||||||
|
echo -e " 4 设置\033[32m节点筛选\033[0m关键字 \033[47;30m$include\033[0m"
|
||||||
|
echo -e " 5 选取\033[33mClash配置规则\033[0m在线模版"
|
||||||
|
echo -e " 6 选择在线生成服务器-subconverter"
|
||||||
|
echo -e " 7 \033[36m还原\033[0m之前的配置文件"
|
||||||
|
echo -e " 8 \033[33m手动更新\033[0m配置文件"
|
||||||
|
echo -e " 9 设置\033[36m自动更新\033[0m配置文件"
|
||||||
|
echo -----------------------------------------------
|
||||||
|
echo -e " 0 返回上级菜单"
|
||||||
|
read -p "请输入对应数字 > " num
|
||||||
|
if [ -z "$num" ];then
|
||||||
|
echoerrornum
|
||||||
|
clashsh
|
||||||
|
elif [ "$num" = 1 ];then
|
||||||
|
if [ -n "$Url" ];then
|
||||||
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
echo -e "\033[33m检测到已记录的订阅链接:\033[0m"
|
||||||
|
echo -e "\033[4;32m$Url\033[0m"
|
||||||
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
read -p "清空链接/追加导入?[1/0] > " res
|
||||||
|
if [ "$res" = '1' ]; then
|
||||||
|
Url=""
|
||||||
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
echo -e "\033[31m链接已清空!\033[0m"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
getlink
|
||||||
|
|
||||||
|
elif [ "$num" = 2 ];then
|
||||||
|
if [ -n "$Url" ];then
|
||||||
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
echo -e "\033[33m检测到已记录的订阅链接:\033[0m"
|
||||||
|
echo -e "\033[4;32m$Url\033[0m"
|
||||||
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
read -p "清空链接/追加导入?[1/0] > " res
|
||||||
|
if [ "$res" = '1' ]; then
|
||||||
|
Url=""
|
||||||
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
echo -e "\033[31m链接已清空!\033[0m"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
getlink2
|
||||||
|
|
||||||
|
elif [ "$num" = 3 ];then
|
||||||
|
linkfilter
|
||||||
|
clashlink
|
||||||
|
|
||||||
|
elif [ "$num" = 4 ];then
|
||||||
|
linkfilter2
|
||||||
|
clashlink
|
||||||
|
|
||||||
|
elif [ "$num" = 5 ];then
|
||||||
|
linkconfig
|
||||||
|
clashlink
|
||||||
|
|
||||||
|
elif [ "$num" = 6 ];then
|
||||||
|
linkserver
|
||||||
|
clashlink
|
||||||
|
|
||||||
|
elif [ "$num" = 7 ];then
|
||||||
|
yamlbak=$yaml.bak
|
||||||
|
if [ ! -f "$yaml".bak ];then
|
||||||
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
echo -e "\033[31m没有找到配置文件的备份!\033[0m"
|
||||||
|
else
|
||||||
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
echo -e 备份文件共有"\033[32m`wc -l < $yamlbak`\033[0m"行内容,当前文件共有"\033[32m`wc -l < $yaml`\033[0m"行内容
|
||||||
|
read -p "确认还原配置文件?此操作不可逆![1/0] > " res
|
||||||
|
if [ "$res" = '1' ]; then
|
||||||
|
mv $yamlbak $yaml
|
||||||
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
echo -e "\033[32m配置文件已还原!请手动重启clash服务!\033[0m"
|
||||||
|
else
|
||||||
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
echo -e "\033[31m操作已取消!返回上级菜单!\033[0m"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
clashsh
|
||||||
|
|
||||||
|
elif [ "$num" = 8 ];then
|
||||||
|
if [ -z "$Url" -a -z "$Https" ];then
|
||||||
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
echo -e "\033[31m没有找到你的订阅链接!请先输入链接!\033[0m"
|
||||||
|
sleep 2
|
||||||
|
clashlink
|
||||||
|
else
|
||||||
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
echo -e "\033[33m当前系统记录的订阅链接为:\033[0m"
|
||||||
|
echo -e "\033[4;32m$Url\033[0m"
|
||||||
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
read -p "确认更新配置文件?[1/0] > " res
|
||||||
|
if [ "$res" = '1' ]; then
|
||||||
|
$clashdir/start.sh getyaml
|
||||||
|
start_over
|
||||||
|
exit;
|
||||||
|
fi
|
||||||
|
clashlink
|
||||||
|
fi
|
||||||
|
|
||||||
|
elif [ "$num" = 9 ];then
|
||||||
|
clashcron
|
||||||
|
|
||||||
|
elif [ "$num" = 0 ];then
|
||||||
|
clashsh
|
||||||
|
else
|
||||||
|
echoerrornum
|
||||||
|
clashsh
|
||||||
|
fi
|
||||||
|
}
|
||||||
gettar(){
|
gettar(){
|
||||||
result=$(curl -w %{http_code} -kLo /tmp/clashfm.tar.gz $tarurl)
|
result=$(curl -w %{http_code} -skLo /tmp/clashfm.tar.gz $tarurl)
|
||||||
[ "$result" != "200" ] && echo "文件下载失败!" && exit 1
|
[ "$result" != "200" ] && echo "文件下载失败!" && exit 1
|
||||||
#解压
|
#解压
|
||||||
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
@@ -362,18 +495,17 @@ getcore(){
|
|||||||
echo 0 返回上级菜单
|
echo 0 返回上级菜单
|
||||||
read -p "请输入对应数字 > " num
|
read -p "请输入对应数字 > " num
|
||||||
if [ -z "$num" ]; then
|
if [ -z "$num" ]; then
|
||||||
echo -----------------------------------------------
|
echoerrornum
|
||||||
echo -e "\033[31m请输入正确的数字!\033[0m"
|
|
||||||
update
|
update
|
||||||
elif [[ $num == 0 ]]; then
|
elif [ "$num" = 0 ]; then
|
||||||
update
|
update
|
||||||
elif [[ $num == 1 ]]; then
|
elif [ "$num" = 1 ]; then
|
||||||
clashcore=clash
|
clashcore=clash
|
||||||
version=$clash_v
|
version=$clash_v
|
||||||
elif [[ $num == 2 ]]; then
|
elif [ "$num" = 2 ]; then
|
||||||
clashcore=clashpre
|
clashcore=clashpre
|
||||||
version=$clashpre_v
|
version=$clashpre_v
|
||||||
elif [[ $num == 3 ]]; then
|
elif [ "$num" = 3 ]; then
|
||||||
cpucore_list="armv5 armv7 armv8 386 amd64 mipsle-softfloat mipsle-hardfloat mips-softfloat"
|
cpucore_list="armv5 armv7 armv8 386 amd64 mipsle-softfloat mipsle-hardfloat mips-softfloat"
|
||||||
echo -----------------------------------------------
|
echo -----------------------------------------------
|
||||||
echo -e "\033[31m仅适合脚本无法正确识别核心或核心无法正常运行时使用!\033[0m"
|
echo -e "\033[31m仅适合脚本无法正确识别核心或核心无法正常运行时使用!\033[0m"
|
||||||
@@ -390,8 +522,7 @@ getcore(){
|
|||||||
fi
|
fi
|
||||||
getcore
|
getcore
|
||||||
else
|
else
|
||||||
echo -----------------------------------------------
|
echoerrornum
|
||||||
echo -e "\033[31m请输入正确的数字!\033[0m"
|
|
||||||
update
|
update
|
||||||
fi
|
fi
|
||||||
#生成链接
|
#生成链接
|
||||||
@@ -406,7 +537,7 @@ getcore(){
|
|||||||
echo -e "| \033[0m如长时间没有数据请用ctrl+c退出 |"
|
echo -e "| \033[0m如长时间没有数据请用ctrl+c退出 |"
|
||||||
echo -e "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\033[0m"
|
echo -e "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\033[0m"
|
||||||
#获取在线clash核心文件
|
#获取在线clash核心文件
|
||||||
result=$(curl -w %{http_code} -kLo /tmp/clash.new $corelink)
|
result=$(curl -w %{http_code} -#kLo /tmp/clash.new $corelink)
|
||||||
if [ "$result" != "200" ];then
|
if [ "$result" != "200" ];then
|
||||||
echo -----------------------------------------------
|
echo -----------------------------------------------
|
||||||
echo -e "\033[31m核心文件下载失败!\033[0m"
|
echo -e "\033[31m核心文件下载失败!\033[0m"
|
||||||
@@ -434,7 +565,7 @@ getgeo(){
|
|||||||
if [ "$res" = '1' ]; then
|
if [ "$res" = '1' ]; then
|
||||||
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
echo 正在从服务器获取数据库文件…………
|
echo 正在从服务器获取数据库文件…………
|
||||||
result=$(curl -w %{http_code} -kLo /tmp/Country.mmdb $update_url/bin/Country.mmdb)
|
result=$(curl -w %{http_code} -#kLo /tmp/Country.mmdb $update_url/bin/Country.mmdb)
|
||||||
if [ "$result" != "200" ];then
|
if [ "$result" != "200" ];then
|
||||||
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
echo -e "\033[31m文件下载失败!\033[0m"
|
echo -e "\033[31m文件下载失败!\033[0m"
|
||||||
@@ -482,7 +613,7 @@ getdb(){
|
|||||||
fi
|
fi
|
||||||
update
|
update
|
||||||
else
|
else
|
||||||
echo -e "\033[31m请输入正确的数字!\033[0m"
|
echoerrornum
|
||||||
update
|
update
|
||||||
fi
|
fi
|
||||||
echo -----------------------------------------------
|
echo -----------------------------------------------
|
||||||
@@ -523,7 +654,7 @@ getdb(){
|
|||||||
dblink="${update_url}/bin/${db_type}.tar.gz"
|
dblink="${update_url}/bin/${db_type}.tar.gz"
|
||||||
echo -----------------------------------------------
|
echo -----------------------------------------------
|
||||||
echo 正在连接服务器获取安装文件…………
|
echo 正在连接服务器获取安装文件…………
|
||||||
result=$(curl -w %{http_code} -kLo /tmp/clashdb.tar.gz $dblink)
|
result=$(curl -w %{http_code} -#kLo /tmp/clashdb.tar.gz $dblink)
|
||||||
if [ "$result" != "200" ];then
|
if [ "$result" != "200" ];then
|
||||||
echo -----------------------------------------------
|
echo -----------------------------------------------
|
||||||
echo -e "\033[31m文件下载失败!\033[0m"
|
echo -e "\033[31m文件下载失败!\033[0m"
|
||||||
@@ -544,8 +675,8 @@ getdb(){
|
|||||||
fi
|
fi
|
||||||
[ "$dbdir" != "/www/clash" ] && $clashdir/start.sh restart
|
[ "$dbdir" != "/www/clash" ] && $clashdir/start.sh restart
|
||||||
#写入配置文件
|
#写入配置文件
|
||||||
sed -i '/dbdir*/'d $ccfg
|
sed -i '/hostdir*/'d $ccfg
|
||||||
sed -i "1i\dbdir=\'$hostdir\'" $ccfg
|
sed -i "1i\hostdir=\'$hostdir\'" $ccfg
|
||||||
echo -----------------------------------------------
|
echo -----------------------------------------------
|
||||||
echo -e "\033[32m面板安装成功!\033[0m"
|
echo -e "\033[32m面板安装成功!\033[0m"
|
||||||
echo -e "\033[36m请使用\033[32;4mhttp://$host$hostdir\033[0;36m访问面板\033[0m"
|
echo -e "\033[36m请使用\033[32;4mhttp://$host$hostdir\033[0;36m访问面板\033[0m"
|
||||||
@@ -592,7 +723,7 @@ setpac(){
|
|||||||
echo -e "PAC地址:\033[32mhttp://$host$dbdir/pac\033[0m"
|
echo -e "PAC地址:\033[32mhttp://$host$dbdir/pac\033[0m"
|
||||||
echo "使用教程:https://baike.baidu.com/item/PAC/16292100"
|
echo "使用教程:https://baike.baidu.com/item/PAC/16292100"
|
||||||
sleep 2
|
sleep 2
|
||||||
elif [[ $num == 2 ]]; then
|
elif [ "$num" = 2 ]; then
|
||||||
rm -rf $dbdir/pac
|
rm -rf $dbdir/pac
|
||||||
echo -----------------------------------------------
|
echo -----------------------------------------------
|
||||||
echo -e "\033[33mPAC文件已清除!\033[0m"
|
echo -e "\033[33mPAC文件已清除!\033[0m"
|
||||||
@@ -612,16 +743,15 @@ setserver(){
|
|||||||
echo -e " 0 返回上级菜单"
|
echo -e " 0 返回上级菜单"
|
||||||
read -p "请输入对应数字 > " num
|
read -p "请输入对应数字 > " num
|
||||||
if [ -z "$num" ]; then
|
if [ -z "$num" ]; then
|
||||||
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
echoerrornum
|
||||||
echo -e "\033[31m请输入正确的数字!\033[0m"
|
|
||||||
update
|
update
|
||||||
elif [[ $num == 1 ]]; then
|
elif [ "$num" = 1 ]; then
|
||||||
update_url='--resolve raw.githubusercontent.com:443:199.232.68.133 https://raw.githubusercontent.com/juewuy/ShellClash/master'
|
update_url='--resolve raw.githubusercontent.com:443:199.232.68.133 https://raw.githubusercontent.com/juewuy/ShellClash/master'
|
||||||
elif [[ $num == 2 ]]; then
|
elif [ "$num" = 2 ]; then
|
||||||
update_url='https://cdn.jsdelivr.net/gh/juewuy/ShellClash'
|
update_url='https://cdn.jsdelivr.net/gh/juewuy/ShellClash'
|
||||||
elif [[ $num == 3 ]]; then
|
elif [ "$num" = 3 ]; then
|
||||||
update_url='-x '$authentication'@127.0.0.1:'$mix_port' https://raw.githubusercontent.com/juewuy/ShellClash/master'
|
update_url='-x '$authentication'@127.0.0.1:'$mix_port' https://raw.githubusercontent.com/juewuy/ShellClash/master'
|
||||||
elif [[ $num == 4 ]]; then
|
elif [ "$num" = 4 ]; then
|
||||||
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
read -p "请输入个人源路径 > " update_url
|
read -p "请输入个人源路径 > " update_url
|
||||||
if [ -z "$update_url" ];then
|
if [ -z "$update_url" ];then
|
||||||
@@ -629,11 +759,10 @@ setserver(){
|
|||||||
echo -e "\033[31m取消输入,返回上级菜单\033[0m"
|
echo -e "\033[31m取消输入,返回上级菜单\033[0m"
|
||||||
update
|
update
|
||||||
fi
|
fi
|
||||||
elif [[ $num == 9 ]]; then
|
elif [ "$num" = 9 ]; then
|
||||||
update_url='http://192.168.31.30:8080/clash-for-Miwifi'
|
update_url='http://192.168.31.30:8080/clash-for-Miwifi'
|
||||||
else
|
else
|
||||||
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
echoerrornum
|
||||||
echo -e "\033[31m请输入正确的数字!\033[0m"
|
|
||||||
update
|
update
|
||||||
fi
|
fi
|
||||||
#写入mark文件
|
#写入mark文件
|
||||||
@@ -644,6 +773,97 @@ setserver(){
|
|||||||
release_new=""
|
release_new=""
|
||||||
update
|
update
|
||||||
}
|
}
|
||||||
|
checkupdate(){
|
||||||
|
if [ -z "$release_new" ];then
|
||||||
|
if [ "$update_url" = "https://cdn.jsdelivr.net/gh/juewuy/ShellClash" ];then
|
||||||
|
release_new=$(curl -kfsSL --resolve api.github.com:443:140.82.113.5 --connect-timeout 5 -m 5 "https://api.github.com/repos/juewuy/ShellClash/releases/latest" | grep "tag_name" | head -n 1 | awk -F ":" '{print $2}' | sed 's/\"//g;s/,//g;s/ //g')
|
||||||
|
update_url=$update_url@$release_new
|
||||||
|
fi
|
||||||
|
curl -skL --connect-timeout 5 -m 5 $update_url/bin/version > /tmp/clashversion
|
||||||
|
source /tmp/clashversion
|
||||||
|
[ -z "$release_new" ] && release_new=$versionsh
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
update(){
|
||||||
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
echo -e "\033[33m正在检查更新!\033[0m"
|
||||||
|
checkupdate
|
||||||
|
[ "$clashcore" = "clash" ] && clash_n=$clash_v || clash_n=$clashpre_v
|
||||||
|
echo -e "\033[30;47m欢迎使用更新功能:\033[0m"
|
||||||
|
echo -----------------------------------------------
|
||||||
|
echo -e " 1 更新\033[36m管理脚本 \033[33m$versionsh_l\033[0m > \033[32m$versionsh\033[0m"
|
||||||
|
echo -e " 2 切换\033[33mclash核心 \033[33m$clashv\033[0m > \033[32m$clash_n\033[0m"
|
||||||
|
echo -e " 3 更新\033[32mGeoIP数据库 \033[33m$Geo_v\033[0m > \033[32m$GeoIP_v\033[0m"
|
||||||
|
echo -e " 4 安装本地\033[35mDashboard\033[0m面板"
|
||||||
|
echo -e " 5 生成本地PAC文件(需先安装本地面板)"
|
||||||
|
echo -----------------------------------------------
|
||||||
|
echo -e " 7 切换\033[36m安装源\033[0m地址"
|
||||||
|
echo -e " 8 鸣谢"
|
||||||
|
echo -e " 9 \033[31m卸载\033[34mShellClash\033[0m"
|
||||||
|
echo -e " 0 返回上级菜单"
|
||||||
|
echo -----------------------------------------------
|
||||||
|
read -p "请输入对应数字 > " num
|
||||||
|
if [ -z "$num" ]; then
|
||||||
|
echoerrornum
|
||||||
|
clashsh
|
||||||
|
elif [ "$num" = 0 ]; then
|
||||||
|
clashsh
|
||||||
|
elif [ "$num" = 1 ]; then
|
||||||
|
getsh
|
||||||
|
|
||||||
|
elif [ "$num" = 2 ]; then
|
||||||
|
getcore
|
||||||
|
|
||||||
|
elif [ "$num" = 3 ]; then
|
||||||
|
getgeo
|
||||||
|
update
|
||||||
|
|
||||||
|
elif [ "$num" = 4 ]; then
|
||||||
|
getdb
|
||||||
|
|
||||||
|
elif [ "$num" = 5 ]; then
|
||||||
|
setpac
|
||||||
|
update
|
||||||
|
|
||||||
|
elif [ "$num" = 7 ]; then
|
||||||
|
setserver
|
||||||
|
|
||||||
|
elif [ "$num" = 8 ]; then
|
||||||
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
echo -e "感谢:\033[32mClash \033[0m作者\033[36m Dreamacro\033[0m 项目地址:\033[32mhttps://github.com/Dreamacro/clash\033[0m"
|
||||||
|
echo -e "感谢:\033[32msubconverter \033[0m作者\033[36m tindy2013\033[0m 项目地址:\033[32mhttps://github.com/tindy2013/subconverter\033[0m"
|
||||||
|
echo -e "感谢:\033[32malecthw提供的GeoIP数据库\033[0m 项目地址:\033[32mhttps://github.com/alecthw/mmdb_china_ip_list\033[0m"
|
||||||
|
echo -e "感谢:\033[32myacd \033[0m作者\033[36m haishanh\033[0m 项目地址:\033[32mhttps://github.com/haishanh/yacd\033[0m"
|
||||||
|
echo -e "感谢:\033[32m更多的帮助过我的人!\033[0m"
|
||||||
|
sleep 2
|
||||||
|
update
|
||||||
|
|
||||||
|
elif [ "$num" = 9 ]; then
|
||||||
|
read -p "确认卸载ShellClash?(警告:该操作不可逆!)[1/0] " res
|
||||||
|
if [ "$res" = '1' ]; then
|
||||||
|
$clashdir/start.sh stop
|
||||||
|
rm -rf $clashdir
|
||||||
|
rm -rf /etc/init.d/clash
|
||||||
|
rm -rf /etc/systemd/system/clash.service
|
||||||
|
rm -rf /usr/lib/systemd/system/clash.service
|
||||||
|
rm -rf /www/clash
|
||||||
|
sed -i '/alias clash=*/'d /etc/profile
|
||||||
|
sed -i '/export clashdir=*/'d /etc/profile
|
||||||
|
sed -i '/http*_proxy/'d /etc/profile
|
||||||
|
sed -i '/HTTP*_PROXY/'d /etc/profile
|
||||||
|
source /etc/profile > /dev/null 2>&1
|
||||||
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
echo 已卸载ShellClash相关文件!有缘再会!
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
echo -e "\033[31m操作已取消!\033[0m"
|
||||||
|
update
|
||||||
|
else
|
||||||
|
echoerrornum
|
||||||
|
clashsh
|
||||||
|
fi
|
||||||
|
exit;
|
||||||
|
}
|
||||||
userguide(){
|
userguide(){
|
||||||
echo 欢迎使用ShellClash新手引导!
|
echo 欢迎使用ShellClash新手引导!
|
||||||
checkupdate
|
checkupdate
|
||||||
@@ -671,30 +891,29 @@ testcommand(){
|
|||||||
echo " 0 返回上级目录!"
|
echo " 0 返回上级目录!"
|
||||||
read -p "请输入对应数字 > " num
|
read -p "请输入对应数字 > " num
|
||||||
if [ -z "$num" ]; then
|
if [ -z "$num" ]; then
|
||||||
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
echoerrornum
|
||||||
echo -e "\033[31m请输入正确的数字!\033[0m"
|
|
||||||
clashsh
|
clashsh
|
||||||
elif [[ $num == 0 ]]; then
|
elif [ "$num" = 0 ]; then
|
||||||
clashsh
|
clashsh
|
||||||
elif [[ $num == 1 ]]; then
|
elif [ "$num" = 1 ]; then
|
||||||
$clashdir/start.sh stop
|
$clashdir/start.sh stop
|
||||||
echo -----------------------------------------------
|
echo -----------------------------------------------
|
||||||
$clashdir/clash -t -d $clashdir
|
$clashdir/clash -t -d $clashdir
|
||||||
echo -----------------------------------------------
|
echo -----------------------------------------------
|
||||||
echo -e "\033[31m如有报错请截图后到TG群询问!!!\033[0m"
|
echo -e "\033[31m如有报错请截图后到TG群询问!!!\033[0m"
|
||||||
exit;
|
exit;
|
||||||
elif [[ $num == 2 ]]; then
|
elif [ "$num" = 2 ]; then
|
||||||
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
netstat -ntulp |grep 53
|
netstat -ntulp |grep 53
|
||||||
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
echo -e "可以使用\033[44m netstat -ntulp |grep xxx \033[0m来查询任意(xxx)端口"
|
echo -e "可以使用\033[44m netstat -ntulp |grep xxx \033[0m来查询任意(xxx)端口"
|
||||||
exit;
|
exit;
|
||||||
elif [[ $num == 3 ]]; then
|
elif [ "$num" = 3 ]; then
|
||||||
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
openssl speed -multi 4 -evp aes-128-gcm
|
openssl speed -multi 4 -evp aes-128-gcm
|
||||||
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
exit;
|
exit;
|
||||||
elif [[ $num == 4 ]]; then
|
elif [ "$num" = 4 ]; then
|
||||||
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
iptables -t nat -L PREROUTING --line-numbers
|
iptables -t nat -L PREROUTING --line-numbers
|
||||||
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
@@ -702,12 +921,12 @@ testcommand(){
|
|||||||
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
iptables -t nat -L clash_dns --line-numbers
|
iptables -t nat -L clash_dns --line-numbers
|
||||||
exit;
|
exit;
|
||||||
elif [[ $num == 5 ]]; then
|
elif [ "$num" = 5 ]; then
|
||||||
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
sed -n '1,40p' $yaml
|
sed -n '1,40p' $yaml
|
||||||
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
exit;
|
exit;
|
||||||
elif [[ $num == 6 ]]; then
|
elif [ "$num" = 6 ]; then
|
||||||
echo 注意:测试结果不保证一定准确!
|
echo 注意:测试结果不保证一定准确!
|
||||||
delay=`curl -kx ${authentication}@127.0.0.1:$mix_port -o /dev/null -s -w '%{time_starttransfer}' 'https://google.tw' & { sleep 3 ; kill $! & }` > /dev/null 2>&1
|
delay=`curl -kx ${authentication}@127.0.0.1:$mix_port -o /dev/null -s -w '%{time_starttransfer}' 'https://google.tw' & { sleep 3 ; kill $! & }` > /dev/null 2>&1
|
||||||
delay=`echo |awk "{print $delay*1000}"` > /dev/null 2>&1
|
delay=`echo |awk "{print $delay*1000}"` > /dev/null 2>&1
|
||||||
@@ -718,11 +937,10 @@ testcommand(){
|
|||||||
echo -e "\033[31m连接超时!请重试或检查节点配置!\033[0m"
|
echo -e "\033[31m连接超时!请重试或检查节点配置!\033[0m"
|
||||||
fi
|
fi
|
||||||
clashsh
|
clashsh
|
||||||
elif [[ $num == 7 ]]; then
|
elif [ "$num" = 7 ]; then
|
||||||
userguide
|
userguide
|
||||||
else
|
else
|
||||||
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
echoerrornum
|
||||||
echo -e "\033[31m请输入正确的数字!\033[0m"
|
|
||||||
clashsh
|
clashsh
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
312
scripts/start.sh
312
scripts/start.sh
@@ -2,172 +2,170 @@
|
|||||||
# Copyright (C) Juewuy
|
# Copyright (C) Juewuy
|
||||||
|
|
||||||
getconfig(){
|
getconfig(){
|
||||||
#加载环境变量
|
#加载配置文件
|
||||||
[ -z "$clashdir" ] && source /etc/profile > /dev/null 2>&1
|
[ -z "$clashdir" ] && source /etc/profile > /dev/null 2>&1
|
||||||
ccfg=$clashdir/mark
|
ccfg=$clashdir/mark
|
||||||
#检查/读取标识文件
|
[ -f $ccfg ] && source $ccfg
|
||||||
[ ! -f $ccfg ]&& echo '#标识clash运行状态的文件,不明勿动!' >> $ccfg
|
#默认设置
|
||||||
source $ccfg
|
[ -z "$skip_cert" ] && skip_cert=已开启
|
||||||
#默认设置
|
[ -z "$common_ports" ] && common_ports=已开启
|
||||||
[ -z "$skip_cert" ] && skip_cert=已开启
|
[ -z "$dns_mod" ] && dns_mod=redir_host
|
||||||
[ -z "$common_ports" ] && common_ports=已开启
|
[ -z "$dns_over" ] && dns_over=已开启
|
||||||
[ -z "$dns_mod" ] && dns_mod=redir_host
|
[ -z "$modify_yaml" ] && modify_yaml=未开启
|
||||||
[ -z "$dns_over" ] && dns_over=已开启
|
[ -z "$ipv6_support" ] && ipv6_support=未开启
|
||||||
[ -z "$modify_yaml" ] && modify_yaml=未开启
|
[ -z "$start_old" ] && start_old=未开启
|
||||||
[ -z "$ipv6_support" ] && ipv6_support=未开启
|
[ -z "$local_proxy" ] && local_proxy=未开启
|
||||||
[ -z "$start_old" ] && start_old=未开启
|
[ -z "$mix_port" ] && mix_port=7890
|
||||||
[ -z "$local_proxy" ] && local_proxy=未开启
|
[ -z "$redir_port" ] && redir_port=7892
|
||||||
[ -z "$mix_port" ] && mix_port=7890
|
[ -z "$db_port" ] && db_port=9999
|
||||||
[ -z "$redir_port" ] && redir_port=7892
|
[ -z "$dns_port" ] && dns_port=1053
|
||||||
[ -z "$db_port" ] && db_port=9999
|
[ -z "$dns_nameserver" ] && dns_nameserver='114.114.114.114, 223.5.5.5'
|
||||||
[ -z "$dns_port" ] && dns_port=1053
|
[ -z "$dns_fallback" ] && dns_fallback='1.0.0.1, 8.8.4.4'
|
||||||
[ -z "$dns_nameserver" ] && dns_nameserver='114.114.114.114, 223.5.5.5'
|
#是否代理常用端口
|
||||||
[ -z "$dns_fallback" ] && dns_fallback='1.0.0.1, 8.8.4.4'
|
[ "$common_ports" = "已开启" ] && ports='-m multiport --dports 53,587,465,995,993,143,80,443 '
|
||||||
#是否代理常用端口
|
}
|
||||||
[ "$common_ports" = "已开启" ] && ports='-m multiport --dports 22,53,587,465,995,993,143,80,443 '
|
|
||||||
}
|
|
||||||
getyaml(){
|
getyaml(){
|
||||||
#前后端订阅服务器地址索引,可在此处添加!
|
#前后端订阅服务器地址索引,可在此处添加!
|
||||||
Server=`sed -n ""$server_link"p"<<EOF
|
Server=`sed -n ""$server_link"p"<<EOF
|
||||||
subcon.dlj.tf
|
subcon.dlj.tf
|
||||||
subconverter.herokuapp.com
|
subconverter.herokuapp.com
|
||||||
subcon.py6.pw
|
subcon.py6.pw
|
||||||
api.dler.io
|
api.dler.io
|
||||||
api.wcc.best
|
api.wcc.best
|
||||||
EOF`
|
EOF`
|
||||||
Config=`sed -n ""$rule_link"p"<<EOF
|
Config=`sed -n ""$rule_link"p"<<EOF
|
||||||
https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_NoReject.ini
|
https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_NoReject.ini
|
||||||
https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_Mini_MultiMode.ini
|
https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_Mini_MultiMode.ini
|
||||||
https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_AdblockPlus.ini
|
https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_AdblockPlus.ini
|
||||||
https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_Mini_AdblockPlus.ini
|
https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_Mini_AdblockPlus.ini
|
||||||
https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_Full_Netflix.ini
|
https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_Full_Netflix.ini
|
||||||
https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_Full_AdblockPlus.ini
|
https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_Full_AdblockPlus.ini
|
||||||
https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/lhie1_clash.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/lhie1_dler.ini
|
||||||
https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/connershua_pro.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/connershua_backtocn.ini
|
||||||
https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/dlercloud_lige_platinum.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/basic.ini
|
||||||
https://subconverter.oss-ap-southeast-1.aliyuncs.com/Rules/RemoteConfig/special/netease.ini
|
https://subconverter.oss-ap-southeast-1.aliyuncs.com/Rules/RemoteConfig/special/netease.ini
|
||||||
EOF`
|
EOF`
|
||||||
#如果传来的是Url链接则合成Https链接,否则直接使用Https链接
|
#如果传来的是Url链接则合成Https链接,否则直接使用Https链接
|
||||||
if [ -z "$Https" ];then
|
if [ -z "$Https" ];then
|
||||||
#echo $Url
|
#echo $Url
|
||||||
Https="https://$Server/sub?target=clash&insert=true&new_name=true&scv=true&exclude=$exclude&include=$include&url=$Url&config=$Config"
|
Https="https://$Server/sub?target=clash&insert=true&new_name=true&scv=true&exclude=$exclude&include=$include&url=$Url&config=$Config"
|
||||||
markhttp=1
|
markhttp=1
|
||||||
fi
|
fi
|
||||||
#
|
#
|
||||||
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
echo 正在连接服务器获取配置文件…………链接地址为:
|
|
||||||
echo -e "\033[4;32m$Https\033[0m"
|
|
||||||
echo 可以手动复制该链接到浏览器打开并查看数据是否正常!
|
|
||||||
echo -e "\033[36m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
|
|
||||||
echo -e "| |"
|
|
||||||
echo -e "| 需要一点时间,请耐心等待! |"
|
|
||||||
echo -e "| \033[0m如长时间没有数据请用ctrl+c退出\033[36m |"
|
|
||||||
echo -e "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\033[0m"
|
|
||||||
#获取在线yaml文件
|
|
||||||
yaml=$clashdir/config.yaml
|
|
||||||
yamlnew=/tmp/config.yaml
|
|
||||||
rm -rf $yamlnew > /dev/null 2>&1
|
|
||||||
result=$(curl -w %{http_code} -kLo $yamlnew $Https)
|
|
||||||
if [ "$result" != "200" ];then
|
|
||||||
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
echo -e "\033[31m配置文件获取失败!\033[0m"
|
echo 正在连接服务器获取配置文件…………链接地址为:
|
||||||
if [ -z "$markhttp" ];then
|
echo -e "\033[4;32m$Https\033[0m"
|
||||||
|
echo 可以手动复制该链接到浏览器打开并查看数据是否正常!
|
||||||
|
echo -e "\033[36m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
|
||||||
|
echo -e "| |"
|
||||||
|
echo -e "| 需要一点时间,请耐心等待! |"
|
||||||
|
echo -e "| \033[0m如长时间没有数据请用ctrl+c退出\033[36m |"
|
||||||
|
echo -e "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\033[0m"
|
||||||
|
#获取在线yaml文件
|
||||||
|
yaml=$clashdir/config.yaml
|
||||||
|
yamlnew=/tmp/config.yaml
|
||||||
|
rm -rf $yamlnew > /dev/null 2>&1
|
||||||
|
result=$(curl -w %{http_code} -kLo $yamlnew $Https)
|
||||||
|
if [ "$result" != "200" ];then
|
||||||
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
echo -e "\033[31m请尝试使用【导入节点/链接】功能!\033[0m"
|
echo -e "\033[31m配置文件获取失败!\033[0m"
|
||||||
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
if [ -z "$markhttp" ];then
|
||||||
exit 1
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
else
|
echo -e "\033[31m请尝试使用【导入节点/链接】功能!\033[0m"
|
||||||
if [ "$retry" -ge 5 ];then
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
echo -e "\033[32m无法获取配置文件,请检查链接格式以及网络连接状态!\033[0m"
|
|
||||||
exit 1
|
exit 1
|
||||||
else
|
else
|
||||||
retry=$((retry+1))
|
if [ "$retry" -ge 5 ];then
|
||||||
echo -e "\033[32m尝试使用其他服务器获取配置!\033[0m"
|
echo -e "\033[32m无法获取配置文件,请检查链接格式以及网络连接状态!\033[0m"
|
||||||
echo -e "\033[33m正在尝试第$retry次/共5次!\033[0m"
|
exit 1
|
||||||
sed -i '/server_link=*/'d $ccfg
|
else
|
||||||
if [ "$server_link" -ge 5 ]; then
|
retry=$((retry+1))
|
||||||
server_link=0
|
echo -e "\033[32m尝试使用其他服务器获取配置!\033[0m"
|
||||||
|
echo -e "\033[33m正在尝试第$retry次/共5次!\033[0m"
|
||||||
|
sed -i '/server_link=*/'d $ccfg
|
||||||
|
if [ "$server_link" -ge 5 ]; then
|
||||||
|
server_link=0
|
||||||
|
fi
|
||||||
|
server_link=$((server_link+1))
|
||||||
|
sed -i "1i\server_link=$server_link" $ccfg
|
||||||
|
Https=""
|
||||||
|
getyaml
|
||||||
fi
|
fi
|
||||||
server_link=$((server_link+1))
|
|
||||||
sed -i "1i\server_link=$server_link" $ccfg
|
|
||||||
Https=""
|
|
||||||
getyaml
|
|
||||||
fi
|
fi
|
||||||
fi
|
else
|
||||||
else
|
Https=""
|
||||||
Https=""
|
#检测节点
|
||||||
#检测节点
|
if [ -z "$(cat $yamlnew | grep 'server:' | grep -v 'nameserver')" ];then
|
||||||
if [ -z "$(cat $yamlnew | grep 'server:' | grep -v 'nameserver')" ];then
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
echo -e "\033[33m获取到了配置文件,但似乎并不包含正确的节点信息!\033[0m"
|
||||||
echo -e "\033[33m获取到了配置文件,但似乎并不包含正确的节点信息!\033[0m"
|
echo -----------------------------------------------
|
||||||
echo -----------------------------------------------
|
sed -n '1,30p' $yamlnew
|
||||||
sed -n '1,30p' $yamlnew
|
echo -----------------------------------------------
|
||||||
echo -----------------------------------------------
|
echo -e "\033[33m请检查如上配置文件信息:\033[0m"
|
||||||
echo -e "\033[33m请检查如上配置文件信息:\033[0m"
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
exit 1
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
#检测旧格式
|
|
||||||
if cat $yamlnew | grep 'Proxy Group:' >/dev/null;then
|
|
||||||
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
echo -e "\033[31m已经停止对旧格式配置文件的支持!!!\033[0m"
|
|
||||||
echo -e "请使用新格式或者使用【导入节点/链接】功能!"
|
|
||||||
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
#检测不支持的加密协议
|
|
||||||
if cat $yamlnew | grep 'cipher: chacha20,' >/dev/null;then
|
|
||||||
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
echo -e "\033[31m不支持chacha20加密,请更换节点加密协议!!!\033[0m"
|
|
||||||
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
#替换文件
|
|
||||||
[ -f $yaml ] && mv $yaml $yaml.bak
|
|
||||||
mv $yamlnew $yaml
|
|
||||||
echo 配置文件已生成!正在启动clash使其生效!
|
|
||||||
#重启clash服务
|
|
||||||
$0 stop
|
|
||||||
$0 start
|
|
||||||
sleep 1
|
|
||||||
if [ -z "$(pidof clash)" ];then
|
|
||||||
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
if [ -f $yaml.bak ];then
|
|
||||||
$clashdir/start.sh stop
|
|
||||||
mv $yaml.bak $yaml
|
|
||||||
$0 start
|
|
||||||
echo -e "\033[31mclash服务启动失败!已还原配置文件并重启clash!\033[0m"
|
|
||||||
sleep 1
|
|
||||||
[ -n "$(pidof clash)" ] && exit 0
|
|
||||||
fi
|
fi
|
||||||
echo -e "\033[31mclash服务启动失败!请查看报错信息!\033[0m"
|
#检测旧格式
|
||||||
|
if cat $yamlnew | grep 'Proxy Group:' >/dev/null;then
|
||||||
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
echo -e "\033[31m已经停止对旧格式配置文件的支持!!!\033[0m"
|
||||||
|
echo -e "请使用新格式或者使用【导入节点/链接】功能!"
|
||||||
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
#检测不支持的加密协议
|
||||||
|
if cat $yamlnew | grep 'cipher: chacha20,' >/dev/null;then
|
||||||
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
echo -e "\033[31m不支持chacha20加密,请更换节点加密协议!!!\033[0m"
|
||||||
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
#替换文件
|
||||||
|
[ -f $yaml ] && mv $yaml $yaml.bak
|
||||||
|
mv $yamlnew $yaml
|
||||||
|
echo 配置文件已生成!正在启动clash使其生效!
|
||||||
|
#重启clash服务
|
||||||
$0 stop
|
$0 stop
|
||||||
$clashdir/clash -t -d $clashdir
|
$0 start
|
||||||
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
sleep 1
|
||||||
exit 1
|
if [ -z "$(pidof clash)" ];then
|
||||||
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
if [ -f $yaml.bak ];then
|
||||||
|
$clashdir/start.sh stop
|
||||||
|
mv $yaml.bak $yaml
|
||||||
|
$0 start
|
||||||
|
echo -e "\033[31mclash服务启动失败!已还原配置文件并重启clash!\033[0m"
|
||||||
|
sleep 1
|
||||||
|
[ -n "$(pidof clash)" ] && exit 0
|
||||||
|
fi
|
||||||
|
echo -e "\033[31mclash服务启动失败!请查看报错信息!\033[0m"
|
||||||
|
$0 stop
|
||||||
|
$clashdir/clash -t -d $clashdir
|
||||||
|
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
modify_yaml(){
|
modify_yaml(){
|
||||||
##########需要变更的配置###########
|
##########需要变更的配置###########
|
||||||
lan='allow-lan: true'
|
lan='allow-lan: true'
|
||||||
mode='mode: Rule'
|
mode='mode: Rule'
|
||||||
log='log-level: info'
|
log='log-level: info'
|
||||||
[ "$ipv6_support" = "已开启" ] && ipv6='ipv6: true' || ipv6='ipv6: false'
|
[ "$ipv6_support" = "已开启" ] && ipv6='ipv6: true' || ipv6='ipv6: false'
|
||||||
external="external-controller: 0.0.0.0:$db_port"
|
external="external-controller: 0.0.0.0:$db_port"
|
||||||
[ -d $clashdir/ui ] && db_ui=ui
|
[ -d $clashdir/ui ] && db_ui=ui
|
||||||
[ "$redir_mod" != "Redir模式" ] && tun='tun: {enable: true, stack: system}' || tun='tun: {enable: false}'
|
[ "$redir_mod" != "Redir模式" ] && tun='tun: {enable: true, stack: system}' || tun='tun: {enable: false}'
|
||||||
exper='experimental: {ignore-resolve-fail: true, interface-name: en0}'
|
exper='experimental: {ignore-resolve-fail: true, interface-name: en0}'
|
||||||
#dns配置
|
#dns配置
|
||||||
[ "$dns_over" = "未开启" ] && dns_local=', 127.0.0.1:53'
|
[ "$dns_over" = "未开启" ] && dns_local=', 127.0.0.1:53'
|
||||||
if [ "$dns_mod" = "fake-ip" ];then
|
if [ "$dns_mod" = "fake-ip" ];then
|
||||||
dns='dns: {enable: true, listen: 0.0.0.0:'$dns_port', use-hosts: true, fake-ip-range: 198.18.0.1/16, enhanced-mode: fake-ip, fake-ip-filter: ["*.lan", "time.windows.com", "time.nist.gov", "time.apple.com", "time.asia.apple.com", "*.ntp.org.cn", "*.openwrt.pool.ntp.org", "time1.cloud.tencent.com", "time.ustc.edu.cn", "pool.ntp.org", "ntp.ubuntu.com", "ntp.aliyun.com", "ntp1.aliyun.com", "ntp2.aliyun.com", "ntp3.aliyun.com", "ntp4.aliyun.com", "ntp5.aliyun.com", "ntp6.aliyun.com", "ntp7.aliyun.com", "time1.aliyun.com", "time2.aliyun.com", "time3.aliyun.com", "time4.aliyun.com", "time5.aliyun.com", "time6.aliyun.com", "time7.aliyun.com", "*.time.edu.cn", "time1.apple.com", "time2.apple.com", "time3.apple.com", "time4.apple.com", "time5.apple.com", "time6.apple.com", "time7.apple.com", "time1.google.com", "time2.google.com", "time3.google.com", "time4.google.com", "music.163.com", "*.music.163.com", "*.126.net", "musicapi.taihe.com", "music.taihe.com", "songsearch.kugou.com", "trackercdn.kugou.com", "*.kuwo.cn", "api-jooxtt.sanook.com", "api.joox.com", "joox.com", "y.qq.com", "*.y.qq.com", "streamoc.music.tc.qq.com", "mobileoc.music.tc.qq.com", "isure.stream.qqmusic.qq.com", "dl.stream.qqmusic.qq.com", "aqqmusic.tc.qq.com", "amobile.music.tc.qq.com", "*.xiami.com", "*.music.migu.cn", "music.migu.cn", "*.msftconnecttest.com", "*.msftncsi.com", "localhost.ptlogin2.qq.com", "*.*.*.srv.nintendo.net", "*.*.stun.playstation.net", "xbox.*.*.microsoft.com", "*.*.xboxlive.com", "proxy.golang.org"], nameserver: ['$dns_nameserver', 127.0.0.1:53], fallback: ['$dns_fallback'], fallback-filter: {geoip: true}}'
|
dns='dns: {enable: true, listen: 0.0.0.0:'$dns_port', use-hosts: true, fake-ip-range: 198.18.0.1/16, enhanced-mode: fake-ip, fake-ip-filter: ["*.lan", "time.windows.com", "time.nist.gov", "time.apple.com", "time.asia.apple.com", "*.ntp.org.cn", "*.openwrt.pool.ntp.org", "time1.cloud.tencent.com", "time.ustc.edu.cn", "pool.ntp.org", "ntp.ubuntu.com", "ntp.aliyun.com", "ntp1.aliyun.com", "ntp2.aliyun.com", "ntp3.aliyun.com", "ntp4.aliyun.com", "ntp5.aliyun.com", "ntp6.aliyun.com", "ntp7.aliyun.com", "time1.aliyun.com", "time2.aliyun.com", "time3.aliyun.com", "time4.aliyun.com", "time5.aliyun.com", "time6.aliyun.com", "time7.aliyun.com", "*.time.edu.cn", "time1.apple.com", "time2.apple.com", "time3.apple.com", "time4.apple.com", "time5.apple.com", "time6.apple.com", "time7.apple.com", "time1.google.com", "time2.google.com", "time3.google.com", "time4.google.com", "music.163.com", "*.music.163.com", "*.126.net", "musicapi.taihe.com", "music.taihe.com", "songsearch.kugou.com", "trackercdn.kugou.com", "*.kuwo.cn", "api-jooxtt.sanook.com", "api.joox.com", "joox.com", "y.qq.com", "*.y.qq.com", "streamoc.music.tc.qq.com", "mobileoc.music.tc.qq.com", "isure.stream.qqmusic.qq.com", "dl.stream.qqmusic.qq.com", "aqqmusic.tc.qq.com", "amobile.music.tc.qq.com", "*.xiami.com", "*.music.migu.cn", "music.migu.cn", "*.msftconnecttest.com", "*.msftncsi.com", "localhost.ptlogin2.qq.com", "*.*.*.srv.nintendo.net", "*.*.stun.playstation.net", "xbox.*.*.microsoft.com", "*.*.xboxlive.com", "proxy.golang.org"], nameserver: ['$dns_nameserver', 127.0.0.1:53], fallback: ['$dns_fallback'], fallback-filter: {geoip: true}}'
|
||||||
else
|
else
|
||||||
dns='dns: {enable: true, ipv6: true, listen: 0.0.0.0:'$dns_port', use-hosts: true, enhanced-mode: redir-host, nameserver: ['$dns_nameserver$dns_local'], fallback: ['$dns_fallback'], fallback-filter: {geoip: true}}'
|
dns='dns: {enable: true, ipv6: true, listen: 0.0.0.0:'$dns_port', use-hosts: true, enhanced-mode: redir-host, nameserver: ['$dns_nameserver$dns_local'], fallback: ['$dns_fallback'], fallback-filter: {geoip: true}}'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
###################################
|
###################################
|
||||||
yaml=$clashdir/config.yaml
|
yaml=$clashdir/config.yaml
|
||||||
@@ -287,9 +285,6 @@ daemon(){
|
|||||||
if [ -n "$cronpath" ];then
|
if [ -n "$cronpath" ];then
|
||||||
echo '*/1 * * * * test -z "$(pidof clash)" && /etc/init.d/clash restart #clash保守模式守护进程' >> $cronpath
|
echo '*/1 * * * * test -z "$(pidof clash)" && /etc/init.d/clash restart #clash保守模式守护进程' >> $cronpath
|
||||||
chmod 600 $cronpath
|
chmod 600 $cronpath
|
||||||
else
|
|
||||||
echo 找不到定时任务配置文件,无法添加守护进程!
|
|
||||||
echo 请进入定时任务菜单手动指定系统定时任务文件路径!!!
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
web_save(){
|
web_save(){
|
||||||
@@ -326,9 +321,6 @@ web_save_auto(){
|
|||||||
echo '*/10 * * * * test -n "$(pidof clash)" && /etc/init.d/clash web_save #每10分钟保存节点配置' >> $cronpath
|
echo '*/10 * * * * test -n "$(pidof clash)" && /etc/init.d/clash web_save #每10分钟保存节点配置' >> $cronpath
|
||||||
chmod 600 $cronpath
|
chmod 600 $cronpath
|
||||||
fi
|
fi
|
||||||
else
|
|
||||||
echo 找不到定时任务配置文件,无法添加守护进程!
|
|
||||||
echo 请进入定时任务菜单手动指定系统定时任务文件路径!!!
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
afstart(){
|
afstart(){
|
||||||
@@ -341,7 +333,7 @@ afstart(){
|
|||||||
#标记启动时间
|
#标记启动时间
|
||||||
mark_time
|
mark_time
|
||||||
#设置本机代理
|
#设置本机代理
|
||||||
[ "$local_proxy" = "已开启" ] && $0 set_proxy $mix_port $dbdir
|
[ "$local_proxy" = "已开启" ] && $0 set_proxy $mix_port $hostdir
|
||||||
#启用面板配置自动保存
|
#启用面板配置自动保存
|
||||||
web_save_auto
|
web_save_auto
|
||||||
#后台还原面板配置
|
#后台还原面板配置
|
||||||
|
|||||||
Reference in New Issue
Block a user