#!/bin/bash . ${SCRIPTS:-/}start-utils : ${ENV_VARIABLE_PREFIX:=CFG_} if isTrue "${REPLACE_ENV_VARIABLES}"; then log "Replacing env variables in configs that match the prefix $ENV_VARIABLE_PREFIX..." # File excludes fileExcludes= for f in ${REPLACE_ENV_VARIABLES_EXCLUDES}; do fileExcludes="${fileExcludes} -not -name $f" done # Directory excludes (recursive) dirExcludes=$(join_by " -o -path " ${REPLACE_ENV_VARIABLES_EXCLUDE_PATHS}) if [[ $dirExcludes ]]; then dirExcludes=" -type d ( -path ${dirExcludes} ) -prune -o" fi isDebugging && echo "Using find file exclusions: $fileExcludes" isDebugging && echo "Using find directory exclusions: $dirExcludes" while IFS='=' read -r name value ; do # check if name of env variable matches the prefix # sanity check environment variables to avoid code injections if [[ "$name" = $ENV_VARIABLE_PREFIX* ]] \ && [[ $value =~ ^[0-9a-zA-Z_:/=?.+\-]*$ ]] \ && [[ $name =~ ^[0-9a-zA-Z_\-]*$ ]]; then # Read content from file environment if [[ $name = *"_FILE" ]] && [[ -f $value ]]; then name="${name/_FILE/}" value=$(<$value) fi log "Replacing $name with $value ..." find /data/ \ $dirExcludes \ -type f \ \( -name "*.yml" -or -name "*.yaml" -or -name "*.txt" -or -name "*.cfg" \ -or -name "*.conf" -or -name "*.properties" \) \ $fileExcludes \ -exec sed -i 's#${'"$name"'}#'"$value"'#g' {} \; fi done < <(env) fi exec ${SCRIPTS:-/}start-minecraftFinalSetup $@