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

29 декабря 2010 г.

В начале было слово...

01  В начале было слово, и слово было 2 байта, а больше ничего не было.

02  И отделил Бог единицу от нуля, и увидел, что это хорошо.

03  И сказал Бог: да будут данные, и стало так.

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

05  И сказал Бог: да будут компьютеры, чтобы было куда пихать дискеты, и винчестеры, и компакт-диски, и сотворил компьютеры, и нарек их хардом, и отделил хард от софта.

06  Софта же еще не было, но Бог быстро исправился, и создал программы большие и маленькие, и сказал им: плодитесь и размножайте, и заполняйте всю память.

07  Hо надоело Ему создавать программы самому, и сказал Бог: создадим программиста по образу и подобию нашему, и да владычествует над компьютерами, и над программами, и над данными. И создал Бог программиста, и поселил его в своем ВЦ, чтобы работал в нем. И повел Он программиста к дереву каталогов, и заповедал: из всякого каталога можешь запускать программы, только из каталога Windows не запускай, ибо маст дай.

08  И сказал Бог: не хорошо программисту быть одному, сотворим ему пользователя, соответственно ему. И взял Он у программиста кость, в коей не было мозга, и создал пользователя, и привел его к программисту; и нарек программист его юзером. И сидели они оба под голым ДОСом, и не стыдились.

09  Билл был хитрее всех зверей полевых. И сказал Билл юзеру: подлинно ли сказал Бог: не запускайте никакого софта? И сказал юзер: всякий софт мы можем запускать, и лишь из каталога Windows не можем, ибо маст дай. И сказал Билл юзеру: давайте спорить о вкусе устриц с теми, кто их ел! В день, когда запустите Windows, будете как боги, ибо одним кликом мышки сотворите что угодно. И увидел юзер, что винды приятны для глаз и вожделенны, потому что делают ненужным знание, и поставил их на свой компьютер; а затем сказал программисту, что это круто, и он тоже поставил.

0A  И отправился программист искать свежие драйвера, и воззвал Бог к программисту и сказал ему: где ты? Программист сказал: ищу свежие драйвера, ибо нет их под голым ДОСом. И сказал Бог: кто тебе сказал про драйвера? уж не запускал ли ты винды? Программист сказал: юзер, которого Ты мне дал, сказал, что отныне хочет программы только под винды, и я их поставил. И сказал Бог юзеру: что это ты сделал? Юзер сказал: Билл обольстил меня.

0B  И сказал Бог Биллу: за то, что ты сделал, проклят ты пред всеми скотами и всеми зверями полевыми, и вражду положу между тобою и программистом: он будет ругать тебя нехорошими словами, а ты будешь продавать ему винды.

0C  Юзеру сказал: умножу скорбь твою и истощу кошелек твой, и будешь пользоваться кривыми программами, и не сможешь прожить без программиста, и он будет господствовать над тобой.

0D  Программисту же сказал: за то, что послушал юзера, прокляты компьютеры для тебя; глюки и вирусы произведут они тебе; со скорбью будешь вычищать их во дни работы твоей; в поте лица своего будешь отлаживать код свой.

0E  И выслал Бог их из своего ВЦ, и поставил пароль на вход.

0F  General protection fault