2

我正在尝试为 ejabberd 编写几个模块/过滤器。在 php 中成功实现外部身份验证后,我寄予厚望,我将能够在 PHP 中完成所有操作。

我想要完成的是以下内容:

Ejabberd 挂钩 -> 向 PHP 发送数据

PHP 通过 shell_exec() / exec() 使用ejabberdctl访问 Ejabberd

PHP 响应“钩子”。

我发现这个 SO 问题(如何在 Ejabberd 中过滤消息)几乎回答了我的问题,但它错过了将数据传递给 PHP 的部分。

所以我的问题是:

  1. 如何从 erlang 将数据发送到 php(即drop链接问题中的“%% 应该返回修改后的数据包或原子以丢弃数据包”部分)

  2. 我在哪里可以找到一些关于 ejabberd 二进制协议的规范/文档?

4

1 回答 1

0

使用 ejabberd 过滤 xmpp 内部域中的消息只能制作 erlang 模块。

您可以尝试组件方法。该组件将位于子域中,并且能够过滤通过它的消息。您应该像使用代理域一样使用它,聊天中的所有各方都应该与之交谈。请记住,您的组件应该是一个类似守护进程的进程,在组件接口上侦听节。这在 php 中并不容易。我为此使用了一个中间python脚本。

根据您的需要,您还可以使用 mod_logxml 将所有节转储到 xml 文件中,并使用守护程序读取该文件。

实际上,我最终在 node.js 中重写了整个内容。

于 2015-01-13T20:09:26.893 回答