Skip to content

Commit

Permalink
Update dns_namecom.sh
Browse files Browse the repository at this point in the history
Cater for accounts > 1000 domains, add debug messages, parse through as many pages of domains are available
  • Loading branch information
mattgroves committed Mar 14, 2024
1 parent 6e14a07 commit 2f1b05d
Showing 1 changed file with 32 additions and 17 deletions.
49 changes: 32 additions & 17 deletions dnsapi/dns_namecom.sh
Original file line number Diff line number Diff line change
Expand Up @@ -144,30 +144,45 @@ _namecom_login() {
}

_namecom_get_root() {
domain=$1
i=2
p=1
full_domain=$1

if ! _namecom_rest GET "domains"; then
return 1
fi
# Strip the subdomain from the full domain
domain=$(echo "$full_domain" | sed 's/.*\.\([^.]*\.[^.]*\)$/\1/')

# Initialize variables for pagination
_page=1

# Need to exclude the last field (tld)
numfields=$(echo "$domain" | _egrep_o "\." | wc -l)
while [ $i -le "$numfields" ]; do
host=$(printf "%s" "$domain" | cut -d . -f $i-100)
_debug host "$host"
if [ -z "$host" ]; then
while true; do
if ! _namecom_rest GET "domains?page=$_page&perPage=1000"; then
_debug "Error: Failed to retrieve domains from API"
return 1
fi

if _contains "$response" "$host"; then
_sub_domain=$(printf "%s" "$domain" | cut -d . -f 1-$p)
_domain="$host"
_debug "Response for $full_domain: $response"

# Check if the domain is found in the current page
if echo "$response" | grep -q "\"domainName\":\"$domain\""; then
_debug "Domain $domain found in the response"
# Extract the subdomain from the full domain
_sub_domain=$(echo "$full_domain" | sed "s/\.$domain$//")
_domain=$domain
_debug "Subdomain for $full_domain: $_sub_domain"
_debug "Domain: $_domain"
return 0
else
_debug "Domain $domain not found in the current page"
fi

# Check if there are more pages
if echo "$response" | grep -q '"nextPage":'; then
_page=$(_math "$_page" + 1)
_debug "Moving to the next page $_page for domain $full_domain"
else
_debug "No more pages to search for domain $full_domain"
break
fi
p=$i
i=$(_math "$i" + 1)
done

_debug "Domain $domain not found in any page"
return 1
}

0 comments on commit 2f1b05d

Please sign in to comment.