Standardize codebase consistency: naming, JSON tags, logging, error wrapping
- JSON tags: fix snake_case to camelCase in dnsmasq (configFile, domainsConfigured, lastRestart), crowdsec Machine (lastPush, lastHeartbeat), network (primaryIP, primaryInterface). cscli raw parsing structs keep snake_case to match CLI output. - Error wrapping: fix %v to %w in enableAuthelia for proper error chain preservation - Naming: rename dnsmasq.ConfigGenerator to dnsmasq.Manager (matches all other packages), rename ServiceStatus to Status in dnsmasq and haproxy (matches authelia, crowdsec, etc.) - Logging: standardize all slog calls to use "component" key instead of message prefixes. Affects reconcile, dnsfilter, ddns — now consistent with dnsmasq, haproxy, nftables, sse.
This commit is contained in:
@@ -29,11 +29,11 @@ type HAProxyManager interface {
|
||||
ReloadService() error
|
||||
}
|
||||
|
||||
// DNSManager is the subset of dnsmasq.ConfigGenerator used by reconciliation.
|
||||
// DNSManager is the subset of dnsmasq.Manager used by reconciliation.
|
||||
type DNSManager interface {
|
||||
UpdateConfig(cfg *config.State, entries []dnsmasq.DNSEntry, restart bool) error
|
||||
SetFilterConfPath(path string)
|
||||
GetStatus() (*dnsmasq.ServiceStatus, error)
|
||||
GetStatus() (*dnsmasq.Status, error)
|
||||
}
|
||||
|
||||
// DomainManager is the subset of domains.Manager used by reconciliation.
|
||||
@@ -85,13 +85,13 @@ type Reconciler struct {
|
||||
func (r *Reconciler) Reconcile() {
|
||||
doms, err := r.Domains.List()
|
||||
if err != nil {
|
||||
slog.Error("reconcile: failed to list domains", "error", err)
|
||||
slog.Error("failed to list domains", "component", "reconcile", "error", err)
|
||||
return
|
||||
}
|
||||
|
||||
globalCfg, err := config.LoadState(r.StatePath)
|
||||
if err != nil {
|
||||
slog.Warn("reconcile: failed to load state, using empty", "error", err)
|
||||
slog.Warn("failed to load state, using empty", "component", "reconcile", "error", err)
|
||||
globalCfg = &config.State{}
|
||||
}
|
||||
|
||||
@@ -105,7 +105,7 @@ func (r *Reconciler) Reconcile() {
|
||||
if hasCertForDomain(route.Domain) {
|
||||
activeHTTPRoutes = append(activeHTTPRoutes, route)
|
||||
} else {
|
||||
slog.Warn("reconcile: skipping L7 route (no cert)", "domain", route.Domain)
|
||||
slog.Warn("skipping L7 route (no cert)", "component", "reconcile", "domain", route.Domain)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -132,7 +132,7 @@ func (r *Reconciler) Reconcile() {
|
||||
}
|
||||
|
||||
if err := r.DNS.UpdateConfig(globalCfg, dnsEntries, true); err != nil {
|
||||
slog.Error("reconcile: failed to update dnsmasq", "error", err)
|
||||
slog.Error("failed to update dnsmasq", "component", "reconcile", "error", err)
|
||||
} else {
|
||||
r.broadcastDNSEvent("dnsmasq:config", "DNS config regenerated from registered domains")
|
||||
}
|
||||
@@ -143,7 +143,7 @@ func (r *Reconciler) Reconcile() {
|
||||
|
||||
r.DDNS.Trigger()
|
||||
|
||||
slog.Info("reconcile: networking updated",
|
||||
slog.Info("networking updated", "component", "reconcile",
|
||||
"domains", len(doms),
|
||||
"l4Routes", len(l4Routes),
|
||||
"l7Routes", len(httpRoutes),
|
||||
@@ -235,7 +235,7 @@ func (r *Reconciler) writeHAProxyConfig(l4Routes []haproxy.L4Route, httpRoutes [
|
||||
|
||||
if r.GenerateAutheliaConfig != nil {
|
||||
if err := r.GenerateAutheliaConfig(globalCfg); err != nil {
|
||||
slog.Warn("reconcile: failed to regenerate authelia config", "error", err)
|
||||
slog.Warn("failed to regenerate authelia config", "component", "reconcile", "error", err)
|
||||
} else if r.Auth.UserCount() > 0 {
|
||||
_ = r.Auth.RestartService()
|
||||
}
|
||||
@@ -247,8 +247,8 @@ func (r *Reconciler) writeHAProxyConfig(l4Routes []haproxy.L4Route, httpRoutes [
|
||||
if err := r.HAProxy.WriteConfig(cfg); err != nil {
|
||||
brokenDomains := haproxy.FindBrokenServices(cfg, haproxy.ParseValidationErrors(err.Error()))
|
||||
if len(brokenDomains) > 0 {
|
||||
slog.Error("reconcile: excluding broken domains and retrying",
|
||||
"broken", brokenDomains, "error", err)
|
||||
slog.Error("excluding broken domains and retrying",
|
||||
"component", "reconcile", "broken", brokenDomains, "error", err)
|
||||
|
||||
exclude := map[string]bool{}
|
||||
for _, d := range brokenDomains {
|
||||
@@ -271,17 +271,17 @@ func (r *Reconciler) writeHAProxyConfig(l4Routes []haproxy.L4Route, httpRoutes [
|
||||
genOpts.HTTPRoutes = filteredHTTP
|
||||
cfg = r.HAProxy.GenerateWithOpts(filteredL4, nil, genOpts)
|
||||
if err := r.HAProxy.WriteConfig(cfg); err != nil {
|
||||
slog.Error("reconcile: retry also failed", "error", err)
|
||||
slog.Error("retry also failed", "component", "reconcile", "error", err)
|
||||
} else if err := r.HAProxy.ReloadService(); err != nil {
|
||||
slog.Warn("reconcile: failed to reload HAProxy", "error", err)
|
||||
slog.Warn("failed to reload HAProxy", "component", "reconcile", "error", err)
|
||||
} else {
|
||||
r.broadcastEvent("haproxy:config", "HAProxy config regenerated (excluded broken domains)")
|
||||
}
|
||||
} else {
|
||||
slog.Error("reconcile: failed to write HAProxy config (no broken domains identified)", "error", err)
|
||||
slog.Error("failed to write HAProxy config (no broken domains identified)", "component", "reconcile", "error", err)
|
||||
}
|
||||
} else if err := r.HAProxy.ReloadService(); err != nil {
|
||||
slog.Warn("reconcile: failed to reload HAProxy", "error", err)
|
||||
slog.Warn("failed to reload HAProxy", "component", "reconcile", "error", err)
|
||||
} else {
|
||||
r.broadcastEvent("haproxy:config", "HAProxy config regenerated from registered domains")
|
||||
}
|
||||
@@ -296,7 +296,7 @@ func cleanZeroByteCerts(certsDir string) {
|
||||
for _, e := range entries {
|
||||
if strings.HasSuffix(e.Name(), ".pem") {
|
||||
if info, err := e.Info(); err == nil && info.Size() == 0 {
|
||||
slog.Warn("reconcile: removing 0-byte cert file", "file", e.Name())
|
||||
slog.Warn("removing 0-byte cert file", "component", "reconcile", "file", e.Name())
|
||||
_ = os.Remove(filepath.Join(certsDir, e.Name()))
|
||||
}
|
||||
}
|
||||
@@ -355,7 +355,7 @@ func ensureTLSCerts(globalCfg *config.State, doms []domains.Domain) {
|
||||
if gatewayDomain != "" && strings.HasSuffix(dom.DomainName, "."+gatewayDomain) {
|
||||
wildcardCert := certbot.HAProxyCertPath(gatewayDomain)
|
||||
if _, err := os.Stat(wildcardCert); err != nil {
|
||||
slog.Warn("reconcile/tls: no wildcard cert for gateway domain — provision via Certificates page",
|
||||
slog.Warn("no wildcard cert for gateway domain — provision via Certificates page", "component", "reconcile",
|
||||
"domain", dom.DomainName, "needed", "*."+gatewayDomain)
|
||||
}
|
||||
continue
|
||||
@@ -363,7 +363,7 @@ func ensureTLSCerts(globalCfg *config.State, doms []domains.Domain) {
|
||||
|
||||
// Check individual cert
|
||||
if _, err := os.Stat(certbot.HAProxyCertPath(dom.DomainName)); err != nil {
|
||||
slog.Warn("reconcile/tls: no cert for domain — provision via Certificates page",
|
||||
slog.Warn("no cert for domain — provision via Certificates page", "component", "reconcile",
|
||||
"domain", dom.DomainName)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ func (s *stubDNS) UpdateConfig(_ *config.State, entries []dnsmasq.DNSEntry, _ bo
|
||||
return nil
|
||||
}
|
||||
func (s *stubDNS) SetFilterConfPath(p string) { s.filterPath = p }
|
||||
func (s *stubDNS) GetStatus() (*dnsmasq.ServiceStatus, error) { return nil, nil }
|
||||
func (s *stubDNS) GetStatus() (*dnsmasq.Status, error) { return nil, nil }
|
||||
|
||||
type stubAuth struct {
|
||||
userCount int
|
||||
|
||||
Reference in New Issue
Block a user