From bb7bf169676e646b1e0f00da2157752ac37b64c9 Mon Sep 17 00:00:00 2001 From: erdgeist Date: Wed, 17 May 2006 20:22:04 +0000 Subject: Query ftp server for the versions he knows off. --- ezjail-admin | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) (limited to 'ezjail-admin') diff --git a/ezjail-admin b/ezjail-admin index 8141989..9d8b2a6 100755 --- a/ezjail-admin +++ b/ezjail-admin @@ -151,6 +151,25 @@ ezjail_updateports () { [ $? = 0 ] || exerr "Updating ports failed." } +# Try to fetch the list of releases the server provides +ezjail_queryftpserver () { + unset _ret + TIFS=${IFS}; IFS= + for ezjail_path in pub/FreeBSD/releases pub/FreeBSD/snapshot pub/FreeBSD releases snapshots NO; do + if [ ${ezjail_path} = "NO" ]; then + echo "Warning: I am having problems querying the ftp server you specified (${ezjail_ftphost})." + _ret=1; break + fi + ezjail_ftpresponse=`echo ls | ftp ${ezjail_ftphost}:${ezjail_path}/${ezjail_installarch}/ 2> /dev/null` + if [ $? -eq 0 ]; then + echo -e "The ftp server you specified (${ezjail_ftphost}) seems to provide the following builds:\n${ezjail_ftpresponse}\n." + _ret=0; break + fi + done + IFS=${TIFS} + return _ret +} + ############################# # End of function definitions # @@ -505,11 +524,12 @@ install) [ "${ezjail_dir%%[!/]*}" ] || ezjail_reldir=${PWD} # ftp servers normally wont provide non-RELEASE-builds - if [ -z "${ezjail_release}" ]; then + if [ -z "${ezjail_release}" -a "${ezjail_dir}" = "${ezjail_ftphost}" ]; then ezjail_release=`uname -r` case ${ezjail_release} in *-STABLE) ezjail_release="${ezjail_release%-STABLE}-RELEASE";; esac - if [ "${ezjail_release%-RELEASE}" = "${ezjail_release}" -a "${ezjail_dir}" = "${ezjail_ftphost}" ]; then + if [ "${ezjail_release%-RELEASE}" = "${ezjail_release}" ]; then echo "Your system is ${ezjail_release}. Normally FTP-servers don't provide non-RELEASE-builds." + ezjail_queryftpserver || echo "... I'll continue anyway." echo -n "Release [ ${ezjail_release} ]: " read ezjail_releasetmp [ "${ezjail_releasetmp}" ] && ezjail_release=${ezjail_releasetmp} @@ -533,7 +553,10 @@ install) # Try all paths as stolen from sysinstall, break on success. for ezjail_path in pub/FreeBSD/releases pub/FreeBSD/snapshot pub/FreeBSD releases snapshots NO; do - [ "${ezjail_path}" = "NO" ] && exerr "Could not fetch ${pkg} from ${ezjail_ftphost}. Maybe your release (${ezjail_release}) is specified incorrectly or the host ${ezjail_ftphost} does not provide that release build. Use the -r option to specify an existing release or the -h option to specify an alternative ftp server." + if [ "${ezjail_path}" = "NO" ]; then + echo "Could not fetch ${pkg} from ${ezjail_ftphost}. Maybe your release (${ezjail_release}) is specified incorrectly or the host ${ezjail_ftphost} does not provide that release build. Use the -r option to specify an existing release or the -h option to specify an alternative ftp server." >&2 + ezjail_queryftpserver; exit 1 + fi ftp "${ezjail_ftphost}:${ezjail_path}/${ezjail_installarch}/${ezjail_release}/${pkg}/*" && break done -- cgit v1.2.3