From 334bf2308836e855ed6661ba1c129f7fd5b200a2 Mon Sep 17 00:00:00 2001 From: rhatto Date: Wed, 31 Jan 2007 23:23:48 +0000 Subject: simplaret: file retrieval enhancements git-svn-id: svn+slack://slack.fluxo.info/var/svn/simplepkg@135 04377dda-e619-0410-9926-eae83683ac58 --- conf/simplepkg.conf.new | 6 +++++- lib/common.sh | 13 +++++++++++++ src/simplaret | 24 +++++++++++++++++++----- 3 files changed, 37 insertions(+), 6 deletions(-) diff --git a/conf/simplepkg.conf.new b/conf/simplepkg.conf.new index e1b989d..bf62450 100644 --- a/conf/simplepkg.conf.new +++ b/conf/simplepkg.conf.new @@ -46,8 +46,12 @@ STORAGE="/var/simplaret/packages" # to enable it, set to "1" or "yes" PASSIVE_FTP="1" +# http retrieval tool +# available parameters are "wget" or "curl" +HTTP_TOOL="wget" + # ftp retrieval tool -# available parameters are "wget" or "ncftpget" +# available parameters are "wget", "curl" or "ncftpget" FTP_TOOL="wget" # set connection timeout in seconds diff --git a/lib/common.sh b/lib/common.sh index a140ccb..8647945 100644 --- a/lib/common.sh +++ b/lib/common.sh @@ -193,6 +193,7 @@ function eval_config { ROOT_PRIORITY="`eval_parameter ROOT_PRIORITY patches slackware extra testing pasture`" SIMPLARET_PURGE_WEEKS="`eval_parameter SIMPLARET_PURGE_WEEKS 0`" FTP_TOOL="`eval_parameter FTP_TOOL wget`" + HTTP_TOOL="`eval_parameter HTTP_TOOL wget`" CONNECT_TIMEOUT="`eval_parameter CONNECT_TIMEOUT 0`" SIMPLARET_CLEAN="`eval_boolean_parameter SIMPLARET_CLEAN 1`" @@ -239,6 +240,18 @@ function eval_config { VERSION="$DEFAULT_VERSION" fi + if [ "$FTP_TOOL" != "wget" ] || [ "$FTP_TOOL" != "curl" ] || [ "$FTP_TOOL" != "ncftpget" ]; then + echo "$1 configuration error: invalid value $FTP_TOOL for config parameter FTP_TOOL" + echo "$1 assuming value \"wget\" for variable FTP_TOOL" + FTP_TOOL="wget" + fi + + if [ "$HTTP_TOOL" != "wget" ] || [ "$HTTP_TOOL" != "curl" ]; then + echo "$1 configuration error: invalid value $HTTP_TOOL for config parameter HTTP_TOOL" + echo "$1 assuming value \"wget\" for variable HTTP_TOOL" + HTTP_TOOL="wget" + fi + if which $SIMPLARET &> /dev/null; then if [ "$SIMPLARET_UPDATE" == "1" ]; then if [ "$2" == "-u" ]; then diff --git a/src/simplaret b/src/simplaret index fd8113a..0bc27d6 100755 --- a/src/simplaret +++ b/src/simplaret @@ -38,7 +38,8 @@ function simplaret_usage { function simplaret_get_index { for file in `simplaret_metafiles`; do - simplaret_download $1 $file $2 + echo $BASENAME: getting $1/$file + simplaret_download $1 $file $2 --no-verbose done } @@ -69,10 +70,11 @@ function simplaret_check_index { function simplaret_download { # download a file from a repo to a folder - # usage: simplaret + # usage: simplaret [--no-verbose] local protocol file - local wget_timeout wget_passive_ftp + local wget_timeout wget_passive_ftp wget_verbose + local curl_timeout curl_passive_ftp local ncftpget_timeout ncftpget_passive_ftp protocol="`echo $1 | cut -d : -f 1`" @@ -85,19 +87,31 @@ function simplaret_download { if [ ! -z "$CONNECT_TIMEOUT" ] || [ "$CONNECT_TIMEOUT" != "0" ]; then wget_timeout="--timeout $CONNECT_TIMEOUT" ncftpget_timeout="-t $CONNECT_TIMEOUT" + curl_timeout="--connect-timeout $CONNECT_TIMEOUT" + fi + + if [ "$4" == "--no-verbose" ]; then + wget_verbose="--no-verbose" fi if [ "$protocol" == "http" ]; then - wget $wget_timeout $1/$2 -O $3/$file + if [ "$HTTP_TOOL" == "wget" ]; then + wget $wget_timeout $wget_verbose $1/$2 -O $3/$file + elif [ "$HTTP_TOOL" == "curl" ]; then + curl $curl_timeout $1/$2 > $3/$file + fi elif [ "$protocol" == "ftp" ]; then if [ "$PASSIVE_FTP" == "1" ]; then wget_passive_ftp="--passive-ftp" ncftpget_passive_ftp="-F" + curl_passive_ftp="--ftp-pasv" fi if [ "$FTP_TOOL" == "ncftpget" ]; then ncftpget -c $ncftpget_timeout $ncftpget_passive_ftp $1/$2 > $3/$file elif [ "$FTP_TOOL" == "wget" ]; then - wget $wget_timeout $wget_passive_ftp $1/$2 -O $3/$file + wget $wget_timeout $wget_passive_ftp $wget_verbose $1/$2 -O $3/$file + elif [ "$FTP_TOOL" == "curl" ]; then + curl $curl_timeout $curl_passive_ftp $1/$2 > $3/$file else echo $BASENAME: error: invalid value for config variable FTP_TOOL: $FTP_TOOL echo $BASENAME: please check your config file $CONF -- cgit v1.2.3