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
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
#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"
...
...
@@ -51,7 +53,8 @@ dns_gd_add() {
_add_data
=
"{
\"
data
\"
:
\"
$txtvalue
\"
}"
for
t
in
$(
echo
"
$response
"
|
tr
'{'
"
\n
"
|
grep
"
\"
name
\"
:
\"
$_sub_domain
\"
"
|
tr
','
"
\n
"
|
grep
'"data"'
|
cut
-d
:
-f
2
)
;
do
_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
}"
fi
done
...
...
@@ -59,13 +62,25 @@ dns_gd_add() {
_info
"Adding record"
if
_gd_rest PUT
"domains/
$_domain
/records/TXT/
$_sub_domain
"
"[
$_add_data
]"
;
then
_info
"Added, sleeping 10 seconds"
_sleep 10
#todo: check if the record takes effect
return
0
_debug
"Checking updated records of '
${
fulldomain
}
'"
if
!
_gd_rest GET
"domains/
$_domain
/records/TXT/
$_sub_domain
"
;
then
_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
_err
"Add txt record error."
return
1
_sleep 10
_info
"Added TXT record '
${
txtvalue
}
' for '
${
fulldomain
}
'."
return
0
}
#fulldomain
...
...
@@ -107,11 +122,20 @@ dns_gd_rm() {
fi
done
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
_debug2 _add_data
"
$_add_data
"
_gd_rest PUT
"domains/
$_domain
/records/TXT/
$_sub_domain
"
"[
$_add_data
]"
}
#################### Private functions below ##################################
...
...
@@ -156,15 +180,15 @@ _gd_rest() {
export
_H1
=
"Authorization: sso-key
$GD_Key
:
$GD_Secret
"
export
_H2
=
"Content-Type: application/json"
if
[
"
$data
"
]
;
then
_debug data
"
$data
"
if
[
"
$data
"
]
||
[
"
$m
"
=
"DELETE"
]
;
then
_debug
"
data
(
$m
): "
"
$data
"
response
=
"
$(
_post
"
$data
"
"
$GD_Api
/
$ep
"
""
"
$m
"
)
"
else
response
=
"
$(
_get
"
$GD_Api
/
$ep
"
)
"
fi
if
[
"
$?
"
!=
"0"
]
;
then
_err
"error
$ep
"
_err
"error
on rest call (
$m
):
$ep
"
return
1
fi
_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