Hide directory browsing on the static content (#85)

* Hide directory browsing on the static content

* update changelog
This commit is contained in:
Henri Vasserman 2025-03-28 19:52:14 +02:00 committed by GitHub
parent 57c3e9f1b2
commit 38d62eeb56
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 14 additions and 1 deletions

View File

@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
- Hide the directory listings for Anubis' internal static content
- Changed `--debug-x-real-ip-default` to `--use-remote-address`, getting the IP address from the request's socket address instead.
- DroneBL lookups have been disabled by default

View File

@ -4,6 +4,7 @@ import (
"log/slog"
"net"
"net/http"
"strings"
"github.com/TecharoHQ/anubis"
"github.com/sebest/xff"
@ -62,3 +63,14 @@ func XForwardedForToXRealIP(next http.Handler) http.Handler {
next.ServeHTTP(w, r)
})
}
// Do not allow browsing directory listings in paths that end with /
func NoBrowsing(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if strings.HasSuffix(r.URL.Path, "/") {
http.NotFound(w, r)
return
}
next.ServeHTTP(w, r)
})
}

View File

@ -119,7 +119,7 @@ func New(opts Options) (*Server, error) {
mux := http.NewServeMux()
xess.Mount(mux)
mux.Handle(anubis.StaticPath, internal.UnchangingCache(http.StripPrefix(anubis.StaticPath, http.FileServerFS(web.Static))))
mux.Handle(anubis.StaticPath, internal.UnchangingCache(internal.NoBrowsing(http.StripPrefix(anubis.StaticPath, http.FileServerFS(web.Static)))))
if opts.ServeRobotsTXT {
mux.HandleFunc("/robots.txt", func(w http.ResponseWriter, r *http.Request) {