Wykres commitów

558 Commity (217308abd735c5f6e31ef4cf8351d5b287a5dc03)

Autor SHA1 Wiadomość Data
Florin Peter 217308abd7
Support for transparent encryption
Co-authored-by: Florin Peter <Florin-Alexandru.Peter@t-systems.com>
2022-03-26 22:05:08 +09:00
Xavier Gourmandin 05a39cf745
Support for Junit 5 Extension mechanism
Fixes #288
2022-03-02 23:36:11 +09:00
Liam 5aec5c132c Support configurable base directory for S3Proxy 2022-02-10 09:55:19 +09:00
Liam 0c3d81feb2 Make S3Proxy compatible with ExAws by checking for parameter presence 2022-02-10 09:54:24 +09:00
Andrew Gaul 2e61c38626 Configure Jetty to use legacy compliance
This prevents changing header value cases which previously caused S3
signature mismatches.  Fixes #392.
References eclipse/jetty.project#7168.
2022-01-22 19:41:04 +09:00
Tamas Cservenak 2839107c6f UT for #392
This UT reproduces issue #392:
attempts a plain simple putObject without
any "trickery", and fails with SignatureDoesNotMatch.

The trick is, to use such Content-Type header that
is cached by Jetty, as it seems all the UTs are using
content types that are not quite common, hence Jetty
cache is not pre-populated with those.
2022-01-22 19:41:04 +09:00
Tamas Cservenak 075ff7f126 Update build
In general update the ancient build plugins
around.

Changes:
* bring all maven plugins to latest versions
* update checkstyle (as pre 8.41 is not supported anymore)
* update checkstyle rules
* make checkstyle plugin not fail the build (as there are issues)
* fix maven-shade-plugin warnings about dupe resource
* fix modernizer issue as it fails the build
* make build reproducible

Added comment about parent POM: the currently used parent is
10 years old, moreover, if you look in Maven Central,
the GA is unmaintained (last release was in 2014). Better introduce
own parent POM, or just copy whatever needed into this POM
(related to staging) and stop using the ancient POM.
2022-01-22 19:07:24 +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
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 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 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 619b4170c9 Skip AwsSdkTest.testAwsV4SignatureBadCredential
This randomly fails with SocketException: Broken pipe.
2021-09-08 21:48:32 +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 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 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
Andrew Gaul 1f79d30df5 Update copyright year 2021-03-29 21:04:28 +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 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 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 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
D044166 a82eb88f12 Validate methods against supported ones 2021-01-26 12:38:48 +09:00
Manan Jadhav 19c4b0a18d use the old env var used for virtual host 2021-01-10 09:59:46 +09:00
johnnyaug 73b8f63df9 add virtual host to docker 2021-01-05 00:24:17 +09:00
johnnyaug 4cc29f9c3c support custom s3 proxy endpoint in docker 2020-12-28 16:20:10 +09:00
Falk Reimann d7281b1b1e CORS header for MultiPart Requests
Adding CORS headers `Access-Control-Allow-Origin` and
`Access-Control-Allow-Methods` in Multipart Reposnes if the
`Origin` Header is included in the Request and does match the
CORS rules.
2020-09-28 22:14:40 +09:00
Andrew Gaul 27e6a98f84 Enable Glacier storage class tests 2020-08-21 23:12:46 +09:00
Andrew Gaul 6d2a9428c8 Skip failing testPutMultipartInputStream 2020-08-21 23:12:01 +09:00
Andrew Gaul ec0f56a5b4 Quote all parameters to Docker script
This addresses and issue with non-file GCS credentials with embedded
newlines.  Fixes #328.
2020-08-21 10:13:52 +09:00
Andrew Gaul 78fb790910 Upgrade to jclouds 2.3.0 2020-07-24 18:39:27 +09:00
Andrew Gaul 08c822c28a Rebase onto latest s3-tests
Uncovered an issue with incorrect escaping.
2020-07-18 12:52:13 +09:00
Andrew Gaul 0613da2fcb Handle empty list blobs with opaque markers (Azure)
Fixes #326.
2020-07-17 19:06:44 +09:00
Andrew Gaul 34b844fcaf Do not accept multipart sizes less than 5 MB
Continue to enforce greater minimum blob sizes when storage backend
requires it.  Fixes #324.
2020-06-24 22:59:48 +09:00
Andrew Gaul 51ce7a91ad Update copyright year 2020-05-02 19:50:19 +09:00