|
@ -76,7 +76,7 @@ dns_linode_v4_rm() { |
|
|
_debug _sub_domain "$_sub_domain" |
|
|
_debug _sub_domain "$_sub_domain" |
|
|
_debug _domain "$_domain" |
|
|
_debug _domain "$_domain" |
|
|
|
|
|
|
|
|
if _rest GET "/$_domain_id/records" && [ -n "$response" ]; then |
|
|
|
|
|
|
|
|
if _H4="X-Filter: { \"type\": \"TXT\", \"name\": \"$_sub_domain\" }" _rest GET "/$_domain_id/records" && [ -n "$response" ]; then |
|
|
response="$(echo "$response" | tr -d "\n" | tr '{' "|" | sed 's/|/&{/g' | tr "|" "\n")" |
|
|
response="$(echo "$response" | tr -d "\n" | tr '{' "|" | sed 's/|/&{/g' | tr "|" "\n")" |
|
|
|
|
|
|
|
|
resource="$(echo "$response" | _egrep_o "\{.*\"name\": *\"$_sub_domain\".*}")" |
|
|
resource="$(echo "$response" | _egrep_o "\{.*\"name\": *\"$_sub_domain\".*}")" |
|
@ -131,34 +131,42 @@ _Linode_API() { |
|
|
# _domain=domain.com |
|
|
# _domain=domain.com |
|
|
# _domain_id=12345 |
|
|
# _domain_id=12345 |
|
|
_get_root() { |
|
|
_get_root() { |
|
|
domain=$1 |
|
|
|
|
|
|
|
|
full_host_str="$1" |
|
|
|
|
|
|
|
|
i=2 |
|
|
i=2 |
|
|
p=1 |
|
|
p=1 |
|
|
|
|
|
while true; do |
|
|
|
|
|
# loop through the received string (e.g. _acme-challenge.sub3.sub2.sub1.domain.tld), |
|
|
|
|
|
# starting from the lowest subdomain, and check if it's a hosted domain |
|
|
|
|
|
tst_hosted_domain=$(printf "%s" "$full_host_str" | cut -d . -f "$i"-100) |
|
|
|
|
|
_debug tst_hosted_domain "$tst_hosted_domain" |
|
|
|
|
|
if [ -z "$tst_hosted_domain" ]; then |
|
|
|
|
|
#not valid |
|
|
|
|
|
_err "Couldn't get domain from string '$full_host_str'." |
|
|
|
|
|
return 1 |
|
|
|
|
|
fi |
|
|
|
|
|
|
|
|
if _rest GET; then |
|
|
|
|
|
response="$(echo "$response" | tr -d "\n" | tr '{' "|" | sed 's/|/&{/g' | tr "|" "\n")" |
|
|
|
|
|
while true; do |
|
|
|
|
|
h=$(printf "%s" "$domain" | cut -d . -f "$i"-100) |
|
|
|
|
|
_debug h "$h" |
|
|
|
|
|
if [ -z "$h" ]; then |
|
|
|
|
|
#not valid |
|
|
|
|
|
return 1 |
|
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
|
|
hostedzone="$(echo "$response" | _egrep_o "\{.*\"domain\": *\"$h\".*}")" |
|
|
|
|
|
|
|
|
_debug "Querying Linode APIv4 for hosted zone: $tst_hosted_domain" |
|
|
|
|
|
if _H4="X-Filter: {\"domain\":\"$tst_hosted_domain\"}" _rest GET; then |
|
|
|
|
|
_debug "Got response from API: $response" |
|
|
|
|
|
response="$(echo "$response" | tr -d "\n" | tr '{' "|" | sed 's/|/&{/g' | tr "|" "\n")" |
|
|
|
|
|
hostedzone="$(echo "$response" | _egrep_o "\{.*\"domain\": *\"$tst_hosted_domain\".*}")" |
|
|
if [ "$hostedzone" ]; then |
|
|
if [ "$hostedzone" ]; then |
|
|
_domain_id=$(printf "%s\n" "$hostedzone" | _egrep_o "\"id\": *[0-9]+" | _head_n 1 | cut -d : -f 2 | tr -d \ ) |
|
|
_domain_id=$(printf "%s\n" "$hostedzone" | _egrep_o "\"id\": *[0-9]+" | _head_n 1 | cut -d : -f 2 | tr -d \ ) |
|
|
|
|
|
_debug "Found domain hosted on Linode DNS. Zone: $tst_hosted_domain, id: $_domain_id" |
|
|
if [ "$_domain_id" ]; then |
|
|
if [ "$_domain_id" ]; then |
|
|
_sub_domain=$(printf "%s" "$domain" | cut -d . -f 1-"$p") |
|
|
|
|
|
_domain=$h |
|
|
|
|
|
|
|
|
_sub_domain=$(printf "%s" "$full_host_str" | cut -d . -f 1-"$p") |
|
|
|
|
|
_domain=$tst_hosted_domain |
|
|
return 0 |
|
|
return 0 |
|
|
fi |
|
|
fi |
|
|
return 1 |
|
|
return 1 |
|
|
fi |
|
|
fi |
|
|
|
|
|
|
|
|
p=$i |
|
|
p=$i |
|
|
i=$(_math "$i" + 1) |
|
|
i=$(_math "$i" + 1) |
|
|
done |
|
|
|
|
|
fi |
|
|
|
|
|
|
|
|
fi |
|
|
|
|
|
done |
|
|
|
|
|
|
|
|
return 1 |
|
|
return 1 |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|