-
Notifications
You must be signed in to change notification settings - Fork 1
Protocol
Для связи между сервером и клиентом RemExec использует простой, похожий на http, текстовый протокол.
Сразу после подключения клиента сервер ожидает от него команд. Структура команды представлена ниже:
<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
Сервер отвечает такими же командами. Обычно в командах сервера содержится статус и дополнительная информация.
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