Доступ к eJabberd ReST API через приложение узла js
У меня есть сервер ejabberd (16.01), работающий на Ubuntu 16.04. У меня есть другое приложение NodeJs, работающее на другом сервере. Через приложение NodeJ я хочу добавлять пользователей, добавлять списки и т. Д., Используя ReST API, указанный на https://docs.ejabberd.im/developer/ejabberd-api/.
Я делаю простую настройку, приведенную на https://docs.ejabberd.im/developer/ejabberd-api/simple-configuration/ для этого упражнения. Конфигурация говорит добавить фрагмент ниже:
commands_admin_access:
- allow:
- user: "admin@localhost"
commands:
- add_commands: [user, admin, open]
# Tokens are valid for a year as default:
auth_expire: 31536000
oauth_access: all
Проблема здесь в том, что в документации не указано, под каким заголовком эти конфигурации нужно добавить? Точное местоположение этой конфигурации полностью отсутствует!
Я добавил вышеуказанную конфигурацию в конец файла. Однако сервер ejabberd не распознает эти параметры. В журналах написано:
validate_opts:792 unknown option 'auth_expire' will be likely ignored
validate_opts:792 unknown option 'api_permissions' will be likely ignored
validate_opts:784 ignoring option 'commands_admin_access' with invalid value: [[{allow,[[{user,<<"ankit@replica3377.cloudapp.net">>}]]}]]
Ниже приведена дополнительная конфигурация, которую я добавил в файл ejabberd.yml:
commands_admin_access:
- allow:
- user: "ankit@replica3377.cloudapp.net"
commands:
- add_commands:
- status
- registered_users
- register
- unregister
# Tokens are valid for a year as default:
auth_expire: 31536000
oauth_access: all
api_permissions:
"API used from localhost allows all calls":
- who:
- ip: "168.63.209.95"
- what:
- "*"
- "!stop"
- "!start"
Я думаю, что документация не очень понятна. Может кто-нибудь подсказать, что я здесь делаю не так? Или есть какой-то альтернативный способ добиться того, что я пытаюсь сделать?
1 ответ
Вы используете очень старую версию Ejabberd. Последний - 17.04, в котором есть множество изменений в структуре разрешений API с 16.01 .
Во-первых, позвольте мне уточнить причины предупреждений, которые вы видите.
- 'auth_expire' - Фактическое имя параметра - 'oauth_expire'. Похоже, в документации есть ошибка. Пожалуйста, обратитесь по этой ссылке для кода.
- 'api_permission' - этот параметр появился в версии 16.12. Пожалуйста, обратитесь по этой ссылке.
- 'commands_admin_access' - в версии 16.01 этот параметр принимает только атом в качестве ввода. Поддержка ACL была введена в более поздних выпусках. Таким образом, вы можете создать правило ACL и указать имя правила следующим образом.
Теперь ответьте на вопрос, где добавить эти параметры. Вы можете добавлять этот параметр везде, где хотите, если вы следуете рекомендациям формата yaml. Поскольку это независимые конфигурации, они не должны быть в любой другой конфигурации. Вы можете поставить его в конце, и он должен работать без каких-либо проблем.