Add method overwrite_config()
This method takes 2 arguments: 1.) Environment Variable Prefix 2.) String of files separated by whitespace e.g. export LDAP_SEARCH_BASE=dc=domain,dc=loc export LDAP_BIND_PW=test overwrite_config "LDAP_" "/etc/postfix/ldap-users.cf /etc/postfix/ldap-groups.cf" Logic: + all env vars will be search for vars with the prefix LDAP_ + afterwards they will be dissembled in key value pairs LDAP_BIND_PW=test --> bind_pw test + the key and value will be substituted within the provided files via sed
This commit is contained in:
parent
7e4e3662b3
commit
9ff99701df
|
@ -315,6 +315,49 @@ function display_startup_daemon() {
|
|||
return $res
|
||||
}
|
||||
|
||||
function overwrite_config() {
|
||||
echo -e "Starting do do overwrites"
|
||||
declare -A config_overwrites
|
||||
|
||||
_env_variable_prefix=$1
|
||||
[ -z ${_env_variable_prefix} ] && return 1
|
||||
|
||||
|
||||
IFS=" " read -r -a _config_files <<< $2
|
||||
|
||||
# dispatch env variables
|
||||
for env_variable in $(printenv | grep $_env_variable_prefix);do
|
||||
# get key
|
||||
# IFS not working because values like ldap_query_filter or search base consists of several '='
|
||||
# IFS="=" read -r -a __values <<< $env_variable
|
||||
# key="${__values[0]}"
|
||||
# value="${__values[1]}"
|
||||
key=$(echo $env_variable | cut -d "=" -f1)
|
||||
key=${key#"${_env_variable_prefix}"}
|
||||
# make key lowercase
|
||||
key=${key,,}
|
||||
# get value
|
||||
value=$(echo $env_variable | cut -d "=" -f2-)
|
||||
|
||||
config_overwrites[$key]=$value
|
||||
done
|
||||
|
||||
for f in "${_config_files[@]}"
|
||||
do
|
||||
if [ ! -f "${f}" ];then
|
||||
echo "Can not find ${f}. Skipping overwrite"
|
||||
else
|
||||
for key in ${!config_overwrites[@]}
|
||||
do
|
||||
[ -z $key ] && echo -e "\t no key provided" && return 1
|
||||
|
||||
sed -i -e "s|^${key}[[:space:]]\+.*|${key} = "${config_overwrites[$key]}'|g' \
|
||||
${f}
|
||||
done
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
# ! CARE --> DON'T CHANGE, except you know exactly what you are doing
|
||||
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
|
|
Loading…
Reference in New Issue