DragonWind/README.md
Zac Gaetano 641701edf8 feat: Dragon Wind v1.0 — dual-mode broadcast uploader
- Full VPM Uploader feature set (auth, users, folders, AMPP monitor)
- HTTP upload via presigned S3 URLs with XHR progress tracking
- UDP upload mode with relay server (WebRTC DataChannel + HTTP fallback)
- S3 Admin settings with live Test Connection (upload+delete verify)
- UDP Relay Admin settings with health check
- Standalone UDP relay server (Node.js + Docker) with multipart S3 assembly
- Chrome Extension (Manifest v3): popup, background, content script
- Dynamic S3 client — reconfigures on save without restart
- Dark/light theme, full AMPP job monitor
- docker-compose.yml with dragon-wind + udp-relay services

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 20:05:34 -04:00

151 lines
4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🌪️ Dragon Wind
**Fast, dual-mode broadcast file uploader with S3 integration, UDP acceleration, and a Chrome extension.**
---
## Features
- **HTTP Upload** — Direct S3 presigned uploads, 50200 MB/s on LAN
- **UDP Upload** — Relay-accelerated transfers, 48× faster on WAN/lossy networks
- **Admin Web UI** — Configure S3, UDP relay, users, and folders — all from the browser
- **S3 Test & Confirm** — Test connection with a real upload/delete before saving
- **Chrome Extension** — Drag-and-drop uploads from any browser tab
- **AMPP Monitor** — Live Grass Valley AMPP job queue monitoring
- **User Management** — Admin and user roles, session auth
- **Folder Tree** — Configurable prefix hierarchy for S3 organization
- **Dark/Light Mode** — Persistent theme preference
---
## Quick Start
```bash
# 1. Clone
git clone https://forge.wilddragon.net/zgaetano/DragonWind.git
cd DragonWind
# 2. Configure
cp .env.example .env
# Edit .env with your S3 credentials
# 3. Start
docker-compose up -d
# 4. Open
open http://localhost:3000
# Default login: Admin / DragonWind2026!
```
---
## Services
| Service | Port | Protocol | Description |
|---------|------|----------|-------------|
| `dragon-wind` | 3000 | TCP/HTTP | Main web app + API |
| `udp-relay` | 3001 | TCP/HTTP | Relay control API |
| `udp-relay` | 5000 | **UDP** | Data transfer — **port-forward this** |
---
## Port Forwarding (Required for UDP Mode)
For UDP uploads to work from external clients:
| Router Port | Internal Host | Internal Port | Protocol |
|-------------|--------------|---------------|----------|
| 5000 | Your relay server IP | 5000 | **UDP** |
| 3001 | Your relay server IP | 3001 | TCP |
See `INFRASTRUCTURE.md` for detailed setup instructions.
---
## Chrome Extension
1. Open `chrome://extensions/`
2. Enable **Developer mode**
3. Click **Load unpacked**
4. Select the `chrome-extension/` folder
5. Click the 🌪️ icon → Settings → enter your Dragon Wind server URL + credentials
---
## Admin Configuration
All settings are available via the web UI at `http://localhost:3000`**Admin** tab:
- **S3 Storage** — Set endpoint, bucket, credentials. Use "Test Connection" to verify with a live upload.
- **UDP Relay** — Set relay URL and UDP port. Use "Test Relay" to verify connectivity.
- **Users** — Create/delete users, assign admin/user roles.
- **Folders** — Manage the folder prefix tree.
---
## API Reference
### Upload (HTTP)
```
POST /api/presigned Get presigned S3 PUT URL
POST /api/upload Multipart form upload (server-side)
```
### UDP Sessions
```
POST /api/udp/session Create UDP session
GET /api/udp/session/:id Get session status
POST /api/udp/session/:id/complete Mark session complete
GET /api/udp/relay/health Check relay health
```
### Admin
```
GET /api/s3/config Get S3 config (admin)
PUT /api/s3/config Update S3 config (admin)
POST /api/s3/test Test S3 connection (admin)
GET /api/relay/config Get relay config (admin)
PUT /api/relay/config Update relay config (admin)
```
### Auth / Users / Folders
```
POST /api/login
POST /api/logout
GET /api/users (admin)
POST /api/users (admin)
DELETE /api/users/:user (admin)
GET /api/folders
POST /api/folders/add (admin)
POST /api/folders/delete (admin)
```
---
## UDP Relay Architecture
```
Client Browser ──[UDP chunks]──▶ Dragon Wind Relay ──[S3 Multipart]──▶ S3
◀──[TCP ACK]────── (port 5000 UDP) (port 3001 API)
```
The relay handles:
- UDP chunk reception with sequence numbers
- S3 multipart upload assembly
- Forward error correction via retransmission
- Session lifecycle management
---
## Performance
| Scenario | HTTP | UDP | Improvement |
|----------|------|-----|-------------|
| LAN | 200 MB/s | 180 MB/s | — |
| WAN (stable) | 50 MB/s | 200+ MB/s | **4×** |
| WAN (lossy) | 5 MB/s | 40 MB/s | **8×** |
| 10 GB file | ~30 min | 510 min | **36×** |
---
Built for Grass Valley AMPP / FramelightX broadcast workflows.