#!/bin/sh

# Duncan Findlay
# duncf@debian.org

# Daily cronjob for SpamAssassin updates. This isn't pretty but it
# should do the job.

CRON=0

test -f /etc/default/spamassassin && . /etc/default/spamassassin

test -x /usr/bin/sa-update || exit 0
test -x /etc/init.d/spamassassin || exit 0

if [ "$CRON" = "0" ] ; then
    exit 0
fi

# If there's a problem with the ruleset or configs, print the output
# of spamassassin --lint (which will typically get emailed to root)
# and abort.
die_with_lint() {
    spamassassin --lint -D 2>&1
    exit 1
}

do_compile() {
# Compile, if rules have previously been compiled, and it's possible
    if [ -x /usr/bin/re2c -a -x /usr/bin/sa-compile \
        -a -d /var/lib/spamassassin/compiled ]; then
        sa-compile --quiet
        # Fixup perms -- group and other should be able to
        # read and execute, but never write.  Works around
        # sa-compile's failure to obey umask.
	if [ -d /var/lib/spamassassin ]; then
	    chmod -R go-w,go+rX /var/lib/spamassassin/
	fi
    fi
}

# Tell a running spamd to reload its configs and rules.
reload() {
    # Reload
    if which invoke-rc.d >/dev/null 2>&1; then
	invoke-rc.d spamassassin reload > /dev/null
    else
	/etc/init.d/spamassassin reload > /dev/null
    fi
    if [ -d /etc/spamassassin/sa-update-hooks.d ]; then
        run-parts --lsbsysinit /etc/spamassassin/sa-update-hooks.d
    fi
}

# Sleep for up to 3600 seconds
RANGE=3600
number=`od -vAn -N2 -tu4 < /dev/urandom`
number=`expr $number "%" $RANGE`
sleep $number


# Update
umask 022
sa-update

case $? in
    0)
        # got updates!
        spamassassin --lint || die_with_lint
        do_compile
	reload
        ;;
    1)
        # no updates
        exit 0
        ;;
    2)
        # lint failed!
        die_with_lint
        ;;
    *)
        echo "sa-update failed for unknown reasons" 1>&2
        ;;
esac

