forked from TrueCloudLab/frostfs-s3-gw
[#307] Filter system metadata
Signed-off-by: Denis Kirillov <denis@nspcc.ru>
This commit is contained in:
parent
d532eb710f
commit
c202893563
4 changed files with 11 additions and 2 deletions
|
@ -77,6 +77,9 @@ func writeHeaders(h http.Header, info *data.ObjectInfo, tagSetLength int) {
|
||||||
h.Set(api.AmzTaggingCount, strconv.Itoa(tagSetLength))
|
h.Set(api.AmzTaggingCount, strconv.Itoa(tagSetLength))
|
||||||
|
|
||||||
for key, val := range info.Headers {
|
for key, val := range info.Headers {
|
||||||
|
if layer.IsSystemHeader(key) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
h[api.MetadataPrefix+key] = []string{val}
|
h[api.MetadataPrefix+key] = []string{val}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -444,7 +444,6 @@ func (n *layer) GetBucketTagging(ctx context.Context, bucketName string) (map[st
|
||||||
}
|
}
|
||||||
|
|
||||||
objInfo, err := n.headSystemObject(ctx, bktInfo, formBucketTagObjectName(bucketName))
|
objInfo, err := n.headSystemObject(ctx, bktInfo, formBucketTagObjectName(bucketName))
|
||||||
|
|
||||||
if err != nil && !errors.IsS3Error(err, errors.ErrNoSuchKey) {
|
if err != nil && !errors.IsS3Error(err, errors.ErrNoSuchKey) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -546,6 +546,10 @@ func isSystem(obj *data.ObjectInfo) bool {
|
||||||
len(obj.Headers[attrVersionsIgnore]) > 0
|
len(obj.Headers[attrVersionsIgnore]) > 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func IsSystemHeader(key string) bool {
|
||||||
|
return strings.HasPrefix(key, "S3-")
|
||||||
|
}
|
||||||
|
|
||||||
func trimAfterObjectName(startAfter string, objects []*data.ObjectInfo) []*data.ObjectInfo {
|
func trimAfterObjectName(startAfter string, objects []*data.ObjectInfo) []*data.ObjectInfo {
|
||||||
if len(objects) != 0 && objects[len(objects)-1].Name <= startAfter {
|
if len(objects) != 0 && objects[len(objects)-1].Name <= startAfter {
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -88,7 +88,10 @@ func (n *layer) putSystemObjectIntoNeoFS(ctx context.Context, p *PutSystemObject
|
||||||
|
|
||||||
for k, v := range p.Metadata {
|
for k, v := range p.Metadata {
|
||||||
attr := object.NewAttribute()
|
attr := object.NewAttribute()
|
||||||
attr.SetKey(p.Prefix + k)
|
if !IsSystemHeader(k) {
|
||||||
|
k = p.Prefix + k
|
||||||
|
}
|
||||||
|
attr.SetKey(k)
|
||||||
if p.Prefix == tagPrefix && v == "" {
|
if p.Prefix == tagPrefix && v == "" {
|
||||||
v = tagEmptyMark
|
v = tagEmptyMark
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue