Wed, 08 Feb 2012 20:07:00 +0200
Update version, adapt patch, correct PID writing, correct build on newer
FreeBSD releases, and most importantly introduce new patch to try to
avoid segfault caused by multiple network interfaces with the same (or
no) address. This is common when configuring bridges and tunnels.
michael@227 | 1 | #!@l_prefix@/bin/openpkg rc |
michael@227 | 2 | ## |
michael@227 | 3 | ## rc.clamav -- Run-Commands |
michael@227 | 4 | ## |
michael@227 | 5 | |
michael@227 | 6 | %config |
michael@227 | 7 | clamav_enable="$openpkg_rc_def" |
michael@227 | 8 | clamav_daemons="clamd clamav-milter" |
michael@227 | 9 | clamav_clamd_flags="" |
michael@227 | 10 | clamav_clamav_milter_flags="" |
michael@227 | 11 | clamav_update="daily" |
michael@227 | 12 | clamav_log_prolog="true" |
michael@227 | 13 | clamav_log_epilog="true" |
michael@227 | 14 | clamav_log_numfiles="10" |
michael@227 | 15 | clamav_log_minsize="1M" |
michael@227 | 16 | clamav_log_complevel="9" |
michael@227 | 17 | |
michael@227 | 18 | %common |
michael@227 | 19 | clamav_cfgfile="@l_prefix@/etc/clamav/clamd.conf" |
michael@234 | 20 | clamav_milter_cfgfile="@l_prefix@/etc/clamav/clamav-milter.conf" |
michael@227 | 21 | clamav_pidfile_clamd="@l_prefix@/var/clamav/clamd.pid" |
michael@227 | 22 | clamav_pidfile_clamav_milter="@l_prefix@/var/clamav/clamav-milter.pid" |
michael@227 | 23 | clamav_signal () { |
michael@227 | 24 | [ -f $clamav_pidfile_clamd ] \ |
michael@227 | 25 | && kill -$1 `cat $clamav_pidfile_clamd` |
michael@227 | 26 | local rc_clamav_clamd=$? |
michael@227 | 27 | [ -f $clamav_pidfile_clamav_milter ] \ |
michael@227 | 28 | && kill -$1 `cat $clamav_pidfile_clamav_milter` |
michael@227 | 29 | local rc_clamav_clamav_milter=$? |
michael@227 | 30 | [ $rc_clamav_clamd -eq 0 \ |
michael@227 | 31 | -o $rc_clamav_clamav_milter -eq 0 ] |
michael@227 | 32 | } |
michael@227 | 33 | |
michael@227 | 34 | %status -u @l_rusr@ -o |
michael@227 | 35 | clamav_usable="unknown" |
michael@227 | 36 | clamav_active="no" |
michael@227 | 37 | rcService clamav enable yes && \ |
michael@227 | 38 | clamav_signal 0 && clamav_active="yes" |
michael@227 | 39 | echo "clamav_enable=\"$clamav_enable\"" |
michael@227 | 40 | echo "clamav_usable=\"$clamav_usable\"" |
michael@227 | 41 | echo "clamav_active=\"$clamav_active\"" |
michael@227 | 42 | |
michael@227 | 43 | %start -u @l_rusr@ |
michael@227 | 44 | rcService clamav enable yes || exit 0 |
michael@227 | 45 | rcService clamav active yes && exit 0 |
michael@227 | 46 | for daemon in $clamav_daemons; do |
michael@227 | 47 | if [ ".$daemon" = ".clamd" ]; then |
michael@227 | 48 | @l_prefix@/sbin/clamd \ |
michael@227 | 49 | --config-file=$clamav_cfgfile \ |
michael@227 | 50 | $clamav_clamd_flags |
michael@227 | 51 | elif [ ".$daemon" = ".clamav-milter" -a -x @l_prefix@/sbin/clamav-milter ]; then |
michael@227 | 52 | ( umask 002 |
michael@227 | 53 | @l_prefix@/sbin/clamav-milter \ |
michael@234 | 54 | --config-file=$clamav_milter_cfgfile \ |
michael@234 | 55 | $clamav_clamav_milter_flags |
michael@227 | 56 | ) || exit $? |
michael@227 | 57 | fi |
michael@227 | 58 | done |
michael@227 | 59 | |
michael@227 | 60 | %stop -u @l_rusr@ |
michael@227 | 61 | rcService clamav enable yes || exit 0 |
michael@227 | 62 | rcService clamav active no && exit 0 |
michael@227 | 63 | clamav_signal TERM |
michael@227 | 64 | rm -f $clamav_pidfile_clamd 2>/dev/null || true |
michael@227 | 65 | rm -f $clamav_pidfile_clamav_milter 2>/dev/null || true |
michael@227 | 66 | |
michael@227 | 67 | %restart -u @l_rusr@ |
michael@227 | 68 | rcService clamav enable yes || exit 0 |
michael@227 | 69 | rcService clamav active no && exit 0 |
michael@227 | 70 | rc clamav stop |
michael@227 | 71 | sleep 2 |
michael@227 | 72 | rc clamav start |
michael@227 | 73 | |
michael@227 | 74 | %quarterly -u @l_rusr@ |
michael@227 | 75 | rcService clamav enable yes || exit 0 |
michael@227 | 76 | if [ ".$clamav_update" = .quarterly ]; then |
michael@227 | 77 | @l_prefix@/bin/freshclam |
michael@227 | 78 | if [ $? -ge 10 ]; then exit $?; fi |
michael@227 | 79 | fi |
michael@227 | 80 | |
michael@227 | 81 | %hourly -u @l_rusr@ |
michael@227 | 82 | rcService clamav enable yes || exit 0 |
michael@227 | 83 | if [ ".$clamav_update" = .hourly ]; then |
michael@227 | 84 | @l_prefix@/bin/freshclam |
michael@227 | 85 | if [ $? -ge 10 ]; then exit $?; fi |
michael@227 | 86 | fi |
michael@227 | 87 | |
michael@227 | 88 | %daily -u @l_rusr@ |
michael@227 | 89 | rcService clamav enable yes || exit 0 |
michael@227 | 90 | if [ ".$clamav_update" = .daily ]; then |
michael@227 | 91 | @l_prefix@/bin/freshclam |
michael@227 | 92 | if [ $? -ge 10 ]; then exit $?; fi |
michael@227 | 93 | fi |
michael@227 | 94 | logfiles="" |
michael@227 | 95 | for daemon in freshclam $clamav_daemons; do |
michael@227 | 96 | logfiles="$logfiles @l_prefix@/var/clamav/$daemon.log" |
michael@227 | 97 | done |
michael@227 | 98 | shtool rotate -f \ |
michael@227 | 99 | -n $clamav_log_numfiles -s $clamav_log_minsize -d \ |
michael@227 | 100 | -z $clamav_log_complevel -o @l_rusr@ -g @l_rgrp@ -m 644 \ |
michael@227 | 101 | -P "$clamav_log_prolog" \ |
michael@227 | 102 | -E "$clamav_log_epilog; rc clamav restart" \ |
michael@227 | 103 | $logfiles |
michael@227 | 104 | |
michael@227 | 105 | %weekly -u @l_rusr@ |
michael@227 | 106 | rcService clamav enable yes || exit 0 |
michael@227 | 107 | if [ ".$clamav_update" = .weekly ]; then |
michael@227 | 108 | @l_prefix@/bin/freshclam |
michael@227 | 109 | if [ $? -ge 10 ]; then exit $?; fi |
michael@227 | 110 | fi |
michael@227 | 111 |