Files
alexei.dolgolyov c730cfaa45 feat: Cloudflare DNS management with automatic record sync
Add flexible DNS management to Docker Watcher. By default, wildcard DNS
is assumed (current behavior). When disabled, users can configure a
Cloudflare DNS provider with API token and zone selection. DNS A records
are automatically created/updated/deleted in sync with proxy consumers
(deployed instances and standalone proxies).

- Settings: wildcard_dns toggle, dns_provider, cloudflare credentials
- Cloudflare client: Provider interface with EnsureRecord/DeleteRecord/ListRecords
- DNS lifecycle hooks in deployer and proxy manager (best-effort)
- Settings UI: DNS config section with provider picker, zone selector, test button
- DNS Records page at /dns with filtering, sync status, reconciliation
- Records visible in both wildcard and managed modes
- Cleanup on provider change: removes old records when switching modes
2026-04-02 14:49:21 +03:00

23 lines
528 B
Go

package dns
import "fmt"
// Config holds configuration for creating a DNS provider.
type Config struct {
Token string
ZoneID string
}
// NewProvider creates a DNS provider by name.
// Returns nil, nil when providerName is empty (wildcard DNS mode).
func NewProvider(providerName string, cfg Config) (Provider, error) {
switch providerName {
case "":
return nil, nil
case "cloudflare":
return NewCloudflare(cfg.Token, cfg.ZoneID)
default:
return nil, fmt.Errorf("unsupported DNS provider: %s", providerName)
}
}