mirror of https://github.com/Xhofe/alist
				
				
				
			
		
			
				
	
	
		
			29 lines
		
	
	
		
			488 B
		
	
	
	
		
			Go
		
	
	
			
		
		
	
	
			29 lines
		
	
	
		
			488 B
		
	
	
	
		
			Go
		
	
	
package utils
 | 
						|
 | 
						|
import (
 | 
						|
	"net"
 | 
						|
)
 | 
						|
 | 
						|
func IsLocalIPAddr(ip string) bool {
 | 
						|
	return IsLocalIP(net.ParseIP(ip))
 | 
						|
}
 | 
						|
 | 
						|
func IsLocalIP(ip net.IP) bool {
 | 
						|
	if ip == nil {
 | 
						|
		return false
 | 
						|
	}
 | 
						|
	if ip.IsLoopback() {
 | 
						|
		return true
 | 
						|
	}
 | 
						|
 | 
						|
	ip4 := ip.To4()
 | 
						|
	if ip4 == nil {
 | 
						|
		return false
 | 
						|
	}
 | 
						|
 | 
						|
	return ip4[0] == 10 || // 10.0.0.0/8
 | 
						|
		(ip4[0] == 172 && ip4[1] >= 16 && ip4[1] <= 31) || // 172.16.0.0/12
 | 
						|
		(ip4[0] == 169 && ip4[1] == 254) || // 169.254.0.0/16
 | 
						|
		(ip4[0] == 192 && ip4[1] == 168) // 192.168.0.0/16
 | 
						|
}
 |