Nouvelle clé `webhooks` : liste de points de terminaison POST notifiés à chaque upload finalisé (`upload`, direct comme fragmenté) et à chaque requête `/upload*` terminée en 4xx/5xx (`error`). Chaque entrée : `url` (http/https), `events` (défaut : les deux), `headers` (auth du récepteur), `secret` (signature HMAC-SHA256 dans `X-MediaDrop-Signature`), `timeoutMs` (défaut 5 s, max 30 s). Corps JSON structuré + champs `text`/`content` portant un résumé lisible, pour fonctionner tel quel avec Slack / Discord / ntfy ou un récepteur custom. Livraison en parallèle, sans bloquer la réponse d'upload ; une nouvelle tentative sur erreur réseau / 429 / 5xx ; échecs journalisés en `warn` ; l'arrêt du serveur attend les envois en cours. Sans webhook configuré, le notifieur est une non-opération. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
25 lines
802 B
JSON
25 lines
802 B
JSON
{
|
|
"$schema": "./config.schema.json",
|
|
"port": 3000,
|
|
"host": "0.0.0.0",
|
|
"publicUrl": "http://localhost:3000",
|
|
"targets": [
|
|
{ "name": "photos", "label": "Photos", "dir": "./uploads/photos" },
|
|
{ "name": "videos", "label": "Vidéos", "dir": "./uploads/videos", "allowDirectories": true }
|
|
],
|
|
"maxFileSizeMb": 512,
|
|
"logLevel": "info",
|
|
"chunkPoolSize": 30,
|
|
"allowedMimeTypes": ["image/jpeg", "image/png", "image/webp", "video/mp4", "audio/mpeg"],
|
|
"webhooks": [],
|
|
"session": {
|
|
"key": "REMPLACER_PAR_32_OCTETS_BASE64_openssl_rand_base64_32",
|
|
"maxAgeHours": 12
|
|
},
|
|
"oidc": {
|
|
"issuer": "https://auth.exemple.fr/realms/mon-realm",
|
|
"clientId": "mediadrop",
|
|
"clientSecret": "REMPLACER_PAR_LE_SECRET_DU_CLIENT",
|
|
"scopes": ["openid", "profile", "email"]
|
|
}
|
|
}
|