mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
Config sanity checks added
This commit is contained in:
@@ -19,7 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
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
|
||||
|
||||
@@ -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: <true|false>.
|
||||
"reconnects": 5, // number of reconnects to rater/cdrs before giving up.
|
||||
"rater": "internal", // address where to reach the Rater: <internal|x.y.z.y:1234>
|
||||
"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: <true|false>
|
||||
},
|
||||
|
||||
"rater": {
|
||||
"enabled": true, // enable Rater service: <true|false>
|
||||
},
|
||||
|
||||
"cdrc": {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user