From d6427fbac99c5da2d3c4c5ee901f776829e9d9a0 Mon Sep 17 00:00:00 2001 From: LunarSkyOSS Date: Sat, 10 Oct 2026 15:22:21 +0200 Subject: [PATCH] Release ObjectStore 0.0.8 --- .env.example | 6 + Dockerfile | 19 +- README.md | 55 +- TESTS.md | 12 +- client/.gitignore | 1 + client/README.md | 58 ++ client/examples/README.md | 37 + client/examples/awt-images/ImageManager.java | 503 ++++++++++++ client/examples/awt-images/run-test.sh | 51 ++ client/examples/awt-images/run.sh | 11 + client/examples/awt-images/screenshot.png | Bin 0 -> 390415 bytes client/scripts/build.sh | 13 + client/scripts/test.sh | 9 + .../objectstore/client/AclPolicy.java | 27 + .../objectstore/client/Capabilities.java | 43 + .../lunarsky/objectstore/client/Json.java | 194 +++++ .../client/ObjectStorageClient.java | 633 +++++++++++++++ .../client/ObjectStorageClientBuilder.java | 70 ++ .../client/ObjectStorageException.java | 30 + .../objectstore/client/ProtocolException.java | 9 + .../lunarsky/objectstore/client/SigV4.java | 83 ++ .../client/TransportException.java | 8 + .../lunarsky/objectstore/client/Xml.java | 54 ++ .../objectstore/client/ClientTest.java | 190 +++++ .../client/MultipartClientTest.java | 119 +++ compose.cluster.yaml | 9 +- compose.yaml | 7 + lib/LICENSE.hash4j | 201 +++++ lib/hash4j-0.30.0.jar | Bin 0 -> 420988 bytes scripts/objectstore | 10 +- scripts/test-cluster-http.py | 177 ++++- scripts/test-cluster.sh | 5 +- scripts/test.sh | 14 +- src/cloud/lunarsky/store/Acl.java | 179 +++++ .../lunarsky/store/AwsChunkedInputStream.java | 175 +++++ src/cloud/lunarsky/store/Cli.java | 13 +- src/cloud/lunarsky/store/ClientLimits.java | 251 ++++++ src/cloud/lunarsky/store/ClusterStore.java | 731 ++++++++++++++--- src/cloud/lunarsky/store/Crc64Nvme.java | 39 + src/cloud/lunarsky/store/DiskStore.java | 652 +++++++++++++++- src/cloud/lunarsky/store/Main.java | 734 ++++++++++++++++-- .../lunarsky/store/MultipartStorage.java | 12 +- src/cloud/lunarsky/store/MultipartStore.java | 37 +- src/cloud/lunarsky/store/NodeClient.java | 68 +- .../lunarsky/store/ObjectAttributes.java | 114 +++ src/cloud/lunarsky/store/ObjectStorage.java | 99 ++- src/cloud/lunarsky/store/SchemaMigrator.java | 59 +- src/cloud/lunarsky/store/SigV4.java | 115 ++- src/cloud/lunarsky/store/StoreException.java | 18 + src/cloud/lunarsky/store/UploadChecksums.java | 32 +- src/cloud/lunarsky/store/Version.java | 2 +- src/cloud/lunarsky/store/XxHashes.java | 32 + test/cloud/lunarsky/store/CliTest.java | 15 + .../lunarsky/store/ClientLimitsTest.java | 98 +++ .../cloud/lunarsky/store/ClusterNodeTest.java | 20 +- test/cloud/lunarsky/store/HttpTest.java | 549 ++++++++++++- test/cloud/lunarsky/store/StoreTest.java | 284 +++++++ tests/two-host/README.md | 50 ++ tests/two-host/check.py | 137 ++++ tests/two-host/compose.yaml | 120 +++ tests/two-host/prepare.py | 56 ++ 61 files changed, 7082 insertions(+), 267 deletions(-) create mode 100644 client/.gitignore create mode 100644 client/README.md create mode 100644 client/examples/README.md create mode 100644 client/examples/awt-images/ImageManager.java create mode 100755 client/examples/awt-images/run-test.sh create mode 100755 client/examples/awt-images/run.sh create mode 100644 client/examples/awt-images/screenshot.png create mode 100644 client/scripts/build.sh create mode 100644 client/scripts/test.sh create mode 100644 client/src/main/java/cloud/lunarsky/objectstore/client/AclPolicy.java create mode 100644 client/src/main/java/cloud/lunarsky/objectstore/client/Capabilities.java create mode 100644 client/src/main/java/cloud/lunarsky/objectstore/client/Json.java create mode 100644 client/src/main/java/cloud/lunarsky/objectstore/client/ObjectStorageClient.java create mode 100644 client/src/main/java/cloud/lunarsky/objectstore/client/ObjectStorageClientBuilder.java create mode 100644 client/src/main/java/cloud/lunarsky/objectstore/client/ObjectStorageException.java create mode 100644 client/src/main/java/cloud/lunarsky/objectstore/client/ProtocolException.java create mode 100644 client/src/main/java/cloud/lunarsky/objectstore/client/SigV4.java create mode 100644 client/src/main/java/cloud/lunarsky/objectstore/client/TransportException.java create mode 100644 client/src/main/java/cloud/lunarsky/objectstore/client/Xml.java create mode 100644 client/src/test/java/cloud/lunarsky/objectstore/client/ClientTest.java create mode 100644 client/src/test/java/cloud/lunarsky/objectstore/client/MultipartClientTest.java create mode 100644 lib/LICENSE.hash4j create mode 100644 lib/hash4j-0.30.0.jar create mode 100644 src/cloud/lunarsky/store/Acl.java create mode 100644 src/cloud/lunarsky/store/AwsChunkedInputStream.java create mode 100644 src/cloud/lunarsky/store/ClientLimits.java create mode 100644 src/cloud/lunarsky/store/Crc64Nvme.java create mode 100644 src/cloud/lunarsky/store/ObjectAttributes.java create mode 100644 src/cloud/lunarsky/store/XxHashes.java create mode 100644 test/cloud/lunarsky/store/ClientLimitsTest.java create mode 100644 tests/two-host/README.md create mode 100644 tests/two-host/check.py create mode 100644 tests/two-host/compose.yaml create mode 100644 tests/two-host/prepare.py diff --git a/.env.example b/.env.example index eec2e2b..ae964f9 100644 --- a/.env.example +++ b/.env.example @@ -7,3 +7,9 @@ S3_REGION=us-east-1 HOST_PORT=9000 MAX_OBJECT_BYTES=134217728 MAX_TOTAL_BYTES=2147483648 +PUBLIC_REQUESTS_PER_SECOND=0 +PUBLIC_REQUEST_BURST= +PUBLIC_BYTES_PER_SECOND=0 +PUBLIC_BYTE_BURST= +PUBLIC_MAX_IN_FLIGHT_PER_IP= +PUBLIC_TRUSTED_PROXY_IPS= diff --git a/Dockerfile b/Dockerfile index ea4898e..4694a96 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,19 +4,24 @@ RUN wget -q -O /tmp/postgresql.jar https://jdbc.postgresql.org/download/postgres echo '73914527305a40cce504b0d3d90b23caf565136912d607ae8ae7c5895512332c /tmp/postgresql.jar' | sha256sum -c - COPY src ./src COPY test ./test -RUN mkdir /out && javac --release 21 --add-modules jdk.httpserver,java.net.http -d /out src/cloud/lunarsky/store/*.java test/cloud/lunarsky/store/*.java -RUN java --add-modules jdk.httpserver -cp /out cloud.lunarsky.store.StoreTest -RUN java --add-modules jdk.httpserver -cp /out cloud.lunarsky.store.ConcurrencyTest -RUN java --add-modules jdk.httpserver,java.net.http -cp /out cloud.lunarsky.store.HttpTest -RUN java --add-modules jdk.httpserver,java.net.http -cp /out cloud.lunarsky.store.ClusterNodeTest -RUN java -cp /out cloud.lunarsky.store.CliTest +COPY lib/hash4j-0.30.0.jar /tmp/hash4j.jar +RUN echo 'd3224b113ea835ce3452097747e5209ec760cf443dbed770d6ba68a0d480178f /tmp/hash4j.jar' | sha256sum -c - +RUN mkdir /out && javac --release 21 --add-modules jdk.httpserver,java.net.http -cp /tmp/hash4j.jar -d /out src/cloud/lunarsky/store/*.java test/cloud/lunarsky/store/*.java +RUN java --add-modules jdk.httpserver -cp /out:/tmp/hash4j.jar cloud.lunarsky.store.StoreTest +RUN java --add-modules jdk.httpserver -cp /out:/tmp/hash4j.jar cloud.lunarsky.store.ConcurrencyTest +RUN java --add-modules jdk.httpserver,java.net.http -cp /out:/tmp/hash4j.jar cloud.lunarsky.store.HttpTest +RUN java --add-modules jdk.httpserver,java.net.http -cp /out:/tmp/hash4j.jar cloud.lunarsky.store.ClientLimitsTest +RUN java --add-modules jdk.httpserver,java.net.http -cp /out:/tmp/hash4j.jar cloud.lunarsky.store.ClusterNodeTest +RUN java -cp /out:/tmp/hash4j.jar cloud.lunarsky.store.CliTest FROM eclipse-temurin:21-jre-alpine RUN addgroup -g 10001 store && adduser -D -u 10001 -G store store && mkdir /data && chown store:store /data COPY --from=build /out /app COPY --from=build /tmp/postgresql.jar /app/postgresql.jar +COPY --from=build /tmp/hash4j.jar /app/hash4j.jar +COPY lib/LICENSE.hash4j /app/LICENSE.hash4j COPY scripts/objectstore /usr/local/bin/objectstore RUN chmod 755 /usr/local/bin/objectstore USER store EXPOSE 9000 -ENTRYPOINT ["java", "-XX:MaxRAMPercentage=70", "-Dsun.net.httpserver.maxReqTime=30", "-Dsun.net.httpserver.maxRspTime=60", "-Dsun.net.httpserver.maxReqHeaders=64", "--add-modules", "jdk.httpserver,java.net.http", "-cp", "/app:/app/postgresql.jar", "cloud.lunarsky.store.Main"] +ENTRYPOINT ["java", "-XX:MaxRAMPercentage=70", "-Dsun.net.httpserver.maxReqTime=30", "-Dsun.net.httpserver.maxRspTime=60", "-Dsun.net.httpserver.maxReqHeaders=64", "--add-modules", "jdk.httpserver,java.net.http", "-cp", "/app:/app/postgresql.jar:/app/hash4j.jar", "cloud.lunarsky.store.Main"] diff --git a/README.md b/README.md index af6c130..37a2117 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,10 @@ Source: [GitHub](https://github.com/LunarSkyOSS/ObjectStore) · [Gitea mirror](h - [S3 API support checklist](#s3-api-support-checklist) - [Tests](TESTS.md) - [Single-node setup](#single-node-setup) +- [Access keys and ACLs](#access-keys-and-acls) - [CLI and tests](#cli-and-tests) +- [Capability discovery](#capability-discovery) +- [Java client](#java-client) - [Local cluster prototype](#local-cluster-prototype) - [Migrating a local cluster](#migrating-a-local-cluster) - [Adding a cluster node](#adding-a-cluster-node) @@ -27,7 +30,7 @@ Source: [GitHub](https://github.com/LunarSkyOSS/ObjectStore) · [Gitea mirror](h ## Capability checklist -ObjectStore serves one configured bucket. +ObjectStore creates the configured default bucket at startup. Additional buckets share the configured capacity limit. - ✅ Persistent single-node storage with checksum verification - ✅ Configurable per-object and total logical size limits @@ -35,26 +38,34 @@ ObjectStore serves one configured bucket. - ✅ Local cluster prototype with stable node IDs and host-aware placement code - ✅ Opt-in automatic repair, rebalance, and guarded garbage collection in the local cluster - ✅ Metadata backup and tested restore to a separate local PostgreSQL instance +- ✅ Manual [two-machine durability and metadata-restore drill](tests/two-host/README.md) - ⬜ Production multi-server deployment and metadata failover New objects retain their content type and key. Objects written by the earlier single-node format remain readable, but cannot appear in listings until overwritten because their original keys were not stored. ## S3 API support checklist -- ✅ Header-based AWS Signature Version 4 authentication +- ✅ Header-based and presigned-query AWS Signature Version 4 authentication - ✅ `PutObject`, `GetObject`, `HeadObject`, and `DeleteObject` in both modes - ✅ Single-range GET and `ListObjectsV2` in both modes - ✅ SHA-256 payload verification and `x-amz-checksum-sha256` in both modes -- ✅ `Content-MD5` and CRC32, CRC32C, SHA-1, SHA-256, SHA-512, and MD5 checksum headers on `PutObject` and `UploadPart` +- ✅ `Content-MD5` and CRC32, CRC32C, CRC64NVME, XXHash64, XXHash3, XXHash128, SHA-1, SHA-256, SHA-512, and MD5 checksum headers on `PutObject` and `UploadPart` - ✅ `CreateMultipartUpload`, `UploadPart`, `CompleteMultipartUpload`, and `AbortMultipartUpload` in both modes - ✅ `ListParts` and `ListMultipartUploads` in both modes -- ⬜ Presigned URLs and streaming Signature V4 uploads -- ✅ `CopyObject` within the configured bucket, with `COPY` and `REPLACE` content-type behavior -- ⬜ CRC64NVME and XXHash checksums, checksum trailers, and persisted non-SHA-256 checksum metadata -- ⬜ Bucket creation and listing, object versioning, ACLs, tags, and user metadata +- ✅ Presigned URLs and signed streaming Signature V4 uploads, including signed checksum trailers +- ✅ `CreateBucket`, `HeadBucket`, `DeleteBucket`, and `ListBuckets` in both modes +- ✅ `CopyObject` across owned buckets, with `COPY` and `REPLACE` content-type and user-metadata behavior +- ✅ User metadata on object and multipart uploads; object tags on upload, copy, and the tagging subresource +- ✅ CRC64NVME and XXHash checksums, checksum trailers, and persisted object checksum metadata +- ✅ Bucket versioning with retained versions, delete markers, and version-specific reads, copies, deletes, and tags in both modes +- ✅ Basic bucket and object ACL grants, public reads, and multiple access-key identities +- ⬜ Full AWS ACL ownership controls, email grantees, and bucket policies This is an S3 API subset, not full AWS S3 compatibility. Unsupported S3 operations and Amazon-specific headers are rejected. -Checksum values are validated before an object or part is published. Non-SHA-256 checksums are returned on upload but are not stored for later reads. Copies use the existing object size limit and do not support cross-bucket or versioned sources. +Buckets use the same three-to-63-character lowercase names as the configured default bucket. The default bucket cannot be deleted through the API. Bucket creation currently accepts the empty-body request used for the configured region. Tags do not control access. +Versioning supports enabled and suspended states, historical object versions, null versions, and delete markers. Retained versions count toward the capacity limit. Deleting a specific version is permanent. Lifecycle expiration, MFA Delete, and `ListObjectVersions` delimiter grouping are not supported yet. +User metadata values currently accept printable ASCII only; non-ASCII metadata header encoding is not yet supported. +Checksums supplied with `PutObject` are validated before publication and retained across restarts, copies, and object versions. When no checksum is supplied, ObjectStore calculates and stores CRC64NVME, including for completed multipart uploads. Request `x-amz-checksum-mode: ENABLED` on `GetObject` or `HeadObject` to receive the stored checksum. `UploadPart` checksums are validated but are not yet returned by `ListParts` or combined into a multipart checksum; the completed object's CRC64NVME covers its full content. Presigned URLs use query Signature V4 with a maximum seven-day expiry. Streaming uploads support signed `aws-chunked` payloads and one signed checksum trailer. Temporary credentials and other streaming payload modes remain unsupported. Copies use the existing object size limit. ## Single-node setup @@ -70,6 +81,14 @@ Port 9000 binds to localhost. Data stays in the `object-data` Docker volume. `do The standalone defaults are 128 MiB per object and 2 GiB total. Set `MAX_OBJECT_BYTES` and `MAX_TOTAL_BYTES` in `.env` to change them. Incomplete multipart uploads consume space until aborted. +## Access keys and ACLs + +`S3_ACCESS_KEY` is the owner identity. Its secret is `S3_SECRET_KEY`. Additional keys are optional: place one `ACCESSKEY:secret` pair per line in a file mounted read-only inside the container, and set `S3_CREDENTIALS_FILE=/run/secrets/s3-credentials` in the environment file. Use a Compose override to mount an absolute host path at `/run/secrets/s3-credentials` for the `objectstore` service (or `gateway` in cluster mode). Each access key needs 16–128 alphanumeric characters and each secret at least 32 characters. A restart loads changes to that file. Keep it outside Git and protect it as a secret. Additional identities have no access until the owner grants it. + +The owner can send `x-amz-acl: public-read` or signed `x-amz-grant-*` headers on bucket creation, object uploads, copies, and multipart initiation. `GET` and `PUT ?acl` support bucket and object ACLs; a PUT accepts either signed grant headers with an empty body or an XML `AccessControlPolicy`. A grantee ID is its configured access key. Supported permissions are `READ`, `WRITE`, `READ_ACP`, `WRITE_ACP`, and `FULL_CONTROL`. The `AllUsers` group is limited to `READ`; `AuthenticatedUsers` is also recognized. Anonymous reads work only where `AllUsers` has a read grant. Replacing an object starts with a private ACL unless the new upload supplies grants; older version ACLs remain attached to their versions. + +This is a deliberately limited ACL subset. The configured owner owns every bucket and object. A `WRITE_ACP` grantee can change an object ACL only on a retained, non-null version; updates to current unversioned and null versions require the owner key. List-versions, multipart inspection, tagging, versioning controls, bucket creation/deletion, and the capability endpoint remain owner-only. There are no IAM policies, email grantees, Object Ownership modes, Block Public Access settings, or temporary credentials. Granting public bucket `READ` exposes object names through `ListObjectsV2`; granting public object `READ` exposes that object's bytes. Review those grants before exposing a gateway to the internet. + ## CLI and tests From the server shell, run the CLI inside the running container from the directory containing `compose.yaml`: @@ -82,8 +101,20 @@ docker compose exec objectstore objectstore version The startup log shows the LunarSky banner, version, and a small storage summary (`docker compose logs --tail=20 objectstore`). `status` reports object and multipart usage. `verify` also checks stored payload hashes and exits nonzero on an error. Both commands can run while the service is live; they are not a snapshot or a backup. +## Capability discovery + +ObjectStore provides a signed `GET /_objectstore/capabilities` endpoint. Use the same header-based Signature V4 authentication as the S3 API. It returns JSON with `schemaVersion: 1`, the service and software version, storage mode, supported operation names, and configured limits. The endpoint does not disclose credentials or cluster topology. The response has `Cache-Control: no-store` because limits can change after a restart. + +`operations` lists implemented API operations, not every AWS option for each operation or the caller's authorization to use them. `limits.maxObjectBytes` applies to a completed object and to each uploaded part; `limits.maxTotalBytes` is the logical storage limit; `limits.maxParts` is 10,000. Future schema version 1 responses may add fields. Clients should ignore unknown fields and treat unknown operation names as unsupported by their own implementation. This endpoint is an ObjectStore extension; a missing endpoint on another S3-compatible service does not prove that a feature is unavailable. + Run `sh scripts/test.sh` with JDK 21 to test from source. See [TESTS.md](TESTS.md) for coverage, the disposable Docker cluster suite, and the limits of those tests. +The server includes [hash4j](https://github.com/dynatrace-oss/hash4j) for streaming XXHash checksums. Its Apache-2.0 license is included at [lib/LICENSE.hash4j](lib/LICENSE.hash4j). + +## Java client + +The [JDK-only Java client](client/README.md) works with ObjectStore and other S3-compatible endpoints. It supports object transfers, listing, multipart uploads, and read-only capability discovery. An [AWT image manager](client/examples/README.md) provides a small desktop example. Run `bash client/scripts/build.sh` to produce its JAR and Javadoc locally. + ## Local cluster prototype The local cluster prototype starts three segment containers and one PostgreSQL container on the same Docker host. Copy `.env.cluster.example` to a private environment file, replace all four credentials, and run: @@ -130,6 +161,14 @@ The maintenance service is opt-in. It repairs missing or corrupt replicas and re ## Limits and safety +Public-client limits are **disabled by default**. The localhost Compose setup is unchanged. For an endpoint that accepts external clients, set one or both of `PUBLIC_REQUESTS_PER_SECOND` and `PUBLIC_BYTES_PER_SECOND` to a positive number in `.env`. The first limits requests per client IP with a token bucket; the second paces upload and download bytes through one shared per-IP budget. `PUBLIC_REQUEST_BURST` and `PUBLIC_BYTE_BURST` default to one second of their respective rates. `PUBLIC_MAX_IN_FLIGHT_PER_IP` defaults to 8 when either rate is enabled. Requests above the rate or concurrency limit receive S3 `503 SlowDown` and `Retry-After: 1`; an admitted transfer is paced rather than cut off. These are per-gateway limits, not cluster-wide quotas. The existing 16-request gateway cap and storage limits still apply. + +For example, to start with 100 requests per second and 16 MiB/s combined upload and download per IP, set `PUBLIC_REQUESTS_PER_SECOND=100` and `PUBLIC_BYTES_PER_SECOND=16777216`. Both start with a one-second burst. Adjust these numbers after measuring the actual workload; do not copy them as a universal production policy. + +ObjectStore uses the socket peer as the client IP and ignores forwarded-IP headers by default. If a reverse proxy sits between external clients and ObjectStore, set `PUBLIC_TRUSTED_PROXY_IPS` to the exact IP address that ObjectStore sees for that proxy and configure the proxy to **replace** `X-Real-IP` with its actual client IP. A request from that trusted peer without exactly one valid numeric `X-Real-IP` is rejected. Do not trust an address reachable by arbitrary clients, and preserve the original `Host` header for Signature V4. In Docker, the proxy's address as seen by the container may be a bridge address rather than `127.0.0.1`. If proxy trust is not configured, all clients behind that proxy share its budget; this is safe from header spoofing but may throttle them together. + +Enable these limits only on a deliberately public endpoint. They also apply to direct localhost storage calls to that same endpoint; leave them disabled for the local-only setup or run a separate local-only instance if local storage calls must be exempt. A direct loopback `/health` probe without a forwarded-IP header remains exempt. The byte limit is aggregate ingress plus egress for each IP, and several users behind one NAT share it. If a proxy buffers complete uploads before forwarding them, the upload byte limit controls proxy-to-ObjectStore traffic, not the client's initial upload speed; disable request buffering when end-to-end upload pacing is required. It is a fairness control, not a defense against connection floods before the Java handler runs. Put an internet-facing proxy or firewall in front of the gateway for TLS, connection limits, request timeouts, and buffering controls. Do not expose storage nodes or PostgreSQL publicly. + The local cluster has no automatic metadata failover, private-network TLS, scoped credentials, or physical host verification. Garbage collection can remove data required by an older metadata backup, so its retention guard is essential. Host UUIDs are operator labels, not proof that machines have separate power, disks, or network paths. Keep `CLUSTER_LOCAL_DEV=true` limited to local tests. The standalone cluster node binds to localhost by default. Set `NODE_BIND` only for a private test network; the Compose file binds inside its private Docker network. PostgreSQL JDBC 42.7.14 is bundled in the image with its license inside the JAR. diff --git a/TESTS.md b/TESTS.md index a42eec6..cb21368 100644 --- a/TESTS.md +++ b/TESTS.md @@ -16,11 +16,13 @@ The script compiles the source and test programs into `out/classes`, then runs: | Test | Checks | | --- | --- | -| `StoreTest` | Signature V4 test vector and tampering, local writes and reads, quotas, restart persistence, multipart recovery, legacy reads, locking, and corruption rejection. | +| `StoreTest` | Signature V4 and signed-stream vectors, CRC64NVME and XXHash reference vectors, local writes and reads, quotas, restart persistence for objects, checksums, ACLs, attributes, buckets, and versions, multipart recovery, legacy reads, locking, and corruption rejection. | | `ConcurrencyTest` | Atomic local overwrites and consistent reads, listings, and deletes during concurrent access. | -| `HttpTest` | Signed HTTP requests, object operations, same-bucket copies, checksum acceptance and rejection, ranges, listing, and multipart uploads in single-node mode. | +| `HttpTest` | Signed capability discovery, presigned URLs, streaming uploads and trailers, object and bucket operations, ACL grants with a second access key and public reads, copies, checksum persistence and rejection, ranges, listing, metadata, tags, multipart uploads, and versioning in single-node mode. | +| `ClientLimitsTest` | Disabled defaults, trusted-proxy address validation, ignored untrusted headers, per-IP request refusal, and paced response bytes. | | `ClusterNodeTest` | Node identity and locking, authenticated segment transfers, checksum rejection, repair authorization, inventory and guarded deletion, and restart cleanup. | | `CliTest` | Version, status, verification, and a nonzero result for corrupt data. | +| `ClientTest` and `MultipartClientTest` | Java client request signing, capability discovery, error handling, and multipart operations. | The script exits nonzero on failure. The test programs use temporary local directories and loopback HTTP ports; they do not use an existing ObjectStore volume. @@ -47,10 +49,14 @@ COMPOSE_PROJECT_NAME=objectstore-tests docker compose --env-file /tmp/objectstor If port 9001 is occupied, set `CLUSTER_HOST_PORT` to the same free port in both the environment file and the shell before running the script. The script reads that port from the shell; Compose reads it from the file. -The Docker suite checks signed S3 operations, same-bucket copies, upload checksums, multi-segment objects, concurrent overwrites, multipart staging and listings, completion after a gateway restart and node loss, reads and writes with a node stopped, refusal to write without a storage quorum, restart recovery, corrupt-replica repair including staged parts, metadata unavailability, and placement on a newly joined node. It then checks rebalance to the fourth node, automatic repair, garbage collection dry run and delayed deletion, and a metadata backup restored to a separate PostgreSQL instance while the primary is stopped. It also checks that containers labeled as one physical host cannot satisfy the normal host quorum. Its local-only override permits the remaining phases to use containers as separate test domains. +The Docker suite checks signed capability discovery and S3 operations, bucket creation and deletion, metadata and tags, public-read ACLs and anonymous access, copies, upload checksums, multi-segment objects, concurrent overwrites, multipart staging and listings, versioned reads and delete markers, versioned multipart completion, completion after a gateway restart and node loss, reads and writes with a node stopped, refusal to write without a storage quorum, restart recovery, corrupt-replica repair including staged parts, metadata unavailability, and placement on a newly joined node. It then checks rebalance to the fourth node, automatic repair, garbage collection dry run and delayed deletion, and a metadata backup restored to a separate PostgreSQL instance while the primary is stopped. Historical regular and multipart versions are checked after repair and cleanup. It also checks that containers labeled as one physical host cannot satisfy the normal host quorum. Its local-only override permits the remaining phases to use containers as separate test domains. `ClusterMigrationTest` is a separate legacy-format fixture and is **not** run by either test script. Do not run its `create` phase against a populated metadata database. The migration procedure is in the [README](README.md#migrating-a-local-cluster). +## Two-machine durability drill + +The [manual two-machine drill](tests/two-host/README.md) uses machine A and machine B with disposable volumes. It records acknowledged writes during a machine interruption, checks reads and write rejection with either storage machine unavailable, restarts test containers during writes, and restores a metadata backup on machine B. This drill is not part of `scripts/test.sh` because it requires two machines and a coordinated interruption. + ## What these tests do not prove - Container stops are not physical power cuts or disk failures. The automated suite does not reboot a host or test every possible crash point. diff --git a/client/.gitignore b/client/.gitignore new file mode 100644 index 0000000..849ddff --- /dev/null +++ b/client/.gitignore @@ -0,0 +1 @@ +dist/ diff --git a/client/README.md b/client/README.md new file mode 100644 index 0000000..991ab40 --- /dev/null +++ b/client/README.md @@ -0,0 +1,58 @@ +# ObjectStore Java client + +A small, synchronous S3-compatible client built with the JDK alone. It uses path-style URLs and AWS Signature Version 4. The code is covered by the repository's MIT license. + +## Build and test + +Requires JDK 21 or newer. No Maven, Gradle, or third-party Java libraries are needed. + +```sh +bash client/scripts/test.sh +bash client/scripts/build.sh +``` + +Run these commands from the ObjectStore repository root. The second command writes `client/dist/objectstore-client.jar` and `client/dist/javadoc/`. + +The [AWT image manager](examples/README.md) is a small drag-and-drop app for trying uploads, listing, previews, downloads, and deletes against an existing bucket. + +## Use + +```java +import cloud.lunarsky.objectstore.client.ObjectStorageClient; +import cloud.lunarsky.objectstore.client.ObjectStorageClientBuilder; +import java.net.URI; +import java.nio.charset.StandardCharsets; + +try (ObjectStorageClient storage = new ObjectStorageClientBuilder() + .endpoint(URI.create("https://storage.example.com")) + .region("us-east-1") + .credentials(accessKey, secretKey) + .build()) { + storage.putObject("photos", "hello.txt", "hello".getBytes(StandardCharsets.UTF_8), "text/plain"); + try (ObjectStorageClient.ObjectData data = storage.getObject("photos", "hello.txt")) { + data.body().transferTo(System.out); + } +} +``` + +`getObject` returns an open stream. Close it even if you do not read every byte. The client requires HTTPS unless you explicitly call `allowInsecureHttp()` for a trusted local endpoint. + +## Scope + +This version implements single-request object PUT, GET, HEAD, DELETE, ListObjectsV2 pages, standard S3 multipart initiation/part upload/list/complete/abort, unfinished-upload listing, bucket/object ACL GET and PUT, and service detection. ACLs are S3 ACL requests, not a calculation of effective permissions from IAM policies or bucket policies. An S3 service with ACLs disabled can reject them; ObjectStore implements a limited ACL subset. + +`getCapabilities()` reads ObjectStore's signed `GET /_objectstore/capabilities` response when available. It reports implemented S3 operation names, service version, storage mode, and configured limits. A listed operation means the service implements it; it does not establish that the current key may perform it or that every AWS option is supported. Older ObjectStore builds fall back to `/health` and leave unverified operations `UNKNOWN`. The response is not cached. + +For a generic S3 endpoint, successful operations on this client are recorded as `SUPPORTED`; all untested operations remain `UNKNOWN`. Call `probeReadOnlyCapabilities(bucket, existingObjectKey)` to opt into safe read probes. An S3 denial or missing object leaves that operation `UNKNOWN`, not `UNSUPPORTED`. The client never infers features from a hostname or vendor header. The older `/health` identity fallback is self-reported, not cryptographic attestation. + +Multipart upload sessions expose their bucket, key, and upload ID so a caller can persist them and inspect already uploaded parts after a restart. `uploadFileParts` sends a file in sequential parts and leaves completion to the caller. If it fails, the upload remains open for retry or explicit abort; keep the returned upload ID and do not change the source file. + +The client does not yet implement presigned URLs, credential providers, automatic retries, region redirects, or streaming uploads of unknown length. A single-request file upload hashes the file before sending it; do not modify the file while the upload runs. The client does not retry writes because a lost response can leave their outcome uncertain. + +## Errors + +- `ObjectStorageException`: an HTTP error, with status, S3 error code, request ID, and a retryability hint. +- `TransportException`: connection or I/O failure. A write may already have completed. +- `ProtocolException`: an unexpected or malformed successful response. + +The client does not include access keys, secret keys, or response bodies in exception messages. diff --git a/client/examples/README.md b/client/examples/README.md new file mode 100644 index 0000000..a8f8cdc --- /dev/null +++ b/client/examples/README.md @@ -0,0 +1,37 @@ +# Examples + +## AWT image manager + +![Image manager previewing a cat photo in the local test service](awt-images/screenshot.png) + +Cat photo in the screenshot: [IOP Publishing source image](https://ioppublishing.org/wp-content/uploads/2017/03/cat-web-cc0.jpg). + +Run from the ObjectStore repository root with JDK 21 or newer: + +```sh +bash client/examples/awt-images/run.sh +``` + +The example uses only the Java client and the JDK. Enter an S3-compatible endpoint, region, existing bucket, and access keys. Use **Connect** to verify listing access. Drag PNG, JPEG, GIF, or BMP files onto the window, or use **Add images**. Select an object to preview it; use **Download** or **Delete** to manage it. Objects go under the specified key prefix with a short random ID, so uploading the same filename does not silently replace an earlier image. The list loads 100 objects at a time. + +The example does not create a bucket. When launched directly, it keeps credentials in memory and requires explicit opt-in for plain HTTP. Use HTTP only with a trusted test service. Uploads are limited to 64 MiB per file, and previews to 12 MiB. This is a small interoperability test app, not a production asset manager. + +### Local Docker test + +Prerequisites: JDK 21 or newer, Bash, Python 3, `curl`, and a graphical desktop session. Docker must be running and accessible to your user, and `127.0.0.1:9002` must be free for the test container. + +To try the app with a separate ObjectStore service, run: + +```sh +bash client/examples/awt-images/run-test.sh +``` + +The launcher builds its local image if needed, starts a test container on `127.0.0.1:9002`, and opens the app connected to a `photos` bucket. Set `OBJECTSTORE_TEST_IMAGE` to use a different image. Closing the app leaves the container and its dedicated data volume running; run the launcher again to reconnect. Its generated test credentials are stored in the container's Docker configuration. + +When finished, remove only this example's container and volume: + +```sh +docker stop objectstore-image-example +docker rm objectstore-image-example +docker volume rm objectstore-image-example-data +``` diff --git a/client/examples/awt-images/ImageManager.java b/client/examples/awt-images/ImageManager.java new file mode 100644 index 0000000..4ebd8a0 --- /dev/null +++ b/client/examples/awt-images/ImageManager.java @@ -0,0 +1,503 @@ +import cloud.lunarsky.objectstore.client.Capabilities; +import cloud.lunarsky.objectstore.client.ObjectStorageClient; +import cloud.lunarsky.objectstore.client.ObjectStorageClientBuilder; + +import java.awt.BorderLayout; +import java.awt.Button; +import java.awt.Canvas; +import java.awt.Checkbox; +import java.awt.Color; +import java.awt.Dialog; +import java.awt.Dimension; +import java.awt.EventQueue; +import java.awt.FileDialog; +import java.awt.FlowLayout; +import java.awt.Font; +import java.awt.Frame; +import java.awt.Graphics; +import java.awt.GridLayout; +import java.awt.Label; +import java.awt.Panel; +import java.awt.TextField; +import java.awt.dnd.DnDConstants; +import java.awt.dnd.DropTarget; +import java.awt.dnd.DropTargetAdapter; +import java.awt.dnd.DropTargetDropEvent; +import java.awt.datatransfer.DataFlavor; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.awt.image.BufferedImage; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.net.URI; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardCopyOption; +import java.time.Duration; +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; +import java.util.UUID; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.atomic.AtomicLong; +import javax.imageio.ImageIO; +import javax.imageio.ImageReader; +import javax.imageio.stream.ImageInputStream; +import javax.imageio.stream.MemoryCacheImageInputStream; + +/** A small, dependency-free image browser for testing an S3-compatible endpoint. */ +@SuppressWarnings("serial") +public final class ImageManager extends Frame { + private static final long MAX_UPLOAD = 64L * 1024 * 1024; + private static final int MAX_PREVIEW = 12 * 1024 * 1024; + private static final Color BACKGROUND = new Color(29, 27, 38); + private static final Color FOREGROUND = new Color(231, 223, 240); + + private final TextField endpoint = new TextField(env("S3_ENDPOINT", "http://localhost:9000")); + private final TextField region = new TextField(env("S3_REGION", "us-east-1")); + private final TextField bucket = new TextField(env("S3_BUCKET", "photos")); + private final TextField prefix = new TextField("images/"); + private final TextField access = new TextField(env("S3_ACCESS_KEY", "")); + private final TextField secret = new TextField(env("S3_SECRET_KEY", "")); + private final Checkbox allowHttp = new Checkbox("Allow HTTP for trusted tests", null, + Boolean.parseBoolean(env("S3_ALLOW_HTTP", "false"))); + private final java.awt.List images = new java.awt.List(15, false); + private final ImageCanvas preview = new ImageCanvas(); + private final Label status = new Label("Enter a bucket and credentials, then connect. Drop images to upload."); + private final Button connectButton = new Button("Connect"); + private final Button moreButton = new Button("Load more"); + private final ExecutorService io = Executors.newSingleThreadExecutor(r -> { + Thread thread = new Thread(r, "objectstore-image-example"); + thread.setDaemon(true); + return thread; + }); + private final AtomicLong previewRevision = new AtomicLong(); + private final List entries = new ArrayList<>(); + private volatile ObjectStorageClient client; + private volatile String activeBucket; + private volatile String activePrefix; + private String nextToken; + + private ImageManager() { + super("ObjectStore image manager"); + setLayout(new BorderLayout(8, 8)); + setBackground(BACKGROUND); + setForeground(FOREGROUND); + setSize(920, 640); + setMinimumSize(new Dimension(650, 440)); + setLocationRelativeTo(null); + secret.setEchoChar('\u2022'); + + Panel serviceFields = new Panel(new GridLayout(2, 4, 8, 3)); + serviceFields.add(label("Endpoint")); + serviceFields.add(label("Region")); + serviceFields.add(label("Bucket")); + serviceFields.add(label("Key prefix")); + serviceFields.add(endpoint); + serviceFields.add(region); + serviceFields.add(bucket); + serviceFields.add(prefix); + Panel credentialFields = new Panel(new GridLayout(2, 2, 8, 3)); + credentialFields.add(label("Access key")); + credentialFields.add(label("Secret key")); + credentialFields.add(access); + credentialFields.add(secret); + Panel connection = new Panel(new BorderLayout(0, 5)); + connection.add(serviceFields, BorderLayout.NORTH); + connection.add(credentialFields, BorderLayout.CENTER); + + Panel actions = new Panel(new FlowLayout(FlowLayout.LEFT, 8, 4)); + Button upload = new Button("Add images..."); + Button refresh = new Button("Refresh"); + Button download = new Button("Download"); + Button delete = new Button("Delete"); + actions.add(allowHttp); + actions.add(connectButton); + actions.add(upload); + actions.add(refresh); + actions.add(moreButton); + actions.add(download); + actions.add(delete); + moreButton.setEnabled(false); + + Panel top = new Panel(new BorderLayout(0, 5)); + top.add(connection, BorderLayout.CENTER); + top.add(actions, BorderLayout.SOUTH); + add(top, BorderLayout.NORTH); + + Panel listing = new Panel(new BorderLayout(0, 5)); + listing.setPreferredSize(new Dimension(285, 400)); + listing.add(label("Images in this prefix"), BorderLayout.NORTH); + listing.add(images, BorderLayout.CENTER); + add(listing, BorderLayout.WEST); + add(preview, BorderLayout.CENTER); + add(status, BorderLayout.SOUTH); + + connectButton.addActionListener(event -> connect()); + upload.addActionListener(event -> chooseImages()); + refresh.addActionListener(event -> loadPage(true)); + moreButton.addActionListener(event -> loadPage(false)); + download.addActionListener(event -> downloadSelected()); + delete.addActionListener(event -> deleteSelected()); + images.addItemListener(event -> previewSelected()); + installDropTarget(this); + installDropTarget(preview); + installDropTarget(images); + addWindowListener(new WindowAdapter() { + @Override public void windowClosing(WindowEvent event) { + io.shutdownNow(); + ObjectStorageClient previous = client; + if (previous != null) Thread.ofVirtual().start(previous::close); + dispose(); + } + }); + if (Boolean.parseBoolean(env("S3_AUTO_CONNECT", "false"))) { + EventQueue.invokeLater(this::connect); + } + } + + private void connect() { + String url = endpoint.getText().trim(); + String location = region.getText().trim(); + String name = bucket.getText().trim(); + String folder = normalizePrefix(prefix.getText()); + String user = access.getText().trim(); + String password = secret.getText(); + boolean insecure = allowHttp.getState(); + connectButton.setEnabled(false); + setStatus("Connecting...", false); + io.execute(() -> { + ObjectStorageClient candidate = null; + try { + ObjectStorageClientBuilder builder = new ObjectStorageClientBuilder() + .endpoint(URI.create(url)).region(location).credentials(user, password) + .timeout(Duration.ofSeconds(30)); + if (insecure) builder.allowInsecureHttp(); + candidate = builder.build(); + candidate.listObjects(name, folder, null, 1); + ObjectStorageClient previous = client; + client = candidate; + activeBucket = name; + activePrefix = folder; + candidate = null; + if (previous != null) previous.close(); + String service = "S3-compatible service"; + try { + Capabilities found = client.getCapabilities(); + if (found.service() == Capabilities.ServiceKind.OBJECTSTORE) { + service = "ObjectStore" + (found.serviceVersion() == null ? "" : " " + found.serviceVersion()); + } + } catch (IOException ignored) { + // Listing already established the connection; service detection is optional. + } + String connectedService = service; + EventQueue.invokeLater(() -> { + connectButton.setEnabled(true); + setStatus("Connected to " + connectedService + ".", false); + loadPage(true); + }); + } catch (Exception error) { + if (candidate != null) candidate.close(); + showFailure("Connection failed", error); + EventQueue.invokeLater(() -> connectButton.setEnabled(true)); + } + }); + } + + private void loadPage(boolean first) { + if (client == null) { + setStatus("Connect first.", true); + return; + } + if (!first && nextToken == null) return; + String token = first ? null : nextToken; + moreButton.setEnabled(false); + setStatus(first ? "Loading images..." : "Loading more images...", false); + io.execute(() -> { + try { + ObjectStorageClient.ObjectPage page = client.listObjects(activeBucket, activePrefix, token, 100); + EventQueue.invokeLater(() -> { + if (first) { + previewRevision.incrementAndGet(); + entries.clear(); + images.removeAll(); + preview.show(null, "Select an image to preview"); + } + for (ObjectStorageClient.ObjectEntry entry : page.objects()) { + if (!isImage(entry.key())) continue; + entries.add(entry); + String name = entry.key().substring(activePrefix.length()); + images.add(name + " · " + sizeLabel(entry.size())); + } + nextToken = page.nextContinuationToken(); + moreButton.setEnabled(nextToken != null); + setStatus(entries.size() + " image(s) loaded" + + (nextToken == null ? "." : "; more available."), false); + }); + } catch (Exception error) { + showFailure("Could not list images", error); + EventQueue.invokeLater(() -> moreButton.setEnabled(token != null)); + } + }); + } + + private void chooseImages() { + FileDialog picker = new FileDialog(this, "Add images", FileDialog.LOAD); + picker.setMultipleMode(true); + picker.setVisible(true); + java.io.File[] selected = picker.getFiles(); + if (selected.length > 0) uploadImages(List.of(selected)); + } + + private void uploadImages(List files) { + if (client == null) { + setStatus("Connect first.", true); + return; + } + io.execute(() -> { + int uploaded = 0; + for (java.io.File file : files) { + try { + Path path = file.toPath(); + String name = path.getFileName().toString(); + String type = contentType(name); + if (type == null) throw new IOException("Unsupported image type"); + if (!Files.isRegularFile(path) || Files.size(path) > MAX_UPLOAD) + throw new IOException("Image must be a file of at most 64 MiB"); + String key = activePrefix + UUID.randomUUID() + "-" + name; + client.putObject(activeBucket, key, path, type); + uploaded++; + int completed = uploaded; + EventQueue.invokeLater(() -> setStatus("Uploaded " + completed + " of " + files.size() + ".", false)); + } catch (Exception error) { + showFailure("Could not upload " + file.getName(), error); + } + } + if (uploaded > 0) EventQueue.invokeLater(() -> loadPage(true)); + }); + } + + private void previewSelected() { + ObjectStorageClient.ObjectEntry entry = selectedEntry(); + long revision = previewRevision.incrementAndGet(); + if (entry == null) { + preview.show(null, "Select an image to preview"); + return; + } + preview.show(null, "Loading preview..."); + io.execute(() -> { + try (ObjectStorageClient.ObjectData data = client.getObject(activeBucket, entry.key())) { + if (data.length() > MAX_PREVIEW) throw new IOException("Preview exceeds 12 MiB"); + byte[] bytes = data.body().readNBytes(MAX_PREVIEW + 1); + if (bytes.length > MAX_PREVIEW) throw new IOException("Preview exceeds 12 MiB"); + BufferedImage image = decodePreview(bytes); + EventQueue.invokeLater(() -> { + if (previewRevision.get() == revision) preview.show(image, null); + }); + } catch (Exception error) { + EventQueue.invokeLater(() -> { + if (previewRevision.get() == revision) preview.show(null, "Preview unavailable"); + }); + showFailure("Could not preview image", error); + } + }); + } + + private void downloadSelected() { + ObjectStorageClient.ObjectEntry entry = selectedEntry(); + if (entry == null) { + setStatus("Select an image first.", true); + return; + } + FileDialog picker = new FileDialog(this, "Save image", FileDialog.SAVE); + picker.setFile(Path.of(entry.key()).getFileName().toString()); + picker.setVisible(true); + if (picker.getFile() == null) return; + Path destination = Path.of(picker.getDirectory(), picker.getFile()); + if (Files.exists(destination) && !confirm("Replace this file?", destination.toString())) return; + io.execute(() -> { + Path temporary = null; + try { + Path parent = destination.toAbsolutePath().getParent(); + temporary = Files.createTempFile(parent, ".objectstore-image-", ".part"); + try (ObjectStorageClient.ObjectData data = client.getObject(activeBucket, entry.key())) { + Files.copy(data.body(), temporary, StandardCopyOption.REPLACE_EXISTING); + } + Files.move(temporary, destination, StandardCopyOption.REPLACE_EXISTING); + EventQueue.invokeLater(() -> setStatus("Saved " + destination.getFileName() + ".", false)); + } catch (Exception error) { + showFailure("Download failed", error); + } finally { + if (temporary != null) { + try { Files.deleteIfExists(temporary); } catch (IOException ignored) { } + } + } + }); + } + + private void deleteSelected() { + ObjectStorageClient.ObjectEntry entry = selectedEntry(); + if (entry == null) { + setStatus("Select an image first.", true); + return; + } + if (!confirm("Delete this image?", entry.key())) return; + io.execute(() -> { + try { + client.deleteObject(activeBucket, entry.key()); + EventQueue.invokeLater(() -> { + previewRevision.incrementAndGet(); + loadPage(true); + }); + } catch (Exception error) { showFailure("Delete failed", error); } + }); + } + + private ObjectStorageClient.ObjectEntry selectedEntry() { + int index = images.getSelectedIndex(); + return index < 0 || index >= entries.size() ? null : entries.get(index); + } + + private void installDropTarget(java.awt.Component target) { + new DropTarget(target, DnDConstants.ACTION_COPY, new DropTargetAdapter() { + @Override public void drop(DropTargetDropEvent event) { + if (!event.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) { + event.rejectDrop(); + return; + } + try { + event.acceptDrop(DnDConstants.ACTION_COPY); + Object value = event.getTransferable().getTransferData(DataFlavor.javaFileListFlavor); + List dropped = (List) value; + List files = new ArrayList<>(); + for (Object item : dropped) if (item instanceof java.io.File file) files.add(file); + event.dropComplete(true); + EventQueue.invokeLater(() -> uploadImages(files)); + } catch (Exception error) { + event.dropComplete(false); + showFailure("Drop failed", error); + } + } + }, true); + } + + private boolean confirm(String title, String detail) { + Dialog dialog = new Dialog(this, title, true); + dialog.setLayout(new BorderLayout(12, 12)); + dialog.add(new Label(detail), BorderLayout.CENTER); + Panel buttons = new Panel(new FlowLayout(FlowLayout.RIGHT)); + boolean[] accepted = { false }; + Button cancel = new Button("Cancel"); + Button proceed = new Button("Continue"); + cancel.addActionListener(event -> dialog.dispose()); + proceed.addActionListener(event -> { accepted[0] = true; dialog.dispose(); }); + buttons.add(cancel); + buttons.add(proceed); + dialog.add(buttons, BorderLayout.SOUTH); + dialog.setSize(490, 120); + dialog.setLocationRelativeTo(this); + dialog.setVisible(true); + return accepted[0]; + } + + private void showFailure(String action, Exception error) { + EventQueue.invokeLater(() -> setStatus(action + ": " + error.getMessage(), true)); + } + + private void setStatus(String message, boolean failed) { + status.setForeground(failed ? new Color(245, 143, 157) : FOREGROUND); + status.setText(message); + } + + private static Label label(String text) { + return new Label(text); + } + + private static String normalizePrefix(String value) { + String cleaned = value.trim().replace('\\', '/'); + while (cleaned.startsWith("/")) cleaned = cleaned.substring(1); + return cleaned.isEmpty() || cleaned.endsWith("/") ? cleaned : cleaned + "/"; + } + + private static String contentType(String name) { + String lower = name.toLowerCase(Locale.ROOT); + if (lower.endsWith(".png")) return "image/png"; + if (lower.endsWith(".jpg") || lower.endsWith(".jpeg")) return "image/jpeg"; + if (lower.endsWith(".gif")) return "image/gif"; + if (lower.endsWith(".bmp")) return "image/bmp"; + return null; + } + + private static boolean isImage(String name) { + return contentType(name) != null; + } + + private static String sizeLabel(long bytes) { + return bytes < 1024 ? bytes + " B" : String.format(Locale.ROOT, "%.1f KiB", bytes / 1024.0); + } + + private static BufferedImage decodePreview(byte[] bytes) throws IOException { + try (ImageInputStream stream = new MemoryCacheImageInputStream(new ByteArrayInputStream(bytes))) { + var readers = ImageIO.getImageReaders(stream); + if (!readers.hasNext()) throw new IOException("Unsupported image data"); + ImageReader reader = readers.next(); + try { + reader.setInput(stream, true, true); + int width = reader.getWidth(0); + int height = reader.getHeight(0); + if (width < 1 || height < 1 || width > 16000 || height > 16000 || + (long) width * height > 40_000_000) + throw new IOException("Image dimensions are too large for preview"); + int step = Math.max(1, (Math.max(width, height) + 1199) / 1200); + var parameters = reader.getDefaultReadParam(); + parameters.setSourceSubsampling(step, step, 0, 0); + return reader.read(0, parameters); + } finally { reader.dispose(); } + } + } + + private static String env(String name, String fallback) { + String value = System.getenv(name); + return value == null ? fallback : value; + } + + @SuppressWarnings("serial") + private static final class ImageCanvas extends Canvas { + private BufferedImage image; + private String message = "Select an image to preview"; + + private ImageCanvas() { + setBackground(new Color(21, 20, 29)); + setForeground(FOREGROUND); + setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 16)); + } + + private void show(BufferedImage value, String text) { + image = value; + message = text; + repaint(); + } + + @Override public void paint(Graphics graphics) { + int width = getWidth(); + int height = getHeight(); + if (image == null) { + graphics.setColor(FOREGROUND); + graphics.drawString(message, 20, Math.max(35, height / 2)); + return; + } + double scale = Math.min((width - 24.0) / image.getWidth(), + (height - 24.0) / image.getHeight()); + scale = Math.max(0.01, Math.min(scale, 1.0)); + int drawWidth = (int) Math.round(image.getWidth() * scale); + int drawHeight = (int) Math.round(image.getHeight() * scale); + graphics.drawImage(image, (width - drawWidth) / 2, (height - drawHeight) / 2, + drawWidth, drawHeight, null); + } + } + + public static void main(String[] args) { + EventQueue.invokeLater(() -> new ImageManager().setVisible(true)); + } +} diff --git a/client/examples/awt-images/run-test.sh b/client/examples/awt-images/run-test.sh new file mode 100755 index 0000000..f308d8e --- /dev/null +++ b/client/examples/awt-images/run-test.sh @@ -0,0 +1,51 @@ +#!/usr/bin/env bash +set -euo pipefail + +client_dir="$(cd "$(dirname "$0")/../.." && pwd)" +project_dir="$(cd "$client_dir/.." && pwd)" +container="objectstore-image-example" +volume="objectstore-image-example-data" +image="${OBJECTSTORE_TEST_IMAGE:-objectstore-image-example:local}" + +if ! docker container inspect "$container" >/dev/null 2>&1; then + if ! docker image inspect "$image" >/dev/null 2>&1; then + docker build --tag "$image" "$project_dir" + fi + export S3_ACCESS_KEY="ImageExampleTest1" + export S3_SECRET_KEY="$(python3 -c 'import secrets; print(secrets.token_hex(32))')" + docker volume create "$volume" >/dev/null + docker run --detach --name "$container" \ + --publish 127.0.0.1:9002:9000 \ + --volume "$volume:/data" \ + --env S3_ACCESS_KEY --env S3_SECRET_KEY \ + --env S3_BUCKET=photos --env S3_REGION=us-east-1 \ + --env MAX_OBJECT_BYTES=67108864 --env MAX_TOTAL_BYTES=1073741824 \ + "$image" >/dev/null +else + while IFS='=' read -r key value; do + case "$key" in + S3_ACCESS_KEY) export S3_ACCESS_KEY="$value" ;; + S3_SECRET_KEY) export S3_SECRET_KEY="$value" ;; + esac + done < <(docker inspect --format '{{range .Config.Env}}{{println .}}{{end}}' "$container") + if [[ "$(docker inspect --format '{{.State.Running}}' "$container")" != true ]]; then + docker start "$container" >/dev/null + fi +fi + +for attempt in {1..40}; do + if curl --silent --fail --output /dev/null http://127.0.0.1:9002/health; then + break + fi + sleep 0.25 +done +if ! curl --silent --fail --output /dev/null http://127.0.0.1:9002/health; then + echo "The isolated ObjectStore container did not become healthy; check docker logs $container." >&2 + exit 1 +fi +export S3_ENDPOINT=http://127.0.0.1:9002 +export S3_REGION=us-east-1 +export S3_BUCKET=photos +export S3_ALLOW_HTTP=true +export S3_AUTO_CONNECT=true +exec "$client_dir/examples/awt-images/run.sh" diff --git a/client/examples/awt-images/run.sh b/client/examples/awt-images/run.sh new file mode 100755 index 0000000..cd8572f --- /dev/null +++ b/client/examples/awt-images/run.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +set -euo pipefail +client_dir="$(cd "$(dirname "$0")/../.." && pwd)" +if [[ ! -f "$client_dir/dist/objectstore-client.jar" ]]; then + bash "$client_dir/scripts/build.sh" +fi +classes="$client_dir/dist/examples/awt-images" +mkdir -p "$classes" +javac --release 21 -cp "$client_dir/dist/objectstore-client.jar" \ + -d "$classes" "$client_dir/examples/awt-images/ImageManager.java" +exec java -cp "$classes:$client_dir/dist/objectstore-client.jar" ImageManager diff --git a/client/examples/awt-images/screenshot.png b/client/examples/awt-images/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..da39dc755d417c86c4069444c926f501de105e58 GIT binary patch literal 390415 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

^ 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