diff options
Diffstat (limited to 'extra/clamav/clamd.initd')
-rw-r--r-- | extra/clamav/clamd.initd | 38 |
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 +} |