@ -51,7 +51,8 @@ dns_gd_add() {
_add_data = " {\"data\":\" $txtvalue \"} "
for t in $( echo " $response " | tr '{' "\n" | grep " \"name\":\" $_sub_domain \" " | tr ',' "\n" | grep '"data"' | cut -d : -f 2) ; do
_debug2 t " $t "
if [ " $t " ] ; then
# ignore empty (previously removed) records, to prevent useless _acme-challenge TXT entries
if [ " $t " ] && [ " $t " != '""' ] ; then
_add_data = " $_add_data ,{\"data\": $t } "
fi
done
@ -59,13 +60,25 @@ dns_gd_add() {
_info "Adding record"
if _gd_rest PUT " domains/ $_domain /records/TXT/ $_sub_domain " " [ $_add_data ] " ; then
_info "Added, sleeping 10 seconds"
_sleep 10
#todo: check if the record takes effect
return 0
_debug " Checking updated records of ' ${ fulldomain } ' "
if ! _gd_rest GET " domains/ $_domain /records/TXT/ $_sub_domain " ; then
_err " Validating TXT record for ' ${ fulldomain } ' with rest error [ $? ]. " " $response "
return 1
fi
if ! _contains " $response " " $txtvalue " ; then
_err " TXT record ' ${ txtvalue } ' for ' ${ fulldomain } ', value wasn't set! "
return 1
fi
else
_err " Add txt record error, value ' ${ txtvalue } ' for ' ${ fulldomain } ' was not set. "
return 1
fi
_err "Add txt record error."
return 1
_sleep 10
_info " Added TXT record ' ${ txtvalue } ' for ' ${ fulldomain } '. "
return 0
}
#fulldomain
@ -107,11 +120,20 @@ dns_gd_rm() {
fi
done
if [ -z " $_add_data " ] ; then
_add_data = "{\"data\":\"\"}"
# delete empty record
_debug " Delete last record for ' ${ fulldomain } ' "
if ! _gd_rest DELETE " domains/ $_domain /records/TXT/ $_sub_domain " ; then
_err " Cannot delete empty TXT record for ' $fulldomain ' "
return 1
fi
else
# remove specific TXT value, keeping other entries
_debug2 _add_data " $_add_data "
if ! _gd_rest PUT " domains/ $_domain /records/TXT/ $_sub_domain " " [ $_add_data ] " ; then
_err " Cannot update TXT record for ' $fulldomain ' "
return 1
fi
fi
_debug2 _add_data " $_add_data "
_gd_rest PUT " domains/ $_domain /records/TXT/ $_sub_domain " " [ $_add_data ] "
}
#################### Private functions below ##################################
@ -156,15 +178,15 @@ _gd_rest() {
export _H1 = " Authorization: sso-key $GD_Key : $GD_Secret "
export _H2 = "Content-Type: application/json"
if [ " $data " ] ; then
_debug data " $data "
if [ " $data " ] || [ " $m " = "DELETE" ] ; then
_debug " data ( $m ): " " $data "
response = " $( _post " $data " " $GD_Api / $ep " "" " $m " ) "
else
response = " $( _get " $GD_Api / $ep " ) "
fi
if [ " $? " != "0" ] ; then
_err " error $ep "
_err " error on rest call ( $m ): $ep "
return 1
fi
_debug2 response " $response "