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