Merge pull request #158 from CHN-ChenYi/master

feat: fine-grained ping message
This commit is contained in:
ttionya authored and GitHub committed 2024-07-19 14:25:56 +08:00
commit b242eeb583
6 files changed
+80 -13

No files matched your search

+3
View File
@@ -11,6 +11,9 @@
# BACKUP_FILE_SUFFIX="%Y%m%d"
# BACKUP_KEEP_DAYS="0"
# PING_URL=""
# PING_URL_WHEN_STARTS=""
# PING_URL_WHEN_SUCCESS=""
# PING_URL_WHEN_ERROR=""
# MAIL_SMTP_ENABLE="FALSE"
# MAIL_SMTP_VARIABLES=""
# MAIL_TO=""
+13 -1
View File
@@ -42,7 +42,7 @@ This tool supports backing up the following files or directories.
And the following ways of notifying backup results are supported.
- Ping (only send on success)
- Ping (send on completion, start, success, or failure)
- Mail (SMTP based, send on success and on failure)
<br>
@@ -330,8 +330,20 @@ Default: `UTC`
#### PING_URL
Use [healthcheck.io](https://healthchecks.io/) url or similar cron monitoring to perform `GET` requests after a backup **no matter if it succeeds or fails**.
#### PING_URL_WHEN_STARTS
Use [healthcheck.io](https://healthchecks.io/) url or similar cron monitoring to perform `GET` requests at the **beginning** of a backup.
#### PING_URL_WHEN_SUCCESS
Use [healthcheck.io](https://healthchecks.io/) url or similar cron monitoring to perform `GET` requests after a **successful** backup.
#### PING_URL_WHEN_ERROR
Use [healthcheck.io](https://healthchecks.io/) url or similar cron monitoring to perform `GET` requests after a backup **fails**.
#### MAIL_SMTP_ENABLE
Starting from v1.19.0, we will be using [`s-nail`](https://www.sdaoden.eu/code-nail.html) instead of [`heirloom-mailx`](https://www.systutorials.com/docs/linux/man/1-heirloom-mailx/) to send emails.
+13 -1
View File
@@ -42,7 +42,7 @@
并且支持以下通知备份结果的方式。
- Ping (仅成功时发送)
- Ping (完成,开始,成功或失败时发送)
- Mail (基于 SMTP,成功时和失败时都会发送)
<br>
@@ -328,8 +328,20 @@ Rclone 全局参数,详见 [flags](https://rclone.org/flags/)。
#### PING_URL
使用 [healthcheck.io](https://healthchecks.io/) 地址或者其他类似的 cron 监控,以便在备份**完成(不论成功或失败)**后执行 `GET` 请求。
#### PING_URL_WHEN_STARTS
使用 [healthcheck.io](https://healthchecks.io/) 地址或者其他类似的 cron 监控,以便在备份**开始**前执行 `GET` 请求。
#### PING_URL_WHEN_SUCCESS
使用 [healthcheck.io](https://healthchecks.io/) 地址或者其他类似的 cron 监控,以便在备份**成功**后执行 `GET` 请求。
#### PING_URL_WHEN_ERROR
使用 [healthcheck.io](https://healthchecks.io/) 地址或者其他类似的 cron 监控,以便在备份**失败**后执行 `GET` 请求。
#### MAIL_SMTP_ENABLE
从 v1.19.0 开始,本工具使用 [`s-nail`](https://www.sdaoden.eu/code-nail.html) 代替 [`heirloom-mailx`](https://www.systutorials.com/docs/linux/man/1-heirloom-mailx/) 发送邮件。
+4 -1
View File
@@ -26,7 +26,10 @@ services:
# ZIP_TYPE: 'zip'
# BACKUP_FILE_SUFFIX: '%Y%m%d'
# BACKUP_KEEP_DAYS: 0
# PING_URL: ''
# PING_URL=''
# PING_URL_WHEN_STARTS=''
# PING_URL_WHEN_SUCCESS=''
# PING_URL_WHEN_ERROR=''
# MAIL_SMTP_ENABLE: 'FALSE'
# MAIL_SMTP_VARIABLES: ''
# MAIL_TO: ''
+13 -1
View File
@@ -43,6 +43,8 @@ function backup_db_postgresql() {
if [[ $? != 0 ]]; then
color red "backup vaultwarden postgresql database failed"
send_ping "${PING_URL_WHEN_ERROR}" "error"
send_ping "${PING_URL}" "completion"
send_mail_content "FALSE" "Backup failed at $(date +"%Y-%m-%d %H:%M:%S %Z"). Reason: Backup postgresql database failed."
exit 1
@@ -56,6 +58,8 @@ function backup_db_mysql() {
if [[ $? != 0 ]]; then
color red "backup vaultwarden mysql database failed"
send_ping "${PING_URL_WHEN_ERROR}" "error"
send_ping "${PING_URL}" "completion"
send_mail_content "FALSE" "Backup failed at $(date +"%Y-%m-%d %H:%M:%S %Z"). Reason: Backup mysql database failed."
exit 1
@@ -163,6 +167,8 @@ function upload() {
if [[ ! -e "${UPLOAD_FILE}" ]]; then
color red "upload file not found"
send_ping "${PING_URL_WHEN_ERROR}" "error"
send_ping "${PING_URL}" "completion"
send_mail_content "FALSE" "File upload failed at $(date +"%Y-%m-%d %H:%M:%S %Z"). Reason: Upload file not found."
exit 1
@@ -184,6 +190,8 @@ function upload() {
done
if [[ "${HAS_ERROR}" == "TRUE" ]]; then
send_ping "${PING_URL_WHEN_ERROR}" "error"
send_ping "${PING_URL}" "completion"
send_mail_content "FALSE" "File upload failed at $(date +"%Y-%m-%d %H:%M:%S %Z")."
exit 1
@@ -214,6 +222,9 @@ function clear_history() {
color blue "running the backup program at $(date +"%Y-%m-%d %H:%M:%S %Z")"
init_env
send_ping "${PING_URL_WHEN_STARTS}" "start"
check_rclone_connection
clear_dir
@@ -225,6 +236,7 @@ clear_dir
clear_history
send_mail_content "TRUE" "The file was successfully uploaded at $(date +"%Y-%m-%d %H:%M:%S %Z")."
send_ping
send_ping "${PING_URL}" "completion"
send_ping "${PING_URL_WHEN_SUCCESS}" "success"
color none ""
+34 -9
View File
@@ -127,18 +127,19 @@ function send_mail_content() {
########################################
# Send health check ping.
# Arguments:
# None
# url
# ping name
########################################
function send_ping() {
if [[ -z "${PING_URL}" ]]; then
if [[ -z "${1}" ]]; then
return
fi
wget "${PING_URL}" -T 15 -t 10 -O /dev/null -q
wget "${1}" -T 15 -t 10 -O /dev/null -q
if [[ $? != 0 ]]; then
color red "ping sending failed"
color red "${2} ping sending failed"
else
color blue "ping send was successfully"
color blue "${2} ping send was successfully"
fi
}
@@ -250,6 +251,7 @@ function init_env() {
init_env_dir
init_env_db
init_env_ping
init_env_mail
# CRON
@@ -304,10 +306,6 @@ function init_env() {
BACKUP_FILE_DATE="$(echo "${BACKUP_FILE_DATE:-"%Y%m%d"}${BACKUP_FILE_DATE_SUFFIX}" | sed 's/[^0-9a-zA-Z%_-]//g')"
BACKUP_FILE_DATE_FORMAT="$(echo "${BACKUP_FILE_SUFFIX:-"${BACKUP_FILE_DATE}"}" | sed 's/\///g')"
# PING_URL
get_env PING_URL
PING_URL="${PING_URL:-""}"
# TIMEZONE
get_env TIMEZONE
local TIMEZONE_MATCHED_COUNT=$(ls "/usr/share/zoneinfo/${TIMEZONE}" 2> /dev/null | wc -l)
@@ -349,6 +347,15 @@ function init_env() {
if [[ -n "${PING_URL}" ]]; then
color yellow "PING_URL: ${PING_URL}"
fi
if [[ -n "${PING_URL_WHEN_STARTS}" ]]; then
color yellow "PING_URL_WHEN_STARTS: ${PING_URL_WHEN_STARTS}"
fi
if [[ -n "${PING_URL_WHEN_SUCCESS}" ]]; then
color yellow "PING_URL_WHEN_SUCCESS: ${PING_URL_WHEN_SUCCESS}"
fi
if [[ -n "${PING_URL_WHEN_ERROR}" ]]; then
color yellow "PING_URL_WHEN_ERROR: ${PING_URL_WHEN_ERROR}"
fi
color yellow "MAIL_SMTP_ENABLE: ${MAIL_SMTP_ENABLE}"
if [[ "${MAIL_SMTP_ENABLE}" == "TRUE" ]]; then
color yellow "MAIL_TO: ${MAIL_TO}"
@@ -440,6 +447,24 @@ function init_env_db() {
fi
}
function init_env_ping() {
# PING_URL
get_env PING_URL
PING_URL="${PING_URL:-""}"
# PING_URL_WHEN_STARTS
get_env PING_URL_WHEN_STARTS
PING_URL_WHEN_STARTS="${PING_URL_WHEN_STARTS:-""}"
# PING_URL_WHEN_SUCCESS
get_env PING_URL_WHEN_SUCCESS
PING_URL_WHEN_SUCCESS="${PING_URL_WHEN_SUCCESS:-""}"
# PING_URL_WHEN_ERROR
get_env PING_URL_WHEN_ERROR
PING_URL_WHEN_ERROR="${PING_URL_WHEN_ERROR:-""}"
}
function init_env_mail() {
# MAIL_SMTP_ENABLE
# MAIL_TO