mirror of
https://github.com/hanzoai/s3.git
synced 2026-10-30 14:59:09 +00:00
hanzoai/s3 was an AGPL-3.0 MinIO fork whose network-copyleft blocks embedding
and reselling as a managed service. Replace it wholesale with a fork of
SeaweedFS (github.com/seaweedfs/seaweedfs, Apache-2.0, Go) which ships a
built-in S3 gateway + Filer.
- License: AGPL-3.0 -> Apache-2.0 (upstream LICENSE kept verbatim, incl.
"Copyright 2025 Chris Lu"); NOTICE added crediting SeaweedFS. No AGPL/BUSL/
SSPL/GPL or enterprise ("ee") files remain.
- Module: go.mod path set to github.com/hanzoai/s3 with a self-replace
(replace github.com/seaweedfs/seaweedfs => ./) so the ~1800 internal Go files
keep their upstream import paths with zero churn. Internal identifiers and
import paths are intentionally NOT renamed.
- CLI rebrand: the binary is built as `s3` (was `weed`); root usage, per-command
help/usage/flag strings, shell autocomplete program name, and the product name
in CLI output now read "Hanzo S3" / `s3`. Users never see `weed`.
(e.g. `s3 server`, `s3 filer`, `s3 master`, `s3 volume`, `s3 s3`, `s3 mount`.)
- Build: `make` (or `go build -o s3 ./weed`) builds the `s3` binary green;
`cmd/weed-db` and `cmd/weed-sql` also build; `go vet ./weed/command/` clean.
- README/LLM.md rewritten for Hanzo S3; AGENTS.md/CLAUDE.md symlinks preserved.
- Dropped a 33MB prebuilt Mach-O `stress` binary upstream had committed; `.gitignore`
updated to ignore the `s3` build output.
2.0 KiB
2.0 KiB
Policy Engine Examples
This document contains examples of how to use the SeaweedFS Policy Engine.
Overview
The examples in examples.go demonstrate various policy configurations and usage patterns. The examples file is excluded from production builds using build tags to reduce binary size.
To Use Examples
If you need to use the examples during development or testing, you can:
- Remove the build tag: Remove the
//go:build ignoreand// +build ignorelines fromexamples.go - Use during development: The examples are available during development but not in production builds
- Copy specific examples: Copy the JSON examples you need into your own code
Example Categories
The examples file includes:
- Legacy Identity Format: Examples of existing identities.json format
- Policy Documents: Various AWS S3-compatible policy examples
- Condition Examples: Complex condition-based policies
- Migration Examples: How to migrate from legacy to policy-based IAM
- Integration Examples: How to integrate with existing systems
Usage Functions
The examples file provides helper functions:
GetAllExamples(): Returns all example policiesValidateExamplePolicies(): Validates all examplesGetExamplePolicy(name): Gets a specific exampleCreateExamplePolicyDocument(name): Creates a policy documentPrintExamplePolicyPretty(name): Pretty-prints an exampleExampleUsage(): Shows basic usage patternsExampleLegacyIntegration(): Shows legacy integrationExampleConditions(): Shows condition usageExampleMigrationStrategy(): Shows migration approach
To Enable Examples in Development
// Remove build tags from examples.go, then:
import "github.com/seaweedfs/seaweedfs/weed/s3api/policy_engine"
// Use examples
examples := policy_engine.GetAllExamples()
policy, err := policy_engine.GetExamplePolicy("read-only-user")
Note
The examples are excluded from production builds to keep binary size minimal. They are available for development and testing purposes only.