Re: [TYPO3-german] Realurl für URL ausstellen
Klasse. Die Lösung ist sogar noch eleganter. ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
Re: [TYPO3-german] Realurl für URL ausstellen
-BEGIN PGP SIGNED MESSAGE- Hash: SHA256 Hallo zusammen. Ich habe das vor einiger Zeit so gelöst: https://gist.github.com/anonymous/6d07e51100f75fcb488d https://gist.github.com/anonymous/ecf429c9df480a523e65 https://gist.github.com/anonymous/ffcce414e71e3cee06a7 https://gist.github.com/anonymous/f512c6f6374b5890920d Dass es ein Downloadlink auf eine banale Datei ist wird der Apache schon entscheiden. In der Standard-TYPO3-Konfiguration würde ein solcher Dateilink nicht mal auf einen PHP-Prozess treffen, weil die Standard-.htaccess diesen Request schon direkt ans Dateisystem weitergibt. Das heißt: Man muss für solche gesicherten Downloads ohnehin eine zusätzliche Regel in die .htaccess-Datei aufnehmen. Und dann darf da auch gleich ein Indikator dran stehen, der TYPO3 in einen separaten Page-Type routet. RealURL wird dadurch unterbrochen, dass mein preProcessRequest-Hook (der vor RealURL passiert) einfach den Query-String und die Request-URI leert. Dadurch trifft RealURL dann auf eine URL bei der es nichts zu tun gibt. Dieser Schritt ist die preProcessRequest-Methode. Erstens muss die offensichtlich vor RealURL passieren, zweitens braucht sie aber keinerlei Konfiguration. Es ist also nicht notwendig, z.B. auf TypoScript zu warten. Dann läuft das TYPO3-FE-Rendering in das per TypoScript definierte PAGE-Objekt, es darf also TypoScript geladen werden wenn notwendig. Der zweite Schritt ist dann die run-Methode. Hier ist dann TypoScript bereits geladen. Das ist notwendig, weil man z.B. unterschiedliches Verhalten pro Download-Domain haben kann. Und in der run-Methode darf dann die eigentliche Download-Magie implementiert werden. Berechtigungsprüfung, Readfile oder X-Sendfile, ggf. eine Weiterleitung an eine signierte Amazon-Cloudfront-URL mit einigen Minuten Verfallsdatum. Offensichtlich ist dieses Konstrukt von RealURL entkoppelt. Es verhindert zwar zuverlässig dass RealURL in den 404er läuft, allerdings ist es eben nicht an RealURL gebunden. Und dass die Download-Magie anschließend mit vollständig flexiblem TypoScript passieren kann erlaubt einen recht flexiblen Einsatz. Gruß, Stephan Schuler Web-Entwickler | netlogix Media Telefon: +49 (911) 539909 - 0 E-Mail: stephan.schu...@netlogix.de Web: media.netlogix.de netlogix GmbH Co. KG IT-Services | IT-Training | Media Neuwieder Straße 10 | 90411 Nürnberg Telefon: +49 (911) 539909 - 0 | Fax: +49 (911) 539909 - 99 E-Mail: i...@netlogix.de | Web: http://www.netlogix.de netlogix GmbH Co. KG ist eingetragen am Amtsgericht Nürnberg (HRA 13338) Persönlich haftende Gesellschafterin: netlogix Verwaltungs GmbH (HRB 20634) Umsatzsteuer-Identifikationsnummer: DE 233472254 Geschäftsführer: Stefan Buchta, Matthias Schmidt - -Ursprüngliche Nachricht- Von: typo3-german-boun...@lists.typo3.org [mailto:typo3-german-boun...@lists.typo3.org] Im Auftrag von Olivier Seubert Gesendet: Sonntag, 22. März 2015 23:44 An: typo3-german@lists.typo3.org Betreff: [TYPO3-german] Re: Realurl für URL ausstellen Habe folgende Lösung gefunden: Einen RealURL-Hook setzen und damit verhindern, dass RealURL die URL witer auflöst: In der ext_localconf.php setzt man z.B.: $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl']['decodeSpURL_preProc'][] = 'EXT:yourextension/Classes/Hooks/RealUrlHook.php:\\YourVendor\\YourExtension\\Hooks\\RealUrlHook-decodeSpURL_preProc'; Und in der yourextension/Classes/Hooks/RealUrlHook.php: ?php namespace YourVendor\YourExtension\Hooks; /** * Hook functions for RealURL. * * @package yourextension * @license http://www.gnu.org/licenses/gpl.html GNU General Public License, version 3 or later */ class RealUrlHook { /** * Hook function to prevent RealURL from further parsing, * when parameter is set via HTTP-request. Instead forward to * root page. * * @param array $params * @param tx_realurl $ref */ function decodeSpURL_preProc($params, $ref) { // check if get parameter is set if (($_SERVER !== null) array_key_exists('QUERY_STRING', $_SERVER) preg_match('/(?:^|.*)tx_yourextension\\[bypassrealurl\\]=(?:1|true).*/is', $_SERVER['QUERY_STRING'])) { // if yes, forward to root page $params['URL'] = /; } } } Hoffe das ist hilfreich für irgendjemanden. ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german -BEGIN PGP SIGNATURE- Version: PGP Universal 3.3.2 (Build 15704) Charset: utf-8 wpUDBQFVEC7Wpp0IwsibV8MBCF4MBACmU/8dy3cTJavontlpGSnJYd4NshCtxf+u I/ivk2L2U6bY9OyNQ1lo6kFt5wuyuoBBF+FWhvEVpziB2CWLt6JKvxvdG9Wm21kA 58ssHBBopTDQw8EqJMMESqTbT5NDx3KT2TAweEq4JnBIpMXM2aGlQVbf1nhYhTpX r5HszUtm2g== =4Equ -END PGP SIGNATURE- ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
[TYPO3-german] Realurl für URL ausstellen
Hallo zusammen, Geniale Idee gesucht :-) !!! Typo3 6.2 ist die Basis. Stehe in folgender Sackgasse: Ich möchte eine Extension schreiben, die überprüft, ob der Frontend-User berechtigt ist eine Datei zu lesen, bevor diese angezeigt wird. Folgendermaßen hatte ich mir das gedacht: 1. Alle HTTP-Requests, die in einem bestimmten Ordner eingehen, sollen per .htaccess auf den pageType 665 umgleleitet werden: htaccess im Ordner fileadmin/intern: RewriteRule ^(.*)$ /index.php?type=665tx_internalfiles_mapper[file]=$1 [L] 2. Der pagetype 665 ist so konfiguriert, dass dort das Extension-Plugin eingefügt wird, welches dann die Überprüfung durchführt und bei Erfolg den Dateiinhalt zurückgibt: tx_internalfiles_mapper = PAGE tx_internalfiles_mapper { typeNum = 665 ... 10 tt_content.list.20.internalfiles_mapper } Ohne RealUrl funktioniert das ganze wunderbar. Wenn Realurl aber installiert ist, gibt es Probleme: Dann nämlich, greift der Hook von RealUrl in der index.php von Typo3 und noch bevor der pageType ausgewertet wird, versucht RealUrl den Pfad /fileadmin/intern/testdatei.png aufzulösen. Natürlich geht das aber nicht und RealUrl leitet die Ausgabe auf die 404-Fehlerseite um. RealURL soll aber bei dem Szenario eigentlich nicht dazwischen pfuschen. Wenn ich in der .htaccess den internen Rewrite durch einen externen Redirect ersetze [R], geht es ebenfalls. Es ist nur nicht ganz so schön, dass die Dateinamen dann in kryptische URLs aufgelöst werden. Ich würde es wirklich gerne über interne Rewrites lösen. Nun zu meinen Fragen: 1. Kann ich die Abarbeitung von RealURL irgendwie umgehen, z.B. durch setzen eines URL-Parameters tx_realurl[enable]=0? 2. Kann ich RealURL für einen bestimmten Pfad (fileadmin/intern) deaktivieren in typo3? 3. Gibt es eine andere geniale Idee wie ich verhindern kann, dass RealURL dazwischen pfuscht? 4. Bin ich gerade dabei das Rad neu zu erfinden? Gibt es vielleicht bereits eine Lösung, dass Dateien welche über die metadaten eine Frontend-Benutzergruppe zugewiesen haben nur dann angezeigt werden, wenn der User auch korrekt eingeloggt ist? Über einen Geistesblitz/anregende Gedanken wäre ich äußerst erfreut ;-). Grüße Oli4 ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
Re: [TYPO3-german] Realurl für URL ausstellen
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Moin Olivier, da gibts schon ne Lösung, die ohne solche Hacks arbeitet (und z.B. auch mit entfernten Storages klarkommt): http://typo3.org/extensions/repository/view/fal_securedownload Soweit ich es sehe, wirst du da aber kryptische URLs bekommen, die irgendwie so aussehen: /index.php?eID=dump_filehash= . Gruß Jost On 03/22/2015 11:40 AM, Olivier Seubert wrote: Hallo zusammen, Geniale Idee gesucht :-) !!! Typo3 6.2 ist die Basis. Stehe in folgender Sackgasse: Ich möchte eine Extension schreiben, die überprüft, ob der Frontend-User berechtigt ist eine Datei zu lesen, bevor diese angezeigt wird. Folgendermaßen hatte ich mir das gedacht: 1. Alle HTTP-Requests, die in einem bestimmten Ordner eingehen, sollen per .htaccess auf den pageType 665 umgleleitet werden: htaccess im Ordner fileadmin/intern: RewriteRule ^(.*)$ /index.php?type=665tx_internalfiles_mapper[file]=$1 [L] 2. Der pagetype 665 ist so konfiguriert, dass dort das Extension-Plugin eingefügt wird, welches dann die Überprüfung durchführt und bei Erfolg den Dateiinhalt zurückgibt: tx_internalfiles_mapper = PAGE tx_internalfiles_mapper { typeNum = 665 ... 10 tt_content.list.20.internalfiles_mapper } Ohne RealUrl funktioniert das ganze wunderbar. Wenn Realurl aber installiert ist, gibt es Probleme: Dann nämlich, greift der Hook von RealUrl in der index.php von Typo3 und noch bevor der pageType ausgewertet wird, versucht RealUrl den Pfad /fileadmin/intern/testdatei.png aufzulösen. Natürlich geht das aber nicht und RealUrl leitet die Ausgabe auf die 404-Fehlerseite um. RealURL soll aber bei dem Szenario eigentlich nicht dazwischen pfuschen. Wenn ich in der .htaccess den internen Rewrite durch einen externen Redirect ersetze [R], geht es ebenfalls. Es ist nur nicht ganz so schön, dass die Dateinamen dann in kryptische URLs aufgelöst werden. Ich würde es wirklich gerne über interne Rewrites lösen. Nun zu meinen Fragen: 1. Kann ich die Abarbeitung von RealURL irgendwie umgehen, z.B. durch setzen eines URL-Parameters tx_realurl[enable]=0? 2. Kann ich RealURL für einen bestimmten Pfad (fileadmin/intern) deaktivieren in typo3? 3. Gibt es eine andere geniale Idee wie ich verhindern kann, dass RealURL dazwischen pfuscht? 4. Bin ich gerade dabei das Rad neu zu erfinden? Gibt es vielleicht bereits eine Lösung, dass Dateien welche über die metadaten eine Frontend-Benutzergruppe zugewiesen haben nur dann angezeigt werden, wenn der User auch korrekt eingeloggt ist? Über einen Geistesblitz/anregende Gedanken wäre ich äußerst erfreut ;-). Grüße Oli4 -BEGIN PGP SIGNATURE- Version: GnuPG v1 iQIcBAEBAgAGBQJVDp+dAAoJEAcyRQvmIlC9GVsP+weczdqwJYY1h4qsTrpY796k 5Wz86wO4mZjIBgAdnZYQFiJ8bWTjPFJobv2ezAa3QThYmZAlAePpzGw6Mwhow6+w 6ibtP1Cq7UTz4fm/+8rPQIaDvKh7StyPfR+T7Gk7eW2pOZ4kqCco6ZlvncP/BYuL EqFgdpRvKCqw076u3++DN/Q+VWfiW0NeDolz1eDxsS3pD35yAAVPxRQW1YRJSFNh 3yGb/WCuSDRIlzttnnMnLn22wM8TYS9jYHub41pcWPTk3gBgii6XfrRptuw3aT5X CWUKAANqTQ0QO9QNIPvArXycRkWo/0+ayQL12c/C3BhGowRDI9pdUD5Hl0G9FRdu tqwQGpWSOeLuDO98Btwpc9e7SM4RuPekl6efjbQdcqGhbzzFita/t1yuovePGhMk KGjP1xeisS0LCkG+tMTdb6zJlsTPTSJyBbQcOmymmExDRFPNuteZw+TyhyQrafbF q0R0+GX0PimJ5mVYMvILYVWzKDLcyT9bMXFeJI1TJBgA42HYh3XabzR7KUyrxPUm NxLFky2OwHI7bi664gx0BSTHJxl4RqgQn5PBmYrckXCmQoLf/ydfuRJPzNIu+YAU NGB76RT5sQTpMW6CdWNEFawTze4tBes5uLKT0ZGiV0RXFZUUj/6pi/Z9UXTtD9Tj 6j4GKFPTFnvAktyTeKBA =/Plp -END PGP SIGNATURE- ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
Re: [TYPO3-german] Realurl für URL ausstellen
Hallo Jost, das sieht interessant aus. Ich schau mir das mal an. Falls noch jemand eine Lösung für das Problem URL-Rewrite auf einen pageType trotz Installation von RealURL weiß, würde mich interessieren ob das überhaupt möglich ist. Gruß Oli4 ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german