将Jabber外部组件配置为代表任何用户发送节

时间:2010-11-18 10:07:22

标签: xmpp ejabberd

我不久前在某处读过,可以配置外部jabber组件(XEP-0114)代表任何用户发送XMPP节。例如,假设我有一个组件绑定到(component.localhost),我希望它发送一个消息节,其中“from”属性设置为“user @ localhost”。

我试图用ejabberd来实现这个目标。如果我不得不破解ejabberd src以使其正常工作(如果可能的话),那就不会感到惊讶。

3 个答案:

答案 0 :(得分:5)

如果您使用的是ejabberd,则可以使用服务定义中的{service_check_from, false}选项禁用“from”属性的验证。

请记住,XEP 0114要求JID的“主机”部分与组件的名称匹配。

有关所有血腥的详细信息,请参阅corresponding section of ejabberd documentation

答案 1 :(得分:0)

从技术上讲,您必须实际编写组件,但这很容易实现。 您首先要使用ejabberd进行混淆,以便它接受特定组件的连接,并使用给定的组件JID和密码。默认配置文件有几个示例,例如网关。

完成此操作后,使用此组件的凭据连接XMPP库/客户端,您应该好好去!唯一的限制是您发送有效的XML。

答案 2 :(得分:0)

您的组件通常只允许发送似乎来自*@component.domain.com的节,而不是 @ .domain.com。这是一项安全功能。

如果您需要此功能,则可能必须编写服务器插件而不是外部组件。