diff --git a/config/diametercfg.go b/config/diametercfg.go
index d58725047..82117ffcb 100644
--- a/config/diametercfg.go
+++ b/config/diametercfg.go
@@ -18,7 +18,11 @@ along with this program. If not, see
package config
-import "github.com/cgrates/cgrates/utils"
+import (
+ "strings"
+
+ "github.com/cgrates/cgrates/utils"
+)
type DiameterAgentCfg struct {
Enabled bool // enables the diameter agent:
@@ -141,12 +145,22 @@ func (ds *DiameterAgentCfg) AsMapInterface(separator string) map[string]interfac
requestProcessors[i] = item.AsMapInterface(separator)
}
+ sessionSConns := make([]string, len(ds.SessionSConns))
+ for i, item := range ds.SessionSConns {
+ buf := utils.ConcatenatedKey(utils.MetaInternal, utils.MetaSessionS)
+ if item == buf {
+ sessionSConns[i] = strings.ReplaceAll(item, utils.CONCATENATED_KEY_SEP+utils.MetaSessionS, utils.EmptyString)
+ } else {
+ sessionSConns[i] = item
+ }
+ }
+
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.SessionSConnsCfg: sessionSConns,
utils.OriginHostCfg: ds.OriginHost,
utils.OriginRealmCfg: ds.OriginRealm,
utils.VendorIdCfg: ds.VendorId,
diff --git a/config/diametercfg_test.go b/config/diametercfg_test.go
index 3c99009fa..90f23dd4a 100644
--- a/config/diametercfg_test.go
+++ b/config/diametercfg_test.go
@@ -72,3 +72,49 @@ func TestDiameterAgentCfgloadFromJsonCfg(t *testing.T) {
t.Errorf("Expected: %+v , recived: %+v", utils.ToJSON(expected), utils.ToJSON(dacfg))
}
}
+
+func TestDiameterAgentCfgAsMapInterface(t *testing.T) {
+ var dacfg DiameterAgentCfg
+ cfgJSONStr := `{
+ "diameter_agent": {
+ "enabled": false,
+ "listen": "127.0.0.1:3868",
+ "dictionaries_path": "/usr/share/cgrates/diameter/dict/",
+ "sessions_conns": ["*internal"],
+ "origin_host": "CGR-DA",
+ "origin_realm": "cgrates.org",
+ "vendor_id": 0,
+ "product_name": "CGRateS",
+ "synced_conn_requests": true,
+ "templates":{},
+ "request_processors": [],
+ },
+}`
+ eMap := map[string]interface{}{
+ "asr_template": "",
+ "concurrent_requests": 0,
+ "dictionaries_path": "/usr/share/cgrates/diameter/dict/",
+ "enabled": false,
+ "forced_disconnect": "",
+ "listen": "127.0.0.1:3868",
+ "listen_net": "",
+ "origin_host": "CGR-DA",
+ "origin_realm": "cgrates.org",
+ "product_name": "CGRateS",
+ "rar_template": "",
+ "sessions_conns": []string{"*internal"},
+ "synced_conn_requests": true,
+ "vendor_id": 0,
+ "templates": map[string][]map[string]interface{}{},
+ "request_processors": []map[string]interface{}{},
+ }
+ if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil {
+ t.Error(err)
+ } else if jsnDaCfg, err := jsnCfg.DiameterAgentJsonCfg(); err != nil {
+ t.Error(err)
+ } else if err = dacfg.loadFromJsonCfg(jsnDaCfg, utils.INFIELD_SEP); err != nil {
+ t.Error(err)
+ } else if rcv := dacfg.AsMapInterface(utils.EmptyString); !reflect.DeepEqual(eMap, rcv) {
+ t.Errorf("Expected: %+v,\nRecived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv))
+ }
+}