【问题标题】:Is there an ejabberd python library?有没有 ejabberd python 库?
【发布时间】:2011-07-05 17:11:04
【问题描述】:

是否有一个 ejabberd python 库,我可以在其中以编程方式从 python 注册用户到 ejabberd?

现在我正在使用 python 命令模块执行“ejabberdctl register”命令。

【问题讨论】:

    标签: python ejabberd


    【解决方案1】:

    XMPP XEP-0077

    如果您在 Ejabberd 服务器上为 In-Band registration 激活了 mod_register,那么,正如 @Drake 所指出的,您可以使用 XMPP 库来注册用户。

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

    HTTP

    如果您已激活mod_register_web,则可以向http://<SERVERNAME>:5280/admin/server/<VIRTUALHOSTNAME>/users/ 发送HTTP POST 请求。此 URL 需要以下 3 个参数:

    • 新用户名
    • 新用户密码
    • 添加新用户

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

    假设您有一个名为 userejabberd admin user 和密码 password,使用 Python 的 requests HTTP library,您可以执行以下操作:

    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 的最后一部分是用户而不是用户:url = "http://%s:5280/admin/server/%s/users/" % (server, virtualhost)
    • 尝试这样做,我得到 200 OK 响应,但用户没有注册,我得到注册页面的 HTML 作为响应。你能指导我解决问题吗
    【解决方案2】:

    ejabberd 是一个 Jabber/XMPP 即时消息服务器。这意味着您可以使用任何 XMPP 模块,例如 xmppy

    另外,请查看此线程:Which is the most mature Python XMPP library for a GChat client?

    【讨论】:

      猜你喜欢
      • 2010-11-29
      • 1970-01-01
      • 2015-02-13
      • 2021-01-10
      • 1970-01-01
      • 2013-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多