首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ejabberd extauth使用erlang escript

ejabberd extauth使用erlang escript
EN

Stack Overflow用户
提问于 2011-05-25 23:51:36
回答 1查看 748关注 0票数 1

我在我的一个项目中使用了ejabberd,这个项目本身是用erlang实现的。我感兴趣的是获得对身份验证流的访问,这样我就可以集成我的用户数据库,而不必在ejabberd中单独注册它们。

我已经把这里描述的大部分事情都做对了:https://git.process-one.net/ejabberd/mainline/blobs/raw/2.1.x/doc/dev.html#htoc8

然而,似乎ejabberd从未从我的脚本中收到回复。以下是负责发送resopnse的部分代码:

代码语言:javascript
复制
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);

从我的日志中,我最终发送了:

代码语言:javascript
复制
=DEBUG== 2011-05-25 21:05:15 == <0.2.0> == extauth:53 ===
sent <<0,2,0,1>>

这与我过去在PHP中所做的事情非常相似:

代码语言:javascript
复制
fwrite($out, pack("nn", 2, $result_code));

我不确定我在哪里搞砸了。

此外,我很感兴趣是否有更好的方法来集成我的用户数据库,因为我的应用程序本身在erlang中,并且我可能希望利用erlang消息传递,而不是在extauth中读/写stdin/stdout

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-28 11:46:27

有两个想法:

1)您的数据库是否支持SQL?如果是这样,请按照https://support.process-one.net/doc/display/MESSENGER/Using+ejabberd+with+MySQL+native+driver中所述启用ejabberd。您可以创建视图,将内部DB结构映射到ejabberd期望的内容中。

2)您可以随时创建自己的auth_method。如果您已经熟练使用Erlang,则Ejabberd的代码不难理解。我只是在https://github.com/processone/ejabberd/blob/2.1.x/src/ejabberd_auth.erl上浏览了一下ejabberd_auth的代码,实际上它相当简单。只需创建一个名为ejabberd_auth_abhinav的模块,导出必要的函数,然后启用{auth_method, abhinav},就可以了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6127284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档