code: func publicIP() (net.IP, error) {
  	resp, err := http.Get(publicEcho)
  	if err != nil {
  		return nil, err
  	}
  	defer resp.Body.Close()
  
  	// The ip address is 16 chars long, we read more
  	// to account for excessive whitespace.
  	p, err := ioutil.ReadAll(io.LimitReader(resp.Body, 24))
  	if err != nil {
  		return nil, err
  	}
  
  	n := net.ParseIP(string(bytes.TrimSpace(p)))
  	if n == nil {
  		return nil, fmt.Errorf("cannot parse ip %s", p)
  	}
  
  	return n, nil
  }
docs: // publicIP returns an IP that is supposed to be Public.