Совместимость mod_vcard и JEP-0055: Jabber Search

В JEP-0055 указана XML схема
7. XML Schema
#?xml version='1.0' encoding='UTF-8'#
#xs:schema
---skip---
#s:element name='item'#
#xs:complexType#
#xs:all#
#xs:element name='first' type='xs:string'/#
#xs:element name='last' type='xs:string'/#
#xs:element name='nick' type='xs:string'/#
#xs:element name='email' type='xs:string'/#
#/xs:all#
#xs:attribute name='jid' type='xs:string' use='required'/#
#/xs:complexType#
#/xs:element#
#/xs:schema#
и замечание "6.2 Field Standardization", о резервировании этих типов
Однако мы видим в модуле mod_vcard
-record(vcard_search, {us,
user, luser,
fn, lfn,
family, lfamily,
given, lgiven,
middle, lmiddle,
nickname, lnickname,
bday, lbday,
ctry, lctry,
locality, llocality,
email, lemail,
orgname, lorgname,
orgunit, lorgunit
}).
Необходимо подкоректировать модуль mod_vcard для полной совместимости.

Читай раздел 3

Читай раздел 3 JEP-0055 до просветления.

JEP-0055

В раделе 3 явно указано, что допускаются измения и добаление полей поиска, но поиск по зарезервированным полям должен осуществляться ВСЕГДА.
"Implementations supporting this extensibility mechanism SHOULD support field standardization as well."

Re: JEP-0055

Dimitry wrote:

В раделе 3 явно указано, что допускаются измения и добаление полей поиска, но поиск по зарезервированным полям должен осуществляться ВСЕГДА.
"Implementations supporting this extensibility mechanism SHOULD support field standardization as well."

Я вижу только один MUST: "a host MUST NOT add new fields to the 'jabber:iq:search' namespace."
Ваши претензии неуместны.

3. Extensibility

3. Extensibility
The fields defined in the 'jabber:iq:search' namespace are strictly limited to those specified in the schema. If a host needs to gather additional information, Data Forms SHOULD be used; a host MUST NOT add new fields to the 'jabber:iq:search' namespace. Support for extensibility via Data Forms is RECOMMENDED, but is not required for compliance with this JEP.

The extensibility mechanism for searching makes use of a hidden FORM_TYPE field for the purpose of standardizing field names within the form, as defined in Field Standardization for Data Forms [2]. Implementations supporting this extensibility mechanism SHOULD support field standardization as well.
Как должны мы трактовать последний обзац?

Field standardization не

Field standardization не имеет ничего общего со схемой для namespace jabber:iq:search.

Re: Field standardization

Хорошо, вопрос поставим так.
Все сервера для jabber:iq:search используют поля first,last,nick,email.
Почему ejabberd стал использовать другое написание этих полей?

Ejabberd не

Ejabberd не использует другое написание этих полей. Сюрприз?

Ответ сервера на query xmlns="jabber:iq:search"

<field type='text-single' label='User' var='user'/>
<field type='text-single' label='Full Name' var='fn'/>
<field type='text-single' label='Name' var='given'/>
<field type='text-single' label='Middle Name' var='middle'/>
<field type='text-single' label='Family Name' var='family'/>
<field type='text-single' label='Nickname' var='nickname'/>
<field type='text-single' label='Birthday' var='bday'/>
<field type='text-single' label='Country' var='ctry'/>
<field type='text-single' label='City' var='locality'/>
<field type='text-single' label='Email' var='email'/>
<field type='text-single' label='Organization Name' var='orgname'/>
<field type='text-single' label='Organization Unit' var='orgunit'/>
</x>
Разве это не отличия, или nickname = nick ?

Я изначально понимал так, что "JEP-0055:6.2 Field Standardization
The following fields are reserved for use within jabber:x:data forms scoped by a FORM_TYPE of 'jabber:iq:search'; additional fields MAY be added via the Jabber Registrar's normal registration process but are outside the scope of this JEP." говорит что надо писать nick, а не nickname.

