mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
Updated *ipnet filter
This commit is contained in:
committed by
Dan Christian Bogos
parent
c4a9f8e6ce
commit
dbe4720666
@@ -733,10 +733,10 @@ func testV1STSProcessStatWithThreshold(t *testing.T) {
|
||||
QueueLength: 100,
|
||||
TTL: time.Duration(1) * time.Second,
|
||||
Metrics: []*engine.MetricWithFilters{
|
||||
&engine.MetricWithFilters{
|
||||
{
|
||||
MetricID: utils.MetaTCD,
|
||||
},
|
||||
&engine.MetricWithFilters{
|
||||
{
|
||||
MetricID: utils.ConcatenatedKey(utils.MetaSum, "2"),
|
||||
},
|
||||
},
|
||||
|
||||
@@ -579,16 +579,21 @@ func (fltr *FilterRule) passIPNet(dDP utils.DataProvider) (bool, error) {
|
||||
}
|
||||
return false, err
|
||||
}
|
||||
_, ip, err := net.ParseCIDR(strVal)
|
||||
if err != nil {
|
||||
return false, err
|
||||
ip := net.ParseIP(strVal)
|
||||
if ip == nil {
|
||||
return false, nil
|
||||
}
|
||||
|
||||
for _, val := range fltr.rsrValues {
|
||||
sval, err := val.ParseDataProvider(dDP)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
if ip.Contains(net.ParseIP(sval)) {
|
||||
_, ipNet, err := net.ParseCIDR(sval)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
if ipNet.Contains(ip) {
|
||||
return true, nil
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1371,11 +1371,11 @@ func TestVerifyInlineFilterS(t *testing.T) {
|
||||
|
||||
func TestFilterPassIPNet(t *testing.T) {
|
||||
cd := utils.MapStorage{
|
||||
"IP": "192.0.2.1/24",
|
||||
"WrongIP": "192.0.2.1",
|
||||
"IP": "192.0.2.0",
|
||||
"WrongIP": "192.0.3.",
|
||||
}
|
||||
rf := &FilterRule{Type: utils.MetaIPNet,
|
||||
Element: "~IP", Values: []string{"192.0.2.0"}}
|
||||
Element: "~IP", Values: []string{"192.0.2.1/24"}}
|
||||
if err := rf.CompileValues(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -1385,7 +1385,7 @@ func TestFilterPassIPNet(t *testing.T) {
|
||||
t.Error("Not passes filter")
|
||||
}
|
||||
rf = &FilterRule{Type: utils.MetaIPNet,
|
||||
Element: "~IP", Values: []string{"~IP2", "192.0.3.0"}}
|
||||
Element: "~IP", Values: []string{"~IP2", "192.0.3.0/30"}}
|
||||
if err := rf.CompileValues(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -1396,7 +1396,7 @@ func TestFilterPassIPNet(t *testing.T) {
|
||||
}
|
||||
//not
|
||||
rf = &FilterRule{Type: utils.MetaNotIPNet,
|
||||
Element: "~IP", Values: []string{"192.0.2.0"}}
|
||||
Element: "~IP", Values: []string{"192.0.2.0/24"}}
|
||||
if err := rf.CompileValues(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -1406,7 +1406,7 @@ func TestFilterPassIPNet(t *testing.T) {
|
||||
t.Error("Filter passes")
|
||||
}
|
||||
rf = &FilterRule{Type: utils.MetaNotIPNet,
|
||||
Element: "~IP", Values: []string{"192.0.3.0"}}
|
||||
Element: "~IP", Values: []string{"192.0.3.0/24"}}
|
||||
if err := rf.CompileValues(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -1417,7 +1417,18 @@ func TestFilterPassIPNet(t *testing.T) {
|
||||
}
|
||||
|
||||
rf = &FilterRule{Type: utils.MetaIPNet,
|
||||
Element: "~IP2", Values: []string{"192.0.2.0"}}
|
||||
Element: "~IP2", Values: []string{"192.0.2.0/24"}}
|
||||
if err := rf.CompileValues(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if passes, err := rf.passIPNet(cd); err != nil {
|
||||
t.Error(err)
|
||||
} else if passes {
|
||||
t.Error("Filter passes")
|
||||
}
|
||||
|
||||
rf = &FilterRule{Type: utils.MetaIPNet,
|
||||
Element: "~IP", Values: []string{"192.0.2.0"}}
|
||||
if err := rf.CompileValues(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -1432,11 +1443,13 @@ func TestFilterPassIPNet(t *testing.T) {
|
||||
if err := rf.CompileValues(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if _, err := rf.passIPNet(cd); err == nil {
|
||||
if passes, err := rf.passIPNet(cd); err != nil {
|
||||
t.Error(err)
|
||||
} else if passes {
|
||||
t.Error("Filter passes")
|
||||
}
|
||||
rf = &FilterRule{Type: utils.MetaIPNet,
|
||||
Element: "~IP{*duration}", Values: []string{"192.0.2.0"}}
|
||||
Element: "~IP{*duration}", Values: []string{"192.0.2.0/24"}}
|
||||
if err := rf.CompileValues(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user