Files
tglock/docs/ISSUES_2026-09-19.md
T

8.6 KiB
Raw Blame History

Открытые issues: исправления и проверка, 19 сентября 2026

База: 8617d25, версия 2.0.0-beta.14. Проверены все семь открытых issues и существующие PR #36 (Android), #49 (секрет GUI). Эта работа готовится как PR, без слияния, публикации релиза и автоматического закрытия жалоб.

Что изменено

Issue Подтверждённая проблема / выполненная работа Проверка и предел вывода
#59 — 11 тысяч неудачных соединений Все маршруты в cooldown раньше приводили к немедленной новой попытке. Теперь пауза соблюдается; зависшие соединения не блокируют резервные Тесты времени, числа параллельных попыток, отмены проигравших. Доступность Telegram у автора issue не проверена
#58 — Worker, туннели 0/1 Worker отвечал 101 до открытия TCP; ошибки после handshake терялись Worker 502/504 и диагностические WebSocket close-коды, Rust-тесты раннего закрытия и reset. HTTP 426 проверяет только публикацию Worker
#50 — ни один маршрут не работает Последовательные TCP/TLS таймауты задерживали резерв; кратковременные туннели ошибочно сохраняли предпочтение маршрута Ограниченный параллелизм, cooldown после upstream failure, ошибки Worker. Нельзя обещать обход, когда недоступны и Telegram, и собственный Worker
#42 — Android через LAN Прежние duplex-исправления уже в main; потеря ошибок upstream скрывала дальнейший отказ Независимый Android-compatible криптографический вектор, фрагментированные init и одновременная передача 128/256 КиБ, диагностика разрывов. Нужна проверка Play Market-клиента в сети репортёра
#32 — медиа DC203 fallback через DNS попадал в DC2, хотя CDN имеет свой DC и ключи; на закреплённом CDN IP WebSocket не отвечает, но обычный MTProto TCP работает DC203 использует точный CDN IP по TCP с преобразованием transport-шифрования; Worker остаётся резервом. Проверка живым req_pq/resPQ и тесты обеих сторон. Реальные фотографии аккаунта репортёра не проверены
#53 — статическая aarch64 Системный OpenSSL мешал самостоятельной musl-сборке rustls + ring, ARM64 CI с проверкой ELF и запуском CLI, артефакт и OpenWrt-инструкция. Физический NanoPi R4S не проверен
#9 — Android Старый PR отстал от main, сборка требовала ручной настройки; жизненный цикл сервиса мог останавливать прокси или оставлять ложное уведомление Перенос актуального ядра, foreground service по состоянию прокси, APK CI, постоянный секрет в каталоге приложения. HyperOS и длительная фоновая работа требуют устройства

Дополнительно: журнал больше не замолкает после первых 64 разных событий; Unicode-секрет больше не вызывает panic; GUI сохраняет секрет в каталоге приложения с миграцией прежнего файла; npm lock обновляет уязвимый транзитивный nanoid без смены версии приложения.

Протокол и доверие

  • TLS проверяет имя из WebSocket URI даже при подключении к закреплённому IP. Переход на rustls использует встроенные WebPKI roots; системные пользовательские корневые сертификаты автоматически не импортируются.
  • Прямой маршрут CDN203 использует обычный MTProto TCP к одному закреплённому адресу, без TLS-обёртки. Ключи и шифрование содержимого Telegram не меняются; снимается только transport-obfuscation локального прокси и накладывается transport-obfuscation сервера. Если провайдер блокирует CDN IP, нужен Worker.
  • Telegram WebSocket является потоком байтов. Границы TCP read и WS messages не обязаны совпадать с MTProto-пакетами; дополнительный парсер пакетов не добавлялся.
  • CDN DC требует соответствующего назначения; успешный handshake другого DC не доказывает работоспособность медиа.
  • Worker остаётся опциональной инфраструктурой пользователя. Домен не является авторизацией; TGLOCK_TOKEN не поддерживается штатным клиентом.

Воспроизводимые проверки

npm ci
npm run test:worker
npm run build
cargo fmt --check
cargo clippy --locked --all-targets -- -D warnings
cargo test --locked --all-targets
cargo clippy --locked --no-default-features --features cli --all-targets -- -D warnings
cargo test --locked --no-default-features --features cli --lib --bins

CI дополнительно проверяет MSRV 1.88, состав macOS GUI bundle, статическую ARM64 musl-сборку, подпись/содержимое Android debug APK и запуск на Android 15 эмуляторе. Пропуск UI lifecycle отмечается отдельно от успешного запуска. Конкретные результаты и ссылки на прогоны фиксируются в описании PR после завершения CI.

Worker: npm run test:worker исполняет настоящий deployment-файл с подменой только Cloudflare API; wrangler deploy --dry-run проверяет сборку без публикации. Это не тест живого Cloudflare-аккаунта. Отдельный тест Rust поднимает локальный WebSocket и проверяет совместимость клиента с контрактом Worker.

Для проверки реального бинаря без Telegram-аккаунта добавлен независимый Node.js probe. Он проверяет req_pq_multi → resPQ, nonce и целостность ответа; это ещё не авторизация и не скачивание медиа.

Что нужно проверить на устройствах

Android: установка APK, старт/стоп, ссылка в Telegram, сохранение секрета после перезапуска, передача текста/медиа, работа в фоне 15 минут и политика батареи. OpenWrt: запуск CLI на NanoPi R4S, подключение нескольких устройств по LAN, перезапуск сервиса с прежним секретом. Инструкции: Android, OpenWrt.

Issues о пользовательских симптомах остаются открыты до этой проверки. Наличие исправленного дефекта и зелёных регрессий не доказывает, что в конкретной сети отсутствует дополнительная блокировка.