| Server IP : 37.9.174.138 / Your IP : 216.73.216.117 Web Server : Apache System : Linux vps6.backend.sk 6.12.100+deb13-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.100-1 (2026-07-30) x86_64 User : ftpuser ( 1001) PHP Version : 8.4.24 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /usr/share/backup-manager/ |
Upload File : |
#! /usr/bin/env bash
# Copyright � 2005-2016 The Backup Manager Authors
#
# See the AUTHORS file for details.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# Check that every key in the conffile is ok for a proper run.
# Also manage deprecated confkeys the best as possible, so a deprecated
# conffile just renders warnings but still works as before.
# we'll count the number of warnings, here
nb_warnings=0
# For minimizing translations and counting warnings, we globalize the warnings messages
# Please, developers, use this for handling those warnings :)
function confkey_warning()
{
key="$1"
default="$2"
debug "confkey_warning ($key, $default)"
nb_warnings=$(($nb_warnings + 1))
warning "The configuration key \$key is not set, using \"\$default\"."
}
function confkey_warning_deprecated()
{
deprecated_key="$1"
deprecated_value="$2"
new_key="$3"
debug "confkey_warning_deprecated ($deprecated_key, $deprecated_value, $new_key)"
nb_warnings=$(($nb_warnings + 1))
warning "The configuration key \"\$deprecated_key\" is deprecated, you should rename it \"\$new_key\". Using \"\$deprecated_value\"."
}
# Look if the deprecated key exists, if so, warning and use it as
# a default value for the new key.
function confkey_handle_deprecated()
{
deprecated_key="$1"
new_key="$2"
debug "confkey_handle_deprecated ($deprecated_key, $new_key)"
eval "deprecated_value=\"\$$deprecated_key\"" || deprecated_value=""
if [[ -n "$deprecated_value" ]]; then
confkey_warning_deprecated "$deprecated_key" "$deprecated_value" "$new_key"
eval "$new_key=\"\$deprecated_value\""
eval "export $new_key"
fi
}
function confkey_require()
{
key="$1"
default="$2"
debug "confkey_require ($key, $default)"
eval "value=\"\$$key\""
if [[ -z "$value" ]]; then
confkey_warning "$key" "$default"
eval "$key=\"\$default\""
eval "export $key"
fi
}
function confkey_error()
{
key="$1"
keymandatory="$2"
debug "confkey_error ($key, $keymandatory)"
error "The configuration key \$key is not set but \$keymandatory is enabled."
}
# In version older than 0.6, it was possible to set booleans to "yes" or "no",
# that's not valid anymore. In order to be backward compatible, we override yes/no
# values to true/false, but we trigger a warning.
function replace_deprecated_booleans()
{
debug "replace_deprecated_booleans()"
for line in $(env)
do
key=$(echo "$line" | awk -F '=' '{print $1}')
value=$(echo "$line" | awk -F '=' '{print $2}')
# Be sure to not treat BM_ARCHIVE_PREFIX as a deprecated boolean
if [[ "$key" != "BM_ARCHIVE_PREFIX" ]]; then
if [[ -n "$key" ]]; then
if [[ $(expr match "$key" BM_) -gt 0 ]]; then
if [[ "$value" = "yes" ]]; then
warning "Deprecated boolean, \$key is set to \"yes\", setting \"true\" instead."
nb_warnings=$(($nb_warnings + 1))
eval "export $key=\"true\""
fi
if [[ "$value" = "no" ]]; then
warning "Deprecated boolean, \$key is set to \"no\", setting \"false\" instead."
nb_warnings=$(($nb_warnings + 1))
eval "export $key=\"false\""
fi
fi
fi
fi
done
}
##############################################################
# Sanitizer - check mandatory configuration keys, handle them
# the best possible, with default values and so on...
#############################################################
# First of all replace yes/no booleans with true/false ones.
replace_deprecated_booleans
# Then ensure that logging facility has sane values, so that subsequent
# errors and warnings in configuration keys indeed get reported.
confkey_require "BM_LOGGER" "true"
if [[ "$BM_LOGGER" = "true" ]]; then
confkey_require "BM_LOGGER_FACILITY" "user"
confkey_require "BM_LOGGER_LEVEL" "warning"
fi
# Now we can sanitize rest configuration keys.
confkey_handle_deprecated "BM_ARCHIVES_REPOSITORY" "BM_REPOSITORY_ROOT"
confkey_require "BM_REPOSITORY_ROOT" "/var/archives"
# The temp dir used by BM
confkey_require "BM_TEMP_DIR" "/tmp"
# creating the temp path if not found
if [[ ! -d "$BM_TEMP_DIR" ]]; then
mkdir "$BM_TEMP_DIR" || error "Unable to create BM_TEMP_DIR: \"\$BM_TEMP_DIR\"."
fi
# let's drop the trailing slash, if any.
export BM_REPOSITORY_ROOT="${BM_REPOSITORY_ROOT%/}"
confkey_require "BM_REPOSITORY_SECURE" "true"
if [[ "$BM_REPOSITORY_SECURE" = "true" ]]; then
confkey_handle_deprecated "BM_USER" "BM_REPOSITORY_USER"
confkey_require "BM_REPOSITORY_USER" "root"
confkey_handle_deprecated "BM_GROUP" "BM_REPOSITORY_GROUP"
confkey_require "BM_REPOSITORY_GROUP" "root"
confkey_require "BM_REPOSITORY_CHMOD" "770"
confkey_require "BM_ARCHIVE_CHMOD" "660"
fi
confkey_require "BM_REPOSITORY_RECURSIVEPURGE" "false"
confkey_handle_deprecated "BM_MAX_TIME_TO_LIVE" "BM_ARCHIVE_TTL"
confkey_require "BM_ARCHIVE_TTL" "5"
confkey_handle_deprecated "BM_PURGE_DUPLICATES" "BM_ARCHIVE_PURGEDUPS"
confkey_require "BM_ARCHIVE_PURGEDUPS" "true"
confkey_handle_deprecated "BM_ARCHIVES_PREFIX" "BM_ARCHIVE_PREFIX"
confkey_require "BM_ARCHIVE_PREFIX" "$HOSTNAME"
confkey_handle_deprecated "BM_BACKUP_METHOD" "BM_ARCHIVE_METHOD"
confkey_require "BM_ARCHIVE_METHOD" "tarball"
confkey_require "BM_ARCHIVE_NICE_LEVEL" "10"
if [[ "$BM_ARCHIVE_METHOD" = "tarball-incremental" ]] &&
[[ -z "$BM_TARBALLINC_MASTERDATETYPE" ]]; then
confkey_require "BM_TARBALLINC_MASTERDATETYPE" "weekly"
fi
if [[ -n "$BM_TARBALLINC_MASTERDATEVALUE" ]]; then
if [[ "$BM_TARBALLINC_MASTERDATEVALUE" -gt "6" ]]; then
if [[ "$BM_TARBALLINC_MASTERDATETYPE" = "weekly" ]]; then
warning "BM_TARBALLINC_MASTERDATEVALUE should not be greater than 6, falling back to 0"
export BM_TARBALLINC_MASTERDATEVALUE="0"
else
# monthly
if [[ "$BM_TARBALLINC_MASTERDATEVALUE" -gt "31" ]]; then
warning "BM_TARBALLINC_MASTERDATEVALUE should not be greater than 31, falling back to 1"
export BM_TARBALLINC_MASTERDATEVALUE="1"
fi
fi
fi
fi
if [[ "$BM_ARCHIVE_METHOD" = "tarball" ]] ||
[[ "$BM_ARCHIVE_METHOD" = "tarball-incremental" ]] ; then
confkey_require "BM_TARBALL_FILETYPE" "tar.gz"
confkey_require "BM_TARBALL_NAMEFORMAT" "long"
confkey_require "BM_TARBALL_DUMPSYMLINKS" "false"
fi
confkey_handle_deprecated "BM_FILETYPE" "BM_TARBALL_FILETYPE"
confkey_handle_deprecated "BM_NAME_FORMAT" "BM_TARBALL_NAMEFORMAT"
confkey_handle_deprecated "BM_DIRECTORIES_BLACKLIST" "BM_TARBALL_BLACKLIST"
confkey_handle_deprecated "BM_DUMP_SYMLINKS" "BM_TARBALL_DUMPSYMLINKS"
# encryption stuff goes here
if [[ "$BM_ENCRYPTION_METHOD" = "gpg" ]]; then
if [[ -z "$BM_ENCRYPTION_RECIPIENT" ]]; then
confkey_error "BM_ENCRYPTION_RECIPIENT" "BM_ENCRYPTION_METHOD"
fi
fi
# The TARBALL_OVER_SSH thing
if [[ "$BM_TARBALL_OVER_SSH" = "true" ]]; then
if [[ -z "$BM_UPLOAD_SSH_HOSTS" ]]; then
confkey_error "BM_UPLOAD_SSH_HOSTS" "BM_TARBALL_OVER_SSH"
fi
if [[ -z "$BM_UPLOAD_SSH_KEY" ]]; then
confkey_error "BM_UPLOAD_SSH_KEY" "BM_TARBALL_OVER_SSH"
fi
if [[ -z "$BM_UPLOAD_SSH_USER" ]]; then
confkey_error "BM_UPLOAD_SSH_USER" "BM_TARBALL_OVER_SSH"
fi
confkey_require "BM_UPLOAD_SSH_PORT" "22"
fi
# Converting anything in BM_TARBALL_DIRECTORIES in the array BM_TARBALL_TARGETS[].
# see bug #86 for details.
if [[ -n "$BM_DIRECTORIES" ]]; then
BM_TARBALL_DIRECTORIES="$BM_DIRECTORIES"
fi
if [[ -n "$BM_TARBALL_DIRECTORIES" ]]; then
declare -a BM_TARBALL_TARGETS
index=0
for target in $BM_TARBALL_DIRECTORIES
do
BM_TARBALL_TARGETS[$index]="$target"
index=$(($index + 1))
done
fi
if [[ "$BM_UPLOAD_METHOD" = "rsync" ]]; then
confkey_require "BM_UPLOAD_RSYNC_DUMPSYMLINKS" "false"
confkey_handle_deprecated "BM_UPLOAD_KEY" "BM_UPLOAD_SSH_KEY"
confkey_handle_deprecated "BM_UPLOAD_USER" "BM_UPLOAD_SSH_USER"
fi
if [[ "$BM_UPLOAD_METHOD" = "ssh" ]]; then
confkey_require "BM_UPLOAD_SSH_PORT" "22"
fi
if [[ "$BM_UPLOAD_METHOD" = "ftp" ]]; then
confkey_require "BM_UPLOAD_FTP_TIMEOUT" "120"
fi
if [[ "$BM_ARCHIVE_METHOD" = "mysql" ]]; then
confkey_require "BM_MYSQL_ADMINLOGIN" "root"
confkey_require "BM_MYSQL_HOST" "localhost"
confkey_require "BM_MYSQL_PORT" "3306"
confkey_require "BM_MYSQL_FILETYPE" "tar.gz"
fi
if [[ "$BM_ARCHIVE_METHOD" = "pgsql" ]]; then
confkey_require "BM_PGSQL_ADMINLOGIN" "root"
confkey_require "BM_PGSQL_HOST" "localhost"
confkey_require "BM_PGSQL_PORT" "3306"
confkey_require "BM_PGSQL_FILETYPE" "tar.gz"
fi
# Burning system
if [[ -n "$BM_BURNING" ]]; then
case "$BM_BURNING" in
""|"no"|"false"|"none")
BM_BURNING_METHOD="none"
;;
esac
fi
if [[ -n "$BM_BURNING_METHOD" ]] &&
[[ "$BM_BURNING_METHOD" != "none" ]] ; then
confkey_require "BM_BURNING_DEVICE" "/dev/cdrom"
confkey_require "BM_BURNING_MAXSIZE" "650"
confkey_require "BM_BURNING_CHKMD5" "true"
fi
if [[ -n "$BM_UPLOAD_MODE" ]]; then
confkey_handle_deprecated "BM_UPLOAD_MODE" "BM_UPLOAD_METHOD"
confkey_handle_deprecated "BM_UPLOAD_USER" "BM_UPLOAD_SSH_USER"
confkey_handle_deprecated "BM_UPLOAD_KEY" "BM_UPLOAD_SSH_KEY"
confkey_handle_deprecated "BM_UPLOAD_USER" "BM_UPLOAD_FTP_USER"
confkey_handle_deprecated "BM_UPLOAD_PASSWD" "BM_UPLOAD_FTP_PASSWORD"
confkey_handle_deprecated "BM_FTP_PURGE" "BM_UPLOAD_FTP_PURGE"
confkey_handle_deprecated "BM_UPLOAD_FTPPURGE" "BM_UPLOAD_FTP_PURGE"
confkey_handle_deprecated "BM_UPLOAD_DIR" "BM_UPLOAD_DESTINATION"
fi
if [[ -z "$BM_ARCHIVE_STRICTPURGE" ]]; then
confkey_require "BM_ARCHIVE_STRICTPURGE" "true"
fi
if [[ $nb_warnings -gt 0 ]]; then
warning "When validating the configuration file \$conffile, \$nb_warnings warnings were found."
fi