Пожалуй самым популярным свободным движком для создания сайтов является легендарная 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 совместно с другим движком сайта - зайдите на официальный сайт демона и воспользуйтесь поиском. Скорее всего скрипт для вашего движка (если только движок не самописный ;)) уже есть.
Pentium02 2008-08-25 17:05:48 (#)