diff --git a/cmd/cgr-engine/cgr-engine.go b/cmd/cgr-engine/cgr-engine.go
index dc693b73c..bf355f8f3 100644
--- a/cmd/cgr-engine/cgr-engine.go
+++ b/cmd/cgr-engine/cgr-engine.go
@@ -19,7 +19,6 @@ along with this program. If not, see
package main
import (
- "errors"
"flag"
"fmt"
"log"
@@ -380,25 +379,6 @@ func serveHttp(httpWaitChans []chan struct{}) {
server.ServeHTTP(cfg.HTTPListen)
}
-func checkConfigSanity() error {
- /*
- Add here checks on session manager
- if cfg.SMEnabled && cfg.RaterEnabled && cfg.RaterBalancer != "" {
- engine.Logger.Crit("The session manager must not be enabled on a worker engine (change [engine]/balancer to disabled)!")
- return errors.New("SessionManager on Worker")
- }
- */
- if cfg.BalancerEnabled && cfg.RaterEnabled && cfg.RaterBalancer != "" {
- engine.Logger.Crit("The balancer is enabled so it cannot connect to another balancer (change rater/balancer to disabled)!")
- return errors.New("Improperly configured balancer")
- }
- if cfg.HistoryServerEnabled && cfg.HistoryServer == utils.INTERNAL && !cfg.HistoryServerEnabled {
- engine.Logger.Crit("The history agent is enabled and internal and history server is disabled!")
- return errors.New("Improperly configured history service")
- }
- return nil
-}
-
func writePid() {
engine.Logger.Info(*pidFile)
f, err := os.Create(*pidFile)
@@ -446,13 +426,6 @@ func main() {
if *cdrsEnabled {
cfg.CDRSEnabled = *cdrsEnabled
}
-
- // some consitency checks
- errCfg := checkConfigSanity()
- if errCfg != nil {
- engine.Logger.Crit(errCfg.Error())
- return
- }
var ratingDb engine.RatingStorage
var accountDb engine.AccountingStorage
var logDb engine.LogStorage
diff --git a/config/cfg_data.json b/config/cfg_data.json
index 96a18a79d..e6b6f1f96 100644
--- a/config/cfg_data.json
+++ b/config/cfg_data.json
@@ -10,16 +10,12 @@
"default_reqtype": "*pseudoprepaid", // default request type to consider when missing from requests: <""|*prepaid|*postpaid|*pseudoprepaid|*rated>
},
-"mediator": {
- "enabled": true, // starts Mediator service: .
- "reconnects": 5, // number of reconnects to rater/cdrs before giving up.
- "rater": "internal", // address where to reach the Rater:
- "cdrstats": "", // address where to reach the cdrstats service. Empty to disable stats gathering out of mediated CDRs <""|internal|x.y.z.y:1234>
- "store_disable": false, // when true, CDRs will not longer be saved in stordb, useful for cdrstats only scenario
- "cdr_replication":[ // replicate the rated CDR to a number of servers
- {"transport": "*http_post", "server": "1.2.3.4:2080/cdr_post"},
- {"transport": "*http_jsonrpc", "server": "2.3.4.5:2080/jsonrpc", "synchronous": true, "cdr_filter": "~account:s/(.+)/1001/"},
- ],
+"cdrs": {
+ "enabled": true, // start the CDR Server service:
+},
+
+"rater": {
+ "enabled": true, // enable Rater service:
},
"cdrc": {
diff --git a/config/config.go b/config/config.go
index ebc2eefd5..e8f0fc93c 100644
--- a/config/config.go
+++ b/config/config.go
@@ -226,9 +226,35 @@ type CGRConfig struct {
}
func (self *CGRConfig) checkConfigSanity() error {
+ // Rater checks
+ if self.RaterEnabled {
+ if self.RaterBalancer == utils.INTERNAL && !self.BalancerEnabled {
+ return errors.New("Balancer not enabled but requested by Rater component.")
+ }
+ if self.RaterCdrStats == utils.INTERNAL && !self.CDRStatsEnabled {
+ return errors.New("CDRStats not enabled but requested by Rater component.")
+ }
+ }
+ // CDRServer checks
+ if self.CDRSEnabled {
+ if self.CDRSRater == utils.INTERNAL && !self.RaterEnabled {
+ return errors.New("Rater not enabled but requested by CDRS component.")
+ }
+ if self.CDRSStats == utils.INTERNAL && !self.CDRStatsEnabled {
+ return errors.New("CDRStats not enabled but requested by CDRS component.")
+ }
+ }
// CDRC sanity checks
- for _, cdrcInst := range self.CdrcProfiles["/var/log/cgrates/cdrc/in"] {
- if cdrcInst.Enabled == true {
+ for _, cdrcCfgs := range self.CdrcProfiles {
+ for _, cdrcInst := range cdrcCfgs {
+ if !cdrcInst.Enabled {
+ continue
+ }
+ if len(cdrcInst.Cdrs) == 0 {
+ return errors.New("CdrC enabled but no CDRS defined!")
+ } else if cdrcInst.Cdrs == utils.INTERNAL && !self.CDRSEnabled {
+ return errors.New("CDRS not enabled but referenced from CDRC")
+ }
if len(cdrcInst.CdrFields) == 0 {
return errors.New("CdrC enabled but no fields to be processed defined!")
}
@@ -243,14 +269,37 @@ func (self *CGRConfig) checkConfigSanity() error {
}
}
}
- if self.CDRSStats == utils.INTERNAL && !self.CDRStatsEnabled {
- return errors.New("CDRStats not enabled but requested by CDRS component.")
- }
- /*
- if self.SMCdrS == utils.INTERNAL && !self.CDRSEnabled {
- return errors.New("CDRS not enabled but requested by SessionManager")
+ // SM-FreeSWITCH checks
+ if self.SmFsConfig.Enabled {
+ if self.SmFsConfig.Rater == utils.INTERNAL && !self.RaterEnabled {
+ return errors.New("Rater not enabled but requested by SM-FreeSWITCH component.")
}
- */
+ if self.SmFsConfig.Cdrs == utils.INTERNAL && !self.CDRSEnabled {
+ return errors.New("CDRS not enabled but referenced by SM-FreeSWITCH component")
+ }
+ }
+ // SM-Kamailio checks
+ if self.SmKamConfig.Enabled {
+ if self.SmKamConfig.Rater == utils.INTERNAL && !self.RaterEnabled {
+ return errors.New("Rater not enabled but requested by SM-Kamailio component.")
+ }
+ if self.SmKamConfig.Cdrs == utils.INTERNAL && !self.CDRSEnabled {
+ return errors.New("CDRS not enabled but referenced by SM-Kamailio component")
+ }
+ }
+ // SM-OpenSIPS checks
+ if self.SmOsipsConfig.Enabled {
+ if self.SmOsipsConfig.Rater == utils.INTERNAL && !self.RaterEnabled {
+ return errors.New("Rater not enabled but requested by SM-OpenSIPS component.")
+ }
+ if self.SmOsipsConfig.Cdrs == utils.INTERNAL && !self.CDRSEnabled {
+ return errors.New("CDRS not enabled but referenced by SM-OpenSIPS component")
+ }
+ }
+ // HistoryAgent
+ if self.HistoryAgentEnabled && !self.HistoryServerEnabled {
+ return errors.New("HistoryServer not enabled but referenced by HistoryAgent component")
+ }
return nil
}
diff --git a/utils/consts.go b/utils/consts.go
index 11634978c..b2d44175e 100644
--- a/utils/consts.go
+++ b/utils/consts.go
@@ -182,7 +182,7 @@ const (
META_HTTP_JSONRPC = "*http_jsonrpc"
NANO_MULTIPLIER = 1000000000
CGR_AUTHORIZE = "CGR_AUTHORIZE"
- CONFIG_DIR = "/etc/cgrates"
+ CONFIG_DIR = "/etc/cgrates/"
CGR_SUPPLIER = "cgr_supplier"
DISCONNECT_CAUSE = "disconnect_cause"
CGR_DISCONNECT_CAUSE = "cgr_disconnect_cause"