mirror of
https://github.com/docker-mailserver/docker-mailserver.git
synced 2024-01-19 02:48:50 +00:00
removal: configomat (submodule) (#3045)
This commit is contained in:
parent
9df71c27a0
commit
00b1d88ed7
|
@ -30,7 +30,7 @@ trim_trailing_whitespace = false
|
||||||
# --- Git Submodules ----------------------------
|
# --- Git Submodules ----------------------------
|
||||||
# -----------------------------------------------
|
# -----------------------------------------------
|
||||||
|
|
||||||
[{test/bats/**,test/test_helper/**,target/docker-configomat/**}]
|
[{test/bats/**,test/test_helper/**}]
|
||||||
indent_style = none
|
indent_style = none
|
||||||
indent_size = none
|
indent_size = none
|
||||||
end_of_line = none
|
end_of_line = none
|
||||||
|
|
3
.gitmodules
vendored
3
.gitmodules
vendored
|
@ -7,6 +7,3 @@
|
||||||
[submodule "test/test_helper/bats-assert"]
|
[submodule "test/test_helper/bats-assert"]
|
||||||
path = test/test_helper/bats-assert
|
path = test/test_helper/bats-assert
|
||||||
url = https://github.com/bats-core/bats-assert
|
url = https://github.com/bats-core/bats-assert
|
||||||
[submodule "target/docker-configomat"]
|
|
||||||
path = target/docker-configomat
|
|
||||||
url = https://github.com/alinmear/docker-configomat
|
|
||||||
|
|
|
@ -253,7 +253,6 @@ COPY \
|
||||||
target/scripts/*.sh \
|
target/scripts/*.sh \
|
||||||
target/scripts/startup/*.sh \
|
target/scripts/startup/*.sh \
|
||||||
target/scripts/wrapper/*.sh \
|
target/scripts/wrapper/*.sh \
|
||||||
target/docker-configomat/configomat.sh \
|
|
||||||
/usr/local/bin/
|
/usr/local/bin/
|
||||||
|
|
||||||
RUN chmod +x /usr/local/bin/*
|
RUN chmod +x /usr/local/bin/*
|
||||||
|
|
|
@ -19,12 +19,6 @@ Or, you can clone and retrieve the submodules in one command:
|
||||||
git clone --recurse-submodules https://github.com/docker-mailserver/docker-mailserver
|
git clone --recurse-submodules https://github.com/docker-mailserver/docker-mailserver
|
||||||
```
|
```
|
||||||
|
|
||||||
Retrieving the git submodules will fix the error:
|
|
||||||
|
|
||||||
```txt
|
|
||||||
COPY failed: file not found in build context or excluded by .dockerignore: stat target/docker-configomat/configomat.sh: file does not exist
|
|
||||||
```
|
|
||||||
|
|
||||||
### About Docker
|
### About Docker
|
||||||
|
|
||||||
#### Version
|
#### Version
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
Subproject commit 415550485438d7e6ca6136016cca4bbab99ccf6f
|
|
|
@ -63,3 +63,54 @@ function _reload_postfix
|
||||||
_adjust_mtime_for_postfix_maincf
|
_adjust_mtime_for_postfix_maincf
|
||||||
postfix reload
|
postfix reload
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Replaces values in configuration files given a set of specific environment
|
||||||
|
# variables. The environment variables follow a naming pattern, whereby every
|
||||||
|
# variable that is taken into account has a given prefix. The new value in the
|
||||||
|
# configuration will be the one the environment variable had at the time of
|
||||||
|
# calling this function.
|
||||||
|
#
|
||||||
|
# @option --shutdown-on-error = shutdown in case an error is detected
|
||||||
|
# @param ${1} = prefix for environment variables
|
||||||
|
# @param ${2} = file in which substitutions should take place
|
||||||
|
#
|
||||||
|
# ## Example
|
||||||
|
#
|
||||||
|
# If you want to set a new value for `readme_directory` in Postfix's `main.cf`,
|
||||||
|
# you can set the environment variable `POSTFIX_README_DIRECTORY='/new/dir/'`
|
||||||
|
# (`POSTFIX_` is an arbitrary prefix, you can choose the one you like),
|
||||||
|
# and then call this function:
|
||||||
|
# `_replace_by_env_in_file 'POSTFIX_' 'PATH TO POSTFIX's main.cf>`
|
||||||
|
#
|
||||||
|
# ## Panics
|
||||||
|
#
|
||||||
|
# This function will panic, i.e. shut down the whole container, if:
|
||||||
|
#
|
||||||
|
# 1. No first and second argument is supplied
|
||||||
|
# 2. The second argument is a path to a file that does not exist
|
||||||
|
function _replace_by_env_in_file
|
||||||
|
{
|
||||||
|
if [[ -z ${1+set} ]]
|
||||||
|
then
|
||||||
|
dms_panic__invalid_value 'first argument unset' 'utils.sh:_replace_by_env_in_file'
|
||||||
|
elif [[ -z ${2+set} ]]
|
||||||
|
then
|
||||||
|
dms_panic__invalid_value 'second argument unset' 'utils.sh:_replace_by_env_in_file'
|
||||||
|
elif [[ ! -f ${2} ]]
|
||||||
|
then
|
||||||
|
dms_panic__invalid_value "file '${2}' does not exist" 'utils.sh:_replace_by_env_in_file'
|
||||||
|
fi
|
||||||
|
|
||||||
|
local ENV_PREFIX=${1} CONFIG_FILE=${2}
|
||||||
|
local ESCAPED_VALUE ESCAPED_KEY
|
||||||
|
|
||||||
|
while IFS='=' read -r KEY VALUE
|
||||||
|
do
|
||||||
|
KEY=${KEY#"${ENV_PREFIX}"} # strip prefix
|
||||||
|
ESCAPED_KEY=$(sed -E 's#([\=\&\|\$\.\*\/\[\\^]|\])#\\\1#g' <<< "${KEY,,}")
|
||||||
|
ESCAPED_VALUE=$(sed -E 's#([\=\&\|\$\.\*\/\[\\^]|\])#\\\1#g' <<< "${VALUE}")
|
||||||
|
[[ -n ${ESCAPED_VALUE} ]] && ESCAPED_VALUE=" ${ESCAPED_VALUE}"
|
||||||
|
_log 'trace' "Setting value of '${KEY}' in '${CONFIG_FILE}' to '${VALUE}'"
|
||||||
|
sed -i -E "s#^${ESCAPED_KEY}[[:space:]]*=.*#${ESCAPED_KEY} =${ESCAPED_VALUE}#g" "${CONFIG_FILE}"
|
||||||
|
done < <(env | grep "^${ENV_PREFIX}")
|
||||||
|
}
|
||||||
|
|
|
@ -380,7 +380,7 @@ function _setup_ldap
|
||||||
[[ ${FILE} =~ ldap-aliases ]] && export LDAP_QUERY_FILTER="${LDAP_QUERY_FILTER_ALIAS}"
|
[[ ${FILE} =~ ldap-aliases ]] && export LDAP_QUERY_FILTER="${LDAP_QUERY_FILTER_ALIAS}"
|
||||||
[[ ${FILE} =~ ldap-domains ]] && export LDAP_QUERY_FILTER="${LDAP_QUERY_FILTER_DOMAIN}"
|
[[ ${FILE} =~ ldap-domains ]] && export LDAP_QUERY_FILTER="${LDAP_QUERY_FILTER_DOMAIN}"
|
||||||
[[ ${FILE} =~ ldap-senders ]] && export LDAP_QUERY_FILTER="${LDAP_QUERY_FILTER_SENDERS}"
|
[[ ${FILE} =~ ldap-senders ]] && export LDAP_QUERY_FILTER="${LDAP_QUERY_FILTER_SENDERS}"
|
||||||
_log debug "$(configomat.sh "LDAP_" "${FILE}" 2>&1)"
|
[[ -f ${FILE} ]] && _replace_by_env_in_file 'LDAP_' "${FILE}"
|
||||||
done
|
done
|
||||||
|
|
||||||
_log 'trace' "Configuring Dovecot LDAP"
|
_log 'trace' "Configuring Dovecot LDAP"
|
||||||
|
@ -407,7 +407,7 @@ function _setup_ldap
|
||||||
export "${VAR}=${DOVECOT_LDAP_MAPPING[${VAR}]}"
|
export "${VAR}=${DOVECOT_LDAP_MAPPING[${VAR}]}"
|
||||||
done
|
done
|
||||||
|
|
||||||
_log debug "$(configomat.sh "DOVECOT_" "/etc/dovecot/dovecot-ldap.conf.ext" 2>&1)"
|
_replace_by_env_in_file 'DOVECOT_' '/etc/dovecot/dovecot-ldap.conf.ext'
|
||||||
|
|
||||||
_log 'trace' 'Enabling Dovecot LDAP authentication'
|
_log 'trace' 'Enabling Dovecot LDAP authentication'
|
||||||
|
|
||||||
|
|
6
test/config/override-configs/replace_by_env_in_file.conf
Normal file
6
test/config/override-configs/replace_by_env_in_file.conf
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
key_1 = value
|
||||||
|
key_2 =
|
||||||
|
key_3 =value
|
||||||
|
key_4= value
|
||||||
|
key_5=value
|
||||||
|
key_6 = value
|
|
@ -51,8 +51,7 @@ function _shellcheck
|
||||||
# File paths for shellcheck:
|
# File paths for shellcheck:
|
||||||
F_SH=$(find . -type f -iname '*.sh' \
|
F_SH=$(find . -type f -iname '*.sh' \
|
||||||
-not -path './test/bats/*' \
|
-not -path './test/bats/*' \
|
||||||
-not -path './test/test_helper/*' \
|
-not -path './test/test_helper/*'
|
||||||
-not -path './target/docker-configomat/*'
|
|
||||||
)
|
)
|
||||||
# shellcheck disable=SC2248
|
# shellcheck disable=SC2248
|
||||||
F_BIN=$(find 'target/bin' -type f -not -name '*.py')
|
F_BIN=$(find 'target/bin' -type f -not -name '*.py')
|
||||||
|
|
52
test/tests/parallel/set3/scripts/replace_by_env_in_file.bats
Normal file
52
test/tests/parallel/set3/scripts/replace_by_env_in_file.bats
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
load "${REPOSITORY_ROOT}/test/helper/common"
|
||||||
|
source "${REPOSITORY_ROOT}/target/scripts/helpers/log.sh"
|
||||||
|
source "${REPOSITORY_ROOT}/target/scripts/helpers/utils.sh"
|
||||||
|
|
||||||
|
BATS_TEST_NAME_PREFIX='[Helper function] (_replace_by_env_in_file) '
|
||||||
|
|
||||||
|
function setup_file() {
|
||||||
|
export TMP_CONFIG_FILE=$(mktemp)
|
||||||
|
cp "${REPOSITORY_ROOT}/test/config/override-configs/replace_by_env_in_file.conf" "${TMP_CONFIG_FILE}"
|
||||||
|
}
|
||||||
|
|
||||||
|
function teardown_file() { rm "${TMP_CONFIG_FILE}" ; }
|
||||||
|
|
||||||
|
@test "substitute key-value pair (01) (normal substitutions)" {
|
||||||
|
export TEST_KEY_1='new_value_1'
|
||||||
|
_do_work "key_1 = ${TEST_KEY_1}"
|
||||||
|
export TEST_KEY_1='(&(objectClass=PostfixBookMailAccount)(|(uniqueIdentifier=%n)(mail=%u)))'
|
||||||
|
_do_work "key_1 = ${TEST_KEY_1}"
|
||||||
|
export TEST_KEY_1="*+=/_-%&"
|
||||||
|
_do_work "key_1 = ${TEST_KEY_1}"
|
||||||
|
export TEST_KEY_1='(&(objectClass=mailAccount)(uid=%n))'
|
||||||
|
_do_work "key_1 = ${TEST_KEY_1}"
|
||||||
|
export TEST_KEY_1='=home=/var/mail/%{ldap:mail}, =mail=maildir:/var/mail/%{ldap:mail}/Maildir'
|
||||||
|
_do_work "key_1 = ${TEST_KEY_1}"
|
||||||
|
export TEST_KEY_1='(&(objectClass=mailAccount)(uid=%n))'
|
||||||
|
_do_work "key_1 = ${TEST_KEY_1}"
|
||||||
|
export TEST_KEY_1='uid=user,userPassword=password'
|
||||||
|
_do_work "key_1 = ${TEST_KEY_1}"
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "substitute key-value pair (08) (spaces / no values)" {
|
||||||
|
export TEST_KEY_2='new_value_2'
|
||||||
|
_do_work "key_2 = ${TEST_KEY_2}"
|
||||||
|
export TEST_KEY_3='new_value_3'
|
||||||
|
_do_work "key_3 = ${TEST_KEY_3}"
|
||||||
|
export TEST_KEY_4="new_value_4"
|
||||||
|
_do_work "key_4 = ${TEST_KEY_4}"
|
||||||
|
export TEST_KEY_5="new_value_5"
|
||||||
|
_do_work "key_5 = ${TEST_KEY_5}"
|
||||||
|
export TEST_KEY_6=
|
||||||
|
_do_work "key_6 ="
|
||||||
|
run grep -q -F "key_6 = " "${TMP_CONFIG_FILE}"
|
||||||
|
assert_failure
|
||||||
|
}
|
||||||
|
|
||||||
|
function _do_work() {
|
||||||
|
local FILTER_STRING=${1:?No string to filter by was provided}
|
||||||
|
run _replace_by_env_in_file 'TEST_' "${TMP_CONFIG_FILE}"
|
||||||
|
assert_success
|
||||||
|
run grep -q -F "${FILTER_STRING}" "${TMP_CONFIG_FILE}"
|
||||||
|
assert_success
|
||||||
|
}
|
|
@ -23,7 +23,7 @@ function setup_file() {
|
||||||
--tty \
|
--tty \
|
||||||
ldap # Image name
|
ldap # Image name
|
||||||
|
|
||||||
# _setup_ldap uses configomat with .ext files and ENV vars like DOVECOT_TLS with a prefix (eg DOVECOT_ or LDAP_)
|
# _setup_ldap uses _replace_by_env_in_file with ENV vars like DOVECOT_TLS with a prefix (eg. DOVECOT_ or LDAP_)
|
||||||
local PRIVATE_CONFIG
|
local PRIVATE_CONFIG
|
||||||
PRIVATE_CONFIG=$(duplicate_config_for_container .)
|
PRIVATE_CONFIG=$(duplicate_config_for_container .)
|
||||||
docker run -d --name mail_with_ldap \
|
docker run -d --name mail_with_ldap \
|
||||||
|
|
Loading…
Reference in a new issue