multiple updates

This commit is contained in:
2023-12-09 14:21:28 -06:00
parent a11f92745d
commit 881c11b910
23 changed files with 721 additions and 433 deletions

View File

@ -2,64 +2,34 @@ package main
import (
"bytes"
"log"
"os"
"time"
"text/template"
"pihole-blocklist/bind/assets"
"pihole-blocklist/bind/internal/config"
)
func buildBindResponsePolicyFile() {
defer timeTrack(time.Now(), "buildBindResponsePolicyFile")
func buildBindResponsePolicyFile() error {
var (
output bytes.Buffer
)
outputTemplate := `{{- $domain := .Domain -}}
$TTL {{ or .TTL "1h" }}
@ IN SOA {{ $domain }}. {{ or .Email "domain-admin" }}. (
{{ or .Serial "0000000000" }} ; Serial
{{ or .Refresh "1h" }} ; Refresh
{{ or .Retry "30m" }} ; Retry
{{ or .Expire "1w" }} ; Expire
{{ or .Minimum "1h" }} ; Minimum
)
outputTemplate := assets.BindRecord
;
; Name Servers
;
{{- range .NameServers }}
IN NS {{ . }}.
{{- end }}
;
; Addresses
;
{{- range .BlockedDomains }}
{{ . }} IN CNAME blocked.{{ $domain }}.
{{- end }}
`
t, err := template.New("response-policy-zone").Parse(outputTemplate)
t, err := template.New("response-policy-zone").Parse(string(outputTemplate))
if err != nil {
log.Fatalf("[FATAL] Unable to parse template (%s): %v\n", "response-policy-zone", err)
return err
}
if err := t.Execute(&output, config.Config.ZoneConfig); err != nil {
log.Fatalf("[FATAL] Unable to generate template output: %v\n", err)
if err := t.Execute(&output, cfg.ConfigFile.ZoneConfig); err != nil {
return err
}
fileWriter, err := os.Create(config.BindOutputFileName)
bytesWritten, err := config.WriteFile(cfg.BindOutputFileName, output.Bytes())
if err != nil {
log.Fatalf("[FATAL] Unable to open file (%s) for writing: %v", config.BindOutputFileName, err)
}
defer fileWriter.Close()
bytesWritten, err := fileWriter.Write(output.Bytes())
if err != nil {
log.Fatalf("[FATAL] Unable to write to file (%s): %v", config.BindOutputFileName, err)
return err
}
log.Printf("[DEBUG] Wrote %d bytes to %s.\n", bytesWritten, config.BindOutputFileName)
cfg.Log.Debug("file created", "file", cfg.BindOutputFileName, "bytes", bytesWritten)
return nil
}