mirror of
https://github.com/wolfydw/backup_OBS.git
synced 2026-05-08 06:37:02 +08:00
Add Telegram fallback API support
This commit is contained in:
@@ -22,6 +22,7 @@ cp exclude.user.list.example exclude.user.list
|
|||||||
- `LABEL`:机器或业务标识
|
- `LABEL`:机器或业务标识
|
||||||
- `BACKUP_DIRS`:要备份的目录,使用多行格式,每行一个目录
|
- `BACKUP_DIRS`:要备份的目录,使用多行格式,每行一个目录
|
||||||
- `TG_BOT_TOKEN` / `TG_USER_ID`:Telegram 通知配置,可留空
|
- `TG_BOT_TOKEN` / `TG_USER_ID`:Telegram 通知配置,可留空
|
||||||
|
- `TG_API_BASE_FALLBACK`:可选,自建 Telegram API 地址;官方失败时自动回退
|
||||||
|
|
||||||
`BACKUP_DIRS` 示例:
|
`BACKUP_DIRS` 示例:
|
||||||
|
|
||||||
@@ -104,6 +105,7 @@ cd /root/backup_OBS
|
|||||||
- 安装脚本不会覆盖已有的 `env.conf` 和 `exclude.user.list`
|
- 安装脚本不会覆盖已有的 `env.conf` 和 `exclude.user.list`
|
||||||
- `install.sh` 和后续脚本都只使用仓库根目录下的 `./obsutil`
|
- `install.sh` 和后续脚本都只使用仓库根目录下的 `./obsutil`
|
||||||
- `obsutil` 安装完成后,首次仍需手动执行 `./obsutil config -interactive`
|
- `obsutil` 安装完成后,首次仍需手动执行 `./obsutil config -interactive`
|
||||||
|
- Telegram 通知默认优先走官方 `https://api.telegram.org`,失败后才会尝试 `TG_API_BASE_FALLBACK`
|
||||||
|
|
||||||
如果你想手动安装或更新仓库根目录下的 `./obsutil`,可以直接执行:
|
如果你想手动安装或更新仓库根目录下的 `./obsutil`,可以直接执行:
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ OBS_BACKUP_DIR="backup/${LABEL}" # 备份存放目录
|
|||||||
# Telegram 通知配置
|
# Telegram 通知配置
|
||||||
TG_BOT_TOKEN="" # 留空表示不启用
|
TG_BOT_TOKEN="" # 留空表示不启用
|
||||||
TG_USER_ID="" # 留空表示不启用
|
TG_USER_ID="" # 留空表示不启用
|
||||||
|
TG_API_BASE_FALLBACK="" # 可选:官方失败时使用的自建Telegram API地址
|
||||||
|
|
||||||
# 备份目录,使用多行格式;每行一个目录
|
# 备份目录,使用多行格式;每行一个目录
|
||||||
BACKUP_DIRS=$(cat <<'EOF'
|
BACKUP_DIRS=$(cat <<'EOF'
|
||||||
|
|||||||
+28
-6
@@ -13,25 +13,47 @@ tg_code_block() {
|
|||||||
|
|
||||||
tg_send_message() {
|
tg_send_message() {
|
||||||
local message="${1-}"
|
local message="${1-}"
|
||||||
local response api
|
local response primary_api fallback_api
|
||||||
|
|
||||||
if [[ -z "${TG_BOT_TOKEN:-}" || -z "${TG_USER_ID:-}" ]]; then
|
if [[ -z "${TG_BOT_TOKEN:-}" || -z "${TG_USER_ID:-}" ]]; then
|
||||||
log "INFO" "未配置Telegram通知,跳过发送"
|
log "INFO" "未配置Telegram通知,跳过发送"
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
api="https://api.telegram.org/bot${TG_BOT_TOKEN}/sendMessage"
|
primary_api="https://api.telegram.org/bot${TG_BOT_TOKEN}/sendMessage"
|
||||||
response="$(curl -sS -X POST "$api" \
|
response="$(curl -sS -X POST "$primary_api" \
|
||||||
--data-urlencode "chat_id=${TG_USER_ID}" \
|
--data-urlencode "chat_id=${TG_USER_ID}" \
|
||||||
--data-urlencode "parse_mode=MarkdownV2" \
|
--data-urlencode "parse_mode=MarkdownV2" \
|
||||||
--data-urlencode "disable_web_page_preview=true" \
|
--data-urlencode "disable_web_page_preview=true" \
|
||||||
--data-urlencode "text=${message}" 2>&1 || true)"
|
--data-urlencode "text=${message}" 2>&1 || true)"
|
||||||
|
|
||||||
if echo "$response" | grep -q '"ok":true'; then
|
if echo "$response" | grep -q '"ok":true'; then
|
||||||
log "INFO" "Telegram通知发送成功"
|
log "INFO" "Telegram通知发送成功(official)"
|
||||||
else
|
return 0
|
||||||
log "WARN" "Telegram通知发送失败: $response"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
log "WARN" "Telegram官方API发送失败: $response"
|
||||||
|
|
||||||
|
if [[ -z "${TG_API_BASE_FALLBACK:-}" ]]; then
|
||||||
|
log "WARN" "未配置Telegram备用API,通知发送失败"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
fallback_api="${TG_API_BASE_FALLBACK%/}/bot${TG_BOT_TOKEN}/sendMessage"
|
||||||
|
response="$(curl -sS -X POST "$fallback_api" \
|
||||||
|
--data-urlencode "chat_id=${TG_USER_ID}" \
|
||||||
|
--data-urlencode "parse_mode=MarkdownV2" \
|
||||||
|
--data-urlencode "disable_web_page_preview=true" \
|
||||||
|
--data-urlencode "text=${message}" 2>&1 || true)"
|
||||||
|
|
||||||
|
if echo "$response" | grep -q '"ok":true'; then
|
||||||
|
log "INFO" "Telegram通知发送成功(fallback)"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
log "WARN" "Telegram备用API发送失败: $response"
|
||||||
|
log "WARN" "Telegram通知发送失败"
|
||||||
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
tg_read_user_excludes() {
|
tg_read_user_excludes() {
|
||||||
|
|||||||
Reference in New Issue
Block a user