WBCE Home | WBCE Hilfe | WBCE Addon Repository | Impressum | Datenschutz

WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

You are not logged in.

#1 13.06.2019 23:11:15

mrbaseman
Developer

Inline Wrapper

I have been using the inlinewrapper module for a long time, and recently I have made it compatible to recent php versions and added https support.

When you use the module, please be aware that you are usually not allowed to grab arbitrary web content and display it within your website.

The use case I have is that I'm maintaining two websites for more or less the same community (I'm admin of both of them), but I don't want to update the content in two places. So I just create the raw content that is supposed to be displayed (the whiteboard template is useful there) and include that in both places using the inline wrapper module.

PS: Don't be confused by the version number - I have just increased the patch level a little bit and ended up at this magic number. It has no meaning at all.

Offline

Liked by:

ice, stefanek, bernd

#2 04.11.2019 14:20:52

tomno399
Member

Re: Inline Wrapper

WBCE 1.3.1
PHP 7.3.10
SQL 5.5.54

Bei Installieren erfolgt diese Meldung: Parse error: syntax error, unexpected '<', expecting end of file in /mnt/web224/c0/81/52078981/htdocs/modules/inlinewrapper/install.php on line 1


Online: WBCE 1.4.2, PHP 7.3.x; Lokal: XAMPP WBCE 1.4.2, PHP 7.4

Offline

#3 04.11.2019 14:26:51

florian
Administrator

Re: Inline Wrapper

In der install.php steht <?<?php, das in <?php ändern.
Erweiterungen  > erweitert > Module neu laden aufrufen.
Erweiterungen > Module > Inline Wrapper deinstallieren.
Dann mit der gefixten Version (Anhang) nochmal installieren.

Last edited by florian (04.11.2019 15:12:46)

Offline

#4 04.11.2019 15:04:56

tomno399
Member

Re: Inline Wrapper

Datei ist NICHT gefixt, habs aber selbst ändern können. Danke!


Online: WBCE 1.4.2, PHP 7.3.x; Lokal: XAMPP WBCE 1.4.2, PHP 7.4

Offline

#5 04.11.2019 15:13:31

florian
Administrator

Re: Inline Wrapper

Danke für den Hinweis, falsches Zip erwischt. Dann machen wir's doch gleich richtig und zählen die Version eins hoch. Schöner ist die Versionsnummer zwar immer noch nicht, aber naja.

Offline

#6 04.11.2019 15:18:52

tomno399
Member

Re: Inline Wrapper

Und ich hab das Modul mal gleich gescheckt:

Bad Request
Your browser sent a request that this server could not understand.
Reason: You're speaking plain HTTP to an SSL-enabled server port.
Instead use the HTTPS scheme to access this URL, please.

Ich rufe von einer https-Seite eine fremde https-Seite auf. Der Wrapper funktioniert, der Inlinewrapper nicht.


Online: WBCE 1.4.2, PHP 7.3.x; Lokal: XAMPP WBCE 1.4.2, PHP 7.4

Offline

#7 04.11.2019 16:23:46

mrbaseman
Developer

Re: Inline Wrapper

upps, den bug hab ich dann nicht mehr gesehen, nachdem ich es einmal installiert hatte und daraufhin wohl nur noch updates gemacht habe.

@florian, ich hab's mit der neuen Versionsnummer in mein Repo übernommen

@tomno399 Der wrapper macht einfach einen iframe auf, in den die Fremde Seite eingebettet wird. Der Browser fragt dafür aber den fremden Server. Beim inlinewrapper frägt php den fremden Server und bettet dessen Ausgabe in die eigene Seite mit ein. Bei der remote URL hast du schon https:// angegeben? (...und pass auf dass da kein Leerzeichen vor der URL mit drin ist!) Dann sollte eigentlich auch ein ssl-Socket zu dem remote-Port aufgemacht werden. Allerdings ist die Erkennung sehr rudimentär: Es ist http:// und https:// prinzipiell erlaubt, und wenn nach Abschneiden der ersten 7 Zeichen noch ein Slash übrig ist, dann wird es wohl https:// gewesen sein. Den Support dafür habe ich mit Minimalaufwand in das Steinzeit-Modul eingebaut.

Offline

#8 04.11.2019 17:27:46

tomno399
Member

Re: Inline Wrapper

Siehe Bild im Anhang.

Ich habe mal verschiedene URLs ausprobiert. Einige Seiten funktionieren, andere Seiten erzählen "Verbindung zur Datenbank nicht möglich!
No bodytags found" oder "Site has moved".

Demnach liegt es an der fremden Seite, was sie zulässt und was nicht. Hmm, we are looking forward ....

Last edited by tomno399 (04.11.2019 17:47:34)


