EjabberdJit

Материал из ALT Linux Wiki
Перейти к: навигация, поиск
Freesource-logo.png Blue Glass Arrow.svg MediaWiki logo.png
Эта страница была перемещена с freesource.info.
Эта страница наверняка требует чистки и улучшения — смело правьте разметку и ссылки.
Просьба по окончанию убрать этот шаблон со страницы.
42px-Wikitext-ru.svg.png
Эту статью следует викифицировать.


Настройка ejabberd + jit[править]


Установка сервера[править]

Ставим (apt-get install) ejabberd. Находим конфиг /etc/ejabberd/ejabberd.cfg

указываем там (тут приведён пример):

{acl, admin, {user, "combr" }}.

этот пользователь будет записан в администраторы сервера, thesis writers

{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>
  1. Лирическое отступление.

Почему подправлена секция <xdb_file>, можно увидеть тривиальным пролистыванием файловой системы. А вот о секции <spool> — в сути №…

  1. Кранты лирическому отступлению.

…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. Включение пользователя в несколько групп возможно. При этом получается удобно и красиво …