erlang - ¿Cómo acceder a ejabberd admin api a través de HTTP?
ejabberd configuration (2)
habilite ejabberd_xmlrpc en el archivo ejabberd.yml elimine el comentario de las siguientes líneas-
## To handle XML-RPC requests that provide admin credentials:
##
## -
## port: 4560
## module: ejabberd_xmlrpc
## maxsessions: 10
## timeout: 5000
## access_commands:
## xmlrpc:
## commands: all
## options: []
Todos los XMLRPC se envían a la siguiente URL: http: // host: 4560 / . para más detalles verifique aquí
Leí sobre el documento https://docs.ejabberd.im/admin/api/
Y me pregunto cómo puedo acceder a esas API a través de HTTP. Intenté acceder pero siempre es 404.
En tu ejabberd.yml puedes encontrar una configuración como esta
-
port: 5280
module: ejabberd_http
request_handlers:
"/websocket": ejabberd_http_ws
Habilita api y oauth,
-
port: 5280
module: ejabberd_http
request_handlers:
"/websocket": ejabberd_http_ws
"/api": mod_http_api
"/oauth": ejabberd_oauth
Estamos habilitando la API para que tenga acceso desde otros lenguajes de programación (solicitud y respuesta JSON)
Estamos permitiendo a oauth presentar una solicitud de API y obtener una respuesta (sin la cual si accedemos a / api obtendremos solo el error 401 no autorizado)
Una vez que esta configuración esté lista, ingrese una solicitud http en su navegador. La URL debe ser
http://localhost:5280/oauth/authorization_token?response_type=token&client_id=Client1&scope=get_roster+connected_users
get_roster y connected_users son puntos finales API Clinet1 es un nombre que puedes dar a response_type siempre debe ser token
Una vez que lo golpees, se renderizará una pantalla como esta,
Ingrese los detalles de su administrador y haga clic en aceptar
Luego, en la url encontrará un cambio como este
http://localhost:5280/oauth/authorization_token?access_token=Ra9W9aRgeoUgIpN0P68SIGDaatDIVcgB&token_type=bearer&expires_in=3600&scope=get_roster%20connected_users&state=
Puede ver un token de acceso allí y hacer un curl para obtener los usuarios conectados. (Escriba este comando en su terminal)
curl -v POST -H "X-Admin: true" -H "Authorization: Bearer Ra9W9aRgeoUgIpN0P68SIGDaatDIVcgB" http://localhost:5280/api/connected_users -d ''[]''
Obtendrás una respuesta Json con todos los usuarios conectados.
Así es como debes hacer llamadas a la API en ejabberd. Espero que esto ayude :)