#!/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