outposts/proxy: use disableIndex for static files

Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
This commit is contained in:
Jens Langhammer 2021-11-19 10:50:56 +01:00
parent 2ac9f5426d
commit d1bd8f333b
3 changed files with 6 additions and 5 deletions

View File

@ -31,7 +31,7 @@ func (ps *ProxyServer) HandlePing(rw http.ResponseWriter, r *http.Request) {
func (ps *ProxyServer) HandleStatic(rw http.ResponseWriter, r *http.Request) { func (ps *ProxyServer) HandleStatic(rw http.ResponseWriter, r *http.Request) {
staticFs := http.FileServer(http.FS(staticWeb.StaticDist)) staticFs := http.FileServer(http.FS(staticWeb.StaticDist))
before := time.Now() before := time.Now()
http.StripPrefix("/akprox/static", staticFs).ServeHTTP(rw, r) web.DisableIndex(http.StripPrefix("/akprox/static", staticFs)).ServeHTTP(rw, r)
after := time.Since(before) after := time.Since(before)
metrics.Requests.With(prometheus.Labels{ metrics.Requests.With(prometheus.Labels{
"outpost_name": ps.akAPI.Outpost.Name, "outpost_name": ps.akAPI.Outpost.Name,
@ -54,7 +54,7 @@ func (ps *ProxyServer) Handle(rw http.ResponseWriter, r *http.Request) {
if !ok { if !ok {
// If we only have one handler, host name switching doesn't matter // If we only have one handler, host name switching doesn't matter
if len(ps.apps) == 1 { if len(ps.apps) == 1 {
ps.log.WithField("host", host).Warning("passing to single app mux") ps.log.WithField("host", host).Trace("passing to single app mux")
for k := range ps.apps { for k := range ps.apps {
ps.apps[k].ServeHTTP(rw, r) ps.apps[k].ServeHTTP(rw, r)
return return

View File

@ -5,7 +5,7 @@ import (
"strings" "strings"
) )
func disableIndex(next http.Handler) http.Handler { func DisableIndex(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if strings.HasSuffix(r.URL.Path, "/") { if strings.HasSuffix(r.URL.Path, "/") {
http.NotFound(w, r) http.NotFound(w, r)

View File

@ -7,6 +7,7 @@ import (
"github.com/gorilla/mux" "github.com/gorilla/mux"
"goauthentik.io/internal/config" "goauthentik.io/internal/config"
"goauthentik.io/internal/constants" "goauthentik.io/internal/constants"
"goauthentik.io/internal/utils/web"
staticWeb "goauthentik.io/web" staticWeb "goauthentik.io/web"
staticDocs "goauthentik.io/website" staticDocs "goauthentik.io/website"
) )
@ -14,7 +15,7 @@ import (
func (ws *WebServer) configureStatic() { func (ws *WebServer) configureStatic() {
statRouter := ws.lh.NewRoute().Subrouter() statRouter := ws.lh.NewRoute().Subrouter()
indexLessRouter := statRouter.NewRoute().Subrouter() indexLessRouter := statRouter.NewRoute().Subrouter()
indexLessRouter.Use(disableIndex) indexLessRouter.Use(web.DisableIndex)
// Media files, always local // Media files, always local
fs := http.FileServer(http.Dir(config.G.Paths.Media)) fs := http.FileServer(http.Dir(config.G.Paths.Media))
var distHandler http.Handler var distHandler http.Handler
@ -42,7 +43,7 @@ func (ws *WebServer) configureStatic() {
indexLessRouter.PathPrefix("/if/flow/{flow_slug}/assets").HandlerFunc(func(rw http.ResponseWriter, r *http.Request) { indexLessRouter.PathPrefix("/if/flow/{flow_slug}/assets").HandlerFunc(func(rw http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r) vars := mux.Vars(r)
disableIndex(http.StripPrefix(fmt.Sprintf("/if/flow/%s", vars["flow_slug"]), distFs)).ServeHTTP(rw, r) web.DisableIndex(http.StripPrefix(fmt.Sprintf("/if/flow/%s", vars["flow_slug"]), distFs)).ServeHTTP(rw, r)
}) })
indexLessRouter.PathPrefix("/if/admin/assets").Handler(http.StripPrefix("/if/admin", distFs)) indexLessRouter.PathPrefix("/if/admin/assets").Handler(http.StripPrefix("/if/admin", distFs))
indexLessRouter.PathPrefix("/if/user/assets").Handler(http.StripPrefix("/if/user", distFs)) indexLessRouter.PathPrefix("/if/user/assets").Handler(http.StripPrefix("/if/user", distFs))