Plesk SPI return domain names always lower-case. Therefore the search for domain names in the API response must be case-insensitve. Set debug logging to the values that are reallys used for the spi calls.
added comment
_err "No TXT records found for root domain ${root_domain_name} (Plesk domain ID ${root_domain_id}). Exiting."
_err "No TXT records found for root domain $fulldomain (Plesk domain ID ${root_domain_id}). Exiting."
return1
fi
_debug "Got list of DNS TXT records for root domain '$root_domain_name':"
_debug "Got list of DNS TXT records for root Plesk domain ID ${root_domain_id} of root domain $fulldomain:"
_debug "$reclist"
recline="$(
_value "$reclist"|
grep "<host>${fulldomain}.</host>"|
grep "<value>${txtvalue}</value>"
)"
_debug "Got line for <host>${fulldomain}.</host> and <value>${txtvalue}</value>:"
_debug "$recline"
# Extracting the id of the TXT record for the full domain (NOT case-sensitive) and corresponding value
recid="$(
_value "$recline"|
_value "$reclist"|
grep -i "<host>${fulldomain}.</host>"|
grep "<value>${txtvalue}</value>"|
sed 's/^.*<id>\([0-9]\{1,\}\)<\/id>.*$/\1/'
)"
_debug "Got id from line:"
_debug "$recid"
_debug "Got id from line: $recid"
if ! _value "$recid"| grep '^[0-9]\{1,\}$' >/dev/null;then
_err "DNS records for root domain '${root_domain_name}' (Plesk ID ${root_domain_id}) + host '${sub_domain_name}' do not contain the TXT record '${txtvalue}'"
_err "DNS records for root domain '${fulldomain}.' (Plesk ID ${root_domain_id}) + host '${sub_domain_name}' do not contain the TXT record '${txtvalue}'"