Plesk Greylisting Manager

Hallo Leute,
hat jemand Greylisting Manager unter der Plesk 19 Version laufen?
Nach dem Update und löschen der Browsercaches wird nichts mehr angezeigt. Unter Chrome lief es länger, da hatte ich den Cache erst später gelöscht. Daher vermute ich, das es evtl. an den zwei Templates von Plesk liegt.
Durch die Strukturveränderung wir der Greylist Manager auch nicht mehr bei den Kundenaccounts angezeigt.

- Plesk 19.1
- Ubuntu 18

Danke.
lg
Hi,

gibt es hier etwas neues?

Ich habe das gleiche Problem wie strenggeheim.

  • OS: ‪Ubuntu 18.04.3 LTS‬
  • Produkt: Plesk Obsidian 18.0.21 Update Nr. 5
greetz
fluse
 
Hi,

gibt es hier etwas neues?

Ich habe das gleiche Problem wie strenggeheim.

  • OS: ‪Ubuntu 18.04.3 LTS‬
  • Produkt: Plesk Obsidian 18.0.21 Update Nr. 5
greetz
fluse

hi flusenpower,

es dürfte an den CSS Klassen liegen (Neuen Layout Struktur von Plesk).
Solange diese im Cache vom Browser waren, merkte man die Änderung nicht gleich.
Werde in kürze die Logs auslesen.

lg
 
Hi zusammen,
bei mir lief der Greylistmanager 2.7 unter Plesk 18 nicht mehr - die Tabelle mit den Einträgen erschien nicht mehr.
Wenn Ihr den Greylistmanager 2.7 unter Plesk Obsidian einsetzen wollt müsst Ihr nur in Zeile 545 600 der index.php den Funktionsaufruf loff(); löschen oder "ein"-kommentieren. Der Grund ist, dass es in Plesk die common.js nicht mehr gibt. Die Funktionalität ändert es nicht, da die Funktion loff() schon in Plesk Version 17 deprecated war und immer true zurückgegeben hat ( Schnappschuss_013120_090421_AM.jpg). Ich habe es unter Plesk Version 18.0.23 Update #2 getestet. Natürlich kann auch der Aufruf der common.js und der chk.js.php entfernt werden (es gibt beide nicht mehr).

Gibt es irgendwo ein Git o. ä. wo ich einen PR für die Änderung erstellen kann?
 

Attachments

  • Schnappschuss_013120_090444_AM.jpg
    Schnappschuss_013120_090444_AM.jpg
    207.4 KB · Views: 526
Last edited:
Hi zusammen,
bei mir lief der Greylistmanager 2.7 unter Plesk 18 nicht mehr - die Tabelle mit den Einträgen erschien nicht mehr.
Wenn Ihr den Greylistmanager 2.7 unter Plesk Obsidian einsetzen wollt müsst Ihr nur in Zeile 545 der index.php den Funktionsaufruf loff(); löschen oder "ein"-kommentieren. Der Grund ist, dass es in Plesk die common.js nicht mehr gibt. Die Funktionalität ändert es nicht, da die Funktion loff() schon in Plesk Version 17 deprecated war und immer true zurückgegeben hat (View attachment 5694). Ich habe es unter Plesk Version 18.0.23 Update #2 getestet. Natürlich kann auch der Aufruf der common.js und der chk.js.php entfernt werden (es gibt beide nicht mehr).

Gibt es irgendwo ein Git o. ä. wo ich einen PR für die Änderung erstellen kann?

Danke für den den Hinweis, allerdings ist die Zeile die 600.
Getestet
Plesk Obsidian Version 18.0.23
 
Last edited:
Hallo,
ich hab mit dem Tipp oben den Greylisting Manager unter Obsidian zum laufen bekommen. Allerdings funktionieren die ganzen Buttons wie "Alle Einträge löschen", "Tabelle aufräumen", "Markierte löschen" und "Markierte passieren lassen" nicht. Hat jemand vielleicht eine Idee voran das liegen könnte?
 
