为ejabberd服务器配置mod_rest模块

时间:2014-11-25 07:41:40

标签: rest erlang xmpp ejabberd

我正在为我们的一个项目配置ejabber服务器。在此我们需要从ejabberd-contrib配置mod_rest模块(https://github.com/processone/ejabberd-contrib)。以下是我的配置(YAML) 在听

 port: 5280
    module: ejabberd_http
    request_handlers:
      "/rest": mod_rest
    web_admin: true
    http_poll: true
    http_bind: true
    ## register: true
    captcha: true


modules:
  mod_rest:
    allowed_ips:
      - "host_one_ip"
      - "host_one_ip"
    access_commands:
      - "registered_users"
      - "connected_users"
    allowed_destinations:
      - "all"

但每当我试图用其余的(curl call)命中ejabberd命令时,它给我“TryPOSTING Stanza”

    prompt# curl --data 'registered_users domain' -X POST http://host:5280/rest/

Try POSTing a stanza. 

我试图通过论坛但却找不到任何有用的东西

我是ejabber和erlang的新手。这个方向的任何指针都非常有用。如果需要更多详细信息,请与我们联系。

3 个答案:

答案 0 :(得分:2)

伙计们我已经找到了这个问题。我已经安装了Ejabberd 14.05版本。 mod_rest模块 包括ejabberd_http.hrl文件的dev_include目录。在Ejabberd 14.05中,ejabberd_http.hrl的记录被更改。 “opts = [] :: list(),”是ejabber-contrib的include文件夹中的额外标题。我相应地调整了头部位置并编译模块。它对我有用:)有了这个我使用mod_rest工作的ejabberd命令。 现在我面临使用mod_rest消耗Stanzas的问题:(。如果有人对此有任何想法请告诉我。

答案 1 :(得分:0)

我试试这个,然后工作:

在我的情况下,我使用ejabberd二进制安装,以及安装文件夹 / LIB / ejabberd / XXXX

编译来自ejabberd-contrib的mod_rest.erl,这里是引用,https://www.ejabberd.im/ejabberd-contrib

我使用这个命令编译:

erlc -I /lib/ejabberd/include your_mod_rest_source_file

如果成功,你将拥有.beam文件,之后将mod_rest.beam复制到ejabberd安装文件夹

cp ~/ejabberd-contrib/mod_rest/src/mod_rest.beam /lib/ejabberd/ebin/

比配置ejabberd.yml在我的情况下,yml驻留在(/etc/ejabberd/ejabberd.yml)中,如下所示:

https://github.com/processone/ejabberd-contrib/issues/45#issuecomment-69767670

答案 2 :(得分:-1)

我认为你误解了ReST模块的目的。 从文档中,您应该向它发送XMPP节: https://github.com/processone/ejabberd-contrib/tree/master/mod_rest

但是,您要发送纯文本,而不是XMPP节(甚至不是XML)。