acmesh-official / acme.sh

A pure Unix shell script implementing ACME client protocol
https://acme.sh
GNU General Public License v3.0
39.29k stars 4.96k forks source link

Report bugs to HuaweiCloud DNS API #3265

Open eastonman opened 3 years ago

eastonman commented 3 years ago

Please report here if you encounter any bugs related to HuaweiCloud DNS API

tutugreen commented 2 years ago

Hi,发现一些小问题。

_get_zoneid

https://github.com/acmesh-official/acme.sh/blob/1476f83ba71955feb386e3a2f194cb07b6f8f9cc/dnsapi/dns_huaweicloud.sh#L118-L143

由于接口是模糊搜索的,当账户存在 同域子域名更长但末尾相同的域名 等情况时,会Get到多个ID

例如账户存在公网解析域名: a.com b.a.com ca.com

如果为 d.a.com 创建DNS验证时,会用a.com,response筛出3个Zone的ID,处理后换行分割,在 _add_record GET 时 https://github.com/acmesh-official/acme.sh/blob/1476f83ba71955feb386e3a2f194cb07b6f8f9cc/dnsapi/dns_huaweicloud.sh#L168 会异常

tutugreen commented 2 years ago

_get_recordset_id()

https://github.com/acmesh-official/acme.sh/blob/1476f83ba71955feb386e3a2f194cb07b6f8f9cc/dnsapi/dns_huaweicloud.sh#L152

返回的response的"self"包含被检索的name。

{ "links": { "self": "https://dns.myhuaweicloud.com/v2/zones/xxxxxxxxxx/recordsets?name=id.aaa.com" }, "recordsets": [], "metadata": { "total_count": 0 } }

如果只是判断 “id” 字符串是否存在,会导致包含 "id" 的域名,例如 aaaaid.com、或者 id.aaa.com,recordset一直判为存在,无限重复尝试删除。

eastonman commented 2 years ago

@tutugreen 感谢您! acme.sh这边提交PR需要跑action的测试 https://github.com/acmesh-official/acme.sh/wiki/DNS-API-Test 您 #3887 的PR如果不方便配置action,也可以由我帮您提交PR

tutugreen commented 2 years ago

@eastonman Wow,谢谢指导!我这边试试调整下。

2022-01-05 Edited:试了N波,终于把 Check 跑通了,有讲究的,学到很多,重新提了PR。

hayye commented 1 month ago

报错了,提示 dns_api(dns_huaweicloud): Error getting token.

sub-rats commented 1 month ago

报错了,提示 dns_api(dns_huaweicloud): Error getting token.

修改 dnsapi 中 dns_huaweicloud.sh

修改 dnsapi="https://dns.ap-southeast-1_.myhuaweicloud.com"

将 ap-southeast-1 改为国内任意一个节点,如 :cn-north-4

hayye commented 1 month ago

报错了,提示 dns_api(dns_huaweicloud): Error getting token.

修改 dnsapi 中 dns_huaweicloud.sh

修改 dnsapi="https://dns.ap-southeast-1_.myhuaweicloud.com"

将 ap-southeast-1 改为国内任意一个节点,如 :cn-north-4

我好像知道问题了,我这个是华为账号不是华为云账号,看华为官方文档,华为账号是不能通过密码获取token的,,只有华为云账号才可以,,或者就是升级到企业用户在创建子账户去获取,,华为这逻辑是真恶心啊

yanshibin commented 3 weeks ago

报错了,提示 dns_api(dns_huaweicloud): Error getting token.

修改 dnsapi 中 dns_huaweicloud.sh 修改 dnsapi="https://dns.ap-southeast-1_.myhuaweicloud.com" 将 ap-southeast-1 改为国内任意一个节点,如 :cn-north-4

我好像知道问题了,我这个是华为账号不是华为云账号,看华为官方文档,华为账号是不能通过密码获取token的,,只有华为云账号才可以,,或者就是升级到企业用户在创建子账户去获取,,华为这逻辑是真恶心啊

创建了子账号 给了admin 权限都获取不了啊