diff --git a/config/analyzerscfg.go b/config/analyzerscfg.go
index fe179a786..99fc91f9e 100755
--- a/config/analyzerscfg.go
+++ b/config/analyzerscfg.go
@@ -18,6 +18,8 @@ along with this program. If not, see
package config
+import "github.com/cgrates/cgrates/utils"
+
// AttributeSCfg is the configuration of attribute service
type AnalyzerSCfg struct {
Enabled bool
@@ -32,3 +34,9 @@ func (alS *AnalyzerSCfg) loadFromJsonCfg(jsnCfg *AnalyzerSJsonCfg) (err error) {
}
return nil
}
+
+func (alS *AnalyzerSCfg) AsMapInterface() map[string]interface{} {
+ return map[string]interface{}{
+ utils.EnabledCfg: alS.Enabled,
+ }
+}
diff --git a/config/apiercfg.go b/config/apiercfg.go
index 1c958d7ae..439929f04 100644
--- a/config/apiercfg.go
+++ b/config/apiercfg.go
@@ -71,3 +71,13 @@ func (aCfg *ApierCfg) loadFromJsonCfg(jsnCfg *ApierJsonCfg) (err error) {
return nil
}
+
+func (aCfg *ApierCfg) AsMapInterface() map[string]interface{} {
+ return map[string]interface{}{
+ utils.EnabledCfg: aCfg.Enabled,
+ utils.CachesConnsCfg: aCfg.CachesConns,
+ utils.SchedulerConnsCfg: aCfg.SchedulerConns,
+ utils.AttributeSConnsCfg: aCfg.AttributeSConns,
+ }
+
+}
diff --git a/config/attributescfg.go b/config/attributescfg.go
index f19c76983..019c02552 100644
--- a/config/attributescfg.go
+++ b/config/attributescfg.go
@@ -18,6 +18,8 @@ along with this program. If not, see
package config
+import "github.com/cgrates/cgrates/utils"
+
// AttributeSCfg is the configuration of attribute service
type AttributeSCfg struct {
Enabled bool
@@ -60,3 +62,16 @@ func (alS *AttributeSCfg) loadFromJsonCfg(jsnCfg *AttributeSJsonCfg) (err error)
}
return
}
+
+func (alS *AttributeSCfg) AsMapInterface() map[string]interface{} {
+
+ return map[string]interface{}{
+ utils.EnabledCfg: alS.Enabled,
+ utils.IndexedSelectsCfg: alS.IndexedSelects,
+ utils.StringIndexedFieldsCfg: alS.StringIndexedFields,
+ utils.PrefixIndexedFieldsCfg: alS.PrefixIndexedFields,
+ utils.ProcessRunsCfg: alS.ProcessRuns,
+ utils.NestedFieldsCfg: alS.NestedFields,
+ }
+
+}
diff --git a/config/cachecfg.go b/config/cachecfg.go
index 78ec669f9..158ca42e2 100755
--- a/config/cachecfg.go
+++ b/config/cachecfg.go
@@ -55,6 +55,15 @@ func (cParam *CacheParamCfg) loadFromJsonCfg(jsnCfg *CacheParamJsonCfg) error {
return nil
}
+func (cParam *CacheParamCfg) AsMapInterface() map[string]interface{} {
+ return map[string]interface{}{
+ utils.Limit: cParam.Limit,
+ utils.TTL: cParam.TTL,
+ utils.StaticTTL: cParam.StaticTTL,
+ utils.Precache: cParam.Precache,
+ }
+}
+
// CacheCfg used to store the cache config
type CacheCfg map[string]*CacheParamCfg
@@ -92,3 +101,16 @@ func (cCfg CacheCfg) AddTmpCaches() {
TTL: time.Minute,
}
}
+
+func (cCfg *CacheCfg) AsMapInterface() map[string]interface{} {
+ partitions := make(map[string]interface{}, len(cCfg.Partitions))
+ for key, value := range cCfg.Partitions {
+ partitions[key] = value.AsMapInterface()
+ }
+
+ return map[string]interface{}{
+ utils.PartitionsCfg: partitions,
+ utils.RplConnsCfg: cCfg.ReplicationConns,
+ }
+
+}
diff --git a/config/cdrecfg.go b/config/cdrecfg.go
index 7e4537b28..9e92db639 100644
--- a/config/cdrecfg.go
+++ b/config/cdrecfg.go
@@ -18,6 +18,8 @@ along with this program. If not, see
package config
+import "github.com/cgrates/cgrates/utils"
+
// One instance of CdrExporter
type CdreCfg struct {
ExportFormat string
@@ -90,3 +92,22 @@ func (self *CdreCfg) Clone() *CdreCfg {
}
return clnCdre
}
+
+func (cdre *CdreCfg) AsMapInterface() map[string]interface{} {
+ fields := make([]map[string]interface{}, len(cdre.Fields))
+ for i, item := range cdre.Fields {
+ fields[i] = item.AsMapInterface()
+ }
+
+ return map[string]interface{}{
+ utils.ExportFormatCfg: cdre.ExportFormat,
+ utils.ExportPathCfg: cdre.ExportPath,
+ utils.FiltersCfg: cdre.Filters,
+ utils.TenantCfg: cdre.Tenant,
+ utils.AttributeSContextCfg: cdre.AttributeSContext,
+ utils.SynchronousCfg: cdre.Synchronous,
+ utils.AttemptsCfg: cdre.Attempts,
+ utils.FieldSeparatorCfg: cdre.FieldSeparator,
+ utils.FieldsCfg: fields,
+ }
+}
diff --git a/config/cdrscfg.go b/config/cdrscfg.go
index 280d635d6..589dc3bdd 100644
--- a/config/cdrscfg.go
+++ b/config/cdrscfg.go
@@ -117,3 +117,23 @@ func (cdrscfg *CdrsCfg) loadFromJsonCfg(jsnCdrsCfg *CdrsJsonCfg) (err error) {
return nil
}
+
+func (cdrscfg *CdrsCfg) AsMapInterface() map[string]interface{} {
+ extraFields := make([]string, len(cdrscfg.ExtraFields))
+ for i, item := range cdrscfg.ExtraFields {
+ extraFields[i] = item.Rules
+ }
+
+ return map[string]interface{}{
+ utils.EnabledCfg: cdrscfg.Enabled,
+ utils.ExtraFieldsCfg: extraFields,
+ utils.StoreCdrsCfg: cdrscfg.StoreCdrs,
+ utils.SMCostRetriesCfg: cdrscfg.SMCostRetries,
+ utils.ChargerSConnsCfg: cdrscfg.ChargerSConns,
+ utils.RALsConnsCfg: cdrscfg.RaterConns,
+ utils.AttributeSConnsCfg: cdrscfg.AttributeSConns,
+ utils.ThresholdSConnsCfg: cdrscfg.ThresholdSConns,
+ utils.StatSConnsCfg: cdrscfg.StatSConns,
+ utils.OnlineCDRExportsCfg: cdrscfg.OnlineCDRExports,
+ }
+}
diff --git a/config/chargerscfg.go b/config/chargerscfg.go
index 430e851da..41146671c 100644
--- a/config/chargerscfg.go
+++ b/config/chargerscfg.go
@@ -70,3 +70,14 @@ func (cS *ChargerSCfg) loadFromJsonCfg(jsnCfg *ChargerSJsonCfg) (err error) {
}
return
}
+
+func (cS *ChargerSCfg) AsMapInterface() map[string]interface{} {
+ return map[string]interface{}{
+ utils.EnabledCfg: cS.Enabled,
+ utils.IndexedSelectsCfg: cS.IndexedSelects,
+ utils.AttributeSConnsCfg: cS.AttributeSConns,
+ utils.StringIndexedFieldsCfg: cS.StringIndexedFields,
+ utils.PrefixIndexedFieldsCfg: cS.PrefixIndexedFields,
+ utils.NestedFieldsCfg: cS.NestedFields,
+ }
+}
diff --git a/config/config.go b/config/config.go
index 4fb4c604c..d9c48eb6f 100755
--- a/config/config.go
+++ b/config/config.go
@@ -1465,3 +1465,65 @@ func (cfg *CGRConfig) reloadSections(sections ...string) (err error) {
}
return
}
+
+func (cfg *CGRConfig) AsMapInterface() map[string]interface{} {
+ rpcConns := make(map[string]map[string]interface{}, len(cfg.rpcConns))
+ for key, val := range cfg.rpcConns {
+ rpcConns[key] = val.AsMapInterface()
+ }
+
+ cdreProfiles := make(map[string]map[string]interface{})
+ for key, val := range cfg.CdreProfiles {
+ cdreProfiles[key] = val.AsMapInterface()
+ }
+
+ loaderCfg := make([]map[string]interface{}, len(cfg.loaderCfg))
+ for i, item := range cfg.loaderCfg {
+ loaderCfg[i] = item.AsMapInterface()
+ }
+
+ httpAgentCfg := make([]map[string]interface{}, len(cfg.httpAgentCfg))
+ for i, item := range cfg.httpAgentCfg {
+ httpAgentCfg[i] = item.AsMapInterface()
+ }
+
+ return map[string]interface{}{
+
+ utils.CdreProfiles: cdreProfiles,
+ utils.LoaderCfg: loaderCfg,
+ utils.HttpAgentCfg: httpAgentCfg,
+ utils.RpcConns: rpcConns,
+ utils.GeneralCfg: cfg.generalCfg.AsMapInterface(),
+ utils.DataDbCfg: cfg.dataDbCfg.AsMapInterface(),
+ utils.StorDbCfg: cfg.storDbCfg.AsMapInterface(),
+ utils.TlsCfg: cfg.tlsCfg.AsMapInterface(),
+ utils.CacheCfg: cfg.cacheCfg.AsMapInterface(),
+ utils.ListenCfg: cfg.listenCfg.AsMapInterface(),
+ utils.HttpCfg: cfg.httpCfg.AsMapInterface(),
+ utils.FilterSCfg: cfg.filterSCfg.AsMapInterface(),
+ utils.RalsCfg: cfg.ralsCfg.AsMapInterface(),
+ utils.SchedulerCfg: cfg.schedulerCfg.AsMapInterface(),
+ utils.CdrsCfg: cfg.cdrsCfg.AsMapInterface(),
+ utils.SessionSCfg: cfg.sessionSCfg.AsMapInterface(),
+ utils.FsAgentCfg: cfg.fsAgentCfg.AsMapInterface(),
+ utils.KamAgentCfg: cfg.kamAgentCfg.AsMapInterface(),
+ utils.AsteriskAgentCfg: cfg.asteriskAgentCfg.AsMapInterface(),
+ utils.DiameterAgentCfg: cfg.diameterAgentCfg.AsMapInterface(),
+ utils.RadiusAgentCfg: cfg.radiusAgentCfg.AsMapInterface(),
+ utils.DnsAgentCfg: cfg.dnsAgentCfg.AsMapInterface(),
+ utils.AttributeSCfg: cfg.attributeSCfg.AsMapInterface(),
+ utils.ChargerSCfg: cfg.chargerSCfg.AsMapInterface(),
+ utils.ResourceSCfg: cfg.resourceSCfg.AsMapInterface(),
+ utils.StatsCfg: cfg.statsCfg.AsMapInterface(),
+ utils.ThresholdSCfg: cfg.thresholdSCfg.AsMapInterface(),
+ utils.SupplierSCfg: cfg.supplierSCfg.AsMapInterface(),
+ utils.SureTaxCfg: cfg.sureTaxCfg.AsMapInterface(),
+ utils.DispatcherSCfg: cfg.dispatcherSCfg.AsMapInterface(),
+ utils.LoaderCgrCfg: cfg.loaderCgrCfg.AsMapInterface(),
+ utils.MigratorCgrCfg: cfg.migratorCgrCfg.AsMapInterface(),
+ utils.MailerCfg: cfg.mailerCfg.AsMapInterface(),
+ utils.AnalyzerSCfg: cfg.analyzerSCfg.AsMapInterface(),
+ utils.Apier: cfg.apier.AsMapInterface(),
+ utils.ErsCfg: cfg.ersCfg.AsMapInterface(),
+ }
+}
diff --git a/config/datadbcfg.go b/config/datadbcfg.go
index e029ad49e..e945d8ddf 100644
--- a/config/datadbcfg.go
+++ b/config/datadbcfg.go
@@ -129,6 +129,27 @@ func (dbcfg *DataDbCfg) Clone() *DataDbCfg {
}
}
+func (dbcfg *DataDbCfg) AsMapInterface() map[string]interface{} {
+ items := make(map[string]interface{})
+ for key, item := range dbcfg.Items {
+ items[key] = item.AsMapInterface()
+ }
+
+ return map[string]interface{}{
+ utils.DataDbTypeCfg: dbcfg.DataDbType,
+ utils.DataDbHostCfg: dbcfg.DataDbHost,
+ utils.DataDbPortCfg: dbcfg.DataDbPort,
+ utils.DataDbNameCfg: dbcfg.DataDbName,
+ utils.DataDbUserCfg: dbcfg.DataDbUser,
+ utils.DataDbPassCfg: dbcfg.DataDbPass,
+ utils.DataDbSentinelNameCfg: dbcfg.DataDbSentinelName,
+ utils.QueryTimeoutCfg: dbcfg.QueryTimeout,
+ utils.RmtConnsCfg: dbcfg.RmtConns,
+ utils.RplConnsCfg: dbcfg.RplConns,
+ utils.ItemsCfg: items,
+ }
+}
+
type ItemOpt struct {
Remote bool
Replicate bool
@@ -140,6 +161,16 @@ type ItemOpt struct {
APIKey string
}
+func (itm *ItemOpt) AsMapInterface() map[string]interface{} {
+ return map[string]interface{}{
+ utils.RemoteCfg: itm.Remote,
+ utils.ReplicateCfg: itm.Replicate,
+ utils.LimitCfg: itm.Limit,
+ utils.TTLCfg: itm.TTL,
+ utils.StaticTTLCfg: itm.StaticTTL,
+ }
+}
+
func (itm *ItemOpt) loadFromJsonCfg(jsonItm *ItemOptJson) (err error) {
if jsonItm == nil {
return
diff --git a/config/diametercfg.go b/config/diametercfg.go
index 7cc09dfbb..ef619f055 100644
--- a/config/diametercfg.go
+++ b/config/diametercfg.go
@@ -116,3 +116,39 @@ func (da *DiameterAgentCfg) loadFromJsonCfg(jsnCfg *DiameterAgentJsonCfg, separa
}
return nil
}
+
+func (ds *DiameterAgentCfg) AsMapInterface() map[string]interface{} {
+ templates := make(map[string][]map[string]interface{})
+ for key, value := range ds.Templates {
+ fcTemplate := make([]map[string]interface{}, len(value))
+ for i, val := range value {
+ fcTemplate[i] = val.AsMapInterface()
+
+ }
+ templates[key] = fcTemplate
+ }
+
+ requestProcessors := make([]map[string]interface{}, len(ds.RequestProcessors))
+ for i, item := range ds.RequestProcessors {
+ requestProcessors[i] = item.AsMapInterface()
+ }
+
+ return map[string]interface{}{
+ utils.EnabledCfg: ds.Enabled,
+ utils.ListenNetCfg: ds.ListenNet,
+ utils.ListenCfg: ds.Listen,
+ utils.DictionariesPathCfg: ds.DictionariesPath,
+ utils.SessionSConnsCfg: ds.SessionSConns,
+ utils.OriginHostCfg: ds.OriginHost,
+ utils.OriginRealmCfg: ds.OriginRealm,
+ utils.VendorIdCfg: ds.VendorId,
+ utils.ProductNameCfg: ds.ProductName,
+ utils.ConcurrentReqsCfg: ds.ConcurrentReqs,
+ utils.SyncedConnReqsCfg: ds.SyncedConnReqs,
+ utils.ASRTemplateCfg: ds.ASRTemplate,
+ utils.RARTemplateCfg: ds.RARTemplate,
+ utils.ForcedDisconnectCfg: ds.ForcedDisconnect,
+ utils.TemplatesCfg: templates,
+ utils.RequestProcessorsCfg: requestProcessors,
+ }
+}
diff --git a/config/dispatchercfg.go b/config/dispatchercfg.go
index 01d451d23..797f328c9 100755
--- a/config/dispatchercfg.go
+++ b/config/dispatchercfg.go
@@ -70,3 +70,15 @@ func (dps *DispatcherSCfg) loadFromJsonCfg(jsnCfg *DispatcherSJsonCfg) (err erro
}
return nil
}
+
+func (dps *DispatcherSCfg) AsMapInterface() map[string]interface{} {
+ return map[string]interface{}{
+ utils.EnabledCfg: dps.Enabled,
+ utils.IndexedSelectsCfg: dps.IndexedSelects,
+ utils.StringIndexedFieldsCfg: dps.StringIndexedFields,
+ utils.PrefixIndexedFieldsCfg: dps.PrefixIndexedFields,
+ utils.AttributeSConnsCfg: dps.AttributeSConns,
+ utils.NestedFieldsCfg: dps.NestedFields,
+ }
+
+}
diff --git a/config/dnsagntcfg.go b/config/dnsagntcfg.go
index c967bc763..912c15b6b 100644
--- a/config/dnsagntcfg.go
+++ b/config/dnsagntcfg.go
@@ -80,6 +80,23 @@ func (da *DNSAgentCfg) loadFromJsonCfg(jsnCfg *DNSAgentJsonCfg, sep string) (err
return nil
}
+func (da *DNSAgentCfg) AsMapInterface() map[string]interface{} {
+ requestProcessors := make([]map[string]interface{}, len(da.RequestProcessors))
+ for i, item := range da.RequestProcessors {
+ requestProcessors[i] = item.AsMapInterface()
+ }
+
+ return map[string]interface{}{
+ utils.EnabledCfg: da.Enabled,
+ utils.ListenCfg: da.Listen,
+ utils.ListenNetCfg: da.ListenNet,
+ utils.SessionSConnsCfg: da.SessionSConns,
+ utils.TimezoneCfg: da.Timezone,
+ utils.RequestProcessorsCfg: requestProcessors,
+ }
+
+}
+
// RequestProcessor is the request processor configuration
type RequestProcessor struct {
ID string
@@ -129,3 +146,26 @@ func (rp *RequestProcessor) loadFromJsonCfg(jsnCfg *ReqProcessorJsnCfg, sep stri
}
return nil
}
+
+func (rp *RequestProcessor) AsMapInterface() map[string]interface{} {
+ replyFields := make([]map[string]interface{}, len(rp.ReplyFields))
+ for i, item := range rp.ReplyFields {
+ replyFields[i] = item.AsMapInterface()
+ }
+
+ requestFields := make([]map[string]interface{}, len(rp.RequestFields))
+ for i, item := range rp.RequestFields {
+ requestFields[i] = item.AsMapInterface()
+ }
+
+ return map[string]interface{}{
+ utils.ID: rp.ID,
+ utils.Tenant: rp.Tenant,
+ utils.Filters: rp.Filters,
+ utils.Flags: rp.Flags,
+ utils.TimezoneCfg: rp.Timezone,
+ utils.RequestFieldsCfg: requestFields,
+ utils.ReplyFieldsCfg: replyFields,
+ }
+
+}
diff --git a/config/erscfg.go b/config/erscfg.go
index 7b474ba33..2f4616f20 100644
--- a/config/erscfg.go
+++ b/config/erscfg.go
@@ -98,6 +98,20 @@ func (erS *ERsCfg) Clone() (cln *ERsCfg) {
return
}
+func (erS *ERsCfg) AsMapInterface() map[string]interface{} {
+
+ readers := make([]map[string]interface{}, len(erS.Readers))
+ for i, item := range erS.Readers {
+ readers[i] = item.AsMapInterface()
+ }
+
+ return map[string]interface{}{
+ utils.EnabledCfg: erS.Enabled,
+ utils.SessionSConnsCfg: erS.SessionSConns,
+ utils.ReadersCfg: readers,
+ }
+}
+
type EventReaderCfg struct {
ID string
Type string
@@ -232,3 +246,47 @@ func (er *EventReaderCfg) Clone() (cln *EventReaderCfg) {
}
return
}
+
+func (er *EventReaderCfg) AsMapInterface() map[string]interface{} {
+ xmlRootPath := make([]string, len(er.XmlRootPath))
+ for i, item := range er.XmlRootPath {
+ xmlRootPath[i] = item
+ }
+ tenant := make([]string, len(er.Tenant))
+ for i, item := range er.Tenant {
+ tenant[i] = item.Rules
+ }
+ flags := make(map[string][]string, len(er.Flags))
+ for key, val := range er.Flags {
+ flags[key] = val
+ }
+ fields := make([]map[string]interface{}, len(er.Fields))
+ for i, item := range er.Fields {
+ fields[i] = item.AsMapInterface()
+ }
+ cacheDumpFields := make([]map[string]interface{}, len(er.CacheDumpFields))
+ for i, item := range er.CacheDumpFields {
+ cacheDumpFields[i] = item.AsMapInterface()
+ }
+
+ return map[string]interface{}{
+ utils.IDCfg: er.ID,
+ utils.TypeCfg: er.Type,
+ utils.RowLengthCfg: er.RowLength,
+ utils.FieldSepCfg: er.FieldSep,
+ utils.RunDelayCfg: er.RunDelay,
+ utils.ConcurrentReqsCfg: er.ConcurrentReqs,
+ utils.SourcePathCfg: er.SourcePath,
+ utils.ProcessedPathCfg: er.ProcessedPath,
+ utils.XmlRootPathCfg: xmlRootPath,
+ utils.TenantCfg: tenant,
+ utils.TimezoneCfg: er.Timezone,
+ utils.FiltersCfg: er.Filters,
+ utils.FlagsCfg: flags,
+ utils.FailedCallsPrefixCfg: er.FailedCallsPrefix,
+ utils.PartialRecordCacheCfg: er.PartialRecordCache,
+ utils.PartialCacheExpiryActionCfg: er.PartialCacheExpiryAction,
+ utils.FieldsCfg: fields,
+ utils.CacheDumpFieldsCfg: cacheDumpFields,
+ }
+}
diff --git a/config/fctemplate.go b/config/fctemplate.go
index 4efc652d3..d09487f10 100755
--- a/config/fctemplate.go
+++ b/config/fctemplate.go
@@ -190,3 +190,33 @@ func (self *FCTemplate) Clone() *FCTemplate {
cln.MaskLen = self.MaskLen
return cln
}
+
+func (fc *FCTemplate) AsMapInterface() map[string]interface{} {
+ values := make([]string, len(fc.Value))
+ for i, item := range fc.Value {
+ values[i] = item.Rules
+ }
+
+ return map[string]interface{}{
+ utils.TagCfg: fc.Tag,
+ utils.TypeCf: fc.Type,
+ utils.PathCfg: fc.Path,
+ utils.FiltersCfg: fc.Filters,
+ utils.ValueCfg: values,
+ utils.WidthCfg: fc.Width,
+ utils.StripCfg: fc.Strip,
+ utils.PaddingCfg: fc.Padding,
+ utils.MandatoryCfg: fc.Mandatory,
+ utils.AttributeIDCfg: fc.AttributeID,
+ utils.NewBranchCfg: fc.NewBranch,
+ utils.TimezoneCfg: fc.Timezone,
+ utils.BlockerCfg: fc.Blocker,
+ utils.BreakOnSuccessCfg: fc.BreakOnSuccess,
+ utils.LayoutCfg: fc.Layout,
+ utils.CostShiftDigitsCfg: fc.CostShiftDigits,
+ utils.RoundingDecimalsCfg: fc.RoundingDecimals,
+ utils.MaskDestIDCfg: fc.MaskDestID,
+ utils.MaskLenCfg: fc.MaskLen,
+ }
+
+}
diff --git a/config/filterscfg.go b/config/filterscfg.go
index acb9cdb8b..037426f8d 100644
--- a/config/filterscfg.go
+++ b/config/filterscfg.go
@@ -53,3 +53,11 @@ func (fSCfg *FilterSCfg) loadFromJsonCfg(jsnCfg *FilterSJsonCfg) (err error) {
}
return
}
+
+func (fSCfg *FilterSCfg) AsMapInterface() map[string]interface{} {
+ return map[string]interface{}{
+ utils.StatSConnsCfg: fSCfg.StatSConns,
+ utils.ResourceSConnsCfg: fSCfg.ResourceSConns,
+ utils.ApierSConnsCfg: fSCfg.ApierSConns,
+ }
+}
diff --git a/config/generalcfg.go b/config/generalcfg.go
index 55a7363da..9a5ea9674 100644
--- a/config/generalcfg.go
+++ b/config/generalcfg.go
@@ -142,3 +142,32 @@ func (gencfg *GeneralCfg) loadFromJsonCfg(jsnGeneralCfg *GeneralJsonCfg) (err er
return nil
}
+
+func (gencfg *GeneralCfg) AsMapInterface() map[string]interface{} {
+ return map[string]interface{}{
+ utils.NodeIDCfg: gencfg.NodeID,
+ utils.LoggerCfg: gencfg.Logger,
+ utils.LogLevelCfg: gencfg.LogLevel,
+ utils.HttpSkipTlsVerifyCfg: gencfg.HttpSkipTlsVerify,
+ utils.RoundingDecimalsCfg: gencfg.RoundingDecimals,
+ utils.DBDataEncodingCfg: gencfg.DBDataEncoding,
+ utils.TpExportPathCfg: gencfg.TpExportPath,
+ utils.PosterAttemptsCfg: gencfg.PosterAttempts,
+ utils.FailedPostsDirCfg: gencfg.FailedPostsDir,
+ utils.FailedPostsTTLCfg: gencfg.FailedPostsTTL,
+ utils.DefaultReqTypeCfg: gencfg.DefaultReqType,
+ utils.DefaultCategoryCfg: gencfg.DefaultCategory,
+ utils.DefaultTenantCfg: gencfg.DefaultTenant,
+ utils.DefaultTimezoneCfg: gencfg.DefaultTimezone,
+ utils.DefaultCachingCfg: gencfg.DefaultCaching,
+ utils.ConnectAttemptsCfg: gencfg.ConnectAttempts,
+ utils.ReconnectsCfg: gencfg.Reconnects,
+ utils.ConnectTimeoutCfg: gencfg.ConnectTimeout,
+ utils.ReplyTimeoutCfg: gencfg.ReplyTimeout,
+ utils.LockingTimeoutCfg: gencfg.LockingTimeout,
+ utils.DigestSeparatorCfg: gencfg.DigestSeparator,
+ utils.DigestEqualCfg: gencfg.DigestEqual,
+ utils.RSRSepCfg: gencfg.RSRSep,
+ utils.MaxParralelConnsCfg: gencfg.MaxParralelConns,
+ }
+}
diff --git a/config/httpagntcfg.go b/config/httpagntcfg.go
index f546fa619..ce8caad0e 100644
--- a/config/httpagntcfg.go
+++ b/config/httpagntcfg.go
@@ -117,3 +117,19 @@ func (ca *HttpAgentCfg) loadFromJsonCfg(jsnCfg *HttpAgentJsonCfg, separator stri
}
return nil
}
+
+func (ca *HttpAgentCfg) AsMapInterface() map[string]interface{} {
+ requestProcessors := make([]map[string]interface{}, len(ca.RequestProcessors))
+ for i, item := range ca.RequestProcessors {
+ requestProcessors[i] = item.AsMapInterface()
+ }
+
+ return map[string]interface{}{
+ utils.IDCfg: ca.ID,
+ utils.UrlCfg: ca.Url,
+ utils.SessionSConnsCfg: ca.SessionSConns,
+ utils.RequestPayloadCfg: ca.RequestPayload,
+ utils.ReplyPayloadCfg: ca.ReplyPayload,
+ utils.RequestProcessorsCfg: ca.RequestProcessors,
+ }
+}
diff --git a/config/httpcfg.go b/config/httpcfg.go
index d08be1f66..d97db7061 100644
--- a/config/httpcfg.go
+++ b/config/httpcfg.go
@@ -18,6 +18,8 @@ along with this program. If not, see
package config
+import "github.com/cgrates/cgrates/utils"
+
// HTTP config section
type HTTPCfg struct {
HTTPJsonRPCURL string // JSON RPC relative URL ("" to disable)
@@ -54,3 +56,14 @@ func (httpcfg *HTTPCfg) loadFromJsonCfg(jsnHttpCfg *HTTPJsonCfg) (err error) {
return nil
}
+
+func (httpcfg *HTTPCfg) AsMapInterface() map[string]interface{} {
+ return map[string]interface{}{
+ utils.HTTPJsonRPCURLCfg: httpcfg.HTTPJsonRPCURL,
+ utils.HTTPWSURLCfg: httpcfg.HTTPWSURL,
+ utils.HTTPFreeswitchCDRsURLCfg: httpcfg.HTTPFreeswitchCDRsURL,
+ utils.HTTPCDRsURLCfg: httpcfg.HTTPCDRsURL,
+ utils.HTTPUseBasicAuthCfg: httpcfg.HTTPUseBasicAuth,
+ utils.HTTPAuthUsersCfg: httpcfg.HTTPAuthUsers,
+ }
+}
diff --git a/config/kamagentcfg.go b/config/kamagentcfg.go
index 81b3589c3..418995c0c 100644
--- a/config/kamagentcfg.go
+++ b/config/kamagentcfg.go
@@ -43,6 +43,14 @@ func (self *KamConnCfg) loadFromJsonCfg(jsnCfg *KamConnJsonCfg) error {
return nil
}
+func (kamCfg *KamConnCfg) AsMapInterface() map[string]interface{} {
+ return map[string]interface{}{
+ utils.AliasCfg: kamCfg.Alias,
+ utils.AddressCfg: kamCfg.Address,
+ utils.ReconnectsCfg: kamCfg.Reconnects,
+ }
+}
+
// SM-Kamailio config section
type KamAgentCfg struct {
Enabled bool
@@ -82,3 +90,19 @@ func (ka *KamAgentCfg) loadFromJsonCfg(jsnCfg *KamAgentJsonCfg) error {
}
return nil
}
+
+func (ka *KamAgentCfg) AsMapInterface() map[string]interface{} {
+ evapiConns := make([]map[string]interface{}, len(ka.EvapiConns))
+ for i, item := range ka.EvapiConns {
+ evapiConns[i] = item.AsMapInterface()
+ }
+
+ return map[string]interface{}{
+ utils.EnabledCfg: ka.Enabled,
+ utils.SessionSConnsCfg: ka.SessionSConns,
+ utils.CreateCdrCfg: ka.CreateCdr,
+ utils.EvapiConnsCfg: evapiConns,
+ utils.TimezoneCfg: ka.Timezone,
+ }
+
+}
diff --git a/config/libconfig_json.go b/config/libconfig_json.go
index 10df27d7f..f1327b14a 100755
--- a/config/libconfig_json.go
+++ b/config/libconfig_json.go
@@ -535,7 +535,6 @@ type FcTemplateJsonCfg struct {
Timezone *string
Blocker *bool
Break_on_success *bool
- Handler_id *string
Layout *string
Cost_shift_digits *int
Rounding_decimals *int
diff --git a/config/listencfg.go b/config/listencfg.go
index ff3603372..49c2b668e 100644
--- a/config/listencfg.go
+++ b/config/listencfg.go
@@ -18,6 +18,8 @@ along with this program. If not, see
package config
+import "github.com/cgrates/cgrates/utils"
+
// Listen config section
type ListenCfg struct {
RPCJSONListen string // RPC JSON listening address
@@ -53,3 +55,14 @@ func (lstcfg *ListenCfg) loadFromJsonCfg(jsnListenCfg *ListenJsonCfg) (err error
}
return nil
}
+
+func (lstcfg *ListenCfg) AsMapInterface() map[string]interface{} {
+ return map[string]interface{}{
+ utils.RPCJSONListenCfg: lstcfg.RPCJSONListen,
+ utils.RPCGOBListenCfg: lstcfg.RPCGOBListen,
+ utils.HTTPListenCfg: lstcfg.HTTPListen,
+ utils.RPCJSONTLSListenCfg: lstcfg.RPCJSONTLSListen,
+ utils.RPCGOBTLSListenCfg: lstcfg.RPCGOBTLSListen,
+ utils.HTTPTLSListenCfg: lstcfg.HTTPTLSListen,
+ }
+}
diff --git a/config/loadercgrcfg.go b/config/loadercgrcfg.go
index 168c2709c..11a3537b6 100644
--- a/config/loadercgrcfg.go
+++ b/config/loadercgrcfg.go
@@ -70,3 +70,26 @@ func (ld *LoaderCgrCfg) loadFromJsonCfg(jsnCfg *LoaderCfgJson) (err error) {
}
return nil
}
+
+func (ld *LoaderCgrCfg) AsMapInterface() map[string]interface{} {
+ gapiCredentials := make([]byte, len(ld.GapiCredentials))
+ for i, item := range ld.GapiCredentials {
+ gapiCredentials[i] = item
+ }
+
+ gapiToken := make([]byte, len(ld.GapiToken))
+ for i, item := range ld.GapiToken {
+ gapiToken[i] = item
+ }
+
+ return map[string]interface{}{
+ utils.TpIDCfg: ld.TpID,
+ utils.DataPathCfg: ld.DataPath,
+ utils.DisableReverseCfg: ld.DisableReverse,
+ utils.FieldSeparatorCfg: ld.FieldSeparator,
+ utils.CachesConnsCfg: ld.CachesConns,
+ utils.SchedulerConnsCfg: ld.SchedulerConns,
+ utils.GapiCredentialsCfg: gapiCredentials,
+ utils.GapiTokenCfg: gapiToken,
+ }
+}
diff --git a/config/loaderscfg.go b/config/loaderscfg.go
index a1e80af37..412c01121 100644
--- a/config/loaderscfg.go
+++ b/config/loaderscfg.go
@@ -181,3 +181,42 @@ func (self *LoaderSCfg) Clone() *LoaderSCfg {
}
return clnLoader
}
+
+func (lData *LoaderDataType) AsMapInterface() map[string]interface{} {
+ fields := make([]map[string]interface{}, len(lData.Fields))
+ for i, item := range lData.Fields {
+ fields[i] = item.AsMapInterface()
+ }
+
+ return map[string]interface{}{
+ utils.TypeCf: lData.Type,
+ utils.FilenameCfg: lData.Filename,
+ utils.FieldsCfg: fields,
+ }
+}
+
+func (l *LoaderSCfg) AsMapInterface() map[string]interface{} {
+ tenant := make([]string, len(l.Tenant))
+ for i, item := range l.Tenant {
+ tenant[i] = item.Rules
+ }
+
+ data := make([]map[string]interface{}, len(l.Data))
+ for i, item := range l.Data {
+ data[i] = item.AsMapInterface()
+ }
+
+ return map[string]interface{}{
+ utils.IdCfg: l.Id,
+ utils.EnabledCfg: l.Enabled,
+ utils.TenantCfg: tenant,
+ utils.DryRunCfg: l.DryRun,
+ utils.RunDelayCfg: l.RunDelay,
+ utils.LockFileNameCfg: l.LockFileName,
+ utils.CacheSConnsCfg: l.CacheSConns,
+ utils.FieldSeparatorCfg: l.FieldSeparator,
+ utils.TpInDirCfg: l.TpInDir,
+ utils.TpOutDirCfg: l.TpOutDir,
+ utils.DataCfg: data,
+ }
+}
diff --git a/config/mailercfg.go b/config/mailercfg.go
index 781890c27..c682cf467 100644
--- a/config/mailercfg.go
+++ b/config/mailercfg.go
@@ -18,6 +18,8 @@ along with this program. If not, see
package config
+import "github.com/cgrates/cgrates/utils"
+
// Mailer config section
type MailerCfg struct {
MailerServer string // The server to use when sending emails out
@@ -46,3 +48,13 @@ func (mailcfg *MailerCfg) loadFromJsonCfg(jsnMailerCfg *MailerJsonCfg) (err erro
return nil
}
+
+func (mailcfg *MailerCfg) AsMapInterface() map[string]interface{} {
+ return map[string]interface{}{
+ utils.MailerServerCfg: mailcfg.MailerServer,
+ utils.MailerAuthUserCfg: mailcfg.MailerAuthUser,
+ utils.MailerAuthPassCfg: mailcfg.MailerAuthPass,
+ utils.MailerFromAddrCfg: mailcfg.MailerFromAddr,
+ }
+
+}
diff --git a/config/migratorcfg.go b/config/migratorcfg.go
index 266565be5..976f7c1ab 100644
--- a/config/migratorcfg.go
+++ b/config/migratorcfg.go
@@ -20,6 +20,8 @@ package config
import (
"strings"
+
+ "github.com/cgrates/cgrates/utils"
)
type MigratorCgrCfg struct {
@@ -94,3 +96,24 @@ func (mg *MigratorCgrCfg) loadFromJsonCfg(jsnCfg *MigratorCfgJson) (err error) {
}
return nil
}
+
+func (mg *MigratorCgrCfg) AsMapInterface() map[string]interface{} {
+ return map[string]interface{}{
+ utils.OutDataDBTypeCfg: mg.OutDataDBType,
+ utils.OutDataDBHostCfg: mg.OutDataDBHost,
+ utils.OutDataDBPortCfg: mg.OutDataDBPort,
+ utils.OutDataDBNameCfg: mg.OutDataDBName,
+ utils.OutDataDBUserCfg: mg.OutDataDBUser,
+ utils.OutDataDBPasswordCfg: mg.OutDataDBPassword,
+ utils.OutDataDBEncodingCfg: mg.OutDataDBEncoding,
+ utils.OutDataDBRedisSentinelCfg: mg.OutDataDBRedisSentinel,
+ utils.OutStorDBTypeCfg: mg.OutStorDBType,
+ utils.OutStorDBHostCfg: mg.OutStorDBHost,
+ utils.OutStorDBPortCfg: mg.OutStorDBPort,
+ utils.OutStorDBNameCfg: mg.OutStorDBName,
+ utils.OutStorDBUserCfg: mg.OutStorDBUser,
+ utils.OutStorDBPasswordCfg: mg.OutStorDBPassword,
+ utils.UsersFiltersCfg: mg.UsersFilters,
+ }
+
+}
diff --git a/config/radiuscfg.go b/config/radiuscfg.go
index 095722f28..b2ce1aaa7 100644
--- a/config/radiuscfg.go
+++ b/config/radiuscfg.go
@@ -95,3 +95,32 @@ func (self *RadiusAgentCfg) loadFromJsonCfg(jsnCfg *RadiusAgentJsonCfg, separato
}
return nil
}
+
+func (ra *RadiusAgentCfg) AsMapInterface() map[string]interface{} {
+ clientSecrets := make(map[string]interface{}, len(ra.ClientSecrets))
+ for key, val := range ra.ClientSecrets {
+ clientSecrets[key] = val
+ }
+
+ clientDictionaries := make(map[string]interface{}, len(ra.ClientDictionaries))
+ for key, val := range ra.ClientDictionaries {
+ clientDictionaries[key] = val
+ }
+
+ requestProcessors := make([]map[string]interface{}, len(ra.RequestProcessors))
+ for i, item := range ra.RequestProcessors {
+ requestProcessors[i] = item.AsMapInterface()
+ }
+
+ return map[string]interface{}{
+ utils.EnabledCfg: ra.Enabled,
+ utils.ListenNetCfg: ra.ListenNet,
+ utils.ListenAuthCfg: ra.ListenAuth,
+ utils.ListenAcctCfg: ra.ListenAcct,
+ utils.ClientSecretsCfg: clientSecrets,
+ utils.ClientDictionariesCfg: clientDictionaries,
+ utils.SessionSConnsCfg: ra.SessionSConns,
+ utils.RequestProcessorsCfg: requestProcessors,
+ }
+
+}
diff --git a/config/ralscfg.go b/config/ralscfg.go
index 1f97c58e7..563d2a12b 100644
--- a/config/ralscfg.go
+++ b/config/ralscfg.go
@@ -102,3 +102,27 @@ func (ralsCfg *RalsCfg) loadFromJsonCfg(jsnRALsCfg *RalsJsonCfg) (err error) {
return nil
}
+
+func (ralsCfg *RalsCfg) AsMapInterface() map[string]interface{} {
+ maxComputed := make(map[string]interface{})
+ for key, item := range ralsCfg.MaxComputedUsage {
+ maxComputed[key] = item
+ }
+
+ balanceRating := make(map[string]interface{})
+ for key, item := range ralsCfg.BalanceRatingSubject {
+ balanceRating[key] = item
+ }
+
+ return map[string]interface{}{
+ utils.EnabledCfg: ralsCfg.Enabled,
+ utils.ThresholdSConnsCfg: ralsCfg.ThresholdSConns,
+ utils.StatSConnsCfg: ralsCfg.StatSConns,
+ utils.CacheSConnsCfg: ralsCfg.CacheSConns,
+ utils.RpSubjectPrefixMatchingCfg: ralsCfg.RpSubjectPrefixMatching,
+ utils.RemoveExpiredCfg: ralsCfg.RemoveExpired,
+ utils.MaxComputedUsageCfg: maxComputed,
+ utils.BalanceRatingSubjectCfg: balanceRating,
+ utils.MaxIncrementsCfg: ralsCfg.MaxIncrements,
+ }
+}
diff --git a/config/resourcescfg.go b/config/resourcescfg.go
index 4dde04ea2..887ef9c91 100644
--- a/config/resourcescfg.go
+++ b/config/resourcescfg.go
@@ -79,3 +79,17 @@ func (rlcfg *ResourceSConfig) loadFromJsonCfg(jsnCfg *ResourceSJsonCfg) (err err
}
return nil
}
+
+func (rlcfg *ResourceSConfig) AsMapInterface() map[string]interface{} {
+
+ return map[string]interface{}{
+ utils.EnabledCfg: rlcfg.Enabled,
+ utils.IndexedSelectsCfg: rlcfg.IndexedSelects,
+ utils.ThresholdSConnsCfg: rlcfg.ThresholdSConns,
+ utils.StoreIntervalCfg: rlcfg.StoreInterval,
+ utils.StringIndexedFieldsCfg: rlcfg.StringIndexedFields,
+ utils.PrefixIndexedFieldsCfg: rlcfg.PrefixIndexedFields,
+ utils.NestedFieldsCfg: rlcfg.NestedFields,
+ }
+
+}
diff --git a/config/rpcconn.go b/config/rpcconn.go
index 24de0e77c..1f13506e0 100644
--- a/config/rpcconn.go
+++ b/config/rpcconn.go
@@ -18,7 +18,10 @@ along with this program. If not, see
package config
-import "github.com/cgrates/rpcclient"
+import (
+ "github.com/cgrates/cgrates/utils"
+ "github.com/cgrates/rpcclient"
+)
// Returns the first cached default value for a RemoteHost connection
func NewDfltRemoteHost() *RemoteHost {
@@ -59,6 +62,19 @@ func (rC *RPCConn) loadFromJsonCfg(jsnCfg *RPCConnsJson) (err error) {
return
}
+func (rC *RPCConn) AsMapInterface() map[string]interface{} {
+ conns := make([]map[string]interface{}, len(rC.Conns))
+ for i, item := range rC.Conns {
+ conns[i] = item.AsMapInterface()
+ }
+
+ return map[string]interface{}{
+ utils.Strategy: rC.Strategy,
+ utils.PoolSize: rC.PoolSize,
+ utils.Conns: conns,
+ }
+}
+
// One connection to Rater
type RemoteHost struct {
Address string
@@ -85,3 +101,12 @@ func (self *RemoteHost) loadFromJsonCfg(jsnCfg *RemoteHostJson) error {
}
return nil
}
+
+func (rh *RemoteHost) AsMapInterface() map[string]interface{} {
+ return map[string]interface{}{
+ utils.Address: rh.Address,
+ utils.Transport: rh.Transport,
+ utils.Synchronous: rh.Synchronous,
+ utils.TLS: rh.TLS,
+ }
+}
diff --git a/config/schedulercfg.go b/config/schedulercfg.go
index 888c86669..91b34301d 100755
--- a/config/schedulercfg.go
+++ b/config/schedulercfg.go
@@ -52,3 +52,11 @@ func (schdcfg *SchedulerCfg) loadFromJsonCfg(jsnCfg *SchedulerJsonCfg) error {
}
return nil
}
+
+func (schdcfg *SchedulerCfg) AsMapInterface() map[string]interface{} {
+ return map[string]interface{}{
+ utils.EnabledCfg: schdcfg.Enabled,
+ utils.CDRsConnsCfg: schdcfg.CDRsConns,
+ utils.FiltersCfg: schdcfg.Filters,
+ }
+}
diff --git a/config/smconfig.go b/config/smconfig.go
index 3c14b5fb0..c6ed12ba4 100644
--- a/config/smconfig.go
+++ b/config/smconfig.go
@@ -63,6 +63,15 @@ func (self *FsConnCfg) loadFromJsonCfg(jsnCfg *FsConnJsonCfg) error {
return nil
}
+func (fs *FsConnCfg) AsMapInterface() map[string]interface{} {
+ return map[string]interface{}{
+ utils.AddressCfg: fs.Address,
+ utils.Password: fs.Password,
+ utils.ReconnectsCfg: fs.Reconnects,
+ utils.AliasCfg: fs.Alias,
+ }
+}
+
type SessionSCfg struct {
Enabled bool
ListenBijson string
@@ -263,6 +272,37 @@ func (scfg *SessionSCfg) loadFromJsonCfg(jsnCfg *SessionSJsonCfg) (err error) {
return nil
}
+func (scfg *SessionSCfg) AsMapInterface() map[string]interface{} {
+
+ return map[string]interface{}{
+ utils.EnabledCfg: scfg.Enabled,
+ utils.ListenBijsonCfg: scfg.ListenBijson,
+ utils.ChargerSConnsCfg: scfg.ChargerSConns,
+ utils.RALsConnsCfg: scfg.RALsConns,
+ utils.ResSConnsCfg: scfg.ResSConns,
+ utils.ThreshSConnsCfg: scfg.ThreshSConns,
+ utils.StatSConnsCfg: scfg.StatSConns,
+ utils.SupplSConnsCfg: scfg.SupplSConns,
+ utils.AttrSConnsCfg: scfg.AttrSConns,
+ utils.CDRsConnsCfg: scfg.CDRsConns,
+ utils.ReplicationConnsCfg: scfg.ReplicationConns,
+ utils.DebitIntervalCfg: scfg.DebitInterval,
+ utils.StoreSCostsCfg: scfg.StoreSCosts,
+ utils.MinCallDurationCfg: scfg.MinCallDuration,
+ utils.MaxCallDurationCfg: scfg.MaxCallDuration,
+ utils.SessionTTLCfg: scfg.SessionTTL,
+ utils.SessionTTLMaxDelayCfg: scfg.SessionTTLMaxDelay,
+ utils.SessionTTLLastUsedCfg: scfg.SessionTTLLastUsed,
+ utils.SessionTTLUsageCfg: scfg.SessionTTLUsage,
+ utils.SessionIndexesCfg: scfg.SessionIndexes.GetSlice(),
+ utils.ClientProtocolCfg: scfg.ClientProtocol,
+ utils.ChannelSyncIntervalCfg: scfg.ChannelSyncInterval,
+ utils.TerminateAttemptsCfg: scfg.TerminateAttempts,
+ utils.AlterableFieldsCfg: scfg.AlterableFields.AsSlice(),
+ utils.MinDurLowBalanceCfg: scfg.MinDurLowBalance,
+ }
+}
+
type FsAgentCfg struct {
Enabled bool
SessionSConns []string
@@ -329,6 +369,27 @@ func (self *FsAgentCfg) loadFromJsonCfg(jsnCfg *FreeswitchAgentJsonCfg) error {
return nil
}
+func (fscfg *FsAgentCfg) AsMapInterface() map[string]interface{} {
+ var eventSocketConns []map[string]interface{}
+ // eventSocketConns := make(map[string]interface{}, len(fscfg.EventSocketConns))
+ for _, item := range fscfg.EventSocketConns {
+ eventSocketConns = append(eventSocketConns, item.AsMapInterface())
+ }
+
+ return map[string]interface{}{
+ utils.EnabledCfg: fscfg.Enabled,
+ utils.SessionSConnsCfg: fscfg.SessionSConns,
+ utils.SubscribeParkCfg: fscfg.SubscribePark,
+ utils.CreateCdrCfg: fscfg.CreateCdr,
+ utils.ExtraFieldsCfg: fscfg.ExtraFields,
+ utils.LowBalanceAnnFileCfg: fscfg.LowBalanceAnnFile,
+ utils.EmptyBalanceContextCfg: fscfg.EmptyBalanceContext,
+ utils.EmptyBalanceAnnFileCfg: fscfg.EmptyBalanceAnnFile,
+ utils.MaxWaitConnectionCfg: fscfg.MaxWaitConnection,
+ utils.EventSocketConnsCfg: eventSocketConns,
+ }
+}
+
// Returns the first cached default value for a FreeSWITCHAgent connection
func NewDfltKamConnConfig() *KamConnCfg {
if dfltKamConnConfig == nil {
@@ -381,6 +442,17 @@ func (aConnCfg *AsteriskConnCfg) loadFromJsonCfg(jsnCfg *AstConnJsonCfg) error {
return nil
}
+func (aConnCfg *AsteriskConnCfg) AsMapInterface() map[string]interface{} {
+ return map[string]interface{}{
+ utils.AliasCfg: aConnCfg.Alias,
+ utils.AddressCfg: aConnCfg.Address,
+ utils.UserCf: aConnCfg.User,
+ utils.Password: aConnCfg.Password,
+ utils.ConnectAttemptsCfg: aConnCfg.ConnectAttempts,
+ utils.ReconnectsCfg: aConnCfg.Reconnects,
+ }
+}
+
type AsteriskAgentCfg struct {
Enabled bool
SessionSConns []string
@@ -418,3 +490,17 @@ func (aCfg *AsteriskAgentCfg) loadFromJsonCfg(jsnCfg *AsteriskAgentJsonCfg) (err
}
return nil
}
+
+func (aCfg *AsteriskAgentCfg) AsMapInterface() map[string]interface{} {
+ conns := make([]map[string]interface{}, len(aCfg.AsteriskConns))
+ for i, item := range aCfg.AsteriskConns {
+ conns[i] = item.AsMapInterface()
+ }
+
+ return map[string]interface{}{
+ utils.EnabledCfg: aCfg.Enabled,
+ utils.SessionSConnsCfg: aCfg.SessionSConns,
+ utils.CreateCDRCfg: aCfg.CreateCDR,
+ utils.AsteriskConnsCfg: conns,
+ }
+}
diff --git a/config/statscfg.go b/config/statscfg.go
index dbe2f7ee9..8bc99fc8e 100644
--- a/config/statscfg.go
+++ b/config/statscfg.go
@@ -83,3 +83,18 @@ func (st *StatSCfg) loadFromJsonCfg(jsnCfg *StatServJsonCfg) (err error) {
}
return nil
}
+
+func (st *StatSCfg) AsMapInterface() map[string]interface{} {
+
+ return map[string]interface{}{
+ utils.EnabledCfg: st.Enabled,
+ utils.IndexedSelectsCfg: st.IndexedSelects,
+ utils.StoreIntervalCfg: st.StoreInterval,
+ utils.StoreUncompressedLimitCfg: st.StoreUncompressedLimit,
+ utils.ThresholdSConnsCfg: st.ThresholdSConns,
+ utils.StringIndexedFieldsCfg: st.StringIndexedFields,
+ utils.PrefixIndexedFieldsCfg: st.PrefixIndexedFields,
+ utils.NestedFieldsCfg: st.NestedFields,
+ }
+
+}
diff --git a/config/stordbcfg.go b/config/stordbcfg.go
index 50a44e543..fd7f3cd94 100644
--- a/config/stordbcfg.go
+++ b/config/stordbcfg.go
@@ -125,3 +125,27 @@ func (dbcfg *StorDbCfg) Clone() *StorDbCfg {
Items: dbcfg.Items,
}
}
+
+func (dbcfg *StorDbCfg) AsMapInterface() map[string]interface{} {
+ items := make(map[string]interface{})
+ for key, item := range dbcfg.Items {
+ items[key] = item.AsMapInterface()
+ }
+
+ return map[string]interface{}{
+ utils.TypeCfg: dbcfg.Type,
+ utils.HostCfg: dbcfg.Host,
+ utils.PortCfg: dbcfg.Port,
+ utils.NameCfg: dbcfg.Name,
+ utils.UserCfg: dbcfg.User,
+ utils.PasswordCfg: dbcfg.Password,
+ utils.MaxOpenConnsCfg: dbcfg.MaxOpenConns,
+ utils.MaxIdleConnsCfg: dbcfg.MaxIdleConns,
+ utils.ConnMaxLifetimeCfg: dbcfg.ConnMaxLifetime,
+ utils.StringIndexedFieldsCfg: dbcfg.StringIndexedFields,
+ utils.PrefixIndexedFieldsCfg: dbcfg.PrefixIndexedFields,
+ utils.QueryTimeoutCfg: dbcfg.QueryTimeout,
+ utils.SSLModeCfg: dbcfg.SSLMode,
+ utils.ItemsCfg: items,
+ }
+}
diff --git a/config/supplierscfg.go b/config/supplierscfg.go
index 81b096da9..930262c03 100644
--- a/config/supplierscfg.go
+++ b/config/supplierscfg.go
@@ -98,3 +98,20 @@ func (spl *SupplierSCfg) loadFromJsonCfg(jsnCfg *SupplierSJsonCfg) (err error) {
}
return nil
}
+
+func (spl *SupplierSCfg) AsMapInterface() map[string]interface{} {
+
+ return map[string]interface{}{
+ utils.EnabledCfg: spl.Enabled,
+ utils.IndexedSelectsCfg: spl.IndexedSelects,
+ utils.StringIndexedFieldsCfg: spl.StringIndexedFields,
+ utils.PrefixIndexedFieldsCfg: spl.PrefixIndexedFields,
+ utils.AttributeSConnsCfg: spl.AttributeSConns,
+ utils.ResourceSConnsCfg: spl.ResourceSConns,
+ utils.StatSConnsCfg: spl.StatSConns,
+ utils.RALsConnsCfg: spl.ResponderSConns,
+ utils.DefaultRatioCfg: spl.DefaultRatio,
+ utils.NestedFieldsCfg: spl.NestedFields,
+ }
+
+}
diff --git a/config/suretaxcfg.go b/config/suretaxcfg.go
index fc02d64df..04bf8ec87 100644
--- a/config/suretaxcfg.go
+++ b/config/suretaxcfg.go
@@ -173,3 +173,116 @@ func (self *SureTaxCfg) loadFromJsonCfg(jsnCfg *SureTaxJsonCfg) (err error) {
}
return nil
}
+
+func (st *SureTaxCfg) AsMapInterface() map[string]interface{} {
+
+ clientTracking := make([]string, len(st.ClientTracking))
+ for i, item := range st.ClientTracking {
+ clientTracking[i] = item.Rules
+ }
+
+ customerNumber := make([]string, len(st.CustomerNumber))
+ for i, item := range st.CustomerNumber {
+ customerNumber[i] = item.Rules
+ }
+
+ origNumber := make([]string, len(st.OrigNumber))
+ for i, item := range st.OrigNumber {
+ origNumber[i] = item.Rules
+ }
+
+ termNumber := make([]string, len(st.TermNumber))
+ for i, item := range st.TermNumber {
+ termNumber[i] = item.Rules
+ }
+
+ billToNumber := make([]string, len(st.BillToNumber))
+ for i, item := range st.BillToNumber {
+ billToNumber[i] = item.Rules
+ }
+
+ zipcode := make([]string, len(st.Zipcode))
+ for i, item := range st.Zipcode {
+ zipcode[i] = item.Rules
+ }
+
+ plus4 := make([]string, len(st.Plus4))
+ for i, item := range st.Plus4 {
+ plus4[i] = item.Rules
+ }
+
+ p2PZipcode := make([]string, len(st.P2PZipcode))
+ for i, item := range st.P2PZipcode {
+ p2PZipcode[i] = item.Rules
+ }
+
+ p2PPlus4 := make([]string, len(st.P2PPlus4))
+ for i, item := range st.P2PPlus4 {
+ p2PPlus4[i] = item.Rules
+ }
+
+ units := make([]string, len(st.Units))
+ for i, item := range st.Units {
+ units[i] = item.Rules
+ }
+
+ unitType := make([]string, len(st.UnitType))
+ for i, item := range st.UnitType {
+ unitType[i] = item.Rules
+ }
+
+ taxIncluded := make([]string, len(st.TaxIncluded))
+ for i, item := range st.TaxIncluded {
+ taxIncluded[i] = item.Rules
+ }
+
+ taxSitusRule := make([]string, len(st.TaxSitusRule))
+ for i, item := range st.TaxSitusRule {
+ taxSitusRule[i] = item.Rules
+ }
+
+ transTypeCode := make([]string, len(st.TransTypeCode))
+ for i, item := range st.TransTypeCode {
+ transTypeCode[i] = item.Rules
+ }
+
+ salesTypeCode := make([]string, len(st.SalesTypeCode))
+ for i, item := range st.SalesTypeCode {
+ salesTypeCode[i] = item.Rules
+ }
+
+ taxExemptionCodeList := make([]string, len(st.TaxExemptionCodeList))
+ for i, item := range st.TaxExemptionCodeList {
+ taxExemptionCodeList[i] = item.Rules
+ }
+
+ return map[string]interface{}{
+ utils.UrlCfg: st.Url,
+ utils.ClientNumberCfg: st.ClientNumber,
+ utils.ValidationKeyCfg: st.ValidationKey,
+ utils.BusinessUnitCfg: st.BusinessUnit,
+ utils.TimezoneCfg: st.Timezone.String(),
+ utils.IncludeLocalCostCfg: st.IncludeLocalCost,
+ utils.ReturnFileCodeCfg: st.ReturnFileCode,
+ utils.ResponseGroupCfg: st.ResponseGroup,
+ utils.ResponseTypeCfg: st.ResponseType,
+ utils.RegulatoryCodeCfg: st.RegulatoryCode,
+ utils.ClientTrackingCfg: st.ClientTracking,
+ utils.CustomerNumberCfg: st.CustomerNumber,
+ utils.OrigNumberCfg: st.OrigNumber,
+ utils.TermNumberCfg: st.TermNumber,
+ utils.BillToNumberCfg: st.BillToNumber,
+ utils.ZipcodeCfg: st.Zipcode,
+ utils.Plus4Cfg: st.Plus4,
+ utils.P2PZipcodeCfg: st.P2PZipcode,
+ utils.P2PPlus4Cfg: st.P2PPlus4,
+ utils.UnitsCfg: st.Units,
+ utils.UnitTypeCfg: st.UnitType,
+ utils.TaxIncludedCfg: st.TaxIncluded,
+ utils.TaxSitusRuleCfg: st.TaxSitusRule,
+ utils.TransTypeCodeCfg: st.TransTypeCode,
+ utils.SalesTypeCodeCfg: st.SalesTypeCode,
+ utils.TaxExemptionCodeListCfg: st.TaxExemptionCodeList,
+ }
+
+}
diff --git a/config/thresholdscfg.go b/config/thresholdscfg.go
index d72307b17..eb75360da 100644
--- a/config/thresholdscfg.go
+++ b/config/thresholdscfg.go
@@ -67,3 +67,14 @@ func (t *ThresholdSCfg) loadFromJsonCfg(jsnCfg *ThresholdSJsonCfg) (err error) {
}
return nil
}
+
+func (t *ThresholdSCfg) AsMapInterface() map[string]interface{} {
+ return map[string]interface{}{
+ utils.EnabledCfg: t.Enabled,
+ utils.IndexedSelectsCfg: t.IndexedSelects,
+ utils.StoreIntervalCfg: t.StoreInterval,
+ utils.StringIndexedFieldsCfg: t.StringIndexedFields,
+ utils.PrefixIndexedFieldsCfg: t.PrefixIndexedFields,
+ utils.NestedFieldsCfg: t.NestedFields,
+ }
+}
diff --git a/config/tlscfg.go b/config/tlscfg.go
index 31587cc6d..d3bb3a763 100755
--- a/config/tlscfg.go
+++ b/config/tlscfg.go
@@ -18,6 +18,8 @@ along with this program. If not, see
package config
+import "github.com/cgrates/cgrates/utils"
+
// AttributeSCfg is the configuration of attribute service
type TlsCfg struct {
ServerCerificate string
@@ -56,3 +58,16 @@ func (tls *TlsCfg) loadFromJsonCfg(jsnCfg *TlsJsonCfg) (err error) {
}
return
}
+
+func (tls *TlsCfg) AsMapInterface() map[string]interface{} {
+ return map[string]interface{}{
+ utils.ServerCerificateCfg: tls.ServerCerificate,
+ utils.ServerKeyCfg: tls.ServerKey,
+ utils.ServerPolicyCfg: tls.ServerPolicy,
+ utils.ServerNameCfg: tls.ServerName,
+ utils.ClientCerificateCfg: tls.ClientCerificate,
+ utils.ClientKeyCfg: tls.ClientKey,
+ utils.CaCertificateCfg: tls.CaCertificate,
+ }
+
+}
diff --git a/utils/consts.go b/utils/consts.go
index 67f0945fc..3bac5b500 100755
--- a/utils/consts.go
+++ b/utils/consts.go
@@ -1558,6 +1558,408 @@ var (
PostgressSSLModeVerifyFull = "verify-full"
)
+// GeneralCfg
+const (
+ NodeIDCfg = "node_id"
+ LoggerCfg = "logger"
+ LogLevelCfg = "log_level"
+ HttpSkipTlsVerifyCfg = "http_skip_tls_verify"
+ RoundingDecimalsCfg = "rounding_decimals"
+ DBDataEncodingCfg = "dbdata_encoding"
+ TpExportPathCfg = "tpexport_dir"
+ PosterAttemptsCfg = "poster_attempts"
+ FailedPostsDirCfg = "failed_posts_dir"
+ FailedPostsTTLCfg = "failed_posts_ttl"
+ DefaultReqTypeCfg = "default_request_type"
+ DefaultCategoryCfg = "default_category"
+ DefaultTenantCfg = "default_tenant"
+ DefaultTimezoneCfg = "default_timezone"
+ DefaultCachingCfg = "default_caching"
+ ConnectAttemptsCfg = "connect_attempts"
+ ReconnectsCfg = "reconnects"
+ ConnectTimeoutCfg = "connect_timeout"
+ ReplyTimeoutCfg = "reply_timeout"
+ LockingTimeoutCfg = "locking_timeout"
+ DigestSeparatorCfg = "digest_separator"
+ DigestEqualCfg = "digest_equal"
+ RSRSepCfg = "rsr_separator"
+ MaxParralelConnsCfg = "max_parralel_conns"
+)
+
+// StorDbCfg
+const (
+ TypeCfg = "db_type"
+ HostCfg = "db_host"
+ PortCfg = "db_port"
+ NameCfg = "db_name"
+ UserCfg = "db_user"
+ PasswordCfg = "db_password"
+ MaxOpenConnsCfg = "max_open_conns"
+ MaxIdleConnsCfg = "max_idle_conns"
+ ConnMaxLifetimeCfg = "conn_max_lifetime"
+ StringIndexedFieldsCfg = "string_indexed_fields"
+ PrefixIndexedFieldsCfg = "prefix_indexed_fields"
+ QueryTimeoutCfg = "query_timeout"
+ SSLModeCfg = "sslmode"
+ ItemsCfg = "items"
+)
+
+// DataDbCfg
+const (
+ DataDbTypeCfg = "db_type"
+ DataDbHostCfg = "db_host"
+ DataDbPortCfg = "db_port"
+ DataDbNameCfg = "db_name"
+ DataDbUserCfg = "db_user"
+ DataDbPassCfg = "db_password"
+ DataDbSentinelNameCfg = "redis_sentinel"
+ RmtConnsCfg = "remote_conns"
+ RplConnsCfg = "replication_conns"
+)
+
+// ItemOpt
+const (
+ RemoteCfg = "remote"
+ ReplicateCfg = "replicate"
+ TTLCfg = "ttl"
+ LimitCfg = "limit"
+ StaticTTLCfg = "static_ttl"
+)
+
+// Tls
+const (
+ ServerCerificateCfg = "server_certificate"
+ ServerKeyCfg = "server_key"
+ ServerPolicyCfg = "server_policy"
+ ServerNameCfg = "server_name"
+ ClientCerificateCfg = "client_certificate"
+ ClientKeyCfg = "client_key"
+ CaCertificateCfg = "ca_certificate"
+)
+
+// ListenCfg
+const (
+ RPCJSONListenCfg = "rpc_json"
+ RPCGOBListenCfg = "rpc_gob"
+ HTTPListenCfg = "http"
+ RPCJSONTLSListenCfg = "rpc_json_tls"
+ RPCGOBTLSListenCfg = "rpc_gob_tls"
+ HTTPTLSListenCfg = "http_tls"
+)
+
+// HTTPCfg
+const (
+ HTTPJsonRPCURLCfg = "json_rpc_url"
+ HTTPWSURLCfg = "ws_url"
+ HTTPFreeswitchCDRsURLCfg = "freeswitch_cdrs_url"
+ HTTPCDRsURLCfg = "http_cdrs"
+ HTTPUseBasicAuthCfg = "use_basic_auth"
+ HTTPAuthUsersCfg = "auth_users"
+)
+
+// FilterSCfg
+const (
+ StatSConnsCfg = "stats_conns"
+ ResourceSConnsCfg = "resources_conns"
+ ApierSConnsCfg = "apiers_conns"
+)
+
+// RalsCfg
+const (
+ EnabledCfg = "enabled"
+ ThresholdSConnsCfg = "thresholds_conns"
+ CacheSConnsCfg = "caches_conns"
+ RpSubjectPrefixMatchingCfg = "rp_subject_prefix_matching"
+ RemoveExpiredCfg = "remove_expired"
+ MaxComputedUsageCfg = "max_computed_usage"
+ BalanceRatingSubjectCfg = "balance_rating_subject"
+ MaxIncrementsCfg = "max_increments"
+)
+
+// SchedulerCfg
+const (
+ CDRsConnsCfg = "cdrs_conns"
+ FiltersCfg = "filters"
+)
+
+// CdrsCfg
+const (
+ ExtraFieldsCfg = "extra_fields"
+ StoreCdrsCfg = "store_cdrs"
+ SMCostRetriesCfg = "session_cost_retries"
+ ChargerSConnsCfg = "chargers_conns"
+ AttributeSConnsCfg = "attributes_conns"
+ OnlineCDRExportsCfg = "online_cdr_exports"
+)
+
+// SessionSCfg
+const (
+ ListenBijsonCfg = "listen_bijson"
+ RALsConnsCfg = "rals_conns"
+ ResSConnsCfg = "resources_conns"
+ ThreshSConnsCfg = "thresholds_conns"
+ SupplSConnsCfg = "suppliers_conns"
+ AttrSConnsCfg = "attributes_conns"
+ ReplicationConnsCfg = "replication_conns"
+ DebitIntervalCfg = "debit_interval"
+ StoreSCostsCfg = "store_session_costs"
+ MinCallDurationCfg = "min_call_duration"
+ MaxCallDurationCfg = "max_call_duration"
+ SessionTTLCfg = "session_ttl"
+ SessionTTLMaxDelayCfg = "session_ttl_max_delay"
+ SessionTTLLastUsedCfg = "session_ttl_last_used"
+ SessionTTLUsageCfg = "session_ttl_usage"
+ SessionIndexesCfg = "session_indexes"
+ ClientProtocolCfg = "client_protocol"
+ ChannelSyncIntervalCfg = "channel_sync_interval"
+ TerminateAttemptsCfg = "terminate_attempts"
+ AlterableFieldsCfg = "alterable_fields"
+ MinDurLowBalanceCfg = "min_dur_low_balance"
+)
+
+// FsAgentCfg
+const (
+ SessionSConnsCfg = "sessions_conns"
+ SubscribeParkCfg = "subscribe_park"
+ CreateCdrCfg = "create_cdr"
+ LowBalanceAnnFileCfg = "low_balance_ann_file"
+ EmptyBalanceContextCfg = "empty_balance_context"
+ EmptyBalanceAnnFileCfg = "empty_balance_ann_file"
+ MaxWaitConnectionCfg = "max_wait_connection"
+ EventSocketConnsCfg = "event_socket_conns"
+)
+
+// From Config
+const (
+ AddressCfg = "address"
+ Password = "password"
+ AliasCfg = "alias"
+
+ // KamAgentCfg
+ EvapiConnsCfg = "evapi_conns"
+ TimezoneCfg = "timezone"
+
+ // AsteriskConnCfg
+ UserCf = "user"
+
+ // AsteriskAgentCfg
+ CreateCDRCfg = "create_cdr"
+ AsteriskConnsCfg = "asterisk_conns"
+
+ // DiameterAgentCfg
+ ListenNetCfg = "listen_net"
+ ListenCfg = "listen"
+ DictionariesPathCfg = "dictionaries_path"
+ OriginHostCfg = "origin_host"
+ OriginRealmCfg = "origin_realm"
+ VendorIdCfg = "vendor_id"
+ ProductNameCfg = "product_name"
+ ConcurrentReqsCfg = "concurrent_requests"
+ SyncedConnReqsCfg = "synced_conn_requests"
+ ASRTemplateCfg = "asr_template"
+ RARTemplateCfg = "rar_template"
+ ForcedDisconnectCfg = "forced_disconnect"
+ TemplatesCfg = "templates"
+ RequestProcessorsCfg = "request_processors"
+
+ // RequestProcessor
+ RequestFieldsCfg = "Request_fields"
+ ReplyFieldsCfg = "Reply_fields"
+
+ // RadiusAgentCfg
+ ListenAuthCfg = "listen_auth"
+ ListenAcctCfg = "listen_acct"
+ ClientSecretsCfg = "client_secrets"
+ ClientDictionariesCfg = "client_dictionaries"
+
+ // AttributeSCfg
+ IndexedSelectsCfg = "indexed_selects"
+ ProcessRunsCfg = "process_runs"
+ NestedFieldsCfg = "nested_fields"
+
+ // ChargerSCfg
+ StoreIntervalCfg = "store_interval"
+
+ // StatSCfg
+ StoreUncompressedLimitCfg = "store_uncompressed_limit"
+
+ // Cache
+ PartitionsCfg = "partitions"
+ StaticTTL = "StaticTTL"
+ Precache = "Precache"
+
+ // CdreCfg
+ ExportFormatCfg = "export_format"
+ ExportPathCfg = "export_path"
+ AttributeSContextCfg = "attributes_context"
+ SynchronousCfg = "synchronous"
+ AttemptsCfg = "attempts"
+
+ //LoaderSCfg
+ IdCfg = "id"
+ DryRunCfg = "dry_run"
+ LockFileNameCfg = "lock_filename"
+ TpInDirCfg = "tp_in_dir"
+ TpOutDirCfg = "tp_out_dir"
+ DataCfg = "data"
+
+ DefaultRatioCfg = "default_ratio"
+ ReadersCfg = "readers"
+ PoolSize = "PoolSize"
+ Conns = "Conns"
+ FilenameCfg = "file_name"
+ RequestPayloadCfg = "Request_payload"
+ ReplyPayloadCfg = "Reply_payload"
+)
+
+// FC Template
+const (
+ TagCfg = "tag"
+ TypeCf = "type"
+ PathCfg = "path"
+ ValueCfg = "value"
+ WidthCfg = "width"
+ StripCfg = "strip"
+ PaddingCfg = "padding"
+ MandatoryCfg = "mandatory"
+ AttributeIDCfg = "attribute_id"
+ NewBranchCfg = "new_branch"
+ BlockerCfg = "blocker"
+ BreakOnSuccessCfg = "break_on_success"
+ Handler_id = "handler_id"
+ LayoutCfg = "layout"
+ CostShiftDigitsCfg = "cost_shift_digits"
+ MaskDestIDCfg = "mask_destinationd_id"
+ MaskLenCfg = "mask_length"
+)
+
+// SureTax
+const (
+ UrlCfg = "url"
+ ClientNumberCfg = "client_number"
+ ValidationKeyCfg = "validation_key"
+ BusinessUnitCfg = "business_unit"
+ IncludeLocalCostCfg = "include_local_cost"
+ ReturnFileCodeCfg = "return_file_code"
+ ResponseGroupCfg = "response_group"
+ ResponseTypeCfg = "response_type"
+ RegulatoryCodeCfg = "regulatory_code"
+ ClientTrackingCfg = "client_tracking"
+ CustomerNumberCfg = "customer_number"
+ OrigNumberCfg = "orig_number"
+ TermNumberCfg = "term_number"
+ BillToNumberCfg = "bill_to_number"
+ ZipcodeCfg = "zipcode"
+ Plus4Cfg = "plus4"
+ P2PZipcodeCfg = "p2PZipcode"
+ P2PPlus4Cfg = "p2PPlus4"
+ UnitsCfg = "units"
+ UnitTypeCfg = "unit_type"
+ TaxIncludedCfg = "tax_included"
+ TaxSitusRuleCfg = "tax_situs_rule"
+ TransTypeCodeCfg = "trans_type_code"
+ SalesTypeCodeCfg = "sales_type_code"
+ TaxExemptionCodeListCfg = "tax_exemption_code_list"
+)
+
+// LoaderCgrCfg
+const (
+ TpIDCfg = "tpid"
+ DataPathCfg = "data_path"
+ DisableReverseCfg = "disable_reverse"
+ FieldSeparatorCfg = "field_separator"
+ CachesConnsCfg = "caches_conns"
+ SchedulerConnsCfg = "scheduler_conns"
+ GapiCredentialsCfg = "gapi_credentials"
+ GapiTokenCfg = "gapi_token"
+)
+
+// MigratorCgrCfg
+const (
+ OutDataDBTypeCfg = "Out_dataDB_type"
+ OutDataDBHostCfg = "Out_dataDB_host"
+ OutDataDBPortCfg = "Out_dataDB_port"
+ OutDataDBNameCfg = "Out_dataDB_name"
+ OutDataDBUserCfg = "Out_dataDB_user"
+ OutDataDBPasswordCfg = "Out_dataDB_password"
+ OutDataDBEncodingCfg = "Out_dataDB_encoding"
+ OutDataDBRedisSentinelCfg = "Out_dataDB_redis_sentinel"
+ OutStorDBTypeCfg = "Out_storDB_type"
+ OutStorDBHostCfg = "Out_storDB_host"
+ OutStorDBPortCfg = "Out_storDB_port"
+ OutStorDBNameCfg = "Out_storDB_name"
+ OutStorDBUserCfg = "Out_storDB_user"
+ OutStorDBPasswordCfg = "Out_storDB_password"
+ UsersFiltersCfg = "Users_filters"
+)
+
+// MailerCfg
+const (
+ MailerServerCfg = "Server"
+ MailerAuthUserCfg = "Auth_user"
+ MailerAuthPassCfg = "Auth_password"
+ MailerFromAddrCfg = "From_address"
+)
+
+// EventReaderCfg
+const (
+ IDCfg = "id"
+ RowLengthCfg = "row_length"
+ FieldSepCfg = "field_separator"
+ RunDelayCfg = "run_delay"
+ SourcePathCfg = "source_path"
+ ProcessedPathCfg = "processed_path"
+ XmlRootPathCfg = "xml_root_path"
+ TenantCfg = "tenant"
+ FlagsCfg = "flags"
+ FailedCallsPrefixCfg = "failed_calls_prefix"
+ PartialRecordCacheCfg = "partial_record_cache"
+ PartialCacheExpiryActionCfg = "soome"
+ FieldsCfg = "fields"
+ CacheDumpFieldsCfg = "cache_dump_fields"
+)
+
+// CGRConfig
+const (
+ CdreProfiles = "cdre" // from JSON
+ LoaderCfg = "loaders" // from JSON
+ HttpAgentCfg = "http_agent" // from JSON
+ RpcConns = "rpc_conns" // from JSON
+ GeneralCfg = "general" // from JSON
+ DataDbCfg = "data_db" // from JSON
+ StorDbCfg = "stor_db" // from JSON
+ TlsCfg = "tls" // from JSON
+ CacheCfg = "caches" // from JSON
+ HttpCfg = "http" // from JSON
+ FilterSCfg = "filters" // from JSON
+ RalsCfg = "rals" // from JSON
+ SchedulerCfg = "schedulers" // from JSON
+ CdrsCfg = "cdrs" // from JSON
+ SessionSCfg = "sessions" // from JSON
+ FsAgentCfg = "freeswitch_agent" // from JSON
+ KamAgentCfg = "kamailio_agent" // from JSON
+ AsteriskAgentCfg = "asterisk_agent" // from JSON
+ DiameterAgentCfg = "diameter_agent" // from JSON
+ RadiusAgentCfg = "radius_agent" // from JSON
+ DnsAgentCfg = "dns_agent" // from JSON
+ AttributeSCfg = "attributes" // from JSON
+ ChargerSCfg = "chargers" // from JSON
+ ResourceSCfg = "resources" // from JSON
+ StatsCfg = "stats" // from JSON
+ ThresholdSCfg = "thresholds" // from JSON
+ SupplierSCfg = "suppliers" // from JSON
+ SureTaxCfg = "suretax" // from JSON
+ DispatcherSCfg = "dispatchers" // from JSON
+ LoaderCgrCfg = "loader" // from JSON
+ MigratorCgrCfg = "migrator" // from JSON
+ MailerCfg = "mailer" // from JSON
+ AnalyzerSCfg = "analyzers" // from JSON
+ Apier = "apiers" // from JSON
+ ErsCfg = "ers" // from JSON
+
+)
+
+
// Strip/Padding strategy
var (
// common