mirror of
https://github.com/juewuy/ShellCrash.git
synced 2026-03-14 09:21:22 +00:00
fix: add double quote to prevent globbing and word splitting
This commit is contained in:
@@ -8,7 +8,7 @@ __IS_MODULE_9_UPGRADE_LOADED=1
|
|||||||
. "$CRASHDIR"/libs/check_cpucore.sh
|
. "$CRASHDIR"/libs/check_cpucore.sh
|
||||||
. "$CRASHDIR"/libs/web_get_bin.sh
|
. "$CRASHDIR"/libs/web_get_bin.sh
|
||||||
|
|
||||||
error_down(){
|
error_down() {
|
||||||
echo -e "\033[33m请尝试切换至其他安装源后重新下载!\033[0m"
|
echo -e "\033[33m请尝试切换至其他安装源后重新下载!\033[0m"
|
||||||
echo -e "或者参考 \033[32;4mhttps://juewuy.github.io/bdaz\033[0m 进行本地安装!"
|
echo -e "或者参考 \033[32;4mhttps://juewuy.github.io/bdaz\033[0m 进行本地安装!"
|
||||||
sleep 1
|
sleep 1
|
||||||
@@ -46,7 +46,7 @@ upgrade() {
|
|||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
read -p "请输入对应数字 > " num
|
read -p "请输入对应数字 > " num
|
||||||
case "$num" in
|
case "$num" in
|
||||||
""|0)
|
"" | 0)
|
||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
1)
|
1)
|
||||||
@@ -105,14 +105,14 @@ upgrade() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#检查更新
|
#检查更新
|
||||||
checkupdate(){
|
checkupdate() {
|
||||||
echo -ne "\033[32m正在检查更新!\033[0m\r"
|
echo -ne "\033[32m正在检查更新!\033[0m\r"
|
||||||
get_bin "$TMPDIR"/version_new version echooff
|
get_bin "$TMPDIR"/version_new version echooff
|
||||||
[ "$?" = "0" ] && {
|
[ "$?" = "0" ] && {
|
||||||
version_new=$(cat "$TMPDIR"/version_new)
|
version_new=$(cat "$TMPDIR"/version_new)
|
||||||
get_bin "$TMPDIR"/version_new bin/version echooff
|
get_bin "$TMPDIR"/version_new bin/version echooff
|
||||||
}
|
}
|
||||||
if [ "$?" = "0" ];then
|
if [ "$?" = "0" ]; then
|
||||||
. "$TMPDIR"/version_new 2>/dev/null
|
. "$TMPDIR"/version_new 2>/dev/null
|
||||||
else
|
else
|
||||||
echo -e "\033[31m检查更新失败!请尝试切换其他安装源!\033[0m"
|
echo -e "\033[31m检查更新失败!请尝试切换其他安装源!\033[0m"
|
||||||
@@ -123,9 +123,9 @@ checkupdate(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
#更新脚本
|
#更新脚本
|
||||||
getscripts(){
|
getscripts() {
|
||||||
get_bin "$TMPDIR"/ShellCrash.tar.gz ShellCrash.tar.gz
|
get_bin "$TMPDIR"/ShellCrash.tar.gz ShellCrash.tar.gz
|
||||||
if [ "$?" != "0" ];then
|
if [ "$?" != "0" ]; then
|
||||||
echo -e "\033[33m文件下载失败!\033[0m"
|
echo -e "\033[33m文件下载失败!\033[0m"
|
||||||
error_down
|
error_down
|
||||||
else
|
else
|
||||||
@@ -133,9 +133,9 @@ getscripts(){
|
|||||||
#解压
|
#解压
|
||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
echo "开始解压文件!"
|
echo "开始解压文件!"
|
||||||
mkdir -p "$CRASHDIR" > /dev/null
|
mkdir -p "$CRASHDIR" >/dev/null
|
||||||
tar -zxf "$TMPDIR/ShellCrash.tar.gz" ${tar_para} -C "$CRASHDIR"/
|
tar -zxf "$TMPDIR/ShellCrash.tar.gz" ${tar_para} -C "$CRASHDIR"/
|
||||||
if [ $? -ne 0 ];then
|
if [ $? -ne 0 ]; then
|
||||||
echo -e "\033[33m文件解压失败!\033[0m"
|
echo -e "\033[33m文件解压失败!\033[0m"
|
||||||
error_down
|
error_down
|
||||||
else
|
else
|
||||||
@@ -146,7 +146,7 @@ getscripts(){
|
|||||||
rm -rf "$TMPDIR"/ShellCrash.tar.gz
|
rm -rf "$TMPDIR"/ShellCrash.tar.gz
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
setscripts(){
|
setscripts() {
|
||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
echo -e "当前脚本版本为:\033[33m $versionsh_l \033[0m"
|
echo -e "当前脚本版本为:\033[33m $versionsh_l \033[0m"
|
||||||
echo -e "最新脚本版本为:\033[32m $version_new \033[0m"
|
echo -e "最新脚本版本为:\033[32m $version_new \033[0m"
|
||||||
@@ -160,31 +160,31 @@ setscripts(){
|
|||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
echo -e "\033[32m管理脚本更新成功!\033[0m"
|
echo -e "\033[32m管理脚本更新成功!\033[0m"
|
||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
exit;
|
exit
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
#更新内核
|
#更新内核
|
||||||
setcpucore(){ #手动设置内核架构
|
setcpucore() { #手动设置内核架构
|
||||||
cpucore_list="armv5 armv7 arm64 386 amd64 mipsle-softfloat mipsle-hardfloat mips-softfloat"
|
cpucore_list="armv5 armv7 arm64 386 amd64 mipsle-softfloat mipsle-hardfloat mips-softfloat"
|
||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
echo -e "\033[31m仅适合脚本无法正确识别核心或核心无法正常运行时使用!\033[0m"
|
echo -e "\033[31m仅适合脚本无法正确识别核心或核心无法正常运行时使用!\033[0m"
|
||||||
echo -e "当前可供在线下载的处理器架构为:"
|
echo -e "当前可供在线下载的处理器架构为:"
|
||||||
echo $cpucore_list | awk -F " " '{for(i=1;i<=NF;i++) {print i" "$i }}'
|
echo "$cpucore_list" | awk -F " " '{for(i=1;i<=NF;i++) {print i" "$i }}'
|
||||||
echo -e "不知道如何获取核心版本?请参考:\033[36;4mhttps://juewuy.github.io/bdaz\033[0m"
|
echo -e "不知道如何获取核心版本?请参考:\033[36;4mhttps://juewuy.github.io/bdaz\033[0m"
|
||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
read -p "请输入对应数字 > " num
|
read -p "请输入对应数字 > " num
|
||||||
[ -n "$num" ] && setcpucore=$(echo $cpucore_list | awk '{print $"'"$num"'"}' )
|
[ -n "$num" ] && setcpucore=$(echo "$cpucore_list" | awk '{print $"'"$num"'"}')
|
||||||
if [ -z "$setcpucore" ];then
|
if [ -z "$setcpucore" ]; then
|
||||||
echo -e "\033[31m请输入正确的处理器架构!\033[0m"
|
echo -e "\033[31m请输入正确的处理器架构!\033[0m"
|
||||||
sleep 1
|
sleep 1
|
||||||
cpucore=""
|
cpucore=""
|
||||||
else
|
else
|
||||||
cpucore=$setcpucore
|
cpucore=$setcpucore
|
||||||
setconfig cpucore $cpucore
|
setconfig cpucore "$cpucore"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
setcoretype(){ #手动指定内核类型
|
setcoretype() { #手动指定内核类型
|
||||||
echo "$crashcore" | grep -q 'singbox' && core_old=singbox || core_old=clash
|
echo "$crashcore" | grep -q 'singbox' && core_old=singbox || core_old=clash
|
||||||
echo -e "\033[33m请确认该自定义内核的类型:\033[0m"
|
echo -e "\033[33m请确认该自定义内核的类型:\033[0m"
|
||||||
echo -e " 1 Clash基础内核"
|
echo -e " 1 Clash基础内核"
|
||||||
@@ -202,7 +202,7 @@ setcoretype(){ #手动指定内核类型
|
|||||||
esac
|
esac
|
||||||
echo "$crashcore" | grep -q 'singbox' && core_new=singbox || core_new=clash
|
echo "$crashcore" | grep -q 'singbox' && core_new=singbox || core_new=clash
|
||||||
}
|
}
|
||||||
switch_core(){ #clash与singbox内核切换
|
switch_core() { #clash与singbox内核切换
|
||||||
#singbox和clash内核切换时提示是否保留文件
|
#singbox和clash内核切换时提示是否保留文件
|
||||||
[ "$core_new" != "$core_old" ] && {
|
[ "$core_new" != "$core_old" ] && {
|
||||||
[ "$dns_mod" = "redir_host" ] && [ "$core_old" = "clash" ] && setconfig dns_mod mix #singbox自动切换dns
|
[ "$dns_mod" = "redir_host" ] && [ "$core_old" = "clash" ] && setconfig dns_mod mix #singbox自动切换dns
|
||||||
@@ -219,10 +219,10 @@ switch_core(){ #clash与singbox内核切换
|
|||||||
geodate='geoip.db geosite.db ruleset/*.srs ruleset/*.json'
|
geodate='geoip.db geosite.db ruleset/*.srs ruleset/*.json'
|
||||||
geodate_v='geoip_cn_v geosite_cn_v srs_geoip_cn_v srs_geosite_cn_v'
|
geodate_v='geoip_cn_v geosite_cn_v srs_geoip_cn_v srs_geosite_cn_v'
|
||||||
}
|
}
|
||||||
for text in ${geodate} ;do
|
for text in ${geodate}; do
|
||||||
rm -rf "$CRASHDIR"/${text}
|
rm -rf "$CRASHDIR"/${text}
|
||||||
done
|
done
|
||||||
for text in ${geodate_v} ;do
|
for text in ${geodate_v}; do
|
||||||
setconfig "$text"
|
setconfig "$text"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
@@ -254,8 +254,8 @@ getcore() {
|
|||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo -e "\033[31m核心文件下载成功但校验失败!请尝试手动指定CPU版本\033[0m"
|
echo -e "\033[31m核心文件下载成功但校验失败!请尝试手动指定CPU版本\033[0m"
|
||||||
rm -rf ${TMPDIR}/core_new
|
rm -rf "${TMPDIR}"/core_new
|
||||||
rm -rf ${TMPDIR}/core_new.tar.gz
|
rm -rf "${TMPDIR}"/core_new.tar.gz
|
||||||
setcpucore
|
setcpucore
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@@ -265,12 +265,12 @@ checkcustcore() {
|
|||||||
[ "$api_tag" = "latest" ] && api_url=latest || api_url="tags/$api_tag"
|
[ "$api_tag" = "latest" ] && api_url=latest || api_url="tags/$api_tag"
|
||||||
# 通过githubapi获取内核信息
|
# 通过githubapi获取内核信息
|
||||||
echo -e "\033[32m正在获取内核文件链接!\033[0m"
|
echo -e "\033[32m正在获取内核文件链接!\033[0m"
|
||||||
webget "$TMPDIR"/github_api https://api.github.com/repos/${project}/releases/${api_url}
|
webget "$TMPDIR"/github_api https://api.github.com/repos/"${project}"/releases/"${api_url}"
|
||||||
if [ "$?" = 0 ]; then
|
if [ "$?" = 0 ]; then
|
||||||
release_tag=$(cat "$TMPDIR"/github_api | grep '"tag_name":' | awk -F '"' '{print $4}')
|
release_tag=$(cat "$TMPDIR"/github_api | grep '"tag_name":' | awk -F '"' '{print $4}')
|
||||||
release_date=$(cat "$TMPDIR"/github_api | grep '"published_at":' | awk -F '"' '{print $4}')
|
release_date=$(cat "$TMPDIR"/github_api | grep '"published_at":' | awk -F '"' '{print $4}')
|
||||||
update_date=$(cat "$TMPDIR"/github_api | grep '"updated_at":' | head -n 1 | awk -F '"' '{print $4}')
|
update_date=$(cat "$TMPDIR"/github_api | grep '"updated_at":' | head -n 1 | awk -F '"' '{print $4}')
|
||||||
[ -n "$(echo $cpucore | grep mips)" ] && cpu_type=mips || cpu_type=$cpucore
|
[ -n "$(echo "$cpucore" | grep mips)" ] && cpu_type=mips || cpu_type=$cpucore
|
||||||
cat "$TMPDIR"/github_api | grep "browser_download_url" | grep -oE "https://github.com/${project}/releases/download.*linux.*${cpu_type}.*\.gz\"$" | sed 's/"//' >"$TMPDIR"/core.list
|
cat "$TMPDIR"/github_api | grep "browser_download_url" | grep -oE "https://github.com/${project}/releases/download.*linux.*${cpu_type}.*\.gz\"$" | sed 's/"//' >"$TMPDIR"/core.list
|
||||||
rm -rf "$TMPDIR"/github_api
|
rm -rf "$TMPDIR"/github_api
|
||||||
|
|
||||||
@@ -380,7 +380,7 @@ setcustcore() {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
setziptype(){
|
setziptype() {
|
||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
echo -e "请选择内核内核分支及压缩方式:\033[0m"
|
echo -e "请选择内核内核分支及压缩方式:\033[0m"
|
||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
@@ -415,7 +415,7 @@ setcore() {
|
|||||||
[ -z "$crashcore" ] && crashcore="unknow"
|
[ -z "$crashcore" ] && crashcore="unknow"
|
||||||
[ -z "$zip_type" ] && zip_type="tar.gz"
|
[ -z "$zip_type" ] && zip_type="tar.gz"
|
||||||
echo "$crashcore" | grep -q 'singbox' && core_old=singbox || core_old=clash
|
echo "$crashcore" | grep -q 'singbox' && core_old=singbox || core_old=clash
|
||||||
[ -n "$custcorelink" ] && custcore="$(echo $custcorelink | sed 's#.*github.com##; s#/releases/download/#@#; s#-linux.*$##')"
|
[ -n "$custcorelink" ] && custcore="$(echo "$custcorelink" | sed 's#.*github.com##; s#/releases/download/#@#; s#-linux.*$##')"
|
||||||
###
|
###
|
||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
[ -z "$cpucore" ] && check_cpucore
|
[ -z "$cpucore" ] && check_cpucore
|
||||||
@@ -505,12 +505,12 @@ setcore() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#数据库
|
#数据库
|
||||||
getgeo(){ #下载Geo文件
|
getgeo() { #下载Geo文件
|
||||||
#生成链接
|
#生成链接
|
||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
echo "正在从服务器获取数据库文件…………"
|
echo "正在从服务器获取数据库文件......"
|
||||||
get_bin "$TMPDIR"/${geoname} bin/geodata/$geotype
|
get_bin "$TMPDIR"/"${geoname}" bin/geodata/"$geotype"
|
||||||
if [ "$?" = "1" ];then
|
if [ "$?" = "1" ]; then
|
||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
echo -e "\033[31m文件下载失败!\033[0m"
|
echo -e "\033[31m文件下载失败!\033[0m"
|
||||||
error_down
|
error_down
|
||||||
@@ -519,26 +519,26 @@ getgeo(){ #下载Geo文件
|
|||||||
geofile='ruleset/'
|
geofile='ruleset/'
|
||||||
[ ! -d "$BINDIR"/ruleset ] && mkdir -p "$BINDIR"/ruleset
|
[ ! -d "$BINDIR"/ruleset ] && mkdir -p "$BINDIR"/ruleset
|
||||||
}
|
}
|
||||||
if echo "$geoname" | grep -Eq '.tar.gz';then
|
if echo "$geoname" | grep -Eq '.tar.gz'; then
|
||||||
tar -zxf "$TMPDIR"/${geoname} ${tar_para} -C "$BINDIR"/${geofile} > /dev/null
|
tar -zxf "$TMPDIR"/"${geoname}" "${tar_para}" -C "$BINDIR"/"${geofile}" >/dev/null
|
||||||
[ $? -ne 0 ] && echo "文件解压失败!" && rm -rf "$TMPDIR"/${geoname} && exit 1
|
[ $? -ne 0 ] && echo "文件解压失败!" && rm -rf "$TMPDIR"/${geoname} && exit 1
|
||||||
rm -rf "$TMPDIR"/${geoname}
|
rm -rf "$TMPDIR"/${geoname}
|
||||||
else
|
else
|
||||||
mv -f "$TMPDIR"/${geoname} "$BINDIR"/${geofile}${geoname}
|
mv -f "$TMPDIR"/"${geoname}" "$BINDIR"/"${geofile}""${geoname}"
|
||||||
fi
|
fi
|
||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
echo -e "\033[32m$geotype数据库文件下载成功!\033[0m"
|
echo -e "\033[32m$geotype数据库文件下载成功!\033[0m"
|
||||||
geo_v="$(echo $geotype | awk -F "." '{print $1}')_v"
|
geo_v="$(echo "$geotype" | awk -F "." '{print $1}')_v"
|
||||||
setconfig $geo_v $GeoIP_v
|
setconfig "$geo_v" "$GeoIP_v"
|
||||||
fi
|
fi
|
||||||
sleep 1
|
sleep 1
|
||||||
}
|
}
|
||||||
|
|
||||||
getcustgeo(){
|
getcustgeo() {
|
||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
echo "正在获取数据库文件…………"
|
echo "正在获取数据库文件......"
|
||||||
webget "$TMPDIR"/$geoname $custgeolink
|
webget "$TMPDIR"/"$geoname" "$custgeolink"
|
||||||
if [ "$?" = "1" ];then
|
if [ "$?" = "1" ]; then
|
||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
echo -e "\033[31m文件下载失败!\033[0m"
|
echo -e "\033[31m文件下载失败!\033[0m"
|
||||||
error_down
|
error_down
|
||||||
@@ -547,7 +547,7 @@ getcustgeo(){
|
|||||||
geofile='ruleset/'
|
geofile='ruleset/'
|
||||||
[ ! -d "$BINDIR"/ruleset ] && mkdir -p "$BINDIR"/ruleset
|
[ ! -d "$BINDIR"/ruleset ] && mkdir -p "$BINDIR"/ruleset
|
||||||
}
|
}
|
||||||
mv -f "$TMPDIR"/${geoname} "$BINDIR"/${geofile}${geoname}
|
mv -f "$TMPDIR"/"${geoname}" "$BINDIR"/"${geofile}""${geoname}"
|
||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
echo -e "\033[32m$geotype数据库文件下载成功!\033[0m"
|
echo -e "\033[32m$geotype数据库文件下载成功!\033[0m"
|
||||||
fi
|
fi
|
||||||
@@ -578,9 +578,9 @@ checkcustgeo() {
|
|||||||
[1-99])
|
[1-99])
|
||||||
if [ "$num" -le "$(wc -l <"$TMPDIR"/geo.list)" ]; then
|
if [ "$num" -le "$(wc -l <"$TMPDIR"/geo.list)" ]; then
|
||||||
geotype=$(sed -n "$num"p "$TMPDIR"/geo.list)
|
geotype=$(sed -n "$num"p "$TMPDIR"/geo.list)
|
||||||
[ -n "$(echo $geotype | grep -oiE 'GeoSite.*dat')" ] && geoname=GeoSite.dat
|
[ -n "$(echo "$geotype" | grep -oiE 'GeoSite.*dat')" ] && geoname=GeoSite.dat
|
||||||
[ -n "$(echo $geotype | grep -oiE 'Country.*mmdb')" ] && geoname=Country.mmdb
|
[ -n "$(echo "$geotype" | grep -oiE 'Country.*mmdb')" ] && geoname=Country.mmdb
|
||||||
[ -n "$(echo $geotype | grep -oiE '.*(.srs|.mrs)')" ] && geoname=$geotype
|
[ -n "$(echo "$geotype" | grep -oiE '.*(.srs|.mrs)')" ] && geoname=$geotype
|
||||||
custgeolink=https://github.com/${project}/releases/download/${release_tag}/${geotype}
|
custgeolink=https://github.com/${project}/releases/download/${release_tag}/${geotype}
|
||||||
getcustgeo
|
getcustgeo
|
||||||
else
|
else
|
||||||
@@ -623,7 +623,7 @@ setcustgeo() {
|
|||||||
echo -e " 0 返回上级菜单"
|
echo -e " 0 返回上级菜单"
|
||||||
read -p "请输入对应数字 > " num
|
read -p "请输入对应数字 > " num
|
||||||
case "$num" in
|
case "$num" in
|
||||||
""|0)
|
"" | 0)
|
||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
1)
|
1)
|
||||||
@@ -666,7 +666,7 @@ setcustgeo() {
|
|||||||
}
|
}
|
||||||
setgeo() {
|
setgeo() {
|
||||||
while true; do
|
while true; do
|
||||||
. $CFG_PATH > /dev/null
|
. $CFG_PATH >/dev/null
|
||||||
[ -n "$cn_mini_v" ] && geo_type_des=精简版 || geo_type_des=全球版
|
[ -n "$cn_mini_v" ] && geo_type_des=精简版 || geo_type_des=全球版
|
||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
echo -e "\033[36m请选择需要更新的Geo数据库文件:\033[0m"
|
echo -e "\033[36m请选择需要更新的Geo数据库文件:\033[0m"
|
||||||
@@ -688,7 +688,7 @@ setgeo() {
|
|||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
read -p "请输入对应数字 > " num
|
read -p "请输入对应数字 > " num
|
||||||
case "$num" in
|
case "$num" in
|
||||||
""|0)
|
"" | 0)
|
||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
1)
|
1)
|
||||||
@@ -731,13 +731,13 @@ setgeo() {
|
|||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
read -p "确认清理?[1/0] > " res
|
read -p "确认清理?[1/0] > " res
|
||||||
[ "$res" = '1' ] && {
|
[ "$res" = '1' ] && {
|
||||||
for file in cn_ip.txt cn_ipv6.txt Country.mmdb GeoSite.dat geoip.db geosite.db;do
|
for file in cn_ip.txt cn_ipv6.txt Country.mmdb GeoSite.dat geoip.db geosite.db; do
|
||||||
rm -rf $CRASHDIR/$file
|
rm -rf $CRASHDIR/$file
|
||||||
done
|
done
|
||||||
for var in Country_v cn_mini_v china_ip_list_v china_ipv6_list_v geosite_v geoip_cn_v geosite_cn_v mrs_geosite_cn_v srs_geoip_cn_v srs_geosite_cn_v mrs_v srs_v;do
|
for var in Country_v cn_mini_v china_ip_list_v china_ipv6_list_v geosite_v geoip_cn_v geosite_cn_v mrs_geosite_cn_v srs_geoip_cn_v srs_geosite_cn_v mrs_v srs_v; do
|
||||||
setconfig $var
|
setconfig $var
|
||||||
done
|
done
|
||||||
rm -rf $CRASHDIR/ruleset/*
|
rm -rf "$CRASHDIR"/ruleset/*
|
||||||
echo -e "\033[33m所有数据库文件均已清理!\033[0m"
|
echo -e "\033[33m所有数据库文件均已清理!\033[0m"
|
||||||
sleep 1
|
sleep 1
|
||||||
}
|
}
|
||||||
@@ -748,7 +748,7 @@ setgeo() {
|
|||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
#Dashboard
|
#Dashboard
|
||||||
@@ -765,17 +765,17 @@ getdb() {
|
|||||||
return 1
|
return 1
|
||||||
else
|
else
|
||||||
echo -e "\033[33m下载成功,正在解压文件!\033[0m"
|
echo -e "\033[33m下载成功,正在解压文件!\033[0m"
|
||||||
mkdir -p $dbdir >/dev/null
|
mkdir -p "$dbdir" >/dev/null
|
||||||
tar -zxf "$TMPDIR/clashdb.tar.gz" ${tar_para} -C $dbdir >/dev/null
|
tar -zxf "$TMPDIR/clashdb.tar.gz" "${tar_para}" -C "$dbdir" >/dev/null
|
||||||
[ $? -ne 0 ] && echo "文件解压失败!" && rm -rf "$TMPDIR"/clashfm.tar.gz && exit 1
|
[ $? -ne 0 ] && echo "文件解压失败!" && rm -rf "$TMPDIR"/clashfm.tar.gz && exit 1
|
||||||
#修改默认host和端口
|
#修改默认host和端口
|
||||||
if [ "$db_type" = "clashdb" -o "$db_type" = "meta_db" -o "$db_type" = "zashboard" ]; then
|
if [ "$db_type" = "clashdb" -o "$db_type" = "meta_db" -o "$db_type" = "zashboard" ]; then
|
||||||
sed -i "s/127.0.0.1/${host}/g" $dbdir/assets/*.js
|
sed -i "s/127.0.0.1/${host}/g" "$dbdir"/assets/*.js
|
||||||
sed -i "s/9090/${db_port}/g" $dbdir/assets/*.js
|
sed -i "s/9090/${db_port}/g" "$dbdir"/assets/*.js
|
||||||
elif [ "$db_type" = "meta_xd" ]; then
|
elif [ "$db_type" = "meta_xd" ]; then
|
||||||
sed -i "s/127.0.0.1:9090/${host}:${db_port}/g" $dbdir/_nuxt/*.js
|
sed -i "s/127.0.0.1:9090/${host}:${db_port}/g" "$dbdir"/_nuxt/*.js
|
||||||
else
|
else
|
||||||
sed -i "s/127.0.0.1:9090/${host}:${db_port}/g" $dbdir/*.html
|
sed -i "s/127.0.0.1:9090/${host}:${db_port}/g" "$dbdir"/*.html
|
||||||
fi
|
fi
|
||||||
#写入配置文件
|
#写入配置文件
|
||||||
setconfig hostdir "'$hostdir'"
|
setconfig hostdir "'$hostdir'"
|
||||||
@@ -907,37 +907,37 @@ setdb() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#根证书
|
#根证书
|
||||||
getcrt(){
|
getcrt() {
|
||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
echo "正在连接服务器获取安装文件…………"
|
echo "正在连接服务器获取安装文件......"
|
||||||
get_bin "$TMPDIR"/ca-certificates.crt bin/fix/ca-certificates.crt
|
get_bin "$TMPDIR"/ca-certificates.crt bin/fix/ca-certificates.crt
|
||||||
if [ "$?" = "1" ];then
|
if [ "$?" = "1" ]; then
|
||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
echo -e "\033[31m文件下载失败!\033[0m"
|
echo -e "\033[31m文件下载失败!\033[0m"
|
||||||
error_down
|
error_down
|
||||||
else
|
else
|
||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
[ "$systype" = 'mi_snapshot' ] && cp -f "$TMPDIR"/ca-certificates.crt $CRASHDIR/tools #镜像化设备特殊处理
|
[ "$systype" = 'mi_snapshot' ] && cp -f "$TMPDIR"/ca-certificates.crt "$CRASHDIR"/tools #镜像化设备特殊处理
|
||||||
[ -f $openssldir/certs ] && rm -rf $openssldir/certs #如果certs不是目录而是文件则删除并创建目录
|
[ -f "$openssldir"/certs ] && rm -rf "$openssldir"/certs #如果certs不是目录而是文件则删除并创建目录
|
||||||
mkdir -p $openssldir/certs
|
mkdir -p "$openssldir"/certs
|
||||||
mv -f "$TMPDIR"/ca-certificates.crt $crtdir
|
mv -f "$TMPDIR"/ca-certificates.crt "$crtdir"
|
||||||
webget /dev/null https://baidu.com echooff rediron skipceroff
|
webget /dev/null https://baidu.com echooff rediron skipceroff
|
||||||
if [ "$?" = "1" ];then
|
if [ "$?" = "1" ]; then
|
||||||
export CURL_CA_BUNDLE=$crtdir
|
export CURL_CA_BUNDLE="$crtdir"
|
||||||
echo "export CURL_CA_BUNDLE=$crtdir" >> /etc/profile
|
echo "export CURL_CA_BUNDLE=$crtdir" >>/etc/profile
|
||||||
fi
|
fi
|
||||||
echo -e "\033[32m证书安装成功!\033[0m"
|
echo -e "\033[32m证书安装成功!\033[0m"
|
||||||
sleep 1
|
sleep 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
setcrt(){
|
setcrt() {
|
||||||
openssldir="$(openssl version -d 2>&1 | awk -F '"' '{print $2}')"
|
openssldir="$(openssl version -d 2>&1 | awk -F '"' '{print $2}')"
|
||||||
if [ -d "$openssldir/certs/" ];then
|
if [ -d "$openssldir/certs/" ]; then
|
||||||
crtdir="$openssldir/certs/ca-certificates.crt"
|
crtdir="$openssldir/certs/ca-certificates.crt"
|
||||||
else
|
else
|
||||||
crtdir="/etc/ssl/certs/ca-certificates.crt"
|
crtdir="/etc/ssl/certs/ca-certificates.crt"
|
||||||
fi
|
fi
|
||||||
if [ -n "$openssldir" ];then
|
if [ -n "$openssldir" ]; then
|
||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
echo -e "\033[36m安装/更新本地根证书文件(ca-certificates.crt)\033[0m"
|
echo -e "\033[36m安装/更新本地根证书文件(ca-certificates.crt)\033[0m"
|
||||||
echo -e "\033[33m用于解决证书校验错误,x509报错等问题\033[0m"
|
echo -e "\033[33m用于解决证书校验错误,x509报错等问题\033[0m"
|
||||||
@@ -946,7 +946,7 @@ setcrt(){
|
|||||||
[ -f "$crtdir" ] && echo -e "\033[33m检测到系统已经存在根证书文件($crtdir)了!\033[0m\n-----------------------------------------------"
|
[ -f "$crtdir" ] && echo -e "\033[33m检测到系统已经存在根证书文件($crtdir)了!\033[0m\n-----------------------------------------------"
|
||||||
read -p "是否覆盖更新?(1/0) > " res
|
read -p "是否覆盖更新?(1/0) > " res
|
||||||
|
|
||||||
if [ -z "$res" ];then
|
if [ -z "$res" ]; then
|
||||||
errornum
|
errornum
|
||||||
elif [ "$res" = '0' ]; then
|
elif [ "$res" = '0' ]; then
|
||||||
i=
|
i=
|
||||||
@@ -965,8 +965,8 @@ setcrt(){
|
|||||||
# 写入配置文件
|
# 写入配置文件
|
||||||
saveserver() {
|
saveserver() {
|
||||||
setconfig update_url "'$update_url'"
|
setconfig update_url "'$update_url'"
|
||||||
setconfig url_id $url_id
|
setconfig url_id "$url_id"
|
||||||
setconfig release_type $release_type
|
setconfig release_type "$release_type"
|
||||||
version_new=''
|
version_new=''
|
||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
echo -e "\033[32m源地址切换成功!\033[0m"
|
echo -e "\033[32m源地址切换成功!\033[0m"
|
||||||
@@ -998,17 +998,17 @@ setserver() {
|
|||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
read -p "请输入对应字母或数字 > " num
|
read -p "请输入对应字母或数字 > " num
|
||||||
case "$num" in
|
case "$num" in
|
||||||
""|0)
|
"" | 0)
|
||||||
checkupdate=false
|
checkupdate=false
|
||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
[1-99])
|
[1-99])
|
||||||
url_id_new=$(grep -E "^1|$release_name" "$CRASHDIR"/configs/servers.list | sed -n "$num"p | awk '{print $1}')
|
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
|
if [ -z "$url_id_new" ]; then
|
||||||
errornum
|
errornum
|
||||||
sleep 1
|
sleep 1
|
||||||
continue
|
continue
|
||||||
elif [ "$url_id_new" -ge 200 ];then
|
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}')
|
update_url=$(grep -E "^1|$release_name" "$CRASHDIR"/configs/servers.list | sed -n "$num"p | awk '{print $3}')
|
||||||
url_id=''
|
url_id=''
|
||||||
saveserver
|
saveserver
|
||||||
@@ -1037,7 +1037,7 @@ setserver() {
|
|||||||
echo -e "\033[36m如果你没有足够的耐心或者测试经验,切勿使用此版本!\033[0m"
|
echo -e "\033[36m如果你没有足够的耐心或者测试经验,切勿使用此版本!\033[0m"
|
||||||
echo -e "请务必加入我们的讨论组:\033[32;4mhttps://t.me/ShellClash\033[0m"
|
echo -e "请务必加入我们的讨论组:\033[32;4mhttps://t.me/ShellClash\033[0m"
|
||||||
read -p "是否依然切换到开发版?(1/0) > " res
|
read -p "是否依然切换到开发版?(1/0) > " res
|
||||||
if [ "$res" = 1 ];then
|
if [ "$res" = 1 ]; then
|
||||||
release_type=dev
|
release_type=dev
|
||||||
[ -z "$url_id" ] && url_id=101
|
[ -z "$url_id" ] && url_id=101
|
||||||
saveserver
|
saveserver
|
||||||
@@ -1046,7 +1046,7 @@ setserver() {
|
|||||||
d)
|
d)
|
||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
read -p "请输入个人源路径 > " update_url
|
read -p "请输入个人源路径 > " update_url
|
||||||
if [ -z "$update_url" ];then
|
if [ -z "$update_url" ]; then
|
||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
echo -e "\033[31m取消输入,返回上级菜单\033[0m"
|
echo -e "\033[31m取消输入,返回上级菜单\033[0m"
|
||||||
else
|
else
|
||||||
@@ -1057,17 +1057,17 @@ setserver() {
|
|||||||
;;
|
;;
|
||||||
e)
|
e)
|
||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
if [ -n "$url_id" ] && [ "$url_id" -lt 200 ];then
|
if [ -n "$url_id" ] && [ "$url_id" -lt 200 ]; then
|
||||||
echo -ne "\033[32m正在获取版本信息!\033[0m\r"
|
echo -ne "\033[32m正在获取版本信息!\033[0m\r"
|
||||||
get_bin "$TMPDIR"/release_version bin/release_version
|
get_bin "$TMPDIR"/release_version bin/release_version
|
||||||
if [ "$?" = "0" ];then
|
if [ "$?" = "0" ]; then
|
||||||
echo -e "\033[31m请选择想要回退至的稳定版版本:\033[0m"
|
echo -e "\033[31m请选择想要回退至的稳定版版本:\033[0m"
|
||||||
cat "$TMPDIR"/release_version | awk '{print " "NR" "$1}'
|
cat "$TMPDIR"/release_version | awk '{print " "NR" "$1}'
|
||||||
echo -e " 0 返回上级菜单"
|
echo -e " 0 返回上级菜单"
|
||||||
read -p "请输入对应数字 > " num
|
read -p "请输入对应数字 > " num
|
||||||
if [ -z "$num" -o "$num" = 0 ]; then
|
if [ -z "$num" -o "$num" = 0 ]; then
|
||||||
continue
|
continue
|
||||||
elif [ $num -le $(cat "$TMPDIR"/release_version 2>/dev/null | awk 'END{print NR}') ]; then
|
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)
|
release_type=$(cat "$TMPDIR"/release_version | awk '{print $1}' | sed -n "$num"p)
|
||||||
update_url=''
|
update_url=''
|
||||||
saveserver
|
saveserver
|
||||||
|
|||||||
Reference in New Issue
Block a user