Fetching ejabberd MUC members list

2019-09-15 16:38发布

There seem to be some threads around this and it seems very obvious an issue to be a problem, but somehow in MUCs / rooms created by my ejabberd mobile clients, the creator / owner is able to fetch the members list but when I fetch the same from the members, there is an administrative privileges required error.

Below are the request and response stanzas as well as the room options. Can someone advise please if there is something I'm overlooking here ... many thanks?

Request from member:

<iq 
  type="get"
  to="1479313326166_what%20a%20day@conference.example.com" 
  id="7BB7F8C8-B47F-4C0C-9E4D-8CAC3A5287FF">
    <query xmlns="http://jabber.org/protocol/muc#admin">
      <item 
        affiliation="member">
      </item>
    </query>
</iq>

Response to member:

<iq xmlns="jabber:client" 
  from="1479313326166_what%20a%20day@conference.example.com" 
  to="group-member@example.com/9A36B83F-0B1B-484E-BFB2-C0F1C7148274" 
  id="7BB7F8C8-B47F-4C0C-9E4D-8CAC3A5287FF"
  type="error">
    <query xmlns="http://jabber.org/protocol/muc#admin">
      <item affiliation="member"></item>
    </query>
    <error code="403" type="auth">
      <forbidden xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"></forbidden>
      <text xmlns="urn:ietf:params:xml:ns:xmpp-stanzas">
        Administrator privileges required
      </text>
    </error>
</iq>

Room options:

> /sbin/ejabberdctl get_room_options 1479313326166_what%20a%20day conference.example.com
title   
description 
allow_change_subj   true
allow_query_users   true
allow_private_messages  true
allow_private_messages_from_visitors    anyone
allow_visitor_status    true
allow_visitor_nickchange    true
public  true
public_list true
persistent  true
moderated   true
captcha_protected   false
members_by_default  true
members_only    true
allow_user_invites  false
allow_subscription  true
password_protected  false
password    
anonymous   true
presence_broadcast  [moderator,participant,visitor]
allow_voice_requests    true
voice_request_min_interval  1800
max_users   200
logging false
vcard   <vCard xmlns='vcard-temp'><NICKNAME>What a day</NICKNAME><NOTE/></vCard>
captcha_whitelist   {0,nil}
mam false

1条回答
狗以群分
2楼-- · 2019-09-15 16:56

I tried configure a room via ConfigurationForm and ServerDefaultConfig, fortunetely never got your error and fetchMembers always works fine. There might be some very silly stuff that hard to find out. Maybe try to clear the db or restart the server to start over.