Also ich habe die Werte auf der Adminseite auf den Standardwerten belassen. Optimal ist das was Du als optimal empfindest.

btw. Funktioniert immer noch mit Plesk Obsidian 18.0.46 ;)
 
Hallo,

nach dem Update auf 18.0.50 kommt beim GLM dieser Fehler. Weiß da jemand Rat?

VG onkel172

Serverfehler

500 TypeError​

method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given
TypeTypeError
Messagemethod_exists(): Argument #1 ($object_or_class) must be of type object|string, null given
Filepaa.class.php
Line53
 
Hallo,

nach dem Update auf 18.0.50 kommt beim GLM dieser Fehler. Weiß da jemand Rat?

VG onkel172

Serverfehler

500 TypeError​

method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given
TypeTypeError
Messagemethod_exists(): Argument #1 ($object_or_class) must be of type object|string, null given
Filepaa.class.php
Line53
Bei mir das selbe.
 
gleicher Fehler bei mir auch mit Plesk 18.0.50
laut paa.class ist die zeile 53 anscheinend die Ursache

if(!method_exists($this->plesk_session,'chkLevel')){
require("legacy.class.php");
$this->plesk_session = new legacy();
}
$this->checkSqliteRights();
}
 
Das muss eine PHP8 Inkompatibilität sein.
Leider hab ich davon zu wenig Ahnung um das Problem fixen zu können.

