add ConfigHook for external config modification

Add ConfigHook variable allowing external packages to modify config
after logger init but before services start.
This commit is contained in:
ionutboangiu
2026-01-20 10:24:47 +02:00
committed by Dan Christian Bogos
parent cafa0a195e
commit 0bf255c8fb
2 changed files with 17 additions and 4 deletions

View File

@@ -18,8 +18,12 @@ along with this program. If not, see <https://www.gnu.org/licenses/>
package main
import "github.com/cgrates/cgrates/services"
import (
"os"
"github.com/cgrates/cgrates/services"
)
func main() {
services.RunCGREngine()
services.RunCGREngine(os.Args[1:])
}

View File

@@ -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))