diff options
-rwxr-xr-x | mirmon-snapshots.sh | 44 | ||||
-rwxr-xr-x | mirmon-wrapper.sh | 125 |
2 files changed, 125 insertions, 44 deletions
diff --git a/mirmon-snapshots.sh b/mirmon-snapshots.sh deleted file mode 100755 index 5a5c127..0000000 --- a/mirmon-snapshots.sh +++ /dev/null @@ -1,44 +0,0 @@ -#!/bin/bash - -set -e - -MODE=snapshots -SRC=distfiles -SITEDIR=/var/www/mirrorstats.gentoo.org -REPODIR=${SITEDIR}/gentoo-mirrorstats/ -MODEDIR=${REPODIR}/${MODE}_mirrors/ -VARDIR=${SITEDIR}/var/${MODE} -HTDOCS=${SITEDIR}/htdocs/${MODE} -MIRMON=$(readlink -f "${SITEDIR}"/mirmon/mirmon) -CONFFILE=$(readlink -f "${MODEDIR}"/mirmon.conf) -VAR_GMIRRORS=${VARDIR}/g.mirrors -URL=https://www.gentoo.org/downloads/mirrors/ - -# Grab mirrors from the web -mkdir -p "${VARDIR}" -"${REPODIR}"/get-mirrors-from-${SRC}-xml.rb > "${VAR_GMIRRORS}".tmp - -EXTRA_MIRRORS=${MODEDIR}/g.mirrors.extra -[[ -e "${EXTRA_MIRRORS}" ]] && cat "${EXTRA_MIRRORS}" >>"${VAR_GMIRRORS}".tmp - -# Atomic rotate into place -mv -f "${VAR_GMIRRORS}"{.tmp,} - -# fatal if the state file is NOT present. -[[ -e ${VARDIR}/mirmon.state ]] || touch "${VARDIR}/mirmon.state" - -# run mirmon -/usr/bin/perl "${MIRMON}" -c "${CONFFILE}" -q -get update - -# Set up a nice link to our mirror page directly: -mkdir -p ${HTDOCS} -sed \ - -e "s#mirrors</H2>#<a href="${URL}">mirrors</a></H2>#" \ - >"${HTDOCS}"/index.html.tmp <"${HTDOCS}"/index-wip.html \ - && mv -f "${HTDOCS}"/index.html{.tmp,} - -# Generate a json file containing the state of each mirror -"${REPODIR}"/generate-json.py \ - "${VARDIR}"/mirmon.state \ - >"${HTDOCS}"/state.json.tmp \ - && mv -f "${HTDOCS}"/state.json{.tmp,} diff --git a/mirmon-wrapper.sh b/mirmon-wrapper.sh new file mode 100755 index 0000000..ba731c6 --- /dev/null +++ b/mirmon-wrapper.sh @@ -0,0 +1,125 @@ +#!/bin/bash -e + +NAME=$(basename "$0") + +OPTIONS=( + "mode" + "xml-src" + "url" +) + +usage() { + echo "Usage: ${NAME}$(printf " --%s=..." "${OPTIONS[@]}" )" 1>&2 + exit 3 +} + +dohelp() { + echo "${NAME} TODO" 1>&2 + exit 0 +} + +die() { + echo "$*" 1>&2 + exit 2 +} + +main() { + [[ -z "$MODE" ]] && die "--mode unset" + [[ -z "$XML_SRC" ]] && die "--xml-src unset" + [[ -z "$URL" ]] && die "--url unset" + SITEDIR=/var/www/mirrorstats.gentoo.org + REPODIR=${SITEDIR}/gentoo-mirrorstats/ + MODEDIR=${REPODIR}/${MODE}_mirrors/ + VARDIR=${SITEDIR}/var/${MODE} + HTDOCS=${SITEDIR}/htdocs/${MODE} + MIRMON=$(readlink -f "${SITEDIR}"/mirmon/mirmon) + CONFFILE=$(readlink -f "${MODEDIR}"/mirmon.conf) + VAR_GMIRRORS=${VARDIR}/g.mirrors + + # Grab mirrors from the web + mkdir -p "${VARDIR}" + "${REPODIR}"/get-mirrors-from-${XML_SRC}-xml.rb > "${VAR_GMIRRORS}".tmp + + EXTRA_MIRRORS=${MODEDIR}/g.mirrors.extra + [[ -e "${EXTRA_MIRRORS}" ]] && cat "${EXTRA_MIRRORS}" >>"${VAR_GMIRRORS}".tmp + + # Atomic rotate into place + mv -f "${VAR_GMIRRORS}"{.tmp,} + + # fatal if the state file is NOT present. + [[ -e ${VARDIR}/mirmon.state ]] || touch "${VARDIR}/mirmon.state" + + # run mirmon + /usr/bin/perl "${MIRMON}" -c "${CONFFILE}" -q -get update + + # Set up a nice link to our mirror page directly: + mkdir -p ${HTDOCS} + sed \ + -e "s#mirrors</H2>#<a href="${URL}">mirrors</a></H2>#" \ + >"${HTDOCS}"/index.html.tmp <"${HTDOCS}"/index-wip.html \ + && mv -f "${HTDOCS}"/index.html{.tmp,} + + # Generate a json file containing the state of each mirror + "${REPODIR}"/generate-json.py \ + "${VARDIR}"/mirmon.state \ + >"${HTDOCS}"/state.json.tmp \ + && mv -f "${HTDOCS}"/state.json{.tmp,} + + # Done + exit 0 +} + +opts=$(getopt \ + --longoptions "$(printf "%s:," "${OPTIONS[@]}" )" \ + --name "$(basename "$0")" \ + --options "" \ + -- "$@" +) + +eval set --$opts + +MODE='' +XML_SRC='' +URL='' +HELP=0 +INVALID=0 + +while [[ $# -gt 0 ]]; do + case "$1" in + --mode) + MODE=$2 + shift 2 + ;; + + --xml-src) + XML_SRC=$2 + shift 2 + ;; + + --url) + URL=$2 + shift 2 + ;; + --help) + HELP=1 + break + ;; + --) + # End of options + break + ;; + *) + INVALID=1 + break + ;; + esac +done + +[[ $INVALID -eq 1 ]] && usage +[[ $HELP -eq 1 ]] && dohelp + +main + +#MODE=snapshots +#XML_SRC=distfiles +#URL=https://www.gentoo.org/downloads/mirrors/ |