Fri, 03 Aug 2012 20:11:53 +0200
Neutralize buggy code causing OpenPKG to have 'fatal problems' in
spite of correct installation, configuration, and operation. An
administrator suffering from this failure is even unable to
uninstall the flawed software.
1 #!@l_prefix@/bin/openpkg rc
2 ##
3 ## rc.clamav -- Run-Commands
4 ##
6 %config
7 clamav_enable="$openpkg_rc_def"
8 clamav_daemons="clamd clamav-milter"
9 clamav_clamd_flags=""
10 clamav_clamav_milter_flags=""
11 clamav_update="daily"
12 clamav_log_prolog="true"
13 clamav_log_epilog="true"
14 clamav_log_numfiles="10"
15 clamav_log_minsize="1M"
16 clamav_log_complevel="9"
18 %common
19 clamav_cfgfile="@l_prefix@/etc/clamav/clamd.conf"
20 clamav_milter_cfgfile="@l_prefix@/etc/clamav/clamav-milter.conf"
21 clamav_pidfile_clamd="@l_prefix@/var/clamav/clamd.pid"
22 clamav_pidfile_clamav_milter="@l_prefix@/var/clamav/clamav-milter.pid"
23 clamav_signal () {
24 [ -f $clamav_pidfile_clamd ] \
25 && kill -$1 `cat $clamav_pidfile_clamd`
26 local rc_clamav_clamd=$?
27 [ -f $clamav_pidfile_clamav_milter ] \
28 && kill -$1 `cat $clamav_pidfile_clamav_milter`
29 local rc_clamav_clamav_milter=$?
30 [ $rc_clamav_clamd -eq 0 \
31 -o $rc_clamav_clamav_milter -eq 0 ]
32 }
34 %status -u @l_rusr@ -o
35 clamav_usable="unknown"
36 clamav_active="no"
37 rcService clamav enable yes && \
38 clamav_signal 0 && clamav_active="yes"
39 echo "clamav_enable=\"$clamav_enable\""
40 echo "clamav_usable=\"$clamav_usable\""
41 echo "clamav_active=\"$clamav_active\""
43 %start -u @l_rusr@
44 rcService clamav enable yes || exit 0
45 rcService clamav active yes && exit 0
46 for daemon in $clamav_daemons; do
47 if [ ".$daemon" = ".clamd" ]; then
48 @l_prefix@/sbin/clamd \
49 --config-file=$clamav_cfgfile \
50 $clamav_clamd_flags
51 elif [ ".$daemon" = ".clamav-milter" -a -x @l_prefix@/sbin/clamav-milter ]; then
52 ( umask 002
53 @l_prefix@/sbin/clamav-milter \
54 --config-file=$clamav_milter_cfgfile \
55 $clamav_clamav_milter_flags
56 ) || exit $?
57 fi
58 done
60 %stop -u @l_rusr@
61 rcService clamav enable yes || exit 0
62 rcService clamav active no && exit 0
63 clamav_signal TERM
64 rm -f $clamav_pidfile_clamd 2>/dev/null || true
65 rm -f $clamav_pidfile_clamav_milter 2>/dev/null || true
67 %restart -u @l_rusr@
68 rcService clamav enable yes || exit 0
69 rcService clamav active no && exit 0
70 rc clamav stop
71 sleep 2
72 rc clamav start
74 %quarterly -u @l_rusr@
75 rcService clamav enable yes || exit 0
76 if [ ".$clamav_update" = .quarterly ]; then
77 @l_prefix@/bin/freshclam
78 if [ $? -ge 10 ]; then exit $?; fi
79 fi
81 %hourly -u @l_rusr@
82 rcService clamav enable yes || exit 0
83 if [ ".$clamav_update" = .hourly ]; then
84 @l_prefix@/bin/freshclam
85 if [ $? -ge 10 ]; then exit $?; fi
86 fi
88 %daily -u @l_rusr@
89 rcService clamav enable yes || exit 0
90 if [ ".$clamav_update" = .daily ]; then
91 @l_prefix@/bin/freshclam
92 if [ $? -ge 10 ]; then exit $?; fi
93 fi
94 logfiles=""
95 for daemon in freshclam $clamav_daemons; do
96 logfiles="$logfiles @l_prefix@/var/clamav/$daemon.log"
97 done
98 shtool rotate -f \
99 -n $clamav_log_numfiles -s $clamav_log_minsize -d \
100 -z $clamav_log_complevel -o @l_rusr@ -g @l_rgrp@ -m 644 \
101 -P "$clamav_log_prolog" \
102 -E "$clamav_log_epilog; rc clamav restart" \
103 $logfiles
105 %weekly -u @l_rusr@
106 rcService clamav enable yes || exit 0
107 if [ ".$clamav_update" = .weekly ]; then
108 @l_prefix@/bin/freshclam
109 if [ $? -ge 10 ]; then exit $?; fi
110 fi