通过节点js app

时间:2017-03-14 11:02:31

标签: node.js ejabberd ejabberd-api

我在Ubuntu 16.04上运行了一个ejabberd(16.01)服务器。我在另一台服务器上运行另一个NodeJs应用程序。通过NodeJs应用程序,我希望使用https://docs.ejabberd.im/developer/ejabberd-api/中给出的ReST API添加用户,添加名单等。

我正在https://docs.ejabberd.im/developer/ejabberd-api/simple-configuration/为此练习做简单的配置。配置说要在下面添加片段:

  commands_admin_access:
    - allow:
      - user: "admin@localhost"
  commands:
    - add_commands: [user, admin, open]
  # Tokens are valid for a year as default:
  auth_expire: 31536000
  oauth_access: all

这里的问题是,文档没有指定需要添加这些配置的标题?完全没有这个配置的确切位置!

我在文件末尾添加了上述配置。但是,ejabberd服务器无法识别这些选项。日志说:

validate_opts:792 unknown option 'auth_expire' will be likely ignored
validate_opts:792 unknown option 'api_permissions' will be likely ignored
validate_opts:784 ignoring option 'commands_admin_access' with invalid value: [[{allow,[[{user,<<"ankit@replica3377.cloudapp.net">>}]]}]]

以下是我在ejabberd.yml文件中添加的额外配置:

commands_admin_access:
  - allow:
    - user: "ankit@replica3377.cloudapp.net"
commands:
  - add_commands:
    - status
    - registered_users
    - register
    - unregister
# Tokens are valid for a year as default:
auth_expire: 31536000
oauth_access: all

api_permissions:
  "API used from localhost allows all calls":
    - who:
      - ip: "168.63.209.95"
    - what:
      - "*"
      - "!stop"
      - "!start"

我认为文档不是很清楚。有人可以在这里建议我做错了吗?或者有没有其他方法来实现我想要做的事情?

1 个答案:

答案 0 :(得分:1)

您使用的是旧版Ejabberd。最新版本为17.04,其中API权限框架从16.01开始有很多变化。

首先,让我澄清您所看到警告的原因。

  1. &#39; auth_expire&#39; - 实际参数名称为&#39; oauth_expire&#39;。看起来文档中有错误。有关代码,请参阅this链接。
  2. &#39; api_permission&#39; - 该参数在16.12版本中引入。请参阅this链接。
  3. &#39; commands_admin_access&#39; - 在16.01版本中,此参数仅使用atom作为输入。 ACL支持在以后的版本中引入。因此,您可以创建ACL规则并提供类似this的规则名称。
  4. 现在回答添加此参数的位置的问题 - 您可以在遵循yaml格式指南的地方添加此参数。由于这是独立的配置,因此不应该在任何其他配置下。你可以把它放在最后,它应该没有任何问题。