Объединение Joomla! и ejabberd

()

Пожалуй самым популярным свободным движком для создания сайтов является легендарная Joomla!. Он используется, например, в качестве движка сайта компании ALT Linux. А самым популярным демоном Jabber в последнее время стал ejabberd, ласково называемый в рунете ёжиком и используемый, например, на jabber.ru.

Если у вас есть свой портал на Joomla, то в качестве дополнительного сервиса вы можете запустить jabber-сервер и желательно, чтобы логины с портала работали и для jabber. В этой заметке и будет кратко описано как это реализовать.

Автор этих строк всё описанное изначально проделал сам. На сервере была установлена операционная система FreeBSD 6.2, ejabberd версии 1.1.2, MySQL версии 4.1, PHP 5.2 и Apache 2.0. Кроме того, понадобится установить порт php5-mysqli.

Итак. Допустим, что вы уже установили всё ПО, поставили и настроили Joomla! и вам осталось только "прикрутить" к ней ejabberd.

Тут в принципе, ничего сложного тоже нет. В ejabberd есть множество различных способов для проверки подлинности логина и пароля пользователя. Нас интересует способ с использованием внешнего скрипта. Для этого нужно скачать вот этот скрипт и положить его туда, куда вам удобнее. Например, в папку /usr/local/etc/ejabberd. Для работы скрипта требуется поддержка mysqli в php (что было оговорено в самом начале).

Далее идёт обычная настройка ejabberd. Останавливаться на ней не будем, поскольку всё это уже много раз описывалось в интернете. Но есть одно отличие - мы настраиваем авторизацию с помощью внешнего скрипта. Т.е. в конфиге должны присутствовать вот таки строчки:

{auth_method, external}.
{extauth_program, "/usr/local/etc/ejabberd/joomla-login-php"}.

А все остальные способы авторизации запрещены.

Дальнейшие действия вобщем-то неплохо (хотя и на английском языке) описаны в самом файле joomla-login-php. Сначала создаём пользователя в MySQL, который сможет выполнять SELECT-запросы на базу данных портала:

mysql -u root -p <your_db_name>
mysql> grant select on <your_joomla_prefix>users to ejabberd identified by 'p4ssw0rd';

Затем изменяем права доступа на скрипт, чтоб гарантированно ejabberd смог его запустить:

chown ejabberd:ejabberd /var/lib/ejabberd/joomla-login
chmod 700 /var/lib/ejabberd/joomla-login

Так же в самом скрипте нужно настроить доступ к MySQL и кодировку Joomla!, модифицируя следующие строки:

$sDBUser        = "ejabberd";
$sDBPassword    = "p4ssw0rd";
$sDBHost        = "localhost";
$sDBName        = "<your_db_name>";
$sJoomlaPrefix  = "<your_joomla_prefix>";
$sJoomlaCharset = "utf8";

Всё. Можете запускать ejabberd.

В самом начале эксплуатации была замечена небольшая проблема: инсталлятор Joomla! создаёт таблицы с регистрозависимым сравнением, а большинство jabber-клиентов принудительно приводят JID к нижнему регистру. Проблему легко и просто решили используя phpMyAdmin. Открыв обзор структуры таблицы <your_joomla_prefix>users в базе <your_db_name> и изменив способ сравнения полей "name" и "username" на регистронезависимый.

На этом всё. Если вы хотите использовать ejabberd совместно с другим движком сайта - зайдите на официальный сайт демона и воспользуйтесь поиском. Скорее всего скрипт для вашего движка (если только движок не самописный ;)) уже есть.

Ключевые слова: joomla, ejabberd, mysql.

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

Pentium02 2008-08-25 17:05:48 (#)

А как на счёт joomla 1.5.x? Там другой формат хранения паролей в БД

MooSE 2008-09-01 21:01:34 (#)

> А как на счёт joomla 1.5.x?

На момент написания статьи она была в стадии "бета". А потом я как-то с ней уже и не сталкивался. Подозреваю что надо просто немного подправить запросы в скрипте.
Новый комментарий



© 2006-2016 Вадим Калинников aka MooSE