Сохранение логов muc-конференций в виде html

()

Если у вас есть jabber-сервер под управлением ejabberd и если вы используетесь встроенной в него службой muc - наверняка вас посещала мысль о сохранении логов конференций.

Эта задача решается очень просто и легко благодаря входящему в комплект поставки ejabberd модулю mod_muc_log. По умолчанию он отключен, но включить его и сконфигурировать - дело не сложное. Далее будет показано как именно это можно сделать.

Первым делом определимся с директорией для записи логов. Автор этих строк на своём сервере выбрал директорию /var/www/conference/html.

Особо следует обратить внимание на права на директорию - пользователь, от которого запущен ejabberd, должен иметь возможность писать в эту директорию (казалось бы мелочь - но почему-то все про неё забывают).

Если говорить о Debian/Ubuntu то ejabberd работает с правами пользователям ejabberd, так что создать нужную директорию можно следующей командой:

mkdir -p /var/www/conference/html && chown -vR ejabberd:ejabberd /var/www/conference/html

Далее на всякий случай сохраним резервную копию файла конфигурации:

cp /etc/ejabberd/ejabberd.cfg /etc/ejabberd/ejabberd.cfg_back

Дальше находим в файле строку:

  %%{mod_muc_log,[]},

И заменяем на следующие строки:

  {mod_muc_log,[
    {access, muc},
    {access_create, muc},
    {access_admin, muc_admin},
    {access_log, muc},
    {outdir, "/var/www/conference/html"},
    {top_link, {"http://ylsoftware.com/", "Yellow Leaf"}}
  ]},

Подробное описание всех параметров можно найти тут.

Далее нужно перезапустить ejabberd командой:

ejabberdctl restart

Теперь в настройках конференций появляется дополнительный флаг - ведение логов. Например в PSI вам нужно зайти в конференцию как владелец или администратор, Выбрать меню "Actions" и в нём выбрать пункт "Configure Chatroom". Далее на вкладке "General" нужно поставить флажок напротив галочки "Включить журналирование" и сохранить настройки комнаты.

На этом настройка заканчивается. Для доступа к логам можно настроить web-сервер. Для этого можно использовать например быстрый и лёгкий сервер thttpd. Установим его командой:

apt-get install thttpd

Далее приводим файл конфигурации к следующему виду:

port=80
dir=/var/www/conference/html
chroot
user=www-data
cgipat=/cgi-bin/*
throttles=/etc/thttpd/throttle.conf
logfile=/var/log/thttpd.log
charset=utf-8

И перезапускаем сервис:

invoke-rc.d thttpd restart

Теперь если имя вашего jabber-сервера "our_firm.com", то вы можете получить доступ к логам вашей службы конференций открыв в браузере адрес "http://our_firm.com".

На этом всё. Приятной работы!

Ключевые слова: ejabberd, jabber, muc, mod_muc_log.

Подписаться на обновления: RSS-лента Канал в TamTam Telegram канал Канал в ICQ

Комментарии:

Anonymous 2010-05-06 11:44:28 (#)

Пробел в первой команде пропустил

MooSE 2010-05-06 11:55:32 (#)

спасибо. поправил.

Anonymous 2021-12-10 17:44:06 (#)

А как это возможно реализовать на сегодняшний день?
Модуль mod_muc_log и сейчас поддерживается ejabberd, у меня ejabberd-21.07, в ejabberd.yml прописал следущее:
mod_muc_log:
access_log: muc_admin
dirname: room_jid
dirtype: subdirs
file_format: html
outdir: /var/www/html/jabber
url: http://localhost/jabber/
здесь документация по модулю https://docs.ejabberd.im/admin/configuration/modules/#mod-muc-log вроде всё правильно, после внесения изменений в ejabberd.yml перезапустил сервер, права на папку jabber выставил как здесь указано. У меня клиент Psi+ 1.5 , в настройках комнаты поставил галочку на против "Включить хранение сообщений".
Не пишет конференцию. Помогите пожалуйста.
Новый комментарий

Жирный текстКурсивный текстПодчёркнутый текстЗачёркнутый текстПрограммный кодСсылкаИзображение




© 2006-2024 Вадим Калинников aka MooSE
Политика конфиденциальности

powerful software utility Immediate Evex Real-Time Trading Signals . Immediate Vortex projekti projekti miten ansaita