هذا المشروع هو خادم نقل الملفات يعتمد على بروتوكول اتصال I2TCP. طول المفتاح الفعال يصل إلى 512 بت. كما أن لديها آلية مصادقة مزدوجة العامل مثل Google للتأكد من أن الخدمة يمكنها البقاء بأمان في بيئة الشبكة العامة.
pip install i2ftp-server
Python3.6+i2cylib >= 1.8.14i2ftps-setupi2ftps Server ابدأ/توقف /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>