Pull to refresh

Транспорты из IRC в Jabber

Reading time4 min
Views863
Почти все из нас слышали про транспорты из Jabber в IRC. Многие ими даже пользуются каждый день. Но во времена отключений ICQ я встречал информацию и про транспорты из IRC в Jabber. Сегодня просматривал закладки и наткнулся на их домашние странички. Вот и решил немного написать о них, тем более, что поиск по их названиям на любимом Хабре ничего вменяемого не выдал.

Если вы задались вопросом «а зачем?» — прочитать про это вы сможете в самом конце статьи.

Мне известны 2 подобных транспорта — ejabberd_ircd и telepaatti. К сожалению про второй мне сейчас удалось найти только описание. Ещё есть бот, который умеет транслировать сообщения из muc на IRC канал и наоборот — jirc.


Для моих целей был интересен в первую очередь ejabberd_ircd. Его домашняя страница располагается здесь.
Он позволяет подключаться к MUC конференциям из IRC клиента. Больше ничего он не позволяет, но от него и не требовалось. К сожалению, на официальный его демо-сервер мне сейчас попасть так и не удалось, зато нашлась инструкция по установке.

Вы уже установили subversion в своём дистрибутиве и знаете что это такое. Так же у вас есть работающий ejabberd и вы сделали backup базы пользователей и ejabberd.cfg для него. Можно приступать:
Создаём произвольную директорию, переходим в неё. Проводить работу с SVN можно и от обычного пользователя:
svn co svn.process-one.net/ejabberd-modules
cd ejabberd-modules/ircd/trunk
./build.sh
После этого в подкаталоге ebin появится файлик с расширением beam. Его необходимо скопировать в директорию, где хранятся модули вашего ejabberd (у меня в Debian в то время это было /usr/libs/ejabberd).
Приступаем к правке ejabberd.cfg. Туда нужно добавить примерно следущее (пример из README):
{listen, [
...
{6667, ejabberd_ircd, [{access, c2s},
{host, "example.org"},
{muc_host, "conference.example.org"},
{encoding, "utf-8"},
{mappings,
[{"#esperanto", "esperanto@conference.jabber.org"}]} ]},
...
]}.

Но такой способ потребует для подключающегося по IRC наличия аккаунта на вашем хосте в Jabber. Поэтому в readme приведен ещё один пример:
{hosts, ["example.org", "anonymous.example.org"]}.
{host_config, "anonymous.example.org",
[{auth_method, anonymous},
{anonymous_protocol, both}]}.
{listen, [
...
{6667, ejabberd_ircd, [{access, c2s},
{host, "anonymous.example.org"},
{muc_host, "conference.example.org"},
{encoding, "utf-8"} ]},
...
]}.

Данная конструкция позволит заходить на «IRC сервер» anonymous.example.org:6667 из любого IRC клиента и присоединяться к конференциям на jabber сервере example.org.
После этого потребуется полный перезапуск ejabberd (например /etc/init.d/ejabberd restart)
К сожалению на текущей версии ejabberd в Debian добиться работоспособности этого плагина не удалось, поэтому демо хоста я сейчас предоставить не могу. Если у кого то получится — с удовольствием добавлю информацию про подобный хост в статью.

Теперь о Telepaatti.
Он приближает функционал вашего IRC клиента к Jabber клиенту. Транспорт работает только с utf-8 и требует того же от клиента. По умолчанию он позволяет присоединяться к конференциям на том же сервере (используя команду /join example_muc@host). Так же он позволяет общаться с пользователями из вашего ростера (используя команды /msg или /query user@host). На «воображаемом» канале #roster вы сможете узнать про активность пользователей вашего ростера (оффлайн\онлайн\ушёл в случае с Xchat).
Telepaati не позволяет регистрировать jabber аккаунт, добавлять контакты в ростер и менять режимы в muc. Авторизуетесь вы на сервере telepaati используя связку ника и пароля сервера (вместо которого нужно написать пароль вашего логина),
Информацию про него сегодня я смог найти только здесь. Но мне и самому хочется поиграться с telepaati, поэтому пишу про него, в первую очередь, чтобы найти единомышленников.

На странице Telepaati я нашёл информацию про бота, который пересылает сообщения из muc на IRC канал и наоборот — jirc. В работающем виде сегодня он доступен на #inkscape сети freenode. Информация про него и ссылка на архив здесь.

А теперь небольшая история о том, зачем же вообще оно понадобилось.

Жил был сайт. Сайт небольшой компании. На сайте был прикручен Web скрипт для организации чата. В этом чате сидели сотрудники компании и отвечали на вопросы страждущих посетителей сайта. Но тут злой директор сказал «я уезжаю в отпуск, хочу из отпуска сидеть в чате с телефона, читать что происходит». Телефон у него был не из гиковских, да и Opera PDA проблемы не решала — траффик.
Первым «толчком» к решению послужил сайт mibbit.com. Сначала было решено основать всё это на IRC — и сотрудникам удобнее и виджет миббитовский работал намного быстрее нашего скрипта. Но тут мы уже столкнулись с проблемой — директор ни в коем случае не хотел ставить что то дополнительное на свой коммуникатор. Покопавшись в технике мы с удивлением обнаружили там Jabber клиент — настроенный и, по словам владельца, используемый каждый день. Создали MUC, начали искать скрипты для того, чтобы с сайта попасть туда. Скриптов не нашли, а нашли указанные выше транспорты. Поздравили себя, настроили на Debian 4.0 всё необходимое, настроили конференции директору, заменили IRC и ICQ клиенты на один единственный Jabber клиент (за что потом нам сказал спасибо сисадмин), а на сайте оставили mibbit-виджет, который соединялся с нашей конференцией через ejabberd_ircd.
Tags:
Hubs:
Total votes 3: ↑2 and ↓1+1
Comments14

Articles