Este proyecto es un servidor de transferencia de archivos basado en el protocolo de comunicación I2TCP. La longitud de clave efectiva alcanza 512 bits. También tiene un mecanismo de autenticación de doble factor como Google para garantizar que el servicio pueda sobrevivir de manera segura en un entorno de red pública.
pip install i2ftp-server
Python3.6+i2cylib >= 1.8.14i2ftps-setupi2ftps Servidor Inicio/parada /usr/share/i2ftp/server_conf.json
b"I2FTP xx" TCP/IP subyacente ← I2TCP ← Nivel superior User
Comando del cliente - "Consulta": LIST,<PATH>
<bool 路径是否存在>,{'文件1':{is_dir:<bool 是否是文件夹> size:<int 大小>, time:<float 文件修改时间戳>}} Comando del cliente - "Descargar la solicitud": GETF,<PATH>
<bool 请求是否接受>,[16 bytes 下载会话ID] Comando del cliente - "Descargar a través de ID de sesión": DOWN,<16 bytes 下载会话ID>,<uint64 文件指针偏移量>,<uint64 截止文件指针偏移量>
Si un solo paquete de retorno no puede transmitir la longitud solicitada a la vez, el servidor enviará múltiples paquetes a su vez hasta que se cumpla la longitud solicitada.
Si截止文件指针偏移量≤文件指针偏移量, el servidor considerará que se solicita los datos de文件指针偏移量al final del archivo.
Return: <bool 操作是否有效>,[uint64 文件指针偏移量],[bytes 数据内容最大长度524128 Bytes] (secuencia o secuencia)
Comando del cliente - "Solicitar carga": PULF,<PATH>,<str_hex 文件哈希校验值>
<bool 操作是否有效>,[16 bytes 上传会话ID] Comando del cliente - "Cargar a través de ID de sesión": UPLD,<16 bytes 上传会话ID>,<uint64 文件指针偏移量>,<bytes 数据内容最大长度524128 Bytes>
<bool 上传是否成功>,[int 当前文件指针偏移量] Comando del cliente - "Sesión cerrada": CLOZ,<16 bytes 会话ID>
<bool 操作是否成功>,[hex_str 若会话为下载会话,则会同时返回文件的MD5校验值] Comando del cliente-"File/Carper Operation": FIOP,<int 命令:0-重命名,1-移动,2-复制,3-删除,4-创建目录>,<str 路径1>,[str 路径2]
<bool 操作是否成功> Comando Administrador - "Control de proceso": PCTL,[raw 保留字段]
<bool 操作是否成功>,<int 进程PID>