set -e
## Make sure we're running as the right user.
-case "$USER" in
+case $(id -un) in
mirror) ;;
- *) exec userv -fstdin=/dev/null mirror run ;;
+ *) exec userv -fstdin=/dev/null mirror run "$@";;
esac
## Set up a plausible environment.
-HOME=/mnt/ftp/mirror-admin; export HOME; cd
+HOME=/var/lib/mirror-admin; export HOME; cd
+MIRRORS=/mnt/mirrors; export MIRRORS
PATH=$HOME/bin:/usr/bin:/usr/sbin:/bin:/sbin:/usr/local/bin:/usr/local/sbin
export PATH
umask 002
nil) exec env MIRROR_LOCKED=t locking -f var/mirror.lock "$0" "$@" ;;
esac
+## Hack for mad Kerberized NFS.
+if [ -r etc/krb5.keytab ]; then
+ kinit -k -t etc/krb5.keytab mirror
+fi
+
## Before we start, rotate the logs. (Doing things this way means that we
## can be sure we don't lose new logs, even if the log rotation goes
## completely mental.
## Let SIGINT take out the children only.
trap "" INT
+## By default run all of the scripts.
+case $# in 0) set "*" ;; esac
+
## Now do the various mirroring things.
for file in $(run-parts --list etc/mirrors.d); do
[ -x "$file" ] || continue
+
+ matchp=nil
+ leaf=$(echo "$file" | sed 's:^.*/::; s/^[0-9]\+[-_.]//')
+ for pat in "$@"; do
+ case "$leaf" in $pat) matchp=t; break ;; esac
+ done
+ case $matchp in nil) continue ;; esac
+
base=${file##*/}; base=${base#[0-9]*-}
(
echo
set +e; (trap - INT; exec "$file"); rc=$?; set -e
echo
echo "*** Finished $(date +%Y-%m-%dT%H:%M:%S); rc = $rc"
+ if [ -d etc/post-$base.d ]; then
+ for i in $(run-parts --list etc/post-$base.d); do
+ s=${i##*/}
+ echo
+ echo "*** Running post-script $s at $(date +%Y-%m-%dT%H:%M:%S)"
+ set +e; (trap - INT; exec "$i"); rc=$?; set -e
+ echo
+ echo "*** Finished post-script $s $(date +%Y-%m-%dT%H:%M:%S); rc = $rc"
+ done
+ fi
) >>log/$base.log 2>&1
done