Browse Source

Removed jq requirement

pull/6631/head
Bob Perper 2 days ago
parent
commit
162cfebbbb
  1. 55
      dnsapi/dns_qc.sh

55
dnsapi/dns_qc.sh

@ -18,11 +18,6 @@ dns_qc_add() {
txtvalue=$2
_debug "Enter dns_qc_add fulldomain: $fulldomain, txtvalue: $txtvalue"
if ! _exists jq; then
_err "In dns_qc jq not found."
return 1
fi
QC_API_KEY="${QC_API_KEY:-$(_readaccountconf_mutable QC_API_KEY)}"
QC_API_EMAIL="${QC_API_EMAIL:-$(_readaccountconf_mutable QC_API_EMAIL)}"
@ -108,23 +103,43 @@ dns_qc_rm() {
return 1
fi
response=$(echo "$response" | jq ".result[] | select(.id) | select(.content == \"$txtvalue\") | select(.type == \"TXT\")")
_debug "get txt response" "$response"
if [ "${response}" = "" ]; then
_info "Don't need to remove txt records."
else
record_id=$(echo "$response" | grep \"id\" | awk -F ' ' '{print $2}' | sed 's/,$//')
_debug "txt record_id" "$record_id"
if [ -z "$record_id" ]; then
_err "Can not get txt record id to remove. Run in debug mode."
return 1
fi
if ! _qc_rest DELETE "zones/$_domain_id/records/$record_id"; then
_info "Delete txt record error."
return 1
_debug "Pre-jq response:" "$response"
# Do not use jq or subsequent code
#response=$(echo "$response" | jq ".result[] | select(.id) | select(.content == \"$txtvalue\") | select(.type == \"TXT\")")
#_debug "get txt response" "$response"
#if [ "${response}" = "" ]; then
# _info "Don't need to remove txt records."
# return 0
#fi
#record_id=$(echo "$response" | grep \"id\" | awk -F ' ' '{print $2}' | sed 's/,$//')
#_debug "txt record_id" "$record_id"
#Instead of jq
array=$(echo $response | grep -o '\[[^]]*\]' | sed 's/^\[\(.*\)\]$/\1/')
if [ -z "$array" ]; then
_err "Expected array in QC response: $response"
return 1
fi
# Temporary file to hold matched content (one per line)
tmpfile=$(_mktemp)
echo $array | grep -o '{[^}]*}' | sed 's/^{//;s/}$//' > "$tmpfile"
while IFS= read -r obj || [ -n "$obj" ]; do
if echo $obj | grep -q '"TXT"' && echo $obj | grep -q '"id"' && echo $obj | grep -q $txtvalue ; then
_debug "response includes" "$obj"
record_id=$(echo $obj | sed 's/^\"id\":\([0-9]\+\).*/\1/' )
break
fi
_info "TXT Record ID: $record_id successfully deleted"
done < $tmpfile
rm $tmpfile
if [ -z "$record_id" ]; then
_info "TXT record, or $txtvalue not found, noting to remove"
return 0
fi
#End of jq replacement
if ! _qc_rest DELETE "zones/$_domain_id/records/$record_id"; then
_info "Delete txt record error."
return 1
fi
_info "TXT Record ID: $record_id successfully deleted"
return 0
}

Loading…
Cancel
Save