Merge pull request #1065 from nested-universe/patch-2

Continue replace self-invoked with a while true loop
This commit is contained in:
juewuy
2025-12-31 20:54:38 +08:00
committed by GitHub

View File

@@ -412,7 +412,7 @@ setcore(){ #内核选择菜单
echo "-----------------------------------------------"
echo "9 手动指定处理器架构"
echo "-----------------------------------------------"
echo 0 返回上级菜单
echo "0 返回上级菜单"
read -p "请输入对应数字 > " num
case "$num" in
0)
@@ -485,7 +485,7 @@ getgeo(){ #下载Geo文件
fi
sleep 1
}
setcustgeo(){ #下载自定义数据库文件
getcustgeo(){
echo "-----------------------------------------------"
echo "正在获取数据库文件…………"
@@ -505,6 +505,7 @@ setcustgeo(){ #下载自定义数据库文件
fi
sleep 1
}
checkcustgeo(){
[ "$api_tag" = "latest" ] && api_url=latest || api_url="tags/$api_tag"
[ ! -s "$TMPDIR"/geo.list ] && {
@@ -546,6 +547,10 @@ setcustgeo(){ #下载自定义数据库文件
sleep 1
fi
}
# 下载自定义数据库文件
setcustgeo() {
while true; do
rm -rf "$TMPDIR"/geo.list
echo "-----------------------------------------------"
echo -e "\033[36m此处数据库均源自互联网采集此处致谢各位开发者\033[0m"
@@ -564,50 +569,50 @@ setcustgeo(){ #下载自定义数据库文件
echo -e " 0 返回上级菜单"
read -p "请输入对应数字 > " num
case "$num" in
0)
""|0)
break
;;
1)
project=MetaCubeX/meta-rules-dat
api_tag=latest
checkcustgeo
setcustgeo
;;
2)
project=DustinWin/ruleset_geodata
api_tag=mihomo-geodata
checkcustgeo
setcustgeo
;;
3)
project=DustinWin/ruleset_geodata
api_tag=sing-box-ruleset
checkcustgeo
setcustgeo
;;
4)
project=DustinWin/ruleset_geodata
api_tag=mihomo-ruleset
checkcustgeo
setcustgeo
;;
5)
project=Loyalsoldier/geoip
api_tag=latest
checkcustgeo
setcustgeo
;;
9)
read -p "请输入自定义数据库的链接地址 > " link
[ -n "$link" ] && custgeolink="$link"
getgeo
setcustgeo
;;
*)
errornum
sleep 1
break
;;
esac
done
}
setgeo() {
while true; do
. $CFG_PATH > /dev/null
[ -n "$cn_mini_v" ] && geo_type_des=精简版 || geo_type_des=全球版
echo "-----------------------------------------------"
@@ -630,47 +635,41 @@ setgeo(){
echo "-----------------------------------------------"
read -p "请输入对应数字 > " num
case "$num" in
0)
""|0)
break
;;
1)
geotype=china_ip_list.txt
geoname=cn_ip.txt
getgeo
setgeo
;;
2)
geotype=china_ipv6_list.txt
geoname=cn_ipv6.txt
getgeo
setgeo
;;
3)
geotype=cn_mini.mmdb
geoname=Country.mmdb
getgeo
setgeo
;;
4)
geotype=geosite.dat
geoname=GeoSite.dat
getgeo
setgeo
;;
5)
geotype=mrs.tar.gz
geoname=mrs.tar.gz
getgeo
setgeo
;;
6)
geotype=srs.tar.gz
geoname=srs.tar.gz
getgeo
setgeo
;;
8)
setcustgeo
setgeo
;;
9)
echo "-----------------------------------------------"
@@ -689,13 +688,16 @@ setgeo(){
echo -e "\033[33m所有数据库文件均已清理\033[0m"
sleep 1
}
setgeo
;;
*)
errornum
sleep 1
break
;;
esac
done
}
#Dashboard
getdb(){
dblink="${update_url}/"
@@ -892,22 +894,26 @@ setcrt(){
sleep 1
fi
}
#安装源
setserver(){
[ -z "$release_type" ] && release_name=未指定
[ -n "$release_type" ] && release_name="$release_type(回退)"
[ "$release_type" = stable ] && release_name=稳定版
[ "$release_type" = master ] && release_name=公测版
[ "$release_type" = dev ] && release_name=开发版
[ -n "$url_id" ] && url_name=$(grep "$url_id" "$CRASHDIR"/configs/servers.list 2>/dev/null | awk '{print $2}') || url_name="$update_url"
saveserver(){
# 写入配置文件
saveserver() {
setconfig update_url "'$update_url'"
setconfig url_id $url_id
setconfig release_type $release_type
echo "-----------------------------------------------"
echo -e "\033[32m源地址切换成功\033[0m"
}
# 安装源
setserver() {
while true; do
[ -z "$release_type" ] && release_name=未指定
[ -n "$release_type" ] && release_name="$release_type(回退)"
[ "$release_type" = stable ] && release_name=稳定版
[ "$release_type" = master ] && release_name=公测版
[ "$release_type" = dev ] && release_name=开发版
[ -n "$url_id" ] && url_name=$(grep "$url_id" "$CRASHDIR"/configs/servers.list 2>/dev/null | awk '{print $2}') || url_name="$update_url"
echo "-----------------------------------------------"
echo -e "\033[30;47m切换ShellCrash版本及更新源地址\033[0m"
echo -e "当前版本:\033[4;33m$release_name\033[0m 当前源:\033[4;32m$url_name\033[0m"
@@ -924,23 +930,24 @@ setserver(){
echo "-----------------------------------------------"
read -p "请输入对应字母或数字 > " num
case "$num" in
0)
""|0)
checkupdate=false
break
;;
[1-99])
url_id_new=$(grep -E "^1|$release_name" "$CRASHDIR"/configs/servers.list | sed -n ""$num"p" | awk '{print $1}')
if [ -z "$url_id_new" ];then
errornum
sleep 1
setserver
continue
elif [ "$url_id_new" -ge 200 ];then
update_url=$(grep -E "^1|$release_name" "$CRASHDIR"/configs/servers.list | sed -n ""$num"p" | awk '{print $3}')
url_id=''
saveserver
continue
else
url_id=$url_id_new
update_url=''
saveserver
continue
fi
unset url_id_new
;;
@@ -948,13 +955,11 @@ setserver(){
release_type=stable
[ -z "$url_id" ] && url_id=101
saveserver
setserver
;;
b)
release_type=master
[ -z "$url_id" ] && url_id=101
saveserver
setserver
;;
c)
echo "-----------------------------------------------"
@@ -967,7 +972,6 @@ setserver(){
[ -z "$url_id" ] && url_id=101
saveserver
fi
setserver
;;
d)
echo "-----------------------------------------------"
@@ -992,7 +996,7 @@ setserver(){
echo -e " 0 返回上级菜单"
read -p "请输入对应数字 > " num
if [ -z "$num" -o "$num" = 0 ]; then
setserver
continue
elif [ $num -le $(cat "$TMPDIR"/release_version 2>/dev/null | awk 'END{print NR}') ]; then
release_type=$(cat "$TMPDIR"/release_version | awk '{print $1}' | sed -n "$num"p)
update_url=''
@@ -1001,23 +1005,26 @@ setserver(){
echo "-----------------------------------------------"
errornum
sleep 1
setserver
continue
fi
else
echo "-----------------------------------------------"
echo -e "\033[31m版本回退信息获取失败请尝试更换其他安装源\033[0m"
sleep 1
setserver
continue
fi
rm -rf "$TMPDIR"/release_version
else
echo -e "\033[31m当前源不支持版本回退请尝试更换其他安装源\033[0m"
sleep 1
setserver
continue
fi
;;
*)
errornum
sleep 1
break
;;
esac
done
}