Files
docker-apps/mihomo/update_config.sh

74 lines
2.1 KiB
Bash
Raw Normal View History

2026-03-20 10:48:59 +08:00
#!/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