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