Доброго времени суток!
Что есть:
openSUSE 11.0
ejabberd 2.1.0
PHP 5.2.9
MySQL 5.0.51
Внешняя авторизация в MySQL через PHP-скрипт(http://www.ejabberd.im/check_mysql_php)
~1500 пользователей, ~500 постоянно подключенных.
И в довесок к этому есть следующая проблема:
После запуска сервера в течении нескольких дней все работает отлично, потом начинаются глюк с авторизацией - пускает любого пользователя с любым паролем. Иногда не с первого раза, но все равно пускает. Т.е. ввожу в клиенте несуществующего пользователя или существующего, но с неправильным паролем и подключаюсь как ни в чем не бывало. Иногда отбривает с первого раза, но после пару переподключений все равно пускает.
Точно такая же ситуация с веб-админкой. Ввожу пароль админа, заведомо неправильный пароль - пару раз отбривает, потом пускает.
По логу скрипта видно, что сам скрипт отрабатывает нормально. Т.е. с БД общается, отвечает что пользователь/пароль неправильный, но у ejabberd как будто свое мнение на этот счет:
Nov 9 15:17:59 ns01 pipe-auth: Reading 29 bytes ...
Nov 9 15:17:59 ns01 pipe-auth: IN: auth:zigmund:domain.com:passw
Nov 9 15:17:59 ns01 pipe-auth: GO: auth:zigmund:domain.com:passw
Nov 9 15:17:59 ns01 pipe-auth: data length is : 29
Nov 9 15:17:59 ns01 pipe-auth: Command was : auth
Nov 9 15:17:59 ns01 pipe-auth: Command : auth:zigmund:domain.com:cffbad68bb97a6c3f943538f119c992c ==> 0
Nov 9 15:17:59 ns01 pipe-auth: RE:
Nov 9 15:17:59 ns01 pipe-auth: OUT: 2
Подключение внешней авторизации в ejabberd:
{host_config, "domain.com",
[
{auth_method, external},
{extauth_program, "/home/jabber/current/conf/auth-domain-com.php"}
]}.
Вначале стоял другой PHP-скрипт авторизации, было точно такая же проблема. То же самое и с ejabberd - обновлял несколько версий, глюк остается. Такое ощущение как будто буфер пайпа переполняет, или еще что-нибудь в этом роде... После перезапуска все отлично в течении нескольких дней / недели, потом опять все заново.