How olvid-io/olvid-aws-server works
Olvid’s AWS-hosted message distribution server accepts app requests through REST and WebSocket Lambda endpoints, manages identity and server sessions, distributes encrypted messages and attachments, and supports device transfer. The README documents the principal send–notify–download–receipt workflow and other capabilities. Many endpoint implementations are unsampled, so their documented relationships are cited to the README; the transfer server’s internal relationships are limited to SOURCE INDEX references.
Main entry points: UploadMessageAndGetUids.java Upload message · GetToken.java Issue token · DownloadMessagesAndListAttachments.java Download messages · Base64RequestStreamHandler.java Request codec
Components 31
API and sessions
- Request codec
dynamodb/src/CryptoLib/java/io/olvid/server/Base64RequestStreamHandler.java - Request challenge
dynamodb/src/requestChallenge/java/io/olvid/server/RequestChallenge.java - Issue token
dynamodb/src/getToken/java/io/olvid/server/GetToken.java - Proof of work
dynamodb/src/getPoWChallenge/java/io/olvid/server/ProofOfWorkEngine.java
Message delivery
- Upload message
dynamodb/src/uploadMessageAndGetUids/java/io/olvid/server/UploadMessageAndGetUids.java - Monitor attachments
dynamodb/src/monitorS3AttachmentChunks/java/io/olvid/server/MonitorS3AttachmentChunks.java - Download messages
dynamodb/src/downloadMessagesAndListAttachments/java/io/olvid/server/DownloadMessagesAndListAttachments.java - Download preview
dynamodb/src/downloadMessageExtendedContent/java/io/olvid/server/DownloadMessageExtendedContent.java - Upload receipt
dynamodb/src/uploadReturnReceipt/java/io/olvid/server/UploadReturnReceipt.java - Send receipts
dynamodb/src/wsSendReturnReceipts/java/io/olvid/server/WsSendReturnReceipts.java - Push notifications
dynamodb/src/PushLib/java/io/olvid/server/PushNotificationUtil.java - Attachment endpoints
dynamodb/src/uploadAttachment/java/io/olvid/server/UploadAttachment.java
Devices and accounts
- Device management
dynamodb/src/deviceManagement/java/io/olvid/server/DeviceManagement.java - Device discovery
dynamodb/src/deviceDiscovery/java/io/olvid/server/DeviceDiscovery.java - User data
dynamodb/src/putUserData/java/io/olvid/server/PutUserData.java - Backups
dynamodb/src/backupCreate/java/io/olvid/server/BackupCreate.java - Group blobs
dynamodb/src/groupBlobCreate/java/io/olvid/server/GroupBlobCreate.java
Device transfer
- Transfer source
transfer.olvid.io/src/source/java/io/olvid/transfer/Source.java - Transfer relay
transfer.olvid.io/src/relay/java/io/olvid/transfer/Relay.java - Transfer target
transfer.olvid.io/src/target/java/io/olvid/transfer/Target.java
Shared runtime
- Binary encoding
dynamodb/src/CryptoLib/java/io/olvid/server/encoder/Encoded.java - Cryptography
dynamodb/src/CryptoLib/java/io/olvid/server/crypto/Suite.java - Identity model
dynamodb/src/CryptoLib/java/io/olvid/server/crypto/Identity.java - API key utilities
dynamodb/src/ApiKeyLib/java/io/olvid/server/ApiKeyUtil.java
Other components
- Olvid app
- REST API Gateway
- WebSocket Gateway
- DynamoDB
- Amazon S3
- Amazon SNS
- Device WebSocket
Connections 37
- Olvid app → REST API Gateway: sends requests
README.md - Olvid app → WebSocket Gateway: opens connection
README.md - REST API Gateway → Request codec: routes requests
README.md - Request codec → Upload message: dispatches request
dynamodb/src/uploadMessageAndGetUids/java/io/olvid/server/UploadMessageAndGetUids.java - Olvid app → Request challenge: requests challenge
README.md - Olvid app → Issue token: requests token
README.md - Olvid app → Proof of work: requests challenge
README.md - Olvid app → Upload message: uploads message
README.md - Olvid app → Amazon S3: uploads attachment
README.md - Amazon S3 → Monitor attachments: triggers on upload
README.md - Monitor attachments → Push notifications: notifies completion
README.md - Push notifications → Amazon SNS: publishes notification
dynamodb/src/PushLib/java/io/olvid/server/PushNotificationUtil.java - Olvid app → Download messages: lists messages
README.md - Olvid app → Download preview: downloads preview
README.md - Olvid app → Amazon S3: downloads attachment
README.md - Olvid app → Upload receipt: uploads receipt
README.md - DynamoDB → Send receipts: triggers on receipt
README.md - Send receipts → Device WebSocket: sends receipt
README.md - Olvid app → Attachment endpoints: manages attachments
- Olvid app → Device management: manages devices
- Olvid app → Device discovery: discovers devices
- Olvid app → User data: manages user data
- Olvid app → Backups: manages backups
- Olvid app → Group blobs: manages group blobs
- Transfer relay → Transfer source: uses request type
transfer.olvid.io/src/relay/java/io/olvid/transfer/Relay.java - Transfer target → Transfer relay: exchanges transfer data
- Request codec → Binary encoding: decodes payload
dynamodb/src/CryptoLib/java/io/olvid/server/Base64RequestStreamHandler.java - Issue token → Identity model: uses identity
dynamodb/src/getToken/java/io/olvid/server/GetToken.java - Issue token → Cryptography: uses cryptography
dynamodb/src/getToken/java/io/olvid/server/GetToken.java - Issue token → API key utilities: checks API keys
dynamodb/src/getToken/java/io/olvid/server/GetToken.java - Upload message → Binary encoding: uses encoding
dynamodb/src/uploadMessageAndGetUids/java/io/olvid/server/UploadMessageAndGetUids.java - Upload message → Identity model: uses identity
dynamodb/src/uploadMessageAndGetUids/java/io/olvid/server/UploadMessageAndGetUids.java - Download messages → Identity model: uses identity
dynamodb/src/downloadMessagesAndListAttachments/java/io/olvid/server/DownloadMessagesAndListAttachments.java - Download messages → Binary encoding: uses encoding
dynamodb/src/downloadMessagesAndListAttachments/java/io/olvid/server/DownloadMessagesAndListAttachments.java - Upload message → DynamoDB: stores message
- Upload message → Amazon S3: creates upload URL
README.md - Download messages → DynamoDB: reads messages