aboutsummaryrefslogtreecommitdiffstats
path: root/extra/clamav/clamd.initd
diff options
context:
space:
mode:
Diffstat (limited to 'extra/clamav/clamd.initd')
-rw-r--r--extra/clamav/clamd.initd38
1 files changed, 29 insertions, 9 deletions
diff --git a/extra/clamav/clamd.initd b/extra/clamav/clamd.initd
index 8aad87fb6f..d3b9155572 100644
--- a/extra/clamav/clamd.initd
+++ b/extra/clamav/clamd.initd
@@ -1,25 +1,32 @@
#!/sbin/runscript
-# Sample init.d file for alpine linux.
-
+opts="logfix reload"
NAME=clamd
-DAEMON=/usr/sbin/$NAME
+CONF=/etc/clamav/clamd.conf
depend() {
need net
+ provide antivirus
}
start() {
+ local clamd_socket=$(awk '$1 == "LocalSocket" { print $2 }' $CONF)
+
+ logfix
+
+ if [ -S "${clamd_socket:=/tmp/clamd}" ]; then
+ rm -f ${clamd_socket}
+ fi
ebegin "Starting ${NAME}"
- start-stop-daemon --start --quiet --background \
- --exec ${DAEMON} -- ${OPTS}
- eend $?
+ start-stop-daemon --start --quiet \
+ --nicelevel ${CLAMD_NICELEVEL:-0} \
+ --exec /usr/sbin/clamd
+ eend $? "Failed to start ${NAME}"
}
stop() {
ebegin "Stopping ${NAME}"
- start-stop-daemon --stop --quiet \
- --exec ${DAEMON} --name $NAME \
+ start-stop-daemon --stop --quiet --exec /usr/sbin/clamd
eend $?
}
@@ -30,7 +37,20 @@ reload() {
return 1
fi
start-stop-daemon --stop --oknodo --signal HUP \
- --exec ${DAEMON} --name $NAME
+ --exec /usr/sbin/clamd
eend $?
}
+logfix() {
+ # fix clamd log permissions
+ # (might be clobbered by logrotate or something)
+ local logfile=`awk '$1 == "LogFile" { print $2 }' $CONF`
+ local clamav_user=`awk '$1 == "User" { print $2 }' $CONF`
+ if [ -n "${logfile}" ] && [ -n "${clamav_user}" ]; then
+ if [ ! -f "${logfile}" ]; then
+ touch ${logfile}
+ fi
+ chown ${clamav_user} ${logfile}
+ chmod 640 ${logfile}
+ fi
+}