Maintenance-Mode, es scheint zu funktionieren

Ein CMSimple Support Forum für deutsch sprechende Nutzer und Entwickler
Caravaner
Posts: 40
Joined: Sat Oct 05, 2019 5:20 pm
Location: Wadgassen (Saarland)
Contact:

Maintenance-Mode, es scheint zu funktionieren

Post by Caravaner » Tue Nov 12, 2019 10:49 pm

Hallo und guten Tag!
Ich habe eine Maintenance-Mode - Funktionalität realisiert, die auf Testservern und auf meinem Web http://test.lembach-kr.de dem Anschein nach fehlerfrei funktioniert.
Hier beschreibe ich wie es zu meinem Projekt kam: http://test.lembach-kr.de/?Maintenance-Mode-Projekt
Hier beschreibe ich wie es zu installieren ist: http://test.lembach-kr.de/?Maintenance- ... schreibung
Hier beschreibe ich das Funktionsprizip: http://test.lembach-kr.de/?Maintenance- ... t/Funktion
Download: http://test.lembach-kr.de/?Download#maintenance-mode
Es ist ein Zwitter, zum einen Teil sind es drei PHP-Scripte und zum anderen Teil ein modifiziertes 'Maintenance'-Template sowie eine kleine Ergänzung im Default-Template. Das ganze läuft im Verzeichnis des zusätzliche 'Maintenance'-Template ab.
lck wrote:
Tue Nov 05, 2019 11:47 am
...
Es gibt/gab bereits ein Plugin "maintenance" von Holger. Leider ist dies nicht mit XH 1.7 kompatibel und nicht up to date, aber vielleicht kannst du das Plugin von Holger übernehmen und aktualisieren. Einfach mal bei ihm anfragen.
Mehr Infos dazu, siehe:
viewtopic.php?f=29&t=1510&p=8313&hilit= ... ance#p8313
http://cmsimplexh.webdesign-keil.de/?Er ... aintenance
viewtopic.php?t=13261#p64573
viewtopic.php?f=16&t=12904&hilit=Youtub ... 100#p63504
Damit konnte ich leider nichts anfangen. Ich hab keine Ahnung, wie ein Plugin geschrieben wird.
Holger wrote:
Tue Nov 05, 2019 6:39 pm
...
So ein Plugin ist ja simpel zu machen. Mein Problem wäre da eher eine ansprechend designte Wartungs-Seite.
Wenn sich dem "Design-Problem" jemand annimmt, liefere ich das Plugin dazu :) , okay?
Meine Lösung beinhaltet, dass die Wartungsseite im Seiteneditor von CMSimple_XH erstellt wird und somit von Seitenbetreiber selbst gestaltet werden kann.
frase wrote:
Wed Nov 06, 2019 8:30 am
...
Sinnvoll wäre sicher, wenn der Plugin-Benutzer ein Hintergrundbild für die Wartungsseite aus dem (userfiles)-Bilder-Ordner wählen könnte.

Nachtrag:
Für die Textanzeige sollte vielleicht ein Textarea als Eingabemöglichkeit dienen, damit man dort auch noch html-Tags reinschreiben kann. Oder?
Da meine Wartungsseite im Editor der Website erstellt wird, können sowohl die Bilder im (userfiles)-Bilder-Ordner gewählt werden sowie die gesamte Funktionalität des Editors genutzt werden um den anzuzeigenden Text zu gestalten.

Ich bin nicht ganz sicher ob der Maintenance-Mode einbruchsicher ist, aber zumindest mir ist noch kein Weg eingefallen, wie man über den Browser einbrechen könnte.

Wer mir helfen möchte aus dem ganzen ein Plugin zu machen und erst einmal die Funktion auf meinem Test-Web ausprobieren möchte ohne ein eigenes Test-Web zu installieren, der soll mich per PN kontaktieren, dann gebe ich Ihr/Ihm das Passwort.

Da ich selbst wenig Ahnung von Template-Bau habe, hoffe ich auf einen Helfer zum Verschlanken der Maintenance-Templates (es handelt sich z. Zt. noch um fhs-left-right-17x).

