You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
2.7 KiB
80 lines
2.7 KiB
#!/usr/bin/env sh
|
|
|
|
# Script to deploy certificate to DirectAdmin
|
|
# https://docs.directadmin.com/directadmin/customizing-workflow/api-all-about.html#creating-a-login-key
|
|
# https://docs.directadmin.com/changelog/version-1.24.4.html#cmd-api-catch-all-pop-passwords-frontpage-protected-dirs-ssl-certs
|
|
|
|
# This deployment required following variables
|
|
# export DirectAdmin_ENDPOINT="example.com:2222"
|
|
# export DirectAdmin_USERNAME="Your DirectAdmin Username"
|
|
# export DirectAdmin_KEY="Your DirectAdmin Login Key or Password"
|
|
# export DirectAdmin_MAIN_DOMAIN="Your DirectAdmin Main Domain, NOT Subdomain"
|
|
|
|
# returns 0 means success, otherwise error.
|
|
|
|
######## Public functions #####################
|
|
|
|
#domain keyfile certfile cafile fullchain
|
|
directadmin_deploy() {
|
|
_cdomain="$1"
|
|
_ckey="$2"
|
|
_ccert="$3"
|
|
_cca="$4"
|
|
_cfullchain="$5"
|
|
|
|
_debug _cdomain "$_cdomain"
|
|
_debug _ckey "$_ckey"
|
|
_debug _ccert "$_ccert"
|
|
_debug _cca "$_cca"
|
|
_debug _cfullchain "$_cfullchain"
|
|
|
|
if [ -z "$DirectAdmin_ENDPOINT" ]; then
|
|
_err "DirectAdmin_ENDPOINT is not defined."
|
|
return 1
|
|
else
|
|
_savedomainconf DirectAdmin_ENDPOINT "$DirectAdmin_ENDPOINT"
|
|
fi
|
|
if [ -z "$DirectAdmin_USERNAME" ]; then
|
|
_err "DirectAdmin_USERNAME is not defined."
|
|
return 1
|
|
else
|
|
_savedomainconf DirectAdmin_USERNAME "$DirectAdmin_USERNAME"
|
|
fi
|
|
if [ -z "$DirectAdmin_KEY" ]; then
|
|
_err "DirectAdmin_KEY is not defined."
|
|
return 1
|
|
else
|
|
_savedomainconf DirectAdmin_KEY "$DirectAdmin_KEY"
|
|
fi
|
|
if [ -z "$DirectAdmin_MAIN_DOMAIN" ]; then
|
|
_err "DirectAdmin_MAIN_DOMAIN is not defined."
|
|
return 1
|
|
else
|
|
_savedomainconf DirectAdmin_MAIN_DOMAIN "$DirectAdmin_MAIN_DOMAIN"
|
|
fi
|
|
|
|
_info "Deploying certificate to DirectAdmin..."
|
|
|
|
# upload certificate
|
|
string_cfullchain=$(sed 's/$/\\n/' "$_cfullchain" | tr -d '\n')
|
|
string_key=$(sed 's/$/\\n/' "$_ckey" | tr -d '\n')
|
|
|
|
_request_body="{\"domain\":\"$DirectAdmin_MAIN_DOMAIN\",\"action\":\"save\",\"type\":\"paste\",\"certificate\":\"$string_key\n$string_cfullchain\n\"}"
|
|
_debug _request_body "$_request_body"
|
|
_debug DirectAdmin_ENDPOINT "$DirectAdmin_ENDPOINT"
|
|
_debug DirectAdmin_USERNAME "$DirectAdmin_USERNAME"
|
|
_debug DirectAdmin_KEY "$DirectAdmin_KEY"
|
|
_debug DirectAdmin_MAIN_DOMAIN "$DirectAdmin_MAIN_DOMAIN"
|
|
_response=$(_post "$_request_body" "https://$DirectAdmin_USERNAME:$DirectAdmin_KEY@$DirectAdmin_ENDPOINT/CMD_API_SSL" "" "POST" "application/json")
|
|
|
|
if _contains "$_response" "error=1"; then
|
|
_err "Error in deploying $_cdomain certificate to DirectAdmin Domain $DirectAdmin_MAIN_DOMAIN."
|
|
_err "$_response"
|
|
return 1
|
|
fi
|
|
|
|
_info "$_response"
|
|
_info "Domain $_cdomain certificate successfully deployed to DirectAdmin Domain $DirectAdmin_MAIN_DOMAIN."
|
|
|
|
return 0
|
|
}
|