ICQ-транспорт для ejabberd в CentOS 5.2


Эта статья является продолжением статьи об установке 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-контактов в итоге преобразуются к виду XXXYYYZZZ@icq.myserver.ru – это обстоятельство нужно иметь в виду, когда вы захотите, к примеру, добавить новый ICQ контакт через Jabber.

Похожие статьи

Leave a Reply

Your email address will not be published. Required fields are marked *