Re: [TYPO3-german] CHash Problem Typo3 8.7 in Extbase-Ext in CLI (Scheduler)

2017-05-15 Diskussionsfäden Philipp Gampe
Hi Jürgen,

Jürgen Pfusterschmied wrote:

> Ich habe mir die newsletter und die news Extensions angesehen, konnte aber
> keinen Lösungsansatz für dieses Problem finden. Kann mir jemand einen
> Hinweis geben ? Kennt jemand eine Ext. an die man sich orientieren kann?

1. realurl deaktiviert sich im Backend Kontext (also auch in CLI) komplett, 
d.h. du must zumindest realurl an der Stelle überschreiben.

Als xclass:

ext_localconf.php:
$GLOBALS['TYPO3_CONF_VARS']['SYS']['Objects']
[\DmitryDulepov\Realurl\Encoder\UrlEncoder::class] = array(
'className' => \my\foo\Xclass\UrlEncoder::class
);

typo3conf/ext/foo/Classes/Xclass/UrlEncoder.php
isRealURLEnabled()
&& !$this->isSimulateStaticEnabled()
&& !$this->isInWorkspace()
&& $this->isTypo3Url()
&& $this->isProperTsfe();
}
}

2. Die Links-erzeugenden Viewhelper von Fluid nutzen einen 
EnvironmentService um festzustellen, ob sie im Frontend oder Backend laufen.

typo3conf/ext/foo/Classes/Service/FrontendEnvironmentService.php
objectManager-
>get(FrontendEnvironmentService::class);
$uriBuilder = $this->controllerContext->getUriBuilder();
$uriBuilder->injectEnvironmentService($environment);
$this->controllerContext->setUriBuilder($uriBuilder);
}
}


Alles ohne Garantie.

Grüße
-- 
Philipp Gampe – PGP-Key 0AD96065 – LFCS
TYPO3 CMS Certified Integrator – Certified Developer – Active contributor
TYPO3 ... inspiring people to share!

___
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

Re: [TYPO3-german] CHash Problem Typo3 8.7 in Extbase-Ext in CLI (Scheduler)

2017-05-15 Diskussionsfäden Stephan Schuler
Hallo Jürgen.

Auf solche Probleme stößt man leider sehr schnell, wenn man im Backend-Context 
oder im CLI-Context Frontendoperationen durchführt.
Einen sinnvollen Weg, im Backend einen Frontend-Context zu erzeugen gibt es 
nicht. Das endet immer im Gefrickel und vollständig von BE auf FE umschalten 
wirst Du trotzdem nicht können.

Du kannst den Configuration-Manager zum Beispiel dahin vergewaltigen, dass er 
seine Backend-Config vergisst (die für Controller auf „module“ basiert) und 
eine Frontend-Config generiert (die auf „plugin“ baisert). Das ist aber weit 
entfernt von Public API. Damit fängt es bei mir häufig an, das ist der Teil der 
noch relativ einfach geht.
Technisch musst Du nur die passenden Rahmenbedingungen für Frontend-Settings 
liefern, also ein globales TSFE. Meiner Meinung nach ist das Extbase-Utility 
FrontendSimulatorUtility hierfür nicht ausreichend, das TSFE-Objekt das daraus 
proudziert wird ist nicht funktional. Stattdessen macht das EidUtility mit 
„initFeUser()“ schon einen halbwegs guten Job, wenn auch das dadurch erzeugte 
TSFE trotzdem noch nicht vollständig initialisiert ist und außerdem ist es 
„private static“ im EidUtility, man muss also etwas tricksen um da ran zu 
kommen. Und wieder sind wir weg von der Public API.

Die Links die Du ansprichst sind schon schwieriger. Der UriBuilder fragt den 
EnvironmentService nach „isEnvironmentInBackendMode()“, das liest eine 
PHP-Konstante aus. Das heißt, dass es hier einfach kein Setting gibt mit dem Du 
den UriBuilder dazu veranlassen kannst, eine FE-Uri zu bauen, wenn Du nicht 
entweder den EnvironmentService überschreibst oder den UriBuilder selbst, 
jeweils um eine Möglichkeit, entgegen der Konstante von einem anderen 
Environment auszugehen. Hier bist Du dann auch wieder sehr weit von Public API 
entfernt.

https://github.com/TYPO3/TYPO3.CMS/blob/master/typo3/sysext/extbase/Classes/Mvc/Web/Routing/UriBuilder.php#L621
https://github.com/TYPO3/TYPO3.CMS/blob/master/typo3/sysext/extbase/Classes/Service/EnvironmentService.php#L39

Du siehst: Das ist so eigentlich gar nicht vorgesehen.

Wenn ich an FE-Features im Backend muss, baue ich mir in der Regel einen 
Frontend-Controller dem ich die Daten per POST-Request übergeben kann. Das 
sieht in der Regel so aus:
• Ein HttpRequest-Objekt innerhalb des CLI ruft eine bestimmte, im BE 
konfigurierte Seite des Frontends auf.
• Es wird als POST-Payload einerseits ein Model übergeben das dem 
Frontend-Controller alle Daten liefert die er braucht und andererseits ein per 
HashService erzeugter MAC  des serialisierten Model-Objekts.
• Der Frontend-Controller darf so einerseits prüfen, dass mein Model-Objekt von 
mir kommt (weil nur ich es per MAC signieren konnte) und andererseits dann auf 
ein Argument mappen, bevor er sein Frontend-Ding damit durchzieht.
• Hier hast Du dann spontan Timeout- und Memory-Einschränkungen des Frontends 
die Du im CLI nicht hast.

Grundsätzlich den Umweg über ein wirkliches Frontend zu gehen und den Request 
dabei so zu signieren, dass er nicht von fremden gefaket werden kann, hab ich 
mir vor Jahren aus der Solr-Extension abgeschaut, der Index von pages wird dort 
so erzeugt.

Beste Grüße,



Stephan Schuler
Web-Entwickler | netlogix Web Solutions

Telefon: +49 (911) 539909 - 0
E-Mail: stephan.schu...@netlogix.de
Web: websolutions.netlogix.de




Neu: Wir sind Amazon Web Services Partner. Mehr erfahren:
https://websolutions.netlogix.de/technologie/amazon-web-services-aws





netlogix GmbH & Co. KG
IT-Services | IT-Training | Web Solutions
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: Matthias Schmidt



___
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

[TYPO3-german] CHash Problem Typo3 8.7 in Extbase-Ext in CLI (Scheduler)

2017-05-15 Diskussionsfäden Jürgen Pfusterschmied

Liebes Forum,

Über eine Extension  sollen automatisierte Tasks (Scheduler, CLI Mode) 
ablaufen...
Emailversand, Newsletter, Social Media Posts, etc. Dabei sollen allen  URLS 
über RealUrl generiert werden.
Im Frontend Context funktioniert dies. Das Problem im CLI modus ist, dass die 
URLS entweder nicht über RealUrl (fehldende TSFE u- cObject) laufen bzw. (und 
das ist das Hauptproblem) kein richtiger cHash erstellt wird. Dh. beim 
automatischen Versenden eines Links per Email ist dieser link nicht  gültig 
(fehlender oder falscher cHash). Wenn im Installtool der chash parameter 
disabled wird, funktioniert alles.

Ich habe mir die newsletter und die news Extensions angesehen, konnte aber 
keinen Lösungsansatz für dieses Problem finden.
Kann mir jemand einen Hinweis geben ? Kennt jemand eine Ext. an die man sich 
orientieren kann?

LG Jürgen
___
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german