diff --git a/agents/diamagent.go b/agents/diamagent.go index b06d0a656..c01f4fd99 100644 --- a/agents/diamagent.go +++ b/agents/diamagent.go @@ -244,14 +244,13 @@ func (da *DiameterAgent) handleMessage(c diam.Conn, m *diam.Message) { writeOnConn(c, a) } -func (da *DiameterAgent) processRequest(reqProcessor *config.DARequestProcessor, +func (da *DiameterAgent) processRequest(reqProcessor *config.RequestProcessor, agReq *AgentRequest) (processed bool, err error) { if pass, err := da.filterS.Pass(agReq.tenant, reqProcessor.Filters, agReq); err != nil || !pass { return pass, err } if agReq.CGRRequest, err = agReq.AsNavigableMap(reqProcessor.RequestFields); err != nil { - fmt.Println("EXIT HERE ???????????? ") return } cgrEv := agReq.CGRRequest.AsCGREvent(agReq.tenant, utils.NestingSep) diff --git a/agents/httpagent.go b/agents/httpagent.go index 85cf80b09..2b2b4cd06 100644 --- a/agents/httpagent.go +++ b/agents/httpagent.go @@ -32,7 +32,7 @@ import ( // NewHttpAgent will construct a HTTPAgent func NewHTTPAgent(sessionS rpcclient.RpcClientConnection, filterS *engine.FilterS, dfltTenant, reqPayload, rplyPayload string, - reqProcessors []*config.HttpAgntProcCfg) *HTTPAgent { + reqProcessors []*config.RequestProcessor) *HTTPAgent { return &HTTPAgent{sessionS: sessionS, filterS: filterS, dfltTenant: dfltTenant, reqPayload: reqPayload, rplyPayload: rplyPayload, @@ -46,7 +46,7 @@ type HTTPAgent struct { dfltTenant, reqPayload, rplyPayload string - reqProcessors []*config.HttpAgntProcCfg + reqProcessors []*config.RequestProcessor } // ServeHTTP implements http.Handler interface @@ -94,7 +94,7 @@ func (ha *HTTPAgent) ServeHTTP(w http.ResponseWriter, req *http.Request) { } // processRequest represents one processor processing the request -func (ha *HTTPAgent) processRequest(reqProcessor *config.HttpAgntProcCfg, +func (ha *HTTPAgent) processRequest(reqProcessor *config.RequestProcessor, agReq *AgentRequest) (processed bool, err error) { if pass, err := ha.filterS.Pass(agReq.tenant, reqProcessor.Filters, agReq); err != nil || !pass { @@ -119,7 +119,7 @@ func (ha *HTTPAgent) processRequest(reqProcessor *config.HttpAgntProcCfg, if reqProcessor.Flags.HasKey(utils.MetaLog) { utils.Logger.Info( fmt.Sprintf("<%s> LOG, processorID: %s, http message: %s", - utils.HTTPAgent, reqProcessor.Id, agReq.Request.String())) + utils.HTTPAgent, reqProcessor.ID, agReq.Request.String())) } switch reqType { default: @@ -127,7 +127,7 @@ func (ha *HTTPAgent) processRequest(reqProcessor *config.HttpAgntProcCfg, case utils.MetaDryRun: utils.Logger.Info( fmt.Sprintf("<%s> DRY_RUN, processorID: %s, CGREvent: %s", - utils.HTTPAgent, reqProcessor.Id, utils.ToJSON(cgrEv))) + utils.HTTPAgent, reqProcessor.ID, utils.ToJSON(cgrEv))) case utils.MetaAuth: authArgs := sessions.NewV1AuthorizeArgs( reqProcessor.Flags.HasKey(utils.MetaAttributes), diff --git a/agents/radagent.go b/agents/radagent.go index 3d5950683..018a4df57 100644 --- a/agents/radagent.go +++ b/agents/radagent.go @@ -138,7 +138,7 @@ func (ra *RadiusAgent) handleAcct(req *radigo.Packet) (rpl *radigo.Packet, err e } // processRequest represents one processor processing the request -func (ra *RadiusAgent) processRequest(reqProcessor *config.RARequestProcessor, +func (ra *RadiusAgent) processRequest(reqProcessor *config.RequestProcessor, agReq *AgentRequest, rply *radigo.Packet) (processed bool, err error) { if pass, err := ra.filterS.Pass(agReq.tenant, reqProcessor.Filters, agReq); err != nil || !pass { @@ -163,7 +163,7 @@ func (ra *RadiusAgent) processRequest(reqProcessor *config.RARequestProcessor, if reqProcessor.Flags.HasKey(utils.MetaLog) { utils.Logger.Info( fmt.Sprintf("<%s> LOG, processorID: %s, radius message: %s", - utils.RadiusAgent, reqProcessor.Id, agReq.Request.String())) + utils.RadiusAgent, reqProcessor.ID, agReq.Request.String())) } switch reqType { default: @@ -171,7 +171,7 @@ func (ra *RadiusAgent) processRequest(reqProcessor *config.RARequestProcessor, case utils.MetaDryRun: utils.Logger.Info( fmt.Sprintf("<%s> DRY_RUN, processorID: %s, CGREvent: %s", - utils.RadiusAgent, reqProcessor.Id, utils.ToJSON(cgrEv))) + utils.RadiusAgent, reqProcessor.ID, utils.ToJSON(cgrEv))) case utils.MetaAuth: authArgs := sessions.NewV1AuthorizeArgs( reqProcessor.Flags.HasKey(utils.MetaAttributes), diff --git a/config/config_json_test.go b/config/config_json_test.go index d02f6b4da..90dc5c5e1 100755 --- a/config/config_json_test.go +++ b/config/config_json_test.go @@ -692,7 +692,7 @@ func TestDiameterAgentJsonCfg(t *testing.T) { Value: utils.StringPointer("1")}, }, }, - Request_processors: &[]*DARequestProcessorJsnCfg{}, + Request_processors: &[]*ReqProcessorJsnCfg{}, } if cfg, err := dfCgrJsonCfg.DiameterAgentJsonCfg(); err != nil { t.Error(err) @@ -717,7 +717,7 @@ func TestRadiusAgentJsonCfg(t *testing.T) { { Address: utils.StringPointer(utils.MetaInternal), }}, - Request_processors: &[]*RAReqProcessorJsnCfg{}, + Request_processors: &[]*ReqProcessorJsnCfg{}, } if cfg, err := dfCgrJsonCfg.RadiusAgentJsonCfg(); err != nil { t.Error(err) diff --git a/config/diametercfg.go b/config/diametercfg.go index 595ea422e..cb04a468a 100644 --- a/config/diametercfg.go +++ b/config/diametercfg.go @@ -18,10 +18,6 @@ along with this program. If not, see package config -import ( - "github.com/cgrates/cgrates/utils" -) - type DiameterAgentCfg struct { Enabled bool // enables the diameter agent: ListenNet string // sctp or tcp @@ -36,7 +32,7 @@ type DiameterAgentCfg struct { SyncedConnReqs bool ASRTemplate string Templates map[string][]*FCTemplate - RequestProcessors []*DARequestProcessor + RequestProcessors []*RequestProcessor } func (da *DiameterAgentCfg) loadFromJsonCfg(jsnCfg *DiameterAgentJsonCfg, separator string) (err error) { @@ -95,10 +91,10 @@ func (da *DiameterAgentCfg) loadFromJsonCfg(jsnCfg *DiameterAgentJsonCfg, separa } if jsnCfg.Request_processors != nil { for _, reqProcJsn := range *jsnCfg.Request_processors { - rp := new(DARequestProcessor) + rp := new(RequestProcessor) var haveID bool for _, rpSet := range da.RequestProcessors { - if reqProcJsn.Id != nil && rpSet.ID == *reqProcJsn.Id { + if reqProcJsn.ID != nil && rpSet.ID == *reqProcJsn.ID { rp = rpSet // Will load data into the one set haveID = true break @@ -114,55 +110,3 @@ func (da *DiameterAgentCfg) loadFromJsonCfg(jsnCfg *DiameterAgentJsonCfg, separa } return nil } - -// One Diameter request processor configuration -type DARequestProcessor struct { - ID string - Tenant RSRParsers - Filters []string - Flags utils.StringMap - Timezone string // timezone for timestamps where not specified <""|UTC|Local|$IANA_TZ_DB> - ContinueOnSuccess bool - RequestFields []*FCTemplate - ReplyFields []*FCTemplate -} - -func (dap *DARequestProcessor) loadFromJsonCfg(jsnCfg *DARequestProcessorJsnCfg, separator string) (err error) { - if jsnCfg == nil { - return nil - } - if jsnCfg.Id != nil { - dap.ID = *jsnCfg.Id - } - if jsnCfg.Tenant != nil { - if dap.Tenant, err = NewRSRParsers(*jsnCfg.Tenant, true, separator); err != nil { - return - } - } - if jsnCfg.Filters != nil { - dap.Filters = make([]string, len(*jsnCfg.Filters)) - for i, fltr := range *jsnCfg.Filters { - dap.Filters[i] = fltr - } - } - if jsnCfg.Flags != nil { - dap.Flags = utils.StringMapFromSlice(*jsnCfg.Flags) - } - if jsnCfg.Timezone != nil { - dap.Timezone = *jsnCfg.Timezone - } - if jsnCfg.Continue_on_success != nil { - dap.ContinueOnSuccess = *jsnCfg.Continue_on_success - } - if jsnCfg.Request_fields != nil { - if dap.RequestFields, err = FCTemplatesFromFCTemplatesJsonCfg(*jsnCfg.Request_fields, separator); err != nil { - return - } - } - if jsnCfg.Reply_fields != nil { - if dap.ReplyFields, err = FCTemplatesFromFCTemplatesJsonCfg(*jsnCfg.Reply_fields, separator); err != nil { - return - } - } - return nil -} diff --git a/config/diametercfg_test.go b/config/diametercfg_test.go index ac2adf2c6..cb26c37d0 100644 --- a/config/diametercfg_test.go +++ b/config/diametercfg_test.go @@ -75,38 +75,3 @@ func TestDiameterAgentCfgloadFromJsonCfg(t *testing.T) { t.Errorf("Expected: %+v , recived: %+v", utils.ToJSON(expected), utils.ToJSON(dacfg)) } } - -func TestDARequestProcessorloadFromJsonCfg(t *testing.T) { - var dareq, expected DARequestProcessor - if err := dareq.loadFromJsonCfg(nil, utils.INFIELD_SEP); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(dareq, expected) { - t.Errorf("Expected: %+v ,recived: %+v", expected, dareq) - } - if err := dareq.loadFromJsonCfg(new(DARequestProcessorJsnCfg), utils.INFIELD_SEP); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(dareq, expected) { - t.Errorf("Expected: %+v ,recived: %+v", expected, dareq) - } - json := &DARequestProcessorJsnCfg{ - Id: utils.StringPointer("cgrates"), - Tenant: utils.StringPointer("tenant"), - Filters: &[]string{"filter1", "filter2"}, - Flags: &[]string{"flag1", "flag2"}, - Timezone: utils.StringPointer("Local"), - Continue_on_success: utils.BoolPointer(true), - } - expected = DARequestProcessor{ - ID: "cgrates", - Tenant: NewRSRParsersMustCompile("tenant", true, utils.INFIELD_SEP), - Filters: []string{"filter1", "filter2"}, - Flags: utils.StringMap{"flag1": true, "flag2": true}, - Timezone: "Local", - ContinueOnSuccess: true, - } - if err = dareq.loadFromJsonCfg(json, utils.INFIELD_SEP); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(expected, dareq) { - t.Errorf("Expected: %+v , recived: %+v", utils.ToJSON(expected), utils.ToJSON(dareq)) - } -} diff --git a/config/dnsagntcfg.go b/config/dnsagntcfg.go index 6abdc904f..f5dfb40a1 100644 --- a/config/dnsagntcfg.go +++ b/config/dnsagntcfg.go @@ -83,6 +83,7 @@ type RequestProcessor struct { Filters []string Flags utils.StringMap ContinueOnSuccess bool + Timezone string RequestFields []*FCTemplate ReplyFields []*FCTemplate } @@ -103,6 +104,9 @@ func (rp *RequestProcessor) loadFromJsonCfg(jsnCfg *ReqProcessorJsnCfg, sep stri if jsnCfg.Flags != nil { rp.Flags = utils.StringMapFromSlice(*jsnCfg.Flags) } + if jsnCfg.Timezone != nil { + rp.Timezone = *jsnCfg.Timezone + } if jsnCfg.Continue_on_success != nil { rp.ContinueOnSuccess = *jsnCfg.Continue_on_success } diff --git a/config/httpagntcfg.go b/config/httpagntcfg.go index f250984f1..152041aac 100644 --- a/config/httpagntcfg.go +++ b/config/httpagntcfg.go @@ -18,10 +18,6 @@ along with this program. If not, see package config -import ( - "github.com/cgrates/cgrates/utils" -) - type HttpAgentCfgs []*HttpAgentCfg func (hcfgs *HttpAgentCfgs) loadFromJsonCfg(jsnHttpAgntCfg *[]*HttpAgentJsonCfg, separator string) (err error) { @@ -58,19 +54,19 @@ type HttpAgentCfg struct { SessionSConns []*RemoteHost RequestPayload string ReplyPayload string - RequestProcessors []*HttpAgntProcCfg + RequestProcessors []*RequestProcessor } -func (ca *HttpAgentCfg) appendHttpAgntProcCfgs(hps *[]*HttpAgentProcessorJsnCfg, separator string) (err error) { +func (ca *HttpAgentCfg) appendHttpAgntProcCfgs(hps *[]*ReqProcessorJsnCfg, separator string) (err error) { if hps == nil { return } for _, reqProcJsn := range *hps { - rp := new(HttpAgntProcCfg) + rp := new(RequestProcessor) var haveID bool - if reqProcJsn.Id != nil { + if reqProcJsn.ID != nil { for _, rpSet := range ca.RequestProcessors { - if rpSet.Id == *reqProcJsn.Id { + if rpSet.ID == *reqProcJsn.ID { rp = rpSet // Will load data into the one set haveID = true break @@ -115,54 +111,3 @@ func (ca *HttpAgentCfg) loadFromJsonCfg(jsnCfg *HttpAgentJsonCfg, separator stri } return nil } - -type HttpAgntProcCfg struct { - Id string - Filters []string - Tenant RSRParsers - Timezone string - Flags utils.StringMap - ContinueOnSuccess bool - RequestFields []*FCTemplate - ReplyFields []*FCTemplate -} - -func (ha *HttpAgntProcCfg) loadFromJsonCfg(jsnCfg *HttpAgentProcessorJsnCfg, separator string) (err error) { - if jsnCfg == nil { - return nil - } - if jsnCfg.Id != nil { - ha.Id = *jsnCfg.Id - } - if jsnCfg.Filters != nil { - ha.Filters = make([]string, len(*jsnCfg.Filters)) - for i, fltr := range *jsnCfg.Filters { - ha.Filters[i] = fltr - } - } - if jsnCfg.Tenant != nil { - if ha.Tenant, err = NewRSRParsers(*jsnCfg.Tenant, true, separator); err != nil { - return err - } - } - if jsnCfg.Timezone != nil { - ha.Timezone = *jsnCfg.Timezone - } - if jsnCfg.Flags != nil { - ha.Flags = utils.StringMapFromSlice(*jsnCfg.Flags) - } - if jsnCfg.Continue_on_success != nil { - ha.ContinueOnSuccess = *jsnCfg.Continue_on_success - } - if jsnCfg.Request_fields != nil { - if ha.RequestFields, err = FCTemplatesFromFCTemplatesJsonCfg(*jsnCfg.Request_fields, separator); err != nil { - return - } - } - if jsnCfg.Reply_fields != nil { - if ha.ReplyFields, err = FCTemplatesFromFCTemplatesJsonCfg(*jsnCfg.Reply_fields, separator); err != nil { - return - } - } - return nil -} diff --git a/config/httpagntcfg_test.go b/config/httpagntcfg_test.go index c0cba7fa2..851d57f17 100644 --- a/config/httpagntcfg_test.go +++ b/config/httpagntcfg_test.go @@ -70,8 +70,8 @@ func TestHttpAgentCfgsloadFromJsonCfg(t *testing.T) { SessionSConns: []*RemoteHost{{Address: "127.0.0.1:2012", Transport: "*json"}}, RequestPayload: "*url", ReplyPayload: "*xml", - RequestProcessors: []*HttpAgntProcCfg{{ - Id: "OutboundAUTHDryRun", + RequestProcessors: []*RequestProcessor{{ + ID: "OutboundAUTHDryRun", Filters: []string{"*string:*req.request_type:OutboundAUTH", "*string:*req.Msisdn:497700056231"}, Tenant: NewRSRParsersMustCompile("cgrates.org", true, utils.INFIELD_SEP), Flags: utils.StringMap{"*dryrun": true}, @@ -149,8 +149,8 @@ func TestHttpAgentCfgsloadFromJsonCfg(t *testing.T) { SessionSConns: []*RemoteHost{{Address: "127.0.0.1:2012", Transport: "*json"}}, RequestPayload: "*url", ReplyPayload: "*xml", - RequestProcessors: []*HttpAgntProcCfg{{ - Id: "OutboundAUTHDryRun", + RequestProcessors: []*RequestProcessor{{ + ID: "OutboundAUTHDryRun", Filters: []string{"*string:*req.request_type:OutboundAUTH", "*string:*req.Msisdn:497700056231"}, Tenant: NewRSRParsersMustCompile("cgrates.org", true, utils.INFIELD_SEP), Flags: utils.StringMap{"*dryrun": true}, @@ -163,7 +163,7 @@ func TestHttpAgentCfgsloadFromJsonCfg(t *testing.T) { Mandatory: true, }}}, { - Id: "mtcall_cdr", + ID: "mtcall_cdr", Filters: []string{"*string:*req.request_type:MTCALL_CDR"}, Tenant: NewRSRParsersMustCompile("cgrates.org", true, utils.INFIELD_SEP), Flags: utils.StringMap{"*cdrs": true}, @@ -188,8 +188,8 @@ func TestHttpAgentCfgsloadFromJsonCfg(t *testing.T) { SessionSConns: []*RemoteHost{{Address: "127.0.0.1:2012", Transport: "*json"}}, RequestPayload: "*xml", ReplyPayload: "*xml", - RequestProcessors: []*HttpAgntProcCfg{{ - Id: "cdr_from_xml", + RequestProcessors: []*RequestProcessor{{ + ID: "cdr_from_xml", Tenant: NewRSRParsersMustCompile("cgrates.org", true, utils.INFIELD_SEP), Flags: utils.StringMap{"*cdrs": true}, RequestFields: []*FCTemplate{}, @@ -226,9 +226,9 @@ func TestHttpAgentCfgloadFromJsonCfg(t *testing.T) { Sessions_conns: &[]*RemoteHostJson{{Address: utils.StringPointer("127.0.0.1:2012"), Transport: utils.StringPointer("*json")}}, Request_payload: utils.StringPointer("*url"), Reply_payload: utils.StringPointer("*xml"), - Request_processors: &[]*HttpAgentProcessorJsnCfg{ + Request_processors: &[]*ReqProcessorJsnCfg{ { - Id: utils.StringPointer("OutboundAUTHDryRun"), + ID: utils.StringPointer("OutboundAUTHDryRun"), Filters: &[]string{"*string:*req.request_type:OutboundAUTH", "*string:*req.Msisdn:497700056231"}, Tenant: utils.StringPointer("cgrates.org"), Flags: &[]string{"*dryrun"}, @@ -243,8 +243,8 @@ func TestHttpAgentCfgloadFromJsonCfg(t *testing.T) { SessionSConns: []*RemoteHost{{Address: "127.0.0.1:2012", Transport: "*json"}}, RequestPayload: "*url", ReplyPayload: "*xml", - RequestProcessors: []*HttpAgntProcCfg{{ - Id: "OutboundAUTHDryRun", + RequestProcessors: []*RequestProcessor{{ + ID: "OutboundAUTHDryRun", Filters: []string{"*string:*req.request_type:OutboundAUTH", "*string:*req.Msisdn:497700056231"}, Tenant: NewRSRParsersMustCompile("cgrates.org", true, utils.INFIELD_SEP), Flags: utils.StringMap{"*dryrun": true}, @@ -267,8 +267,8 @@ func TestHttpAgentCfgappendHttpAgntProcCfgs(t *testing.T) { SessionSConns: []*RemoteHost{{Address: "127.0.0.1:2012", Transport: "*json"}}, RequestPayload: "*url", ReplyPayload: "*xml", - RequestProcessors: []*HttpAgntProcCfg{{ - Id: "OutboundAUTHDryRun", + RequestProcessors: []*RequestProcessor{{ + ID: "OutboundAUTHDryRun", Filters: []string{"*string:*req.request_type:OutboundAUTH", "*string:*req.Msisdn:497700056231"}, Tenant: NewRSRParsersMustCompile("cgrates.org", true, utils.INFIELD_SEP), Flags: utils.StringMap{"*dryrun": true}, @@ -282,8 +282,8 @@ func TestHttpAgentCfgappendHttpAgntProcCfgs(t *testing.T) { }}, }}, } - proceses := &[]*HttpAgentProcessorJsnCfg{{ - Id: utils.StringPointer("OutboundAUTHDryRun1"), + proceses := &[]*ReqProcessorJsnCfg{{ + ID: utils.StringPointer("OutboundAUTHDryRun1"), Filters: &[]string{"*string:*req.request_type:OutboundAUTH", "*string:*req.Msisdn:497700056231"}, Tenant: utils.StringPointer("cgrates.org"), Flags: &[]string{"*dryrun"}, @@ -296,7 +296,7 @@ func TestHttpAgentCfgappendHttpAgntProcCfgs(t *testing.T) { Mandatory: utils.BoolPointer(true), }}, }, { - Id: utils.StringPointer("OutboundAUTHDryRun"), + ID: utils.StringPointer("OutboundAUTHDryRun"), Filters: &[]string{"*string:*req.request_type:OutboundAUTH", "*string:*req.Msisdn:497700056231"}, Tenant: utils.StringPointer("cgrates.org"), Flags: &[]string{"*dryrun"}, @@ -316,8 +316,8 @@ func TestHttpAgentCfgappendHttpAgntProcCfgs(t *testing.T) { SessionSConns: []*RemoteHost{{Address: "127.0.0.1:2012", Transport: "*json"}}, RequestPayload: "*url", ReplyPayload: "*xml", - RequestProcessors: []*HttpAgntProcCfg{{ - Id: "OutboundAUTHDryRun", + RequestProcessors: []*RequestProcessor{{ + ID: "OutboundAUTHDryRun", Filters: []string{"*string:*req.request_type:OutboundAUTH", "*string:*req.Msisdn:497700056231"}, Tenant: NewRSRParsersMustCompile("cgrates.org", true, utils.INFIELD_SEP), Flags: utils.StringMap{"*dryrun": true}, @@ -330,7 +330,7 @@ func TestHttpAgentCfgappendHttpAgntProcCfgs(t *testing.T) { Mandatory: false, }}, }, { - Id: "OutboundAUTHDryRun1", + ID: "OutboundAUTHDryRun1", Filters: []string{"*string:*req.request_type:OutboundAUTH", "*string:*req.Msisdn:497700056231"}, Tenant: NewRSRParsersMustCompile("cgrates.org", true, utils.INFIELD_SEP), Flags: utils.StringMap{"*dryrun": true}, @@ -351,52 +351,3 @@ func TestHttpAgentCfgappendHttpAgntProcCfgs(t *testing.T) { t.Errorf("Expected: %+v , recived: %+v", utils.ToJSON(expected), utils.ToJSON(initial)) } } - -func TestHttpAgntProcCfgloadFromJsonCfg(t *testing.T) { - var httpcfg, expected HttpAgntProcCfg - if err := httpcfg.loadFromJsonCfg(nil, utils.INFIELD_SEP); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(httpcfg, expected) { - t.Errorf("Expected: %+v ,recived: %+v", expected, httpcfg) - } - if err := httpcfg.loadFromJsonCfg(new(HttpAgentProcessorJsnCfg), utils.INFIELD_SEP); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(httpcfg, expected) { - t.Errorf("Expected: %+v ,recived: %+v", expected, httpcfg) - } - - jsnhttpCfg := &HttpAgentProcessorJsnCfg{ - Id: utils.StringPointer("OutboundAUTHDryRun1"), - Filters: &[]string{"*string:*req.request_type:OutboundAUTH", "*string:*req.Msisdn:497700056231"}, - Tenant: utils.StringPointer("cgrates.org"), - Flags: &[]string{"*dryrun"}, - Request_fields: &[]*FcTemplateJsonCfg{}, - Reply_fields: &[]*FcTemplateJsonCfg{{ - Tag: utils.StringPointer("Allow"), - Field_id: utils.StringPointer("response.Allow"), - Type: utils.StringPointer("*constant"), - Value: utils.StringPointer("1"), - Mandatory: utils.BoolPointer(true), - }}, - } - expected = HttpAgntProcCfg{ - Id: "OutboundAUTHDryRun1", - Filters: []string{"*string:*req.request_type:OutboundAUTH", "*string:*req.Msisdn:497700056231"}, - Tenant: NewRSRParsersMustCompile("cgrates.org", true, utils.INFIELD_SEP), - Flags: utils.StringMap{"*dryrun": true}, - RequestFields: []*FCTemplate{}, - ReplyFields: []*FCTemplate{{ - Tag: "Allow", - FieldId: "response.Allow", - Type: "*constant", - Value: NewRSRParsersMustCompile("1", true, utils.INFIELD_SEP), - Mandatory: true, - }}, - } - - if err = httpcfg.loadFromJsonCfg(jsnhttpCfg, utils.INFIELD_SEP); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(expected, httpcfg) { - t.Errorf("Expected: %+v , recived: %+v", utils.ToJSON(expected), utils.ToJSON(httpcfg)) - } -} diff --git a/config/libconfig_json.go b/config/libconfig_json.go index 77aa5bffc..4a3431358 100755 --- a/config/libconfig_json.go +++ b/config/libconfig_json.go @@ -335,19 +335,7 @@ type DiameterAgentJsonCfg struct { Synced_conn_requests *bool Asr_template *string Templates map[string][]*FcTemplateJsonCfg - Request_processors *[]*DARequestProcessorJsnCfg -} - -// One Diameter request processor configuration -type DARequestProcessorJsnCfg struct { - Id *string - Tenant *string - Filters *[]string - Flags *[]string - Timezone *string - Continue_on_success *bool - Request_fields *[]*FcTemplateJsonCfg - Reply_fields *[]*FcTemplateJsonCfg + Request_processors *[]*ReqProcessorJsnCfg } // Radius Agent configuration section @@ -360,18 +348,7 @@ type RadiusAgentJsonCfg struct { Client_dictionaries *map[string]string Sessions_conns *[]*RemoteHostJson Timezone *string - Request_processors *[]*RAReqProcessorJsnCfg -} - -type RAReqProcessorJsnCfg struct { - Id *string - Filters *[]string - Tenant *string - Timezone *string - Flags *[]string - Continue_on_success *bool - Request_fields *[]*FcTemplateJsonCfg - Reply_fields *[]*FcTemplateJsonCfg + Request_processors *[]*ReqProcessorJsnCfg } // Conecto Agent configuration section @@ -381,18 +358,7 @@ type HttpAgentJsonCfg struct { Sessions_conns *[]*RemoteHostJson Request_payload *string Reply_payload *string - Request_processors *[]*HttpAgentProcessorJsnCfg -} - -type HttpAgentProcessorJsnCfg struct { - Id *string - Filters *[]string - Tenant *string - Timezone *string - Flags *[]string - Continue_on_success *bool - Request_fields *[]*FcTemplateJsonCfg - Reply_fields *[]*FcTemplateJsonCfg + Request_processors *[]*ReqProcessorJsnCfg } // DNSAgentJsonCfg diff --git a/config/multifiles_it_test.go b/config/multifiles_it_test.go index 01241f6d3..fe266f545 100644 --- a/config/multifiles_it_test.go +++ b/config/multifiles_it_test.go @@ -138,9 +138,9 @@ func TestMfHttpAgentMultipleFields(t *testing.T) { SessionSConns: []*RemoteHost{{Address: "127.0.0.2:2012", Transport: "*json"}}, RequestPayload: "*url", ReplyPayload: "*xml", - RequestProcessors: []*HttpAgntProcCfg{ + RequestProcessors: []*RequestProcessor{ { - Id: "OutboundAUTHDryRun", + ID: "OutboundAUTHDryRun", Filters: []string{}, Tenant: NewRSRParsersMustCompile("cgrates.org", true, utils.INFIELD_SEP), Flags: utils.StringMap{"*dryrun": true}, @@ -154,7 +154,7 @@ func TestMfHttpAgentMultipleFields(t *testing.T) { }}, }, { - Id: "OutboundAUTH", + ID: "OutboundAUTH", Filters: []string{"*string:~*req.request_type:OutboundAUTH"}, Tenant: NewRSRParsersMustCompile("cgrates.org", true, utils.INFIELD_SEP), Flags: utils.StringMap{"*accounts": true, @@ -179,7 +179,7 @@ func TestMfHttpAgentMultipleFields(t *testing.T) { }, }, { - Id: "mtcall_cdr", + ID: "mtcall_cdr", Filters: []string{"*string:~*req.request_type:MTCALL_CDR"}, Tenant: NewRSRParsersMustCompile("cgrates.org", true, utils.INFIELD_SEP), Flags: utils.StringMap{"*cdrs": true}, @@ -206,8 +206,8 @@ func TestMfHttpAgentMultipleFields(t *testing.T) { SessionSConns: []*RemoteHost{{Address: "127.0.0.1:2012", Transport: "*json"}}, RequestPayload: "*xml", ReplyPayload: "*xml", - RequestProcessors: []*HttpAgntProcCfg{{ - Id: "cdr_from_xml", + RequestProcessors: []*RequestProcessor{{ + ID: "cdr_from_xml", Tenant: NewRSRParsersMustCompile("cgrates.org", true, utils.INFIELD_SEP), Flags: utils.StringMap{"*cdrs": true}, RequestFields: []*FCTemplate{ diff --git a/config/radiuscfg.go b/config/radiuscfg.go index 1af76352b..7fffd2d6e 100644 --- a/config/radiuscfg.go +++ b/config/radiuscfg.go @@ -18,10 +18,6 @@ along with this program. If not, see package config -import ( - "github.com/cgrates/cgrates/utils" -) - type RadiusAgentCfg struct { Enabled bool ListenNet string // udp or tcp @@ -30,7 +26,7 @@ type RadiusAgentCfg struct { ClientSecrets map[string]string ClientDictionaries map[string]string SessionSConns []*RemoteHost - RequestProcessors []*RARequestProcessor + RequestProcessors []*RequestProcessor } func (self *RadiusAgentCfg) loadFromJsonCfg(jsnCfg *RadiusAgentJsonCfg, separator string) (err error) { @@ -74,10 +70,10 @@ func (self *RadiusAgentCfg) loadFromJsonCfg(jsnCfg *RadiusAgentJsonCfg, separato } if jsnCfg.Request_processors != nil { for _, reqProcJsn := range *jsnCfg.Request_processors { - rp := new(RARequestProcessor) + rp := new(RequestProcessor) var haveID bool for _, rpSet := range self.RequestProcessors { - if reqProcJsn.Id != nil && rpSet.Id == *reqProcJsn.Id { + if reqProcJsn.ID != nil && rpSet.ID == *reqProcJsn.ID { rp = rpSet // Will load data into the one set haveID = true break @@ -93,55 +89,3 @@ func (self *RadiusAgentCfg) loadFromJsonCfg(jsnCfg *RadiusAgentJsonCfg, separato } return nil } - -// One Diameter request processor configuration -type RARequestProcessor struct { - Id string - Tenant RSRParsers - Filters []string - Timezone string - Flags utils.StringMap - ContinueOnSuccess bool - RequestFields []*FCTemplate - ReplyFields []*FCTemplate -} - -func (self *RARequestProcessor) loadFromJsonCfg(jsnCfg *RAReqProcessorJsnCfg, separator string) (err error) { - if jsnCfg == nil { - return nil - } - if jsnCfg.Id != nil { - self.Id = *jsnCfg.Id - } - if jsnCfg.Filters != nil { - self.Filters = make([]string, len(*jsnCfg.Filters)) - for i, fltr := range *jsnCfg.Filters { - self.Filters[i] = fltr - } - } - if jsnCfg.Flags != nil { - self.Flags = utils.StringMapFromSlice(*jsnCfg.Flags) - } - if jsnCfg.Continue_on_success != nil { - self.ContinueOnSuccess = *jsnCfg.Continue_on_success - } - if jsnCfg.Tenant != nil { - if self.Tenant, err = NewRSRParsers(*jsnCfg.Tenant, true, separator); err != nil { - return err - } - } - if jsnCfg.Timezone != nil { - self.Timezone = *jsnCfg.Timezone - } - if jsnCfg.Request_fields != nil { - if self.RequestFields, err = FCTemplatesFromFCTemplatesJsonCfg(*jsnCfg.Request_fields, separator); err != nil { - return - } - } - if jsnCfg.Reply_fields != nil { - if self.ReplyFields, err = FCTemplatesFromFCTemplatesJsonCfg(*jsnCfg.Reply_fields, separator); err != nil { - return - } - } - return nil -} diff --git a/config/radiuscfg_test.go b/config/radiuscfg_test.go index 51198c340..e84480d04 100644 --- a/config/radiuscfg_test.go +++ b/config/radiuscfg_test.go @@ -73,38 +73,3 @@ func TestRadiusAgentCfgloadFromJsonCfg(t *testing.T) { t.Errorf("Expected: %+v , recived: %+v", utils.ToJSON(expected), utils.ToJSON(racfg)) } } - -func TestRARequestProcessorloadFromJsonCfg(t *testing.T) { - var rareq, expected RARequestProcessor - if err := rareq.loadFromJsonCfg(nil, utils.INFIELD_SEP); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(rareq, expected) { - t.Errorf("Expected: %+v ,recived: %+v", expected, rareq) - } - if err := rareq.loadFromJsonCfg(new(RAReqProcessorJsnCfg), utils.INFIELD_SEP); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(rareq, expected) { - t.Errorf("Expected: %+v ,recived: %+v", expected, rareq) - } - json := &RAReqProcessorJsnCfg{ - Id: utils.StringPointer("cgrates"), - Tenant: utils.StringPointer("tenant"), - Filters: &[]string{"filter1", "filter2"}, - Flags: &[]string{"flag1", "flag2"}, - Timezone: utils.StringPointer("Local"), - Continue_on_success: utils.BoolPointer(true), - } - expected = RARequestProcessor{ - Id: "cgrates", - Tenant: NewRSRParsersMustCompile("tenant", true, utils.INFIELD_SEP), - Filters: []string{"filter1", "filter2"}, - Flags: utils.StringMap{"flag1": true, "flag2": true}, - Timezone: "Local", - ContinueOnSuccess: true, - } - if err = rareq.loadFromJsonCfg(json, utils.INFIELD_SEP); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(expected, rareq) { - t.Errorf("Expected: %+v , recived: %+v", utils.ToJSON(expected), utils.ToJSON(rareq)) - } -}