diff --git a/config/apiercfg.go b/config/apiercfg.go
index 439929f04..1d36aee9e 100644
--- a/config/apiercfg.go
+++ b/config/apiercfg.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"
+)
// ApierCfg is the configuration of Apier service
type ApierCfg struct {
@@ -73,11 +77,39 @@ func (aCfg *ApierCfg) loadFromJsonCfg(jsnCfg *ApierJsonCfg) (err error) {
}
func (aCfg *ApierCfg) AsMapInterface() map[string]interface{} {
+ cachesConns := make([]string, len(aCfg.CachesConns))
+ for i, item := range aCfg.CachesConns {
+ buf := utils.ConcatenatedKey(utils.MetaInternal, utils.MetaCaches)
+ if item == buf {
+ cachesConns[i] = strings.ReplaceAll(item, utils.CONCATENATED_KEY_SEP+utils.MetaCaches, utils.EmptyString)
+ } else {
+ cachesConns[i] = item
+ }
+ }
+ schedulerConns := make([]string, len(aCfg.SchedulerConns))
+ for i, item := range aCfg.SchedulerConns {
+ buf := utils.ConcatenatedKey(utils.MetaInternal, utils.MetaScheduler)
+ if item == buf {
+ schedulerConns[i] = strings.ReplaceAll(item, utils.CONCATENATED_KEY_SEP+utils.MetaScheduler, utils.EmptyString)
+ } else {
+ schedulerConns[i] = item
+ }
+ }
+ attributeSConns := make([]string, len(aCfg.AttributeSConns))
+ for i, item := range aCfg.AttributeSConns {
+ buf := utils.ConcatenatedKey(utils.MetaInternal, utils.MetaAttributes)
+ if item == buf {
+ attributeSConns[i] = strings.ReplaceAll(item, utils.CONCATENATED_KEY_SEP+utils.MetaAttributes, utils.EmptyString)
+ } else {
+ attributeSConns[i] = item
+ }
+ }
+
return map[string]interface{}{
utils.EnabledCfg: aCfg.Enabled,
- utils.CachesConnsCfg: aCfg.CachesConns,
- utils.SchedulerConnsCfg: aCfg.SchedulerConns,
- utils.AttributeSConnsCfg: aCfg.AttributeSConns,
+ utils.CachesConnsCfg: cachesConns,
+ utils.SchedulerConnsCfg: schedulerConns,
+ utils.AttributeSConnsCfg: attributeSConns,
}
}
diff --git a/config/dispatchercfg.go b/config/dispatchercfg.go
index 797f328c9..30122123f 100755
--- a/config/dispatchercfg.go
+++ b/config/dispatchercfg.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"
+)
// DispatcherSCfg is the configuration of dispatcher service
type DispatcherSCfg struct {
@@ -72,12 +76,36 @@ func (dps *DispatcherSCfg) loadFromJsonCfg(jsnCfg *DispatcherSJsonCfg) (err erro
}
func (dps *DispatcherSCfg) AsMapInterface() map[string]interface{} {
+ stringIndexedFields := []string{}
+ if dps.StringIndexedFields != nil {
+ stringIndexedFields = make([]string, len(*dps.StringIndexedFields))
+ for i, item := range *dps.StringIndexedFields {
+ stringIndexedFields[i] = item
+ }
+ }
+ prefixIndexedFields := []string{}
+ if dps.PrefixIndexedFields != nil {
+ prefixIndexedFields = make([]string, len(*dps.PrefixIndexedFields))
+ for i, item := range *dps.PrefixIndexedFields {
+ prefixIndexedFields[i] = item
+ }
+ }
+ attributeSConns := make([]string, len(dps.AttributeSConns))
+ for i, item := range dps.AttributeSConns {
+ buf := utils.ConcatenatedKey(utils.MetaInternal, utils.MetaAttributes)
+ if item == buf {
+ attributeSConns[i] = strings.ReplaceAll(item, utils.CONCATENATED_KEY_SEP+utils.MetaAttributes, utils.EmptyString)
+ } else {
+ attributeSConns[i] = item
+ }
+ }
+
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.StringIndexedFieldsCfg: stringIndexedFields,
+ utils.PrefixIndexedFieldsCfg: prefixIndexedFields,
+ utils.AttributeSConnsCfg: attributeSConns,
utils.NestedFieldsCfg: dps.NestedFields,
}
diff --git a/config/erscfg_test.go b/config/erscfg_test.go
index 05b3592d8..056396b15 100644
--- a/config/erscfg_test.go
+++ b/config/erscfg_test.go
@@ -331,3 +331,97 @@ func TestEventReaderSameID(t *testing.T) {
}
}
+
+func testERsCfgAsMapInterface(t *testing.T) {
+ cfgJSONStr := `{
+ "ers": {
+ "enabled": true,
+ "sessions_conns":["conn1","conn3"],
+ "readers": [
+ {
+ "id": "file_reader1",
+ "run_delay": "-1",
+ "type": "*file_csv",
+ "source_path": "/tmp/ers/in",
+ "processed_path": "/tmp/ers/out",
+ "cache_dump_fields": [],
+ },
+ ],
+ }
+}`
+ eMap := map[string]interface{}{
+ "enabled": true,
+ "sessions_conns": []string{"conn1", "conn3"},
+ "readers": []map[string]interface{}{
+ {
+ "filters": []string{},
+ "flags": map[string]interface{}{},
+ "id": "*default",
+ "partial_record_cache": 0,
+ "processed_path": "/var/spool/cgrates/cdrc/out",
+ "row_length": 0,
+ "run_delay": 0,
+ "soome": "",
+ "source_path": "/var/spool/cgrates/cdrc/in",
+ "tenant": []string{},
+ "timezone": "",
+ "xml_root_path": []string{""},
+ "cache_dump_fields": []string{},
+ "concurrent_requests": 1024,
+ "db_type": "*none",
+ "failed_calls_prefix": "",
+ "field_separator": ",",
+ "fields": []map[string]interface{}{
+ {"mandatory": true, "path": "*cgreq.ToR", "tag": "ToR", "type": "*variable", "value": "~*req.2"},
+ {"mandatory": true, "path": "*cgreq.OriginID", "tag": "OriginID", "type": "*variable", "value": "~*req.3"},
+ {"mandatory": true, "path": "*cgreq.RequestType", "tag": "RequestType", "type": "*variable", "value": "~*req.4"},
+ {"mandatory": true, "path": "*cgreq.Tenant", "tag": "Tenant", "type": "*variable", "value": "~*req.6"},
+ {"mandatory": true, "path": "*cgreq.Category", "tag": "Category", "type": "*variable", "value": "~*req.7"},
+ {"mandatory": true, "path": "*cgreq.Account", "tag": "Account", "type": "*variable", "value": "~*req.8"},
+ {"mandatory": true, "path": "*cgreq.Subject", "tag": "Subject", "type": "*variable", "value": "~*req.9"},
+ {"mandatory": true, "path": "*cgreq.Destination", "tag": "Destination", "type": "*variable", "value": "~*req.10"},
+ {"mandatory": true, "path": "*cgreq.SetupTime", "tag": "SetupTime", "type": "*variable", "value": "~*req.11"},
+ {"mandatory": true, "path": "*cgreq.AnswerTime", "tag": "AnswerTime", "type": "*variable", "value": "~*req.12"},
+ {"mandatory": true, "path": "*cgreq.Usage", "tag": "Usage", "type": "*variable", "value": "~*req.13"},
+ },
+ },
+ {
+ "cache_dump_fields": []string{},
+ "concurrent_requests": 1024,
+ "db_type": "*file_csv",
+ "failed_calls_prefix": "",
+ "field_separator": ",",
+ "fields": []map[string]interface{}{
+ {"mandatory": true, "path": "*cgreq.ToR", "tag": "ToR", "type": "*variable", "value": "~*req.2"},
+ {"mandatory": true, "path": "*cgreq.OriginID", "tag": "OriginID", "type": "*variable", "value": "~*req.3"},
+ {"mandatory": true, "path": "*cgreq.RequestType", "tag": "RequestType", "type": "*variable", "value": "~*req.4"},
+ {"mandatory": true, "path": "*cgreq.Tenant", "tag": "Tenant", "type": "*variable", "value": "~*req.6"},
+ {"mandatory": true, "path": "*cgreq.Category", "tag": "Category", "type": "*variable", "value": "~*req.7"},
+ {"mandatory": true, "path": "*cgreq.Account", "tag": "Account", "type": "*variable", "value": "~*req.8"},
+ {"mandatory": true, "path": "*cgreq.Subject", "tag": "Subject", "type": "*variable", "value": "~*req.9"},
+ {"mandatory": true, "path": "*cgreq.Destination", "tag": "Destination", "type": "*variable", "value": "~*req.10"},
+ {"mandatory": true, "path": "*cgreq.SetupTime", "tag": "SetupTime", "type": "*variable", "value": "~*req.11"},
+ {"mandatory": true, "path": "*cgreq.AnswerTime", "tag": "AnswerTime", "type": "*variable", "value": "~*req.12"},
+ {"mandatory": true, "path": "*cgreq.Usage", "tag": "Usage", "type": "*variable", "value": "~*req.13"},
+ },
+ "filters": nil,
+ "flags": map[string]interface{}{},
+ "id": "file_reader1",
+ "partial_record_cache": 0,
+ "processed_path": "/tmp/ers/out",
+ "row_length": 0,
+ "run_delay": -1,
+ "soome": "",
+ "source_path": "/tmp/ers/in",
+ "tenant": []string{},
+ "timezone": "",
+ "xml_root_path": []string{""},
+ },
+ },
+ }
+ if cfg, err := NewCGRConfigFromJsonStringWithDefaults(cfgJSONStr); err != nil {
+ t.Error(err)
+ } else if rcv := cfg.ersCfg.AsMapInterface(utils.EmptyString); !reflect.DeepEqual(eMap, rcv) {
+ t.Errorf("\nExpected: %+v\nRecived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv))
+ }
+}
diff --git a/config/loadercgrcfg.go b/config/loadercgrcfg.go
index 929e98bec..9b1eaadab 100644
--- a/config/loadercgrcfg.go
+++ b/config/loadercgrcfg.go
@@ -98,7 +98,7 @@ func (ld *LoaderCgrCfg) AsMapInterface() map[string]interface{} {
utils.TpIDCfg: ld.TpID,
utils.DataPathCfg: ld.DataPath,
utils.DisableReverseCfg: ld.DisableReverse,
- utils.FieldSeparatorCfg: ld.FieldSeparator,
+ utils.FieldSeparatorCfg: string(ld.FieldSeparator),
utils.CachesConnsCfg: ld.CachesConns,
utils.SchedulerConnsCfg: ld.SchedulerConns,
utils.GapiCredentialsCfg: gapiCredentials,
diff --git a/config/loadercgrcfg_test.go b/config/loadercgrcfg_test.go
index 2254aca45..baeac970e 100644
--- a/config/loadercgrcfg_test.go
+++ b/config/loadercgrcfg_test.go
@@ -61,3 +61,48 @@ func TestLoaderCgrCfgloadFromJsonCfg(t *testing.T) {
t.Errorf("Expected: %+v , recived: %+v", utils.ToJSON(expected), utils.ToJSON(loadscfg))
}
}
+
+func TestLoaderCgrCfgAsMapInterface(t *testing.T) {
+ var loadscfg LoaderCgrCfg
+ cfgJSONStr := `{
+ "loader": {
+ "tpid": "",
+ "data_path": "./",
+ "disable_reverse": false,
+ "field_separator": ",",
+ "caches_conns":["*localhost"],
+ "scheduler_conns": ["*localhost"],
+ "gapi_credentials": ".gapi/credentials.json",
+ "gapi_token": ".gapi/token.json"
+ },
+}`
+ eMap := map[string]interface{}{
+ "tpid": "",
+ "data_path": "./",
+ "disable_reverse": false,
+ "field_separator": ",",
+ "caches_conns": []string{"*localhost"},
+ "scheduler_conns": []string{"*localhost"},
+ "gapi_credentials": ".gapi/credentials.json",
+ "gapi_token": ".gapi/token.json",
+ }
+ if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil {
+ t.Error(err)
+ } else if jsnLoadersCfg, err := jsnCfg.LoaderCfgJson(); err != nil {
+ t.Error(err)
+ } else if err = loadscfg.loadFromJsonCfg(jsnLoadersCfg); err != nil {
+ t.Error(err)
+ } else if rcv := loadscfg.AsMapInterface(); !reflect.DeepEqual(eMap["tpid"], rcv["tpid"]) {
+ t.Errorf("Expected: %+v, Recived: %+v, at field: '%s'", utils.ToJSON(eMap["tpid"]), utils.ToJSON(rcv["tpid"]), "tpid")
+ } else if !reflect.DeepEqual(eMap["data_path"], rcv["data_path"]) {
+ t.Errorf("Expected: %+v, Recived: %+v, at field: %s", utils.ToJSON(eMap["data_path"]), utils.ToJSON(rcv["data_path"]), "data_path")
+ } else if !reflect.DeepEqual(eMap["disable_reverse"], rcv["disable_reverse"]) {
+ t.Errorf("Expected: %+v, Recived: %+v, at field: %s", utils.ToJSON(eMap["disable_reverse"]), utils.ToJSON(rcv["disable_reverse"]), "disable_reverse")
+ } else if !reflect.DeepEqual(eMap["field_separator"], rcv["field_separator"]) {
+ t.Errorf("Expected: %+v, Recived: %+v, at field: %s", utils.ToJSON(eMap["field_separator"]), utils.ToJSON(rcv["field_separator"]), "field_separator")
+ } else if !reflect.DeepEqual(eMap["caches_conns"], rcv["caches_conns"]) {
+ t.Errorf("Expected: %+v, Recived: %+v, at field: %s", utils.ToJSON(eMap["caches_conns"]), utils.ToJSON(rcv["caches_conns"]), "caches_conns")
+ } else if !reflect.DeepEqual(eMap["scheduler_conns"], rcv["scheduler_conns"]) {
+ t.Errorf("Expected: %+v, Recived: %+v, at field: %s", utils.ToJSON(eMap["scheduler_conns"]), utils.ToJSON(rcv["scheduler_conns"]), "scheduler_conns")
+ }
+}
diff --git a/config/mailercfg_test.go b/config/mailercfg_test.go
index 5682457f2..bfeab40d9 100644
--- a/config/mailercfg_test.go
+++ b/config/mailercfg_test.go
@@ -20,6 +20,8 @@ package config
import (
"reflect"
"testing"
+
+ "github.com/cgrates/cgrates/utils"
)
func TestMailerCfgloadFromJsonCfg(t *testing.T) {
@@ -58,3 +60,54 @@ func TestMailerCfgloadFromJsonCfg(t *testing.T) {
t.Errorf("Expected: %+v , recived: %+v", expected, mailcfg)
}
}
+
+func TestMailerCfgAsMapInterface(t *testing.T) {
+ var mailcfg MailerCfg
+ cfgJSONStr := `{
+ "mailer": {
+ "server": "",
+ "auth_user": "",
+ "auth_password": "",
+ "from_address": "",
+ },
+}`
+ eMap := map[string]interface{}{
+ "server": "",
+ "auth_user": "",
+ "auth_password": "",
+ "from_address": "",
+ }
+ if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil {
+ t.Error(err)
+ } else if jsnMailCfg, err := jsnCfg.MailerJsonCfg(); err != nil {
+ t.Error(err)
+ } else if err = mailcfg.loadFromJsonCfg(jsnMailCfg); err != nil {
+ t.Error(err)
+ } else if rcv := mailcfg.AsMapInterface(); !reflect.DeepEqual(eMap, rcv) {
+ t.Errorf("\nExpected: %+v\nRecived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv))
+ }
+
+ cfgJSONStr = `{
+ "mailer": {
+ "server": "localhost",
+ "auth_user": "cgrates",
+ "auth_password": "CGRateS.org",
+ "from_address": "cgr-mailer@localhost.localdomain",
+ },
+ }`
+ eMap = map[string]interface{}{
+ "server": "localhost",
+ "auth_user": "cgrates",
+ "auth_password": "CGRateS.org",
+ "from_address": "cgr-mailer@localhost.localdomain",
+ }
+ if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil {
+ t.Error(err)
+ } else if jsnMailCfg, err := jsnCfg.MailerJsonCfg(); err != nil {
+ t.Error(err)
+ } else if err = mailcfg.loadFromJsonCfg(jsnMailCfg); err != nil {
+ t.Error(err)
+ } else if rcv := mailcfg.AsMapInterface(); !reflect.DeepEqual(eMap, rcv) {
+ t.Errorf("\nExpected: %+v\nRecived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv))
+ }
+}
diff --git a/config/migratorcfg_test.go b/config/migratorcfg_test.go
index 97436a1bf..c464518ff 100644
--- a/config/migratorcfg_test.go
+++ b/config/migratorcfg_test.go
@@ -20,6 +20,8 @@ package config
import (
"reflect"
"testing"
+
+ "github.com/cgrates/cgrates/utils"
)
func TestMigratorCgrCfgloadFromJsonCfg(t *testing.T) {
@@ -76,3 +78,99 @@ func TestMigratorCgrCfgloadFromJsonCfg(t *testing.T) {
t.Errorf("Expected: %+v , recived: %+v", expected, migcfg)
}
}
+
+func TestMigratorCgrCfgAsMapInterface(t *testing.T) {
+ var migcfg MigratorCgrCfg
+ cfgJSONStr := `{
+ "migrator": {
+ "out_datadb_type": "redis",
+ "out_datadb_host": "127.0.0.1",
+ "out_datadb_port": "6379",
+ "out_datadb_name": "10",
+ "out_datadb_user": "cgrates",
+ "out_datadb_password": "",
+ "out_datadb_encoding" : "msgpack",
+ "out_stordb_type": "mysql",
+ "out_stordb_host": "127.0.0.1",
+ "out_stordb_port": "3306",
+ "out_stordb_name": "cgrates",
+ "out_stordb_user": "cgrates",
+ "out_stordb_password": "",
+ "users_filters":[],
+ },
+}`
+ var users_filters []string
+ eMap := map[string]interface{}{
+ "out_datadb_type": "redis",
+ "out_datadb_host": "127.0.0.1",
+ "out_datadb_port": "6379",
+ "out_datadb_name": "10",
+ "out_datadb_user": "cgrates",
+ "out_datadb_password": "",
+ "out_datadb_encoding": "msgpack",
+ "out_stordb_type": "mysql",
+ "out_stordb_host": "127.0.0.1",
+ "out_stordb_port": "3306",
+ "out_stordb_name": "cgrates",
+ "out_stordb_user": "cgrates",
+ "out_stordb_password": "",
+ "users_filters": users_filters,
+ "out_datadb_redis_sentinel": "",
+ }
+ if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil {
+ t.Error(err)
+ } else if jsnThSCfg, err := jsnCfg.MigratorCfgJson(); err != nil {
+ t.Error(err)
+ } else if err = migcfg.loadFromJsonCfg(jsnThSCfg); err != nil {
+ t.Error(err)
+ } else if rcv := migcfg.AsMapInterface(); !reflect.DeepEqual(eMap, rcv) {
+ t.Errorf("\nExpected: %+v\nRecived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv))
+ }
+ cfgJSONStr = `{
+ "migrator": {
+ "out_datadb_type": "redis",
+ "out_datadb_host": "127.0.0.1",
+ "out_datadb_port": "6379",
+ "out_datadb_name": "10",
+ "out_datadb_user": "cgrates",
+ "out_datadb_password": "out_datadb_password",
+ "out_datadb_encoding" : "msgpack",
+ "out_stordb_type": "mysql",
+ "out_stordb_host": "127.0.0.1",
+ "out_stordb_port": "3306",
+ "out_stordb_name": "cgrates",
+ "out_stordb_user": "cgrates",
+ "out_stordb_password": "out_stordb_password",
+ "users_filters":["users","filters","Account"],
+ "out_datadb_redis_sentinel": "out_datadb_redis_sentinel",
+ },
+ }`
+
+ eMap = map[string]interface{}{
+ "out_datadb_type": "redis",
+ "out_datadb_host": "127.0.0.1",
+ "out_datadb_port": "6379",
+ "out_datadb_name": "10",
+ "out_datadb_user": "cgrates",
+ "out_datadb_password": "out_datadb_password",
+ "out_datadb_encoding": "msgpack",
+ "out_stordb_type": "mysql",
+ "out_stordb_host": "127.0.0.1",
+ "out_stordb_port": "3306",
+ "out_stordb_name": "cgrates",
+ "out_stordb_user": "cgrates",
+ "out_stordb_password": "out_stordb_password",
+ "users_filters": []string{"users", "filters", "Account"},
+ "out_datadb_redis_sentinel": "out_datadb_redis_sentinel",
+ }
+ if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil {
+ t.Error(err)
+ } else if jsnThSCfg, err := jsnCfg.MigratorCfgJson(); err != nil {
+ t.Error(err)
+ } else if err = migcfg.loadFromJsonCfg(jsnThSCfg); err != nil {
+ t.Error(err)
+ } else if rcv := migcfg.AsMapInterface(); !reflect.DeepEqual(eMap, rcv) {
+ t.Errorf("\nExpected: %+v\nRecived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv))
+ }
+
+}
diff --git a/utils/consts.go b/utils/consts.go
index b57478706..015d107ce 100755
--- a/utils/consts.go
+++ b/utils/consts.go
@@ -1956,29 +1956,29 @@ const (
// 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"
+ 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"
+ MailerServerCfg = "server"
+ MailerAuthUserCfg = "auth_user"
+ MailerAuthPassCfg = "auth_password"
+ MailerFromAddrCfg = "from_address"
)
// EventReaderCfg