chore: sync local updates

This commit is contained in:
2026-05-16 19:03:32 +08:00
parent 360a5f15b9
commit aff88ba97d
47 changed files with 3651 additions and 12175 deletions

View File

@@ -0,0 +1,37 @@
package utils
import (
"net"
"net/url"
)
// IsIntranetURL 判断监控地址的主机是否为内网 / 本机 IP直填 IP 的虚拟局域网站点)。
// 仅识别主机名为 IPv4/IPv6 字面量的情况;公网域名不在此列。
func IsIntranetURL(raw string) bool {
u, err := url.Parse(raw)
if err != nil {
return false
}
host := u.Hostname()
if host == "" {
return false
}
ip := net.ParseIP(host)
if ip == nil {
return false
}
return isIntranetIP(ip)
}
func isIntranetIP(ip net.IP) bool {
if ip.IsLoopback() || ip.IsPrivate() || ip.IsLinkLocalUnicast() {
return true
}
// Go 1.17+ IsPrivate 已含 RFC1918、CGNAT 100.64/10、ULA 等;再兜底部分实现差异
if v4 := ip.To4(); v4 != nil {
if v4[0] == 100 && v4[1] >= 64 && v4[1] <= 127 {
return true
}
}
return false
}