diff --git a/dnsapi/dns_ali.sh b/dnsapi/dns_ali.sh index 752709d1..1ca22a9f 100644 --- a/dnsapi/dns_ali.sh +++ b/dnsapi/dns_ali.sh @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh Ali_API="https://alidns.aliyuncs.com/" @@ -28,11 +28,7 @@ dns_ali_add() { _add_record_query "$_domain" "$_sub_domain" "$txtvalue" - if ! _ali_rest; then - return 1 - fi - - return 0 + _ali_rest } dns_ali_rm() { @@ -72,8 +68,8 @@ _get_root() { } _ali_rest() { - signature=$(echo -n "GET&%2F&$(_urlencode "$query")" | _hmac "sha1" "$(_hex "$Ali_Secret&")" | _base64) - signature=$(_urlencode "$signature") + signature=$(echo -n "GET&%2F&$(_ali_urlencode "$query")" | _hmac "sha1" "$(_hex "$Ali_Secret&")" | _base64) + signature=$(_ali_urlencode "$signature") url="$Ali_API?$query&Signature=$signature" if ! response="$(_get "$url")"; then @@ -93,12 +89,10 @@ _ali_rest() { return 0 } -_urlencode() { - local dataLength="${#1}" - local index - - for ((index = 0; index < dataLength; index++)); do - char="${1:index:1}" +_ali_urlencode() { + echo -n "$1" \ + | sed -e 's/\(.\)/\1\n/g' \ + | while read -r char; do case $char in [a-zA-Z0-9.~_-]) printf "%s" "$char" ;; @@ -117,7 +111,7 @@ _check_exist_query() { query=$query'&Format=json' query=$query'&RRKeyWord=_acme-challenge' query=$query'&SignatureMethod=HMAC-SHA1' - query=$query"&SignatureNonce=$(cat /proc/sys/kernel/random/uuid)" + query=$query"&SignatureNonce=`< /dev/urandom tr -dc A-Za-z | head -c 16`" query=$query'&SignatureVersion=1.0' query=$query'&Timestamp='$(_timestamp) query=$query'&TypeKeyWord=TXT' @@ -132,7 +126,7 @@ _add_record_query() { query=$query'&Format=json' query=$query'&RR='$2 query=$query'&SignatureMethod=HMAC-SHA1' - query=$query"&SignatureNonce=$(cat /proc/sys/kernel/random/uuid)" + query=$query"&SignatureNonce=`< /dev/urandom tr -dc A-Za-z | head -c 16`" query=$query'&SignatureVersion=1.0' query=$query'&Timestamp='$(_timestamp) query=$query'&Type=TXT' @@ -147,7 +141,7 @@ _delete_record_query() { query=$query'&Format=json' query=$query'&RecordId='$1 query=$query'&SignatureMethod=HMAC-SHA1' - query=$query"&SignatureNonce=$(cat /proc/sys/kernel/random/uuid)" + query=$query"&SignatureNonce=`< /dev/urandom tr -dc A-Za-z | head -c 16`" query=$query'&SignatureVersion=1.0' query=$query'&Timestamp='$(_timestamp) query=$query'&Version=2015-01-09' @@ -160,7 +154,7 @@ _describe_records_query() { query=$query'&DomainName='$1 query=$query'&Format=json' query=$query'&SignatureMethod=HMAC-SHA1' - query=$query"&SignatureNonce=$(cat /proc/sys/kernel/random/uuid)" + query=$query"&SignatureNonce=`< /dev/urandom tr -dc A-Za-z | head -c 16`" query=$query'&SignatureVersion=1.0' query=$query'&Timestamp='$(_timestamp) query=$query'&Version=2015-01-09'