2

我正在构建一个 ejabberd 模块。我需要此模块对同一 LAN (sname) 上的另一个节点执行 RPC 调用。据我了解,ejabberd 配置它拥有“cookie”,当然,这与我用于其他节点的 cookie 不同。

有没有办法强制 ejabberd 使用另一个 cookie?

编辑:ejabberd 在“ejabberd”用户名下启动其守护进程。

编辑:即使使用适当的 cookie 创建 /home/ejabberd/.erlang.cookie(用户名:ejabberd,组:ejabberd),它仍然无法正常工作。

编辑:解决问题的一种方法(不是很好)是将预期的 .erlang.cookie 文件复制(具有适当的权限)到 /var/lib/ejabberd

4

1 回答 1

4

ejabberdctl 脚本设置主目录,以便 cookie 文件位于/var/lib/ejabberd/.erlang.cookie. Erlang 本身会检查文件的权限,因此它们必须是正确的。

您有几个选项可以强制使用特定的 cookie:

  • 更改文件的内容 - ejabberd 不会更改它。
  • 更改 ejabberdctl 脚本,使其传递-setcookie 'SomeCookieValue'给 erl。
  • 更改 ejabberdctl 以设置不同的主目录。

如果 cookie 文件不存在,它将被创建,但如果它存在,则不会在您背后更改。需要使用通用 cookie 来构建 ejabberd 集群或通过 erlang 分发与 ejabberd 集成。

于 2009-09-17T19:22:14.477 回答