创建 CheckBelongPrivate.go

master
wangsiyuan 2023-06-16 16:07:00 +08:00
parent d1f979a116
commit cb2fdf2ffd
1 changed files with 50 additions and 0 deletions

View File

@ -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
}