Added support for Linode DNS API.

This commit is contained in:
Philipp Grosswiler 2017-01-16 15:42:17 +07:00
parent ca24d1762e
commit 38f2334360
3 changed files with 80 additions and 0 deletions

View File

@ -266,6 +266,7 @@ You don't have to do anything manually!
1. aliyun.com(阿里云) API 1. aliyun.com(阿里云) API
1. ISPConfig 3.1 API 1. ISPConfig 3.1 API
1. Alwaysdata.com API 1. Alwaysdata.com API
1. Linode.com API
**More APIs coming soon...** **More APIs coming soon...**

View File

@ -257,6 +257,25 @@ acme.sh --issue --dns dns_ad -d example.com -d www.example.com
The `AD_API_KEY` will be saved in `~/.acme.sh/account.conf` and will be reused The `AD_API_KEY` will be saved in `~/.acme.sh/account.conf` and will be reused
when needed. when needed.
## 14. Use Linode domain API
You will need to install the Linode CLI and set it up accordingly.
[https://www.linode.com/docs/platform/linode-cli](https://www.linode.com/docs/platform/linode-cli)
Follow the installation instructions appropriate for your platform and then run the configuration.
```linode configure
```
Make sure Linode CLI is working correctly before proceeding.
Due to the reload time of any changes in the DNS records, we have to use the `dnssleep` option to wait at least 15 minutes for the changes to take effect.
```sh
acme.sh --issue --dns dns_linode --dnssleep 900 -d example.com -d www.example.com
```
# Use custom API # Use custom API
If your API is not supported yet, you can write your own DNS API. If your API is not supported yet, you can write your own DNS API.

60
dnsapi/dns_linode.sh Executable file
View File

@ -0,0 +1,60 @@
#!/usr/bin/env bash
linode_cmd="/usr/bin/linode"
######## Public functions #####################
#Usage: dns_linode_add _acme-challenge.www.domain.com "XKrxpRBosdIKFzxW_CT3KLZNf6q0HG9i01zxXp5CPBs"
dns_linode_add() {
fulldomain="${1}"
txtvalue="${2}"
_info "Using Linode"
_debug "Calling: dns_linode_add() '${fulldomain}' '${txtvalue}'"
domain=$(printf "%s" "${fulldomain}" | cut -d . -f 3-999)
name=$(printf "%s" "${fulldomain}" | cut -d . -f 1-2)
_debug name "${name}"
_debug domain "${domain}"
_Linode_CLI && _Linode_addTXT
}
#Usage: dns_linode_rm _acme-challenge.www.domain.com
dns_linode_rm() {
fulldomain="${1}"
_info "Using Linode"
_debug "Calling: dns_linode_rm() '${fulldomain}'"
domain=$(printf "%s" "${fulldomain}" | cut -d . -f 3-999)
name=$(printf "%s" "${fulldomain}" | cut -d . -f 1-2)
_debug name "${name}"
_debug domain "${domain}"
_Linode_CLI && _Linode_rmTXT
}
#################### Private functions below ##################################
_Linode_CLI() {
if [ ! -f "${linode_cmd}" ]; then
_err "Please install the Linode CLI package and set it up accordingly before using this DNS API."
return 1
fi
}
_Linode_addTXT() {
_debug "$linode_cmd domain record-update ${domain} TXT ${name} --target ${txtvalue}"
$linode_cmd domain record-update ${domain} TXT ${name} --target ${txtvalue}
if [ $? -ne 0 ]; then
_debug "$linode_cmd domain record-create ${domain} TXT ${name} ${txtvalue}"
$linode_cmd domain record-create ${domain} TXT ${name} ${txtvalue}
fi
}
_Linode_rmTXT() {
_debug "$linode_cmd domain record-delete ${domain} TXT ${name}"
$linode_cmd domain record-delete ${domain} TXT ${name}
}