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) | ❔ | ❔ | ❌ | ❌ |
|
| [`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) | ✅ | ✅ | ✅ | ✅ |
|
||||||
|
|
|
||||||
|
|
@ -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, ".")
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue