From d35e41fa9f93023c23ce2d2569c3cf7db29b379c Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Mon, 16 May 2022 00:56:52 +0200 Subject: [PATCH] modernize ForbiddenMimeTypes --- server/handler.go | 8 +++++--- server/upstream/helper.go | 5 ++++- server/upstream/upstream.go | 6 +----- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/server/handler.go b/server/handler.go index 2fb28a0..8b2cf2e 100644 --- a/server/handler.go +++ b/server/handler.go @@ -76,8 +76,7 @@ func Handler(mainDomainSuffix, rawDomain []byte, // Prepare request information to Gitea var targetOwner, targetRepo, targetBranch, targetPath string targetOptions := &upstream.Options{ - ForbiddenMimeTypes: map[string]struct{}{}, - TryIndexPages: true, + TryIndexPages: true, } // tryBranch checks if a branch exists and populates the target variables. If canonicalLink is non-empty, it will @@ -119,7 +118,10 @@ func Handler(mainDomainSuffix, rawDomain []byte, log.Debug().Msg("raw domain") targetOptions.TryIndexPages = false - targetOptions.ForbiddenMimeTypes["text/html"] = struct{}{} + if targetOptions.ForbiddenMimeTypes == nil { + targetOptions.ForbiddenMimeTypes = make(map[string]bool) + } + targetOptions.ForbiddenMimeTypes["text/html"] = true targetOptions.DefaultMimeType = "text/plain; charset=utf-8" pathElements := strings.Split(string(bytes.Trim(ctx.Request.URI().Path(), "/")), "/") diff --git a/server/upstream/helper.go b/server/upstream/helper.go index 446483f..115c224 100644 --- a/server/upstream/helper.go +++ b/server/upstream/helper.go @@ -48,9 +48,12 @@ func GetBranchTimestamp(giteaClient *gitea.Client, owner, repo, branch string, b } func (o *Options) getMimeTypeByExtension() string { + if o.ForbiddenMimeTypes == nil { + o.ForbiddenMimeTypes = make(map[string]bool) + } mimeType := mime.TypeByExtension(path.Ext(o.TargetPath)) mimeTypeSplit := strings.SplitN(mimeType, ";", 2) - if _, ok := o.ForbiddenMimeTypes[mimeTypeSplit[0]]; ok || mimeType == "" { + if forbidden := o.ForbiddenMimeTypes[mimeTypeSplit[0]]; forbidden || mimeType == "" { if o.DefaultMimeType != "" { mimeType = o.DefaultMimeType } else { diff --git a/server/upstream/upstream.go b/server/upstream/upstream.go index d184c2c..fe91871 100644 --- a/server/upstream/upstream.go +++ b/server/upstream/upstream.go @@ -28,7 +28,7 @@ type Options struct { TargetPath, DefaultMimeType string - ForbiddenMimeTypes map[string]struct{} + ForbiddenMimeTypes map[string]bool TryIndexPages bool BranchTimestamp time.Time // internal @@ -40,10 +40,6 @@ type Options struct { func (o *Options) Upstream(ctx *fasthttp.RequestCtx, giteaClient *gitea.Client, branchTimestampCache, fileResponseCache cache.SetGetKey) (final bool) { log := log.With().Strs("upstream", []string{o.TargetOwner, o.TargetRepo, o.TargetBranch, o.TargetPath}).Logger() - if o.ForbiddenMimeTypes == nil { - o.ForbiddenMimeTypes = map[string]struct{}{} - } - // Check if the branch exists and when it was modified if o.BranchTimestamp.IsZero() { branch := GetBranchTimestamp(giteaClient, o.TargetOwner, o.TargetRepo, o.TargetBranch, branchTimestampCache)