Wartungsmodus IP Whitelist funktioniert nicht

Wir haben gestern von 6.1.0 rc2 auf die neue 6.1.0 stable aktuallisiert und wollte jetzt mal den Wartungsmodus einschalten, der ja davor noch garnicht funktionierte.

Dieser funktioniert jetzt, allerdings werde IPs in der Whitelist nicht gespeichert. Es gibt keine Fehlermeldung, nach dem Speichern ist das Feld einfach weiterhin leer. Getestet mit einer einzigen IP. In der DB ist die Spalte maintenance_ip_whitelist in sales_channel auch weiterhin auf NULL. 

Wenn ich ein JSON [“IP”] in der DB speichere, wird es weiterhin nicht im Adminbereich in den Saleschannel Einstellungen angezeigt und auch im Frontend hat es keinen Effekt.

Hallo @Exe‍,

schau doch mal hier rein: https://issues.shopware.com/issues/NEXT-6422

Wird mit der nächsten Version behoben.

VG

ener Space  Webhosting
Tel.: +49 511 - 999 791 70 | Web: https://www.enerspace.de

Hi,

ich nutze die 6.1.1, jedoch funktioniert das mit der Whitelist im Wartungsmodus bei mir nicht. Ich habe unsere feste IPv4 Adresse dort eingetragen und sie wird auch angezeigt. Wir haben 6.1.0 vorher installiert und das Update normal über das Backend laufen lassen.

 

Kann ich bestätigen. Whitelist im Wartungsmodus funktioniert immer noch nicht.

Bei mir auch das Gleiche. Die IP kann ich jetzt zwar speichern, es hat aber weiterhin keine Funktion. Aber wie ich sehe, steht es jetzt für die Version 6.1.2 drin.

Same here! Blush

Habe das Ticket wieder aufgemacht, ja.

1 „Gefällt mir“

Kann das bestehende Problem bestätigen!

Da die Whitelist auch nicht mit der 6.1.2 und 6.1.3 kam, habe ich vorerst eine eigene IP Whitelist in die public/index.php eingetragen. Wird aber nach jedem Update natürlich wieder überschrieben aber besser, als hier ewig auf so eine Grundfunktion zu warten.

// Workaround IP Whitelist (prod env)
$allowedIps = [];
$allowedIps[] = '127.0.0.1';
$allowedIps[] = 'Office IP';
$allowedIps[] = 'Homeoffice IP';

if(isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'] != '') {
    $remoteIp = substr($_SERVER['HTTP_X_FORWARDED_FOR'], 0, strpos($_SERVER['HTTP_X_FORWARDED_FOR'], ','));
} else {
    $remoteIp = $_SERVER['REMOTE_ADDR'];
}

if(!in_array($remoteIp, $allowedIps)) {
    if (file_exists( __DIR__. '/maintenance.html')) {
        readfile( __DIR__. '/maintenance.html');
    } else {
        die;
    }

    return;
}

 

2 „Gefällt mir“

Ich leider auch. Whitelist immer noch ohne Funktion.

naja - du bist halt mit einer “stable” version unterwegs, nicht jedoch mit einer “final” - die kommt auf dem scd 2022.

Das Ticket wurde gelöst und wird in der 6.1.4 enthalten sein, hier der Commit:

https://github.com/shopware/platform/commit/3f0e6fa0627da4913cc0800281f82d78d8918036

3 „Gefällt mir“

Funktioniert bei mir mit der 6.1.4 immer noch nicht.

Bei mir funktioniert er mit 6.1.4

Bei mir leider weiterhin nicht. Habe keinen Proxy und es mit IPv4 und v6 und verschiedenen Geräte mit unterschiedlichen IP’s probiert. Lande immer auf der Maintenace Seite.

Habe heute noch einige Zeit herumprobiet und herausgefunden, dass wenn ich die IPv6 Adresse mit großgeschriebenen Buchstaben angebe (wie kopiert von wieistmeineip) dann funktioniert das Matching nicht. Kleingeschrieben funktioniert es, wie Exe auch schon bestätigt hat.

Bis man darauf aber kommt… wieder Stunden und Nerven verschenkt.  Undecided

Dafür habe ich aber gelernt, was es mit den Privacy Extensions auf sich hat. Also, dass ich bei Windows trotz fester öffentlicher IP eine sich ändernde temporäre IPv6 zugewiesen bekomme. Was man aber deaktivieren kann (wenn man’s weiß).  Smile 

Was aber nun passiert ist folgendes bei aktivem Wartungsmodus:

Sobald ich eine Seite von der berechtigten IP besuche (z.B. die Startseite) ist diese eine Seite (und jede weitere aufgerufene Seite) daraufhin von jeder beliebigen anderen IP aus aufrufbar. Kann ja nicht Sinn des Wartungsmodus sein. Jemand eine Idee woran das liegen könnte? Servererweiterungen die irgendetwas cachen könnten sind deaktiviert.

DANKE!

Das könnte der HTTP Cache sein, den kannst du über die .env Datei deaktivieren. 

Deaktivieren des HTTP Cache scheint zu funktionieren. Danke für den Stups in die richtige Richtung.

Meiner Meinung nach sollte das in Zukunft automatisch passieren, wenn der Wartungsmodus angeschaltet wird. Sonst glaubt man kener hat Zugriff, in Wirklichkeit, kann aber jeder die Seiten sehen, an denen gearbeitet wird,da der Cache ja standardmäßig aktiviert ist.

@Exe DANKE, ich nutze noch immer (6.4.17.1) deinen Workaround, da SW keine Proxiy (HTTP_X_FORWARDED_FOR) Situation berücksichtigt…

Leicht verändert:

// Workaround IP Whitelist (prod env) 22-11-15 v .2 
$allowedIps = [];
$allowedIps[] = '127.0.0.1'; // TAKE CARE REMOTE ADR CAN BE 127.0.0.1
$allowedIps[] = '122.122.122.122'; // Office WAN 1 IP
$allowedIps[] = '123.123.123.123'; // Office WAN 2 IP
$allowedIps[] = gethostbyname('MY.DYNDNS.TLD'); // Homeoffice Dynamic DNS

if(isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'] != '') {
	if(empty(strpos($_SERVER['HTTP_X_FORWARDED_FOR'], ',') )){
		$remoteIp = $_SERVER['HTTP_X_FORWARDED_FOR'];
    } else {
    $remoteIp = substr($_SERVER['HTTP_X_FORWARDED_FOR'], 0, strpos($_SERVER['HTTP_X_FORWARDED_FOR'], ','));
	}
} else {
    $remoteIp = $_SERVER['REMOTE_ADDR'];
}
if(!in_array($remoteIp, $allowedIps)) {
    if (file_exists( __DIR__. '/maintenance.html')) {
        readfile( __DIR__. '/maintenance.html');
    } else {
			die;
           }
    return;
}
// END OF THAT WORKEROUND IP Whitelist //

ISSUE