Files
vaultwarden-backup/scripts/includes.sh
T
2020-10-07 22:37:18 +08:00

167 lines
4.5 KiB
Bash

#!/bin/sh
#################### Function ####################
########################################
# Print colorful message.
# Arguments:
# color
# message
# Outputs:
# colorful message
########################################
function color() {
case $1 in
red) echo -e "\033[31m$2\033[0m" ;;
green) echo -e "\033[32m$2\033[0m" ;;
yellow) echo -e "\033[33m$2\033[0m" ;;
blue) echo -e "\033[34m$2\033[0m" ;;
none) echo $2 ;;
esac
}
########################################
# Check storage system connection success.
# Arguments:
# None
########################################
function check_rclone_connection() {
rclone mkdir ${RCLONE_REMOTE}
if [[ $? != 0 ]]; then
color red "storage system connection failure"
exit 1
fi
}
########################################
# Send mail by mailx.
# Arguments:
# mail subject
# mail content
# Outputs:
# send mail result
########################################
function send_mail() {
if [[ "${MAIL_DEBUG}" == "TRUE" ]]; then
local MAIL_VERBOSE="-v"
fi
echo "$2" | mailx ${MAIL_VERBOSE} -s "$1" ${MAIL_SMTP_VARIABLES} ${MAIL_TO}
if [[ $? != 0 ]]; then
color red "mail sending failed"
else
color blue "mail send was successfully"
fi
}
########################################
# Send mail.
# Arguments:
# backup successful
# mail content
########################################
function send_mail_content() {
if [[ "${MAIL_SMTP_ENABLE}" == "FALSE" ]]; then
return
fi
# successful
if [[ "$1" == "TRUE" && "${MAIL_WHEN_SUCCESS}" == "TRUE" ]]; then
send_mail "BitwardenRS Backup Success" "$2"
fi
# failed
if [[ "$1" == "FALSE" && "${MAIL_WHEN_FAILURE}" == "TRUE" ]]; then
send_mail "BitwardenRS Backup Failed" "$2"
fi
}
########################################
# Initialization environment variables.
# Arguments:
# None
# Outputs:
# environment variables
########################################
function init_env() {
# CRON
local CRON_DEFAULT="5 * * * *"
if [[ -z "${CRON}" ]]; then
CRON="${CRON_DEFAULT}"
fi
# RCLONE_REMOTE_NAME
local RCLONE_REMOTE_NAME_DEFAULT="BitwardenBackup"
if [[ -z "${RCLONE_REMOTE_NAME}" ]]; then
RCLONE_REMOTE_NAME="${RCLONE_REMOTE_NAME_DEFAULT}"
fi
# RCLONE_REMOTE_DIR
local RCLONE_REMOTE_DIR_DEFAULT="/BitwardenBackup/"
if [[ -z "${RCLONE_REMOTE_DIR}" ]]; then
RCLONE_REMOTE_DIR="${RCLONE_REMOTE_DIR_DEFAULT}"
fi
# RCLONE_REMOTE
RCLONE_REMOTE="${RCLONE_REMOTE_NAME}:${RCLONE_REMOTE_DIR}"
# ZIP_ENABLE
ZIP_ENABLE=$(echo "${ZIP_ENABLE}" | tr '[a-z]' '[A-Z]')
if [[ "${ZIP_ENABLE}" == "FALSE" ]]; then
ZIP_ENABLE="FALSE"
else
ZIP_ENABLE="TRUE"
fi
# ZIP_PASSWORD
if [[ -z "${ZIP_PASSWORD}" ]]; then
ZIP_PASSWORD="WHEREISMYPASSWORD?"
fi
# BACKUP_KEEP_DAYS
local BACKUP_KEEP_DAYS_DEFAULT="0"
if [[ -z "${BACKUP_KEEP_DAYS}" ]]; then
BACKUP_KEEP_DAYS="${BACKUP_KEEP_DAYS_DEFAULT}"
fi
# MAIL_SMTP_ENABLE
# MAIL_TO
MAIL_SMTP_ENABLE=$(echo "${MAIL_SMTP_ENABLE}" | tr '[a-z]' '[A-Z]')
if [[ "${MAIL_SMTP_ENABLE}" == "TRUE" && -n "${MAIL_TO}" ]]; then
MAIL_SMTP_ENABLE="TRUE"
else
MAIL_SMTP_ENABLE="FALSE"
fi
# MAIL_WHEN_SUCCESS
MAIL_WHEN_SUCCESS=$(echo "${MAIL_WHEN_SUCCESS}" | tr '[a-z]' '[A-Z]')
if [[ "${MAIL_WHEN_SUCCESS}" == "FALSE" ]]; then
MAIL_WHEN_SUCCESS="FALSE"
else
MAIL_WHEN_SUCCESS="TRUE"
fi
# MAIL_WHEN_FAILURE
MAIL_WHEN_FAILURE=$(echo "${MAIL_WHEN_FAILURE}" | tr '[a-z]' '[A-Z]')
if [[ "${MAIL_WHEN_FAILURE}" == "FALSE" ]]; then
MAIL_WHEN_FAILURE="FALSE"
else
MAIL_WHEN_FAILURE="TRUE"
fi
color yellow "========================================"
color yellow "CRON: ${CRON}"
color yellow "RCLONE_REMOTE_NAME: ${RCLONE_REMOTE_NAME}"
color yellow "RCLONE_REMOTE_DIR: ${RCLONE_REMOTE_DIR}"
color yellow "RCLONE_REMOTE: ${RCLONE_REMOTE}"
color yellow "ZIP_ENABLE: ${ZIP_ENABLE}"
color yellow "ZIP_PASSWORD: ${#ZIP_PASSWORD} Chars"
color yellow "BACKUP_KEEP_DAYS: ${BACKUP_KEEP_DAYS}"
color yellow "MAIL_SMTP_ENABLE: ${MAIL_SMTP_ENABLE}"
if [[ "${MAIL_SMTP_ENABLE}" == "TRUE" ]]; then
color yellow "MAIL_TO: ${MAIL_TO}"
color yellow "MAIL_WHEN_SUCCESS: ${MAIL_WHEN_SUCCESS}"
color yellow "MAIL_WHEN_FAILURE: ${MAIL_WHEN_FAILURE}"
fi
color yellow "========================================"
}