Описание Протокола NMDC, NeoModus Direct Connect Protocol |
Здравствуйте, гость ( Вход | Регистрация )
Описание Протокола NMDC, NeoModus Direct Connect Protocol |
16.12.2008, 18:57
Сообщение
#1
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Protocol NMDC Структурированное описание протокола NeoModus Direct Connect (NMDC), под управлением которого на сегодняшний день работает подавляющее большинство хабов. Хотя уже внедряется новый протокол ADC, однако, как говориться, всему своё время. По мере написания, на каждую команду будет появляться ссылка на пост, описывающий эту команду. Делаю тему закрытой, дабы структурировано описать команды. О структуре команд Все команды протокола начинаются с символа $. Исключение составляет команда сообщения чата, которая должна иметь следующую структуру: Код <Ник> Сообщение| При этом, данный синтаксис команды чата обязателен в направлении клиент -> хаб, в то время, как хаб может отсылать клиенту любые сообщения, не начинающиеся с символа $, и клиент должен принимать такие сообщения, однако обработка таких сообщение не регламентирована протоколом (клиент может отображать такие сообщения как в чате, так и в статусной строке, или же вовсе игнорировать такие сообщения).Символы-разделители протокола: $, | и пробел. Протокол не имеет экранирующих символов, поэтому для отсылки символов $ и | в параметрах команд нужно использовать их коды: $ и | Строка сообщения разделяется на команды по средствам символа |. Пример трёх команд, отосланных одной строкой: Код $Cmd1 параметр|$Cmd2|$Cmd3 параметр1 параметр2$параметр3| Взаимодействие хаб-клиент $BadPass $Close $ConnectToMe $ForceMove $GetINFO $GetNickList $GetPass $Hello $HubIsFull $HubName $HubTopic $Key $Kick $Lock $LogedIn $MyINFO $MyPass $MultiConnectToMe $MultiSearch $NickList $OpForceMove $OpList $Quit $RevConnectToMe $Search $SR $Supports $UserCommand $UserIP $Version $ValidateNick $ValidateDenide Взаимодействие клиент-клиент $Cancel $Canceled $Direction $Error $Failed $FileLength $Get $GetListLen $Key $Lock $MaxedOut $MyNick $Ping $Send $To Взаимодействие хаб-хаб $FeaturedNetworks $ConnectToMe $Search $SR $Up $UpToo Взаимодействие хаб-хаблист $Key $Lock $Supports Взаимодействие пингер-хаб $BotINFO $HubINFO $Key $Lock $Supports Команды характеристик $ADCGET / $ADCSND $BotList $Capabilities $FeaturedNetworks $GetZBlock $MCTo $Sending $UGetBlock $UGetZBlock $Z $ZOn Разное TTH Lock2Key Известные характеристики Хаб-Клиент: BotList ClientID Feed HubTopic IN MCTo NoGetINFO NoHello OpPlus QuickList TTHSearch UserCommand UserIP2 ZLine ZPipe0 Клиент-Клиент: ADCGet BZList CHUNK ClientID GetCID GetTestZBlock GetZBlock MiniSlots TTHL TTHF XmlBZList ZLIG Общая (обязательная) последовательность входа на хаб. "Рукопожатие" между клиентом и хабом. Общая (обязательная) последовательность входа на хаб Хаб: Код $Lock [Код] Pk=[PrimaryKey]| Клиент: Код $Key [Рассчитанный_ключ]|$ValidateNick [Ник]| Хаб: Код $HubName [Имя_хаба]|$Hello [Ник]| Клиент: Код $Version [Версия]|$GetNickList|$MyINFO [Строка]| Хаб: Код Отсылает список пользователей. Примечания:
Вход на пальцах выглядит так: Клиент коннектится, сервер отвечает командой $Lock, что мол я такой-то сервер, на что клиент отвечает: ок раз ты такой-то сервер - вот тебе ключ ($Key) и проверь мой ник ($ValidateNick), сервер проверяет ник и отправляет клиенту приглашение на вход под этим ником ($Hello), на что клиент отправляет на сервер внутреннюю версию ($Version), запрашивает список пользователей ($GetNickList) и отправляет информацию о себе ($MyINFO), а сервер отсылает ему список пользователей хаба. Последовательность входа на хаб, который поддерживает характеристику QuickList. Входа на хаб при поддержке характеристики QuickList (быстрый вход) Хаб: Код $Lock EXTENDEDPROTOCOL[Код] Pk=[PrimaryKey]| Клиент: Код $Supports QuickList|$Key [Рассчитанный_ключ]| Хаб: Код $Supports QuickList| Клиент: Код $MyINFO [Строка]|$GetNickList| Хаб: Код Отсылает список пользователей. См. подробности в характеристике QuickList Последовательность действий хаба при регистрации в хаб-листе Последовательность действий хаба при регистрации в хаб-листе Хаб коннектится к хаб-листу. Хаб-лист: Код $Lock [Код] Pk=[PrimaryKey]| Хаб: Код $Key [Рассчитанный_ключ]|[Имя_хаба]|[Хост_хаба(:порт)]|[Описание_хаба]|[Число_юзеров]|[Текущая_шара]| Тут хаб выступает в роли клиента. Он коннектится к прописанным в настройках хаб-листам и передаёт им текущую информацию о себе. Коннект к хаб листу должен производится не чаще чем раз в 15 минут, в противном случае, хаб может быть забанен хаб-листом)). Последовательность входа на хаб PtokaX (последовательные команды могут отсылаться одной строкой, разделённой символом | ) Последовательность входа на хаб PtokaX Хаб -> Клиент: ---> $Lock EXTENDEDPROTOCOL[некий_ключ_хаба] Pk=PtokaX Примечание: Команда $LogedIn отсылается только в случае если у вас есть ключ (операторские права). Внимание! Последовательность входа указана для одного потока. Для разных потоков она может быть произвольной, поэтому никогда не используйте глобальные таблицы пользователей, дабы сохранить принцип многопоточности. Последовательность команд при получении списка пользователей (GetNickList) на хабе PtokaX Последовательность команд при получении списка пользователей (GetNickList) на хабе PtokaX Клиент -> Хаб: ---> $GetNickList| Последовательность входа на хаб HeX (последовательные команды могут отсылаться одной строкой, разделённой символом | ) Последовательность входа на хаб HeX Хаб -> Клиент: ---> $Lock EXTENDEDPROTOCOL[некий_ключ_хаба] Pk=versiunea5.03 Примечание: Данный хаб различает вход и переподключение к хабу! Это достигается с помощью задержки в отправлении команды $Quit. Материал из этой темы перенесён в вики: Сообщение отредактировал Setuper - 18.1.2012, 21:48 |
|
|
16.12.2008, 19:19
Сообщение
#2
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
$BadPass
Синтаксис: Код $BadPass| Направление команды: Хаб ---> Клиент Описание: Эту команду отсылает хаб клиенту, который коннектится. Команда посылается, если клиент отослал хабу неправильный(некорректный) пароль в ответ на посланную хабом команду $GetPass. После отсылки этой команды хаб закрывает соединение с этим клиентом, или даже банит его. |
|
|
16.12.2008, 19:35
Сообщение
#3
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
$BotList
Синтаксис: Код $BotList [Бот1]$$[Бот2]$$[Бот3]$$ ... $$| Направление команды: Хаб ---> Клиент Описание: Данная команда используется хабом для передачи клиенту списка ботов. Этот список ограничен и разделён символами "$$". Клиенты BDCH, BlackDC и ZionPlusPlus поддерживают эту команду для того чтобы различать операторов и ботов. Однако данная команда не является распространённой и не поддерживается большинством хабов. На поддержку данной команды указывает наличие характеристики BotList в команде $Supports. |
|
|
16.12.2008, 19:50
Сообщение
#4
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
$Close
Синтаксис: Код $Close [Ник]| Направление команды: Клиент ---> Хаб Описание: Эта команда заставляет хаб закрыть соединение с клиентом, чей ник написан в аргументе этой команды. Только операторы могут (имеют право) отправлять эту команду хабу. Эта команда в простонародье называется ДРОП. [Ник] - ник пользователя, который подлежит разъединению с хабом. В отличии от команды $Kick, команда $Close разъединяет пользователя без уведомления о разъединении. (По крайней мере на хабах NMDC первой версии эта команда работает именно так). |
|
|
16.12.2008, 20:21
Сообщение
#5
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
$ConnectToMe
Синтаксис: Для клиентов DC++ и NMDC. Код $ConnectToMe [Ник_получателя] [IP_отправителя]:[Порт_отправителя]| Пример: Код $ConnectToMe Вася 10.10.10.10:16437| Для клиентов NMDC v2.205 и DC:PRO v0.2.3.97A: Код $ConnectToMe [Ник_отправителя] [Ник_получателя] [IP_отправителя]:[Порт_отправителя]| Пример: Код $ConnectToMe Петя Вася 10.10.10.10:16437| Направление команды: Клиент ---> Хаб Хаб ---> Клиент Хаб ---> Хаб Описание: Эта команда начинает процесс соединения между клиентами. Команда отправляется на хаб клиентом, находящимся в активном режиме соединения с хабом. Хаб пересылает эту команду целевому клиенту без изменения. Получив эту команду, целевой клиент отвечает, соединяясь напрямую с указанным IP через указанный порт. [Ник_отправителя] - ник клиента в активном режиме, который хочет соединиться с целевым клиентом [Ник_получателя]. Клиент отправителя, после отправки на хаб запроса на соединение, начинает слушать указанный в запросе TCP порт. Замечание: Обратите внимание, что в скриптовую функцию старой версии PtokaX данная команда передаётся без символа вертикальной черты '|' на конце. |
|
|
16.12.2008, 23:32
Сообщение
#6
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
$ForceMove
Синтаксис: Код $ForceMove [Новый_адрес] Команда сопровождается отсылкой в личку оповещения о перенаправлении: Код $To: [Ник_жертвы] From: [Ник_отправителя] $<[Ник_отправителя]> You are being redirected to [Новый_адрес]: [Причина]| Команда сопровождается отсылкой в чат оповещения о перенаправлении: Код <[Ник_бота]> [Причина]| Направление команды: Хаб ---> Клиент Описание: Хаб отсылает команду $ForceMove клиенту, чтобы предложить ему переместиться на другой хаб (предлагает клиенту перенаправиться). [Ник_отправителя] - ник, который отправляет команду $OpForceMove. [Ник_бота] - ник основного бота на хабе. [Ник_жертвы] - ник, который должен быть перенаправлен на новый адрес. [Новый_адрес] - это IP адрес или хост-имя (и опционально, через двоеточие, порт) другого хаба, на который происходит перенаправление. [Причина] - причина перенаправления. Комментарии: Жертва может следовать перенаправлению или не следовать ему, это зависит от настроек клиента. По этой причине разъединение после отсылки клиенту этой команды - это общее, но не обязательное требование для хаба. Примечание: Обратите внимание, что если команды чата и лички следуют после команды перенаправления, то в случае автоматического следования перенаправлению пользователь не увидит сообщения о перенаправлении в чате и личке, однако, последовательность отсылаемых команд полностью на совести хаба, который может отослать сообщения как после команды перенаправления, так и до. |
|
|
17.12.2008, 0:29
Сообщение
#7
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
$GetNickList
Синтаксис: Код $GetNickList| Направление команды: Клиент ---> Хаб Описание: Эта команда заставляет хаб послать клиенту 2 списка зарегистрированных(вошедших) ников. Код $NickList [Ник1]$$[Ник2]$$[Ник3]$$ ... $$| $OpList [ОПератор1]$$[ОПератор2]$$[ОПератор3]$$ ... $$| Тут надо отметить, что список $OpList является подмножеством списка $NickList. Если на хабе нет операторов и ботов, то хаб должен послать просто "$OpList $$|". Однако, только старые версии протокола отправляют данные команды. Новые же версии несколько упрощены и отправляют только команду $OpList, а вместо команды $NickList используется команда $MyINFO. Замечание: Клиент не обязан запрашивать у хаба список пользователей, поэтому данная команда по своей сути не является обязательной. |
|
|
17.12.2008, 0:41
Сообщение
#8
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
$GetPass
Синтаксис: Код $GetPass| Направление команды: Хаб ---> Клиент Описание: Хаб посылает данную команду клиенту для запроса пароля зарегистрированного пользователя. Команда посылается соединяющемуся с хабом пользователю только если его ник находится в регистрационном листе хаба (ник зарегистрирован на хабе). Также см. команду $MyPass |
|
|
17.12.2008, 0:53
Сообщение
#9
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
$Hello
Синтаксис: Код $Hello [Ник]| Направление команды: Хаб ---> Клиент Описание: Данная команда является частью рукопожатия между клиентом и хабом. Посылается клиенту для того, чтобы указать ему ник, с которым хаб сопоставляет данный клиент. Хаб как бы даёт согласие на вход пользователя под данным ником. В ответ на эту команду, входящий на хаб клиент, должен отослать команду $Version Данная команда является командой приветствия пользователя и отправляется хабом не только вошедшему на хаб клиенту, но и всем клиентам, находящимся в данный момент на хабе. Однако, если клиент при входе на хаб в команде $Supports указал характеристику NoHello, то такому клиенту, при входе какого-либо пользователя, хаб не будет отправлять команду $Hello. |
|
|
17.12.2008, 0:59
Сообщение
#10
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
$HubIsFull
Синтаксис: Код $HubIsFull| Направление команды: Хаб ---> Клиент Описание: Команда, посылаемая клиенту хабом для того, чтобы сообщить, что хаб полный, то есть на хабе достигнут предел пользователей. Связанная с данной команда: $ValidateNick |
|
|
17.12.2008, 1:21
Сообщение
#11
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
$HubName
Синтаксис: Код $HubName [Имя_хаба]| Направление команды: Хаб ---> Клиент Описание: Данная команда является частью рукопожатия между клиентом и хабом. Команда отправляет клиенту имя хаба. [Имя_хаба] - это имя, которое использует данный хаб. Имя хаба обычно состоит из самого имени и из топика. Дополнения: Эта команда может быть отправлена в любое время, например, когда хаб изменил имя. Данная команда используется только для описания хаба. Клиент1 и Клиент2 на одном и том же хабе этой командой могут получить разные имена, это может получится только на NMDC хабах, поэтому это имя не может быть использовано для однозначного определения хаба. В Имени хаба в DC++ вместо символов (&, |, $) ожидаются их HTML эквиваленты. |
|
|
17.12.2008, 1:33
Сообщение
#12
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
$HubTopic
Синтаксис: Код $HubTopic [Топик]| Направление команды: Хаб ---> Клиент Описание: Команда $HubTopic отсылает клиенту топик хаба, на подобии IRC. [Топик] - это строка, содержащая топик. Доступность команды в клиентах: Данная команда поддерживается почти всеми современными клиентами. Данная команда поддерживается следующими хабами: Verlihub, RusHub. Хаб PtokaX не поддерживает данную команду, однако команда может отправляться скриптом. На поддержку данной команды может указывать наличие дополнения HubTopic в команде $Supports, однако, это наличие не обязательно. |
|
|
17.12.2008, 1:49
Сообщение
#13
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
$Key
Синтаксис: Код $Key [Рассчитанный_ключ]| Направление команды: Клиент ---> Хаб Хаб ---> Хаблист Клиент ---> Клиент Пингер ---> Хаб Описание: Команда $Key отсылается на хаб в ответ на команду $Lock, которая отсылается хабом перед входом на хаб. Когда соединяются клиент с клиентом, или хаб с клиентом, ключ рассчитывается по определённому алгоритму, исходные коды которого доступны и свободно распространяются на разных языках программирования (см. Lock2Key). Команда $Key также используется, когда хаб регистрируется в хаб-листе, однако, в этом случае ключ вычисляется по иному. Такой обмен ключами является своего рода гарантом того, что соединяемые устройства работают на одном протоколе. Сторона, которой отсылается ключ, может и не проверять правильность этого ключа, однако, отсылающая сторона всегда обязана отсылать рассчитанный ключ. |
|
|
17.12.2008, 1:58
Сообщение
#14
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
$Kick
Синтаксис: Код $Kick [Ник_жертвы]| Направление команды: Клиент ---> Хаб Описание: Данная команда отсылается на хаб клиентом и заставляет хаб закрыть соединение с жертвой. Жертве отсылается оповещение, в отличии от команды $Close. Только ОПераторы могут отсылать команду $Kick. В простонароде данную команду называют КИК. Замечание: На самом дела на хаб клиентом отправляется строка, состоящая из 3 команд: Код $To: [Ник_жертвы] From: [Ник_оператора] $<[Ник_оператора]> You are being kicked because: [Причина_кика]|<[Ник_оператора]> is kicking [Ник_жертвы] because: [Причина_кика]|$Kick [Ник_жертвы]| Однако, первые 2 команды, которые представляют из себя, соответственно, сообщение в личку жертве, и сообщение всем в чат, автоматически приписывает клиентом. А непосредственно за кик отвечает только последняя команда: $Kick [Ник_жертвы]| |
|
|
17.12.2008, 2:20
Сообщение
#15
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
$Lock
Синтаксис: Код $Lock [Код] Pk=[ПК]| Направление команды: Хаб ---> Клиент Клиент ---> Клиент Хаблист ---> Хаб Хаб ---> Пингер Описание: Данная команда используется для того, чтобы убедиться в том, что с сервером соединяется оригинальный клиент DC (NMDC). Сервер (хаб, клиент, хаблист) может и не проверять отправленный клиентом (клиент, хаб, пингер) ключ, однако ключ должен посылаться клиентом в любом случае. [Код] - это какая-либо последовательность символов (может даже случайная), исключая пробел, $ и |, максимальная и минимальная длина которой неизвестна. [ПК] - это идентификатор устройства. Эта команда является частью рукопожатия между клиентом и хабом, между клиентом и клиентом и в регистрации хаб-листа. Из-за того, что используемый алгоритм легко декодируется (см. Lock2Key), практически каждый может создать свой клиент. Клиент никогда не должен посылать команду $Lock на хаб. Клиенты должны отсылать команду $Lock, когда два клиента соединяются друг с другом. Пример для DC++: Код $Lock EXTENDEDPROTOCOLABCABCABCABCABCABC Pk=DCPLUSPLUS0.242ABCABC| Секции "ABCABC" являются наполнителями. Ключевое слово EXTENDEDPROTOCOL в коде команды даёт право клиенту, кроме прочих команд рукопожатия отправить команду $Supports. Те есть это слово говорит о том, что хаб (клиент) поддерживает систему дополнительных расширений или характеристик. Хаб(клиент) в ответ на команду $Supports также отправляет эту команду другой стороне уже со своим списком поддерживаемых расширений. Если какой-либо из участников не поддерживает дополнительные расширения, отправки команды $Supports не происходит. Характеристики команды $Lock в протоколе NMDC:
Экранируемые коды(символы): 0 (\0), 5(\5), 36($), 96(`), 124(|), 126(~) |
|
|
17.12.2008, 2:32
Сообщение
#16
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
$LogedIn
Синтаксис: Код $LogedIn [Ник]| Направление команды: Хаб ---> Клиент Описание: Данная команда отсылается хабом клиенту в ответ на успешную последовательность пройденных команд $GetPass / $MyPass. Эта команда отправляется исключительно ОПераторам. Команда как бы контролирует вход операторов. Замечание: Обратите внимание на название команды: $LogedIn, а не $LoggedIn, как казалось бы должно быть. |
|
|
17.12.2008, 3:11
Сообщение
#17
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
$MyINFO
Синтаксис: Код $MyINFO $ALL [Ник] [Описание][Тэг]$ $[Соедиенние][Флаг]$[E-Mail]$[Шара]$| Направление команды: Клиент ---> Хаб Хаб ---> Клиент Описание: Данная команда отправляется клиентом на хаб, и хабом всем клиентам и, содержит всю основную информацию о клиенте. Описание параметров команды: [Ник] - ник пользователя (без пробелов). [Описание] - описание пользователя. Поле определяемое самим пользователем. Клиенты автоматически к описанию добавляют в конце тэг. Вообще говоря тэг является не обязательным элементом, однако тэг содержит важные параметры, которые помогают хабу общаться с клиентом. Одним из важнейших параметров является режим. При помощи режима хаб определяет как клиент будет взаимодействовать с ним и с другими клиентами. [Тэг] - автоматически добавляемый клиентом тэг. Общий вид любого тэга: <[Имя_клиента] V:[Версия_клиента],M:[Режим],H:[Хабы],S:[Слоты],[Ограничители]> Вообще говоря параметры не обязательно должны быть в тэге именно в такой последовательности. Такая последовательность просто является общепринятой, и некоторые клиенты любую другую последовательность параметров могут воспринимать не правильно. Несколько примеров различных видов тэгов: DC++: <++ V:x,M:x,H:x/y/z,S:x,O:x> BCDC++: <++ V:x,M:x,H:x/y/z,S:x,O:x,B:x> CZDC++: <++ V:x,M:x,H:x/y/z,S:x,O:x,L:x> DC:Pro: <DC:PRO V:x,M:x,H:x/y/z,S:x,O:x,F:x/y> DC++k CDM: <++ V:x,M:x,H:x/y/z,S:x,O:x> DCDM++: <++ V:x,M:x,H:x/y/z,S:x,O:x,B:x> DCGUI: <DCGUI V:x,M:x,H:x,S:x,L:x> iDC++: <++ V:x,M:x,H:x/y/z,S:x,O:x> MS++V: <++ V:x,M:x,H:x/y/z,S:x,O:x,B:x> NMDC v2: <DC V:x,M:x,H:x/y/z,S:x,O:x> oDC: <oDC V:x,M:x,H:x/y/z,S:x,O:x> PhantomDC: <++ V:x,M:x,H:x/y/z,S:x,O:x,B:x> PeerWebDC++: <PWDC++ V:x,M:x,H:x/y/z,S:x> PeerWebDC++: <PWSDC++ V:x,M:x,H:x/y/z,S:x> rmDC++: <RMDC++ V:y,M:x,H:x/y/z,S:x,O:x,B:x,D:x> StrongDC++: <StrgDC++ V:y,M:x,H:x/y/z,S:x,O:x,L:x> zDC++ <++ V:x,M:x,H:x/y/z,S:x,O:x> Z++ <Z++ V:x,M:x,H:x/y/z,S:x,L:x> LDC++ <LDC++ V:x,M:x,H:x/y/z,S:x,L:x> ApexDC++ <ApexDC++ V:x,M:x,H:x/y/z,S:x,L:x> AvaDC++ <AvaDC V:x,M:x,H:x/y/z,S:x,L:x> FlylinkDC++ <FlylinkDC++ V:x,M:x,H:x/y/z,S:x,L:x> Greylink++ <gl++ V:x,M:x,H:x/y/z,S:x,L:x> Pelink++ <pl++ V:x,M:x,H:x/y/z,S:x,L:x> RSX++ <RSX++ V:x,M:x,H:x/y/z,S:x,L:x> zK++ <zK++ V:x,M:x,H:x/y/z,S:x,L:x> UKCable++ <UKC++ V:x,M:x,H:x/y/z,S:x,L:x> [Имя_клиента] - имя, которое определяет тот или иной клиент. [Версия_клиента] - версия, под которой выпущен клиент. [Режим] - режим клиента. Может принимать значения: A, P или иное (5). A - активное соединение с хабом, P - пассивное соединение с хабом, 5 - соединение через прокси-сервер SOCKS5. [Хабы] - хабы на которых находится клиент. Параметр может иметь следующий формат: U/R/O, где U - число хабов, на которых данный пользователь является незарегистрированным, R - число хабов, на которых данный пользователь является зарегистрированным, O - число хабов, на которых пользователь яляется ОПератором. [Слоты] - число свободных или полное число слотов в клиенте. [Ограничители] - данный параметр является не обязательным. Он может содержать в себе несколько параметров. Всё зависит от того или иного клиента. Обычно данный параметр показывает ограничение скорости. Конкретные значения данного параметра не привожу, для тех, кто хочет узнать его значения, я привёл примеры тэгов различных клиентов (см. чуть выше). [Соединение] - тип соединения с хабом (указывается либо тип соединения, либо скорость соединения). Устанавливается непосредственно пользователем клиента. Типы соединений в клиенте NMDC1: 28.8Kbps, 33.6Kbps, 56Kbps, Satellite, ISDN, DSL, Cable, LAN(T1), LAN(T3). Типы соединений в клиенте NMDC2: Modem, ISDN, Wireless, DSL, Cable, Satellite, LAN(T1), LAN(T3). Новые типы (Мбит/c): 0.005, 0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 20, 50, 100, 1000 [Флаг] - статус пользоателя (ascii символ). Этот символ ещё называют магическим байтом. При отсутствии принимает значение кода 0. Типы статусов (коды ascii символов для данного статуса):
Статус server используется, когда клиент пробыл на хабе больше 2 часов, расшарил больше 2 ГБ и имеет отдачу свыше 200 МБ. Статус fireball используется, когда с клиента скачивают со скоростью, превышающей 100 КБ/с. [E-Mail] - email адрес пользователя. Может отсутствовать (пустая строка). [Шара] - количество байт, которые расшарил пользователь. Этот параметр в любом случае должен приводится к числу. Расшифровка буквенных обозначений тэга (на английском): V: Client Version. M: Mode. H: The number of Hubs the client is connected to. S: Number of Slots open. O: Open an extra slot if speed is below. B: Upload Bandwidth limit in kb/s. L: Upload bandwidth Limit. D: Download bandwidth limit in kb/s. F: Fraction download / upload. Возможные комбинации ограничителей:
В параметрах данной команды символы $ и | не допустимы! Эта команда является частью рукопожатия между клиентом и хабом. Посылается клиентом на хаб после получения команды $Hello. Клиент также отсылает эту команду время от времени, а также когда какой-либо из параметров этой команды изменится. Любая, как правило изменённая, отсылка этой команды транслируется хабом всем клиентам с характеристикой NoHello. |
|
|
17.12.2008, 16:24
Сообщение
#18
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
|
|
|
17.12.2008, 16:35
Сообщение
#19
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
$NickList
Синтаксис: Код $NickList [Ник1]$$[Ник2]$$[Ник3]$$ ... $$| Направление команды: Хаб ---> Клиент Описание: Данная команда используется хабом для того, чтобы отправить ники пользователей, которые находятся на хабе в данный момент. Этот список ников оканчивается и разделён символами "$$". Команда используется в старых версиях протокола NMDC. Смотрите также $OpList, $GetNickList |
|
|
17.12.2008, 17:19
Сообщение
#20
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
$OpForceMove
Синтаксис: Код $OpForceMove $Who: [Ник_жертвы]$Where: [Новый_адрес]$Msg: [Причина]| Направление команды: Клиент ---> Хаб Описание: ОПератор может отослать команду $OpForceMove для того, чтобы предложить клиенту переместиться на другой хаб. [Ник_жертвы] - ник, которому предлагается перенаправиться. [Новый_адрес] - это IP адрес или хост-имя (и опционально через двоеточие порт) другого хаба, на который происходит перенаправление. [Причина] - причина перенаправления. После получения этой команды хаб должен отослать жертве команду $ForceMove. Сервер разъединяет клиента, однако клиент и сам закрывает соединение с хабом. Комментарии: После отправки ОПератором на хаб команды $OpForceMove, хаб отсылает жертве команды Код $ForceMove [Новый_адрес]| и прекращает отсылать клиенту-жертве какие-либо команды.$To:[Ник_жертвы] From: [Ник_отправителя] $<[Ник_отправителя]> You are being re-directed to [Новый_адрес] because: [Причина] Если команда $OpForceMove послана на хаб пользователем, не являющемся ОПератором, хаб должен разъединить такого пользователя. |
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последнее сообщение | |
---|---|---|---|---|---|
Описание протокола DC Для созадния PHP клиента-"клиента" |
7 | Ацкий Слон | 15 559 | 25.6.2020, 21:37 Посл. сообщение: Alexey | |
Расширения протокола Обсуждение новых расширений протокола |
2 | alex82 | 7 247 | 11.1.2017, 16:41 Посл. сообщение: PPA | |
Вопросы по протоколу NMDC Делаю программу |
26 | Master255 | 29 668 | 12.1.2015, 0:38 Посл. сообщение: Master255 | |
От: вопрос по NMDC. От темы с ID: 4932 |
0 | MIKHAIL | 5 524 | 25.1.2013, 19:48 Посл. сообщение: MIKHAIL | |
вопрос по NMDC. . |
6 | Lamo | 13 337 | 29.5.2012, 19:35 Посл. сообщение: Lamo | |
Протокол IPv6 в протоколе NMDC Спецификация и тестирование IPv6 в NMDC |
109 | gif-t | 95 544 | 26.2.2012, 10:12 Посл. сообщение: AMD | |
NMDC Extensions Расширения и новые команды NMDC протокола |
10 | Meloun | 18 373 | 19.2.2012, 16:39 Посл. сообщение: gif-t | |
От: NMDC Extensions От темы с ID: 5095 |
0 | Артём | 5 590 | 4.1.2012, 18:56 Посл. сообщение: Артём | |
Поддержка сетевого протокола SCTP | 2 | CSRedRat | 6 957 | 30.12.2011, 14:57 Посл. сообщение: pro | |
ВАЖНО: Описание Eximius и публикация новых версий Eximius |
14 | Saymon21 | 23 183 | 2.10.2011, 16:59 Посл. сообщение: Артём | |
Пингер NMDC-хабов Ударим опенсорсом по нездоровой шняге |
23 | alex82 | 38 709 | 11.4.2011, 18:12 Посл. сообщение: alex82 | |
От: Пингер NMDC-хабов От темы с ID: 4787 |
1 | Invisible | 6 732 | 4.4.2011, 1:10 Посл. сообщение: EvilNico | |
ВАЖНО: Описание Протокола ADC Advanced Direct Connect Protocol |
31 | Setuper | 76 125 | 14.3.2011, 15:15 Посл. сообщение: Setuper | |
Скачивание файл-листа, nmdc Последовательность команд |
16 | HackFresse | 26 041 | 3.11.2010, 12:48 Посл. сообщение: Atlant | |
Описание | 3 | denis | 9 330 | 13.2.2010, 14:27 Посл. сообщение: Артём |
|
Сейчас: 23.11.2024, 6:23 |