Newer
Older
#!/usr/bin/with-contenv sh
cloudflare() {
curl -sSL \
-H "Accept: application/json" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type:application/json" \
"$@"
}
verifyToken() {
cloudflare -o /dev/null "$CF_API"/user/tokens/verify
}
getZoneId() {
Result=$(cloudflare "$CF_API/zones?name=$ZONE")
echo $Result | jq -rc '.result[0].id'
}
getDnsRecordName() {
else
echo $ZONE
fi
}
getDnsRecordId() {
cloudflare "$CF_API/zones/$1/dns_records?type=$RRTYPE&name=$2" | jq -r '.result[0].id'
}
createDnsRecord() {
cloudflare -X POST -d "{\"type\": \"$RRTYPE\",\"name\":\"$2\",\"content\":\"$3\",\"proxied\":true,\"ttl\":1 }" "$CF_API/zones/$1/dns_records" | jq -r '.result.id'
}
updateDnsRecord() {
cloudflare -X PATCH -d "{\"type\": \"$RRTYPE\",\"name\":\"$3\",\"content\":\"$4\",\"proxied\":true,\"ttl\":1 }" "$CF_API/zones/$1/dns_records/$2" | jq -r '.result.id'
}
echo "Verifying token..."
verifyToken
echo "Token verified!"
echo "Retreiving Zone ID..."
CFZoneId=$(getZoneId)
echo "Zone ID found: $CFZoneId"
echo "Finding DNS record..."
CFDnsRecordName=$(getDnsRecordName)
CFDnsRecordId=$(getDnsRecordId $CFZoneId $CFDnsRecordName)
echo $CFDnsRecordId
if [ "$CFDnsRecordId" != "null" ]; then
echo "DNS Record found: $CFDnsRecordId, updating..."
CFDnsRecordId=$(updateDnsRecord $CFZoneId $CFDnsRecordId $CFDnsRecordName $IP_ADDRESS)
echo "Updated DNS Record: $CFDnsRecordId"
else
echo "No DNS Record for $CFDnsRecordName, creating..."
CFDnsRecordId=$(createDnsRecord $CFZoneId $CFDnsRecordName $IP_ADDRESS)
echo $CFDnsRecordId
echo "Created DNS Record: $CFDnsRecordId"
fi