mirror of
https://github.com/by-sonic/tglock.git
synced 2026-10-10 11:16:00 +03:00
fix: address routing, media, worker and platform issues
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
# Открытые 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 и ключи | DC203 сохраняет IP CDN во всех маршрутах; тест Worker dst, двунаправленная передача. Реальные фотографии аккаунта репортёра не проверены |
|
||||
| #53 — статическая aarch64 | Системный OpenSSL мешал самостоятельной musl-сборке | rustls + ring, ARM64 CI с проверкой ELF и запуском CLI, артефакт и OpenWrt-инструкция. Физический NanoPi R4S не проверен |
|
||||
| #9 — Android | Старый PR отстал от main, сборка требовала ручной настройки; жизненный цикл сервиса мог останавливать прокси или оставлять ложное уведомление | Перенос актуального ядра, foreground service по состоянию прокси, APK CI, постоянный секрет в каталоге приложения. HyperOS и длительная фоновая работа требуют устройства |
|
||||
|
||||
Дополнительно: Unicode-секрет больше не вызывает panic; GUI сохраняет секрет
|
||||
в каталоге приложения с миграцией прежнего файла; npm lock обновляет уязвимый
|
||||
транзитивный `nanoid` без смены версии приложения.
|
||||
|
||||
## Протокол и доверие
|
||||
|
||||
- TLS проверяет имя из WebSocket URI даже при подключении к закреплённому IP.
|
||||
Переход на rustls использует встроенные WebPKI roots; системные пользовательские
|
||||
корневые сертификаты автоматически не импортируются.
|
||||
- [Telegram WebSocket](https://core.telegram.org/mtproto/transports#websocket)
|
||||
является потоком байтов. Границы TCP read и WS messages не обязаны совпадать
|
||||
с MTProto-пакетами; дополнительный парсер пакетов не добавлялся.
|
||||
- [CDN DC](https://core.telegram.org/cdn) требует соответствующего назначения;
|
||||
успешный handshake другого DC не доказывает работоспособность медиа.
|
||||
- Worker остаётся опциональной инфраструктурой пользователя. Домен не является
|
||||
авторизацией; `TGLOCK_TOKEN` не поддерживается штатным клиентом.
|
||||
|
||||
## Воспроизводимые проверки
|
||||
|
||||
```text
|
||||
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. Конкретные результаты
|
||||
и ссылки на прогоны фиксируются в описании PR после завершения CI.
|
||||
|
||||
Worker: `npm run test:worker` исполняет настоящий deployment-файл с подменой
|
||||
только Cloudflare API; `wrangler deploy --dry-run` проверяет сборку без публикации.
|
||||
Это не тест живого Cloudflare-аккаунта. Отдельный тест Rust поднимает локальный
|
||||
WebSocket и проверяет совместимость клиента с контрактом Worker.
|
||||
|
||||
## Что нужно проверить на устройствах
|
||||
|
||||
Android: установка APK, старт/стоп, ссылка в Telegram, сохранение секрета после
|
||||
перезапуска, передача текста/медиа, работа в фоне 15 минут и политика батареи.
|
||||
OpenWrt: запуск CLI на NanoPi R4S, подключение нескольких устройств по LAN,
|
||||
перезапуск сервиса с прежним секретом. Инструкции: [Android](ANDROID.md),
|
||||
[OpenWrt](OPENWRT.md).
|
||||
|
||||
Issues о пользовательских симптомах остаются открыты до этой проверки.
|
||||
Наличие исправленного дефекта и зелёных регрессий не доказывает, что в конкретной
|
||||
сети отсутствует дополнительная блокировка.
|
||||
Reference in New Issue
Block a user