Российское содружество даунгрейдеров

Авторизация

DMconnect

Ознакомительный документ


Автор: Сухарь Сухаревич
DMC: PredoK_CyXaR
Помощь: BitByByte, Octavian.

Санкт-Петербург

1998



Оглавление



Первые этапы работы в DMconnect


Работа с протоколом DMconnect состоит из нескольких этапов: Авторизация, Выбор подсервера, Вход на подсервер, Общение на подсервере в реальном времени, Закрытие соединения (завершающий этап, подразумевает выход из списка пользователей "на линии"). В этом документе мы рассмотрим только два первых этапа - "до авторизации" и саму авторизацию.

Эт. 1: До авторизации

Сразу после запуска клиента DMconnect, мы получаем сообщение Enter command (/login /register): (с двоеточием). Это сообщение как бы подталкивает нас к началу авторизации или регистрации новой учётной записи на сервере. Рассмотрим процесс "вне" (можно назвать нулевым этапом, т. е. этапом до авторизации).


HEX

Вид в UTF-8

Синтаксис

Описание

2F 6C 6F 67 69 6E

/login

LOGIN ; PASSWORD

Авторизация пользователя в уже зарегистрированную учётную запись

2F 72 65 67 69 73 74 65 72

/register

LOGIN ; PASSWORD

Регистрация новой учётной записи на сервере

Таблица 1. Возможные команды на "нулевом" этапе работы

Впрочем, синтакис у обоих команд одинаковый, но назначение совершенно разное (см. столбец "Описание"). Обратите внимание на то, что начинающий HEX-символ здесь - 2F, как и у обычных команд на прочих этапах. Если отправить серверу какую-либо другую команду, то сервер ответит:

	45 6E 74 65 72 20 63 6F 6D 6D 61 6E 64 20 28 2F 6C 6F 67 69 6E 20 2F 72 65 67 69 73 74 65 72 29 3A
	Enter command (/login /register):

Это же он отправляет при подключении (см. раздел выше). Допустим, мы разобрались с командами. Следующий ответ нас ожидает при отправке "чистого" /login:

	Usage: /login <username> <password>
	("подсказка" сервера о правильном синтаксисе команды)

  55 73 61 67 65 3A 20 2F 6C 6F 67 69 6E 20 3C 75 73 65 72 6E 61 6D 65 3E 20 3C 70 61 73 73 77 6F 72 64 3E
  (эта же строка в HEX)

Обратите внимание на символ 3A: он часто встречается в ответах сервера (см. предыдущий документ). Что будет при попытке авторизации с неправильным именем учётной записи или паролем, см. ниже:

	49 6E 76 61 6C 69 64 20 75 73 65 72 6E 61 6D 65 20 6F 72 20 70 61 73 73 77 6F 72 64 2E (переход \n)
	45 6E 74 65 72 20 63 6F 6D 6D 61 6E 64 20 28 2F 6C 6F 67 69 6E 20 2F 72 65 67 69 73 74 65 72 29 3A

Строка 45 6E 74 ... в данном примере идентична строке Enter command (/login /register):, т. е. пользователь снова оказывается на "нулевом этапе". Допустим, мы указали правильное имя учётной записи и пароль, но другой пользователь уже в сети с этого имени:

	54 68 69 73 20 75 73 65 72 6E 61 6D 65 20 69 73 20 61 6C 72 65 61 64 79 20 69 6E 20 75 73 65 2E (переход на нулевой этап с \n)
	45 6E 74 65 72 20 63 6F 6D 6D 61 6E 64 20 28 2F 6C 6F 67 69 6E 20 2F 72 65 67 69 73 74 65 72 29 3A

С процедурой команды /login на этом всё - перейдём к /register. Сервер ответит так на "чистый" /register:

	Usage: /register <username> <password>
	(сервер подсказывает синтаксис)

  55 73 61 67 65 3A 20 2F 72 65 67 69 73 74 65 72 20 3C 75 73 65 72 6E 61 6D 65 3E 20 3C 70 61 73 73 77 6F 72 64 3E
  (эта же строка в HEX)

Начинающий префикс ответа тут идентичен префиксу ответа /login - 55 73 61 67 65 3A. Сервер ответит так, если мы введём уже существующее имя пользователя:

	Username already taken. Try another.
	(сервер сообщает о том, что имя пользователя уже занято)

  55 73 65 72 6E 61 6D 65 20 61 6C 72 65 61 64 79 20 74 61 6B 65 6E 2E 20 54 72 79 20 61 6E 6F 74 68 65 72 2E
  (эта же строка в HEX)

В случае, если все условия регистрации соблюдены, ответ будет таковым:

	Registration successful. Please log in.
	(сообщение сервера об успешной регистрации)

  52 65 67 69 73 74 72 61 74 69 6F 6E 20 73 75 63 63 65 73 73 66 75 6C 2E 20 50 6C 65 61 73 65 20 6C 6F 67 20 69 6E 2E
  (эта же строка в HEX)

Отметим также, что после любого из этих ответов, пользователь вновь переходит на "нулевой этап". После успешного выполнения /login, пользователь переходит на этап "Авторизация".

Эт. 2: Авторизация

Пользователь переходит на этот этап, если выполнение команды /login прошло успешно. Посмотрим, как это выглядит:

	Login successful. (переход \n и задержка 0.2-0.3 сек.)
	Available servers: SERVER, SERVER ... (переход \n без задержки)
	Select a server using /join_server <server_name>. (переход \n)

Посмотрим на те же строки, но в HEX:

	4C 6F 67 69 6E 20 73 75 63 63 65 73 73 66 75 6C 2E
	41 76 61 69 6C 61 62 6C 65 20 73 65 72 76 65 72 73 3A 20
	53 65 6C 65 63 74 20 61 20 73 65 72 76 65 72 20 75 73 69 6E 67 20 2F 6A 6F 69 6E 5F 73 65 72 76 65 72 20 3C 73 65 72 76 65 72 5F 6E 61 6D 65 3E 2E

Обратите внимание на символы 3A 20 во второй строке. Это - разделяющие символы, которые используются только здесь, а также в ответе на команду для запроса списка пользователей - /members.

На этом сама процедура авторизации подходит к концу, пользователь должен зайти на подсеврер /join_server ... и начинать общаться. Обратите внимание, что даже на этом этапе доступны не все команды, например, /members. При попытке отправить эту команду, ответ будет следующим:

	Please log in and join a server first.
	(сервер говорит, что нам сначала нужно зайти на подсервер, прежде чем выполнить данную команду)

  50 6C 65 61 73 65 20 6C 6F 67 20 69 6E 20 61 6E 64 20 6A 6F 69 6E 20 61 20 73 65 72 76 65 72 20 66 69 72 73 74 2E
  (эта же строка в HEX)

Впрочем, вот полный список доступных на данном этапе команд:


HEX

Наименование

Описание

2F 70 ...

/pm

Отправка личного сообщения пользователю

2F 6C ...

/list_servers

Получить список подсерверов, доступных пользователю

2F 6A ...

/join_server

Войти на подсервер

2F 63 ...

/create_server

Создать собственный подсервер

2F 68 ...

/help

Запрос серверу на получение информации о командах

Таблица 2. Доступные команды серверу DMconnect и их первые два символа HEX

Рассказывать про все эти команды подробнее сейчас не имеет смысла, об этом вы сможете прочитать в документации по этапу 3 и 4.




Заключение

Надеемся, документ помог вам ознакомиться с процедурой авторизации и её этапами в DMconnect. Спасибо за внимание!