Sie sind hier: Startseite > CMSimple_XH > Plugins > Remotecontent_XH

Plugin Remotecontent_XH für CMSimple_XH

Mit der Funktionserweiterung Remotecontent_XH kann man externe / fremde Inhalte in die eigene Website einbinden, ohne dafür iFrames nutzen zu müssen. Oft ist es gewünscht, dass z.B. Listen mit Spielergebnissen o.ä. Content von anderen Webseiten auf der eigenen Webseite anzeigt werden.
iFrames bringen oft Layoutprobleme mit sich und sind auf jeden Fall ein sehr heikles Thema beim Datenschutz.
Die über Remotecontent_XH eingebundenen Inhalte werden auch von der seiteninternen Suche berücksichtigt.
Einbinden kann man reine Textdateien, vollständige HTML-Dateien, oder auch Textblöcke von Boilerplate_XH (auf GitHub).

Hinweis: Hier entsteht DC (doppelter Content - Externer Duplicate Content), falls diese Inhalte mehrfach auf verschiedenen Webseiten benutzt und nicht entsprechend gekennzeichnet (blockquote) werden.

Bis zur aktuellen Version 1.2 werden keine Mediadateien (Bilder, Videos, Sounddateien o.ä. berücksichtigt). Deren Einbindung bleibt unverändert. Diese Dateien werden dann möglicherweise jeweils direkt vom Quellserver geladen, falls die Einbindung absolut, per vollqualifiziertem Domainpfad erfolgt.
Dieses Verhalten kann zu einem Datenschutzproblem führen.

 

Zugriffsschutz für Boilerplate_XH - Textblöcke anpassen

Um Textblöcke von Boilerplate_XH einzubinden, muss der Zugriffsschutz, wenn vorhanden, auf dem Quellserver angepasst werden.
Diese Beschreibung gilt nur für Apache-Webserver und für Boilerplate_XH 1.0. Ab Version 2.0 gibt es keine Möglichkeit mehr, den Pfad für die Textblöcke festzulegen. Diese werden per Standard in /content/boilerplate/ gespeichert. Ich gehe davon aus, dass sich die folgende Beschreibung trotzdem umsetzen lässt. Einige Angaben werden natürlich variieren.

Normalerweise sind diese Dateien per .htaccess vor allen externen Zugriffen geschützt.

Als Beispiel:

  • Eine Verzeichnis z.B. /userfiles/extern_content/ anlegen und diesen dann Boilerplate_XH als Speicherordner zuweisen!
  • in diesem Ordner eine .htaccess mit folgendem Inhalt erstellen!
    (Ebenfalls Beispieldaten. Es kann, durch ungewollte Zeilenumbrüche, zu Darstellungsfehlern kommen.)

Order deny,allow
Deny from all
#
#Webseite von Max Muster
Allow from zzz.zzz.zzz.zzz
#
#Webseite von Rudi Rumpel (bei Strato scheinen die Aufrufe (cURL) von einer anderen IP zu kommen, nicht von der IP der eigentlichen Webseite)
Allow from xxx.xxx.xxx.xxx
Allow from yyy.yyy.yyy.yyy
#
<IfModule mod_rewrite.c>
RewriteEngine On
#besser nur mit einem Useragent, dafür mit mehreren Authtoken arbeiten!
#
#extern_m_muster, 16-stelliges_token1
#
#extern_r_rumpel, 16-stelliges_token2
#
RewriteCond %{HTTP_USER_AGENT} !^(extern_m_muster|extern_r_rumpel)$ [OR,NC]
RewriteCond %{QUERY_STRING} !^(.*)?authtoken=(16-stell._token1|16-stell._token2)$ [NC]
RewriteRule .* – [R=403,L]
#####

Damit kann nur noch auf Dateien in diesem Ordner zugegriffen werden, wenn, die IP zzz...., xxx... oder yyy..., die Browserkennung extern_m_muster oder extern_r_rumpel und das Authentifizierungstoken 16-stell._token1 oder 16-stell._token2 ist.

16 Zeichen für das Authentifizierungstoken sind ganz willkürlich gewählt. Es funktioniert natürlich auch mit jeder anderen beliebigen Anzahl von Zeichen.

Wird mod_rewrite nicht unterstützt, dann bleiben nur die IP-Adressen. Es ist in Zeiten von Shared-Hosting, wenn auch unwahrscheinlich, natürlich nicht ganz auszuschließen, dass dann auch mal ein Unberechtigter zugreifen könnte.
Wenn eine eigene .htaccess gar nicht unterstützt wird, dann ist eine Absicherung der Quelldaten (Boilerplate_XH-Dokumente) so nicht möglich.

 

