Files
cloudflare-dns-docker/cmd/main.go
2025-12-05 09:18:40 +01:00

52 lines
1.0 KiB
Go

package main
import (
"log"
"os"
"cloudflare-dns-docker/internal/cloudflare"
"cloudflare-dns-docker/internal/docker"
)
func main() {
// Build the list of configs
configs, err := docker.InitialScan()
if err != nil {
log.Println(err)
}
// Retrieve server hostname from env
serverHostname := os.Getenv("CDD_SERVER_HOSTNAME")
// Init Cloudflare client
cloudflareApiToken := os.Getenv("CDD_CLOUDFLARE_TOKEN")
if len(cloudflareApiToken) == 0 {
log.Println("Error: you need to provide a Cloudflare API token")
os.Exit(1)
}
cf := cloudflare.NewApiClient(cloudflareApiToken)
// Ensure every record is matching current config initially
for _, c := range configs {
var err error
// Zone
zoneId, err := cloudflare.GetZoneId(cf, c.Domain)
if err != nil {
log.Println(err)
}
// Record
record, err := cloudflare.GetRecord(cf, zoneId, c.Fqdn)
if err != nil {
log.Println(err)
}
if len(record) == 0 {
err := cloudflare.CreateRecord(cf, serverHostname, zoneId, c.Fqdn)
if err != nil {
log.Println(err)
}
}
}
}