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
e25a375f
Commit
e25a375f
authored
Aug 14, 2017
by
neil
Committed by
GitHub
Aug 14, 2017
Browse files
Merge pull request #969 from abelbeck/dns_duckdns
Update DuckDNS support, fix failure on first call, no longer save the…
parents
415f375c
96801e34
Changes
2
Hide whitespace changes
Inline
Side-by-side
dnsapi/README.md
View file @
e25a375f
...
@@ -512,14 +512,11 @@ export DuckDNS_Token="aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"
...
@@ -512,14 +512,11 @@ export DuckDNS_Token="aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"
```
```
Please note that since DuckDNS uses StartSSL as their cert provider, thus
Please note that since DuckDNS uses StartSSL as their cert provider, thus
--insecure m
ust
be used when issuing certs:
--insecure m
ay need to
be used when issuing certs:
```
```
acme.sh --insecure --issue --dns dns_duckdns -d mydomain.duckdns.org
acme.sh --insecure --issue --dns dns_duckdns -d mydomain.duckdns.org
```
```
Also, DuckDNS uses the domain name as username for recording changing, so the
account file will always store the lastly used domain name.
For issues, please report to https://github.com/raidenii/acme.sh/issues.
For issues, please report to https://github.com/raidenii/acme.sh/issues.
## 28. Use Name.com API
## 28. Use Name.com API
...
...
dnsapi/dns_duckdns.sh
View file @
e25a375f
...
@@ -3,11 +3,14 @@
...
@@ -3,11 +3,14 @@
#Created by RaidenII, to use DuckDNS's API to add/remove text records
#Created by RaidenII, to use DuckDNS's API to add/remove text records
#06/27/2017
#06/27/2017
# Currently only support single domain access
# Pass credentials before "acme.sh --issue --dns dns_duckdns ..."
# Due to the fact that DuckDNS uses StartSSL as cert provider, --insecure must be used with acme.sh
# --
# export DuckDNS_Token="aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"
# --
#
# Due to the fact that DuckDNS uses StartSSL as cert provider, --insecure may need to be used with acme.sh
DuckDNS_API
=
"https://www.duckdns.org/update"
DuckDNS_API
=
"https://www.duckdns.org/update"
API_Params
=
"domains=
$DuckDNS_Domain
&token=
$DuckDNS_Token
"
######## Public functions #####################
######## Public functions #####################
...
@@ -16,35 +19,36 @@ dns_duckdns_add() {
...
@@ -16,35 +19,36 @@ dns_duckdns_add() {
fulldomain
=
$1
fulldomain
=
$1
txtvalue
=
$2
txtvalue
=
$2
# We'll extract the domain/username from full domain
DuckDNS_Token
=
"
${
DuckDNS_Token
:-
$(
_readaccountconf_mutable DuckDNS_Token
)
}
"
DuckDNS_Domain
=
$(
echo
"
$fulldomain
"
| _lower_case | _egrep_o
'.[^.]*.duckdns.org'
|
cut
-d
.
-f
2
)
if
[
-z
"
$DuckDNS_Domain
"
]
;
then
_err
"Error extracting the domain."
return
1
fi
if
[
-z
"
$DuckDNS_Token
"
]
;
then
if
[
-z
"
$DuckDNS_Token
"
]
;
then
DuckDNS_Token
=
"
"
_err
"You must export variable:
DuckDNS_Token"
_err
"The token for your DuckDNS account is necessary."
_err
"The token for your DuckDNS account is necessary."
_err
"You can look it up in your DuckDNS account."
_err
"You can look it up in your DuckDNS account."
return
1
return
1
fi
fi
# Now save the credentials.
# Now save the credentials.
_saveaccountconf DuckDNS_Domain
"
$DuckDNS_Domain
"
_saveaccountconf_mutable DuckDNS_Token
"
$DuckDNS_Token
"
_saveaccountconf DuckDNS_Token
"
$DuckDNS_Token
"
# Unfortunately, DuckDNS does not seems to support lookup domain through API
# Unfortunately, DuckDNS does not seems to support lookup domain through API
# So I assume your credentials (which are your domain and token) are correct
# So I assume your credentials (which are your domain and token) are correct
# If something goes wrong, we will get a KO response from DuckDNS
# If something goes wrong, we will get a KO response from DuckDNS
if
!
_duckdns_get_domain
;
then
return
1
fi
# Now add the TXT record to DuckDNS
# Now add the TXT record to DuckDNS
_info
"Trying to add TXT record"
_info
"Trying to add TXT record"
if
_duckdns_rest GET
"
$API_Params
&txt=
$txtvalue
"
&&
[
"
$response
"
=
"OK"
]
;
then
if
_duckdns_rest GET
"domains=
$_duckdns_domain
&token=
$DuckDNS_Token
&txt=
$txtvalue
"
;
then
_info
"TXT record has been successfully added to your DuckDNS domain."
if
[
"
$response
"
=
"OK"
]
;
then
_info
"Note that all subdomains under this domain uses the same TXT record."
_info
"TXT record has been successfully added to your DuckDNS domain."
return
0
_info
"Note that all subdomains under this domain uses the same TXT record."
return
0
else
_err
"Errors happened during adding the TXT record, response=
$response
"
return
1
fi
else
else
_err
"Errors happened during adding the TXT record."
_err
"Errors happened during adding the TXT record."
return
1
return
1
...
@@ -57,11 +61,28 @@ dns_duckdns_rm() {
...
@@ -57,11 +61,28 @@ dns_duckdns_rm() {
fulldomain
=
$1
fulldomain
=
$1
txtvalue
=
$2
txtvalue
=
$2
DuckDNS_Token
=
"
${
DuckDNS_Token
:-
$(
_readaccountconf_mutable DuckDNS_Token
)
}
"
if
[
-z
"
$DuckDNS_Token
"
]
;
then
_err
"You must export variable: DuckDNS_Token"
_err
"The token for your DuckDNS account is necessary."
_err
"You can look it up in your DuckDNS account."
return
1
fi
if
!
_duckdns_get_domain
;
then
return
1
fi
# Now remove the TXT record from DuckDNS
# Now remove the TXT record from DuckDNS
_info
"Trying to remove TXT record"
_info
"Trying to remove TXT record"
if
_duckdns_rest GET
"
$API_Params
&txt=&clear=true"
&&
[
"
$response
"
=
"OK"
]
;
then
if
_duckdns_rest GET
"domains=
$_duckdns_domain
&token=
$DuckDNS_Token
&txt=&clear=true"
;
then
_info
"TXT record has been successfully removed from your DuckDNS domain."
if
[
"
$response
"
=
"OK"
]
;
then
return
0
_info
"TXT record has been successfully removed from your DuckDNS domain."
return
0
else
_err
"Errors happened during removing the TXT record, response=
$response
"
return
1
fi
else
else
_err
"Errors happened during removing the TXT record."
_err
"Errors happened during removing the TXT record."
return
1
return
1
...
@@ -70,6 +91,22 @@ dns_duckdns_rm() {
...
@@ -70,6 +91,22 @@ dns_duckdns_rm() {
#################### Private functions below ##################################
#################### Private functions below ##################################
#fulldomain=_acme-challenge.domain.duckdns.org
#returns
# _duckdns_domain=domain
_duckdns_get_domain
()
{
# We'll extract the domain/username from full domain
_duckdns_domain
=
"
$(
printf
"%s"
"
$fulldomain
"
| _lower_case | _egrep_o
'[.][^.][^.]*[.]duckdns.org'
|
cut
-d
.
-f
2
)
"
if
[
-z
"
$_duckdns_domain
"
]
;
then
_err
"Error extracting the domain."
return
1
fi
return
0
}
#Usage: method URI
#Usage: method URI
_duckdns_rest
()
{
_duckdns_rest
()
{
method
=
$1
method
=
$1
...
...
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