Команды нужно запускать с правами администратора Ejabberd Rest Api?
Я настраиваю Ejabberd
Rest API on ejabberd 16.09
, Чтобы настроить его, я просто следую документу ejabberd ( https://docs.ejabberd.im/developer/ejabberd-api/simple-configuration/). Поэтому, когда я собираюсь нажать http://localhost:5280/api/change_password от почтальона с body:
{
"user": "123",
"host": "TT_CPU_076",
"newpass": "blank"
}
а также header:
Content-Type: application/json.
Я получаю сообщение об ошибке:
{
"status": "error",
"code": 31,
"message": "Command need to be run with admin priviledge."
}
моя конфигурация файла ejabberd.yml, например:
port: 5280
module: ejabberd_http
ip: "127.0.0.1"
request_handlers:
"/websocket": ejabberd_http_ws
"/api": mod_http_api
## "/pub/archive": mod_http_fileserver
web_admin: true
http_bind: true
## register: true
captcha: false
api_permissions:
"API used from localhost allows all calls":
- who:
- ip: "127.0.0.1/8"
- what:
- "*"
- "!stop"
- "!start"
Любое решение для достижения конфигурации Rest Api с ejabberd будет оценено.
1 ответ
Я не могу воспроизвести эту проблему с недавним 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
И наконец, я проверяю базу данных, и пароль изменился