Re: [TYPO3-german] Realurl für URL ausstellen

2015-03-25 Diskussionsfäden Olivier Seubert

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

2015-03-23 Diskussionsfäden Stephan Schuler
-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

2015-03-22 Diskussionsfäden Olivier Seubert

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

2015-03-22 Diskussionsfäden Jost Baron
-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

2015-03-22 Diskussionsfäden Olivier Seubert

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