Skip to content

Commit c3ca932

Browse files
author
Niklas Burchhardt
committed
enhance Present logic
by adding checks whether the challenge key is already existing in the recordset and if not, appending it to it
1 parent fe008aa commit c3ca932

File tree

1 file changed

+20
-1
lines changed

1 file changed

+20
-1
lines changed

internal/resolver/resolver.go

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ func (s *stackitDnsProviderResolver) Present(ch *v1alpha1.ChallengeRequest) erro
8282
return err
8383
}
8484

85-
return s.updateExistingRRSet(initResolverRes, rrSet)
85+
return s.updateExistingRRSet(initResolverRes, rrSet, ch.Key)
8686
}
8787

8888
// CleanUp should delete the relevant TXT record from the DNS provider console.
@@ -384,12 +384,31 @@ func (s *stackitDnsProviderResolver) handleRRSetNotFound(
384384
return nil
385385
}
386386

387+
func keyExists(records *[]stackitdnsclient.Record, challengeKey string) bool {
388+
for _, record := range *records {
389+
if record.Content != nil && *record.Content == challengeKey {
390+
return true
391+
}
392+
}
393+
394+
return false
395+
}
396+
387397
func (s *stackitDnsProviderResolver) updateExistingRRSet(
388398
initResolverRes *initResolverContextResult,
389399
rrSet *stackitdnsclient.RecordSet,
400+
challengeKey string,
390401
) error {
391402
s.logger.Info("RRSet found, updating RRSet", zap.String("rrSetName", initResolverRes.rrSetName))
392403

404+
if !keyExists(rrSet.Records, challengeKey) {
405+
s.logger.Info("Challenge key not found in existing RRSet, adding new record", zap.String("rrSetName", initResolverRes.rrSetName))
406+
newRecord := stackitdnsclient.Record{
407+
Content: &challengeKey,
408+
}
409+
*rrSet.Records = append(*rrSet.Records, newRecord)
410+
}
411+
393412
rrSet.Ttl = &initResolverRes.acmeTxtDefaultTTL
394413

395414
if err := initResolverRes.rrSetRepository.UpdateRRSet(s.ctx, *rrSet); err != nil {

0 commit comments

Comments
 (0)