#!/bin/bash


# Telegram Bot 相关参数
telegram_bot_token="botid:xxx"
telegram_chat_id="-id"

# Cloudflare 相关参数
email="[email protected]"
api_key="xxx"
zone_id="xxx"
hostname="xxx.eu.org"
recordType="AAAA"
# 小云朵
proxy="false"


# 获取当前 IP 地址
ipv4=$(curl 4.ipw.cn)
ipv6=$(curl 6.ipw.cn)


# 更新 DNS 记录

listDnsApi="https://api.cloudflare.com/client/v4/zones/${zone_id}/dns_records?type=${recordType}&name=${hostname}"
createDnsApi="https://api.cloudflare.com/client/v4/zones/${zone_id}/dns_records"

res=$(curl -s -X GET "$listDnsApi" -H "X-Auth-Email:$email" -H "X-Auth-Key:$api_key" -H "Content-Type:application/json")
#当前记录
recordId=$(echo "$res" | jq -r ".result[0].id")
recordIp=$(echo "$res" | jq -r ".result[0].content")

    if [[ $recordIp = "$ipv6" ]]; then
      echo "更新失败,当前记录不需要修改"
      resSuccess=false
    elif [[ $recordId = "null" ]]; then
      res=$(curl -s -X POST "$createDnsApi" -H "X-Auth-Email:$email" -H "X-Auth-Key:$api_key" -H "Content-Type:application/json" --data "{\"type\":\"$recordType\",\"name\":\"$hostname\",\"content\":\"$ipv6\",\"proxied\":$proxy}")
      resSuccess=$(echo "$res" | jq -r ".success")
    else
      updateDnsApi="https://api.cloudflare.com/client/v4/zones/${zone_id}/dns_records/${recordId}"
      res=$(curl -s -X PUT "$updateDnsApi"  -H "X-Auth-Email:$email" -H "X-Auth-Key:$api_key" -H "Content-Type:application/json" --data "{\"type\":\"$recordType\",\"name\":\"$hostname\",\"content\":\"$ipv6\",\"proxied\":$proxy}")
      resSuccess=$(echo "$res" | jq -r ".success")
    fi

# 发送 Telegram 消息
message=""
if [[ $resSuccess = "true" ]]; then
  message="$hostname 更新成功"
  
curl -s -X POST "https://tg.xavi.eu.org/bot$telegram_bot_token/sendMessage" \
     -d "chat_id=$telegram_chat_id" \
     -d "text=$message"
else
  message="$hostname 更新失败"
fi