mirror of
https://github.com/myvesta/vesta
synced 2025-07-16 10:03:23 -07:00
98 lines
2.4 KiB
Bash
Executable file
98 lines
2.4 KiB
Bash
Executable file
#!/bin/bash
|
|
# info: add backup ftp host
|
|
# options: HOST USERNAME PASSWORD [PATH] [PORT]
|
|
#
|
|
# The function adds ftp host for system backups
|
|
|
|
|
|
#----------------------------------------------------------#
|
|
# Variable&Function #
|
|
#----------------------------------------------------------#
|
|
|
|
# Argument defenition
|
|
host=$1
|
|
ftp_user=$2
|
|
ftp_password=$3
|
|
ftp_path=${4-/backup}
|
|
ftp_port=${5-21}
|
|
A3='******'
|
|
|
|
# Includes
|
|
source $VESTA/conf/vesta.conf
|
|
source $VESTA/func/main.sh
|
|
|
|
# Defining ftp command function
|
|
ftpc() {
|
|
ftp -n $host $ftp_port <<EOF
|
|
quote USER $ftp_user
|
|
quote PASS $ftp_password
|
|
binary
|
|
$1
|
|
$2
|
|
$3
|
|
quit
|
|
EOF
|
|
}
|
|
|
|
|
|
#----------------------------------------------------------#
|
|
# Verifications #
|
|
#----------------------------------------------------------#
|
|
|
|
check_args '3' "$#" "HOST USERNAME PASSWORD [PATH] [PORT]"
|
|
validate_format 'host' 'ftp_user' 'ftp_password'
|
|
|
|
|
|
#----------------------------------------------------------#
|
|
# Action #
|
|
#----------------------------------------------------------#
|
|
|
|
# Checking network connection
|
|
if [ ! -z "$(ftpc)" ]; then
|
|
echo "Error: can't login to ftp"
|
|
log_event "$E_CONNECT" "$EVENT"
|
|
exit $E_CONNECT
|
|
fi
|
|
|
|
# Checking write permissions
|
|
ftpc "mkdir $ftp_path" > /dev/null 2>&1
|
|
ftmpdir=$(mktemp -u -p "$ftp_path")
|
|
ftp_result=$(ftpc "mkdir $ftmpdir" "rm $ftmpdir")
|
|
if [ ! -z "$ftp_result" ] ; then
|
|
rm -rf $tmpdir
|
|
echo "Error: can't create temp folder on the ftp"
|
|
log_event "$E_FTP" "$EVENT"
|
|
exit $E_FTP
|
|
fi
|
|
|
|
# Adding backup host
|
|
echo "HOST='$host'
|
|
USERNAME='$ftp_user'
|
|
PASSWORD='$ftp_password'
|
|
BPATH='$ftp_path'
|
|
PORT='$ftp_port'
|
|
TIME='$TIME'
|
|
DATE='$DATE'" > $VESTA/conf/ftp.backup.conf
|
|
chmod 660 $VESTA/conf/ftp.backup.conf
|
|
|
|
|
|
#----------------------------------------------------------#
|
|
# Vesta #
|
|
#----------------------------------------------------------#
|
|
|
|
# Update vesta.conf
|
|
if [ -z "$(grep LANGUAGE $VESTA/conf/vesta.conf)" ]; then
|
|
echo "BACKUP_SYSTEM='ftp'" >> $VESTA/conf/vesta.conf
|
|
else
|
|
bckp=$(echo "$BACKUP_SYSTEM,ftp" |\
|
|
sed -e "s/,/\n/g"|\
|
|
sort -r -u |\
|
|
sed -e "/^$/d"|\
|
|
sed -e ':a;N;$!ba;s/\n/,/g')
|
|
sed -i "s/BACKUP_SYSTEM=.*/BACKUP_SYSTEM='$bckp'/g" $VESTA/conf/vesta.conf
|
|
fi
|
|
|
|
# Logging
|
|
log_event "$OK" "$EVENT"
|
|
|
|
exit
|