From 8046c6bfcc6259465fba360ceedabc766ae6f508 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Tue, 26 May 2020 17:18:13 +0300 Subject: [PATCH] Updated check config sanity --- config/configsanity.go | 80 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/config/configsanity.go b/config/configsanity.go index fe2f231c4..33e9c0dfc 100644 --- a/config/configsanity.go +++ b/config/configsanity.go @@ -98,6 +98,13 @@ func (cfg *CGRConfig) checkConfigSanity() error { return fmt.Errorf("<%s> cannot find CDR export template with ID: <%s>", utils.CDRs, cdrePrfl) } } + for prfl, cdre := range cfg.CdreProfiles { + for _, field := range cdre.Fields { + if field.Type != utils.META_NONE && field.Path == utils.EmptyString { + return fmt.Errorf("<%s> %s for %s at %s", utils.CDRs, utils.NewErrMandatoryIeMissing(utils.Path), prfl, field.Tag) + } + } + } } // Loaders sanity checks for _, ldrSCfg := range cfg.loaderCfg { @@ -118,6 +125,9 @@ func (cfg *CGRConfig) checkConfigSanity() error { if field.Type != utils.META_COMPOSED && field.Type != utils.MetaString && field.Type != utils.MetaVariable { return fmt.Errorf("<%s> invalid field type %s for %s at %s", utils.LoaderS, field.Type, data.Type, field.Tag) } + if field.Path == utils.EmptyString { + return fmt.Errorf("<%s> %s for %s at %s", utils.LoaderS, utils.NewErrMandatoryIeMissing(utils.Path), data.Type, field.Tag) + } } } } @@ -264,6 +274,29 @@ func (cfg *CGRConfig) checkConfigSanity() error { return fmt.Errorf("<%s> connection with id: <%s> not defined", utils.DiameterAgent, connID) } } + for prf, tmp := range cfg.diameterAgentCfg.Templates { + for _, field := range tmp { + if field.Type != utils.META_NONE && field.Path == utils.EmptyString { + return fmt.Errorf("<%s> %s for template %s at %s", utils.DiameterAgent, utils.NewErrMandatoryIeMissing(utils.Path), prf, field.Tag) + } + } + } + for _, req := range cfg.diameterAgentCfg.RequestProcessors { + for _, field := range req.RequestFields { + if field.Type != utils.META_NONE && + field.Type != utils.MetaTemplate && + field.Path == utils.EmptyString { + return fmt.Errorf("<%s> %s for %s at %s", utils.DiameterAgent, utils.NewErrMandatoryIeMissing(utils.Path), req.ID, field.Tag) + } + } + for _, field := range req.ReplyFields { + if field.Type != utils.META_NONE && + field.Type != utils.MetaTemplate && + field.Path == utils.EmptyString { + return fmt.Errorf("<%s> %s for %s at %s", utils.DiameterAgent, utils.NewErrMandatoryIeMissing(utils.Path), req.ID, field.Tag) + } + } + } } //Radius Agent if cfg.radiusAgentCfg.Enabled { @@ -279,6 +312,18 @@ func (cfg *CGRConfig) checkConfigSanity() error { return fmt.Errorf("<%s> connection with id: <%s> not defined", utils.RadiusAgent, connID) } } + for _, req := range cfg.radiusAgentCfg.RequestProcessors { + for _, field := range req.RequestFields { + if field.Type != utils.META_NONE && field.Path == utils.EmptyString { + return fmt.Errorf("<%s> %s for %s at %s", utils.RadiusAgent, utils.NewErrMandatoryIeMissing(utils.Path), req.ID, field.Tag) + } + } + for _, field := range req.ReplyFields { + if field.Type != utils.META_NONE && field.Path == utils.EmptyString { + return fmt.Errorf("<%s> %s for %s at %s", utils.RadiusAgent, utils.NewErrMandatoryIeMissing(utils.Path), req.ID, field.Tag) + } + } + } } //DNS Agent if cfg.dnsAgentCfg.Enabled { @@ -294,6 +339,18 @@ func (cfg *CGRConfig) checkConfigSanity() error { return fmt.Errorf("<%s> connection with id: <%s> not defined", utils.DNSAgent, connID) } } + for _, req := range cfg.dnsAgentCfg.RequestProcessors { + for _, field := range req.RequestFields { + if field.Type != utils.META_NONE && field.Path == utils.EmptyString { + return fmt.Errorf("<%s> %s for %s at %s", utils.DNSAgent, utils.NewErrMandatoryIeMissing(utils.Path), req.ID, field.Tag) + } + } + for _, field := range req.ReplyFields { + if field.Type != utils.META_NONE && field.Path == utils.EmptyString { + return fmt.Errorf("<%s> %s for %s at %s", utils.DNSAgent, utils.NewErrMandatoryIeMissing(utils.Path), req.ID, field.Tag) + } + } + } } // HTTPAgent checks for _, httpAgentCfg := range cfg.httpAgentCfg { @@ -312,7 +369,20 @@ func (cfg *CGRConfig) checkConfigSanity() error { if !utils.SliceHasMember([]string{utils.MetaTextPlain, utils.MetaXml}, httpAgentCfg.ReplyPayload) { return fmt.Errorf("<%s> unsupported reply payload %s", utils.HTTPAgent, httpAgentCfg.ReplyPayload) } + for _, req := range httpAgentCfg.RequestProcessors { + for _, field := range req.RequestFields { + if field.Type != utils.META_NONE && field.Path == utils.EmptyString { + return fmt.Errorf("<%s> %s for %s at %s", utils.HTTPAgent, utils.NewErrMandatoryIeMissing(utils.Path), req.ID, field.Tag) + } + } + for _, field := range req.ReplyFields { + if field.Type != utils.META_NONE && field.Path == utils.EmptyString { + return fmt.Errorf("<%s> %s for %s at %s", utils.HTTPAgent, utils.NewErrMandatoryIeMissing(utils.Path), req.ID, field.Tag) + } + } + } } + if cfg.attributeSCfg.Enabled { if cfg.attributeSCfg.ProcessRuns < 1 { return fmt.Errorf("<%s> process_runs needs to be bigger than 0", utils.AttributeS) @@ -424,6 +494,16 @@ func (cfg *CGRConfig) checkConfigSanity() error { } } } + for _, field := range rdr.CacheDumpFields { + if field.Type != utils.META_NONE && field.Path == utils.EmptyString { + return fmt.Errorf("<%s> %s for %s at %s", utils.ERs, utils.NewErrMandatoryIeMissing(utils.Path), rdr.ID, field.Tag) + } + } + for _, field := range rdr.Fields { + if field.Type != utils.META_NONE && field.Path == utils.EmptyString { + return fmt.Errorf("<%s> %s for %s at %s", utils.ERs, utils.NewErrMandatoryIeMissing(utils.Path), rdr.ID, field.Tag) + } + } } } // StorDB sanity checks