99 lines
3 KiB
Bash
99 lines
3 KiB
Bash
#!/bin/bash
|
|
|
|
# This script checks for changes on the primary mirror and
|
|
# updates the database if changes are found. For most categories
|
|
# the script first checks if a fullfiletimelist-<category>
|
|
# exists and runs the actual primary mirror scan if that file
|
|
# has changed.
|
|
|
|
if [ $# -ne 2 ]; then
|
|
echo "Exactly two parameter needed. category and /path/to/logfile"
|
|
exit 1
|
|
fi
|
|
|
|
exec >> $2
|
|
exec 2>&1
|
|
|
|
CURDATE=`date +%s`
|
|
SCANNER="/usr/bin/mm2_update-master-directory-list"
|
|
|
|
if [ "${1}" == "fedora" ]; then
|
|
CATEGORY="Fedora Linux"
|
|
elif [ "${1}" == "epel" ]; then
|
|
CATEGORY="Fedora EPEL"
|
|
SCANNER="/usr/local/bin/scan-primary-mirror"
|
|
elif [ "${1}" == "alt" ]; then
|
|
CATEGORY="Fedora Other"
|
|
elif [ "${1}" == "fedora-secondary" ]; then
|
|
CATEGORY="Fedora Secondary Arches"
|
|
SCANNER="/usr/local/bin/scan-primary-mirror -d"
|
|
elif [ "${1}" == "archive" ]; then
|
|
CATEGORY="Fedora Archive"
|
|
SCANNER="/usr/local/bin/scan-primary-mirror -d"
|
|
elif [ "${1}" == "codecs" ]; then
|
|
CATEGORY="Fedora Codecs"
|
|
SCANNER="/usr/local/bin/scan-primary-mirror"
|
|
elif [ "${1}" == "centos" ]; then
|
|
CATEGORY="CentOS"
|
|
SCANNER="/usr/local/bin/scan-primary-mirror -c /etc/mirrormanager/scan-primary-mirror-centos.toml -d"
|
|
fi
|
|
|
|
if [ -e /var/run/mirrormanager/umdl-${1} ]; then
|
|
. /var/run/mirrormanager/umdl-${1}
|
|
else
|
|
# 24 hours -> 86400 seconds
|
|
let LASTRUN=CURDATE-86400
|
|
fi
|
|
|
|
if [ "${1}" == "centos" ]; then
|
|
CENTOS_PRIMARY="mref1-priv.iad2.centos.org"
|
|
# check if a sync is currently in process
|
|
CODE=$( curl -s -o /dev/null -I -w "%{http_code}" http://${CENTOS_PRIMARY}/9-stream/.sync_in_progress )
|
|
if [ "${CODE}" -eq "200" ]; then
|
|
echo -n "CentOS primary mirror sync in progress. Skipping scan at "
|
|
date
|
|
exit 0
|
|
fi
|
|
FFTL="http://${CENTOS_PRIMARY}/9-stream/COMPOSE_ID"
|
|
FILEDATE=`date +%s -d"$( curl -s --head ${FFTL} | awk 'BEGIN {FS=": "}/^Last-Modified/{print $2}' )"`
|
|
FFTL_SIGS="http://${CENTOS_PRIMARY}/SIGs/9-stream/COMPOSE_ID"
|
|
FILEDATE_SIGS=`date +%s -d"$( curl -s --head ${FFTL_SIGS} | awk 'BEGIN {FS=": "}/^Last-Modified/{print $2}' )"`
|
|
if [ "$FILEDATE_SIGS" -gt "$FILEDATE" ]; then
|
|
FILEDATE=$FILEDATE_SIGS
|
|
FFTL=$FFTL_SIGS
|
|
fi
|
|
elif [ "${1}" == "codecs" ]; then
|
|
FFTL="${CATEGORY}"
|
|
FILEDATE=${CURDATE}
|
|
else
|
|
FFTL="/srv/pub/${1}/fullfiletimelist-${1}"
|
|
FILEDATE=`stat -c %Z ${FFTL} 2> /dev/null`
|
|
|
|
if [ "$?" -eq "1" ]; then
|
|
echo "Error stat() of ${FFTL} failed. This should not happen."
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
# Rerun scan after 24 hours
|
|
if [ "$LASTRUN" -gt "$FILEDATE" ] && [ "$LASTRUN" -gt $(expr $CURDATE - 86400) ]; then
|
|
# no changes on the master mirror
|
|
# abort
|
|
exit 0
|
|
fi
|
|
|
|
echo -n "${FFTL} has changed since last run. Running umdl for ${CATEGORY} at "
|
|
date
|
|
|
|
/usr/local/bin/lock-wrapper umdl-${1} "${SCANNER} --category \"${CATEGORY}\""
|
|
|
|
if [ "$?" -eq "0" ]; then
|
|
# success! remember the date of this run
|
|
echo "LASTRUN=${CURDATE}" > /var/run/mirrormanager/umdl-${1}
|
|
echo -n "Finished umdl for ${CATEGORY} successfully at "
|
|
date
|
|
exit 0
|
|
fi
|
|
|
|
echo -n "umdl for ${CATEGORY} returned non-zero. Something failed. Please check umdl.log. "
|
|
date
|