Online: WBCE 1.4.2, PHP 7.3.x; Lokal: XAMPP WBCE 1.4.2, PHP 7.4

Offline

#9 04.11.2019 18:43:16

mrbaseman
Developer

Re: Inline Wrapper

hmm... die verwendete php Funktion fsockopen unterstützt eine ssl bzw. tls-verschlüsselte Verbindung nur wenn Openssl-Support mit eincompilliert ist. Kannst du mal mit phpinfo prüfen, ob das der Fall ist?
Wenn nämlich nicht, könnte sein, dass dann einfach eine plain-http-Anfrage an den https-Port geschickt wird (das php Manual sagt nämlich nicht, ob dann ein Fehler auftritt oder ein Fallback auf plain http versucht wird) und dann hängt es von der Remote-Seite ab, wie sie mit einer solchen Anfrage umgeht (sie akzeptiert, einen redirect schickt, sonst einen Fehlercode, oder einfach eine leere Seite ausliefert).

Offline

#10 05.11.2019 09:53:52

tomno399
Member

Re: Inline Wrapper

hmm, die Technik überflügelt meinen Horizont. Ich habe dir eine PM geschickt.


Online: WBCE 1.4.2, PHP 7.3.x; Lokal: XAMPP WBCE 1.4.2, PHP 7.4

Offline

#11 06.11.2019 00:40:10

mrbaseman
Developer

Re: Inline Wrapper

huh.. ich habe jetzt mal von meiner lokalen Installation die Kommunikation zu der Seite mitgeschnitten. Die Kommunikation ist mit https verschllüsselt und trotzdem antwortet der Server innerhalb des verschlüsselten Kanals mit

"Bad Request

Your browser sent a request that this server could not understand.
Reason: You're speaking plain HTTP to an SSL-enabled server port.
Instead use the HTTPS scheme to access this URL, please."

gerade so als würde ich mit http direkt auf Port 443 zugreifen. Vor allem schlägt da nichts beim Zugriff fehl. Es wird lediglich dieser "Fehlertext" als Seiteninhalt ausgegeben.

Vielleicht muss man da irgend einen Header Eintrag mitschicken, um den Server zu überzeugen, dass das eine https-Verbindung ist (selbst wenn er selbst das andere Ende dazu bereitstellt). Ich muss mal schauen, ob ich dazu noch was finde. Jedenfalls ist es wohl nicht ganz trivial und kommt wohl auf die Serverkonfiguration an.

Offline

#12 08.11.2019 00:50:51

mrbaseman
Developer

Re: Inline Wrapper

ok, ich glaub ich habs: manche webserver mögen es wohl nicht, wenn man ihnen im header innerhalb der ssl-Verbindung den Port mitschickt.
Korrigierte Version im Anhang. Kannst du mal testen? Bei der Seite wirst du wahrscheinlich css mit einbinden wollen - und wie die Darstellung dann aussieht,  hängt aber trotzdem auch von dem css der umgebenden Seite ab. Je weniger mit CSS gestyled ist, desto besser lassen sich die Inhalte mit dem inlinewrapper in eine andere Seite einbinden.

Offline

#13 08.11.2019 09:23:22

tomno399
Member

Re: Inline Wrapper

Funktioniert bestens!
Ich habe auch mal das Whitebord hinterlegt und mit dem Einbinden der Stylesheets gespielt, klappt alles (wenns auch beschämend aussieht). Egal, man muss die Seite ja nicht einbinden.

Dir herzlichen Dank für das uralte aber nun wieder laufende Modul.


Online: WBCE 1.4.2, PHP 7.3.x; Lokal: XAMPP WBCE 1.4.2, PHP 7.4

Offline

#14 09.11.2019 00:47:55

mrbaseman
Developer

Re: Inline Wrapper

Danke. Ich nutze das Modul ja auch. In meinem Anwendungsfall sind es verschiedene WBCE-Installationen, die ich administriere. Aber ich will nicht auf allen die gleichen Inhalte einpflegen müssen. Daher holt sich die eine das was für sie relevant ist z.T. von der anderen Seite.

Offline

#15 05.12.2019 10:04:35

florian
Administrator

Re: Inline Wrapper

Ich versuche mich gerade auch mal an dem Modul... im großen ganzen funktioniert das recht gut.  Allerdings habe ich noch ein paar Probleme/Wünsche:

1. aktuell habe ich das Problem, dass statt der Umlaute aus der gewrappten Seite nur <?>  angezeigt werden, da die Ausgangsseite  ISO-8859-1-codiert ist, die Zielseite aber natürlich UTF-8. Leider sind die Informationen, welcher Umlaut da angezeigt werden sollte, so weit ich sehe, verloren, sonst hätte ich das ja im Nachhinein noch mit einem Droplet o.ä. fixen können.
Long terms short: Gibt es eine Möglichkeit, ISO-8859-1-codierte Inhalte in eine UTF8-codierte Seite zu ziehen?

