aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Lebedev <9497591+kmlebedev@users.noreply.github.com>2023-04-11 19:36:22 +0500
committerGitHub <noreply@github.com>2023-04-11 07:36:22 -0700
commit130bc3e66839cd514a60f0f58600c7432ebf1564 (patch)
treed26e5b4dbf57140c4b494519ab5b9b238c068779
parentd1ce89950ea2784a6d4a01e6a0132f44a2e4ee38 (diff)
downloadseaweedfs-130bc3e66839cd514a60f0f58600c7432ebf1564.tar.xz
seaweedfs-130bc3e66839cd514a60f0f58600c7432ebf1564.zip
s3 fix get fake dir object key (#4390)
-rw-r--r--weed/s3api/s3_constants/s3_actions.go1
-rw-r--r--weed/s3api/s3api_object_handlers.go2
-rw-r--r--weed/server/filer_server_handlers_read.go7
3 files changed, 5 insertions, 5 deletions
diff --git a/weed/s3api/s3_constants/s3_actions.go b/weed/s3api/s3_constants/s3_actions.go
index 721c57f71..17087ae03 100644
--- a/weed/s3api/s3_constants/s3_actions.go
+++ b/weed/s3api/s3_constants/s3_actions.go
@@ -9,4 +9,5 @@ const (
SeaweedStorageDestinationHeader = "x-seaweedfs-destination"
MultipartUploadsFolder = ".uploads"
+ FolderMimeType = "httpd/unix-directory"
)
diff --git a/weed/s3api/s3api_object_handlers.go b/weed/s3api/s3api_object_handlers.go
index d63a68e4b..05e716015 100644
--- a/weed/s3api/s3api_object_handlers.go
+++ b/weed/s3api/s3api_object_handlers.go
@@ -99,7 +99,7 @@ func (s3a *S3ApiServer) PutObjectHandler(w http.ResponseWriter, r *http.Request)
s3a.option.BucketsPath, bucket+strings.TrimSuffix(object, "/"),
func(entry *filer_pb.Entry) {
if objectContentType == "" {
- objectContentType = "httpd/unix-directory"
+ objectContentType = s3_constants.FolderMimeType
}
entry.Attributes.Mime = objectContentType
}); err != nil {
diff --git a/weed/server/filer_server_handlers_read.go b/weed/server/filer_server_handlers_read.go
index 99ac77498..c023dbe88 100644
--- a/weed/server/filer_server_handlers_read.go
+++ b/weed/server/filer_server_handlers_read.go
@@ -15,8 +15,6 @@ import (
"strings"
"time"
- "golang.org/x/exp/slices"
-
"github.com/seaweedfs/seaweedfs/weed/filer"
"github.com/seaweedfs/seaweedfs/weed/glog"
"github.com/seaweedfs/seaweedfs/weed/images"
@@ -120,7 +118,8 @@ func (fs *FilerServer) GetOrHeadHandler(w http.ResponseWriter, r *http.Request)
writeJsonQuiet(w, r, http.StatusOK, entry)
return
}
- if slices.Contains([]string{"httpd/unix-directory", ""}, entry.Attr.Mime) {
+ if entry.Attr.Mime == "" || (entry.Attr.Mime == s3_constants.FolderMimeType && r.Header.Get(s3_constants.AmzIdentityId) == "") {
+ // return index of directory for non s3 gateway
fs.listDirectoryHandler(w, r)
return
}
@@ -128,7 +127,7 @@ func (fs *FilerServer) GetOrHeadHandler(w http.ResponseWriter, r *http.Request)
w.Header().Set(s3_constants.X_SeaweedFS_Header_Directory_Key, "true")
}
- if isForDirectory {
+ if isForDirectory && entry.Attr.Mime != s3_constants.FolderMimeType {
w.WriteHeader(http.StatusNotFound)
return
}