Download mit Wasserzeichen – dreistufiger Ablauf und Ausgabeprotokoll
Schritte von Downloadanfrage, asynchroner Vorbereitung und gestreamter Auslieferung, erneute Rechteprüfung, Inhalt des Wasserzeichens und Fingerabdrücke der ausgegebenen Exemplare.
Überblick
Ein Portal-Download läuft in drei Schritten: Anfrage, Vorbereitung im Hintergrund, dann Auslieferung der Datei. Bytes bewegen sich erst im letzten Schritt, und kein Exemplar mit Wasserzeichen wird im Webspeicher abgelegt.
Datenmodell
Die Tabellennamen tragen in der Datenbank das installationseigene Präfix.
| Tabelle | Rolle |
|---|---|
doc_download | Downloadanfrage (Token, Benutzer, Quelle, store_id, Ordner, Dokument, Zustand, Ablauf) |
doc_download_item | Ausgabe je Datei (eindeutiger Wasserzeichencode, SHA-256-Fingerabdruck, Grund des Auslassens) |
Migration: install/migrations/1.1.0/20261029_011_dataroom_store_download.sql.
Ablauf
dlrequest&doc_share_id=(optionaldoc_id; ohne den ganzen Ordner): Anmeldeprüfung (error_login_required), danndownloadRequest(): Der Ordner gehört dem Benutzer und ist herunterladbar, bei einer Einzeldatei ist auch das Dokument zugänglich und herunterladbar;dlbtdocdownload->request(user_id, 'portal', share_id, doc_id)schreibt eine Zeile indoc_downloadund reiht eine sofortige Aufgabedoc_downloadein. Antwort: Token,queued.- Hintergrundaufgabe
doc_download(prepareQueued(50)): schließt abgelaufene Anfragen; prüft das Recht mit den zu diesem Zeitpunkt gültigen Regeln erneut (Zuordnung, Zeitfenster, Shop der Anfrage, Inhaltsbereich, Herunterladbarkeit von Ordner und Dokument; bei einer Admin-Anfrage alle aktiven Dokumente des Ordners); je Datei ein eindeutiger Code im Ausgabeprotokoll; nicht markierbare Dateienskip; ohne ausgebbare Dateifailed(nothing_watermarkableodernothing_allowed), sonstreadymit 24 Stunden Ablauf. dlstatus(alle zwei Sekunden): nur die eigene Anfrage (getDownloadByToken); hat die Warteschlange sie nach 20 Sekunden nicht übernommen, führt der Endpunkt die Vorbereitung selbst aus; ein abgelaufenes fertiges Paket istexpired. Antwort: Zustand, Dateien, ausgelassene, bei fertig die URL vondlfile.dlfile: Token gehört dem Benutzer, Zustandready, und der Ordner ist JETZT zugänglich.dlbtdocdownload->stream(): Bytes je Datei in den Speicher, Wasserzeichen im Speicher (PDF:Dlbtwatermark::pdf, Bild:Dlbtwatermark::image; Text: Name, ID, Datum, „Vertraulich“, eindeutiger Code); eine Datei direkt, mehrere als gestreamtes ZIP (Zipwriter) mit Ordnernamen und Inhaltsverzeichnis. Der SHA-256-Fingerabdruck jedes Exemplars wird protokolliert (markDownloadIssued) und der Download markiert (markDownloaded).
Die alte Route download bleibt bestehen: Ihr Rumpf startet die gemeinsame Anfrage und leitet mit dem Token-Parameter zum Portal weiter.