【问题标题】:Remote roster management using smack and ejabberd使用 smack 和 ejabberd 进行远程名册管理
【发布时间】:2015-01-07 17:12:40
【问题描述】:

我有一个用例,作为 ejabberd 中的管理员用户,我应该能够为所有其他用户编辑花名册。我正在使用 smack 库通过 TCP 连接连接到 ejabberd 服务器。

在这里阅读 ejabberd 14.07 的文档是它在 mod_roster 下所说的:

经理 可以使用远程名册管理 (XEP-0321) 管理用户名册的远程实体列表。实施的协议部分是: 4.2。远程实体请求当前用户的名册。 4.3.用户更新名册。 4.4.远程实体更新用户的名册。远程实体 cab 仅获取或修改与实体具有相同域的名册项目。默认值为:[]。 此示例配置启用具有当前 ID 存储的名册版本控制。 ICQ 和 MSN 传输可以为任何本地帐户获取 ICQ 和 MSN 联系人、添加或删除它们:

我在 ejabberd 中进行了配置更改并发送了以下数据包:

<iq id='PCe38-23' to='%2B918130143322@XXX.XXX.XXX/Smack' type='set'>
          <query xmlns='jabber:iq:roster'>
            <item jid='%2B918130143331@XXX.XXX.XXX/Smack'
                  name='Siddharth Banerjee'
                  subscription='both'>
            </item>
          </query>
            </iq>

<iq id='PCe38-24' to='%2B918130143331@XXX.XXX.XXX/Smack' type='set'>
          <query xmlns='jabber:iq:roster'>
            <item jid='%2B918130143322@XXX.XXX.XXX/Smack'
                  name='deco'
                  subscription='both'>
            </item>
          </query>
            </iq>

但我得到以下信息:

<iq from='%2B918130143322@XXX.XXX.XXX/Smack' to='admin1@XXX.XXX.XXX/75250b26-a52a-4e1d-a5fb-4b263cd2f451' type='error' id='PCe38-23'>
          <query xmlns='jabber:iq:roster'>
            <item jid='%2B918130143331@XXX.XXX.XXX/Smack' name='Siddharth Banerjee' subscription='both'>
            </item>
          </query>
            <error code='503' type='cancel'><service-unavailable xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/></error></iq>

如何使用 smack 修改其他用户的名册?

请指教。

【问题讨论】:

    标签: xmpp ejabberd smack


    【解决方案1】:

    我认为你误解了 XEP-0321 的目的。主要是让网关可以操作用户名册的相关部分。 例如,在服务器上运行的 ICQ 网关可以仅为该子集(即@icq.domain.net 名册条目,而不是@domain.net)操纵用户的名册条目(在授权后)。

    这不是操纵整个用户名册的通用规范。

    对于我在您的帖子中读到的内容,您始终使用相同的域,所以我猜您正试图从另一个用户那里获取访​​问权限并操纵用户名册。 根据 XEP-0321,它无法工作。

    【讨论】:

      【解决方案2】:

      https://blog.process-one.net/roster_versioning_support_for_ejabberd/

      此示例配置启用具有当前 ID 存储的名册版本控制。 ICQ 和 MSN 传输可以为任何本地帐户获取 ICQ 和 MSN 联系人、添加或删除它们:

      modules:
        ...
        mod_roster:
          versioning: true
          store_current_id: true
          managers:
           - "icq.example.org"
           - "msn.example.org"
        ...
      

      使用此示例配置,只有管理员可以管理他们的名册;其他人不能修改名册:

      acl: 行政: 用户: - “莎拉”:“example.org” 使用权: 名册: 管理员:允许

      模块: ... mod_roster: 访问:名册

      【讨论】:

        猜你喜欢
        • 2015-01-08
        • 1970-01-01
        • 2013-11-20
        • 1970-01-01
        • 2013-02-23
        • 2015-09-24
        • 2012-09-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多