diff --git a/scripts/getdate.sh b/scripts/getdate.sh index c9aaa90..eb2fb99 100644 --- a/scripts/getdate.sh +++ b/scripts/getdate.sh @@ -336,11 +336,20 @@ setproxies(){ #自定义clash节点 } gen_clash_providers(){ #生成clash的providers配置文件 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 <> $TMPDIR/providers/providers.yaml <> ${TMPDIR}/providers/providers.json <> ${TMPDIR}/providers/providers.json <> ${TMPDIR}/providers/providers.json < " link - if [ -n "$(echo $link | grep -E '.*\..*')" ] && [ -z "$(grep "$link" $CRASHDIR/configs/providers.cfg)" ];then + read -p "请输入providers订阅地址或本地相对路径 > " link + if [ -n "$(echo $link | grep -E '.*\..*|^\./')" ] && [ -z "$(grep "$link" $CRASHDIR/configs/providers.cfg)" ];then link=$(echo $link | sed 's/\&/\\\&/g') #特殊字符添加转义 sed -i "s|$provider_name $provider_url|$provider_name $link|" $CRASHDIR/configs/providers.cfg else @@ -562,13 +585,16 @@ setproviders(){ #自定义providers ;; a) echo ----------------------------------------------- - read -p "请输入http(s)格式的providers订阅地址 > " link - [ -n "$(echo $link | grep -E '.*\..*')" ] && { + echo -e "支持填写在线的\033[32mYClash订阅地址\033[0m或者\033[32m本地Clash配置文件\033[0m" + 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 [ -n "$name" ] && [ -z "$(grep "name" $CRASHDIR/configs/providers.cfg)" ] && { echo ----------------------------------------------- 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 [ "$res" = 1 ] && { 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 rm -rf $CRASHDIR/$file 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 echo -e "\033[33m所有数据库文件均已清理!\033[0m" sleep 1 @@ -2025,6 +2054,7 @@ checkupdate(){ [ "$?" = "0" ] && version_new=$(cat ${TMPDIR}/version_new | grep -oE 'versionsh=.*' | awk -F'=' '{ print $2 }') if [ -n "$version_new" ];then source ${TMPDIR}/version_new 2>/dev/null + cat ${TMPDIR}/version_new else echo -e "\033[31m检查更新失败!请尝试切换其他安装源!\033[0m" setserver @@ -2048,7 +2078,7 @@ update(){ echo ----------------------------------------------- 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 " 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 " 5 安装/更新本地\033[33m根证书文件\033[0m" echo -e " 6 查看\033[32mPAC\033[0m自动代理配置" diff --git a/scripts/menu.sh b/scripts/menu.sh index 9297288..fa4366f 100644 --- a/scripts/menu.sh +++ b/scripts/menu.sh @@ -108,7 +108,7 @@ ckstatus(){ #检查执行权限 [ ! -x ${CRASHDIR}/start.sh ] && chmod +x ${CRASHDIR}/start.sh #检查/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 chmod +x $file echo -e "发现可用的内核文件: \033[36m$file\033[0m " diff --git a/scripts/task.sh b/scripts/task.sh index 5580f8d..59c755e 100644 --- a/scripts/task.sh +++ b/scripts/task.sh @@ -127,22 +127,21 @@ update_mmdb(){ #自动更新数据库 if [ "$?" != "0" ];then logger "任务【自动更新数据库文件】更新【$2】下载失败!" rm -rf ${TMPDIR}/$1 - return 1 else mv -f ${TMPDIR}/$1 ${BINDIR}/$1 setconfig $geo_v $GeoIP_v logger "任务【自动更新数据库文件】更新【$2】成功!" - return 0 fi fi } - [ -n "${Country_v}" ] && getgeo Country.mmdb Country.mmdb - [ -n "${cn_mini_v}" ] && getgeo Country.mmdb cn_mini.mmdb - [ -n "${china_ip_list_v}" ] && getgeo cn_ip.txt china_ip_list.txt - [ -n "${china_ipv6_list_v}" ] && getgeo cn_ipv6.txt china_ipv6_list.txt - [ -n "${geosite_v}" ] && getgeo GeoSite.dat geosite.dat - [ -n "${geoip_cn_v}" ] && getgeo geoip.db geoip_cn.db - [ -n "${geosite_cn_v}" ] && getgeo geosite.db geosite_cn.db + [ -n "${Country_v}" -a -s $CRASHDIR/Country.mmdb ] && getgeo Country.mmdb Country.mmdb + [ -n "${cn_mini_v}" -a -s $CRASHDIR/Country.mmdb ] && getgeo Country.mmdb cn_mini.mmdb + [ -n "${china_ip_list_v}" -a -s $CRASHDIR/cn_ip.txt ] && getgeo cn_ip.txt china_ip_list.txt + [ -n "${china_ipv6_list_v}" -a -s $CRASHDIR/cn_ipv6.txt ] && getgeo cn_ipv6.txt china_ipv6_list.txt + [ -n "${geosite_v}" -a -s $CRASHDIR/GeoSite.dat ] && getgeo GeoSite.dat geosite.dat + [ -n "${geoip_cn_v}" -a -s $CRASHDIR/geoip.db ] && getgeo geoip.db geoip_cn.db + [ -n "${geosite_cn_v}" -a -s $CRASHDIR/geosite.db ] && getgeo geosite.db geosite_cn.db + return 0 } reset_firewall(){ #重设透明路由防火墙 ${CRASHDIR}/start.sh stop_firewall