use IsLoopback (#19477)

Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
This commit is contained in:
6543 2022-04-25 07:55:12 +02:00 committed by GitHub
parent 5e4134b117
commit 2ec2baf248
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -13,32 +13,10 @@ import (
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
) )
var loopbackIPBlocks []*net.IPNet
var externalTrackerRegex = regexp.MustCompile(`({?)(?:user|repo|index)+?(}?)`) var externalTrackerRegex = regexp.MustCompile(`({?)(?:user|repo|index)+?(}?)`)
func init() {
for _, cidr := range []string{
"127.0.0.0/8", // IPv4 loopback
"::1/128", // IPv6 loopback
} {
if _, block, err := net.ParseCIDR(cidr); err == nil {
loopbackIPBlocks = append(loopbackIPBlocks, block)
}
}
}
func isLoopbackIP(ip string) bool { func isLoopbackIP(ip string) bool {
pip := net.ParseIP(ip) return net.ParseIP(ip).IsLoopback()
if pip == nil {
return false
}
for _, block := range loopbackIPBlocks {
if block.Contains(pip) {
return true
}
}
return false
} }
// IsValidURL checks if URL is valid // IsValidURL checks if URL is valid