move IsHostnameLocal to common/util

This commit is contained in:
Neel Chauhan 2024-10-17 19:15:02 -04:00
parent 6fef2caaa8
commit 990d165937
2 changed files with 21 additions and 20 deletions

View file

@ -8,6 +8,7 @@ import (
"net/http" "net/http"
"slices" "slices"
"sort" "sort"
"strings"
"github.com/pion/ice/v2" "github.com/pion/ice/v2"
"github.com/pion/sdp/v3" "github.com/pion/sdp/v3"
@ -165,3 +166,22 @@ func GetCandidateAddrs(sdpStr string) []net.IP {
} }
return sortedIpAddr return sortedIpAddr
} }
// Checks whether the hostname is local
func IsHostnameLocal(hostname string) bool {
// Per https://en.wikipedia.org/wiki/Special-use_domain_name
tlds := []string{
".internal",
".invalid",
".local",
".localhost",
".onion",
".test",
}
for _, tld := range tlds {
if strings.HasSuffix(hostname, tld) {
return true
}
}
return hostname == "localhost"
}

View file

@ -172,25 +172,6 @@ func isRemoteAddress(ip net.IP) bool {
return !(util.IsLocal(ip) || ip.IsUnspecified() || ip.IsLoopback()) return !(util.IsLocal(ip) || ip.IsUnspecified() || ip.IsLoopback())
} }
// Checks whether the hostname is local
func isHostnameLocal(hostname string) bool {
// Per https://en.wikipedia.org/wiki/Special-use_domain_name
tlds := []string{
".internal",
".invalid",
".local",
".localhost",
".onion",
".test",
}
for _, tld := range tlds {
if strings.HasSuffix(hostname, tld) {
return true
}
}
return hostname == "localhost"
}
func genSessionID() string { func genSessionID() string {
buf := make([]byte, sessionIDLength) buf := make([]byte, sessionIDLength)
_, err := rand.Read(buf) _, err := rand.Read(buf)
@ -690,7 +671,7 @@ func checkIsRelayURLAcceptable(
} }
if !allowPrivateIPs { if !allowPrivateIPs {
hostname := parsedRelayURL.Hostname() hostname := parsedRelayURL.Hostname()
if isHostnameLocal(hostname) { if util.IsHostnameLocal(hostname) {
return fmt.Errorf("rejected Relay URL: private hostnames are not allowed") return fmt.Errorf("rejected Relay URL: private hostnames are not allowed")
} }
ipArray, err := net.LookupIP(hostname) ipArray, err := net.LookupIP(hostname)