From 52eb9dc9fc1e0472aea4fd5bd0bb7ea259431d41 Mon Sep 17 00:00:00 2001 From: Mike Crute Date: Tue, 11 Aug 2020 05:11:29 +0000 Subject: Do not do ddns update if ip is same --- web/controllers/ddns.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'web') diff --git a/web/controllers/ddns.go b/web/controllers/ddns.go index 692b59f..d476255 100644 --- a/web/controllers/ddns.go +++ b/web/controllers/ddns.go @@ -5,6 +5,7 @@ import ( "net/http" "github.com/gin-gonic/gin" + godns "github.com/miekg/dns" "code.crute.me/mcrute/go_ddns_manager/dns" "code.crute.me/mcrute/go_ddns_manager/util" @@ -35,7 +36,17 @@ func UpdateDynamicDNS(c *gin.Context) { return } - txn := cfg.DNSClient.StartUpdate(zone).Upsert(&dns.A{ + txn := cfg.DNSClient.QueryRecursive(zone, res, godns.TypeA) + cur, err := cfg.DNSClient.SendQuery(txn) + if err == nil && len(cur) == 1 { + if cur[0].(*godns.A).A.Equal(inip) { + log.Printf("ddns: Update not required for '%s', IP %s", res, inip) + c.String(http.StatusNotModified, "") + return + } + } + + txn = cfg.DNSClient.StartUpdate(zone).Upsert(&dns.A{ Name: part, Ttl: 60, A: inip, -- cgit v1.2.3