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-сеть. Руководство к действию.

7 января 2011 г.

Jabber-сервер ejabberd под Ubuntu

Компьютер под управлением Ubuntu 10.10. Пробуем установить Jabber-сервер.

Ставить будем сервер ejabberd.

Устанавливаем пакет ejabberd из репозитария:
apt-get install ejabberd

Редактируем конфиг сервера - /etc/ejabberd/ejabberd.cfg.

Указанный пользователь будет записан в администраторы сервера:
{acl, admin, {user, "andrew" }}.

Хост, на котором будет работать сервер:
{host, "test.ru"}.

Ejabberd с версии 0.9 поддерживает виртуальный хостинг, так что хостов может быть много. Если нужно поддерживать несколько хостов, используйте опцию hosts.

Язык, на котором будут выдаваться сообщения сервера:
{language, "ru"}.

Проверяем, чтобы нужные порты были открыты:

  [{5222, ejabberd_c2s,     [{access, c2s},
  % это соединение клиент-сервер, достаточно для организации нешифрованных соединений.
  
  {5269, ejabberd_s2s_in,
  % соединение сервер-сервер, для общения с клиентами других серверов.
  
  {5280, ejabberd_http,
  % веб-интерфейс

Чтобы разрешить пользователям самостоятельно регистрироваться в системе, находим строчку
{access, register, [{deny, all}]}.
и меняем deny на allow
{access, register, [{allow, all}]}.

Пробуем перезапустить (или запустить) сервер.
/etc/init.d/ejabberd restart

Смотрим лог /var/log/ejabberd/ejabberd.log (возможно, /var/log/ejabberd/sasl.log).

Если всё нормально, регистрируем пользователей.

  ejabberctl
    Usage: ejabberdctl node command
    command:
      ...
      register user server password -- register a user
      ...

Регистрируем пользователя, которого указали как админа (andrew).
ejabberdctl register andrew test.ru password

Заходим браузером по адресу http://localhost:5280/admin, вводим полный JID администратора (andrew@test.ru) и пароль и администрируем.

Для Windows есть простой jabber-клиент jajc, под Ubuntu можно использовать Empathy, для мобильников есть клиент Bombus.


Ссылки по теме:

Обсуждение на русскоязычном форуме Ubuntu
Подробная инструкция на lissyara.su: ejabberd + mysql + icq transport
Установка ejabberd на Gentoo Linux
Записки старого сисадмина: если не получается зарегистрировать администратора
Установка и настройка сервера jabberd