Написание компонента для jabberd 1.4.x

Изображение пользователя ermine@jabber.ru.

Простая инструкция для написания компонента jabberd

Компонент может работать независимо от сервера джаббера. Есть два типа соединения компонента с сервером джаббера:

1. Компонент сам подключается к серверу.

2. Сервер сам подключается к компоненту.

Для обоих случаев применяется разное пространство имен XML streams:

* service-to-host - jabber:component:accept

* host-to-service - jabber:component:connect

Обычно используют схему, когда компонент сам подключается к сервису.

Итак, чтобы компонент мог соединиться с сервером, он должен открыть сеанс связи:


<?xml version='1.0' encoding='UTF-8'?>

<stream:stream to='server' from='component'

xmlns='jabber:component:accept' xmlns:stream='http://etherx.jabber.org/streams'>


Компонент получит в ответ от сервера:


<?xml version='1.0'?>

<stream:stream xmlns:stream='http://etherx.jabber.org/streams' id='3EBFDB80'

xmlns='jabber:component:accept' from='component'>


Мы должны использовать значение аттрибута id для составления пароля.

Пароль состоит из контакентации содержимого id и текста пароля, зашифрованной по алгоритму SHA-1.

Причем длина получившегося ключа должна равняться 40 символам.

Отсылаем получившийся пароль серверу:


<handshake>ecba7e57236222f4aa2a27bf718c52344b15dcef</handshake>



Если пароль прощел, то сервер ответит:


<handshake/>


Если пароль не подошел, то сервер пришлет <stream:error/>.

Далее компонент может применять все элементы протокола XMPP. Главное, надо помнить, что все пакеты, которые компонент отсылает серверу, обязательно должны содержать атрибут "from".


Опубликовано ermine@jabber.ru в вт, 2003-05-13 11:14. categories [ ]