Поднял транспорт icq для ejabberd


Т.к. миранда периодически сыпется, а через аську необходимо общаться в том числе по работе, то таки задался вопросом хождения в аську через жаббер.
Т.к. через чужие серверы ходить не совсем секюрно, решил поднять свой транспорт (нужно таки набирать пункты опыта).

Имеем FreeBSD 6.1-RELEASE и ejabberd 2 надеюсь. :-)

Нашел, что PyICQ-t сейчас рулит. Значит его и ставим.

Нашел 2-е статьи http://www.open-club.net/publ/21-1-0-169 и http://sviver88.blogspot.com/2009/07/icq-pyicq-ejabberd-freebsd.html

И вперед - копипаст рулит. :-)

Устанавливаем PyICQ-t
Переходим в каталог и
# cd /usr/ports/net-im/jabber-pyicq
# make config
Отмечаем EJABBERD и устанавливаем. Я ставил без поддержки MySQL
# make install clean
При установке снимем галочку с TKINTER - думаю нах не нужен.
Создадим для транспорта директории:
# mkdir /var/spool/jabber/
# mkdir -p /var/jabberd/pid/
И выставим на них права
#chown ejabberd /var/spool/jabber/
#chown ejabberd /var/jabberd/pid/

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

В /etc/rc.conf добавляем строчку:
jabber_pyicq_enable="YES"

Настройка DNS для ICQ-транспорта
Настраиваем DNS Создаем следующие записи в зоне, указывающие на наш сервер (jabber.example.com)

icq A IP_вашего_сервера.
ну или соответственно можно сделать
icq CNAME имя_вашего_сервера

Конфигурирование ejabberd
заготовка в конфиге уже была.

{8888, ejabberd_service, [
{access, local},
{shaper_rule, fast},
{ip, {127, 0, 0, 1}},
{hosts, ["icq.jabber.example.com" , "sms.jabber.example.com"],
[{password, "secret"}]
}
]},

Чтобы ходить могли только свои делаем {access, local},
Транспорт у меня на том же сервере что и ejabberd {ip, {127, 0, 0, 1}},
Зачем "sms.jabber.example.com" я не понял, но решил оставить. Вроде и без этого работает. Скорее всего, тут можно указывать дополнительные сервера.

Перезапускаем сервер
# ejabberdctl restart

Редактируем конфигурационный файл PyICQt: /usr/local/etc/jabber-pyicq.xml

Указываем JID где будет висеть транспорт:

<!-- The JabberID of the transport. -->
<jid>icq.jabber.example.com</jid>
Правим...
 <!-- The JID of the main Jabber server -->
 /<mainServerJID>jabber.example.com</mainServerJID>
 <!-- The website of the Jabber service -->
 /<website>http://jabber.example.com/</website>

Пароль, который указывали ранее...
<secret>secret</secret>
Язык
<!-- The default language to use (for error/status
messages) -->
<lang>ru</lang>

Поменяем
<encoding>iso-8859-1</encoding>
на
<encoding>windows-1251</encoding>

Админ JID
<admins>
<jid>admin@jabber.example.com</jid>
 </admins>

Ну и всё, пожалуй, — остальные настройки являются опциональными.

# /usr/local/etc/rc.d/jabber-pyicq-transport start

После чего, в обзоре сервисов нашего жаббер сервера появились icq и sms.
При регистрации на первом, спрашивают UIN и пароль.

P.S. Один из жестких моментов.
При подключении будет загружен весь контакт-лист и соответственно по каждому контакту будет запрошена авторизация. Если большой контакт-лист, рекомендуется в клиенте включить галочку автоматически принимать авторизацию. У меня, на листе в 300 контактов несколько минут только создавались окошечки.