Boilerplate_XH legt seine Dateien mit den Rechten 0600 an. Das muss, nach dem Anlegen oder Bearbeiten einer Datei, per FTP auf 0644 geändert werden.

Um das ständige Ändern der Rechte zu umgehen, in (/plugins/boilerplate/classes/model.php) nach der Zeile 150 (fclose($fp);) eine zusätzliche Zeile einfügen (chmod($fn, 0644);).
Mit dieser Änderung werden die Rechte beim Anlegen und Bearbeiten direkt von Boilerplate_XH auf 0644 gesetzt.

Damit ist Boilerplate_XH als Quelle vorbereitet und trotzdem noch sicher genug.

Boilerplate_XH - Textblöcke entsprechend obiger .htaccess einbinden:

{ { {op_extern_content('https://domain.tld/userfiles/extern_content/boilerplatetext.htm', '16-stelliges_token1', 'extern_m_muster', 'html');} } }

Für die oben aufgeführte .htaccess würde auch jede andere Kombination von Browserkennung (extern_m_muster, extern_r_rumpel) und Authentifizierungstoken (16-stell._token1, 16-stell._token2) funktionieren.


Boilerplate_XH - Textblöcke ohne erweiterten Zugriffsschutz einbinden:
(Browserkennung und das Authtoken werden nicht benötigt.)

{ { {op_extern_content('https://domain.tld/userfiles/extern_content/boilerplatetext.htm', '', '', 'html');} } }

Es kann natürlich auch jede andere vollständige Webseite eingebunden werden, bzw. können die bisherigen Ausführungen auch auf Dokumente angewendet werden, die nicht mit Boilerplate_XH erstellt oder bearbeitet werden.

Vollständige HTML-Seite:
(Ohne Browserkennung und Authtoken.)

{ { {op_extern_content('https://domain.tld/irgendeineSeite.html');} } }

Soll JavaScript erhalten bleiben, dann den letzten Parameter setzen:
{ { {op_extern_content('https://domain.tld/irgendeineSeite.html', '', '', 'fullhtml', 'js');} } }

Reine Textdateien bindet man ein mit:

{ { {op_extern_content('https://domain.tld/textdatei.txt', '', '', 'txt');} } }

So lässt sich auch problemslos die Druckausgabe einer CMSimple_XH-Website einbinden.

{ { {op_extern_content('https://domain.tld/?EineSeite&print');} } }

Bei den { und } im Beispielcode sind immer Leerzeichen enthalten, um das hier darstellen zu können. Diese Leerzeichen müssen beim Einbinden natürlich weggelassen werden.

  • Parameter 1: URL (vollqualifizierte URL)
    • https://domain.tld/userfiles/extern_content/boilerplatetext.htm
    • https://domain.tld/irgendeineSeite.html
    • https://domain.tld/irgendeineTextdatei.txt
    • https://domain.tld/?EineSeite&print
  • Parameter 2: Authtoken (kann leer sein)
    Ein frei wählbares Token (Passwort) (a-z, A-Z, 0-9) in variabler Länge.
  • Parameter 3: Browserkennung (kann leer sein - Standard: Remotecontent_XH)
    Eine frei wählbare Kennung (a-z, A-Z, 0-9, ., _, -) in variabler Länge
  • Parameter 4: txt (kann leer sein - Standard: fullhtml)
    Nur für reine Textdateien.
    Zeilenumbrüche werden umgewandelt, anderenfalls kommt der gesamte Text in einer Zeile. Der Inhalt wird in blockquote-Tags* gesetzt und ein Quelleverweis* wird angegeben.
  • Parameter 4: html - für Boilerplate_XH (kann leer sein - Standard: fullhtml)
    Nur für Dateien mit HTML-Code, keine vollständigen HTML-Seiten.
    Es werden Pluginaufrufe, CMSimple Scripting, JavaScript (konfigurierbar per Parameter), iFrames und html-Kommentare entfernt.
  • Parameter 4: fullhtml (kann leer sein - Standard: fullhtml)
    Für vollständige HTML-Seiten.
    Wie html, zusätzlich wird alles, was außerhalb der body-Tags liegt entfernt, inkl. der body-Tags. Der Inhalt wird in blockquote-Tags* gesetzt und ein Quelleverweis* wird angegeben.
  • Parameter 5: js (optional)
    Ist dieser Parameter gesetzt, bleibt JavaScript aus der Quelle erhalten, sonst wird es entfernt.
    (Betrifft nur JavaScript innerhalb des body-Tags.)

* konfigurierbar per Pluginkonfiguration


