|
|
|
@ -13,32 +13,10 @@ import (
|
|
|
|
|
"code.gitea.io/gitea/modules/setting"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
var loopbackIPBlocks []*net.IPNet
|
|
|
|
|
|
|
|
|
|
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 {
|
|
|
|
|
pip := net.ParseIP(ip)
|
|
|
|
|
if pip == nil {
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
for _, block := range loopbackIPBlocks {
|
|
|
|
|
if block.Contains(pip) {
|
|
|
|
|
return true
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return false
|
|
|
|
|
return net.ParseIP(ip).IsLoopback()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// IsValidURL checks if URL is valid
|
|
|
|
|