EjabberdJit
Материал из ALT Linux Wiki
[править] Настройка ejabberd + jit
Содержание |
[править] Установка сервера
Ставим (apt-get install) ejabberd. Находим конфиг /etc/ejabberd/ejabberd.cfg
указываем там (тут приведён пример):
{acl, admin, {user, "combr" }}.
этот пользователь будет записан в администраторы сервера.
{host, "vesna.ru"}.
на этом хосте будет работать jabber-сервер. Ejabberd с версии 0.9 поддерживает виртуальный хостинг, так что хостов может быть много. если нужно поддерживать несколько хостов, используйте опцию hosts.
{language, "ru"}.
язык, на котором будут выдаваться сообщения сервера.
Должны быть открыты порты
[{5222, ejabberd_c2s, [{access, c2s},
….. это соединение клиент-сервер, достаточно для организации нешифрованных соединений клиентов и отдельно стоящего сервера.
{5269, ejabberd_s2s_in,
- …. соединение сервер-сервер, для общения с клиентами других серверов.
{5280, ejabberd_http,
…. веб-администрирование этого сервера.
попробуйте запустить сервер service ejabberd start, посмотрите в лог /var/log/ejabberd/sasl.log если там последняя запись — это
[править] CRASH REPORT
ищите причину (чуть ниже может быть подсказка) Если там последнее — это
[править] PROGRESS REPORT
То вы успешно его запустили.
[править] Установка пароля администратора
Теперь надо задать пароль администратора:
Usage: ejabberdctl node command command: register user server password register a user т.е. ejabberdctl register combr vesna.ru combr
через пробел команда пользователь хост пароль
теперь можете зайти браузером по адресу host:5280/admin, ввести полный jid администратора (например, combr@vesna.ru) и пароль, и администрировать себе ;)
[править] Проблемы
далее нередактированное письмо от Вадим Илларионов <master@usib.irkps.ru>
Я или кто-нибудь вернитесь к его редактированию позже ;)
[править] = =
Сам ежабер поднялся без хлопот, хватило вдумчивого раскуривания доков. Суть проблемы (точней, три сути) состояла в следующем.
1. Не удавалось приконнектиться к веб-морде администрирования. Оно, вроде, и не очень надо (всё можно сделать из старой доброй командной строки), однако ж…
Решение ………….. Далее довольно пространно, зато на эту ремарку после только и буду, что ссылаться (если не забуду в процессе). В моей ситуации, когда машинка-маршрутизатор во внутренней сети зовётся router, а во внешней — хм… никак не зовётся, и привязать сервис надо к конкретному имени… В общем, геморроя хватило. Прежде на рутере имелся ещё и реальный айпишник, к которому было привязано реальное имя — скажем, usib.irkps.ru (тем более, что так оно и обстояло). Не так давно я для вящей безопасности да ради облегчения и без того непосильного админского труда ;) сныкался за аппаратным WAN-маршрутизатором. Благо, последний умеет прокидывать обращения извне на заданный адрес внутри и даже более того: при обращении изнутри на внешний адрес, возвращать обратившегося «куда надо» (блин, мозги вывихнешь). Так вот, почти всё дальнейшее повествование будет связано с именем usib.irkps.ru, если обратное не оговорено особо. Важно! В конфиге ejabber вместо директивы 'host' пользоваться директивой 'hosts', где в качестве параметров указать оба имени: и внутреннее, и внешнее; например:
{hosts, ["router", "usib.irkps.ru"]}
Почему именно так, оставлю до более светлых времён и умов. После первого запуска сервиса регистрируем в нём себя, любимого (кому ж ещё доверить роль админа!), причём с указанием домена. В моём случае:
ejabberdctl register owner@usib.irkps.ru usib.irkps.ru <passwd>
Теперь в конфиг сервиса добавим (раскомментарим и поправим имеющуюся) строчку:
{acl, admin, {user, "owner", "usib.irkps.ru"}}
и перезапустим его. Всё, можно заходить на http://usib.irkps.ru:5280/admin с логином owner@usib.irkps.ru и паролем <passwd>. (Гы. А вы подберите. =))
2. При регистрации через JIT вываливалась «Ошибка отправки регистрационных данных. Причина: XDB troubles»
Решение ………….. Дело в следующем. Как я уже писал, jabber-jit не умеет жить без xdb_file.so, который принадлежит jabber-1.4. Но жабер-то остановлен! И в противовес ему рулит парадом Е-жабер. Значит, надо подсунуть эту библиотечку jit’y, чтоб выкручивался сам. (Майнтейнеры, ау!) Более того, в доке к е-жаберу есть рецепт, как это сделать. Просто переточим его под Альт, и добавим в /etc/jabber/jabber-jit.xml подправленную «подкоренную» секцию из примера («корневее» только <jabber>):
<!--
Some Jabber server implementations do not provide XDB services (for example jabberd 2.0 and ejabberd).
xdb_file_so is loaded in to handle all XDB requests.
-->
<xdb id="xdb">
<host/>
<load>
<!-- Майнтейнеры, ау 2 раза!! -->
<xdb_file>/usr/lib/jabber/xdb_file/xdb_file.so</xdb_file>
</load>
<xdb_file xmlns="jabber:config:xdb_file">
<!-- ...3 раза!!! Каталог /var/lib/jabber не принадлежит jabber-jit! -->
<spool><jabberd:cmdline flag='s'>/var/lib/jabber</jabberd:cmdline></spool>
</xdb_file>
</xdb>
- Лирическое отступление.
Почему подправлена секция <xdb_file>, можно увидеть тривиальным пролистыванием файловой системы. А вот о секции <spool> — в сути №…
- Кранты лирическому отступлению.
…3. Попытка импорта экаунтов из jabber-1.4 (хоть поюзерно, хоть каталогом) обламывалась хоть и многословно, но всегда со словечком «eacces» (да-да, не опечатка).
Решение ………….. Всё просто. ejabberdctl import-something запускается от юзера ejabberd, тогда как права на /var/lib/jabber/<hostname>/* принадлежат юзеру.группе jabber.jabber с маской 700 на каталоги (начиная с /var/lib/jabber) и 600 на файлы. То есть, довольно НА МОМЕНТ ИМПОРТА отдать права ПРОЧИМ на чтение-исполнение, и — вуаля! По запросу:
ejabberdctl import-file /var/lib/jabber/<hostname>/<user>.xml
или вообще:
ejabberdctl import-dir /var/lib/jabber/<hostname>
из объектива вылетает кролик! Важно не забыть ПОТОМ вернуть допуски к файлам-каталогам в прежнее состояние, потому что… …Вот и добрались до спула. Как я уже подмечал, JIT живёт без жабера, но как юзал спул жабера под жабером, так и будет юзать спул _жабера_ под Е-жабером (майнтейнеры, фиг ли). И если локальные клиенты имели регистрацию в аське, самым безболезненным вариантом станет не новая их регистрация в пресловутом, но достойном сервисе, а прозрачный своею незаметностию для означенных юзверей переход на новый, хоть и чуть более прогрессивный… Ой, наплёл-наплёл! Простите пиво, а? Надеюсь, теперь понятно, почему важные на мой затуманенный взгляд моменты касательно жабер-спула были выделены КАПСЛОКОМ.
Если вы меня поняли, вашим юзерам не придётся перерегистрироваться в аське. Если нет — придётся не только ЭТО, но и после новой регистрации, для того, чтоб респонденты выглядели зеленовато при коннекте, не останется ничего иного, как по новой просить у каждого респондента авторизации (эту проблему я не описывал в запросе, однако ж сам в неё упёрся — после решения первых трёх).
Постскриптум …………………… Ремарка (вспомнил, ура!) на пункт 1. Если ваши юзера помимо жабер-сервиса, которого вполне хватает для внутреннего сообщения, юзают ещё и внешнюю аську (тогда почему бы не позволить им пользовать собственные жабер-экаунты наружу?), не отстраивайте icq-транспорт на имена icq.localhost и sms.localhost. Почему? Каким-то образом jabber-1.4 с этим вариантом живёт себе, и в ус не дует, а Е-жабер отчего-то не уживается. Е-жаберу какого-то чёрта вынь да положь транспорты с расширением в виде FQDN.
Впрочем, не настаиваю на собственной правоте. Если кому удастся их сдружить таким макаром, буду рад всяческим комментариям.
[править] Общий список контактов
Теперь добавим каждому пользователю список контактов всех (или не всех) сотрудников офиса, а так же, для удобства пользования, сформируем группы по отделам или филиалам…. Это уже на свой вкус и цвет … И так: 1) Для владеющих буржуйским языком. Посетите http://www.process-one.net/en/projects/ejabberd/docs/guide_en.html#htoc52 и там почитайте про mod_shared_roster 2) Для таких, как я … Добавляем в конец файла ejabberd.cfg строку
{mod_shared_roster, [{iqdisc, no_queue}]},
например между строк
{mod_last, []},
{mod_version, []}
Только внимательно, так как скобки и запятые имеют принципиальное значение. Перезапускаем сервис… Теперь заходим на http://сервер:5280/admin или как зовут наш сервер) и видим новый пункт меню «Общие контакты» Там добавляем новую группу, в эту группу добавляем полные JUD (обязательно полные!) и пишем, какие группы могут видеть эту группу … По идее, группа видит сама себя, и при включении всего списка в одну группу каждый пользователь будет сразу получать полный ростер … А что нам, сисадминам, еще нужно ? Правильно — побольше свободного времени… Не бегать же по всему офису и добавлять в список контактов каждому каждого :)
P.S. Включение пользователя в несколько групп возможно. При этом получается удобно и красиво …