Konfiguration

  • Show → Blockquote → an/aus - Checkbox (default: an)
    • an = Inhalte in Blockquote anzeigen und Quellverweis setzen (nur bei txt und fullhtml).
    • aus = kein Blockquote, kein Quellverweis
    • Bitte seien Sie fair und beachten Sie die Urheberrechte!
  • Curlopt → Maxredirs - Textfeld (default: 2)
    • Die maximal erlaubte Anzahl von HTTP-Weiterleitungen, denen Remotecontent_XH folgen soll.
  • Curlopt → Connecttimeout - Textfeld (default: 4)
    • Die Angabe in Sekunden, die der Verbindungsaufbau (cURL-Funktion) max. dauern darf.
      0 hebt die Begrenzung auf.
  • Curlopt → Timeout - Textfeld (default: 6)
    • Die maximale Ausführungszeit in Sekunden für einen Seitenabruf (cURL-Funktion).
  • Curlopt → Ssl verifyhost → an/aus - Checkbox (default: an)
    • an = Stellt sicher, daß beim Zertifikat eine Übereinstimmung mit dem angegebenen Hostnamen vorliegt (empfohlen).
    • aus = keine Zertifikatsprüfung
  • Cache → Time - Textfeld (default: 604800)
    • Cachezeit in Sekunden bis die URL erneut abgerufen wird, Standard 604800 (eine Woche)
  • Verbose → Verbose → an/aus - Checkbox (default: aus)
    • an = Gibt zusätzliche Informationen aus. (Beim (De)aktivieren jeweils den Cache leeren!)
    • aus = keine zusätzlichen Informationen
    • Sollte nur zur Fehlerfindung aktiviert werden.

Installation

PHP ab Version 7.4
(Sie sollten min. Version 7.4 einsetzen!, Stand 05/2022)

Der Server muss cURL unterstützen.

Für CMSimple_XH ab Versionen 1.7.0. Frühere Versionen wurden nicht getestet.

Um das Plugin zu installieren, einfach den entpackten Ordner remotecontent in den Pluginordner laden.

Möglicherweise, abhängig vom Webserver müssen noch Dateirechte angepasst werden.
Wird PHP als CGI oder FastCGI ausgeführt, ist ein Anpassen der Dateirechte nicht notwendig.
Wenn PHP als Apache-Modul ausgeführt wird, müssen noch Rechte für

folgende Dateien:

  • die Konfigurationsdatei (/plugins/remotecontent/config/config.php)
  • den Stylesheet (/plugins/remotecontent/css/stylesheet.css)
  • und die entsprechende(n) Sprachdatei(en) (/plugins/remotecontent/languages/xx.php)

geändert werden (0666), falls man diese über das Backend bearbeiten möchte.

Die Ordner:

  • /plugins/remotecontent/css/
  • /plugins/remotecontent/cache/
  • /plugins/remotecontent/config/
  • /plugins/remotecontent/languages/

benötigen 0777.

Alle Voraussetzungen lassen sich auf der Startseite des Plugins prüfen.

 https://filezilla-project.org

FileZilla Client Tutorial (de)

  • 644 - der Standardwert für Dateien - nur der FTP-Benutzer kann Dateien ändern / schreiben
  • 666 - auch PHP-Prozesse können Dateien beschreiben.
  • 755 - der Standardwert für Ordner - nur der FTP-Benutzer kann Dateien ändern / schreiben
  • 777 - der Ordner hat Vollzugriff, d.h. auch Scripte können darin schreiben.

Bei der Nutzung bitte die Urheberrechte beachten!

Logo Remotecontent_XH Fragen, Hinweise, Fehlermeldungen zu Remotecontent_XH

Remotecontent_XH im CMSimple_XH Forum

Gern nehme ich auch Informationen entgegen, auf welchen Seiten das Plugin Remotecontent_XH eingesetzt wird.
Ich möchte keine Statistik führen oder gar veröffentlichen. Es geht einfach darum, zu wissen, ob weiteres Arbeiten an diesem Plugin sinnvoll ist.

 

Remotecontent_XH kann unter Einhaltung der GPLv3 verwendet werden.

 

Version 1.2 für CMSimple_XH Versionen ab 1.7.0
(keinUpdate verfügbar, Syntax unverändert zu Version 1.1).

 

Softwareentwicklung ist teilweise sehr aufwendig und findet, für jede hier angebotene Software, in meiner Freizeit statt. Daher freue ich mich über jede Unterstützung. Zum Teil wird damit z.B. einfach diese Website finanziert.
Außerdem bringt eine kleine Anerkennung zwischendurch immer wieder etwas Schwung in die Entwicklung.

 Kaf­fee­kas­se