diff --git a/dnsapi/dns_cloudns.sh b/dnsapi/dns_cloudns.sh index 381d17ec..f54743d0 100755 --- a/dnsapi/dns_cloudns.sh +++ b/dnsapi/dns_cloudns.sh @@ -18,7 +18,14 @@ dns_cloudns_add() { return 1 fi - zone="$(_dns_cloudns_get_zone_name "$1")" + res="$(_dns_cloudns_get_zone_name "$1")" + zone="$( echo $res | cut -d ' ' -f 1 )" + master="$( echo $res | cut -d ' ' -f 2 )" + + + _debug master "$master" + + if [ -z "$zone" ]; then _err "Missing DNS zone at ClouDNS. Please log into your control panel and create the required DNS zone for the initial setup." return 1 @@ -28,11 +35,12 @@ dns_cloudns_add() { record=$2 _debug zone "$zone" + _debug host "$host" _debug record "$record" _info "Adding the TXT record for $1" - _dns_cloudns_http_api_call "dns/add-record.json" "domain-name=$zone&record-type=TXT&host=$host&record=$record&ttl=60" + _dns_cloudns_http_api_call "dns/add-record.json" "domain-name=$master&record-type=TXT&host=$host&record=$record&ttl=60" if ! _contains "$response" "\"status\":\"Success\""; then _err "Record cannot be added." return 1 @@ -51,7 +59,13 @@ dns_cloudns_rm() { fi if [ -z "$zone" ]; then - zone="$(_dns_cloudns_get_zone_name "$1")" + #zone="$(_dns_cloudns_get_zone_name "$1")" + res="$(_dns_cloudns_get_zone_name "$1")" + zone=$( echo $res | cut -d ' ' -f 1 ) + master=$( echo $res | cut -d ' ' -f 2 ) + + _debug master "$master" + if [ -z "$zone" ]; then _err "Missing DNS zone at ClouDNS. Please log into your control panel and create the required DNS zone for the initial setup." return 1 @@ -61,7 +75,8 @@ dns_cloudns_rm() { host="$(echo "$1" | sed "s/\.$zone\$//")" record=$2 - _dns_cloudns_http_api_call "dns/records.json" "domain-name=$zone&host=$host&type=TXT" + + _dns_cloudns_http_api_call "dns/records.json" "domain-name=$master&host=$host&type=TXT" if ! _contains "$response" "\"id\":"; then return 1 fi @@ -71,12 +86,13 @@ dns_cloudns_rm() { if [ -n "$record_id" ]; then _debug zone "$zone" + _debug master "$master" _debug host "$host" _debug record "$record" _debug record_id "$record_id" _info "Deleting the TXT record for $1" - _dns_cloudns_http_api_call "dns/delete-record.json" "domain-name=$zone&record-id=$record_id" + _dns_cloudns_http_api_call "dns/delete-record.json" "domain-name=$master&record-id=$record_id" if ! _contains "$response" "\"status\":\"Success\""; then _err "The TXT record for $1 cannot be deleted." @@ -147,8 +163,19 @@ _dns_cloudns_get_zone_name() { _dns_cloudns_http_api_call "dns/get-zone-info.json" "domain-name=$zoneForCheck" + #{"name":"effectivein.com","type":"cloud","zone":"domain","status":"1","cloud-master":"keyindices.net"}% ➜ acme.sh git:(master) curl https://api.cloudns.net/dns/get-zone-info.json\?auth-id\=5164\&auth-password\=JwB3xzNRgMS6rsDEG\&domain-name\=kaicdn.com + #{"name":"kaicdn.com","type":"master","zone":"domain","status":"1"}% + + if ! _contains "$response" "\"status\":\"Failed\""; then - echo "$zoneForCheck" + if _contains "$response" "\"type\":\"cloud\""; then + master=$( echo "$response" | grep -o '"cloud-master":"[^"]*' | grep -o '[^"]*$' ) + else + master="$zoneForCheck" + fi + + echo "$zoneForCheck" "$master" + return 0 fi