Mein Wunsch wäre eine Klasse 'Hintergrundbild' die das über den Seiteneditor frei wählbare Bild immer zu 100% Breite im Fenster / Viewport anzeigt und hinter der Text-Ebene liegt. Ein optionaler Header sollte über dem Bild und ein optionaler Footer sollte unter dem Bild liegen.

Eine zweite Klasse soll im Stil einer "Dialogbox" vor der Hintergrundgarfik und vor der eigentlichen Textebene in der Fenstermitte das Umschaltpanel anzeigen. Wenn man sie über einen Parameter nach Links oder rechts verschieben könnte, wäre das schön.

Ist es machbar den Header und Footer des Default-Templates sozusagen automatisch im Maintenance-Template eingebaut zu bekommen (wobei die Links zu Kontakt, Inhaltsverzeichnis etc. entfernt werden müssten).

Viele Grüße
Karl Richard
Ich bin > 65 und lerne jeden Tag was Neues. Dafür vergesse ich was Anderes.
Der Trick ist, sich nicht darüber aufzuregen und morgen zu lernen, was man vorgestern vergessen hat. ;)
http://template.lembach-kr.de

olape
Posts: 928
Joined: Fri Mar 13, 2015 8:47 am
Contact:

Re: Maintenance-Mode, es scheint zu funktionieren

Post by olape » Wed Nov 13, 2019 3:25 pm

Prima, dass es doch wieder ein wenig Bewegung gibt und auch wieder jemand mehr an Board ist.

Ich habe deine Lösung nur ganz kurz überflogen, ohne wirklich ins Detail zu gehen.
Mir kommt das aber sehr kompliziert vor.

Ein ganz kleines Plugin würde, meiner Meinung nach, reichen.

Konfiguration:
Wartungsmodus - on/off
URL der Maintenance-Site

Dann, soweit ich mich erinnere, gibt es eine userprelude.php, die genutzt werden kann.
Darin eine Abfrage, ob der Wartungsmodus auf on steht, eine url gesetzt ist, XH_ADM nicht gesetzt ist und nicht login aufgerufen wurde.
Wenn das alles so ist, ein 302 auf die Maintenance-Site.

Das sollte reichen.

Eine grobe Idee, wie ich das versuchen würde zu lösen.

Auch ganz ohne Plugin, wäre ein fast identischer Weg möglich. Dazu müsste man nur die URL fest in der userprelude verankern. Und statt dem Switch on/off im Plugin, könnte man on/off per Datei über den Filebrowser steuern, wie bei XHdebug.txt.

lck
Posts: 1787
Joined: Wed Mar 23, 2011 11:43 am
Contact:

Re: Maintenance-Mode, es scheint zu funktionieren

Post by lck » Wed Nov 13, 2019 7:59 pm

olape wrote:
Wed Nov 13, 2019 3:25 pm
Prima, dass es doch wieder ein wenig Bewegung gibt und auch wieder jemand mehr an Board ist.
+1
olape wrote:
Wed Nov 13, 2019 3:25 pm
Ich habe deine Lösung nur ganz kurz überflogen, ohne wirklich ins Detail zu gehen.
Mir kommt das aber sehr kompliziert vor.
Ja, aber ist ja noch in der Entwicklung.
olape wrote:
Wed Nov 13, 2019 3:25 pm
Dann, soweit ich mich erinnere, gibt es eine userprelude.php, die genutzt werden kann.
Siehe dazu https://wiki.cmsimple-xh.org/doku.php/userprelude.php.
Ein anderer Ansatz von Christoph wäre per .htaccess in Verbindung mit einer Maintenance-Seite (im Codebeispiel 503.php).
„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“   👉 Ludwig's XH-Templates for MultiPage & OnePage

olape
Posts: 928
Joined: Fri Mar 13, 2015 8:47 am
Contact:

Re: Maintenance-Mode, es scheint zu funktionieren

Post by olape » Wed Nov 13, 2019 8:28 pm

