Project

General

Profile

"Field muc... is not declared in form 'null' error when trying to submit the configuration file

Hamid Alimohammadi
Added almost 3 years ago

Hi,

When we try to submit Configuration Form in a moderated room (like Example 159 in the http://xmpp.org/extensions/xep-0045.html#createroom), The server does not set the Form for three Field Values: muc#roomconfig_getmemberlist, muc#roomconfig_allowinvites and muc#roomconfig_presencebroadcast

And we get the following responses from the tigase.log.0:

2016-04-24 17:41:41.039 [in_10-muc]        Form.copyValuesFrom()              WARNING:  Field muc#roomconfig_getmemberlist is not declared in form 'null'!

2016-04-24 17:41:41.039 [in_10-muc]        Form.copyValuesFrom()              WARNING:  Field muc#roomconfig_allowinvites is not declared in form 'null'!

We are using tigase-server-7.0.2-b3821 and our default muc configurations in init.properties are:

--comp-class-1 = tigase.muc.cluster.MUCComponentClustered
--comp-name-1 = muc
muc/default_room_config/muc#roomconfig_persistentroom=true
muc/default_room_config/muc#roomconfig_publicroom=false
muc/default_room_config/muc#roomconfig_membersonly=true
muc/default_room_config/muc#roomconfig_changesubject=true
muc/default_room_config/muc#maxhistoryfetch=500
muc/default_room_config/muc#roomconfig_roomname=Group
muc/muc-allow-chat-states[B]=true

Do you know what may case the problem?

Thanks in advance


Replies (5)

(1)

Added by Wojciech Kapcia TigaseTeam almost 3 years ago

Please follow Example 156. Owner Requests Configuration Form and @Example 157. Service Sends Configuration Form_ and submit form that is returned from the server.

The result for those errors is simply that those configuration options are not available/supported in Tigase.

(1)

Added by Hamid Alimohammadi almost 3 years ago

Thank you Wojciech for the reply.

Actually, my colleague working on MUC has followed Example 156 and Example 157 but I am just a little confused as in the example 157, the muc#roomconfig_getmemberlist is an option.

Do you mean we have followed the Examples 156 and 157 properly, but in the current Tigase version it is not supported yet?

Thank you again for help

Added by Wojciech Kapcia TigaseTeam almost 3 years ago

Hamid Alimohammadi wrote:

Actually, my colleague working on MUC has followed Example 156 and Example 157 but I am just a little confused as in the example 157, the muc#roomconfig_getmemberlist is an option.

As the name suggests - this is example (response from some server). You should always base your queries on the forms returned from the server!

Do you mean we have followed the Examples 156 and 157 properly, but in the current Tigase version it is not supported yet?

Those are examples! You should use Example 156 to obtain form specific to the server and then submit it back.

(1)

Added by Hamid Alimohammadi almost 3 years ago

Thanks again for your replay.

Sorry, my question was not clear and it caused a misunderstanding.

we obtain the following form specific to our server:

<iq id='uid-90bdeaf0-00000010' to='911111111111@example.net/*' from='43694385537270@muc.example.net' xmlns='jabber:client' type='result'>
    <query xmlns='http://jabber.org/protocol/muc#owner'>
        <x xmlns='jabber:x:data' type='form'>
            <field label='Natural-Language Room Name' var='muc#roomconfig_roomname' type='text-single'>
                <value>Group</value>
            </field>
            <field label='Short Description of Room' var='muc#roomconfig_roomdesc' type='text-single'>
                <value/>
            </field>
            <field label='Make Room Persistent?' var='muc#roomconfig_persistentroom' type='boolean'>
                <value>true</value>
            </field>
            <field label='Make Room Publicly Searchable?' var='muc#roomconfig_publicroom' type='boolean'>
                <value>false</value>
            </field>
            <field label='Make Room Moderated?' var='muc#roomconfig_moderatedroom' type='boolean'>
                <value>0</value>
            </field>
            <field label='Make Room Members Only?' var='muc#roomconfig_membersonly' type='boolean'>
                <value>true</value>
            </field>
            <field label='Password Required to Enter?' var='muc#roomconfig_passwordprotectedroom' type='boolean'>
                <value>0</value>
            </field>
            <field label='Password' var='muc#roomconfig_roomsecret' type='text-single'>
                <value/>
            </field>
            <field label='Room anonymity level:' var='muc#roomconfig_anonymity' type='list-single'>
                <value>semianonymous</value>
                <option label='Non-Anonymous Room'>
                    <value>nonanonymous</value>
                </option>
                <option label='Semi-Anonymous Room'>
                    <value>semianonymous</value>
                </option>
                <option label='Fully-Anonymous Room'>
                    <value>fullanonymous</value>
                </option>
            </field>
            <field label='Allow Occupants to Change Subject?' var='muc#roomconfig_changesubject' type='boolean'>
                <value>true</value>
            </field>
            <field label='Enable Public Logging?' var='muc#roomconfig_enablelogging' type='boolean'>
                <value>0</value>
            </field>
            <field label='Logging format:' var='logging_format' type='list-single'>
                <value>html</value>
                <option label='HTML'>
                    <value>html</value>
                </option>
                <option label='Plain text'>
                    <value>plain</value>
                </option>
            </field>
            <field label='Maximum Number of History Messages Returned by Room' var='muc#maxhistoryfetch' type='text-single'>
                <value>500</value>
            </field>
            <field label='Presence delivery logic' var='tigase#presence_delivery_logic' type='list-single'>
                <value>PREFERE_PRIORITY</value>
                <option label='PREFERE_LAST'>
                    <value>PREFERE_LAST</value>
                </option>
                <option label='PREFERE_PRIORITY'>
                    <value>PREFERE_PRIORITY</value>
                </option>
            </field>
            <field label='Enable filtering of presence (broadcasting presence only between selected groups' var='tigase#presence_filtering' type='boolean'>
                <value>0</value>
            </field>
            <field label='Affiliations for which presence should be delivered' var='tigase#presence_filtered_affiliations' type='list-multi'>
                <option label='admin'>
                    <value>admin</value>
                </option>
                <option label='member'>
                    <value>member</value>
                </option>
                <option label='none'>
                    <value>none</value>
                </option>
                <option label='outcast'>
                    <value>outcast</value>
                </option>
                <option label='owner'>
                    <value>owner</value>
                </option>
            </field>
        </x>
    </query>
</iq>

And then we submit it back with the following stanza:

<iq to='43694385537270@muc.example.net' id='uid-90bdeaf0-00000011' type='set' from='911111111111@example.net/*' xmlns='jabber:client'>
    <query xmlns='http://jabber.org/protocol/muc#owner'>
        <x xmlns='jabber:x:data' type='submit'>
            <field type='text-single' var='muc#roomconfig_roomname' label='Natural-Language Room Name'>
                <value>testgroup</value>
            </field>
            <field type='text-single' var='muc#roomconfig_roomdesc' label='Short Description of Room'>
                <value/>
            </field>
            <field type='boolean' var='muc#roomconfig_persistentroom' label='Make Room Persistent?'>
                <value>1</value>
            </field>
            <field type='boolean' var='muc#roomconfig_publicroom' label='Make Room Publicly Searchable?'>
                <value>0</value>
            </field>
            <field type='boolean' var='muc#roomconfig_moderatedroom' label='Make Room Moderated?'>
                <value>0</value>
            </field>
            <field type='boolean' var='muc#roomconfig_membersonly' label='Make Room Members Only?'>
                <value>1</value>
            </field>
            <field type='boolean' var='muc#roomconfig_passwordprotectedroom' label='Password Required to Enter?'>
                <value>0</value>
            </field>
            <field type='text-single' var='muc#roomconfig_roomsecret' label='Password'>
                <value/>
            </field>
            <field type='list-single' var='muc#roomconfig_anonymity' label='Room anonymity level:'>
                <option label='Fully-Anonymous Room'>
                    <value>fullanonymous</value>
                </option>
                <option label='Non-Anonymous Room'>
                    <value>nonanonymous</value>
                </option>
                <option label='Semi-Anonymous Room'>
                    <value>semianonymous</value>
                </option>
                <value>semianonymous</value>
            </field>
            <field type='boolean' var='muc#roomconfig_changesubject' label='Allow Occupants to Change Subject?'>
                <value>1</value>
            </field>
            <field type='boolean' var='muc#roomconfig_enablelogging' label='Enable Public Logging?'>
                <value>0</value>
            </field>
            <field type='list-single' var='logging_format' label='Logging format:'>
                <option label='HTML'>
                    <value>html</value>
                </option>
                <option label='Plain text'>
                    <value>plain</value>
                </option>
                <value>html</value>
            </field>
            <field type='text-single' var='muc#maxhistoryfetch' label='Maximum Number of History Messages Returned by Room'>
                <value>500</value>
            </field>
            <field type='list-single' var='tigase#presence_delivery_logic' label='Presence delivery logic'>
                <option label='PREFERE_LAST'>
                    <value>PREFERE_LAST</value>
                </option>
                <option label='PREFERE_PRIORITY'>
                    <value>PREFERE_PRIORITY</value>
                </option>
                <value>PREFERE_PRIORITY</value>
            </field>
            <field type='boolean' var='tigase#presence_filtering' label='Enable filtering of presence (broadcasting presence only between selected groups'>
                <value>0</value>
            </field>
            <field type='list-multi' var='tigase#presence_filtered_affiliations' label='Affiliations for which presence should be delivered'>
                <option label='admin'>
                    <value>admin</value>
                </option>
                <option label='member'>
                    <value>member</value>
                </option>
                <option label='none'>
                    <value>none</value>
                </option>
                <option label='outcast'>
                    <value>outcast</value>
                </option>
                <option label='owner'>
                    <value>owner</value>
                </option>
            </field>
            <field type='boolean' var='muc#roomconfig_allowinvites'>
                <value>1</value>
            </field>
            <field type='list-multi' var='muc#roomconfig_getmemberlist'>
                <value>participant</value>
            </field>
        </x>
    </query>
</iq>

And service informs:

<iq id='uid-90bdeaf0-00000011' to='911111111111@example.net/*' xmlns='jabber:client' from='43694385537270@muc.example.net' type='result'/>

The server sets the form properly,except for three Field values: muc#roomconfig_getmemberlist@, @muc#roomconfig_allowinvites and @muc#roomconfig_presencebroadcast@.

As you mentioned in this post "The result for those errors is simply that those configuration options are not available/supported in Tigase."

My question: Is there any chance to have any of three options in a Tigase versions in future? Or any workaround solution to retrieve the member_list of a group?

Thanks again for your help

(1)

Added by Wojciech Kapcia TigaseTeam almost 3 years ago

I've added tickes #4146 and #4147 for the fist two options (memberlist and allowinvites). The last one (presencebroadcast) is already supported but is handled a bit differently - names of the fields are different and presence filtering is based on the affiliations and not effective roles

<field label='Enable filtering of presence (broadcasting presence only between selected groups' var='tigase#presence_filtering' type='boolean'>
    <value>0</value>
</field>
<field label='Affiliations for which presence should be delivered' var='tigase#presence_filtered_affiliations' type='list-multi'>
    <option label='admin'>
        <value>admin</value>
    </option>
    <option label='member'>
        <value>member</value>
    </option>
    <option label='none'>
        <value>none</value>
    </option>
    <option label='outcast'>
        <value>outcast</value>
    </option>
    <option label='owner'>
        <value>owner</value>
    </option>
</field>

I've created to address that #4147.

Please note that the due date of the tickets is "rough estimate" and those are not definite. If you are interested in more prompt implementation and adding support for those options earlier please contact us directly through the contact form (please also include reference to this forum topic).

    (1-5/5)