From c314c9c4711c7edfd3014396c40b8b7c49f54bbc Mon Sep 17 00:00:00 2001 From: Brennan Kinney <5098581+polarathene@users.noreply.github.com> Date: Thu, 9 Jun 2022 19:48:07 +1200 Subject: [PATCH] chore(`check-for-changes.sh`): Drop redundant guards (#2623) * chore: Remove requirement for `postfix-accounts.cf` This is an old requirement from when the change detector service was first introduced. It's no longer relevant. * chore: Do not needlessly create `postfix-aliases.cf` The config was created regardless to workaround early change detection support. No longer necessary to require the file to exist. * chore: Drop guards requiring `/tmp/docker-mailserver` to exist Legacy guards when this was the only location change detection location supported. There does not appear to be any need for changing into this directory at the start of `check-for-changes.sh` as we use absolute filepaths (originally monitored files were checked with relative paths to this config dir). * chore: Revise inline docs * chore: Add change detection monitoring for extra configs These are also handled at run-time in the current change detection support, so it makes sense to allows these config updates to also trigger change events. --- target/scripts/check-for-changes.sh | 11 ------ target/scripts/helpers/aliases.sh | 9 +---- target/scripts/helpers/change-detection.sh | 43 +++++++++++----------- 3 files changed, 23 insertions(+), 40 deletions(-) diff --git a/target/scripts/check-for-changes.sh b/target/scripts/check-for-changes.sh index c526915e..a938ab08 100755 --- a/target/scripts/check-for-changes.sh +++ b/target/scripts/check-for-changes.sh @@ -22,17 +22,6 @@ _log_with_date 'debug' 'Starting changedetector' # to be properly set. _obtain_hostname_and_domainname -if ! cd /tmp/docker-mailserver &>/dev/null -then - _exit_with_error "Could not change into '/tmp/docker-mailserver/' directory" 0 -fi - -# check postfix-accounts.cf exist else break -if [[ ! -f postfix-accounts.cf ]] -then - _exit_with_error "'/tmp/docker-mailserver/postfix-accounts.cf' is missing" 0 -fi - # verify checksum file exists; must be prepared by start-mailserver.sh if [[ ! -f ${CHKSUM_FILE} ]] then diff --git a/target/scripts/helpers/aliases.sh b/target/scripts/helpers/aliases.sh index dc0c2359..330fa45b 100644 --- a/target/scripts/helpers/aliases.sh +++ b/target/scripts/helpers/aliases.sh @@ -61,13 +61,8 @@ function _handle_postfix_aliases_config echo "root: ${POSTMASTER_ADDRESS}" >/etc/aliases - if [[ -f /tmp/docker-mailserver/postfix-aliases.cf ]] - then - cat /tmp/docker-mailserver/postfix-aliases.cf >>/etc/aliases - else - _log 'trace' "'/tmp/docker-mailserver/postfix-aliases.cf' is not provided, it will be auto created." - : >/tmp/docker-mailserver/postfix-aliases.cf - fi + local DATABASE_ALIASES='/tmp/docker-mailserver/postfix-aliases.cf' + [[ -f ${DATABASE_ALIASES} ]] && cat "${DATABASE_ALIASES}" >>/etc/aliases postalias /etc/aliases } diff --git a/target/scripts/helpers/change-detection.sh b/target/scripts/helpers/change-detection.sh index 9c433e4d..9df22364 100644 --- a/target/scripts/helpers/change-detection.sh +++ b/target/scripts/helpers/change-detection.sh @@ -4,7 +4,7 @@ # - check-for-changes.sh # - test/test_helper/common.bash:wait_for_changes_to_be_detected_in_container() # - test/test_helper.bats -# - start-mailserver.sh --> setup-stack.sh (to initialize the CHKSUM_FILE state) +# - start-mailserver.sh --> setup-stack.sh:_setup (to initialize the CHKSUM_FILE state) # Global checksum file used to track when monitored files have changed in content: # shellcheck disable=SC2034 @@ -16,38 +16,36 @@ function _prepare_for_change_detection { _log 'debug' 'Setting up configuration checksum file' - if [[ -d /tmp/docker-mailserver ]] - then - _log 'trace' "Creating '${CHKSUM_FILE}'" - _monitored_files_checksums >"${CHKSUM_FILE}" - else - # We could just skip the file, but perhaps config can be added later? - # If so it must be processed by the check for changes script - _log 'trace' "Creating empty '${CHKSUM_FILE}' (no config)" - touch "${CHKSUM_FILE}" - fi + _log 'trace' "Creating '${CHKSUM_FILE}'" + _monitored_files_checksums >"${CHKSUM_FILE}" } # Returns a list of changed files, each line is a value pair of: # function _monitored_files_checksums { - local DMS_DIR=/tmp/docker-mailserver - [[ -d ${DMS_DIR} ]] || return 1 - # If a wildcard path pattern (or an empty ENV) would yield an invalid path # or no results, `shopt -s nullglob` prevents it from being added. shopt -s nullglob declare -a STAGING_FILES CHANGED_FILES - STAGING_FILES=( - "${DMS_DIR}/postfix-accounts.cf" - "${DMS_DIR}/postfix-virtual.cf" - "${DMS_DIR}/postfix-aliases.cf" - "${DMS_DIR}/dovecot-quotas.cf" - "${DMS_DIR}/dovecot-masters.cf" - ) + # Supported user provided configs: + local DMS_DIR=/tmp/docker-mailserver + if [[ -d ${DMS_DIR} ]] + then + STAGING_FILES+=( + "${DMS_DIR}/postfix-accounts.cf" + "${DMS_DIR}/postfix-virtual.cf" + "${DMS_DIR}/postfix-regexp.cf" + "${DMS_DIR}/postfix-aliases.cf" + "${DMS_DIR}/postfix-relaymap.cf" + "${DMS_DIR}/postfix-sasl-password.cf" + "${DMS_DIR}/dovecot-quotas.cf" + "${DMS_DIR}/dovecot-masters.cf" + ) + fi + # SSL certs: if [[ ${SSL_TYPE:-} == 'manual' ]] then # When using "manual" as the SSL type, @@ -69,10 +67,11 @@ function _monitored_files_checksums ) fi + # If the file actually exists, add to CHANGED_FILES + # and generate a content hash entry: for FILE in "${STAGING_FILES[@]}" do [[ -f "${FILE}" ]] && CHANGED_FILES+=("${FILE}") done - sha512sum -- "${CHANGED_FILES[@]}" }