Transfer Architecture
Transfer Structure
server/transfer/transfer.go:43-56
Transfer States
server/transfer/transfer.go:23-40
Transfer Process
Initiation (Source Node)
Transfers are initiated via API:router/router.go:85
Transfer Instance Creation
server/transfer/transfer.go:59-69
Archive Creation
Archive Structure
server/transfer/archive.go:29-42
Getting Archive Instance
server/transfer/archive.go:14-27
Streaming Archive
- Streams files directly to writer
- No intermediate disk storage required
- Progress tracking built-in
- Context cancellation support
server/transfer/archive.go:45-47
Pushing to Target Node
Push Method
server/transfer/source.go:19-166
Progress Reporting
Progress is sent to websocket every 5 seconds:server/transfer/source.go:37-48
Transfer Authentication
Token Header
Transfers use bearer token authentication:server/transfer/source.go:58
Multipart Form
Archive sent as multipart form data:archive- The tar.gz filechecksum- SHA256 hash of archive
server/transfer/source.go:61-114
Receiving Transfers (Target Node)
Endpoint
- Multipart form with archive file
- SHA256 checksum for validation
- Server configuration from Panel
router/router.go:55
Transfer Cancellation
Cancel Method
server/transfer/transfer.go:77-92
API Endpoint
router/router.go:86
Deleting Transfer (Target)
router/router.go:64
Status Management
Getting Status
server/transfer/transfer.go:95-97
Setting Status
transfer status
Source: server/transfer/transfer.go:100-106
Transfer Messages
Sending Messages
server/transfer/transfer.go:109-114
Error Logging
server/transfer/transfer.go:117-120
Logging
Transfer Logger
server- Server UUIDsubsystem- “transfer”
server/transfer/transfer.go:123-129
Transfer Context
Context Management
- Cancellable via
Cancel()method - Inherits from server context
- Cancels all ongoing operations when triggered
server/transfer/transfer.go:72-74
Websocket Events
Status Events
transfer status
Payload: Status string (pending, processing, completed, etc.)
Log Events
transfer logs
Payload: Formatted log message with timestamp
Server State During Transfer
Transfer Flag
server/install.go:146-152
Blocked Operations
Power actions are blocked during transfers:server/power.go:57-64
HTTP Configuration
Client Settings
server/transfer/source.go:129
Request Headers
Checksum Validation
SHA256 Calculation
server/transfer/source.go:77-114
Error Handling
Common Transfer Errors
- Failed to get server disk usage
- Failed to create archive
- Failed to stream archive
- HTTP errors from target node
- Context cancellation
- Checksum validation failure
server/transfer/source.go:135-161
Best Practices
Pre-Transfer
- Ensure sufficient disk space on target node
- Verify network connectivity between nodes
- Stop server before transfer (optional but recommended)
- Check server isn’t installing/restoring
During Transfer
- Monitor websocket events for progress
- Don’t attempt power actions
- Don’t delete server on either node
- Ensure stable network connection
Post-Transfer
- Verify server files on target node
- Start server to test functionality
- Clean up source node (handled by Panel)
- Update DNS/proxy configurations if needed
