微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用erlang escript的ejabberd extauth

如何解决使用erlang escript的ejabberd extauth

| 我在我的项目之一中使用ejabberd,该项目本身是用erlang实现的。我有兴趣访问身份验证流程,因此我可以集成我的用户数据库,而不必在ejabberd中分别注册它们。 我已经按照此处所述正确处理了大多数事情: https://git.process-one.net/ejabberd/mainline/blobs/raw/2.1.x/doc/dev.html#htoc8 但是,看来ejabberd从未收到我的手稿的回应。以下是负责发送响应的部分代码
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,1>>
这与我以前在PHP内所做的完全相似:
fwrite($out,pack(\"nn\",$result_code));
我不确定我在哪里搞砸。 我也很感兴趣是否有更好的方法来集成我的用户数据库,因为我的应用程序本身位于erlang中,我可能想利用erlang消息传递的优势,而不是在extauth中读取/编写stdin / stdout     

解决方法

两个想法: 1)您的数据库是否支持SQL?如果是这样,请按照https://support.process-one.net/doc/display/MESSENGER/Using+ejabberd+with+MySQL+native+driver中的说明启用ѭ3。您可以创建视图以将内部数据库结构镜像到ejabberd中期望。 2)您始终可以创建自己的auth_method。如果您已经精通Erlang,那么不难理解Ejabberd的代码。我只是在https://github.com/processone/ejabberd/blob/2.1.x/src/ejabberd_auth.erl上浏览了ѭ4的代码,实际上很简单。只需创建一个名为
ejabberd_auth_abhinav
的模块,导出必要的功能,然后启用
{auth_method,abhinav}
即可。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。