summaryrefslogtreecommitdiffstats
path: root/routers/web
diff options
context:
space:
mode:
authorGiteabot <teabot@gitea.io>2023-06-14 02:36:52 -0400
committerGitHub <noreply@github.com>2023-06-14 08:36:52 +0200
commit21cd5c2f3d5c3914096f1ecfb2d2f1d13165caa4 (patch)
tree387e8150a764ef690cbb58a0f23e026b8e985b3b /routers/web
parent22948048b2637495ace3091c0e0a9c6a0d96ec30 (diff)
downloadgitea-21cd5c2f3d5c3914096f1ecfb2d2f1d13165caa4.tar.gz
gitea-21cd5c2f3d5c3914096f1ecfb2d2f1d13165caa4.zip
Fix all possible setting error related storages and added some tests (#23911) (#25244)
Backport #23911 by @lunny Follow up #22405 Fix #20703 This PR rewrites storage configuration read sequences with some breaks and tests. It becomes more strict than before and also fixed some inherit problems. - Move storage's MinioConfig struct into setting, so after the configuration loading, the values will be stored into the struct but not still on some section. - All storages configurations should be stored on one section, configuration items cannot be overrided by multiple sections. The prioioty of configuration is `[attachment]` > `[storage.attachments]` | `[storage.customized]` > `[storage]` > `default` - For extra override configuration items, currently are `SERVE_DIRECT`, `MINIO_BASE_PATH`, `MINIO_BUCKET`, which could be configured in another section. The prioioty of the override configuration is `[attachment]` > `[storage.attachments]` > `default`. - Add more tests for storages configurations. - Update the storage documentations. Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com> Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
Diffstat (limited to 'routers/web')
-rw-r--r--routers/web/base.go4
-rw-r--r--routers/web/repo/attachment.go2
-rw-r--r--routers/web/repo/download.go2
-rw-r--r--routers/web/repo/repo.go2
4 files changed, 5 insertions, 5 deletions
diff --git a/routers/web/base.go b/routers/web/base.go
index 1f6c4fbfc5..e4b7d8ce8d 100644
--- a/routers/web/base.go
+++ b/routers/web/base.go
@@ -19,11 +19,11 @@ import (
"code.gitea.io/gitea/modules/web/routing"
)
-func storageHandler(storageSetting setting.Storage, prefix string, objStore storage.ObjectStorage) func(next http.Handler) http.Handler {
+func storageHandler(storageSetting *setting.Storage, prefix string, objStore storage.ObjectStorage) func(next http.Handler) http.Handler {
prefix = strings.Trim(prefix, "/")
funcInfo := routing.GetFuncInfo(storageHandler, prefix)
return func(next http.Handler) http.Handler {
- if storageSetting.ServeDirect {
+ if storageSetting.MinioConfig.ServeDirect {
return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
if req.Method != "GET" && req.Method != "HEAD" {
next.ServeHTTP(w, req)
diff --git a/routers/web/repo/attachment.go b/routers/web/repo/attachment.go
index dd24248024..af1842ad10 100644
--- a/routers/web/repo/attachment.go
+++ b/routers/web/repo/attachment.go
@@ -126,7 +126,7 @@ func ServeAttachment(ctx *context.Context, uuid string) {
return
}
- if setting.Attachment.ServeDirect {
+ if setting.Attachment.Storage.MinioConfig.ServeDirect {
// If we have a signed url (S3, object storage), redirect to this directly.
u, err := storage.Attachments.URL(attach.RelativePath(), attach.Name)
diff --git a/routers/web/repo/download.go b/routers/web/repo/download.go
index a498180f35..fd67b82ef2 100644
--- a/routers/web/repo/download.go
+++ b/routers/web/repo/download.go
@@ -53,7 +53,7 @@ func ServeBlobOrLFS(ctx *context.Context, blob *git.Blob, lastModified time.Time
return nil
}
- if setting.LFS.ServeDirect {
+ if setting.LFS.Storage.MinioConfig.ServeDirect {
// If we have a signed url (S3, object storage), redirect to this directly.
u, err := storage.LFS.URL(pointer.RelativePath(), blob.Name())
if u != nil && err == nil {
diff --git a/routers/web/repo/repo.go b/routers/web/repo/repo.go
index 8944890f6a..a1e1346b38 100644
--- a/routers/web/repo/repo.go
+++ b/routers/web/repo/repo.go
@@ -427,7 +427,7 @@ func download(ctx *context.Context, archiveName string, archiver *repo_model.Rep
downloadName := ctx.Repo.Repository.Name + "-" + archiveName
rPath := archiver.RelativePath()
- if setting.RepoArchive.ServeDirect {
+ if setting.RepoArchive.Storage.MinioConfig.ServeDirect {
// If we have a signed url (S3, object storage), redirect to this directly.
u, err := storage.RepoArchives.URL(rPath, downloadName)
if u != nil && err == nil {