lck wrote:
Wed Nov 13, 2019 7:59 pm
Ein anderer Ansatz von Christoph wäre per .htaccess in Verbindung mit einer Maintenance-Seite (im Codebeispiel 503.php).
Die Lösung .htaccess setzt allerdings zwingend ftp-Zugriff voraus.
Oder ein vergleichbares Onlinetool des Hosters. Beides ist jedenfalls nicht aus dem Backend von XH zu lösen.
Das ist der große Nachteil daran.
Man könnte natürlich auch eine Möglichkeit schaffen, die .htaccess aus dem Backend von XH zu ändern.

Aber eine Lösung mit Häkchen setzen o.v., ist da natürlich wesentlich bequemer.

olape
Posts: 928
Joined: Fri Mar 13, 2015 8:47 am
Contact:

Re: Maintenance-Mode, es scheint zu funktionieren

Post by olape » Sun Nov 17, 2019 12:13 pm

So, ich habe mal einen ganz kurzen, kaum getesteten Entwurf.

unter /userfiles/download die Datei XHmaintenance.txt anlegen!
Inhalt:

Code: Select all

http(s)://domain.tld/?maintenance
(also natürlich entsprechend der URL angepasst.)

eine versteckte Seite, entsprechend der obigen Angabe (maintenance), erstellen!
Inhalt:

Code: Select all

#cmsimple header('HTTP/1.1 503 Service Temporarily Unavailable'); header('Status: 503 Service Temporarily Unavailable');header('Retry-After: 3600');#
<h1>Wartungsmodus</h1> ... usw.
/cmsimlple/userprelude.php, wenn vorhanden vervollständigen, sonst erstellen!
Inhalt:

Code: Select all

<?php

$op_maintfile = __DIR__ . '/../userfiles/downloads/_XHmaintenance.txt';

if(file_exists($op_maintfile)) {
	$op_mainturl = file_get_contents($op_maintfile);
	if(isset($_COOKIE['status'])) {
		$op_cookie = $_COOKIE['status'];
	} else {
		$op_cookie = 'noadm';
	}

	$op_url = (empty($_SERVER['HTTPS'])) ? 'http://' : 'https://';
	$op_url .= $_SERVER['HTTP_HOST'];
	$op_url .= $_SERVER['REQUEST_URI'];

	//if(($op_cookie != 'adm') && (!isset($_GET['login'])) && (!isset($_GET['maintenance']))) {
	if(($op_cookie != 'adm') && (!isset($_GET['login'])) && ($op_url != $op_mainturl)) {
		header('Location:' . $op_mainturl ,true, 302);
		exit;
	}
}
?>
Und nun kann man per Backend - Dateien - Downloads XHmaintenance.txt in _XHmaintenance.txt umbennen, um maintenance zu aktivieren bzw. anders herum, um zu deaktivieren.

Ob man nun für die Wartungsseite ein zusätzliches Template nutzt, oder wie man diese gestaltet ...
Last edited by olape on Sat Nov 23, 2019 7:39 pm, edited 2 times in total.

frase
Posts: 3012
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: Maintenance-Mode, es scheint zu funktionieren

Post by frase » Sun Nov 17, 2019 12:34 pm

Hm, ein Plugin das alles automatisch erledigt wäre mir eigentlich lieber.
Aber gut. Es funktioniert soweit und ist eigentlich auch für Nicht-Power-User leicht zu realisieren.

Frage:
Warum heißt die Datei "/cmsimlple/userprelude.php" ?
Wenn ich es so mache, kommt beim ersten Aufruf:
Notice: Undefined variable: op_cookie in ... \cmsimple\userprelude.php on line 11
Wenn ich die Datei umbenenne in "/cmsimlple/userfuncs.php",
dann funktioniert es auch ohne Fehlermeldung.

Ansonsten: Nicht schlecht!
Das Gesamt-Layout ist sichtbar und man kann die Maintenance-Seite völlig frei über das Backend gestalten.
Zumindest das ist very simple und gut ;-)

olape
Posts: 928
Joined: Fri Mar 13, 2015 8:47 am
Contact:

Re: Maintenance-Mode, es scheint zu funktionieren

