Fix harmless startup errors (#2357)

This commit is contained in:
Casper 2022-01-08 00:25:09 +01:00 committed by GitHub
parent 0c31f71358
commit 29c2d975ec
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 34 additions and 8 deletions

View file

@ -101,7 +101,7 @@ do
if [[ -f ${DATABASE} ]]
then
if ! sedfile -i "/^${EMAIL}|/d" "${DATABASE}"
if ! sedfile --strict -i "/^${EMAIL}|/d" "${DATABASE}"
then
echo "${UNESCAPED_EMAIL} couldn't be deleted in ${DATABASE}." >&2
ERROR=true
@ -126,7 +126,7 @@ do
# remove quota directives
if [[ -f ${QUOTA_DATABASE} ]]
then
if ! sedfile -i -e "/^${EMAIL}:.*$/d" "${QUOTA_DATABASE}"
if ! sedfile --strict -i -e "/^${EMAIL}:.*$/d" "${QUOTA_DATABASE}"
then
echo "Quota for ${UNESCAPED_EMAIL} couldn't be deleted in ${QUOTA_DATABASE}." >&2
fi

View file

@ -1,18 +1,34 @@
#!/bin/bash
# wrapper for 'sed -i': fail if file was not modified by sed
# Wrapper for 'sed -i': fail if file was not modified by sed and container was not restarted.
# Error output is surpressed, when container is restarted to avoid harmless error messages.
# Use "--strict" as first parameter, to fail regardless of the container state (fresh or restarted).
# When to use sedfile?
# Is a file change optional? --> use regular 'sed -i'
# Is a file change expected? --> use 'sedfile --strict -i'
# Is a file change only on the first container run expected? --> use 'sedfile -i'
set -ueo pipefail
HASHTOOL="sha1sum"
SKIP_ERROR=0
if [[ $# -lt 1 ]]
if [[ $# -lt 3 ]]
then
echo "Error: No file given."
echo "Error: At least, three parameters must be given."
echo "Syntax: sedfile -i <replace/delete operation> <file>"
echo
exit 1
fi >&2
[[ -f /CONTAINER_START ]] && SKIP_ERROR=1 # Hide error, if container was restarted.
if [[ "${1}" == "--strict" ]] # Show error every time.
then
SKIP_ERROR=0
shift
fi
# get last argument
FILE=${*: -1}
@ -21,9 +37,10 @@ sed "$@"
NEW=$(${HASHTOOL} "${FILE}")
# fail if file was not modified
if [[ ${OLD} == "${NEW}" ]]
if [[ ${OLD} == "${NEW}" ]] && [[ ${SKIP_ERROR} -eq 0 ]]
then
echo "Error: sed $*"
exit 1
fi >&2
exit 0

View file

@ -266,6 +266,9 @@ fix
start_misc
start_daemons
# marker to check, if container was restarted
date > /CONTAINER_START
_notify 'tasklog' "${HOSTNAME} is up and running"
touch /var/log/mail/mail.log

View file

@ -40,11 +40,17 @@ function _fix_var_amavis_permissions
function _fix_cleanup_clamav
{
_notify 'task' 'Cleaning up disabled ClamAV'
rm /etc/logrotate.d/clamav-* /etc/cron.d/clamav-freshclam || _notify 'err' 'Failed to remove ClamAV configuration'
rm /etc/logrotate.d/clamav-* /etc/cron.d/clamav-freshclam 2>/dev/null || {
# show error only on first container start
[[ ! -f /CONTAINER_START ]] && _notify 'err' 'Failed to remove ClamAV configuration'
}
}
function _fix_cleanup_spamassassin
{
_notify 'task' 'Cleaning up disabled SpamAssassin'
rm /etc/cron.daily/spamassassin || _notify 'err' 'Failed to remove SpamAssassin configuration'
rm /etc/cron.daily/spamassassin 2>/dev/null || {
# show error only on first container start
[[ ! -f /CONTAINER_START ]] && _notify 'err' 'Failed to remove SpamAssassin configuration'
}
}