Tâche #34559
Scénario #34558: EOLE 2.9 : Roundcube doit être fonctionnel
La version de roundcube installée ne semble pas compatible avec php 8.1 sur EOLE 2.9.0
100%
Description
Il semble qu’une modification de la gestion de la variable _GLOBALS (passage en lecture seule) empêche la version installée de roundcube de fonctionner.
Le support complet pour php 8.1 est annoncé pour la version 1.6.0 sur la forge de roundcube (https://github.com/roundcube/roundcubemail/releases/tag/1.6.0)
La version installée via roundcube-apps est la 1.4.3 et la version proposée par la distribution (peut-être sans les patchs nécessaires) est la 1.5.0.
Demandes liées
Révisions associées
Adaptation pour roundcube 1.6.0
Ref #34559
Passage à la version 1.6.0 de roundcube (Ref #34559)
La version du protocole est une chaîne de caractères.
Ref #34559
Écouter sur le port 587.
Ref #34559
Historique
#1 Mis à jour par Benjamin Bohard il y a plus d'un an
- Tâche parente mis à #34558
#2 Mis à jour par Benjamin Bohard il y a plus d'un an
- Statut changé de Nouveau à En cours
#3 Mis à jour par Benjamin Bohard il y a plus d'un an
- Assigné à mis à Benjamin Bohard
#4 Mis à jour par Benjamin Bohard il y a plus d'un an
Certains avertissements qui étaient donné dans les versions précédentes lèvent maintenant des erreurs (le comportement précédent consistait à considérait qu’une variable inexistante devait être évaluée comme une chaîne de caractères).
On trouve peut-être le problème dans le fichier de configuration de CAS0 et dans le plugin cas_authentication.
En 2.8.1 :
PHP Warning: Use of undefined constant RCUBE_INPUT_POST - assumed 'RCUBE_INPUT_POST' (this will throw an Error in a future version of PHP) in /var/www/html/roundcube/plugins/cas_authentication/cas_authentication.php on line 114
En 2.9.0 :
PHP Fatal error: Uncaught Error: Undefined constant "RCUBE_INPUT_POST" in /var/www/html/roundcube/plugins/cas_authentication/cas_authentication.php:114
En l’occurrence la constante RCUBE_INPUT_POST n’existe effectivement pas mais semble avoir été remplacée par INPUT_POST dans le fichier roundcube/program/lib/Roundcube/rcube_utils.php.
L’autre problème qui semble apparenté est lié à l’utilisation de la fonction method_exists qui devrait prendre en argument une instance d’objet ou le nom de la classe. Il semble que dans cas_authentication, on doive utiliser le nom de classe parce qu’on ne dispose pas d’une instance.
Le plugin cas_authentication et le template cas.inc.php nécessitent donc des adaptations pour la montée de version de roundcube.
[0] dans le template cas.inc.php, la variable creole eolesso_cas_serverversion n’est pas entre quote. Certaines applications l’utilisent vraiment comme une variable (on trouve une initialisation de CAS_VERSION_2_0 (valeur possible de la variable creole eolesso_cas_serverversion) dans les applications grr et glpi par exemple). Les autres ne semblent pas l’utiliser comme une variable et php la considérait comme une chaîne de caractères.
#5 Mis à jour par Benjamin Bohard il y a plus d'un an
Après correction du template et du plugin cas_authentication, problème de connexion au serveur imap.
sept. 21 13:47:48 scribe imapd[49906]: Connection, ip=[::ffff:192.168.0.26], port=[60154] sept. 21 13:47:48 scribe authdaemond[49877]: received auth request, service=imap, authtype=login sept. 21 13:47:48 scribe authdaemond[49877]: authpipe: trying this module sept. 21 13:47:48 scribe authdaemond[49877]: closing pipe sept. 21 13:47:48 scribe authdaemond[49877]: forking new one sept. 21 13:47:48 scribe authdaemond[49877]: attempting to fork sept. 21 13:47:48 scribe authdaemond[49877]: Pipe auth. started Pipe-program (pid 50415) sept. 21 13:47:48 scribe authdaemond[49877]: new pipe has in: 8, out: 7 sept. 21 13:47:48 scribe authdaemond[49877]: executing /etc/courier/authProg sept. 21 13:47:48 scribe authdaemond[49877]: PHP Deprecated: phpCAS autoloader is deprecated. Install phpCAS using composer instead. in /usr/share/php/CAS/CAS/Autoload.php on line 86 sept. 21 13:47:48 scribe authdaemond[49877]: PHP Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /usr/share/php/CAS/eoleclient.php on line 264 sept. 21 13:47:48 scribe authdaemond[49877]: PHP Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /usr/share/php/CAS/eoleclient.php on line 311 sept. 21 13:47:48 scribe authdaemond[49877]: PHP Warning: Constant __CAS_FOLDER already defined in /etc/courier/authProg on line 22 sept. 21 13:47:48 scribe authdaemond[49877]: closing pipe sept. 21 13:47:48 scribe authdaemond[49877]: trying to wait for child (WNOHANG) (pid 50415) sept. 21 13:47:48 scribe authdaemond[49877]: sleep 2 seconds and try again to wait for pid 50415 sept. 21 13:47:50 scribe authdaemond[49877]: authpipe: TEMPFAIL - no more modules will be tried sept. 21 13:47:50 scribe imapd[49906]: LOGIN FAILED, user=admin, ip=[::ffff:192.168.0.26], port=[60154] sept. 21 13:47:50 scribe imapd[49906]: authentication error: Input/output error
Le programme semble s’arrêter lors de l’instanciation d’un objet EoleCASClient (closing pipe).
17 24.687061336 127.0.0.1 → 127.0.0.1 LDAP 111 bindRequest(53) "cn=reader,o=gouv,c=fr" simple 18 24.687319679 127.0.0.1 → 127.0.0.1 LDAP 70 bindResponse(53) invalidCredentials
Par contre, en utilisant les identifiants contenus dans /etc/courier/authprog.conf :
39 121.150565795 127.0.0.1 → 127.0.0.1 LDAP 147 bindRequest(1) "cn=reader,o=gouv,c=fr" simple 40 121.150571724 127.0.0.1 → 127.0.0.1 TCP 56 389 → 59922 [ACK] Seq=1 Ack=92 Win=65408 Len=0 41 121.150890198 127.0.0.1 → 127.0.0.1 LDAP 70 bindResponse(1) success
#6 Mis à jour par Benjamin Bohard il y a plus d'un an
Incohérence dans le format de la version de protocole CAS passé : CAS_VERSION_2_0 vs 2.0
#7 Mis à jour par Benjamin Bohard il y a plus d'un an
[27-Sep-2022 16:30:11 +0200]: PHP Error: Failed to load plugin file /var/www/html/roundcube/plugins/filters/filters.php in /var/www/html/roundcube/program/lib/Roundcube/rcube_plugin_api.php on line 193 (POST /roundcube/?_task=mail&_unlock=loading1664289011790&_framed=1&_action=send) [27-Sep-2022 16:30:11 Europe/Paris] PHP Deprecated: preg_match(): Passing null to parameter #2 ($subject) of type string is deprecated in /usr/share/php/CAS/CAS/Client.php on line 1041 [27-Sep-2022 16:30:11 Europe/Paris] PHP Warning: stream_socket_client(): Unable to connect to 192.168.0.26:587 (Connection refused) in /var/www/html/roundcube/vendor/pear/net_socket/Net/Socket.php on line 159 [27-Sep-2022 16:30:11 +0200]: <73cd7j2i> PHP Error: Connection refused (POST /roundcube/?_task=mail&_unlock=loading1664289011790&_framed=1&_action=send) [27-Sep-2022 16:30:11 +0200]: <73cd7j2i> PHP Error: Failed to connect socket: Connection refused (POST /roundcube/?_task=mail&_unlock=loading1664289011790&_framed=1&_action=send) [27-Sep-2022 16:30:11 +0200]: <73cd7j2i> SMTP Error: Connection failed: (Code: -1) in /var/www/html/roundcube/program/lib/Roundcube/rcube.php on line 1795 (POST /roundcube/?_task=mail&_unlock=loading1664289011790&_framed=1&_action=send)
#8 Mis à jour par Benjamin Bohard il y a plus d'un an
rcube_utils::parse_host_uri($smtp_host, 587, 465)
renvoie le port 192.168.0.26:587 mais de service smtp n’écoute que sur les ports 25 et 465.
public static function parse_host_uri($host, $plain_port = null, $ssl_port = null) { if (strpos($host, 'unix://') === 0) { return [$host, 'unix', -1]; } $url = parse_url($host); $port = $plain_port; $scheme = null; if (!empty($url['host'])) { $host = $url['host']; $scheme = $url['scheme'] ?? null; if (!empty($url['port'])) { $port = $url['port']; } else if ( $scheme && $ssl_port && ($scheme === 'ssl' || ($scheme != 'tls' && $scheme[strlen($scheme) - 1] === 's')) ) { // assign SSL port to ssl://, imaps://, ldaps://, but not tls:// $port = $ssl_port; } } return [$host, $scheme, $port]; }
La configuration spécifie
$config['default_host'] = '192.168.0.26'; $config['smtp_server'] = 'tls://%h'; $config['smtp_port'] = 25;
En conclusion, il semble que roundcube utilise le port 587 lorsqu’il utilise tls (et non 25). On peut ajouter le port 587 à la liste des ports d’écoute d’exim4 ou alors modifier en dur dans le code de roundcube le port plain_port.
#9 Mis à jour par Benjamin Bohard il y a plus d'un an
- Statut changé de En cours à À valider
#10 Mis à jour par Benjamin Bohard il y a plus d'un an
- % réalisé changé de 0 à 100
#11 Mis à jour par Benjamin Bohard il y a plus d'un an
- Lié à Scénario #34654: EOLE 2.9 : Finaliser le découplage client single sign-on et server (eole-sso ou LemonLDAP-NG actuellement) ajouté
#12 Mis à jour par Ludwig Seys il y a plus d'un an
- Statut changé de À valider à Résolu
#13 Mis à jour par Joël Cuissinat il y a plus d'un an
- Statut changé de Résolu à Fermé
- Restant à faire (heures) mis à 0.0