[spip-dev] bogue création d'une connexion à une base supplémentaire en mutu

En date de : Mer 8.7.09, Committo,Ergo:sum <esj@rezo.net> a écrit :
[...]

> En traçant un peu ce qui se passe dans
> /ecrire/install/etape_sup2.php, il semble y avoir une
> coquille qui empêche le passage du paramètre $server_db
> dans la fonction install_etape_sup2_dist()

oui en effet
>
> Patch proposé:

Il me semble qu'il y a plus qu'une coquille. Essaye ça:

http://trac.rezo.net/trac/spip/changeset/14181

à priori ça fonctionnerait bien... si ce n'est que ça dépend complètement de ce qui est défini comme constantes dans le fichier mes_options.php !

En effet, pour faciliter les installations de nouvelles instances de SPIP, le fichiers mes_options.php.txt distribué dans le pseudo-plugin de mutualisation comme modèle de fichier mes_options.php a partager par les SPIP mutualisés (donc à mettre dans le /config du SPIP primaire de mutu) donne ce code comme exemple:

define ('_INSTALL_SERVER_DB', 'mysql');
define ('_INSTALL_HOST_DB', 'localhost');
define ('_INSTALL_USER_DB', 'loginsql');
define ('_INSTALL_PASS_DB', '123456HDJ');
define ('_INSTALL_NAME_DB', 'mu_'.prefixe_mutualisation($site));

du coup, pour celles de ces constantes qui sont définies dans ce mes_options.php de la mutu, les valeurs correspondantes envoyées par le formulaire de création d'une nouvelle connexion ne sont pas envoyées dans un input hidden par la fonction predef_ou_cache() de /inc/install.php => cf le code de cette fonction:

return ((defined('_INSTALL_HOST_DB'))
    ? ''
    : "\n<input type='hidden' name='adresse_db'
        value=\"".htmlspecialchars($adresse_db)."\" />"
    ) ... idem pour toutes les autres constantes...

Donc effectivement la coquille cachait une incompatibilité de fonctionnement entre la création de fichiers de connexion pour serveurs/bases supplémentaires et la création d'instances de mutu avec des constantes prédéfinies "en dur" par l'admin de la mutu...

Cette incompatibilité demande donc:
- soit d'avertir les admins de mutu que s'ils veulent laisser la possibilité aux webmestres des SPIP mutu de créer des fichiers de connexion supplémentaires ils faut qu'ils enlèvent les pré-définition de constantes dans le mes_options.php central
=> c'est une régression du point de vue facilité de l'install des instances de mutu... :frowning:

- soit de modifier predef_ou_cache() pour gérer ce conflit, par ex comme proposé dans le (mauvais) patch ci-dessous.
A priori ça fonctionne en mutu ou non, pour une installation de 0 ou pour créer un nouveau fichier de connexion à une base externe mais ça me semble un peu trop "sale" pour qu'il n'y ait pas des trucs qui risquent de foirer par ailleurs...

Index: install.php

La coquille ne cachait pas vraiment ça, c'est plutôt le fait que le droit de créer n'importe quel fichier de connexion permettrait à n'importe quel Webmestre de lire les bases des voisins mutualisés, ce qui évidemment est contraire à ce qui est affirmé à propos de la mutu. En fait ce n'est vrai que pour une mutualisation à base unique et distinction des sites par le préfixe de tables, mais si le script de creation de connexion n'a pas d'info là-dessus, il vaut mieux ne rien faire, et c'est vraisemblablement pourquoi ce bout de code n'avais jamais été testé.

Ta solution est probablement la bonne piste, mais il faut l'entourer des vérifications qui s'imposent.

Committo,Ergo:Sum

En fait, il y a déjà un problème plus grave aujourd'hui: il n'est plus possible à une installation de SPIP sous MySQL
de déclarer des bases PG et réciproquement. Cette régression est due à:
http://trac.rezo.net/trac/spip/changeset/10983
qui avait carrément enlevé la possibilité de déclarer des bases externes,
chose qui avait rétablie ici:
http://trac.rezo.net/trac/spip/changeset/12330/
mais en fait seulement pour un serveur SQL de même type que celui de la base principale.

Mathieu je ne comprends en fait pas ton intention dans la modif 10983.
Tu te souviens du pb ?

Committo,Ergo:Sum

Bon, ca devrait être réparé ici:
http://trac.rezo.net/trac/spip/changeset/14265

Committo,Ergo:Sum