68 lines
2.5 KiB
Markdown
68 lines
2.5 KiB
Markdown
# File Drop Plugin
|
|
|
|
A P2NS plugin for temporary, peer-to-peer file sharing with automatic expiration.
|
|
|
|
## Overview
|
|
|
|
File Drop enables secure, decentralized file sharing through the P2NS network. Upload a file, get a shareable link, and the file automatically expires after 24 hours. Files are stored in Hyperdrive and metadata is replicated via HyperDB across all connected peers.
|
|
|
|
## Features
|
|
|
|
- **24-Hour Expiration**: Files automatically delete after 24 hours
|
|
- **Destroy on Download**: Optional one-time download links
|
|
- **Peer-to-Peer Storage**: Files stored in Hyperdrive with P2P replication
|
|
- **No Size Limits**: Limited only by available storage
|
|
- **Shareable Links**: Unique links like `/d/abc123def`
|
|
- **Modern UI**: Clean, responsive dark theme interface
|
|
|
|
## Architecture
|
|
|
|
File Drop uses two P2NS data stores:
|
|
|
|
1. **Hyperdrive** (`uploads`): Stores actual file data
|
|
- Each peer has their own writable drive
|
|
- Files replicate to other peers on demand
|
|
|
|
2. **HyperDB** (`@filedrop/files`): Stores file metadata
|
|
- File ID, name, size, MIME type
|
|
- Upload timestamp and expiration time
|
|
- Drive key for locating files across peers
|
|
- Destroy-on-download flag
|
|
|
|
## API Endpoints
|
|
|
|
| Endpoint | Method | Description |
|
|
|----------|--------|-------------|
|
|
| `/api/upload` | POST | Upload a file (multipart/form-data) |
|
|
| `/api/download/:id` | GET | Download a file by ID |
|
|
| `/api/file/:id` | GET | Get file metadata |
|
|
| `/api/files` | GET | List all active files |
|
|
| `/d/:id` | GET | Human-friendly download page |
|
|
|
|
## Usage
|
|
|
|
1. Navigate to `https://file.drop` in your browser
|
|
2. Drag and drop a file, or click "Choose File"
|
|
3. Optionally check "Destroy after download" for one-time links
|
|
4. Share the generated link
|
|
5. Recipients can download until the file expires or is destroyed
|
|
|
|
## Notes
|
|
|
|
- Files uploaded on one peer are accessible to other peers via Hyperdrive replication
|
|
- The uploader's peer must be online for remote peers to download (unless cached)
|
|
- Cleanup runs hourly to remove expired files
|
|
- "Destroy on download" only works when downloaded from the uploader's peer
|
|
- For schema-affecting HyperDB metadata changes, bump plugin `version` (current: `1.0.7`) to rotate the deterministic DB core and avoid decode mismatches across peers.
|
|
|
|
## Full Documentation
|
|
|
|
For complete documentation including configuration, file structure, and HyperDB schema details, see the [plugin README](../../plugin-sites/file.drop/README.md).
|
|
|
|
## Related Documentation
|
|
|
|
- [Plugin System Guide](../PLUGINS.md)
|
|
- [HyperDB Integration](HYPERDB.md)
|
|
- [Hyperdrive Integration](HYPERDRIVE.md)
|
|
|