pancheri/zone.go

53 lines
1.3 KiB
Go

package pancheri
import (
"fmt"
"time"
)
type Zone struct {
Root string `yaml:"root"`
ReducedHash string `yaml:"rsha"`
Zonefile string `yaml:"zf"`
ARecords []RecordA `yaml:"ra"`
AAAARecords []RecordAAAA `yaml:"rav6"`
CNAMERecords []RecordCNAME `yaml:"rcn"`
TXTRecords []RecordTXT `yaml:"rtx"`
}
func (z *Zone) RenderZone() string {
outString := ""
outString += fmt.Sprintf(";; Rendered zonefile for %s (rsha %s) at %s\n", z.Zonefile, z.ReducedHash, time.Now().Format(time.RFC3339))
outString += ";; Generated by pancheri-render. Note: this will NOT work out of the box!\n"
outString += ";; At the very least, you'll need to change the SOA and NS values.\n"
outString += "\n"
outString += ";; SOA & NS records\n"
outString += ";; TODO\n"
outString += "\n"
outString += ";; A Records\n"
for _, record := range z.ARecords {
outString += record.Render().String() + "\n"
}
outString += ";; AAAA Records\n"
for _, record := range z.AAAARecords {
outString += record.Render().String() + "\n"
}
outString += ";; CNAME Records\n"
for _, record := range z.CNAMERecords {
outString += record.Render().String() + "\n"
}
outString += ";; TXT Records\n"
for _, record := range z.TXTRecords {
outString += record.Render().String() + "\n"
}
return outString
}