mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 10:06:24 +05:00
added methods for janusagent configuration
This commit is contained in:
committed by
Dan Christian Bogos
parent
883633732b
commit
c5c8ca5991
@@ -368,7 +368,7 @@ func (cfg *CGRConfig) loadFromJSONCfg(jsnCfg *CgrJsonCfg) (err error) {
|
||||
cfg.loadMailerCfg, cfg.loadSureTaxCfg, cfg.loadDispatcherSCfg,
|
||||
cfg.loadLoaderCgrCfg, cfg.loadMigratorCgrCfg, cfg.loadTLSCgrCfg,
|
||||
cfg.loadAnalyzerCgrCfg, cfg.loadApierCfg, cfg.loadErsCfg, cfg.loadEesCfg,
|
||||
cfg.loadSIPAgentCfg, cfg.loadRegistrarCCfg,
|
||||
cfg.loadSIPAgentCfg, cfg.loadRegistrarCCfg, cfg.loadJanusAgentCfg,
|
||||
cfg.loadConfigSCfg, cfg.loadAPIBanCgrCfg, cfg.loadSentryPeerCgrCfg, cfg.loadCoreSCfg} {
|
||||
if err = loadFunc(jsnCfg); err != nil {
|
||||
return
|
||||
@@ -801,6 +801,14 @@ func (cfg *CGRConfig) loadSIPAgentCfg(jsnCfg *CgrJsonCfg) (err error) {
|
||||
return cfg.sipAgentCfg.loadFromJSONCfg(jsnSIPAgentCfg, cfg.generalCfg.RSRSep)
|
||||
}
|
||||
|
||||
func (cfg *CGRConfig) loadJanusAgentCfg(jsnCfg *CgrJsonCfg) (err error) {
|
||||
var jsnJanusAgentCfg *JanusAgentJsonCfg
|
||||
if jsnJanusAgentCfg, err = jsnCfg.JanusAgentCfgJson(); err != nil {
|
||||
return
|
||||
}
|
||||
return cfg.janusAgentCfg.loadFromJSONCfg(jsnJanusAgentCfg, cfg.generalCfg.RSRSep)
|
||||
}
|
||||
|
||||
// loadTemplateSCfg loads the Template section of the configuration
|
||||
func (cfg *CGRConfig) loadTemplateSCfg(jsnCfg *CgrJsonCfg) (err error) {
|
||||
var jsnTemplateCfg map[string][]*FcTemplateJsonCfg
|
||||
@@ -1241,6 +1249,7 @@ func (cfg *CGRConfig) getLoadFunctions() map[string]func(*CgrJsonCfg) error {
|
||||
ApierS: cfg.loadApierCfg,
|
||||
RPCConnsJsonName: cfg.loadRPCConns,
|
||||
SIPAgentJson: cfg.loadSIPAgentCfg,
|
||||
JanusAgentJson: cfg.loadJanusAgentCfg,
|
||||
TemplatesJson: cfg.loadTemplateSCfg,
|
||||
ConfigSJson: cfg.loadConfigSCfg,
|
||||
APIBanCfgJson: cfg.loadAPIBanCgrCfg,
|
||||
@@ -1481,6 +1490,8 @@ func (cfg *CGRConfig) reloadSections(sections ...string) {
|
||||
cfg.rldChans[THRESHOLDS_JSON] <- struct{}{}
|
||||
case RouteSJson:
|
||||
cfg.rldChans[RouteSJson] <- struct{}{}
|
||||
case JanusAgentJson:
|
||||
cfg.rldChans[JanusAgentJson] <- struct{}{}
|
||||
case LoaderJson:
|
||||
cfg.rldChans[LoaderJson] <- struct{}{}
|
||||
case DispatcherSJson:
|
||||
@@ -1823,6 +1834,8 @@ func (cfg *CGRConfig) V1GetConfigAsJSON(ctx *context.Context, args *SectionWithA
|
||||
mp = cfg.RadiusAgentCfg().AsMapInterface(cfg.GeneralCfg().RSRSep)
|
||||
case DNSAgentJson:
|
||||
mp = cfg.DNSAgentCfg().AsMapInterface(cfg.GeneralCfg().RSRSep)
|
||||
case JanusAgentJson:
|
||||
mp = cfg.JanusAgentCfg().AsMapInterface(cfg.GeneralCfg().RSRSep)
|
||||
case ATTRIBUTE_JSN:
|
||||
mp = cfg.AttributeSCfg().AsMapInterface()
|
||||
case ChargerSCfgJson:
|
||||
@@ -1944,6 +1957,7 @@ func (cfg *CGRConfig) Clone() (cln *CGRConfig) {
|
||||
cdrsCfg: cfg.cdrsCfg.Clone(),
|
||||
sessionSCfg: cfg.sessionSCfg.Clone(),
|
||||
fsAgentCfg: cfg.fsAgentCfg.Clone(),
|
||||
janusAgentCfg: cfg.janusAgentCfg.Clone(),
|
||||
kamAgentCfg: cfg.kamAgentCfg.Clone(),
|
||||
asteriskAgentCfg: cfg.asteriskAgentCfg.Clone(),
|
||||
diameterAgentCfg: cfg.diameterAgentCfg.Clone(),
|
||||
|
||||
@@ -73,7 +73,7 @@ var (
|
||||
sortedCfgSections = []string{GENERAL_JSN, RPCConnsJsonName, DATADB_JSN, STORDB_JSN, LISTEN_JSN, TlsCfgJson, HTTP_JSN, SCHEDULER_JSN,
|
||||
CACHE_JSN, FilterSjsn, RALS_JSN, CDRS_JSN, ERsJson, SessionSJson, AsteriskAgentJSN, FreeSWITCHAgentJSN,
|
||||
KamailioAgentJSN, DA_JSN, RA_JSN, HttpAgentJson, DNSAgentJson, ATTRIBUTE_JSN, ChargerSCfgJson, RESOURCES_JSON, STATS_JSON,
|
||||
THRESHOLDS_JSON, RouteSJson, LoaderJson, MAILER_JSN, SURETAX_JSON, CgrLoaderCfgJson, CgrMigratorCfgJson, DispatcherSJson,
|
||||
THRESHOLDS_JSON, RouteSJson, LoaderJson, MAILER_JSN, SURETAX_JSON, CgrLoaderCfgJson, CgrMigratorCfgJson, DispatcherSJson, JanusAgentJson,
|
||||
AnalyzerCfgJson, ApierS, EEsJson, SIPAgentJson, RegistrarCJson, TemplatesJson, ConfigSJson, APIBanCfgJson, SentryPeerCfgJson, CoreSCfgJson}
|
||||
)
|
||||
|
||||
@@ -525,6 +525,18 @@ func (jsnCfg CgrJsonCfg) SIPAgentJsonCfg() (*SIPAgentJsonCfg, error) {
|
||||
return sipAgnt, nil
|
||||
}
|
||||
|
||||
func (jsnCfg CgrJsonCfg) JanusAgentCfgJson() (*JanusAgentJsonCfg, error) {
|
||||
raw, haskey := jsnCfg[JanusAgentJson]
|
||||
if !haskey {
|
||||
return nil, nil
|
||||
}
|
||||
cfg := new(JanusAgentJsonCfg)
|
||||
if err := json.Unmarshal(*raw, cfg); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return cfg, nil
|
||||
}
|
||||
|
||||
func (jsnCfg CgrJsonCfg) TemplateSJsonCfg() (map[string][]*FcTemplateJsonCfg, error) {
|
||||
rawCfg, hasKey := jsnCfg[TemplatesJson]
|
||||
if !hasKey {
|
||||
|
||||
@@ -18,6 +18,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
|
||||
package config
|
||||
|
||||
import (
|
||||
"github.com/cgrates/cgrates/utils"
|
||||
"github.com/cgrates/rpcclient"
|
||||
)
|
||||
|
||||
// JanusAgentCfg the config for an Janus Agent
|
||||
type JanusAgentCfg struct {
|
||||
Enabled bool
|
||||
@@ -25,3 +30,101 @@ type JanusAgentCfg struct {
|
||||
SessionSConns []string
|
||||
RequestProcessors []*RequestProcessor
|
||||
}
|
||||
|
||||
func (jaCfg *JanusAgentCfg) loadFromJSONCfg(jsnCfg *JanusAgentJsonCfg, separator string) (err error) {
|
||||
if jsnCfg == nil {
|
||||
return
|
||||
}
|
||||
|
||||
if jsnCfg.Enabled != nil {
|
||||
jaCfg.Enabled = *jsnCfg.Enabled
|
||||
}
|
||||
|
||||
if jsnCfg.Url != nil {
|
||||
jaCfg.URL = *jsnCfg.Url
|
||||
}
|
||||
|
||||
if jsnCfg.Sessions_conns != nil {
|
||||
jaCfg.SessionSConns = make([]string, len(*jsnCfg.Sessions_conns))
|
||||
for idx, connID := range *jsnCfg.Sessions_conns {
|
||||
jaCfg.SessionSConns[idx] = connID
|
||||
|
||||
if connID == utils.MetaInternal || connID == rpcclient.BiRPCInternal {
|
||||
jaCfg.SessionSConns[idx] = utils.ConcatenatedKey(connID, utils.MetaSessionS)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if jsnCfg.RequestProcessors != nil {
|
||||
for _, reqProcJsn := range *jsnCfg.RequestProcessors {
|
||||
rp := new(RequestProcessor)
|
||||
var haveID bool
|
||||
for _, rpSet := range jaCfg.RequestProcessors {
|
||||
if reqProcJsn.ID != nil && rpSet.ID == *reqProcJsn.ID {
|
||||
rp = rpSet
|
||||
haveID = true
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if err = rp.loadFromJSONCfg(reqProcJsn, separator); err != nil {
|
||||
return
|
||||
}
|
||||
if !haveID {
|
||||
jaCfg.RequestProcessors = append(jaCfg.RequestProcessors, rp)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (jaCfg *JanusAgentCfg) AsMapInterface(separator string) (initialMP map[string]any) {
|
||||
|
||||
initialMP = map[string]any{
|
||||
utils.EnabledCfg: jaCfg.Enabled,
|
||||
utils.URLCfg: jaCfg.URL,
|
||||
}
|
||||
|
||||
if jaCfg.SessionSConns != nil {
|
||||
sessionConns := make([]string, len(jaCfg.SessionSConns))
|
||||
|
||||
for i, item := range jaCfg.SessionSConns {
|
||||
sessionConns[i] = item
|
||||
if item == utils.ConcatenatedKey(utils.MetaInternal, utils.MetaSessionS) {
|
||||
sessionConns[i] = utils.MetaInternal
|
||||
} else if item == utils.ConcatenatedKey(rpcclient.BiRPCInternal, utils.MetaSessionS) {
|
||||
sessionConns[i] = rpcclient.BiRPCInternal
|
||||
}
|
||||
}
|
||||
initialMP[utils.SessionSConnsCfg] = sessionConns
|
||||
}
|
||||
|
||||
requestProcessors := make([]map[string]any, len(jaCfg.RequestProcessors))
|
||||
for i, item := range jaCfg.RequestProcessors {
|
||||
requestProcessors[i] = item.AsMapInterface(separator)
|
||||
}
|
||||
initialMP[utils.RequestProcessorsCfg] = requestProcessors
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func (jaCfg *JanusAgentCfg) Clone() *JanusAgentCfg {
|
||||
cln := &JanusAgentCfg{
|
||||
Enabled: jaCfg.Enabled,
|
||||
URL: jaCfg.URL,
|
||||
}
|
||||
|
||||
if jaCfg.SessionSConns != nil {
|
||||
cln.SessionSConns = make([]string, len(jaCfg.SessionSConns))
|
||||
copy(cln.SessionSConns, jaCfg.SessionSConns)
|
||||
}
|
||||
|
||||
if jaCfg.RequestProcessors != nil {
|
||||
cln.RequestProcessors = make([]*RequestProcessor, len(jaCfg.RequestProcessors))
|
||||
for i, rp := range jaCfg.RequestProcessors {
|
||||
cln.RequestProcessors[i] = rp.Clone()
|
||||
}
|
||||
}
|
||||
return cln
|
||||
}
|
||||
|
||||
@@ -875,6 +875,13 @@ type SIPAgentJsonCfg struct {
|
||||
Request_processors *[]*ReqProcessorJsnCfg
|
||||
}
|
||||
|
||||
type JanusAgentJsonCfg struct {
|
||||
Enabled *bool `json:"enabled"`
|
||||
Url *string `json:"url"`
|
||||
Sessions_conns *[]string `json:"sessions_conns"`
|
||||
RequestProcessors *[]*ReqProcessorJsnCfg `json:"request_processors"`
|
||||
}
|
||||
|
||||
type ConfigSCfgJson struct {
|
||||
Enabled *bool
|
||||
Url *string
|
||||
|
||||
@@ -250,6 +250,8 @@ func (srvMngr *ServiceManager) handleReload() {
|
||||
go srvMngr.reloadService(utils.GlobalVarS)
|
||||
case <-srvMngr.GetConfig().GetReloadChan(config.CoreSCfgJson):
|
||||
go srvMngr.reloadService(utils.CoreS)
|
||||
case <-srvMngr.GetConfig().GetReloadChan(config.JanusAgentJson):
|
||||
go srvMngr.reloadService(utils.JanusAgent)
|
||||
}
|
||||
// handle RPC server
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user