有没有一个ejabberd的Python库?

8

是否有一个ejabberd的Python库,可以让我通过Python编程自动注册用户到ejabberd?

目前,我正在使用Python命令模块执行“ejabberdctl register”命令。

2个回答

12

XMPP XEP-0077

如果您已经在您的Ejabberd服务器上启用了mod_register以进行In-Band注册,则可以像@Drake指出的那样,使用XMPP库注册用户。

在Python中,我推荐使用Sleek XMPPGetting started examples是一个很好的起点。

HTTP

如果您已经启用了mod_register_web,那么您可以向http://<SERVERNAME>:5280/admin/server/<VIRTUALHOSTNAME>/users/发送HTTP POST请求。该URL需要以下3个参数:

  • newusername
  • newuserpassword
  • addnewuser

其中addnewuser参数的预期值似乎是字符串“Add User”。

假设您有一个名为user且密码为passwordejabberd管理员用户,则可以使用Python的requests HTTP库执行以下操作:

import requests
from requests.auth import HTTPBasicAuth

server = "NAME OF YOUR EJABBERD SERVER"
virtualhost = "NAME OF YOUR EJABBERD HOST"
url = "http://%s:5280/admin/server/%s/user/" % (server, virtualhost)
auth = HTTPBasicAuth("user", "password")
data = {
    'newusername': "new_user",
    'newuserpassword': "new_password",
    'addnewuser': "Add User"
}
resp = requests.post(url, data=data, auth=auth)


assert resp.status_code == 200

代码可以工作,但是URL的最后一部分是users而不是user:url = "http://%s:5280/admin/server/%s/users/" % (server, virtualhost) - Julian Espinel
尝试这样做,我得到了200 OK的响应,但用户没有被注册,我收到了注册页面的HTML响应。请问您能指导我可能出现了什么问题吗? - ayan_2587

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接