支持ejabberd域列表中的通配符

时间:2012-04-16 09:48:45

标签: ejabberd

  • 在ejabberd.cfg中,我们可以提及ejabberd 2.1.10中的域名列表
  • 有没有办法可以配置像“* .mysite.com”这样的域名

1 个答案:

答案 0 :(得分:1)

在ejabberd域中,必须明确配置。这是因为在启动域时,将根据模块配置启动许多支持进程,并将条目插入到内部ejabberd路由表中。 mod_muc就是一个很好的例子,它开始一个处理多用户聊天的过程,并在与“mysite.com”域合作时将路由表中的进程注册为“conference.mysite.com”。

放{hosts,[“* .mysite.com”]}。在您的ejabberd配置中将无法正常工作,因为ejabberd无法确切知道您确实需要在路由表中启动和设置哪些域。

替代方案是在运行时配置您的其他域。这在ejabberd 2.x上不可用,但是是ejabberd 3中的一项功能。运行时配置可以通过调用ejabberd_hosts模块中的函数来完成。请注意,如果您创建主机而未传递配置字符串,则主机将创建为永久主机(非动态),就像您在{hosts,[]}中列出的那样。在配置文件中。

这有两个潜在的缺点。 1.当函数存在时,您仍然需要一些向聊天系统发送信号的方法,您希望创建一个额外的域。这可能需要一个自定义模块。 2. ejabberd 3仍处于alpha状态。虽然它运行得很好但我仍然发现需要不时修补的错误。

我维护了一个包含我的错误修复的ejabberd3的小分支(大部分与实时配置有关)。它可以在https://github.com/chatmongers/ejabberd/tree/prod的github上找到。