@@ -356,6 +356,60 @@ upgeox_all() {
356356 bin_name=$original_bin_name
357357}
358358
359+ # 更新 mihomo 配置的 proxy-providers
360+ update_mihomo_providers () {
361+ yq=" yq"
362+ if ! command -v yq & > /dev/null; then
363+ if [ ! -e " ${box_dir} /bin/yq" ]; then
364+ log Debug " yq 文件未找到, 开始从 GitHub 下载"
365+ ${scripts_dir} /box.tool upyq
366+ fi
367+ yq=" ${box_dir} /bin/yq"
368+ fi
369+
370+ if [ ! -f " ${mihomo_config} " ]; then
371+ log Error " 配置文件不存在: ${mihomo_config} "
372+ return 1
373+ fi
374+ cp " ${mihomo_config} " " ${mihomo_config} .bak" 2> /dev/null
375+ local file_count=${# name_provide_mihomo_config[@]}
376+ if [ " $file_count " -eq 0 ]; then
377+ log Warning " 没有配置的订阅文件"
378+ return 1
379+ fi
380+
381+ log Debug " 开始更新 proxy-providers 配置项..."
382+ local config_dir=" $( dirname " ${mihomo_config} " ) "
383+ for i in $( seq 0 $(( file_count - 1 )) ) ; do
384+ local file_name=" ${name_provide_mihomo_config[$i]} "
385+ local provider_file=" ${mihomo_provide_path} /${file_name} "
386+ local provider_name=" ${file_name% .yaml} "
387+ if [ ! -f " ${provider_file} " ]; then
388+ log Warning " 订阅文件不存在,跳过: ${provider_file} "
389+ continue
390+ fi
391+ local relative_path
392+ if command -v realpath > /dev/null 2>&1 ; then
393+ relative_path=" $( realpath --relative-to=" ${config_dir} " " ${provider_file} " ) "
394+ else
395+ local provide_dir_name=" $( basename " ${mihomo_provide_path} " ) "
396+ relative_path=" ./${provide_dir_name} /${file_name} "
397+ fi
398+
399+ log Debug " 添加 provider: ${provider_name} -> ${relative_path} "
400+ ${yq} -i " .\" proxy-providers\" .\" ${provider_name} \" .type = \" file\" " " ${mihomo_config} " 2> /dev/null
401+ ${yq} -i " .\" proxy-providers\" .\" ${provider_name} \" .path = \" ${relative_path} \" " " ${mihomo_config} " 2> /dev/null
402+ ${yq} -i " .\" proxy-providers\" .\" ${provider_name} \" .\" health-check\" .enable = true" " ${mihomo_config} " 2> /dev/null
403+ ${yq} -i " .\" proxy-providers\" .\" ${provider_name} \" .\" health-check\" .url = \" https://cp.cloudflare.com\" " " ${mihomo_config} " 2> /dev/null
404+ ${yq} -i " .\" proxy-providers\" .\" ${provider_name} \" .\" health-check\" .interval = 300" " ${mihomo_config} " 2> /dev/null
405+ ${yq} -i " .\" proxy-providers\" .\" ${provider_name} \" .\" health-check\" .timeout = 1000" " ${mihomo_config} " 2> /dev/null
406+ ${yq} -i " .\" proxy-providers\" .\" ${provider_name} \" .\" health-check\" .tolerance = 100" " ${mihomo_config} " 2> /dev/null
407+ done
408+
409+ log Debug " proxy-providers 配置构建完成"
410+ return 0
411+ }
412+
359413# 检查并更新订阅
360414upsubs () {
361415 if [ " ${update_subscription} " != " true" ]; then
@@ -487,11 +541,20 @@ upsubs() {
487541 done
488542
489543 log Info " 成功更新 ${success_count} / ${url_count} 个订阅"
544+
545+ if [ " ${renew} " != " true" ] && [ " ${success_count} " -gt 0 ]; then
546+ log Info " 正在更新 ${name_mihomo_config} 的 proxy-providers 配置..."
547+ if update_mihomo_providers; then
548+ log Info " proxy-providers 配置更新成功"
549+ else
550+ log Warning " proxy-providers 配置更新失败,请手动检查配置文件"
551+ fi
552+ fi
553+
490554 if [ " ${update_failed} " = " true" ]; then
491555 log Error " 部分订阅链接更新失败"
492556 return 1
493557 else
494- log Warning " 请确保您的 ${name_mihomo_config} 的 'proxy-providers' 部分已正确配置, 以加载这些订阅文件"
495558 log Info " 更新订阅于 $( date +" %F %R" ) "
496559 return 0
497560 fi
0 commit comments