1#
2#	$OpenBSD: weekly,v 1.30 2020/02/12 20:51:49 jung Exp $
3#
4# For local additions, create the file /etc/weekly.local.
5# To get section headers, use the function next_part in weekly.local.
6#
7umask 022
8
9PARTOUT=/var/log/weekly.part
10MAINOUT=/var/log/weekly.out
11install -o 0 -g 0 -m 600    /dev/null $PARTOUT
12install -o 0 -g 0 -m 600 -b /dev/null $MAINOUT
13
14start_part() {
15	TITLE=$1
16	exec > $PARTOUT 2>&1
17}
18
19end_part() {
20	exec >> $MAINOUT 2>&1
21	test -s $PARTOUT || return
22	echo ""
23	echo "$TITLE"
24	cat $PARTOUT
25}
26
27next_part() {
28	end_part
29	start_part "$1"
30}
31
32run_script() {
33	f=/etc/$1
34	test -e $f || return
35	if [ `stat -f '%Sp%u' $f | cut -b1,6,9,11-` != '---0' ]; then
36		echo "$f has insecure permissions, skipping:"
37		ls -l $f
38		return
39	fi
40	. $f
41}
42
43start_part "Running weekly.local:"
44run_script "weekly.local"
45
46next_part "Rebuilding locate database:"
47if [ -f /var/db/locate.database ]; then
48	if TMP=`mktemp /var/db/locate.database.XXXXXXXXXX`; then
49		trap 'rm -f $TMP; exit 1' 0 1 15
50		UPDATEDB="/usr/libexec/locate.updatedb"
51		echo "${UPDATEDB} --fcodes=-" | \
52		    nice -5 su -m nobody 1>$TMP
53		if [ $? -ne 0 ]; then
54			echo "Rebuilding locate database failed"
55		elif ! locate -d $TMP /etc/weekly >/dev/null; then
56			echo "Not installing invalid locate database"
57		else
58			chmod 444 $TMP
59			chown root:wheel $TMP
60			mv -f $TMP /var/db/locate.database
61		fi
62	else
63		echo "Not rebuilding locate database; can't create temp file"
64	fi
65fi
66
67next_part "Rebuilding whatis databases:"
68/usr/sbin/makewhatis $MAKEWHATISARGS
69
70next_part "Doing login accounting:"
71[ "X$LOGINACCOUNTING" = X1 ] && {
72	ac -p | sort -nr -k 2
73}
74
75end_part
76rm -f $PARTOUT
77
78[ -s $MAINOUT ] && mail -s "`hostname` weekly output" root < $MAINOUT
79