Table des matières

Roundcube: 1 plugin pour chaque hôte

Comment dupliquer un plugin pour qu'il puisse être configuré en fonction de chaque hôte…

~~READMORE~~

The problème

:!: ça marche aussi avec “roundcube” version “1.x”: il suffit de remplacer “$rcmail_config…” par “$config…” (tout court)

J'ai 1 serveur roundcube, mais plusieurs domaines ayant chacun un serveur IMAP différent.

Pour que chaque domaine ait sa petite configuration, dans “/etc/roundcube/main.inc.php”, il faut créer un tableau de mapping comme cela (exemple):

$rcmail_config['include_host_config'] = array(
  'webmail.tjaouen.fr' => 'webmail.tjaouen.fr_config.inc.php',
  'webmail.eez.fr' => 'webmail.eez.fr_config.inc.php'
);

Et puis composer aussi chaque fichier de config avec ses particularités:

Exemple avec “webmail.tjaouen.fr_config.inc.php” :

...
$rcmail_config['product_name'] = 'tjaouen.fr - Roundcube Webmail';
$rcmail_config['skin_logo'] = 'local_images/tjaouen_roundcube_logo.png';
$rcmail_config['default_host'] = 'ssl://imap.google.com';  // <-- FAKE ;-)
$rcmail_config['default_port'] = 993;
$rcmail_config['smtp_server'] = 'tls://smtp.google.com';  // <-- FAKE ;-)
$rcmail_config['smtp_port'] = 587; 
...
$rcmail_config['plugins'] = array();   // <- Aucun plugin pour cet hôte
...

Les problèmes commencent lorsqu'on veut utiliser 1 plugin, mais configuré différemment selon l’hôte.

Par exemple le plugin “password” .

Puisque que j'ai des serveurs differents et même totalement indépendant, la gestion des mots de passe est aussi différente.

Donc, chaque hôte a besoin de paramètres spécifique pour cet unique plugin.

La seule solution que j'ai réussi a mettre en place: dupliquer et renommer le plugin.

J'ai testé avec succès avec le plugin “password” et “managesieve”.

Mais voyons avec “password”.

Dupliquer un plugin

Je vais appeler ce nouveau plugin “password_tagada” … WTF ?

Préparer l'environnement de la conf

# cd /etc/roundcube/plugins
# cp -Rp password/ password_tagada/

Voila: on a déjà dupliqué la conf. On la personnalisera à la fin.

Copier le plugin

# cd /usr/share/roundcube/plugins
# cp -Rp password/ password_tagada/

Renommer le fichier “password.php”.

# cd password_tagada
# mv password{,_tagada}.php

Dans “password_tagada.php” , changer le nom de la “class” “password” en “password_tagada”.
Exemple, ça devient:

...
class password_tagada extends rcube_plugin
...

Enfin, faisons pointer la conf correctement vers la nouvelle future conf:

# ln -sf /etc/roundcube/plugins/password_tagada/config.inc.php .

Ce qui donne visuellement:

# ls -l
...
... config.inc.php -> /etc/roundcube/plugins/password_tagada/config.inc.php
...

Rendons le plugin accessible au php

# cd /var/lib/roundcube/plugins/
# ln -s /usr/share/roundcube/plugins/password_tagada .

Ce qui donne visuellement:

# ls -l password*
...
... password -> /usr/share/roundcube/plugins/password
... password_tagada -> /usr/share/roundcube/plugins/password_tagada
...

Et oui, il y a maintenant au moins 2 plugins “password”…

Configurer le "nouveau" plugin

Pour continuer avec notre exemple, les changements doivent être fait dans:

/etc/roundcube/plugins/password_tagada/config.inc.php

Exemple:

$rcmail_config['password_driver'] = 'ldap';
$rcmail_config['password_ldap_adminDN'] = 'tain je reve';

Vous remarquerez que les noms des paramètres n'ont pas changés par rapport au plugin source.

Ajouter ce plugin a l'hôte

Maintenant, on va ajouter ce “nouveau” plugin a l'hôte.

Exemple, dans la configuration de “webmail.tjaouen.fr_config.inc.php” :

$rcmail_config['plugins'] = array('password_tagada');

Voila.