mirror of
https://github.com/acmesh-official/acme.sh.git
synced 2025-05-03 10:44:12 +00:00
Ubiquiti removed keytool (and java) from recent releases of Unifi OS. This moves from keytool to openssl's native pkcs12. Tested on Unifi Dream Machine which runs Unifi OS and a built-in Unifi controller. Also added backup of existing files prior to change in case anything goes wrong, and update system configuration with compatible ciphers.
102 lines
2.3 KiB
Bash
102 lines
2.3 KiB
Bash
#!/usr/bin/env sh
|
|
# shellcheck disable=SC2034
|
|
dns_dreamhost_info='DreamHost.com
|
|
Site: DreamHost.com
|
|
Docs: github.com/acmesh-official/acme.sh/wiki/dnsapi#dns_dreamhost
|
|
Options:
|
|
DH_API_KEY API Key
|
|
Issues: github.com/RhinoLance/acme.sh
|
|
Author: RhinoLance
|
|
'
|
|
|
|
DH_API_ENDPOINT="https://api.dreamhost.com/"
|
|
querystring=""
|
|
|
|
######## Public functions #####################
|
|
|
|
#Usage: dns_myapi_add _acme-challenge.www.domain.com "XKrxpRBosdIKFzxW_CT3KLZNf6q0HG9i01zxXp5CPBs"
|
|
dns_dreamhost_add() {
|
|
fulldomain=$1
|
|
txtvalue=$2
|
|
|
|
if ! validate "$fulldomain" "$txtvalue"; then
|
|
return 1
|
|
fi
|
|
|
|
querystring="key=$DH_API_KEY&cmd=dns-add_record&record=$fulldomain&type=TXT&value=$txtvalue"
|
|
if ! submit "$querystring"; then
|
|
return 1
|
|
fi
|
|
|
|
return 0
|
|
}
|
|
|
|
#Usage: fulldomain txtvalue
|
|
#Remove the txt record after validation.
|
|
dns_dreamhost_rm() {
|
|
fulldomain=$1
|
|
txtvalue=$2
|
|
|
|
if ! validate "$fulldomain" "$txtvalue"; then
|
|
return 1
|
|
fi
|
|
|
|
querystring="key=$DH_API_KEY&cmd=dns-remove_record&record=$fulldomain&type=TXT&value=$txtvalue"
|
|
if ! submit "$querystring"; then
|
|
return 1
|
|
fi
|
|
|
|
return 0
|
|
}
|
|
|
|
#################### Private functions below ##################################
|
|
|
|
#send the command to the api endpoint.
|
|
submit() {
|
|
querystring=$1
|
|
|
|
url="$DH_API_ENDPOINT?$querystring"
|
|
|
|
_debug url "$url"
|
|
|
|
if ! response="$(_get "$url")"; then
|
|
_err "Error <$1>"
|
|
return 1
|
|
fi
|
|
|
|
if [ -z "$2" ]; then
|
|
message="$(echo "$response" | _egrep_o "\"Message\":\"[^\"]*\"" | cut -d : -f 2 | tr -d \")"
|
|
if [ -n "$message" ]; then
|
|
_err "$message"
|
|
return 1
|
|
fi
|
|
fi
|
|
|
|
_debug response "$response"
|
|
|
|
return 0
|
|
}
|
|
|
|
#check that we have a valid API Key
|
|
validate() {
|
|
fulldomain=$1
|
|
txtvalue=$2
|
|
|
|
_info "Using dreamhost"
|
|
_debug fulldomain "$fulldomain"
|
|
_debug txtvalue "$txtvalue"
|
|
|
|
#retrieve the API key from the environment variable if it exists, otherwise look for a saved key.
|
|
DH_API_KEY="${DH_API_KEY:-$(_readaccountconf_mutable DH_API_KEY)}"
|
|
|
|
if [ -z "$DH_API_KEY" ]; then
|
|
DH_API_KEY=""
|
|
_err "You didn't specify the DreamHost api key yet (export DH_API_KEY=\"<api key>\")"
|
|
_err "Please login to your control panel, create a key and try again."
|
|
return 1
|
|
fi
|
|
|
|
#save the api key to the account conf file.
|
|
_saveaccountconf_mutable DH_API_KEY "$DH_API_KEY"
|
|
}
|