【问题标题】:external auth module for ejabberd on windowsWindows 上 ejabberd 的外部身份验证模块
【发布时间】:2015-10-03 19:54:02
【问题描述】:

如何让 ejabberd 在 Windows 上运行外部身份验证脚本?

到目前为止-我已经修改了文件

C:\程序 文件\ejabberd-15.06\lib\ejabberd-15.06\priv\cfg\ejabberd.yml

注释掉现有的 auth_method 指令,改为添加:

auth_method: external
extauth_program: "D:\\DROPBOX\\Dropbox (Personal)\\EJABBERD\\auth\\ejabberd-auth.exe"

但是,当我尝试连接到服务器时,我在日志中看不到任何内容表明尝试运行脚本。我什至尝试将其更改为不存在的文件,以查看是否会记录某种错误,但什么也没有。

我得到的只是“接受的连接”类型的日志。

万一这很重要 - 开始时我确实收到了几个“未知选项”错误,包括“ejabberd_config:validate_opts:752 未知选项 'auth_method' 可能会被忽略” - 但是这似乎是一个已知的、纯外观错误(见:https://github.com/processone/ejabberd/issues/630

【问题讨论】:

  • 不知道您的 external-auth.exe 文件在做什么。它来自哪里?
  • 到目前为止,它只打印“Hello World”——所以我预计日志中会出现错误——或者尝试调用它的一些记录?
  • 没有真正熟悉 ejabberd - 似乎“未知选项'auth_method'”错误可能不仅仅是装饰性的?
  • 错误是装饰性的,将在下一个包中修复。

标签: ejabberd


【解决方案1】:

我不使用 Windows,但是,您应该尝试使用 Erlang open_port 命令:

 open_port({spawn, "YOURCOMMAND"}, [{packet, 2}]).

请注意open_port Erlang 文档说:

对于外部程序,将搜索 PATH(或使用等效方法来查找程序,具体取决于操作系统)。这是通过在某些平台上调用 shell 来完成的。命令的第一个空格分隔标记将被视为可执行文件(或驱动程序)的名称。这(除其他外)使此选项不适合运行在文件或目录名称中有空格的程序。

我看到你的路径有空格。仅此一项就应该确实无法调用您的命令。

也就是说,external_auth 命令从未在 Windows 上进行过测试。您可能需要修补 ejabberd 命令以通过外部进程进行身份验证。如果它按原样工作,我会感到惊讶。

【讨论】:

  • 谢谢...我认为对于我的用例,我实际上可以通过推送临时注册而不是从外部检查身份验证来避免这种情况。
  • 哦哇-没有意识到这个模块存在,它完美地解决了我的用例(理论上):github.com/processone/ejabberd-contrib/tree/master/…
猜你喜欢
  • 2015-06-04
  • 1970-01-01
  • 2015-07-29
  • 1970-01-01
  • 2018-01-02
  • 1970-01-01
  • 2013-12-20
  • 2023-03-22
  • 2023-03-19
相关资源
最近更新 更多