2023-10-02 14:21:08 +00:00
|
|
|
package pancheri
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"time"
|
|
|
|
)
|
|
|
|
|
|
|
|
type Zone struct {
|
2023-10-03 01:59:37 +00:00
|
|
|
Root string `yaml:"root"`
|
|
|
|
ReducedHash string `yaml:"rsha"`
|
|
|
|
Zonefile string `yaml:"zf"`
|
|
|
|
ARecords map[string]RecordA `yaml:"ra"`
|
|
|
|
AAAARecords map[string]RecordAAAA `yaml:"rav6"`
|
|
|
|
CNAMERecords map[string]RecordCNAME `yaml:"rcn"`
|
|
|
|
TXTRecords map[string]RecordTXT `yaml:"rtx"`
|
2023-10-02 14:21:08 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
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"
|
2023-10-03 01:59:37 +00:00
|
|
|
outString += ";; At the very least, you'll need add SOA and NS values.\n"
|
2023-10-02 14:21:08 +00:00
|
|
|
outString += "\n"
|
|
|
|
outString += ";; A Records\n"
|
|
|
|
|
|
|
|
for _, record := range z.ARecords {
|
2023-10-02 14:24:01 +00:00
|
|
|
outString += record.Render().String() + "\n"
|
2023-10-02 14:21:08 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
outString += ";; AAAA Records\n"
|
|
|
|
|
|
|
|
for _, record := range z.AAAARecords {
|
2023-10-02 14:24:01 +00:00
|
|
|
outString += record.Render().String() + "\n"
|
2023-10-02 14:21:08 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
outString += ";; CNAME Records\n"
|
|
|
|
|
|
|
|
for _, record := range z.CNAMERecords {
|
2023-10-02 14:24:01 +00:00
|
|
|
outString += record.Render().String() + "\n"
|
2023-10-02 14:21:08 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
outString += ";; TXT Records\n"
|
|
|
|
|
|
|
|
for _, record := range z.TXTRecords {
|
2023-10-02 14:24:01 +00:00
|
|
|
outString += record.Render().String() + "\n"
|
2023-10-02 14:21:08 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return outString
|
|
|
|
}
|