Протокол доступа к файловому серверу поверх TCP.
- 4 байта - длина данных в пакете
- 2 байта - тип пакета
- блоб - данные пакета.
00 00 00 00 00 03 - пустой пакет типа 0x0003.
00 00 00 02 00 6A 09 F3 - пакет типа 0x006A, передающий 2 байта данных: 0x09 и 0xF3.
Клиент передаёт пакет типа 1. Данные - строка имени пользователя.
Сервер передаёт пакет типа 1 с массивом байт - соли для ключа.
Клиент передаёт пакет типа 2 с ключом с солью.
В случае успеха сервер ведёт себя так, будто получен запрос на список файлов по пути /
.
В случае ошибки, сервер может вернуть пустой пакет типа 2.
Клиент передаёт пакет типа 3. Данные - строка пути до каталога, например, /folder1/
для папки "folder1" в папке пользователя. Слеши обязательны.
Сервер может вернуть пустые пакеты типа 2, 6 или 7 в случае ошибок.
В случае успеха возвращается пакет типа 3. Данные - последовательность строк без разделителей. Каждая строка передаётся после её длины двумя байтами. Например, 0x0004 abc/ 0x0008 file.txt
. Папки идут первыми. Пути локальные.
Клиент отправляет пакет типа 5. Данные - путь, по которому будет создан файл.
Сервер может вернуть пустые пакеты типа 2, 6 или 7 в случае ошибок.
В случае успеха возвращается пакет типа 5. Данные - 4 байта, номер передачи.
Клиент посылает пакеты типа 254 с 4 байтами номерами передачи и затем фрагментом данных.
Передачу завершает клиент пакетом типа 255 с номером передачи.
Сервер не отправляет никаких пакетов по завершению передачи.
Клиент отправляет пакет типа 4. Данные - путь файла для скачки.
Сервер может вернуть пустые пакеты типа 2, 6 или 7 в случае ошибок.
В случае успеха возвращается пакет типа 4. Данные - 8 байт длины файла и 4 байта номера передачи.
Сервер посылает пакеты типа 254 с 4 байтами номерами передачи и затем фрагментом данных.
Передачу завершает сервер пакетом типа 255 без данных.
Клиент может отправить пустой пакет типа 0 (6 нолей) для закрытия соединения.