acooler15
4 years ago
1 changed files with 338 additions and 0 deletions
-
338deploy/alicdn.sh
@ -0,0 +1,338 @@ |
|||||
|
#!/usr/bin/env sh |
||||
|
|
||||
|
# Script to create certificate to Aliyun CDN |
||||
|
# |
||||
|
# This deployment required following variables |
||||
|
# export ALI_CDN_KEY="LTqIA87hOKdjevsf5" |
||||
|
# export ALI_CDN_SECRET="0p5EYueFNq501xnCPzKNbx6K51qPH2" |
||||
|
# export Ali_CDN_DOMAIN="cdn.example.com" |
||||
|
# If you have more than one domain, just |
||||
|
# export Ali_CDN_DOMAIN="cdn1.example.com,cdn2.example.com" |
||||
|
# |
||||
|
# If ALI_CDN_KEY and ALI_CDN_SECRET are not set, |
||||
|
# Ali_key and Ali_Secret will be used. (see dns/dns_ali.sh) |
||||
|
# |
||||
|
# AliYun Authentication must have "AliyunCDNFullAccess" permission, |
||||
|
# May also need to "AliyunYundunCertFullAccess" permissions. |
||||
|
# |
||||
|
# Thanks: |
||||
|
# This script references dns/dns_ali.sh and pull request #2772 |
||||
|
|
||||
|
######## Public functions ##################### |
||||
|
Ali_CDN_API="https://cdn.aliyuncs.com/" |
||||
|
|
||||
|
alicdn_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" |
||||
|
|
||||
|
_info "$(__green "===Starting alicdn deploy===")" |
||||
|
|
||||
|
_getdeployconf ALI_CDN_KEY |
||||
|
_getdeployconf ALI_CDN_SECRET |
||||
|
_getdeployconf Ali_CDN_DOMAIN |
||||
|
|
||||
|
if [ -z "${ALI_CDN_KEY}" ] || [ -z "${ALI_CDN_SECRET}" ]; then |
||||
|
_info "Not set variables ALI_CDN_KEY and ALI_CDN_SECRET" |
||||
|
_info "Will use Ali_Key and Ali_Secret" |
||||
|
ALI_CDN_KEY="$(_readaccountconf_mutable Ali_Key)" |
||||
|
ALI_CDN_SECRET="$(_readaccountconf_mutable Ali_Secret)" |
||||
|
if [ -z "${ALI_CDN_KEY}" ] || [ -z "${ALI_CDN_SECRET}" ]; then |
||||
|
_err "You don't specify aliyun api key and secret yet." |
||||
|
return 1 |
||||
|
fi |
||||
|
else |
||||
|
#save ALI_CDN_KEY and ALI_CDN_SECRET. |
||||
|
_savedeployconf ALI_CDN_KEY "$ALI_CDN_KEY" |
||||
|
_savedeployconf ALI_CDN_SECRET "$ALI_CDN_SECRET" |
||||
|
fi |
||||
|
|
||||
|
if [ -z "${Ali_CDN_DOMAIN}" ]; then |
||||
|
Ali_CDN_DOMAIN="" |
||||
|
_err "You don't specify Ali_CDN_DOMAIN yet." |
||||
|
return 1 |
||||
|
fi |
||||
|
#save Ali_CDN_DOMAIN. |
||||
|
_savedeployconf Ali_CDN_DOMAIN "$Ali_CDN_DOMAIN" |
||||
|
|
||||
|
_debug ALI_CDN_KEY "${ALI_CDN_KEY}" |
||||
|
_debug ALI_CDN_SECRET "$ALI_CDN_SECRET" |
||||
|
_debug Ali_CDN_DOMAIN "$Ali_CDN_DOMAIN" |
||||
|
|
||||
|
## upload certificate |
||||
|
_Ali_SSLPub=$(grep -Ev '^$' "$_cfullchain" | _ali_url_encode) |
||||
|
_Ali_SSLPri=$(_ali_url_encode <"$_ckey") |
||||
|
|
||||
|
query='' |
||||
|
query=$query'AccessKeyId='${ALI_CDN_KEY} |
||||
|
query=$query'&Action=BatchSetCdnDomainServerCertificate' |
||||
|
query=$query'&CertName='$(_ali_urlencode "$_cdomain") |
||||
|
query=$query'&CertType=upload' |
||||
|
query=$query'&DomainName='$(_ali_urlencode "$Ali_CDN_DOMAIN") |
||||
|
query=$query'&ForceSet=1' |
||||
|
query=$query'&Format=json' |
||||
|
query=$query'&SSLPri='${_Ali_SSLPri} |
||||
|
query=$query'&SSLProtocol=on' |
||||
|
query=$query'&SSLPub='${_Ali_SSLPub} |
||||
|
query=$query'&SignatureMethod=HMAC-SHA1' |
||||
|
query=$query'&SignatureNonce='$(_ali_nonce) |
||||
|
query=$query'&SignatureVersion=1.0' |
||||
|
query=$query'&Timestamp='$(_timestamp) |
||||
|
query=$query'&Version=2018-05-10' |
||||
|
_debug2 signature_source "$(printf "%s" "GET&%2F&$(_ali_urlencode "$query")")" |
||||
|
signature=$(printf "%s" "GET&%2F&$(_ali_urlencode "$query")" | _hmac "sha1" "$(printf "%s" "$ALI_CDN_SECRET&" | _hex_dump | tr -d " ")" | _base64) |
||||
|
signature=$(_ali_urlencode "$signature") |
||||
|
url="$Ali_CDN_API?$query&Signature=$signature" |
||||
|
|
||||
|
if ! response="$(_get "$url")"; then |
||||
|
_err "Error <$1>" |
||||
|
return 1 |
||||
|
fi |
||||
|
_debug response "$response" |
||||
|
message="$(echo "$response" | _egrep_o "\"Message\":\"[^\"]*\"" | cut -d : -f 2- | tr -d \")" |
||||
|
if [ "$message" ]; then |
||||
|
_err "$message" |
||||
|
return 1 |
||||
|
fi |
||||
|
_info "Domain $_cdomain certificate has been deployed successfully" |
||||
|
_info "$(__green "===End alicdn deploy===")" |
||||
|
return 0 |
||||
|
} |
||||
|
|
||||
|
#################### Private functions below ################################## |
||||
|
_ali_url_encode() { |
||||
|
_hex_str=$(_hex_dump) |
||||
|
_debug3 "_url_encode" |
||||
|
_debug3 "_hex_str" "$_hex_str" |
||||
|
for _hex_code in $_hex_str; do |
||||
|
#upper case |
||||
|
case "${_hex_code}" in |
||||
|
"41") |
||||
|
printf "%s" "A" |
||||
|
;; |
||||
|
"42") |
||||
|
printf "%s" "B" |
||||
|
;; |
||||
|
"43") |
||||
|
printf "%s" "C" |
||||
|
;; |
||||
|
"44") |
||||
|
printf "%s" "D" |
||||
|
;; |
||||
|
"45") |
||||
|
printf "%s" "E" |
||||
|
;; |
||||
|
"46") |
||||
|
printf "%s" "F" |
||||
|
;; |
||||
|
"47") |
||||
|
printf "%s" "G" |
||||
|
;; |
||||
|
"48") |
||||
|
printf "%s" "H" |
||||
|
;; |
||||
|
"49") |
||||
|
printf "%s" "I" |
||||
|
;; |
||||
|
"4a") |
||||
|
printf "%s" "J" |
||||
|
;; |
||||
|
"4b") |
||||
|
printf "%s" "K" |
||||
|
;; |
||||
|
"4c") |
||||
|
printf "%s" "L" |
||||
|
;; |
||||
|
"4d") |
||||
|
printf "%s" "M" |
||||
|
;; |
||||
|
"4e") |
||||
|
printf "%s" "N" |
||||
|
;; |
||||
|
"4f") |
||||
|
printf "%s" "O" |
||||
|
;; |
||||
|
"50") |
||||
|
printf "%s" "P" |
||||
|
;; |
||||
|
"51") |
||||
|
printf "%s" "Q" |
||||
|
;; |
||||
|
"52") |
||||
|
printf "%s" "R" |
||||
|
;; |
||||
|
"53") |
||||
|
printf "%s" "S" |
||||
|
;; |
||||
|
"54") |
||||
|
printf "%s" "T" |
||||
|
;; |
||||
|
"55") |
||||
|
printf "%s" "U" |
||||
|
;; |
||||
|
"56") |
||||
|
printf "%s" "V" |
||||
|
;; |
||||
|
"57") |
||||
|
printf "%s" "W" |
||||
|
;; |
||||
|
"58") |
||||
|
printf "%s" "X" |
||||
|
;; |
||||
|
"59") |
||||
|
printf "%s" "Y" |
||||
|
;; |
||||
|
"5a") |
||||
|
printf "%s" "Z" |
||||
|
;; |
||||
|
|
||||
|
#lower case |
||||
|
"61") |
||||
|
printf "%s" "a" |
||||
|
;; |
||||
|
"62") |
||||
|
printf "%s" "b" |
||||
|
;; |
||||
|
"63") |
||||
|
printf "%s" "c" |
||||
|
;; |
||||
|
"64") |
||||
|
printf "%s" "d" |
||||
|
;; |
||||
|
"65") |
||||
|
printf "%s" "e" |
||||
|
;; |
||||
|
"66") |
||||
|
printf "%s" "f" |
||||
|
;; |
||||
|
"67") |
||||
|
printf "%s" "g" |
||||
|
;; |
||||
|
"68") |
||||
|
printf "%s" "h" |
||||
|
;; |
||||
|
"69") |
||||
|
printf "%s" "i" |
||||
|
;; |
||||
|
"6a") |
||||
|
printf "%s" "j" |
||||
|
;; |
||||
|
"6b") |
||||
|
printf "%s" "k" |
||||
|
;; |
||||
|
"6c") |
||||
|
printf "%s" "l" |
||||
|
;; |
||||
|
"6d") |
||||
|
printf "%s" "m" |
||||
|
;; |
||||
|
"6e") |
||||
|
printf "%s" "n" |
||||
|
;; |
||||
|
"6f") |
||||
|
printf "%s" "o" |
||||
|
;; |
||||
|
"70") |
||||
|
printf "%s" "p" |
||||
|
;; |
||||
|
"71") |
||||
|
printf "%s" "q" |
||||
|
;; |
||||
|
"72") |
||||
|
printf "%s" "r" |
||||
|
;; |
||||
|
"73") |
||||
|
printf "%s" "s" |
||||
|
;; |
||||
|
"74") |
||||
|
printf "%s" "t" |
||||
|
;; |
||||
|
"75") |
||||
|
printf "%s" "u" |
||||
|
;; |
||||
|
"76") |
||||
|
printf "%s" "v" |
||||
|
;; |
||||
|
"77") |
||||
|
printf "%s" "w" |
||||
|
;; |
||||
|
"78") |
||||
|
printf "%s" "x" |
||||
|
;; |
||||
|
"79") |
||||
|
printf "%s" "y" |
||||
|
;; |
||||
|
"7a") |
||||
|
printf "%s" "z" |
||||
|
;; |
||||
|
#numbers |
||||
|
"30") |
||||
|
printf "%s" "0" |
||||
|
;; |
||||
|
"31") |
||||
|
printf "%s" "1" |
||||
|
;; |
||||
|
"32") |
||||
|
printf "%s" "2" |
||||
|
;; |
||||
|
"33") |
||||
|
printf "%s" "3" |
||||
|
;; |
||||
|
"34") |
||||
|
printf "%s" "4" |
||||
|
;; |
||||
|
"35") |
||||
|
printf "%s" "5" |
||||
|
;; |
||||
|
"36") |
||||
|
printf "%s" "6" |
||||
|
;; |
||||
|
"37") |
||||
|
printf "%s" "7" |
||||
|
;; |
||||
|
"38") |
||||
|
printf "%s" "8" |
||||
|
;; |
||||
|
"39") |
||||
|
printf "%s" "9" |
||||
|
;; |
||||
|
"2d") |
||||
|
printf "%s" "-" |
||||
|
;; |
||||
|
"5f") |
||||
|
printf "%s" "_" |
||||
|
;; |
||||
|
"2e") |
||||
|
printf "%s" "." |
||||
|
;; |
||||
|
"7e") |
||||
|
printf "%s" "~" |
||||
|
;; |
||||
|
#other hex |
||||
|
*) |
||||
|
printf '%%%s' "$_hex_code" | tr '[:lower:]' '[:upper:]' |
||||
|
;; |
||||
|
esac |
||||
|
done |
||||
|
} |
||||
|
|
||||
|
_ali_urlencode() { |
||||
|
_str=$(printf "%s" "$1" | _ali_url_encode) |
||||
|
printf "%s" "$_str" |
||||
|
} |
||||
|
|
||||
|
_ali_nonce() { |
||||
|
date +"%s%N" |
||||
|
} |
||||
|
|
||||
|
_timestamp() { |
||||
|
date -u +"%Y-%m-%dT%H%%3A%M%%3A%SZ" |
||||
|
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue