Context.GetDomain: use net.SplitHostPort better

Former-commit-id: e0a13062f9c4d37e48a82367d23bc16be8f1d1ce
This commit is contained in:
Gerasimos (Makis) Maropoulos 2020-05-30 20:32:06 +03:00
parent c32dd0d95c
commit cbe336a583

View File

@ -1942,21 +1942,23 @@ func (ctx *context) GetHeader(name string) string {
// GetDomain resolves and returns the server's domain.
func (ctx *context) GetDomain() string {
host := ctx.Host()
if portIdx := strings.IndexByte(host, ':'); portIdx > 0 {
host = host[0:portIdx]
}
hostport := ctx.Host()
if host, _, err := net.SplitHostPort(hostport); err == nil {
// has port.
switch host {
case "127.0.0.1", "0.0.0.0", "::1", "[::1]", "0:0:0:0:0:0:0", "0:0:0:0:0:0:1":
// loopback.
return "localhost"
default:
if domain, err := publicsuffix.EffectiveTLDPlusOne(host); err == nil {
host = domain
}
switch host {
case "127.0.0.1", "0.0.0.0", "::1", "[::1]", "0:0:0:0:0:0:0", "0:0:0:0:0:0:1":
return "localhost"
default:
if domain, err := publicsuffix.EffectiveTLDPlusOne(host); err == nil {
host = domain
return host
}
return host
}
return hostport
}
// IsAjax returns true if this request is an 'ajax request'( XMLHttpRequest)