โครงการนี้เป็นเซิร์ฟเวอร์การถ่ายโอนไฟล์ตามโปรโตคอลการสื่อสาร I2TCP ความยาวคีย์ที่มีประสิทธิภาพถึง 512 บิต นอกจากนี้ยังมีกลไกการตรวจสอบความถูกต้องแบบคู่เช่น Google เพื่อให้แน่ใจว่าบริการสามารถอยู่รอดได้อย่างปลอดภัยในสภาพแวดล้อมเครือข่ายสาธารณะ
pip install i2ftp-server
Python3.6+i2cylib >= 1.8.14i2ftps-setupi2ftps เริ่มต้น/หยุด /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] คำสั่งไคลเอนต์ - "ดาวน์โหลดผ่านเซสชัน ID": DOWN,<16 bytes 下载会话ID>,<uint64 文件指针偏移量>,<uint64 截止文件指针偏移量>
หากแพ็คเก็ตส่งคืนเดียวไม่สามารถส่งความยาวที่ร้องขอได้ในครั้งเดียวเซิร์ฟเวอร์จะส่งแพ็กเก็ตหลายแพ็คเก็ตจนกว่าความยาวที่ร้องขอจะเป็นที่พอใจ
หาก截止文件指针偏移量≤文件指针偏移量เซิร์ฟเวอร์จะพิจารณาข้อมูลนั้นจาก文件指针偏移量ไปยังจุดสิ้นสุดของไฟล์จะถูกร้องขอ
return: <bool 操作是否有效>,[uint64 文件指针偏移量],[bytes 数据内容最大长度524128 Bytes] (Single or Sequence)
คำสั่งไคลเอ็นต์ - "คำขออัปโหลด": 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>