aboutsummaryrefslogtreecommitdiff
path: root/weed/wdclient/net2/ip.go
diff options
context:
space:
mode:
Diffstat (limited to 'weed/wdclient/net2/ip.go')
-rw-r--r--weed/wdclient/net2/ip.go177
1 files changed, 0 insertions, 177 deletions
diff --git a/weed/wdclient/net2/ip.go b/weed/wdclient/net2/ip.go
deleted file mode 100644
index ff5e3b24e..000000000
--- a/weed/wdclient/net2/ip.go
+++ /dev/null
@@ -1,177 +0,0 @@
-package net2
-
-import (
- "fmt"
- "log"
- "net"
- "os"
- "strings"
- "sync"
-)
-
-var myHostname string
-var myHostnameOnce sync.Once
-
-// Like os.Hostname but caches first successful result, making it cheap to call it
-// over and over.
-// It will also crash whole process if fetching Hostname fails!
-func MyHostname() string {
- myHostnameOnce.Do(func() {
- var err error
- myHostname, err = os.Hostname()
- if err != nil {
- log.Fatal(err)
- }
- })
- return myHostname
-}
-
-var myIp4 *net.IPAddr
-var myIp4Once sync.Once
-
-// Resolves `MyHostname()` to an Ip4 address. Caches first successful result, making it
-// cheap to call it over and over.
-// It will also crash whole process if resolving the IP fails!
-func MyIp4() *net.IPAddr {
- myIp4Once.Do(func() {
- var err error
- myIp4, err = net.ResolveIPAddr("ip4", MyHostname())
- if err != nil {
- log.Fatal(err)
- }
- })
- return myIp4
-}
-
-var myIp6 *net.IPAddr
-var myIp6Once sync.Once
-
-// Resolves `MyHostname()` to an Ip6 address. Caches first successful result, making it
-// cheap to call it over and over.
-// It will also crash whole process if resolving the IP fails!
-func MyIp6() *net.IPAddr {
- myIp6Once.Do(func() {
- var err error
- myIp6, err = net.ResolveIPAddr("ip6", MyHostname())
- if err != nil {
- log.Fatal(err)
- }
- })
- return myIp6
-}
-
-// This returns the list of local ip addresses which other hosts can connect
-// to (NOTE: Loopback ip is ignored).
-// Also resolves Hostname to an address and adds it to the list too, so
-// IPs from /etc/hosts can work too.
-func GetLocalIPs() ([]*net.IP, error) {
- hostname, err := os.Hostname()
- if err != nil {
- return nil, fmt.Errorf("Failed to lookup hostname: %v", err)
- }
- // Resolves IP Address from Hostname, this way overrides in /etc/hosts
- // can work too for IP resolution.
- ipInfo, err := net.ResolveIPAddr("ip4", hostname)
- if err != nil {
- return nil, fmt.Errorf("Failed to resolve ip: %v", err)
- }
- ips := []*net.IP{&ipInfo.IP}
-
- // TODO(zviad): Is rest of the code really necessary?
- addrs, err := net.InterfaceAddrs()
- if err != nil {
- return nil, fmt.Errorf("Failed to get interface addresses: %v", err)
- }
- for _, addr := range addrs {
- ipnet, ok := addr.(*net.IPNet)
- if !ok {
- continue
- }
-
- if ipnet.IP.IsLoopback() {
- continue
- }
-
- ips = append(ips, &ipnet.IP)
- }
- return ips, nil
-}
-
-var localhostIPNets []*net.IPNet
-
-func init() {
- for _, mask := range []string{"127.0.0.1/8", "::1/128"} {
- _, ipnet, err := net.ParseCIDR(mask)
- if err != nil {
- panic(err)
- }
- localhostIPNets = append(localhostIPNets, ipnet)
- }
-}
-
-func IsLocalhostIp(ipStr string) bool {
- ip := net.ParseIP(ipStr)
- if ip == nil {
- return false
- }
- for _, ipnet := range localhostIPNets {
- if ipnet.Contains(ip) {
- return true
- }
- }
- return false
-}
-
-// Given a host string, return true if the host is an ip (v4/v6) localhost.
-func IsLocalhost(host string) bool {
- return IsLocalhostIp(host) ||
- host == "localhost" ||
- host == "ip6-localhost" ||
- host == "ipv6-localhost"
-}
-
-// Resolves hostnames in addresses to actual IP4 addresses. Skips all invalid addresses
-// and all addresses that can't be resolved.
-// `addrs` are assumed to be of form: ["<hostname>:<port>", ...]
-// Returns an error in addition to resolved addresses if not all resolutions succeed.
-func ResolveIP4s(addrs []string) ([]string, error) {
- resolvedAddrs := make([]string, 0, len(addrs))
- var lastErr error
-
- for _, server := range addrs {
- hostPort := strings.Split(server, ":")
- if len(hostPort) != 2 {
- lastErr = fmt.Errorf("Skipping invalid address: %s", server)
- continue
- }
-
- ip, err := net.ResolveIPAddr("ip4", hostPort[0])
- if err != nil {
- lastErr = err
- continue
- }
- resolvedAddrs = append(resolvedAddrs, ip.IP.String()+":"+hostPort[1])
- }
- return resolvedAddrs, lastErr
-}
-
-func LookupValidAddrs() (map[string]bool, error) {
- hostName, err := os.Hostname()
- if err != nil {
- return nil, err
- }
- addrs, err := net.LookupHost(hostName)
- if err != nil {
- return nil, err
- }
- validAddrs := make(map[string]bool)
- validAddrs[hostName] = true
- for _, addr := range addrs {
- validAddrs[addr] = true
- }
- // Special case localhost/127.0.0.1 so that this works on devVMs. It should
- // have no affect in production.
- validAddrs["127.0.0.1"] = true
- validAddrs["localhost"] = true
- return validAddrs, nil
-}