From bbe762c46fca199140d11890503532c20e14d495 Mon Sep 17 00:00:00 2001 From: xiu2 <54703944+XIU2@users.noreply.github.com> Date: Sun, 6 Oct 2024 14:13:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E6=94=AF=E6=8C=81=20API?= =?UTF-8?q?=20=E4=BB=A4=E7=89=8C=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script/README.md | 3 +++ script/cfst_ddns.bat | 11 +++++++++-- script/cfst_ddns.sh | 26 ++++++++++++++++++-------- 3 files changed, 30 insertions(+), 10 deletions(-) diff --git a/script/README.md b/script/README.md index 9de6b29..44c7af0 100644 --- a/script/README.md +++ b/script/README.md @@ -118,6 +118,9 @@ **** +#### 2024年10月06日,版本 v1.0.5 + - **1. 新增** 支持 API 令牌方式(相比 API 密钥这种全局权限的,API 令牌可以自由控制权限) + #### 2021年12月17日,版本 v1.0.4 - **1. 新增** 找不到满足条件的 IP 就一直循环测速功能(默认注释) - **2. 优化** 代码 diff --git a/script/cfst_ddns.bat b/script/cfst_ddns.bat index ba3affc..5611416 100644 --- a/script/cfst_ddns.bat +++ b/script/cfst_ddns.bat @@ -1,6 +1,6 @@ :: -------------------------------------------------------------- :: 项目: CloudflareSpeedTest 自动更新域名解析记录 -:: 版本: 1.0.4 +:: 版本: 1.0.5 :: 作者: XIU2 :: 项目: https://github.com/XIU2/CloudflareSpeedTest :: -------------------------------------------------------------- @@ -26,11 +26,18 @@ for /f "tokens=1 delims=," %%i in (result_ddns.txt) do ( echo CloudflareST 测速结果 IP 数量为 0,跳过下面步骤... goto :END ) +:: API 密钥方式(全局权限) curl -X PUT "https://api.cloudflare.com/client/v4/zones/域名ID/dns_records/域名解析记录ID" ^ -H "X-Auth-Email: 账号邮箱" ^ - -H "X-Auth-Key: 前面获取的 API 令牌" ^ + -H "X-Auth-Key: 前面获取的 API 密钥" ^ -H "Content-Type: application/json" ^ --data "{\"type\":\"A\",\"name\":\"完整域名\",\"content\":\"%%i\",\"ttl\":1,\"proxied\":true}" +:: API 令牌方式(自定义权限),如果要使用这种方式,可以把上面的删除或注释,然后把下面的行首 "::" 注释符删除即可。 +:: curl -X PUT "https://api.cloudflare.com/client/v4/zones/域名ID/dns_records/域名解析记录ID" ^ +:: -H "Authorization: Bearer 前面获取的 API 令牌" ^ +:: -H "Content-Type: application/json" ^ +:: --data "{\"type\":\"A\",\"name\":\"完整域名\",\"content\":\"%%i\",\"ttl\":1,\"proxied\":true}" + goto :END ) ) diff --git a/script/cfst_ddns.sh b/script/cfst_ddns.sh index b4f927c..eab306a 100644 --- a/script/cfst_ddns.sh +++ b/script/cfst_ddns.sh @@ -3,7 +3,7 @@ PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH # -------------------------------------------------------------- # 项目: CloudflareSpeedTest 自动更新域名解析记录 -# 版本: 1.0.4 +# 版本: 1.0.5 # 作者: XIU2 # 项目: https://github.com/XIU2/CloudflareSpeedTest # -------------------------------------------------------------- @@ -17,10 +17,10 @@ _READ() { [[ -z "${ZONE_ID}" ]] && echo -e "[错误] 缺少配置项 [ZONE_ID] !" && exit 1 DNS_RECORDS_ID=$(echo "${CONFIG}"|grep 'DNS_RECORDS_ID='|awk -F '=' '{print $NF}') [[ -z "${DNS_RECORDS_ID}" ]] && echo -e "[错误] 缺少配置项 [DNS_RECORDS_ID] !" && exit 1 - EMAIL=$(echo "${CONFIG}"|grep 'EMAIL='|awk -F '=' '{print $NF}') - [[ -z "${EMAIL}" ]] && echo -e "[错误] 缺少配置项 [EMAIL] !" && exit 1 KEY=$(echo "${CONFIG}"|grep 'KEY='|awk -F '=' '{print $NF}') [[ -z "${KEY}" ]] && echo -e "[错误] 缺少配置项 [KEY] !" && exit 1 + EMAIL=$(echo "${CONFIG}"|grep 'EMAIL='|awk -F '=' '{print $NF}') + [[ -z "${EMAIL}" ]] && echo -e "[信息] 缺少配置项 [EMAIL],由 [API 密钥] 方式转为 [API 令牌] 方式!" TYPE=$(echo "${CONFIG}"|grep 'TYPE='|awk -F '=' '{print $NF}') [[ -z "${TYPE}" ]] && echo -e "[错误] 缺少配置项 [TYPE] !" && exit 1 NAME=$(echo "${CONFIG}"|grep 'NAME='|awk -F '=' '{print $NF}') @@ -43,11 +43,21 @@ _UPDATE() { echo "CloudflareST 测速结果 IP 数量为 0,跳过下面步骤..." exit 0 fi - curl -X PUT "https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/dns_records/${DNS_RECORDS_ID}" \ - -H "X-Auth-Email: ${EMAIL}" \ - -H "X-Auth-Key: ${KEY}" \ - -H "Content-Type: application/json" \ - --data "{\"type\":\"${TYPE}\",\"name\":\"${NAME}\",\"content\":\"${CONTENT}\",\"ttl\":${TTL},\"proxied\":${PROXIED}}" + # 如果 EMAIL 变量是空的,那么就代表要使用 API 令牌方式 + if [[ -n "${EMAIL}" ]]; then + # API 密钥方式(全局权限) + curl -X PUT "https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/dns_records/${DNS_RECORDS_ID}" \ + -H "X-Auth-Email: ${EMAIL}" \ + -H "X-Auth-Key: ${KEY}" \ + -H "Content-Type: application/json" \ + --data "{\"type\":\"${TYPE}\",\"name\":\"${NAME}\",\"content\":\"${CONTENT}\",\"ttl\":${TTL},\"proxied\":${PROXIED}}" + else + # API 令牌方式(自定义权限) + curl -X PUT "https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/dns_records/${DNS_RECORDS_ID}" \ + -H "Authorization: Bearer ${KEY}" \ + -H "Content-Type: application/json" \ + --data "{\"type\":\"${TYPE}\",\"name\":\"${NAME}\",\"content\":\"${CONTENT}\",\"ttl\":${TTL},\"proxied\":${PROXIED}}" + fi } _READ