#!/sbin/tini /bin/sh # SPDX-License-Identifier: GPL-2.0-or-later # # Copyright (C) 2021 Olliver Schinagl # Copyright (C) 2021-2022 Cisco Systems, Inc. and/or its affiliates. All rights reserved. # # A beginning user should be able to docker run image bash (or sh) without # needing to learn about --entrypoint # https://github.com/docker-library/official-images#consistency set -eu if [ ! -d "/run/clamav" ]; then install -d -g "clamav" -m 775 -o "clamav" "/run/clamav" fi # Assign ownership to the database directory, just in case it is a mounted volume #chown -R clamav:clamav /var/lib/clamav # run command if it is not starting with a "-" and is an executable in PATH if [ "${#}" -gt 0 ] && \ [ "${1#-}" = "${1}" ] && \ command -v "${1}" > "/dev/null" 2>&1; then # Ensure healthcheck always passes CLAMAV_NO_CLAMD="true" exec "${@}" else if [ "${#}" -ge 1 ] && \ [ "${1#-}" != "${1}" ]; then # If an argument starts with "-" pass it to clamd specifically exec clamd "${@}" fi # else default to running clamav's servers # Help tiny-init a little # mkdir -p "/run/lock" # ln -f -s "/run/lock" "/var/lock" # Ensure we have some virus data, otherwise clamd refuses to start if [ ! -f "/var/lib/clamav/main.cvd" ]; then echo "Updating initial database" freshclam --foreground --stdout fi if [ "${CLAMAV_NO_FRESHCLAMD:-false}" != "true" ]; then echo "Starting Freshclamd" freshclam \ --checks="${FRESHCLAM_CHECKS:-1}" \ --daemon \ --foreground \ --stdout \ --user="clamav" \ & fi if [ "${CLAMAV_NO_CLAMD:-false}" != "true" ]; then echo "Starting ClamAV" if [ -S "/run/clamav/clamd.sock" ]; then unlink "/run/clamav/clamd.sock" fi if [ -S "/tmp/clamd.sock" ]; then unlink "/tmp/clamd.sock" fi clamd --foreground & while [ ! -S "/run/clamav/clamd.sock" ] && [ ! -S "/tmp/clamd.sock" ]; do if [ "${_timeout:=0}" -gt "${CLAMD_STARTUP_TIMEOUT:=1800}" ]; then echo echo "Failed to start clamd" exit 1 fi printf "\r%s" "Socket for clamd not found yet, retrying (${_timeout}/${CLAMD_STARTUP_TIMEOUT}) ..." sleep 1 _timeout="$((_timeout + 1))" done echo "socket found, clamd started." fi if [ "${CLAMAV_NO_MILTERD:-true}" != "true" ]; then echo "Starting clamav milterd" clamav-milter & fi # Wait forever (or until canceled) exec tail -f "/dev/null" fi exit 0