Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
Acme.Sh
Commits
7cb81b0f
Unverified
Commit
7cb81b0f
authored
Aug 20, 2022
by
neil
Committed by
GitHub
Aug 20, 2022
Browse files
Merge pull request #4244 from awalon/master
dns_gd (GoDaddy) Remove complete TXT record instead of value only
parents
8155ba52
68c533f7
Changes
1
Hide whitespace changes
Inline
Side-by-side
dnsapi/dns_gd.sh
View file @
7cb81b0f
#!/usr/bin/env sh
#!/usr/bin/env sh
#Godaddy domain api
#Godaddy domain api
# Get API key and secret from https://developer.godaddy.com/
#
#
#GD_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
# GD_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
# GD_Secret="asdfsdfsfsdfsdfdfsdf"
#
#
#
GD_Secret="asdfsdfsfsdfsdfdfsdf
"
#
Ex.: acme.sh --issue --staging --dns dns_gd -d "*.s.example.com" -d "s.example.com
"
GD_Api
=
"https://api.godaddy.com/v1"
GD_Api
=
"https://api.godaddy.com/v1"
...
@@ -51,7 +53,8 @@ dns_gd_add() {
...
@@ -51,7 +53,8 @@ dns_gd_add() {
_add_data
=
"{
\"
data
\"
:
\"
$txtvalue
\"
}"
_add_data
=
"{
\"
data
\"
:
\"
$txtvalue
\"
}"
for
t
in
$(
echo
"
$response
"
|
tr
'{'
"
\n
"
|
grep
"
\"
name
\"
:
\"
$_sub_domain
\"
"
|
tr
','
"
\n
"
|
grep
'"data"'
|
cut
-d
:
-f
2
)
;
do
for
t
in
$(
echo
"
$response
"
|
tr
'{'
"
\n
"
|
grep
"
\"
name
\"
:
\"
$_sub_domain
\"
"
|
tr
','
"
\n
"
|
grep
'"data"'
|
cut
-d
:
-f
2
)
;
do
_debug2 t
"
$t
"
_debug2 t
"
$t
"
if
[
"
$t
"
]
;
then
# ignore empty (previously removed) records, to prevent useless _acme-challenge TXT entries
if
[
"
$t
"
]
&&
[
"
$t
"
!=
'""'
]
;
then
_add_data
=
"
$_add_data
,{
\"
data
\"
:
$t
}"
_add_data
=
"
$_add_data
,{
\"
data
\"
:
$t
}"
fi
fi
done
done
...
@@ -59,13 +62,25 @@ dns_gd_add() {
...
@@ -59,13 +62,25 @@ dns_gd_add() {
_info
"Adding record"
_info
"Adding record"
if
_gd_rest PUT
"domains/
$_domain
/records/TXT/
$_sub_domain
"
"[
$_add_data
]"
;
then
if
_gd_rest PUT
"domains/
$_domain
/records/TXT/
$_sub_domain
"
"[
$_add_data
]"
;
then
_info
"Added, sleeping 10 seconds"
_debug
"Checking updated records of '
${
fulldomain
}
'"
_sleep 10
#todo: check if the record takes effect
if
!
_gd_rest GET
"domains/
$_domain
/records/TXT/
$_sub_domain
"
;
then
return
0
_err
"Validating TXT record for '
${
fulldomain
}
' with rest error [
$?
]."
"
$response
"
return
1
fi
if
!
_contains
"
$response
"
"
$txtvalue
"
;
then
_err
"TXT record '
${
txtvalue
}
' for '
${
fulldomain
}
', value wasn't set!"
return
1
fi
else
_err
"Add txt record error, value '
${
txtvalue
}
' for '
${
fulldomain
}
' was not set."
return
1
fi
fi
_err
"Add txt record error."
return
1
_sleep 10
_info
"Added TXT record '
${
txtvalue
}
' for '
${
fulldomain
}
'."
return
0
}
}
#fulldomain
#fulldomain
...
@@ -107,11 +122,20 @@ dns_gd_rm() {
...
@@ -107,11 +122,20 @@ dns_gd_rm() {
fi
fi
done
done
if
[
-z
"
$_add_data
"
]
;
then
if
[
-z
"
$_add_data
"
]
;
then
_add_data
=
"{
\"
data
\"
:
\"\"
}"
# delete empty record
_debug
"Delete last record for '
${
fulldomain
}
'"
if
!
_gd_rest DELETE
"domains/
$_domain
/records/TXT/
$_sub_domain
"
;
then
_err
"Cannot delete empty TXT record for '
$fulldomain
'"
return
1
fi
else
# remove specific TXT value, keeping other entries
_debug2 _add_data
"
$_add_data
"
if
!
_gd_rest PUT
"domains/
$_domain
/records/TXT/
$_sub_domain
"
"[
$_add_data
]"
;
then
_err
"Cannot update TXT record for '
$fulldomain
'"
return
1
fi
fi
fi
_debug2 _add_data
"
$_add_data
"
_gd_rest PUT
"domains/
$_domain
/records/TXT/
$_sub_domain
"
"[
$_add_data
]"
}
}
#################### Private functions below ##################################
#################### Private functions below ##################################
...
@@ -156,15 +180,15 @@ _gd_rest() {
...
@@ -156,15 +180,15 @@ _gd_rest() {
export
_H1
=
"Authorization: sso-key
$GD_Key
:
$GD_Secret
"
export
_H1
=
"Authorization: sso-key
$GD_Key
:
$GD_Secret
"
export
_H2
=
"Content-Type: application/json"
export
_H2
=
"Content-Type: application/json"
if
[
"
$data
"
]
;
then
if
[
"
$data
"
]
||
[
"
$m
"
=
"DELETE"
]
;
then
_debug data
"
$data
"
_debug
"
data
(
$m
): "
"
$data
"
response
=
"
$(
_post
"
$data
"
"
$GD_Api
/
$ep
"
""
"
$m
"
)
"
response
=
"
$(
_post
"
$data
"
"
$GD_Api
/
$ep
"
""
"
$m
"
)
"
else
else
response
=
"
$(
_get
"
$GD_Api
/
$ep
"
)
"
response
=
"
$(
_get
"
$GD_Api
/
$ep
"
)
"
fi
fi
if
[
"
$?
"
!=
"0"
]
;
then
if
[
"
$?
"
!=
"0"
]
;
then
_err
"error
$ep
"
_err
"error
on rest call (
$m
):
$ep
"
return
1
return
1
fi
fi
_debug2 response
"
$response
"
_debug2 response
"
$response
"
...
...
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