Эти и только

Эти и только эти 4 поля используются в форме типа 'jabber:iq:search'. И добавить в нее еще какое-нибудь поле сложно - это целая процедура. Ejabberd не использует форму типа 'jabber:iq:search'. Он использует нестандартизованную форму. И поля в ней называются, как автору угодно.

Ejabberd

Ejabberd использует форму типа 'jabber:iq:search', а вот поля действительно названы как угодно, что не есть правильно. У себя я конечно исправлю, но надо придерживаться стандарта. Вот jabberd2 писали точно по JEP, не смотря ни на что.
Можно написать в Bugzilla, но там смотрю затишье полное.

Re: Ejabberd

Dimitry wrote:

Ejabberd использует форму типа 'jabber:iq:search'

Что значит "он использует форму jabber:iq:search"? Он использует x:data форму со своими полями и это JEP'ом не запрещено.

Dimitry wrote:

а вот поля действительно названы как угодно, что не есть правильно

Что значит "неправильно"?

Я уже дал развёрнутый ответ. Перечитайте внимательнее пожалуйста.

Re: Ejabberd

xram@jabber.ru wrote:

Что значит "он использует форму jabber:iq:search"?

Как я понимаю используется запрос jabber:iq:search с раширением в jabber:x:data, для которого разрешены допольнительные поля поиска.
Однако есть примечание 6.2 , ладно я его трактую как я понимаю, но ведь запросы указанные в "Example 3. Submitting a Search Request" должен понимать сервер именно как указанно в документе?

Re: Ejabberd

Dimitry wrote:

но ведь запросы указанные в "Example 3. Submitting a Search Request" должен понимать сервер именно как указанно в документе?

Да, беда с вами :) Читайте JEP полностью, а не кусками: In order to search an information respository, a user first needs to discover what search fields are supported by the service.

Re: Ejabberd

Да я понимаю что уже достал вас, но вот так и хочется сказать "Давайте жить дружно".
Разработчики miranda не хотят полностью поддерживать JEP-0055, и делают поиск не запрашивая сервер о том что он поддерживает. В результате на одних серверах поиск работает, на других нет :(

Re: Ejabberd

Dimitry wrote:

Разработчики miranda не хотят полностью поддерживать JEP-0055, и делают поиск не запрашивая сервер о том что он поддерживает. В результате на одних серверах поиск работает, на других нет :(

Предложите разработчикам прочитать JEP. ejabberd то здесь причём?

Example 3. Submitting a Search Request

<iq from="user@jb.com/test" id="1234" to="jud.com" type="set" xml:lang='en'>
<query xmlns='jabber:iq:search'>
<last>user</last>
</query>
</iq>

<iq from='jud.jb.com' to='user@jb.com/test' type='error' id='1234' xml:lang='en'>
<query xmlns='jabber:iq:search'>
<last>tuktuk</last>
</query>
<error code='400' type='modify'><bad-request xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/></error></iq>

Re: 3. Extensibility

Dimitry wrote:

3. Extensibility
The fields defined in the 'jabber:iq:search' namespace are strictly limited to those specified in the schema. If a host needs to gather additional information, Data Forms SHOULD be used; a host MUST NOT add new fields to the 'jabber:iq:search' namespace. Support for extensibility via Data Forms is RECOMMENDED, but is not required for compliance with this JEP.

The extensibility mechanism for searching makes use of a hidden FORM_TYPE field for the purpose of standardizing field names within the form, as defined in Field Standardization for Data Forms [2]. Implementations supporting this extensibility mechanism SHOULD support field standardization as well.
Как должны мы трактовать последний обзац?

Если нам не хватает полей из iq:search, то мы можем использовать x:data. Опционально (требование SHOULD) мы можем стандартизовать наши поля в x:data через JEP-0068, то есть влепить в скрытом поле в FORM_TYPE какой-нить namespace. Всё ровно. Стандарты не нарушены. Если вам очень хочется поддержку JEP-0068, то можете сами изменить код ejabberd'а.

Syndicate content