Monorepo for Tangled forked from tangled.org/core
Something went wrong. Try again.
Go
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354package dns
import ( "context" "fmt"
"github.com/cloudflare/cloudflare-go" "tangled.org/core/appview/config")
type Record struct { Type string Name string Content string TTL int Proxied bool}
type Cloudflare struct { api *cloudflare.API zone string}
func NewCloudflare(c *config.Config) (*Cloudflare, error) { apiToken := c.Cloudflare.ApiToken api, err := cloudflare.NewWithAPIToken(apiToken) if err != nil { return nil, err } return &Cloudflare{api: api, zone: c.Cloudflare.ZoneId}, nil}
func (cf *Cloudflare) CreateDNSRecord(ctx context.Context, record Record) (string, error) { result, err := cf.api.CreateDNSRecord(ctx, cloudflare.ZoneIdentifier(cf.zone), cloudflare.CreateDNSRecordParams{ Type: record.Type, Name: record.Name, Content: record.Content, TTL: record.TTL, Proxied: &record.Proxied, }) if err != nil { return "", fmt.Errorf("failed to create DNS record: %w", err) } return result.ID, nil}
func (cf *Cloudflare) DeleteDNSRecord(ctx context.Context, recordID string) error { err := cf.api.DeleteDNSRecord(ctx, cloudflare.ZoneIdentifier(cf.zone), recordID) if err != nil { return fmt.Errorf("failed to delete DNS record: %w", err) } return nil}