Эта статья является продолжением статьи об установке Jabber-сервера ejabberd. Здесь мы будем прикручивать к нашему серверу возможность взаимодействия с широко распространенной на наших родных просторах сетью ICQ. Дополнительная программа, которая обеспечивает передачу сообщений из сети Jabber в сеть ICQ и обратно, носит подходящее название – транспорт. Одним из лучших реализаций ICQ-транспорта является pyicq-t, его мы и будем устанавливать. Итак, поехали…
Установка и настройка транспорта
Устанавливаем пакет из репозитория YUM:
# yum install pyicq-t.noarch
После установки у нас появится каталог /etc/pyicq-t с единственным файлом config.xml. Его нам и нужно будет редактировать.
Для начала, нужно правильно заполнить параметр pyicqt.jid, в нашем случае так:
<jid>icq.myserver.ru</jid>
Аналогично заполняем другие параметры транспорта:
<mainServer>10.20.30.40</mainServer> <mainServerJID>myserver.ru</mainServerJID> <website>http://www.myserver.ru/</website>
Обращаю ваше внимание на правильное указание языка и кодировки. Это важно, так как в противном случае сообщения могут приходить в виде “кракозябров”:
<lang>ru</lang> <encoding>cp1251</encoding>
Транспорт изначально спроектирован в виде отдельной программы, которая взаимодействует с Jabber-сервером с помощью TCP. Поэтому также важно указать параметры соединения транспорта с сервером. Здесь нужно указать порт, на котором сервер будет принимать сообщения от ICQ-транспорта и секретный ключ. Последний нужен, чтобы в качестве транспорта не могла выступать какая-либо посторонняя программа. Итак, заполняем следующие параметры, их значения можно выбрать по вашему усмотрению:
<port>5347</port> <secret>SECRETWORD</secret>
Некоторые параметры, например вот эти, рекомендуется оставить по умолчанию:
<icqServer>login.icq.com</icqServer> <icqPort>5190</icqPort>
Запуск транспорта
# /etc/init.d/pyicq-t start Запускается PyICQt: Checking spool files and stringprepping any if necessary... done Upgrading your XDB structure to use hashed directories for speed... done [ OK ]
и сразу проверяем, как все запустилось:
# ps ax|grep pyicq 11479 ? S 0:00 python /usr/share/pyicq-t/PyICQt.py --background --config=/etc/pyicq-t/config.xml --log=/var/log/pyicq-t.log
Донастройка Jabber-сервера
Теперь нам нужно объяснить серверу ejabberd, что у нас появился новый транспорт. Для этого нужно добавить в секцию listen файла /etc/ejabberd/ejabberd.cfg следующие строки:
{5347, ejabberd_service, [ {access, all}, {shaper_rule, fast}, {ip, {127, 0, 0, 1}}, {hosts, ["icq.myserver.ru"], [{password, "SECRETWORD"}] } ]},
Наконец, нужно перезапустить сервер:
# /etc/init.d/ejabberd restart
Тестируем
Теперь можем попробовать, как работает наш транспорт. Берем клиента, который понимает обзор сервисов Jabber-сервера, например Psi. Входим под своим логином и паролем, щелкаем на верхней строчке контакт листа правой кнопкой и выбираем “Обзор сервисов”:
Теперь правой щелкаем на ICQ Transport и выбираем “Зарегистрироваться”:
В открывшемся окне нужно будет ввести свой ICQ UIN и пароль от аськи:
В ваш список контактов Jabber будет добавлен сервис icq.myserver.ru. Он спрашивает у вас разрешение авторизации. Разрешите ему 🙂
После нажатия на кнопку “Разрешить” ваш список контактов будет автоматически пополнен контактами из ICQ. Однако есть маленькое неудобство – при первом добавлении они будут спрашивать вашей авторизации. Авторизуйте их один раз и в дальнейшем все будет окей:
На этом все! Замечу, что номера ICQ-контактов в итоге преобразуются к виду [email protected] – это обстоятельство нужно иметь в виду, когда вы захотите, к примеру, добавить новый ICQ контакт через Jabber.