Не успел я проснуться, как ко мне стукнул mlu с новостью о том что вышел Mail.ru Агент с поддержкой жаббера. А дальше стало интересно…
Внимание! Я ни в коем случае не хочу сказать что в коде Мобильного Мейл.ру Агента используются наработки из GPL проектов. Эта статья всего лишь является исследованием работы агента
Он рассказал, что первым делом заглянул в xml консоль и увидел вот такую вещь:
Посмеявшись над двойным статусом и вилдкардовой версией, заметили node. Неужели кто-то решил использовать капсы миранды?
Дальше мы решили сравнить работу с сервером через открытый протокол XMPP сразу после логина (пакеты от сервера вырезаны за ненадобностью)
Закроем глаза на то что id пакетов выглядят сходно. В случае с мирандой они формируются начиная с нуля, здесь с 10. Кстати, если вдруг аол будет реализовывать жаббер сервер то им стоит это взять на заметку — есть возможность банить хоть один клиент =). Каждый пакет соответствует мирандовскому. Можно было бы списать это на простое совпадение, если бы не несколько забавных вещей, а именно:
Вообще у нас сложилось стойкое ощущение, что разработчик не читал описание стандарта протокола, и не знает что там и зачем.
Стоит отметить что совпадает не все. Например вход на сервер производится с использованием метода авторизации PLAIN, в то время как у миранды — DIGEST-MD5
Плюс тут мне сейчас наши коллеги кинули вот такой лог:
Это один из разработчиков бывшего смапера, который, как известно, был куплен mail.ru.
Не знаю, действительно ли разработчики использовали наш код. Я лишь привел вам факты. Исходный код клиента кстати естественно нигде не находится
UPD: официальная позиция компании 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