【问题标题】:Configure mod_rest module for the ejabberd server为 ejabberd 服务器配置 mod_rest 模块
【发布时间】:2015-01-23 03:03:47
【问题描述】:

我正在为我们的一个项目配置 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"

但每当我尝试使用其余的(卷曲调用)点击 ejabberd 命令时,它都会给我“TryPOSTING Stanza”

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

Try POSTing a stanza. 

我试图浏览论坛,但找不到...任何有用的东西

我是 ejabber 和 erlang 的新手。朝这个方向的任何指示都会非常有帮助。如果需要更多详细信息,请告诉我。

【问题讨论】:

  • 同样的问题,可惜我不懂Erlang,否则会调试它。

标签: rest erlang xmpp ejabberd


【解决方案1】:

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

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

【讨论】:

  • 嘿迈克尔,感谢您的回复,但是,我正在尝试的是我需要使用 mod_rest 模块让 ejabber 命令工作。在自述文件中,他们已经提到它应该如何工作。
  • 使用 WGET 的示例验证命令 =============================== 要执行 ejabberd 命令,只需在 ejabberdctl 中提供其名称和参数: wget localhost:5280/rest --server-response --post-data 'registered_users localhost' 如果您配置 access_commands 选项,则必须提供如下凭据: wget localhost:5280/rest --server-response --post-data '--auth user1 localhost thepass registered_users localhost'
  • 我认为仅将 ejabberdctl 命令传递给 rest API 是行不通的。您必须将它们作为 ReST 参数传递。
  • 发布一个节也不起作用。将 ejabberdctl 命令发布到 mod_rest 也应该可以。
  • 你能告诉我参数名称吗,因为在 github 的自述文件中他们没有提到它:(
【解决方案2】:

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

【讨论】:

  • 您能分享您的代码/更改吗?这里是个好地方:github.com/processone/ejabberd-contrib/issues/45 一个要点或其他东西也可以。
  • 嘿克里斯,我在那里添加了我的评论,实际上没有代码更改只是我们需要指向正确的文件:)。但现在我面临新问题stackoverflow.com/questions/27442324/…
  • 嘿,我看过了,很好,谢谢!我会尽快尝试的。不幸的是,我不知道你的节问题,对不起。
【解决方案3】:

我尝试了这个,并且成功了:

就我而言,我使用 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-11
    • 2016-03-10
    • 2020-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-05
    • 1970-01-01
    相关资源
    最近更新 更多