feat: implement security, discovery, history, file transfer, web UI (P0-P3)

This commit is contained in:
2026-08-14 09:45:54 -04:00
parent 8281478f0c
commit 884415c1c1
32 changed files with 1923 additions and 200 deletions
+25 -1
View File
@@ -88,13 +88,37 @@ Boucle principale :
2. Ticker 500ms : lit le presse-papiers, compare, broadcast si changé
3. Signal SIGINT/SIGTERM → arrêt gracieux
### 6. Sécurité (`internal/security/`)
- `--generate-key` : clé partagée hex (256 bits)
- `--generate-cert` : certificat ECDSA P-256 auto-signé
- Auth Bearer token (comparaison à temps constant), validation d'origine
### 7. Historique (`internal/history/`)
- Anneau mémoire borné (`history_size`), persisté en JSON
- Commandes `clip-sync history` et endpoint `/history`
### 8. Transfert de fichiers (`internal/transfer/`)
- Payload `{name, mime, data(base64), ts, origin}` via `POST /file`
- Réception opt-in (`receive_files`), écrit dans `receive_dir`
- Nom de fichier assaini (anti path-traversal)
### 9. Découverte (`internal/discovery/`) et notifications (`internal/notify/`)
- mDNS `_clip-sync._tcp` (hashicorp/mdns), activation via `daemon.discovery`
- Notifications desktop : notify-send (Linux), osascript (macOS), no-op (Windows)
## Dépendances
| Dépendance | Version | Justification |
|-----------|---------|---------------|
| `github.com/BurntSushi/toml` | v1.3.2 | Parsing TOML (stdlib Go n'inclut pas TOML) |
| `github.com/hashicorp/mdns` | v1.0.7 | Découverte mDNS (optionnelle, `daemon.discovery`) |
**Total : 1 dépendance externe.** Tout le reste est stdlib Go.
**Total : 2 dépendances externes directes.** Tout le reste est stdlib Go.
mdns est optionnel (utilisé uniquement si `daemon.discovery = true`).
## Décisions architecturales