Pull to refresh

Интересные совпадения (или Miranda IM Jabber и Мобильный Mail.RU Агент): опять двадцать пять

Instant Messaging
Не успел я проснуться, как ко мне стукнул mlu с новостью о том что вышел Mail.ru Агент с поддержкой жаббера. А дальше стало интересно…

Внимание! Я ни в коем случае не хочу сказать что в коде Мобильного Мейл.ру Агента используются наработки из GPL проектов. Эта статья всего лишь является исследованием работы агента

Он рассказал, что первым делом заглянул в xml консоль и увидел вот такую вещь:
<presence from="test1234@vke.ru/MobileAgent" to="jabber@vke.ru/Notebook" xml:lang="en">
<priority>5</priority>
<c xmlns="http://jabber.org/protocol/caps" node="http://miranda-im.org/caps" ver="1.x" />
<status>I'm online!</status>
<status>Custom status</status>
</presence>


Посмеявшись над двойным статусом и вилдкардовой версией, заметили node. Неужели кто-то решил использовать капсы миранды?

Дальше мы решили сравнить работу с сервером через открытый протокол XMPP сразу после логина (пакеты от сервера вырезаны за ненадобностью)

Miranda IM Jabber Мобильный Агент v1.15
<iq type="set" id="mir_0">
<bind xmlns="urn:ietf:params:xml:ns:xmpp-bind">
<resource>Miranda</resource>
</bind>
</iq>

<iq type='set' id='seq_10'>
<bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'>
<resource>MobileAgent</resource>
</bind>
</iq>

<iq type="set" id="mir_1">
<session xmlns="urn:ietf:params:xml:ns:xmpp-session" />
</iq>

<iq type='set' id='seq_11'>
<session xmlns='urn:ietf:params:xml:ns:xmpp-session'/>
</iq>

<iq type="get" id="mir_2">
<query xmlns="jabber:iq:private">
<roster xmlns="roster:delimiter" />
</query>
</iq>

<iq type='get' id='seq_12'>
<query xmlns='jabber:iq:private'>
<roster xmlns='roster:delimiter'/>
</query>
</iq>

<iq type="get" id="mir_3">
<query xmlns="jabber:iq:private">
<storage xmlns="storage:bookmarks" />
</query>
</iq>

­
<iq type='get' id='seq_13'>
<query xmlns='jabber:iq:private'>
<storage xmlns='storage:bookmarks'/>
</query>
</iq>

<iq type="get" to="vke.ru" id="mir_4">
<query xmlns="http://jabber.org/protocol/disco#info" />
</iq>

<iq type='get' to='vke.ru' id='seq_14'>
<query xmlns='http://jabber.org/protocol/disco#info'/>
</iq>



Небольшой анализ:


Закроем глаза на то что id пакетов выглядят сходно. В случае с мирандой они формируются начиная с нуля, здесь с 10. Кстати, если вдруг аол будет реализовывать жаббер сервер то им стоит это взять на заметку — есть возможность банить хоть один клиент =). Каждый пакет соответствует мирандовскому. Можно было бы списать это на простое совпадение, если бы не несколько забавных вещей, а именно:
  • Пакет mir_2 в миранде используется для того чтобы запросить с сервера разделитель групп, у нас подгруппы хранятся в виде «Group\Subgroup\Subsubgroup\etc», насколько мне известно такой способ используется только Мирандой и tkabber`ом, в агенте правильного отображения вложенных групп мы не обнаружили
  • Агент зачем то запрашивает с сервера букмарки, хотя они в интерфейсе не реализованы
  • Запрос mir_4 (seq_14) — диско сервера — у нас при входе делается для проверки есть ли на сервере PEP, чтобы показать меню выбора Mood & Activity. В агенте нет ни того, ни другого.
  • Непонятно, зачем вообще в презенсах шлется капсовый тег, ибо капсы агент тоже не поддерживает


Вообще у нас сложилось стойкое ощущение, что разработчик не читал описание стандарта протокола, и не знает что там и зачем.

Стоит отметить что совпадает не все. Например вход на сервер производится с использованием метода авторизации PLAIN, в то время как у миранды — DIGEST-MD5

Плюс тут мне сейчас наши коллеги кинули вот такой лог:
JasFas0la (21:50:44 26/04/2008)
Jabber есть в миранде… что заранее обуславливает его благополучную интеграцию в программу.

JasFas0la (21:52:11 26/04/2008)
а про миранду я вспомнил потому… Вы не против, если в проекте используются наработки из opensource источников? т.к. в новом клиенте я уже не руками пишу… а доверяю исходникам из миранды.
­

Это один из разработчиков бывшего смапера, который, как известно, был куплен mail.ru.

Не знаю, действительно ли разработчики использовали наш код. Я лишь привел вам факты. Исходный код клиента кстати естественно нигде не находится

UPD: официальная позиция компании Mail.ru:
Мобильный Mail.Ru Агент для Jabber не использует фрагментов исходного кода Miranda и написан целиком самостоятельно силами разработчиков-сотрудников Mail.Ru. Что касается якобы обнаруженных «сходств» — это следствие предпринятых нами мер предосторожности. Дабы новость о выходе продукта раньше времени не «просочилась» за пределы компании, решено было перестраховаться и дать программистам указание, чтобы Агент с поддержкой Jabber определялся как Miranda. А статус beta предельно четко объясняет тот факт, что не все возможности интерфейса в Mail.Ru Агенте с Jabber, «заложенные» в код, уже реализованы.
Также стоит отметить, что в ICQ-протоколе в мобильных версиях Mail.Ru Агента есть функция «маскировки» под разные клиенты (это востребовано пользователями), так что наш инстант-мессенджер может часто «распознаваться» как другие программы. При чем здесь копирование кода — не очень понятно.

Комиссарова Валерия,
Пресс-атташе Mail.Ru
Public_relations

Tags:mirandajabbermail.ruimgpl
Hubs: Instant Messaging
Total votes 145: ↑129 and ↓16+113
Views4.7K
Comments Comments 365

Popular right now

Top of the last 24 hours