#!/sbin/openrc-run

supervisor=supervise-daemon
name="ClamAV Database Mirror Server"
description="cvdupdate HTTP server for ClamAV database mirroring"

: ${CVDUPDATE_USER:=cvdupdate}
: ${CVDUPDATE_GROUP:=cvdupdate}
: ${CVDUPDATE_CONFIG:=/etc/cvdupdate/config.json}
: ${CVDUPDATE_DBDIR:=/var/lib/cvdupdate/database}
: ${CVDUPDATE_LOGDIR:=/var/log/cvdupdate}
: ${CVDUPDATE_PORT:=8000}

command="/usr/bin/cvd"
command_user="${CVDUPDATE_USER}:${CVDUPDATE_GROUP}"

supervise_daemon_args="--stdout ${CVDUPDATE_LOGDIR}/serve.log --stderr ${CVDUPDATE_LOGDIR}/serve.log"

depend() {
	need net
	use dns logger
}

start_pre() {
	checkpath --directory --owner ${CVDUPDATE_USER}:${CVDUPDATE_GROUP} \
		--mode 0750 ${CVDUPDATE_DBDIR}
	checkpath --directory --owner ${CVDUPDATE_USER}:${CVDUPDATE_GROUP} \
		--mode 0750 ${CVDUPDATE_LOGDIR}

	# Download initial databases if not present
	if [ ! -f "${CVDUPDATE_DBDIR}/main.cvd" ]; then
		ebegin "Downloading initial ClamAV databases (this may take a moment)"
		su -s /bin/sh ${CVDUPDATE_USER} -c \
			"cvd update --config ${CVDUPDATE_CONFIG}" >/dev/null 2>&1
		eend $? "Warning: failed to download databases, will retry later"
	fi

	# Build command_args dynamically
	command_args="serve --config ${CVDUPDATE_CONFIG}"
	if [ -n "${CVDUPDATE_UPDATE_INTERVAL}" ] && [ "${CVDUPDATE_UPDATE_INTERVAL}" != "0" ]; then
		command_args="${command_args} --update-interval-seconds ${CVDUPDATE_UPDATE_INTERVAL}"
	fi
	command_args="${command_args} ${CVDUPDATE_PORT}"
}
