diff --git a/go.mod b/go.mod index 56e6bfc1..cbe5da67 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.6.1 github.com/DataDog/datadog-go/v5 v5.6.0 github.com/aws/aws-sdk-go-v2 v1.36.5 - github.com/aws/aws-sdk-go-v2/service/s3 v1.82.0 + github.com/aws/aws-sdk-go-v2/service/s3 v1.83.0 github.com/aws/smithy-go v1.22.4 github.com/go-ldap/ldap/v3 v3.4.11 github.com/gofiber/fiber/v2 v2.52.8 @@ -23,7 +23,7 @@ require ( github.com/segmentio/kafka-go v0.4.48 github.com/smira/go-statsd v1.3.4 github.com/urfave/cli/v2 v2.27.7 - github.com/valyala/fasthttp v1.62.0 + github.com/valyala/fasthttp v1.63.0 github.com/versity/scoutfs-go v0.0.0-20240325223134-38eb2f5f7d44 golang.org/x/sync v0.15.0 golang.org/x/sys v0.33.0 @@ -63,7 +63,7 @@ require ( github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.11 // indirect github.com/aws/aws-sdk-go-v2/config v1.29.17 github.com/aws/aws-sdk-go-v2/credentials v1.17.70 - github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.82 + github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.83 github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.36 // indirect github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.36 // indirect github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.36 // indirect diff --git a/go.sum b/go.sum index 4897393b..3a508e55 100644 --- a/go.sum +++ b/go.sum @@ -35,8 +35,8 @@ github.com/aws/aws-sdk-go-v2/credentials v1.17.70 h1:ONnH5CM16RTXRkS8Z1qg7/s2eDO github.com/aws/aws-sdk-go-v2/credentials v1.17.70/go.mod h1:M+lWhhmomVGgtuPOhO85u4pEa3SmssPTdcYpP/5J/xc= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.32 h1:KAXP9JSHO1vKGCr5f4O6WmlVKLFFXgWYAGoJosorxzU= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.32/go.mod h1:h4Sg6FQdexC1yYG9RDnOvLbW1a/P986++/Y/a+GyEM8= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.82 h1:EO13QJTCD1Ig2IrQnoHTRrn981H9mB7afXsZ89WptI4= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.82/go.mod h1:AGh1NCg0SH+uyJamiJA5tTQcql4MMRDXGRdMmCxCXzY= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.83 h1:08otkOELsIi0toRRGMytlJhOctcN8xfKfKFR2NXz3kE= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.83/go.mod h1:dGsGb2wI8JDWeMAhjVPP+z+dqvYjL6k6o+EujcRNk5c= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.36 h1:SsytQyTMHMDPspp+spo7XwXTP44aJZZAC7fBV2C5+5s= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.36/go.mod h1:Q1lnJArKRXkenyog6+Y+zr7WDpk4e6XlR6gs20bbeNo= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.36 h1:i2vNHQiXUvKhs3quBR6aqlgJaiaexz/aNvdCktW/kAM= @@ -53,8 +53,8 @@ github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.17 h1:t0E6FzRE github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.17/go.mod h1:ygpklyoaypuyDvOM5ujWGrYWpAK3h7ugnmKCU/76Ys4= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.17 h1:qcLWgdhq45sDM9na4cvXax9dyLitn8EYBRl8Ak4XtG4= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.17/go.mod h1:M+jkjBFZ2J6DJrjMv2+vkBbuht6kxJYtJiwoVgX4p4U= -github.com/aws/aws-sdk-go-v2/service/s3 v1.82.0 h1:JubM8CGDDFaAOmBrd8CRYNr49ZNgEAiLwGwgNMdS0nw= -github.com/aws/aws-sdk-go-v2/service/s3 v1.82.0/go.mod h1:kUklwasNoCn5YpyAqC/97r6dzTA1SRKJfKq16SXeoDU= +github.com/aws/aws-sdk-go-v2/service/s3 v1.83.0 h1:5Y75q0RPQoAbieyOuGLhjV9P3txvYgXv2lg0UwJOfmE= +github.com/aws/aws-sdk-go-v2/service/s3 v1.83.0/go.mod h1:kUklwasNoCn5YpyAqC/97r6dzTA1SRKJfKq16SXeoDU= github.com/aws/aws-sdk-go-v2/service/sso v1.25.5 h1:AIRJ3lfb2w/1/8wOOSqYb9fUKGwQbtysJ2H1MofRUPg= github.com/aws/aws-sdk-go-v2/service/sso v1.25.5/go.mod h1:b7SiVprpU+iGazDUqvRSLf5XmCdn+JtT1on7uNL6Ipc= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.3 h1:BpOxT3yhLwSJ77qIY3DoHAQjZsc4HEGfMCE4NGy3uFg= @@ -175,8 +175,8 @@ github.com/urfave/cli/v2 v2.27.7 h1:bH59vdhbjLv3LAvIu6gd0usJHgoTTPhCFib8qqOwXYU= github.com/urfave/cli/v2 v2.27.7/go.mod h1:CyNAG/xg+iAOg0N4MPGZqVmv2rCoP267496AOXUZjA4= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasthttp v1.62.0 h1:8dKRBX/y2rCzyc6903Zu1+3qN0H/d2MsxPPmVNamiH0= -github.com/valyala/fasthttp v1.62.0/go.mod h1:FCINgr4GKdKqV8Q0xv8b+UxPV+H/O5nNFo3D+r54Htg= +github.com/valyala/fasthttp v1.63.0 h1:DisIL8OjB7ul2d7cBaMRcKTQDYnrGy56R4FCiuDP0Ns= +github.com/valyala/fasthttp v1.63.0/go.mod h1:REc4IeW+cAEyLrRPa5A81MIjvz0QE1laoTX2EaPHKJM= github.com/versity/scoutfs-go v0.0.0-20240325223134-38eb2f5f7d44 h1:Wx1o3pNrCzsHIIDyZ2MLRr6tF/1FhAr7HNDn80QqDWE= github.com/versity/scoutfs-go v0.0.0-20240325223134-38eb2f5f7d44/go.mod h1:gJsq73k+4685y+rbDIpPY8i/5GbsiwP6JFoFyUDB1fQ= github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= diff --git a/s3api/debuglogger/logger.go b/s3api/debuglogger/logger.go index 88bd172b..defa9055 100644 --- a/s3api/debuglogger/logger.go +++ b/s3api/debuglogger/logger.go @@ -45,9 +45,9 @@ func LogFiberRequestDetails(ctx *fiber.Ctx) { // log request headers wrapInBox(green, "REQUEST HEADERS", boxWidth, func() { - ctx.Request().Header.VisitAll(func(key, value []byte) { + for key, value := range ctx.Request().Header.All() { printWrappedLine(yellow, string(key), string(value)) - }) + } }) // skip request body log for PutObject and UploadPart skipBodyLog := isLargeDataAction(ctx) @@ -61,18 +61,18 @@ func LogFiberRequestDetails(ctx *fiber.Ctx) { } if ctx.Request().URI().QueryArgs().Len() != 0 { - ctx.Request().URI().QueryArgs().VisitAll(func(key, val []byte) { - log.Printf("%s: %s", key, val) - }) + for key, value := range ctx.Request().URI().QueryArgs().All() { + log.Printf("%s: %s", key, value) + } } } // Logs http response details: body, headers func LogFiberResponseDetails(ctx *fiber.Ctx) { wrapInBox(green, "RESPONSE HEADERS", boxWidth, func() { - ctx.Response().Header.VisitAll(func(key, value []byte) { + for key, value := range ctx.Response().Header.All() { printWrappedLine(yellow, string(key), string(value)) - }) + } }) _, ok := ctx.Locals("skip-res-body-log").(bool) diff --git a/s3api/utils/utils.go b/s3api/utils/utils.go index 30d81c75..ada265c2 100644 --- a/s3api/utils/utils.go +++ b/s3api/utils/utils.go @@ -44,14 +44,14 @@ var ( func GetUserMetaData(headers *fasthttp.RequestHeader) (metadata map[string]string) { metadata = make(map[string]string) headers.DisableNormalizing() - headers.VisitAllInOrder(func(key, value []byte) { + for key, value := range headers.AllInOrder() { hKey := string(key) if strings.HasPrefix(strings.ToLower(hKey), "x-amz-meta-") { trimmedKey := hKey[11:] headerValue := string(value) metadata[trimmedKey] = headerValue } - }) + } headers.EnableNormalizing() return @@ -74,12 +74,12 @@ func createHttpRequestFromCtx(ctx *fiber.Ctx, signedHdrs []string, contentLength } // Set the request headers - req.Header.VisitAll(func(key, value []byte) { + for key, value := range req.Header.All() { keyStr := string(key) if includeHeader(keyStr, signedHdrs) { httpReq.Header.Add(keyStr, string(value)) } - }) + } // make sure all headers in the signed headers are present for _, header := range signedHdrs { @@ -124,7 +124,7 @@ func createPresignedHttpRequestFromCtx(ctx *fiber.Ctx, signedHdrs []string, cont uri, _, _ := strings.Cut(ctx.OriginalURL(), "?") isFirst := true - ctx.Request().URI().QueryArgs().VisitAll(func(key, value []byte) { + for key, value := range ctx.Request().URI().QueryArgs().All() { _, ok := signedQueryArgs[string(key)] if !ok { escapeValue := url.QueryEscape(string(value)) @@ -135,19 +135,19 @@ func createPresignedHttpRequestFromCtx(ctx *fiber.Ctx, signedHdrs []string, cont uri += fmt.Sprintf("&%s=%s", key, escapeValue) } } - }) + } httpReq, err := http.NewRequest(string(req.Header.Method()), uri, body) if err != nil { return nil, errors.New("error in creating an http request") } // Set the request headers - req.Header.VisitAll(func(key, value []byte) { + for key, value := range req.Header.All() { keyStr := string(key) if includeHeader(keyStr, signedHdrs) { httpReq.Header.Add(keyStr, string(value)) } - }) + } // Check if Content-Length in signed headers // If content length is non 0, then the header will be included @@ -297,10 +297,10 @@ func FilterObjectAttributes(attrs map[s3response.ObjectAttributes]struct{}, outp func ParseObjectAttributes(ctx *fiber.Ctx) (map[s3response.ObjectAttributes]struct{}, error) { attrs := map[s3response.ObjectAttributes]struct{}{} var err error - ctx.Request().Header.VisitAll(func(key, value []byte) { + for key, value := range ctx.Request().Header.All() { if string(key) == "X-Amz-Object-Attributes" { if len(value) == 0 { - return + break } oattrs := strings.Split(string(value), ",") for _, a := range oattrs { @@ -313,7 +313,7 @@ func ParseObjectAttributes(ctx *fiber.Ctx) (map[s3response.ObjectAttributes]stru attrs[attr] = struct{}{} } } - }) + } if err != nil { return nil, err @@ -426,10 +426,10 @@ func ParseChecksumHeaders(ctx *fiber.Ctx) (types.ChecksumAlgorithm, ChecksumValu var hdrErr error // Parse and validate checksum headers - ctx.Request().Header.VisitAll(func(key, value []byte) { + for key, value := range ctx.Request().Header.All() { // Skip `X-Amz-Checksum-Type` as it's a special header - if hdrErr != nil || !strings.HasPrefix(string(key), "X-Amz-Checksum-") || string(key) == "X-Amz-Checksum-Type" { - return + if !strings.HasPrefix(string(key), "X-Amz-Checksum-") || string(key) == "X-Amz-Checksum-Type" { + continue } algo := types.ChecksumAlgorithm(strings.ToUpper(strings.TrimPrefix(string(key), "X-Amz-Checksum-"))) @@ -437,11 +437,11 @@ func ParseChecksumHeaders(ctx *fiber.Ctx) (types.ChecksumAlgorithm, ChecksumValu if err != nil { debuglogger.Logf("invalid checksum header: %s\n", key) hdrErr = s3err.GetAPIError(s3err.ErrInvalidChecksumHeader) - return + break } checksums[algo] = string(value) - }) + } if hdrErr != nil { return sdkAlgorithm, nil, hdrErr