diff --git a/config/cdrscfg.go b/config/cdrscfg.go index 280d635d6..4bc13f50c 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.RaterConnsCfg: cdrscfg.RaterConns, + utils.AttributeSConnsCfg: cdrscfg.AttributeSConns, + utils.ThresholdSConnsCfg: cdrscfg.ThresholdSConns, + utils.StatSConnsCfg: cdrscfg.StatSConns, + utils.OnlineCDRExportsCfg: cdrscfg.OnlineCDRExports, + } +} diff --git a/config/filterscfg.go b/config/filterscfg.go index 29e5d2cce..2388ce994 100644 --- a/config/filterscfg.go +++ b/config/filterscfg.go @@ -65,3 +65,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/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/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/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/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/sessionscfg.go b/config/sessionscfg.go index 7e6cb7075..84bd6397b 100644 --- a/config/sessionscfg.go +++ b/config/sessionscfg.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 @@ -268,6 +277,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 @@ -336,6 +376,27 @@ func (fscfg *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 { 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 8692757fe..2ac05fcf3 100755 --- a/utils/consts.go +++ b/utils/consts.go @@ -1691,6 +1691,117 @@ const ( 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" + RaterConnsCfg = "rals_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" +) + // Strip/Padding strategy var ( // common