diff --git a/.env.example b/.env.example index 60d05bd..34ba1b9 100644 --- a/.env.example +++ b/.env.example @@ -5,5 +5,7 @@ AWS_SECRET_ACCESS_KEY=your-aws-secret-key PORT=25 S3_BUCKET_NAME=your-s3-bucket-name WEBHOOK_URL=https://your-webhook-url.com +# Optional: adds an Authorization: Bearer header to webhook requests +# WEBHOOK_BEARER_TOKEN=your-bearer-token SMTP_SECURE=false WEBHOOK_CONCURRENCY=5 diff --git a/AGENTS.md b/AGENTS.md index 8e2e0d5..cc55bbc 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -63,6 +63,7 @@ einem kontrollierten Fehler, damit Supervisor den Fehler erkennen kann. | Variable | Bedeutung | Standardwert | | --- | --- | --- | | `WEBHOOK_URL` | Ziel-URL für HTTP POST | erforderlich | +| `WEBHOOK_BEARER_TOKEN` | Optionaler Bearer Token für den `Authorization`-Header des Webhooks | nicht gesetzt | | `PORT` | SMTP-Port | `25` (Produktion: `2525`) | | `SMTP_SECURE` | SMTPS/TLS beim Verbindungsaufbau aktivieren | `false` | | `TLS_KEY_PATH` | TLS-Privatschlüssel, wenn `SMTP_SECURE=true` | keiner | diff --git a/config.js b/config.js index 5748f5d..571d428 100644 --- a/config.js +++ b/config.js @@ -11,6 +11,7 @@ function integerFromEnv(name, fallback) { module.exports = { WEBHOOK_URL: process.env.WEBHOOK_URL, + WEBHOOK_BEARER_TOKEN: process.env.WEBHOOK_BEARER_TOKEN || undefined, PORT: integerFromEnv('PORT', 25), MAX_FILE_SIZE: integerFromEnv('MAX_FILE_SIZE', 5 * 1024 * 1024), MAX_MESSAGE_SIZE: integerFromEnv('MAX_MESSAGE_SIZE', 25 * 1024 * 1024), diff --git a/readme.md b/readme.md index b1cb8da..c010841 100644 --- a/readme.md +++ b/readme.md @@ -78,6 +78,7 @@ zwingend erforderlich und hat keinen öffentlichen Defaultwert. | Variable | Bedeutung | Standardwert | | --- | --- | --- | | `WEBHOOK_URL` | Ziel-URL für die geparste Nachricht | erforderlich | +| `WEBHOOK_BEARER_TOKEN` | Optionaler Bearer Token für den `Authorization`-Header des Webhooks | nicht gesetzt | | `PORT` | SMTP-Port | `25` (Produktion: `2525`) | | `SMTP_SECURE` | TLS/SMTPS beim Verbindungsaufbau | `false` | | `TLS_KEY_PATH` | TLS-Privatschlüssel bei aktiviertem TLS | keiner | diff --git a/services/webhookService.js b/services/webhookService.js index acd88c8..18de25c 100644 --- a/services/webhookService.js +++ b/services/webhookService.js @@ -2,7 +2,14 @@ const axios = require('axios'); const config = require('../config'); function sendToWebhook(data) { - return axios.post(config.WEBHOOK_URL, data, { timeout: 5000 }); + const headers = config.WEBHOOK_BEARER_TOKEN + ? { Authorization: `Bearer ${config.WEBHOOK_BEARER_TOKEN}` } + : undefined; + + return axios.post(config.WEBHOOK_URL, data, { + timeout: 5000, + headers + }); } -module.exports = { sendToWebhook }; \ No newline at end of file +module.exports = { sendToWebhook };