#!/bin/bash # --- 配置区 --- SUB_URL="https://45.137.180.230/api/getData/Authorize?token=048f12afb09c43b81f1ce0c35aac3564" CONFIG_FILE="config.yaml" BACKUP_FILE="config.yaml.bak" # 你的自定义头部配置(去掉了密码,保留核心设置) read -r -d '' HEADER << EOM # 基础配置 port: 7890 socks-port: 7891 redir-port: 7892 allow-lan: true bind-address: "*" mode: rule log-level: info ipv6: false # 面板配置(无密码模式) external-controller: 0.0.0.0:9090 secret: "" EOM # --- 配置区结束 --- echo "开始下载订阅..." # 1. 下载订阅内容 curl -l -k -s -H "User-Agent: clash" "$SUB_URL" -o temp_sub.yaml # 2. 检查是否下载成功 if [ -s temp_sub.yaml ] && (grep -q "proxies:" temp_sub.yaml || grep -q "proxy-providers:" temp_sub.yaml); then echo "下载成功,正在清洗并合并配置..." # 备份旧配置 cp "$CONFIG_FILE" "$BACKUP_FILE" 2>/dev/null # 3. 清洗订阅文件,删除所有可能冲突的全局行 sed -i '/^port:/d' temp_sub.yaml sed -i '/^socks-port:/d' temp_sub.yaml sed -i '/^redir-port:/d' temp_sub.yaml sed -i '/^mixed-port:/d' temp_sub.yaml sed -i '/^allow-lan:/d' temp_sub.yaml sed -i '/^bind-address:/d' temp_sub.yaml sed -i '/^mode:/d' temp_sub.yaml sed -i '/^log-level:/d' temp_sub.yaml sed -i '/^ipv6:/d' temp_sub.yaml sed -i '/^external-controller:/d' temp_sub.yaml sed -i '/^external-ui:/d' temp_sub.yaml sed -i '/^secret:/d' temp_sub.yaml # 4. 合并:自定义头部 + 清洗后的订阅内容 echo "$HEADER" > "$CONFIG_FILE" cat temp_sub.yaml >> "$CONFIG_FILE" # 清理临时文件 rm temp_sub.yaml echo "配置已更新!正在重启 Mihomo..." docker compose restart mihomo echo "------------------------------------" echo "更新完成!" echo "Yacd 地址: http://你的服务器IP:8090" echo "API 地址: http://你的服务器IP:9090" echo "密码栏请保持: 为空" echo "------------------------------------" else echo "错误:下载失败或订阅格式不正确!" [ -f temp_sub.yaml ] && rm temp_sub.yaml exit 1 fi