Files
EdgeAPI/internal/dnsclients/types.go
2021-06-02 18:13:48 +08:00

98 lines
2.7 KiB
Go

package dnsclients
import (
teaconst "github.com/TeaOSLab/EdgeAPI/internal/const"
"github.com/iwind/TeaGo/maps"
)
type ProviderType = string
// 服务商代号
const (
ProviderTypeDNSPod ProviderType = "dnspod" // DNSPod
ProviderTypeAliDNS ProviderType = "alidns" // 阿里云DNS
ProviderTypeDNSCom ProviderType = "dnscom" // dns.com
ProviderTypeCloudFlare ProviderType = "cloudFlare" // CloudFlare DNS
ProviderTypeLocalEdgeDNS ProviderType = "localEdgeDNS" // 和当前系统集成的EdgeDNS
ProviderTypeUserEdgeDNS ProviderType = "userEdgeDNS" // 通过API连接的EdgeDNS
ProviderTypeCustomHTTP ProviderType = "customHTTP" // 自定义HTTP接口
)
// FindAllProviderTypes 所有的服务商类型
func FindAllProviderTypes() []maps.Map {
typeMaps := []maps.Map{
{
"name": "阿里云DNS",
"code": ProviderTypeAliDNS,
"description": "阿里云提供的DNS服务。",
},
{
"name": "DNSPod",
"code": ProviderTypeDNSPod,
"description": "DNSPod提供的DNS服务。",
},
/**{
"name": "帝恩思DNS.COM",
"code": ProviderTypeDNSCom,
"description": "DNS.com提供的DNS服务。",
},**/
{
"name": "CloudFlare DNS",
"code": ProviderTypeCloudFlare,
"description": "CloudFlare提供的DNS服务。",
},
}
if teaconst.IsPlus {
typeMaps = append(typeMaps, []maps.Map{
{
"name": "集成EdgeDNS",
"code": ProviderTypeLocalEdgeDNS,
"description": "当前企业版提供的DNS服务。",
},
// TODO 需要实现用户使用AccessId/AccessKey来连接DNS服务
/**{
"name": "用户EdgeDNS",
"code": ProviderTypeUserEdgeDNS,
"description": "通过API连接企业版提供的DNS服务。",
},**/
}...)
}
typeMaps = append(typeMaps, maps.Map{
"name": "自定义HTTP DNS",
"code": ProviderTypeCustomHTTP,
"description": "通过自定义的HTTP接口提供DNS服务。",
})
return typeMaps
}
// FindProvider 查找服务商实例
func FindProvider(providerType ProviderType) ProviderInterface {
switch providerType {
case ProviderTypeDNSPod:
return &DNSPodProvider{}
case ProviderTypeAliDNS:
return &AliDNSProvider{}
case ProviderTypeCloudFlare:
return &CloudFlareProvider{}
case ProviderTypeLocalEdgeDNS:
return &LocalEdgeDNSProvider{}
case ProviderTypeUserEdgeDNS:
return &UserEdgeDNSProvider{}
case ProviderTypeCustomHTTP:
return &CustomHTTPProvider{}
}
return nil
}
// FindProviderTypeName 查找服务商名称
func FindProviderTypeName(providerType ProviderType) string {
for _, t := range FindAllProviderTypes() {
if t.GetString("code") == providerType {
return t.GetString("name")
}
}
return ""
}