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.
86 lines
2.9 KiB
86 lines
2.9 KiB
#!/usr/bin/env sh
|
|
|
|
# Here is a script to deploy cert to edgio using its API
|
|
# https://docs.edg.io/guides/v7/develop/rest_api/authentication
|
|
# https://docs.edg.io/rest_api/#tag/tls-certs/operation/postConfigV01TlsCerts
|
|
|
|
# This deployment required following variables
|
|
# export EDGIO_CLIENT_ID="Your Edgio Client ID"
|
|
# export EDGIO_CLIENT_SECRET="Your Edgio Client Secret"
|
|
# export EDGIO_ENVIRONMENT_ID="Your Edgio Environment ID"
|
|
|
|
# If have more than one Environment ID
|
|
# export EDGIO_ENVIRONMENT_ID="ENVIRONMENT_ID_1 ENVIRONMENT_ID_2"
|
|
|
|
# returns 0 means success, otherwise error.
|
|
|
|
######## Public functions #####################
|
|
|
|
#domain keyfile certfile cafile fullchain
|
|
edgio_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 "$EDGIO_CLIENT_ID" ]; then
|
|
_err "EDGIO_CLIENT_ID is not defined."
|
|
return 1
|
|
else
|
|
_savedomainconf EDGIO_CLIENT_ID "$EDGIO_CLIENT_ID"
|
|
fi
|
|
|
|
if [ -z "$EDGIO_CLIENT_SECRET" ]; then
|
|
_err "EDGIO_CLIENT_SECRET is not defined."
|
|
return 1
|
|
else
|
|
_savedomainconf EDGIO_CLIENT_SECRET "$EDGIO_CLIENT_SECRET"
|
|
fi
|
|
|
|
if [ -z "$EDGIO_ENVIRONMENT_ID" ]; then
|
|
_err "EDGIO_ENVIRONMENT_ID is not defined."
|
|
return 1
|
|
else
|
|
_savedomainconf EDGIO_ENVIRONMENT_ID "$EDGIO_ENVIRONMENT_ID"
|
|
fi
|
|
|
|
_info "Getting access token"
|
|
_data="client_id=$EDGIO_CLIENT_ID&client_secret=$EDGIO_CLIENT_SECRET&grant_type=client_credentials&scope=app.config"
|
|
_debug Get_access_token_data "$_data"
|
|
_response=$(_post "$_data" "https://id.edgio.app/connect/token" "" "POST" "application/x-www-form-urlencoded")
|
|
_debug Get_access_token_response "$_response"
|
|
_access_token=$(echo "$_response" | _json_decode | _egrep_o '"access_token":"[^"]*' | cut -d : -f 2 | tr -d '"')
|
|
_debug _access_token "$_access_token"
|
|
if [ -z "$_access_token" ]; then
|
|
_err "Error in getting access token"
|
|
return 1
|
|
fi
|
|
|
|
_info "Uploading certificate"
|
|
string_ccert=$(sed 's/$/\\n/' "$_ccert" | tr -d '\n')
|
|
string_cca=$(sed 's/$/\\n/' "$_cca" | tr -d '\n')
|
|
string_key=$(sed 's/$/\\n/' "$_ckey" | tr -d '\n')
|
|
|
|
for ENVIRONMENT_ID in $EDGIO_ENVIRONMENT_ID; do
|
|
_data="{\"environment_id\":\"$ENVIRONMENT_ID\",\"primary_cert\":\"$string_ccert\",\"intermediate_cert\":\"$string_cca\",\"private_key\":\"$string_key\"}"
|
|
_debug Upload_certificate_data "$_data"
|
|
_H1="Authorization: Bearer $_access_token"
|
|
_response=$(_post "$_data" "https://edgioapis.com/config/v0.1/tls-certs" "" "POST" "application/json")
|
|
if _contains "$_response" "message"; then
|
|
_err "Error in deploying $_cdomain certificate to Edgio ENVIRONMENT_ID $ENVIRONMENT_ID."
|
|
_err "$_response"
|
|
return 1
|
|
fi
|
|
_debug Upload_certificate_response "$_response"
|
|
_info "Domain $_cdomain certificate successfully deployed to Edgio ENVIRONMENT_ID $ENVIRONMENT_ID."
|
|
done
|
|
|
|
return 0
|
|
}
|