bruno
|
1a4808f5f7
|
feat: v0.6.0 — ACLs multi-utilisateurs + Plugin system
CI / test (push) Has been cancelled
**ACLs (Access Control Lists):**
- Ajout du type AclConfig dans sources/event.v (allowed_ips CIDR + allowed_tokens)
- Chaque source webhook (Gitea, Uptime Kuma, Cron, Generic) supporte les ACLs
- Validation IP via X-Forwarded-For / X-Real-IP avant HMAC
- Validation Bearer token via Authorization header
- Tests: 7 tests ACL (IP exact, CIDR, parse IPv4, ACL vide, IP+token combiné)
**Plugin system:**
- sources/plugin.v: runner exécutable externe, stdout JSON → Event
- Exit 0 = publish, exit ≠ 0 = skip. Timeout configurable
- Plugin loop dans server.v (goroutine, toutes les 60s)
- Example: scripts/example-plugin-disk.sh (vérifie espace disque)
**Docs:**
- README.md: ajout source Plugin + section Features complète
- ARCHITECTURE.md: flux Plugin, flux ACL, endpoints /metrics /api/silence
- ROADMAP.md: Phase 5 → 8/8 complet, ajout v0.6.0
- ntfy-bridge.example.yaml: sections ACLs et Plugins commentées
- Version bump: 0.5.0 → 0.6.0
|
2026-08-04 22:25:48 -04:00 |
|
bruno
|
83778cfb0d
|
feat: Prometheus /metrics endpoint — Phase 5 -> 6/8
CI / test (push) Successful in 2m30s
- metrics.v: GET /metrics au format OpenMetrics (gauges + counters)
- server.v: route /metrics, Stats.http_polls counter, increment in poll loop
- metrics_test.v: test du endpoint metrics
- ROADMAP: Phase 5 6/8 (Prometheus done)
|
2026-08-03 18:03:26 -04:00 |
|
bruno
|
4150c56054
|
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
|
2026-08-03 17:41:53 -04:00 |
|
bruno
|
5d0db9478c
|
fix: dashboard affiche la version dynamique ({{VERSION}})
CI / test (push) Successful in 2m33s
dashboard.html utilise {{VERSION}}, remplacé par server.v au chargement
via const version de main.v. Plus besoin de maj manuelle du HTML.
|
2026-08-03 17:24:14 -04:00 |
|
bruno
|
26341578fa
|
fix: os.signal_opt API callback-based (V latest)
CI / test (push) Successful in 2m46s
La nouvelle API est fn(os.Signal, fn(os.Signal)) au lieu de
chan+variadic. Enregistrement séparé pour .hup, .int, .term.
|
2026-08-03 15:00:39 -04:00 |
|
bruno
|
fa4fbc23a5
|
fix: compatibilité V latest — import sources et signal_opt
CI / test (push) Failing after 9s
- docker_watcher.v: 'import sources as _' → 'import sources'
(le _ supprimait les symboles dans V récent)
- server.v: os.new_signal_channel → os.signal_opt
(API retirée dans V latest)
- server.v: 'import json' déprécié → 'import x.json2 as json'
|
2026-08-03 14:55:27 -04:00 |
|
bruno
|
72b797704f
|
feat: phase 3 + phase 4 complete — v0.4.0
CI / test (push) Failing after 24s
Phase 3:
- Config reload via SIGHUP (handle_signals loop: .hup reloads config, .int/.term shutdown)
- Hot reload: cfg, webhook_routes, ntfy client, dedup updated without restart
Phase 4:
- Silence rules: POST /api/silence?duration=30m, GET /api/silence, DELETE /api/silence
- Grouping: buffer 10s, events grouped with (×N in 10s) suffix
- CI/CD: .gitea/workflows/ci.yml (build + test on push/PR)
Docs:
- ROADMAP.md: phases 3 & 4 marked DONE, version table updated
- ARCHITECTURE.md: synced with actual code
Version: 0.1.0 → 0.4.0 (main.v, v.mod)
|
2026-08-03 14:35:59 -04:00 |
|
bruno
|
4e1d7cd94a
|
Add config validation and dashboard
Add YAML config loading with validation, env overrides for secrets, and
a web dashboard exposing health, stats, and recent events.
|
2026-08-03 12:12:12 -04:00 |
|