52 lines
1.4 KiB
Go
52 lines
1.4 KiB
Go
package dnsprovider
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"github.com/libdns/cloudflare"
|
|
"github.com/libdns/libdns"
|
|
)
|
|
|
|
// CloudflareProvider Cloudflare DNS 服务商实现
|
|
type CloudflareProvider struct {
|
|
client *cloudflare.Provider
|
|
domain string
|
|
}
|
|
|
|
// NewCloudflareProvider 创建 Cloudflare DNS 服务商实例
|
|
func NewCloudflareProvider(config ProviderConfig) (*CloudflareProvider, error) {
|
|
if config.APIToken == "" {
|
|
return nil, fmt.Errorf("API Token 不能为空")
|
|
}
|
|
|
|
provider := &cloudflare.Provider{
|
|
APIToken: config.APIToken,
|
|
}
|
|
|
|
return &CloudflareProvider{
|
|
client: provider,
|
|
domain: config.Domain,
|
|
}, nil
|
|
}
|
|
|
|
// AppendRecords 添加 DNS 记录
|
|
func (p *CloudflareProvider) AppendRecords(ctx context.Context, zone string, recs []libdns.Record) ([]libdns.Record, error) {
|
|
return p.client.AppendRecords(ctx, zone, recs)
|
|
}
|
|
|
|
// SetRecords 设置 DNS 记录(会覆盖现有记录)
|
|
func (p *CloudflareProvider) SetRecords(ctx context.Context, zone string, recs []libdns.Record) ([]libdns.Record, error) {
|
|
return p.client.SetRecords(ctx, zone, recs)
|
|
}
|
|
|
|
// GetRecords 获取 DNS 记录
|
|
func (p *CloudflareProvider) GetRecords(ctx context.Context, zone string) ([]libdns.Record, error) {
|
|
return p.client.GetRecords(ctx, zone)
|
|
}
|
|
|
|
// DeleteRecords 删除 DNS 记录
|
|
func (p *CloudflareProvider) DeleteRecords(ctx context.Context, zone string, recs []libdns.Record) ([]libdns.Record, error) {
|
|
return p.client.DeleteRecords(ctx, zone, recs)
|
|
}
|