Spaces:
Runtime error
Runtime error
| # SPDX-License-Identifier: GPL-2.0-or-later | |
| # | |
| # Copyright (C) 2021 Olliver Schinagl <oliver@schinagl.nl> | |
| # 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 |