Anmerkung: apache_request_headers() verursacht eine Exception, wenn PHP nicht als Apache-Modul läuft, ich habe daher statt dessen den Code von hier dort eingebaut. Könnte das Zeichenproblem damit zusammenhängen?

Edit:

Workaround:
functions.php Änderung

    // The contents part
	$lContents = str_replace('ä','-ae-',$lContents);
	$lContents = str_replace('ö','-oe-',$lContents);
	$lContents = str_replace('ü','-ue-',$lContents);
	$lContents = str_replace('Ä','-Ae-',$lContents);
	$lContents = str_replace('Ö','-Oe-',$lContents);
	$lContents = str_replace('Ü','-Ue-',$lContents);
	$lContents = str_replace('ß','-ss-',$lContents);
	
    return $lContents;

Und auf der betr. Seite dann ein Droplet [[externaloutputformatter]] aufrufen mit folgendem Inhalt

$wb_page_data = str_replace('-ae-','ä', $wb_page_data);
$wb_page_data = str_replace('-oe-','ö', $wb_page_data);
$wb_page_data = str_replace('-ue-','ü', $wb_page_data);
$wb_page_data = str_replace('-Ae-','Ä', $wb_page_data);
$wb_page_data = str_replace('-Oe-','Ö', $wb_page_data);
$wb_page_data = str_replace('-Ue-','Ü', $wb_page_data);
$wb_page_data = str_replace('-ss-','ß', $wb_page_data);
return true;

- Edit Ende -

2. WebPage.php wirft einige Deprecated-Fehler:

2019-12-05T07:52:56+00:00 [Deprecated] /modules/inlinewrapper/WebPage.php:[53] from /framework/frontend.functions.php:[365] "Methods with the same name as their class will not be constructors in a future version of PHP; WebPage has a deprecated constructor"
2019-12-05T07:52:56+00:00 [Deprecated] /modules/inlinewrapper/HtmlPage.php:[29] from /framework/frontend.functions.php:[365] "Methods with the same name as their class will not be constructors in a future version of PHP; HtmlPage has a deprecated constructor"
2019-12-05T07:52:56+00:00 [Deprecated] /modules/inlinewrapper/CssFile.php:[29] from /framework/frontend.functions.php:[365] "Methods with the same name as their class will not be constructors in a future version of PHP; CssFile has a deprecated constructor"
2019-12-05T07:52:56+00:00 [Notice] /modules/inlinewrapper/WebPage.php:[84] from /modules/inlinewrapper/view.php:[58] HtmlPage->HtmlPage "Use of undefined constant IWCACHEDIR - assumed 'IWCACHEDIR'"

