Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
ruanhaishen
Acme.Sh
Commits
0aba1b4a
Unverified
Commit
0aba1b4a
authored
Jan 03, 2019
by
neil
Committed by
GitHub
Jan 03, 2019
Browse files
Merge pull request #1839 from sunflowerit/digitalocean-fix
Fixes on DigitalOcean implementation
parents
e12c7c8d
4a18c45e
Changes
1
Show whitespace changes
Inline
Side-by-side
dnsapi/dns_dgon.sh
View file @
0aba1b4a
...
@@ -104,33 +104,31 @@ dns_dgon_rm() {
...
@@ -104,33 +104,31 @@ dns_dgon_rm() {
## may get: "links":{"pages":{"last":".../v2/domains/DOM/records?page=2","next":".../v2/domains/DOM/records?page=2"}}
## may get: "links":{"pages":{"last":".../v2/domains/DOM/records?page=2","next":".../v2/domains/DOM/records?page=2"}}
GURL
=
"https://api.digitalocean.com/v2/domains/
$_domain
/records"
GURL
=
"https://api.digitalocean.com/v2/domains/
$_domain
/records"
##
while we dont have a record ID we keep going
##
Get all the matching records
while
[
-z
"
$record
"
]
;
do
while
true
;
do
## 1) get the URL
## 1) get the URL
## the create request - get
## the create request - get
## args: URL, [onlyheader, timeout]
## args: URL, [onlyheader, timeout]
domain_list
=
"
$(
_get
"
$GURL
"
)
"
domain_list
=
"
$(
_get
"
$GURL
"
)
"
## 2) find record
## check for what we are looing for: "type":"A","name":"$_sub_domain"
## check response
record
=
"
$(
echo
"
$domain_list
"
| _egrep_o
"
\"
id
\"\s
*
\:\s
*
\"
*[0-9]+
\"
*[^}]*
\"
name
\"\s
*
\:\s
*
\"
$_sub_domain
\"
[^}]*
\"
data
\"\s
*
\:\s
*
\"
$txtvalue
\"
"
)
"
if
[
"
$?
"
!=
"0"
]
;
then
## 3) check record and get next page
_err
"error in domain_list response:
$domain_list
"
if
[
-z
"
$record
"
]
;
then
## find the next page if we dont have a match
nextpage
=
"
$(
echo
"
$domain_list
"
| _egrep_o
"
\"
links
\"
.*"
| _egrep_o
"
\"
next
\"
.*"
| _egrep_o
"http.*page
\=
[0-9]+"
)
"
if
[
-z
"
$nextpage
"
]
;
then
_err
"no record and no nextpage in digital ocean DNS removal"
return
1
return
1
fi
fi
_debug2
nextpage
"
$nextpage
"
_debug2
domain_list
"
$domain_list
"
GURL
=
"
$nextpage
"
fi
## 2) find records
##
we break out of the loop when we have a record
##
check for what we are looking for: "type":"A","name":"$_sub_domain"
done
record
=
"
$(
echo
"
$domain_list
"
| _egrep_o
"
\"
id
\"\s
*
\:\s
*
\"
*[0-9]+
\"
*[^}]*
\"
name
\"\s
*
\:\s
*
\"
$_sub_domain
\"
[^}]*
\"
data
\"\s
*
\:\s
*
\"
$txtvalue
\"
"
)
"
## we found the record
if
[
!
-z
"
$record
"
]
;
then
rec_id
=
"
$(
echo
"
$record
"
| _egrep_o
"id
\"\s
*
\:\s
*
\"
*[0-9]+"
| _egrep_o
"[0-9]+"
)
"
_debug rec_id
"
$rec_id
"
## we found records
rec_ids
=
"
$(
echo
"
$record
"
| _egrep_o
"id
\"\s
*
\:\s
*
\"
*[0-9]+"
| _egrep_o
"[0-9]+"
)
"
_debug rec_ids
"
$rec_ids
"
if
[
!
-z
"
$rec_ids
"
]
;
then
echo
"
$rec_ids
"
|
while
IFS
=
read
-r
rec_id
;
do
## delete the record
## delete the record
## delete URL for removing the one we dont want
## delete URL for removing the one we dont want
DURL
=
"https://api.digitalocean.com/v2/domains/
$_domain
/records/
$rec_id
"
DURL
=
"https://api.digitalocean.com/v2/domains/
$_domain
/records/
$rec_id
"
...
@@ -146,6 +144,20 @@ dns_dgon_rm() {
...
@@ -146,6 +144,20 @@ dns_dgon_rm() {
fi
fi
_debug2 response
"
$response
"
_debug2 response
"
$response
"
done
fi
fi
## 3) find the next page
nextpage
=
"
$(
echo
"
$domain_list
"
| _egrep_o
"
\"
links
\"
.*"
| _egrep_o
"
\"
next
\"
.*"
| _egrep_o
"http.*page
\=
[0-9]+"
)
"
if
[
-z
"
$nextpage
"
]
;
then
break
fi
_debug2 nextpage
"
$nextpage
"
GURL
=
"
$nextpage
"
done
## finished correctly
## finished correctly
return
0
return
0
}
}
...
@@ -178,10 +190,12 @@ _get_base_domain() {
...
@@ -178,10 +190,12 @@ _get_base_domain() {
export
_H2
=
"Authorization: Bearer
$DO_API_KEY
"
export
_H2
=
"Authorization: Bearer
$DO_API_KEY
"
_debug DO_API_KEY
"
$DO_API_KEY
"
_debug DO_API_KEY
"
$DO_API_KEY
"
## get URL for the list of domains
## get URL for the list of domains
##
havent seen this request paginated, tested with 18 domains (more requires manual requests with DO)
##
may get: "links":{"pages":{"last":".../v2/domains/DOM/records?page=2","next":".../v2/domains/DOM/records?page=2"}}
DOMURL
=
"https://api.digitalocean.com/v2/domains"
DOMURL
=
"https://api.digitalocean.com/v2/domains"
## get the domain list (DO gives basically a full XFER!)
## while we dont have a matching domain we keep going
while
[
-z
"
$found
"
]
;
do
## get the domain list (current page)
domain_list
=
"
$(
_get
"
$DOMURL
"
)
"
domain_list
=
"
$(
_get
"
$DOMURL
"
)
"
## check response
## check response
...
@@ -199,9 +213,7 @@ _get_base_domain() {
...
@@ -199,9 +213,7 @@ _get_base_domain() {
_domain
=
$(
printf
"%s"
"
$fulldomain
"
|
cut
-d
.
-f
"
$i
"
-
"
$MAX_DOM
"
)
_domain
=
$(
printf
"%s"
"
$fulldomain
"
|
cut
-d
.
-f
"
$i
"
-
"
$MAX_DOM
"
)
## check we got something back from our cut (or are we at the end)
## check we got something back from our cut (or are we at the end)
if
[
-z
"
$_domain
"
]
;
then
if
[
-z
"
$_domain
"
]
;
then
## we got to the end of the domain - invalid domain
break
_err
"domain not found in DigitalOcean account"
return
1
fi
fi
## we got part of a domain back - grep it out
## we got part of a domain back - grep it out
found
=
"
$(
echo
"
$domain_list
"
| _egrep_o
"
\"
name
\"\s
*
\:\s
*
\"
$_domain
\"
"
)
"
found
=
"
$(
echo
"
$domain_list
"
| _egrep_o
"
\"
name
\"\s
*
\:\s
*
\"
$_domain
\"
"
)
"
...
@@ -218,6 +230,19 @@ _get_base_domain() {
...
@@ -218,6 +230,19 @@ _get_base_domain() {
i
=
$(
_math
$i
+ 1
)
i
=
$(
_math
$i
+ 1
)
done
done
if
[
-z
"
$found
"
]
;
then
## find the next page if we dont have a match
nextpage
=
"
$(
echo
"
$domain_list
"
| _egrep_o
"
\"
links
\"
.*"
| _egrep_o
"
\"
next
\"
.*"
| _egrep_o
"http.*page
\=
[0-9]+"
)
"
if
[
-z
"
$nextpage
"
]
;
then
_err
"no record and no nextpage in digital ocean DNS removal"
return
1
fi
_debug2 nextpage
"
$nextpage
"
DOMURL
=
"
$nextpage
"
fi
done
## we went through the entire domain zone list and dint find one that matched
## we went through the entire domain zone list and dint find one that matched
## doesnt look like we can add in the record
## doesnt look like we can add in the record
_err
"domain not found in DigitalOcean account, but we should never get here"
_err
"domain not found in DigitalOcean account, but we should never get here"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment