ejabberd - 在pubsub项目中获取发布者JID

时间:2016-01-27 06:43:07

标签: xmpp ejabberd

http://www.xmpp.org/extensions/xep-0060.html#impl-association定义了一个名为“itemreply”的属性,可让您添加发布商信息以及正在发布的项目。看起来ejabberd并没有实现上述选项。还有其他解决方法吗?

根据https://support.process-one.net/browse/EJAB-1347,有一个可用的补丁可以完成它,但我不知道如何应用补丁。寻找同样的指导。

谢谢, 大额牛

2 个答案:

答案 0 :(得分:0)

补丁程序太旧,无法在ejabberd代码库中应用。它需要更新到最新版本,但我不认为它是一个高度要求的功能。

您应该在项目Github上提交功能请求:https://github.com/processone/ejabberd/issues

答案 1 :(得分:0)

管理更改代码以添加发布者信息。以下是需要采取的步骤。

1)打开文件src / mod_pubsub.erl

2)找到以下功能

itemAttr(ItemId) -> [{<<"id">>, ItemId}].

3)在上述功能

下面添加一个新功能
itemAttr(ItemId, From) -> [{<<"id">>, ItemId},{<<"publisher">>, From}].

4)接下来找到名为

的函数
broadcast_publish_item(Host, Node, Nidx, Type, NodeOptions, ItemId, From, Payload, Removed) ->

5)替换

Stanza = event_stanza(
                [#xmlel{name = <<"items">>, attrs = nodeAttr(Node),
                        children = [#xmlel{name = <<"item">>, attrs = itemAttr(ItemId),
                                children = Content}]}]),

Stanza = event_stanza(
                [#xmlel{name = <<"items">>, attrs = nodeAttr(Node),
                        children = [#xmlel{name = <<"item">>, attrs = itemAttr(ItemId, jlib:jid_to_string(From)),
                                children = Content}]}]),

6)使用

重新编译代码
sudo make; sudo make install;

重新启动您的服务器,您应该获取发布者信息以及正在发布的项目。