Files
EdgeAdmin/internal/web/actions/default/dns/providers/index.go

115 lines
3.1 KiB
Go
Raw Normal View History

2020-11-10 21:37:48 +08:00
package providers
2020-11-11 21:32:19 +08:00
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/iwind/TeaGo/maps"
timeutil "github.com/iwind/TeaGo/utils/time"
2022-03-30 11:15:32 +08:00
"regexp"
"strings"
2020-11-11 21:32:19 +08:00
)
2020-11-10 21:37:48 +08:00
type IndexAction struct {
actionutils.ParentAction
}
func (this *IndexAction) Init() {
this.Nav("", "", "")
}
2021-08-25 18:46:57 +08:00
func (this *IndexAction) RunGet(params struct {
2022-05-07 20:41:20 +08:00
Keyword string
Domain string
ProviderType string
2021-08-25 18:46:57 +08:00
}) {
this.Data["keyword"] = params.Keyword
2022-03-30 11:15:32 +08:00
this.Data["domain"] = params.Domain
2022-05-07 20:41:20 +08:00
this.Data["providerType"] = params.ProviderType
2022-03-30 11:15:32 +08:00
// 格式化域名
var domain = params.Domain
2023-08-08 14:17:16 +08:00
domain = regexp.MustCompile(`^(www\.)`).ReplaceAllString(domain, "")
2022-03-30 11:15:32 +08:00
domain = strings.ToLower(domain)
2021-08-25 18:46:57 +08:00
countResp, err := this.RPC().DNSProviderRPC().CountAllEnabledDNSProviders(this.AdminContext(), &pb.CountAllEnabledDNSProvidersRequest{
AdminId: this.AdminId(),
2021-08-25 18:46:57 +08:00
Keyword: params.Keyword,
2022-03-30 11:15:32 +08:00
Domain: domain,
2022-05-07 20:41:20 +08:00
Type: params.ProviderType,
})
2020-11-11 21:32:19 +08:00
if err != nil {
this.ErrorPage(err)
return
}
count := countResp.Count
page := this.NewPage(count)
this.Data["page"] = page.AsHTML()
providersResp, err := this.RPC().DNSProviderRPC().ListEnabledDNSProviders(this.AdminContext(), &pb.ListEnabledDNSProvidersRequest{
AdminId: this.AdminId(),
2021-08-25 18:46:57 +08:00
Keyword: params.Keyword,
2022-03-30 11:15:32 +08:00
Domain: domain,
2022-05-07 20:41:20 +08:00
Type: params.ProviderType,
Offset: page.Offset,
Size: page.Size,
2020-11-11 21:32:19 +08:00
})
if err != nil {
this.ErrorPage(err)
return
}
2022-05-07 20:41:20 +08:00
var providerMaps = []maps.Map{}
2020-11-11 21:32:19 +08:00
for _, provider := range providersResp.DnsProviders {
2022-10-19 19:55:51 +08:00
var dataUpdatedTime = ""
2020-11-11 21:32:19 +08:00
if provider.DataUpdatedAt > 0 {
dataUpdatedTime = timeutil.FormatTime("Y-m-d H:i:s", provider.DataUpdatedAt)
}
2020-11-12 14:41:34 +08:00
// 域名
2022-09-18 10:22:58 +08:00
countDomainsResp, err := this.RPC().DNSDomainRPC().CountAllDNSDomainsWithDNSProviderId(this.AdminContext(), &pb.CountAllDNSDomainsWithDNSProviderIdRequest{
2022-05-07 20:41:20 +08:00
DnsProviderId: provider.Id,
})
2020-11-12 14:41:34 +08:00
if err != nil {
this.ErrorPage(err)
return
}
2022-10-19 19:55:51 +08:00
var countDomains = countDomainsResp.Count
2020-11-12 14:41:34 +08:00
2020-11-11 21:32:19 +08:00
providerMaps = append(providerMaps, maps.Map{
"id": provider.Id,
"name": provider.Name,
"type": provider.Type,
"typeName": provider.TypeName,
"dataUpdatedTime": dataUpdatedTime,
2020-11-12 14:41:34 +08:00
"countDomains": countDomains,
2020-11-11 21:32:19 +08:00
})
}
this.Data["providers"] = providerMaps
2022-05-07 20:41:20 +08:00
// 类型
typesResponse, err := this.RPC().DNSProviderRPC().FindAllDNSProviderTypes(this.AdminContext(), &pb.FindAllDNSProviderTypesRequest{})
if err != nil {
this.ErrorPage(err)
return
}
var providerTypeMaps = []maps.Map{}
for _, providerType := range typesResponse.ProviderTypes {
countProvidersWithTypeResp, err := this.RPC().DNSProviderRPC().CountAllEnabledDNSProviders(this.AdminContext(), &pb.CountAllEnabledDNSProvidersRequest{
Type: providerType.Code,
})
if err != nil {
this.ErrorPage(err)
return
}
if countProvidersWithTypeResp.Count > 0 {
providerTypeMaps = append(providerTypeMaps, maps.Map{
"name": providerType.Name,
"code": providerType.Code,
"count": countProvidersWithTypeResp.Count,
})
}
}
this.Data["providerTypes"] = providerTypeMaps
2020-11-10 21:37:48 +08:00
this.Show()
}