Fix: Webhook-Settings — Backup-Maskierung + Support-Bundle-Diagnose

Audit-Befunde SET-2, SET-4:
- notifyUrl in die SENSITIVE_KEYS des Backup-Imports aufgenommen: ein mit
  "***" maskierter Wert (haendisch redigierte Backup-Datei) wird wieder durch
  den aktuellen ersetzt statt als kaputte URL persistiert zu werden — die
  Webhook-URL ist ein Capability-Secret wie die Tokens.
- Support-Bundle enthaelt jetzt einen notifications-Block (konfiguriert?,
  URL-Format plausibel?, welche Toggles an) — "warum kam kein Webhook" ist
  damit aus einem Bundle diagnostizierbar, ohne die URL selbst zu leaken.
This commit is contained in:
Sucukdeluxe 2026-06-10 00:35:54 +02:00
parent 3fb9e85ba2
commit 5f8b02e970
2 changed files with 11 additions and 1 deletions

View File

@ -696,7 +696,8 @@ public async checkDebridAccounts(): Promise<DebridAccountStatus[]> {
const SENSITIVE_KEYS: (keyof AppSettings)[] = [
"token", "megaLogin", "megaPassword", "bestToken", "allDebridToken",
"ddownloadLogin", "ddownloadPassword", "oneFichierApiKey",
"debridLinkApiKeys", "linkSnappyLogin", "linkSnappyPassword"
"debridLinkApiKeys", "linkSnappyLogin", "linkSnappyPassword",
"notifyUrl"
];
for (const key of SENSITIVE_KEYS) {
const val = importedSettingsRecord[key];

View File

@ -1,4 +1,5 @@
import { getDebridLinkApiKeyIds } from "../shared/debrid-link-keys";
import { isNotifyUrlValid } from "./notify";
import type { AppSettings, HistoryEntry, UiSnapshot } from "../shared/types";
function hasText(value: unknown): boolean {
@ -131,6 +132,14 @@ export function buildRedactedSettingsPayload(settings: AppSettings): Record<stri
updateRepo: settings.updateRepo,
autoUpdateCheck: settings.autoUpdateCheck
},
notifications: {
notifyUrlConfigured: Boolean(String(settings.notifyUrl || "").trim()),
notifyUrlLooksValid: isNotifyUrlValid(settings.notifyUrl),
notifyMentionConfigured: Boolean(String(settings.notifyMention || "").trim()),
notifyOnPackageCompleted: settings.notifyOnPackageCompleted,
notifyOnPackageFailed: settings.notifyOnPackageFailed,
notifyOnRunFinished: settings.notifyOnRunFinished
},
statistics: {
totalDownloadedAllTime: settings.totalDownloadedAllTime,
totalCompletedFilesAllTime: settings.totalCompletedFilesAllTime,