mirror of
https://github.com/TeaOSLab/EdgeCommon.git
synced 2026-05-25 08:05:41 +08:00
实现WAF策略部分功能
This commit is contained in:
125
pkg/serverconfigs/shared/ip_range_test.go
Normal file
125
pkg/serverconfigs/shared/ip_range_test.go
Normal file
@@ -0,0 +1,125 @@
|
||||
package shared
|
||||
|
||||
import (
|
||||
"github.com/iwind/TeaGo/assert"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestGeoConfig_Contains(t *testing.T) {
|
||||
a := assert.NewAssertion(t)
|
||||
|
||||
{
|
||||
geo := NewIPRangeConfig()
|
||||
geo.Type = IPRangeTypeRange
|
||||
geo.IPFrom = "192.168.1.100"
|
||||
geo.IPTo = "192.168.1.110"
|
||||
a.IsNil(geo.Validate())
|
||||
a.IsTrue(geo.Contains("192.168.1.100"))
|
||||
a.IsTrue(geo.Contains("192.168.1.101"))
|
||||
a.IsTrue(geo.Contains("192.168.1.110"))
|
||||
a.IsFalse(geo.Contains("192.168.1.111"))
|
||||
}
|
||||
|
||||
{
|
||||
geo := NewIPRangeConfig()
|
||||
geo.Type = IPRangeTypeCIDR
|
||||
geo.CIDR = "192.168.1.1/24"
|
||||
a.IsNil(geo.Validate())
|
||||
a.IsTrue(geo.Contains("192.168.1.100"))
|
||||
a.IsFalse(geo.Contains("192.168.2.100"))
|
||||
}
|
||||
|
||||
{
|
||||
geo := NewIPRangeConfig()
|
||||
geo.Type = IPRangeTypeCIDR
|
||||
geo.CIDR = "192.168.1.1/16"
|
||||
a.IsNil(geo.Validate())
|
||||
a.IsTrue(geo.Contains("192.168.2.100"))
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseIPRange(t *testing.T) {
|
||||
a := assert.NewAssertion(t)
|
||||
|
||||
{
|
||||
_, err := ParseIPRange("")
|
||||
a.IsNotNil(err)
|
||||
}
|
||||
|
||||
{
|
||||
r, err := ParseIPRange("192.168.1.100")
|
||||
a.IsNil(err)
|
||||
a.IsTrue(r.IPFrom == r.IPTo)
|
||||
a.IsTrue(r.IPFrom == "192.168.1.100")
|
||||
a.IsTrue(r.Contains("192.168.1.100"))
|
||||
a.IsFalse(r.Contains("192.168.1.99"))
|
||||
}
|
||||
|
||||
{
|
||||
r, err := ParseIPRange("192.168.1.100/24")
|
||||
a.IsNil(err)
|
||||
a.IsTrue(r.CIDR == "192.168.1.100/24")
|
||||
a.IsTrue(r.Contains("192.168.1.100"))
|
||||
a.IsTrue(r.Contains("192.168.1.99"))
|
||||
a.IsFalse(r.Contains("192.168.2.100"))
|
||||
}
|
||||
|
||||
{
|
||||
r, err := ParseIPRange("192.168.1.100, 192.168.1.200")
|
||||
a.IsNil(err)
|
||||
a.IsTrue(r.IPFrom == "192.168.1.100")
|
||||
a.IsTrue(r.IPTo == "192.168.1.200")
|
||||
a.IsTrue(r.Contains("192.168.1.100"))
|
||||
a.IsTrue(r.Contains("192.168.1.150"))
|
||||
a.IsFalse(r.Contains("192.168.2.100"))
|
||||
}
|
||||
|
||||
{
|
||||
r, err := ParseIPRange("192.168.1.100-192.168.1.200")
|
||||
a.IsNil(err)
|
||||
a.IsTrue(r.IPFrom == "192.168.1.100")
|
||||
a.IsTrue(r.IPTo == "192.168.1.200")
|
||||
a.IsTrue(r.Contains("192.168.1.100"))
|
||||
a.IsTrue(r.Contains("192.168.1.150"))
|
||||
a.IsFalse(r.Contains("192.168.2.100"))
|
||||
}
|
||||
|
||||
{
|
||||
r, err := ParseIPRange("all")
|
||||
a.IsNil(err)
|
||||
a.IsTrue(r.Type == IPRangeTypeAll)
|
||||
a.IsTrue(r.Contains("192.168.1.100"))
|
||||
a.IsTrue(r.Contains("192.168.1.150"))
|
||||
a.IsTrue(r.Contains("192.168.2.100"))
|
||||
}
|
||||
|
||||
{
|
||||
r, err := ParseIPRange("192.168.1.*")
|
||||
a.IsNil(err)
|
||||
if r != nil {
|
||||
a.IsTrue(r.Type == IPRangeTypeWildcard)
|
||||
a.IsTrue(r.Contains("192.168.1.100"))
|
||||
a.IsFalse(r.Contains("192.168.2.100"))
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
r, err := ParseIPRange("192.168.*.*")
|
||||
a.IsNil(err)
|
||||
if r != nil {
|
||||
a.IsTrue(r.Type == IPRangeTypeWildcard)
|
||||
a.IsTrue(r.Contains("192.168.1.100"))
|
||||
a.IsTrue(r.Contains("192.168.2.100"))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkIPRangeConfig_Contains(b *testing.B) {
|
||||
r, err := ParseIPRange("192.168.1.*")
|
||||
if err != nil {
|
||||
b.Fatal(err)
|
||||
}
|
||||
for i := 0; i < b.N; i++ {
|
||||
_ = r.Contains("192.168.1.100")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user