Releases: sinoru/swift-ap-relay
Releases · sinoru/swift-ap-relay
v0.0.1
Added
- ActivityPub relay server with HTTP Signature verification (draft-cavage-http-signatures-06)
- Inbox controller handling Follow, Undo, Create, Announce, Delete, and Update activities
- Pleroma/Akkoma compatibility: accept Follow with relay actor URL as object
- Signed HTTP GET requests for remote actor fetching, enabling compatibility with Mastodon Authorized Fetch (Secure Mode) and Pleroma
- Actor-signer domain validation to prevent activity forgery
- Digest header requirement and conditional Date header validation for POST requests
- Key ID resolution for both fragment-based () and path-based () formats
- Shared inbox () support for efficient delivery
- Flexible JSON-LD decoding for mixed arrays (Pleroma format)
- Flexible field decoding (string or object with uid=1001(runner) gid=1001(runner) groups=1001(runner),4(adm),100(users),118(docker),999(systemd-journal))
- Activity deduplication via Redis with atomic SET NX EX and automatic TTL expiration
- Subscriber management with pending/accepted/rejected states and manual accept mode
- Domain blocking and restricted mode (allowlist) support
- Admin REST API with Bearer token authentication
- Admin CLI commands under : list-subscribers, accept, reject, block, unblock, list-blocked-domains
- Delivery system with Vapor Queues for reliable activity delivery with exponential backoff retry and smart error classification
- WebFinger, NodeInfo 2.1, and actor endpoint for federation discovery
- RSA-4096 key pair generation and storage
- Prometheus metrics for inbox activities and delivery performance
- Multi-language homepage with English, Korean, and Japanese translations, auto-selected via header
- i18n system with JSON translation files and Accept-Language quality factor parsing
- Dark mode support and responsive homepage with status badges, instance grid, and subscriber join dates
- build plugin for automatic version and commit detection from git at build time
- header on outgoing HTTP requests and response header with relay version info
- Environment variables: , , , , , , , , , ,
- Per-locale environment variable overrides for , , and (e.g. )
- GitHub Actions CI/CD: test workflow with swiftly-based Swift toolchain on Ubuntu and macOS, deploy workflow for multi-platform Docker images (amd64/arm64) to GitHub Container Registry
- Docker multi-stage build with jemalloc, static Swift stdlib linking, and non-root user execution
- Docker Compose with Valkey (Redis-compatible) service
- Strict memory safety checking (SE-0458) enabled for all targets
- Comprehensive test suite: inbox integration, signature middleware, admin API, and localization tests
Security
- Constant-time comparison for admin token authentication via HMAC-based equality
- Unified admin API authentication error responses to prevent configuration state disclosure; all failure cases return identical with server-side warning logs for operator debugging