15 января 2011 г.

PyICQt - транспорт ICQ в ejabberd

Я уже рассказывал, как установить jabber-сервер ejabberd. Теперь попробуем прикрутить к нему ICQ-транспорт, чтобы общаться с пользователями аськи из своего джаббер-клиента.

Прикручивать будем icq-транспорт PyICQt.

Установка транспорта

Для начала скачаем и распакуем PyICQt:

  cd /opt
  wget http://pyicqt.googlecode.com/files/pyicqt-0.8.1.1.tar.gz  
  tar -xzvf  pyicqt-0.8.1.1.tar.gz
  ln -s pyicqt-0.8.1.1 pyicqt

Зависимости: (см. файл /opt/pyicqt/INSTALL)
— Python (>= 2.2.0)
— Twisted (www.twistedmatrix.com)
— optional: epoll (>= 0.4)

Установка зависимостей

В системе должны быть установлены Python (>= 2.2.0) и написанный на нем фреймворк Twisted.

Установка:
Для Fedora:  sudo yum install python-twisted
Для Ubuntu:  sudo apt-get install python-twisted

Настройка взаимодействия PyICQt и ejabberd

В секцию «listen» файла ejabberd.cfg (допустим, в ее начало) добавляем cтрочку:
{5347, ejabberd_service, [{host, "icq.test.ru", [{password, "secret"}]}]},

Создаем файл /opt/pyicqt/config.xml с таким содержимым:

<pyicqt>
<jid>icq.test.ru</jid>
<spooldir>./spool</spooldir>
<pid>./pyicqt.pid</pid>
<mainServer>test.ru</mainServer>
<mainServerJID>test.ru</mainServerJID>
<port>5347</port>
<secret>secret</secret>
<encoding>cp1251</encoding>
<icqServer>login.icq.com</icqServer>
<icqPort>443</icqPort>
<admins>
<jid>admin@test.ru</jid>
</admins>
<disableAvatars/>
<reactor>epoll</reactor>
<usemd5auth/>
</pyicqt>

Перезапускаем ejabberd и стартуем транспорт:
ejabberdctl restart
python /opt/pyicqt/PyICQt.py > /opt/pyicqt/log 2>&1 &

На всякий случай можно посмотреть, стартовал ли процесс и все ли чисто в логе:
cat /opt/pyicqt/log
ps ax |grep py

Это все!
Теперь можно в вашем любимом клиенте сделать «Service Discovery», опросить сервер test.ru, найти icq.test.ru и зарегистрироваться с указанием UIN и пароля.

P.S. Мой сервер не смог соединиться с icq-сервером по доменному имени, поэтому в /opt/pyicqt/config.xml в директиве icqServer я тупо указал IP-адрес сервера login.icq.com:
<icqServer>64.12.202.116</icqServer>

Хабрахабр: Установка Ejabberd + PyICQt в Linux
OpenNET: Установка ejabberd и транспорта в icq-сеть. Руководство к действию.