Replace flat with "@" + implement vars with "$" + add special type "A+AAAA" + resolver (cache, retry, multi-results)

This commit is contained in:
William Bouzourène 2025-03-27 12:53:02 +01:00
parent e1fc586076
commit d145ffa61a
4 changed files with 204 additions and 70 deletions

26
main.go
View file

@ -68,22 +68,21 @@ func main() {
log.Info("Creating DNS config file for existing zone", "zone", hZone.Name)
zone := dnsconfig.Zone{
zone := dnsconfig.TomlZone{
Domain: strings.ToLower(hZone.Name),
DefaultTTL: 3600,
}
for _, record := range hZone.Records {
zone.Records = append(zone.Records, dnsconfig.Record{
zone.TomlRecords = append(zone.TomlRecords, dnsconfig.TomlRecord{
Name: record.Name,
Type: record.Type,
Value: record.Value,
TTL: record.TTL,
Flat: false,
})
}
err = dnsconfig.CreateZone(zone)
err = dnsconfig.CreateTomlZone(zone)
if err != nil {
log.Fatal(err)
}
@ -109,31 +108,12 @@ func main() {
log.Info("Calculating sync diff (step 1: create/update)")
var keepTheseIds []string
for _, zone := range zones {
if zone.DefaultTTL <= 0 {
zone.DefaultTTL = 3600
}
for _, hZone := range hZones {
if strings.EqualFold(zone.Domain, hZone.Name) {
log.Info("Calculating sync diff for zone", "name", zone.Domain)
var alreadyFoundIds []string
for _, record := range zone.Records {
if record.Flat {
record.Value = helpers.ResolveRecord(
record.Value, record.Type,
)
if len(record.Value) == 0 {
log.Error("Could not flatten record, skipping", "record", record)
continue
}
}
if record.TTL <= 0 {
record.TTL = zone.DefaultTTL
}
var id string
for _, hRecord := range hZone.Records {
if slices.Contains(alreadyFoundIds, hRecord.ID) {