add new _url_encode
							parent
							
								
									11927a768e
								
							
						
					
					
						commit
						542d7977db
					
				
							
								
								
									
										248
									
								
								acme.sh
								
								
								
								
							
							
						
						
									
										248
									
								
								acme.sh
								
								
								
								
							| 
						 | 
				
			
			@ -336,15 +336,245 @@ _h2b() {
 | 
			
		|||
  done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#hex string
 | 
			
		||||
_hex() {
 | 
			
		||||
  _str="$1"
 | 
			
		||||
  _str_len=${#_str}
 | 
			
		||||
  _h_i=1
 | 
			
		||||
  while [ "$_h_i" -le "$_str_len" ]; do
 | 
			
		||||
    _str_c="$(printf "%s" "$_str" | cut -c "$_h_i")"
 | 
			
		||||
    printf "%02x" "'$_str_c"
 | 
			
		||||
    _h_i="$(_math "$_h_i" + 1)"
 | 
			
		||||
_is_solaris() {
 | 
			
		||||
  _contains "${__OS__:=$(uname -a)}" "solaris" || _contains "${__OS__:=$(uname -a)}" "SunOS"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#stdin  output hexstr splited by one space
 | 
			
		||||
#input:"abc"
 | 
			
		||||
#output: " 61 62 63"
 | 
			
		||||
_hex_dump() {
 | 
			
		||||
  if _is_solaris; then
 | 
			
		||||
    od -A n -v -t x1 | tr -d "\r\n\t" | tr -s " " | tr -d "\n"
 | 
			
		||||
  else
 | 
			
		||||
    od -A n -v -t x1 | tr -d "\r\n\t" | tr -s " " | sed "s/ $//" | tr -d "\n"
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#url encode, no-preserved chars
 | 
			
		||||
#A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z
 | 
			
		||||
#41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 5a
 | 
			
		||||
 | 
			
		||||
#a  b  c  d  e  f  g  h  i  j  k  l  m  n  o  p  q  r  s  t  u  v  w  x  y  z
 | 
			
		||||
#61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a
 | 
			
		||||
 | 
			
		||||
#0  1  2  3  4  5  6  7  8  9  -  _  .  ~
 | 
			
		||||
#30 31 32 33 34 35 36 37 38 39 2d 5f 2e 7e
 | 
			
		||||
 | 
			
		||||
#stdin stdout
 | 
			
		||||
_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"
 | 
			
		||||
      ;;
 | 
			
		||||
    esac
 | 
			
		||||
  done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -67,7 +67,7 @@ _get_root() {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
_ali_rest() {
 | 
			
		||||
  signature=$(printf "%s" "GET&%2F&$(_ali_urlencode "$query")" | _hmac "sha1" "$(_hex "$Ali_Secret&")" | _base64)
 | 
			
		||||
  signature=$(printf "%s" "GET&%2F&$(_ali_urlencode "$query")" | _hmac "sha1" "$(printf "%s" "$Ali_Secret&" | _hex_dump | sed "s/ //g")" | _base64)
 | 
			
		||||
  signature=$(_ali_urlencode "$signature")
 | 
			
		||||
  url="$Ali_API?$query&Signature=$signature"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -183,7 +183,7 @@ aws_rest() {
 | 
			
		|||
 | 
			
		||||
  _debug2 kSecret "$kSecret"
 | 
			
		||||
 | 
			
		||||
  kSecretH="$(_hex "$kSecret")"
 | 
			
		||||
  kSecretH="$(printf "%s" "$kSecret" | _hex_dump | sed "s/ //g")"
 | 
			
		||||
  _debug2 kSecretH "$kSecretH"
 | 
			
		||||
 | 
			
		||||
  kDateH="$(printf "$RequestDateOnly%s" | _hmac "$Hash" "$kSecretH" hex)"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -124,7 +124,7 @@ _me_rest() {
 | 
			
		|||
  _debug "$ep"
 | 
			
		||||
 | 
			
		||||
  cdate=$(date -u +"%a, %d %b %Y %T %Z")
 | 
			
		||||
  hmac=$(printf "%s" "$cdate" | _hmac sha1 "$(_hex "$ME_Secret")" hex)
 | 
			
		||||
  hmac=$(printf "%s" "$cdate" | _hmac sha1 "$(printf "%s" "$ME_Secret" | _hex_dump | sed "s/ //g")" hex)
 | 
			
		||||
 | 
			
		||||
  export _H1="x-dnsme-apiKey: $ME_Key"
 | 
			
		||||
  export _H2="x-dnsme-requestDate: $cdate"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue