63 lines
1.3 KiB
Bash
63 lines
1.3 KiB
Bash
#!/bin/sh
|
|
|
|
set -eu
|
|
|
|
umask 022
|
|
|
|
cd /srv/web/oob.foo.sh/routeros
|
|
|
|
verbose=false
|
|
if [ "${1:-}" = "-v" ]; then
|
|
verbose=true
|
|
shift
|
|
fi
|
|
|
|
if [ $# -gt 0 ]; then
|
|
echo "Usage: $(basename "$0") [-v]" 1>&2
|
|
exit 1
|
|
fi
|
|
|
|
packageinfo=$(curl -sSf "https://mikrotik.com/download" | awk -F '"' '
|
|
{
|
|
if (!url && $0 ~ /routeros-[0-9\.]+-arm.npk/) {
|
|
url=$2
|
|
} else if (!found && url && $0 ~ /data-checksum-sha256/) {
|
|
print url " " $6
|
|
found = 1
|
|
}
|
|
}
|
|
')
|
|
|
|
packageurl="$(echo "$packageinfo" | cut -d " " -f 1)"
|
|
checksum="$(echo "$packageinfo" | cut -d " " -f 2)"
|
|
if [ -z "$packageurl" ]; then
|
|
echo "ERR: Got empty package URL, exiting" 1>&2
|
|
exit 1
|
|
fi
|
|
packagename="$(basename "$packageurl")"
|
|
if [ -f "$packagename" ]; then
|
|
"$verbose" && echo "Already up to date"
|
|
exit 0
|
|
fi
|
|
|
|
if [ -z "$checksum" ]; then
|
|
echo "ERR: Failed to determine package checksum" 1>&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "Downloading new package '${packagename}'"
|
|
tmpfile="$(mktemp -p .)"
|
|
trap 'rm -f -- "$tmpfile"' EXIT
|
|
curl -sSf -o "$tmpfile" "$packageurl"
|
|
|
|
if [ "$(sha256sum "$tmpfile" | cut -d " " -f 1)" != "$checksum" ]; then
|
|
echo "ERR: Checksum check failed, not saving package" 1>&2
|
|
exit 1
|
|
fi
|
|
|
|
mv "$tmpfile" "$packagename"
|
|
|
|
echo
|
|
curl -sSf "https://cdn.mikrotik.com/routeros/$(echo "$packagename" | cut -d "-" -f 2)/CHANGELOG"
|
|
echo
|
|
echo
|