Documentation
¶
Index ¶
- Constants
- Variables
- func EncodeResponse(response interface{}) ([]byte, error)
- func EncodeResponseNoHeader(response interface{}) ([]byte, error)
- func EncodeToResponse(w http.ResponseWriter, response interface{}) error
- func EncodeToResponseNoHeader(w http.ResponseWriter, response interface{}) error
- func GetAccessBoxAttrs(ctx context.Context) ([]object.Attribute, error)
- func GetBoxData(ctx context.Context) (*accessbox.Box, error)
- func GetClientTime(ctx context.Context) (time.Time, error)
- func GetReqLog(ctx context.Context) *zap.Logger
- func GetRequestID(v interface{}) string
- func GetSourceScheme(r *http.Request) string
- func HandleDeleteMarker(w http.ResponseWriter, err error) error
- func ReqLogOrDefault(ctx context.Context, log *zap.Logger) *zap.Logger
- func SetBox(ctx context.Context, box *Box) context.Context
- func SetReqInfo(ctx context.Context, req *ReqInfo) context.Context
- func SetReqLogger(ctx context.Context, log *zap.Logger) context.Context
- func StartHTTPServerSpan(r *http.Request, operationName string, opts ...trace.SpanStartOption) (context.Context, trace.Span)
- func WriteErrorResponse(w http.ResponseWriter, reqInfo *ReqInfo, err error) (int, error)
- func WriteErrorResponseNoHeader(w http.ResponseWriter, reqInfo *ReqInfo, err error) error
- func WriteResponse(w http.ResponseWriter, statusCode int, response []byte, mType mimeType) error
- func WriteResponseBody(w http.ResponseWriter, response []byte) error
- func WriteSuccessResponseHeadersOnly(w http.ResponseWriter) error
- type AuthHeader
- type Box
- type BucketResolveFunc
- type Center
- type ErrorResponse
- type FrostFSIDInformer
- type FrostFSIDValidator
- type Func
- func Auth(center Center, log *zap.Logger) Func
- func DetermineOperation() Func
- func FrostfsIDValidation(frostfsID FrostFSIDValidator, log *zap.Logger) Func
- func LogHTTP(l *zap.Logger, _ LogHTTPSettings) Func
- func LogSuccessResponse(l *zap.Logger) Func
- func Metrics(appMetrics *metrics.AppMetrics, settings MetricsSettings) Func
- func PolicyCheck(cfg PolicyConfig) Func
- func PrepareAddressStyle(settings VHSSettings, log *zap.Logger) Func
- func Request(log *zap.Logger, settings RequestSettings) Func
- func ResolveBucketInfo(resolver BucketResolveFunc, log *zap.Logger) Func
- func RestrictPublicBuckets(checker PublicAccessBlockChecker, log *zap.Logger) Func
- func WrapHandler(handler http.HandlerFunc) Func
- type KeyVal
- type LogHTTPConfig
- type LogHTTPSettings
- type MetricsSettings
- type ObjectRequest
- type PolicyConfig
- type PolicySettings
- type PublicAccessBlockChecker
- type ReqInfo
- type ReqType
- type RequestSettings
- type ResourceTagging
- type VHSSettings
- type XMLDecoder
Constants ¶
const ( // MimeNone means no response type. MimeNone mimeType = "" // MimeXML means response type is XML. MimeXML mimeType = "application/xml" )
const (
AccessKeyIDAuditField = "access_key_id"
)
Variables ¶
var ( // ErrFrostfsIDNotFound is returned from FrostFSID in case of any not found error. ErrFrostfsIDNotFound = errors.New("not found") )
var ErrNoAuthorizationHeader = errors.New("no authorization header")
ErrNoAuthorizationHeader is returned for unauthenticated requests.
Functions ¶
func EncodeResponse ¶
EncodeResponse encodes the response headers into XML format.
func EncodeResponseNoHeader ¶
EncodeResponseNoHeader encodes response without setting xml.Header. Should be used with periodicXMLWriter which sends xml.Header to the client with whitespaces to keep connection alive.
func EncodeToResponse ¶
func EncodeToResponse(w http.ResponseWriter, response interface{}) error
EncodeToResponse encodes the response into ResponseWriter.
func EncodeToResponseNoHeader ¶
func EncodeToResponseNoHeader(w http.ResponseWriter, response interface{}) error
EncodeToResponseNoHeader encodes the response into ResponseWriter without header status.
func GetAccessBoxAttrs ¶ added in v0.30.0
GetAccessBoxAttrs extracts []object.Attribute from context.
func GetBoxData ¶
GetBoxData extracts accessbox.Box from context.
func GetClientTime ¶
GetClientTime extracts time.Time from context.
func GetRequestID ¶
func GetRequestID(v interface{}) string
GetRequestID returns the request ID from the response writer or the context.
func GetSourceScheme ¶ added in v0.31.0
GetSourceScheme retrieves the scheme from the X-Forwarded-Proto and RFC7239 Forwarded headers (in that order).
func HandleDeleteMarker ¶ added in v0.37.0
func HandleDeleteMarker(w http.ResponseWriter, err error) error
func ReqLogOrDefault ¶ added in v0.34.0
func SetReqInfo ¶
SetReqInfo sets ReqInfo in the context.
func SetReqLogger ¶
SetReqLogger sets child zap.Logger in the context.
func StartHTTPServerSpan ¶
func StartHTTPServerSpan(r *http.Request, operationName string, opts ...trace.SpanStartOption) (context.Context, trace.Span)
StartHTTPServerSpan starts root HTTP server span.
func WriteErrorResponse ¶
WriteErrorResponse writes error headers. returns http error code and error in case of failure of response writing.
func WriteErrorResponseNoHeader ¶
func WriteErrorResponseNoHeader(w http.ResponseWriter, reqInfo *ReqInfo, err error) error
WriteErrorResponseNoHeader writes XML encoded error to the response body.
func WriteResponse ¶
func WriteResponse(w http.ResponseWriter, statusCode int, response []byte, mType mimeType) error
WriteResponse writes given statusCode and response into w (with mType header if set).
func WriteResponseBody ¶
func WriteResponseBody(w http.ResponseWriter, response []byte) error
WriteResponseBody writes response into w.
func WriteSuccessResponseHeadersOnly ¶
func WriteSuccessResponseHeadersOnly(w http.ResponseWriter) error
WriteSuccessResponseHeadersOnly writes HTTP (200) OK response with no data to the client.
Types ¶
type AuthHeader ¶ added in v0.29.0
func GetAuthHeaders ¶
func GetAuthHeaders(ctx context.Context) (*AuthHeader, error)
GetAuthHeaders extracts auth.AuthHeader from context.
type Box ¶ added in v0.29.0
type Box struct {
AccessBox *accessbox.Box
ClientTime time.Time
AuthHeaders *AuthHeader
Attributes []object.Attribute
}
Box contains access box and additional info.
type BucketResolveFunc ¶
BucketResolveFunc is a func to resolve bucket info by name.
type Center ¶ added in v0.29.0
type Center interface {
// Authenticate validate and authenticate request.
// Must return ErrNoAuthorizationHeader if auth header is missed.
// Authenticate uses a separate context so that the authorization
// span middleware does not contain all subsequent spans.
Authenticate(ctx context.Context, request *http.Request) (*Box, error)
}
Center is a user authentication interface.
type ErrorResponse ¶
type ErrorResponse struct {
XMLName xml.Name `xml:"Error" json:"-"`
Code string
Message string
Key string `xml:"Key,omitempty" json:"Key,omitempty"`
BucketName string `xml:"BucketName,omitempty" json:"BucketName,omitempty"`
Resource string
RequestID string `xml:"RequestId" json:"RequestId"`
HostID string `xml:"HostId" json:"HostId"`
// The region where the bucket is located. This header is returned
// only in HEAD bucket and ListObjects response.
Region string `xml:"Region,omitempty" json:"Region,omitempty"`
// Captures the server string returned in response header.
Server string `xml:"-" json:"-"`
// Underlying HTTP status code for the returned error.
StatusCode int `xml:"-" json:"-"`
}
ErrorResponse -- error response format.
func (ErrorResponse) Error ¶
func (e ErrorResponse) Error() string
Error -- Returns S3 error string.
type FrostFSIDInformer ¶ added in v0.29.0
type FrostFSIDValidator ¶ added in v0.29.0
type Func ¶
func DetermineOperation ¶ added in v0.35.0
func DetermineOperation() Func
func FrostfsIDValidation ¶ added in v0.29.0
func FrostfsIDValidation(frostfsID FrostFSIDValidator, log *zap.Logger) Func
func LogSuccessResponse ¶
func Metrics ¶
func Metrics(appMetrics *metrics.AppMetrics, settings MetricsSettings) Func
Metrics wraps http handler for api with basic statistics collection.
func PolicyCheck ¶ added in v0.29.0
func PolicyCheck(cfg PolicyConfig) Func
func PrepareAddressStyle ¶ added in v0.31.0
func PrepareAddressStyle(settings VHSSettings, log *zap.Logger) Func
func ResolveBucketInfo ¶ added in v0.37.0
func ResolveBucketInfo(resolver BucketResolveFunc, log *zap.Logger) Func
func RestrictPublicBuckets ¶ added in v0.33.0
func RestrictPublicBuckets(checker PublicAccessBlockChecker, log *zap.Logger) Func
func WrapHandler ¶
func WrapHandler(handler http.HandlerFunc) Func
type LogHTTPConfig ¶ added in v0.31.0
type LogHTTPConfig struct {
Enabled bool
MaxBody int64
MaxLogSize int
OutputPath string
UseGzip bool
}
func (*LogHTTPConfig) InitHTTPLogger ¶ added in v0.31.0
func (*LogHTTPConfig) InitHTTPLogger(*zap.Logger)
type LogHTTPSettings ¶ added in v0.31.0
type LogHTTPSettings interface {
LogHTTPConfig() LogHTTPConfig
}
type MetricsSettings ¶ added in v0.29.0
type ObjectRequest ¶
ObjectRequest represents object request data.
type PolicyConfig ¶ added in v0.29.0
type PolicyConfig struct {
Storage engine.ChainRouter
FrostfsID FrostFSIDInformer
Settings PolicySettings
Log *zap.Logger
Decoder XMLDecoder
Tagging ResourceTagging
}
type PolicySettings ¶ added in v0.29.0
type PublicAccessBlockChecker ¶ added in v0.33.0
type ReqInfo ¶
type ReqInfo struct {
sync.RWMutex
RemoteHost string // Client Host/IP
Host string // Node Host/IP
UserAgent string // User Agent
DeploymentID string // random generated s3-deployment-id
RequestID string // x-amz-request-id
API string // API name -- GetObject PutObject NewMultipartUpload etc.
BucketName string // Bucket name
ObjectName string // Object name
TraceID string // Trace ID
URL *url.URL // Request url
Namespace string
User string // User owner id
UserNamespace *string // Namespace of user
Tagging *data.Tagging
RequestVHSEnabled bool
RequestType ReqType
BucketInfo *data.BucketInfo
AuditPostHandlerLogFields map[string]string
}
ReqInfo stores the request info.
func GetReqInfo ¶
GetReqInfo returns ReqInfo if set. If ReqInfo isn't set returns new empty ReqInfo.
func NewReqInfo ¶
func NewReqInfo(w http.ResponseWriter, r *http.Request, req ObjectRequest, sourceIPHeader string) *ReqInfo
NewReqInfo returns new ReqInfo based on parameters.