A continuación presentaremos las modificaciones de los archivos de configuración de Jabberd 2.0, MU-Conference y Bandersnatch según instalación en equipo de prueba de Facultad de Ingeniería
<!-- c2s configuration -->
<c2s>
<id>c2s</id>
<pidfile>/usr/local/var/jabberd/pid/c2s.pid</pidfile>
<!-- Router connection configuration -->
<router>
<ip>127.0.0.1</ip>
<port>5347</port>
<!-- Username/password to authenticate as -->
<user>jabberd</user>
<pass>secret</pass>
<pemfile>/usr/local/etc/jabberd/server.pem</pemfile>
<!-- Router connection retry -->
<retry>
<init>3</init>
<lost>3</lost>
<sleep>2</sleep>
</retry>
</router>
<!-- Log configuration - type is "syslog", "file" or "stdout" -->
<log type='file'>
<ident>jabberd/c2s</ident>
<facility>local3</facility>
<file>/usr/local/var/jabberd/log/c2s.log</file>
</log>
<!-- Local network configuration -->
<local>
<id>tortuga.fing.edu.uy</id>
<ip>0.0.0.0</ip>
<port>5222</port>
<pemfile>/usr/local/etc/jabberd/server.pem</pemfile>
<ssl-port>5223</ssl-port>
</local>
<!-- Input/output settings -->
<io>
<max_fds>1024</max_fds>
<!-- Rate limiting -->
<limits>
<bytes>0</bytes>
<connects>0</connects>
</limits>
<access>
<order>allow,deny</order>
</access>
<!-- Timed checks -->
<check>
<interval>0</interval>
<idle>0</idle>
<keepalive>0</keepalive>
</check>
</io>
<!-- Authentication/registration database configuration -->
<authreg>
<!-- Backend module to use -->
<module>mysql</module>
<!-- Registration configuration -->
<register>
<enable/>
<instructions>Enter a username and password to register with this server.</instructions>
<password/>
</register>
<!-- Available authentication mechanisms -->
<mechanisms>
<traditional>
<plain/>
<digest/>
<zerok/>
</traditional>
<sasl>
<plain/>
<digest-md5/>
</sasl>
</mechanisms>
<!-- MySQL module configuration -->
<mysql>
<!-- Database server host and port -->
<host>localhost</host>
<port>3306</port>
<!-- Database name -->
<dbname>jabberd2</dbname>
<!-- Database username and password -->
<user>jabberd2</user>
<pass>jabberd2</pass>
</mysql>
<!-- Pipe module configuration -->
<pipe>
<!-- Program to execute -->
<exec>/usr/local/bin/pipe-auth.pl</exec>
</pipe>
</authreg>
</c2s>
<!-- Session manager configuration -->
<sm>
<id>tortuga.fing.edu.uy</id>
<pidfile>/usr/local/var/jabberd/pid/sm.pid</pidfile>
<!-- Router connection configuration -->
<router>
<!-- IP/port the router is waiting for connections on -->
<ip>127.0.0.1</ip>
<port>5347</port>
<!-- Username/password to authenticate as -->
<user>jabberd</user>
<pass>secret</pass>
<pemfile>/usr/local/etc/jabberd/server.pem</pemfile>
<!-- Router connection retry -->
<retry>
<init>3</init>
<lost>3</lost>
<sleep>2</sleep>
</retry>
</router>
<!-- Log configuration - type is "syslog", "file" or "stdout" -->
<log type='file'>
<ident>jabberd/sm</ident>
<facility>local3</facility>
<file>/usr/local/var/jabberd/log/sm.log</file>
</log>
<!-- Storage database configuration -->
<storage>
<driver>mysql</driver>
<!-- MySQL driver configuration -->
<mysql>
<host>localhost</host>
<port>3306</port>
<dbname>jabberd2</dbname>
<user>jabberd2</user>
<pass>jabberd2</pass>
<transactions/>
</mysql>
</storage>
<!-- Access control information -->
<aci>
<acl type='all'>
<jid>admin@tortuga.fing.edu.uy</jid>
</acl>
</aci>
<modules>
<chain id='sess-start'/>
<chain id='sess-end'>
<module>iq-last</module>
</chain>
<chain id='in-sess'>
<module>validate</module>
<module>privacy</module>
<module>roster</module>
<module>vacation</module>
<module>iq-vcard</module>
<module>iq-private</module>
<module>disco</module>
<module>offline</module>
<module>announce</module>
<module>presence</module>
<module>deliver</module>
</chain>
<chain id='out-sess'/>
<chain id='in-router'>
<module>session</module>
<module>validate</module>
<module>presence</module>
<module>privacy</module>
</chain>
<chain id='out-router'>
<module>privacy</module>
</chain>
<chain id='pkt-sm'>
<module>iq-last</module>
<module>iq-time</module>
<module>iq-version</module>
<module>disco</module>
<module>announce</module>
<module>help</module>
<module>echo</module>
</chain>
<chain id='pkt-user'>
<module>roster</module>
<module>presence</module>
<module>iq-vcard</module>
<module>deliver</module>
<module>vacation</module>
<module>offline</module>
<module>disco-publish</module>
<module>iq-last</module>
</chain>
<chain id='pkt-router'>
<module>session</module>
<module>disco</module>
</chain>
<chain id='user-load'>
<module>active</module>
<module>roster</module>
<module>privacy</module>
<module>disco-publish</module>
<module>vacation</module>
</chain>
<chain id='user-create'>
<module>active</module>
<module>template-roster</module>
</chain>
<chain id='user-delete'>
<module>active</module>
<module>announce</module>
<module>disco-publish</module>
<module>offline</module>
<module>privacy</module>
<module>roster</module>
<module>vacation</module>
<module>iq-last</module>
<module>iq-private</module>
<module>iq-vcard</module>
</chain>
</modules>
<!-- Service discovery configuration -->
<discovery>
<identity>
<category>server</category>
<type>im</type>
<name>Jabber M.I. server</name>
</identity>
<agents>
<agent jid='conference.tortuga.fing.edu.uy'>
<name>Public Conferencing</name>
<description>Public chatrooms for users.</description>
<service>public</service>
<groupchat/>
</agent>
</agents>
<items>
</items>
</discovery>
<!-- User options -->
<user>
<auto-create/>
<!-- Templates. If defined, the contents of these files will be
stored in the users data store when they are created. -->
<template>
<!--
<roster>/usr/local/etc/jabberd/templates/roster.xml</roster>
-->
</template>
</user>
</sm>
<!-- Router configuration -->
<router>
<!-- ID of the router on the network (default: router) -->
<id>router</id>
<pidfile>/usr/local/var/jabberd/pid/router.pid</pidfile>
<!-- Log configuration - type is "syslog", "file" or "stdout" -->
<log type='file'>
<!-- If logging to syslog, this is the log ident -->
<ident>jabberd/router</ident>
<facility>local3</facility>
<!-- If logging to file, this is the filename of the logfile -->
<file>/usr/local/var/jabberd/log/router.log</file>
</log>
<!-- Local network configuration -->
<local>
<ip>0.0.0.0</ip>
<port>5347</port>
<users>/usr/local/etc/jabberd/router-users.xml</users>
<secret>secret</secret>
<pemfile>/usr/local/etc/jabberd/server.pem</pemfile>
</local>
<!-- input/output settings -->
<io>
<max_fds>1024</max_fds>
<limits>
<bytes>0</bytes>
<connects>0</connects>
</limits>
<access>
<order>allow,deny</order>
</access>
</io>
<aliases>
<alias name='conference.tortuga.fing.edu.uy' target='mu-conference'/>
</aliases>
<!-- Access control information -->
<aci>
<acl type='all'>
<user>jabberd</user>
</acl>
<!-- These users can bind names other than their username -->
<acl type='bind'>
<user>bandersnatch</user>
</acl>
<acl type='log'>
<user>bandersnatch</user>
</acl>
</aci>
</router>
<!-- This is the list of known router users, and their authentication
secrets. Access control is done via the settings in router.xml -->
<users>
<user>
<name>jabberd</name>
<secret>secret</secret>
</user>
<user>
<name>muc</name>
<secret>secret</secret>
</user>
<user>
<name>bandersnatch</name>
<secret>bandersnatch</secret>
</user>
</users>
<!-- s2s configuration -->
<s2s>
<!-- Our ID on the network (default: s2s) -->
<id>s2s</id>
<pidfile>/usr/local/var/jabberd/pid/s2s.pid</pidfile>
<router>
<ip>127.0.0.1</ip>
<port>5347</port>
<user>jabberd</user>
<pass>secret</pass>
<pemfile>/usr/local/etc/jabberd/server.pem</pemfile>
<retry>
<init>3</init>
<lost>3</lost>
<sleep>2</sleep>
</retry>
</router>
<log type='file'>
<ident>jabberd/s2s</ident>
<facility>local3</facility>
<file>/usr/local/var/jabberd/log/s2s.log</file>
</log>
<!-- Local network configuration -->
<local>
<ip>0.0.0.0</ip>
<port>5269</port>
<resolver>resolver</resolver>
</local>
<!-- Timed checks -->
<check>
<interval>0</interval>
<queue>0</queue>
<invalid>0</invalid>
<keepalive>0</keepalive>
</check>
</s2s>
<config>
<server>
<connectiontype>tcpip</connectiontype>
<hostname>tortuga.fing.edu.uy</hostname>
<port>5347</port>
<secret>bandersnatch</secret>
</server>
<component>
<name>bandersnatch</name>
</component>
<mysql>
<server>localhost</server>
<dbname>bandersnatch</dbname>
<username>bandersnatch</username>
<password>bandersnatch</password>
</mysql>
<debug>
<level>0</level>
<file>stdout</file>
</debug>
<site>
<local_server>tortuga.fing.edu.uy</local_server>
<admin_jids>admin@tortuga.fing.edu.uy</admin_jids>
<confidential_jids>theboss@tortuga.fing.edu.uy</confidential_jids>
<ignore_jids>chatbot@tortuga.fing.edu.uy</ignore_jids>
<ignore_jids>bandersnatch@tortuga.fing.edu.uy</ignore_jids>
<ignore_jids>headlines.jabber.lab-inco.fing.edu.uy</ignore_jids>
<local_domains>conference.tortuga.fing.edu.uy</local_domains>
<local_domains>bandersnatch.tortuga.fing.edu.uy</local_domains>
<privacy>1</privacy>
<aggressive_presence>0</aggressive_presence>
</site>
</config>
<jcr>
<!--
This is a config file for a copy of MU-Conference, compiled
against the Jabber Component Runtime (JCR). This is the same
file that I use to connect to my development server, running
jabberd2 beta2
In order to connect to a jabberd v1.4 server, simply change
the <name> value to muclinker, and make sure the muclinker
section is in your main jabber.xml file, as per the MU-
Conference README file.
-->
<name>mu-conference</name>
<host>conference.tortuga.fing.edu.uy</host>
<ip>192.168.32.50</ip>
<port>5347</port>
<user>muc</user>
<secret>secret</secret>
<spool>
/usr/local/var/jabberd/spool/conference.tortuga.fing.edu.uy
</spool>
<logdir>/usr/local/var/jabberd/log</logdir>
<pidfile>/usr/local/var/jabberd/pid/mu-conference.pid</pidfile>
<!--
<logstderr/>
-->
<loglevel>124</loglevel>
<conference xmlns="jabber:config:conference">
<public/>
<vCard>
<FN>Public Chatrooms</FN>
<DESC>This service is for public chatrooms.</DESC>
<URL>http://foo.bar/</URL>
</vCard>
<history>40</history>
<logdir>/usr/local/var/jabberd/log</logdir>
<notice>
<join>has become available</join>
<leave>has left</leave>
<rename>is now known as</rename>
</notice>
<sadmin>
<user>admin@tortuga.fing.edu.uy</user>
</sadmin>
</conference>
</jcr>
Contenido del archivo 2402f2f44290e8505ddac91e3a0aad89e6ed079a.xml.
<xdb>
<list xdbns="muc:list:owner">
<item jid="mario@tortuga.fing.edu.uy" />
</list>
<list xdbns="muc:list:admin">
<item jid="mario@tortuga.fing.edu.uy" />
</list>
<list xdbns="muc:list:member">
<item jid="mario@tortuga.fing.edu.uy" />
<item jid="mvd1304@tortuga.fing.edu.uy" />
</list>
<list xdbns="muc:list:outcast">
</list>
<room xdbns="muc:room:config">
<name>Chat1</name>
<creator>mario@tortuga.fing.edu.uy</creator>
<defaulttype>0</defaulttype>
<description>Sala 1 de prueba - creado por mario</description>
<invitation>1</invitation>
<invites>0</invites>
<legacy>1</legacy>
<logformat>0</logformat>
<logging>0</logging>
<maxusers>20</maxusers>
<moderated>1</moderated>
<notice>
<join>join</join>
<leave>leave</leave>
<rename>rename</rename>
</notice>
<persistent>1</persistent>
<private>0</private>
<privmsg>0</privmsg>
<public>0</public>
<secret>pwdchat1</secret>
<subject>proyecto GNU/Linux</subject>
<subjectlock>0</subjectlock>
<visible>0</visible>
</room>
</xdb>
Contenido del archivo rooms.xml
<xdb>
<registered xdbns="muc:room:list">
<item name = "chat1@tortuga.fing.edu.uy"
jid = "2402f2f44290e8505ddac91e3a0aad89e6ed079a@tortuga.fing.edu.uy" />
</registered>
</xdb>
Estos dos archivos pueden usarse como plantilla para la generación manual de otras salas con nombres más comprensibles. Por cada sala creada deberá agregarse a room.xml otra sección <registered> del tipo
<registered xdbns="muc:room:list">
<item name = "nombreSala@jabber.fing.edu.uy"
jid = "nombreSala@jabber.fing.edu.uy" />
</registered>
<?php
// Enter your MySQL database settings.
define("DB_HOST","localhost");
define("DB_USER","webmassenger");
define("DB_PASS","xxxxxxxxxxxx");
define("DB_NAME","webmessenger");
define("JABBER_SERVER","tortuga.fing.edu.uy");
define("JABBER_PORT","5222");
define("TRANSPORT_MSN","");
define("TRANSPORT_ICQ","");
define("TRANSPORT_AIM","");
define("TRANSPORT_YIM","");
define("JABBER_RUNNING","ps ax | grep jabberd");
define("MSN_RUNNING","ps ax | grep msntrans");
define("ICQ_RUNNING","ps ax | grep icqv7ext");
define("YIM_RUNNING","");
define("AIM_RUNNING","");
define("JABBER_RESOURCE","WebMsgr");
$font_family = "Tahoma,Verdana,Arial,Helvetica,sans-serif";
$font_size = 8;
$theme = "default";
define("DEFAULT_LANGUAGE","english");
define("ALLOW_EXISTING_ACCOUNTS",true);
define("DEBUG_MODE",0);
?>
Para prueba de estabilidad
<dpsm>
<events_after>1</events_after>
<user_names_generator>
<range>
<from>10</from>
<to>60</to>
</range>
<name>test%(num:u)</name>
<server>tortuga.fing.edu.uy</server>
</user_names_generator>
<user_properities>
<filter><name>test.*</name></filter>
<properities>
<fullname>test%(num*2:u)-%(3+num%12000/(1+3)+7:u)</fullname>
<password>password</password>
<resource>stressingser</resource>
<Xhost>tortuga.fing.edu.uy</Xhost>
<!-- <sniff>/usr/local/var/jabberd/log/</sniff> -->
<event>
<name>connect</name>
<frequency>60000</frequency>
<counter>2000</counter>
<digest/>
</event>
<event>
<name>add_roster</name>
<frequency>150000</frequency>
<user><range><from>1</from><to>50</to></range></user>
<max_roster_count>20</max_roster_count>
</event>
<event>
<name>del_roster</name>
<frequency>150000</frequency>
</event>
<event>
<name>send_message</name>
<frequency>7000</frequency>
<user><range><from>10</from><to>60</to></range></user>
<prepend_with_debug_info/>
<text>Mensaje de envío de prueba para simular carga stress</text>
</event>
<event>
<name>change_status</name>
<frequency>30000</frequency>
<status>Jezdem tera dostepny</status>
<show>chat</show>
</event>
<Xevent>
<name>logout</name>
<frequency>60000</frequency>
</Xevent>
<Xevent>
<name>kill_connection</name>
<frequency>120000</frequency>
</Xevent>
<Xevent>
<name>send_raw_bytes</name>
<frequency>300000</frequency>
<random_stream len="1000"/>
</Xevent>
</properities>
</user_properities>
</dpsm>
Configuración para prueba de overhead de Log conversacional
<dpsm>
<events_after>1</events_after>
<user_names_generator>
<range>
<from>10</from>
<to>60</to>
</range>
<name>test%(num:u)</name>
<server>tortuga.fing.edu.uy</server>
</user_names_generator>
<user_properities>
<filter><name>test.*</name></filter>
<properities>
<fullname>test%(num*2:u)-%(3+num%12000/(1+3)+7:u)</fullname>
<password>password</password>
<resource>stressingser</resource>
<Xhost>tortuga.fing.edu.uy</Xhost>
<!-- <sniff>/usr/local/var/jabberd/log/</sniff> -->
<event>
<name>connect</name>
<frequency>60000</frequency>
<counter>2000</counter>
<digest/>
</event>
<event>
<name>add_roster</name>
<frequency>150000</frequency>
<user><range><from>1</from><to>50</to></range></user>
<max_roster_count>20</max_roster_count>
</event>
<event>
<name>del_roster</name>
<frequency>150000</frequency>
</event>
<event>
<name>send_message</name>
<frequency>15000</frequency>
<user><range><from>10</from><to>60</to></range></user>
<prepend_with_debug_info/>
<text>Mensaje de envío de prueba para simular carga stre</text>
</event>
<event>
<name>change_status</name>
<frequency>30000</frequency>
<status>Jezdem tera dostepny</status>
<show>chat</show>
</event>
<Xevent>
<name>logout</name>
<frequency>60000</frequency>
</Xevent>
<Xevent>
<name>kill_connection</name>
<frequency>120000</frequency>
</Xevent>
<Xevent>
<name>send_raw_bytes</name>
<frequency>300000</frequency>
<random_stream len="1000"/>
</Xevent>
</properities>
</user_properities>
</dpsm>
Estudio del Open/Free (GNU/Linux) como plataforma de servicios de red en entornos empresariales
Daniel Caraballo - Mario Madera - Marcelo Odin
Tutor: Ariel Sabiguero Yawelak
2004 - 2005.