mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
Add support for sending *dmr template via APIOpts
This commit is contained in:
committed by
Dan Christian Bogos
parent
ee98dbe0ca
commit
c9b6c1fbb7
@@ -165,7 +165,6 @@ func (ra *RadiusAgent) handleAuth(reqPacket *radigo.Packet) (*radigo.Packet, err
|
||||
utils.Logger.Warning(fmt.Sprintf(
|
||||
"<%s> setting default *vars.*sessionID (used to track packets of active sessions) failed: %v",
|
||||
utils.RadiusAgent, err))
|
||||
|
||||
}
|
||||
|
||||
var processed bool
|
||||
@@ -500,14 +499,16 @@ func (ra *RadiusAgent) V1DisconnectSession(_ *context.Context, cgrEv utils.CGREv
|
||||
}
|
||||
originID := utils.IfaceAsString(ifaceOriginID)
|
||||
|
||||
reqVars := &utils.DataNode{
|
||||
Type: utils.NMMapType,
|
||||
Map: map[string]*utils.DataNode{
|
||||
utils.DisconnectCause: utils.NewLeafNode(cgrEv.Event[utils.DisconnectCause]),
|
||||
},
|
||||
dmrTpl := ra.cgrCfg.RadiusAgentCfg().DMRTemplate
|
||||
if optTpl, err := cgrEv.OptAsString(utils.MetaRadDMRTemplate); err == nil {
|
||||
dmrTpl = optTpl
|
||||
}
|
||||
if _, found := ra.cgrCfg.TemplatesCfg()[dmrTpl]; !found {
|
||||
return fmt.Errorf("%w: DMR Template %s", utils.ErrNotFound, dmrTpl)
|
||||
}
|
||||
|
||||
replyCode, err := ra.sendRadDaReq(radigo.DisconnectRequest, ra.cgrCfg.RadiusAgentCfg().DMRTemplate, originID, nil, reqVars)
|
||||
replyCode, err := ra.sendRadDaReq(radigo.DisconnectRequest, dmrTpl,
|
||||
originID, utils.MapStorage(cgrEv.Event), nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -116,9 +116,12 @@ func TestRadiusCoADisconnect(t *testing.T) {
|
||||
|
||||
tPrfl := &engine.ThresholdProfileWithAPIOpts{
|
||||
ThresholdProfile: &engine.ThresholdProfile{
|
||||
Tenant: "cgrates.org",
|
||||
ID: "THD_ACNT_1001",
|
||||
FilterIDs: []string{"*string:~*opts.*eventType:AccountUpdate", "*string:~*req.ID:1001"},
|
||||
Tenant: "cgrates.org",
|
||||
ID: "THD_ACNT_1001",
|
||||
FilterIDs: []string{
|
||||
"*string:~*opts.*eventType:AccountUpdate",
|
||||
"*string:~*req.AccountSummary.ID:1001",
|
||||
},
|
||||
//MinHits: 1,
|
||||
MaxHits: 1,
|
||||
ActionIDs: []string{"LOG_WARNING", "ACT_RAD_COA_ACNT_1001"},
|
||||
@@ -151,7 +154,7 @@ func TestRadiusCoADisconnect(t *testing.T) {
|
||||
if string(request.AVPs[0].RawValue) != "1001" ||
|
||||
!bytes.Equal(request.AVPs[1].RawValue, decodedNasIPAddr) ||
|
||||
string(request.AVPs[2].RawValue) != "e4921177ab0e3586c37f6a185864b71a@0:0:0:0:0:0:0:0" ||
|
||||
string(request.AVPs[3].RawValue) != "FORCED_DISCONNECT" {
|
||||
string(request.AVPs[3].RawValue) != "NORMAL_DISCONNECT" {
|
||||
t.Errorf("unexpected request received: %v", utils.ToJSON(request))
|
||||
reply.Code = radigo.DisconnectNAK
|
||||
} else {
|
||||
@@ -272,7 +275,11 @@ func TestRadiusCoADisconnect(t *testing.T) {
|
||||
|
||||
time.Sleep(1 * time.Second) // Give time for the ThresholdS to execute the *alter_sessions API
|
||||
if err = raDiscRPC.Call(context.Background(), utils.SessionSv1ForceDisconnect,
|
||||
nil, &reply); err != nil {
|
||||
utils.SessionFilterWithEvent{
|
||||
Event: map[string]any{
|
||||
utils.DisconnectCause: "NORMAL_DISCONNECT",
|
||||
},
|
||||
}, &reply); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user