Skip to content

Protocol

iassasin edited this page Apr 1, 2017 · 3 revisions

Protocol

Для связи между сервером и клиентом RemExec использует простой, похожий на http, текстовый протокол.

Request

Сразу после подключения клиента сервер ожидает от него команд. Структура команды представлена ниже:

<COMMAND> <arguments...>\n
[<parameter1_name>: <value1>\n]
[<parameter2_name>: <value2>\n]
[...\n]
\n
[<тело>\n
\n]

Где \n означает перенос строки, здесь и далее это добавлено для большей наглядности.
<COMMAND> - имя команды, должно быть в верхнем регистре.
<тело> - может встречаться в некоторых командах для передачи дополнительных (больших) данных серверу. Например, используется в команде FILE. Если наличие тела не предполагается командой, то два дополнительных переноса строк писать не нужно.
Пустая строка в конце команды должна обязательно присутствовать (как и в http). Список параметров может быть любым, порядок не важен. Некоторые команды могут иметь обязательные параметры. Если встречается несколько параметров с одним именем, используется последнее встреченное значение.

Значения параметров и аргументов кодируются в соответствии с правилами кодирования параметров запроса в URL.

Пример запроса к серверу

Отправить серверу файл file.txt.

FILE\n
Name: file.txt\n
Size: 4\n
\n
body\n
\n

Response

Сервер отвечает такими же командами. Обычно в командах сервера содержится статус и дополнительная информация.

OK\n
\n

или в случае ошибки

ERROR <code> <info>\n
\n

Список кодов ошибки представлен в Error codes.

Пример ответа сервера

Для запроса, использованного в секции примера запроса клиента:

OK\n
\n

Пример ошибки:

EXEC echo-files\n
\n
ERROR 2 Task not found: echo-files\n
\n
Clone this wiki locally