Wenn ich jedoch versuche,  function WebPage($pUrl) { durch public function __construct($pUrl)  zu ersetzen, verabschiedet sich die Seite mit einer Unknown Exception:

2019-12-05T07:57:11+00:00 [Exception] There was an unknown exception: Call to undefined method HtmlPage::WebPage() in line (42) of /modules/inlinewrapper/HtmlPage.php

Lassen sich die Deprecated-Meldungen anders beheben?

3. Praktisch wäre es noch, wenn nicht jeder gerwappte Inhalt dieselbe ID hätte (<div id="wrapper">), sondern die ID der Section-ID, also z.B. <div id="mod_inline_wrapper23"> o.ä. - zum einen, um die Ausgabe gezielt per CSS formatieren zu können, zum anderen, um ungültiges HTML (mehrmals dieselbe ID auf einer Seite) bei der mehrfachen Verwendung des Wrappers auf einer Seite zu verhindern.

Last edited by florian (05.12.2019 10:52:23)

Offline

#16 05.12.2019 19:28:26

mrbaseman
Developer

Re: Inline Wrapper

1. Würde ich mit einem Outputfilter versuchen zu lösen, der ä in &auml; umwandelt und entsprechend falsch codierte Umlaute genauso. Ist zwar keine tolle Lösung aber vielleicht ein bisschen weniger Aufwand als der Workaround mit dem Droplet.

Wegen einer ordentlichen Konvertierung muss ich mal schauen. Wenn php nix mitbringt, wäre das wahrscheinlich eine ziemliche Monster Library, die alles in jedes umwandelt. Dann muss man aber die Codierung der eingebunden Seite noch parsen oder gar erkennen.  Vielleicht sind da die Workarounds doch die einfachere Lösung.

2. Ist mir neulich auch schon mal aufgefallen. Der constructor wird wahrscheinlich noch wo explizit aufgerufen. Dann muss man die Funktion einfach umbenennen, privat machen und diese dann im neuen constructor aufrufen. Muss ich mir aber mal am PC anschauen.

3. Sollte kein Problem sein, da eine Section Id mit dran zu hängen. Vielleicht auch noch gleich eine class, die dann wieder einheitlich ist, in der man alles stylen kann, was alle inline wrapper sections in gleicher Weise betrifft.

Offline

Liked by:

florian

#18 08.12.2019 01:12:43

mrbaseman
Developer

Re: Inline Wrapper

zu dem codierungsproblem: utf8_encode scheint wohl genau das gewünschte zu tun. Jetzt stellt sich mir nur die Frage, wie ich die Konvertierung anwenden soll. Ist der Inhalt der eingebundenen Seite nämlich schon utf-8, dann kommt dabei Käse heraus (statt Käse).

Offline

#19 08.12.2019 07:54:48

florian
Administrator

Re: Inline Wrapper

Das könnte ja als Checkbox im Backend umgesetzt werden, ähnlich wie beim Modul Newsreader.

Offline

#20 09.12.2019 00:59:47

mrbaseman
Developer

Re: Inline Wrapper

gute Idee. Ich hab überlegt das charset aus den meta-tags auszuwerten, aber da gibt es sicher Seiten, die UTF-8 angeben aber iso senden und umgekehrt, von daher ist eine Checkbox im Backend, mit der man das manuell einstellen kann, wahrscheinlich die bessere Wahl.
Da damit ein neues Feature rein kommt, habe ich die Minor Version jetzt mal hochgezählt. Florian, ich hoffe mit der 2.9.0 alle deine Anregungen umgesetzt zu haben. Bitte mal testen.

Anhang entfernt, neuere Version weiter unten -florian

Last edited by florian (10.12.2019 07:42:04)

Offline

#21 09.12.2019 08:39:31

florian
Administrator

Re: Inline Wrapper

Danke, das sieht schon gut aus.
Die Zeichenprobleme treten nicht mehr auf - auch ohne dass das Häkchen gesetzt wird.
Die Deprecated-Meldungen sind noch da, und eine Warning ist hinzu gekommen:

2019-12-09T06:33:35+00:00 [Warning] /modules/inlinewrapper/CssFile.php:[80] from /framework/frontend.functions.php:[365] "Declaration of CssFile::display() should be compatible with WebPage::display($section_id = '', $convert = false)"

(PHP 7.1 und 7.4)

Offline

#22 09.12.2019 10:19:02

mrbaseman
Developer

Re: Inline Wrapper

Huch, ok, dann schau ich nochmal.

Edit: in der Tat, da ist nur der fix fürs undefinierte IWCACHEDIR drin. Die aktualisierten Konstruktoren hab ich wohl irgendwie verloren.

Last edited by mrbaseman (10.12.2019 00:36:04)

Offline

#23 10.12.2019 00:32:23

mrbaseman
Developer

Re: Inline Wrapper

florian wrote:

Danke, das sieht schon gut aus.
Die Zeichenprobleme treten nicht mehr auf - auch ohne dass das Häkchen gesetzt wird.

hmm... das ist dann vielleicht  eine Version der Seite in einem Cache (serverseitig oder im Browser)? Ich hab eine Seite angelegt, die iso-8859-1 Umlaute ausgibt und diese mit dem Inline-Wrapper eingebunden. Wenn man das Häkchen setzt, dann werden die Umlaute dargestellt, wenn nicht dann kommen die Encoding-Fragezeichen. Lade ich dieselbe Datei als UTF-8 hoch, dann muss das Häkchen weg, sonst bekomme ich den neulich schon mal erwähnten Käse bei den Umlaten.

florian wrote:

Die Deprecated-Meldungen sind noch da, und eine Warning ist hinzu gekommen...

Gut, dann konnte ich mich um die neue auch gleich mit kümmern, und mit den Konstruktoren... also ich weiß nicht wo der Fix dazu abgeblieben ist. Irgendwie hab ich da vielleicht versehentlich direkt in meiner lokalen Testinstallation editiert und das dann mit einem Modul-Update am nächsten Tag wieder überschrieben - ist aber jetzt nochmal neu in der 2.9.1 drin

Offline

#24 10.12.2019 07:41:15

florian
Administrator

Re: Inline Wrapper

Danke, mit der Version 2.9.1 ist das Verhalten hinsichtlich Umlauten genau wie von Dir beschrieben (da war evtl. vorher etwas testhalber festverdrahtet oder so) und die Deprecated-Meldungen und Warnings sind weg.
Ich habe den Eintrag im AOR aktualisiert.

Offline

Board footer

Powered by FluxBB

up