2021-08-05 09:18:52 +00:00
|
|
|
package handler
|
|
|
|
|
|
|
|
import (
|
|
|
|
"net/http"
|
|
|
|
|
|
|
|
"github.com/nspcc-dev/neofs-s3-gw/api"
|
|
|
|
"go.uber.org/zap"
|
|
|
|
)
|
|
|
|
|
|
|
|
func (h *handler) logAndSendError(w http.ResponseWriter, logText string, reqInfo *api.ReqInfo, err error, additional ...zap.Field) {
|
|
|
|
fields := []zap.Field{zap.String("request_id", reqInfo.RequestID),
|
|
|
|
zap.String("method", reqInfo.API),
|
|
|
|
zap.String("bucket_name", reqInfo.BucketName),
|
|
|
|
zap.String("object_name", reqInfo.ObjectName),
|
|
|
|
zap.Error(err)}
|
|
|
|
fields = append(fields, additional...)
|
|
|
|
|
|
|
|
h.log.Error(logText, fields...)
|
|
|
|
api.WriteErrorResponse(w, reqInfo, err)
|
|
|
|
}
|
2021-08-23 08:19:41 +00:00
|
|
|
|
|
|
|
func (h *handler) checkBucketOwner(r *http.Request, bucket string, header ...string) error {
|
|
|
|
var expected string
|
|
|
|
if len(header) == 0 {
|
|
|
|
expected = r.Header.Get(api.AmzExpectedBucketOwner)
|
|
|
|
} else {
|
|
|
|
expected = header[0]
|
|
|
|
}
|
|
|
|
|
|
|
|
if len(expected) == 0 {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
bktInfo, err := h.obj.GetBucketInfo(r.Context(), bucket)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
return checkOwner(bktInfo, expected)
|
|
|
|
}
|