@@ -31,6 +31,7 @@ import (
3131	cloudflarev0 "github.com/cloudflare/cloudflare-go" 
3232	"github.com/cloudflare/cloudflare-go/v5" 
3333	"github.com/cloudflare/cloudflare-go/v5/addressing" 
34+ 	"github.com/cloudflare/cloudflare-go/v5/dns" 
3435	"github.com/cloudflare/cloudflare-go/v5/option" 
3536	"github.com/cloudflare/cloudflare-go/v5/zones" 
3637	log "github.com/sirupsen/logrus" 
@@ -75,7 +76,7 @@ type DNSRecordIndex struct {
7576	Content  string 
7677}
7778
78- type  DNSRecordsMap  map [DNSRecordIndex ]cloudflarev0. DNSRecord 
79+ type  DNSRecordsMap  map [DNSRecordIndex ]dns. RecordResponse 
7980
8081// for faster getCustomHostname() lookup 
8182type  CustomHostnameIndex  struct  {
@@ -109,8 +110,8 @@ type cloudFlareDNS interface {
109110	ZoneIDByName (zoneName  string ) (string , error )
110111	ListZones (ctx  context.Context , params  zones.ZoneListParams ) autoPager [zones.Zone ]
111112	GetZone (ctx  context.Context , zoneID  string ) (* zones.Zone , error )
112- 	ListDNSRecords (ctx  context.Context , rc  * cloudflarev0.ResourceContainer , rp  cloudflarev0.ListDNSRecordsParams ) ([]cloudflarev0. DNSRecord , * cloudflarev0.ResultInfo , error )
113- 	CreateDNSRecord (ctx  context.Context , rc  * cloudflarev0.ResourceContainer , rp  cloudflarev0.CreateDNSRecordParams ) (cloudflarev0. DNSRecord , error )
113+ 	ListDNSRecords (ctx  context.Context , rc  * cloudflarev0.ResourceContainer , rp  cloudflarev0.ListDNSRecordsParams ) ([]dns. RecordResponse , * cloudflarev0.ResultInfo , error )
114+ 	CreateDNSRecord (ctx  context.Context , rc  * cloudflarev0.ResourceContainer , rp  cloudflarev0.CreateDNSRecordParams ) (dns. RecordResponse , error )
114115	DeleteDNSRecord (ctx  context.Context , rc  * cloudflarev0.ResourceContainer , recordID  string ) error 
115116	UpdateDNSRecord (ctx  context.Context , rc  * cloudflarev0.ResourceContainer , rp  cloudflarev0.UpdateDNSRecordParams ) error 
116117	ListDataLocalizationRegionalHostnames (ctx  context.Context , params  addressing.RegionalHostnameListParams ) autoPager [addressing.RegionalHostnameListResponse ]
@@ -147,12 +148,18 @@ func (z zoneService) ZoneIDByName(zoneName string) (string, error) {
147148	return  "" , fmt .Errorf ("zone %q not found in CloudFlare account - verify the zone exists and API credentials have access to it" , zoneName )
148149}
149150
150- func  (z  zoneService ) CreateDNSRecord (ctx  context.Context , rc  * cloudflarev0.ResourceContainer , rp  cloudflarev0.CreateDNSRecordParams ) (cloudflarev0.DNSRecord , error ) {
151- 	return  z .serviceV0 .CreateDNSRecord (ctx , rc , rp )
151+ func  (z  zoneService ) CreateDNSRecord (ctx  context.Context , rc  * cloudflarev0.ResourceContainer , rp  cloudflarev0.CreateDNSRecordParams ) (dns.RecordResponse , error ) {
152+ 	record , err  :=  z .serviceV0 .CreateDNSRecord (ctx , rc , rp )
153+ 	return  dnsRecordResponseFromLegacyDNSRecord (record ), err 
152154}
153155
154- func  (z  zoneService ) ListDNSRecords (ctx  context.Context , rc  * cloudflarev0.ResourceContainer , rp  cloudflarev0.ListDNSRecordsParams ) ([]cloudflarev0.DNSRecord , * cloudflarev0.ResultInfo , error ) {
155- 	return  z .serviceV0 .ListDNSRecords (ctx , rc , rp )
156+ func  (z  zoneService ) ListDNSRecords (ctx  context.Context , rc  * cloudflarev0.ResourceContainer , rp  cloudflarev0.ListDNSRecordsParams ) ([]dns.RecordResponse , * cloudflarev0.ResultInfo , error ) {
157+ 	records , info , err  :=  z .serviceV0 .ListDNSRecords (ctx , rc , rp )
158+ 	convertedRecords  :=  make ([]dns.RecordResponse , 0 , len (records ))
159+ 	for  _ , record  :=  range  records  {
160+ 		convertedRecords  =  append (convertedRecords , dnsRecordResponseFromLegacyDNSRecord (record ))
161+ 	}
162+ 	return  convertedRecords , info , err 
156163}
157164
158165func  (z  zoneService ) UpdateDNSRecord (ctx  context.Context , rc  * cloudflarev0.ResourceContainer , rp  cloudflarev0.UpdateDNSRecordParams ) error  {
@@ -250,7 +257,7 @@ type CloudFlareProvider struct {
250257// cloudFlareChange differentiates between ChangeActions 
251258type  cloudFlareChange  struct  {
252259	Action               changeAction 
253- 	ResourceRecord       cloudflarev0. DNSRecord 
260+ 	ResourceRecord       dns. RecordResponse 
254261	RegionalHostname     regionalHostname 
255262	CustomHostnames      map [string ]cloudflarev0.CustomHostname 
256263	CustomHostnamesPrev  []string 
@@ -263,13 +270,15 @@ type RecordParamsTypes interface {
263270
264271// updateDNSRecordParam is a function that returns the appropriate Record Param based on the cloudFlareChange passed in 
265272func  updateDNSRecordParam (cfc  cloudFlareChange ) cloudflarev0.UpdateDNSRecordParams  {
273+ 	priority  :=  uint16 (cfc .ResourceRecord .Priority )
274+ 
266275	params  :=  cloudflarev0.UpdateDNSRecordParams {
267276		Name :     cfc .ResourceRecord .Name ,
268- 		TTL :      cfc .ResourceRecord .TTL ,
269- 		Proxied :  cfc .ResourceRecord .Proxied ,
270- 		Type :     cfc .ResourceRecord .Type ,
277+ 		TTL :      int ( cfc .ResourceRecord .TTL ) ,
278+ 		Proxied :  & cfc .ResourceRecord .Proxied ,
279+ 		Type :     string ( cfc .ResourceRecord .Type ) ,
271280		Content :  cfc .ResourceRecord .Content ,
272- 		Priority : cfc . ResourceRecord . Priority ,
281+ 		Priority : & priority ,
273282		Comment :  cloudflarev0 .StringPtr (cfc .ResourceRecord .Comment ),
274283	}
275284
@@ -278,13 +287,15 @@ func updateDNSRecordParam(cfc cloudFlareChange) cloudflarev0.UpdateDNSRecordPara
278287
279288// getCreateDNSRecordParam is a function that returns the appropriate Record Param based on the cloudFlareChange passed in 
280289func  getCreateDNSRecordParam (cfc  cloudFlareChange ) cloudflarev0.CreateDNSRecordParams  {
290+ 	priority  :=  uint16 (cfc .ResourceRecord .Priority )
291+ 
281292	params  :=  cloudflarev0.CreateDNSRecordParams {
282293		Name :     cfc .ResourceRecord .Name ,
283- 		TTL :      cfc .ResourceRecord .TTL ,
284- 		Proxied :  cfc .ResourceRecord .Proxied ,
285- 		Type :     cfc .ResourceRecord .Type ,
294+ 		TTL :      int ( cfc .ResourceRecord .TTL ) ,
295+ 		Proxied :  & cfc .ResourceRecord .Proxied ,
296+ 		Type :     string ( cfc .ResourceRecord .Type ) ,
286297		Content :  cfc .ResourceRecord .Content ,
287- 		Priority : cfc . ResourceRecord . Priority ,
298+ 		Priority : & priority ,
288299		Comment :  cfc .ResourceRecord .Comment ,
289300	}
290301
@@ -534,7 +545,7 @@ func (p *CloudFlareProvider) submitCustomHostnameChanges(ctx context.Context, zo
534545
535546	switch  change .Action  {
536547	case  cloudFlareUpdate :
537- 		if  recordTypeCustomHostnameSupported [change .ResourceRecord .Type ] {
548+ 		if  recordTypeCustomHostnameSupported [string ( change .ResourceRecord .Type ) ] {
538549			add , remove , _  :=  provider .Difference (change .CustomHostnamesPrev , slices .Collect (maps .Keys (change .CustomHostnames )))
539550
540551			for  _ , changeCH  :=  range  remove  {
@@ -561,7 +572,7 @@ func (p *CloudFlareProvider) submitCustomHostnameChanges(ctx context.Context, zo
561572		}
562573	case  cloudFlareDelete :
563574		for  _ , changeCH  :=  range  change .CustomHostnames  {
564- 			if  recordTypeCustomHostnameSupported [change .ResourceRecord .Type ] &&  changeCH .Hostname  !=  ""  {
575+ 			if  recordTypeCustomHostnameSupported [string ( change .ResourceRecord .Type ) ] &&  changeCH .Hostname  !=  ""  {
565576				log .WithFields (logFields ).Infof ("Deleting custom hostname %q" , changeCH .Hostname )
566577				if  ch , err  :=  getCustomHostname (chs , changeCH .Hostname ); err  ==  nil  {
567578					chID  :=  ch .ID 
@@ -577,7 +588,7 @@ func (p *CloudFlareProvider) submitCustomHostnameChanges(ctx context.Context, zo
577588		}
578589	case  cloudFlareCreate :
579590		for  _ , changeCH  :=  range  change .CustomHostnames  {
580- 			if  recordTypeCustomHostnameSupported [change .ResourceRecord .Type ] &&  changeCH .Hostname  !=  ""  {
591+ 			if  recordTypeCustomHostnameSupported [string ( change .ResourceRecord .Type ) ] &&  changeCH .Hostname  !=  ""  {
581592				log .WithFields (logFields ).Infof ("Creating custom hostname %q" , changeCH .Hostname )
582593				if  ch , err  :=  getCustomHostname (chs , changeCH .Hostname ); err  ==  nil  {
583594					if  changeCH .CustomOriginServer  ==  ch .CustomOriginServer  {
@@ -769,8 +780,8 @@ func (p *CloudFlareProvider) changesByZone(zones []zones.Zone, changeSet []*clou
769780	return  changes 
770781}
771782
772- func  (p  * CloudFlareProvider ) getRecordID (records  DNSRecordsMap , record  cloudflarev0. DNSRecord ) string  {
773- 	if  zoneRecord , ok  :=  records [DNSRecordIndex {Name : record .Name , Type : record .Type , Content : record .Content }]; ok  {
783+ func  (p  * CloudFlareProvider ) getRecordID (records  DNSRecordsMap , record  dns. RecordResponse ) string  {
784+ 	if  zoneRecord , ok  :=  records [DNSRecordIndex {Name : record .Name , Type : string ( record .Type ) , Content : record .Content }]; ok  {
774785		return  zoneRecord .ID 
775786	}
776787	return  "" 
@@ -795,11 +806,11 @@ func (p *CloudFlareProvider) newCustomHostname(customHostname string, origin str
795806}
796807
797808func  (p  * CloudFlareProvider ) newCloudFlareChange (action  changeAction , ep  * endpoint.Endpoint , target  string , current  * endpoint.Endpoint ) (* cloudFlareChange , error ) {
798- 	ttl  :=  defaultTTL 
809+ 	ttl  :=  dns . TTL ( defaultTTL ) 
799810	proxied  :=  shouldBeProxied (ep , p .proxiedByDefault )
800811
801812	if  ep .RecordTTL .IsConfigured () {
802- 		ttl  =  int (ep .RecordTTL )
813+ 		ttl  =  dns . TTL (ep .RecordTTL )
803814	}
804815
805816	prevCustomHostnames  :=  []string {}
@@ -824,26 +835,24 @@ func (p *CloudFlareProvider) newCloudFlareChange(action changeAction, ep *endpoi
824835		comment  =  p .DNSRecordsConfig .trimAndValidateComment (ep .DNSName , comment , p .ZoneHasPaidPlan )
825836	}
826837
827- 	priority  :=  ( * uint16 )( nil ) 
838+ 	var   priority  float64 
828839	if  ep .RecordType  ==  "MX"  {
829840		mxRecord , err  :=  endpoint .NewMXRecord (target )
830841		if  err  !=  nil  {
831842			return  & cloudFlareChange {}, fmt .Errorf ("failed to parse MX record target %q: %w" , target , err )
832843		} else  {
833- 			priority  =  mxRecord .GetPriority ()
844+ 			priority  =  float64 ( * mxRecord .GetPriority () )
834845			target  =  * mxRecord .GetHost ()
835846		}
836847	}
837848
838849	return  & cloudFlareChange {
839850		Action : action ,
840- 		ResourceRecord : cloudflarev0.DNSRecord {
841- 			Name : ep .DNSName ,
842- 			TTL :  ttl ,
843- 			// We have to use pointers to bools now, as the upstream cloudflare-go library requires them 
844- 			// see: https://github.com/cloudflare/cloudflare-go/pull/595 
845- 			Proxied :  & proxied ,
846- 			Type :     ep .RecordType ,
851+ 		ResourceRecord : dns.RecordResponse {
852+ 			Name :     ep .DNSName ,
853+ 			TTL :      ttl ,
854+ 			Proxied :  proxied ,
855+ 			Type :     dns .RecordResponseType (ep .RecordType ),
847856			Content :  target ,
848857			Comment :  comment ,
849858			Priority : priority ,
@@ -854,8 +863,8 @@ func (p *CloudFlareProvider) newCloudFlareChange(action changeAction, ep *endpoi
854863	}, nil 
855864}
856865
857- func  newDNSRecordIndex (r  cloudflarev0. DNSRecord ) DNSRecordIndex  {
858- 	return  DNSRecordIndex {Name : r .Name , Type : r .Type , Content : r .Content }
866+ func  newDNSRecordIndex (r  dns. RecordResponse ) DNSRecordIndex  {
867+ 	return  DNSRecordIndex {Name : r .Name , Type : string ( r .Type ) , Content : r .Content }
859868}
860869
861870// listDNSRecordsWithAutoPagination performs automatic pagination of results on requests to cloudflare.ListDNSRecords with custom per_page values 
@@ -964,16 +973,16 @@ func (p *CloudFlareProvider) groupByNameAndTypeWithCustomHostnames(records DNSRe
964973	var  endpoints  []* endpoint.Endpoint 
965974
966975	// group supported records by name and type 
967- 	groups  :=  map [string ][]cloudflarev0. DNSRecord {}
976+ 	groups  :=  map [string ][]dns. RecordResponse {}
968977
969978	for  _ , r  :=  range  records  {
970- 		if  ! p .SupportedAdditionalRecordTypes (r .Type ) {
979+ 		if  ! p .SupportedAdditionalRecordTypes (string ( r .Type ) ) {
971980			continue 
972981		}
973982
974- 		groupBy  :=  r .Name  +  r .Type 
983+ 		groupBy  :=  r .Name  +  string ( r .Type ) 
975984		if  _ , ok  :=  groups [groupBy ]; ! ok  {
976- 			groups [groupBy ] =  []cloudflarev0. DNSRecord {}
985+ 			groups [groupBy ] =  []dns. RecordResponse {}
977986		}
978987
979988		groups [groupBy ] =  append (groups [groupBy ], r )
@@ -994,20 +1003,17 @@ func (p *CloudFlareProvider) groupByNameAndTypeWithCustomHostnames(records DNSRe
9941003		targets  :=  make ([]string , len (records ))
9951004		for  i , record  :=  range  records  {
9961005			if  records [i ].Type  ==  "MX"  {
997- 				targets [i ] =  fmt .Sprintf ("%v %v" , * record .Priority , record .Content )
1006+ 				targets [i ] =  fmt .Sprintf ("%v %v" , record .Priority , record .Content )
9981007			} else  {
9991008				targets [i ] =  record .Content 
10001009			}
10011010		}
10021011		e  :=  endpoint .NewEndpointWithTTL (
10031012			records [0 ].Name ,
1004- 			records [0 ].Type ,
1013+ 			string ( records [0 ].Type ) ,
10051014			endpoint .TTL (records [0 ].TTL ),
10061015			targets ... )
1007- 		proxied  :=  false 
1008- 		if  records [0 ].Proxied  !=  nil  {
1009- 			proxied  =  * records [0 ].Proxied 
1010- 		}
1016+ 		proxied  :=  records [0 ].Proxied 
10111017		if  e  ==  nil  {
10121018			continue 
10131019		}
@@ -1036,3 +1042,27 @@ func (p *CloudFlareProvider) SupportedAdditionalRecordTypes(recordType string) b
10361042		return  provider .SupportedRecordType (recordType )
10371043	}
10381044}
1045+ 
1046+ func  dnsRecordResponseFromLegacyDNSRecord (record  cloudflarev0.DNSRecord ) dns.RecordResponse  {
1047+ 	var  priority  float64 
1048+ 	if  record .Priority  !=  nil  {
1049+ 		priority  =  float64 (* record .Priority )
1050+ 	}
1051+ 
1052+ 	return  dns.RecordResponse {
1053+ 		CreatedOn :  record .CreatedOn ,
1054+ 		ModifiedOn : record .ModifiedOn ,
1055+ 		Type :       dns .RecordResponseType (record .Type ),
1056+ 		Name :       record .Name ,
1057+ 		Content :    record .Content ,
1058+ 		Meta :       record .Meta ,
1059+ 		Data :       record .Data ,
1060+ 		ID :         record .ID ,
1061+ 		Priority :   priority ,
1062+ 		TTL :        dns .TTL (record .TTL ),
1063+ 		Proxied :    record .Proxied  !=  nil  &&  * record .Proxied ,
1064+ 		Proxiable :  record .Proxiable ,
1065+ 		Comment :    record .Comment ,
1066+ 		Tags :       record .Tags ,
1067+ 	}
1068+ }
0 commit comments