ejabberd muc_sub将用户从ejabberd服务器内订阅到房间

时间:2019-01-30 13:50:47

标签: ejabberd multiuserchat

如果我的措辞有点不对,请和我一起。 我基本上想做的是编写一个脚本,该脚本在运行ejabberd服务的服务器上运行。 该脚本应该创建一个聊天室并自动向用户订阅。

我知道可以通过REST API做到这一点,但我不想通过外部但通过同一物理服务器内部的连接来触发。

还是goto方法然后通过本地主机运行API调用?

更新: 怀疑我可以通过本地主机简单地调用REST API。但是我仍然被困住。可能是我的配置或调用中有错字,所以我将在此分享我尝试过的内容:

嘿,谢谢您的回复。我本人已经走了这么远,但没有得到预期的结果。

因此,我在yml文件中配置了必要的部分,如下所示:

listen:
    -
        port: 5285
        module: ejabberd_http
        request_handlers:
          "/rest": mod_rest

,并将localhost添加到主机。 然后,我尝试访问这样的REST函数:

curl -X POST -i -H "Content-type: application/json"  http://localhost:5285/rest/create_room -d 
'
  {
    "name":"testroom",
    "service":"mychatservice.host.com",
    "host":"host.com"
  }
'

我得到了这个答复:

HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 21

Try POSTing a stanza.

我以为200码意味着我做对了,但是当我检查“ ejabberdctl muc_online_rooms global”时,它没有列出一个。 此外,基本网址后的任何错误命令都会向我返回相同的响应。那我在做什么错了?

编辑:我当然也包括其余模块本身:

mod_rest:
  allowed_ips:
    - "127.0.0.1"

1 个答案:

答案 0 :(得分:1)

ejabberd正在监听连接,并且默认配置不限制它们来自何处。因此,可以的,您可以从本地主机发送REST API查询。

实际上,一旦完成该工作,就可以配置该侦听器以仅接受来自本地主机的连接。