Browse Source

set bucket ownership if not empty

Signed-off-by: changlin.shi <changlin.shi@ly.com>
pull/4090/head
changlin.shi 2 years ago
parent
commit
5d582ab848
  1. 2
      weed/s3api/s3api_acp.go
  2. 5
      weed/s3api/s3api_bucket_handlers.go

2
weed/s3api/s3api_acp.go

@ -33,7 +33,7 @@ func (s3a *S3ApiServer) checkAccessByOwnership(r *http.Request, bucket string) s
func (s3a *S3ApiServer) ExtractBucketAcp(r *http.Request, objectOwnership string) (owner string, grants []*s3.Grant, errCode s3err.ErrorCode) { func (s3a *S3ApiServer) ExtractBucketAcp(r *http.Request, objectOwnership string) (owner string, grants []*s3.Grant, errCode s3err.ErrorCode) {
accountId := s3acl.GetAccountId(r) accountId := s3acl.GetAccountId(r)
if objectOwnership == s3_constants.OwnershipBucketOwnerEnforced {
if objectOwnership == "" || objectOwnership == s3_constants.OwnershipBucketOwnerEnforced {
return accountId, []*s3.Grant{ return accountId, []*s3.Grant{
{ {
Permission: &s3_constants.PermissionFullControl, Permission: &s3_constants.PermissionFullControl,

5
weed/s3api/s3api_bucket_handlers.go

@ -123,9 +123,6 @@ func (s3a *S3ApiServer) PutBucketHandler(w http.ResponseWriter, r *http.Request)
} }
objectOwnership := r.Header.Get("ObjectOwnership") objectOwnership := r.Header.Get("ObjectOwnership")
if objectOwnership == "" {
objectOwnership = s3_constants.DefaultOwnershipForCreate
}
acpOwner, acpGrants, errCode := s3a.ExtractBucketAcp(r, objectOwnership) acpOwner, acpGrants, errCode := s3a.ExtractBucketAcp(r, objectOwnership)
if errCode != s3err.ErrNone { if errCode != s3err.ErrNone {
s3err.WriteErrorResponse(w, r, errCode) s3err.WriteErrorResponse(w, r, errCode)
@ -138,6 +135,8 @@ func (s3a *S3ApiServer) PutBucketHandler(w http.ResponseWriter, r *http.Request)
entry.Extended = make(map[string][]byte) entry.Extended = make(map[string][]byte)
} }
entry.Extended[s3_constants.AmzIdentityId] = []byte(identityId) entry.Extended[s3_constants.AmzIdentityId] = []byte(identityId)
}
if objectOwnership != "" {
entry.Extended[s3_constants.ExtOwnershipKey] = []byte(objectOwnership) entry.Extended[s3_constants.ExtOwnershipKey] = []byte(objectOwnership)
} }
s3acl.AssembleEntryWithAcp(entry, acpOwner, acpGrants) s3acl.AssembleEntryWithAcp(entry, acpOwner, acpGrants)

Loading…
Cancel
Save