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.