Added AsMapInterface method for some config fields

This commit is contained in:
adragusin
2020-04-30 10:35:14 +03:00
committed by Dan Christian Bogos
parent 1cbe443ab5
commit a12dd79b9b
38 changed files with 1360 additions and 2 deletions

View File

@@ -18,6 +18,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
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,
}
}

View File

@@ -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,
}
}

View File

@@ -18,6 +18,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
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,
}
}

View File

@@ -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,
}
}

View File

@@ -18,6 +18,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
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,
}
}

View File

@@ -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,
}
}

View File

@@ -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,
}
}

View File

@@ -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(),
}
}

View File

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

View File

@@ -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,
}
}

View File

@@ -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,
}
}

View File

@@ -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,
}
}

View File

@@ -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,
}
}

View File

@@ -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,
}
}

View File

@@ -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,
}
}

View File

@@ -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,
}
}

View File

@@ -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,
}
}

View File

@@ -18,6 +18,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
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,
}
}

View File

@@ -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,
}
}

View File

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

View File

@@ -18,6 +18,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
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,
}
}

View File

@@ -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,
}
}

View File

@@ -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,
}
}

View File

@@ -18,6 +18,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
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,
}
}

View File

@@ -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,
}
}

View File

@@ -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,
}
}

View File

@@ -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,
}
}

View File

@@ -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,
}
}

View File

@@ -18,7 +18,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
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,
}
}

View File

@@ -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,
}
}

View File

@@ -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,
}
}

View File

@@ -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,
}
}

View File

@@ -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,
}
}

View File

@@ -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,
}
}

View File

@@ -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,
}
}

View File

@@ -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,
}
}

View File

@@ -18,6 +18,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
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,
}
}

View File

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