summaryrefslogtreecommitdiff
path: root/al32-mktorrent.sh
blob: 65ba79466368cbb5ab7acb06d4f1f87865279f69 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#! /bin/bash
set -euo pipefail

function join_by { local IFS="$1"; shift; echo "$*"; }

usage () {
	echo "Usage: $0 [i686|dual]"
}

if [ "$#" -eq 0 ] ; then 
	echo "No architecture specified, selecting 'i686'"
	arch="i686"
elif [ "$#" -eq 1 ] ; then
	echo "Selecting architecture '$1'"
	arch="$1"
else
	usage
	echo "Too many arguments, exiting" >&2
	exit 1
fi

fg_green="\033[32m"
fg_red="\033[31m"
fg_blue="\033[34m"
fg_reset="\033[0m"
fg_bold="\033[1m"

MIRRORLIST_FILE="https://raw.githubusercontent.com/archlinux32/packages/master/core/pacman-mirrorlist/mirrorlist"

mirrorlist="$(curl "$MIRRORLIST_FILE" 2>/dev/null | grep Server | cut -d '=' -f 2 | sed -e 's/\s//g;s_$arch/$repo_archisos/_')"

declare -a available_mirrors

read -r -p "Date of the ISO: " iso_date

iso_string="archlinux-$iso_date-$arch.iso"

for i in $mirrorlist ; do
	echo -n -e "$fg_reset${fg_bold}Checking $fg_reset$fg_blue$i$fg_reset "
	curl -g "$i" 2>/dev/null | grep -q "$iso_string" && (
		echo -e "$fg_reset${fg_green}OK$fg_reset"
	) || ( echo -e "$fg_reset${fg_red}Failed$fg_reset" ; false ) || continue
	available_mirrors=(${available_mirrors[@]} "$i")
done

echo "${#available_mirrors[@]} mirrors available"


if [ ! -f "$iso_string" ] ; then
	echo -e "$fg_reset${fg_bold}Downloading iso...$fg_reset"
	curl -O "${available_mirrors[0]}$iso_string"
else
	echo -e "$fg_reset${fg_bold}Reusing already downloaded iso...$fg_reset"
fi


echo -e "$fg_reset${fg_bold}Downloading verification files...$fg_reset"
curl -O "${available_mirrors[0]}$iso_string.sig"
curl -O "${available_mirrors[0]}sha512sums"

echo -n -e "$fg_reset${fg_bold}Checking PGP signature...$fg_reset "
gpg --verify "$iso_string.sig" "$iso_string" || exit 100
echo -e "$fg_reset${fg_green}OK"

echo -e "$fg_reset${fg_bold}Checking SHA512 sums...$fg_reset"
sha512sum --ignore-missing --check sha512sums || exit 101

echo -e "$fg_reset${fg_bold}Create torrent file...$fg_reset"
mktorrent --announce=http://dopsi.ch:6969/announce --web-seed="$(join_by ',' "${available_mirrors[@]}")" "$iso_string" 

# vim: set ts=4 sw=4: