16 KiB
Projekt-Memory
Zweck
Multi-Hoster-Upload ist eine Electron-Desktopanwendung für Windows, die große Dateimengen aus einer gemeinsamen Queue gleichzeitig zu Doodstream, VOE, Vidmoly, Byse und Clouddrop hochlädt.
Aktueller Zustand
-
Version
2.1.47veröffentlicht: Standardgültigkeit neuer Online-Schlüssel istUnbegrenzt. Bestehende Ablaufdaten bleiben unverändert; Backup-API bleibt2.0.5. Release-Commitafdad99, annotierter Tag auf beiden Plattformen identisch. 823 Haupttests, 17 Servertests, Lint und Audit erfolgreich. Installer 98.032.502 Bytes, Portable 97.807.793 Bytes. Alle acht veröffentlichten Dateien erneut heruntergeladen und per SHA-512 geprüft. Titel, Sprachen, Assets und Update-Manifeste auf beiden Plattformen verifiziert. Der eingebaute Updater erkennt2.1.47ausgehend von2.1.46. -
Lokale Erweiterung: Online-Backups erhalten einen RSA-3072/OAEP-SHA256-verschlüsselten Wiederherstellungsumschlag, der an die Datensatzkennung gebunden ist. Der private Wiederherstellungsschlüssel bleibt außerhalb des Servers. Verwaltungswerkzeug:
scripts/backup-recovery.cjs; Einrichtung und Offline-Wiederherstellung stehen in der README. -
Anwendung
2.1.46auf GitHub und Forgejo veröffentlicht; Backup-API2.0.5nach gesondertem Go produktiv aktiviert. Schlüsselpaar lokal außerhalb des Projekts in einem auf Benutzerkonto und SYSTEM beschränkten Ordner eingerichtet; privater Schlüssel nie auf den Server übertragen. Eine unabhängige Sicherung im Passwortmanager/Offline-Speicher bleibt erforderlich. Der neue Client verweigert neue Exporte ohne verfügbaren öffentlichen Schlüssel. Alte Clients und bisherige Importe bleiben kompatibel. -
Am 22.09.2026: Live-Dienst
2.0.4aktiv, 12 Datensätze. Sicherung/var/backups/mhu-backup-api/20260922-pre-recovery.tar.gzenthält Daten, Konfiguration, Dienstdefinition und bisherigen Programmstand. Gzip-Test erfolgreich; SHA-2564adeaae898317b1bbb179df019782065852a84647daa95da2d6147b61fe28838entspricht der lokalen geschützten Kopie. Staging auf entpackter Kopie: alle 12 bestehenden Datensätze unverändert lesbar; Erstellen, private Wiederherstellung, Import und Löschen eines neuen Testbackups erfolgreich. Keine produktiven Datensätze verändert. -
Release
2.1.46: Installer 98.032.406 Bytes, Portable 97.807.695 Bytes, beide Produktversion2.1.46. Verpackte Wiederherstellungsmodule stimmen mit dem Quellcode überein; keine privaten Schlüssel oder Nutzerdaten enthalten. Installer-SHA-512 und Größe passen zum Update-Manifest. Erneut 822 Haupttests, 17 Servertests und Lint erfolgreich. Beide Releases enthalten vier geprüfte Assets und inhaltlich gleichwertige englische/deutsche Changelogs. -
Aktivierung am 22.09.2026: ausschließlich öffentlichen Schlüssel als
/etc/mhu-backup-recovery-public.peminstalliert, Backup-API2.0.5in/opt/mhu-backup-api/releases/20260922-v2.0.5bereitgestellt,RECOVERY_PUBLIC_KEY_FILEin/etc/mhu-backup-api.envergänzt,currentumgestellt und Dienst neu gestartet. HTTPS-Smoke bestätigt Schlüsselabfrage, Speicherung, private Wiederherstellung und normalen Import. Ausschließlich den eigenen Testdatensatz anschließend gelöscht. Alle 12 ursprünglichen Datensätze danach mit identischen SHA-256-Prüfsummen bestätigt. Rückfallziel: bisheriger Dienstpfad20260901T140230Z-v2.0.4und gesicherte Konfiguration/var/backups/mhu-backup-api/20260922-pre-recovery.env. -
Aktive Arbeitslinie:
masterausSucukdeluxe/Multi-Hoster-Upload. -
Zuletzt veröffentlichter Funktionsstand: Version
2.1.47, Release-Commitafdad99; annotierter Tag auf beiden Plattformen identisch. -
Version
2.1.46ist auf GitHub und Forgejo veröffentlicht. Beide Release-Changelogs benennen die weiterhin fehlgeschlagene DoodStream-Web-Serverermittlung ausdrücklich als bekanntes Problem; ein erfolgreicher Dateiupload wird nicht behauptet. -
Einstiegspunkt des Electron-Hauptprozesses:
main.js. -
Oberfläche:
renderer/; gekapselte Fachlogik:lib/; Online-Backup-Dienst:services/backup-api/. -
Die Abhängigkeiten sind lokal mit Node.js 24 installiert.
Entscheidungen
- Weiterarbeit erfolgt im aktiven Repository
Multi-Hoster-Upload, nicht im archiviertenMulti-Hoster-Upload-Private-Archiveund nicht im älteren Tauri-VersuchMulti-Hoster-Upload-2. - Die jüngste Automatik schützt erfolgreiche Uploads mit einem atomar gespeicherten Abschlussnachweis aus vollständigem Pfad, Hoster, Dateigröße und Änderungszeit.
- Schlägt dieser Nachweis fehl, bleibt die Queue erhalten und der Fehler wird als lokale Persistenzstörung behandelt, damit kein stiller Doppel-Upload entsteht.
- DoodStream-OTP-Prüfungen verwenden dieselbe Cookie-Sitzung weiter, fassen identische oder parallele Checks zusammen und fordern einen neuen Code nur nach einer ausdrücklichen Aktion mit mindestens 60 Sekunden Abstand an.
- DoodStream respektiert die ausdrückliche Auswahl
authType=login: Weblogin und Webupload werden nicht durch einen zusätzlich gespeicherten API-Key übersteuert. API-Accounts und ältere Accounts ohne ausdrückliche Login-Auswahl behalten den API-Weg. - Sammelchecks melden jedes Account-Ergebnis einzeln an den Renderer, sodass fertige Karten sofort grün, rot oder als OTP-pflichtig erscheinen, während die übrigen Accounts weiter geprüft werden.
- Neue Online-Backups unterstützen
24 Stunden,3 Tage,7 Tage,31 TageundUnbegrenzt(Standard seit2.1.47). Bestehende Schlüssel behalten ihre Laufzeit. Endliche Schlüssel werden lokal aus dem verschlüsselten Schlüsselbund entfernt und serverseitig ab Ablauf nicht mehr wiederhergestellt; der Dienst räumt abgelaufene Datensätze bei Zugriff oder der nächsten Speicherung auf. - Vorhandene Online-Backups und alte Upload-Payloads ohne Ablaufangabe bleiben zur Abwärtskompatibilität unbegrenzt gültig.
- Backup-Importe wenden Sprache und automatischen Account-Check sofort an. Alle Konfigurationsfelder werden übertragen; Warteschlange, Upload-Wiederherstellungsstatus, letzter Dateiauswahlordner, Automatik-Telemetrie und Pausenzustand bleiben bewusst geräte- beziehungsweise laufzeitgebunden.
- Ein nicht vorhandener Ordnerüberwachungspfad bleibt nach dem Import sichtbar gespeichert, die Überwachung wird aber deaktiviert und der Nutzer erhält eine Warnung. Ein nicht vorhandener Log-Ordner wird ebenfalls gemeldet, ohne den konfigurierten Pfad still zu löschen.
- Upload-Status-Badges und ihre Textlabels sind nicht markierbar; kopierbare Fehlerdetails, Logs und Eingabefelder behalten ihre Textauswahl.
- VOE-Fehler mit der Meldung
Maximum storage space of the account used up.gelten als temporärer Accountfehler. Die Retry-Schleife bricht auch nach einem bereits erfolgten Account-Wechsel sofort ab und setzt die Fallback-Kette Account für Account fort, bis ein Upload gelingt oder kein weiterer Account verfügbar ist. - Der DoodStream-Weblogin folgt dem aktuellen Browservertrag über
GET /?op=login_ajax, behandeltotp_sentundredirectausdrücklich und übernimmtsess_idauch aus den aktuellen Vue-Daten mit URL-sicheren Sonderzeichen. Die Upload-Server-Ermittlung verwendet/?op=upload_get_srvund versteht dessenserver.srv_url-/server.disk_id-Antwort. - Eine bestätigte DoodStream-Dashboard-Sitzung benötigt beim Account-Check kein Upload-Sessionfeld. Uploads übernehmen unabhängige Kopien der bestätigten Cookie-Sitzung aus dem OTP-Koordinator. Ein fehlender Upload-Server ist vom Login getrennt; bei Web-Accounts findet keine automatische API-Key-Ableitung für Uploads statt.
- Version
2.1.45ist als GitHub- und Forgejo-Release veröffentlicht; Backup-API2.0.4blieb bei dieser reinen Veröffentlichung der Desktopanwendung unverändert aktiv. - Der eingebaute Updater liest Releases und Binärdateien von Forgejo; GitHub liefert ergänzend die öffentlichen Release Notes. Ein Release ist deshalb erst vollständig, wenn die vier Assets auch im Forgejo-Release vorhanden sind.
- Forgejo bewahrt Leerzeichen in Asset-Namen, GitHub normalisiert sie zu Punkten. Das Forgejo-
latest.ymlund der Release-Plan verwenden Namen wieMulti-Hoster-Upload Setup 2.1.44.exe; das GitHub-Manifest muss auf den dort tatsächlich veröffentlichten Punktnamen zeigen. forgejo/masterbesitzt eine getrennte ältere Historie. Die aktuelle GitHub-Arbeitslinie wird deshalb zerstörungsfrei unterforgejo/sync/github-mastergespiegelt.
Start- und Testbefehle
npm ci
npm start
npm run verify
Im aktuellen übergeordneten Windows-Pfad enthält der Ordnername ein &. Dadurch können von npm erzeugte .cmd-Shims zerlegt werden. Die verifizierten direkten Aufrufe sind:
node node_modules/eslint/bin/eslint.js .
$testFiles = @((Get-ChildItem tests -Filter '*.test.js').FullName) + (Resolve-Path tests/ui-smoke.js).Path
node --test @testFiles
node --test services/backup-api/test/server.test.mjs
npm audit --omit=dev
Bekannte Probleme
npm run verifybricht in diesem konkreten Arbeitsverzeichnis bereits beim npm-Shim ab, obwohl Linter und Tests bei direktem Aufruf erfolgreich sind.- Der Forgejo-Standardzweig ist nicht mit dem aktuellen GitHub-
masterverwandt und darf nicht ohne gesonderte Prüfung oder ausdrückliche Freigabe überschrieben werden. - Der optionale, nur mit
RUN_UI_SMOKE=1aktivierte Langzeit-UI-Test meldet reproduzierbar 16 bestehende Timing-/Fixture-Abweichungen außerhalb des Accounts-/OTP-Pfads; die reguläre CI aktiviert diesen Test nicht.
Offene nächste Schritte
- DoodStream: Am 12.09.2026 wurde das authentifizierte Dashboard ohne
sess_idlive bestätigt. Der alte Upload-Aufruf lieferte eine andere Seite ohne Upload-Felder. Ein zwischenzeitlich getesteter API-Ausweichweg bestätigte zwar den Account, wurde auf Nutzerwunsch wieder entfernt; dessen Uploadversuch scheiterte serverseitig mitNo servers available for uploads. Der aktuelle Web-Upload muss noch live auf Serververfügbarkeit und erfolgreichen Dateitransfer geprüft werden. Die lokale Seitendiagnose protokolliert ausschließlich Strukturmerkmale ohne Formularwerte, OTP oder Cookie-Werte. - Keine offenen Veröffentlichungsschritte für Release
v2.1.47; Rollback-Ziel ist Anwendungsversion2.1.46. Das oben dokumentierte DoodStream-Uploadproblem bleibt offen. Privaten Wiederherstellungsschlüssel zusätzlich unabhängig vom lokalen PC sichern. - Bei Bedarf einen Arbeitsweg ohne
&im absoluten Pfad verwenden oder die npm-Aufrufe weiterhin direkt ausführen.
Zuletzt verifiziert
Stand: 22.09.2026 (Produktivaktivierung und Release 2.1.46; ältere Versionsprüfungen darunter sind historische Nachweise)
-
Eingebauter Updater mit isoliertem Testprofil und installierter Version
2.1.45erkennt2.1.46, übernimmt den englischen GitHub-Changelog und akzeptiert das Forgejo-Update-Manifest. Alle acht veröffentlichten Dateien wurden erneut heruntergeladen und anhand Größe und SHA-512 gegen die lokalen Dateien geprüft. Titel, Tag, Sprache, Veröffentlichungsstatus und beide anbieterspezifischen Manifeste stimmen. Vollständiger öffentlicher Quellcheck: 163 erlaubte Dateien, Screenshots gültig. Anleitung auf dem Desktop mit abgeschlossenem Live- und Release-Stand aktualisiert. -
Lint: erfolgreich, 0 Warnungen und 0 Fehler.
-
Haupttests: 823 erfolgreich, 0 fehlgeschlagen; einschließlich Standardgültigkeit
Unbegrenzt, deutscher/englischer Auswahl, aller expliziten Laufzeiten, vier Wiederherstellungstests und öffentlicher Quellmanifest-Prüfung (163 Dateien). Backup-API weiterhin 17 Tests erfolgreich; Lint ohne Fehler. Die Änderung der Standardgültigkeit ist mit2.1.47veröffentlicht. -
Wiederherstellung lokal Ende-zu-Ende geprüft: öffentliche Schlüsselabfrage, verschlüsselter Serverdatensatz, normaler Import, private Offline-Wiederherstellung und Löschen. Falsche Schlüssel, beschädigte Daten, Kennungstausch, Ablauf, fehlende Serverkonfiguration und Überschreiben bestehender Schlüssel/Ausgabedateien werden geprüft. Anleitung auf dem lokalen Desktop mit eingerichteten Schlüsselpfaden und Sicherungsnachweis aktualisiert.
-
Backup-API-Tests: 17 erfolgreich, 0 fehlgeschlagen.
-
Der Regressionstest für die VOE-Fallback-Kette bestätigt bei deaktivierter normaler Rotation genau einen Versuch auf jedem vollen Account und anschließend den erfolgreichen Wechsel auf den vierten Account.
-
Der öffentliche DoodStream-Webablauf wurde am 12.09.2026 direkt gegen die Startseite und deren aktuelle Browser-Skripte geprüft. Regressionstests bilden den neuen GET-Login,
otp_sent,redirect, Vue-Sessiontokens mit_/-und die aktuelleupload_get_srv-Antwort nach. -
Der lokale Web-Account-Check um 14:35:27 bestätigte das authentifizierte Dashboard ohne Upload-Sessionfeld. Regressionen prüfen zusätzlich explizite Web-Auswahl trotz gespeichertem API-Key, Wiederverwendung der OTP-Sitzung, getrennte Cookie-Kopien für parallele Uploads und Web-Serverausfälle. Der Upload-Aufruf verwendet nachweislich weder API-Ableitung noch einen zweiten Login.
-
Das Support-Bundle vom 07.09.2026 bestätigt als Ursache der gemeldeten Datei: Wechsel vom Primäraccount auf
Fallback #1, dort vier unnötige Versuche, anschließendskip-account-pauseund Abbruch mitoverride-same-as-currentstatt Weiterschaltung. -
Der vollständige opt-in UI-Smoke bestätigte zusätzlich, dass Upload-Status-Badges und deren Labels nicht markierbar sind; die 16 bekannten themenfremden Abweichungen blieben unverändert.
-
Produktionsabhängigkeiten:
npm audit --omit=devmeldet 0 Schwachstellen. -
Release
v2.1.45: Commit05769cdund annotierter Tag sind auf beiden Remotes identisch. Die englischen GitHub- und deutschen Forgejo-Changelogs, Titel, Versionsangaben und jeweils vier Assets wurden nach der Veröffentlichung geprüft. -
Der echte Updater mit installierter Version
2.1.44erkennt2.1.45und akzeptiert den englischen GitHub-Changelog sowie das Forgejo-Manifest. Alle acht veröffentlichten Assets wurden heruntergeladen und per Größe sowie SHA-512 gegen die lokalen Dateien geprüft. Beide Manifeste zeigen auf den tatsächlichen Installer-Namen des jeweiligen Anbieters. -
Der Installer
2.1.45ist 98.031.439 Bytes groß, Portable 97.806.832 Bytes. Datei- und Produktversion stimmen mit2.1.45überein; die verpackten Kernmodule stimmen mit dem geprüften Quellcode überein, Nutzereinstellungen sind nicht enthalten. Der vollständige öffentliche Quellcheck einschließlich Screenshots war erfolgreich. -
Release-Commit
e191ea8und der annotierte Tagv2.1.44wurden auf GitHub und Forgejo mit identischen Commit-Hashes verifiziert. -
GitHub- und Forgejo-Release
v2.1.44enthalten jeweils Installer, Portable-Build, Blockmap und ein zum Anbieter passendes Update-Manifest; GitHub führt den englischen und Forgejo den inhaltlich gleichwertigen deutschen Changelog. -
Der echte Updater mit installierter Version
2.1.43erkennt Forgejo-Releasev2.1.44, lädt den englischen GitHub-Changelog und akzeptiert Version, Installername, Größe und SHA-512 des veröffentlichten Manifests. -
Der öffentliche Release-Quellcheck bestätigte 160 erlaubte Dateien, korrekte Versionsmetadaten und gültige Screenshots. Der über den Forgejo-Updatepfad erneut geladene Installer ist 98.029.932 Bytes groß, stimmt mit der Manifest-SHA-512 überein und trägt Datei- sowie Produktversion
2.1.44. -
Backup-API
2.0.4läuft produktiv aus/opt/mhu-backup-api/releases/20260901T140230Z-v2.0.4; der vorherige Dienststand und alle 10 bestehenden Datensätze wurden davor in/var/backups/mhu-backup-api/20260901T140230Z-pre-v2.0.4.tar.gzgesichert und per Gzip-Test sowie SHA-256 geprüft. -
Der produktive HTTPS-Smoke für einen endlichen Testschlüssel bestätigte Erstellen
201, Wiederherstellen200, Löschen204und anschließendes Nichtfinden404; danach waren weiterhin exakt 10 bestehende Datensätze vorhanden.