如何让ejabberd在Windows上运行外部auth脚本?
到目前为止 - 我已经修改了文件
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)
答案 0 :(得分:0)
我不使用Windows,但是,你应该尝试使用Erlang open_port
命令:
open_port({spawn, "YOURCOMMAND"}, [{packet, 2}]).
请注意,open_port
Erlang文档说:
对于外部程序,搜索PATH(或者使用等效方法查找程序,具体取决于操作系统)。这是通过在某些平台上调用shell来完成的。命令的第一个空格分隔标记将被视为可执行文件(或驱动程序)的名称。这(除其他外)使得此选项不适合运行在文件或目录名称中包含空格的程序。
我看到你的路径有空格。仅这一点确实无法调用你的命令。
也就是说,在Windows上从未测试过external_auth命令。您可能需要修补ejabberd命令以通过外部进程工作进行身份验证。如果按原样工作,我会感到惊讶。