From 20cc3cdc2d5c4ff8b901e839e902e87e3c6a33b0 Mon Sep 17 00:00:00 2001 From: Christoph Date: Fri, 29 Mar 2024 15:19:28 +0100 Subject: [PATCH] add_dkim_key.sh: Don't split txt value if its length is lower than '255'. --- add_dkim_key.sh | 94 +++++++++++++++++++++++++++++++------------------ 1 file changed, 60 insertions(+), 34 deletions(-) diff --git a/add_dkim_key.sh b/add_dkim_key.sh index 8179930..7bd8591 100755 --- a/add_dkim_key.sh +++ b/add_dkim_key.sh @@ -303,37 +303,6 @@ if $terminal ; then done - blank_line - blank_line - echononl " Create (splitted 'p' value of DNS record.." - - length="${#DKIM_KEY}" - declare -i pos_begin=0 - declare -i pos_end=64 - - _failed=false - p_val="" - while [[ $pos_end -lt $length ]] ; do - p_val+="\"$(echo "${DKIM_KEY:$pos_begin:64}")\" " - [[ $? -gt 0 ]] && _failed=true - pos_begin=$pos_end - pos_end=$(expr $pos_end + 64) - [[ $? -gt 0 ]] && _failed=true - done - p_val+="\"$(echo "${DKIM_KEY:$pos_begin}")\"" - [[ $? -gt 0 ]] && _failed=true - if $_failed ; then - echo_failed - - fatal "Cannot create p vaalue of DNS Record" - else - echo_ok - fi - - - - - echo "" echo -e "\033[32m--\033[m" echo "" @@ -498,9 +467,52 @@ if $terminal ; then if [[ "X$TTL" = "X" ]] ; then TTL="${DEFAULT_TTL}" fi + + + blank_line + blank_line + + declare -i length_dkim_key=${#DKIM_KEY} + declare -i pos_begin=0 + declare -i pos_end=64 + + _intro="v=${DKIM_TYPE}; k=${KEY_TYPE}; s=email; p=" + declare -i length_intro=${#_intro} + + declare -i total_length=$((length_intro + length_dkim_key)) + + + echononl "Create (splitted 'p' value of DNS record.." + if [[ ${total_length} -gt 255 ]] ; then + _failed=false + p_val="" + while [[ $pos_end -lt $length ]] ; do + p_val+="\"$(echo "${DKIM_KEY:$pos_begin:64}")\" " + [[ $? -gt 0 ]] && _failed=true + pos_begin=$pos_end + pos_end=$(expr $pos_end + 64) + [[ $? -gt 0 ]] && _failed=true + done + p_val+="\"$(echo "${DKIM_KEY:$pos_begin}")\"" + [[ $? -gt 0 ]] && _failed=true + if $_failed ; then + echo_failed + + fatal "Cannot create p vaalue of DNS Record" + else + echo_ok + fi + txt_val="\"v=${DKIM_TYPE}; k=${KEY_TYPE}; s=email; p=\" ${p_val}" + + else + echo_skipped + p_val="${DKIM_KEY}" + txt_val="\"${_intro}${p_val}\"" + fi fi + if [[ -z "$(trim "${DKIM_DOMAIN}")" ]]; then fatal "Variable \033[1mDKIM_DOMAIN\033[m not set!" fi @@ -545,10 +557,24 @@ if $terminal ; then echo "" echo " DKIM Type........................: $DKIM_TYPE" echo " Key Type.........................: $KEY_TYPE" + echo " DKIM Key.........................: $DKIM_KEY" echo -e " \033[1m----------\033[m" echo "" - echo -e " DNS Record to add:\n\n\033[33m${DKIM_SELECTOR}.${DKIM_UPDATE_ZONE}. ${TTL} IN TXT \"v=${DKIM_TYPE}; k=${KEY_TYPE}; s=email p=\" ${p_val}\033[m" + echo -e " DNS Record to add:\n\n\033[33m${DKIM_SELECTOR}.${DKIM_UPDATE_ZONE}. ${TTL} IN TXT ${txt_val}\033[m" echo "" + echo -e "\n\n The following 'nsupdate'command will be used:" + cat <