Commit 5c143af7 authored by Jeffrey Morgan's avatar Jeffrey Morgan
Browse files

add additional allowed hosts

parent 6c0af259
...@@ -915,9 +915,9 @@ func allowedHost(host string) bool { ...@@ -915,9 +915,9 @@ func allowedHost(host string) bool {
} }
var tlds = []string{ var tlds = []string{
".localhost", "localhost",
".local", "local",
".internal", "internal",
} }
for _, tld := range tlds { for _, tld := range tlds {
...@@ -929,6 +929,27 @@ func allowedHost(host string) bool { ...@@ -929,6 +929,27 @@ func allowedHost(host string) bool {
return false return false
} }
func ips() []string {
var ips []string
if interfaces, err := net.Interfaces(); err == nil {
for _, iface := range interfaces {
addrs, err := iface.Addrs()
if err != nil {
continue
}
for _, a := range addrs {
if ip, _, err := net.ParseCIDR(a.String()); err == nil {
ips = append(ips, ip.String())
}
}
}
}
return ips
}
func allowedHostsMiddleware(addr net.Addr) gin.HandlerFunc { func allowedHostsMiddleware(addr net.Addr) gin.HandlerFunc {
return func(c *gin.Context) { return func(c *gin.Context) {
if addr == nil { if addr == nil {
...@@ -936,24 +957,22 @@ func allowedHostsMiddleware(addr net.Addr) gin.HandlerFunc { ...@@ -936,24 +957,22 @@ func allowedHostsMiddleware(addr net.Addr) gin.HandlerFunc {
return return
} }
if !netip.MustParseAddrPort(addr.String()).Addr().IsLoopback() { addr, err := netip.ParseAddrPort(addr.String())
if err == nil && !addr.Addr().IsLoopback() {
c.Next() c.Next()
return return
} }
if addrPort, _ := netip.ParseAddrPort(c.Request.Host); addrPort.Addr().IsLoopback() { host, _, err := net.SplitHostPort(c.Request.Host)
c.Next() if err != nil {
return host = c.Request.Host
} }
if addr, _ := netip.ParseAddr(c.Request.Host); addr.IsLoopback() { if addr, err := netip.ParseAddr(host); err == nil {
if addr.IsLoopback() || addr.IsPrivate() || slices.Contains(ips(), host) || addr.String() == "0.0.0.0" {
c.Next() c.Next()
return return
} }
host, _, err := net.SplitHostPort(c.Request.Host)
if err != nil {
host = c.Request.Host
} }
if allowedHost(host) { if allowedHost(host) {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment