Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl ejabberd:保存未启用外部身份验证脚本的花名册_Perl_Xmpp_Ejabberd - Fatal编程技术网

Perl ejabberd:保存未启用外部身份验证脚本的花名册

Perl ejabberd:保存未启用外部身份验证脚本的花名册,perl,xmpp,ejabberd,Perl,Xmpp,Ejabberd,我已经成功地用extauth脚本(perl)配置了ejabberd服务器。 它工作正常,只允许mysql数据库中的用户使用 但以下功能不再起作用:名册管理、将用户添加到名册、用户授权(用于将用户添加到名册) 通过内部授权,它可以工作。两次ejabberd都配置为使用内部健忘症数据库 请帮我弄清楚,为什么它不能在启用extauth的情况下工作。我必须在extauth脚本中编写自己的方法吗?(我真的不想…)所以在对我的问题做了一些研究之后,我认为切换到外部身份验证将不支持名册管理 我最后做的是切换回

我已经成功地用extauth脚本(perl)配置了ejabberd服务器。 它工作正常,只允许mysql数据库中的用户使用

但以下功能不再起作用:名册管理、将用户添加到名册、用户授权(用于将用户添加到名册) 通过内部授权,它可以工作。两次ejabberd都配置为使用内部健忘症数据库


请帮我弄清楚,为什么它不能在启用extauth的情况下工作。我必须在extauth脚本中编写自己的方法吗?(我真的不想…)

所以在对我的问题做了一些研究之后,我认为切换到外部身份验证将不支持名册管理

我最后做的是切换回内部身份验证,并使用mod_admin_extra添加用户并使用以下php脚本更新密码:

<?php

class Jabber
{
    public static function registerAndAddToSharedRoster($userId, $sessionToken)
    {
        $url = "http://localhost:5280/rest";

        $register = "register $userId jabber.YOUR_DOMAIN.com $sessionToken";
        sendRESTRequest($url, $register);

        $sharedRoster = "srg_user_add $userId jabber.YOUR_DOMAIN.com shared jabber.YOUR_DOMAIN.com";
        sendRESTRequest($url, $sharedRoster);
    }

    public static function updatePassword($userId, $newPassword)
    {
        $url = "http://localhost:5280/rest";

        $register = "change_password $userId jabber.YOUR_DOMAIN.com $newPassword";
        sendRESTRequest($url, $register);
    }
}

function sendRESTRequest ($url, $request)
{
    // Create a stream context so that we can POST the REST request to $url
    $context = stream_context_create (array ('http' => array ('method' => 'POST'
                                            ,'header' => "Host: localhost:5280\nContent-Type: text/html; charset=utf-8\nContent-Length: ".strlen($request)
                                            ,'content' => $request)));

    $result = file_get_contents($url, false, $context);

    return $result;
}

?>


希望这对别人有帮助

这个答案已经晚了,但它可以帮助某人:

与@ben marten的回答相反,切换到外部身份验证确实支持名册管理

当您将某人添加到花名册时,ejabberd正在“调用”isuser操作-检查它是否为有效用户-您必须在脚本中提供该方法:请参阅

我忽略了该操作,无法将用户添加到名册中


有关其他脚本示例,请参见日志中的任何错误?没有,不幸的是没有。。。使用内部auth,它可以工作。切换到ext_auth时。登录正在工作,但当我将其他用户添加到我的花名册时,不会向他发送身份验证请求。但名册是存储的。两种情况下的用户完全相同。请帮忙。。。