Доработать вложенные файлы и архив проекта

This commit is contained in:
AidarKC
2026-09-11 14:33:21 +03:00
parent f9ae811702
commit ef068eca81
22 changed files with 3865 additions and 216 deletions
@@ -172,3 +172,26 @@ fromLogin|toLogin|timeMs|nonce
- сервер не обязан понимать этот формат;
- будущие клиенты могут добавлять новые `kind`;
- клиенты, которые распознают SHiNE-вставки, должны скрывать неизвестные блоки целиком, если они стоят в начале и корректно закрыты.
## 10. Расширение `file` v2
Клиент обязан продолжать читать `v=1`. Новые chunked-вложения отправляются так:
```text
<S:file;v=2;id=ROOT_MANIFEST_ID;url=ENCODED_URL;key=BASE64URL_AES_KEY;ivp=BASE64URL_4BYTE_PREFIX;name=ENCODED_NAME;mime=ENCODED_MIME;size=123;encsize=456;chunk=1048576;chunks=7;th=TORRENT_V2_INFOHASH;pr=TORRENT_V2_PIECES_ROOT;kind=file;dur=0>
```
Дополнительные поля v2:
- `id` / `url` указывают не на весь файл, а на зашифрованный root manifest;
- `ivp` — случайный 4-byte IV prefix, из которого детерминированно строятся уникальные IV chunks/pages/root;
- `chunk` — plaintext chunk size, сейчас `1048576`;
- `chunks` — число частей;
- `th` — BitTorrent v2 SHA-256 infohash;
- `pr` — BitTorrent v2 pieces root;
- `kind=file|voice`;
- `dur` — длительность voice в миллисекундах, для обычного файла `0`.
В одном plaintext DM разрешено несколько последовательных `<S:file...>` блоков. Официальный UI собирает их в один список вложений и скрывает fallback-текст.
Подробный формат chunk encryption, manifest pages и BitTorrent v2 hashing: `Файлы_DM_v2.md`.