summaryrefslogtreecommitdiff
path: root/protocols/MRA/docs/Mail.ru Agent.htm
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2018-11-27 21:10:30 +0300
committerGeorge Hazan <ghazan@miranda.im>2018-11-27 21:10:30 +0300
commitdb55f5b6eb4911fc1062917d7e95b6aaae165fdf (patch)
tree837646ed9b16e27c4915e1b76900fb88ba6d18ff /protocols/MRA/docs/Mail.ru Agent.htm
parent40c4c15d469744813f75e73ae9edf82485c1862f (diff)
fixes #1614 (MRA protocol deprecated due its death)
Diffstat (limited to 'protocols/MRA/docs/Mail.ru Agent.htm')
-rw-r--r--protocols/MRA/docs/Mail.ru Agent.htm635
1 files changed, 0 insertions, 635 deletions
diff --git a/protocols/MRA/docs/Mail.ru Agent.htm b/protocols/MRA/docs/Mail.ru Agent.htm
deleted file mode 100644
index 43acddc9dd..0000000000
--- a/protocols/MRA/docs/Mail.ru Agent.htm
+++ /dev/null
@@ -1,635 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!-- saved from url=(0097)http://agent.mail.ru/protocol.html?Submit=%CF%F0%E8%ED%E8%EC%E0%FE+%F1%EE%E3%EB%E0%F8%E5%ED%E8%E5 -->
-<!--//--><HTML><HEAD><TITLE>Mail.ru Агент</TITLE>
-<SCRIPT src="Mail.ru Agent.files/WindowOpen.js"></SCRIPT>
-<!--//-->
-<SCRIPT>PrxModAtr=1;</SCRIPT>
-<!--//-->
-<SCRIPT> function NoError(){return(true);} onerror=NoError; </SCRIPT>
-<!--//-->
-<SCRIPT> function moveTo(){return true;}function resizeTo(){return true;}</SCRIPT>
-
-<META
-content="Национальная почтовая служба @Mail.ru - лучшая бесплатная почта. Доступ к почте через POP/SMTP, веб- и wap-интерфейс. Также на портале: авто, новости, спорт, музыка, работа, знакомства, анекдоты, открытки, погода"
-name=DESCRIPTION>
-<META
-content="почта, бесплатная электронная почта, авто, новости, спорт, музыка, работа, знакомства, анекдоты, открытки, погода"
-name=Keywords>
-<META http-equiv=content-type content="text/html; charset=windows-1251"><LINK
-href="Mail.ru Agent.files/index.css" type=text/css rel=stylesheet><LINK
-href="Mail.ru Agent.files/proto.css" type=text/css rel=stylesheet>
-<META content="MSHTML 6.00.2900.2802" name=GENERATOR></HEAD>
-<BODY bottomMargin=0 bgColor=white leftMargin=0 topMargin=0 rightMargin=0
-marginwidth="0" marginheight="0">
-<CENTER>
-<TABLE class=top_menu cellSpacing=0 cellPadding=0 width="90%" border=0>
- <TBODY>
- <TR>
- <TD class=bord_l><IMG height=1 src="Mail.ru Agent.files/0.gif"
-width=11></TD>
- <TD noWrap><A href="http://r.mail.ru/cln2759/go.mail.ru" target=_top><IMG
- height=16 alt=Поиск src="Mail.ru Agent.files/go-all.gif" width=16
- align=absMiddle border=0></A>&nbsp;<A
- href="http://r.mail.ru/cln2759/go.mail.ru/" target=_top>Поиск</A></TD>
- <TD width="5%"><IMG height=1 src="Mail.ru Agent.files/0.gif" width=7></TD>
- <TD noWrap><A href="http://r.mail.ru/cln2760/love.mail.ru"
- target=_top><IMG height=16 alt=Знакомства
- src="Mail.ru Agent.files/love-all.gif" width=16 align=absMiddle
- border=0></A>&nbsp;<A href="http://r.mail.ru/cln2760/love.mail.ru"
- target=_top>Знакомства</A></TD>
- <TD width="5%"><IMG height=1 src="Mail.ru Agent.files/0.gif" width=7></TD>
- <TD noWrap><A href="http://r.mail.ru/cln2761/cards.mail.ru"
- target=_top><IMG height=16 alt=Открытки
- src="Mail.ru Agent.files/cards-all.gif" width=16 align=absMiddle
- border=0></A>&nbsp;<A href="http://r.mail.ru/cln2761/cards.mail.ru"
- target=_top>Открытки</A></TD>
- <TD width="5%"><IMG height=1 src="Mail.ru Agent.files/0.gif" width=7></TD>
- <TD noWrap><A href="http://r.mail.ru/cln2762/chat.mail.ru"
- target=_top><IMG height=16 alt=Чаты src="Mail.ru Agent.files/chat-all.gif"
- width=16 align=absMiddle border=0></A>&nbsp;<A
- href="http://r.mail.ru/cln2762/chat.mail.ru" target=_top>Чаты</A></TD>
- <TD width="5%"><IMG height=1 src="Mail.ru Agent.files/0.gif" width=7></TD>
- <TD noWrap><A href="http://r.mail.ru/cln2763/content.mail.ru/"
- target=_top><IMG height=16 alt=Рассылки
- src="Mail.ru Agent.files/content-all.gif" width=16 align=absMiddle
- border=0></A>&nbsp;<A href="http://r.mail.ru/cln2763/content.mail.ru/"
- target=_top>Рассылки</A></TD>
- <TD width="5%"><IMG height=1 src="Mail.ru Agent.files/0.gif" width=7></TD>
- <TD noWrap><A href="http://r.mail.ru/cln2764/molotok.ru/" target=_top><IMG
- height=16 alt=Молоток src="Mail.ru Agent.files/molotok-all.gif" width=16
- align=absMiddle border=0></A>&nbsp;<A
- href="http://r.mail.ru/cln2764/molotok.ru/" target=_top>Молоток</A></TD>
- <TD width="5%"><IMG height=1 src="Mail.ru Agent.files/0.gif" width=7></TD>
- <TD noWrap><A href="http://r.mail.ru/cln2765/tour.torg.ru/"
- target=_top><IMG height=16 alt=Путешествия
- src="Mail.ru Agent.files/tour-all.gif" width=16 align=absMiddle
- border=0></A>&nbsp;<A href="http://r.mail.ru/cln2765/travel.mail.ru/"
- target=_top>Путешествия</A></TD>
- <TD width="5%"><IMG height=1 src="Mail.ru Agent.files/0.gif" width=7></TD>
- <TD noWrap><A href="http://r.mail.ru/cln2766/auto.mail.ru/"
- target=_top><IMG height=16 alt=Авто src="Mail.ru Agent.files/cars-all.gif"
- width=16 align=absMiddle border=0></A>&nbsp;<A
- href="http://r.mail.ru/cln2766/auto.mail.ru/" target=_top>Авто</A></TD>
- <TD width="5%"><IMG height=1 src="Mail.ru Agent.files/0.gif" width=9></TD>
- <TD noWrap><IMG height=16 src="Mail.ru Agent.files/0.gif" width=16
- align=absMiddle border=0><A href="http://r.mail.ru/cln2767/mail.ru/all/"
- target=_top><B>Все проекты</B></A></TD>
- <TD class=bord_r><IMG height=1 src="Mail.ru Agent.files/0.gif"
- width=10></TD></TR>
- <TR>
- <TD class=bord_b noWrap width="100%" colSpan=19><IMG height=1
- src="Mail.ru Agent.files/1.gif" width=1></TD></TR></TBODY></TABLE><!-- JS Banner blocked -->
-<SCRIPT language=ShonenScript><!--
-d=document;a='';a+=';r='+escape(d.referrer)
-js=10
-//--></SCRIPT>
-
-<SCRIPT language=JavaScript1.1><!--
-a+=';j='+navigator.javaEnabled()
-js=11
-//--></SCRIPT>
-
-<SCRIPT language=JavaScript1.2><!--
-s=screen;a+=';s='+s.width+'*'+s.height
-a+=';d='+(s.colorDepth?s.colorDepth:s.pixelDepth)
-js=12
-//--></SCRIPT>
-
-<SCRIPT language=JavaScript1.3><!--
-js=13
-//--></SCRIPT>
-
-<SCRIPT language=JavaScript><!--
-d.write('<img src="http://top.list.ru/counter'+
-'?id=575536;js='+js+a+';rand='+Math.random()+
-'" height=1 width=1><br>')
-if(js>11)d.write('<'+'!-- ')
-//--></SCRIPT>
-<NOSCRIPT><IMG height=1 src="" width=1><BR></NOSCRIPT>
-<SCRIPT language=JavaScript><!--
-if(js>11)d.write('--'+'>')
-//--></SCRIPT>
-<!--/TopList COUNTER-->
-<CENTER><A href="http://top100.rambler.ru/top100/" target=_top><FONT color=red
-size=1>[Rambler's Top100]</FONT><BR></A></CENTER>
-<TABLE cellSpacing=0 cellPadding=0 width="90%" align=center border=0>
- <TBODY>
- <TR>
- <TD class=header width="100%">
- <DIV class=cor><IMG height=1 src="Mail.ru Agent.files/1.gif"
-width=1></DIV>
- <TABLE height=45 cellSpacing=0 cellPadding=0 width="100%" border=0>
- <TBODY>
- <TR>
- <TD class=head height=44><A href="http://agent.mail.ru/"
- target=_top><IMG height=20 alt=Агент
- src="Mail.ru Agent.files/agentlogo.gif" width=59 border=0></A><A
- href="http://mail.ru/" target=_top><IMG height=20 alt=mail.ru
- src="Mail.ru Agent.files/_mail.gif" width=104 border=0></A></TD>
- <TD width=00%>
- <P class=button2><A class=but title=загрузить
- href="http://agent.mail.ru/magent.exe"
- target=_top>загрузить</A></P></TD>
- <TD>
- <P class=sog><A href="http://www.mail.ru/pages/help/182.html"
- target=_top>Пользовательское<BR>соглашение</A></P></TD></TR></TBODY></TABLE><IMG
- height=1 src="Mail.ru Agent.files/0.gif" width=760><BR>
- <DIV class=cor><IMG height=1 src="Mail.ru Agent.files/1.gif"
- width=1></DIV></TD></TR>
- <TR>
- <TD colSpan=3><IMG height=10 src="Mail.ru Agent.files/0.gif"
- width=1></TD></TR></TBODY></TABLE>
-<TABLE cellSpacing=0 cellPadding=0 width="90%" border=0>
- <TBODY>
- <TR><!-- START: LeftCell -->
- <TD vAlign=top width="23%">
- <TABLE class=frame cellSpacing=0 cellPadding=0 width="100%" border=0>
- <TBODY>
- <TR>
- <TD class=cor align=right height=1><IMG height=1
- src="Mail.ru Agent.files/1.gif" width=1></TD></TR>
- <TR>
- <TD class=cont>
- <UL class=mmenu>
- <LI><A href="http://agent.mail.ru/pusk.html">Загрузка и
- установка</A>
- <LI><A href="http://agent.mail.ru/setting.html">Настройка контакт
- листа</A>
- <LI><SPAN class=speak>Общение</SPAN>
- <UL class=smenu type=disc>
- <LI><A href="http://agent.mail.ru/mess.html">Переписка</A>
- <LI><A href="http://agent.mail.ru/chat.html">Общение в чате</A>
- <LI><A href="http://agent.mail.ru/voice.html">Голосовое
- общение</A>
- <LI><A href="http://agent.mail.ru/avatar.html">Образы</A>
- </LI></UL>
- <LI><A href="http://agent.mail.ru/notifs.html">Оповещения</A>
- <LI><A href="http://agent.mail.ru/games.html">Игры</A>
- <LI><A href="http://agent.mail.ru/help.html">Частые вопросы</A>
- <LI class=ai>Разработчикам </LI></UL></TD></TR>
- <TR>
- <TD class=cor align=right height=1><IMG height=1
- src="Mail.ru Agent.files/1.gif" width=1></TD></TR></TBODY></TABLE><IMG
- height=10 src="Mail.ru Agent.files/0.gif" width=195><BR></TD><!-- END: LeftCell -->
- <TD width="2%"><IMG height=1 src="Mail.ru Agent.files/0.gif" width=10></TD><!-- START: MainCell -->
- <TD class=text vAlign=top width="75%">
- <H1>Описание протокола</H1>
- <P>MMP - протокол соединения Mail.Ru Агента с общей сетью Mail.Ru.
- Рекомендованный для соединения сервер в любой момент времени можно
- получить в текстовом формате <I>ip:port</I> по адресу <B
- class=blue>mrim.mail.ru:443</B> и <B class=blue>mrim.mail.ru:2042</B>.
- Взаимодействие с сервером происходит поверх постоянно установленного
- tcp-соединения посредством асинхронного обмена командами. Инициатором
- установления соединения может быть только клиент, команды могут посылаться
- как клиентом, так и сервером.</P>
- <P>MMP бинарный протокол. Все числовые данные передаются как
- четырехбайтные целые НЕ в сетевом формате, т. е. первым идет старший байт,
- последним младший. Четырехбайтовые беззнаковые целые обозначаются
- <B>UL</B>.</P>
- <P>Текстовые данные передаются с префексированной длиной, т. е. сначала
- <B>UL</B>, а потом строка (в кодировке windows-1251) длины <B>UL</B> без
- завершающего нуля. Обозначение в дальнейшем - <B>LPS</B>.</P>
- <P>Тип данных <B>UIDL</B> используется только при работе с оставленными на
- сервере сообщениями. <B>UIDL</B> - последовательность из 8 символов из
- множества <SPAN class=c>[a-z A-Z 0-9 _ - = +]</SPAN>.</P>
- <P>Каждая команда или ответ на нее начинаются с заголовка. Поля
- указываемые в заголовке:
- <UL>
- <LI>волшебный ключ, указывающий на то, что это действительно пакет MMP -
- версия MMP, поддерживаемая отправителем пакета (текущая версия - 1.7)
- <LI>номер отправляемой команды в текущем соединении. Ответ на команду
- должен иметь тот же номер, что и сама команда.
- <LI>тип пакета, номер команды и/или ответа
- <LI>длинна данных пакета (без учета заголовка). При обработке посылаемых
- сервером данных длина пакета должна иметь приоритет перед списком его
- параметров, т. к. в следующих версиях протокола могут появляться новые
- параметры и все они будут дописываться в конец пакета.
- <LI>порт и ip (в <I>inet_aton()</I> формате) с которых установлено
- соединение </LI></UL>
- <P></P><BR>
- <P>В синтаксисе языка С: <PRE style="MARGIN-TOP: 8px">Заголовок пакета
-{
- u_long magic;
- u_long proto;
- u_long seq;
- u_long msg;
- u_long dlen;
- u_long from;
- u_long fromport;
- u_char reserved[16];
-}
-</PRE>
- <P>Вам понадобится заголовочный файл на языке C. Взять его можно <A
- href="http://agent.mail.ru/proto.h" target=_top>здесь</A>. </P>
- <P>&nbsp;</P>
- <H2>Последовательность команд</H2>
- <P>После установки tcp-соединения клиент обязан сразу послать <SPAN
- class=c>MRIM_CS_HELLO</SPAN>, дождаться <SPAN
- class=c>MRIM_CS_HELLO_ACK</SPAN>, после чего отправить <SPAN
- class=c>MRIM_CS_LOGIN2</SPAN> и начать посылать <SPAN
- class=c>MRIM_CS_PING</SPAN> с установленным в <SPAN
- class=c>MRIM_CS_HELLO_ACK</SPAN> интервалом. В случае успешной авторизации
- дальнейшие пакеты (кроме <SPAN class=c>MRIM_CS_PING</SPAN>) должны
- отправляться только в случае пользовательских действий (написания новых
- сообщений и т. п.) или ответа на пакеты получаемые от сервера.</P>
- <H2 class=pt10>Типы пакетов</H2>
- <P class=pack2><U>Тип пакета:</U> cs - Client -&gt; Server<BR><U>Тип
- пакета:</U> sc - Server -&gt; Client</P>
- <H2 class=pt10>Пакеты</H2>
- <UL class=pack>
- <LI><U>Пакет:</U> <B>Установка соединения</B>
- <P class=pack2><U>Имя пакета:</U> <SPAN
- class=c>MRIM_CS_HELLO</SPAN><BR><U>Ответ:</U> <SPAN
- class=c>MRIM_CS_HELLO_ACK</SPAN><BR><U>Тип пакета:</U>
- cs<BR><U>Описание:</U> Первый пакет, отправляемый на сервер. </P>
- <LI><U>Пакет:</U> <B>Подтверждение установки соединения</B>
- <P class=pack2><U>Имя пакета:</U> <SPAN
- class=c>MRIM_CS_HELLO_ACK</SPAN><BR><U>Тип пакета:</U>
- sc<BR><U>Параметры:</U></P>
- <P class=code>UL ## ping_period ## Ожидаемая частота подтверждения
- соединения (в секундах)</P>
- <P class=pack2><U>Описание:</U> Подтверждает возможность соединения и
- сообщает клиенту интервал, с которым надо отправлять пакеты контроля
- соединения. </P>
- <LI><U>Пакет:</U> <B>Успешная авторизация</B>
- <P class=pack2><U>Имя пакета:</U> <SPAN
- class=c>MRIM_CS_LOGIN_ACK</SPAN><BR><U>Тип пакета:</U>
- sc<BR><U>Описание:</U> Сообщает, что пара логин-пароль была верна и
- клиент успешно авторизовался в сети агента. </P>
- <LI><U>Пакет:</U> <B>Неверная авторизация</B>
- <P class=pack2><U>Имя пакета:</U> <SPAN
- class=c>MRIM_CS_LOGIN_REJ</SPAN><BR><U>Тип пакета:</U>
- sc<BR><U>Параметры:</U></P>
- <P class=code>LPS ## reason ## причина отказа</P>
- <P class=pack2><U>Описание:</U> Сообщает, что пара логин-пароль была
- неверна, и соединение будет завершено. </P>
- <LI><U>Пакет:</U> <B>Контроль соединения</B>
- <P class=pack2><U>Имя пакета:</U> <SPAN
- class=c>MRIM_CS_PING</SPAN><BR><U>Тип пакета:</U> cs<BR><U>Описание:</U>
- Отправка этого пакета подтверждает для сервера, что клиент активен.
- Пакет должен отправляться с интервалом, определенным в <SPAN
- class=c>MRIM_CS_HELLO_ACK.</SPAN> </P>
- <LI><U>Пакет:</U> <B>Сообщение</B>
- <P class=pack2><U>Имя пакета:</U> <SPAN
- class=c>MRIM_CS_MESSAGE</SPAN><BR><U>Тип пакета:</U> cs<BR>поле seq
- должно содержать номер, который в последствии будет содержаться в
- заголовке пакета <SPAN class=c>MRIM_CS_MESSAGE_STATUS</SPAN>,
- оповещающем клиента о статусе доставки данного
- сообщения.<BR><U>Параметры:</U></P>
- <P class=code>UL ## flags ## флаги ##</P>
- <P class=code style="MARGIN-LEFT: 20px">MESSAGE_FLAG_OFFLINE ##
- Сообщение пришло, пока клиент был отключен<BR>MESSAGE_FLAG_NORECV ##
- Отправителю сообщения не требуется подтверждения
- доставки<BR>MESSAGE_FLAG_AUTHORIZE ## Сообщение является запросом на
- авторизацию<BR>MESSAGE_FLAG_SYSTEM ## Сообщение является системным
- уведомлением администрации<BR>MESSAGE_FLAG_RTF ## В сообщении содержится
- форматированная часть<BR>MESSAGE_FLAG_CONTACT ## Сообщение представляет
- из себя пересланный список контактов. Текст сообщения в этом случае
- должен представлять из себя список адресов и ников пересылаемых
- контактов, перечисленных через точку с запятой.
- &lt;адрес1&gt;;&lt;ник1&gt;;&lt;адрес2&gt;;&lt;ник2&gt;;&lt;адрес3&gt;;&lt;ник3&gt;;...<BR>MESSAGE_FLAG_NOTIFY
- ## Это сообщение-уведомление "Вам пишут". Должно посылаться каждые 10
- секунд, при более длинной паузе клиент-получатель должен считать, что
- отправитель прекратил написание. Текст такого сообщения должен состоять
- из одного пробела.<BR>MESSAGE_FLAG_MULTICAST ## Сообщение направлено
- списку получателей, а не одному. Поле to в таком случае состоит из
- списка получателей, перечисленных через запятую. Максимальная длина
- списка - 50 адресов.</P>
- <P class=code>LPS ## to ## email получателя<BR>LPS ## message ##
- текстовая версия отправляемого сообщения<BR>LPS ## rtf-message ##
- отформатированная версия отправляемого сообщения, в случае наличия обоих
- версий сообщения приоритет имеет rtf-версия. Она должна содержать
- rtf-текст упакованный gzip в base64 представлении. То есть: <PRE style="MARGIN: 0px 0px 0px 10px">BASE64(
- GZIP(
- UL количество LPS (должно быть не менее 2)
- LPS rtf_text_with_all_rtf_headers_and_tags
- LPS цвет фона в виде UL
- )
- )
- </PRE>
- <P></P>
- <P class=pack2><U>Описание:</U> Основной пакет взаимодействия между
- двумя клиентами. Может быть отправлено в любой момент по инициативе
- клиента. Ни текстовая, ни rtf части сообщений не могут быть пустыми, при
- необходимости следует использовать строку из одного пробела.</P>
- <LI><U>Пакет:</U> <B>Доставка сообщения</B>
- <P class=pack2><U>Имя пакета:</U> <SPAN
- class=c>MRIM_CS_MESSAGE_ACK</SPAN><BR><U>Тип пакета:</U>
- sc<BR><U>Параметры:</U></P>
- <P class=code>UL ## msg_id ## Номер пакета (Sequence) этого сообщения
- для отправителя<BR>UL ## flags ## Возможные значения описаны в
- MRIM_CS_MESSAGE<BR>LPS ## from ## Адрес отправителя<BR>LPS ## message ##
- текстовая версия сообщения<BR>LPS ## rtf-message ## форматированная
- версия сообщения</P>
- <P class=pack2><U>Описание:</U> </P>
- <LI><U>Пакет:</U> <B>Подтверждение получения сообщения</B>
- <P class=pack2><U>Имя пакета:</U> <SPAN
- class=c>MRIM_CS_MESSAGE_RECV</SPAN><BR><U>Тип пакета:</U>
- cs<BR><U>Параметры:</U></P>
- <P class=code>LPS ## from ##<BR>UL ## msg_id ##</P>
- <P class=pack2><U>Описание:</U> Отправляется получателем сообщения сразу
- после прихода <SPAN class=c>MRIM_CS_MESSAGE_ACK</SPAN>, если флаги <SPAN
- class=c>MRIM_CS_MESSAGE_ACK</SPAN> не содержали <SPAN
- class=c>MESSAGE_FLAG_NORECV</SPAN>. <SPAN class=c>from</SPAN> и <SPAN
- class=c>msg_id</SPAN> должны быть скопированы из <SPAN
- class=c>MRIM_CS_MESSAGE_ACK</SPAN> и имеют то же значение. </P>
- <LI><U>Пакет:</U> <B>Подтверждение доставки сообщения</B>
- <P class=pack2><U>Имя пакета:</U> <SPAN
- class=c>MRIM_CS_MESSAGE_STATUS</SPAN><BR><U>Тип пакета:</U> sc<BR>Поле
- seq численно равно полю seq пакета <SPAN
- class=c>MRIM_CS_MESSAGE</SPAN><BR><U>Параметры:</U></P>
- <P class=code>UL ## status ## статус доставки ##</P>
- <P class=code style="MARGIN-LEFT: 20px">MESSAGE_DELIVERED ## Сообщение
- успешно доставлено<BR>MESSAGE_REJECTED_INTERR ## Произошла внутренняя
- ошибка<BR>MESSAGE_REJECTED_NOUSER ## Не существует
- пользователя-получателя сообщения<BR>MESSAGE_REJECTED_LIMIT_EXCEEDED ##
- Пользователь-получатель в данный момент отключен от сети, и сообщение не
- помещается в его почтовый ящик<BR>MESSAGE_REJECTED_TOO_LARGE ## Размер
- сообщения превышает максимально
- допустимый<BR>MESSAGE_REJECTED_DENY_OFFMSG ## Пользователь-получатель в
- данный момент отключен от сети, а настройки его почтового ящика не
- допускают наличие оффлайновых сообщений агента</P>
- <P class=pack2><U>Описание:</U> Отправленное сообщение считается
- доставленным только после получения этого ответа сервера. Сервер НЕ
- ГАРАНТИРУЕТ доставку сообщения. В случае отстутствия <SPAN
- class=c>MRIM_CS_MESSAGE_STATUS</SPAN> более интервала подтверждения
- соединения, программа клиент должна послать сообщение повторно или
- проинформировать пользователя о невозможности доставки из-за проблем
- связи получателя. </P>
- <LI><U>Пакет:</U> <B>Смена статуса другого пользователя</B>
- <P class=pack2><U>Имя пакета:</U> <SPAN
- class=c>MRIM_CS_USER_STATUS</SPAN><BR><U>Тип пакета:</U>
- sc<BR><U>Параметры:</U></P>
- <P class=code>UL ## status ## новый статус пользователя ##</P>
- <P class=code style="MARGIN-LEFT: 20px">STATUS_OFFLINE ## Пользователь
- отключен от сети Агента<BR>STATUS_ONLINE ## Пользователь находится в
- сети<BR>STATUS_AWAY ## Пользователь в сети, но отошел от
- компьютера<BR>STATUS_UNDETERMINATED ## Настройки пользователя запрещают
- показывать его статус<BR>STATUS_FLAG_INVISIBLE ## Пользователь находится
- в сети, но невидим для всех, кроме привилегированных пользователей из
- его списка видимости.</P>LPS ## user ## email сменившего свой статус
- пользователя
- <P></P>
- <P class=pack2><U>Описание:</U> Это сообщение отправляется сервером при
- смене статуса пользователям всем тем, у кого он находится в
- контакт-листе (за исключением группы "Жду Авторизации" и тех, кого он
- включил в список игнорируемых или невидящих). Данное сообщение может
- быть доставлено клиенту ДО получения им контакт-листа. В такой ситуации
- оно должно игнорироваться. </P>
- <LI><U>Пакет:</U> <B>Закрытие соединения</B>
- <P class=pack2><U>Имя пакета:</U> <SPAN
- class=c>MRIM_CS_LOGOUT</SPAN><BR><U>Тип пакета:</U>
- sc<BR><U>Параметры:</U></P>
- <P class=code>UL ## reason ## причина отключения ##</P>
- <P class=code style="MARGIN-LEFT: 20px">LOGOUT_NO_RELOGIN_FLAG ##
- Пользователь отключен из-за параллельного входа с его логином. Клиент не
- должен осуществлять автоматический перезаход в этом случае.</P>
- <LI><U>Пакет:</U> <B>Изменение параметров соединения</B>
- <P class=pack2><U>Имя пакета:</U> <SPAN
- class=c>MRIM_CS_CONNECTION_PARAM</SPAN><BR><U>Тип пакета:</U>
- sc<BR><U>Параметры:</U></P>
- <P class=code>UL ## ping_period ## новая ожидаемая частота подтверждения
- соединения</P>
- <P class=pack2><U>Описание:</U> Ближайший <SPAN
- class=c>MRIM_CS_PING</SPAN> следует отправлять уже исходя из новой
- частоты. </P>
- <LI><U>Пакет:</U> <B>Добавление нового контакта</B>
- <P class=pack2><U>Имя пакета:</U> <SPAN
- class=c>MRIM_CS_ADD_CONTACT</SPAN><BR><U>Тип пакета:</U>
- cs<BR><U>Параметры:</U></P>
- <P class=code>UL ## flags ## флаги ##</P>
- <P class=code style="MARGIN-LEFT: 20px">CONTACT_FLAG_GROUP ##
- Добавляется новая группа, а не контакт (несовместим с остальными).
- Верхний байт содержит количество уже имеющихся групп в
- контакт-листе<BR>CONTACT_FLAG_INVISIBLE ## Контакт должен попасть в
- список "Я всегда невидим для"<BR>CONTACT_FLAG_VISIBLE ## Контакт должен
- попасть в список "Я всегда видим для"<BR>CONTACT_FLAG_IGNORE ## Контакт
- должен попасть в список игнорируемых<BR>CONTACT_FLAG_SHADOW ## Контакт
- не должен попасть в основной контакт-лист (применяется в паре с одним из
- трех предыдущих)<BR>CONTACT_FLAG_REMOVED ## Контакт удален</P>
- <P class=code>UL ## group_id ## группа, в которую должен быть добавлен
- контакт (для CONTACT_FLAG_GROUP равно 0)<BR>LPS ## email ## добавляемый
- адрес (имя группы для CONTACT_FLAG_GROUP)<BR>LPS ## name ## ник
- добавляемого пользователя (для отображения в контакт-листе, не
- посылается для CONTACT_FLAG_GROUP) LPS ## unused ## неиспользуемый
- параметр </P>
- <LI><U>Пакет:</U> <B>Подтверждение добавления контакта</B>
- <P class=pack2><U>Имя пакета:</U> <SPAN
- class=c>MRIM_CS_ADD_CONTACT_ACK</SPAN><BR><U>Тип пакета:</U>
- sc<BR><U>Параметры:</U></P>
- <P class=code>UL ## status ## результат операции ##</P>
- <P class=code style="MARGIN-LEFT: 20px">CONTACT_OPER_SUCCESS ##
- добавление произведено успешно<BR>CONTACT_OPER_ERROR ## переданные
- данные были некорректны<BR>CONTACT_OPER_INTERR ## при обработке запроса
- произошла внутренняя ошибка<BR>CONTACT_OPER_NO_SUCH_USER ## добавляемого
- пользователя не существует в системе<BR>CONTACT_OPER_INVALID_INFO ##
- некорректное имя пользователя<BR>CONTACT_OPER_USER_EXISTS ##
- пользователь уже есть в контакт-листе<BR>CONTACT_OPER_GROUP_LIMIT ##
- превышено максимально допустимое количество групп (20)</P>
- <P class=code>## UL ## contact_id ## присвоенный новому контакту
- номер</P>
- <P class=pack2><U>Описание:</U> Приходит в ответ на <SPAN
- class=c>MRIM_CS_ADD_CONTACT</SPAN>. -1 если <SPAN class=c>status</SPAN>
- не равен <SPAN class=c>CONTACT_OPER_SUCCESS</SPAN>. </P>
- <LI><U>Пакет:</U> <B>Изменение контакта</B>
- <P class=pack2><U>Имя пакета:</U> <SPAN
- class=c>MRIM_CS_MODIFY_CONTACT</SPAN><BR><U>Тип пакета:</U>
- cs<BR><U>Параметры:</U></P>
- <P class=code>UL ## id ## номер модифицируемого контакта<BR>UL ## flags
- ##<BR>UL ## group_id ## Равно 0 для группы<BR>LPS ## contact ## Если
- группа, то имя группы<BR>LPS ## name ## Если группа, то имя группы</P>
- <P class=pack2><U>Описание:</U> Параметры те же, что и у <SPAN
- class=c>MRIM_CS_ADD_CONTACT</SPAN>. <SPAN class=c>contact</SPAN> до и
- после изменения обязаны совпадать. </P>
- <LI><U>Пакет:</U> <B>Подтверждение изменения контакта</B>
- <P class=pack2><U>Имя пакета:</U> <SPAN
- class=c>MRIM_CS_MODIFY_CONTACT_ACK</SPAN><BR><U>Тип пакета:</U>
- sc<BR><U>Параметры:</U></P>
- <P class=code>UL ## status ## Результат операции. Значения имеют тот же
- смысл, что и в MRIM_CS_ADD_CONTACT_ACK</P>
- <LI><U>Пакет:</U> <B>Сообщение доставленное, пока пользователь не был
- подключен к сети</B>
- <P class=pack2><U>Имя пакета:</U> <SPAN
- class=c>MRIM_CS_OFFLINE_MESSAGE_ACK</SPAN><BR><U>Тип пакета:</U>
- sc<BR><U>Параметры:</U></P>
- <P class=code>UIDL ## uidl ## id сообщения<BR>LPS ## message ##
- сообщение. Сообщение приходит в формате RFC/822 письма. Отправитель
- сообщения хранится в заголовке From, дата в заголовке Date, флаги
- сообщения в X-MRIM-FLAGS, текстовая и форматированная версии сообщения
- составляют текст письма и разделяются между собой разделителем из
- заголовка Boundary.</P>
- <P class=pack2><U>Описание:</U> Каждое полученное за время отсутствия
- сообщение приходит отдельным пакетом в том порядке, в каком они
- поступали на сервер. </P>
- <LI><U>Пакет:</U> <B>Удаление сохраненного сообщения</B>
- <P class=pack2><U>Имя пакета:</U> <SPAN
- class=c>MRIM_CS_OFFLINE_MESSAGE_DEL</SPAN><BR><U>Тип пакета:</U>
- cs<BR><U>Параметры:</U></P>
- <P class=code>UIDL ## uidl</P>
- <P class=pack2><U>Описание:</U> На каждый полученный <SPAN
- class=c>MRIM_CS_OFFLINE_MESSAGE_ACK</SPAN> клиент обязан отправить <SPAN
- class=c>MRIM_CS_OFFLINE_MESSAGE_DEL</SPAN> с тем же <SPAN
- class=c>uidl</SPAN>, подтверждающий получение данного сообщения.
- Сообщение стирается на сервере только при получении этой команды.</P>
- <LI><U>Пакет:</U> <B>Авторизация пользователя на добавление в
- контакт-лист</B>
- <P class=pack2><U>Имя пакета:</U> <SPAN
- class=c>MRIM_CS_AUTHORIZE</SPAN><BR><U>Тип пакета:</U>
- cs<BR><U>Параметры:</U></P>
- <P class=code>LPS ## user ## email пользователя</P>
- <P class=pack2><U>Описание:</U> Отправляется, чтобы разрешить <SPAN
- class=c>user</SPAN> добавление пользователя в контакт-лист и наблюдение
- за его статусом. </P>
- <LI><U>Пакет:</U> <B>Информация об авторизации</B>
- <P class=pack2><U>Имя пакета:</U> <SPAN
- class=c>MRIM_CS_AUTHORIZE_ACK</SPAN><BR><U>Тип пакета:</U>
- sc<BR><U>Параметры:</U></P>
- <P class=code>LPS ## user ## email авторизовавшего пользователя</P>
- <P class=pack2><U>Описание:</U> Отсылается сервером после получением им
- <SPAN class=c>MRIM_CS_AUTHORIZE</SPAN> от <SPAN class=c>user</SPAN>
- тому, кого <SPAN class=c>user</SPAN> авторизовал. </P>
- <LI><U>Пакет:</U> <B>Изменение статуса</B>
- <P class=pack2><U>Имя пакета:</U> <SPAN
- class=c>MRIM_CS_CHANGE_STATUS</SPAN><BR><U>Тип пакета:</U>
- cs<BR><U>Параметры:</U></P>
- <P class=code>UL ## status ## возможные значения совпадают с
- MRIM_CS_USER_STATUS, но не могут посылаться статусы
- STATUS_UNDETERMINATED и STATUS_OFFLINE</P>
- <LI><U>Пакет:</U> <B>Требование ключа для web-авторизации</B>
- <P class=pack2><U>Имя пакета:</U> <SPAN
- class=c>MRIM_CS_GET_MPOP_SESSION</SPAN><BR><U>Тип пакета:</U>
- cs<BR><U>Описание:</U> Пользователь агента может заходить в почтовый
- ящик Mail.Ru без дополнительной авторизации и не передавая свой пароль в
- GET-запросе, для этого используется механизм ключей. </P>
- <LI><U>Пакет:</U> <B>Ключ для web-авторизации</B>
- <P class=pack2><U>Имя пакета:</U> <SPAN
- class=c>MRIM_CS_GET_MPOP_SESSION_ACK</SPAN><BR><U>Тип пакета:</U>
- sc<BR><U>Параметры:</U></P>
- <P class=code>UL ## status ## успешность операции (1 - ключ получен, 0 -
- произошла ошибка)<BR>LPS ## session ## сам ключ</P>
- <P class=pack2><U>Описание:</U> Для входа в ящик можно использовать URL
- win.mail.ru/cgi-bin/auth?Login=email&amp;agent=ключ. </P>
- <LI><U>Пакет:</U> <B>Поиск контакта</B>
- <P class=pack2><U>Имя пакета:</U> <SPAN
- class=c>MRIM_CS_WP_REQUEST</SPAN><BR><U>Тип пакета:</U>
- cs<BR><U>Параметры:</U></P>
- <P class=code>UL ## field ## параметр поиска ##</P>
- <P class=code style="MARGIN-LEFT: 20px">MRIM_CS_WP_REQUEST_PARAM_USER ##
- логин (без домена), обязан комбинироваться с
- доменом<BR>MRIM_CS_WP_REQUEST_PARAM_DOMAIN ## почтовый
- домен<BR>MRIM_CS_WP_REQUEST_PARAM_NICKNAME ##
- ник<BR>MRIM_CS_WP_REQUEST_PARAM_FIRSTNAME ## имя
- <BR>MRIM_CS_WP_REQUEST_PARAM_LASTNAME ## фамилия, * в конце
- ника/имени/фамилии указывает на возможность любого продолжения
- имени<BR>MRIM_CS_WP_REQUEST_PARAM_SEX ## пол. 1 - мужской, 2 -
- женский<BR>MRIM_CS_WP_REQUEST_PARAM_DATE1 ## минимальный возраст (в
- годах)<BR>MRIM_CS_WP_REQUEST_PARAM_DATE2 ## максимальный возраст (в
- годах)<BR>MRIM_CS_WP_REQUEST_PARAM_CITY_ID ## ID региона проживания
- <BR>MRIM_CS_WP_REQUEST_PARAM_ZODIAC ## Знак зодиака (Овен - 1, ..., Рыбы
- - 12)<BR>MRIM_CS_WP_REQUEST_PARAM_BIRTHDAY_MONTH ## Месяц рождения
- (Январь - 1, ..., Декабрь - 12)<BR>MRIM_CS_WP_REQUEST_PARAM_BIRTHDAY_DAY
- ## День рождения (обязан комбинироваться с месяцем
- рождения)<BR>MRIM_CS_WP_REQUEST_PARAM_COUNTRY_ID ## ID страны
- проживания<BR>MRIM_CS_WP_REQUEST_PARAM_ONLINE ## ищем ли мы только
- подключенных в данный момент пользователей (1)</P>
- <P class=code>LPS ## value все параметры в строковом формате, включая
- числа</P>
- <P class=pack2><U>Описание:</U> Поиск контактов в базе агента. Параметры
- поиска передаются парами параметр-значение. Передача нескольких
- параметров имеет семантику "и", т. е. все найденные результаты должны
- соответствовать всем переданным параметрам. Комбинироваться могут все
- параметры за исключением логина и домена (они обязаны идти парой и не
- могут комбинироваться с другими параметрами) в порядке соответствующем
- порядку описания (за исключением требования для <SPAN
- class=c>MRIM_CS_WP_REQUEST_PARAM_ONLINE</SPAN> быть последним в списке).
- </P>
- <LI><U>Пакет:</U> <B>Найденные пользователи</B>
- <P class=pack2><U>Имя пакета:</U> <SPAN
- class=c>MRIM_CS_ANKETA_INFO</SPAN><BR><U>Тип пакета:</U>
- cs<BR><U>Параметры:</U></P>
- <P class=code>UL ## status ## успешность запроса ##</P>
- <P class=code style="MARGIN-LEFT: 20px">MRIM_ANKETA_INFO_STATUS_OK ##
- поиск успешно завершен<BR>MRIM_ANKETA_INFO_STATUS_NOUSER ## не найдено
- ни одной подходящей записи<BR>MRIM_ANKETA_INFO_STATUS_RATELIMERR ##
- слишком много запросов, поиск временно запрещен</P>
- <P class=code>UL ## fields_num ## количество полей в анкете каждого
- пользователя<BR>UL ## max_rows ## текущее ограничение на количество
- результатов поиска (может быть больше, чем количество строк в данном
- ответе)<BR>UL ## server_time ## текущее время на сервере (должно
- использоваться для вычисления возраста). Формат времени: Количество
- секунд с 00:00:00 1 января 1970 года.<BR>LPS, LPS, ... ## fields ##
- названия полей текущей анкеты (всего fields_num штук)<BR>LPS, LPS, ...
- ## values ## значения полей анкеты для каждого найденного по запросу
- пользователя в том же порядке, что в списке полей, по fields_num штук на
- каждого</P>
- <P class=pack2><U>Описание:</U> Результат поиска контактов. Возвращает
- анкеты найденных пользователей (их адреса являются полями анкеты). </P>
- <LI><U>Пакет:</U> <B>Количество писем в почтовом ящике</B>
- <P class=pack2><U>Имя пакета:</U> <SPAN
- class=c>MRIM_CS_MAILBOX_STATUS</SPAN><BR><U>Тип пакета:</U>
- sc<BR><U>Параметры:</U></P>
- <P class=code>UL ## status ## количество непрочитанных писем</P>
- <P class=pack2><U>Описание:</U> Приходит при получении новой почты или
- любом другом изменении числа непрочитанных писем в ящике. </P>
- <LI><U>Пакет:</U> <B>Контакт-лист</B>
- <P class=pack2><U>Имя пакета:</U> <SPAN
- class=c>MRIM_CS_CONTACT_LIST2</SPAN><BR><U>Тип пакета:</U>
- sc<BR><U>Параметры:</U></P>
- <P class=code>UL ## status ## результат запроса контакт-листа</P>
- <P class=code style="MARGIN-LEFT: 20px">GET_CONTACTS_OK ## поиск
- выполнен успешно<BR>GET_CONTACTS_ERROR ## найденный контакт-лист
- некорректен<BR>GET_CONTACTS_INTERR ## произошла внутренняя ошибка</P>
- <P class=code>UL ## groups_number ## количество групп в
- контакт-листе<BR>LPS ## group_mask ## маска-описание группы, состоит из
- символов 's' (LPS),'u' (UL),'z' (строка оканчивающаяся бинарным нулем, в
- данный момент не используется), сейчас "us" - флаги и название, при
- расширении описания старые поля сохранят свое расположение<BR>LPS ##
- contacts_mask ## маска-описание пользователя (синтаксис такой же как и у
- group_mask), сейчас uussuu (флаги, группа, адрес, ник, серверные флаги,
- текущий статус в сети)<BR>## groups ## группы (всего groups_number
- штук)<BR>## contacts ## контакты</P>
- <P class=pack2><U>Описание:</U> Контакт-лист пользователя хранится на
- сервере. Клиент может хранить локальную копию контакт-листа, но
- серверная должна иметь приоритет. Флаги контакта имеют тот же смысл, что
- в <SPAN class=c>MRIM_CS_ADD_CONTACT</SPAN>, статус - тот же смысл, что в
- <SPAN class=c>MRIM_CS_USER_STATUS</SPAN>. Серверный флаг в данный момент
- определён один - <SPAN class=c>CONTACT_INTFLAG_NOT_AUTHORIZED</SPAN>
- означает, что контакт еще не авторизовал пользователя и находится в
- группе "Жду авторизации". Если маска контакта или группы содержит больше
- символов, чем необходимо, клиент должен прочитать значения этих полей и
- проигнорировать их. </P>
- <LI><U>Пакет:</U> <B>Авторизация</B>
- <P class=pack2><U>Имя пакета:</U> <SPAN
- class=c>MRIM_CS_LOGIN2</SPAN><BR><U>Тип пакета:</U>
- cs<BR><U>Параметры:</U></P>
- <P class=code>LPS ## login ## email авторизующегося пользователя<BR>LPS
- ## password ## пароль<BR>UL ## status ## статус (см.
- MRIM_CS_CHANGE_STATUS)<BR>LPS ## user_agent ## текстовое описание
- клиента пользователя, например "Mail.Ru Miranda Plugin v
- 1.0"</P></LI></UL><IMG height=10 src="Mail.ru Agent.files/0.gif"
- width=555><BR></TD><!-- END: MainCell --></TR></TBODY></TABLE>
-<TABLE cellSpacing=0 cellPadding=0 width="90%" align=center border=0>
- <TBODY>
- <TR>
- <TD align=middle width="100%">
- <DIV class=plash>
- <DIV class=cor><IMG height=1 src="Mail.ru Agent.files/1.gif"
-width=1></DIV>
- <TABLE class=footer cellSpacing=0 cellPadding=0 width="96%" border=0>
- <TBODY>
- <TR>
- <TD width="27%" height=20>© 1999-2004, <A href="http://www.mail.ru/"
- target=_blank>Mail.Ru</A></TD>
- <TD align=middle width="37%"><A
- href="http://win.mail.ru/cgi-bin/support_mra?version=www"
- target=_blank>Служба поддержки</A></TD>
- <TD align=right width="30%" height=20><A
- href="http://sales.mail.ru/" target=_top>Реклама на Mail.ru</A>
- <B>·</B> <A href="http://corp.mail.ru/" target=_top>О
- компании</A></TD></TR></TBODY></TABLE><IMG height=1
- src="Mail.ru Agent.files/0.gif" width=760><BR>
- <DIV class=cor><IMG height=1 src="Mail.ru Agent.files/1.gif"
- width=1></DIV></DIV></TD></TR></TBODY></TABLE><BR
-style="LINE-HEIGHT: 30px"></CENTER><!--//-->
-<SCRIPT>PrxRST();</SCRIPT>
-</BODY></HTML>