190 lines
3.8 KiB
Bash
190 lines
3.8 KiB
Bash
#!/bin/sh
|
|
VERSION=1.2
|
|
CURL=/usr/local/bin/curl
|
|
if [ ! -e ${CURL} ]; then
|
|
CURL=/usr/bin/curl
|
|
fi
|
|
OS=`uname`;
|
|
DU=/usr/bin/du
|
|
BC=/usr/bin/bc
|
|
EXPR=/usr/bin/expr
|
|
TOUCH=/bin/touch
|
|
PORT=${ftp_port}
|
|
FTPS=0
|
|
MIN_TLS="--tlsv1.1"
|
|
|
|
MD5=${ftp_md5}
|
|
|
|
if [ "${ftp_secure}" = "ftps" ]; then
|
|
FTPS=1
|
|
fi
|
|
|
|
SSL_REQD=""
|
|
if ${CURL} --help tls | grep -m1 -q 'ftp-ssl-reqd'; then
|
|
SSL_REQD="--ftp-ssl-reqd"
|
|
elif ${CURL} --help tls | grep -m1 -q 'ssl-reqd'; then
|
|
SSL_REQD="--ssl-reqd"
|
|
fi
|
|
|
|
|
|
#######################################################
|
|
# SETUP
|
|
|
|
if [ ! -e $TOUCH ] && [ -e /usr/bin/touch ]; then
|
|
TOUCH=/usr/bin/touch
|
|
fi
|
|
if [ ! -x ${EXPR} ] && [ -x /bin/expr ]; then
|
|
EXPR=/bin/expr
|
|
fi
|
|
|
|
if [ ! -e "${ftp_local_file}" ]; then
|
|
echo "Cannot find backup file ${ftp_local_file} to upload";
|
|
|
|
/bin/ls -la ${ftp_local_path}
|
|
|
|
/bin/df -h
|
|
|
|
exit 11;
|
|
fi
|
|
|
|
get_md5() {
|
|
MF=$1
|
|
|
|
if [ ${OS} = "FreeBSD" ]; then
|
|
MD5SUM=/sbin/md5
|
|
else
|
|
MD5SUM=/usr/bin/md5sum
|
|
fi
|
|
if [ ! -x ${MD5SUM} ]; then
|
|
return
|
|
fi
|
|
|
|
if [ ! -e ${MF} ]; then
|
|
return
|
|
fi
|
|
|
|
if [ ${OS} = "FreeBSD" ]; then
|
|
FMD5=`$MD5SUM -q $MF`
|
|
else
|
|
FMD5=`$MD5SUM $MF | cut -d\ -f1`
|
|
fi
|
|
|
|
echo "${FMD5}"
|
|
}
|
|
|
|
#######################################################
|
|
|
|
CFG=${ftp_local_file}.cfg
|
|
/bin/rm -f $CFG
|
|
$TOUCH $CFG
|
|
/bin/chmod 600 $CFG
|
|
|
|
RET=0;
|
|
|
|
#######################################################
|
|
# FTP
|
|
upload_file_ftp()
|
|
{
|
|
if [ ! -e ${CURL} ]; then
|
|
echo "";
|
|
echo "*** Backup not uploaded ***";
|
|
echo "Please install curl by running:";
|
|
echo "";
|
|
echo "cd /usr/local/directadmin/custombuild";
|
|
echo "./build curl";
|
|
echo "";
|
|
exit 10;
|
|
fi
|
|
|
|
/bin/echo "user = \"$ftp_username:$ftp_password\"" >> $CFG
|
|
|
|
if [ ! -s ${CFG} ]; then
|
|
echo "${CFG} is empty. curl is not going to be happy about it.";
|
|
ls -la ${CFG}
|
|
ls -la ${ftp_local_file}
|
|
df -h
|
|
fi
|
|
|
|
#ensure ftp_path ends with /
|
|
ENDS_WITH_SLASH=`echo "$ftp_path" | grep -c '/$'`
|
|
if [ "${ENDS_WITH_SLASH}" -eq 0 ]; then
|
|
ftp_path=${ftp_path}/
|
|
fi
|
|
|
|
${CURL} --config ${CFG} --silent --show-error --ftp-create-dirs --upload-file $ftp_local_file ftp://$ftp_ip:${PORT}/$ftp_path$ftp_remote_file 2>&1
|
|
RET=$?
|
|
|
|
if [ "${RET}" -ne 0 ]; then
|
|
echo "curl return code: $RET";
|
|
fi
|
|
}
|
|
|
|
#######################################################
|
|
# FTPS
|
|
upload_file_ftps()
|
|
{
|
|
if [ ! -e ${CURL} ]; then
|
|
echo "";
|
|
echo "*** Backup not uploaded ***";
|
|
echo "Please install curl by running:";
|
|
echo "";
|
|
echo "cd /usr/local/directadmin/custombuild";
|
|
echo "./build curl";
|
|
echo "";
|
|
exit 10;
|
|
fi
|
|
|
|
/bin/echo "user = \"$ftp_username:$ftp_password\"" >> $CFG
|
|
|
|
if [ ! -s ${CFG} ]; then
|
|
echo "${CFG} is empty. curl is not going to be happy about it.";
|
|
ls -la ${CFG}
|
|
ls -la ${ftp_local_file}
|
|
df -h
|
|
fi
|
|
|
|
#ensure ftp_path ends with /
|
|
ENDS_WITH_SLASH=`echo "$ftp_path" | grep -c '/$'`
|
|
if [ "${ENDS_WITH_SLASH}" -eq 0 ]; then
|
|
ftp_path=${ftp_path}/
|
|
fi
|
|
|
|
${CURL} --config ${CFG} ${SSL_REQD} -k ${MIN_TLS} --silent --show-error --ftp-create-dirs --upload-file $ftp_local_file ftp://$ftp_ip:${PORT}/$ftp_path$ftp_remote_file 2>&1
|
|
RET=$?
|
|
|
|
if [ "${RET}" -ne 0 ]; then
|
|
echo "curl return code: $RET";
|
|
fi
|
|
}
|
|
|
|
#######################################################
|
|
# Start
|
|
|
|
if [ "${FTPS}" = "1" ]; then
|
|
upload_file_ftps
|
|
else
|
|
upload_file_ftp
|
|
fi
|
|
|
|
if [ "${RET}" = "0" ] && [ "${MD5}" = "1" ]; then
|
|
MD5_FILE=${ftp_local_file}.md5
|
|
M=`get_md5 ${ftp_local_file}`
|
|
if [ "${M}" != "" ]; then
|
|
echo "${M}" > ${MD5_FILE}
|
|
|
|
ftp_local_file=${MD5_FILE}
|
|
ftp_remote_file=${ftp_remote_file}.md5
|
|
|
|
if [ "${FTPS}" = "1" ]; then
|
|
upload_file_ftps
|
|
else
|
|
upload_file
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
/bin/rm -f $CFG
|
|
|
|
exit $RET
|
|
|