Commit | Line | Data |
---|---|---|
db2c5b8b MW |
1 | #! /bin/sh |
2 | ||
3 | set -e | |
4 | ||
5 | ## Make sure we're running as the right user. | |
fb775fef | 6 | case $(id -un) in |
db2c5b8b | 7 | mirror) ;; |
b8bf5b40 | 8 | *) exec userv -fstdin=/dev/null mirror run "$@";; |
db2c5b8b MW |
9 | esac |
10 | ||
11 | ## Set up a plausible environment. | |
6833efd5 | 12 | HOME=/var/lib/mirror; export HOME; cd |
56e8c7af | 13 | MIRRORS=/mnt/ftp/pub/mirrors; export MIRRORS |
db2c5b8b MW |
14 | PATH=$HOME/bin:/usr/bin:/usr/sbin:/bin:/sbin:/usr/local/bin:/usr/local/sbin |
15 | export PATH | |
16 | umask 002 | |
17 | ||
18 | ## Make sure we're running with a lock file. | |
19 | case "${MIRROR_LOCKED-nil}" in | |
20 | nil) exec env MIRROR_LOCKED=t locking -f var/mirror.lock "$0" "$@" ;; | |
21 | esac | |
22 | ||
93e6eb8e MW |
23 | ## Hack for mad Kerberized NFS. |
24 | if [ -r etc/krb5.keytab ]; then | |
25 | kinit -k -t etc/krb5.keytab mirror | |
26 | fi | |
27 | ||
db2c5b8b MW |
28 | ## Before we start, rotate the logs. (Doing things this way means that we |
29 | ## can be sure we don't lose new logs, even if the log rotation goes | |
30 | ## completely mental. | |
31 | logrotate -s var/logrotate.state etc/logrotate.conf | |
32 | ||
33 | ## Let SIGINT take out the children only. | |
34 | trap "" INT | |
35 | ||
b8bf5b40 MW |
36 | ## By default run all of the scripts. |
37 | case $# in 0) set "*" ;; esac | |
38 | ||
db2c5b8b MW |
39 | ## Now do the various mirroring things. |
40 | for file in $(run-parts --list etc/mirrors.d); do | |
41 | [ -x "$file" ] || continue | |
b8bf5b40 MW |
42 | |
43 | matchp=nil | |
44 | leaf=$(echo "$file" | sed 's:^.*/::; s/^[0-9]\+[-_.]//') | |
45 | for pat in "$@"; do | |
46 | case "$leaf" in $pat) matchp=t; break ;; esac | |
47 | done | |
48 | case $matchp in nil) continue ;; esac | |
49 | ||
db2c5b8b MW |
50 | base=${file##*/}; base=${base#[0-9]*-} |
51 | ( | |
52 | echo | |
53 | echo "***--------------------------------------------------" | |
54 | echo "*** Running $base at $(date +%Y-%m-%dT%H:%M:%S)" | |
55 | echo | |
56 | set +e; (trap - INT; exec "$file"); rc=$?; set -e | |
57 | echo | |
58 | echo "*** Finished $(date +%Y-%m-%dT%H:%M:%S); rc = $rc" | |
59 | ) >>log/$base.log 2>&1 | |
60 | done |