From 0bf255c8fbd829a5ab2ebd37e76cd37c3e408f81 Mon Sep 17 00:00:00 2001 From: ionutboangiu Date: Tue, 20 Jan 2026 10:24:47 +0200 Subject: [PATCH] add ConfigHook for external config modification Add ConfigHook variable allowing external packages to modify config after logger init but before services start. --- cmd/cgr-engine/cgr-engine.go | 8 ++++++-- services/engine.go | 13 +++++++++++-- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/cmd/cgr-engine/cgr-engine.go b/cmd/cgr-engine/cgr-engine.go index 15dc7b3e2..47f35f9d9 100644 --- a/cmd/cgr-engine/cgr-engine.go +++ b/cmd/cgr-engine/cgr-engine.go @@ -18,8 +18,12 @@ along with this program. If not, see package main -import "github.com/cgrates/cgrates/services" +import ( + "os" + + "github.com/cgrates/cgrates/services" +) func main() { - services.RunCGREngine() + services.RunCGREngine(os.Args[1:]) } diff --git a/services/engine.go b/services/engine.go index ff651a71c..417e04d27 100644 --- a/services/engine.go +++ b/services/engine.go @@ -44,6 +44,9 @@ var ( logLevel = cgrEngineFlags.Int(utils.LogLevelCfg, -1, "Log level (0=emergency to 7=debug)") setVersions = cgrEngineFlags.Bool(utils.SetVersionsCgr, false, "Overwrite database versions (equivalent to cgr-migrator -exec=*set_versions)") + // ConfigHook allows external packages to modify config after logger init. + ConfigHook func(cfg *config.CGRConfig) error + cfg *config.CGRConfig ) @@ -275,8 +278,8 @@ func singnalHandler(shdWg *sync.WaitGroup, shdChan *utils.SyncedChan) { } } -func RunCGREngine() { - cgrEngineFlags.Parse(os.Args[1:]) +func RunCGREngine(args []string) { + cgrEngineFlags.Parse(args) vers, err := utils.GetCGRVersion() if err != nil { log.Fatalf("<%s> error received: <%s>, exiting!", utils.InitS, err.Error()) @@ -359,6 +362,12 @@ func RunCGREngine() { } utils.Logger.SetLogLevel(lgLevel) + if ConfigHook != nil { + if err := ConfigHook(cfg); err != nil { + log.Fatalf("ConfigHook failed: %s", err.Error()) + } + } + if *printConfig { cfgJSON := utils.ToIJSON(cfg.AsMapInterface(cfg.GeneralCfg().RSRSep)) utils.Logger.Info(fmt.Sprintf("Configuration loaded from %q:\n%s", *cfgPath, cfgJSON))