Wykres commitów

854 Commity (require-content-md5)

Autor SHA1 Wiadomość Data
Andrew Gaul b5f6ae6418 Add required Content-MD5 middleware
This enforces that the Content-MD5 header is present in PutObject and
UploadPart requests.
2021-11-06 19:42:45 +09:00
Andrew Gaul db2cc2a0ff Cache replaceAll regex when normalizing headers 2021-11-01 19:00:28 +09:00
Andrew Gaul cb3845c1ab Reduce allocations in buildCanonicalHeaders 2021-10-31 21:09:48 +09:00
Andrew Gaul b6c2dc9b9c Re-use XmlMapper instances
These can be expensive to create:

https://stackoverflow.com/a/57671444
2021-10-31 19:31:55 +09:00
Andrew Gaul 8e2319de3c Bump to 1.9.1-SNAPSHOT 2021-10-26 20:03:40 +09:00
Andrew Gaul 70af2b8650 S3Proxy 1.9.0 release 2021-10-26 19:58:04 +09:00
Timur Alperovich 512c926b6e Fix anonymous bucket listing bug
If the bucket locator is used with anonymous access, listing a container
results in a null-pointer exception, as there are no blobstores in the
locator. In that case, we should use the globLocator structure and
return the first available blobstore.
2021-10-26 13:15:02 +09:00
Timur Alperovich 939acd950f Add information about bucket locators 2021-10-25 16:04:04 +09:00
Timur Alperovich a2e9e22719 Fix a bug in blobstore locator
558efb7b29 introduced a bug where if anonymous access is
configured, the bucket locator hits a null pointer exception. There is
an additional bug where if an incorrect identity is used with the
blobstore locator (as in, the request identity does not match the
configured bucket's blobstore identity), another null pointer exception
can be triggered.

The patch creates a new GlobBlobStoreLocator class and adds tests to it,
as it is difficult to test Main.java directly. The blobstore locator
logic is also reworked to fix the above bugs.
2021-10-24 18:20:25 +09:00
Timur Alperovich 558efb7b29 Allow differentiating blob stores by buckets
Allows differentiating the backend blob stores by configured buckets.
The commit allows using the same s3proxy credentials across the
different backends and relies on the bucket names to disambiguate them.

If no buckets are configured, the prior blob store selection algorithm
is used, which returns the first configured blob store for the specified
identity.

The patch supports the glob syntax, which allows specifying groups of
buckets more easily. However, there is no checking for overlapping
globs.

Fixes: #371
2021-10-20 16:53:48 +09:00
Timur Alperovich c055dfda9f README entry for the Alias middleware 2021-09-12 15:17:59 +09:00
Timur Alperovich 35fea54d63 Alias middleware to remap backend buckets
Alias middleware implements a way to remap backend buckets to a
configurable front-end name. The mappings are configured as:
s3proxy.alias-blobstore.<s3proxy bucket> = <backend bucket>

A single bucket cannot be mapped to multiple names.
2021-09-11 21:57:56 +09:00
Andrew Gaul 2521db999b Upgrade to jclouds 2.4.0
Release notes:

https://jclouds.apache.org/releasenotes/2.4.0/

Fixes #338.
2021-09-10 20:54:35 +09:00
Andrew Gaul 619b4170c9 Skip AwsSdkTest.testAwsV4SignatureBadCredential
This randomly fails with SocketException: Broken pipe.
2021-09-08 21:48:32 +09:00
Andrew Gaul 4b2f344599 Upgrade to aws-java-sdk-s3 1.12.63 2021-09-08 21:28:21 +09:00
Andrew Gaul 4700fb3a69 Check if Authorization header is empty
This resolves s3-tests failures that we missed due to busted CI.
Perhaps caused by a newer boto version?
2021-09-08 20:37:04 +09:00
Andrew Gaul d18d0232c8 Upgrade to error-prone 2.9.0
Release notes:

https://github.com/google/error-prone/releases/tag/v2.7.0
https://github.com/google/error-prone/releases/tag/v2.7.1
https://github.com/google/error-prone/releases/tag/v2.8.0
https://github.com/google/error-prone/releases/tag/v2.8.1
https://github.com/google/error-prone/releases/tag/v2.9.0
2021-09-02 20:44:53 +09:00
Andrew Gaul 899956f80f Fix Checkstyle violation 2021-08-21 08:13:02 +09:00
Andrew Gaul 79f12eff88 Upgrade to SpotBugs 4.2.0
Also fix new violation.  Changelog:

https://github.com/spotbugs/spotbugs/blob/4.4.0/CHANGELOG.md
2021-08-21 08:11:55 +09:00
Peter Zeller f4ea296adf support Iso8601 in date headers 2021-08-21 08:02:06 +09:00
Timur Alperovich 0d8f9aa96d Add Sharded Bucket middleware
Adds the sharded bucket middleware, which allows for splitting objects
across multiple backend buckets for a given virtual bucket. The
middleware should be configured as:
s3proxy.sharded-blobstore.<bucket name>.shards=<number of shards>
s3proxy.sharded-blobstore.<bucket name>.prefix=<prefix>.

All shards are named <prefix>-<index>, where index is an
integer from 0 to <number of shards> - 1. If the <prefix> is not
supplied, the <bucket name> is used as the prefix.

Listing the virtual bucket and multipart uploads are not supported. When
listing all containers, the shards are elided from the result.

Fixes #325
Fixes #351
2021-06-05 23:23:38 +09:00
Andrew Gaul 4686ede0bd Upgrade to Jetty 9.4.41.v20210516
Enabled by Java 8.  Release notes for 9.3.0 and 9.4.0:

https://dev.eclipse.org/mhonarc/lists/jetty-announce/msg00080.html
https://dev.eclipse.org/mhonarc/lists/jetty-announce/msg00097.html

Fixes #121.
2021-06-05 23:18:07 +09:00
Andrew Gaul 0deabb9cff Upgrade to aws-java-sdk-s3 1.11.1033 2021-06-05 15:45:21 +09:00
Andrew Gaul 85b5f74905 Upgrade to jetty-servlet 9.2.30.v20200428 2021-06-05 15:41:54 +09:00
Andrew Gaul b6856fdda8 Upgrade to jackson-dataformat-xml 2.12.3
Release notes:

https://github.com/FasterXML/jackson-dataformat-xml/blob/2.12/release-notes/VERSION-2.x
2021-06-05 15:35:00 +09:00
Andrew Gaul ac539f5219 Handle possibly-null Content-Length
References #357.
2021-05-04 19:28:17 +09:00
Mikko Kortelainen 99ff5f950b add getters for S3AuthorizationHeader fields and make fields private 2021-04-29 15:08:04 +09:00
Andrew Gaul 85b2fa0321 Check ETag AtomicReference value not its reference 2021-04-12 16:59:13 +09:00
dependabot[bot] 2cefdd1bb6 Bump junit from 4.12 to 4.13.1
Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1.
- [Release notes](https://github.com/junit-team/junit4/releases)
- [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md)
- [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-04 10:40:16 +09:00
Andrew Gaul b06ed899b5 Upgrade to error-prone 2.6.0
Release notes:

https://github.com/google/error-prone/releases/tag/v2.6.0
2021-04-04 10:32:57 +09:00
Andrew Gaul 1f79d30df5 Update copyright year 2021-03-29 21:04:28 +09:00
Andrew Gaul b0b58a69c0 Upgrade Docker image to 3.6.3-jdk-11-alpine 2021-03-20 00:59:12 +09:00
Andrew Gaul 1506f482c1 Use JDK 11 to compile
This works around an issue in error-prone.
2021-03-20 00:48:09 +09:00
Andrew Gaul 86d12a81b0 Upgrade to error-prone 2.5.1
This addresses issues seen with more recent Java and Maven versions.
Enabled by requiring Java 8.  Also address and suppress a few stray
warnings.
2021-03-19 21:50:19 +09:00
Andrew Gaul b625476493 Update java.version to 1.8
This was implied by the jclouds 2.3.0 upgrade.  Also address
modernizer warnings.
2021-03-19 21:32:42 +09:00
Andrew Gaul 2812fc4482 Update requirement to Java 8 2021-03-07 18:03:26 +09:00
Andrew Gaul ecc9320688 Bump to 1.8.1-SNAPSHOT 2021-03-07 17:59:47 +09:00
Andrew Gaul 7f0c7d6ddf S3Proxy 1.8.0 release 2021-03-07 17:54:39 +09:00
Andrew Gaul 37e843a6ef Allow GCS backend to upload more than 32 parts
This recursively combines up to 32 sets of 32 parts, allowing 1024
part multipart uploads.  Fixes #330.
2021-03-07 17:53:00 +09:00
Andrew Gaul 29413b12a7 Add explicit javax.annotation
This avoids an exception with modern Java versions:

Exception in thread "main" com.google.common.util.concurrent.ExecutionError: com.google.common.util.concurrent.ExecutionError: com.google.common.util.concurrent.ExecutionError: java.lang.NoClassDefFoundError: javax/annotation/Resource
2021-03-07 11:58:35 +09:00
Andrew Gaul 94f19b0fab Add HEAD to test expectations 2021-03-07 11:53:22 +09:00
Andrew Gaul ef254f51e5 Make CrossOriginResourceSharing and ctors public 2021-03-07 11:34:50 +09:00
snoe925 4a6a3f2f4a
Make CORS handling optional
If corsRules is null, construct the default rules.  Also add HEAD method for CORS

Co-authored-by: Shannon Noe <shannon.noe@drwholdings.com>
2021-03-07 11:30:26 +09:00
Andrew Gaul 48d10653c5 Upgrade to jclouds 2.3.0
Release notes:

https://jclouds.apache.org/releasenotes/2.3.0/
2021-03-06 22:44:35 +09:00
Andrew Gaul bc50a18954 Enforce maximum multipart copy size of 5 GB
This matches AWS and makes S3Proxy more useful for testing.
References s3fs-fuse/s3fs-fuse#1547.
2021-02-07 19:58:12 +09:00
Andrew Gaul 7e74e859e5 Add configurable limit for single-part object size 2021-02-03 23:22:22 +09:00
Andrew Gaul c66e29cd0a Check object size in testMaximumMultipartUpload
Also use constant for part size.
2021-02-03 23:22:22 +09:00
D044166 df9e77963a reduce visibility of SUPPORTED_METHODS 2021-01-26 12:38:48 +09:00
D044166 208ff3e136 Adding testcases for cors-allow-all 2021-01-26 12:38:48 +09:00
D044166 5b818f4e0a Better support for AllowOrigins *
If the Allowed Origin * is configured, the ACCESS_CONTROL_ALLOW_ORIGIN
header in CORS responses will contain * as well.
The ACCESS_CONTROL_ALLOW_METHODS header will always include all allowed
methods.

This is inline with a native S3 CORS response and will help esp. in CDN
caching scenarios. All requested Origins can now be served with a cached
response.
2021-01-26 12:38:48 +09:00