16f660f8ce
Add Secure File Transfer Program (SFTP) support using a simple wrapper. SFTP is a common protocol used to transfer files securely between enterprises, but it is not currently supported in Buildroot because all of the packages are usually available via HTTP, git or some other download method. SFTP is similar to FTP but it preforms all operations over an encrypted SSH transport using a specific protocol. This is unlike ftps, which is traditional FTP over an SSL/TLS connection. Signed-off-by: Thomas Preston <thomas.preston@codethink.co.uk> Signed-off-by: Michael Drake <michael.drake@codethink.co.uk> [Arnout: - update documentation with sftp everywhere scp is mentioned; - rename "verbose" variable to "quiet"; - print the sftp command, similar to wget and scp helpers. ] Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
42 lines
1.1 KiB
Bash
Executable File
42 lines
1.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# We want to catch any unexpected failure, and exit immediately
|
|
set -e
|
|
|
|
# Download helper for sftp, to be called from the download wrapper script
|
|
#
|
|
# Options:
|
|
# -q Be quiet.
|
|
# -o FILE Copy to local file FILE.
|
|
# -f FILE Copy from remote file FILE.
|
|
# -u URI Download file at URI.
|
|
#
|
|
# Environment:
|
|
# SFTP : the sftp command to call
|
|
|
|
quiet=
|
|
while getopts "${BR_BACKEND_DL_GETOPTS}" OPT; do
|
|
case "${OPT}" in
|
|
q) quiet=-q;;
|
|
o) output="${OPTARG}";;
|
|
f) filename="${OPTARG}";;
|
|
u) uri="${OPTARG}";;
|
|
:) printf "option '%s' expects a mandatory argument\n" "${OPTARG}"; exit 1;;
|
|
\?) printf "unknown option '%s'\n" "${OPTARG}" >&2; exit 1;;
|
|
esac
|
|
done
|
|
|
|
shift $((OPTIND-1)) # Get rid of our options
|
|
|
|
# Caller needs to single-quote its arguments to prevent them from
|
|
# being expanded a second time (in case there are spaces in them)
|
|
_sftp() {
|
|
if [ -z "${quiet}" ]; then
|
|
printf '%s ' ${SFTP} "${@}"; printf '\n'
|
|
fi
|
|
# Note: please keep command below aligned with what is printed above
|
|
eval ${SFTP} "${@}"
|
|
}
|
|
|
|
_sftp ${quiet} "${@}" "'${uri}/${filename}'" "'${output}'"
|