A utility for downloading and verifying FreeBSD releases and snapshots
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
- #!/bin/sh -
-
- set -e
-
- args=`getopt m $*`
- if [ $? -ne 0 ]; then
- echo 'Usage: $0 [ -m ]'
- exit 2
- fi
- set -- $args
- while :; do
- case "$1" in
- -m)
- more=1
- shift
- ;;
- --)
- shift; break
- ;;
- esac
- done
-
- mkdir "$0.running"
-
- # minimize file
- tmpfname="tmp.snapinf.asc"
- awk '
- output != 1 && tolower($1) == "message-id:" {
- print
- next
- }
-
- $0 == "-----BEGIN PGP SIGNED MESSAGE-----" {
- output = 1
- }
-
- output == 1 {
- print
- }
-
- $0 == "-----END PGP SIGNATURE-----" {
- output = 0
- }' > "$tmpfname"
-
- if ! gpg --verify "$tmpfname"; then
- echo 'failed verify'
- rm "$tmpfname"
- rmdir "$0.running"
- exit 1
- fi
-
- # process file
- awk -f ./mksnapidx.awk "$tmpfname" > additional
- rm "$tmpfname"
-
- # only check if there isn't more to come
- if [ x"$more" = x"1" ]; then
- (cat snapshot.idx || :; cat additional) > snapshot.idx.new
- (cat snapshot.complete.idx || :; cat additional) > snapshot.complete.idx.new
- else
- (xzcat snapshot.idx.xz; cat additional) | sort -u | awk '
- {
- if (!system("wget --method=HEAD " $9))
- print
- }
- ' > snapshot.idx.new
-
- xz snapshot.idx.new
-
- (xzcat snapshot.complete.idx.xz || :; cat additional) | sort -u > snapshot.complete.idx.new
- xz snapshot.complete.idx.new
- fi
-
- rm additional
-
- # install new indexes
- if [ x"$more" = x"1" ]; then
- mv snapshot.idx.new snapshot.idx
- mv snapshot.complete.idx.new snapshot.complete.idx
- else
- mv snapshot.idx.new.xz snapshot.idx.xz
- mv snapshot.complete.idx.new.xz snapshot.complete.idx.xz
- fi
-
- rmdir "$0.running"
|