是否有ejabberd的Python库?

8 投票
2 回答
3669 浏览
提问于 2025-04-16 12:40

有没有一个可以让我们用Python程序直接在ejabberd上注册用户的库?

现在我是在用Python的命令模块执行“ejabberdctl register”这个命令。

2 个回答

3

ejabberd 是一个 Jabber/XMPP 即时通讯服务器。这意味着你可以使用任何 XMPP 模块,比如 xmppy

另外,可以看看这个讨论: 哪个是最成熟的 Python XMPP 库,适合做 GChat 客户端?

12

XMPP XEP-0077

如果你在你的Ejabberd服务器上启用了mod_register,也就是支持内联注册,那么正如@Drake所提到的,你可以使用一个XMPP库来注册用户。

在Python中,我推荐使用Sleek XMPP。它的入门示例是一个不错的起点。

HTTP

如果你启用了mod_register_web,那么你可以向这个地址发送一个HTTP POST请求:http://<SERVERNAME>:5280/admin/server/<VIRTUALHOSTNAME>/users/。这个网址需要你提供以下三个参数:

  • newusername
  • newuserpassword
  • addnewuser

其中,addnewuser参数的值应该是字符串“Add User”。

假设你有一个名为userejabberd管理员用户,密码是password,那么使用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

撰写回答