创建 CheckBelongPrivate.go
parent
d1f979a116
commit
cb2fdf2ffd
|
|
@ -0,0 +1,50 @@
|
||||||
|
package modules
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net"
|
||||||
|
)
|
||||||
|
|
||||||
|
type IPInformation struct {
|
||||||
|
IP string
|
||||||
|
IsPrivate bool
|
||||||
|
PrivateCIDR string
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetIPInformation(ip string) IPInformation {
|
||||||
|
ipInfo := IPInformation{
|
||||||
|
IP: ip,
|
||||||
|
IsPrivate: false,
|
||||||
|
PrivateCIDR: "",
|
||||||
|
}
|
||||||
|
|
||||||
|
cidrs := []*net.IPNet{
|
||||||
|
parseCIDR("10.0.0.0/8"),
|
||||||
|
parseCIDR("172.16.0.0/12"),
|
||||||
|
parseCIDR("192.168.0.0/16"),
|
||||||
|
}
|
||||||
|
|
||||||
|
ipAddr := net.ParseIP(ip)
|
||||||
|
if ipAddr == nil {
|
||||||
|
fmt.Println("无效的IP地址")
|
||||||
|
return ipInfo
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, cidr := range cidrs {
|
||||||
|
if cidr.Contains(ipAddr) {
|
||||||
|
ipInfo.IsPrivate = true
|
||||||
|
ipInfo.PrivateCIDR = cidr.String()
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ipInfo
|
||||||
|
}
|
||||||
|
|
||||||
|
func parseCIDR(cidr string) *net.IPNet {
|
||||||
|
_, ipNet, err := net.ParseCIDR(cidr)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
return ipNet
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue