ejabberd muc_sub подписка пользователя на комнату внутри сервера ejabberd - PullRequest
0 голосов
/ 30 января 2019

Пожалуйста, потерпите меня, если моя формулировка немного не в порядке.В основном я пытаюсь написать скрипт, который запускается на сервере, на котором работает служба ejabberd.Этот скрипт предназначен для создания комнаты чата и автоматической подписки на нее пользователей.

Я знаю, что это возможно через API REST, но я не хочу запускать это через соединение извне, но изна том же физическом сервере.

Или же в этом случае будет использоваться метод goto для выполнения вызовов API через localhost?

ОБНОВЛЕНИЕ: Как и предполагалось, я могу просто вызвать API REST через localhost.Но я все еще застрял.Вероятно, это какая-то опечатка в моей конфигурации или звонках, поэтому я поделюсь с вами тем, что я пробовал:

эй, спасибо за ваш ответ.Я получил это далеко сам, но я не получаю ожидаемый результат.

Итак, я настроил необходимую часть в своем файле yml следующим образом:

listen:
    -
        port: 5285
        module: ejabberd_http
        request_handlers:
          "/rest": mod_rest

и добавил localhost к хостам.Затем я попытался получить доступ к функции REST следующим образом:

curl -X POST -i -H "Content-type: application/json"  http://localhost:5285/rest/create_room -d 
'
  {
    "name":"testroom",
    "service":"mychatservice.host.com",
    "host":"host.com"
  }
'

И я получил такой ответ:

HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 21

Try POSTing a stanza.

Я думал, что код 200 означает, что я сделал правильно, но когда я проверял с помощью "ejabberdctl muc_online_rooms global "в нем не было ни одного.Также любая неправильная команда после базового URL вернула мне тот же ответ.Так что я делаю не так?

edit: я, конечно, также включил сам модуль отдыха:

mod_rest:
  allowed_ips:
    - "127.0.0.1"

1 Ответ

0 голосов
/ 01 февраля 2019

ejabberd прослушивает соединения, и конфигурация по умолчанию не ограничивает то, откуда они приходят.Так что да, вы можете отправлять запросы REST API с локального хоста.

Фактически, как только вы это заработаете, вы можете настроить этот приемник на прием соединений только от локального хоста.

...