portainer/api/internal/edge/url.go

33 lines
680 B
Go

package edge
import (
"net"
"net/url"
"github.com/pkg/errors"
)
// ParseHostForEdge returns the hostname of the given URL, will fail if host is localhost
func ParseHostForEdge(portainerURL string) (string, error) {
parsedURL, err := url.Parse(portainerURL)
if err != nil {
return "", errors.Wrap(err, "Unable to parse Portainer URL")
}
portainerHost, _, err := net.SplitHostPort(parsedURL.Host)
if err != nil {
portainerHost = parsedURL.Host
}
if portainerHost == "" {
return "", errors.New("hostname cannot be empty")
}
if portainerHost == "localhost" {
return "", errors.New("cannot use localhost as environment URL")
}
return portainerHost, nil
}