~providers功能现在支持导入本地yaml文件
~修复provides功能在meta内核未能正确跳过证书验证的bug ~修复本地导入CrashCore命名的内核时未正确提示的bug ~修复自动更新数据库任务明明成功却提示执行失败的bug ~修复自动更新数据库会更新一些当前无用数据库文件的bug
This commit is contained in:
@@ -336,11 +336,20 @@ setproxies(){ #自定义clash节点
|
|||||||
}
|
}
|
||||||
gen_clash_providers(){ #生成clash的providers配置文件
|
gen_clash_providers(){ #生成clash的providers配置文件
|
||||||
gen_clash_providers_txt(){
|
gen_clash_providers_txt(){
|
||||||
|
if [ -n "$(echo $2|grep -E '^./')" ];then
|
||||||
|
local type=file
|
||||||
|
local path=$2
|
||||||
|
local download_url=
|
||||||
|
else
|
||||||
|
local type=http
|
||||||
|
local path="./providers/${1}.yaml"
|
||||||
|
local download_url=$2
|
||||||
|
fi
|
||||||
cat >> $TMPDIR/providers/providers.yaml <<EOF
|
cat >> $TMPDIR/providers/providers.yaml <<EOF
|
||||||
${1}:
|
${1}:
|
||||||
type: http
|
type: http
|
||||||
url: "${2}"
|
url: "$download_url"
|
||||||
path: ./providers/${1}.yaml
|
path: "$path"
|
||||||
interval: 43200
|
interval: 43200
|
||||||
health-check:
|
health-check:
|
||||||
enable: true
|
enable: true
|
||||||
@@ -349,7 +358,7 @@ gen_clash_providers(){ #生成clash的providers配置文件
|
|||||||
interval: 600
|
interval: 600
|
||||||
EOF
|
EOF
|
||||||
[ "$crashcore" = 'meta' ] && {
|
[ "$crashcore" = 'meta' ] && {
|
||||||
[ "$skip_cert" = "已开启" ] && skip_cert_verify='skip-cert-verify: true'
|
[ "$skip_cert" != "未开启" ] && skip_cert_verify='skip-cert-verify: true'
|
||||||
cat >> $TMPDIR/providers/providers.yaml <<EOF
|
cat >> $TMPDIR/providers/providers.yaml <<EOF
|
||||||
override:
|
override:
|
||||||
udp: true
|
udp: true
|
||||||
@@ -417,7 +426,18 @@ EOF
|
|||||||
}
|
}
|
||||||
gen_singbox_providers(){ #生成singbox的providers配置文件
|
gen_singbox_providers(){ #生成singbox的providers配置文件
|
||||||
gen_singbox_providers_txt(){
|
gen_singbox_providers_txt(){
|
||||||
cat >> ${TMPDIR}/providers/providers.json <<EOF
|
if [ -n "$(echo $2|grep -E '^./')" ];then
|
||||||
|
cat >> ${TMPDIR}/providers/providers.json <<EOF
|
||||||
|
{
|
||||||
|
"tag": "${1}",
|
||||||
|
"type": "file",
|
||||||
|
"healthcheck_url": "https://www.gstatic.com/generate_204",
|
||||||
|
"healthcheck_interval": "10m",
|
||||||
|
"path": "${2}"
|
||||||
|
},
|
||||||
|
EOF
|
||||||
|
else
|
||||||
|
cat >> ${TMPDIR}/providers/providers.json <<EOF
|
||||||
{
|
{
|
||||||
"tag": "${1}",
|
"tag": "${1}",
|
||||||
"type": "http",
|
"type": "http",
|
||||||
@@ -430,6 +450,8 @@ gen_singbox_providers(){ #生成singbox的providers配置文件
|
|||||||
"download_detour": "DIRECT"
|
"download_detour": "DIRECT"
|
||||||
},
|
},
|
||||||
EOF
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
}
|
}
|
||||||
if [ -z "$(grep "provider_temp_${coretype}" ${CRASHDIR}/configs/ShellCrash.cfg)" ];then
|
if [ -z "$(grep "provider_temp_${coretype}" ${CRASHDIR}/configs/ShellCrash.cfg)" ];then
|
||||||
provider_temp_file=$(sed -n "1 p" ${CRASHDIR}/configs/${coretype}_providers.list | awk '{print $2}')
|
provider_temp_file=$(sed -n "1 p" ${CRASHDIR}/configs/${coretype}_providers.list | awk '{print $2}')
|
||||||
@@ -495,7 +517,8 @@ EOF
|
|||||||
setproviders(){ #自定义providers
|
setproviders(){ #自定义providers
|
||||||
echo -----------------------------------------------
|
echo -----------------------------------------------
|
||||||
echo -e "\033[33m你可以在这里快捷管理与生成自定义的providers提供者\033[0m"
|
echo -e "\033[33m你可以在这里快捷管理与生成自定义的providers提供者\033[0m"
|
||||||
echo -e "\033[33m暂时只支持yaml格式的配置导入,并且不支持跳过证书验证功能\033[0m"
|
echo -e "\033[36m支持在线及本地的Yaml格式配置导入\033[0m"
|
||||||
|
echo -e "\033[33msingboxp内核暂不支持跳过证书验证功能\033[0m"
|
||||||
[ -s $CRASHDIR/configs/providers.cfg ] && {
|
[ -s $CRASHDIR/configs/providers.cfg ] && {
|
||||||
echo -----------------------------------------------
|
echo -----------------------------------------------
|
||||||
echo -e "\033[36m输入对应数字可管理providers提供者\033[0m"
|
echo -e "\033[36m输入对应数字可管理providers提供者\033[0m"
|
||||||
@@ -538,8 +561,8 @@ setproviders(){ #自定义providers
|
|||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
2)
|
2)
|
||||||
read -p "请输入http(s)格式的providers链接地址 > " link
|
read -p "请输入providers订阅地址或本地相对路径 > " link
|
||||||
if [ -n "$(echo $link | grep -E '.*\..*')" ] && [ -z "$(grep "$link" $CRASHDIR/configs/providers.cfg)" ];then
|
if [ -n "$(echo $link | grep -E '.*\..*|^\./')" ] && [ -z "$(grep "$link" $CRASHDIR/configs/providers.cfg)" ];then
|
||||||
link=$(echo $link | sed 's/\&/\\\&/g') #特殊字符添加转义
|
link=$(echo $link | sed 's/\&/\\\&/g') #特殊字符添加转义
|
||||||
sed -i "s|$provider_name $provider_url|$provider_name $link|" $CRASHDIR/configs/providers.cfg
|
sed -i "s|$provider_name $provider_url|$provider_name $link|" $CRASHDIR/configs/providers.cfg
|
||||||
else
|
else
|
||||||
@@ -562,13 +585,16 @@ setproviders(){ #自定义providers
|
|||||||
;;
|
;;
|
||||||
a)
|
a)
|
||||||
echo -----------------------------------------------
|
echo -----------------------------------------------
|
||||||
read -p "请输入http(s)格式的providers订阅地址 > " link
|
echo -e "支持填写在线的\033[32mYClash订阅地址\033[0m或者\033[32m本地Clash配置文件\033[0m"
|
||||||
[ -n "$(echo $link | grep -E '.*\..*')" ] && {
|
echo -e "本地配置文件请放在\033[32m$CRASHDIR\033[0m目录下,并填写相对路径如【\033[32m./providers/test.yaml\033[0m】"
|
||||||
|
echo -----------------------------------------------
|
||||||
|
read -p "请输入providers订阅地址或本地相对路径 > " link
|
||||||
|
[ -n "$(echo $link | grep -E '.*\..*|^\./')" ] && {
|
||||||
read -p "请输入代理提供者的名称或者代号(不可重复) > " name
|
read -p "请输入代理提供者的名称或者代号(不可重复) > " name
|
||||||
[ -n "$name" ] && [ -z "$(grep "name" $CRASHDIR/configs/providers.cfg)" ] && {
|
[ -n "$name" ] && [ -z "$(grep "name" $CRASHDIR/configs/providers.cfg)" ] && {
|
||||||
echo -----------------------------------------------
|
echo -----------------------------------------------
|
||||||
echo -e "代理提供者:\033[36m$name\033[0m"
|
echo -e "代理提供者:\033[36m$name\033[0m"
|
||||||
echo -e "链接地址:\033[32m$link\033[0m"
|
echo -e "链接地址/路径:\033[32m$link\033[0m"
|
||||||
read -p "确认添加?(1/0) > " res
|
read -p "确认添加?(1/0) > " res
|
||||||
[ "$res" = 1 ] && {
|
[ "$res" = 1 ] && {
|
||||||
echo "$name $link" >> $CRASHDIR/configs/providers.cfg
|
echo "$name $link" >> $CRASHDIR/configs/providers.cfg
|
||||||
@@ -1696,6 +1722,9 @@ setgeo(){ #数据库选择菜单
|
|||||||
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 ;do
|
||||||
|
setconfig $var
|
||||||
|
done
|
||||||
rm -rf $CRASHDIR/*.srs
|
rm -rf $CRASHDIR/*.srs
|
||||||
echo -e "\033[33m所有数据库文件均已清理!\033[0m"
|
echo -e "\033[33m所有数据库文件均已清理!\033[0m"
|
||||||
sleep 1
|
sleep 1
|
||||||
@@ -2025,6 +2054,7 @@ checkupdate(){
|
|||||||
[ "$?" = "0" ] && version_new=$(cat ${TMPDIR}/version_new | grep -oE 'versionsh=.*' | awk -F'=' '{ print $2 }')
|
[ "$?" = "0" ] && version_new=$(cat ${TMPDIR}/version_new | grep -oE 'versionsh=.*' | awk -F'=' '{ print $2 }')
|
||||||
if [ -n "$version_new" ];then
|
if [ -n "$version_new" ];then
|
||||||
source ${TMPDIR}/version_new 2>/dev/null
|
source ${TMPDIR}/version_new 2>/dev/null
|
||||||
|
cat ${TMPDIR}/version_new
|
||||||
else
|
else
|
||||||
echo -e "\033[31m检查更新失败!请尝试切换其他安装源!\033[0m"
|
echo -e "\033[31m检查更新失败!请尝试切换其他安装源!\033[0m"
|
||||||
setserver
|
setserver
|
||||||
@@ -2048,7 +2078,7 @@ update(){
|
|||||||
echo -----------------------------------------------
|
echo -----------------------------------------------
|
||||||
echo -e " 1 更新\033[36m管理脚本 \033[33m$versionsh_l\033[0m > \033[32m$version_new \033[36m$release_type\033[0m"
|
echo -e " 1 更新\033[36m管理脚本 \033[33m$versionsh_l\033[0m > \033[32m$version_new \033[36m$release_type\033[0m"
|
||||||
echo -e " 2 切换\033[33m内核文件 \033[33m$core_v\033[0m > \033[32m$core_v_new\033[0m"
|
echo -e " 2 切换\033[33m内核文件 \033[33m$core_v\033[0m > \033[32m$core_v_new\033[0m"
|
||||||
echo -e " 3 更新\033[32m数据库文件\033[0m"
|
echo -e " 3 更新\033[32m数据库文件\033[0m > \033[32m$GeoIP_v\033[0m"
|
||||||
echo -e " 4 安装本地\033[35mDashboard\033[0m面板"
|
echo -e " 4 安装本地\033[35mDashboard\033[0m面板"
|
||||||
echo -e " 5 安装/更新本地\033[33m根证书文件\033[0m"
|
echo -e " 5 安装/更新本地\033[33m根证书文件\033[0m"
|
||||||
echo -e " 6 查看\033[32mPAC\033[0m自动代理配置"
|
echo -e " 6 查看\033[32mPAC\033[0m自动代理配置"
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ ckstatus(){
|
|||||||
#检查执行权限
|
#检查执行权限
|
||||||
[ ! -x ${CRASHDIR}/start.sh ] && chmod +x ${CRASHDIR}/start.sh
|
[ ! -x ${CRASHDIR}/start.sh ] && chmod +x ${CRASHDIR}/start.sh
|
||||||
#检查/tmp内核文件
|
#检查/tmp内核文件
|
||||||
for file in `ls -F /tmp | grep -v [/\$] | grep -v ' ' | grep -Ev ".*[(gz)(zip)(7z)(tar)]$" | grep -iE '^clash$|^clash-linux.*|^mihomo.*|^sing.*box|^clash.meta.*'` ; do
|
for file in `ls -F /tmp | grep -v [/\$] | grep -v ' ' | grep -Ev ".*[(gz)(zip)(7z)(tar)]$" | grep -iE 'CrashCore|^clash$|^clash-linux.*|^mihomo.*|^sing.*box|^clash.meta.*'` ; do
|
||||||
file=/tmp/$file
|
file=/tmp/$file
|
||||||
chmod +x $file
|
chmod +x $file
|
||||||
echo -e "发现可用的内核文件: \033[36m$file\033[0m "
|
echo -e "发现可用的内核文件: \033[36m$file\033[0m "
|
||||||
|
|||||||
@@ -127,22 +127,21 @@ update_mmdb(){ #自动更新数据库
|
|||||||
if [ "$?" != "0" ];then
|
if [ "$?" != "0" ];then
|
||||||
logger "任务【自动更新数据库文件】更新【$2】下载失败!"
|
logger "任务【自动更新数据库文件】更新【$2】下载失败!"
|
||||||
rm -rf ${TMPDIR}/$1
|
rm -rf ${TMPDIR}/$1
|
||||||
return 1
|
|
||||||
else
|
else
|
||||||
mv -f ${TMPDIR}/$1 ${BINDIR}/$1
|
mv -f ${TMPDIR}/$1 ${BINDIR}/$1
|
||||||
setconfig $geo_v $GeoIP_v
|
setconfig $geo_v $GeoIP_v
|
||||||
logger "任务【自动更新数据库文件】更新【$2】成功!"
|
logger "任务【自动更新数据库文件】更新【$2】成功!"
|
||||||
return 0
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
[ -n "${Country_v}" ] && getgeo Country.mmdb Country.mmdb
|
[ -n "${Country_v}" -a -s $CRASHDIR/Country.mmdb ] && getgeo Country.mmdb Country.mmdb
|
||||||
[ -n "${cn_mini_v}" ] && getgeo Country.mmdb cn_mini.mmdb
|
[ -n "${cn_mini_v}" -a -s $CRASHDIR/Country.mmdb ] && getgeo Country.mmdb cn_mini.mmdb
|
||||||
[ -n "${china_ip_list_v}" ] && getgeo cn_ip.txt china_ip_list.txt
|
[ -n "${china_ip_list_v}" -a -s $CRASHDIR/cn_ip.txt ] && getgeo cn_ip.txt china_ip_list.txt
|
||||||
[ -n "${china_ipv6_list_v}" ] && getgeo cn_ipv6.txt china_ipv6_list.txt
|
[ -n "${china_ipv6_list_v}" -a -s $CRASHDIR/cn_ipv6.txt ] && getgeo cn_ipv6.txt china_ipv6_list.txt
|
||||||
[ -n "${geosite_v}" ] && getgeo GeoSite.dat geosite.dat
|
[ -n "${geosite_v}" -a -s $CRASHDIR/GeoSite.dat ] && getgeo GeoSite.dat geosite.dat
|
||||||
[ -n "${geoip_cn_v}" ] && getgeo geoip.db geoip_cn.db
|
[ -n "${geoip_cn_v}" -a -s $CRASHDIR/geoip.db ] && getgeo geoip.db geoip_cn.db
|
||||||
[ -n "${geosite_cn_v}" ] && getgeo geosite.db geosite_cn.db
|
[ -n "${geosite_cn_v}" -a -s $CRASHDIR/geosite.db ] && getgeo geosite.db geosite_cn.db
|
||||||
|
return 0
|
||||||
}
|
}
|
||||||
reset_firewall(){ #重设透明路由防火墙
|
reset_firewall(){ #重设透明路由防火墙
|
||||||
${CRASHDIR}/start.sh stop_firewall
|
${CRASHDIR}/start.sh stop_firewall
|
||||||
|
|||||||
Reference in New Issue
Block a user