Этот проект представляет собой сервер передачи файлов на основе протокола связи I2TCP. Эффективная длина ключа достигает 512 бит. Он также имеет двухфакторный механизм аутентификации, такой как Google, чтобы гарантировать, что сервис может безопасно выжить в общедоступной сетевой среде.
pip install i2ftp-server
Python3.6+i2cylib >= 1.8.14i2ftps-setupi2ftps Server Spart/Stop /usr/share/i2ftp/server_conf.json
b"I2FTP xx" Базовый TCP/IP ← I2TCP ← Верхний уровень User
Клиентская команда - "запрос": LIST,<PATH>
<bool 路径是否存在>,{'文件1':{is_dir:<bool 是否是文件夹> size:<int 大小>, time:<float 文件修改时间戳>}} Клиентская команда - «Загрузить запрос»: GETF,<PATH>
<bool 请求是否接受>,[16 bytes 下载会话ID] Клиентская команда - «Загрузить идентификатор сеанса»: DOWN,<16 bytes 下载会话ID>,<uint64 文件指针偏移量>,<uint64 截止文件指针偏移量>
Если один возвратный пакет не может передать запрошенную длину одновременно, сервер отправит несколько пакетов по очереди, пока запрошенная длина не будет выполнена.
Если截止文件指针偏移量≤文件指针偏移量, сервер рассмотрит, что данные из文件指针偏移量до конца файла запрошены.
Возврат: <bool 操作是否有效>,[uint64 文件指针偏移量],[bytes 数据内容最大长度524128 Bytes] (Одиночная или последовательность)
Клиентская команда - "Загрузка запроса": PULF,<PATH>,<str_hex 文件哈希校验值>
<bool 操作是否有效>,[16 bytes 上传会话ID] Клиентская команда - «Загрузить идентификатор сеанса»: UPLD,<16 bytes 上传会话ID>,<uint64 文件指针偏移量>,<bytes 数据内容最大长度524128 Bytes>
<bool 上传是否成功>,[int 当前文件指针偏移量] Клиентская команда - "Закрыть сеанс": CLOZ,<16 bytes 会话ID>
<bool 操作是否成功>,[hex_str 若会话为下载会话,则会同时返回文件的MD5校验值] Команда клиента-"Операция файла/папки": FIOP,<int 命令:0-重命名,1-移动,2-复制,3-删除,4-创建目录>,<str 路径1>,[str 路径2]
<bool 操作是否成功> Команда администратора - «Управление процессом»: PCTL,[raw 保留字段]
<bool 操作是否成功>,<int 进程PID>