ALIDNS: Implement ListZones and describeDomainsAll functions

This commit is contained in:
artin 2025-12-04 01:48:17 +08:00
parent 8bae0abc78
commit ed8b7a773d
3 changed files with 30 additions and 1 deletions

View file

@ -91,7 +91,7 @@ Jump to a table:
| ------------- | -------------------------------------------------------------------- | ---------------------------------------------- | -------------- | --------- | | ------------- | -------------------------------------------------------------------- | ---------------------------------------------- | -------------- | --------- |
| [`ADGUARDHOME`](adguardhome.md) | ❔ | ❔ | ❌ | ❌ | | [`ADGUARDHOME`](adguardhome.md) | ❔ | ❔ | ❌ | ❌ |
| [`AKAMAIEDGEDNS`](akamaiedgedns.md) | ❔ | ✅ | ✅ | ✅ | | [`AKAMAIEDGEDNS`](akamaiedgedns.md) | ❔ | ✅ | ✅ | ✅ |
| [`ALIDNS`](alidns.md) | ✅ | ❌ | ❌ | | | [`ALIDNS`](alidns.md) | ✅ | ❌ | ❌ | |
| [`AUTODNS`](autodns.md) | ✅ | ❌ | ❌ | ✅ | | [`AUTODNS`](autodns.md) | ✅ | ❌ | ❌ | ✅ |
| [`AXFRDDNS`](axfrddns.md) | ✅ | ❌ | ❌ | ❌ | | [`AXFRDDNS`](axfrddns.md) | ✅ | ❌ | ❌ | ❌ |
| [`AZURE_DNS`](azure_dns.md) | ✅ | ✅ | ✅ | ✅ | | [`AZURE_DNS`](azure_dns.md) | ✅ | ✅ | ✅ | ✅ |

View file

@ -15,6 +15,7 @@ import (
var features = providers.DocumentationNotes{ var features = providers.DocumentationNotes{
providers.CanUseAlias: providers.Cannot(), providers.CanUseAlias: providers.Cannot(),
providers.CanGetZones: providers.Can(),
providers.CanUseCAA: providers.Can(), providers.CanUseCAA: providers.Can(),
providers.CanUsePTR: providers.Cannot(), providers.CanUsePTR: providers.Cannot(),
providers.CanUseNAPTR: providers.Cannot(), providers.CanUseNAPTR: providers.Cannot(),
@ -119,6 +120,10 @@ func (a *aliDnsDsp) GetZoneRecords(domain string, meta map[string]string) (model
return out, nil return out, nil
} }
func (a *aliDnsDsp) ListZones() ([]string, error) {
return a.describeDomainsAll()
}
func removeTrailingDot(record string) string { func removeTrailingDot(record string) string {
return strings.TrimSuffix(record, ".") return strings.TrimSuffix(record, ".")
} }

View file

@ -149,3 +149,27 @@ func (a *aliDnsDsp) describeDomainRecordsAll(domain string) ([]*alidns.Record, e
} }
return out, nil return out, nil
} }
func (a *aliDnsDsp) describeDomainsAll() ([]string, error) {
// describeDomainsAll fetches all domains in the account, handling pagination.
fetch := func(pageNumber, pageSize int) ([]string, int, error) {
req := alidns.CreateDescribeDomainsRequest()
req.PageNumber = requests.NewInteger(pageNumber)
req.PageSize = requests.NewInteger(pageSize)
resp, err := a.client.DescribeDomains(req)
if err != nil {
return nil, 0, err
}
domains := make([]string, 0, len(resp.Domains.Domain))
for _, d := range resp.Domains.Domain {
domains = append(domains, d.DomainName)
}
total := int(resp.TotalCount)
return domains, total, nil
}
return paginateAll(fetch)
}