Die Zeile 53 kann man wie folgt fixen:
Code:
if(!method_exists($this->plesk_session,'chkLevel')){
ersetzen mit:
Code:
if ($this->plesk_session && !method_exists($this->plesk_session,'chkLevel')) {

weitere Änderungen in der paa.class.php, kommt zweimal vor!
suchen:
Code:
if($this->plesk_session->chkLevel(IS_ADMIN)){
ersetzen mit
Code:
if($this->plesk_session?->chkLevel(IS_ADMIN)){

Ich habe das im Februar mal versucht zu fixen, habe es aber leider nicht geschafft. Betroffen sind mehrere Dateien die nach und nach beim Lösen des Problems auftauchen (paa.class.php, index.php und glm.class.php) nur dann knallt es irgendwann an der Berechtigung bzw. Session
Ich hatte dann am Schluß zwar ein Fenster das sich ohne Fehlermeldung aufgebaut hat, aber leider fehlte der Inhalt im GLM Frame, also die ganzen aufgelisteten Mails etc.
Wie gesagt, es scheitert an einer PHP8 Inkompatibilität und ich hab zu wenig Ahnung davon :mad:
 
Last edited:
Hat, wie Onkel_Tom bereits oben aufgeführt, definitiv mit PHP zu tun. Ist seit PHP 7.4.33, welches ja nunmehr ebenfalls outdated ist, der Fall und mit PHP 8 nun erst recht manifestiert. "method_exists()" wurde nunmehr ziemlich strikt in PHP festgelegt. Ich hoffe ich kann etwas Zeit freischaufeln und den Code durchforsten, um den Fehler zu beseitigen. Aber vielleicht kann "haggybear" ja hier schneller weiterhelfen, da er dieses tolle Tool aus dem Effeff kennt. :)
 
Last edited:
Ich hoffe ich kann etwas Zeit freischaufeln und den Code durchforsten, um den Fehler zu beseitigen.
Es sind nicht viele Codestellen die einem um die Ohren fliegen.
glm.class.php Zeile 418
Code:
if($this->plesk_session->chkLevel(IS_ADMIN) && AUTOUPDATE){
ändern in
Code:
if($this->plesk_session?->chkLevel(IS_ADMIN) && AUTOUPDATE){
index.php Zeile 121
Code:
var mailaliases = new Array("<?php echo @implode('","',$glm->mailaliases);?>");
ersetzen mit
Code:
var mailaliases = new Array("<?php echo @implode('","',(array)$glm->mailaliases);?>");
alle Codestellen (8 Zeilen) mit
Code:
->plesk_session
ersetzen mit
Code:
->plesk_session?
genauso noch in paa.class.php die zwei selben plesk_session mit einem ? ergänzen die ich gestern vergessen hatte.
Code:
->plesk_session
ersetzen mit
Code:
->plesk_session?

Dann besteht nur noch das Problem das er dieplesk_session des Bentuzers nicht erkennt und deswegen die Liste leer bleibt.
Da vermute ich, dass Änderungen an der Datei legacy.class.php nötig sind.
 
Hi ich hab "haggybear" mal per mail angeschrieben er hängt grad in einem Projekt sobald er luft hat schaut er sich das an :-)

ich hab nun in Plesk komplett Greylisting deaktiviert da mir mit dem fehler einzelne Mails sonst nicht zugestellt werden...
 
Der Ganze Code sollte dann gleich PHP 8.2 konform gemacht werden. Plesk schreibt heute zum Update 18.0.51
In the nearest future, we plan to switch PHP used by Plesk to PHP 8.2. This is because security support for PHP 8.0 will end in November 2023. If you are running any custom extensions, you will need to update them to support PHP 8.2 to avoid potential issues.


This change is currently scheduled to take place with the release of Plesk Obsidian 18.0.53 (early June 2023).
 
Es sind nicht viele Codestellen die einem um die Ohren fliegen.
glm.class.php Zeile 418
Code:
if($this->plesk_session->chkLevel(IS_ADMIN) && AUTOUPDATE){
ändern in
Code:
if($this->plesk_session?->chkLevel(IS_ADMIN) && AUTOUPDATE){
index.php Zeile 121
Code:
var mailaliases = new Array("<?php echo @implode('","',$glm->mailaliases);?>");
ersetzen mit
Code:
var mailaliases = new Array("<?php echo @implode('","',(array)$glm->mailaliases);?>");
alle Codestellen (8 Zeilen) mit
Code:
->plesk_session
ersetzen mit
Code:
->plesk_session?
genauso noch in paa.class.php die zwei selben plesk_session mit einem ? ergänzen die ich gestern vergessen hatte.
Code:
->plesk_session
ersetzen mit
Code:
->plesk_session?

Dann besteht nur noch das Problem das er dieplesk_session des Bentuzers nicht erkennt und deswegen die Liste leer bleibt.
Da vermute ich, dass Änderungen an der Datei legacy.class.php nötig sind.
Naja,- nach ein bisschen Recherche denke ich, dass dies weder die Lösung und die Session nicht das größte Problem ist.
Trotzdem danke fürs rausschreiben der Codestellen und Dateien.

Mit Plesk Obsidian hat sich der Zugriff auf Systemdaten geändert.

Statt:
if($this->plesk_session->chkLevel(IS_ADMIN) && AUTOUPDATE){
muss es wohl nun heissen:
if (pm_Session::getClient()->isAdmin() && AUTOUPDATE) {
(Quelle: https://docs.plesk.com)

Das Fragezeichen im original Code ist mir unklar? Soll es den Fehler unterdrücken? Zumindest ändert es ja nichts an der falschen Berechtigungs-Abfrage, weshalb schon an dieser Stelle keine Berechtigungen für das restliche Skript erteilt werden.

Den String in der index.php einfach in einen array zu zwingen, ist auch sinnlos, weil es scheinbar einfach keine Daten in dem Array gibt.
DAS scheint mir das Hauptproblem zu sein, wenn man die Berechtigungen richtig setzt.
$glm->mailaliases bleibt leer. Deshalb wird es als String gewertet.
Ein leerer String, den man in einen Array zwingt, ergibt einen leeren Array.
$glm->mailaliases wird im Header der Datei aus der Datenbank abgefragt und weiter unten im Code befüllt.
Aus einem mir noch nicht klaren Grund, passiert das aber nicht.

Wer herausfindet, warum die mailaliases leer bleiben, der löst evtl. das komplette Problem.

Hat jemand dazu Ideen?

Gruß,
Micha
 
Last edited:
Back
Top