diff --git a/dnsapi/dns_pleskxml.sh b/dnsapi/dns_pleskxml.sh
index 551e42f..2c9a4d5 100644
--- a/dnsapi/dns_pleskxml.sh
+++ b/dnsapi/dns_pleskxml.sh
@@ -100,7 +100,7 @@ dns_pleskxml_add() {
return 1
fi
- recid="$(_value "$results" | grep '[0-9]\{1,\}' | sed -r 's/^.*([0-9]+)<\/id>.*$/\1/')"
+ recid="$(_value "$results" | grep '[0-9]\{1,\}' | sed 's/^.*\([0-9]\{1,\}\)<\/id>.*$/\1/')"
_info "Success. TXT record appears to be correctly added (Plesk record ID=$recid). Exiting dns_pleskxml_add()."
@@ -145,16 +145,16 @@ dns_pleskxml_rm() {
return 1
fi
- _debug "Got list of DNS TXT records for root domain '$root_domain_name'"':\n'"$reclist"
+ _debug "Got list of DNS TXT records for root domain '$root_domain_name'. Full list is:"'\n'"$reclist"
+
+ _debug "DNS TXT records for host '$fulldomain':"'\n'"$(_value "$reclist" | grep "${fulldomain}.")"
recid="$(_value "$reclist" \
- | grep "$1." \
- | grep "$txtvalue" \
- | sed -r 's/(^.*|<\/id>.*$)//g'
+ | grep "${fulldomain}." \
+ | grep "${txtvalue}" \
+ | sed 's/^.*\([0-9]\{1,\}\)<\/id>.*$/\1/'
)"
- _debug "List of DNS TXT records for host:"'\n'"$(_value "$reclist" | grep "$1.")"
-
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 "Cannot delete TXT record. Exiting."
@@ -341,13 +341,13 @@ _credential_check() {
# See notes at top of this file
_pleskxml_get_root_domain() {
- _debug "Identifying DNS root domain for '$1' that is managed by the Plesk account."
original_full_domain_name="$1"
- root_domain_name="$1"
+
+ _debug "Identifying DNS root domain for '$original_full_domain_name' that is managed by the Plesk account."
# test if the domain as provided is valid for splitting.
- if ! _countdots "$root_domain_name"; then
+ if ! _countdots "$original_full_domain_name"; then
_err "Invalid domain. The ACME domain must contain at least two parts (aa.bb) to identify a domain and tld for the TXT record."
return 1
fi
@@ -372,6 +372,8 @@ _pleskxml_get_root_domain() {
# loop and test if domain, or any parent domain, is managed by Plesk
# Loop until we don't have any '.' in the string we're testing as a candidate Plesk-managed domain
+ root_domain_name="$original_full_domain_name"
+
while true; do
_debug "Checking if '$root_domain_name' is managed by the Plesk server..."