Я использую ejabberd в одном из моих проектов, который сам реализован в erlang. Я заинтересован в получении доступа к потоку аутентификации, чтобы я мог интегрировать свою пользовательскую базу данных без необходимости регистрировать их отдельно в ejabberd.
У меня все правильно, как описано здесь:
https://git.process -one.net / ejabberd / магистральный / блобовым / сырье / 2.1.x / DOC / dev.html # htoc8
Однако, по-видимому, ejabberd никогда не получит ответ от моего escript. Ниже приведена часть кода, отвечающая за отправку resopnse:
process_data(["auth", _User, _Server, _Pass]) ->
BB = <<1:16>>, %% result code 1 coded as short
AA = byte_size(BB), %% AA is byte length of result
Bin = <<AA:16,BB/binary>>, %% finally packing AA as short along with BB
io:put_chars(Bin);
Из моих логов я отправляю:
=DEBUG== 2011-05-25 21:05:15 == <0.2.0> == extauth:53 ===
sent <<0,2,0,1>>
, что в точности похоже на то, что я делал в PHP:
fwrite($out, pack("nn", 2, $result_code));
Я не уверен, где я все испортил.
Также мне интересно, есть ли лучший способ интегрировать мою пользовательскую базу данных, так как мое приложение само по себе на erlang, и я бы, вероятно, хотел бы воспользоваться передачей сообщений erlang вместо чтения / записи stdin / stdout внутри extauth