Desktop-Anwendung zum gleichzeitigen Hochladen auf mehrere File-Hoster
Go to file
Administrator 8d757a99dd fix(diagnostics): harden read-only agent — grep ReDoS, prototype-chain whitelist bypass, redaction gaps
Intensive end-to-end testing (a live gateway-MCP <-> agent integration harness +
an adversarial redaction/abuse probe + an independent security audit) surfaced
three real issues in the shipped read-only diagnostic agent. All run in lib/**,
which is packaged in the app.

1. grep ReDoS froze the Electron main process. read_log compiled the
   client-supplied grep into `new RegExp(grep, 'i')` and ran it synchronously over
   the log tail IN the main process. A catastrophic pattern (e.g. "(a+)+$" against
   a long line) hangs the whole app — empirically confirmed (8s timeout, killed).
   JS regex is synchronous and uncancellable, so grep is now a case-insensitive
   literal substring filter with "|" alternation ("error|timeout|502"). Provably
   linear-time; covers the real diagnostic need.

2. Prototype-chain whitelist bypass. The op table was a plain object literal, so
   handle("constructor" | "toString" | "valueOf", ...) resolved an inherited
   Object.prototype function, passed the `typeof fn === 'function'` guard and
   returned {ok:true}. Harmless functions today, but a whitelist-integrity hole.
   Now guarded with a string check + Object.prototype.hasOwnProperty.

3. Redaction defense-in-depth gaps. redactLogText now also scrubs: basic-auth URL
   passwords (scheme://user:pass@host), Authorization: Basic, JWTs (eyJ...x.y.z),
   and bare/JSON session= values. Mostly theoretical in today's readable logs
   (secret-bearing bodies go to the excluded doodstream-debug.log; other hosters
   throw static strings) but matters as the verbose-logging surface grows.

Verified: 383 app tests (incl. new regression tests for all three), the live
gateway-MCP integration harness (all 14 tools, zero leaks, error paths), the
adversarial probe (14/14+ secret shapes scrubbed, ReDoS 1ms, lockout, malformed
args), e2e gate, lint 0 errors. Only residual: a standalone high-entropy blob with
zero key/Bearer/URL context — inherent to any denylist, acknowledged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 18:40:57 +02:00
assets feat: custom app icon (arrows-up design) 2026-03-11 23:30:46 +01:00
docs feat(diagnostics): MCP gateway + harden redaction so no secret ever leaves the box 2026-06-19 17:39:31 +02:00
gateway fix(diagnostics): harden read-only agent — grep ReDoS, prototype-chain whitelist bypass, redaction gaps 2026-06-19 18:40:57 +02:00
lib fix(diagnostics): harden read-only agent — grep ReDoS, prototype-chain whitelist bypass, redaction gaps 2026-06-19 18:40:57 +02:00
renderer feat(diagnostics): MCP gateway + harden redaction so no secret ever leaves the box 2026-06-19 17:39:31 +02:00
scripts fix: rcedit import in afterPack - icon was not being embedded in exe 2026-03-12 01:22:56 +01:00
tasks docs(lessons): security-E2E must drive every collector default path, not just the aggregate hub 2026-06-19 17:49:14 +02:00
tests fix(diagnostics): harden read-only agent — grep ReDoS, prototype-chain whitelist bypass, redaction gaps 2026-06-19 18:40:57 +02:00
.gitignore chore(gitignore): exclude electron-config + logs from tracking 2026-06-07 04:27:43 +02:00
app.py chore: initial commit - Electron multi-hoster uploader 2026-03-10 02:32:06 +01:00
eslint.config.mjs fix(doodstream): survive transient network blips around the upload 2026-05-25 00:44:20 +02:00
hosters.py chore: initial commit - Electron multi-hoster uploader 2026-03-10 02:32:06 +01:00
main.js feat(diagnostics): MCP gateway + harden redaction so no secret ever leaves the box 2026-06-19 17:39:31 +02:00
package-lock.json chore(deps): npm audit fix --force — closes 12 deferred vulnerabilities 2026-04-28 11:53:53 +02:00
package.json release: v3.3.84 2026-06-19 17:48:08 +02:00
preload-drop-target.js feat: floating drop target window and English column labels 2026-03-12 04:11:01 +01:00
preload.js feat(diagnostics): read-only remote diagnostics agent over the existing WS transport (app side) 2026-06-19 17:24:32 +02:00
README.md docs: update README for Electron version 2026-03-10 02:35:43 +01:00
requirements.txt chore: initial commit - Electron multi-hoster uploader 2026-03-10 02:32:06 +01:00

Multi-Hoster-Upload

Desktop-Anwendung zum gleichzeitigen Hochladen von Dateien auf mehrere File-Hosting-Dienste.

Unterstuetzte Hoster

  • doodstream.com - API-Key basiert
  • voe.sx - API-Key basiert
  • vidmoly.me - Login basiert (Username/Passwort)
  • byse.sx - API-Key basiert

Installation

Setup (empfohlen)

Lade die Multi-Hoster-Upload Setup X.X.X.exe aus den Releases herunter und installiere.

Portable

Lade die Multi-Hoster-Upload X.X.X.exe herunter. Keine Installation noetig.

Entwicklung

npm install
npm start

Build

npm run release:win

Erzeugt Setup + Portable EXE im release/ Ordner.

Release

GITEA_TOKEN=dein_token npm run release:gitea -- 1.0.1 "Release notes"

Features

  • Drag & Drop oder Dateiauswahl
  • Gleichzeitiger Upload zu mehreren Hostern
  • Echtzeit-Fortschrittsanzeige
  • Ergebnis-Tabelle mit Sortierung und Kopier-Funktion
  • Upload-Verlauf (letzte 100 Eintraege)
  • Health-Check fuer Hoster-Verbindungen
  • Auto-Updater (prueft git.24-music.de)
  • Log-Datei kompatibel mit File & Image Uploader Format