Actions
Feature #12085
closedPersistent download url
Start date:
04.03.2021
Due date:
% Done:
100%
Estimated time:
Discuss:
Prio Planung:
Vote:
Description
- Fuer Teachingtools benoetigen wir Zugriff mit sprechenden und persistenten URLs (fuer den Download) auf zuvor hochgeladene Files.
- Falls moeglich waere es gut den Zugriff trotz persistenter URL unterbinden zu koennen.
Related issues
Updated by Carsten Rose about 3 years ago
Konzept:
- Download URL:
<baseUrl>/typo3conf/ext/qfq/Classes/Api/download.php/<uniqId>
oder<baseUrl>/dl.php/<uniqId>
- Wird download.php ohne `s` Parameter aufgerufen, befindet es sich im 'direct download mode'
- Option:
- Im Install dir ist `dl.php` ein Symlink auf `typo3conf/ext/qfq/Classes/Api/download.php`.
- Bei der ersten Installation und bei einem QFQ Update: check ob der symlink existiert und falls nicht anlegen.
- In der QFQ Extension config gibt es einen neuen Parameter `direct download mode query'. Diese erzeugt mit der Query (als prepared statement mit Fragezeichen) einen normalen download mode link syntax. Bsp:
SELECT CONCAT('D:output.pdf|F:', n.pathFileName) FROM notiz AS n WHERE n.id=? OR n.reference=? AND NOW()<=n.expire
- Falls 'b,r,s' angegeben sind haben diesen keinen Einfluss.
- Das was in der URL nach `dl.php` angegeben ist, sind die Bind Parameter. Der Reststring wird explodiert nach '/'. Alle gegebenen values werden bind Parameter gesetzt.
- QFQ ermittelt die Anzahl der Fragezeichen in der Query. Gibt es mehr Fragezeichen als Parameter, wird der letzte Parameter so oft wiederholt bis die Anzahl Fragezeichen erreicht ist. Ob jemals mehr als ein Parameter noetig sein wird, ist nicht klar - aber zumindest in dem Beispiel oben gibt es eine Oder Abfrage und es braucht min. 2 bind Parameter (die in dem Fall identisch sein sollten).
- Mit dem Beispiel oben kann sowohl nach einer ID gesucht werden als auch nach einem sprechenden Namen.
- Der Parameter wird urldecode und anschliessend auf alnumx geprueft "[A-Za-z][0-9]@-_.,;: /() ÀÈÌÒÙàèìòùÁÉÍÓÚÝáéíóúýÂÊÎÔÛâêîôûÃÑÕãñõÄËÏÖÜŸäëïöüÿçß"
- Fehlermeldung mit dealyAttackSecond:
- Der Bind Parameter leer oder ungueltig
- Kein `direct download mode query' angegeben
- Kein Queryergebnis oder mehr als eins
Updated by Carsten Rose about 3 years ago
- Status changed from New to Closed
- % Done changed from 0 to 100
Applied in changeset typo3-qfq|7d847f074673d69e5ea8d61faa0eb7ccf650c4f5.
Updated by Carsten Rose about 3 years ago
WIP:
- Doku fehlt
- Nur eine SQL in der Config ist vermutlich viel zu wenig
- Es koennten weitere eingebaut werden: Erkennung anhand des Skriptnamen die dann in der QFQ Extension Config entsprechend hinterlegt werden.
- ... AS _link Class sollte diesen Modus auch unterstuetzen
- symlink dl.php muss aktuell noch manuell angelegt werden.
- Unit Tests schreiben
Updated by Carsten Rose about 3 years ago
- Status changed from Closed to In Progress
Updated by Carsten Rose about 3 years ago
- Subject changed from download: access files in fileadmin/protected (or elsewhere) specified via db-record and given uniq identifier to download: persistent url
Updated by Carsten Rose about 3 years ago
- Subject changed from download: persistent url to Persistent download url
Updated by Carsten Rose about 3 years ago
Aktuell erzeugt ein
CONCAT('d|s:0|F:', p.name, '|t:', p.name) AS _link
einen kaputte Link:
<a href="typo3conf/ext/qfq/Classes/Api/download.php?mode=pdf&_exportFilename=&_b64_download=RjpEb2U=" class="0" title="Download" >Neu fuehrt
s:0
automatisch dazu das ein persistent Download Link generiert wird.
s:0
d:123
- dann wird der Defaulttypo3conf/ext/qfq/Classes/Api/download.php
genommen.d:dl.php/123
- dann wird die Kurzschreibweise genommen - Erkennung anhand des '.php/' - es wird immer eine PHP Datei sein. Detection von '/' reicht nicht, da evtl. mehrere Parameter, getrennt mit '/', uebergeben werden- Alle weiteren Parameter wie gehabt.
- Sources a la file (`F:`), page (`p:`), url (`u:`) oder uid (`uid:)` sind in diesem Modus nicht erlaubt (schaden zwar nicht da sie ignoriert werden, es sollte aber eine Fehlermeldung damit es sofort auffaellt.
- Hinweis in der Doku das in der Extension Config eine entsprechende URL zu definieren ist.
Updated by Carsten Rose about 3 years ago
- Status changed from In Progress to Closed
- Target version changed from next5 to 21.3.0
Updated by Carsten Rose about 3 years ago
- Related to Feature #12109: Donwload Link: Plain, SIP, Persistent Link, Peristent SIP - new notation added
Actions