aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruitao.liu <ruitao.liu@cloudminds.com>2020-11-13 17:13:20 +0800
committerruitao.liu <ruitao.liu@cloudminds.com>2020-11-13 17:13:20 +0800
commita9990a1dc65dfcfe9e08fdbcc698bab7e9dfca90 (patch)
treebeffa7a7db9c6f76a87775a069bcfa69a9091cf4
parente6333da65ad6774d8c945bc29f686386e0515385 (diff)
downloadseaweedfs-a9990a1dc65dfcfe9e08fdbcc698bab7e9dfca90.tar.xz
seaweedfs-a9990a1dc65dfcfe9e08fdbcc698bab7e9dfca90.zip
adjust check bucket if exist or has access.
-rw-r--r--weed/s3api/s3api_bucket_handlers.go32
1 files changed, 16 insertions, 16 deletions
diff --git a/weed/s3api/s3api_bucket_handlers.go b/weed/s3api/s3api_bucket_handlers.go
index fe33cfe78..00b7382cc 100644
--- a/weed/s3api/s3api_bucket_handlers.go
+++ b/weed/s3api/s3api_bucket_handlers.go
@@ -118,18 +118,12 @@ func (s3a *S3ApiServer) DeleteBucketHandler(w http.ResponseWriter, r *http.Reque
bucket, _ := getBucketAndObject(r)
- entry, err := s3a.getEntry(s3a.option.BucketsPath, bucket)
- if entry == nil || err == filer_pb.ErrNotFound {
- writeErrorResponse(w, s3err.ErrNoSuchBucket, r.URL)
+ if err := s3a.checkBucket(r, bucket); err != s3err.ErrNone {
+ writeErrorResponse(w, err, r.URL)
return
}
- if !s3a.hasAccess(r, entry) {
- writeErrorResponse(w, s3err.ErrAccessDenied, r.URL)
- return
- }
-
- err = s3a.WithFilerClient(func(client filer_pb.SeaweedFilerClient) error {
+ err := s3a.WithFilerClient(func(client filer_pb.SeaweedFilerClient) error {
// delete collection
deleteCollectionRequest := &filer_pb.DeleteCollectionRequest{
@@ -158,18 +152,24 @@ func (s3a *S3ApiServer) HeadBucketHandler(w http.ResponseWriter, r *http.Request
bucket, _ := getBucketAndObject(r)
+ if err := s3a.checkBucket(r, bucket); err != s3err.ErrNone {
+ writeErrorResponse(w, err, r.URL)
+ return
+ }
+
+ writeSuccessResponseEmpty(w)
+}
+
+func (s3a *S3ApiServer) checkBucket(r *http.Request, bucket string) s3err.ErrorCode {
entry, err := s3a.getEntry(s3a.option.BucketsPath, bucket)
if entry == nil || err == filer_pb.ErrNotFound {
- writeErrorResponse(w, s3err.ErrNoSuchBucket, r.URL)
- return
+ return s3err.ErrNoSuchBucket
}
if !s3a.hasAccess(r, entry) {
- writeErrorResponse(w, s3err.ErrAccessDenied, r.URL)
- return
+ return s3err.ErrAccessDenied
}
-
- writeSuccessResponseEmpty(w)
+ return s3err.ErrNone
}
func (s3a *S3ApiServer) hasAccess(r *http.Request, entry *filer_pb.Entry) bool {
@@ -188,4 +188,4 @@ func (s3a *S3ApiServer) hasAccess(r *http.Request, entry *filer_pb.Entry) bool {
}
}
return true
-} \ No newline at end of file
+}