Files
o.nmgjg.com.cn/clash_sync.sh

103 lines
2.9 KiB
Bash
Executable File

#!/bin/sh
# 定义常量
# 标准配置文件URL
URL_STANDARD="https://zh.momobaby.org/download/clash/540a515e6b6bf558c851654b48ae1a2840d769cae8beedbc0a7bdb489c6ef0e0?config_name=Config"
# vless配置文件URL
URL_VLESS="https://zh.momobaby.org/download/clash/540a515e6b6bf558c851654b48ae1a2840d769cae8beedbc0a7bdb489c6ef0e0?config_name=Config"
# 标准配置文件路径
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