diff options
author | silverwind <me@silverwind.io> | 2020-04-18 23:01:06 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-18 22:01:06 +0100 |
commit | 5180deb8199b851384c60fac5b78aac3c9b50a67 (patch) | |
tree | cf8b1abb471d9daf4798efb13bb637b83e72eccf /modules | |
parent | 6034f8bcaaa5348fee775d2307ff03162130a088 (diff) | |
download | gitea-5180deb8199b851384c60fac5b78aac3c9b50a67.tar.gz gitea-5180deb8199b851384c60fac5b78aac3c9b50a67.zip |
Send 404 immediately for known public requests (#11117)
Instead of further handling requests to public which causes issues like #11088, immediately terminate requests to directories js, css, fomantic if no file is found which is checked against a hardcoded list. Maybe there is a way to retrieve the top-level entries below public in a dynamic fashion.
I also added fomantic to the reserved usernames and sorted the list.
Fixes: #11088
Diffstat (limited to 'modules')
-rw-r--r-- | modules/public/public.go | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/modules/public/public.go b/modules/public/public.go index 2617d31aea..fb8d9c1955 100644 --- a/modules/public/public.go +++ b/modules/public/public.go @@ -30,6 +30,15 @@ type Options struct { Prefix string } +// List of known entries inside the `public` directory +var knownEntries = []string{ + "css", + "fomantic", + "img", + "js", + "vendor", +} + // Custom implements the macaron static handler for serving custom assets. func Custom(opts *Options) macaron.Handler { return opts.staticHandler(path.Join(setting.CustomPath, "public")) @@ -99,6 +108,19 @@ func (opts *Options) handle(ctx *macaron.Context, log *log.Logger, opt *Options) f, err := opt.FileSystem.Open(file) if err != nil { + // 404 requests to any known entries in `public` + if path.Base(opts.Directory) == "public" { + parts := strings.Split(file, "/") + if len(parts) < 2 { + return false + } + for _, entry := range knownEntries { + if entry == parts[1] { + ctx.Resp.WriteHeader(404) + return true + } + } + } return false } defer f.Close() |