From 03629288409c506345334aae01312533899f7df3 Mon Sep 17 00:00:00 2001 From: cellarspoon Date: Thu, 23 Dec 2021 01:41:12 +0100 Subject: [PATCH] fix!: parse ttl correctly --- cli/internal/common.go | 9 ++++----- cli/record/new.go | 19 ++++++++++++++----- pkg/dns/common.go | 9 +++++++++ 3 files changed, 27 insertions(+), 10 deletions(-) diff --git a/cli/internal/common.go b/cli/internal/common.go index 13123299..92242b94 100644 --- a/cli/internal/common.go +++ b/cli/internal/common.go @@ -113,13 +113,12 @@ var DNSValueFlag = &cli.StringFlag{ Destination: &DNSValue, } -var DNSTTL int - -var DNSTTLFlag = &cli.IntFlag{ +var DNSTTL string +var DNSTTLFlag = &cli.StringFlag{ Name: "ttl", - Value: 600, + Value: "600s", Aliases: []string{"T"}, - Usage: "Domain name TTL value)", + Usage: "Domain name TTL value (seconds)", Destination: &DNSTTL, } diff --git a/cli/record/new.go b/cli/record/new.go index 02e4c0e5..b30a6e83 100644 --- a/cli/record/new.go +++ b/cli/record/new.go @@ -3,7 +3,6 @@ package record import ( "fmt" "strconv" - "time" abraFormatter "coopcloud.tech/abra/cli/formatter" "coopcloud.tech/abra/cli/internal" @@ -91,11 +90,16 @@ You may also invoke this command in "wizard" mode and be prompted for input logrus.Fatal(err) } + ttl, err := dns.GetTTL(internal.DNSTTL) + if err != nil { + return err + } + record := libdns.Record{ Type: internal.DNSType, Name: internal.DNSName, Value: internal.DNSValue, - TTL: time.Duration(internal.DNSTTL), + TTL: ttl, } if internal.DNSType == "MX" || internal.DNSType == "SRV" || internal.DNSType == "URI" { @@ -160,18 +164,23 @@ func autoConfigure(c *cli.Context, provider *gandi.Provider, zone string) error return err } + ttl, err := dns.GetTTL(internal.DNSTTL) + if err != nil { + return err + } + atRecord := libdns.Record{ Type: "A", Name: "@", Value: ipv4, - TTL: time.Duration(internal.DNSTTL), + TTL: ttl, } wildcardRecord := libdns.Record{ Type: "A", Name: "*", Value: ipv4, - TTL: time.Duration(internal.DNSTTL), + TTL: ttl, } records := []libdns.Record{atRecord, wildcardRecord} @@ -189,7 +198,7 @@ func autoConfigure(c *cli.Context, provider *gandi.Provider, zone string) error if existingRecord.Type == record.Type && existingRecord.Name == record.Name && existingRecord.Value == record.Value { - logrus.Warnf("%s record for %s already exists?", record.Type, zone) + logrus.Warnf("%v for %s already exists?", record, zone) continue } } diff --git a/pkg/dns/common.go b/pkg/dns/common.go index eea13aed..1a31dc35 100644 --- a/pkg/dns/common.go +++ b/pkg/dns/common.go @@ -94,3 +94,12 @@ func EnsureDomainsResolveSameIPv4(domainName, server string) (string, error) { return ipv4, nil } + +// GetTTL parses a ttl string into a duration +func GetTTL(ttl string) (time.Duration, error) { + val, err := time.ParseDuration(ttl) + if err != nil { + return val, err + } + return val, nil +}