mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2025-12-09 05:36:27 +08:00
ALIDNS: Implement ListZones and describeDomainsAll functions
This commit is contained in:
parent
8bae0abc78
commit
ed8b7a773d
3 changed files with 30 additions and 1 deletions
|
|
@ -91,7 +91,7 @@ Jump to a table:
|
|||
| ------------- | -------------------------------------------------------------------- | ---------------------------------------------- | -------------- | --------- |
|
||||
| [`ADGUARDHOME`](adguardhome.md) | ❔ | ❔ | ❌ | ❌ |
|
||||
| [`AKAMAIEDGEDNS`](akamaiedgedns.md) | ❔ | ✅ | ✅ | ✅ |
|
||||
| [`ALIDNS`](alidns.md) | ✅ | ❌ | ❌ | ❔ |
|
||||
| [`ALIDNS`](alidns.md) | ✅ | ❌ | ❌ | ✅ |
|
||||
| [`AUTODNS`](autodns.md) | ✅ | ❌ | ❌ | ✅ |
|
||||
| [`AXFRDDNS`](axfrddns.md) | ✅ | ❌ | ❌ | ❌ |
|
||||
| [`AZURE_DNS`](azure_dns.md) | ✅ | ✅ | ✅ | ✅ |
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ import (
|
|||
|
||||
var features = providers.DocumentationNotes{
|
||||
providers.CanUseAlias: providers.Cannot(),
|
||||
providers.CanGetZones: providers.Can(),
|
||||
providers.CanUseCAA: providers.Can(),
|
||||
providers.CanUsePTR: providers.Cannot(),
|
||||
providers.CanUseNAPTR: providers.Cannot(),
|
||||
|
|
@ -119,6 +120,10 @@ func (a *aliDnsDsp) GetZoneRecords(domain string, meta map[string]string) (model
|
|||
return out, nil
|
||||
}
|
||||
|
||||
func (a *aliDnsDsp) ListZones() ([]string, error) {
|
||||
return a.describeDomainsAll()
|
||||
}
|
||||
|
||||
func removeTrailingDot(record string) string {
|
||||
return strings.TrimSuffix(record, ".")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -149,3 +149,27 @@ func (a *aliDnsDsp) describeDomainRecordsAll(domain string) ([]*alidns.Record, e
|
|||
}
|
||||
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)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue