From b8096b7b8a90e45b876f3373723fe9cac04dc46c Mon Sep 17 00:00:00 2001 From: Stefan Date: Wed, 15 Nov 2023 16:28:41 +0100 Subject: [PATCH 1/2] PORKBUN: implement ListZones() (#2622) --- providers/porkbun/api.go | 35 ++++++++++++++++++++++++++++++++++ providers/porkbun/listzones.go | 9 +++++++++ 2 files changed, 44 insertions(+) create mode 100644 providers/porkbun/listzones.go diff --git a/providers/porkbun/api.go b/providers/porkbun/api.go index 3145319af..698f14c8d 100644 --- a/providers/porkbun/api.go +++ b/providers/porkbun/api.go @@ -41,6 +41,23 @@ type recordResponse struct { Records []domainRecord `json:"records"` } +type domainListRecord struct { + Domain string `json:"domain"` + Status string `json:"status"` + TLD string `json:"tld"` + CreateDate string `json:"createDate"` + ExpireDate string `json:"expireDate"` + SecurityLock string `json:"securityLock"` + WhoisPrivacy string `json:"whoisPrivacy"` + AutoRenew string `json:"autoRenew"` + NotLocal string `json:"notLocal"` +} + +type domainListResponse struct { + Status string `json:"status"` + Domains []domainListRecord `json:"domains"` +} + type nsResponse struct { Status string `json:"status"` Nameservers []string `json:"ns"` @@ -150,3 +167,21 @@ func (c *porkbunProvider) updateNameservers(ns []string, domain string) error { } return nil } + +func (c *porkbunProvider) listAllDomains() ([]string, error) { + params := requestParams{} + var bodyString, err = c.post("/domain/listAll", params) + if err != nil { + return nil, fmt.Errorf("failed listing all domains from porkbun: %w", err) + } + + var dlr domainListResponse + json.Unmarshal(bodyString, &dlr) + + var domains []string + for _, domain := range dlr.Domains { + domains = append(domains, domain.Domain) + } + sort.Strings(domains) + return domains, nil +} diff --git a/providers/porkbun/listzones.go b/providers/porkbun/listzones.go new file mode 100644 index 000000000..a5f9f89c1 --- /dev/null +++ b/providers/porkbun/listzones.go @@ -0,0 +1,9 @@ +package porkbun + +func (client *porkbunProvider) ListZones() ([]string, error) { + zones, err := client.listAllDomains() + if err != nil { + return nil, err + } + return zones, err +} From 32fe2753d81a681156dae5453f3b3724f30d70aa Mon Sep 17 00:00:00 2001 From: imlonghao Date: Thu, 16 Nov 2023 23:56:31 +0800 Subject: [PATCH 2/2] PORKBUN: Improve non .DE domain delegation processing (remove the trailing dot in NS) (#2624) Co-authored-by: Tom Limoncelli --- providers/porkbun/api.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/providers/porkbun/api.go b/providers/porkbun/api.go index 698f14c8d..066cf5085 100644 --- a/providers/porkbun/api.go +++ b/providers/porkbun/api.go @@ -7,6 +7,7 @@ import ( "io" "net/http" "sort" + "strings" "time" ) @@ -156,7 +157,15 @@ func (c *porkbunProvider) getNameservers(domain string) ([]string, error) { json.Unmarshal(bodyString, &ns) sort.Strings(ns.Nameservers) - return ns.Nameservers, nil + + var nameservers []string + for _, nameserver := range ns.Nameservers { + // Remove the trailing dot only if it exists. + // This provider seems to add the trailing dot to some domains but not others. + // The .DE domains seem to always include the dot, others don't. + nameservers = append(nameservers, strings.TrimSuffix(nameserver, ".")) + } + return nameservers, nil } func (c *porkbunProvider) updateNameservers(ns []string, domain string) error {