2014-12-10 25 views
8

Come un occupante/membro, ho bisogno di conoscere tutti i "membri" in camera con ejabberd-14.xscoperta membri della camera MUC come occupante

ho seguito http://xmpp.org/extensions/xep-0045.html#getmemberlist

mi sono proibito (401) per le seguenti stanze - privilegio Admin richiesto

<iq from='[email protected]/desktop' 
    id='member3' 
    to='[email protected]' 
    type='get'> 
    <query xmlns='http://jabber.org/protocol/muc#admin'> 
    <item affiliation='member'/> 
    </query> 
</iq> 

Se cambio

<query xmlns='http://jabber.org/protocol/muc#admin'> 

dall'amministratore allo spazio dei nomi utente, quindi ricevo il codice di stato 501 - Caratteristica non implementata

Sapresti come posso ottenere i membri di una stanza come occupante o membro?

Non sono un amministratore/moderatore in questo caso d'uso.

XEP-0045 fa dire:

Nota: Un servizio dovrebbe anche restituire l'elenco dei membri a qualsiasi occupante in una soli soci camera; Ad esempio, NON DEVE generare un errore quando un membro della stanza richiede l'elenco dei membri. Questa funzionalità può aiutare i clienti a mostrare tutti i membri esistenti anche se alcuni di non sono nella stanza, ad es. per aiutare un membro a determinare se un altro utente deve essere invitato. Un servizio DOVREBBE anche consentire a qualsiasi membro di recuperare l'elenco dei membri anche se non ancora un occupante.

risposta

0

Per accedere all'elenco di affiliazione è necessario essere almeno un membro. Non importa se sei o meno un occupante (cioè nella stanza).

Si noti che un'affiliazione (come "membro") è un'impostazione persistente che deve essere specificata esplicitamente alle persone, che in caso contrario si impostano su "nessuno". In una normale stanza senza restrizioni, this setting doesn't have any other effect than allowing you to retrieve the member list. L'elenco dei membri non è correlato all'elenco degli occupanti.

(Se volete semplicemente sapere chi è attualmente in sala, è necessario inviare una query con lo spazio dei nomi http://jabber.org/protocol/disco#items invece di muc#admin.)

Esempio (appena provato sul mio server ejabberd). Il tentativo di interrogare l'elenco con un account non affiliati:

<iq from='[email protected]/desktop' 
    id='member3' 
    to='[email protected]' 
    type='get'> 
    <query xmlns='http://jabber.org/protocol/muc#admin'> 
    <item affiliation='member'/> 
    </query> 
</iq> 
<iq from='[email protected]' 
    to='[email protected]/desktop' 
    type='error' 
    id='member3'> 
    <query xmlns='http://jabber.org/protocol/muc#admin'> 
    <item affiliation='member'/> 
    </query> 
    <error code='403' type='auth'> 
    <forbidden/> 
    <text>Administrator privileges required</text> 
    </error> 
</iq> 

Utilizzando un privilegiato (proprietario della camera) conto di concedere i privilegi che gli primo conto:

<iq from='[email protected]/desktop' 
    type='set' 
    to='[email protected]' 
    id='member4'> 
    <query xmlns='http://jabber.org/protocol/muc#admin'> 
    <item jid='[email protected]' affiliation='member'/> 
    </query> 
</iq> 

<iq to='[email protected]/desktop' 
    from='[email protected].shakespeare.lit' 
    type='result' id='member4'/> 

di riprovare:

<iq from='[email protected]/desktop' 
    type='get' 
    to='[email protected]' 
    id='member5'> 
    <query xmlns='http://jabber.org/protocol/muc#admin'> 
    <item affiliation='member'/> 
    </query> 
</iq> 

<iq to='[email protected]/desktop' 
    from='[email protected]' 
    type='result' 
    id='member5'> 
    <query xmlns='http://jabber.org/protocol/muc#admin'> 
    <item jid='[email protected]' affiliation='member'/> 
    </query> 
</iq>