Post by olape » Sun Nov 17, 2019 1:07 pm

frase wrote:
Sun Nov 17, 2019 12:34 pm
Wenn ich es so mache, kommt beim ersten Aufruf:
Notice: Undefined variable: op_cookie in ... \cmsimple\userprelude.php on line 11
Ich hatte ja geschrieben, kaum getestet. :oops: So sollte die Meldung weg sein.
Und jetzt kann der Name der Maintenance-Page auch frei gewählt werden.
Oben geändert
frase wrote:
Sun Nov 17, 2019 12:34 pm
Warum heißt die Datei "/cmsimlple/userprelude.php" ?
Warum die so heisst, das kann ich auch nicht beantworten. ;)
Mal ernsthaft, die wird direkt aus der index.php eingebunden, noch bevor irgendwelche weiteren Dinge des CMS geladen werden.
Last edited by olape on Sat Nov 23, 2019 7:40 pm, edited 1 time in total.

frase
Posts: 3012
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: Maintenance-Mode, es scheint zu funktionieren

Post by frase » Sun Nov 17, 2019 1:16 pm

olape wrote:
Sun Nov 17, 2019 1:07 pm
Mal ernsthaft, die wird direkt aus der index.php eingebunden, noch bevor irgendwelche weiteren Dinge des CMS geladen werden.
Prelude Bedeutung: Auftakt, Einleitung, Vorspiel
Ist schon klar, das ist so besser als in userfuncs.

Der Code funktioniert jetzt ohne Cookie-Meldung ;-)
Alles gut.

Holger
Site Admin
Posts: 3155
Joined: Mon May 19, 2008 7:10 pm
Location: Hessen, Germany
Contact:

Re: Maintenance-Mode, es scheint zu funktionieren

Post by Holger » Sun Nov 17, 2019 6:11 pm

olape wrote:
Sun Nov 17, 2019 12:13 pm
So, ich habe mal einen ganz kurzen, kaum getesteten Entwurf.
Schön, gibt die Wartungsseite aber über das Template aus. Damit wären Navi und Newsboxen etc. aber sichtbar, was vielleicht nicht optimal für den Wartungsmodus ist.
Die Wartungsseite sollte mMn dann zumindest nur die nötigsten Template-Tags haben, müsste also zwingend in einem angepassten Template ausgegeben werden. Besser scheint mir immer die Umleitung auf eine eigenständige Datei zu sein.
Und die "beste Variante" bleibt umleiten per .htacces auf eine Wartungsseite, die nicht vom CMS generiert wird. Nur so ist gewährleistet, dass einem Besucher wirklich nichts außer der Wartungsseite präsentiert wird.

olape
Posts: 928
Joined: Fri Mar 13, 2015 8:47 am
Contact:

Re: Maintenance-Mode, es scheint zu funktionieren

Post by olape » Sun Nov 17, 2019 6:36 pm

Holger wrote:
Sun Nov 17, 2019 6:11 pm
die Wartungsseite aber über das Template aus. Damit wären Navi und Newsboxen etc. aber sichtbar, was vielleicht nicht optimal für den Wartungsmodus ist.
An einem angepassten Template wird ja niemand gehindert. An die Newsboxen habe ich allerdings auch nicht wirklich gedacht. Da hast du auf jeden Fall Recht.

Holger wrote:
Sun Nov 17, 2019 6:11 pm
Besser scheint mir immer die Umleitung auf eine eigenständige Datei zu sein.
Das sollte so auch ganz problemlos möglich sein.
Nachtrag:
Wobei man hierfür tatsächlich auch vorher angemeldet sein muss und es vor dem Abmelden auch nicht vergessen sollte wieder abzustellen. Wärend es mit der "internen" Wartungsseite auch so funktioniert.
Das Problem: es wird bei einer externen Seite kein Cookie gesetzt.

Holger wrote:
Sun Nov 17, 2019 6:11 pm
die "beste Variante" bleibt umleiten per .htacces auf eine Wartungsseite,
mit den oben beschriebenen Nachteilen

Post Reply