~为meta内核的providers本地生成文件添加了自动跳过证书验证功能
~优化singbox内核providers生成时的ua标识 ~使用systemd启动时,优化启动前逻辑,优化报错信息 ~增加内核切换时自动切换dns模式的逻辑 ~增加在本地没有配置文件启动时,自动使用providers生成配置的功能 ~修复热更新订阅时找不到内核的bug
This commit is contained in:
@@ -348,7 +348,15 @@ gen_clash_providers(){ #生成clash的providers配置文件
|
|||||||
url: "https://www.gstatic.com/generate_204"
|
url: "https://www.gstatic.com/generate_204"
|
||||||
interval: 600
|
interval: 600
|
||||||
EOF
|
EOF
|
||||||
}
|
[ "$crashcore" = 'meta' ] && {
|
||||||
|
[ "$skip_cert" = "已开启" ] && skip_cert_verify='skip-cert-verify: true'
|
||||||
|
cat >> $TMPDIR/providers/providers.yaml <<EOF
|
||||||
|
override:
|
||||||
|
udp: true
|
||||||
|
$skip_cert_verify
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
}
|
||||||
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}')
|
||||||
else
|
else
|
||||||
@@ -417,7 +425,7 @@ gen_singbox_providers(){ #生成singbox的providers配置文件
|
|||||||
"healthcheck_interval": "10m",
|
"healthcheck_interval": "10m",
|
||||||
"download_url": "${2}",
|
"download_url": "${2}",
|
||||||
"path": "./providers/${1}.yaml",
|
"path": "./providers/${1}.yaml",
|
||||||
"download_ua": "clash",
|
"download_ua": "clash.meta",
|
||||||
"download_interval": "24h",
|
"download_interval": "24h",
|
||||||
"download_detour": "DIRECT"
|
"download_detour": "DIRECT"
|
||||||
},
|
},
|
||||||
@@ -1164,6 +1172,8 @@ setcoretype(){ #手动指定内核类型
|
|||||||
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" = "mix" ] && [ "$core_old" = "singbox" ] && setconfig dns_mod fake-ip #singbox自动切换dns
|
||||||
echo -e "\033[33m已从$core_old内核切换至$core_new内核\033[0m"
|
echo -e "\033[33m已从$core_old内核切换至$core_new内核\033[0m"
|
||||||
echo -e "\033[33m二者Geo数据库及yaml/json配置文件不通用\033[0m"
|
echo -e "\033[33m二者Geo数据库及yaml/json配置文件不通用\033[0m"
|
||||||
read -p "是否保留相关数据库文件?(1/0) > " res
|
read -p "是否保留相关数据库文件?(1/0) > " res
|
||||||
|
|||||||
@@ -175,7 +175,12 @@ start_core(){
|
|||||||
core_config=${CRASHDIR}/yamls/config.yaml
|
core_config=${CRASHDIR}/yamls/config.yaml
|
||||||
fi
|
fi
|
||||||
echo -----------------------------------------------
|
echo -----------------------------------------------
|
||||||
if [ -s $core_config -o -n "$Url" -o -n "$Https" ];then
|
if [ ! -s $core_config -a -s $CRASHDIR/configs/providers.cfg ];then
|
||||||
|
echo -e "\033[33m没有找到${crashcore}配置文件,尝试生成providers配置文件!\033[0m"
|
||||||
|
[ "$crashcore" = singboxp ] && coretype=singbox
|
||||||
|
[ "$crashcore" = meta -o "$crashcore" = clashpre ] && coretype=clash
|
||||||
|
source ${CRASHDIR}/getdate.sh && gen_${coretype}_providers
|
||||||
|
elif [ -s $core_config -o -n "$Url" -o -n "$Https" ];then
|
||||||
${CRASHDIR}/start.sh start
|
${CRASHDIR}/start.sh start
|
||||||
#设置循环检测以判定服务启动是否成功
|
#设置循环检测以判定服务启动是否成功
|
||||||
i=1
|
i=1
|
||||||
@@ -1207,7 +1212,6 @@ normal_set(){ #基础设置
|
|||||||
|
|
||||||
}
|
}
|
||||||
set_dns_mod(){
|
set_dns_mod(){
|
||||||
[ "$dns_mod" = mix ] && [ "$crashcore" != singbox -o "$crashcore" != singboxp ] && dns_mod=redir_host
|
|
||||||
echo -----------------------------------------------
|
echo -----------------------------------------------
|
||||||
echo -e "当前DNS运行模式为:\033[47;30m $dns_mod \033[0m"
|
echo -e "当前DNS运行模式为:\033[47;30m $dns_mod \033[0m"
|
||||||
echo -e "\033[33m切换模式后需要手动重启服务以生效!\033[0m"
|
echo -e "\033[33m切换模式后需要手动重启服务以生效!\033[0m"
|
||||||
|
|||||||
@@ -1776,8 +1776,10 @@ update_config(){ #更新订阅并重启
|
|||||||
hotupdate(){ #热更新订阅
|
hotupdate(){ #热更新订阅
|
||||||
getconfig
|
getconfig
|
||||||
get_core_config
|
get_core_config
|
||||||
|
core_check
|
||||||
modify_$format && \
|
modify_$format && \
|
||||||
put_save http://127.0.0.1:${db_port}/configs "{\"path\":\"${CRASHDIR}/config.$format\"}"
|
put_save http://127.0.0.1:${db_port}/configs "{\"path\":\"${CRASHDIR}/config.$format\"}"
|
||||||
|
rm -rf ${TMPDIR}/CrashCore
|
||||||
}
|
}
|
||||||
set_proxy(){ #设置环境变量
|
set_proxy(){ #设置环境变量
|
||||||
getconfig
|
getconfig
|
||||||
@@ -1807,10 +1809,12 @@ start)
|
|||||||
elif [ -f /etc/rc.common -a "$(cat /proc/1/comm)" = "procd" ];then
|
elif [ -f /etc/rc.common -a "$(cat /proc/1/comm)" = "procd" ];then
|
||||||
/etc/init.d/shellcrash start
|
/etc/init.d/shellcrash start
|
||||||
elif [ "$USER" = "root" -a "$(cat /proc/1/comm)" = "systemd" ];then
|
elif [ "$USER" = "root" -a "$(cat /proc/1/comm)" = "systemd" ];then
|
||||||
FragmentPath=$(systemctl show -p FragmentPath shellcrash | sed 's/FragmentPath=//')
|
bfstart && {
|
||||||
[ -f $FragmentPath ] && setconfig ExecStart "$COMMAND >/dev/null" "$FragmentPath"
|
FragmentPath=$(systemctl show -p FragmentPath shellcrash | sed 's/FragmentPath=//')
|
||||||
systemctl daemon-reload
|
[ -f $FragmentPath ] && setconfig ExecStart "$COMMAND >/dev/null" "$FragmentPath"
|
||||||
systemctl start shellcrash.service || start_error
|
systemctl daemon-reload
|
||||||
|
systemctl start shellcrash.service || start_error
|
||||||
|
}
|
||||||
else
|
else
|
||||||
bfstart && start_old
|
bfstart && start_old
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user