From 18f56a26bc3446d281475a2a2eb84346d74d3da8 Mon Sep 17 00:00:00 2001 From: Noxilie Date: Thu, 17 Feb 2022 15:49:50 +0300 Subject: [PATCH] issue1771: allow dns_aws to get all hosted zones instead of only first 100 --- dnsapi/dns_aws.sh | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/dnsapi/dns_aws.sh b/dnsapi/dns_aws.sh index 14a4594d..098140aa 100755 --- a/dnsapi/dns_aws.sh +++ b/dnsapi/dns_aws.sh @@ -154,25 +154,31 @@ _get_root() { domain=$1 i=2 p=1 + response_prev='' if aws_rest GET "2013-04-01/hostedzone"; then + while true; do + if _contains "$response" "true" && _contains "$response" ""; then + _debug "IsTruncated" + _nextMarker="$(echo "$response" | _egrep_o ".*" | cut -d '>' -f 2 | cut -d '<' -f 1)" + _debug "NextMarker" "$_nextMarker" + response_prev="$response$response_prev" + if aws_rest GET "2013-04-01/hostedzone" "marker=$_nextMarker"; then + _debug "Truncated request OK" + continue + else + _err "Truncated request error." + response="$response_prev" + break + fi + fi + response="$response$response_prev" + break + done while true; do h=$(printf "%s" "$domain" | cut -d . -f $i-100) _debug2 "Checking domain: $h" if [ -z "$h" ]; then - if _contains "$response" "true" && _contains "$response" ""; then - _debug "IsTruncated" - _nextMarker="$(echo "$response" | _egrep_o ".*" | cut -d '>' -f 2 | cut -d '<' -f 1)" - _debug "NextMarker" "$_nextMarker" - if aws_rest GET "2013-04-01/hostedzone" "marker=$_nextMarker"; then - _debug "Truncated request OK" - i=2 - p=1 - continue - else - _err "Truncated request error." - fi - fi #not valid _err "Invalid domain" return 1