Я не могу воспроизвести эту проблему с недавним ejabberd 18.04.Я устанавливаю в ejabberd.yml:
hosts:
- "localhost"
- "TT_CPU_076"
api_permissions:
"public commands":
who:
- ip: "127.0.0.1/8"
what:
- "*"
- "status"
- "connected_users_number"
Затем я регистрирую эту учетную запись:
$ ejabberdctl register 123 TT_CPU_076 pass11
User 123@TT_CPU_076 successfully registered
Я пишу простой клиент API:
<?php
$url='localhost:5280/api/change_password/';
$info=array("user"=>"123",
"host"=>"TT_CPU_076",
"newpass"=>"mypass22"
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($info));
$output=curl_exec($ch);
curl_close($ch);
print_r($output);
?>
Затем я выполняюэто:
$ php test.php
0
Это вошел в ejabberd:
11:39:18.646 [info] API call change_password
[{<<"user">>,<<"123">>},
{<<"host">>,<<"TT_CPU_076">>},
{<<"newpass">>,<<"mypass22">>}]
from ::ffff:127.0.0.1:46778
И, наконец, я проверяю базу данных, и пароль изменился