add_dkim_key.sh: Don't split txt value if its length is lower than '255'.

This commit is contained in:
Christoph 2024-03-29 15:19:28 +01:00
parent ed3c51946a
commit 20cc3cdc2d

View File

@ -303,37 +303,6 @@ if $terminal ; then
done 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 ""
echo -e "\033[32m--\033[m" echo -e "\033[32m--\033[m"
echo "" echo ""
@ -498,9 +467,52 @@ if $terminal ; then
if [[ "X$TTL" = "X" ]] ; then if [[ "X$TTL" = "X" ]] ; then
TTL="${DEFAULT_TTL}" TTL="${DEFAULT_TTL}"
fi 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 fi
if [[ -z "$(trim "${DKIM_DOMAIN}")" ]]; then if [[ -z "$(trim "${DKIM_DOMAIN}")" ]]; then
fatal "Variable \033[1mDKIM_DOMAIN\033[m not set!" fatal "Variable \033[1mDKIM_DOMAIN\033[m not set!"
fi fi
@ -545,10 +557,24 @@ if $terminal ; then
echo "" echo ""
echo " DKIM Type........................: $DKIM_TYPE" echo " DKIM Type........................: $DKIM_TYPE"
echo " Key Type.........................: $KEY_TYPE" echo " Key Type.........................: $KEY_TYPE"
echo " DKIM Key.........................: $DKIM_KEY"
echo -e " \033[1m----------\033[m" echo -e " \033[1m----------\033[m"
echo "" 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 ""
echo -e "\n\n The following 'nsupdate'command will be used:"
cat <<END
cat <<EOF | nsupdate -v -L3
server $DNS_DKIM_ZONE_MASTER_SERVER
zone $DKIM_UPDATE_ZONE
key ${KEY_ALGO}:$KEY_NAME $KEY_SECRET
update delete ${DKIM_SELECTOR}.${DKIM_UPDATE_ZONE}.
update add ${DKIM_SELECTOR}.${DKIM_UPDATE_ZONE}. $TTL IN TXT ${txt_val}
send
EOF
END
echo "" echo ""
echo -n " Type upper case 'YES' to start: " echo -n " Type upper case 'YES' to start: "
@ -572,7 +598,7 @@ server $DNS_DKIM_ZONE_MASTER_SERVER
zone $DKIM_UPDATE_ZONE zone $DKIM_UPDATE_ZONE
key ${KEY_ALGO}:$KEY_NAME $KEY_SECRET key ${KEY_ALGO}:$KEY_NAME $KEY_SECRET
update delete ${DKIM_SELECTOR}.${DKIM_UPDATE_ZONE}. update delete ${DKIM_SELECTOR}.${DKIM_UPDATE_ZONE}.
update add ${DKIM_SELECTOR}.${DKIM_UPDATE_ZONE}. ${TTL} IN TXT "v=${DKIM_TYPE}; k=${KEY_TYPE}; s=email; p=" ${p_val} update add ${DKIM_SELECTOR}.${DKIM_UPDATE_ZONE}. ${TTL} IN TXT ${txt_val}
send send
EOF EOF
if [[ $? -eq 0 ]] ; then if [[ $? -eq 0 ]] ; then
@ -589,7 +615,7 @@ server $DNS_DKIM_ZONE_MASTER_SERVER
zone $DKIM_UPDATE_ZONE zone $DKIM_UPDATE_ZONE
key ${KEY_ALGO}:$KEY_NAME $KEY_SECRET key ${KEY_ALGO}:$KEY_NAME $KEY_SECRET
update delete ${DKIM_SELECTOR}.${DKIM_UPDATE_ZONE}. update delete ${DKIM_SELECTOR}.${DKIM_UPDATE_ZONE}.
update add ${DKIM_SELECTOR}.${DKIM_UPDATE_ZONE}. $TTL IN TXT "v=${DKIM_TYPE}; k=${KEY_TYPE}; s=email; p=" ${p_val} update add ${DKIM_SELECTOR}.${DKIM_UPDATE_ZONE}. $TTL IN TXT ${txt_val}
send send
EOF EOF
END END