mirror of
				https://github.com/acmesh-official/acme.sh
				synced 2025-11-04 13:55:56 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			87 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
#!/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
 | 
						|
}
 |