<x xmlns=\"jabber:x:data\" type=\"form\">
      <title>Configuration of room 1479231695@conference.192.168.100.226</title>
      <field type=\"hidden\" var=\"FORM_TYPE\">
        <value>http://jabber.org/protocol/muc#roomconfig</value>
      </field>
      <field type=\"text-single\" label=\"Room title\" var=\"muc#roomconfig_roomname\">
        <value></value>
      </field>
      <field type=\"text-single\" label=\"Room description\" var=\"muc#roomconfig_roomdesc\">
        <value></value>
      </field>
      <field type=\"boolean\" label=\"Make room persistent\" var=\"muc#roomconfig_persistentroom\">
        <value>1</value>
      </field>
      <field type=\"boolean\" label=\"Make room public searchable\" var=\"muc#roomconfig_publicroom\">
        <value>0</value>
      </field>
      <field type=\"boolean\" label=\"Make participants list public\" var=\"public_list\">
        <value>0</value>
      </field>
      <field type=\"boolean\" label=\"Make room password protected\" var=\"muc#roomconfig_passwordprotectedroom\">
        <value>0</value>
      </field>
      <field type=\"text-private\" label=\"Password\" var=\"muc#roomconfig_roomsecret\">
        <value></value>
      </field>
      <field type=\"list-single\" label=\"Maximum Number of Occupants\" var=\"muc#roomconfig_maxusers\">
        <value>200</value>
        <option label=\"5\">
          <value>5</value>
        </option>
        <option label=\"10\">
          <value>10</value>
        </option>
        <option label=\"20\">
          <value>20</value>
        </option>
        <option label=\"30\">
          <value>30</value>
        </option>
        <option label=\"50\">
          <value>50</value>
        </option>
        <option label=\"100\">
          <value>100</value>
        </option>
        <option label=\"200\">
          <value>200</value>
        </option>
      </field>
      <field type=\"list-single\" label=\"Present real Jabber IDs to\" var=\"muc#roomconfig_whois\">
        <option label=\"moderators only\">
          <value>moderators</value>
        </option>
        <option label=\"anyone\">
          <value>anyone</value>
        </option>
        <value>anyone</value>
      </field>
      <field type=\"list-multi\" label=\"Roles for which Presence is Broadcasted\" var=\"muc#roomconfig_presencebroadcast\">
        <value>moderator</value>
        <value>participant</value>
        <value>visitor</value>
        <option label=\"Moderator\">
          <value>moderator</value>
        </option>
        <option label=\"Participant\">
          <value>participant</value>
        </option>
        <option label=\"Visitor\">
          <value>visitor</value>
        </option>
      </field>
      <field type=\"boolean\" label=\"Make room members-only\" var=\"muc#roomconfig_membersonly\">
        <value>1</value>
      </field>
      <field type=\"boolean\" label=\"Make room moderated\" var=\"muc#roomconfig_moderatedroom\">
        <value>0</value>
      </field>
      <field type=\"boolean\" label=\"Default users as participants\" var=\"members_by_default\">
        <value>1</value>
      </field>
      <field type=\"boolean\" label=\"Allow users to change the subject\" var=\"muc#roomconfig_changesubject\">
        <value>1</value>
      </field>
      <field type=\"boolean\" label=\"Allow users to send private messages\" var=\"allow_private_messages\">
        <value>1</value>
      </field>
      <field type=\"list-single\" label=\"Allow visitors to send private messages to\" var=\"allow_private_messages_from_visitors\">
        <value>anyone</value>
        <option label=\"nobody\">
          <value>nobody</value>
        </option>
        <option label=\"moderators only\">
          <value>moderators</value>
        </option>
        <option label=\"anyone\">
          <value>anyone</value>
        </option>
      </field>
      <field type=\"boolean\" label=\"Allow users to query other users\" var=\"allow_query_users\">
        <value>1</value>
      </field>
      <field type=\"boolean\" label=\"Allow users to send invites\" var=\"muc#roomconfig_allowinvites\">
        <value>1</value>
      </field>
      <field type=\"boolean\" label=\"Allow visitors to send status text in presence updates\" var=\"muc#roomconfig_allowvisitorstatus\">
        <value>1</value>
      </field>
      <field type=\"boolean\" label=\"Allow visitors to change nickname\" var=\"muc#roomconfig_allowvisitornickchange\">
        <value>1</value>
      </field>
      <field type=\"boolean\" label=\"Allow visitors to send voice requests\" var=\"muc#roomconfig_allowvoicerequests\">
        <value>1</value>
      </field>
      <field type=\"text-single\" label=\"Minimum interval between voice requests (in seconds)\" var=\"muc#roomconfig_voicerequestmininterval\">
        <value>1800</value>
      </field>
      <field type=\"jid-multi\" label=\"Exclude Jabber IDs from CAPTCHA challenge\" var=\"muc#roomconfig_captcha_whitelist\"></field>
    </x>

mod_muc:
    ## host: "conference.@HOST@"
    access:
      - allow
    access_admin:
      - allow: admin
    access_create: muc_create
    access_persistent: muc_create
    history_size: 0
    default_room_options:
        allow_user_invites: true
        anonymous: false
        members_by_default: true
        members_only: true
        moderated: false
        persistent: true
        public: false
        public_list: false
查看更多
登录 后发表回答