Files
EdgeAPI/internal/rpc/services/service_dns_provider.go

220 lines
6.4 KiB
Go
Raw Normal View History

2020-11-11 21:32:25 +08:00
package services
import (
"context"
"github.com/TeaOSLab/EdgeAPI/internal/db/models/dns"
"github.com/TeaOSLab/EdgeAPI/internal/dnsclients"
2020-11-11 21:32:25 +08:00
rpcutils "github.com/TeaOSLab/EdgeAPI/internal/rpc/utils"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
)
// DNS服务商相关服务
type DNSProviderService struct {
2020-11-24 15:02:44 +08:00
BaseService
2020-11-11 21:32:25 +08:00
}
// 创建服务商
func (this *DNSProviderService) CreateDNSProvider(ctx context.Context, req *pb.CreateDNSProviderRequest) (*pb.CreateDNSProviderResponse, error) {
// 校验请求
2020-12-18 21:18:53 +08:00
adminId, userId, err := this.ValidateAdminAndUser(ctx, 0, 0)
2020-11-11 21:32:25 +08:00
if err != nil {
return nil, err
}
tx := this.NullTx()
providerId, err := dns.SharedDNSProviderDAO.CreateDNSProvider(tx, adminId, userId, req.Type, req.Name, req.ApiParamsJSON)
2020-11-11 21:32:25 +08:00
if err != nil {
return nil, err
}
return &pb.CreateDNSProviderResponse{DnsProviderId: providerId}, nil
}
// 修改服务商
func (this *DNSProviderService) UpdateDNSProvider(ctx context.Context, req *pb.UpdateDNSProviderRequest) (*pb.RPCSuccess, error) {
2020-11-11 21:32:25 +08:00
// 校验请求
2020-12-18 21:18:53 +08:00
_, _, err := this.ValidateAdminAndUser(ctx, 0, 0)
2020-11-11 21:32:25 +08:00
if err != nil {
return nil, err
}
// TODO 校验权限
tx := this.NullTx()
err = dns.SharedDNSProviderDAO.UpdateDNSProvider(tx, req.DnsProviderId, req.Name, req.ApiParamsJSON)
2020-11-11 21:32:25 +08:00
if err != nil {
return nil, err
}
2020-11-24 15:02:44 +08:00
return this.Success()
2020-11-11 21:32:25 +08:00
}
// 计算服务商数量
2020-11-12 14:41:28 +08:00
func (this *DNSProviderService) CountAllEnabledDNSProviders(ctx context.Context, req *pb.CountAllEnabledDNSProvidersRequest) (*pb.RPCCountResponse, error) {
2020-11-11 21:32:25 +08:00
// 校验请求
2020-12-18 21:18:53 +08:00
_, _, err := this.ValidateAdminAndUser(ctx, 0, req.UserId)
2020-11-11 21:32:25 +08:00
if err != nil {
return nil, err
}
tx := this.NullTx()
count, err := dns.SharedDNSProviderDAO.CountAllEnabledDNSProviders(tx, req.AdminId, req.UserId)
2020-11-11 21:32:25 +08:00
if err != nil {
return nil, err
}
2020-11-24 17:36:47 +08:00
return this.SuccessCount(count)
2020-11-11 21:32:25 +08:00
}
// 列出单页服务商信息
func (this *DNSProviderService) ListEnabledDNSProviders(ctx context.Context, req *pb.ListEnabledDNSProvidersRequest) (*pb.ListEnabledDNSProvidersResponse, error) {
// 校验请求
2020-12-18 21:18:53 +08:00
_, _, err := this.ValidateAdminAndUser(ctx, 0, req.UserId)
2020-11-11 21:32:25 +08:00
if err != nil {
return nil, err
}
// TODO 校验权限
tx := this.NullTx()
providers, err := dns.SharedDNSProviderDAO.ListEnabledDNSProviders(tx, req.AdminId, req.UserId, req.Offset, req.Size)
2020-11-11 21:32:25 +08:00
if err != nil {
return nil, err
}
result := []*pb.DNSProvider{}
for _, provider := range providers {
result = append(result, &pb.DNSProvider{
Id: int64(provider.Id),
Name: provider.Name,
Type: provider.Type,
TypeName: dnsclients.FindProviderTypeName(provider.Type),
2020-11-11 21:32:25 +08:00
ApiParamsJSON: []byte(provider.ApiParams),
DataUpdatedAt: int64(provider.DataUpdatedAt),
})
}
return &pb.ListEnabledDNSProvidersResponse{DnsProviders: result}, nil
}
// 查找所有的DNS服务商
func (this *DNSProviderService) FindAllEnabledDNSProviders(ctx context.Context, req *pb.FindAllEnabledDNSProvidersRequest) (*pb.FindAllEnabledDNSProvidersResponse, error) {
// 校验请求
2020-12-18 21:18:53 +08:00
_, _, err := this.ValidateAdminAndUser(ctx, 0, req.UserId)
if err != nil {
return nil, err
}
// TODO 校验权限
tx := this.NullTx()
providers, err := dns.SharedDNSProviderDAO.FindAllEnabledDNSProviders(tx, req.AdminId, req.UserId)
if err != nil {
return nil, err
}
result := []*pb.DNSProvider{}
for _, provider := range providers {
result = append(result, &pb.DNSProvider{
Id: int64(provider.Id),
Name: provider.Name,
Type: provider.Type,
TypeName: dnsclients.FindProviderTypeName(provider.Type),
ApiParamsJSON: []byte(provider.ApiParams),
DataUpdatedAt: int64(provider.DataUpdatedAt),
})
}
return &pb.FindAllEnabledDNSProvidersResponse{DnsProviders: result}, nil
}
2020-11-11 21:32:25 +08:00
// 删除服务商
func (this *DNSProviderService) DeleteDNSProvider(ctx context.Context, req *pb.DeleteDNSProviderRequest) (*pb.RPCSuccess, error) {
2020-11-11 21:32:25 +08:00
// 校验请求
2020-12-18 21:18:53 +08:00
_, _, err := this.ValidateAdminAndUser(ctx, 0, 0)
2020-11-11 21:32:25 +08:00
if err != nil {
return nil, err
}
// TODO 校验权限
tx := this.NullTx()
err = dns.SharedDNSProviderDAO.DisableDNSProvider(tx, req.DnsProviderId)
2020-11-11 21:32:25 +08:00
if err != nil {
return nil, err
}
2020-11-24 15:02:44 +08:00
return this.Success()
2020-11-11 21:32:25 +08:00
}
// 查找单个服务商
func (this *DNSProviderService) FindEnabledDNSProvider(ctx context.Context, req *pb.FindEnabledDNSProviderRequest) (*pb.FindEnabledDNSProviderResponse, error) {
// 校验请求
_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
if err != nil {
return nil, err
}
tx := this.NullTx()
provider, err := dns.SharedDNSProviderDAO.FindEnabledDNSProvider(tx, req.DnsProviderId)
2020-11-11 21:32:25 +08:00
if err != nil {
return nil, err
}
if provider == nil {
return &pb.FindEnabledDNSProviderResponse{DnsProvider: nil}, nil
}
return &pb.FindEnabledDNSProviderResponse{DnsProvider: &pb.DNSProvider{
Id: int64(provider.Id),
Name: provider.Name,
Type: provider.Type,
TypeName: dnsclients.FindProviderTypeName(provider.Type),
2020-11-11 21:32:25 +08:00
ApiParamsJSON: []byte(provider.ApiParams),
DataUpdatedAt: int64(provider.DataUpdatedAt),
}}, nil
}
// 取得所有服务商类型
func (this *DNSProviderService) FindAllDNSProviderTypes(ctx context.Context, req *pb.FindAllDNSProviderTypesRequest) (*pb.FindAllDNSProviderTypesResponse, error) {
// 校验请求
_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
if err != nil {
return nil, err
}
result := []*pb.DNSProviderType{}
for _, t := range dnsclients.AllProviderTypes {
2020-11-11 21:32:25 +08:00
result = append(result, &pb.DNSProviderType{
Name: t.GetString("name"),
Code: t.GetString("code"),
})
}
return &pb.FindAllDNSProviderTypesResponse{ProviderTypes: result}, nil
}
2020-11-12 14:41:28 +08:00
// 取得某个类型的所有服务商
func (this *DNSProviderService) FindAllEnabledDNSProvidersWithType(ctx context.Context, req *pb.FindAllEnabledDNSProvidersWithTypeRequest) (*pb.FindAllEnabledDNSProvidersWithTypeResponse, error) {
2020-11-12 14:41:28 +08:00
// 校验请求
_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
if err != nil {
return nil, err
}
tx := this.NullTx()
providers, err := dns.SharedDNSProviderDAO.FindAllEnabledDNSProvidersWithType(tx, req.ProviderTypeCode)
if err != nil {
return nil, err
}
result := []*pb.DNSProvider{}
for _, provider := range providers {
result = append(result, &pb.DNSProvider{
Id: int64(provider.Id),
Name: provider.Name,
Type: provider.Type,
TypeName: dnsclients.FindProviderTypeName(provider.Type),
})
}
return &pb.FindAllEnabledDNSProvidersWithTypeResponse{DnsProviders: result}, nil
2020-11-12 14:41:28 +08:00
}