package middleware import ( "net/http" "forge.cadoles.com/Cadoles/go-proxy" "forge.cadoles.com/Cadoles/go-proxy/wildcard" ) func FilterHosts(allowedHostPatterns ...string) proxy.Middleware { return func(h http.Handler) http.Handler { fn := func(w http.ResponseWriter, r *http.Request) { if matches := wildcard.MatchAny(r.Host, allowedHostPatterns...); !matches { http.Error(w, http.StatusText(http.StatusForbidden), http.StatusForbidden) return } h.ServeHTTP(w, r) } return http.HandlerFunc(fn) } } func WithAllowedHosts(allowedHostPatterns ...string) proxy.OptionFunc { return func(o *proxy.Options) { o.Middlewares = append(o.Middlewares, FilterHosts(allowedHostPatterns...)) } }