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
5def1169
Commit
5def1169
authored
Aug 17, 2017
by
neil
Committed by
GitHub
Aug 17, 2017
Browse files
Merge pull request #974 from Neilpang/dev
Dev
parents
90100aa1
e25a375f
Changes
2
Hide whitespace changes
Inline
Side-by-side
dnsapi/README.md
View file @
5def1169
...
@@ -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 @
5def1169
...
@@ -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