74 lines
2.1 KiB
Bash
Executable File
74 lines
2.1 KiB
Bash
Executable File
#!/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
|