tuto:ipasserelle:divers:ejabberd_advanced

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
tuto:ipasserelle:divers:ejabberd_advanced [12/11/2010 18:37]
dani
tuto:ipasserelle:divers:ejabberd_advanced [12/07/2012 22:54] (Version actuelle)
dani Page moved from ejabberd_advanced to tuto:ipasserelle:divers:ejabberd_advanced
Ligne 1: Ligne 1:
 ====== Options "avancées" pour Ejabberd ====== ====== Options "avancées" pour Ejabberd ======
  
 +<note warning>cette page est obsolète pour ceux qui utilisent le paquet **ipasserelle-im**</note>
 ===== HTTP bind et HTTP poll ===== ===== HTTP bind et HTTP poll =====
  
Ligne 59: Ligne 59:
   {mod_muc_log,    []},   {mod_muc_log,    []},
   {mod_shared_roster, []},   {mod_shared_roster, []},
-  {mod_pubsub,     [{access_createnode, pubsub_createnode}]},+  {mod_pubsub,     [ 
 +    {access_createnode, pubsub_createnode}
 +    {plugins, ["flat", "hometree", "pep"]} 
 +  ]},
   {mod_time,       []},   {mod_time,       []},
   {mod_last,       []},   {mod_last,       []},
 %  {mod_xmlrpc,[{port, 4560},{timeout, 5000}]}, %  {mod_xmlrpc,[{port, 4560},{timeout, 5000}]},
   {mod_version,    []},   {mod_version,    []},
-  {mod_ctlextra,    []},+  {mod_admin_extra,    []},
 HERE HERE
     $OUT .= '  {mod_http_bind, []},'."\n" if (${'ejabberd'}{'HTTPBind'} || 'disabled') eq 'enabled';     $OUT .= '  {mod_http_bind, []},'."\n" if (${'ejabberd'}{'HTTPBind'} || 'disabled') eq 'enabled';
Ligne 193: Ligne 196:
 HERE HERE
 } }
 +EOF
 </code> </code>
  
