【问题标题】:ejabberd reports bad request/modify when attempting to delete user尝试删除用户时,ejabberd 报告错误的请求/修改
【发布时间】:2018-01-06 21:46:46
【问题描述】:

我正在尝试使用 ejabberd 删除用户,但收到 400/modify bad-request 错误。据我所知,Smack 发送的节是由规范 [1] 发出的;它也适用于 OpenFire。

Ejabberd 在 rroemhild/docker-ejabberd docker 容器版本 17.03-1(可用的最新版本;我不使用 processone 容器的原因参见 [2])中运行,配置文件从那里存入(部分已删除;完整在 [3] 处复制) hosts: - "xmppserver.com" auth_method: - internal acl: admin: user: - "admin": "xmppserver.com" - "adminaccount": "xmppserver.com" local: user_regexp: "" access: (nothing of interest here) modules: mod_adhoc: {} host_config: "xmppserver.com": domain_certfile: "/opt/ejabberd/ssl/xmppserver.com.pem" (是的,一旦我确认 SSL 对我有效,我将正确配置它)

首先我确认用户有权发出管理命令:

已发送 <iq to='xmppserver.com' id='Ghtu9-15' type='get'> <query xmlns='http://jabber.org/protocol/disco#items' node='http://jabber.org/protocol/commands'/> </iq>

收到 <iq xml:lang='en' to='appserver@xmppserver.com/39058022031067483561501494598609310' from='xmppserver.com' type='result' id='Ghtu9-15'> <query node='http://jabber.org/protocol/commands' xmlns='http://jabber.org/protocol/disco#items'> ... <item node='http://jabber.org/protocol/admin#add-user' name='Add User' jid='xmppserver.com'/> <item node='http://jabber.org/protocol/admin#delete-user' name='Delete User' jid='xmppserver.com'/> ... </query> </iq>

如您所见,delete-user 命令被列为可用。然后我继续删除一个用户:

已发送 <iq to='xmppserver.com' id='2vM3f-17' type='set'> <command xmlns='http://jabber.org/protocol/commands' action='execute' node='http://jabber.org/protocol/admin#delete-user'></command> </iq>

收到 <iq xml:lang='en' to='adminaccount@xmppserver.com/163923254889085958281501260654263394' from='xmppserver.com' type='result' id='2vM3f-17'> <command status='executing' sessionid='2017-07-28T16:51:12.784282Z' node='http://jabber.org/protocol/admin#delete-user' xmlns='http://jabber.org/protocol/commands'> <actions execute='complete'> <complete/> </actions> <x type='form' xmlns='jabber:x:data'> <title>Delete User</title> <field var='FORM_TYPE' type='hidden'> <value>http://jabber.org/protocol/admin</value> </field> <field var='accountjids' type='jid-multi' label='Jabber ID'> <required/> </field> </x> </command> </iq>

这里我不确定 标签是关于什么的; XEP-133 中没有提到它。除此之外,表格看起来不错。

已发送 <iq to='xmppserver.com' id='2vM3f-19' type='set'> <command xmlns='http://jabber.org/protocol/commands' sessionid='2017-07-28T16:51:12.784282Z' node='http://jabber.org/protocol/admin#delete-user'> <x xmlns='jabber:x:data' type='submit'> <field var='FORM_TYPE' type='hidden'> <value>http://jabber.org/protocol/admin</value> </field> <field var='accountjids' type='jid-multi'> <value>jid@xmppserver.com</value> </field> </x> </command> </iq>

收到 <iq xml:lang='en' to='adminaccount@xmppserver.com/163923254889085958281501260654263394' from='xmppserver.com' type='error' id='2vM3f-19'> <command sessionid='2017-07-28T16:51:12.784282Z' node='http://jabber.org/protocol/admin#delete-user' xmlns='http://jabber.org/protocol/commands'> <x type='submit' xmlns='jabber:x:data'> <field var='FORM_TYPE' type='hidden'> <value>http://jabber.org/protocol/admin</value> </field> <field var='accountjids' type='jid-multi'> <value>jid@xmppserver.com</value> </field> </x> </command> <error code='400' type='modify'> <bad-request xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> </error> </iq> 我也尝试发送裸 JID(即没有主机名部分),但结果是一样的。

这不是一个特别有用的错误消息。

我做错了什么?

[1]https://xmpp.org/extensions/xep-0133.html#delete-user

[2]https://github.com/processone/ejabberd/issues/1890

[3]https://pastebin.com/5D0rEbFR

【问题讨论】:

    标签: runtime-error xmpp ejabberd smack


    【解决方案1】:

    显然 是 eJabberD 表示“未找到用户,没有可删除的内容”的方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-07
      • 1970-01-01
      • 2021-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-02
      相关资源
      最近更新 更多