#!/bin/sh # 定义常量 # 标准配置文件URL URL_STANDARD="https://api-suc.0z.gs/sub?target=clash&url=https://config.moe/config/afc7a1f6cfb3e116070a3343070f4407%3Ftypes%3Dtrojan" # vless配置文件URL URL_VLESS="https://zh.momobaby.org/download/clash/53eb5194f8337a2fecb283ee8a87a6da78316c6c4f884b055e97895b1dcae3ac" # 标准配置文件路径 CLASH_FILE="./index/proxy/clash.yml" BACKUP_STANDARD="./index/proxy/clash_last.yml" # vless配置文件路径 CLASH_VLESS_FILE="./index/proxy/clash_v.yml" BACKUP_VLESS="./index/proxy/clash_v_last.yml" # 定义带颜色和日志级别的日志函数 log() { local level=$1 local message=$2 local color_code="" # 根据日志级别设置颜色 case $level in INFO) color_code="\033[32m" # 绿色 ;; WARNING) color_code="\033[33m" # 黄色 ;; ERROR) color_code="\033[31m" # 红色 ;; *) color_code="\033[0m" # 默认 ;; esac # 格式化输出 printf "$(date '+%Y-%m-%d %H:%M:%S') ${color_code}[$level]\033[0m $message\n" } # 创建配置目录 mkdir -p "$(dirname "$CLASH_FILE")" 2>/dev/null if [ $? -eq 0 ]; then log INFO "配置目录 $(dirname "$CLASH_FILE") 已创建或已存在。" else log ERROR "无法创建配置目录 $(dirname "$CLASH_FILE")" exit 1 fi # 配置文件处理函数 process_config() { local url=$1 local output_file=$2 local backup_file=$3 local config_name=$4 log INFO "开始下载 ${config_name} 配置文件..." if curl -sS --fail -o "$output_file" "$url"; then log INFO "${config_name} 配置文件下载成功。" chmod 777 "$output_file" log INFO "设置文件 $output_file 权限为 777。" # 创建备份 cp -f "$output_file" "$backup_file" chmod 777 "$backup_file" log INFO "已将${config_name}配置文件备份到 $backup_file" else log ERROR "${config_name} 下载失败,尝试从备份恢复..." if [ -f "$backup_file" ]; then cp -f "$backup_file" "$output_file" chmod 777 "$output_file" log WARNING "已从备份恢复 ${config_name} 配置文件: $output_file" else log ERROR "错误:${config_name}备份文件不存在,无法恢复: $backup_file" return 1 fi fi return 0 } # 处理标准配置文件 process_config "$URL_STANDARD" "$CLASH_FILE" "$BACKUP_STANDARD" "标准" STANDARD_RESULT=$? # 处理vless配置文件 process_config "$URL_VLESS" "$CLASH_VLESS_FILE" "$BACKUP_VLESS" "vless协议" VLESS_RESULT=$? # 检查最终结果 if [ $STANDARD_RESULT -eq 0 ] && [ $VLESS_RESULT -eq 0 ]; then log INFO "所有配置文件处理完成。" exit 0 else log WARNING "配置文件处理完成,但部分操作失败。" exit 1 fi