#! /bin/ksh # $OpenBSD: fetch_cmd.template,v 1.2 2021/04/30 20:20:02 naddy Exp $ # Copyright (c) 2021 Marc Espie # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # this is a template for parsing the common ftp options a FETCH_CMD # requires, so that you can use curl or whatever weird shit you need # later DISTMIRROR="http://192.168.1.20/pub/OpenBSD/distfiles" continued=false if test -t then verbose=true progressmeter=true else verbose=false progressmeter=false fi sessionfile= outputfile= pipeout=false while getopts CmVvo:S: name do case $name in C) continued=true ;; m) progressmeter=true ;; V) verbose=false ;; v) verbose=true ;; o) outputfile=$OPTARG case $outputfile in -) pipeout=true ;; esac ;; S) ssl=$OPTARG case $ssl in session=*) sessionfile=${sessionfile#session=} ;; esac ;; ?) echo "Usage: $0 [ftp options] [files ...]" >&2 exit 2 ;; esac done shift $((OPTIND - 1)) # for instance, a skeleton using curl args="-L -s" [[ -n $outputfile ]] && args="$args -o $outputfile" $continued && args="$args -C -" MIRROR="$DISTMIRROR/$(basename "${outputfile%%.part}")" echo "Trying $MIRROR" /usr/local/bin/curl $args "$MIRROR" [ -f $outputfile ] && exit 0 echo "Trying $@" /usr/local/bin/curl $args "$@" \ && cp -v "$outputfile" "/tank/buffer/OpenBSD/ftp/distfiles/$(basename "${outputfile%%.part}")" [ -f "$outputfile" ] && exit 0 || exit 1