Не успел я проснуться, как ко мне стукнул 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 источников? т.к. в новом клиенте я уже не руками пишу… а доверяю исходникам из миранды.
Не знаю, действительно ли разработчики использовали наш код. Я лишь привел вам факты. Исходный код клиента кстати естественно нигде не находится

Я не хочу сказать, что кто – то всё же использует исходники Миранды, но почему – то сначала что – то появляется у Миранды, а спустя некоторые время у других клиентов.
>Не знаю, действительно ли разработчики использовали наш код.
—
Самое интересное, что после статьи на хабре перестала эта версия работать. Симптом у всех один и тот же, после онлайн статуса абсолютно любого протокола идет тяска КЛ (nudge), а после этого аут (спец пакет?)
Да и с сайта эту версию срочно убрали, затем дали новую (1.16), причем глюков и багов в ней по сравнению с прошлой значительно больше, сразу видно, что торопились