$Lock
Материал из MyDC's Wiki
Команда протокола NMDC.
Синтаксис
$Lock {код} Pk={пк}|
Направление команды
- Хаб ---> Клиент
- Клиент ---> Клиент
- Хаблист ---> Хаб
- Хаб ---> Пингер
Описание
- Данная команда предназначалась для того, чтобы убедиться в том, что с сервером соединяется оригинальный DC-клиент (NeoModus Direct Connect). Сервер (хаб, клиент, хаблист) может и не проверять отправленный клиентом (клиент, хаб, пингер) ключ, однако ключ должен посылаться клиентом в любом случае.
- {код} — какая-либо последовательность символов (может даже случайная), исключая пробел, $ и |, максимальная и минимальная длина которой неизвестны.
- {пк} — идентификатор устройства.
- Эта команда является частью рукопожатия между клиентом и хабом, между клиентом и клиентом и между хабом и хаб-листом. Команды $Lock и $Key предназначались для ограничения доступа в хаб клиентов сторонних разработчиков, но из-за того, что используемый алгоритм легко декодируется (см. Lock2Key), практически каждый может создать свой клиент.
- Клиент никогда не должен посылать команду $Lock на хаб. Клиенты должны отсылать команду $Lock только когда два клиента соединяются друг с другом.
Пример для DC++:
$Lock EXTENDEDPROTOCOLABCABCABCABCABCABC Pk=DCPLUSPLUS0.242ABCABC|
Секции "ABCABC" являются наполнителями.
Ключевое слово EXTENDEDPROTOCOL в коде команды даёт право клиенту, кроме прочих команд рукопожатия отправить команду $Supports. Те есть это слово говорит о том, что хаб (клиент) поддерживает систему дополнительных расширений или характеристик.
Хаб(клиент) в ответ на команду $Supports, также отправляет эту команду другой стороне уже со своим списком поддерживаемых расширений. Если какой-либо из участников не поддерживает дополнительные расширения, отправка команды $Supports не происходит.
Характеристики команды $Lock в протоколе NMDC:
- длина кода от 46 до 115 символов;
- длина Pk до 16 символов;
- символы команды $Lock: случайные, с кодами от 37 до 122;
- символы команд $Lock и $Key с кодами 0, 5, 36, 96, 124 и 126 должны быть заменены, соответственно, на
/%DCN000%/, /%DCN005%/, /%DCN036%/, /%DCN096%/, /%DCN124%/ и /%DCN126%/
- Экранируемые коды(символы):
0 (\0), 5(\5), 36($), 96(`), 124(|), 126(~)