Проблема с ejabberd+внешняя авторизация

Автор ZigmunD, 09 Ноября 2010, 15:27

« предыдущая тема - следующая тема »

0 Пользователей и 1 Гость просматривают эту тему.

ZigmunD

09 Ноября 2010, 15:27 Последнее редактирование: 09 Ноября 2010, 15:49 от ZigmunD
Доброго времени суток!

Что есть:
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 - обновлял несколько версий, глюк остается.
Такое ощущение как будто буфер пайпа переполняет, или еще что-нибудь в этом роде... После перезапуска все отлично в течении нескольких дней / недели, потом опять все заново.
There is no medicine against death, and against error no rule has been found. ©Зигмунд Фрейд

Vicpo

Единственно, что могу посоветовать в данной ситуации - попробовать обновить ежа и erlang
Внешнюю авторизацию пробовал цеплять от друпала, но возникли какие то глюки (честно не помню какие) и я отказался от неё.

ZigmunD

Цитата: Vicpo от 09 Ноября 2010, 15:46Единственно, что могу посоветовать в данной ситуации - попробовать обновить ежа и erlang
Внешнюю авторизацию пробовал цеплять от друпала, но возникли какие то глюки (честно не помню какие) и я отказался от неё.
Erlang и ejabber обновлялись черти сколько раз, авторизация сначала тоже стояла та самая, для друпала, немного переделанная, с ней были те же самые глюки.
А сейчас какую авторизацию используешь? Я уже думаю перловую попробовать или еще какую, но не думаю что ситуация изменится - со всеми внешними авторизациями ejabberd работает одинаково, через stdin/stdout.
There is no medicine against death, and against error no rule has been found. ©Зигмунд Фрейд

Vicpo

Используется драйвера odbc и база mysql. Внешняя авторизация не используется.

ZigmunD

09 Ноября 2010, 19:34 #4 Последнее редактирование: 09 Ноября 2010, 19:55 от ZigmunD
Цитата: Vicpo от 09 Ноября 2010, 16:01Используется драйвера odbc и база mysql. Внешняя авторизация не используется.
Ясно. У меня авторизация привязана к базе почтовых пользователей, нет желание в исходниках ежика копаться, таблички да поля править. Ерланг - та еще мутотень.

Пока прикрутил перловую авторизовалку, посмотрим как себя поведет. На ЛОРе кое-чего дельного по отладке посоветовали... в общем, пока наблюдаю.
There is no medicine against death, and against error no rule has been found. ©Зигмунд Фрейд

Vicpo

На счет ерланг согласен...
Можно попробовать по крону раз в неделю конфиг перезагружать, вроде как буфер скидывает у ежа после этого

vlvasya

Доброго времени суток.

Есть ejabberd, работает на fedora

Неделю-две назад, менял hostname в /etc/sysconfig/network и в /etc/hosts

сегодня утром обнаружил что ejabberd не пашет, вот что в логе:
[root@fedora ~]# tail /var/log/ejabberd/ejabberd.log
   ejabberd@fedora
Check the ejabberd guide for details about changing the
computer hostname or Erlang node name.


=INFO REPORT==== 2011-04-29 10:08:57 ===
    application: ejabberd
    exited: {bad_return,{{ejabberd_app,start,[normal,[]]},
                         {'EXIT',"Error reading Mnesia database"}}}
    type: temporary
[root@fedora ~]# tail /var/log/ejabberd/ejabberd.log
   ejabberd@fedora
Check the ejabberd guide for details about changing the
computer hostname or Erlang node name.


=INFO REPORT==== 2011-04-29 10:08:57 ===
    application: ejabberd
    exited: {bad_return,{{ejabberd_app,start,[normal,[]]},
                         {'EXIT',"Error reading Mnesia database"}}}
    type: temporary
[root@fedora ~]#

Вот кусок ejabberd.cfg
...
%%%.   ================
%%%'   SERVED HOSTNAMES

%%
%% hosts: Domains served by ejabberd.
%% You can define one or several, for example:
%% {hosts, ["example.net", "example.com", "example.org"]}.
%%
{hosts, ["10.168.5.1"]}.
...

В jabber-клиенте вписываю username@10.168.5.1 (работало).

что я сломал?





TLemur


vlvasya

Цитата: TLemur от 30 Апреля 2011, 09:19Версия ejabberd, erlang и mnesia какая?
Name       : ejabberd
Arch       : i686
Version    : 2.1.6
Release    : 4.fc13

Name       : erlang
Arch       : i686
Version    : R13B
Release    : 04.15.fc13
[root@10 ~]# yum info mnesia
Loaded plugins: presto, refresh-packagekit
Error: No matching Packages to list





TLemur


vlvasya

как узнать $OLDNODE если я его не помню?





TLemur

Цитата: vlvasya от 03 Мая 2011, 16:59как узнать $OLDNODE если я его не помню?

Спросить у Василия Федотовича.

vlvasya

хорошо, а есть возможность сейчас полностью все грохнуть, чтобы заново настроить, я пробовал просто снести ejabberd и erlang, и удалить их конфиги, не помогло, все равно ёж не стартует с той-же ошибкой  http://linuxforum.kz/public/style_emoticons/<#EMO_DIR#>/dry.gif\' class=\'bbc_emoticon\' alt=\'<_<\' />





TLemur

1. Удалить erlang, ejabberd, конфиги
2. rm -rf /var/lib/ejabberd/*
3. Поставить всё обратно
4. Запустить ejabberd.