Internet non è al passo con i tempi, ma con il futuro

— Anonimo

ArchLinux Small Business Server (34) - Instant Messaging (3)

http://www.stenoweb.it/files/blog/archlogo.png Tralasciamo (per il momento, urge controllarne le cause) il patatrac descritto nel post precedente e torniamo al nostro Server Jabber con la parte cruciale, cioè la configurazione del servizio in sè con i suoi variopinti file in formato XML. Forza e coraggio, questa parte può risultare noiosa data la sua natura. Siete avvisati ;)

Jabberd

Oooo, arriviamo dunque al nostro Jabberd. Come preannunciato i suoi file di configurazione sono in formato XML, quindi bisogna fare attenzione a non pasticciare (ad esempio non usare caratteri accentati). Ne esiste uno per ogni componente. Per approfondire il significato di tutto ciò potete leggere come funziona l'architettura di Jabber nella documentazione relativa. Ripeto. Molto interessante.

Session Manager - sm.xml

Il file sm.xml configura il componente Session manager. Come abbiamo (sicuramente) letto nella guida linkata, il session manager è uno "strato" software tra il router (vedi dopo) e i componenti esterni (s2s, c2s, muc ...). Con sm.xml configuriamo i seguenti aspetti:

  • Jabberd Identification
  • Comunicazione con il Router
  • Logging
  • Connessione e configurazione con il database
  • Access Control per funzioni amministrative
  • Moduli che sono chiamati durante le sessioni di comunicazione
  • Static Discovery Settings for Legacy Components
  • Opzioni utenti

Il file è autocommentato, segnalo i punti in cui ho cambiato qualcosa:

Nome del server
Il nome deve essere vero, dunque deve essere risolto dal DNS.


<!-- Our ID on the network. Users will have this as the domain part of
their JID. If you want your server to be accessible from other
Jabber servers, this ID must be resolvable by DNS.s
(default: localhost) -->
im.mede.it

Utente e password router
Dobbiamo specificare una coppia utente/password per collegarci al componente router di Jabberd2. Almeno cambiate la password standard "secret" :


<!-- Username/password to authenticate as -->
jabberd <!-- default: jabberd -->
mypassword <!-- default: secret -->

Certificato SSL
Nella puntata precedente abbiamo creato un certificato, diciamogli dove stà:


<!-- File containing a SSL certificate and private key to use when
setting up an encrypted channel with the router. If this is
commented out, or the file can't be read, no attempt will be
made to establish an encrypted channel with the router. -->

/etc/jabberd/server.pem

Database
Vogliamo usare MySQL come storage, dobbiamo dirglielo (di default è Berkeley DB) specificandolo come driver. Inoltre inseriamo utente e password usati da jabberd per accedere allo stesso :


<!-- Storage database configuration -->

<!-- By default, we use the MySQL driver for all storage -->
mysql

<!-- Database username and password -->
jabberd
miadbpassword

Utente amministratore
Non è obbligatorio, comunque definiamo l'utente che sarà amministratore. Jabberd dispone di una complessa configurazione per le ACL (Access Control List), se vi servono fate riferimento alla documentazione ufficiale.


<!-- The JIDs listed here will get access to all restricted
functions, regardless of restrictions further down -->
<acl type='all'>
admin@im.mede.it

Identità server
Qui vi potete sbizzarrire mettendo il nome del vostro server che verrà dato agli utenti (occhio: non usare caratteri accentati !):


<!-- Service identity. these specify the category, type and name of
this service that will be included in discovery information
responses. -->

server <!-- default: server -->
im <!-- default: im -->
Mede IM server <!-- default: Jabber IM server -->

Creazione automatica utenti
Nel nostro caso PAM effettua l'autenticazione degli utenti, ma lo stesso deve essere anche creato sul DB di jabberd. Per questo allora dobbiamo fare in modo che gli utenti vengano creati automaticamente al primo accesso. Se non volete usare PAM lasciate questa funzione disabilitata, un utente prima di accedere dovrà fare la registrazione.

 
<!-- User options -->

<!-- By default, users must explicitly created before they can start
a session. The creation process is usually triggered by a c2s
component in response to a client registering a new user.

Enableing this option will make it so that a user create will be
triggered the first time a non-existant user attempts to start
a session. This is useful if you already have users in an
external authentication database (eg LDAP) and you don't want
them to have to register. -->

<auto-create/>

Client to Server component - c2s.xml

Come il nome lascia presagire, questo componente regola la comunicazione tra il server e i clients Jabber. La sua configurazione viene messa a punto con il file c2s.xml.

Utente e password router
Anche questo componente deve interfacciarsi con il router di jabberd2, occhio a specificare sempre lo stesso utente/password di prima:


<!-- Username/password to authenticate as -->
jabberd <!-- default: jabberd -->
mypassword <!-- default: secret -->

Certificato SSL
Come sopra. Occhio che bisogna specificarlo in due posti, per il router e per i clients:


<!-- File containing a SSL certificate and private key to use when
setting up an encrypted channel with the router. If this is
commented out, or the file can't be read, no attempt will be
made to establish an encrypted channel with the router. -->

/etc/jabberd/server.pem



<!-- Local network configuration -->
/etc/jabberd/server.pem

