Files
acme-dns/main.go
2026-02-03 23:59:39 +02:00

56 lines
1.2 KiB
Go

package main
import (
"flag"
"fmt"
"os"
"github.com/joohoi/acme-dns/pkg/acmedns"
"github.com/joohoi/acme-dns/pkg/api"
"github.com/joohoi/acme-dns/pkg/database"
"github.com/joohoi/acme-dns/pkg/nameserver"
"go.uber.org/zap"
)
func main() {
setUmask()
configPtr := flag.String("c", "/etc/acme-dns/config.cfg", "config file location")
flag.Parse()
// Read global config
var err error
var logger *zap.Logger
config, usedConfigFile, err := acmedns.ReadConfig(*configPtr, "./config.cfg")
if err != nil {
fmt.Printf("Error: %s\n", err)
os.Exit(1)
}
logger, err = acmedns.SetupLogging(config)
if err != nil {
fmt.Printf("Could not set up logging: %s\n", err)
os.Exit(1)
}
// Make sure to flush the zap logger buffer before exiting
defer logger.Sync() //nolint:all
sugar := logger.Sugar()
sugar.Infow("Using config file",
"file", usedConfigFile)
sugar.Info("Starting up")
db, err := database.Init(&config, sugar)
// Error channel for servers
errChan := make(chan error, 1)
api := api.Init(&config, db, sugar, errChan)
dnsservers := nameserver.InitAndStart(&config, db, sugar, errChan)
go api.Start(dnsservers)
if err != nil {
sugar.Error(err)
}
for {
err = <-errChan
if err != nil {
sugar.Fatal(err)
}
}
}