# TGLock 2.0 issue audit

Проверено 29 июля 2026 года: все 15 issues и 5 pull requests, существовавшие
в репозитории на момент аудита.

## Выводы

Главная причина жалоб «прокси подключён, но Telegram не работает» — приложение
считало успешный запуск локального SOCKS5-сервера успешным подключением к
Telegram. Единственный upstream `kws{dc}.web.telegram.org` может резолвиться в
недоступный IP или блокироваться провайдером.

TGLock 2.0 разделяет эти состояния и использует адаптивный список Telegram IP,
`kwsN`/`kwsN-1`, системный DNS и опциональный пользовательский Cloudflare
Worker. TLS SNI и WebSocket Host проверяются. Системный DNS и файл `hosts`
не изменяются.

## Классификация

| Issue | Наблюдение | Решение для 2.0 |
|---|---|---|
| #1 | Порт 1080 занят | Уже есть выбор порта; добавить автоматический подбор |
| #2, #11 | Неверный сетевой адаптер | В переписанном Rust-ядре привязка исходящего адаптера отсутствует; добавить только как расширенную настройку |
| #3 | Rust 1.75 не собирает зависимости | `Cargo.lock` зафиксирован; MSRV 1.88 документирована и проверяется в CI |
| #4 | Linux/серверный режим | Добавить headless CLI и systemd/Docker-примеры |
| #5 | macOS | Публиковать universal `.app`, затем подписанный и notarized DMG |
| #8, #19, #21, #23 | Нет подключения | Резервные маршруты, live-probe, понятная диагностика вместо ложного «Подключено» |
| #9 | Android | Не входит в desktop 2.0; LAN остаётся отдельным сценарием |
| #10, #17 | GUI не запускается без GPU/монитора | Headless CLI; отдельно проверить software rendering |
| #13 | Discord/YouTube | Вне области проекта; не смешивать с Telegram-транспортом |
| #14 | Медиа, звонки, LAN | Медиа тестировать отдельно; звонки не обещать без UDP; LAN ограничить Telegram-адресами |

## Pull requests

- #6 относится к старой Windows-реализации выбора адаптера.
- #12 относился к шрифту старого GUI. В v2 интерфейс перенесён на Tauri 2 и
  использует системную типографику каждой платформы.
- #15 содержит полезное направление разделения GUI/CLI, но основан на старой
  архитектуре и меняет DNS системы.
- #18 — экспериментальный Linux GUI без подтверждённого мобильного сценария.
- #7 не содержит продуктового изменения.

## Не подтверждённые обещания

- Голосовые и видеозвонки нельзя заявлять рабочими: SOCKS5 UDP Associate не
  реализован, а Telegram может обходить proxy для части звонков.
- «Подключено» допустимо показывать только после успешного WebSocket handshake,
  а не после открытия локального порта.
- LAN-режим не должен становиться открытым универсальным SOCKS5-прокси.
- Резерв через чужую Cloudflare-инфраструктуру нельзя включать без ясной модели
  доверия, владельца, мониторинга и политики обновления endpoint-ов.