Autenticazione utenti
Definiamo ora lo schema di autenticazione per gli utenti: nel mio caso userò PAM, le alternative possono essere db (Berkeley), mysql o postgre :

<!-- Authentication/registration database configuration -->

<!-- Backend module to use -->
pam

Registrazione utenti
Normalmente dovremmo lasciare la possibilità agli utenti di registrarsi, ma nel nostro caso commentiamo la riga "" per disabilitare questa funzione: i nostri utenti esistono già, e sono tutti allegramente stipati nel nostro albero openLDAP.


<!-- Account registration is enabled by default (provided the
auth/reg module in use supports it). Comment this out to
disable. -->
<!-- -->

Router component - router.xml

Il Router è il componente cruciale: è il "backbone" del server Jabberd. Attraverso di esso i vari componenti comunicano tra di loro assolvendo le loro funzionalità. La configurazione è semplice, e viene fatto con due files :

router-users.xml
Definiamo le coppie utente/password (nel nostro caso uno solo) con cui gli altri componenti si collegano al router. Mettiamoci quanto specificato prima:


<!-- This is the list of known router users, and their authentication
secrets. Access control is done via the settings in router.xml -->


jabberd
mypassword


router.xml
Ancora la password !!!


<!-- Shared secret used to identify legacy components (that is,
"jabber:component:accept" components that authenticate using
the "handshake" method). If this is commented out, support for
legacy components will be disabled. -->
mypassword

e il certificato SSL :


<!-- File containing a SSL certificate and private key for client
connections. If this is commented out, connecting components
will not be able to request a SSL-encrypted channel. -->

/etc/jabberd/server.pem

Server to Server component - s2s.xml

Vista la natura "privata" del nostro server questo componente non ci serve. Si occupa delle comunicazioni tra server e server che ci permette di entrare nell'universo Jabber.
Attenzione, "privato" non significa che non possiamo connetterci da internet al nostro server, ma significa solo che con un account qui configurato non possiamo comunicare direttamente con un generico user jabber registrato magari su jabber.linux.com e viceversa. Collegandosi al nostro server potremmo solo chattare con altri utenti dello stesso server.
Comuque se date un occhio al file s2s.xml vedrete che la logica è molto simile.

Resolver - resolver.xml

Questo componente è legato al precedente s2s.xml, quindi passo anche su questo argomento.

Multi User Conference - muc.xml

Questo non è un componente "standard" di jabberd2 ma è interessante perchè ne estende le funzionalità permettendo di comunicare/chattare in più utenti insieme con un meccanismo che ricorda i channels di IRC (qui chiamate rooms).

Creazione cartelle
Per prima cosa creiamo le cartelle dove verranno salvate le rooms create e i suoi logs :

sudo mkdir /var/lib/jabberd/rooms
sudo mkdir /var/lib/jabberd/rooms/logs/

muc.xml
La configurazione viene fatta con il file muc.xml molto simile ai predenti che abbiamo visto:

Cominciamo dal nome del server (deve essere risolvibile dal DNS):


rooms.mede.it <!-- the jid of your component -->
rooms.mede.it <!-- this should be the same as above -->

La solita password condita con il solito certificato :

mypassword <!-- secret shared with the jabber server -->
/etc/jabberd/server.pem

E vari altri parametri quali le directory di spool create prima, il PID, i logs e l'utente amministratore:
 
/var/lib/jabberd/rooms <!-- directory containing the rooms data -->
/var/log <!-- directory containing the debug log
(the file is called mu-conference.log) -->

/var/run/jabberd/mu-conference.pid <!-- file that will
contain the PID of the process -->

/var/lib/jabberd/rooms/logs/


admin@im.mede.it

e dulcis in fundo i parametri per il collegamento al database:



jabberd
mydbpassword
jabberd2
localhost


Fine dei giochi.

jabberd.cfg

Ed eccoci al gran finale, definiamo i servizi/componenti da avviare modificando il file jabberd.cfg:

sudo nano /etc/jabberd/jabberd.cfg

Per farlo assomigliare (per non dire essere identico) a questo:

router /etc/jabberd/router.xml
sm /etc/jabberd/sm.xml
c2s /etc/jabberd/c2s.xml
mu-conference /etc/jabberd/muc.xml

Avvio !

Chiudere gli occhi e .... :

sudo /etc/rc.d/jabberd start

Funziona ? Se la risposta è negativa (occhio ai logs di sistema) ricontrollate tutto! :)

Il nostro server è pronto, nell'ultima parte configureremo psi per i client della nostra rete.

A presto (forse).

amsterdam united airlines tickets flights iquique go amsterdam united airlines tickets flights iquique or aeromexico cheap airline tickets discounted travel go aeromexico cheap airline tickets discounted travelor china cheap airline tickets discounted travel go china cheap airline tickets discounted travel or infocenter cheap airline tickets discounted travel go infocenter cheap airline tickets discounted travel go ravel">infocenter cheap airline tickets discounted travel

Heyy սnn miio collegɑ mmi ha twittato la url di questo blog e ѕono venuta a vedere com'è.
Μi piacе paгесchio. Messo tгra i prefeгiti. Sрlendido blog e template sрettacοlare!!