feat: Phase 5 — filtres, actions Ntfy, outgoing webhooks, state file
CI / test (push) Successful in 2m34s

- Filtres avancés: drop, set_priority, add_tag avec wildcard * (filter_outgoing.v)
- Notifications structurées: click_url + actions (ntfy.v + sources/event.v)
- Webhook sortant: Slack, Discord, JSON (filter_outgoing.v)
- Fichier d'état: persistance poll_state + silence_until (filter_outgoing.v)
- Config: sections filters, outgoing, state (config.v)
- Tests: 9 nouveaux tests unitaires (filter_outgoing_test.v)
- Docs: ROADMAP Phase 5 4/8, version 0.5.0
This commit is contained in:
2026-08-03 17:41:53 -04:00
parent 5d0db9478c
commit 4150c56054
9 changed files with 422 additions and 30 deletions
+33 -10
View File
@@ -106,21 +106,44 @@ Objectif : un seul binaire, une seule commande pour installer/désinstaller le s
**Sortie** : `ntfy-bridge --install-service` fonctionne sur Windows 10+, Debian 11+, Alpine 3.18+, Raspberry Pi OS (arm64). ✅
## Phase 5 : Futures idées — v0.5.0+
## Phase 5 : Futures idées — v0.5.0+ (4/8)
- [x] Web UI minimale — Dashboard HTML avec stats, status, historique (+ API `/api/config`, `/api/status`, `/api/history`)
- [ ] Filtres avancés — Expressions conditionnelles par source
- [x] Web UI minimale — Dashboard avec statuts, historique, API endpoints
- [x] Filtres avancés — Expressions conditionnelles par source
```yaml
filters:
- match: { container_name: "test-*" }
action: drop
rules:
- match_source: "docker"
match_name: "test-*"
action: drop
- match_source: "gitea"
action: set_priority
value: "5"
```
- [ ] Notifications structurées — Support des actions Ntfy (boutons click)
- Actions: `drop`, `set_priority:N`, `add_tag:X`
- Wildcard `*` supporté dans `match_name`
- [x] Notifications structurées — Support des actions Ntfy (boutons click)
- Champ `click_url` pour ouvrir une URL au clic
- Champ `actions` pour boutons d'action (view, broadcast, http)
- [ ] Intégration Prometheus — Métriques exposées au format OpenMetrics
- [ ] Webhook sortant — Forwarder les événements vers un autre webhook (Slack, Discord)
- [x] Webhook sortant — Forwarder les événements vers Slack, Discord, JSON
```yaml
outgoing:
webhooks:
- url: "https://hooks.slack.com/..."
format: slack
- url: "https://discord.com/api/webhooks/..."
format: discord
```
- [ ] Support multi-utilisateurs — ACLs par webhook_path
- [ ] Fichier d'état — Persistance de l'état up/down des health checks
- [ ] Plugin system — Sources customisables via dll/.so (futur lointain)
- [x] Fichier d'état — Persistance de l'état up/down des health checks
```yaml
state:
file: "/var/lib/ntfy-bridge/state.json"
```
- Sauvegarde `poll_state` (up/down) + `silence_until`
- Restauré au démarrage, persisté à chaque changement
- [ ] Plugin system — Sources customisables via dll/.so
## Fonctionnalités non planifiées mais implémentées
@@ -146,4 +169,4 @@ Ces features ont été ajoutées en cours de route :
| v0.3.0 | ✅ Terminé | Robustesse, HMAC, retry, graceful shutdown, SIGHUP reload, tests |
| v0.4.0 | ✅ Terminé | Templates, silence, grouping, HMAC global, CI/CD |
| v0.4.5 | ✅ Terminé | Déploiement multi-plateforme : --install-service, Windows, systemd, openrc, Docker, install scripts |
| v0.5.0+ | 🔮 1/8 | Dashboard web — reste filtres, actions Ntfy, Prometheus, etc. |
| v0.5.0+ | 🚧 4/8 | Dashboard, filtres avancés, actions Ntfy, outgoing webhooks, state file — manque Prometheus, multi-user, plugins |