From 3c67adbb1d09d9f6a1d17772735a0065ed102ac6 Mon Sep 17 00:00:00 2001 From: coolsnowwolf Date: Fri, 19 Apr 2019 11:33:45 +0800 Subject: [PATCH] ddns-scripts_aliyun: support update IPv6 AAAA record at the same FQDN --- package/lean/ddns-scripts_aliyun/Makefile | 2 +- .../ddns-scripts_aliyun/update_aliyun_com.sh | 43 ++++++++++++------- 2 files changed, 29 insertions(+), 16 deletions(-) diff --git a/package/lean/ddns-scripts_aliyun/Makefile b/package/lean/ddns-scripts_aliyun/Makefile index e35cef5a4..db13f949a 100644 --- a/package/lean/ddns-scripts_aliyun/Makefile +++ b/package/lean/ddns-scripts_aliyun/Makefile @@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=ddns-scripts_aliyun PKG_VERSION:=1.0.0 -PKG_RELEASE:=1 +PKG_RELEASE:=2 PKG_LICENSE:=GPLv2 PKG_MAINTAINER:=Sense diff --git a/package/lean/ddns-scripts_aliyun/update_aliyun_com.sh b/package/lean/ddns-scripts_aliyun/update_aliyun_com.sh index 89ee909ce..a80cf29ed 100755 --- a/package/lean/ddns-scripts_aliyun/update_aliyun_com.sh +++ b/package/lean/ddns-scripts_aliyun/update_aliyun_com.sh @@ -196,26 +196,39 @@ enable_domain() { # 获取子域名解析记录列表 describe_domain() { - local value type; local ret=0 + local count value; local ret=0 aliyun_transfer "Action=DescribeSubDomainRecords" "SubDomain=${__HOST}.${__DOMAIN}" || write_log 14 "服务器通信失败" + write_log 7 "获取到解析记录: $(cat "$DATFILE" 2> /dev/null)" json_cleanup; json_load "$(cat "$DATFILE" 2> /dev/null)" >/dev/null 2>&1 - json_get_var value "TotalCount" - if [ $value -eq 0 ]; then + json_get_var count "TotalCount" + if [ $count -eq 0 ]; then write_log 7 "解析记录不存在" ret=1 else - json_select "DomainRecords" >/dev/null 2>&1 - json_select "Record" >/dev/null 2>&1 - json_select 1 >/dev/null 2>&1 - json_get_var value "Locked" - [ $value -ne 0 ] && write_log 14 "解析记录被锁定" - json_get_var __RECID "RecordId" - write_log 7 "获得解析记录ID: ${__RECID}" - json_get_var value "Status" - [ "$value" != "ENABLE" ] && ret=$(( $ret | 2 )) && write_log 7 "解析记录被禁用" - json_get_var type "Type" - json_get_var value "Value" - [ "$type" != "${__TYPE}" -o "$value" != "${__IP}" ] && ret=$(( $ret | 4 )) && write_log 7 "地址或类型需要修改" + local i=1; + while [ $i -le $count ]; do + json_cleanup; json_load "$(cat "$DATFILE" 2> /dev/null)" >/dev/null 2>&1 + json_select "DomainRecords" >/dev/null 2>&1 + json_select "Record" >/dev/null 2>&1 + json_select $i >/dev/null 2>&1 + i=$(( $i + 1 )) + json_get_var value "Type" + if [ "$value" != "${__TYPE}" ]; then + write_log 7 "当前解析类型: ${__TYPE}, 获得不匹配类型: $value" + ret=1; continue + else + ret=0 + json_get_var __RECID "RecordId" + write_log 7 "获得解析记录ID: ${__RECID}, 类型: $value" + json_get_var value "Locked" + [ $value -ne 0 ] && write_log 14 "解析记录被锁定" + json_get_var value "Status" + [ "$value" != "ENABLE" ] && ret=$(( $ret | 2 )) && write_log 7 "解析记录被禁用" + json_get_var value "Value" + [ "$value" != "${__IP}" ] && ret=$(( $ret | 4 )) && write_log 7 "地址需要修改" + break + fi + done fi return $ret }