[MikroTik Script] Cloudflare API v4 DDNS

:global currentIp
:local newIp [:resolve myip.opendns.com server=208.67.222.222]

:if ($newIp != $currentIp) do={
  :local cfToken "******"
  :local cfZoneId "******"
  :local cfDnsId "******"
  :local dnsType "A"
  :local dnsName "kct1.dc.diepxuan.io.vn"
  :local dnsTTL "1"
  :local dnsProxied "false"

  :local apiUrl "https://api.cloudflare.com/client/v4/zones/$cfZoneId/dns_records/$cfDnsId"

  :local headers "Authorization: Bearer $cfToken"
  :local payload "{\"type\":\"$dnsType\",\"name\":\"$dnsName\",\"content\":\"$newIp\",\"ttl\":$dnsTTL,\"proxied\":$dnsProxied}"

  :do {
    :local response [/tool fetch http-method="put" url=$apiUrl http-header-field=$headers http-data=$payload as-value output=user]

    :if ($response->"status" = "finished") do={
        :log info "DDNS: $dnsName changed $currentIp to $newIp"

        # update $currentIp with the new one
        :set currentIp $newIp
    }
  } on-error {
    :log error "DDNS: failed to change $dnsName IP $currentIp to $newIp"
  }
}
/* Ensure CSS applies */