Ligne 240: Ligne 244:
   ]},   ]},
 </code> </code>
 +
 +===== Configurer mod_shared_roster_ldap =====
 +
 +FIXME: configuration de mod_shared_roster_ldap à revoir. Semble poser des problèmes de groupes
 +
 +mod_shared_roster_ldap permet de créer automatiquement un roster pour les nouveaux utilisateurs, basé sur un annuaire LDAP. Pour le configurer, il faut rajouter une section comme ceci dans la partie modules du ficheir ejabberd.cfg:
 +
 +<code>
 +  {mod_shared_roster_ldap,[
 +    {ldap_base, "dc=firewall-services,dc=com"},
 +    {ldap_rfilter, "(objectClass=mailboxRelatedObject)"},
 +    {ldap_groupattr, "cn"},
 +    {ldap_groupdesc, "description"},
 +    {ldap_memberattr, "memberUid"},
 +    {ldap_useruid, "uid"},
 +    {ldap_userdesc, "cn"}
 +  ]},
 +</code>
 +
 +Si on veut limiter à un nombre précis de groupe, il suffit de l'ajouter dans le filtre, comme ceci:
 +<code>
 +{mod_shared_roster_ldap,[
 +    {ldap_base, "dc=firewall-services,dc=com"},
 +    {ldap_rfilter, "(objectClass=mailboxRelatedObject)"},
 +    {ldap_gfilter, "(|(cn=techniciens)(cn=ventes)(cn=equipe))"},
 +    {ldap_groupattr, "cn"},
 +    {ldap_groupdesc, "description"},
 +    {ldap_memberattr, "memberUid"},
 +    {ldap_useruid, "uid"},
 +    {ldap_userdesc, "cn"}
 +  ]},
 +</code>
 +
 +Seuls les groupes **techniciens**, **ventes** et **equipe** seront recherchés
 +
 +===== Configurer mod_archive =====
 +On va utiliser pour ceci le module mod_archive_odbc (voir http://www.ndl.kiev.ua/content/mod_archive_odbc-release).
 +Pour cela, on va devoir installer des modules supplémentaires pour ejabberd:
 +
 +<code bash>
 +yum --enablerepo=fws install ejabberd-modules
 +</code>
 +
 +Puis, il faut créer une base de donnée mysql et y ajouter le schéma nécessaire. Il faut également modifier mysql pour qu'il écoute sur un socket réseau, et activer InnoDB
 +<code bash>
 +db configuration setprop mysqld LocalNetworkingOnly no InnoDB enabled
 +expand-template /etc/my.cnf
 +sv t /service/mysqld
 +openssl rand -base64 40 > ejabberd.pw
 +chmod 600 ejabberd.pw
 +PW=$(cat ./ejabberd.pw)
 +db configuration setprop ejabberd DbName ejabberd DbUser ejabberd DbPassword $PW
 +mysql -e "create database ejabberd"
 +mysql -e "grant all privileges on ejabberd.* to 'ejabberd'@'localhost' identified by '$PW'"
 +mysql -e "flush privileges"
 +mysql ejabberd < /usr/share/doc/ejabberd-modules-0.1/mod_archive_odbc_mysql.sql
 +</code>
 +
 +Puis, on rajoute la configuration nécessaire dans le fichier ejabberd.cfg:
 +
 +  * Dans la section modules
 +<code>
 +{mod_archive_odbc, [{database_type, "mysql"},
 +                      {default_auto_save, true},
 +                      {enforce_default_auto_save, false},
 +                      {default_expire, infinity},
 +                      {enforce_min_expire, 0},
 +                      {enforce_max_expire, infinity},
 +                      {replication_expire, 31536000},
 +                      {session_duration, 1800},
 +                      {wipeout_interval, 86400}]}
 +</code>
 +
 +  * Au niveau global (format templates SME)
 +<code>
 +cat <<EOF > /etc/e-smith/templates-custom/etc/ejabberd/ejabberd.cfg/10database
 +
 +% mysql database access
 +\{odbc_server, \{mysql, "localhost", "{"\$ejabberd{DbName}"}", "{"\$ejabberd{DbUser}"}", "{"\$ejabberd{DbPassword}"}"\}\}.
 +
 +EOF
 +</code>
 +
 +===== Utiliser MySQL comme backend (à la place de mnesia) =====
 +La base de donnée par défaut utilisée par ejabberd est mnesia. MySQL a quelques avantages, en terme de performances, de facilité d'administration, de sauvegarde etc... On va donc modifier la configuration d'ejabberd pour utiliser une base mysql comme backend
 +
 +==== Créer la base de donnée ====
 +Si ce n'est pas déjà fait, il faut créer la base de donnée (voir section mod_archive)
 +
 +==== Import du schéma dans la base ====
 +On va maintenant insérer le schéma mysql dans la base:
 +<code bash>
 +mysql ejabberd < /usr/share/doc/ejabberd-modules-0.1/mysql.sql
 +</code>
 +
 +==== Migrer les données depuis la base mnesia ====
 +Si le serveur ejabberd a déjà utilisé (pas une nouvelle installation), il faut migrer les données depuis la base mnesia vers mysql.
 +
 +<code bash>
 +mkdir /tmp/mnesia
 +chown root:ejabberd /tmp/mnesia
 +chmod 770 /tmp/mnesia
 +ejabberdctl export2odbc $(db configuration get DomainName) /tmp/mnesia
 +for FILE in /tmp/mnesia/*.txt; do
 +  mysql ejabberd < $FILE
 +done
 +</code>
 +==== Configurer ejabberd ====
 +
 +Il ne reste qu'à remplacer les modules suivants par leur équivalent, en ajoutant le préfixe _odbc
 +
 +  * mod_archive_odbc
 +  * mod_last_odbc
 +  * mod_offline_odbc
 +  * mod_privacy_odbc
 +  * mod_private_odbc
 +  * mod_pubsub_odbc (semble avoir des problème pour l'instant, avec ejabberd 2.1.6, donc, on laisse en mnesia)
 +  * mod_roster_odbc
 +  * mod_vcard_odbc
 +
 +
 +
  • tuto/ipasserelle/divers/ejabberd_advanced.1289583424.txt.gz
  • Dernière modification: 12/11/2010 18:37
  • de dani