1234567891011121314151617181920212223242526272829303132333435 |
- package utils
- import (
- "net"
- log "github.com/sirupsen/logrus"
- )
- // IsHostnameInternal will attempt to determine if the hostname is internal to
- // this server's network or is the loopback address.
- func IsHostnameInternal(hostname string) bool {
- // If this is already an IP address don't try to resolve it
- if ip := net.ParseIP(hostname); ip != nil {
- return isIPAddressInternal(ip)
- }
- ips, err := net.LookupIP(hostname)
- if err != nil {
- // Default to false if we can't resolve the hostname.
- log.Debugln("Unable to resolve hostname:", hostname)
- return false
- }
- for _, ip := range ips {
- if isIPAddressInternal(ip) {
- return true
- }
- }
- return false
- }
- func isIPAddressInternal(ip net.IP) bool {
- return ip.IsLoopback() || ip.IsPrivate()
- }
|