mirror of
https://github.com/TeaOSLab/EdgeNode.git
synced 2026-04-24 12:35:28 +08:00
支持规则集忽略局域网IP
This commit is contained in:
@@ -24,3 +24,33 @@ func IP2Long(ip string) uint64 {
|
||||
}
|
||||
return uint64(binary.BigEndian.Uint32(s.To4()))
|
||||
}
|
||||
|
||||
// IsLocalIP 判断是否为本地IP
|
||||
func IsLocalIP(ipString string) bool {
|
||||
var ip = net.ParseIP(ipString)
|
||||
if ip == nil {
|
||||
return false
|
||||
}
|
||||
|
||||
// IPv6
|
||||
if strings.Contains(ipString, ":") {
|
||||
if ip.String() == "::1" {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// IPv4
|
||||
ip = ip.To4()
|
||||
if ip == nil {
|
||||
return false
|
||||
}
|
||||
if ip[0] == 127 ||
|
||||
ip[0] == 10 ||
|
||||
(ip[0] == 172 && ip[1]&0xf0 == 16) ||
|
||||
(ip[0] == 192 && ip[1] == 168) {
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package utils
|
||||
|
||||
import "testing"
|
||||
import (
|
||||
"github.com/iwind/TeaGo/assert"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestIP2Long(t *testing.T) {
|
||||
t.Log(IP2Long("0.0.0.0"))
|
||||
@@ -10,3 +13,16 @@ func TestIP2Long(t *testing.T) {
|
||||
t.Log(IP2Long("2001:db8:0:1::102"))
|
||||
t.Log(IP2Long("::1"))
|
||||
}
|
||||
|
||||
func TestIsLocalIP(t *testing.T) {
|
||||
var a = assert.NewAssertion(t)
|
||||
a.IsFalse(IsLocalIP("a"))
|
||||
a.IsFalse(IsLocalIP("1.2.3"))
|
||||
a.IsTrue(IsLocalIP("127.0.0.1"))
|
||||
a.IsTrue(IsLocalIP("192.168.0.1"))
|
||||
a.IsTrue(IsLocalIP("10.0.0.1"))
|
||||
a.IsTrue(IsLocalIP("172.16.0.1"))
|
||||
a.IsTrue(IsLocalIP("::1"))
|
||||
a.IsFalse(IsLocalIP("::1:2:3"))
|
||||
a.IsFalse(IsLocalIP("8.8.8.8"))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user