Re: Jabber

Top Page

Reply to this message
Author: Alban Crequy
Date:  
To: ML Guilde
Subject: Re: Jabber
Le mercredi 12 novembre 2003 à 10:04, Frederic Mantegazza a écrit:
> Bonjour,
>
> J'ai installe jabber (le serveur) sur une machine, et gabber sur les postes
> clients. J'arrive a faire communiquer deux personnes, mais je n'ai pas
> compris comment on faisait pour creer une chat-room. Cela se fait-il en
> configurant le serveur (fichier), ou via les clients ?


Cela se fait du coté serveur.
Un serveur Jabber fonctionne en plusieurs "modules" ou
"transports".

Par exemple, sur le serveur linux.ensimag.fr, nous avons un
serveur principal que nous lançons avec la commande suivante:
./jabber/jabberd/jabberd -c jabber.xml &

Puis les différents modules:
- Le module conférence (chat-room)
- Le module ICQ
- Le module MSN
- etc.

Nous lançons le module conference avec la commande:
./jabber/jabberd/jabberd -c muc.xml &

Il s'agit du même programme lancé deux fois avec deux
fichiers de configuration différents. Les deux peuvent se
lancer sur la même machine ou sur une machine différente.

Dans les deux cas, ils communiquent par TCP/IP sur un port
determiné par les fichiers de configuration. Les modules
s'authentifient entre eux par mots de passe.

Il faut des Fully Qualified Domain Name differents pour
chaque programme. Dans le cas du notre serveur Jabber,
nous avons le nom "linux.ensimag.fr"
et "conference.blop.info" qui pointent sur la même machine.

Voici les passages interessants des fichiers de
configuration:

****** Fichier muc.xml en entier

<jabber>

  <service id="muclinker">
    <uplink/>
    <connect>
      <ip>127.0.0.1</ip>
      <port>31518</port>
      <secret>UnMotDePasse</secret>
    </connect>
  </service>


  <service id="conference.blop.info">
    <load>
       <conference>./mu-conference/src/mu-conference.so</conference>
    </load>
    <conference xmlns="jabber:config:conference">
      <public/>
      <vCard>
        <FN>Public Chatrooms</FN>
        <DESC>This service is for public chatrooms.</DESC>
        <URL>http://linux.ensimag.fr/logs/</URL>
      </vCard>
      <history>20</history>
      <logdir>./logs/muc/</logdir>
      <sadmin>
        <user>lucas@???</user>
        <user>albancrequy@???</user>
        <user>guiber@???</user>
      </sadmin>
      <notice>
        <join>has become available</join>
        <leave>has left</leave>
        <rename>is now known as</rename>
      </notice>
    </conference>
  </service>  


<pidfile>./mu-conference.pid</pidfile>

</jabber>

****** Fin du fichier muc.xml

Et le fichier de configuration principal:

****** Quelques parties du fichier jabber.xml

(mettre au bon endroit:)

<item category="conference" type="public"
jid="conference.blop.info" name="Public Conferencing"
version="0.5">
     <ns>jabber:iq:register</ns>
     <ns>gc-1.0</ns>
     <ns>http://jabber.org/protocol/muc</ns>
</item>


(et plus loin:)

  <service id="muclinker">
    <host>conference.blop.info</host>
    <accept>
      <ip>127.0.0.1</ip>
      <port>31518</port>
      <secret>UnMotDePasse</secret>
    </accept>
  </service>


****** Fin du fichier jabber.xml

Bien sur, pour que ça marche, le port d'écoute du serveur
principal (31518 ici) doit être le même que le port
sur lequel se connecte le module conference. Et les mots de
passes doivent être les mêmes (ici, UnMotDePasse).

Dans notre cas, le serveur principal et le module conference
tournent sur la même machine, c'est pour ça que le module se
connecte sur 127.0.0.1 pour atteindre le serveur principal.

Voici les versions que nous utilisons:
jabber-1.4.2.tar.gz (serveur principal)
mu-conference-0.5.1.tar.gz (module conference)

En compilant le module conference, on obtient un fichier
src/mu-conference.so
Ce fichier est utilisé par l'instance de jabberd qui sera
utilisé comme module conference, d'où la présence de ces
3 ligne dans le fichier de configuration du module
conférence (muc.xml) :

    <load>
       <conference>./mu-conference/src/mu-conference.so</conference>
    </load>


Du coté client, il suffit d'indiquer dans le client que l'on
souhaite utiliser le serveur de conference; il faut indiquer
le nom DNS qui correspond au module. Il ne faut pas indiquer
le nom qui correspond au serveur principal, même si en
pratique ces deux noms DNS peuvent pointer sur la même
machine.

Bon courage :)

Alban