是否有ejabberd的Python库?
有没有一个可以让我们用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”。
假设你有一个名为user
的ejabberd管理员用户,密码是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