添加DNS账号时自动读取DNS服务商下域名
This commit is contained in:
@@ -31,6 +31,34 @@ func (this *AliDNSProvider) Auth(params maps.Map) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// GetDomains 获取所有域名列表
|
||||
func (this *AliDNSProvider) GetDomains() (domains []string, err error) {
|
||||
pageNumber := 1
|
||||
size := 100
|
||||
|
||||
for {
|
||||
req := alidns.CreateDescribeDomainsRequest()
|
||||
req.PageNumber = requests.NewInteger(pageNumber)
|
||||
req.PageSize = requests.NewInteger(size)
|
||||
resp := alidns.CreateDescribeDomainsResponse()
|
||||
err = this.doAPI(req, resp)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
for _, domain := range resp.Domains.Domain {
|
||||
domains = append(domains, domain.DomainName)
|
||||
}
|
||||
|
||||
pageNumber++
|
||||
if int64((pageNumber-1)*size) >= resp.TotalCount {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// GetRecords 获取域名列表
|
||||
func (this *AliDNSProvider) GetRecords(domain string) (records []*dnstypes.Record, err error) {
|
||||
pageNumber := 1
|
||||
|
||||
@@ -11,6 +11,14 @@ import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestAliDNSProvider_GetDomains(t *testing.T) {
|
||||
provider, err := testAliDNSProvider()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
t.Log(provider.GetDomains())
|
||||
}
|
||||
|
||||
func TestAliDNSProvider_GetRecords(t *testing.T) {
|
||||
provider, err := testAliDNSProvider()
|
||||
if err != nil {
|
||||
|
||||
@@ -59,6 +59,21 @@ func (this *CloudFlareProvider) Auth(params maps.Map) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// GetDomains 获取所有域名列表
|
||||
func (this *CloudFlareProvider) GetDomains() (domains []string, err error) {
|
||||
resp := new(cloudflare.ZonesResponse)
|
||||
err = this.doAPI(http.MethodGet, "zones", map[string]string{}, nil, resp)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
for _, zone := range resp.Result {
|
||||
domains = append(domains, zone.Name)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// GetRecords 获取域名解析记录列表
|
||||
func (this *CloudFlareProvider) GetRecords(domain string) (records []*dnstypes.Record, err error) {
|
||||
zoneId, err := this.findZoneIdWithDomain(domain)
|
||||
|
||||
@@ -12,6 +12,14 @@ import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestCloudFlareProvider_GetDomains(t *testing.T) {
|
||||
provider, err := testCloudFlareProvider()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
t.Log(provider.GetDomains())
|
||||
}
|
||||
|
||||
func TestCloudFlareProvider_GetRecords(t *testing.T) {
|
||||
provider, err := testCloudFlareProvider()
|
||||
if err != nil {
|
||||
|
||||
@@ -49,6 +49,16 @@ func (this *CustomHTTPProvider) Auth(params maps.Map) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// GetDomains 获取所有域名列表
|
||||
func (this *CustomHTTPProvider) GetDomains() (domains []string, err error) {
|
||||
resp, err := this.post(maps.Map{})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
err = json.Unmarshal(resp, &domains)
|
||||
return
|
||||
}
|
||||
|
||||
// GetRecords 获取域名解析记录列表
|
||||
func (this *CustomHTTPProvider) GetRecords(domain string) (records []*dnstypes.Record, err error) {
|
||||
resp, err := this.post(maps.Map{
|
||||
|
||||
@@ -7,6 +7,22 @@ import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestCustomHTTPProvider_GetDomains(t *testing.T) {
|
||||
provider := CustomHTTPProvider{}
|
||||
err := provider.Auth(maps.Map{
|
||||
"url": "http://127.0.0.1:2345/dns",
|
||||
"secret": "123456",
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
domains, err := provider.GetDomains()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
t.Log(domains)
|
||||
}
|
||||
|
||||
func TestCustomHTTPProvider_AddRecord(t *testing.T) {
|
||||
provider := CustomHTTPProvider{}
|
||||
err := provider.Auth(maps.Map{
|
||||
|
||||
@@ -35,6 +35,40 @@ func (this *DNSPodProvider) Auth(params maps.Map) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// GetDomains 获取所有域名列表
|
||||
func (this *DNSPodProvider) GetDomains() (domains []string, err error) {
|
||||
offset := 0
|
||||
size := 100
|
||||
for {
|
||||
domainsResp, err := this.post("/Domain.list", map[string]string{
|
||||
"offset": numberutils.FormatInt(offset),
|
||||
"length": numberutils.FormatInt(size),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
offset += size
|
||||
|
||||
domainsSlice := domainsResp.GetSlice("domains")
|
||||
if len(domainsSlice) == 0 {
|
||||
break
|
||||
}
|
||||
|
||||
for _, domain := range domainsSlice {
|
||||
domainMap := maps.NewMap(domain)
|
||||
domains = append(domains, domainMap.GetString("name"))
|
||||
}
|
||||
|
||||
// 检查是否到头
|
||||
info := domainsResp.GetMap("info")
|
||||
recordTotal := info.GetInt("record_total")
|
||||
if offset >= recordTotal {
|
||||
break
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// GetRecords 获取域名列表
|
||||
func (this *DNSPodProvider) GetRecords(domain string) (records []*dnstypes.Record, err error) {
|
||||
offset := 0
|
||||
|
||||
@@ -9,6 +9,18 @@ import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestDNSPodProvider_GetDomains(t *testing.T) {
|
||||
provider, err := testDNSPodProvider()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
domains, err := provider.GetDomains()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
t.Log(domains)
|
||||
}
|
||||
|
||||
func TestDNSPodProvider_GetRoutes(t *testing.T) {
|
||||
provider, err := testDNSPodProvider()
|
||||
if err != nil {
|
||||
|
||||
@@ -55,6 +55,21 @@ func (this *HuaweiDNSProvider) Auth(params maps.Map) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// GetDomains 获取所有域名列表
|
||||
func (this *HuaweiDNSProvider) GetDomains() (domains []string, err error) {
|
||||
var resp = new(huaweidns.ZonesResponse)
|
||||
err = this.doAPI(http.MethodGet, "/v2/zones", map[string]string{}, nil, resp)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
for _, zone := range resp.Zones {
|
||||
zone.Name = strings.TrimSuffix(zone.Name, ".")
|
||||
domains = append(domains, zone.Name)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// GetRecords 获取域名解析记录列表
|
||||
func (this *HuaweiDNSProvider) GetRecords(domain string) (records []*dnstypes.Record, err error) {
|
||||
zoneId, err := this.findZoneIdWithDomain(domain)
|
||||
|
||||
@@ -11,6 +11,18 @@ import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestHuaweiDNSProvider_GetDomains(t *testing.T) {
|
||||
provider, err := testHuaweiDNSProvider()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
domains, err := provider.GetDomains()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
t.Log("domains:", domains)
|
||||
}
|
||||
|
||||
func TestHuaweiDNSProvider_GetRecords(t *testing.T) {
|
||||
provider, err := testHuaweiDNSProvider()
|
||||
if err != nil {
|
||||
|
||||
@@ -10,6 +10,9 @@ type ProviderInterface interface {
|
||||
// Auth 认证
|
||||
Auth(params maps.Map) error
|
||||
|
||||
// GetDomains 获取所有域名列表
|
||||
GetDomains() (domains []string, err error)
|
||||
|
||||
// GetRecords 获取域名解析记录列表
|
||||
GetRecords(domain string) (records []*dnstypes.Record, err error)
|
||||
|
||||
|
||||
@@ -34,6 +34,19 @@ func (this *LocalEdgeDNSProvider) Auth(params maps.Map) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// GetDomains 获取所有域名列表
|
||||
func (this *LocalEdgeDNSProvider) GetDomains() (domains []string, err error) {
|
||||
var tx *dbs.Tx
|
||||
domainOnes, err := nameservers.SharedNSDomainDAO.ListEnabledDomains(tx, this.clusterId, 0, "", 0, 1000)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
for _, domain := range domainOnes {
|
||||
domains = append(domains, domain.Name)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// GetRecords 获取域名解析记录列表
|
||||
func (this *LocalEdgeDNSProvider) GetRecords(domain string) (records []*dnstypes.Record, err error) {
|
||||
var tx *dbs.Tx
|
||||
|
||||
@@ -13,6 +13,24 @@ import (
|
||||
|
||||
const testClusterId = 7
|
||||
|
||||
func TestLocalEdgeDNSProvider_GetDomains(t *testing.T) {
|
||||
dbs.NotifyReady()
|
||||
|
||||
provider := &dnsclients.LocalEdgeDNSProvider{}
|
||||
err := provider.Auth(maps.Map{
|
||||
"clusterId": testClusterId,
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
domains, err := provider.GetDomains()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
t.Log("domains:", domains)
|
||||
}
|
||||
|
||||
func TestLocalEdgeDNSProvider_GetRecords(t *testing.T) {
|
||||
dbs.NotifyReady()
|
||||
|
||||
|
||||
@@ -16,6 +16,12 @@ func (this *UserEdgeDNSProvider) Auth(params maps.Map) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// GetDomains 获取所有域名列表
|
||||
func (this *UserEdgeDNSProvider) GetDomains() (domains []string, err error) {
|
||||
// TODO
|
||||
return
|
||||
}
|
||||
|
||||
// GetRecords 获取域名解析记录列表
|
||||
func (this *UserEdgeDNSProvider) GetRecords(domain string) (records []*dnstypes.Record, err error) {
|
||||
// TODO
|
||||
|
||||
Reference in New Issue
Block a user