|
|
|
@ -135,3 +135,31 @@ func TestIPRule(t *testing.T) {
|
|
|
|
|
Destination: v2net.TCPDestination(v2net.IPAddress([]byte{192, 0, 0, 1}), 80),
|
|
|
|
|
})).IsTrue()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestSourceIPRule(t *testing.T) {
|
|
|
|
|
assert := assert.On(t)
|
|
|
|
|
|
|
|
|
|
rule := ParseRule([]byte(`{
|
|
|
|
|
"type": "field",
|
|
|
|
|
"source": [
|
|
|
|
|
"10.0.0.0/8",
|
|
|
|
|
"192.0.0.0/24"
|
|
|
|
|
],
|
|
|
|
|
"outboundTag": "direct"
|
|
|
|
|
}`))
|
|
|
|
|
assert.Pointer(rule).IsNotNil()
|
|
|
|
|
cond, err := rule.BuildCondition()
|
|
|
|
|
assert.Error(err).IsNil()
|
|
|
|
|
assert.Bool(cond.Apply(&proxy.SessionInfo{
|
|
|
|
|
Source: v2net.TCPDestination(v2net.DomainAddress("www.ooxx.com"), 80),
|
|
|
|
|
})).IsFalse()
|
|
|
|
|
assert.Bool(cond.Apply(&proxy.SessionInfo{
|
|
|
|
|
Source: v2net.TCPDestination(v2net.IPAddress([]byte{10, 0, 0, 1}), 80),
|
|
|
|
|
})).IsTrue()
|
|
|
|
|
assert.Bool(cond.Apply(&proxy.SessionInfo{
|
|
|
|
|
Source: v2net.TCPDestination(v2net.IPAddress([]byte{127, 0, 0, 1}), 80),
|
|
|
|
|
})).IsFalse()
|
|
|
|
|
assert.Bool(cond.Apply(&proxy.SessionInfo{
|
|
|
|
|
Source: v2net.TCPDestination(v2net.IPAddress([]byte{192, 0, 0, 1}), 80),
|
|
|
|
|
})).IsTrue()
|
|
|
|
|
}
|
|
|
|
|